No volunteer token found in URL.
Check the link you were sent.
{#if error}
{error}
{/if}
{#if conflictShift}
Scheduling Conflict
{conflictShift.name} ({fmt(conflictShift.start_time)}–{fmt(conflictShift.end_time)})
overlaps with:
{#each conflictingShifts as s}
- {s.name} — {fmt(s.start_time)}–{fmt(s.end_time)}
{/each}
You can still sign up — just confirm you're aware of the overlap.
{/if}
{state.volunteer.name}
{state.volunteer.email || ''}
{state.volunteer.is_lead ? ' · Department Lead' : ''}
Token: {token}
{#if state.shifts.length > 0}
My Shifts
{#each groupByDay(state.shifts) as [day, shifts]}
{day}
{#each shifts as s}
{s.name}
{fmt(s.start_time)} – {fmt(s.end_time)}
{/each}
{/each}
{:else}
You haven't signed up for any shifts yet.
{/if}
{#if state.available.length > 0}
Available Shifts
{#each groupByDay(state.available) as [day, shifts]}
{day}
{#each shifts as s}
{@const assigned = isAssigned(s.id)}
{#if !assigned}
{s.name}
{fmt(s.start_time)} – {fmt(s.end_time)}
{#if s.capacity > 0}
{s.capacity} spots
{/if}
{/if}
{/each}
{/each}
{:else if state.shifts.length === 0}
No shifts are currently available in your department.
{/if}