From 6506d7789d73cdf68ada93c3e6dba4997a13c0de Mon Sep 17 00:00:00 2001 From: Volpeon Date: Tue, 3 Feb 2026 16:24:33 +0100 Subject: Avatar: support icon overlay --- src/objects/_avatar.scss | 17 ++++++++++++++++- src_demo/index.scss | 2 +- tpl/objects/avatar.pug | 6 ++++++ tpl/views/avatar.pug | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/objects/_avatar.scss b/src/objects/_avatar.scss index 9d51ffb..ac289e9 100644 --- a/src/objects/_avatar.scss +++ b/src/objects/_avatar.scss @@ -56,7 +56,20 @@ inset-inline-end: 0; } - @include status(vars.$indicator-size); + @include bem.elem('icon') { + position: absolute; + inset-block-end: 0; + inset-inline-end: 0; + display: flex; + align-items: center; + justify-content: center; + inline-size: 40%; + block-size: 40%; + + @include bem.sibling-elem('content') { + clip-path: url('data:image/svg+xml;utf8,#avatar_mask') + } + } @include bem.elem('content') { display: block; @@ -103,6 +116,8 @@ } } + @include status(vars.$indicator-size); + @each $mod, $size, $font-size, $indicator-size in vars.$sizes { @include bem.modifier($mod) { font-size: props.get($font-size); diff --git a/src_demo/index.scss b/src_demo/index.scss index 2ac8e9d..53b01af 100644 --- a/src_demo/index.scss +++ b/src_demo/index.scss @@ -24,6 +24,7 @@ @include iro.o-icon--styles; @include iro.o-alert--styles; +@include iro.o-status-indicator--styles; @include iro.o-avatar--styles; @include iro.o-backdrop--styles; @include iro.o-button--styles; @@ -42,7 +43,6 @@ @include iro.o-popover--styles; @include iro.o-radio--styles; @include iro.o-side-nav--styles; -@include iro.o-status-indicator--styles; @include iro.o-switch--styles; @include iro.o-table--styles; @include iro.o-tabbar--styles; diff --git a/tpl/objects/avatar.pug b/tpl/objects/avatar.pug index ca3de07..d464d93 100644 --- a/tpl/objects/avatar.pug +++ b/tpl/objects/avatar.pug @@ -24,6 +24,9 @@ mixin avatar a(class=classes style=styles href=attributes.href) if attributes.status +status-indicator(attributes.status)(class='o-avatar__status') + if attributes.icon + .o-avatar__icon + +icon(attributes.icon) if attributes.src img.o-avatar__content(src=attributes.src) else @@ -33,6 +36,9 @@ mixin avatar div(class=classes style=styles) if attributes.status +status-indicator(attributes.status)(class='o-avatar__status') + if attributes.icon + .o-avatar__icon + +icon(attributes.icon) if attributes.src img.o-avatar__content(src=attributes.src) else diff --git a/tpl/views/avatar.pug b/tpl/views/avatar.pug index f345098..1c364c8 100644 --- a/tpl/views/avatar.pug +++ b/tpl/views/avatar.pug @@ -8,6 +8,7 @@ mixin view-avatar = 'lp' +avatar(size=size src='avatar.png') +avatar(size=size src='avatar.png' status='red') + +avatar(size=size src='avatar.png' icon='video') each size in ['xs', 'sm', 'md', 'lg', 'xl', 'xxl', 'xxxl'] .c-box(style={ display: 'flex', gap: '.3em' }) @@ -17,3 +18,4 @@ mixin view-avatar = 'lp' +avatar(circle=true size=size src='avatar.png') +avatar(circle=true size=size src='avatar.png' status='red') + +avatar(circle=true size=size src='avatar.png' icon='video') -- cgit v1.2.3-70-g09d2