# Mi cuenta

@if (auth.me()) {

{{ auth.me()!.email }} · {{ auth.me()!.role }}

}
@if (successFlash()) {

{{ successFlash() }}

} @if (error()) {

{{ error() }}

}

## Métodos de inicio de sesión

@if (!hasLocal()) {
} @else {
}
@if (loading()) {

Cargando…

} @else if (credentials().length === 0) {

No hay credenciales registradas.

} @else {

@for (cred of credentials(); track cred.id) {

- {{ providerLabel(cred.provider) }}

  Añadida el {{ cred.createdAt | date:'longDate' }} @if (cred.lastUsedAt) { · última vez {{ cred.lastUsedAt | date:'shortDate' }} } @if (cred.providerKeyHint) { · {{ cred.providerKeyHint }} }

}

}
@if (formOpen()) {

## @if (hasLocal()) { Cambiar contraseña } @else { Establecer contraseña local }

@if (hasLocal()) { Contraseña actual } Contraseña nueva Repítela @if (formError()) {

{{ formError() }}

}

Mínimo 8 caracteres con al menos una letra y un número.

}

## Notificaciones por email

Activa cada tipo de aviso de forma independiente. Si desactivas el primero, no recibirás ningún email.

@if (preferencesError()) {

{{ preferencesError() }}

} @if (preferences(); as prefs) {

- Recibir cualquier email

  Interruptor general — apaga todos los avisos por email.

- Resumen diario por la mañana

  Tareas, eventos y cumpleaños del día.

- Tareas asignadas

  Cuando alguien te marca como responsable de una tarea.

- Menciones en el muro

  Cuando alguien te menciona con `@` en un mensaje o comentario.

} @else {

Cargando preferencias…

}

Vista previa del resumen diario

Envía el digest de hoy a tu email — sólo a ti, nadie más recibe nada. @if (digestFlash()) { · {{ digestFlash() }} }

## Widgets del panel

Activa o desactiva cada widget del panel y reordénalos con las flechas. Los cambios se aplican al instante.

@if (widgetsError()) {

{{ widgetsError() }}

} @if (widgets(); as list) {

@for (w of list; track w.id) {

- {{ widgetLabel(w.id) }}

}

} @else {

Cargando widgets…

}
@if (isAdmin()) {

## Claves de API para integraciones

Genera una clave por cada cliente externo (scripts, atajos del iPhone…). Solo dan acceso a `/api/integrations/*`, no al resto de la app. La clave en claro se muestra una única vez al crearla — cópiala y pégala en el cliente antes de cerrar el panel.

@if (apiKeysError()) {

{{ apiKeysError() }}

} @if (newKeyPlaintext(); as token) {

Esta es tu nueva clave. Cópiala ahora — no podrás volver a verla.

`{{ token }}`
@if (newKeyCopyFlash()) { {{ newKeyCopyFlash() }} }
}
@if (apiKeys().length === 0) {

Todavía no tienes claves. Crea una para empezar a integrar.

} @else {

@for (key of apiKeys(); track key.id) {

- {{ key.name }} @if (key.revokedAt) { · revocada }

  `{{ key.prefix }}…` · creada {{ key.createdAt | date:'shortDate' }} @if (key.lastUsedAt) { · usada {{ key.lastUsedAt | date:'short' }} } @else { · sin usar }

  @if (!key.revokedAt) {
  }
}

}

## Ubicación de la familia

Latitud y longitud (decimales) y etiqueta visible. Activan el widget de meteo en el panel. Déjalas vacías para desactivarlo.

@if (locationFlash()) {

{{ locationFlash() }}

} @if (locationError()) {

{{ locationError() }}

} Latitud Longitud Etiqueta
}

## Idioma de la interfaz

Cambia el idioma de FamilyNido. Al guardar, recargamos la página para servir el bundle correcto.

@if (languageError()) {

{{ languageError() }}

}
Idioma

## Sesión