mirror of
https://github.com/R0m1k3/Presencia.git
synced 2026-10-11 17:27:42 +02:00
Reprend la maquette Presencia.dc.html sur l'application réelle : thème clair chaud à accent vert forêt, navigation latérale groupée par rôle et tableau de bord, en conservant l'intégralité du fonctionnel existant. Frontend - Écran de connexion en deux panneaux (argumentaire + formulaire). - Tableau de bord par rôle : compteurs du mois et liste « à faire maintenant » (sociétés prêtes à valider, cadres en retard, saisie à compléter), plus l'état du mois par société côté admin. - Planning : saisie rapide au pinceau, trois affichages (grille, compact, liste), sélecteur avec raccourcis clavier (1–4, ⌫, ↵ pour appliquer à la journée), barre d'état de verrouillage, « Tout effacer ». - Nouvelle vue Historique pour les cadres (totaux par mois et statut). - Validation & export : barre de progression et compteurs de demi-journées par cadre. - Mobile : liste verticale, navigation en barre basse, cibles 44 px. Backend - GET /api/validations/overview — état de toutes les sociétés d'un mois. - GET /api/attendance/history — totaux par mois et par statut. - DELETE /api/attendance/month — effacement d'un mois (mêmes verrous). - Compteur de demi-journées saisies par cadre dans /validations/company. Polices et icônes servies localement (Inter, sous-ensemble de 18 icônes Phosphor) au lieu de Google Fonts et unpkg : l'application ne fait plus aucune requête externe au chargement. Vérifié de bout en bout via la vraie configuration nginx : 62 contrôles Playwright (desktop et mobile), tous passants, sur base réinitialisée et rejoués deux fois pour garantir le déterminisme.
91 lines
1.9 KiB
CSS
91 lines
1.9 KiB
CSS
/* Phosphor Icons (MIT) — vendored subset: only the glyphs Presencia uses,
|
|
so the app renders identically with no external CDN request. */
|
|
@font-face {
|
|
font-family: "Phosphor";
|
|
src:
|
|
url("../fonts/Phosphor.woff2") format("woff2");
|
|
font-weight: normal;
|
|
font-style: normal;
|
|
font-display: block;
|
|
}
|
|
|
|
.ph {
|
|
/* use !important to prevent issues with browser extensions that change fonts */
|
|
font-family: "Phosphor" !important;
|
|
speak: never;
|
|
font-style: normal;
|
|
font-weight: normal;
|
|
font-variant: normal;
|
|
text-transform: none;
|
|
line-height: 1;
|
|
|
|
/* Enable Ligatures ================ */
|
|
letter-spacing: 0;
|
|
-webkit-font-feature-settings: "liga";
|
|
-moz-font-feature-settings: "liga=1";
|
|
-moz-font-feature-settings: "liga";
|
|
-ms-font-feature-settings: "liga" 1;
|
|
font-feature-settings: "liga";
|
|
-webkit-font-variant-ligatures: discretionary-ligatures;
|
|
font-variant-ligatures: discretionary-ligatures;
|
|
|
|
/* Better Font Rendering =========== */
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
.ph.ph-arrow-right:before {
|
|
content: "\e06c";
|
|
}
|
|
.ph.ph-arrows-out-line-horizontal:before {
|
|
content: "\e534";
|
|
}
|
|
.ph.ph-bell-ringing:before {
|
|
content: "\e5e8";
|
|
}
|
|
.ph.ph-buildings:before {
|
|
content: "\e102";
|
|
}
|
|
.ph.ph-calendar-dots:before {
|
|
content: "\e7b4";
|
|
}
|
|
.ph.ph-caret-left:before {
|
|
content: "\e138";
|
|
}
|
|
.ph.ph-caret-right:before {
|
|
content: "\e13a";
|
|
}
|
|
.ph.ph-clock-counter-clockwise:before {
|
|
content: "\e1a0";
|
|
}
|
|
.ph.ph-file-pdf:before {
|
|
content: "\e702";
|
|
}
|
|
.ph.ph-file-xls:before {
|
|
content: "\eb22";
|
|
}
|
|
.ph.ph-lock-simple:before {
|
|
content: "\e308";
|
|
}
|
|
.ph.ph-pencil-simple-line:before {
|
|
content: "\ebc6";
|
|
}
|
|
.ph.ph-plus:before {
|
|
content: "\e3d4";
|
|
}
|
|
.ph.ph-seal-check:before {
|
|
content: "\e606";
|
|
}
|
|
.ph.ph-sign-out:before {
|
|
content: "\e42a";
|
|
}
|
|
.ph.ph-squares-four:before {
|
|
content: "\e464";
|
|
}
|
|
.ph.ph-user-gear:before {
|
|
content: "\e4cc";
|
|
}
|
|
.ph.ph-users-three:before {
|
|
content: "\e68e";
|
|
}
|