From 55e1bf5e1d93c61b1b9a85ff140e5c693b3fb1af Mon Sep 17 00:00:00 2001 From: Ray Estrada Date: Fri, 12 Jan 2024 16:51:38 -0800 Subject: [PATCH] VOTE-421 configuring theme foundation (#501) * VOTE-421 set all image styles * VOTE-421 configure the base theme settings and refresh the base theme *VOTE-421 style basic page detail --- composer.json | 1 + composer.lock | 265 +++++++++++- config/sync/bixal_uswds.settings.yml | 12 - .../block.block.bixal_uswds_breadcrumbs.yml | 32 -- .../sync/block.block.bixal_uswds_content.yml | 22 - .../block.block.bixal_uswds_local_tasks.yml | 22 - .../sync/block.block.bixal_uswds_messages.yml | 22 - .../block.block.bixal_uswds_page_title.yml | 20 - .../block.block.bixaluswds_breadcrumbs.yml | 20 + ...yml => block.block.bixaluswds_content.yml} | 8 +- ...ock.block.bixaluswds_footernavigation.yml} | 10 +- ...=> block.block.bixaluswds_htmlsitemap.yml} | 14 +- ...ock.block.bixaluswds_languageswitcher.yml} | 12 +- ...=> block.block.bixaluswds_local_tasks.yml} | 8 +- .../block.block.bixaluswds_loginalert.yml | 38 ++ .../block.block.bixaluswds_mainnavigation.yml | 27 ++ ...ml => block.block.bixaluswds_messages.yml} | 8 +- ...block.block.bixaluswds_poweredbydrupal.yml | 20 + .../block.block.bixaluswds_sitebranding.yml | 23 ++ .../sync/block.block.languageswitcher_2.yml | 20 - .../block.block.search.govsearchblock.yml | 25 -- .../block.block.usa.govemailsignupblock.yml | 25 -- ...ck.views_block__sitewide_alert_block_1.yml | 24 -- .../block.block.vote.govgovernmentbanner.yml | 25 -- .../sync/block.block.vote_gov_page_title.yml | 20 - ...ntity_view_display.media.image.default.yml | 4 +- ...ity_view_display.node.voter_guide.full.yml | 5 + config/sync/core.extension.yml | 6 +- config/sync/crop.settings.yml | 3 + config/sync/crop.type.focal_point.yml | 14 + config/sync/editor.editor.basic_html.yml | 2 +- config/sync/filter.format.basic_html.yml | 2 +- config/sync/focal_point.settings.yml | 4 + config/sync/image.style.scaled_lg.yml | 15 + config/sync/image.style.scaled_sm.yml | 15 + config/sync/image.style.scaled_xl.yml | 15 + config/sync/image.style.social_standard.yml | 17 + config/sync/image.style.square_lg.yml | 17 + config/sync/image.style.square_sm.yml | 17 + config/sync/image.style.standard_lg.yml | 17 + config/sync/image.style.standard_sm.yml | 17 + config/sync/image.style.standard_xl.yml | 17 + .../sync/image.style.wide_standard_banner.yml | 17 + config/sync/image.style.wide_standard_lg.yml | 17 + config/sync/image.style.wide_standard_sm.yml | 17 + config/sync/image.style.wide_standard_xl.yml | 17 + config/sync/vote_gov.settings.yml | 12 - web/themes/custom/bixal_uswds/README.md | 117 ------ .../bixal_uswds/bixal_uswds.breakpoints.yml | 66 --- .../custom/bixal_uswds/bixal_uswds.info.yml | 30 -- .../bixal_uswds/bixal_uswds.libraries.yml | 28 -- .../custom/bixal_uswds/bixal_uswds.theme | 15 - .../custom/bixal_uswds/css/hidden.module.css | 0 .../custom/bixal_uswds/css/js.module.css | 0 .../bixal_uswds/js/bx-a11y-tabs-init.js | 17 - .../custom/bixal_uswds/php-includes/block.inc | 27 -- .../custom/bixal_uswds/php-includes/form.inc | 120 ------ .../bixal_uswds/php-includes/local_task.inc | 25 -- .../custom/bixal_uswds/php-includes/media.inc | 41 -- .../custom/bixal_uswds/php-includes/node.inc | 89 ----- .../custom/bixal_uswds/php-includes/page.inc | 38 -- .../bixal_uswds/php-includes/paragraphs.inc | 65 --- web/themes/custom/bixal_uswds/screenshot.png | Bin 97994 -> 0 bytes ...block--system-menu-block--footer.html.twig | 6 - ...paragraph--bx-accordion--default.html.twig | 62 --- ...raph--bx-accordion-item--default.html.twig | 67 ---- .../paragraph--bx-card--default.html.twig | 56 --- ...paragraph--bx-card-item--default.html.twig | 100 ----- ...aragraph--bx-collection--default.html.twig | 55 --- .../paragraph--bx-cta--default.html.twig | 88 ---- .../paragraph--bx-hero--default.html.twig | 88 ---- .../paragraph--bx-media--default.html.twig | 54 --- ...agraph--bx-process-list--default.html.twig | 56 --- ...h--bx-process-list-item--default.html.twig | 67 ---- ...aragraph--bx-simple-cta--default.html.twig | 97 ----- ...aragraph--bx-site-alert--default.html.twig | 74 ---- ...ragraph--bx-summary-box--default.html.twig | 65 --- .../paragraph--bx-tabs--default.html.twig | 72 ---- ...paragraph--bx-tabs-item--default.html.twig | 61 --- .../paragraph--bx-title--default.html.twig | 54 --- .../components/paragraph--default.html.twig | 54 --- .../field--field-bx-components.html.twig | 84 ---- .../templates/form/datetime-form.html.twig | 15 - .../templates/form/datetime-wrapper.html.twig | 34 -- .../templates/form/details.html.twig | 71 ---- .../templates/form/fieldset.html.twig | 105 ----- .../form/file-managed-file.html.twig | 28 -- .../form/form--search-block-form.html.twig | 24 -- ...ement-label--search-form--search.html.twig | 4 - .../form-element-label--type--date.html.twig | 4 - .../templates/form/input--date.html.twig | 34 -- .../templates/form/input--file.html.twig | 4 - .../templates/form/input--range.html.twig | 17 - ...put--submit--search-block-submit.html.twig | 18 - .../input--submit--search-form-page.html.twig | 19 - .../templates/form/input.html.twig | 42 -- .../templates/layout/page.html.twig | 112 ------ .../media/media--image-ckeditor.html.twig | 1 - .../media/media--image-component.html.twig | 1 - .../templates/media/media--image.html.twig | 39 -- .../media/media--remote-video.html.twig | 47 --- .../templates/misc/feed-icon.html.twig | 22 - .../templates/misc/status-messages.html.twig | 67 ---- .../templates/navigation/breadcrumb.html.twig | 25 -- .../navigation/menu--account.html.twig | 58 --- .../navigation/menu--footer.html.twig | 57 --- .../templates/navigation/menu--main.html.twig | 119 ------ .../navigation/menu-local-task.html.twig | 29 -- .../navigation/menu-local-tasks.html.twig | 34 -- .../templates/navigation/pager.html.twig | 142 ------- .../node--bx-landing-page--full.html.twig | 94 ----- .../templates/node/node--bx-update.html.twig | 114 ------ .../templates/node/node--teaser.html.twig | 105 ----- .../templates/node/node--uswds-card.html.twig | 126 ------ .../node/node--uswds-collection.html.twig | 169 -------- .../templates/partials/p-footer.html.twig | 75 ---- .../templates/partials/p-header.html.twig | 49 --- .../templates/partials/p-identifier.html.twig | 70 ---- ...ews-view-list--frontpage--page-1.html.twig | 39 -- .../templates/views/views-view-list.html.twig | 38 -- .../views/views-view-unformatted.html.twig | 30 -- .../templates/views/views-view.html.twig | 95 ----- .../custom/bixal_uswds/theme-settings.php | 33 -- web/themes/custom/bixaluswds/README.md | 1 + .../custom/bixaluswds/bixaluswds.info.yml | 22 + .../bixaluswds/bixaluswds.libraries.yml | 7 + web/themes/custom/bixaluswds/bixaluswds.theme | 13 + web/themes/custom/bixaluswds/favicon.ico | Bin 0 -> 15086 bytes .../{bixal_uswds => bixaluswds}/logo.svg | 28 +- .../custom/bixaluswds/preprocess/form.inc | 14 + .../custom/bixaluswds/preprocess/global.inc | 16 + .../bixaluswds/preprocess/navigation.inc | 16 + .../custom/bixaluswds/preprocess/taxonomy.inc | 21 + .../custom/bixaluswds/preprocess/user.inc | 19 + .../preprocess}/views.inc | 6 +- web/themes/custom/bixaluswds/screenshot.png | Bin 0 -> 93927 bytes .../uswds/usa-footer--nav.html.twig | 44 ++ .../_components/uswds/usa-footer.html.twig | 126 ++++++ .../_components/uswds/usa-header.html.twig | 66 +++ ...ntifier--section--required-links.html.twig | 36 ++ .../uswds/usa-identifier.html.twig | 75 ++++ .../uswds/usa-nav--primary--below.html.twig | 46 +++ .../uswds/usa-nav--primary--top.html.twig | 56 +++ .../uswds/usa-nav--secondary-links.html.twig | 34 ++ .../uswds/usa-step-indicator.html.twig | 63 +++ .../block/block--system-menu-block.html.twig | 24 +- .../templates/block/block.html.twig | 7 +- .../templates/block/block_content.html.twig | 28 ++ .../templates/content/page-title.html.twig | 15 +- .../templates/field/field.html.twig | 41 +- .../templates/form/checkboxes.html.twig | 17 + .../templates/form/container.html.twig | 20 +- .../templates/form/details.html.twig | 40 ++ .../templates/form/fieldset.html.twig | 73 ++++ .../form/form-element-label.html.twig | 24 +- .../templates/form/form-element.html.twig | 61 ++- .../bixaluswds/templates/form/form.html.twig | 17 + .../bixaluswds/templates/form/input.html.twig | 16 + .../templates/form/radios.html.twig | 15 + .../templates/form/select.html.twig | 14 +- .../bixaluswds/templates/form/table.html.twig | 105 +++++ .../templates/form/textarea.html.twig | 16 +- .../templates/layout/html.html.twig | 30 +- .../templates/layout/page.html.twig | 123 ++++++ .../templates/layout/region.html.twig | 17 + .../templates/media/media--image.html.twig | 34 ++ .../templates/media/media.html.twig | 13 +- .../templates/misc/status-messages.html.twig | 61 +++ .../templates/navigation/breadcrumb.html.twig | 12 + .../navigation/menu--footer.html.twig | 33 ++ .../navigation/menu--identifier.html.twig | 35 +- .../templates/navigation/menu--main.html.twig | 36 ++ .../navigation/menu-local-task.html.twig | 30 ++ .../navigation/menu-local-tasks.html.twig | 36 ++ .../templates/navigation/pager.html.twig | 36 ++ .../templates/node/node.html.twig | 18 +- .../taxonomy/taxonomy-term.html.twig} | 24 +- .../votegov/src/sass/_uswds-settings.scss | 217 ++++++++++ .../src/sass/_uswds-theme-custom-styles.scss | 18 - .../custom/votegov/src/sass/_uswds-theme.scss | 255 ------------ .../custom/votegov/src/sass/base/_index.scss | 3 + .../custom/votegov/src/sass/base/media.scss | 31 ++ .../system.scss => base/preference.scss} | 10 - .../votegov/src/sass/base/typography.scss | 85 ++++ .../votegov/src/sass/components/_index.scss | 5 + .../src/sass/components/page-content.scss | 19 + .../src/sass/components/page-masthead.scss | 31 ++ .../src/sass/components/page-title.scss | 8 + .../votegov/src/sass/components/sidebar.scss | 14 + .../src/sass/drupal-system/_index.scss | 9 - .../src/sass/drupal-system/details.scss | 23 -- .../votegov/src/sass/drupal-system/form.scss | 30 -- .../src/sass/drupal-system/hidden.module.css | 53 --- .../src/sass/drupal-system/js.module.css | 22 - .../votegov/src/sass/drupal-system/media.scss | 43 -- .../votegov/src/sass/mixins/mixins.scss | 17 + .../custom/votegov/src/sass/node/_index.scss | 11 + .../custom/votegov/src/sass/styles.scss | 7 +- .../src/sass/uswds-overrides/_index.scss | 7 +- .../sass/uswds-overrides/usa-breadcrumb.scss | 10 + .../src/sass/uswds-overrides/usa-form.scss | 5 + .../src/sass/uswds-overrides/usa-label.scss | 5 + .../src/sass/uswds-overrides/usa-legend.scss | 6 + .../block--system-branding-block.html.twig | 2 +- ...block--votegov-languageswitcher.html.twig} | 4 +- ...block-content--government-banner.html.twig | 2 +- .../templates/component/page-title.html.twig | 4 +- .../templates/layout/elements.html.twig | 378 ++++++++++++++++++ .../layout/page--node--landing.html.twig | 10 +- .../votegov/templates/layout/page.html.twig | 123 +++--- .../templates/navigation/breadcrumb.html.twig | 2 +- .../links--language-block.html.twig | 36 +- web/themes/custom/votegov/votegov.info.yml | 4 +- .../custom/votegov/votegov.libraries.yml | 7 + 214 files changed, 3180 insertions(+), 5253 deletions(-) delete mode 100644 config/sync/bixal_uswds.settings.yml delete mode 100644 config/sync/block.block.bixal_uswds_breadcrumbs.yml delete mode 100644 config/sync/block.block.bixal_uswds_content.yml delete mode 100644 config/sync/block.block.bixal_uswds_local_tasks.yml delete mode 100644 config/sync/block.block.bixal_uswds_messages.yml delete mode 100644 config/sync/block.block.bixal_uswds_page_title.yml create mode 100644 config/sync/block.block.bixaluswds_breadcrumbs.yml rename config/sync/{block.block.vote_gov_content.yml => block.block.bixaluswds_content.yml} (76%) rename config/sync/{block.block.footernavigation.yml => block.block.bixaluswds_footernavigation.yml} (67%) rename config/sync/{block.block.htmlsitemap.yml => block.block.bixaluswds_htmlsitemap.yml} (67%) rename config/sync/{block.block.languageswitcher.yml => block.block.bixaluswds_languageswitcher.yml} (63%) rename config/sync/{block.block.vote_gov_local_tasks.yml => block.block.bixaluswds_local_tasks.yml} (75%) create mode 100644 config/sync/block.block.bixaluswds_loginalert.yml create mode 100644 config/sync/block.block.bixaluswds_mainnavigation.yml rename config/sync/{block.block.vote_gov_messages.yml => block.block.bixaluswds_messages.yml} (76%) create mode 100644 config/sync/block.block.bixaluswds_poweredbydrupal.yml create mode 100644 config/sync/block.block.bixaluswds_sitebranding.yml delete mode 100644 config/sync/block.block.languageswitcher_2.yml delete mode 100644 config/sync/block.block.search.govsearchblock.yml delete mode 100644 config/sync/block.block.usa.govemailsignupblock.yml delete mode 100644 config/sync/block.block.views_block__sitewide_alert_block_1.yml delete mode 100644 config/sync/block.block.vote.govgovernmentbanner.yml delete mode 100644 config/sync/block.block.vote_gov_page_title.yml create mode 100644 config/sync/crop.settings.yml create mode 100644 config/sync/crop.type.focal_point.yml create mode 100644 config/sync/focal_point.settings.yml create mode 100644 config/sync/image.style.scaled_lg.yml create mode 100644 config/sync/image.style.scaled_sm.yml create mode 100644 config/sync/image.style.scaled_xl.yml create mode 100644 config/sync/image.style.social_standard.yml create mode 100644 config/sync/image.style.square_lg.yml create mode 100644 config/sync/image.style.square_sm.yml create mode 100644 config/sync/image.style.standard_lg.yml create mode 100644 config/sync/image.style.standard_sm.yml create mode 100644 config/sync/image.style.standard_xl.yml create mode 100644 config/sync/image.style.wide_standard_banner.yml create mode 100644 config/sync/image.style.wide_standard_lg.yml create mode 100644 config/sync/image.style.wide_standard_sm.yml create mode 100644 config/sync/image.style.wide_standard_xl.yml delete mode 100644 config/sync/vote_gov.settings.yml delete mode 100644 web/themes/custom/bixal_uswds/README.md delete mode 100644 web/themes/custom/bixal_uswds/bixal_uswds.breakpoints.yml delete mode 100644 web/themes/custom/bixal_uswds/bixal_uswds.info.yml delete mode 100644 web/themes/custom/bixal_uswds/bixal_uswds.libraries.yml delete mode 100644 web/themes/custom/bixal_uswds/bixal_uswds.theme delete mode 100644 web/themes/custom/bixal_uswds/css/hidden.module.css delete mode 100644 web/themes/custom/bixal_uswds/css/js.module.css delete mode 100644 web/themes/custom/bixal_uswds/js/bx-a11y-tabs-init.js delete mode 100644 web/themes/custom/bixal_uswds/php-includes/block.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/form.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/local_task.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/media.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/node.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/page.inc delete mode 100644 web/themes/custom/bixal_uswds/php-includes/paragraphs.inc delete mode 100644 web/themes/custom/bixal_uswds/screenshot.png delete mode 100644 web/themes/custom/bixal_uswds/templates/block/block--system-menu-block--footer.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-accordion--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-accordion-item--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card-item--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-collection--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-cta--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-hero--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-media--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list-item--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-simple-cta--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-site-alert--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-summary-box--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs-item--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--bx-title--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/components/paragraph--default.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/field/field--field-bx-components.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/datetime-form.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/datetime-wrapper.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/details.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/fieldset.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/file-managed-file.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/form--search-block-form.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/form-element-label--search-form--search.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/form-element-label--type--date.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input--date.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input--file.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input--range.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input--submit--search-block-submit.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input--submit--search-form-page.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/form/input.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/layout/page.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/media/media--image-ckeditor.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/media/media--image-component.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/media/media--image.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/media/media--remote-video.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/misc/feed-icon.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/misc/status-messages.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/breadcrumb.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/menu--account.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/menu--footer.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/menu--main.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/menu-local-task.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/menu-local-tasks.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/navigation/pager.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/node/node--bx-landing-page--full.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/node/node--bx-update.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/node/node--teaser.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/node/node--uswds-card.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/node/node--uswds-collection.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/partials/p-footer.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/partials/p-header.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/partials/p-identifier.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/views/views-view-list--frontpage--page-1.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/views/views-view-list.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/views/views-view-unformatted.html.twig delete mode 100644 web/themes/custom/bixal_uswds/templates/views/views-view.html.twig delete mode 100644 web/themes/custom/bixal_uswds/theme-settings.php create mode 100644 web/themes/custom/bixaluswds/README.md create mode 100644 web/themes/custom/bixaluswds/bixaluswds.info.yml create mode 100644 web/themes/custom/bixaluswds/bixaluswds.libraries.yml create mode 100644 web/themes/custom/bixaluswds/bixaluswds.theme create mode 100644 web/themes/custom/bixaluswds/favicon.ico rename web/themes/custom/{bixal_uswds => bixaluswds}/logo.svg (87%) create mode 100644 web/themes/custom/bixaluswds/preprocess/form.inc create mode 100644 web/themes/custom/bixaluswds/preprocess/global.inc create mode 100644 web/themes/custom/bixaluswds/preprocess/navigation.inc create mode 100644 web/themes/custom/bixaluswds/preprocess/taxonomy.inc create mode 100644 web/themes/custom/bixaluswds/preprocess/user.inc rename web/themes/custom/{bixal_uswds/php-includes => bixaluswds/preprocess}/views.inc (79%) create mode 100644 web/themes/custom/bixaluswds/screenshot.png create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer--nav.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-header.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier--section--required-links.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--below.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--top.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--secondary-links.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/_components/uswds/usa-step-indicator.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/block/block--system-menu-block.html.twig (69%) rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/block/block.html.twig (94%) create mode 100644 web/themes/custom/bixaluswds/templates/block/block_content.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/content/page-title.html.twig (62%) rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/field/field.html.twig (64%) create mode 100644 web/themes/custom/bixaluswds/templates/form/checkboxes.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/form/container.html.twig (73%) create mode 100644 web/themes/custom/bixaluswds/templates/form/details.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/form/fieldset.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/form/form-element-label.html.twig (55%) rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/form/form-element.html.twig (75%) create mode 100644 web/themes/custom/bixaluswds/templates/form/form.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/form/input.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/form/radios.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/form/select.html.twig (67%) create mode 100644 web/themes/custom/bixaluswds/templates/form/table.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/form/textarea.html.twig (56%) rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/layout/html.html.twig (71%) create mode 100644 web/themes/custom/bixaluswds/templates/layout/page.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/layout/region.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/media/media--image.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/media/media.html.twig (79%) create mode 100644 web/themes/custom/bixaluswds/templates/misc/status-messages.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/navigation/breadcrumb.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/navigation/menu--footer.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/navigation/menu--identifier.html.twig (51%) create mode 100644 web/themes/custom/bixaluswds/templates/navigation/menu--main.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/navigation/menu-local-task.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/navigation/menu-local-tasks.html.twig create mode 100644 web/themes/custom/bixaluswds/templates/navigation/pager.html.twig rename web/themes/custom/{bixal_uswds => bixaluswds}/templates/node/node.html.twig (89%) rename web/themes/custom/{bixal_uswds/templates/taxonomy/taxonomy-term--tags.html.twig => bixaluswds/templates/taxonomy/taxonomy-term.html.twig} (67%) create mode 100644 web/themes/custom/votegov/src/sass/_uswds-settings.scss delete mode 100644 web/themes/custom/votegov/src/sass/_uswds-theme-custom-styles.scss delete mode 100644 web/themes/custom/votegov/src/sass/_uswds-theme.scss create mode 100644 web/themes/custom/votegov/src/sass/base/_index.scss create mode 100644 web/themes/custom/votegov/src/sass/base/media.scss rename web/themes/custom/votegov/src/sass/{drupal-system/system.scss => base/preference.scss} (60%) create mode 100644 web/themes/custom/votegov/src/sass/base/typography.scss create mode 100644 web/themes/custom/votegov/src/sass/components/_index.scss create mode 100644 web/themes/custom/votegov/src/sass/components/page-content.scss create mode 100644 web/themes/custom/votegov/src/sass/components/page-masthead.scss create mode 100644 web/themes/custom/votegov/src/sass/components/page-title.scss create mode 100644 web/themes/custom/votegov/src/sass/components/sidebar.scss delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/_index.scss delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/details.scss delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/form.scss delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/hidden.module.css delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/js.module.css delete mode 100644 web/themes/custom/votegov/src/sass/drupal-system/media.scss create mode 100644 web/themes/custom/votegov/src/sass/node/_index.scss create mode 100644 web/themes/custom/votegov/src/sass/uswds-overrides/usa-breadcrumb.scss create mode 100644 web/themes/custom/votegov/src/sass/uswds-overrides/usa-form.scss create mode 100644 web/themes/custom/votegov/src/sass/uswds-overrides/usa-label.scss create mode 100644 web/themes/custom/votegov/src/sass/uswds-overrides/usa-legend.scss rename web/themes/custom/votegov/templates/block/{block--languageswitcher.html.twig => block--votegov-languageswitcher.html.twig} (96%) create mode 100644 web/themes/custom/votegov/templates/layout/elements.html.twig diff --git a/composer.json b/composer.json index 8c895989e..7d9301598 100644 --- a/composer.json +++ b/composer.json @@ -53,6 +53,7 @@ "drupal/entity_reference_revisions": "^1.10", "drupal/field_group": "^3.4", "drupal/file_delete": "^2.0", + "drupal/focal_point": "^2.0", "drupal/language_switcher_extended": "^1.1", "drupal/link_attributes": "^2.1", "drupal/log_stdout": "dev-3339853-drupal-10-compatibility", diff --git a/composer.lock b/composer.lock index 27e7ba765..d127d4ce7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ebf3d4cd73f153684ea4bfeb1f2cc2fe", + "content-hash": "d47b585626a562127cfe26d742333049", "packages": [ { "name": "asm89/stack-cors", @@ -2468,6 +2468,63 @@ }, "time": "2023-09-19T17:57:50+00:00" }, + { + "name": "drupal/crop", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/crop.git", + "reference": "8.x-2.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/crop-8.x-2.3.zip", + "reference": "8.x-2.3", + "shasum": "8e109cf60077f4c605c4d1f895cb3dc28613a23a" + }, + "require": { + "drupal/core": "^9.3 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.3", + "datestamp": "1665437894", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Drupal Media Team", + "homepage": "https://www.drupal.org/user/3260690" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "slashrsm", + "homepage": "https://www.drupal.org/user/744628" + }, + { + "name": "woprrr", + "homepage": "https://www.drupal.org/user/858604" + } + ], + "description": "Provides storage and API for image crops.", + "homepage": "https://www.drupal.org/project/crop", + "support": { + "source": "https://git.drupalcode.org/project/crop", + "issues": "https://www.drupal.org/project/issues/crop" + } + }, { "name": "drupal/ctools", "version": "4.0.4", @@ -3118,6 +3175,212 @@ "issues": "https://www.drupal.org/project/issues/file_delete" } }, + { + "name": "drupal/focal_point", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/focal_point.git", + "reference": "2.0.2" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/focal_point-2.0.2.zip", + "reference": "2.0.2", + "shasum": "8e809795ec6a68a0bc3740b0b0a41bfa53d4d6d5" + }, + "require": { + "drupal/core": "^9.3 || ^10", + "drupal/crop": "^2.3", + "drupal/jquery_ui": "^1.6", + "drupal/jquery_ui_draggable": "^2.0" + }, + "require-dev": { + "drupal/crop": "*" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.2", + "datestamp": "1690451892", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "Alexander Ross (bleen)", + "homepage": "https://www.drupal.org/u/bleen", + "role": "Maintainer" + }, + { + "name": "Rajeshreeputra", + "homepage": "https://www.drupal.org/user/3418561" + } + ], + "description": "Focal Point allows content creators to mark the most important part of an image for easier cropping.", + "homepage": "https://drupal.org/project/focal_point", + "support": { + "source": "https://cgit.drupalcode.org/focal_point", + "issues": "https://drupal.org/project/issues/focal_point", + "irc": "irc://irc.freenode.org/drupal-contribute" + } + }, + { + "name": "drupal/jquery_ui", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui.git", + "reference": "8.x-1.6" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui-8.x-1.6.zip", + "reference": "8.x-1.6", + "shasum": "0ddccdcf35a066de1843e1d9670677ee1a2faac0" + }, + "require": { + "drupal/core": "^9.2 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-1.6", + "datestamp": "1668521197", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "jjeff", + "homepage": "https://www.drupal.org/user/17190" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "litwol", + "homepage": "https://www.drupal.org/user/78134" + }, + { + "name": "mfb", + "homepage": "https://www.drupal.org/user/12302" + }, + { + "name": "mfer", + "homepage": "https://www.drupal.org/user/25701" + }, + { + "name": "mikelutz", + "homepage": "https://www.drupal.org/user/2972409" + }, + { + "name": "nod_", + "homepage": "https://www.drupal.org/user/598310" + }, + { + "name": "phenaproxima", + "homepage": "https://www.drupal.org/user/205645" + }, + { + "name": "RobLoach", + "homepage": "https://www.drupal.org/user/61114" + }, + { + "name": "sun", + "homepage": "https://www.drupal.org/user/54136" + }, + { + "name": "webchick", + "homepage": "https://www.drupal.org/user/24967" + }, + { + "name": "Wim Leers", + "homepage": "https://www.drupal.org/user/99777" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI library.", + "homepage": "https://www.drupal.org/project/jquery_ui", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui" + } + }, + { + "name": "drupal/jquery_ui_draggable", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/jquery_ui_draggable.git", + "reference": "2.0.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/jquery_ui_draggable-2.0.0.zip", + "reference": "2.0.0", + "shasum": "13a8f4bf037449cd176ddb967fc9cba9a466a705" + }, + "require": { + "drupal/core": "^9.2 || ^10", + "drupal/jquery_ui": "^1.6" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.0.0", + "datestamp": "1670871516", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bnjmnm", + "homepage": "https://www.drupal.org/user/2369194" + }, + { + "name": "lauriii", + "homepage": "https://www.drupal.org/user/1078742" + }, + { + "name": "zrpnr", + "homepage": "https://www.drupal.org/user/1448368" + } + ], + "description": "Provides jQuery UI Draggable library.", + "homepage": "https://www.drupal.org/project/jquery_ui_draggable", + "support": { + "source": "https://git.drupalcode.org/project/jquery_ui_draggable" + } + }, { "name": "drupal/language_switcher_extended", "version": "1.1.0", diff --git a/config/sync/bixal_uswds.settings.yml b/config/sync/bixal_uswds.settings.yml deleted file mode 100644 index ae4ffe628..000000000 --- a/config/sync/bixal_uswds.settings.yml +++ /dev/null @@ -1,12 +0,0 @@ -_core: - default_config_hash: cI-Pl1vK4EZIlVhkBeRB-LcoEoKTUgI5gdJ7paB8cQk -favicon: - use_default: true -features: - comment_user_picture: true - comment_user_verification: true - favicon: true - node_user_picture: true -logo: - use_default: true -time_picker_style: html5_time_picker diff --git a/config/sync/block.block.bixal_uswds_breadcrumbs.yml b/config/sync/block.block.bixal_uswds_breadcrumbs.yml deleted file mode 100644 index 46ca113a0..000000000 --- a/config/sync/block.block.bixal_uswds_breadcrumbs.yml +++ /dev/null @@ -1,32 +0,0 @@ -uuid: 9d925d66-c067-4f97-b040-543c96e23916 -langcode: en -status: true -dependencies: - module: - - node - - system - theme: - - bixal_uswds -_core: - default_config_hash: W00dRxBD1MUkvdrG5GCp5ucRMano3bszsmhxU8gkn4E -id: bixal_uswds_breadcrumbs -theme: bixal_uswds -region: breadcrumb -weight: 0 -provider: null -plugin: system_breadcrumb_block -settings: - id: system_breadcrumb_block - label: Breadcrumbs - label_display: '0' - provider: system -visibility: - 'entity_bundle:node': - id: 'entity_bundle:node' - negate: false - context_mapping: - node: '@node.node_route_context:node' - bundles: - article: article - bx_update: bx_update - page: page diff --git a/config/sync/block.block.bixal_uswds_content.yml b/config/sync/block.block.bixal_uswds_content.yml deleted file mode 100644 index 915b832de..000000000 --- a/config/sync/block.block.bixal_uswds_content.yml +++ /dev/null @@ -1,22 +0,0 @@ -uuid: 2b0e2fb8-f0e6-4673-aa12-57a4701ff740 -langcode: en -status: true -dependencies: - module: - - system - theme: - - bixal_uswds -_core: - default_config_hash: 2G5FjlDbZWWDTiD3NUntBHFuQ4sFrp1VsMH2kKIDB2I -id: bixal_uswds_content -theme: bixal_uswds -region: content -weight: -6 -provider: null -plugin: system_main_block -settings: - id: system_main_block - label: 'Main page content' - label_display: '0' - provider: system -visibility: { } diff --git a/config/sync/block.block.bixal_uswds_local_tasks.yml b/config/sync/block.block.bixal_uswds_local_tasks.yml deleted file mode 100644 index d4ccefc0a..000000000 --- a/config/sync/block.block.bixal_uswds_local_tasks.yml +++ /dev/null @@ -1,22 +0,0 @@ -uuid: fce6a776-e80f-4975-9fe8-8eb25533bcb4 -langcode: en -status: true -dependencies: - theme: - - bixal_uswds -_core: - default_config_hash: ezVrmCOm0kkrQu3AkWTHOJo9DOQPkTDQcpUqjCx3QIQ -id: bixal_uswds_local_tasks -theme: bixal_uswds -region: help -weight: -5 -provider: null -plugin: local_tasks_block -settings: - id: local_tasks_block - label: Tabs - label_display: '0' - provider: core - primary: true - secondary: true -visibility: { } diff --git a/config/sync/block.block.bixal_uswds_messages.yml b/config/sync/block.block.bixal_uswds_messages.yml deleted file mode 100644 index b5ce75143..000000000 --- a/config/sync/block.block.bixal_uswds_messages.yml +++ /dev/null @@ -1,22 +0,0 @@ -uuid: 1b705334-213b-40ad-87d1-41af9695f461 -langcode: en -status: true -dependencies: - module: - - system - theme: - - bixal_uswds -_core: - default_config_hash: KIRJdxuSar1WHKnHKfD-tAyAp6I6yTPBfDS9A6tBaTg -id: bixal_uswds_messages -theme: bixal_uswds -region: help -weight: -6 -provider: null -plugin: system_messages_block -settings: - id: system_messages_block - label: 'Status messages' - label_display: '0' - provider: system -visibility: { } diff --git a/config/sync/block.block.bixal_uswds_page_title.yml b/config/sync/block.block.bixal_uswds_page_title.yml deleted file mode 100644 index 4f0deb3e2..000000000 --- a/config/sync/block.block.bixal_uswds_page_title.yml +++ /dev/null @@ -1,20 +0,0 @@ -uuid: ece2eb22-ccef-481a-9c95-71e72789e613 -langcode: en -status: true -dependencies: - theme: - - bixal_uswds -_core: - default_config_hash: Y1X3ac5Q9KbzE_7p4d5WMA3P1WtvzLi4I56Cf_pddy8 -id: bixal_uswds_page_title -theme: bixal_uswds -region: help -weight: -3 -provider: null -plugin: page_title_block -settings: - id: page_title_block - label: 'Page title' - label_display: '0' - provider: core -visibility: { } diff --git a/config/sync/block.block.bixaluswds_breadcrumbs.yml b/config/sync/block.block.bixaluswds_breadcrumbs.yml new file mode 100644 index 000000000..2ca6532d9 --- /dev/null +++ b/config/sync/block.block.bixaluswds_breadcrumbs.yml @@ -0,0 +1,20 @@ +uuid: 18f980e9-bc4c-4bae-95cc-9c05bed9971f +langcode: en +status: true +dependencies: + module: + - system + theme: + - bixaluswds +id: bixaluswds_breadcrumbs +theme: bixaluswds +region: no_region +weight: -4 +provider: null +plugin: system_breadcrumb_block +settings: + id: system_breadcrumb_block + label: Breadcrumbs + label_display: '0' + provider: system +visibility: { } diff --git a/config/sync/block.block.vote_gov_content.yml b/config/sync/block.block.bixaluswds_content.yml similarity index 76% rename from config/sync/block.block.vote_gov_content.yml rename to config/sync/block.block.bixaluswds_content.yml index 2bde89bd1..8a6cf59b2 100644 --- a/config/sync/block.block.vote_gov_content.yml +++ b/config/sync/block.block.bixaluswds_content.yml @@ -1,15 +1,15 @@ -uuid: b71a8516-0b53-40d3-a0ed-5fdda3874805 +uuid: 63398650-ac85-40ab-bbc5-624cbf7d28c8 langcode: en status: true dependencies: module: - system theme: - - vote_gov + - bixaluswds _core: default_config_hash: zi0BPmuyVpUHAQAYYi8qC8jfAO1MkRPw1_STBhdmc_Y -id: vote_gov_content -theme: vote_gov +id: bixaluswds_content +theme: bixaluswds region: content weight: -5 provider: null diff --git a/config/sync/block.block.footernavigation.yml b/config/sync/block.block.bixaluswds_footernavigation.yml similarity index 67% rename from config/sync/block.block.footernavigation.yml rename to config/sync/block.block.bixaluswds_footernavigation.yml index ab7cb7868..004db3770 100644 --- a/config/sync/block.block.footernavigation.yml +++ b/config/sync/block.block.bixaluswds_footernavigation.yml @@ -1,4 +1,4 @@ -uuid: 67ee4e15-1273-44f3-9d1e-dd2c07723621 +uuid: 2be65a12-ba69-43af-bb19-478c2b20a8ac langcode: en status: true dependencies: @@ -7,9 +7,9 @@ dependencies: module: - system theme: - - vote_gov -id: footernavigation -theme: vote_gov + - bixaluswds +id: bixaluswds_footernavigation +theme: bixaluswds region: footer weight: -3 provider: null @@ -22,4 +22,6 @@ settings: level: 1 depth: 0 expand_all_items: false + only_translated_labels: 0 + only_translated_content: 0 visibility: { } diff --git a/config/sync/block.block.htmlsitemap.yml b/config/sync/block.block.bixaluswds_htmlsitemap.yml similarity index 67% rename from config/sync/block.block.htmlsitemap.yml rename to config/sync/block.block.bixaluswds_htmlsitemap.yml index 8dd81ab1b..7ca7197a1 100644 --- a/config/sync/block.block.htmlsitemap.yml +++ b/config/sync/block.block.bixaluswds_htmlsitemap.yml @@ -1,4 +1,4 @@ -uuid: 3493453d-7667-4cd4-85a0-4d54512bb8c0 +uuid: 32e46e38-91a4-4bc0-932f-da834278fb4e langcode: en status: true dependencies: @@ -7,21 +7,21 @@ dependencies: module: - system theme: - - vote_gov -id: htmlsitemap -theme: vote_gov + - bixaluswds +id: bixaluswds_htmlsitemap +theme: bixaluswds region: no_region -weight: 0 +weight: -5 provider: null plugin: 'system_menu_block:main' settings: id: 'system_menu_block:main' - label: 'Main navigation' + label: 'Sitemap Menu' label_display: '0' provider: system level: 1 depth: 1 expand_all_items: false only_translated_labels: 0 - only_translated_content: 1 + only_translated_content: 0 visibility: { } diff --git a/config/sync/block.block.languageswitcher.yml b/config/sync/block.block.bixaluswds_languageswitcher.yml similarity index 63% rename from config/sync/block.block.languageswitcher.yml rename to config/sync/block.block.bixaluswds_languageswitcher.yml index 3b4c1729b..570b0a664 100644 --- a/config/sync/block.block.languageswitcher.yml +++ b/config/sync/block.block.bixaluswds_languageswitcher.yml @@ -1,20 +1,20 @@ -uuid: 99766d39-e338-4a6e-831f-34fb431f8aa9 +uuid: d78e52bb-3ff3-428e-9537-9c240251fc34 langcode: en status: true dependencies: module: - language theme: - - vote_gov -id: languageswitcher -theme: vote_gov + - bixaluswds +id: bixaluswds_languageswitcher +theme: bixaluswds region: header -weight: -5 +weight: -6 provider: null plugin: 'language_block:language_interface' settings: id: 'language_block:language_interface' - label: 'Select Language Mobile' + label: 'Select Language' label_display: '0' provider: language visibility: { } diff --git a/config/sync/block.block.vote_gov_local_tasks.yml b/config/sync/block.block.bixaluswds_local_tasks.yml similarity index 75% rename from config/sync/block.block.vote_gov_local_tasks.yml rename to config/sync/block.block.bixaluswds_local_tasks.yml index 6cf947f1f..b491c55c8 100644 --- a/config/sync/block.block.vote_gov_local_tasks.yml +++ b/config/sync/block.block.bixaluswds_local_tasks.yml @@ -1,13 +1,13 @@ -uuid: 0ff5fe95-8be4-4d38-937f-a9b3e42bb456 +uuid: 5fe64a38-aa28-4837-b539-1ab2ca0b223a langcode: en status: true dependencies: theme: - - vote_gov + - bixaluswds _core: default_config_hash: umNtIMUoh_wuWhK5Dv8-cX7febvOoYCebJ8lOg1NDk0 -id: vote_gov_local_tasks -theme: vote_gov +id: bixaluswds_local_tasks +theme: bixaluswds region: admin weight: -3 provider: null diff --git a/config/sync/block.block.bixaluswds_loginalert.yml b/config/sync/block.block.bixaluswds_loginalert.yml new file mode 100644 index 000000000..d1208fb9e --- /dev/null +++ b/config/sync/block.block.bixaluswds_loginalert.yml @@ -0,0 +1,38 @@ +uuid: 153a77d1-c7a2-4e7c-bded-0c28867c748d +langcode: en +status: true +dependencies: + content: + - 'block_content:basic:4d4c751d-1752-4f3e-95d8-25e981ed573b' + module: + - block_content + - system + - user + theme: + - bixaluswds +id: bixaluswds_loginalert +theme: bixaluswds +region: content +weight: -6 +provider: null +plugin: 'block_content:4d4c751d-1752-4f3e-95d8-25e981ed573b' +settings: + id: 'block_content:4d4c751d-1752-4f3e-95d8-25e981ed573b' + label: 'Login Alert' + label_display: '0' + provider: block_content + status: true + info: '' + view_mode: full +visibility: + request_path: + id: request_path + negate: false + pages: /user/login + user_role: + id: user_role + negate: false + context_mapping: + user: '@user.current_user_context:current_user' + roles: + anonymous: anonymous diff --git a/config/sync/block.block.bixaluswds_mainnavigation.yml b/config/sync/block.block.bixaluswds_mainnavigation.yml new file mode 100644 index 000000000..3544fd772 --- /dev/null +++ b/config/sync/block.block.bixaluswds_mainnavigation.yml @@ -0,0 +1,27 @@ +uuid: 51c9e68d-4679-4f64-91ba-0dc44b449d2a +langcode: en +status: true +dependencies: + config: + - system.menu.main + module: + - system + theme: + - bixaluswds +id: bixaluswds_mainnavigation +theme: bixaluswds +region: header +weight: -4 +provider: null +plugin: 'system_menu_block:main' +settings: + id: 'system_menu_block:main' + label: 'Main navigation' + label_display: '0' + provider: system + level: 1 + depth: 2 + expand_all_items: true + only_translated_labels: 0 + only_translated_content: 0 +visibility: { } diff --git a/config/sync/block.block.vote_gov_messages.yml b/config/sync/block.block.bixaluswds_messages.yml similarity index 76% rename from config/sync/block.block.vote_gov_messages.yml rename to config/sync/block.block.bixaluswds_messages.yml index efca74dce..7893ef8e6 100644 --- a/config/sync/block.block.vote_gov_messages.yml +++ b/config/sync/block.block.bixaluswds_messages.yml @@ -1,15 +1,15 @@ -uuid: c48b1155-8b31-4725-b0b5-d135de85a948 +uuid: 10713e59-1ef9-4035-a583-9b18b24e8f49 langcode: en status: true dependencies: module: - system theme: - - vote_gov + - bixaluswds _core: default_config_hash: vGaqZ52JipOWXIT-icQHPoHXhQgCiiUnrGTbLG3isyc -id: vote_gov_messages -theme: vote_gov +id: bixaluswds_messages +theme: bixaluswds region: admin weight: -2 provider: null diff --git a/config/sync/block.block.bixaluswds_poweredbydrupal.yml b/config/sync/block.block.bixaluswds_poweredbydrupal.yml new file mode 100644 index 000000000..36f3d1acf --- /dev/null +++ b/config/sync/block.block.bixaluswds_poweredbydrupal.yml @@ -0,0 +1,20 @@ +uuid: e99a6d43-8144-49b4-99fc-38aa1b4e0901 +langcode: en +status: true +dependencies: + module: + - system + theme: + - bixaluswds +id: bixaluswds_poweredbydrupal +theme: bixaluswds +region: sidebar +weight: 0 +provider: null +plugin: system_powered_by_block +settings: + id: system_powered_by_block + label: 'Powered by Drupal' + label_display: '0' + provider: system +visibility: { } diff --git a/config/sync/block.block.bixaluswds_sitebranding.yml b/config/sync/block.block.bixaluswds_sitebranding.yml new file mode 100644 index 000000000..2874b5d86 --- /dev/null +++ b/config/sync/block.block.bixaluswds_sitebranding.yml @@ -0,0 +1,23 @@ +uuid: ca5a0d78-7dbd-4c85-abf3-2b6fbd4f4e0c +langcode: en +status: true +dependencies: + module: + - system + theme: + - bixaluswds +id: bixaluswds_sitebranding +theme: bixaluswds +region: header +weight: -5 +provider: null +plugin: system_branding_block +settings: + id: system_branding_block + label: 'Site branding' + label_display: '0' + provider: system + use_site_logo: true + use_site_name: true + use_site_slogan: false +visibility: { } diff --git a/config/sync/block.block.languageswitcher_2.yml b/config/sync/block.block.languageswitcher_2.yml deleted file mode 100644 index 016756139..000000000 --- a/config/sync/block.block.languageswitcher_2.yml +++ /dev/null @@ -1,20 +0,0 @@ -uuid: 1a0635e9-f4dc-4916-979b-e968769e3796 -langcode: en -status: true -dependencies: - module: - - language - theme: - - vote_gov -id: languageswitcher_2 -theme: vote_gov -region: no_region -weight: -5 -provider: null -plugin: 'language_block:language_interface' -settings: - id: 'language_block:language_interface' - label: 'Select Language Desktop' - label_display: '0' - provider: language -visibility: { } diff --git a/config/sync/block.block.search.govsearchblock.yml b/config/sync/block.block.search.govsearchblock.yml deleted file mode 100644 index 5b0d770aa..000000000 --- a/config/sync/block.block.search.govsearchblock.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: d48338b0-c833-4a58-a590-8b47bc8f3cea -langcode: en -status: true -dependencies: - content: - - 'block_content:search:21a0e011-9d20-4893-95a5-72c21087da8d' - module: - - block_content - theme: - - vote_gov -id: search.govsearchblock -theme: vote_gov -region: header -weight: -3 -provider: null -plugin: 'block_content:21a0e011-9d20-4893-95a5-72c21087da8d' -settings: - id: 'block_content:21a0e011-9d20-4893-95a5-72c21087da8d' - label: 'Search.gov search block' - label_display: '0' - provider: block_content - status: true - info: '' - view_mode: full -visibility: { } diff --git a/config/sync/block.block.usa.govemailsignupblock.yml b/config/sync/block.block.usa.govemailsignupblock.yml deleted file mode 100644 index 7e73e0385..000000000 --- a/config/sync/block.block.usa.govemailsignupblock.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: 24b60841-5e64-4521-b57f-cc75513d609d -langcode: en -status: true -dependencies: - content: - - 'block_content:email_signup:28e87cc9-80c5-4a95-a29e-1a2a46a040b4' - module: - - block_content - theme: - - vote_gov -id: usa.govemailsignupblock -theme: vote_gov -region: footer -weight: -4 -provider: null -plugin: 'block_content:28e87cc9-80c5-4a95-a29e-1a2a46a040b4' -settings: - id: 'block_content:28e87cc9-80c5-4a95-a29e-1a2a46a040b4' - label: 'USA.gov email signup block' - label_display: '0' - provider: block_content - status: true - info: '' - view_mode: full -visibility: { } diff --git a/config/sync/block.block.views_block__sitewide_alert_block_1.yml b/config/sync/block.block.views_block__sitewide_alert_block_1.yml deleted file mode 100644 index 27afd2081..000000000 --- a/config/sync/block.block.views_block__sitewide_alert_block_1.yml +++ /dev/null @@ -1,24 +0,0 @@ -uuid: c3ea3f08-7679-4f30-ab00-501ad37a7be3 -langcode: en -status: true -dependencies: - config: - - views.view.sitewide_alert - module: - - views - theme: - - vote_gov -id: views_block__sitewide_alert_block_1 -theme: vote_gov -region: header -weight: -4 -provider: null -plugin: 'views_block:sitewide_alert-block_1' -settings: - id: 'views_block:sitewide_alert-block_1' - label: '' - label_display: '0' - provider: views - views_label: '' - items_per_page: none -visibility: { } diff --git a/config/sync/block.block.vote.govgovernmentbanner.yml b/config/sync/block.block.vote.govgovernmentbanner.yml deleted file mode 100644 index e18275a4e..000000000 --- a/config/sync/block.block.vote.govgovernmentbanner.yml +++ /dev/null @@ -1,25 +0,0 @@ -uuid: 01eafbb6-4baa-49df-bdd8-12fb940577ef -langcode: en -status: true -dependencies: - content: - - 'block_content:government_banner:1447b063-7391-47e1-9bd8-6589be38bf12' - module: - - block_content - theme: - - vote_gov -id: vote.govgovernmentbanner -theme: vote_gov -region: header -weight: -6 -provider: null -plugin: 'block_content:1447b063-7391-47e1-9bd8-6589be38bf12' -settings: - id: 'block_content:1447b063-7391-47e1-9bd8-6589be38bf12' - label: 'Vote.gov Government Banner' - label_display: '0' - provider: block_content - status: true - info: '' - view_mode: full -visibility: { } diff --git a/config/sync/block.block.vote_gov_page_title.yml b/config/sync/block.block.vote_gov_page_title.yml deleted file mode 100644 index 508617507..000000000 --- a/config/sync/block.block.vote_gov_page_title.yml +++ /dev/null @@ -1,20 +0,0 @@ -uuid: 4d40af84-651c-4b66-9ed8-6bf1ae9d120b -langcode: en -status: true -dependencies: - theme: - - vote_gov -_core: - default_config_hash: J3MtGne879ZegCX2RuZn139w-FbITebjlH7TOjuU7K8 -id: vote_gov_page_title -theme: vote_gov -region: page_title -weight: -5 -provider: null -plugin: page_title_block -settings: - id: page_title_block - label: 'Page title' - label_display: '0' - provider: core -visibility: { } diff --git a/config/sync/core.entity_view_display.media.image.default.yml b/config/sync/core.entity_view_display.media.image.default.yml index f72a8e02a..f5edd67bd 100644 --- a/config/sync/core.entity_view_display.media.image.default.yml +++ b/config/sync/core.entity_view_display.media.image.default.yml @@ -5,7 +5,7 @@ dependencies: config: - field.field.media.image.field_caption - field.field.media.image.field_media_image - - image.style.large + - image.style.wide_standard_lg - media.type.image module: - image @@ -27,7 +27,7 @@ content: label: visually_hidden settings: image_link: '' - image_style: large + image_style: wide_standard_lg image_loading: attribute: lazy third_party_settings: { } diff --git a/config/sync/core.entity_view_display.node.voter_guide.full.yml b/config/sync/core.entity_view_display.node.voter_guide.full.yml index ff12ddf6b..867a09ff2 100644 --- a/config/sync/core.entity_view_display.node.voter_guide.full.yml +++ b/config/sync/core.entity_view_display.node.voter_guide.full.yml @@ -38,6 +38,11 @@ content: third_party_settings: { } weight: 3 region: content + content_moderation_control: + settings: { } + third_party_settings: { } + weight: -20 + region: content field_subtitle: type: text_default label: hidden diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index 368fde7c6..0386aba71 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -15,6 +15,7 @@ module: config_split: 0 config_translation: 0 content_moderation: 0 + crop: 0 datetime: 0 disable_language: 0 double_field: 0 @@ -31,6 +32,7 @@ module: file: 0 file_delete: 0 filter: 0 + focal_point: 0 image: 0 language: 0 language_switcher_extended: 0 @@ -83,9 +85,7 @@ module: publication_date: 99 minimal: 1000 theme: - bixal_uswds: 0 + bixaluswds: 0 claro: 0 - stable: 0 votegov: 0 - vote_gov: 0 profile: minimal diff --git a/config/sync/crop.settings.yml b/config/sync/crop.settings.yml new file mode 100644 index 000000000..2fd805cb7 --- /dev/null +++ b/config/sync/crop.settings.yml @@ -0,0 +1,3 @@ +_core: + default_config_hash: 7eGOTSG7bRv_AAqu-Ls8CSnob7zPF1ez-lD2OLZgBHs +flush_derivative_images: true diff --git a/config/sync/crop.type.focal_point.yml b/config/sync/crop.type.focal_point.yml new file mode 100644 index 000000000..f4c2c49c9 --- /dev/null +++ b/config/sync/crop.type.focal_point.yml @@ -0,0 +1,14 @@ +uuid: 478c873f-5caa-42be-b2f0-3c035b751dcd +langcode: en +status: true +dependencies: { } +_core: + default_config_hash: flCi9IdafdLXlJqvoHguutUOiC05-aynK4niYN4YZ3o +label: 'Focal point' +id: focal_point +description: 'Crop type used by Focal point module.' +aspect_ratio: '' +soft_limit_width: null +soft_limit_height: null +hard_limit_width: null +hard_limit_height: null diff --git a/config/sync/editor.editor.basic_html.yml b/config/sync/editor.editor.basic_html.yml index 009e3c56b..201575823 100644 --- a/config/sync/editor.editor.basic_html.yml +++ b/config/sync/editor.editor.basic_html.yml @@ -54,7 +54,7 @@ settings: - ' - - -
- {{ content.field_bx_text | field_value }} -
- - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card--default.html.twig deleted file mode 100644 index 705cd9c8d..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card--default.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'usa-card-group', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - {{ content.field_bx_card_item | field_value }} - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card-item--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card-item--default.html.twig deleted file mode 100644 index 1c0797c1a..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-card-item--default.html.twig +++ /dev/null @@ -1,100 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{# Set the media URI for use in drupal_image. #} -{% set media_uri = elements.field_bx_media.0["#media"].field_media_image.entity.uri.getString() %} -{% set media_alt = elements.field_bx_media.0["#media"].field_media_image.0.alt %} - -{# If there are 4 cards (limit). #} -{% if is_flag == false and card_count == 4 %} - {% set count_class = 'tablet-lg:grid-col-6' %} -{% endif %} - -{% set classes = [ - is_title_position_top ? 'usa-card--header-first', - is_flag ? 'tablet-lg:grid-col-6 usa-card--flag' : 'tablet-lg:grid-col-4', - count_class, - is_flag_right ? 'usa-card--media-right', - 'usa-card', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} -
- {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-collection--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-collection--default.html.twig deleted file mode 100644 index f624d0c1d..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-collection--default.html.twig +++ /dev/null @@ -1,55 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'usa-collection', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - {{ content.field_bx_collection_content | field_value }} - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-cta--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-cta--default.html.twig deleted file mode 100644 index 7f1278ca3..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-cta--default.html.twig +++ /dev/null @@ -1,88 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% if content.field_bx_cta_reverse | render and content.field_bx_cta_reverse.0["#markup"] == 1 %} - {% set order_first = 'order-first'%} - {% set order_last = 'order-last' %} -{% endif %} - -{% set classes = [ - 'tablet-lg:flex-row', - 'flex-column', - 'cta-split', - 'border-2px', - 'grid-row', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} -
- -
-

{{ content.field_bx_title | field_value }}

- - {% if content.field_bx_text | render %} - {{ content.field_bx_text | field_value }} - {% endif %} - - {% if content.field_bx_link | render %} - - {{ content.field_bx_link.0["#title"] }} - - {% endif %} -
-
- -
-
- {{ content.field_bx_media | field_value }} -
-
- {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-hero--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-hero--default.html.twig deleted file mode 100644 index 14c71c705..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-hero--default.html.twig +++ /dev/null @@ -1,88 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{# Set vars for the hero image. #} -{% set image_url = paragraph.field_bx_media.entity.field_media_image.entity.uri.getString() %} -{% set image_style_url = image_url | image_style('max_2600x2600') %} -{% set bottom_margin = content.field_bx_bottom_padding.0["#markup"] %} - -{% set classes = [ - 'usa-hero', - bottom_margin == 0 ? 'margin-bottom-8' : 'margin-bottom-0', - 'paragraph', - 'paragraph--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'paragraph--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'paragraph--unpublished' -] %} - -{% block paragraph %} - - {% block content %} -
-
- -

- {% if content.field_bx_title_eyebrow | render %} - - {{ content.field_bx_title_eyebrow | field_value }} - - {{ content.field_bx_title | field_value }} - {% endif %} -

- - {% if content.field_bx_text | render %} -

{{ content.field_bx_text | field_value }}

- {% endif %} - - {% if content.field_bx_link | render %} - - {{ content.field_bx_link.0["#title"] }} - - {% endif %} - -
-
- {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-media--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-media--default.html.twig deleted file mode 100644 index 96ff411b2..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-media--default.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - {{ content.field_bx_media | field_value }} - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list--default.html.twig deleted file mode 100644 index 8e15424d4..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list--default.html.twig +++ /dev/null @@ -1,56 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'usa-process-list', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - {{ content.field_bx_process_list_item | field_value }} - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list-item--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list-item--default.html.twig deleted file mode 100644 index 57d01de95..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-process-list-item--default.html.twig +++ /dev/null @@ -1,67 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% if is_large_text == true %} - {% set large_text = 'font-sans-xl line-height-sans-1 padding-bottom-2' %} -{% endif %} - -{% set classes = [ - 'usa-process-list__item', - 'maxw-full', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - -

- {{ content.field_bx_title | field_value }} -

- - {{ content.field_bx_text | field_value }} - - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-simple-cta--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-simple-cta--default.html.twig deleted file mode 100644 index d2987e9ea..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-simple-cta--default.html.twig +++ /dev/null @@ -1,97 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{% if content.field_bx_button_style | render %} - {% set button_style = 'usa-button--' ~ content.field_bx_button_style.0["#markup"] |replace({'_': "-"}) %} - {% if content.field_bx_button_style.0["#markup"] == 'outline_inverse' %} - {% set button_style = 'usa-button--outline usa-button--inverse' %} - {% endif %} -{% endif %} - -{{ drupal_breakpoint() }} - -{% if content.field_bx_button_big.0["#markup"] == 1 %} - {% set button_big = 'usa-button--big' %} -{% endif %} - -{% set classes = [ - 'simple-cta', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - - {# Required Title. #} -

{{ content.field_bx_title | field_value }}

- - {% if content.field_bx_text | render %} -
- {{ content.field_bx_text | field_value }} -
- {% endif %} - - {% if content.field_bx_link | render %} - - {# dark background if the button style is outline inverse. #} - {% if content.field_bx_button_style.0["#markup"] == 'outline_inverse' %} -
- {% endif %} - - - {{ content.field_bx_link.0["#title"] }} - - - {% if content.field_bx_button_style.0["#markup"] == 'outline_inverse' %} -
- {% endif %} - - {% endif %} - - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-site-alert--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-site-alert--default.html.twig deleted file mode 100644 index 016490abe..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-site-alert--default.html.twig +++ /dev/null @@ -1,74 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set alert_aria = content.field_bx_title.0["#context"].value %} -{% set alert_style = content.field_bx_alert_emergency.0["#markup"] %} - -{% set classes = [ - alert_style == 1 ? 'usa-site-alert--emergency', - 'usa-site-alert', - 'usa-site-alert--info', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} -
- - {% block content %} -
-
- -

{{ content.field_bx_title | field_value }}

- - {% if content.field_bx_text | render %} -
- {{ content.field_bx_text | field_value }} -
- {% endif %} - -
-
- {% endblock %} - -
-{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-summary-box--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-summary-box--default.html.twig deleted file mode 100644 index 7d1eb7fc6..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-summary-box--default.html.twig +++ /dev/null @@ -1,65 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'usa-summary-box', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} -
- -

- {{ content.field_bx_title | field_value }} -

- -
- {{ content.field_bx_text | field_value }} -
- -
- {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs--default.html.twig deleted file mode 100644 index a3188ab22..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs--default.html.twig +++ /dev/null @@ -1,72 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} - -{{ attach_library('bixal_uswds/a11y_tabs') }} - -{% set classes = [ - 'c-tabs', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - -
- {% for item in content.field_bx_tabs_item | children(true) %} - - {% endfor %} -
- - {{ content.field_bx_tabs_item | field_value }} - - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs-item--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs-item--default.html.twig deleted file mode 100644 index 906813bd4..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-tabs-item--default.html.twig +++ /dev/null @@ -1,61 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'is-wysiwyg', - 'c-tabs__panel', - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - - {% block content %} - {{ content.field_bx_text | field_value }} - {% endblock %} - - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-title--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-title--default.html.twig deleted file mode 100644 index df7232ef3..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--bx-title--default.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} -

{{ content.field_bx_title | field_value }}

- {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/components/paragraph--default.html.twig b/web/themes/custom/bixal_uswds/templates/components/paragraph--default.html.twig deleted file mode 100644 index 26bf2ee56..000000000 --- a/web/themes/custom/bixal_uswds/templates/components/paragraph--default.html.twig +++ /dev/null @@ -1,54 +0,0 @@ -{# -/** - * @file - * Default theme implementation to display a paragraph. - * - * Available variables: - * - paragraph: Full paragraph entity. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - paragraph.getCreatedTime() will return the paragraph creation timestamp. - * - paragraph.id(): The paragraph ID. - * - paragraph.bundle(): The type of the paragraph, for example, "image" or "text". - * - paragraph.getOwnerId(): The user ID of the paragraph author. - * See Drupal\paragraphs\Entity\Paragraph for a full list of public properties - * and methods for the paragraph object. - * - content: All paragraph items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - paragraphs: The current template type (also known as a "theming hook"). - * - paragraphs--type-[type]: The current paragraphs type. For example, if the paragraph is an - * "Image" it would result in "paragraphs--type--image". Note that the machine - * name will often be in a short form of the human readable label. - * - paragraphs--view-mode--[view_mode]: The View Mode of the paragraph; for example, a - * preview would result in: "paragraphs--view-mode--preview", and - * default: "paragraphs--view-mode--default". - * - view_mode: View mode; for example, "preview" or "full". - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_paragraph() - * - * @ingroup themeable - */ -#} -{% set classes = [ - 'component', - 'component--type--' ~ paragraph.bundle|clean_class, - view_mode ? 'component--view-mode--' ~ view_mode|clean_class, - not paragraph.isPublished() ? 'component--unpublished' -] %} - -{% block paragraph %} - - {% block content %} - {{ content }} - {% endblock %} - -{% endblock paragraph %} diff --git a/web/themes/custom/bixal_uswds/templates/field/field--field-bx-components.html.twig b/web/themes/custom/bixal_uswds/templates/field/field--field-bx-components.html.twig deleted file mode 100644 index 4af964aa4..000000000 --- a/web/themes/custom/bixal_uswds/templates/field/field--field-bx-components.html.twig +++ /dev/null @@ -1,84 +0,0 @@ -{# -/** - * @file - * Theme override for a field. - * - * To override output, copy the "field.html.twig" from the templates directory - * to your theme's directory and customize it, just like customizing other - * Drupal templates such as page.html.twig or node.html.twig. - * - * Instead of overriding the theming for all fields, you can also just override - * theming for a subset of fields using - * @link themeable Theme hook suggestions. @endlink For example, - * here are some theme hook suggestions that can be used for a field_foo field - * on an article node type: - * - field--node--field-foo--article.html.twig - * - field--node--field-foo.html.twig - * - field--node--article.html.twig - * - field--field-foo.html.twig - * - field--text-with-summary.html.twig - * - field.html.twig - * - * Available variables: - * - attributes: HTML attributes for the containing element. - * - label_hidden: Whether to show the field label or not. - * - title_attributes: HTML attributes for the title. - * - label: The label for the field. - * - multiple: TRUE if a field can contain multiple items. - * - items: List of all the field items. Each item contains: - * - attributes: List of HTML attributes for each item. - * - content: The field item's content. - * - entity_type: The entity type to which the field belongs. - * - field_name: The name of the field. - * - field_type: The type of the field. - * - label_display: The display settings for the label. - * - * - * @see template_preprocess_field() - */ -#} - -{% if element.0["#format"] is not empty %} - {% set text_format = element.0["#format"] %} -{% endif %} - -{% set classes = [ - 'component', - 'component--name-' ~ field_name|clean_class, - 'component--type-' ~ field_type|clean_class, - 'component--label-' ~ label_display, - label_display == 'inline' ? 'clearfix', - text_format in ['full_html', 'basic_html'] ? 'is-wysiwyg' -] %} - -{% set title_classes = [ - 'component__label', - label_display == 'visually_hidden' ? 'visually-hidden', -] %} - -{% if label_hidden %} - {% if multiple %} - - {% for item in items %} - {{ item.content }} - {% endfor %} - - {% else %} - {% for item in items %} - {{ item.content }} - {% endfor %} - {% endif %} -{% else %} - - {{ label }} - {% if multiple %} -
- {% endif %} - {% for item in items %} - {{ item.content }}
- {% endfor %} - {% if multiple %} - - {% endif %} - -{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/form/datetime-form.html.twig b/web/themes/custom/bixal_uswds/templates/form/datetime-form.html.twig deleted file mode 100644 index 1a26f111c..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/datetime-form.html.twig +++ /dev/null @@ -1,15 +0,0 @@ -{# -/** - * @file - * Theme override of a datetime form element. - * - * Available variables: - * - attributes: HTML attributes for the datetime form element. - * - content: The datelist form element to be output. - * - * @see template_preprocess_datetime_form() - */ -#} - - {{ content }} - diff --git a/web/themes/custom/bixal_uswds/templates/form/datetime-wrapper.html.twig b/web/themes/custom/bixal_uswds/templates/form/datetime-wrapper.html.twig deleted file mode 100644 index 7d89b4e85..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/datetime-wrapper.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{# -/** - * @file - * Theme override of a datetime form wrapper. - * - * @todo Refactor when https://www.drupal.org/node/3010558 is fixed. - * - * @see template_preprocess_form_element() - */ -#} - -{% set title_classes = [ - 'form-item__label', - required ? 'js-form-required', - required ? 'form-required', - 'usa-label', -] %} - -
- {% if title %} - {{ title }} - {% endif %} - {{ content }} - {% if errors %} -
- {{ errors }} -
- {% endif %} - {% if description %} - - {{ description }} -
- {% endif %} - diff --git a/web/themes/custom/bixal_uswds/templates/form/details.html.twig b/web/themes/custom/bixal_uswds/templates/form/details.html.twig deleted file mode 100644 index da481927b..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/details.html.twig +++ /dev/null @@ -1,71 +0,0 @@ -{# -/** - * @file - * Theme override for a details element. - * - * Available variables - * - attributes: A list of HTML attributes for the details element. - * - errors: (optional) Any errors for this details element, may not be set. - * - title: (optional) The title of the element, may not be set. - * - summary_attributes: A list of HTML attributes for the summary element. - * - description: (optional) The description of the element, may not be set. - * - children: (optional) The children of the element, may not be set. - * - value: (optional) The value of the element, may not be set. - * - * @see template_preprocess_details() - * @see uswds_preprocess_details() - */ -#} -{# -Prefix 'details' class to avoid collision with Modernizr. - -@todo Remove prefix after https://www.drupal.org/node/2981732 has been solved. -#} - -{# Set the form id.#} -{% set form_id = element["#form_id"] %} - -{% set classes = [ - 'uswds-details', - form_id == 'search_form' ? 'margin-top-3' -] %} - -{% set content_wrapper_classes = [ - 'uswds-details__wrapper', - 'details-wrapper', -] %} - - - {%- if title -%} - {% set summary_classes = [ - 'uswds-details__summary', - required ? 'js-form-required', - required ? 'form-required', - ] %} - - - {{- title -}} - {%- if required -%} - - {%- endif -%} - - - {%- endif -%} - - - {% if errors %} -
- {{ errors }} -
- {% endif %} - {%- if description -%} -
{{ description }}
- {%- endif -%} - {%- if children -%} - {{ children }} - {%- endif -%} - {%- if value -%} - {{ value }} - {%- endif -%} - - diff --git a/web/themes/custom/bixal_uswds/templates/form/fieldset.html.twig b/web/themes/custom/bixal_uswds/templates/form/fieldset.html.twig deleted file mode 100644 index 1171c84a4..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/fieldset.html.twig +++ /dev/null @@ -1,105 +0,0 @@ -{# -/** - * @file - * Theme override for a fieldset element and its children. - * - * Available variables: - * - attributes: HTML attributes for the
element. - * - errors: (optional) Any errors for this
element, may not be set. - * - required: Boolean indicating whether the
element is required. - * - legend: The element containing the following properties: - * - title: Title of the
, intended for use as the text - of the . - * - attributes: HTML attributes to apply to the element. - * - description: The description element containing the following properties: - * - content: The description content of the
. - * - attributes: HTML attributes to apply to the description container. - * - description_display: Description display setting. It can have these values: - * - before: The description is output before the element. - * - after: The description is output after the element (default). - * - invisible: The description is output after the element, hidden visually - * but available to screen readers. - * - children: The rendered child elements of the
. - * - prefix: The content to add before the
children. - * - suffix: The content to add after the
children. - * - title_display: Title display setting. - * - inline_items: Boolean indicating whether the
items are inline. - * - * @see template_preprocess_fieldset() - * @see olivero_preprocess_fieldset() - */ -#} - -{% set type = element["#type"] %} - -{% set classes = [ - 'usa-fieldset', - 'fieldset', - attributes.hasClass('fieldgroup') ? 'fieldset--group', - 'js-form-item', - 'form-item', - 'js-form-wrapper', - 'form-wrapper', -] %} - -{% set wrapper_classes = [ - 'fieldset__wrapper', - attributes.hasClass('fieldgroup') ? 'fieldset__wrapper--group', -] %} - -{% set legend_span_classes = [ - 'fieldset__label', - attributes.hasClass('fieldgroup') ? 'fieldset__label--group', - required ? 'js-form-required', - required ? 'form-required', -] %} - -{% set legend_classes = [ - 'fieldset__legend', - 'usa-legend', - attributes.hasClass('fieldgroup') and not attributes.hasClass('form-composite') ? 'fieldset__legend--group', - attributes.hasClass('form-composite') ? 'fieldset__legend--composite', - title_display == 'invisible' ? 'fieldset__legend--invisible' : 'fieldset__legend--visible', -] %} - -{% set description_classes = [ - 'fieldset__description', -] %} - - - {# Always wrap fieldset legends in a for CSS positioning. #} - {% if legend.title %} - - {{ legend.title }} - - {% endif %} - - - {% if inline_items %} -
- {% endif %} - - {% if description_display == 'before' and description.content %} - {{ description.content }}
- {% endif %} - {% if prefix %} - {{ prefix }} - {% endif %} - {{ children }} - {% if suffix %} - {{ suffix }} - {% endif %} - {% if errors %} -
- {{ errors }} -
- {% endif %} - {% if description_display in ['after', 'invisible'] and description.content %} - {{ description.content }} - {% endif %} - - {% if inline_items %} - - {% endif %} - -
diff --git a/web/themes/custom/bixal_uswds/templates/form/file-managed-file.html.twig b/web/themes/custom/bixal_uswds/templates/form/file-managed-file.html.twig deleted file mode 100644 index 6f348837b..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/file-managed-file.html.twig +++ /dev/null @@ -1,28 +0,0 @@ -{# -/** - * @file - * Theme override to display a file form widget. - * - * Available variables: - * - element: Form element for the file upload. - * - attributes: HTML attributes for the containing element. - * - * @see template_preprocess_file_managed_file() - */ -#} -{#edit-usa-managed-file-upload#} -{% set extensions = element["#upload_validators"].file_validate_extensions.0 %} -{% set aria_for = element["#label_for"] %} - -{% set classes = [ - 'js-form-managed-file', - 'form-managed-file', -] %} - - - {{ 'Select'|t }} {{ extensions }} {{ 'files'|t }} - - - - {{ element }} - diff --git a/web/themes/custom/bixal_uswds/templates/form/form--search-block-form.html.twig b/web/themes/custom/bixal_uswds/templates/form/form--search-block-form.html.twig deleted file mode 100644 index 7223c6e7d..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/form--search-block-form.html.twig +++ /dev/null @@ -1,24 +0,0 @@ -{# -/** - * @file - * Theme override for a 'form' element. - * - * Available variables: - * - attributes: A list of HTML attributes for the wrapper element. - * - children: The child elements of the form. - * - * @see template_preprocess_form() - */ -#} -{% - set classes = [ - 'search-form', - 'search-block-form', - 'usa-search', - 'usa-search--small', -] -%} - - - {{ children }} - diff --git a/web/themes/custom/bixal_uswds/templates/form/form-element-label--search-form--search.html.twig b/web/themes/custom/bixal_uswds/templates/form/form-element-label--search-form--search.html.twig deleted file mode 100644 index a9cd6494f..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/form-element-label--search-form--search.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "form-element-label.html.twig" %} - -{# Overrides to adhere to USWDS code.#} -{% set attributes = attributes.addClass('usa-sr-only') %} diff --git a/web/themes/custom/bixal_uswds/templates/form/form-element-label--type--date.html.twig b/web/themes/custom/bixal_uswds/templates/form/form-element-label--type--date.html.twig deleted file mode 100644 index 86ec3b361..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/form-element-label--type--date.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "form-element-label.html.twig" %} - -{# Overrides to adhere to USWDS code.#} -{% set attributes = attributes.addClass(classes).setAttribute('id', element["#id"] ~ '-label') %} diff --git a/web/themes/custom/bixal_uswds/templates/form/input--date.html.twig b/web/themes/custom/bixal_uswds/templates/form/input--date.html.twig deleted file mode 100644 index cf3581316..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input--date.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{% extends "input.html.twig" %} - -{# Overrides to adhere to USWDS code. #} -{% set date_id = element["#id"] %} -{% set date_id_hint = date_id ~ '-hint' %} -{% set aria_labelleby = date_id ~ '-label' %} -{% set date_name = element["#id"] %} -{% set date_type = element["#attributes"]["type"] %} - -{% if date_type == 'date' %} - {% set date_hint = 'mm/dd/yyyy' %} -{% elseif date_type == 'time' %} - {% set date_hint_class = 'is-time' %} - {% set date_hint = 'hh:mm' %} -{% endif %} - -{% block form_content %} -
- {{ date_hint }} -
- - {% if time_picker_style == 'uswds_time_picker' or date_type == 'date' %} -
- {% endif %} - - {{ children }} - - {% if time_picker_style == 'uswds_time_picker' or date_type == 'date' %} -
- {% endif %} -{% endblock form_content %} diff --git a/web/themes/custom/bixal_uswds/templates/form/input--file.html.twig b/web/themes/custom/bixal_uswds/templates/form/input--file.html.twig deleted file mode 100644 index 0e2ea7139..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input--file.html.twig +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "input.html.twig" %} - -{# Overrides to adhere to USWDS code.#} -{% set attributes = attributes.addClass(classes).setAttribute('aria-describedby', element["#id"] ~ '-hint') %} diff --git a/web/themes/custom/bixal_uswds/templates/form/input--range.html.twig b/web/themes/custom/bixal_uswds/templates/form/input--range.html.twig deleted file mode 100644 index 51093c2c0..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input--range.html.twig +++ /dev/null @@ -1,17 +0,0 @@ -{% extends "input.html.twig" %} - -{% block library %} - {{ attach_library('bixal_uswds/form_range') }} -{% endblock library %} - -{% set aria_max = element["#max"] %} -{% set aria_min = element["#min"] %} -{% set aria_value = element["#value"] %} - -{# Overrides to adhere to USWDS code.#} -{% set attributes = attributes.addClass(classes) - .setAttribute('value', value) - .setAttribute('aria-valuemin', aria_min) - .setAttribute('aria-valuemax', aria_max) - .setAttribute('aria-valuenow', aria_min) - .setAttribute('role', 'slider') %} diff --git a/web/themes/custom/bixal_uswds/templates/form/input--submit--search-block-submit.html.twig b/web/themes/custom/bixal_uswds/templates/form/input--submit--search-block-submit.html.twig deleted file mode 100644 index 98e678aeb..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input--submit--search-block-submit.html.twig +++ /dev/null @@ -1,18 +0,0 @@ -{# -/** - * @file - * Theme override for an 'input' #type form element. - * - * Available variables: - * - attributes: A list of HTML attributes for the input element. - * - children: Optional additional rendered elements. - * - * @see template_preprocess_input() - */ -#} - - - {{ 'Search'|t }} - diff --git a/web/themes/custom/bixal_uswds/templates/form/input--submit--search-form-page.html.twig b/web/themes/custom/bixal_uswds/templates/form/input--submit--search-form-page.html.twig deleted file mode 100644 index 5304f76c9..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input--submit--search-form-page.html.twig +++ /dev/null @@ -1,19 +0,0 @@ -{# -/** - * @file - * Theme override for an 'input' #type form element. - * - * Available variables: - * - attributes: A list of HTML attributes for the input element. - * - children: Optional additional rendered elements. - * - * @see template_preprocess_input() - */ -#} - - - {{ 'Search'|t }} - {{ 'Search'|t }} - diff --git a/web/themes/custom/bixal_uswds/templates/form/input.html.twig b/web/themes/custom/bixal_uswds/templates/form/input.html.twig deleted file mode 100644 index 2647077d5..000000000 --- a/web/themes/custom/bixal_uswds/templates/form/input.html.twig +++ /dev/null @@ -1,42 +0,0 @@ -{# -/** - * @file - * Theme override for an 'input' #type form element. - * - * Available variables: - * - attributes: A list of HTML attributes for the input element. - * - children: Optional additional rendered elements. - * - * @see template_preprocess_input() - */ -#} -{% block library %} -{# Libraries can go here or in extended templates.#} -{% endblock library %} - -{# Set variables for elements. #} -{% set type = element["#attributes"].type %} -{% set element_id = element["#id"] %} -{% set form_id = element["#form_id"] %} - -{# Variable for button_type. #} -{% if element["#button_type"] is not empty %} - {% set button_type = element["#button_type"] %} -{% endif %} - -{# Set various classes to adhere to USWDS form classes. #} -{% set classes = [ - type in ['checkbox', 'radio'] ? 'usa-' ~ type ~ '__input', - type in ['password', 'password_confirm', 'text', 'tel', 'number', 'url', 'email', 'date', 'time'] ? 'usa-input', - type in ['file', 'managed_file'] ? 'usa-file-input', - type == 'submit' ? 'usa-button', - button_type == 'reset' ? 'usa-button--secondary', - type == 'range' ? 'usa-range', - time_picker_style == 'html5_time_picker' ? 'width-card-lg is-html5-time-picker', - form_id == 'search_form' ? 'maxw-card tablet:maxw-mobile-lg', -] %} - -{# Render the input. #} -{% block form_content %} - {{ children }} -{% endblock form_content %} diff --git a/web/themes/custom/bixal_uswds/templates/layout/page.html.twig b/web/themes/custom/bixal_uswds/templates/layout/page.html.twig deleted file mode 100644 index 1531d9b25..000000000 --- a/web/themes/custom/bixal_uswds/templates/layout/page.html.twig +++ /dev/null @@ -1,112 +0,0 @@ -{# -/** -* @file -* Theme override to display a single page. -* -* The doctype, html, head and body tags are not in this template. Instead they -* can be found in the html.html.twig template in this directory. -* -* Available variables: -* -* General utility variables: -* - base_path: The base URL path of the Drupal installation. Will usually be -* "/" unless you have installed Drupal in a sub-directory. -* - is_front: A flag indicating if the current page is the front page. -* - logged_in: A flag indicating if the user is registered and signed in. -* - is_admin: A flag indicating if the user has permission to access -* administration pages. -* -* Site identity: -* - front_page: The URL of the front page. Use this instead of base_path when -* linking to the front page. This includes the language domain or prefix. -* -* Page content (in order of occurrence in the default page.html.twig): -* - node: Fully loaded node, if there is an automatically-loaded node -* associated with the page and the node ID is the second argument in the -* page's path (e.g. node/12345 and node/12345/revisions, but not -* comment/reply/12345). -* -* Regions: -* - page.breadcrumb: Items for the breadcrumb region. -* - page.highlighted: Items for the highlighted content region. -* - page.help: Dynamic help text, mostly for admin pages. -* - page.content: The main content of the current page. -* - page.sidebar: Items for the sidebar. -* - page.footer: Items for the footer region. -* -* @see template_preprocess_page() -* @see html.html.twig -*/ -#} - -{% if page.sidebar %} - {% set content_grid_class = 'desktop:grid-col-9 order-last' %} - {% set aside_grid_class = 'desktop:grid-col-3 order-first' %} -{% else %} - {% set content_grid_class = 'desktop:grid-col-12' %} -{% endif %} - -{# Set the path to usa icons. #} -{% set path_image = '/dist/assets/img' %} - -{# Set the base URL. #} -{% set base_url = url('')|render|split('/', -1)|join('/') %} - -
- {# Preface region for USA banner. #} - {{ page.preface }} - - {# Header partial. #} - - {% include '@bixal_uswds/partials/p-header.html.twig' %} - - -
- {# link is in html.html.twig #} - - - {# Highlighted region for full width components such as a hero. #} - {{ page.highlighted }} - - {# Breadcrumb region. #} - {% if page.breadcrumb %} -
- {{ page.breadcrumb }} -
- {% endif %} - -
- {# Help region. #} - {{ page.help }} -
- -
- {# Main content region. #} -
-
- {{ page.content }} -
- - {# Sidebar region. #} - {% if page.sidebar %} -
- -
- {% endif %} -
-
{# /.layout-content #} - - {# Postscript region for full width components such as a global site CTA. #} - {{ page.postscript }} -
- - {# Footer partial. #} -
- {% include '@bixal_uswds/partials/p-footer.html.twig' %} - - {% include '@bixal_uswds/partials/p-identifier.html.twig' %} -
- -
{# /.layout-container #} diff --git a/web/themes/custom/bixal_uswds/templates/media/media--image-ckeditor.html.twig b/web/themes/custom/bixal_uswds/templates/media/media--image-ckeditor.html.twig deleted file mode 100644 index 3f15c64aa..000000000 --- a/web/themes/custom/bixal_uswds/templates/media/media--image-ckeditor.html.twig +++ /dev/null @@ -1 +0,0 @@ -{% extends "media.html.twig" %} diff --git a/web/themes/custom/bixal_uswds/templates/media/media--image-component.html.twig b/web/themes/custom/bixal_uswds/templates/media/media--image-component.html.twig deleted file mode 100644 index 8ad1bf53f..000000000 --- a/web/themes/custom/bixal_uswds/templates/media/media--image-component.html.twig +++ /dev/null @@ -1 +0,0 @@ -{% extends "media--image.html.twig" %} diff --git a/web/themes/custom/bixal_uswds/templates/media/media--image.html.twig b/web/themes/custom/bixal_uswds/templates/media/media--image.html.twig deleted file mode 100644 index b4acdf510..000000000 --- a/web/themes/custom/bixal_uswds/templates/media/media--image.html.twig +++ /dev/null @@ -1,39 +0,0 @@ -{# -/** - * @file - * Theme override to display a media item. - * - * Available variables: - * - media: The media item, with limited access to object properties and - * methods. - * - name: Name of the media. - * - content: Media content. - * - * @see template_preprocess_media() - * - * @ingroup themeable - */ -#} - -{% set classes = [ - 'media-image', - 'media', - 'media--type-' ~ media.bundle()|clean_class, - not media.isPublished() ? 'media--unpublished', - view_mode ? 'media--view-mode-' ~ view_mode|clean_class, -] %} - - - {{ title_suffix.contextual_links }} - - {% if content.field_media_image | render %} - {{ content.field_media_image | field_value }} - {% endif %} - - {% if content.field_image_caption | render %} -
- {{ content.field_image_caption | field_value }} -
- {% endif %} - -{{ drupal_breakpoint() }} diff --git a/web/themes/custom/bixal_uswds/templates/media/media--remote-video.html.twig b/web/themes/custom/bixal_uswds/templates/media/media--remote-video.html.twig deleted file mode 100644 index f8561c124..000000000 --- a/web/themes/custom/bixal_uswds/templates/media/media--remote-video.html.twig +++ /dev/null @@ -1,47 +0,0 @@ -{# -/** - * @file - * Theme override to display a media item. - * - * Available variables: - * - media: The media item, with limited access to object properties and - * methods. - * - name: Name of the media. - * - content: Media content. - * - * @see template_preprocess_media() - * - * @ingroup themeable - */ -#} -{# Remote video library. #} -{{ attach_library('bixal_uswds/remote_video') }} - -{# Set the media url. #} -{% set media_url = media.field_media_oembed_video.getString() %} - -{# Note there did not seem to be a programtic way to get the video provider from Xdebug. #} -{# Set the video provider if youtube. #} -{% if 'youtube' in media_url %} - {% set video_provider = 'YouTube' %} -{% endif %} - -{# Set the video provider if vimeo. #} -{% if 'vimeo' in media_url %} - {% set video_provider = 'Vimeo' %} -{% endif %} - -{% set classes = [ - 'video-wrap', - 'media', - 'media--type-' ~ media.bundle()|clean_class, - not media.isPublished() ? 'media--unpublished', - view_mode ? 'media--view-mode-' ~ view_mode|clean_class, -] %} - - - {{ title_suffix.contextual_links }} - {% if content %} - {{ content.field_media_oembed_video | field_value }} - {% endif %} - diff --git a/web/themes/custom/bixal_uswds/templates/misc/feed-icon.html.twig b/web/themes/custom/bixal_uswds/templates/misc/feed-icon.html.twig deleted file mode 100644 index 3f214366f..000000000 --- a/web/themes/custom/bixal_uswds/templates/misc/feed-icon.html.twig +++ /dev/null @@ -1,22 +0,0 @@ -{# -/** - * @file - * Theme override for a feed icon. - * - * Available variables: - * - url: An internal system path or a fully qualified external URL of the feed. - * - title: Title of the feed for describing the feed on the subscribe link. - * - attributes: Remaining HTML attributes for the feed link. - * - title: A descriptive title of the feed link. - * - class: HTML classes to be applied to the feed link. - */ -#} - - - - {{ 'RSS Feed'|t }} - - - {{ 'RSS Feed'|t }} - diff --git a/web/themes/custom/bixal_uswds/templates/misc/status-messages.html.twig b/web/themes/custom/bixal_uswds/templates/misc/status-messages.html.twig deleted file mode 100644 index 65ea22094..000000000 --- a/web/themes/custom/bixal_uswds/templates/misc/status-messages.html.twig +++ /dev/null @@ -1,67 +0,0 @@ -{# -/** - * @file - * Theme override for status messages. - * - * Displays status, error, and warning messages, grouped by type. - * - * An invisible heading identifies the messages for assistive technology. - * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html - * for info. - * - * Add an ARIA label to the contentinfo area so that assistive technology - * user agents will better describe this landmark. - * - * Available variables: - * - message_list: List of messages to be displayed, grouped by type. - * - status_headings: List of all status types. - * - attributes: HTML attributes for the element, including: - * - class: HTML classes. - */ -#} -
- {% block messages %} - {% for type, messages in message_list %} - {% set classes = [ - 'messages', - 'messages--' ~ type, - 'usa-alert', - 'usa-alert--' ~ type, - type == 'status' ? 'usa-alert--success', - ] %} - -
- {% if type == 'error' %} -
- {% endif %} - - {% if status_headings[type] %} -

{{ status_headings[type] }}

- {% endif %} - - {% if messages|length > 1 %} -
-
    - {% for message in messages %} -
  • {{ message }}
  • - {% endfor %} -
-
- - {% else %} - -
- {{ messages|first }} -
- {% endif %} - - {% if type == 'error' %} -
- {% endif %} -
- {# Remove type specific classes. #} - {% set attributes = attributes.removeClass(classes) %} - {% endfor %} - {% endblock messages %} -
diff --git a/web/themes/custom/bixal_uswds/templates/navigation/breadcrumb.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/breadcrumb.html.twig deleted file mode 100644 index 7de89f86f..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/breadcrumb.html.twig +++ /dev/null @@ -1,25 +0,0 @@ -{# -/** - * @file - * Theme override for a breadcrumb trail. - * - * Available variables: - * - breadcrumb: Breadcrumb trail items. - */ -#} -{% if breadcrumb %} - -{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu--account.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/menu--account.html.twig deleted file mode 100644 index ccd9bdc99..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu--account.html.twig +++ /dev/null @@ -1,58 +0,0 @@ -{# -/** - * @file - * Theme override to display a menu. - * - * Available variables: - * - menu_name: The machine name of the menu. - * - items: A nested list of menu items. Each menu item contains: - * - attributes: HTML attributes for the menu item. - * - below: The menu item child items. - * - title: The menu link title. - * - url: The menu link url, instance of \Drupal\Core\Url - * - localized_options: Menu link localized options. - * - is_expanded: TRUE if the link has visible children within the current - * menu tree. - * - is_collapsed: TRUE if the link has children within the current menu tree - * that are not currently visible. - * - in_active_trail: TRUE if the link is in the active trail. - */ -#} -{% import _self as menus %} - -{# -We call a macro which calls itself to render the full tree. -@see https://twig.symfony.com/doc/1.x/tags/macro.html -#} -{{ menus.menu_links(items, attributes, 0) }} - -{% macro menu_links(items, attributes, menu_level) %} - {% import _self as menus %} - {% if items %} - {% if menu_level == 0 %} - - {% else %} - - {% endif %} - {% endmacro %} diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu--footer.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/menu--footer.html.twig deleted file mode 100644 index 28692a4be..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu--footer.html.twig +++ /dev/null @@ -1,57 +0,0 @@ -{# -/** - * @file - * Bixal USWDS theme implementation for the footer menu. - * - * Available variables: - * - menu_name: The machine name of the menu. - * - items: A nested list of menu items. Each menu item contains: - * - attributes: HTML attributes for the menu item. - * - below: The menu item child items. - * - title: The menu link title. - * - url: The menu link url, instance of \Drupal\Core\Url - * - localized_options: Menu link localized options. - * - is_expanded: TRUE if the link has visible children within the current - * menu tree. - * - is_collapsed: TRUE if the link has children within the current menu tree - * that are not currently visible. - * - in_active_trail: TRUE if the link is in the active trail. - * - * @ingroup themeable - */ -#} -{% import _self as menus %} - -{% set attributes = attributes.addClass('grid-row grid-gap') %} -{{ menus.menu_links(items, attributes, 0) }} - -{% macro menu_links(items, attributes, menu_level) %} - {% import _self as menus %} - - {% if items %} -
    - {% for item in items %} - - {% set item_classes = [ - 'mobile-lg:grid-col-4', - 'desktop:grid-col-auto', - 'usa-footer__primary-content', - 'menu__item', - 'menu__item--' ~ menu_item_type, - item.in_active_trail ? 'menu__item--active-trail', - ] %} - - {% set link_classes = [ - 'usa-footer__primary-link', - 'menu__link', - 'menu__link--' ~ menu_item_type, - item.in_active_trail ? 'menu__link--active-trail', - ] %} - - - {{ link(item.title, item.url, { 'class': link_classes }) }} - - {% endfor %} -
- {% endif %} -{% endmacro %} diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu--main.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/menu--main.html.twig deleted file mode 100644 index ea23de939..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu--main.html.twig +++ /dev/null @@ -1,119 +0,0 @@ -{# -/** - * @file - * Bixal USWDS implementation for main navigation - * - * Available variables: - * - menu_name: The machine name of the menu. - * - items: A nested list of menu items. Each menu item contains: - * - attributes: HTML attributes for the menu item. - * - below: The menu item child items. - * - title: The menu link title. - * - url: The menu link url, instance of \Drupal\Core\Url - * - localized_options: Menu link localized options. - * - is_expanded: TRUE if the link has visible children within the current - * menu tree. - * - is_collapsed: TRUE if the link has children within the current menu tree - * that are not currently visible. - * - in_active_trail: TRUE if the link is in the active trail. - * - * @ingroup themeable - */ -#} -{% import _self as menus %} - -{# -We call a macro which calls itself to render the full tree. -@see https://twig.symfony.com/doc/1.x/tags/macro.html -#} -{% set attributes = attributes.addClass('menu') %} -{{ menus.menu_links(items, attributes, 0, 'primary-menu-item-') }} - -{% macro menu_links(items, attributes, menu_level, aria_id) %} - {% set primary_nav_level = 'usa-nav__menu--level-' ~ (menu_level + 1) %} - {% set drupal_selector_primary_nav_level = menu_level <= 1 ? 'usa-nav-menu--level-' ~ (menu_level + 1) : false %} - {% set is_top_level_menu = menu_level == 0 %} - - {% import _self as menus %} - {% if items %} - -
    - - {% set attributes = attributes.removeClass(primary_nav_level) %} - {% for item in items %} - - {% if item.url.isRouted and item.url.routeName == '' %} - {% set menu_item_type = 'nolink' %} - {% else %} - {% set menu_item_type = 'link' %} - {% endif %} - - {% set item_classes = [ - 'usa-nav__primary-item', - 'usa-nav__primary-item--' ~ menu_item_type, - 'usa-nav__primary-item--level-' ~ (menu_level + 1), - item.in_active_trail ? 'usa-nav__primary-item--active-trail', - item.below ? 'usa-nav__primary-item--has-children', - menu_level >= 1 ? 'usa-nav__submenu-item', - ] %} - - {% set link_classes = [ - 'usa-nav__menu-link', - 'usa-nav__menu-link--' ~ menu_item_type, - 'usa-nav__menu-link--level-' ~ (menu_level + 1), - item.in_active_trail ? 'usa-nav__menu-link--active-trail', - item.below ? 'usa-nav__menu-link--has-children', - ] %} - - - {# - A unique HTML ID should be used, but that isn't available through - Twig yet, so the |clean_id filter is used for now. - @see https://www.drupal.org/project/drupal/issues/3115445 - #} - {% set aria_id = (aria_id ~ loop.index )|clean_id %} - {% set link_title %} - - {{ item.title }} - - {% endset %} - - {% if menu_item_type == 'link' or menu_item_type == 'nolink' %} - - {% if not item.below %} - {{ link(menu_item_type == 'link' ? link_title : item.title, item.url, { - 'class': link_classes, - 'data-drupal-selector': is_top_level_menu ? 'usa-nav-menu-link-has-children' : false, - }) }} - {% endif %} - - {% if item.below %} - {% if is_top_level_menu %} - {% set toggle_button_attributes = create_attribute({ - 'class': 'usa-accordion__button usa-nav__link', - 'data-drupal-selector': 'usa-nav-submenu-toggle-button', - 'aria-controls': aria_id, - 'aria-expanded': 'false', - 'aria-hidden': 'true', - 'tabindex': '-1', - }) %} - - - {{ '@title sub-navigation'|t({'@title': item.title}) }} - {{ item.title }} - - {% endif %} - - {% set attributes = attributes.setAttribute('id', aria_id).setAttribute('class', 'usa-nav__submenu') %} - {{ menus.menu_links(item.below, attributes, menu_level + 1, aria_id) }} - - {% endif %} - {% endif %} - - {% endfor %} -
- {% endif %} -{% endmacro %} diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu-local-task.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/menu-local-task.html.twig deleted file mode 100644 index 34bbb1c44..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu-local-task.html.twig +++ /dev/null @@ -1,29 +0,0 @@ -{# -/** - * @file - * Theme override for a local task link. - * - * Available variables: - * - attributes: HTML attributes for the wrapper element. - * - is_active: Whether the task item is an active tab. - * - link: A rendered link element. - * - level: The menu level where the tab is rendered. - * - * Note: This template renders the content for each task item in - * menu-local-tasks.html.twig. - * - * @see template_preprocess_menu_local_task() - */ -#} - - {{ link }} - {% if is_active and level == 'primary' %} - - {% endif %} - diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu-local-tasks.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/menu-local-tasks.html.twig deleted file mode 100644 index 8bdb755a2..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu-local-tasks.html.twig +++ /dev/null @@ -1,34 +0,0 @@ -{# -/** - * @file - * Olivero theme implementation to display primary and secondary local tasks. - * - * Available variables: - * - primary: HTML list items representing primary tasks. - * - secondary: HTML list items representing secondary tasks. - * - * Each item in these variables (primary and secondary) can be individually - * themed in menu-local-task.html.twig. - * - * @ingroup themeable - */ -#} - -{# We use Olivero's impelmentation of local tasks since it is really great. #} -{{ attach_library('olivero/tabs') }} - -
- {% if primary %} -

{{ 'Primary tabs'|t }}

- - {% endif %} - - {% if secondary %} -

{{ 'Secondary tabs'|t }}

- - {% endif %} -
diff --git a/web/themes/custom/bixal_uswds/templates/navigation/pager.html.twig b/web/themes/custom/bixal_uswds/templates/navigation/pager.html.twig deleted file mode 100644 index d94ce8335..000000000 --- a/web/themes/custom/bixal_uswds/templates/navigation/pager.html.twig +++ /dev/null @@ -1,142 +0,0 @@ -{# -/** - * @file - * Theme override to display a pager. - * - * Available variables: - * - heading_id: Pagination heading ID. - * - items: List of pager items. - * The list is keyed by the following elements: - * - first: Item for the first page; not present on the first page of results. - * - previous: Item for the previous page; not present on the first page - * of results. - * - next: Item for the next page; not present on the last page of results. - * - last: Item for the last page; not present on the last page of results. - * - pages: List of pages, keyed by page number. - * Sub-sub elements: - * items.first, items.previous, items.next, items.last, and each item inside - * items.pages contain the following elements: - * - href: URL with appropriate query parameters for the item. - * - attributes: A keyed list of HTML attributes for the item. - * - text: The visible text used for the item link, such as "‹ Previous" - * or "Next ›". - * - current: The page number of the current page. - * - ellipses: If there are more pages than the quantity allows, then an - * ellipsis before or after the listed pages may be present. - * - previous: Present if the currently visible list of pages does not start - * at the first page. - * - next: Present if the visible list of pages ends before the last page. - * - * @see template_preprocess_pager() - */ -#} -{% if items %} - -{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/node/node--bx-landing-page--full.html.twig b/web/themes/custom/bixal_uswds/templates/node/node--bx-landing-page--full.html.twig deleted file mode 100644 index f5af0e5ad..000000000 --- a/web/themes/custom/bixal_uswds/templates/node/node--bx-landing-page--full.html.twig +++ /dev/null @@ -1,94 +0,0 @@ -{# -/** -* @file -* Theme override to display a node. -* -* Available variables: -* - node: The node entity with limited access to object properties and methods. -* Only method names starting with "get", "has", or "is" and a few common -* methods such as "id", "label", and "bundle" are available. For example: -* - node.getCreatedTime() will return the node creation timestamp. -* - node.hasField('field_example') returns TRUE if the node bundle includes -* field_example. (This does not indicate the presence of a value in this -* field.) -* - node.isPublished() will return whether the node is published or not. -* Calling other methods, such as node.delete(), will result in an exception. -* See \Drupal\node\Entity\Node for a full list of public properties and -* methods for the node object. -* - label: (optional) The title of the node. -* - content: All node items. Use {{ content }} to print them all, -* or print a subset such as {{ content.field_example }}. Use -* {{ content|without('field_example') }} to temporarily suppress the printing -* of a given child element. -* - author_picture: The node author user entity, rendered using the "compact" -* view mode. -* - metadata: Metadata for this node. -* - date: (optional) Themed creation date field. -* - author_name: (optional) Themed author name field. -* - url: Direct URL of the current node. -* - display_submitted: Whether submission information should be displayed. -* - attributes: HTML attributes for the containing element. -* The attributes.class element may contain one or more of the following -* classes: -* - node: The current template type (also known as a "theming hook"). -* - node--type-[type]: The current node type. For example, if the node is an -* "Article" it would result in "node--type-article". Note that the machine -* name will often be in a short form of the human readable label. -* - node--view-mode-[view_mode]: The View Mode of the node; for example, a -* teaser would result in: "node--view-mode-teaser", and -* full: "node--view-mode-full". -* The following are controlled through the node publishing options. -* - node--promoted: Appears on nodes promoted to the front page. -* - node--sticky: Appears on nodes ordered above other non-sticky nodes in -* teaser listings. -* - node--unpublished: Appears on unpublished nodes visible only to site -* admins. -* - title_attributes: Same as attributes, except applied to the main title -* tag that appears in the template. -* - content_attributes: Same as attributes, except applied to the main -* content tag that appears in the template. -* - author_attributes: Same as attributes, except applied to the author of -* the node tag that appears in the template. -* - title_prefix: Additional output populated by modules, intended to be -* displayed in front of the main title tag that appears in the template. -* - title_suffix: Additional output populated by modules, intended to be -* displayed after the main title tag that appears in the template. -* - view_mode: View mode; for example, "teaser" or "full". -* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. -* - page: Flag for the full page state. Will be true if view_mode is 'full'. -* - readmore: Flag for more state. Will be true if the teaser content of the -* node cannot hold the main body content. -* - logged_in: Flag for authenticated user status. Will be true when the -* current user is a logged-in member. -* - is_admin: Flag for admin user status. Will be true when the current user -* is an administrator. -* -* @see template_preprocess_node() -* -*/ -#} - -{% set classes = [ - 'node', - 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', - not node.isPublished() ? 'node--unpublished', - view_mode ? 'node--view-mode-' ~ view_mode|clean_class, -] %} - - - - {{ title_prefix }} - {{ title_suffix }} - - {% if content.field_bx_hero | render %} - {{ content.field_bx_hero | field_value }} - {% endif %} - - {% if content.field_bx_components | render %} - {{ content.field_bx_components }} - {% endif %} - - - diff --git a/web/themes/custom/bixal_uswds/templates/node/node--bx-update.html.twig b/web/themes/custom/bixal_uswds/templates/node/node--bx-update.html.twig deleted file mode 100644 index ff2d734a3..000000000 --- a/web/themes/custom/bixal_uswds/templates/node/node--bx-update.html.twig +++ /dev/null @@ -1,114 +0,0 @@ -{# -/** -* @file -* Bixal USWDS Theme override to display a node. -* -* Available variables: -* - node: The node entity with limited access to object properties and methods. -* Only method names starting with "get", "has", or "is" and a few common -* methods such as "id", "label", and "bundle" are available. For example: -* - node.getCreatedTime() will return the node creation timestamp. -* - node.hasField('field_example') returns TRUE if the node bundle includes -* field_example. (This does not indicate the presence of a value in this -* field.) -* - node.isPublished() will return whether the node is published or not. -* Calling other methods, such as node.delete(), will result in an exception. -* See \Drupal\node\Entity\Node for a full list of public properties and -* methods for the node object. -* - label: (optional) The title of the node. -* - content: All node items. Use {{ content }} to print them all, -* or print a subset such as {{ content.field_example }}. Use -* {{ content|without('field_example') }} to temporarily suppress the printing -* of a given child element. -* - author_picture: The node author user entity, rendered using the "compact" -* view mode. -* - metadata: Metadata for this node. -* - date: (optional) Themed creation date field. -* - author_name: (optional) Themed author name field. -* - url: Direct URL of the current node. -* - display_submitted: Whether submission information should be displayed. -* - attributes: HTML attributes for the containing element. -* The attributes.class element may contain one or more of the following -* classes: -* - node: The current template type (also known as a "theming hook"). -* - node--type-[type]: The current node type. For example, if the node is an -* "Article" it would result in "node--type-article". Note that the machine -* name will often be in a short form of the human readable label. -* - node--view-mode-[view_mode]: The View Mode of the node; for example, a -* teaser would result in: "node--view-mode-teaser", and -* full: "node--view-mode-full". -* The following are controlled through the node publishing options. -* - node--promoted: Appears on nodes promoted to the front page. -* - node--sticky: Appears on nodes ordered above other non-sticky nodes in -* teaser listings. -* - node--unpublished: Appears on unpublished nodes visible only to site -* admins. -* - title_attributes: Same as attributes, except applied to the main title -* tag that appears in the template. -* - content_attributes: Same as attributes, except applied to the main -* content tag that appears in the template. -* - author_attributes: Same as attributes, except applied to the author of -* the node tag that appears in the template. -* - title_prefix: Additional output populated by modules, intended to be -* displayed in front of the main title tag that appears in the template. -* - title_suffix: Additional output populated by modules, intended to be -* displayed after the main title tag that appears in the template. -* - view_mode: View mode; for example, "teaser" or "full". -* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. -* - page: Flag for the full page state. Will be true if view_mode is 'full'. -* - readmore: Flag for more state. Will be true if the teaser content of the -* node cannot hold the main body content. -* - logged_in: Flag for authenticated user status. Will be true when the -* current user is a logged-in member. -* - is_admin: Flag for admin user status. Will be true when the current user -* is an administrator. -* -* @see template_preprocess_node() -* -*/ -#} - -{# set the post date in a nice format. #} -{% set post_date = elements["#node"].created.getString() | date('U') | format_date('custom', 'F j, Y') %} - -{% set classes = [ - 'node', - 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', - not node.isPublished() ? 'node--unpublished', - view_mode ? 'node--view-mode-' ~ view_mode|clean_class, -] %} - - - - {{ title_prefix }} - {% if label and not page %} - - {{ label }} - - {% endif %} - {{ title_suffix }} - - {% if display_submitted %} -
- {{ author_picture }} - - {% trans %}by {{ author_name }} | {{ post_date }}{% endtrans %} - {{ metadata }} - -
- {% endif %} - - - {{ content | without('field_bx_tags', 'field_bx_external_link') }} - - - {% if content.field_bx_tags | render %} -

{{ 'Tags'|t }}

-
- {{ content.field_bx_tags | field_value }} -
- {% endif %} - - diff --git a/web/themes/custom/bixal_uswds/templates/node/node--teaser.html.twig b/web/themes/custom/bixal_uswds/templates/node/node--teaser.html.twig deleted file mode 100644 index ea627561d..000000000 --- a/web/themes/custom/bixal_uswds/templates/node/node--teaser.html.twig +++ /dev/null @@ -1,105 +0,0 @@ -{# -/** - * @file - * Bixal USWDS theme implementation to display a node teaser. - * - * Available variables: - * - node: The node entity with limited access to object properties and methods. - * Only method names starting with "get", "has", or "is" and a few common - * methods such as "id", "label", and "bundle" are available. For example: - * - node.getCreatedTime() will return the node creation timestamp. - * - node.hasField('field_example') returns TRUE if the node bundle includes - * field_example. (This does not indicate the presence of a value in this - * field.) - * - node.isPublished() will return whether the node is published or not. - * Calling other methods, such as node.delete(), will result in an exception. - * See \Drupal\node\Entity\Node for a full list of public properties and - * methods for the node object. - * - label: (optional) The title of the node. - * - content: All node items. Use {{ content }} to print them all, - * or print a subset such as {{ content.field_example }}. Use - * {{ content|without('field_example') }} to temporarily suppress the printing - * of a given child element. - * - author_picture: The node author user entity, rendered using the "compact" - * view mode. - * - metadata: Metadata for this node. - * - date: (optional) Themed creation date field. - * - author_name: (optional) Themed author name field. - * - url: Direct URL of the current node. - * - display_submitted: Whether submission information should be displayed. - * - attributes: HTML attributes for the containing element. - * The attributes.class element may contain one or more of the following - * classes: - * - node: The current template type (also known as a "theming hook"). - * - node--type-[type]: The current node type. For example, if the node is an - * "Article" it would result in "node--type-article". Note that the machine - * name will often be in a short form of the human readable label. - * - node--view-mode-[view_mode]: The View Mode of the node; for example, a - * teaser would result in: "node--view-mode-teaser", and - * full: "node--view-mode-full". - * The following are controlled through the node publishing options. - * - node--promoted: Appears on nodes promoted to the front page. - * - node--sticky: Appears on nodes ordered above other non-sticky nodes in - * teaser listings. - * - node--unpublished: Appears on unpublished nodes visible only to site - * admins. - * - title_attributes: Same as attributes, except applied to the main title - * tag that appears in the template. - * - content_attributes: Same as attributes, except applied to the main - * content tag that appears in the template. - * - author_attributes: Same as attributes, except applied to the author of - * the node tag that appears in the template. - * - title_prefix: Additional output populated by modules, intended to be - * displayed in front of the main title tag that appears in the template. - * - title_suffix: Additional output populated by modules, intended to be - * displayed after the main title tag that appears in the template. - * - view_mode: View mode; for example, "teaser" or "full". - * - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. - * - page: Flag for the full page state. Will be true if view_mode is 'full'. - * - readmore: Flag for more state. Will be true if the teaser content of the - * node cannot hold the main body content. - * - logged_in: Flag for authenticated user status. Will be true when the - * current user is a logged-in member. - * - is_admin: Flag for admin user status. Will be true when the current user - * is an administrator. - * - * @see template_preprocess_node() - */ -#} - -{% - set classes = [ - 'node', - 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', - not node.isPublished() ? 'node--unpublished', - view_mode ? 'node--view-mode-' ~ view_mode|clean_class, -] -%} - - -
- {{ title_prefix }} - {{ title_suffix }} - {% if display_submitted %} -
- - {{ 'By'|t }} {% apply spaceless %}{{ author_name }}{% endapply %}, {{ date }} - - {{ metadata }} -
- {% endif %} - {% if label and not page %} -
- {{ content.field_image }} - - {{ label }} - -
- {% endif %} -
- - {{ content|without('field_image', 'links') }} - - diff --git a/web/themes/custom/bixal_uswds/templates/node/node--uswds-card.html.twig b/web/themes/custom/bixal_uswds/templates/node/node--uswds-card.html.twig deleted file mode 100644 index 1657e3098..000000000 --- a/web/themes/custom/bixal_uswds/templates/node/node--uswds-card.html.twig +++ /dev/null @@ -1,126 +0,0 @@ -{# -/** -* @file -* Bixal USWDS Theme override to display a node. -* -* Available variables: -* - node: The node entity with limited access to object properties and methods. -* Only method names starting with "get", "has", or "is" and a few common -* methods such as "id", "label", and "bundle" are available. For example: -* - node.getCreatedTime() will return the node creation timestamp. -* - node.hasField('field_example') returns TRUE if the node bundle includes -* field_example. (This does not indicate the presence of a value in this -* field.) -* - node.isPublished() will return whether the node is published or not. -* Calling other methods, such as node.delete(), will result in an exception. -* See \Drupal\node\Entity\Node for a full list of public properties and -* methods for the node object. -* - label: (optional) The title of the node. -* - content: All node items. Use {{ content }} to print them all, -* or print a subset such as {{ content.field_example }}. Use -* {{ content|without('field_example') }} to temporarily suppress the printing -* of a given child element. -* - author_picture: The node author user entity, rendered using the "compact" -* view mode. -* - metadata: Metadata for this node. -* - date: (optional) Themed creation date field. -* - author_name: (optional) Themed author name field. -* - url: Direct URL of the current node. -* - display_submitted: Whether submission information should be displayed. -* - attributes: HTML attributes for the containing element. -* The attributes.class element may contain one or more of the following -* classes: -* - node: The current template type (also known as a "theming hook"). -* - node--type-[type]: The current node type. For example, if the node is an -* "Article" it would result in "node--type-article". Note that the machine -* name will often be in a short form of the human readable label. -* - node--view-mode-[view_mode]: The View Mode of the node; for example, a -* teaser would result in: "node--view-mode-teaser", and -* full: "node--view-mode-full". -* The following are controlled through the node publishing options. -* - node--promoted: Appears on nodes promoted to the front page. -* - node--sticky: Appears on nodes ordered above other non-sticky nodes in -* teaser listings. -* - node--unpublished: Appears on unpublished nodes visible only to site -* admins. -* - title_attributes: Same as attributes, except applied to the main title -* tag that appears in the template. -* - content_attributes: Same as attributes, except applied to the main -* content tag that appears in the template. -* - author_attributes: Same as attributes, except applied to the author of -* the node tag that appears in the template. -* - title_prefix: Additional output populated by modules, intended to be -* displayed in front of the main title tag that appears in the template. -* - title_suffix: Additional output populated by modules, intended to be -* displayed after the main title tag that appears in the template. -* - view_mode: View mode; for example, "teaser" or "full". -* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. -* - page: Flag for the full page state. Will be true if view_mode is 'full'. -* - readmore: Flag for more state. Will be true if the teaser content of the -* node cannot hold the main body content. -* - logged_in: Flag for authenticated user status. Will be true when the -* current user is a logged-in member. -* - is_admin: Flag for admin user status. Will be true when the current user -* is an administrator. -* -* @see template_preprocess_node() -* -*/ -#} - -{# Set the post date in a nice format. #} -{% set post_date = elements["#node"].created.getString() | date('U') | format_date('custom', 'F j, Y') %} - -{% set classes = [ - 'usa-card__container', - 'node', - 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', - not node.isPublished() ? 'node--unpublished', - view_mode ? 'node--view-mode-' ~ view_mode|clean_class, -] %} - - - - - -

- {{ title_prefix }} - {% if label and not page %} - - {{ label }} -

- {% endif %} - {{ title_suffix }} - - - -
-
- {{ content.field_bx_featured_image | field_value }} -
-
- -
-

{{ content.field_bx_teaser | field_value }}

-
- - - - - diff --git a/web/themes/custom/bixal_uswds/templates/node/node--uswds-collection.html.twig b/web/themes/custom/bixal_uswds/templates/node/node--uswds-collection.html.twig deleted file mode 100644 index 1dddba45a..000000000 --- a/web/themes/custom/bixal_uswds/templates/node/node--uswds-collection.html.twig +++ /dev/null @@ -1,169 +0,0 @@ -{# -/** -* @file -* Bixal USWDS Theme override to display a node. -* -* Available variables: -* - node: The node entity with limited access to object properties and methods. -* Only method names starting with "get", "has", or "is" and a few common -* methods such as "id", "label", and "bundle" are available. For example: -* - node.getCreatedTime() will return the node creation timestamp. -* - node.hasField('field_example') returns TRUE if the node bundle includes -* field_example. (This does not indicate the presence of a value in this -* field.) -* - node.isPublished() will return whether the node is published or not. -* Calling other methods, such as node.delete(), will result in an exception. -* See \Drupal\node\Entity\Node for a full list of public properties and -* methods for the node object. -* - label: (optional) The title of the node. -* - content: All node items. Use {{ content }} to print them all, -* or print a subset such as {{ content.field_example }}. Use -* {{ content|without('field_example') }} to temporarily suppress the printing -* of a given child element. -* - author_picture: The node author user entity, rendered using the "compact" -* view mode. -* - metadata: Metadata for this node. -* - date: (optional) Themed creation date field. -* - author_name: (optional) Themed author name field. -* - url: Direct URL of the current node. -* - display_submitted: Whether submission information should be displayed. -* - attributes: HTML attributes for the containing element. -* The attributes.class element may contain one or more of the following -* classes: -* - node: The current template type (also known as a "theming hook"). -* - node--type-[type]: The current node type. For example, if the node is an -* "Article" it would result in "node--type-article". Note that the machine -* name will often be in a short form of the human readable label. -* - node--view-mode-[view_mode]: The View Mode of the node; for example, a -* teaser would result in: "node--view-mode-teaser", and -* full: "node--view-mode-full". -* The following are controlled through the node publishing options. -* - node--promoted: Appears on nodes promoted to the front page. -* - node--sticky: Appears on nodes ordered above other non-sticky nodes in -* teaser listings. -* - node--unpublished: Appears on unpublished nodes visible only to site -* admins. -* - title_attributes: Same as attributes, except applied to the main title -* tag that appears in the template. -* - content_attributes: Same as attributes, except applied to the main -* content tag that appears in the template. -* - author_attributes: Same as attributes, except applied to the author of -* the node tag that appears in the template. -* - title_prefix: Additional output populated by modules, intended to be -* displayed in front of the main title tag that appears in the template. -* - title_suffix: Additional output populated by modules, intended to be -* displayed after the main title tag that appears in the template. -* - view_mode: View mode; for example, "teaser" or "full". -* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'. -* - page: Flag for the full page state. Will be true if view_mode is 'full'. -* - readmore: Flag for more state. Will be true if the teaser content of the -* node cannot hold the main body content. -* - logged_in: Flag for authenticated user status. Will be true when the -* current user is a logged-in member. -* - is_admin: Flag for admin user status. Will be true when the current user -* is an administrator. -* -* @see template_preprocess_node() -* -*/ -#} - -{# set the post date in a nice format. #} -{% set post_date = elements["#node"].created.getString() | date('U') | format_date('custom', 'F j, Y') %} -{% set post_date_month = elements["#node"].created.getString() | date('U') | format_date('custom', 'M') %} -{% set post_date_day = elements["#node"].created.getString() | date('U') | format_date('custom', 'd') %} -{% set date_time = post_date| date('U') | format_date('custom', 'Y-m-d\\TH:i:sP') %} - -{% set media_uri = elements.field_bx_featured_image.0["#media"].field_media_image.entity.uri.getString() %} -{% set media_alt = elements.field_bx_featured_image.0["#media"].field_media_image.0.alt %} - -{% if is_headings_only == true and content.field_bx_external_link | render %} - {% set title_url = content.field_bx_external_link.0["#url_title"] %} - {% set external_rel = 'noopener noreferrer' %} - {% set external_target = 'target=_blank' %} - {% else %} - {% set external_rel = 'bookmark' %} - {% set title_url = url %} -{% endif %} - -{% set classes = [ - 'usa-collection__item', - 'node', - 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', - not node.isPublished() ? 'node--unpublished', - view_mode ? 'node--view-mode-' ~ view_mode|clean_class, -] %} - - - - {% if is_calendar_display == true %} -
- -
- {% endif %} - - {% if is_media_thumbnail == true %} - {{ drupal_image( media_uri, 'medium', { loading: 'lazy', alt: media_alt, title: media_alt, class: 'usa-collection__img'}) }} - {% endif %} - - - - {{ title_prefix }} - {% if label and not page %} - - {{ label | field_value }} - {% if is_headings_only == true and content.field_bx_external_link | render %} - - {% endif %} - - - {% endif %} - {{ title_suffix }} - - {% if is_headings_only == true and content.field_bx_external_link | render %} -
    -
  • - - {{ content.field_bx_external_link.0["#title"] }} -
  • -
- {% endif %} - - {% if is_headings_only == false or is_calendar_display == true %} -

- {{ content.field_bx_teaser | field_value }} -

- {% endif %} - - {% if is_headings_only == false and is_calendar_display == false %} -
    -
  • - {% trans %}by {{ author_name }} {% endtrans %} -
  • -
  • - -
  • -
- {% endif %} - - {% if content.field_bx_tags | render %} - {% if is_headings_only == false and is_calendar_display == false %} -
    - {% for item in content.field_bx_tags | children(true) %} -
  • {{ item["#plain_text"] }}
  • - {% endfor %} -
- {% endif %} - {% endif %} - - - diff --git a/web/themes/custom/bixal_uswds/templates/partials/p-footer.html.twig b/web/themes/custom/bixal_uswds/templates/partials/p-footer.html.twig deleted file mode 100644 index 4c0aec524..000000000 --- a/web/themes/custom/bixal_uswds/templates/partials/p-footer.html.twig +++ /dev/null @@ -1,75 +0,0 @@ -{# USWDS Footer component partial file. #} - -{# Set social icons, update as needed. #} -{% set social_icons = [ - {'social_alt':'Facebook Icon','icon':'facebook'}, - {'social_alt':'Instagram Icon','icon':'instagram'}, - {'social_alt':'Twitter Icon','icon':'twitter'}, - {'social_alt':'Youtube Icon','icon':'youtube'}, - {'social_alt':'RSS Icon','icon':'rss_feed'} -] %} - - - - - - diff --git a/web/themes/custom/bixal_uswds/templates/partials/p-header.html.twig b/web/themes/custom/bixal_uswds/templates/partials/p-header.html.twig deleted file mode 100644 index 7c14335bb..000000000 --- a/web/themes/custom/bixal_uswds/templates/partials/p-header.html.twig +++ /dev/null @@ -1,49 +0,0 @@ -{# USWDS Header component partial file. #} -
-
-
- {# Use utility classes when possible. #} - - - {# Mobile menu button. #} - -
- - -
diff --git a/web/themes/custom/bixal_uswds/templates/partials/p-identifier.html.twig b/web/themes/custom/bixal_uswds/templates/partials/p-identifier.html.twig deleted file mode 100644 index a1854e04c..000000000 --- a/web/themes/custom/bixal_uswds/templates/partials/p-identifier.html.twig +++ /dev/null @@ -1,70 +0,0 @@ -{% set identifier_data = [ - {'link_title':'About'}, - {'link_title':'Accessibility support'}, - {'link_title':'FOIA requests'}, - {'link_title':'No FEAR Act data'}, - {'link_title':'Office of the Inspector General'}, - {'link_title':'Privacy policy'}, - {'link_title':' Performance reports'}, -] %} - -
-
- -
-
- - -
- -
- -

{{ 'domain.gov' | t }}

-

- {{ 'An official website of the' | t }} - - {{ drupal_token('site:name') }} - -

-
-
-
- - - -
- -
-
- {{ 'Looking for U.S. government information and services?' | t }} -
- - {{ 'Visit USA.gov' | t }} - -
- -
-
diff --git a/web/themes/custom/bixal_uswds/templates/views/views-view-list--frontpage--page-1.html.twig b/web/themes/custom/bixal_uswds/templates/views/views-view-list--frontpage--page-1.html.twig deleted file mode 100644 index 9ad9cdd75..000000000 --- a/web/themes/custom/bixal_uswds/templates/views/views-view-list--frontpage--page-1.html.twig +++ /dev/null @@ -1,39 +0,0 @@ -{# -/** - * @file - * Theme override for a view template to display a list of rows. - * - * Available variables: - * - attributes: HTML attributes for the container. - * - rows: A list of rows for this list. - * - attributes: The row's HTML attributes. - * - content: The row's contents. - * - title: The title of this group of rows. May be empty. - * - list: @todo. - * - type: Starting tag will be either a ul or ol. - * - attributes: HTML attributes for the list element. - * - * @see template_preprocess_views_view_list() - */ -#} - -{% if attributes -%} - - {% endif %} - {% if title %} -

{{ title }}

- {% endif %} - - <{{ list.type }}{{ list.attributes.addClass('usa-card-group') }}> - - {% for row in rows %} - - {{- row.content -}} - - {% endfor %} - - - -{% if attributes -%} - -{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/views/views-view-list.html.twig b/web/themes/custom/bixal_uswds/templates/views/views-view-list.html.twig deleted file mode 100644 index 50cc74ba1..000000000 --- a/web/themes/custom/bixal_uswds/templates/views/views-view-list.html.twig +++ /dev/null @@ -1,38 +0,0 @@ -{# -/** - * @file - * Theme override for a view template to display a list of rows. - * - * Available variables: - * - attributes: HTML attributes for the container. - * - rows: A list of rows for this list. - * - attributes: The row's HTML attributes. - * - content: The row's contents. - * - title: The title of this group of rows. May be empty. - * - list: @todo. - * - type: Starting tag will be either a ul or ol. - * - attributes: HTML attributes for the list element. - * - * @see template_preprocess_views_view_list() - */ -#} -{% if attributes -%} - -{% endif %} - {% if title %} -

{{ title }}

- {% endif %} - - <{{ list.type }}{{ list.attributes }}> - - {% for row in rows %} - - {{- row.content -}} - - {% endfor %} - - - -{% if attributes -%} - -{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/views/views-view-unformatted.html.twig b/web/themes/custom/bixal_uswds/templates/views/views-view-unformatted.html.twig deleted file mode 100644 index 534ac9a95..000000000 --- a/web/themes/custom/bixal_uswds/templates/views/views-view-unformatted.html.twig +++ /dev/null @@ -1,30 +0,0 @@ -{# -/** - * @file - * Theme override to display a view of unformatted rows. - * - * Available variables: - * - title: The title of this group of rows. May be empty. - * - rows: A list of the view's row items. - * - attributes: The row's HTML attributes. - * - content: The row's content. - * - view: The view object. - * - default_row_class: A flag indicating whether default classes should be - * used on rows. - * - * @see template_preprocess_views_view_unformatted() - */ -#} -{% if title %} -

{{ title }}

-{% endif %} -{% for row in rows %} - {% - set row_classes = [ - default_row_class ? 'views-row', - ] - %} - - {{- row.content -}} - -{% endfor %} diff --git a/web/themes/custom/bixal_uswds/templates/views/views-view.html.twig b/web/themes/custom/bixal_uswds/templates/views/views-view.html.twig deleted file mode 100644 index 251b0611d..000000000 --- a/web/themes/custom/bixal_uswds/templates/views/views-view.html.twig +++ /dev/null @@ -1,95 +0,0 @@ -{# -/** - * @file - * Theme override for a main view template. - * - * Available variables: - * - attributes: Remaining HTML attributes for the element. - * - css_name: A CSS-safe version of the view name. - * - css_class: The user-specified classes names, if any. - * - header: The optional header. - * - footer: The optional footer. - * - rows: The results of the view query, if any. - * - empty: The content to display if there are no rows. - * - pager: The optional pager next/prev links to display. - * - exposed: Exposed widget form/info to display. - * - feed_icons: Optional feed icons to display. - * - more: An optional link to the next page of results. - * - title: Title of the view, only used when displaying in the admin preview. - * - title_prefix: Additional output populated by modules, intended to be - * displayed in front of the view title. - * - title_suffix: Additional output populated by modules, intended to be - * displayed after the view title. - * - attachment_before: An optional attachment view to be displayed before the - * view content. - * - attachment_after: An optional attachment view to be displayed after the - * view content. - * - dom_id: Unique id for every view being printed to give unique class for - * JavaScript. - * - * @see template_preprocess_views_view() - */ -#} -{% - set classes = [ - 'view', - 'view-' ~ id|clean_class, - 'view-id-' ~ id, - 'view-display-id-' ~ display_id, - dom_id ? 'js-view-dom-id-' ~ dom_id, - ] -%} - - {{ title_prefix }} - {% if title %} - {{ title }} - {% endif %} - {{ title_suffix }} - {% if header %} -
- {{ header }} -
- {% endif %} - {% if exposed %} -
- {{ exposed }} -
- {% endif %} - {% if attachment_before %} -
- {{ attachment_before }} -
- {% endif %} - - {% if rows %} -
- {{ rows }} -
- {% elseif empty %} -
- {{ empty }} -
- {% endif %} - - {% if pager %} - {{ pager }} - {% endif %} - {% if attachment_after %} -
- {{ attachment_after }} -
- {% endif %} - {% if more %} - {{ more }} - {% endif %} - {% if footer %} - - {% endif %} - {% if feed_icons %} -
- {{ feed_icons }} -
- {% endif %} - diff --git a/web/themes/custom/bixal_uswds/theme-settings.php b/web/themes/custom/bixal_uswds/theme-settings.php deleted file mode 100644 index 0dcea4396..000000000 --- a/web/themes/custom/bixal_uswds/theme-settings.php +++ /dev/null @@ -1,33 +0,0 @@ - 'details', - '#open' => TRUE, - '#title' => 'Bixal USWDS Custom Settings', - '#weight' => -1000, - ]; - - // Custom setting to enable browserSync locally. - $form['theme_custom']['settings']['time_picker_style'] = [ - '#type' => 'select', - '#required' => TRUE, - '#options' => [ - 'html5_time_picker' => 'HTML 5 time picker', - 'uswds_time_picker' => 'USWDS time picker', - ], - '#description' => t("Choose a time picker style, USWDS or standard HTML 5."), - '#title' => 'Time picker style', - '#default_value' => theme_get_setting('time_picker_style', 'bixal_uswds'), - ]; -} diff --git a/web/themes/custom/bixaluswds/README.md b/web/themes/custom/bixaluswds/README.md new file mode 100644 index 000000000..e52b67cb6 --- /dev/null +++ b/web/themes/custom/bixaluswds/README.md @@ -0,0 +1 @@ +# Bixal USWDS Drupal base theme diff --git a/web/themes/custom/bixaluswds/bixaluswds.info.yml b/web/themes/custom/bixaluswds/bixaluswds.info.yml new file mode 100644 index 000000000..2c539fbc8 --- /dev/null +++ b/web/themes/custom/bixaluswds/bixaluswds.info.yml @@ -0,0 +1,22 @@ +name: Bixal USWDS Base Theme +type: theme +description: "Drupal base theme for use with USWDS." +core_version_requirement: "^9.4 || ^10" +base theme: false +dependencies: + - drupal:twig_tweak + - drupal:twig_field_value + - drupal:uswds_templates + - drupal:block_content_template + +regions: + admin: "Admin" + header: "Header" + content: "Content" + sidebar: "Sidebar" + footer: "Footer" + no_region: "Blocks for Twig Tweak, hidden, or other purposes" + +## unset any unwanted CSS or JS. +libraries-override: + system/base: false diff --git a/web/themes/custom/bixaluswds/bixaluswds.libraries.yml b/web/themes/custom/bixaluswds/bixaluswds.libraries.yml new file mode 100644 index 000000000..2a0e67e8c --- /dev/null +++ b/web/themes/custom/bixaluswds/bixaluswds.libraries.yml @@ -0,0 +1,7 @@ +# Required for admin utilities displaying on the site. +logged-in: + version: VERSION + css: + theme: + /core/modules/system/css/components/hidden.module.css: {} + /core/modules/system/css/components/js.module.css: {} diff --git a/web/themes/custom/bixaluswds/bixaluswds.theme b/web/themes/custom/bixaluswds/bixaluswds.theme new file mode 100644 index 000000000..5f3753776 --- /dev/null +++ b/web/themes/custom/bixaluswds/bixaluswds.theme @@ -0,0 +1,13 @@ +M!hW%#A1vMF$fz38>ur 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 literal 0 HcmV?d00001 diff --git a/web/themes/custom/bixal_uswds/logo.svg b/web/themes/custom/bixaluswds/logo.svg similarity index 87% rename from web/themes/custom/bixal_uswds/logo.svg rename to web/themes/custom/bixaluswds/logo.svg index 922d6d80b..7a96faa5c 100644 --- a/web/themes/custom/bixal_uswds/logo.svg +++ b/web/themes/custom/bixaluswds/logo.svg @@ -1,29 +1,27 @@ - - - + - + - + - + - + - + diff --git a/web/themes/custom/bixaluswds/preprocess/form.inc b/web/themes/custom/bixaluswds/preprocess/form.inc new file mode 100644 index 000000000..4a73aef95 --- /dev/null +++ b/web/themes/custom/bixaluswds/preprocess/form.inc @@ -0,0 +1,14 @@ +getCurrentLanguage(); + $variables['language'] = $language->getId(); + $variables['uswds_img_path'] = '/themes/custom/bixaluswds/dist/img'; +} diff --git a/web/themes/custom/bixaluswds/preprocess/navigation.inc b/web/themes/custom/bixaluswds/preprocess/navigation.inc new file mode 100644 index 000000000..f6b8f0bf2 --- /dev/null +++ b/web/themes/custom/bixaluswds/preprocess/navigation.inc @@ -0,0 +1,16 @@ +bundle() . '__' . $sanitized_view_mode; + $suggestions[] = 'taxonomy_term__' . $term->id() . '__' . $sanitized_view_mode; +} diff --git a/web/themes/custom/bixaluswds/preprocess/user.inc b/web/themes/custom/bixaluswds/preprocess/user.inc new file mode 100644 index 000000000..cd3410a10 --- /dev/null +++ b/web/themes/custom/bixaluswds/preprocess/user.inc @@ -0,0 +1,19 @@ +id(); $suggestions[] = $vars['theme_hook_original'] . '__' . $view->current_display; @@ -18,7 +18,7 @@ function bixal_uswds_theme_suggestions_views_view_alter(array &$suggestions, arr /** * Implements hook_theme_suggestions_views_view_unformatted_alter(). */ -function bixal_uswds_theme_suggestions_views_view_unformatted_alter(array &$suggestions, array $vars) { +function bixaluswds_theme_suggestions_views_view_unformatted_alter(array &$suggestions, array $vars) { $view = $vars['view']; $suggestions[] = $vars['theme_hook_original'] . '__' . $view->id(); $suggestions[] = $vars['theme_hook_original'] . '__' . $view->current_display; @@ -28,7 +28,7 @@ function bixal_uswds_theme_suggestions_views_view_unformatted_alter(array &$sugg /** * Implements hook_theme_suggestions_views_view_list_alter(). */ -function bixal_uswds_theme_suggestions_views_view_list_alter(array &$suggestions, array $vars) { +function bixaluswds_theme_suggestions_views_view_list_alter(array &$suggestions, array $vars) { $view = $vars['view']; $suggestions[] = $vars['theme_hook_original'] . '__' . $view->id(); $suggestions[] = $vars['theme_hook_original'] . '__' . $view->current_display; diff --git a/web/themes/custom/bixaluswds/screenshot.png b/web/themes/custom/bixaluswds/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0a682af12c679436025a65b71dac27b514fc56 GIT binary patch literal 93927 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 literal 0 HcmV?d00001 diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer--nav.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer--nav.html.twig new file mode 100644 index 000000000..ef42d2e0b --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer--nav.html.twig @@ -0,0 +1,44 @@ +{# +/** + * @file + * Default theme implementation to USWDS primary components. + * + * USWDS template variables: + * - items: array of link objects + * - classes: classes array (inherits base template classes as default) + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-nav--primary--top.html.twig' with { + * 'items': var_nav_items, + * 'classes': var_classes + * } %} + * +#} + +{% set usa_attributes = create_attribute() %} +{% set usa_classes = [ + 'usa-footer__nav-list', + 'grid-row', + 'grid-gap' +] %} + +{% if items|length %} + + + {% for item in items %} + {% set item_classes = [ + 'usa-footer__primary-content', + 'mobile-lg:grid-col-4', + 'desktop:grid-col-auto' + ] %} + + + {% set link_classes = [ + 'usa-footer__primary-link', + item.in_active_trail ? 'usa-current', + ] %} + {{ link(item.title, item.url, create_attribute({'class': link_classes})) }} + + {% endfor %} + +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer.html.twig new file mode 100644 index 000000000..7d182e99c --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-footer.html.twig @@ -0,0 +1,126 @@ +{# +/** + * @file + * Default theme implementation to USWDS footer component. + * + * USWDS template variables: + * - footer_menu: renderable menu object + * - sitename: string + * - facebook_url: url string + * - instagram_url: url string + * - twitter_url: url string + * - youtube_url: url string + * - rss_url: url string + * - contact_sitename: string + * - phone: tel string + * - email: email string + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-footer.html.twig' with { + * 'footer_menu': drupal_entity('block', 'footer_menu'), + * 'sitename': var_sitename, + * 'facebook_url': 'https://facebook.com', + * 'instagram_url': 'https://instagram.com', + * 'twitter_url': 'https://twitter.com', + * 'youtube_url': 'https://youtube.com', + * 'rss_url': '/rss', + * 'contact_sitename': 'Contact ' ~ var_sitename, + * 'phone': '(800) 555-5555', + * 'email': 'info@agency.gov', + * } %} + * +#} + +{# Set social icons #} +{% set social_icons = {} %} +{% set social_icons = facebook_url ? social_icons|merge({'facebook': {'url': facebook_url, 'alt':'Facebook Icon'}}) : social_icons %} +{% set social_icons = instagram_url ? social_icons|merge({'instagram': {'url': instagram_url, 'alt':'Instagram Icon'}}) : social_icons %} +{% set social_icons = twitter_url ? social_icons|merge({'twitter': {'url': twitter_url, 'alt':'Twitter Icon'}}) : social_icons %} +{% set social_icons = youtube_url ? social_icons|merge({'youtube': {'url': youtube_url, 'alt':'Youtube Icon'}}) : social_icons %} +{% set social_icons = rss_url ? social_icons|merge({'rss_feed': {'url': rss_url, 'alt':'RSS Icon'}}) : social_icons %} + + + + +{% if footer_menu %} + +{% endif %} + + diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-header.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-header.html.twig new file mode 100644 index 000000000..4a91497d1 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-header.html.twig @@ -0,0 +1,66 @@ +{# +/** + * @file + * Default theme implementation to USWDS header component. + * + * USWDS template variables: + * - sitename: string + * - footer_menu: renderable array of menu items + * - user_menu: renderable array of menu items + * - search_form: renderable array of search block + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-header.html.twig' with { + * 'sitename': var_sitename, + * 'main_menu': drupal_entity('block', 'main_navigation'), + * 'user_menu': drupal_entity('block', 'user_account_menu'), + * 'search_form': drupal_entity('block', 'search_form'), + * } %} + * +#} + +
+
+
+ {# Use utility classes when possible. #} + + + {# Mobile menu button. #} + +
+ + +
diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier--section--required-links.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier--section--required-links.html.twig new file mode 100644 index 000000000..c7a5ae35f --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier--section--required-links.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Default theme implementation to USWDS secondary link components. + * + * USWDS template variables: + * - items: array of link objects + * - classes: classes array (inherits base template classes as default) + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-nav--secondary-links.html.twig' with { + * 'items': var_nav_items, + * 'classes': var_classes + * } %} + * +#} + +{% set usa_attributes = create_attribute() %} +{% set usa_classes = [ + 'usa-identifier__required-links-list', +] %} + +{% if items|length %} + + {% for item in items %} + + {% endfor %} + +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier.html.twig new file mode 100644 index 000000000..c9bee4e94 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-identifier.html.twig @@ -0,0 +1,75 @@ +{# +/** + * @file + * Default theme implementation to USWDS identifier component. + * + * USWDS template variables: + * - domain: string + * - agencyname: string + * - agency_url: url string + * - identifier_menu: renderable menu object + * - description_link_url: url string + * - description_link_text: url string + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-identifier.html.twig' with { + * 'domain': 'domain.gov', + * 'agencyname': "General Service Administration" | t, + * 'agency_url': "https://gsa.gov/", + * 'identifier_menu': drupal_entity('block', 'identifier_menu'), + * 'description_link_url': "https://www.usa.gov/", + * 'description_link_text': "Visit USA.gov" | t, + * } %} + * +#} + +
+ {% if domain and agencyname and agency_url %} +
+ +
+
+ + +
+ +
+ +

{{ domain }}

+

+ {{ 'An official website of the' | t }} + {{ agencyname }} +

+
+
+ +
+ {% endif %} + + {{ identifier_menu }} + + {% if description_link_url and description_link_text %} +
+ +
+
+ {{ 'Looking for U.S. government information and services?' | t }} +
+ {{ description_link_text }} +
+ +
+ {% endif %} +
diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--below.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--below.html.twig new file mode 100644 index 000000000..3e99df021 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--below.html.twig @@ -0,0 +1,46 @@ +{# +/** + * @file + * Default theme implementation to USWDS primary components. + * + * USWDS template variables: + * - items: array of link objects + * - mega: boolean (1 / 0) + * - aria_id: string + * - classes: classes array (inherits base template classes as default) + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-nav--primary--below.html.twig' with { + * 'items': var_nav_items, + * 'mega': var_mega + * 'aria_id': var_aria + * 'classes': var_classes + * } %} + * +#} + +{% set usa_attributes = create_attribute() %} +{% set usa_classes = [ + 'usa-nav__submenu', + mega ? 'usa-megamenu' +] %} + +{% if items|length %} + {% if mega %} + + {% endif %} +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--top.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--top.html.twig new file mode 100644 index 000000000..0b295fdae --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--primary--top.html.twig @@ -0,0 +1,56 @@ +{# +/** + * @file + * Default theme implementation to USWDS primary components. + * + * USWDS template variables: + * - items: array of link objects + * - classes: classes array (inherits base template classes as default) + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-nav--primary--top.html.twig' with { + * 'items': var_nav_items, + * 'classes': var_classes + * } %} + * +#} + +{% set usa_attributes = create_attribute() %} +{% set usa_classes = [ + 'usa-nav__primary', + 'usa-accordion' +] %} + +{% if items|length %} + + {% for item in items %} +
  • + {% set link_classes = [ + 'usa-nav-link', + item.in_active_trail ? 'usa-current' + ] %} + + {% if item.below %} + {% set button_classes = [ + 'usa-accordion__button', + 'usa-nav__link', + item.in_active_trail ? 'usa-current' + ] %} + + {% set aria_id = ('primary-menu-item-' ~ loop.index )|clean_id %} + + + {% include "@bixaluswds/_components/uswds/usa-nav--primary--below.html.twig" with { + items: item.below, + mega: 1, + aria_id: aria_id + } %} + {% else %} + {{ link(item.title, item.url, create_attribute({'class': link_classes})) }} + {% endif %} +
  • + {% endfor %} + +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--secondary-links.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--secondary-links.html.twig new file mode 100644 index 000000000..57f354c82 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-nav--secondary-links.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Default theme implementation to USWDS secondary link components. + * + * USWDS template variables: + * - items: array of link objects + * - classes: classes array (inherits base template classes as default) + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-nav--secondary-links.html.twig' with { + * 'items': var_nav_items, + * 'classes': var_classes + * } %} + * +#} + +{% set usa_attributes = create_attribute() %} +{% set usa_classes = [ + 'usa-nav__secondary-links', +] %} + +{% if items|length %} + + {% for item in items %} +
  • + {% set link_classes = [ + item.in_active_trail ? 'usa-current' + ] %} + {{ link(item.title, item.url, create_attribute({'class': link_classes})) }} +
  • + {% endfor %} + +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/_components/uswds/usa-step-indicator.html.twig b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-step-indicator.html.twig new file mode 100644 index 000000000..60e80a1f4 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/_components/uswds/usa-step-indicator.html.twig @@ -0,0 +1,63 @@ +{# +/** + * @file + * Default theme implementation to USWDS step indicator component. + * + * USWDS template variables: + * - items: renderable array of menu items + * - current_title: string + * - current_step: numeric string + * + * Usage example: + * {% include '@uswds_templates/uswds/usa-step-indicator.html.twig' with { + * 'items': var_items, + * 'current_title': var_current_title, + * 'current_step': var_current_step, + * } %} + * +#} + +{% if items %} +
    +
      + {% for item in items %} +
    1. + {{ item.title }} + {% if not item.current %} + + {{ item.complete ? 'completed' | t : 'not completed' | t }} + + {% endif %} +
    2. + {% endfor %} +
    +
    +

    + + {% set step = 'step' | t %} + {{ '@step @current of @total' | t( + '@step': { + '#markup': "#{step}" + }, + '@current': { + '#markup': "#{current_step}" + }, + '@total': { + '#markup': "#{items.length}" + }, + ) }} + + {{ current_title }} +

    +
    +
    +{% endif %} diff --git a/web/themes/custom/bixal_uswds/templates/block/block--system-menu-block.html.twig b/web/themes/custom/bixaluswds/templates/block/block--system-menu-block.html.twig similarity index 69% rename from web/themes/custom/bixal_uswds/templates/block/block--system-menu-block.html.twig rename to web/themes/custom/bixaluswds/templates/block/block--system-menu-block.html.twig index ddcea1bf4..d44d842b9 100644 --- a/web/themes/custom/bixal_uswds/templates/block/block--system-menu-block.html.twig +++ b/web/themes/custom/bixaluswds/templates/block/block--system-menu-block.html.twig @@ -31,26 +31,4 @@ * http://www.w3.org/TR/WCAG-TECHS/H42.html for more information. */ #} -{% set classes = [ - 'block', - 'block-menu', - 'navigation', - 'menu--' ~ derivative_plugin_id|clean_class, -] %} - -{% set heading_id = attributes.id ~ '-menu'|clean_id %} - +{{ content }} diff --git a/web/themes/custom/bixal_uswds/templates/block/block.html.twig b/web/themes/custom/bixaluswds/templates/block/block.html.twig similarity index 94% rename from web/themes/custom/bixal_uswds/templates/block/block.html.twig rename to web/themes/custom/bixaluswds/templates/block/block.html.twig index fcf22efe7..0f2c04735 100644 --- a/web/themes/custom/bixal_uswds/templates/block/block.html.twig +++ b/web/themes/custom/bixaluswds/templates/block/block.html.twig @@ -27,17 +27,20 @@ #} {% set classes = [ 'block', - 'block-' ~ configuration.provider|clean_class, - 'block-' ~ plugin_id|clean_class, + 'block--' ~ configuration.provider|clean_class, + 'block--' ~ plugin_id|clean_class, ] %} + {{ title_prefix }} {% if label %} {{ label }} {% endif %} {{ title_suffix }} + {% block content %} {{ content }} {% endblock %} + diff --git a/web/themes/custom/bixaluswds/templates/block/block_content.html.twig b/web/themes/custom/bixaluswds/templates/block/block_content.html.twig new file mode 100644 index 000000000..c19b962cf --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/block/block_content.html.twig @@ -0,0 +1,28 @@ +{# +/** + * @file + * Default theme implementation to display a block content. + * + * @see template_preprocess_block_content_template() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'block-content', + 'block-content--type-' ~ bundle|clean_class, + 'block-content--view-mode-' ~ view_mode|clean_class +] +%} + + + + {{ title_prefix }} + {{ title_suffix }} + + {% block content %} + {{ content }} + {% endblock %} + + diff --git a/web/themes/custom/bixal_uswds/templates/content/page-title.html.twig b/web/themes/custom/bixaluswds/templates/content/page-title.html.twig similarity index 62% rename from web/themes/custom/bixal_uswds/templates/content/page-title.html.twig rename to web/themes/custom/bixaluswds/templates/content/page-title.html.twig index e192b5025..02f926c95 100644 --- a/web/themes/custom/bixal_uswds/templates/content/page-title.html.twig +++ b/web/themes/custom/bixaluswds/templates/content/page-title.html.twig @@ -12,19 +12,10 @@ * displayed after the main title tag that appears in the template. */ #} -{% set components_path = path('') %} -{% if 'uswds-components' in components_path %} - {% set title_class = 'text-white bg-primary padding-x-205 padding-y-2' %} -{% endif %} - -{% set classes = [ - title_class, - 'title', - 'page-title', -] %} +{% set title = drupal_title() %} {{ title_prefix }} -{% if title|render|striptags|trim %} - {{ title }} +{% if title %} +

    {{ title }}

    {% endif %} {{ title_suffix }} diff --git a/web/themes/custom/bixal_uswds/templates/field/field.html.twig b/web/themes/custom/bixaluswds/templates/field/field.html.twig similarity index 64% rename from web/themes/custom/bixal_uswds/templates/field/field.html.twig rename to web/themes/custom/bixaluswds/templates/field/field.html.twig index 6cd08285a..8348d504c 100644 --- a/web/themes/custom/bixal_uswds/templates/field/field.html.twig +++ b/web/themes/custom/bixaluswds/templates/field/field.html.twig @@ -37,48 +37,23 @@ * @see template_preprocess_field() */ #} - -{% if element.0["#format"] is not empty %} - {% set text_format = element.0["#format"] %} -{% endif %} - {% set classes = [ 'field', 'field--name-' ~ field_name|clean_class, 'field--type-' ~ field_type|clean_class, 'field--label-' ~ label_display, - label_display == 'inline' ? 'clearfix', - text_format in ['full_html', 'basic_html'] ? 'is-wysiwyg' ] %} {% set title_classes = [ 'field__label', - label_display == 'visually_hidden' ? 'visually-hidden', + label_display == 'visually_hidden' ? 'usa-sr-only', ] %} -{% if label_hidden %} - {% if multiple %} - - {% for item in items %} - {{ item.content }} - {% endfor %} - - {% else %} - {% for item in items %} - {{ item.content }} - {% endfor %} - {% endif %} -{% else %} - + + {% if not label_hidden %} {{ label }} - {% if multiple %} -
    - {% endif %} - {% for item in items %} - {{ item.content }}
    - {% endfor %} - {% if multiple %} - - {% endif %} - -{% endif %} + {% endif %} + {% for item in items %} + {{ item.content }} + {% endfor %} + diff --git a/web/themes/custom/bixaluswds/templates/form/checkboxes.html.twig b/web/themes/custom/bixaluswds/templates/form/checkboxes.html.twig new file mode 100644 index 000000000..024ac23d1 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/checkboxes.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Default theme implementation for a 'checkboxes' #type form element. + * + * Available variables + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The rendered checkboxes. + * + * @see template_preprocess_checkboxes() + * + * @ingroup themeable + */ + @todo: remove this file once https://www.drupal.org/node/1819284 is resolved. + This is identical to core/modules/system/templates/container.html.twig +#} +{{ children }} diff --git a/web/themes/custom/bixal_uswds/templates/form/container.html.twig b/web/themes/custom/bixaluswds/templates/form/container.html.twig similarity index 73% rename from web/themes/custom/bixal_uswds/templates/form/container.html.twig rename to web/themes/custom/bixaluswds/templates/form/container.html.twig index 64aff9b14..6cb299bfc 100644 --- a/web/themes/custom/bixal_uswds/templates/form/container.html.twig +++ b/web/themes/custom/bixaluswds/templates/form/container.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Theme override of a container used to wrap child elements. + * Default theme implementation of a container used to wrap child elements. * * Used for grouped form items. Can also be used as a theme wrapper for any * renderable element, to surround it with a
    and HTML attributes. @@ -17,16 +17,14 @@ containers. * * @see template_preprocess_container() + * + * @ingroup themeable */ #} - -{# Set the form id.#} -{% set form_id = element["#form_id"] %} - -{% set classes = [ - has_parent ? 'js-form-wrapper', - has_parent ? 'form-wrapper', - form_id == 'search_form' ? 'margin-bottom-1' -] %} - +{% + set classes = [ + has_parent ? 'js-form-wrapper', + has_parent ? 'form-wrapper', + ] +%} {{ children }}
    diff --git a/web/themes/custom/bixaluswds/templates/form/details.html.twig b/web/themes/custom/bixaluswds/templates/form/details.html.twig new file mode 100644 index 000000000..20e4ea719 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/details.html.twig @@ -0,0 +1,40 @@ +{# +/** + * @file + * Default theme implementation for a details element. + * + * Available variables + * - attributes: A list of HTML attributes for the details element. + * - errors: (optional) Any errors for this details element, may not be set. + * - title: (optional) The title of the element, may not be set. + * - summary_attributes: A list of HTML attributes for the summary element. + * - description: (optional) The description of the element, may not be set. + * - children: (optional) The children of the element, may not be set. + * - value: (optional) The value of the element, may not be set. + * + * @see template_preprocess_details() + * + * @ingroup themeable + */ +#} + + {% + set summary_classes = [ + required ? 'js-form-required', + required ? 'form-required', + ] + %} + {%- if title -%} + {{ title }} + {%- endif -%} + + {% if errors %} +
    + {{ errors }} +
    + {% endif %} + + {{ description }} + {{ children }} + {{ value }} + diff --git a/web/themes/custom/bixaluswds/templates/form/fieldset.html.twig b/web/themes/custom/bixaluswds/templates/form/fieldset.html.twig new file mode 100644 index 000000000..ff0f4ee51 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/fieldset.html.twig @@ -0,0 +1,73 @@ +{# +/** + * @file + * Default theme implementation for a fieldset element and its children. + * + * Available variables: + * - attributes: HTML attributes for the
    element. + * - errors: (optional) Any errors for this
    element, may not be set. + * - required: Boolean indicating whether the
    element is required. + * - legend: The element containing the following properties: + * - title: Title of the
    , intended for use as the text + of the . + * - attributes: HTML attributes to apply to the element. + * - description: The description element containing the following properties: + * - content: The description content of the
    . + * - attributes: HTML attributes to apply to the description container. + * - description_display: Description display setting. It can have these values: + * - before: The description is output before the element. + * - after: The description is output after the element (default). + * - invisible: The description is output after the element, hidden visually + * but available to screen readers. + * - children: The rendered child elements of the
    . + * - prefix: The content to add before the
    children. + * - suffix: The content to add after the
    children. + * + * @see template_preprocess_fieldset() + * + * @ingroup themeable + */ +#} +{% + set classes = [ + 'usa-fieldset', + 'js-form-item', + 'form-item', + 'js-form-wrapper', + 'form-wrapper', + ] +%} + + {% + set legend_span_classes = [ + 'usa-legend', + 'fieldset-legend', + required ? 'js-form-required', + required ? 'form-required', + ] + %} + {# Always wrap fieldset legends in a for CSS positioning. #} + + {{ legend.title }} + +
    + {% if description_display == 'before' and description.content %} + {{ description.content }}
    + {% endif %} + {% if errors %} +
    + {{ errors }} +
    + {% endif %} + {% if prefix %} + {{ prefix }} + {% endif %} + {{ children }} + {% if suffix %} + {{ suffix }} + {% endif %} + {% if description_display in ['after', 'invisible'] and description.content %} + {{ description.content }} + {% endif %} + +
    diff --git a/web/themes/custom/bixal_uswds/templates/form/form-element-label.html.twig b/web/themes/custom/bixaluswds/templates/form/form-element-label.html.twig similarity index 55% rename from web/themes/custom/bixal_uswds/templates/form/form-element-label.html.twig rename to web/themes/custom/bixaluswds/templates/form/form-element-label.html.twig index a675cda51..5ecf1cc16 100644 --- a/web/themes/custom/bixal_uswds/templates/form/form-element-label.html.twig +++ b/web/themes/custom/bixaluswds/templates/form/form-element-label.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Theme override for a form element label. + * Default theme implementation for a form element label. * * Available variables: * - title: The label's text. @@ -10,19 +10,19 @@ * - attributes: A list of HTML attributes for the label. * * @see template_preprocess_form_element_label() + * + * @ingroup themeable */ #} - -{% set type = element["#form_element_type"] %} - -{% set classes = [ - title_display == 'after' ? 'option', - title_display == 'invisible' ? 'visually-hidden', - required ? 'js-form-required', - required ? 'form-required', - type not in ['checkbox', 'radio'] ? 'text-primary-dark text-bold usa-label', -] %} - +{% + set classes = [ + 'usa-label', + title_display == 'after' ? 'option', + title_display == 'invisible' ? 'visually-hidden', + required ? 'js-form-required', + required ? 'form-required', + ] +%} {% if title is not empty or required -%} {{ title }} {%- endif %} diff --git a/web/themes/custom/bixal_uswds/templates/form/form-element.html.twig b/web/themes/custom/bixaluswds/templates/form/form-element.html.twig similarity index 75% rename from web/themes/custom/bixal_uswds/templates/form/form-element.html.twig rename to web/themes/custom/bixaluswds/templates/form/form-element.html.twig index c5a1e0ab3..8f13a33ae 100644 --- a/web/themes/custom/bixal_uswds/templates/form/form-element.html.twig +++ b/web/themes/custom/bixaluswds/templates/form/form-element.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Theme override for a form element. + * Default theme implementation for a form element. * * Available variables: * - attributes: HTML attributes for the containing element. @@ -42,64 +42,51 @@ * - title_display: Title display setting. * * @see template_preprocess_form_element() + * + * @ingroup themeable */ #} - -{% set classes = [ - 'js-form-item', - 'form-item', - 'js-form-type-' ~ type|clean_class, - 'form-type-' ~ type|clean_class, - 'js-form-item-' ~ name|clean_class, - 'form-item-' ~ name|clean_class, - title_display not in ['after', 'before'] ? 'form-no-label', - disabled == 'disabled' ? 'form-disabled', - errors ? 'form-item--error', - type not in ['checkbox', 'radio', 'date', 'search'] ? 'margin-bottom-4', - type in ['checkbox', 'radio'] ? 'usa-' ~ type, - type in ['file', 'managed_file'] ? 'usa-form-group', -] %} - -{% set description_classes = [ - 'form-item__description', - 'description', - description_display == 'invisible' ? 'visually-hidden', -] %} - +{% + set classes = [ + 'js-form-item', + 'form-item', + 'js-form-type-' ~ type|clean_class, + 'form-item-' ~ name|clean_class, + 'js-form-item-' ~ name|clean_class, + title_display not in ['after', 'before'] ? 'form-no-label', + disabled == 'disabled' ? 'form-disabled', + errors ? 'form-item--error', + ] +%} +{% + set description_classes = [ + 'usa-hint', + 'description', + description_display == 'invisible' ? 'visually-hidden', + ] +%} - {% if label_display in ['before', 'invisible'] %} {{ label }} {% endif %} - {% if prefix is not empty %} {{ prefix }} {% endif %} - - {% if description_display == 'before' and description.content %} + {% if description.content %} {{ description.content }} {% endif %} - {{ children }} {% if suffix is not empty %} {{ suffix }} {% endif %} - {% if label_display == 'after' %} {{ label }} {% endif %} - {% if errors %}
    - {{ errors }} -
    - {% endif %} - - {% if description_display in ['after', 'invisible'] and description.content %} - - {{ description.content }} + {{ errors }} {% endif %} diff --git a/web/themes/custom/bixaluswds/templates/form/form.html.twig b/web/themes/custom/bixaluswds/templates/form/form.html.twig new file mode 100644 index 000000000..c19f45d2b --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/form.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Default theme implementation for a 'form' element. + * + * Available variables + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The child elements of the form. + * + * @see template_preprocess_form() + * + * @ingroup themeable + */ +#} + + {{ children }} + diff --git a/web/themes/custom/bixaluswds/templates/form/input.html.twig b/web/themes/custom/bixaluswds/templates/form/input.html.twig new file mode 100644 index 000000000..446586b87 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/input.html.twig @@ -0,0 +1,16 @@ +{# +/** + * @file + * Default theme implementation for an 'input' #type form element. + * + * Available variables: + * - attributes: A list of HTML attributes for the input element. + * - children: Optional additional rendered elements. + * + * @see template_preprocess_input() + * + * @ingroup themeable + */ +#} +{% set class = theme_hook_original != 'input__submit' ? 'usa-input' : 'usa-button' %} +{{ children }} diff --git a/web/themes/custom/bixaluswds/templates/form/radios.html.twig b/web/themes/custom/bixaluswds/templates/form/radios.html.twig new file mode 100644 index 000000000..f513b64da --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/radios.html.twig @@ -0,0 +1,15 @@ +{# +/** + * @file + * Default theme implementation for a 'radios' #type form element. + * + * Available variables + * - attributes: A list of HTML attributes for the wrapper element. + * - children: The rendered radios. + * + * @see template_preprocess_radios() + * + * @ingroup themeable + */ +#} +{{ children }} diff --git a/web/themes/custom/bixal_uswds/templates/form/select.html.twig b/web/themes/custom/bixaluswds/templates/form/select.html.twig similarity index 67% rename from web/themes/custom/bixal_uswds/templates/form/select.html.twig rename to web/themes/custom/bixaluswds/templates/form/select.html.twig index c3010cadc..9eef63c8d 100644 --- a/web/themes/custom/bixal_uswds/templates/form/select.html.twig +++ b/web/themes/custom/bixaluswds/templates/form/select.html.twig @@ -1,27 +1,24 @@ {# /** * @file - * Theme override for a select element. + * Default theme implementation for a select element. * * Available variables: * - attributes: HTML attributes for the - {% if element["#multiple"] == true %} - - {% endif %} {% endapply %} diff --git a/web/themes/custom/bixaluswds/templates/form/table.html.twig b/web/themes/custom/bixaluswds/templates/form/table.html.twig new file mode 100644 index 000000000..13aa2fac5 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/form/table.html.twig @@ -0,0 +1,105 @@ +{# +/** + * @file + * Default theme implementation to display a table. + * + * Available variables: + * - attributes: HTML attributes to apply to the tag. + * - caption: A localized string for the tag. + * Note: Drupal currently supports only one table header row, see + * https://www.drupal.org/node/893530 and + * http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_table/7#comment-5109. + * - header: Table header cells. Each cell contains the following properties: + * - tag: The HTML tag name to use; either 'th' or 'td'. + * - attributes: HTML attributes to apply to the tag. + * - content: A localized string for the title of the column. + * - field: Field name (required for column sorting). + * - sort: Default sort order for this column ("asc" or "desc"). + * - sticky: A flag indicating whether to use a "sticky" table header. + * - rows: Table rows. Each row contains the following properties: + * - attributes: HTML attributes to apply to the tag. + * - data: Table cells. + * - no_striping: A flag indicating that the row should receive no + * 'even / odd' styling. Defaults to FALSE. + * - cells: Table cells of the row. Each cell contains the following keys: + * - tag: The HTML tag name to use; either 'th' or 'td'. + * - attributes: Any HTML attributes, such as "colspan", to apply to the + * table cell. + * - content: The string to display in the table cell. + * - active_table_sort: A boolean indicating whether the cell is the active + table sort. + * - footer: Table footer rows, in the same format as the rows variable. + * - empty: The message to display in an extra row if table does not have + * any rows. + * - no_striping: A boolean indicating that the row should receive no striping. + * - header_columns: The number of columns in the header. + * + * @see template_preprocess_table() + * + * @ingroup themeable + */ +#} + + {% if caption %} + + {% endif %} + + {% for colgroup in colgroups %} + {% if colgroup.cols %} + + {% for col in colgroup.cols %} + + {% endfor %} + + {% else %} + + {% endif %} + {% endfor %} + + {% if header %} + + + {% for cell in header %} + <{{ cell.tag }}{{ cell.attributes }}> + {{- cell.content -}} + + {% endfor %} + + + {% endif %} + + {% if rows %} + + {% for row in rows %} + + {% for cell in row.cells %} + <{{ cell.tag }}{{ cell.attributes }}> + {{- cell.content -}} + + {% endfor %} + + {% endfor %} + + {% elseif empty %} + + + + + + {% endif %} + {% if footer %} + + {% for row in footer %} + + {% for cell in row.cells %} + <{{ cell.tag }}{{ cell.attributes }}> + {{- cell.content -}} + + {% endfor %} + + {% endfor %} + + {% endif %} +
    tag. + * - colgroups: Column groups. Each group contains the following properties: + * - attributes: HTML attributes to apply to the
    {{ caption }}
    {{ empty }}
    diff --git a/web/themes/custom/bixal_uswds/templates/form/textarea.html.twig b/web/themes/custom/bixaluswds/templates/form/textarea.html.twig similarity index 56% rename from web/themes/custom/bixal_uswds/templates/form/textarea.html.twig rename to web/themes/custom/bixaluswds/templates/form/textarea.html.twig index 2f819dd5e..f2d4a32ab 100644 --- a/web/themes/custom/bixal_uswds/templates/form/textarea.html.twig +++ b/web/themes/custom/bixaluswds/templates/form/textarea.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Theme override for a 'textarea' #type form element. + * Default theme implementation for a 'textarea' #type form element. * * Available variables * - wrapper_attributes: A list of HTML attributes for the wrapper element. @@ -11,16 +11,10 @@ * - value: The textarea content. * * @see template_preprocess_textarea() + * + * @ingroup themeable */ #} - -{% set classes = [ - 'usa-textarea', - 'form-textarea', - resizable ? 'resize-' ~ resizable, - required ? 'required', -] %} - - - {{ value }} + + {{ value }} diff --git a/web/themes/custom/bixal_uswds/templates/layout/html.html.twig b/web/themes/custom/bixaluswds/templates/layout/html.html.twig similarity index 71% rename from web/themes/custom/bixal_uswds/templates/layout/html.html.twig rename to web/themes/custom/bixaluswds/templates/layout/html.html.twig index 2eb866fad..b240bc4ba 100644 --- a/web/themes/custom/bixal_uswds/templates/layout/html.html.twig +++ b/web/themes/custom/bixaluswds/templates/layout/html.html.twig @@ -26,32 +26,26 @@ {% set body_classes = [ logged_in ? 'user-logged-in', not root_path ? 'path-frontpage' : 'path-' ~ root_path|clean_class, - node_type ? 'page-node-type-' ~ node_type|clean_class, db_offline ? 'db-offline', ] %} - - {{ head_title|safe_join(' | ') }} - - - + {{ head_title|safe_join(' | ') }} + + + -{# -Keyboard navigation/accessibility link to main content section in -page.html.twig. -#} - - {{ 'Skip to main content'|t }} - -{{ page_top }} -{{ page }} -{{ page_bottom }} - +{# Keyboard navigation/accessibility link to main content. #} + + {{ 'Skip to main content'|t }} + + {{ page_top }} + {{ page }} + {{ page_bottom }} + - diff --git a/web/themes/custom/bixaluswds/templates/layout/page.html.twig b/web/themes/custom/bixaluswds/templates/layout/page.html.twig new file mode 100644 index 000000000..6e4ae7636 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/layout/page.html.twig @@ -0,0 +1,123 @@ +{# +/** +* @file +* Theme override to display a single page. +* +* The doctype, html, head and body tags are not in this template. Instead they +* can be found in the html.html.twig template in this directory. +* +* Available variables: +* +* General utility variables: +* - base_path: The base URL path of the Drupal installation. Will usually be +* "/" unless you have installed Drupal in a sub-directory. +* - is_front: A flag indicating if the current page is the front page. +* - logged_in: A flag indicating if the user is registered and signed in. +* - is_admin: A flag indicating if the user has permission to access +* administration pages. +* +* Site identity: +* - front_page: The URL of the front page. Use this instead of base_path when +* linking to the front page. This includes the language domain or prefix. +* +* Page content (in order of occurrence in the default page.html.twig): +* - node: Fully loaded node, if there is an automatically-loaded node +* associated with the page and the node ID is the second argument in the +* page's path (e.g. node/12345 and node/12345/revisions, but not +* comment/reply/12345). +* +* Regions: +* - page.breadcrumb: Items for the breadcrumb region. +* - page.highlighted: Items for the highlighted content region. +* - page.help: Dynamic help text, mostly for admin pages. +* - page.content: The main content of the current page. +* - page.sidebar: Items for the sidebar. +* - page.footer: Items for the footer region. +* +* @see template_preprocess_page() +* @see html.html.twig +*/ +#} +{# Load utility libraries when logged in. #} +{% if logged_in %} + {{ attach_library('bixaluswds/logged-in') }} +{% endif %} + +{% set banner_gov_text %} +

    + Official websites use .gov
    + A .gov website belongs to an official government organization in the United States. +

    +{% endset %} + +{% set banner_https_text %} +

    + Secure .gov websites use HTTPS
    + A lock (@) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites. +

    +{% endset %} + +{% include '@uswds_templates/usa-banner.html.twig' with { + 'aria_label': 'Official website of the United States government' | t, + 'header_text': 'An official website of the United States government' | t, + 'button_text': 'Here’s how you know' | t, + 'uswds_img_path': uswds_img_path ~ '/', + 'gov_text': banner_gov_text, + 'https_text': banner_https_text +} %} + +
    + + +{{ page.admin }} + +{% block main %} + {% if page.sidebar %} + + +
    + {# link is in html.html.twig #} + + {{ page.content }} +
    + + {% else %} + +
    + {# link is in html.html.twig #} + + {{ page.content }} +
    + + {% endif %} +{% endblock %} + +
    + {# Footer partial. #} + {% include '@bixaluswds/_components/uswds/usa-footer.html.twig' with { + 'footer_menu': drupal_entity('block', 'footer_menu'), + 'sitename': drupal_link(site_name, '', { attributes: { 'title': site_name, 'class': 'usa-link' }}), + 'facebook_url': 'https://facebook.com', + 'instagram_url': 'https://instagram.com', + 'twitter_url': 'https://twitter.com', + 'youtube_url': 'https://youtube.com', + 'rss_url': '/rss', + 'contact_sitename': site_name ~ ' ' ~ 'Contact Center'|t, + 'phone': "(800) 555-5555", + 'email': "info@agency.gov" + } %} +
    + +{# Identifier partial. #} +{% include '@bixaluswds/_components/uswds/usa-identifier.html.twig' with { + 'domain': 'domain.gov', + 'agencyname': "General Service Administration" | t, + 'agency_url': "https://gsa.gov/", + 'identifier_menu': drupal_entity('block', 'identifier_menu'), + 'description_link_url': "https://www.usa.gov/", + 'description_link_text': 'Visit USA.gov' | t, +} %} diff --git a/web/themes/custom/bixaluswds/templates/layout/region.html.twig b/web/themes/custom/bixaluswds/templates/layout/region.html.twig new file mode 100644 index 000000000..6f9f3bf80 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/layout/region.html.twig @@ -0,0 +1,17 @@ +{# +/** + * @file + * Default theme implementation to display a region. + * + * Available variables: + * - content: The content for this region, typically blocks. + * - attributes: HTML attributes for the region
    . + * - region: The name of the region variable as defined in the theme's + * .info.yml file. + * + * @see template_preprocess_region() + * + * @ingroup themeable + */ +#} +{{ content }} diff --git a/web/themes/custom/bixaluswds/templates/media/media--image.html.twig b/web/themes/custom/bixaluswds/templates/media/media--image.html.twig new file mode 100644 index 000000000..3d136e1f1 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/media/media--image.html.twig @@ -0,0 +1,34 @@ +{# +/** + * @file + * Theme override to display a media item. + * + * Available variables: + * - media: The media item, with limited access to object properties and + * methods. + * - name: Name of the media. + * - content: Media content. + * + * @see template_preprocess_media() + * + * @ingroup themeable + */ +#} +{% extends '@bixaluswds/media/media.html.twig' %} + +{% block content %} + + + {{ title_suffix.contextual_links }} + + {% if content.field_media_image | render %} + {{ content.field_media_image | field_value }} + {% endif %} + + {% if caption %} +
    + {{ caption }} +
    + {% endif %} + +{% endblock %} diff --git a/web/themes/custom/bixal_uswds/templates/media/media.html.twig b/web/themes/custom/bixaluswds/templates/media/media.html.twig similarity index 79% rename from web/themes/custom/bixal_uswds/templates/media/media.html.twig rename to web/themes/custom/bixaluswds/templates/media/media.html.twig index b030e2988..f9a1f1826 100644 --- a/web/themes/custom/bixal_uswds/templates/media/media.html.twig +++ b/web/themes/custom/bixaluswds/templates/media/media.html.twig @@ -22,9 +22,12 @@ view_mode ? 'media--view-mode-' ~ view_mode|clean_class, ] %} - - {{ title_suffix.contextual_links }} - {% if content %} +{% block content %} + + + {{ title_suffix.contextual_links }} + {{ content }} - {% endif %} -
    + + +{% endblock %} diff --git a/web/themes/custom/bixaluswds/templates/misc/status-messages.html.twig b/web/themes/custom/bixaluswds/templates/misc/status-messages.html.twig new file mode 100644 index 000000000..7cc8016de --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/misc/status-messages.html.twig @@ -0,0 +1,61 @@ +{# +/** + * @file + * Theme override for status messages. + * + * Displays status, error, and warning messages, grouped by type. + * + * An invisible heading identifies the messages for assistive technology. + * Sighted users see a colored box. See http://www.w3.org/TR/WCAG-TECHS/H69.html + * for info. + * + * Add an ARIA label to the contentinfo area so that assistive technology + * user agents will better describe this landmark. + * + * Available variables: + * - message_list: List of messages to be displayed, grouped by type. + * - status_headings: List of all status types. + * - attributes: HTML attributes for the element, including: + * - class: HTML classes. + */ +#} +{% if message_list | length %} +
    + {% block messages %} + {% for type, messages in message_list %} + {% set type = type == 'status' ? 'success' : type %} + {% set classes = [ + 'messages', + 'messages--type-' ~ type, + 'usa-alert', + 'usa-alert--' ~ type, + ] %} + +
    + +
    + + {% if status_headings[type] %} +

    {{ status_headings[type] }}

    + {% endif %} + + {% if messages | length > 1 %} +
      + {% for message in messages %} +
    • {{ message }}
    • + {% endfor %} +
    + {% else %} +
    + {{ messages | first }} +
    + {% endif %} +
    +
    + {# Remove type specific classes. #} + {% set attributes = attributes.removeClass(classes) %} + {% endfor %} + {% endblock messages %} +
    +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/navigation/breadcrumb.html.twig b/web/themes/custom/bixaluswds/templates/navigation/breadcrumb.html.twig new file mode 100644 index 000000000..745685d63 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/breadcrumb.html.twig @@ -0,0 +1,12 @@ +{# +/** + * @file + * Theme override for a breadcrumb trail. + * + * Available variables: + * - breadcrumb: Breadcrumb trail items. + */ +#} +{% include '@uswds_templates/usa-breadcrumb.html.twig' with { + 'items': breadcrumb, +} %} diff --git a/web/themes/custom/bixaluswds/templates/navigation/menu--footer.html.twig b/web/themes/custom/bixaluswds/templates/navigation/menu--footer.html.twig new file mode 100644 index 000000000..cc0a0907e --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/menu--footer.html.twig @@ -0,0 +1,33 @@ +{# +/** + * @file + * Bixal USWDS theme implementation for the footer menu. + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * - is_expanded: TRUE if the link has visible children within the current + * menu tree. + * - is_collapsed: TRUE if the link has children within the current menu tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + * + * @ingroup themeable + */ +#} +{% import _self as menus %} + + + +{% macro menu_links(items, attributes, menu_level) %} + {% include "@bixaluswds/_components/uswds/usa-footer--nav.html.twig" with { + 'items': items + } %} +{% endmacro %} diff --git a/web/themes/custom/bixal_uswds/templates/navigation/menu--identifier.html.twig b/web/themes/custom/bixaluswds/templates/navigation/menu--identifier.html.twig similarity index 51% rename from web/themes/custom/bixal_uswds/templates/navigation/menu--identifier.html.twig rename to web/themes/custom/bixaluswds/templates/navigation/menu--identifier.html.twig index b0e0d614c..7f1fe23ef 100644 --- a/web/themes/custom/bixal_uswds/templates/navigation/menu--identifier.html.twig +++ b/web/themes/custom/bixaluswds/templates/navigation/menu--identifier.html.twig @@ -22,33 +22,14 @@ #} {% import _self as menus %} -{{ menus.menu_links(items, attributes, 0) }} + {% macro menu_links(items, attributes, menu_level) %} - {% import _self as menus %} - - {% if items %} -
      - {% for item in items %} - - {% set item_classes = [ - 'usa-identifier__required-links-item', - 'menu__item', - 'menu__item--' ~ menu_item_type, - item.in_active_trail ? 'menu__item--active-trail', - ] %} - - {% set link_classes = [ - 'usa-identifier__required-link usa-link', - 'menu__link', - 'menu__link--' ~ menu_item_type, - item.in_active_trail ? 'menu__link--active-trail', - ] %} - - - {{ link(item.title, item.url, { 'class': link_classes }) }} - - {% endfor %} -
    - {% endif %} + {% include "@bixaluswds/_components/uswds/usa-identifier--section--required-links.html.twig" with { + 'items', items + } %} {% endmacro %} diff --git a/web/themes/custom/bixaluswds/templates/navigation/menu--main.html.twig b/web/themes/custom/bixaluswds/templates/navigation/menu--main.html.twig new file mode 100644 index 000000000..c92cd9c2e --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/menu--main.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Bixal USWDS implementation for main navigation + * + * Available variables: + * - menu_name: The machine name of the menu. + * - items: A nested list of menu items. Each menu item contains: + * - attributes: HTML attributes for the menu item. + * - below: The menu item child items. + * - title: The menu link title. + * - url: The menu link url, instance of \Drupal\Core\Url + * - localized_options: Menu link localized options. + * - is_expanded: TRUE if the link has visible children within the current + * menu tree. + * - is_collapsed: TRUE if the link has children within the current menu tree + * that are not currently visible. + * - in_active_trail: TRUE if the link is in the active trail. + * + * @ingroup themeable + */ +#} +{% import _self as menus %} + + + +{% macro menu_links(items, attributes, menu_level) %} + {% include "@bixaluswds/_components/uswds/usa-nav--primary--top.html.twig" with { + 'items': items + } %} +{% endmacro %} diff --git a/web/themes/custom/bixaluswds/templates/navigation/menu-local-task.html.twig b/web/themes/custom/bixaluswds/templates/navigation/menu-local-task.html.twig new file mode 100644 index 000000000..d3847818a --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/menu-local-task.html.twig @@ -0,0 +1,30 @@ +{# +/** + * @file + * Theme override for a local task link. + * + * Available variables: + * - attributes: HTML attributes for the wrapper element. + * - is_active: Whether the task item is an active tab. + * - link: A rendered link element. + * + * Note: This template renders the content for each task item in + * menu-local-tasks.html.twig. + * + * @see template_preprocess_menu_local_task() + */ +#} +{% set classes = [ + 'tabs--tab', + 'usa-button-group__item' +] %} + + + {% set link_attributes = create_attribute() %} + {% set link_classes = [ + 'usa-button', + not is_active ? 'usa-button--outline', + ] %} + + {{ link(link['#title'], link['#url'], link_attributes.addClass(link_classes)) }} + diff --git a/web/themes/custom/bixaluswds/templates/navigation/menu-local-tasks.html.twig b/web/themes/custom/bixaluswds/templates/navigation/menu-local-tasks.html.twig new file mode 100644 index 000000000..3fe0e6cfa --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/menu-local-tasks.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Olivero theme implementation to display primary and secondary local tasks. + * + * Available variables: + * - primary: HTML list items representing primary tasks. + * - secondary: HTML list items representing secondary tasks. + * + * Each item in these variables (primary and secondary) can be individually + * themed in menu-local-task.html.twig. + * + * @ingroup themeable + */ +#} +{% set classes = [ + 'tabs', + 'usa-button-group', + 'usa-button-group--segmented', +] %} + +{% if primary %} + +{% endif %} + +{% if secondary %} + +{% endif %} diff --git a/web/themes/custom/bixaluswds/templates/navigation/pager.html.twig b/web/themes/custom/bixaluswds/templates/navigation/pager.html.twig new file mode 100644 index 000000000..425298579 --- /dev/null +++ b/web/themes/custom/bixaluswds/templates/navigation/pager.html.twig @@ -0,0 +1,36 @@ +{# +/** + * @file + * Theme override to display a pager. + * + * Available variables: + * - heading_id: Pagination heading ID. + * - items: List of pager items. + * The list is keyed by the following elements: + * - first: Item for the first page; not present on the first page of results. + * - previous: Item for the previous page; not present on the first page + * of results. + * - next: Item for the next page; not present on the last page of results. + * - last: Item for the last page; not present on the last page of results. + * - pages: List of pages, keyed by page number. + * Sub-sub elements: + * items.first, items.previous, items.next, items.last, and each item inside + * items.pages contain the following elements: + * - href: URL with appropriate query parameters for the item. + * - attributes: A keyed list of HTML attributes for the item. + * - text: The visible text used for the item link, such as "‹ Previous" + * or "Next ›". + * - current: The page number of the current page. + * - ellipses: If there are more pages than the quantity allows, then an + * ellipsis before or after the listed pages may be present. + * - previous: Present if the currently visible list of pages does not start + * at the first page. + * - next: Present if the visible list of pages ends before the last page. + * + * @see template_preprocess_pager() + */ +#} + +{% include '@uswds_templates/usa-pagination.html.twig' with { + 'items': items, +} %} diff --git a/web/themes/custom/bixal_uswds/templates/node/node.html.twig b/web/themes/custom/bixaluswds/templates/node/node.html.twig similarity index 89% rename from web/themes/custom/bixal_uswds/templates/node/node.html.twig rename to web/themes/custom/bixaluswds/templates/node/node.html.twig index eb8b8ee9e..dff010906 100644 --- a/web/themes/custom/bixal_uswds/templates/node/node.html.twig +++ b/web/themes/custom/bixaluswds/templates/node/node.html.twig @@ -70,8 +70,6 @@ {% set classes = [ 'node', 'node--type-' ~ node.bundle|clean_class, - node.isPromoted() ? 'node--promoted', - node.isSticky() ? 'node--sticky', not node.isPublished() ? 'node--unpublished', view_mode ? 'node--view-mode-' ~ view_mode|clean_class, ] %} @@ -80,24 +78,14 @@ {{ title_prefix }} {% if label and not page %} - +

    {{ label }}

    {% endif %} {{ title_suffix }} - {% if display_submitted %} -
    - {{ author_picture }} - - {% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %} - {{ metadata }} - -
    - {% endif %} - - + {% block content %} {{ content }} - + {% endblock %} diff --git a/web/themes/custom/bixal_uswds/templates/taxonomy/taxonomy-term--tags.html.twig b/web/themes/custom/bixaluswds/templates/taxonomy/taxonomy-term.html.twig similarity index 67% rename from web/themes/custom/bixal_uswds/templates/taxonomy/taxonomy-term--tags.html.twig rename to web/themes/custom/bixaluswds/templates/taxonomy/taxonomy-term.html.twig index 8e104c811..abc4a4d7f 100644 --- a/web/themes/custom/bixal_uswds/templates/taxonomy/taxonomy-term--tags.html.twig +++ b/web/themes/custom/bixaluswds/templates/taxonomy/taxonomy-term.html.twig @@ -1,7 +1,7 @@ {# /** * @file - * Theme override to display a taxonomy term. + * Default theme implementation to display a taxonomy term. * * Available variables: * - url: URL of the current term. @@ -21,17 +21,29 @@ * - view_mode: View mode, e.g. 'full', 'teaser', etc. * * @see template_preprocess_taxonomy_term() + * + * @ingroup themeable */ #} {% set classes = [ - 'taxonomy-term', - 'vocabulary-' ~ term.bundle|clean_class, + 'term', + 'term--type-' ~ term.bundle|clean_class, + not term.isPublished() ? 'term--unpublished', + view_mode ? 'term--view-mode-' ~ view_mode|clean_class, ] %} - + + {{ title_prefix }} {% if name and not page %} - {{ name | field_value }} +

    + {{ name }} +

    {% endif %} {{ title_suffix }} - + + {% block content %} + {{ content }} + {% endblock %} + + diff --git a/web/themes/custom/votegov/src/sass/_uswds-settings.scss b/web/themes/custom/votegov/src/sass/_uswds-settings.scss new file mode 100644 index 000000000..16f0f63df --- /dev/null +++ b/web/themes/custom/votegov/src/sass/_uswds-settings.scss @@ -0,0 +1,217 @@ +/* + ***** Do not write any custom CSS on this file, this is for USWDS 3 settings only. + ***** For all possible overrides, see https://designsystem.digital.gov/documentation/settings/ +---------------------------------------- +USWDS theme settings overrides +---------------------------------------- +// Grid settings reference +---------------------------------------- +Grid container max-width +---------------------------------------- +mobile +mobile-lg +tablet +tablet-lg +desktop +desktop-lg +widescreen +---------------------------------------- +// Units available for usage. +example with USWDS units: +.element { + padding-bottom: units('first value in the key pairs below') +} + +Or a USWDS mixin... + +.element { + @include u-padding-bottom('3'); +} + +"1px": 1px, +"2px": 2px, +"05": 0.25rem, +1: 0.5rem, +"105": 0.75rem, +2: 1rem, +"205": 1.25rem, +3: 1.5rem, +"neg-1px": -1px, +"neg-2px": -2px, +"neg-05": -0.25rem, +"neg-1": -0.5rem, +"neg-105": -0.75rem, +"neg-2": -1rem, +"neg-205": -1.25rem, +"neg-3": -1.5rem, +4: 2rem, +5: 2.5rem, +6: 3rem, +7: 3.5rem, +8: 4rem, +9: 4.5rem, +10: 5rem, +15: 7.5rem, +"neg-4": -2rem, +"neg-5": -2.5rem, +"neg-6": -3rem, +"neg-7": -3.5rem, +"neg-8": -4rem, +"neg-9": -4.5rem, +"neg-10": -5rem, +"neg-15": -7.5rem, +"card": 10rem, +"card-lg": 15rem, +"mobile": 20rem, +"mobile-lg": 30rem, +"tablet": 40rem, +"tablet-lg": 55rem, +"desktop": 64rem, +"desktop-lg": 75rem, +"widescreen": 87.5rem, +0: 0, +"auto": auto +*/ + +// ****** Do not write any custom CSS on this file ****** // +/* Theme setting documentation --------------------------------------------------------------- +https://designsystem.digital.gov/documentation/settings/ + */ +@use "uswds-core" with ( + // General settings. + $theme-image-path: "../assets/img", + $theme-font-path: "../assets/fonts", + $theme-show-notifications: false, + $theme-global-content-styles: true, + + // Component container max-widths. + $theme-grid-container-max-width: "widescreen", + $theme-banner-max-width: "widescreen", + $theme-header-max-width: "widescreen", + $theme-identifier-max-width: "widescreen", + $theme-footer-max-width: "widescreen", + $max-width-settings: ( + output: true, + responsive: true, // Max width settings, set responsive to true. + ), + + /* Color token documentation: + https://designsystem.digital.gov/design-tokens/color/theme-tokens/ + https://designsystem.digital.gov/design-tokens/color/overview/ + */ + // Color settings --------------------------------------------------------------- + $test-system-color-tokens: false, // Debug output for system colors. + + // -- Primary + // -- Secondary + // -- Accent cool + // -- Accent warm + // -- Info + + // Component settings --------------------------------------------------------------- + // -- Accordion + // -- Alert + // -- Banner + // -- Breadcrumb + $theme-breadcrumb-background-color: "black", + $theme-breadcrumb-font-family: "sans", + $theme-breadcrumb-font-size: "sm", + $theme-breadcrumb-link-color: "base-lighter", + $theme-breadcrumb-separator-color: "white", + $theme-breadcrumb-padding-top: 0, + $theme-breadcrumb-padding-bottom: 0, + // -- Button + // -- Card + // -- Checkbox + // -- Collection + // -- Footer + // -- Form + // -- Header + // -- Hero + // -- Icon list + // -- Identifier + // -- In-page navigation + // -- Input + // -- Link + // -- Modal + // -- Navigation + // -- Pagination + // -- Process list + // -- Radio buttons + // -- Search + // -- Sidenav + // -- Site Alert + // -- Step indicator + // -- Summary box + // -- Tables + // -- Tooltip + // **** End Components **** + + // Spacing settings --------------------------------------------------------------- + $theme-column-gap-sm: 3, + $theme-column-gap-md: 4, + $theme-column-gap-lg: 6, + $theme-column-gap-mobile: 5, + //$theme-column-gap-desktop: 7, + + // Typography settings --------------------------------------------------------------- + /* Typography settings and token documentation: + https://designsystem.digital.gov/documentation/settings/#typography-settings + https://designsystem.digital.gov/design-tokens/typesetting/overview/ + https://designsystem.digital.gov/utilities/font-size-and-family/ + https://designsystem.digital.gov/design-tokens/typesetting/font-family/ + */ + // Set some reasonable typography defaults. + $theme-font-type-sans: "roboto", + $theme-font-type-serif: "merriweather", + $theme-font-role-ui: "sans", + $theme-font-role-heading: "sans", + $theme-font-role-body: "serif", + $theme-font-role-alt: "sans", + $theme-text-measure: none, // Set standard line-length to 100% + $theme-lead-measure: none, + $theme-lead-line-height: 5, + $theme-lead-font-size: 8, + $theme-font-weight-medium: 500, + $theme-font-weight-bold: 500, + + // https://designsystem.digital.gov/design-tokens/typesetting/font-size/ + $theme-h1-font-size: 15, + $theme-h2-font-size: 11, + $theme-h3-font-size: 10, + $theme-h4-font-size: 9, + $theme-h5-font-size: 8, + $theme-h6-font-size: 7, + + $theme-typeface-tokens: ( + "roboto": ( + "display-name": "Roboto", // or other font + "cap-height": 364px, // the default, leave it for now + "stack": "Helvetica, Arial, sans-serif", // or whatever stack you want + ), + ), + + // Utilities settings --------------------------------------------------------------- + // Example of a custom utility class + // compiles as .bottom-100 { bottom:100px!important } + $bottom-manual-values: ("80": 80px), + $top-manual-values: ("6": 6px), + + // Turn on or off breakpoints + $theme-utility-breakpoints: ( + 'card': false, // 160px + 'card-lg': false, // 240px + 'mobile': false, // 320px + 'mobile-lg': false, // 480px + 'tablet': true, // 640px + 'tablet-lg': false, // 880px + 'desktop': true, // 1024px + 'desktop-lg': false, // 1200px + 'widescreen': false, // 1400px + ), + $flex-direction-settings: ( + output: true, + responsive: true, + ), +); +// ****** Do not write any custom CSS on this file ****** // diff --git a/web/themes/custom/votegov/src/sass/_uswds-theme-custom-styles.scss b/web/themes/custom/votegov/src/sass/_uswds-theme-custom-styles.scss deleted file mode 100644 index 9524613e8..000000000 --- a/web/themes/custom/votegov/src/sass/_uswds-theme-custom-styles.scss +++ /dev/null @@ -1,18 +0,0 @@ -/* -* * * * * ============================== -* * * * * ============================== -* * * * * ============================== -* * * * * ============================== -======================================== -======================================== -======================================== ----------------------------------------- -USWDS THEME CUSTOM STYLES ----------------------------------------- -Custom project SASS goes here. ----------------------------------------- -*/ - -// Add custom directories here via @use, nothing else. -@use "uswds-overrides"; -@use "drupal-system"; diff --git a/web/themes/custom/votegov/src/sass/_uswds-theme.scss b/web/themes/custom/votegov/src/sass/_uswds-theme.scss deleted file mode 100644 index e00053269..000000000 --- a/web/themes/custom/votegov/src/sass/_uswds-theme.scss +++ /dev/null @@ -1,255 +0,0 @@ -/* - ***** Do not write any custom CSS on this file, this is for USWDS 3 settings only. - ***** For all possible overrides, see https://designsystem.digital.gov/documentation/settings/ ----------------------------------------- -USWDS theme settings overrides ----------------------------------------- -// Grid settings reference ----------------------------------------- -Grid container max-width ----------------------------------------- -mobile -mobile-lg -tablet -tablet-lg -desktop -desktop-lg -widescreen ----------------------------------------- -// Units available for usage. -example with USWDS units: -.element { - padding-bottom: units('first value in the key pairs below') -} - -Or a USWDS mixin... - -.element { - @include u-padding-bottom('3'); -} - -"1px": 1px, -"2px": 2px, -"05": 0.25rem, -1: 0.5rem, -"105": 0.75rem, -2: 1rem, -"205": 1.25rem, -3: 1.5rem, -"neg-1px": -1px, -"neg-2px": -2px, -"neg-05": -0.25rem, -"neg-1": -0.5rem, -"neg-105": -0.75rem, -"neg-2": -1rem, -"neg-205": -1.25rem, -"neg-3": -1.5rem, -4: 2rem, -5: 2.5rem, -6: 3rem, -7: 3.5rem, -8: 4rem, -9: 4.5rem, -10: 5rem, -15: 7.5rem, -"neg-4": -2rem, -"neg-5": -2.5rem, -"neg-6": -3rem, -"neg-7": -3.5rem, -"neg-8": -4rem, -"neg-9": -4.5rem, -"neg-10": -5rem, -"neg-15": -7.5rem, -"card": 10rem, -"card-lg": 15rem, -"mobile": 20rem, -"mobile-lg": 30rem, -"tablet": 40rem, -"tablet-lg": 55rem, -"desktop": 64rem, -"desktop-lg": 75rem, -"widescreen": 87.5rem, -0: 0, -"auto": auto -*/ - -// ****** Do not write any custom CSS on this file ****** // - -@use "uswds-core" with ( - // General settings. - $theme-image-path: "../assets/img", - $theme-font-path: "../assets/fonts", - $theme-show-notifications: false, - - // Color settings - // For color info see: - // * https://designsystem.digital.gov/design-tokens/color/theme-tokens/ - // * https://designsystem.digital.gov/design-tokens/color/overview/ - // Debug output for system colors. - $test-system-color-tokens: false, - - // Primary - //$theme-color-primary-family: "cyan", - //$theme-color-primary-lightest: 'cyan-5v', - //$theme-color-primary-lighter: 'cyan-10v', - //$theme-color-primary-light: 'cyan-20v', - //$theme-color-primary: "cyan-50v", - //$theme-color-primary-dark: "cyan-60v", - //$theme-color-primary-darker: "cyan-70v", - //$theme-color-primary-darkest: "cyan-80v", - - // Secondary - //$theme-color-secondary-family: "magenta", - //$theme-color-secondary-lightest: 'magenta-5v', - //$theme-color-secondary-lighter: 'magenta-10v', - //$theme-color-secondary-light: 'magenta-20v', - //$theme-color-secondary: "magenta-50v", - //$theme-color-secondary-dark: "magenta-60v", - //$theme-color-secondary-darker: "magenta-70v", - //$theme-color-secondary-darkest: "magenta-80v", - - // Accent cool - //$theme-color-accent-cool-family: "violet", - //$theme-color-accent-cool-lightest: 'violet-5v', - //$theme-color-accent-cool-lighter: 'violet-10v', - //$theme-color-accent-cool-light: 'violet-20v', - //$theme-color-accent-cool: "violet-50v", - //$theme-color-accent-cool-dark: "violet-60v", - //$theme-color-accent-cool-darker: "violet-70v", - //$theme-color-accent-cool-darkest: "violet-80v", - - // Accent warm - //$theme-color-accent-warm-family: "gold", - //$theme-color-accent-warm-lightest: 'gold-5v', - //$theme-color-accent-warm-lighter: 'gold-10v', - //$theme-color-accent-warm-light: 'gold-20v', - //$theme-color-accent-warm: "gold-50v", - //$theme-color-accent-warm-dark: "gold-60v", - //$theme-color-accent-warm-darker: "gold-70v", - //$theme-color-accent-warm-darkest: "gold-80v", - - // Info - //$theme-color-info-family:"cyan", - //$theme-color-info-lighter: "cyan-5v", - //$theme-color-info-light: "cyan-10v", - //$theme-color-info: "cyan-30v", - //$theme-color-info-dark: "cyan-50v", - //$theme-color-info-darker: "cyan-70v", - // - //$theme-link-visited-color: "primary-darker", - //$theme-link-hover-color: "primary-darkest", - // - //$theme-color-emergency: 'red-70v', - // - //$theme-link-reverse-color: 'accent-warm-light', - //$theme-link-reverse-hover-color: 'accent-warm-lighter', - //$theme-link-reverse-active-color: 'accent-warm-lightest', - - // **** Component settings below **** // - // -- Accordion - // -- Alert - //$theme-alert-link-color: 'base-darker', - - // -- Banner - //$theme-banner-background-color: "base-darkest", - $theme-banner-max-width: "widescreen", - - // -- Breadcrumb - //$theme-breadcrumb-link-color: "primary", - - // -- Button - // -- Card - $theme-card-header-typeset: ('sans', 'lg', 3), - //$theme-card-flag-image-width: 'flag', - //$theme-card-flag-min-width: 'desktop', - - // -- Checkbox - // -- Collection - // -- Footer - $theme-footer-max-width: "widescreen", - - // -- Header - $theme-header-max-width: "widescreen", - - // -- Hero - // -- Form - // -- Icon list - // -- Identifier - // -- Input - $theme-input-max-width: 'desktop', - // -- Modal - // -- Navigation - // -- Modal - // -- Pagination - // -- Process list - // -- Process list - // -- Radio buttons - // -- Search - // -- Sidenav - // -- Site Alert - // -- Step indicator - // -- Summary box - //$theme-summary-box-background-color: "secondary-darker", - //$theme-summary-box-link-color: "accent-warm-light", - - // -- Tables - // **** End Components **** - - // Spacing settings - $theme-column-gap-sm: 3, - $theme-column-gap-md: 4, - $theme-column-gap-lg: 6, - $theme-column-gap-mobile: 5, - // $theme-column-gap-desktop: 7, - - // Typography settings - // https://designsystem.digital.gov/documentation/settings/#typography-settings - // https://designsystem.digital.gov/design-tokens/typesetting/overview/ - // https://designsystem.digital.gov/utilities/font-size-and-family/ - // https://designsystem.digital.gov/design-tokens/typesetting/font-family/ - // Set some reasonable typography defaults. - $theme-font-type-sans: 'source-sans-pro', - // Default paragraph width - none = 100% - $theme-text-measure: none, - // Default font sizes. - $theme-type-scale-sm: 7, - $theme-type-scale-md: 8, - $theme-type-scale-lg: 9, - $theme-type-scale-xl: 10, - - // Utilities settings // - $utilities-use-important: true, - - // Example of a custom utility class - // compiles as .bottom-100 { bottom:100px!important } - $bottom-manual-values: ("80": 80px), - $top-manual-values: ("6": 6px), - //$margin-horizontal-manual-values: ('flag': 150px), - //$width-manual-values: ('flag': 150px), - - // Turn on or off breakpoints - $theme-utility-breakpoints: ( - 'card': false, // 160px - 'card-lg': false, // 240px - 'mobile': false, // 320px - 'mobile-lg': true, // 480px - 'tablet': true, // 640px - 'tablet-lg': true, // 880px - 'desktop': true, // 1024px - 'desktop-lg': false, // 1200px - 'widescreen': false, // 1400px - ), - -// Max width settings, set responsive to true. - $max-width-settings: ( - output: true, - responsive: true, - ), - - $flex-direction-settings: ( - output: true, - responsive: true, -), - -); -// ****** Do not write any custom CSS on this file ****** // diff --git a/web/themes/custom/votegov/src/sass/base/_index.scss b/web/themes/custom/votegov/src/sass/base/_index.scss new file mode 100644 index 000000000..afb99fc2f --- /dev/null +++ b/web/themes/custom/votegov/src/sass/base/_index.scss @@ -0,0 +1,3 @@ +@forward "typography"; +@forward "media"; +@forward "preference"; diff --git a/web/themes/custom/votegov/src/sass/base/media.scss b/web/themes/custom/votegov/src/sass/base/media.scss new file mode 100644 index 000000000..894f8487a --- /dev/null +++ b/web/themes/custom/votegov/src/sass/base/media.scss @@ -0,0 +1,31 @@ +@use "uswds-core" as *; + +// Figure +figure { + @include u-margin-x('auto'); + @include u-margin-y('auto'); +} + +figcaption { + @include u-font-size('sans', 4); + @include u-display('block'); + color: gray; + + * + & { + @include u-margin-top(2); + } +} + +// Video +Video, +.video-container iframe { + aspect-ratio: 16 / 9; + width: 100%; + height: auto; +} + +// Image +img { + max-width: 100%; + height: auto; +} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/system.scss b/web/themes/custom/votegov/src/sass/base/preference.scss similarity index 60% rename from web/themes/custom/votegov/src/sass/drupal-system/system.scss rename to web/themes/custom/votegov/src/sass/base/preference.scss index c476c580e..2881380d4 100644 --- a/web/themes/custom/votegov/src/sass/drupal-system/system.scss +++ b/web/themes/custom/votegov/src/sass/base/preference.scss @@ -1,6 +1,3 @@ -// Include core in order to use USWDS mixins etc... -@use "uswds-core" as *; - // Removes any transition when the user has set their OS settings to prefer // reduced motion. @media screen and (prefers-reduced-motion: reduce), (update: slow) { @@ -10,10 +7,3 @@ transition-duration: 0.001ms !important; } } - -// Override local task tabs for mobile. -.tabs--primary .tabs__tab { - @media (max-width: 43.75rem) { - display: block; - } -} diff --git a/web/themes/custom/votegov/src/sass/base/typography.scss b/web/themes/custom/votegov/src/sass/base/typography.scss new file mode 100644 index 000000000..6cfda5719 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/base/typography.scss @@ -0,0 +1,85 @@ +@use "uswds-core" as *; + +// Headings +h1 { + @include u-font-family('serif'); + @include u-text('bold'); + @include u-margin-top(5); + + @include at-media-max('mobile-lg') { + @include u-font-size('serif', 12) + } + + &:first-child { + @include u-margin-top(0); + } + + .page-masthead & { + color: white; + } +} + +h2, +h3, +h4, +h5, +h6 { + @include u-font-family('sans'); + @include u-text('no-uppercase'); + @include u-text('medium'); + @include u-margin-top(5); + @include u-text('ls-auto'); + + &:first-child { + @include u-margin-top(0); + } +} + +// Lists +ul, ol { + main & { + &:last-child { + margin-bottom: 0; + } + + > li + li { + @include u-margin-top(2); + @include u-margin-bottom('auto'); + } + } +} + +// Blockquote +blockquote { + @include u-font-family('sans'); + @include u-font-size('sans', 8); + @include u-line-height('sans', 5); + + * + & { + @include u-margin-top(5); + } + + + * { + @include u-margin-top(5); + } +} + +cite { + @include u-font-size('sans', 4); + @include u-display('block'); + color: gray; + + * + & { + @include u-margin-top(2); + } +} + +small { + @include u-font-size('serif', 3); +} + +hr { + @include u-border(0); + @include u-margin-y(3); + border-bottom: 1px solid #D3D3D3; +} diff --git a/web/themes/custom/votegov/src/sass/components/_index.scss b/web/themes/custom/votegov/src/sass/components/_index.scss new file mode 100644 index 000000000..ce7ebce78 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/components/_index.scss @@ -0,0 +1,5 @@ +@forward "page-masthead"; +@forward "page-title"; +@forward "page-content"; +@forward "sidebar"; + diff --git a/web/themes/custom/votegov/src/sass/components/page-content.scss b/web/themes/custom/votegov/src/sass/components/page-content.scss new file mode 100644 index 000000000..aa6f88038 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/components/page-content.scss @@ -0,0 +1,19 @@ +@use "uswds-core" as *; +@use "mixins" as *; + +.page-content { + @include u-margin-top(6); + @include u-margin-bottom(10); + @include narrow-container; + + &.page-content--sidebar { + @include at-media('desktop-lg') { + @include grid-offset(1); + } + } + + &.page-content--image-offset { + position: relative; + margin-top: -80px; + } +} diff --git a/web/themes/custom/votegov/src/sass/components/page-masthead.scss b/web/themes/custom/votegov/src/sass/components/page-masthead.scss new file mode 100644 index 000000000..7eb631419 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/components/page-masthead.scss @@ -0,0 +1,31 @@ +@use "uswds-core" as *; + +$masthead-background-color: #11385B; + +.page-masthead { + background-color: $masthead-background-color; + position: relative; + @include u-padding-top(4); + @include u-padding-bottom(6); + + &:before { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 50%; + right: 50%; + margin-left: -50vw; + margin-right: -50vw; + background-color: $masthead-background-color; + } + + > * { + position: relative; + } + + &.page-masthead--image-offset { + padding-bottom: 120px; + } +} diff --git a/web/themes/custom/votegov/src/sass/components/page-title.scss b/web/themes/custom/votegov/src/sass/components/page-title.scss new file mode 100644 index 000000000..db843e99c --- /dev/null +++ b/web/themes/custom/votegov/src/sass/components/page-title.scss @@ -0,0 +1,8 @@ +@use "uswds-core" as *; +@use "mixins" as *; + +.page-title { + @include u-margin-top(6); + @include u-maxw('tablet'); + @include narrow-container; +} diff --git a/web/themes/custom/votegov/src/sass/components/sidebar.scss b/web/themes/custom/votegov/src/sass/components/sidebar.scss new file mode 100644 index 000000000..7a62c14d8 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/components/sidebar.scss @@ -0,0 +1,14 @@ +@use "uswds-core" as *; +@use "mixins" as *; + +#sidebar { + @include u-margin-top(6); + @include u-margin-bottom(10); + @include at-media('desktop-lg') { + @include grid-col(2); + } + + @include at-media-max('desktop-lg') { + display: none; + } +} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/_index.scss b/web/themes/custom/votegov/src/sass/drupal-system/_index.scss deleted file mode 100644 index f8be055fc..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/_index.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Add any custom component files here using @forward. -@forward "media"; -@forward "details"; -@forward "form"; -@forward "system"; -@forward "js.module"; -@forward "hidden.module"; - -// ****** Do not write any custom CSS on this file ****** // diff --git a/web/themes/custom/votegov/src/sass/drupal-system/details.scss b/web/themes/custom/votegov/src/sass/drupal-system/details.scss deleted file mode 100644 index cbd26aec3..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/details.scss +++ /dev/null @@ -1,23 +0,0 @@ -// Include core in order to use USWDS mixins etc... -@use "uswds-core" as *; - -details { - @include u-margin-bottom(4); - - > summary { - @include u-bg('info-light'); - cursor: pointer; - @include u-padding(2); - } - - > summary > * { - display: inline; - } - - > div { - @include u-border(2px, "solid", "info-light"); - margin-top: 0; - @include u-padding-x(3); - @include u-padding-y(5); - } -} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/form.scss b/web/themes/custom/votegov/src/sass/drupal-system/form.scss deleted file mode 100644 index ca6832fe6..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/form.scss +++ /dev/null @@ -1,30 +0,0 @@ -// Include core in order to use USWDS mixins etc... -@use "uswds-core" as *; - -.usa-form { - @include at-media("mobile-lg") { - @include u-maxw('tablet') - } -} - -legend, -legend > span, -label, -.usa-label { - @include u-text('primary-dark'); - font-weight: font-weight("bold"); -} - -.usa-fieldset { - @include u-margin-top('105'); -} - -.fieldset__description, -.form-item__description { - @include u-margin-top(1); - @include u-margin-bottom(3); -} - -.is-time { - @include u-padding-top(2); -} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/hidden.module.css b/web/themes/custom/votegov/src/sass/drupal-system/hidden.module.css deleted file mode 100644 index dde917012..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/hidden.module.css +++ /dev/null @@ -1,53 +0,0 @@ -/** - * @file - * Utility classes to hide elements in different ways. - */ - -/** - * Hide elements from all users. - * - * Used for elements which should not be immediately displayed to any user. An - * example would be collapsible details that will be expanded with a click - * from a user. The effect of this class can be toggled with the jQuery show() - * and hide() functions. - */ -.hidden { - display: none; -} - -/** - * Hide elements visually, but keep them available for screen readers. - * - * Used for information required for screen reader users to understand and use - * the site where visual display is undesirable. Information provided in this - * manner should be kept concise, to avoid unnecessary burden on the user. - * "!important" is used to prevent unintentional overrides. - */ -.visually-hidden { - position: absolute !important; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); - width: 1px; - height: 1px; - word-wrap: normal; -} - -/** - * The .focusable class extends the .visually-hidden class to allow - * the element to be focusable when navigated to via the keyboard. - */ -.visually-hidden.focusable:active, -.visually-hidden.focusable:focus { - position: static !important; - overflow: visible; - clip: auto; - width: auto; - height: auto; -} - -/** - * Hide visually and from screen readers, but maintain layout. - */ -.invisible { - visibility: hidden; -} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/js.module.css b/web/themes/custom/votegov/src/sass/drupal-system/js.module.css deleted file mode 100644 index f6c1c01ff..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/js.module.css +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @file - * Utility classes to assist with JavaScript functionality. - */ - -/** - * For anything you want to hide on page load when JS is enabled, so - * that you can use the JS to control visibility and avoid flicker. - */ -.js .js-hide { - display: none; -} - -/** - * For anything you want to show on page load only when JS is enabled. - */ -.js-show { - display: none; -} -.js .js-show { - display: block; -} diff --git a/web/themes/custom/votegov/src/sass/drupal-system/media.scss b/web/themes/custom/votegov/src/sass/drupal-system/media.scss deleted file mode 100644 index cfef467b7..000000000 --- a/web/themes/custom/votegov/src/sass/drupal-system/media.scss +++ /dev/null @@ -1,43 +0,0 @@ -// Include core in order to use USWDS mixins etc... -@use "uswds-core" as *; - -figure { - @include u-margin(0); - @include u-padding(0); -} - -.is-wysiwyg { - - img { - line-height: units(0); - width: 100%; - height: auto; - - @include at-media-max("tablet-lg") { - width: 100%; - height: auto; - } - } - - .align-left { - @include at-media("tablet-lg") { - @include u-margin-right(3); - width: 50%; - } - - @include at-media-max("tablet-lg") { - float: none; - } - } - - .align-right { - @include at-media("tablet-lg") { - @include u-margin-left(3); - width: 50%; - } - - @include at-media-max("tablet-lg") { - float: none; - } - } -} diff --git a/web/themes/custom/votegov/src/sass/mixins/mixins.scss b/web/themes/custom/votegov/src/sass/mixins/mixins.scss index a863d7157..84dbe28ef 100644 --- a/web/themes/custom/votegov/src/sass/mixins/mixins.scss +++ b/web/themes/custom/votegov/src/sass/mixins/mixins.scss @@ -8,3 +8,20 @@ right: 50%; overflow: hidden; } + +@mixin narrow-container() { + @include at-media('tablet') { + @include grid-col(10); + @include grid-offset(1); + } + + @include at-media('tablet-lg') { + @include grid-col(8); + @include grid-offset(2); + } + + @include at-media('desktop-lg') { + @include grid-col(7); + @include grid-offset(3); + } +} diff --git a/web/themes/custom/votegov/src/sass/node/_index.scss b/web/themes/custom/votegov/src/sass/node/_index.scss new file mode 100644 index 000000000..65a2bf5c9 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/node/_index.scss @@ -0,0 +1,11 @@ +@use "uswds-core" as *; + +.node--view-mode-full { + > .field + .field { + @include u-margin-top(5); + } + + .field--name-field-body { + @include u-maxw('tablet'); + } +} diff --git a/web/themes/custom/votegov/src/sass/styles.scss b/web/themes/custom/votegov/src/sass/styles.scss index d588b11ef..02b460e6f 100644 --- a/web/themes/custom/votegov/src/sass/styles.scss +++ b/web/themes/custom/votegov/src/sass/styles.scss @@ -1,13 +1,16 @@ // ****** Do not write any custom CSS on this file ****** // // Theme settings overrides. -@forward "uswds-theme"; +@forward "uswds-settings"; // USWDS individual components // to include everything, just code it as @forward "uswds"; @forward "uswds"; // Custom styles -@forward "uswds-theme-custom-styles"; +@use "uswds-overrides"; +@use "base"; +@use "components"; +@use "node"; // ****** Do not write any custom CSS on this file ****** // diff --git a/web/themes/custom/votegov/src/sass/uswds-overrides/_index.scss b/web/themes/custom/votegov/src/sass/uswds-overrides/_index.scss index 095ce4b2d..f8e7f070b 100644 --- a/web/themes/custom/votegov/src/sass/uswds-overrides/_index.scss +++ b/web/themes/custom/votegov/src/sass/uswds-overrides/_index.scss @@ -1,4 +1,5 @@ // Add any custom component files here using @forward. -// @forward "override-usa-hero"; - -// ****** Do not write any custom CSS on this file ****** // +@forward "usa-breadcrumb"; +@forward "usa-form"; +@forward "usa-legend"; +@forward "usa-label"; diff --git a/web/themes/custom/votegov/src/sass/uswds-overrides/usa-breadcrumb.scss b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-breadcrumb.scss new file mode 100644 index 000000000..0c3557003 --- /dev/null +++ b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-breadcrumb.scss @@ -0,0 +1,10 @@ +@use "uswds-core" as *; +@use "mixins" as *; + +.usa-breadcrumb { + background-color: transparent; + + .page-masthead & { + @include narrow-container; + } +} diff --git a/web/themes/custom/votegov/src/sass/uswds-overrides/usa-form.scss b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-form.scss new file mode 100644 index 000000000..94f98c92a --- /dev/null +++ b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-form.scss @@ -0,0 +1,5 @@ +@use "uswds-core" as *; + +.usa-form { + @include u-maxw('tablet'); +} diff --git a/web/themes/custom/votegov/src/sass/uswds-overrides/usa-label.scss b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-label.scss new file mode 100644 index 000000000..5640f56eb --- /dev/null +++ b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-label.scss @@ -0,0 +1,5 @@ +@use "uswds-core" as *; + +.usa-label { + @include u-text('bold'); +} diff --git a/web/themes/custom/votegov/src/sass/uswds-overrides/usa-legend.scss b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-legend.scss new file mode 100644 index 000000000..3aa19599b --- /dev/null +++ b/web/themes/custom/votegov/src/sass/uswds-overrides/usa-legend.scss @@ -0,0 +1,6 @@ +@use "uswds-core" as *; + +.usa-legend { + @include u-text('bold'); + @include u-font-size('sans', 6); +} diff --git a/web/themes/custom/votegov/templates/block/block--system-branding-block.html.twig b/web/themes/custom/votegov/templates/block/block--system-branding-block.html.twig index 562fd1abb..08a7e925b 100644 --- a/web/themes/custom/votegov/templates/block/block--system-branding-block.html.twig +++ b/web/themes/custom/votegov/templates/block/block--system-branding-block.html.twig @@ -19,7 +19,7 @@ {% if site_name %} {% if site_logo %} - {{ 'Home'|t }} + {{ 'Home'|t }} {% endif %} {{ site_name }} {% endif %} diff --git a/web/themes/custom/votegov/templates/block/block--languageswitcher.html.twig b/web/themes/custom/votegov/templates/block/block--votegov-languageswitcher.html.twig similarity index 96% rename from web/themes/custom/votegov/templates/block/block--languageswitcher.html.twig rename to web/themes/custom/votegov/templates/block/block--votegov-languageswitcher.html.twig index bf7b91e73..6766ccc22 100644 --- a/web/themes/custom/votegov/templates/block/block--languageswitcher.html.twig +++ b/web/themes/custom/votegov/templates/block/block--votegov-languageswitcher.html.twig @@ -25,6 +25,7 @@ * @see template_preprocess_block() */ #} + {% if status_code != 'error' %} {% block content %}
    @@ -36,8 +37,7 @@ - {# Language menu items: - links--language-block.html.twig #} + {# Language menu items: links--language-block.html.twig #} diff --git a/web/themes/custom/votegov/templates/block/block-content--government-banner.html.twig b/web/themes/custom/votegov/templates/block/block-content--government-banner.html.twig index da5eee2ee..660c286c5 100755 --- a/web/themes/custom/votegov/templates/block/block-content--government-banner.html.twig +++ b/web/themes/custom/votegov/templates/block/block-content--government-banner.html.twig @@ -72,5 +72,5 @@
    {# Language selector component #} - {{ drupal_entity('block', 'languageswitcher') }} + {{ drupal_entity('block', 'votegov_languageswitcher') }} diff --git a/web/themes/custom/votegov/templates/component/page-title.html.twig b/web/themes/custom/votegov/templates/component/page-title.html.twig index ecf15c70b..66e016a0f 100644 --- a/web/themes/custom/votegov/templates/component/page-title.html.twig +++ b/web/themes/custom/votegov/templates/component/page-title.html.twig @@ -18,6 +18,8 @@ {{ title_prefix }} {% if title %} - {{ title }} +
    + {{ title }} +
    {% endif %} {{ title_suffix }} diff --git a/web/themes/custom/votegov/templates/layout/elements.html.twig b/web/themes/custom/votegov/templates/layout/elements.html.twig new file mode 100644 index 000000000..bf2f6bb59 --- /dev/null +++ b/web/themes/custom/votegov/templates/layout/elements.html.twig @@ -0,0 +1,378 @@ +
    +

    This is a test page filled with common HTML elements to be used to provide visual feedback whilst building CSS systems and frameworks.

    + +
    +
    +
    +
    Headings
    +
    + +
    +

    Heading 1 (This is a typical heading but we are going to add more text to see how it looks when it's dropped down to two lines)

    + +

    Diamin faucibu ent venenat tdonec morbi sed. Mattiss mauris liquam ipsumin quam daut volutp egesta dui. Nulla dictum cusut sed estsusp roin. Onec roin sedlorem inceptos sce pretium uisque temporse aesent. Enean sduis disse uada portad felisut ris dis nulla turpisf. Leopelle sacras cubilia roin varius portado tincid himenaeo.

    + +

    Heading 2 (This is a typical heading but we are going to add more text to see how it looks when it's dropped down to two lines)

    + +

    Diamin faucibu ent venenat tdonec morbi sed. Mattiss mauris liquam ipsumin quam daut volutp egesta dui. Nulla dictum cusut sed estsusp roin. Onec roin sedlorem inceptos sce pretium uisque temporse aesent. Enean sduis disse uada portad felisut ris dis nulla turpisf. Leopelle sacras cubilia roin varius portado tincid himenaeo.

    + +

    Heading 3 (This is a typical heading but we are going to add more text to see how it looks when it's dropped down to two lines)

    + +

    Purus sodalesm liberos eleifend llam varius viverr antenunc potenti. Culus netus laut maurisd varius tur urient. Magnaqu urnavest aliquama adipisci turpisn sed viverra. Bibendu auris ulla tempusp necinte sit nisi antenull blandi. Dolordo vestib imperdie facili nequesed itur. Adipisci ullam enimsus puruscra aduis usce liberout hac liquam magna. Laciniai nibhcras sque quamnull lum uis oin llus sse uis.

    + +

    Heading 4 (This is a typical heading but we are going to add more text to see how it looks when it's dropped down to two lines)

    + +

    Mollis msed duis nunccras egesta esent rutrum semper lum dolorve. Quam onec nislsed dignis enimphas sed tempor lectusn lobortis. Sed lacusnam aenean facilisi duinulla oin liberom. Orciut inproin anunc que morbi euismo. Vestib llus dolor nean vestibu proin velitsed cursus lobortis. Leoetiam odioin laciniai loremn turpis ies.

    + +
    Heading 5 (This is a typical heading but we are going to add more text to see how it looks when it's dropped down to two lines)
    + +

    Diamin faucibu ent venenat tdonec morbi sed. Mattiss mauris liquam ipsumin quam daut volutp egesta dui. Nulla dictum cusut sed estsusp roin. Onec roin sedlorem inceptos sce pretium uisque temporse aesent. Enean sduis disse uada portad felisut ris dis nulla turpisf. Leopelle sacras cubilia roin varius portado tincid himenaeo.

    +
    + + +
    + +
    +
    +
    Paragraphs
    +
    + +
    +

    A introductory paragraph (from the Greek paragraphos, “to write beside” or “written beside”) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose.

    + +

    A paragraph (from the Greek paragraphos, “to write beside” or “written beside”) is a self-contained unit of a discourse in writing dealing with a particular point or idea. A paragraph consists of one or more sentences. Though not required by the syntax of any language, paragraphs are usually an expected part of formal writing, used to organize longer prose.

    +
    + + +
    + +
    +
    +
    Blockquotes
    +
    + +
    +
    +

    It is typically distinguished visually using indentation and a different typeface or smaller size quotation. It may or may not include a citation, usually placed at the bottom.

    + Said no one, ever. +
    +
    + + +
    + +
    +
    +
    Lists
    +
    + +
    +

    Definition list

    + +
    +
    Definition List Title
    +
    This is a definition list division.
    +
    + +

    Ordered List

    + +
      +
    1. List Item 1
    2. +
    3. List Item 2
    4. +
    5. List Item 3
    6. +
    + +

    Unordered List

    + +
      +
    • List Item 1
    • +
    • List Item 2
    • +
    • List Item 3
    • +
    +
    + + +
    + +
    +
    +
    Horizontal rules
    +
    + +
    +
    +
    + + +
    + +
    +
    +
    Tabular data
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Caption
    Table Heading 1Table Heading 2Table Heading 3Table Heading 4Table Heading 5
    Table Cell 1Table Cell 2Table Cell 3Table Cell 4Table Cell 5
    Table Cell 1Table Cell 2Table Cell 3Table Cell 4Table Cell 5
    Table Cell 1Table Cell 2Table Cell 3Table Cell 4Table Cell 5
    Table Cell 1Table Cell 2Table Cell 3Table Cell 4Table Cell 5
    + + +
    + +
    +
    +
    Inline elements
    +
    + +
    +

    This is a text link.

    + +

    Strong is used to indicate strong importance.

    + +

    This text has added emphasis.

    + +

    The b element is stylistically different text from normal text, without any special importance.

    + +

    The i element is text that is offset from the normal text.

    + +

    The u element is text with an unarticulated, though explicitly rendered, non-textual annotation.

    + +

    This text is deleted and This text is inserted.

    + +

    This text has a strikethrough.

    + +

    Superscript®.

    + +

    Subscript for things like H2O.

    + +

    This small text is small for for fine print, etc.

    + +

    This text is a short inline quotation.

    + +

    This is a citation.

    + +

    The dfn element indicates a definition.

    + +

    The mark element indicates a highlight.

    + +

    The time element:

    +
    + + +
    +
    + +
    +
    +
    +
    Images
    +
    + +
    +

    No <figure> element

    + +

    Image alt text

    + +

    Wrapped in a <figure> element, no <figcaption>

    + +
    Image alt text
    + +

    Wrapped in a <figure> element, with a <figcaption>

    + +
    Image alt text +
    Here is a caption for this image.
    +
    +
    + + +
    + +
    +
    +
    Audio
    +
    + +
    + +
    + + +
    + +
    +
    +
    Video
    +
    + +
    + +
    + + +
    + +
    +
    +
    IFrame video
    +
    + +
    + + +
    +
    + +
    +
    +
    + Input fields + +

    + +

    + +

    + +

    + +

    + +

    + +

    + +

    +
    + +

    [Top]

    + +
    Select menus + +

    +
    + +

    [Top]

    + +
    Checkboxes + +
      +
    • +
    • +
    • +
    +
    + +

    [Top]

    + +
    Radio buttons + +
      +
    • +
    • +
    • +
    +
    + +

    [Top]

    + +
    Textareas + +

    +
    + +

    [Top]

    + +
    HTML5 inputs + +

    + +

    + +

    + +

    + +

    + +

    + +

    +
    + +

    [Top]

    + +
    Action buttons + +

    + +

    + +

    + +

    +
    + +

    [Top]

    +
    +
    +
    diff --git a/web/themes/custom/votegov/templates/layout/page--node--landing.html.twig b/web/themes/custom/votegov/templates/layout/page--node--landing.html.twig index daa3dc518..c1d286991 100644 --- a/web/themes/custom/votegov/templates/layout/page--node--landing.html.twig +++ b/web/themes/custom/votegov/templates/layout/page--node--landing.html.twig @@ -1,9 +1,9 @@ {% extends "page.html.twig" %} {% block main %} - {# admin region. #} - {{ page.admin }} - - {# Main content region. #} - {{ page.content }} +
    + {# link is in html.html.twig #} + + {{ page.content }} +
    {% endblock %} diff --git a/web/themes/custom/votegov/templates/layout/page.html.twig b/web/themes/custom/votegov/templates/layout/page.html.twig index 6e91508c7..052449441 100644 --- a/web/themes/custom/votegov/templates/layout/page.html.twig +++ b/web/themes/custom/votegov/templates/layout/page.html.twig @@ -37,80 +37,89 @@ * @see html.html.twig */ #} +{# Load utility libraries when logged in. #} +{% if logged_in %} + {{ attach_library('bixaluswds/logged-in') }} +{% endif %} -
    - {# Sitewide alert component #} +{# set a variable if the node has a featured image #} +{% set node_image = node.field_media.value %} + +{# Sitewide alert component #} {{ drupal_view('sitewide_alert', 'block_1') }} {# Government banner component #} {{ drupal_entity('block_content', '1') }} -
    -
    -
    -
    - - {# Site branding component #} - {{ drupal_entity('block', 'votegov_sitebranding') }} - - -
    +
    +
    +
    +
    - {# Main navigation component #} - {{ drupal_entity('block', 'votegov_mainnavigation') }} + {# Site branding component #} + {{ drupal_entity('block', 'votegov_sitebranding') }} +
    -
    -
    - {# link is in html.html.twig #} - + {# Main navigation component #} + {{ drupal_entity('block', 'votegov_mainnavigation') }} - {% block main %} -
    - {# admin region. #} - {{ page.admin }} -
    +
    +
    -
    - {# Breadcrumbs component. #} - {{ drupal_entity('block', 'votegov_breadcrumbs') }} +{{ page.admin }} - {# Main content region. #} -
    -
    - {# Page title component #} - {% include '@votegov/component/page-title.html.twig' %} +{% block main %} + {% if page.sidebar %} +
    + {# link is in html.html.twig #} + +
    + {# Breadcrumbs component. #} + {{ drupal_entity('block', 'votegov_breadcrumbs') }} + {# Page title component #} + {% include '@votegov/component/page-title.html.twig' %} +
    +
    + +
    {{ page.content }} -
    - - {# Sidebar region. #} - {% if page.sidebar %} -
    - -
    - {% endif %} + +
    + + {% else %} +
    + {# link is in html.html.twig #} + +
    + {# Breadcrumbs component. #} + {{ drupal_entity('block', 'votegov_breadcrumbs') }} + {# Page title component #} + {% include '@votegov/component/page-title.html.twig' %} +
    +
    + {{ page.content }}
    -
    {# /.layout-content #} - {% endblock %} - + -
    - {# Email sign-up component. #} - {{ drupal_entity('block_content', 4) }} + {% endif %} +{% endblock %} - {% include '@votegov/component/contact-identifier.html.twig' %} +
    + {# Email sign-up component. #} + {{ drupal_entity('block_content', 4) }} - + {% include '@votegov/component/contact-identifier.html.twig' %} - {% include '@votegov/component/footer--secondary-section.html.twig' %} -
    + -
    {# /.layout-container #} + {% include '@votegov/component/footer--secondary-section.html.twig' %} + diff --git a/web/themes/custom/votegov/templates/navigation/breadcrumb.html.twig b/web/themes/custom/votegov/templates/navigation/breadcrumb.html.twig index 7de89f86f..1e574498a 100644 --- a/web/themes/custom/votegov/templates/navigation/breadcrumb.html.twig +++ b/web/themes/custom/votegov/templates/navigation/breadcrumb.html.twig @@ -9,7 +9,7 @@ #} {% if breadcrumb %}