feat(SPA): profile page, display name and the new account menu
This commit is contained in:
1 parent
55525c06d6
commit
b0f7b7892b
29 files changed
+3166
-469
No files matched your search
@@ -0,0 +1,30 @@
|
||||
import { computed } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useColorMode, type ColorModePreference } from '@/composables/useColorMode'
|
||||
import { accountInitials, accountName } from '@/lib/accountName'
|
||||
|
||||
const PROFILE_PATH = '/profile'
|
||||
|
||||
export const colorModeOptions: { label: string; value: ColorModePreference }[] = [
|
||||
{ label: 'System', value: 'system' },
|
||||
{ label: 'Light', value: 'light' },
|
||||
{ label: 'Dark', value: 'dark' },
|
||||
]
|
||||
|
||||
export function useAccountMenu(account: () => { username: string; displayName?: string }) {
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const colorMode = useColorMode()
|
||||
|
||||
const name = computed(() => accountName(account().username, account().displayName))
|
||||
const initials = computed(() => accountInitials(account().username, account().displayName))
|
||||
const onProfile = computed(() => route.path === PROFILE_PATH)
|
||||
|
||||
function goToProfile() {
|
||||
if (!onProfile.value) {
|
||||
router.push(PROFILE_PATH)
|
||||
}
|
||||
}
|
||||
|
||||
return { colorMode, name, initials, onProfile, goToProfile }
|
||||
}
|
||||
Reference in new issue
Block a user