/** The kind of control a setting is edited with. */ export type SettingsFieldType = "string" | "password" | "textarea" | "select" | "switch" | "theme"; /** Where a setting's value lives: browser `localStorage` or the server config. */ export type SettingsFieldScope = "client" | "server"; export interface SettingsFieldOption { name: string; value: string; } export interface SettingsFieldLink { name: string; url: string; } /** * A single declarative setting. This is intentionally structurally compatible * with `shadcn-settings`' field type so the schema can be passed straight to * the renderer, and with the app's own `UIConfigField` union. */ export interface SettingsFieldSchema { name: string; key: string; type: SettingsFieldType; required: boolean; description: string; scope: SettingsFieldScope; default?: string | boolean; placeholder?: string; env?: string; options?: SettingsFieldOption[]; links?: SettingsFieldLink[]; } /** Metadata describing one entry in the settings sidebar/menu. */ export interface SettingsSectionSchema { /** Stable id used for routing and the active-tab state. */ key: string; /** Human-readable label shown in the menu and header. */ name: string; /** One-line summary shown under the header. */ description: string; /** lucide-react icon name; the app maps this to a component. */ icon: string; /** Config namespace this section reads/writes (`config.values[dataAdd]`). */ dataAdd: string; } /** Ordered list of settings sections (menu items). */ export declare const settingsSections: SettingsSectionSchema[]; /** Field declarations for the "Search Settings" section. */ export declare const searchSettingsFields: SettingsFieldSchema[]; /** Every field group keyed by the section `dataAdd` it belongs to. */ export declare const settingsFieldsBySection: Record; /** * Return the full app settings schema. Named like a request because the app * asks this module for "the setting info" rather than declaring it inline. */ export declare function getSettingsSchema(): { sections: SettingsSectionSchema[]; fieldsBySection: Record; };