From 8106d289c2429ac7f7e176f8c4d6ac71e4fb8d6b Mon Sep 17 00:00:00 2001 From: Volpeon Date: Mon, 8 Jun 2026 17:34:18 +0200 Subject: card-list: add masonry-h variations --- src/layouts/_card-list.scss | 40 +++++++++++++++++++++------------------- src/layouts/_card-list.vars.scss | 20 +++++++++++++++----- 2 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/layouts/_card-list.scss b/src/layouts/_card-list.scss index 8f03c09..d612676 100644 --- a/src/layouts/_card-list.scss +++ b/src/layouts/_card-list.scss @@ -191,30 +191,32 @@ } } - @include bem.modifier('masonry-h') { - flex-flow: row wrap; - gap: props.get(vars.$masonry-h--row-gap) props.get(vars.$masonry-h--col-gap); + @each $mod, $row-gap, $col-gap, $row-height, $quiet--row-gap in vars.$masonry-h-layouts { + @include bem.modifier($mod) { + flex-flow: row wrap; + gap: props.get($row-gap) props.get($col-gap); - @include bem.modifier('no-flush') { - &::after { - display: block; - flex: 1 0 auto; - inline-size: props.get(vars.$masonry-h--row-height); - content: ''; + @include bem.modifier('no-flush') { + &::after { + display: block; + flex: 1 0 auto; + inline-size: props.get($row-height); + content: ''; + } } - } - @include bem.elem('card') { - flex: 1 0 auto; - max-inline-size: 100%; - } + @include bem.elem('card') { + flex: 1 0 auto; + max-inline-size: 100%; + } - @include bem.elem('card-image') { - block-size: props.get(vars.$masonry-h--row-height); - } + @include bem.elem('card-image') { + block-size: props.get($row-height); + } - @include bem.modifier('quiet') { - row-gap: props.get(vars.$masonry-h--quiet--row-gap); + @include bem.modifier('quiet') { + row-gap: props.get($quiet--row-gap); + } } } diff --git a/src/layouts/_card-list.vars.scss b/src/layouts/_card-list.vars.scss index ae57744..6035956 100644 --- a/src/layouts/_card-list.vars.scss +++ b/src/layouts/_card-list.vars.scss @@ -32,16 +32,26 @@ $flex-layouts: ( 'flex-xs' $grid-xs--row-gap $grid-xs--col-gap $grid-xs--col-width $grid-xs--quiet--row-gap xs, ) !default; -$masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default; -$masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default; -$masonry--col-width: props.def(--l-card-list--masonry--col-width, props.get(core.$size--3200)) !default; -$masonry--quiet--row-gap: props.def(--l-card-list--masonry--quiet--row-gap, props.get(core.$size--800)) !default; - $masonry-h--row-gap: props.def(--l-card-list--masonry-h--row-gap, props.get(core.$size--400)) !default; $masonry-h--col-gap: props.def(--l-card-list--masonry-h--col-gap, props.get(core.$size--400)) !default; $masonry-h--row-height: props.def(--l-card-list--masonry-h--row-height, props.get(core.$size--3200)) !default; $masonry-h--quiet--row-gap: props.def(--l-card-list--masonry-h--quiet--row-gap, props.get(core.$size--800)) !default; +$masonry-h-sm--row-gap: props.def(--l-card-list--masonry-h-sm--row-gap, props.get(core.$size--400)) !default; +$masonry-h-sm--col-gap: props.def(--l-card-list--masonry-h-sm--col-gap, props.get(core.$size--400)) !default; +$masonry-h-sm--row-height: props.def(--l-card-list--masonry-h-sm--row-height, props.get(core.$size--2600)) !default; +$masonry-h-sm--quiet--row-gap: props.def(--l-card-list--masonry-h-sm--quiet--row-gap, props.get(core.$size--800)) !default; + +$masonry-h-layouts: ( + 'masonry-h' $masonry-h--row-gap $masonry-h--col-gap $masonry-h--row-height $masonry-h--quiet--row-gap, + 'masonry-h-sm' $masonry-h-sm--row-gap $masonry-h-sm--col-gap $masonry-h-sm--row-height $masonry-h-sm--quiet--row-gap, +) !default; + +$masonry--row-gap: props.def(--l-card-list--masonry--row-gap, props.get(core.$size--400)) !default; +$masonry--col-gap: props.def(--l-card-list--masonry--col-gap, props.get(core.$size--400)) !default; +$masonry--col-width: props.def(--l-card-list--masonry--col-width, props.get(core.$size--3200)) !default; +$masonry--quiet--row-gap: props.def(--l-card-list--masonry--quiet--row-gap, props.get(core.$size--800)) !default; + $shadow-x: props.def(--l-card-list--shadow-x, props.get(card.$shadow-x)) !default; $shadow-y: props.def(--l-card-list--shadow-y, props.get(card.$shadow-y)) !default; $shadow-blur: props.def(--l-card-list--shadow-blur, props.get(card.$shadow-blur)) !default; -- cgit v1.3.1