Crvi/assets/css/agenda-visual-filters.css
2026-01-20 23:00:56 +01:00

277 lines
4.7 KiB
CSS

/**
* Styles pour les filtres visuels de l'agenda admin
* Boutons de départements et capacités de traduction
*/
/* Conteneur principal */
.visual-filters-container {
margin-bottom: 20px;
}
.visual-filters-container .card {
border: 1px solid #dee2e6;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.visual-filters-container .card-header {
background-color: #f8f9fa;
border-bottom: 2px solid #007bff;
padding: 12px 20px;
transition: background-color 0.2s ease;
}
.visual-filters-container .card-header:hover {
background-color: #e9ecef;
}
.visual-filters-container .card-header h5 {
color: #333;
font-weight: 600;
font-size: 1.1rem;
}
.visual-filters-container .card-header .btn-link {
color: #333;
font-size: 1rem;
}
.visual-filters-container .card-header .btn-link:hover {
color: #007bff;
}
#visual-filters-toggle-icon {
transition: transform 0.3s ease;
}
.visual-filters-container .card-body {
padding: 20px;
}
/* Groupes de filtres */
.filter-group {
margin-bottom: 20px;
}
.filter-group:last-child {
margin-bottom: 0;
}
.filter-group-title {
font-size: 0.95rem;
font-weight: 600;
color: #495057;
margin-bottom: 12px;
padding-bottom: 8px;
border-bottom: 1px solid #e9ecef;
}
/* Conteneur des boutons */
.button-filters {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
/* Bouton de filtre commun */
.filter-btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
background-color: #fff;
border: 2px solid #dee2e6;
border-radius: 6px;
cursor: pointer;
transition: all 0.2s ease;
font-size: 0.9rem;
color: #495057;
font-weight: 500;
}
.filter-btn i {
font-size: 1rem;
}
.filter-btn:hover:not(.disabled) {
border-color: #007bff;
background-color: #f8f9fa;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0,123,255,0.2);
}
.filter-btn.active {
background-color: #007bff;
border-color: #007bff;
color: #fff;
}
.filter-btn.active i {
color: #fff !important;
}
.filter-btn.disabled {
background-color: #e9ecef;
border-color: #dee2e6;
color: #6c757d;
cursor: not-allowed;
opacity: 0.6;
}
/* Bouton de capacité de traduction */
.trad-btn {
min-width: 200px;
padding: 12px 16px;
flex-direction: column;
align-items: stretch;
}
.trad-btn-content {
display: flex;
flex-direction: column;
gap: 8px;
width: 100%;
}
.trad-btn-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 4px;
}
.trad-btn-label {
font-weight: 600;
font-size: 0.95rem;
}
.trad-btn-stats {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 4px;
}
.trad-stat {
font-size: 0.85rem;
font-weight: 600;
color: #495057;
}
.trad-btn.active .trad-stat {
color: #fff;
}
/* Barre de progression */
.trad-progress {
width: 100%;
height: 8px;
background-color: #e9ecef;
border-radius: 4px;
overflow: hidden;
margin: 4px 0;
}
.trad-progress-bar {
height: 100%;
transition: width 0.3s ease;
border-radius: 4px;
}
/* Détails (matin/après-midi) */
.trad-btn-details {
display: flex;
justify-content: space-between;
gap: 8px;
margin-top: 4px;
}
.trad-detail {
font-size: 0.75rem;
color: #6c757d;
background-color: #f8f9fa;
padding: 2px 8px;
border-radius: 3px;
}
.trad-btn.active .trad-detail {
background-color: rgba(255,255,255,0.2);
color: rgba(255,255,255,0.9);
}
.trad-btn.disabled .trad-detail {
background-color: #e9ecef;
color: #adb5bd;
}
/* Animation de chargement */
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.filter-btn.loading {
animation: pulse 1.5s ease-in-out infinite;
pointer-events: none;
}
/* Responsive */
@media (max-width: 768px) {
.button-filters {
gap: 8px;
}
.filter-btn {
font-size: 0.85rem;
padding: 6px 12px;
}
.trad-btn {
min-width: 150px;
padding: 10px 12px;
}
.trad-btn-label {
font-size: 0.85rem;
}
.trad-stat {
font-size: 0.8rem;
}
.trad-detail {
font-size: 0.7rem;
padding: 2px 6px;
}
}
/* États spéciaux */
.filter-btn.warning {
border-color: #ffc107;
}
.filter-btn.danger {
border-color: #dc3545;
}
/* Tooltip pour informations supplémentaires */
.filter-btn[data-bs-toggle="tooltip"] {
position: relative;
}
/* Badge de notification */
.filter-btn .badge {
position: absolute;
top: -8px;
right: -8px;
background-color: #dc3545;
color: #fff;
font-size: 0.7rem;
padding: 2px 6px;
border-radius: 10px;
font-weight: 600;
}