mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-10 21:32:18 +00:00
Settings now reads as nine groups: Account, Tracking, Arrangement, Notifications, Health profile, AI, Connections, Data and System. On a phone one button names the current section and opens the grouped list, replacing the strip of every section. What moved, every old address still working: - Sessions, trusted devices and security activity sit under Security; the privacy page anchors forward there. - Notifications holds every reminder kind: the Coach nudges and the checkup reminder switches joined, and a card names the reminders set where their subject lives (dose times, cycle reminders). - Arrangement holds order and view only. Mood tags, the labs biomarker catalog and on-device text recognition, and the injection sites live on module pages under /settings/modules/<id>, linked from each Modules row and from the module's own wrench. /settings/layout/mood redirects. - The timezone saves on change in the Display card, with a one-tap offer of the device zone. - Screening hints sit beside the life circumstances they come from. - System gains Preview features with the Topics switch. Duplicates: the Coach and MCP pages show their state and link to the one switch in Modules (turning MCP off keeps tokens), the Coach overlay shows the provider and model with a link to Settings > AI instead of a second set of selects, and the privacy page drops its copy of the export links. A guard walks every historical /settings address through the redirects and every forwarded anchor to a page that renders.
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import type { ModuleKey } from "@/lib/modules/registry";
|
|
import { surfaceModule } from "@/lib/modules/surface";
|
|
|
|
/**
|
|
* Server-safe ids and copy keys of the module pages under Settings > Modules
|
|
* (`/settings/modules/<id>`). The route reads them in
|
|
* `generateStaticParams()`, so they live apart from the client bodies in
|
|
* `module-settings-pages.tsx`.
|
|
*/
|
|
export const MODULE_SETTINGS_PAGE_IDS = [
|
|
"medications",
|
|
"mood",
|
|
"labs",
|
|
] as const;
|
|
|
|
export type ModuleSettingsPageId = (typeof MODULE_SETTINGS_PAGE_IDS)[number];
|
|
|
|
export function isModuleSettingsPageId(
|
|
value: string,
|
|
): value is ModuleSettingsPageId {
|
|
return (MODULE_SETTINGS_PAGE_IDS as readonly string[]).includes(value);
|
|
}
|
|
|
|
/** i18n keys of a page's heading, under `settings.sections.modules.pages`. */
|
|
export function moduleSettingsPageKeys(id: ModuleSettingsPageId): {
|
|
titleKey: string;
|
|
descriptionKey: string;
|
|
} {
|
|
return {
|
|
titleKey: `settings.sections.modules.pages.${id}.title`,
|
|
descriptionKey: `settings.sections.modules.pages.${id}.description`,
|
|
};
|
|
}
|
|
|
|
/** The module a page belongs to, from the surface map. */
|
|
export function moduleSettingsPageModule(
|
|
id: ModuleSettingsPageId,
|
|
): ModuleKey | undefined {
|
|
return surfaceModule(`settings-module:${id}`);
|
|
}
|