From 7c65e70c8f526a22a89a87f144f77cddefd86d3c Mon Sep 17 00:00:00 2001 From: unkn0wn Date: Tue, 16 Jun 2026 08:30:29 +0200 Subject: [PATCH] feat: add Avatar component and integrate into index page --- src/components/Avatar/_avatar.scss | 21 ++++++++++++++++++++ src/components/Avatar/avatar.astro | 31 ++++++++++++++++++++++++++++++ src/components/index.ts | 3 ++- src/pages/index.astro | 12 ++++++------ 4 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 src/components/Avatar/_avatar.scss create mode 100644 src/components/Avatar/avatar.astro diff --git a/src/components/Avatar/_avatar.scss b/src/components/Avatar/_avatar.scss new file mode 100644 index 0000000..0ea7c8b --- /dev/null +++ b/src/components/Avatar/_avatar.scss @@ -0,0 +1,21 @@ +@use '../../styles/tokens/typography' as *; + +.avatar { + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + overflow: hidden; + width: 40px; + height: 40px; + &__content { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + @include text-base; + color: var(--nds-color-on-primary); + background-color: var(--nds-disabled); + } +} diff --git a/src/components/Avatar/avatar.astro b/src/components/Avatar/avatar.astro new file mode 100644 index 0000000..224cbcc --- /dev/null +++ b/src/components/Avatar/avatar.astro @@ -0,0 +1,31 @@ +--- +import { ProfileIcon } from '../Icons'; +export interface Props { + type: 'photo' | 'initials'; + name: string; + image?: string; +} +const { type, name, image } = Astro.props; +--- + +
+ {type === 'photo' && image ? ( +
+ {name} + +
+ ) : ( + {name.split(' ').map(word => word[0]).join('').toUpperCase()} + )} +
+ + \ No newline at end of file diff --git a/src/components/index.ts b/src/components/index.ts index f40ded0..32b6eaa 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -12,4 +12,5 @@ export { default as ListItem } from './ListItem/listItem.astro'; export { default as ListItemTitle } from './ListItem/listItemTitle.astro'; export { default as ListItemSubtitle } from './ListItem/listItemSubtitle.astro'; export { default as LoadingBar } from './LoadingBar/loadingBar.astro'; -export { default as NumericStepper } from './numericStepper/numericStepper.astro'; \ No newline at end of file +export { default as NumericStepper } from './numericStepper/numericStepper.astro'; +export { default as Avatar } from './Avatar/avatar.astro'; \ No newline at end of file diff --git a/src/pages/index.astro b/src/pages/index.astro index 1790dfb..c186703 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -12,6 +12,7 @@ import ListItemTitle from '../components/ListItem/listItemTitle.astro'; import ListItemSubtitle from '../components/ListItem/listItemSubtitle.astro'; import LoadingBar from '../components/LoadingBar/loadingBar.astro'; import NumericStepper from '../components/numericStepper/numericStepper.astro'; +import Avatar from '../components/Avatar/avatar.astro'; import { Arrow2Icon, BinIcon, BurgerIcon, CalendarIcon, CheckIcon, CloseIcon, CodeIcon, CubeIcon, DownloadIcon, FilterIcon, HelpIcon, HomeIcon, @@ -27,17 +28,16 @@ const initialChecked = true;

Nova Design System

-

Numeric Stepper

+

Avatar

- + +
-

Loading Bar

+

Numeric Stepper

- - -
+