import { Routes } from '@angular/router'; import { ProfileViewConfig } from '../profile-view/types'; import { PreferencesViewConfig } from '../preferences-view/types'; import { SecurityViewConfig } from '../security-view/types'; import { AccountViewConfig } from '../account-view/types'; import { OrganizationViewConfig } from '../organization-view/types'; import { NotificationPreferencesViewConfig } from '../notification-preferences-view/types'; import { ApiKeysViewConfig } from '../api-keys-view/types'; import { PermissionsViewConfig } from '../permissions-view/types'; import { SettingsHubConfig } from './types'; /** * Opciones de `provideValtechSettingsRoutes`. Agrupa el HUB (`val-settings-hub`) * con las vistas ya promovidas (Perfil + Preferencias) bajo un único `path` * base, y deja `extraRoutes` para las secciones de la app aún no promovidas * (security, account, notifications, organization, …). */ export interface ValtechSettingsRoutesOptions { /** Path base del bloque de settings. Default `'settings'`. */ basePath?: string; /** * Path donde se monta el HUB dentro del bloque. Default `''` (índice). Para * apps que quieren el hub en una sub-ruta (ej. showcase lo tiene en * `preferences`), setear esto + `indexRedirectTo`. */ hubPath?: string; /** * Si se setea, agrega `{ path: '', redirectTo, pathMatch: 'full' }` al índice. * Pensado para cuando `hubPath` NO es `''` (el índice queda libre y se redirige * al hub u otra sección). No usar junto con `hubPath: ''` (colisionarían). */ indexRedirectTo?: string; /** Config del HUB (pasada por route data `settingsHubConfig`). */ hubConfig?: SettingsHubConfig; /** Config de la vista Perfil (pass-through a `provideValtechProfileRoutes`). */ profileConfig?: ProfileViewConfig; /** Config de la vista Preferencias (pass-through a `provideValtechPreferencesRoutes`). */ preferencesConfig?: PreferencesViewConfig; /** Config de la vista Seguridad (pass-through a `provideValtechSecurityRoutes`). */ securityConfig?: SecurityViewConfig; /** Config de la vista Cuenta (pass-through a `provideValtechAccountRoutes`). */ accountConfig?: AccountViewConfig; /** Config de la vista Gestión de organización (pass-through a `provideValtechOrganizationRoutes`). */ organizationConfig?: OrganizationViewConfig; /** Config de Preferencias de notificaciones push (pass-through). */ notificationPreferencesConfig?: NotificationPreferencesViewConfig; /** Config del visor de Permisos (pass-through). */ permissionsConfig?: PermissionsViewConfig; /** Monta la ruta `profile`. Default `true`. */ includeProfile?: boolean; /** Monta la ruta de preferencias. Default `true`. */ includePreferences?: boolean; /** Monta la ruta `security`. Default `true`. */ includeSecurity?: boolean; /** Monta la ruta `account`. Default `true`. */ includeAccount?: boolean; /** Monta la ruta `organization`. Default `true`. */ includeOrganization?: boolean; /** Monta la ruta de preferencias de notificaciones push. Default `true`. */ includeNotificationPreferences?: boolean; /** Monta la ruta `permissions`. Default `true`. */ includePermissions?: boolean; /** Monta la ruta `api-keys` (`val-api-keys-view`). Default `false` (opt-in). */ includeApiKeys?: boolean; /** Config de la vista API Keys (pass-through a `provideValtechApiKeysRoutes`). */ apiKeysConfig?: ApiKeysViewConfig; /** Path de la vista Preferencias. Default `'preferences'`. */ preferencesPath?: string; /** Path de la vista Preferencias de notificaciones push. Default `'notifications'`. */ notificationPreferencesPath?: string; /** Rutas extra a sumar como hijas (secciones de la app no promovidas). */ extraRoutes?: Routes; } /** * Helper para montar el bloque completo de Settings en una app del factory: el * HUB de navegación (`val-settings-hub`) + TODAS las vistas promovidas (Perfil, * Preferencias, Seguridad, Cuenta, Gestión org, Preferencias de notificaciones, * Permisos) + las rutas propias de la app (`extraRoutes`). Cada `include*` permite * apagar una sección; `hubPath`/`indexRedirectTo`/`*Path` permiten reubicar el hub * y las vistas para preservar URLs existentes. * * showcase lo consume (ver `settings.routes.ts` de showcase): hub en `preferences`, * preferences-view en `general`, index→redirect, `organization/new` por `extraRoutes`. * * @example * ```ts * // app.routes.ts * import { provideValtechSettingsRoutes } from 'valtech-components'; * * export const routes: Routes = [ * { * path: 'app', * children: [ * ...provideValtechSettingsRoutes({ * hubConfig: { onLogout: () => auth.logoutWithConfirmation() }, * extraRoutes: [ * { path: 'security', loadComponent: () => ... }, * ], * }), * ], * }, * ]; * ``` */ export declare function provideValtechSettingsRoutes(opts?: ValtechSettingsRoutesOptions): Routes;