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) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-23 21:06:58 +01:00
parent 534b55b566
commit 436e92c560
6 changed files with 15 additions and 0 deletions

View file

@ -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}

View file

@ -473,6 +473,7 @@
searchingText="Suche..."
createText="Erstellen"
appIcon="calendar"
locale={$locale || 'de'}
defaultOptions={calendarOptions}
selectedDefaultId={selectedDefaultCalendarId}
defaultOptionLabel="Standard-Kalender"

View file

@ -149,6 +149,7 @@
placeholder={$_('search.placeholder')}
emptyText={$_('search.noResults')}
searchingText={$_('search.searching')}
locale={$locale || 'de'}
appIcon="mappin"
bottomOffset={inputBarBottomOffset}
hasFabRight={true}

View file

@ -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}

View file

@ -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'}
/>

View file

@ -273,6 +273,8 @@
emptyText={$_('search.noResults')}
searchingText={$_('search.searching')}
createText={$_('search.create')}
deferSearch={true}
locale={$locale || 'de'}
appIcon="quote"
bottomOffset={inputBarBottomOffset}
hasFabRight={true}