- Persistent bottom tab bar (Feed · FAB · Account) on all authenticated pages - Upload FAB triggers bottom sheet (Galerie / Kamera) → navigates to composer - Upload page redesigned as full-screen composer with thumbnail strip, textarea, quick-tag chips, sticky submit button; bottom nav suppressed while composing - Slim upload progress bar above bottom nav driven by queue state - Feed: list/grid view toggle; list = chronological full-width FeedListCard; grid = 3-col with search bar, autocomplete from loaded posts, filter chips - Account page: role-gated dashboard links (Host / Admin); Konto section with leave-confirm bottom sheet; no more per-page header nav icons - Host dashboard: back arrow, collapsible sections, 2-col stats, user search - Admin dashboard: back arrow, inner tab bar (Stats/Config/Export/Nutzer), stacked config inputs with sticky save, new Nutzer tab - BottomNav hidden on unauthenticated pages via isAuthenticated store - FeedGrid: threeCol prop; OnboardingGuide upload step updated for FAB - Concept docs added to docs/ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18 lines
435 B
TypeScript
18 lines
435 B
TypeScript
import { writable } from 'svelte/store';
|
|
|
|
export interface PendingFile {
|
|
file: File;
|
|
previewUrl: string; // URL.createObjectURL result — revoke after use
|
|
}
|
|
|
|
export const pendingFiles = writable<PendingFile[]>([]);
|
|
export const pendingCaption = writable('');
|
|
|
|
export function clearPending() {
|
|
pendingFiles.update((files) => {
|
|
for (const f of files) URL.revokeObjectURL(f.previewUrl);
|
|
return [];
|
|
});
|
|
pendingCaption.set('');
|
|
}
|