From e3d34a6d6ce2db04c3c898ad6a4687a0c59df996 Mon Sep 17 00:00:00 2001 From: Volpeon Date: Fri, 18 Oct 2024 19:07:42 +0200 Subject: Update --- src/objects/_avatar.scss | 131 +++++++++++++++-------------------------------- 1 file changed, 41 insertions(+), 90 deletions(-) (limited to 'src/objects/_avatar.scss') diff --git a/src/objects/_avatar.scss b/src/objects/_avatar.scss index d9c1105..45567b9 100644 --- a/src/objects/_avatar.scss +++ b/src/objects/_avatar.scss @@ -1,101 +1,52 @@ -@use 'sass:list'; +@use 'sass:meta'; @use 'iro-sass/src/iro-sass' as iro; -@use '../functions' as fn; +@use '../props'; -$sizes: 'xs' 'sm' 'lg' 'xl' 'xxl' 'xxxl'; +@forward 'avatar.vars'; +@use 'avatar.vars' as vars; -@mixin status($size: ()) { +@mixin status($indicator-size) { @include iro.bem-elem('status') { - inline-size: fn.dim(list.join($size, --indicator-size)); - block-size: fn.dim(list.join($size, --indicator-size)); + inline-size: props.get($indicator-size); + block-size: props.get($indicator-size); @include iro.bem-next-elem('content') { - mask-image: radial-gradient(circle calc(.5 * fn.dim(list.join($size, --indicator-size)) + fn.dim(--indicator-spacing)) at - calc(100% - .5 * fn.dim(list.join($size, --indicator-size))) - calc(100% - .5 * fn.dim(list.join($size, --indicator-size))), - transparent 95%, - #fff); + mask-image: radial-gradient(circle calc(.5 * props.get($indicator-size) + props.get(vars.$indicator-spacing)) at + calc(100% - .5 * props.get($indicator-size)) + calc(100% - .5 * props.get($indicator-size)), + transparent 95%, + #fff); } } } -@include iro.props-namespace('avatar') { - @include iro.props-store(( - --dims: ( - --size: fn.global-dim(--size --500), - --font-size: fn.global-dim(--font-size --100), - --indicator-size: fn.global-dim(--size --150), - --indicator-spacing: fn.global-dim(--size --40), - --rounding: 25%, +@mixin styles { + @include props.materialize(meta.module-variables('vars')); - --xxxl: ( - --size: fn.global-dim(--size --1600), - --font-size: fn.global-dim(--font-size --800), - --indicator-size: fn.global-dim(--size --400), - ), - --xxl: ( - --size: fn.global-dim(--size --1200), - --font-size: fn.global-dim(--font-size --600), - --indicator-size: fn.global-dim(--size --300), - ), - --xl: ( - --size: fn.global-dim(--size --800), - --font-size: fn.global-dim(--font-size --300), - --indicator-size: fn.global-dim(--size --225), - ), - --lg: ( - --size: fn.global-dim(--size --650), - --font-size: fn.global-dim(--font-size --200), - --indicator-size: fn.global-dim(--size --175), - ), - --sm: ( - --size: fn.global-dim(--size --375), - --font-size: fn.global-dim(--font-size --75), - --indicator-size: fn.global-dim(--size --125), - ), - --xs: ( - --size: fn.global-dim(--size --250), - --font-size: fn.global-dim(--font-size --50), - --indicator-size: fn.global-dim(--size --100), - ), - - --key-focus: ( - --border: fn.global-dim(--key-focus --border), - --border-offset: fn.global-dim(--key-focus --border-offset), - --outline: fn.global-dim(--key-focus --outline), - ), - ), - --colors: ( - --h: 354, - --s: 44%, - --l: 45%, - - --key-focus: ( - --border: fn.global-color(--focus --border), - --outline: fn.global-color(--focus --outline), - ), - ), - )); - - @include iro.bem-object(iro.props-namespace()) { + @include iro.bem-object('avatar') { position: relative; display: inline-block; - font-size: fn.dim(--font-size); + font-size: props.get(vars.$font-size); font-style: normal; vertical-align: .05em; - border-radius: fn.dim(--rounding); + border-radius: props.get(vars.$rounding); &::after { position: absolute; - inset: calc(-1 * fn.dim(--key-focus --border-offset)); + inset: calc(-1 * props.get(vars.$key-focus--border-offset)); z-index: 1; display: none; pointer-events: none; content: ''; - border: fn.dim(--key-focus --border-offset) solid transparent; - border-radius: fn.dim(--rounding); - outline: fn.color(--key-focus --border) solid fn.dim(--key-focus --border); - box-shadow: 0 0 0 calc(fn.dim(--key-focus --border) + fn.dim(--key-focus --outline)) fn.color(--key-focus --outline); + border: props.get(vars.$key-focus--border-offset) solid transparent; + border-radius: props.get(vars.$rounding); + outline: props.get(vars.$key-focus--border-color) solid props.get(vars.$key-focus--border-width); + box-shadow: + 0 + 0 + 0 + calc(props.get(vars.$key-focus--border-width) + props.get(vars.$key-focus--outline-width)) + props.get(vars.$key-focus--outline-color); } @include iro.bem-elem('status') { @@ -104,17 +55,17 @@ $sizes: 'xs' 'sm' 'lg' 'xl' 'xxl' 'xxxl'; inset-inline-end: 0; } - @include status; + @include status(vars.$indicator-size); @include iro.bem-elem('content') { display: block; - inline-size: fn.dim(--size); - block-size: fn.dim(--size); - line-height: fn.dim(--size); + inline-size: props.get(vars.$size); + block-size: props.get(vars.$size); + line-height: props.get(vars.$size); text-align: center; object-fit: cover; object-position: center center; - border-radius: fn.dim(--rounding); + border-radius: props.get(vars.$rounding); } @include iro.bem-modifier('circle') { @@ -131,27 +82,27 @@ $sizes: 'xs' 'sm' 'lg' 'xl' 'xxl' 'xxxl'; @include iro.bem-modifier('placeholder') { @include iro.bem-elem('content') { - background-color: hsl(0, 0%, fn.color(--l)); + background-color: hsl(0, 0%, props.get(vars.$bg-color--l)); } } @include iro.bem-modifier('colored') { @include iro.bem-elem('content') { color: #fff; - background-color: hsl(fn.color(--h), fn.color(--s), fn.color(--l)); + background-color: hsl(props.get(vars.$bg-color--h), props.get(vars.$bg-color--s), props.get(vars.$bg-color--l)); } } - @each $size in $sizes { - @include iro.bem-modifier($size) { - font-size: fn.dim(--#{$size} --font-size); + @each $mod, $size, $font-size, $indicator-size in vars.$sizes { + @include iro.bem-modifier($mod) { + font-size: props.get($font-size); - @include status(--#{$size}); + @include status($indicator-size); @include iro.bem-elem('content') { - inline-size: fn.dim(--#{$size} --size); - block-size: fn.dim(--#{$size} --size); - line-height: fn.dim(--#{$size} --size); + inline-size: props.get($size); + block-size: props.get($size); + line-height: props.get($size); } } } -- cgit v1.3.1