From 436e92c560ea5d25a2298dbff6657ee113bb7fb0 Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 23 Mar 2026 21:06:58 +0100 Subject: [PATCH] feat: unify QuickInputBar across all apps with locale + deferSearch - Add `locale` prop to all 6 apps using QuickInputBar (todo, contacts, zitare, citycorners, questions, calendar) - Enable `deferSearch` on apps with create flow (contacts, zitare, questions) to match todo behavior - Pass locale through Calendar's UnifiedBar wrapper - Questions: default to 'en' locale (English-first app) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../apps/web/src/lib/components/calendar/UnifiedBar.svelte | 4 ++++ apps/calendar/apps/web/src/routes/(app)/+layout.svelte | 1 + apps/citycorners/apps/web/src/routes/(app)/+layout.svelte | 1 + apps/contacts/apps/web/src/routes/(app)/+layout.svelte | 3 +++ apps/questions/apps/web/src/routes/(app)/+layout.svelte | 4 ++++ apps/zitare/apps/web/src/routes/(app)/+layout.svelte | 2 ++ 6 files changed, 15 insertions(+) diff --git a/apps/calendar/apps/web/src/lib/components/calendar/UnifiedBar.svelte b/apps/calendar/apps/web/src/lib/components/calendar/UnifiedBar.svelte index 353939d38..c15708973 100644 --- a/apps/calendar/apps/web/src/lib/components/calendar/UnifiedBar.svelte +++ b/apps/calendar/apps/web/src/lib/components/calendar/UnifiedBar.svelte @@ -32,6 +32,8 @@ isMobile?: boolean; /** Hide the entire bar (e.g. immersive mode) */ hidden?: boolean; + /** Locale for syntax highlighting (e.g., 'de', 'en') */ + locale?: string; } let { @@ -53,6 +55,7 @@ showCalendarLayers = false, isMobile = false, hidden = false, + locale = 'de', }: Props = $props(); const flyConfig = { duration: 250, easing: quintOut, y: 40 }; @@ -141,6 +144,7 @@ {searchingText} {createText} {appIcon} + {locale} bottomOffset="0px" hasFabRight={showCalendarLayers} {defaultOptions} diff --git a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte index 206415781..d2d0ccbfe 100644 --- a/apps/calendar/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/calendar/apps/web/src/routes/(app)/+layout.svelte @@ -473,6 +473,7 @@ searchingText="Suche..." createText="Erstellen" appIcon="calendar" + locale={$locale || 'de'} defaultOptions={calendarOptions} selectedDefaultId={selectedDefaultCalendarId} defaultOptionLabel="Standard-Kalender" diff --git a/apps/citycorners/apps/web/src/routes/(app)/+layout.svelte b/apps/citycorners/apps/web/src/routes/(app)/+layout.svelte index 5c961f69d..cb32b1a52 100644 --- a/apps/citycorners/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/citycorners/apps/web/src/routes/(app)/+layout.svelte @@ -149,6 +149,7 @@ placeholder={$_('search.placeholder')} emptyText={$_('search.noResults')} searchingText={$_('search.searching')} + locale={$locale || 'de'} appIcon="mappin" bottomOffset={inputBarBottomOffset} hasFabRight={true} diff --git a/apps/contacts/apps/web/src/routes/(app)/+layout.svelte b/apps/contacts/apps/web/src/routes/(app)/+layout.svelte index a193f6539..464da1657 100644 --- a/apps/contacts/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/contacts/apps/web/src/routes/(app)/+layout.svelte @@ -347,9 +347,12 @@ placeholder="Neuer Kontakt oder suchen..." emptyText="Keine Kontakte gefunden" searchingText="Suche..." + searchText="Suchen" onCreate={handleCreate} onParseCreate={handleParseCreate} createText="Erstellen" + deferSearch={true} + locale={$locale || 'de'} appIcon="contacts" bottomOffset={inputBarBottomOffset} hasFabRight={showContactsToolbar} diff --git a/apps/questions/apps/web/src/routes/(app)/+layout.svelte b/apps/questions/apps/web/src/routes/(app)/+layout.svelte index a9c482a7c..946aa1816 100644 --- a/apps/questions/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/questions/apps/web/src/routes/(app)/+layout.svelte @@ -3,6 +3,7 @@ import { goto } from '$app/navigation'; import { page } from '$app/stores'; import { browser } from '$app/environment'; + import { locale } from 'svelte-i18n'; import { authStore, collectionsStore, questionsStore } from '$lib/stores'; import { apiClient } from '$lib/api/client'; import { questionsApi } from '$lib/api/questions'; @@ -212,9 +213,12 @@ placeholder="New question or search..." emptyText="No questions found" searchingText="Searching..." + searchText="Search" onCreate={handleCreate} onParseCreate={handleParseCreate} createText="Create" + deferSearch={true} + locale={$locale || 'en'} appIcon="help-circle" bottomOffset={isMobile ? '70px' : '70px'} /> diff --git a/apps/zitare/apps/web/src/routes/(app)/+layout.svelte b/apps/zitare/apps/web/src/routes/(app)/+layout.svelte index 1cd4f6f19..57677ecd3 100644 --- a/apps/zitare/apps/web/src/routes/(app)/+layout.svelte +++ b/apps/zitare/apps/web/src/routes/(app)/+layout.svelte @@ -273,6 +273,8 @@ emptyText={$_('search.noResults')} searchingText={$_('search.searching')} createText={$_('search.create')} + deferSearch={true} + locale={$locale || 'de'} appIcon="quote" bottomOffset={inputBarBottomOffset} hasFabRight={true}