61 lines
2.1 KiB
Vue
61 lines
2.1 KiB
Vue
<script setup lang="ts">
|
|
import { Head, router } from '@inertiajs/vue3';
|
|
import { computed } from 'vue';
|
|
import ManagedUserForm from '@/components/ManagedUserForm.vue';
|
|
import UserAvatar from '@/components/ui/avatar/UserAvatar.vue';
|
|
import { useLocalization } from '@/composables/useLocalization';
|
|
import AppLayout from '@/layouts/AppLayout.vue';
|
|
import { edit, index } from '@/routes/admin/users';
|
|
import type { AdminUserEditPageProps, BreadcrumbItem } from '@/types';
|
|
|
|
const props = defineProps<AdminUserEditPageProps>();
|
|
const { t } = useLocalization();
|
|
const breadcrumbs = computed<BreadcrumbItem[]>(() => [
|
|
{ title: t('adminUsers.title'), href: index() },
|
|
{
|
|
title: t('adminUsers.edit.breadcrumb', { name: props.user.name }),
|
|
href: edit(props.user.id),
|
|
},
|
|
]);
|
|
</script>
|
|
|
|
<template>
|
|
<AppLayout :breadcrumbs="breadcrumbs">
|
|
<Head :title="t('adminUsers.edit.pageTitle', { name: user.name })" />
|
|
|
|
<div
|
|
class="gap-page md:p-page mx-auto flex w-full min-w-0 max-w-4xl flex-1 flex-col p-4"
|
|
>
|
|
<header
|
|
class="flex min-w-0 flex-col gap-4 sm:flex-row sm:items-center"
|
|
>
|
|
<UserAvatar
|
|
:user="user"
|
|
size="xl"
|
|
rounded
|
|
class="ring-border shrink-0 ring-1"
|
|
/>
|
|
<div class="gap-stack grid min-w-0">
|
|
<p class="text-label text-muted-foreground uppercase">
|
|
{{ t('adminUsers.eyebrow') }}
|
|
</p>
|
|
<h1
|
|
class="text-headline-mobile md:text-headline break-words"
|
|
>
|
|
{{ t('adminUsers.edit.title', { name: user.name }) }}
|
|
</h1>
|
|
<p class="text-muted-foreground break-all">
|
|
{{ user.email }}
|
|
</p>
|
|
</div>
|
|
</header>
|
|
|
|
<ManagedUserForm
|
|
mode="edit"
|
|
:user="user"
|
|
@cancel="router.visit(index())"
|
|
/>
|
|
</div>
|
|
</AppLayout>
|
|
</template>
|