{% if label %}
{{ label }}
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/_rss-feed.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.scss
similarity index 72%
rename from services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/_rss-feed.scss
rename to services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.scss
index 9ce81b3445..fdbec7f186 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/_rss-feed.scss
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.scss
@@ -1,7 +1,7 @@
// @file
// Styles for RSS feed.
-@use '../../00-config' as *;
+@use '../../00-config/00-functions' as *;
.rss-feed {
display: inline-block;
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.twig
index 74b10bc18f..8f5cdd2c07 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.twig
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/rss-feed/rss-feed.twig
@@ -1,3 +1,5 @@
+{{ attach_library('epa_theme/rss_feed') }}
+
{% set classes = [
'rss-feed',
modifier_classes ? modifier_classes,
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/_site-alert.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.scss
similarity index 91%
rename from services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/_site-alert.scss
rename to services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.scss
index 25fe829276..9457aa2bf2 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/_site-alert.scss
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.scss
@@ -1,7 +1,7 @@
// @file
// Styles for a Sitewide Alert.
-@use '../../00-config' as *;
+@use '../../00-config/00-functions' as *;
.usa-alert__close {
background: transparent;
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.twig
index 6324a5d39f..1ed2508d51 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.twig
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/site-alert/site-alert.twig
@@ -1,3 +1,5 @@
+{{ attach_library('epa_theme/site_alert') }}
+
{% set classes = [
'usa-site-alert',
'usa-site-alert--slim',
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/_teaser.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.scss
similarity index 100%
rename from services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/_teaser.scss
rename to services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.scss
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.twig
index c09e5cf3de..ca13891a24 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.twig
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/teaser/teaser.twig
@@ -1,3 +1,5 @@
+{{ attach_library('epa_theme/teaser') }}
+
{% set classes = [
'teaser',
modifier_classes ? modifier_classes,
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/_web-area-footer.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/web-area-footer.scss
similarity index 68%
rename from services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/_web-area-footer.scss
rename to services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/web-area-footer.scss
index e5bf1db269..013f6c3cb6 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/_web-area-footer.scss
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-footer/web-area-footer.scss
@@ -1,5 +1,6 @@
-@use 'uswds' as *;
-@use '../../00-config' as *;
+//@use 'uswds' as *;
+@use '../../00-config/00-functions' as *;
+@use '../../00-config/01-mixins/mixins.breakpoint' as *;
.l-page__footer-last-updated {
font-size: font-size(body, 3xs);
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/_web-area-title.scss b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.scss
similarity index 100%
rename from services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/_web-area-title.scss
rename to services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.scss
diff --git a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.twig b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.twig
index 5d56d422c6..046f219689 100644
--- a/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.twig
+++ b/services/drupal/web/themes/epa_theme/source/_patterns/05-components/web-area-title/web-area-title.twig
@@ -1,3 +1,5 @@
+{{ attach_library('epa_theme/web_area_title') }}
+
{% set classes = [
'web-area-title',
modifier_classes ? modifier_classes,
diff --git a/services/drupal/web/themes/epa_theme/source/core.scss b/services/drupal/web/themes/epa_theme/source/core.scss
new file mode 100644
index 0000000000..bdef2ba96f
--- /dev/null
+++ b/services/drupal/web/themes/epa_theme/source/core.scss
@@ -0,0 +1,109 @@
+// @file
+// Core styles
+
+// Configuration
+@use '_patterns/00-config' as *;
+@use '_patterns/01-global' as *;
+
+// Base styles
+@forward 'uswds-global';
+@forward '_patterns/02-base';
+
+// USWDS components
+// We pull in everything in 'packages/uswds' except for:
+// - 'uswds-global': pulled in elsewhere.
+// - 'uswds-typography': omitted (except for usa-dark-background) in favor of
+// Gesso’s base HTML styles.
+// - 'uswds-utilities': pulled in elsewhere.
+@forward 'usa-dark-background';
+@forward 'usa-accordion';
+@forward 'usa-alert';
+@forward 'usa-banner';
+@forward 'usa-breadcrumb';
+@forward 'usa-button-group';
+@forward 'usa-button';
+@forward 'usa-card';
+@forward 'usa-checklist';
+@forward 'usa-collection';
+@forward 'usa-embed-container';
+@forward 'usa-footer';
+@forward 'usa-form';
+@forward 'usa-graphic-list';
+@forward 'usa-header';
+@forward 'usa-hero';
+@forward 'usa-icon-list';
+@forward 'usa-icon';
+@forward 'usa-identifier';
+@forward 'usa-layout-docs';
+@forward 'usa-layout-grid';
+@forward 'usa-media-block';
+@forward 'usa-modal';
+@forward 'usa-nav';
+@forward 'usa-pagination';
+@forward 'usa-process-list';
+@forward 'usa-search';
+@forward 'usa-section';
+@forward 'usa-sidenav';
+@forward 'usa-site-alert';
+@forward 'usa-skipnav';
+@forward 'usa-step-indicator';
+@forward 'usa-summary-box';
+@forward 'usa-table';
+@forward 'usa-tag';
+@forward 'usa-tooltip';
+@forward 'uswds-form-controls';
+@forward '_patterns/03-uswds';
+
+// Layouts
+@forward '_patterns/04-layouts';
+
+// Components
+// pull in styles for components that do not have their own stylesheet
+@forward '_patterns/05-components/00-cms-styles';
+@forward '_patterns/05-components/_details/details';
+@forward '_patterns/05-components/_view/view';
+@forward '_patterns/05-components/_view/views-view/views-view';
+@forward '_patterns/05-components/_view/views-view-unformatted/views-view-unformatted';
+@forward '_patterns/05-components/article/article';
+@forward '_patterns/05-components/back-to-top/back-to-top';
+@forward '_patterns/05-components/before-after-swipe/before-after-swipe';
+@forward '_patterns/05-components/button/button';
+@forward '_patterns/05-components/button/button--danger/button--danger';
+@forward '_patterns/05-components/button-group';
+@forward '_patterns/05-components/external-link/external-link';
+@forward '_patterns/05-components/external-link/external-link--image/external-link--image';
+@forward '_patterns/05-components/external-link/external-link--inverse/external-link--inverse';
+@forward '_patterns/05-components/facet-limit/facet-limit';
+@forward '_patterns/05-components/fieldset/fieldset';
+@forward '_patterns/05-components/figure';
+@forward '_patterns/05-components/footer/footer';
+@forward '_patterns/05-components/form-item';
+@forward '_patterns/05-components/govdelivery/govdelivery';
+@forward '_patterns/05-components/highlight/highlight';
+@forward '_patterns/05-components/icon/icon';
+@forward '_patterns/05-components/list/list';
+@forward '_patterns/05-components/menu';
+@forward '_patterns/05-components/mobile-menu/mobile-menu';
+@forward '_patterns/05-components/mobile-menu-button/mobile-menu-button';
+@forward '_patterns/05-components/nav/nav--epa/nav--epa';
+@forward '_patterns/05-components/new/new';
+@forward '_patterns/05-components/page-title/page-title';
+@forward '_patterns/05-components/pull-quote/pull-quote';
+@forward '_patterns/05-components/search/search--epa/search--epa';
+@forward '_patterns/05-components/site-logo/site-logo';
+@forward '_patterns/05-components/skiplinks/skiplinks';
+@forward '_patterns/05-components/table/table--sortable/table--sortable';
+@forward '_patterns/05-components/table/table--striped/table--striped';
+@forward '_patterns/05-components/table/table--unstyled/table--unstyled';
+@forward '_patterns/05-components/tag/tag--accent/tag--accent';
+@forward '_patterns/05-components/tag-link/tag-link';
+@forward '_patterns/05-components/tag-list/tag-list';
+@forward '_patterns/05-components/video/video';
+@forward '_patterns/05-components/warning/warning';
+
+// USWDS and Gesso utility classes.
+@forward 'uswds-utilities';
+@forward '_patterns/utility-classes';
+
+// Shame
+@forward '_patterns/shame';
diff --git a/services/drupal/web/themes/epa_theme/source/styles.scss b/services/drupal/web/themes/epa_theme/source/styles.scss
index 43d764f234..4b59c38c15 100644
--- a/services/drupal/web/themes/epa_theme/source/styles.scss
+++ b/services/drupal/web/themes/epa_theme/source/styles.scss
@@ -1,5 +1,5 @@
// @file
-// Main styles
+// All styles
// Configuration
@use '_patterns/00-config' as *;
@@ -12,8 +12,10 @@
// USWDS components
// We pull in everything in 'packages/uswds' except for:
// - 'uswds-global': pulled in elsewhere.
-// - 'uswds-typography': omitted in favor of Gesso’s base HTML styles.
+// - 'uswds-typography': omitted (except for usa-dark-background) in favor of
+// Gesso’s base HTML styles.
// - 'uswds-utilities': pulled in elsewhere.
+@forward 'usa-dark-background';
@forward 'usa-accordion';
@forward 'usa-alert';
@forward 'usa-banner';
diff --git a/services/drupal/web/themes/epa_theme/source/wysiwyg.scss b/services/drupal/web/themes/epa_theme/source/wysiwyg.scss
index 8373bc480a..8c84659c72 100644
--- a/services/drupal/web/themes/epa_theme/source/wysiwyg.scss
+++ b/services/drupal/web/themes/epa_theme/source/wysiwyg.scss
@@ -12,8 +12,10 @@
// USWDS components
// We pull in everything in 'packages/uswds' except for:
// - 'uswds-global': pulled in elsewhere.
-// - 'uswds-typography': omitted in favor of Gesso’s base HTML styles.
+// - 'uswds-typography': omitted (except for usa-dark-background) in favor of
+// Gesso’s base HTML styles.
// - 'uswds-utilities': pulled in elsewhere.
+@forward 'usa-dark-background';
@forward 'usa-accordion';
@forward 'usa-alert';
@forward 'usa-banner';
diff --git a/services/drupal/web/themes/epa_theme/templates/facets/facets-item-list.html.twig b/services/drupal/web/themes/epa_theme/templates/facets/facets-item-list.html.twig
index 7a0c7913d5..57dfad6d83 100644
--- a/services/drupal/web/themes/epa_theme/templates/facets/facets-item-list.html.twig
+++ b/services/drupal/web/themes/epa_theme/templates/facets/facets-item-list.html.twig
@@ -27,12 +27,10 @@
{% set content -%}
{% if items %}
- {%- set attributes = attributes.addClass('facet-list') -%}
-
- {%- for item in items -%}
- - {{ item.value }}
- {%- endfor -%}
-
+ {% include '@components/facet-list/facet-list.twig' with {
+ 'attributes': attributes,
+ 'list': items,
+ } %}
{% endif %}
{% if empty %}
@@ -43,6 +41,7 @@
{% if content|striptags|trim %}
{% if facet %}
{% include '@uswds/_accordion/_accordion-content.twig' with {
+ 'attributes': '',
'accordion_id': 'facets',
'content_id': facet_id|clean_class,
'title': facet_name,
diff --git a/services/drupal/web/themes/epa_theme/templates/facets/facets-result-item.html.twig b/services/drupal/web/themes/epa_theme/templates/facets/facets-result-item.html.twig
index 8b6e4db2bc..15eee43dea 100644
--- a/services/drupal/web/themes/epa_theme/templates/facets/facets-result-item.html.twig
+++ b/services/drupal/web/themes/epa_theme/templates/facets/facets-result-item.html.twig
@@ -16,6 +16,7 @@
* @ingroup themeable
*/
#}
+{{ attach_library('epa_theme/facet') }}
{%- include '@components/icon/icon.twig' with {
'modifier_classes': 'facet__icon facet__icon--empty',
diff --git a/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--banner-slide.html.twig b/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--banner-slide.html.twig
index e22c13a57b..5961329074 100644
--- a/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--banner-slide.html.twig
+++ b/services/drupal/web/themes/epa_theme/templates/paragraph/paragraph--banner-slide.html.twig
@@ -5,9 +5,15 @@
*/
#}
+{% if content.field_banner_image|field_value is not null %}
+ {% set background_image = content.field_banner_image|field_value|render %}
+{% else %}
+ {% set background_image = content.field_image|field_value|render %}
+{% endif %}
+
{% include '@components/hero/hero--slideshow/hero--slideshow.twig' with {
modifier_classes: 'usa-hero--reversed',
- background_image: content.field_image|field_value|render,
+ background_image: background_image,
title_element: 'h2',
title: content.field_title|field_value|render,
content: content.field_text|field_value|render,