style: rediseno de layout profesional en las 7 apps
Headers sticky con marca y acciones, contenedores max-w-[1280px], grids de contenido con rails laterales sticky (cotizador, mi-dia, detalle de cobranza), stepper vertical en el wizard de alta, toolbar+ tabla unificadas en cobranza, tabs como segmented control en dashboards, chat con barra de entrada fija y preguntas sugeridas, landing con navbar + hero + grid de modulos + footer.
This commit is contained in:
@@ -40,6 +40,12 @@ export function getToken(): string | null {
|
||||
|
||||
export function logout(): void {
|
||||
localStorage.removeItem(STORAGE_KEY)
|
||||
notificarCambioSesion()
|
||||
}
|
||||
|
||||
/** Avisa a la UI (p. ej. el navbar) que cambió el estado de sesión */
|
||||
function notificarCambioSesion(): void {
|
||||
if (typeof window !== 'undefined') window.dispatchEvent(new Event('frasa:sesion'))
|
||||
}
|
||||
|
||||
/** POST /auth/login; guarda token + usuario en localStorage */
|
||||
@@ -57,6 +63,7 @@ export async function login(username: string, password: string): Promise<Usuario
|
||||
if (!res.ok) throw new ErrorLogin()
|
||||
const data = (await res.json()) as Sesion
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify({ token: data.token, usuario: data.usuario }))
|
||||
notificarCambioSesion()
|
||||
return data.usuario
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user