Shared (src/lib/components/user/): - UserProfileSection.svelte: name/birth-date/email/contact fields - UserGroupsSection.svelte: group checkboxes - UserPasswordSection.svelte: new/confirm password fields Page-local: - admin/users/new/AccountSection.svelte: username + initial password admin/users/[id] drops from 224 → ~35 lines. admin/users/new drops from 191 → ~30 lines. Date utilities imported from \$lib/utils/date. Part of #75 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
32 lines
938 B
Svelte
32 lines
938 B
Svelte
<script lang="ts">
|
|
import { m } from '$lib/paraglide/messages.js';
|
|
|
|
let { required = false }: { required?: boolean } = $props();
|
|
</script>
|
|
|
|
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
|
|
<label class="block">
|
|
<span class="mb-1 block font-sans text-xs font-bold tracking-widest text-ink-3 uppercase">
|
|
{m.profile_label_new_password()}
|
|
</span>
|
|
<input
|
|
type="password"
|
|
name="newPassword"
|
|
required={required}
|
|
class="w-full rounded-sm border border-line px-3 py-2 font-serif text-sm focus:border-ink focus:outline-none"
|
|
/>
|
|
</label>
|
|
|
|
<label class="block">
|
|
<span class="mb-1 block font-sans text-xs font-bold tracking-widest text-ink-3 uppercase">
|
|
{m.profile_label_new_password_confirm()}
|
|
</span>
|
|
<input
|
|
type="password"
|
|
name="confirmPassword"
|
|
required={required}
|
|
class="w-full rounded-sm border border-line px-3 py-2 font-serif text-sm focus:border-ink focus:outline-none"
|
|
/>
|
|
</label>
|
|
</div>
|