diff --git a/packages/components/src/components.ts b/packages/components/src/components.ts
index 7973e355..3d3ba409 100644
--- a/packages/components/src/components.ts
+++ b/packages/components/src/components.ts
@@ -1,3 +1,4 @@
+export * from "./components/avatar";
export * from "./components/alert";
export * from "./components/button";
export * from "./components/card";
diff --git a/packages/components/src/components/avatar/Avatar.story.vue b/packages/components/src/components/avatar/Avatar.story.vue
new file mode 100644
index 00000000..6b61fe3d
--- /dev/null
+++ b/packages/components/src/components/avatar/Avatar.story.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/packages/components/src/components/avatar/Avatar.vue b/packages/components/src/components/avatar/Avatar.vue
new file mode 100644
index 00000000..9439dbd3
--- /dev/null
+++ b/packages/components/src/components/avatar/Avatar.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
![]()
+
+
+
+
diff --git a/packages/components/src/components/avatar/index.ts b/packages/components/src/components/avatar/index.ts
new file mode 100644
index 00000000..022733a5
--- /dev/null
+++ b/packages/components/src/components/avatar/index.ts
@@ -0,0 +1 @@
+export { default as VAvatar } from "./Avatar.vue";
diff --git a/packages/components/src/components/avatar/interface.ts b/packages/components/src/components/avatar/interface.ts
new file mode 100644
index 00000000..b14de4e3
--- /dev/null
+++ b/packages/components/src/components/avatar/interface.ts
@@ -0,0 +1 @@
+export type Size = "lg" | "md" | "sm" | "xs";
diff --git a/packages/components/src/icons/icons.ts b/packages/components/src/icons/icons.ts
index 31817670..49c830f6 100644
--- a/packages/components/src/icons/icons.ts
+++ b/packages/components/src/icons/icons.ts
@@ -46,6 +46,7 @@ import IconTeam from "~icons/ri/team-fill";
import IconCharacterRecognition from "~icons/ri/character-recognition-line";
import IconCalendar from "~icons/ri/calendar-line";
import IconLink from "~icons/ri/link";
+import IconUserLine from "~icons/ri/user-line";
export {
IconDashboard,
@@ -96,4 +97,5 @@ export {
IconCharacterRecognition,
IconCalendar,
IconLink,
+ IconUserLine,
};
diff --git a/packages/shared/src/layouts/BasicLayout.vue b/packages/shared/src/layouts/BasicLayout.vue
index 74e4c88c..4d0c9d00 100644
--- a/packages/shared/src/layouts/BasicLayout.vue
+++ b/packages/shared/src/layouts/BasicLayout.vue
@@ -7,6 +7,7 @@ import {
VModal,
VRoutesMenu,
VTag,
+ VAvatar,
} from "@halo-dev/components";
import type { MenuGroupType, MenuItemType } from "../types/menus";
import type { User } from "@halo-dev/api-client";
@@ -59,7 +60,12 @@ const currentRole = computed(() => {
-
![]()
+
@@ -204,7 +210,8 @@ const currentRole = computed(() => {
.profile-avatar {
@apply self-center
- flex;
+ flex
+ items-center;
}
.profile-name {
diff --git a/src/components/dropdown-selector/UserDropdownSelector.vue b/src/components/dropdown-selector/UserDropdownSelector.vue
index fc21ee9e..619d67eb 100644
--- a/src/components/dropdown-selector/UserDropdownSelector.vue
+++ b/src/components/dropdown-selector/UserDropdownSelector.vue
@@ -1,7 +1,7 @@