{useLocation().pathname}
+} + +// renderPage loads /me (for the CSRF token every write needs) and renders +// the page at /settings/ai in a data router, so its leave guard works. +async function renderPage() { + const api = createApiClient(fakeLocation('/settings/ai'), createNetworkStatus(window), createVerifiedSession(localStorage)) + await api.loadMe() + render( +Settings · Admin
++ The key was not stored: {store.error.message} +
+ ) + + if (last4 === null && aiKeyPolicy[draftProvider] === 'none') { + return ( +{aiProviderLabels[draftProvider]} takes no API key.
+ {!replacing && storeError} +Save the provider change before adding its key.
+ )} + {!replacing && storeError} +Verifying…
+ if (verify.isError) { + return ( ++ {verifyErrorMessage(verify.error)} +
+Verified · {formatVerifiedDate(saved.key_verified_at)}
+ } + return ( +Not verified yet
+{useLocation().pathname}
+} + +// renderPage loads /me (for the CSRF token every write needs) and renders +// the page at /settings/household in a data router, so its leave guard works. +async function renderPage() { + const api = createApiClient( + fakeLocation('/settings/household'), + createNetworkStatus(window), + createVerifiedSession(localStorage), + ) + await api.loadMe() + render( +Changes apply to everyone in the household.
+Settings
++ {error} +
+ ) +} + +type FieldProps = { + draft: HouseholdSettings + edit: (change: Partial+ {hint} +
++ {hint} +
++ {shown.length === 0 ? 'No time zone matches.' : `${shown.length} ${shown.length === 1 ? 'time zone' : 'time zones'}`} +
+{children}
+ {error !== null && ( ++ {error} +
+ )} +Where MealQuest looks for real recipes behind each Side quest.
+ {settings.isPending &&New key not saved yet
+ +{useLocation().pathname}
+} + +// renderSettings renders the settings home on a 390 px phone (mock 1p) in a +// data router (the hidden sub-tabs' leave guard needs one); +// SettingsTabs.test.tsx covers 768 px and up. +function renderSettings() { + mockViewport(390) + const api = createApiClient(fakeLocation('/settings'), createNetworkStatus(window), createVerifiedSession(localStorage)) + return render( ++ Our kitchen + Shared household · changes apply to everyone +
+Changes apply to everyone in the household.
+{children}
+