feat: add element_access_denied.svelte; use in badge review page

- New reusable element_access_denied.svelte with title, message, action props
- Badge review page: swap inline 'Access Denied' card with the component
- Project doc: all 6 steps complete, status → Complete
This commit is contained in:
Scott Idem
2026-03-11 17:06:11 -04:00
parent 0c11cfb3e2
commit c73b5a09e4
3 changed files with 44 additions and 17 deletions

View File

@@ -30,6 +30,7 @@
import { ArrowLeft, Check, Link, LoaderCircle, Mail, Printer } from 'lucide-svelte';
import Comp_badge_review_form from '../ae_comp__badge_review_form.svelte';
import Element_access_denied from '$lib/elements/element_access_denied.svelte';
let event_badge_id = $derived(page.params.badge_id);
let event_id = $derived(page.params.event_id);
@@ -315,19 +316,11 @@
{:else if passcode_checked && !passcode_valid}
<!-- Invalid passcode -->
<div class="card p-6 space-y-4 max-w-sm">
<div class="flex items-center gap-2 text-error-500">
<h3 class="text-lg font-semibold">Access Denied</h3>
</div>
<p class="text-sm text-gray-700">{passcode_error}</p>
<button
type="button"
class="btn preset-tonal-surface w-full"
onclick={() => { passcode_checked = false; passcode_error = ''; entered_passcode = ''; }}
>
Try Again
</button>
</div>
<Element_access_denied
message={passcode_error}
action_label="Try Again"
on_action={() => { passcode_checked = false; passcode_error = ''; entered_passcode = ''; }}
/>
{/if}
{:else if is_loading_idb || !event_badge_id}