diff --git a/tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/link_columns_block.html b/tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/link_columns_block.html index 68e5b3063..0edae9aff 100644 --- a/tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/link_columns_block.html +++ b/tbx/project_styleguide/templates/patterns/molecules/streamfield/blocks/link_columns_block.html @@ -1,16 +1,16 @@ {% load wagtailcore_tags wagtailimages_tags %} -
- {# Section heading #} -

{{ value.title }}

+ +
+

Link columns block

+ {% include "patterns/molecules/streamfield/blocks/link_columns_block.html" %} +
+

Division signpost block

{% include "patterns/molecules/streamfield/blocks/division_signpost_block.html" %} diff --git a/tbx/static_src/sass/components/_grid.scss b/tbx/static_src/sass/components/_grid.scss index 7b8e586b1..814938119 100644 --- a/tbx/static_src/sass/components/_grid.scss +++ b/tbx/static_src/sass/components/_grid.scss @@ -101,7 +101,8 @@ } &__related-posts-simple, - &__team-listing { + &__team-listing, + &__link-columns { grid-column: 2 / span 4; @include media-query(large) { diff --git a/tbx/static_src/sass/components/_link-columns.scss b/tbx/static_src/sass/components/_link-columns.scss new file mode 100644 index 000000000..c9ca043b5 --- /dev/null +++ b/tbx/static_src/sass/components/_link-columns.scss @@ -0,0 +1,58 @@ +@use 'config' as *; + +.link-columns { + &__header { + margin-bottom: $spacer-half; + } + + &__links { + display: grid; + grid-template-columns: 1fr; + column-gap: $spacer-half; + + @include media-query(medium) { + grid-template-columns: repeat(2, 1fr); + } + + @include media-query(large) { + grid-template-columns: repeat(3, 1fr); + } + } + + &__item { + padding: $spacer-mini-plus 0; + border-top: 1px solid var(--color--border); + } + + &__link { + @include font-size(size-six); + color: var(--color--white); + + &:hover { + transition: color $transition-quick; + color: var(--color--theme-primary); + + @include reduced-motion() { + transition: none; + } + } + + @include high-contrast-mode() { + text-decoration: underline; + } + } + + &__tail { + // Keep the arrow attached to the last word so it's not orphaned on a new line + white-space: nowrap; + display: inline; + } + + &__arrow { + @include arrow-link-icon-styles( + $width: 18px, + $interaction-color: var(--color--theme-primary) + ); + color: var(--color--theme-primary); + } +} diff --git a/tbx/static_src/sass/config/_mixins.scss b/tbx/static_src/sass/config/_mixins.scss index b786da6d4..ee3600ff5 100755 --- a/tbx/static_src/sass/config/_mixins.scss +++ b/tbx/static_src/sass/config/_mixins.scss @@ -185,13 +185,15 @@ @mixin arrow-link-icon-styles( $mobile-hidden: false, $color: var(--color--decoration), - $interaction-color: var(--color--link-interaction) + $interaction-color: var(--color--link-interaction), + $width: 72px, + $height: 22px ) { // Apply all common styles regardless of mobile-hidden display: inline-block; color: $color; - width: 72px; - height: 22px; + width: $width; + height: $height; transition: transform, $transition-quick; @include reduced-motion() { diff --git a/tbx/static_src/sass/main.scss b/tbx/static_src/sass/main.scss index 6e12c478f..e355ed5a8 100755 --- a/tbx/static_src/sass/main.scss +++ b/tbx/static_src/sass/main.scss @@ -33,6 +33,7 @@ @use 'components/image'; @use 'components/instagram-gallery'; @use 'components/intro-with-images'; +@use 'components/link-columns'; @use 'components/link'; @use 'components/listing'; @use 'components/listing-avatar';