From 40db92d9d5f9a862bbc1c9bc9eb5a772b40a0003 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 2 Jan 2026 22:24:20 +0100 Subject: [PATCH] feat(front-hall): implement three-mode layout with quick links panel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 2 of Organizr Migration - Front Hall restructure: - Add FrontHallState provider with three modes (dashboard, iframe, settings) - Create QuickLinksPanel widget with categorized links and overflow menus - Add IframeView with platform-aware implementation (web iframe, mobile fallback) - Extract DashboardContent from FrontHallPage - Add QuickLinkSettingsContent placeholder for Phase 4 link editor - Implement QuickLink entity and data layer with Core API datasource - Add default quick links fallback when API unavailable - Update UI_LAYOUT.md with Front Hall panel configurations ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- docs/UI_LAYOUT.md | 76 ++- .../datasources/quick_links_datasource.dart | 93 ++++ .../data/models/quick_link_model.dart | 61 +++ .../domain/entities/quick_link.dart | 53 ++ .../presentation/pages/front_hall_page.dart | 180 ++----- .../providers/front_hall_state_provider.dart | 82 +++ .../providers/quick_links_provider.dart | 192 +++++++ .../widgets/dashboard_content.dart | 144 +++++ .../presentation/widgets/iframe_view.dart | 4 + .../widgets/iframe_view_stub.dart | 83 +++ .../presentation/widgets/iframe_view_web.dart | 144 +++++ .../widgets/quick_link_settings_content.dart | 207 +++++++ .../widgets/quick_links_panel.dart | 507 ++++++++++++++++++ 13 files changed, 1693 insertions(+), 133 deletions(-) create mode 100644 lib/features/front_hall/data/datasources/quick_links_datasource.dart create mode 100644 lib/features/front_hall/data/models/quick_link_model.dart create mode 100644 lib/features/front_hall/domain/entities/quick_link.dart create mode 100644 lib/features/front_hall/presentation/providers/front_hall_state_provider.dart create mode 100644 lib/features/front_hall/presentation/providers/quick_links_provider.dart create mode 100644 lib/features/front_hall/presentation/widgets/dashboard_content.dart create mode 100644 lib/features/front_hall/presentation/widgets/iframe_view.dart create mode 100644 lib/features/front_hall/presentation/widgets/iframe_view_stub.dart create mode 100644 lib/features/front_hall/presentation/widgets/iframe_view_web.dart create mode 100644 lib/features/front_hall/presentation/widgets/quick_link_settings_content.dart create mode 100644 lib/features/front_hall/presentation/widgets/quick_links_panel.dart diff --git a/docs/UI_LAYOUT.md b/docs/UI_LAYOUT.md index 5a5ff16..eb47957 100644 --- a/docs/UI_LAYOUT.md +++ b/docs/UI_LAYOUT.md @@ -191,13 +191,81 @@ The NavPanel widget receives items and auto-generates section headers based on u ## Panel Configurations by Room ### Front Hall + +Front Hall uses a **three-mode content system** with a persistent QuickLinks panel: + +| Mode | QuickLinks Panel | Content Area | +|------|------------------|--------------| +| **Dashboard** | Normal navigation | Dashboard widgets (stats, weather) | +| **Iframe** | Normal navigation | Embedded iframe content | +| **Settings** | Edit mode (back button, add new, overflow menus) | QuickLinkPage (EntityPageScaffold) | + +#### Dashboard Mode (default) ``` -โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” -โ”‚ PRIMARY CONTENT (no nav panel) โ”‚ CHAT DOCK โ”‚ -โ”‚ Dashboard cards, activity feed โ”‚ (expanded) โ”‚ -โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ QUICK LINKS โ”‚ PRIMARY CONTENT โ”‚ CHAT DOCK โ”‚ +โ”‚ โ”‚ โ”‚ (expanded) โ”‚ +โ”‚ โ–ŒHOME โ”‚ SYSTEM STATS โ”‚ โ”‚ +โ”‚ Jellyfin โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ WebUI โ”‚ โ”‚ CPU โ”‚ โ”‚ MEM โ”‚ โ”‚ DISK โ”‚ โ”‚ NET โ”‚ โ”‚ โ”‚ +โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ–ŒAMP โ”‚ โ”‚ โ”‚ +โ”‚ AMP Home โ”‚ WEATHER AIR QUALITY โ”‚ โ”‚ +โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ +โ”‚ โ–ŒINFRA โ”‚ โ”‚ 72ยฐF Sunny โ”‚ โ”‚ AQI: 42 Good โ”‚ โ”‚ โ”‚ +โ”‚ Netdata โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ [โš™ Settings] โ”‚ โ”‚ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` +#### Iframe Mode +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ QUICK LINKS โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ CHAT DOCK โ”‚ +โ”‚ โ”‚ โ”‚ Jellyfin [โ†—] [โŸณ] [โœ•] โ”‚ โ”‚ (collapsed)โ”‚ +โ”‚ โ–ŒHOME โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ โ”‚ +โ”‚ โ–ธJellyfin โ”‚ โ”‚ โ”‚ โ”‚ โ”‚ +โ”‚ WebUI โ”‚ โ”‚