feat(dashboard): add MeDto, AdminDto, apiKeys + role/password helpers
Extends api.ts with the Phase 3.5 wire types (InstanceRole, Scope, MeDto, AdminDto, ApiKeyDto, MintApiKey*) and the matching apiKeys namespace. AdminUser in auth.ts now carries instance_role and email, so layout/store consumers see the role without a separate fetch. Adds two tiny lib helpers used by the upcoming profile/users pages: RoleChip.svelte for the colored owner/admin/member pill, and password-gen.ts for crypto.getRandomValues-backed temporary passwords used in user-invite + reset-password reveals. AdminUserRecord stays as a deprecated alias until /admins is retired in a follow-up commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
45
dashboard/src/lib/RoleChip.svelte
Normal file
45
dashboard/src/lib/RoleChip.svelte
Normal file
@@ -0,0 +1,45 @@
|
||||
<script lang="ts">
|
||||
import type { InstanceRole } from '$lib/auth';
|
||||
|
||||
interface Props {
|
||||
role: InstanceRole;
|
||||
size?: 'sm' | 'md';
|
||||
}
|
||||
|
||||
let { role, size = 'md' }: Props = $props();
|
||||
</script>
|
||||
|
||||
<span class="chip chip-{role}" class:sm={size === 'sm'}>{role}</span>
|
||||
|
||||
<style>
|
||||
.chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.15rem 0.55rem;
|
||||
border-radius: 999px;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.chip.sm {
|
||||
font-size: 0.625rem;
|
||||
padding: 0.1rem 0.45rem;
|
||||
}
|
||||
.chip-owner {
|
||||
background: #78350f;
|
||||
color: #fbbf24;
|
||||
border-color: #b45309;
|
||||
}
|
||||
.chip-admin {
|
||||
background: #164e63;
|
||||
color: #67e8f9;
|
||||
border-color: #0e7490;
|
||||
}
|
||||
.chip-member {
|
||||
background: #1e293b;
|
||||
color: #cbd5e1;
|
||||
border-color: #334155;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user