All checks were successful
continuous-integration/drone/push Build is passing
✨ New Features: - Dynamic permission-based context menus for files and folders - Support for collaborative folder access control - Upload to specific folders including shared folders - Changelog modal for version updates - Improved dark mode synchronization 🐛 Bug Fixes: - Fixed context menu displaying incorrect options - Fixed CSS !important override preventing dynamic menu behavior - Fixed folder collaboration permission checks - Fixed breadcrumb navigation with empty segments - Fixed "Premature close" error loop in attachments - Fixed missing user variable in admin routes - Fixed avatar loading COEP policy issues 🔒 Security: - Added security middleware (CSRF, rate limiting, input validation) - Fixed collaboration folder access validation - Improved shared folder permission handling 🎨 UI/UX Improvements: - Removed Actions column from folder view - Context menu now properly hides/shows based on permissions - Better visual feedback for collaborative folders - Improved upload flow with inline modals 🧹 Code Quality: - Added collaboration data to folder routes - Refactored context menu logic for better maintainability - Added debug logging for troubleshooting - Improved file upload handling with chunking support
2380 lines
49 KiB
CSS
2380 lines
49 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');
|
|
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 222.2 84% 4.9%;
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 222.2 84% 4.9%;
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 222.2 84% 4.9%;
|
|
--primary: 222.2 47.4% 11.2%;
|
|
--primary-foreground: 210 40% 98%;
|
|
--secondary: 210 40% 96.1%;
|
|
--secondary-foreground: 222.2 47.4% 11.2%;
|
|
--muted: 210 40% 96.1%;
|
|
--muted-foreground: 215.4 16.3% 46.9%;
|
|
--accent: 210 40% 96.1%;
|
|
--accent-foreground: 222.2 47.4% 11.2%;
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 214.3 31.8% 91.4%;
|
|
--input: 214.3 31.8% 91.4%;
|
|
--ring: 222.2 84% 4.9%;
|
|
--radius: 0.5rem;
|
|
}
|
|
|
|
.dark {
|
|
--background: 222.2 84% 4.9%;
|
|
--foreground: 210 40% 98%;
|
|
--card: 222.2 84% 4.9%;
|
|
--card-foreground: 210 40% 98%;
|
|
--popover: 222.2 84% 4.9%;
|
|
--popover-foreground: 210 40% 98%;
|
|
--primary: 210 40% 98%;
|
|
--primary-foreground: 222.2 47.4% 11.2%;
|
|
--secondary: 217.2 32.6% 17.5%;
|
|
--secondary-foreground: 210 40% 98%;
|
|
--muted: 217.2 32.6% 17.5%;
|
|
--muted-foreground: 215 20.2% 65.1%;
|
|
--accent: 217.2 32.6% 17.5%;
|
|
--accent-foreground: 210 40% 98%;
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 210 40% 98%;
|
|
--border: 217.2 32.6% 17.5%;
|
|
--input: 217.2 32.6% 17.5%;
|
|
--ring: 212.7 26.8% 83.9%;
|
|
}
|
|
|
|
.container {
|
|
max-width: 90%;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
flex: 1 0 auto;
|
|
}
|
|
|
|
.form-container {
|
|
background-color: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: var(--radius);
|
|
padding: 2rem;
|
|
}
|
|
|
|
.form-control {
|
|
width: 100%;
|
|
padding: 0.5rem;
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: var(--radius);
|
|
background-color: hsl(var(--background));
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: var(--radius);
|
|
font-weight: 500;
|
|
transition: all 0.3s ease;
|
|
cursor: pointer;
|
|
padding: 0.5rem 1rem;
|
|
}
|
|
|
|
.btn-primary {
|
|
background-color: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
}
|
|
|
|
.btn-primary:hover {
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.btn-secondary {
|
|
background-color: hsl(var(--secondary));
|
|
color: hsl(var(--secondary-foreground));
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.btn-success {
|
|
background-color: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
}
|
|
|
|
.btn-success:hover {
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.btn-danger {
|
|
background-color: hsl(var(--destructive));
|
|
color: hsl(var(--destructive-foreground));
|
|
}
|
|
|
|
.btn-danger:hover {
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.animate {
|
|
animation: fadeIn 0.5s ease-out;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
.table-responsive {
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.table {
|
|
width: 100%;
|
|
border-collapse: separate;
|
|
border-spacing: 0;
|
|
}
|
|
|
|
.table th,
|
|
.table td {
|
|
padding: 0.75rem;
|
|
vertical-align: top;
|
|
border-top: 1px solid hsl(var(--border));
|
|
}
|
|
|
|
.table thead th {
|
|
vertical-align: bottom;
|
|
border-bottom: 2px solid hsl(var(--border));
|
|
}
|
|
|
|
.header {
|
|
background-color: hsl(var(--background));
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
}
|
|
|
|
.dropdown-menu, .dropdown-menu.show {
|
|
background-color: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 16px !important;
|
|
box-shadow: 0 4px 16px rgba(0,0,0,0.18);
|
|
min-width: 180px;
|
|
padding: 0.5rem 0;
|
|
overflow: hidden;
|
|
z-index: 1000;
|
|
animation: menuFadeIn 0.12s ease-out;
|
|
}
|
|
|
|
.dropdown-item {
|
|
border-radius: 12px;
|
|
margin: 0 0.5rem;
|
|
padding: 0.5rem 1rem;
|
|
font-size: 0.95rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
color: hsl(var(--foreground));
|
|
background: none;
|
|
transition: background 0.12s, color 0.12s;
|
|
}
|
|
|
|
.dropdown-item:hover {
|
|
background-color: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
.dropdown-item.text-danger {
|
|
color: hsl(var(--destructive));
|
|
}
|
|
.dropdown-item.text-danger:hover {
|
|
background-color: hsl(var(--destructive));
|
|
color: hsl(var(--destructive-foreground));
|
|
}
|
|
.dropdown-item.text-warning {
|
|
color: #f59e0b;
|
|
}
|
|
.dropdown-item.text-warning:hover {
|
|
background-color: #f59e0b22;
|
|
color: #fff;
|
|
}
|
|
|
|
.dropdown-divider {
|
|
border-top: 1px solid hsl(var(--border));
|
|
margin: 0.25rem 0;
|
|
}
|
|
|
|
/* Correction du positionnement dynamique (haut/bas) */
|
|
.dropdown-menu[style*="bottom: 100%"] {
|
|
border-radius: 16px 16px 16px 16px !important;
|
|
box-shadow: 0 -4px 16px rgba(0,0,0,0.18);
|
|
}
|
|
|
|
.footer {
|
|
flex-shrink: 0;
|
|
background-color: hsl(var(--background));
|
|
border-top: 1px solid hsl(var(--border));
|
|
padding: 1rem 0;
|
|
}
|
|
|
|
.modal,
|
|
.modal.fade {
|
|
display: none !important;
|
|
position: fixed !important;
|
|
top: 0 !important;
|
|
left: 0 !important;
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
background-color: rgba(0, 0, 0, 0.6) !important;
|
|
backdrop-filter: blur(8px) !important;
|
|
justify-content: center !important;
|
|
align-items: center !important;
|
|
z-index: 1050 !important;
|
|
animation: fadeIn 0.2s ease !important;
|
|
}
|
|
|
|
.modal.show,
|
|
.modal.fade.show {
|
|
display: flex !important;
|
|
}
|
|
|
|
.modal-dialog {
|
|
position: relative !important;
|
|
margin: 0 auto !important;
|
|
max-width: 90% !important;
|
|
width: 600px !important;
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
}
|
|
|
|
.modal-dialog-centered {
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
min-height: calc(100% - 1rem) !important;
|
|
}
|
|
|
|
.modal-content {
|
|
background-color: hsl(var(--card)) !important;
|
|
border-radius: 16px !important;
|
|
box-shadow: 0 20px 60px rgba(0,0,0,0.4) !important;
|
|
padding: 0 !important;
|
|
max-width: 100% !important;
|
|
width: 100% !important;
|
|
border: 1px solid hsl(var(--border)) !important;
|
|
animation: modalSlideIn 0.3s ease !important;
|
|
}
|
|
|
|
.modal-header {
|
|
padding: 1.5rem 2rem !important;
|
|
border-bottom: 1px solid hsl(var(--border)) !important;
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
justify-content: space-between !important;
|
|
}
|
|
|
|
.modal-body {
|
|
padding: 2rem !important;
|
|
max-height: 70vh !important;
|
|
overflow-y: auto !important;
|
|
}
|
|
|
|
.modal-footer {
|
|
padding: 1rem 2rem !important;
|
|
border-top: 1px solid hsl(var(--border)) !important;
|
|
display: flex !important;
|
|
justify-content: flex-end !important;
|
|
gap: 0.75rem !important;
|
|
}
|
|
|
|
.modal .modal-title {
|
|
font-size: 1.25rem !important;
|
|
font-weight: 600 !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
margin: 0 !important;
|
|
}
|
|
|
|
.modal .close {
|
|
font-size: 1.5rem !important;
|
|
opacity: 0.6 !important;
|
|
transition: all 0.2s ease !important;
|
|
background: none !important;
|
|
border: none !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
cursor: pointer !important;
|
|
padding: 0.5rem !important;
|
|
border-radius: 0.5rem !important;
|
|
}
|
|
|
|
.modal .close:hover {
|
|
opacity: 1 !important;
|
|
background: hsl(var(--accent)) !important;
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
@keyframes modalSlideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-20px) scale(0.95);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
}
|
|
}
|
|
|
|
.navbar {
|
|
padding: 0.5rem 1rem !important;
|
|
min-height: 70px !important;
|
|
max-height: 70px !important;
|
|
position: relative !important;
|
|
}
|
|
|
|
.container-fluid {
|
|
display: flex !important;
|
|
justify-content: space-between !important;
|
|
align-items: center !important;
|
|
height: 100% !important;
|
|
}
|
|
|
|
/* Alignement des boutons à droite */
|
|
.navbar-nav {
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
margin-left: auto !important;
|
|
gap: 0.5rem !important;
|
|
position: relative !important;
|
|
}
|
|
|
|
.navbar-nav .nav-item {
|
|
position: relative !important;
|
|
}
|
|
|
|
/* Style pour les boutons de la navbar */
|
|
.nav-btn {
|
|
padding: 0.5rem 1rem !important;
|
|
font-size: 0.95rem !important;
|
|
line-height: 1.5 !important;
|
|
border-radius: 0.5rem !important;
|
|
transition: all 0.2s ease !important;
|
|
}
|
|
|
|
/* Style pour l'avatar de l'utilisateur */
|
|
.user-avatar {
|
|
width: 40px !important;
|
|
height: 40px !important;
|
|
object-fit: cover !important;
|
|
border-radius: 50% !important;
|
|
border: 2px solid hsl(var(--border)) !important;
|
|
transition: all 0.2s ease !important;
|
|
}
|
|
|
|
.user-avatar:hover {
|
|
transform: scale(1.05) !important;
|
|
border-color: hsl(var(--primary)) !important;
|
|
}
|
|
|
|
/* Style pour le bouton du dropdown */
|
|
#accountDropdownBtn {
|
|
padding: 0 !important;
|
|
border: none !important;
|
|
background: none !important;
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
}
|
|
|
|
/* Style pour le menu dropdown - IMPORTANT: position absolue */
|
|
.navbar .dropdown {
|
|
position: relative !important;
|
|
}
|
|
|
|
.navbar .dropdown-menu {
|
|
position: absolute !important;
|
|
top: calc(100% + 0.5rem) !important;
|
|
right: 0 !important;
|
|
left: auto !important;
|
|
margin: 0 !important;
|
|
z-index: 1050 !important;
|
|
}
|
|
|
|
/* Ajustement pour les écrans plus petits */
|
|
@media (max-width: 768px) {
|
|
.navbar-nav {
|
|
flex-direction: row !important;
|
|
justify-content: flex-end !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.navbar-nav .nav-item {
|
|
margin-left: 5px !important;
|
|
}
|
|
|
|
}
|
|
|
|
/* Animation de chargement stylisée */
|
|
.initial-loading {
|
|
position: fixed;
|
|
inset: 0;
|
|
background-color: #333;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
z-index: 9999;
|
|
transition: background-color 0.3s ease;
|
|
}
|
|
.initial-loading > .loader {
|
|
border: 4px solid #fff;
|
|
border-top-color: transparent;
|
|
border-radius: 50%;
|
|
width: 40px;
|
|
height: 40px;
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
@keyframes spin {
|
|
from { transform: rotate(0deg); }
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
.initial-loading > .message {
|
|
margin-top: 16px;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: #fff;
|
|
}
|
|
|
|
.success-animation {
|
|
position: relative;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.success-icon {
|
|
width: 64px;
|
|
height: 64px;
|
|
background-color: #0EA5E9;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: relative;
|
|
transform: scale(0);
|
|
animation: popIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
|
|
}
|
|
|
|
.success-icon svg {
|
|
width: 32px;
|
|
height: 32px;
|
|
color: white;
|
|
opacity: 0;
|
|
transform: scale(0.5);
|
|
animation: iconIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards 0.2s;
|
|
}
|
|
|
|
.success-text {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
animation: textIn 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards 0.4s;
|
|
}
|
|
|
|
.success-text h2 {
|
|
margin: 0;
|
|
color: hsl(var(--foreground));
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.success-text p {
|
|
margin: 0;
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.success-text .loading-message {
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 0.75rem;
|
|
opacity: 0.8;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.progress-bar {
|
|
width: 200px;
|
|
height: 4px;
|
|
background: hsla(var(--foreground), 0.1);
|
|
border-radius: 2px;
|
|
overflow: hidden;
|
|
margin-top: 1rem;
|
|
opacity: 0;
|
|
animation: textIn 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards 0.6s;
|
|
}
|
|
|
|
.progress-bar::after {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 40%;
|
|
height: 100%;
|
|
background-color: #10b981;
|
|
border-radius: 2px;
|
|
animation: loading 1.5s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes popIn {
|
|
from {
|
|
transform: scale(0);
|
|
}
|
|
to {
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes iconIn {
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes textIn {
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes loading {
|
|
0% {
|
|
left: -40%;
|
|
}
|
|
100% {
|
|
left: 100%;
|
|
}
|
|
}
|
|
|
|
/* Animation de sortie */
|
|
.fade-out {
|
|
animation: fadeOut 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
}
|
|
|
|
@keyframes fadeOut {
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* Notifications container */
|
|
.notification-container {
|
|
position: fixed;
|
|
top: 1rem;
|
|
right: 1rem;
|
|
z-index: 1100;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
pointer-events: none;
|
|
max-width: 100%;
|
|
padding: 1rem;
|
|
}
|
|
|
|
/* Individual notification */
|
|
.notification {
|
|
display: flex;
|
|
align-items: center;
|
|
background-color: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: var(--radius);
|
|
padding: 1rem;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|
transform: translateX(120%);
|
|
opacity: 0;
|
|
transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
pointer-events: auto;
|
|
max-width: 380px;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.notification.show {
|
|
transform: translateX(0);
|
|
opacity: 1;
|
|
}
|
|
|
|
/* Icon styles */
|
|
.notification-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
border-radius: 50%;
|
|
margin-right: 1rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Notification types */
|
|
.notification.success .notification-icon {
|
|
background: rgba(16, 185, 129, 0.1);
|
|
color: #10B981;
|
|
}
|
|
|
|
.notification.error .notification-icon {
|
|
background: rgba(239, 68, 68, 0.1);
|
|
color: #EF4444;
|
|
}
|
|
|
|
.notification.warning .notification-icon {
|
|
background: rgba(245, 158, 11, 0.1);
|
|
color: #F59E0B;
|
|
}
|
|
|
|
.notification.info .notification-icon {
|
|
background: rgba(59, 130, 246, 0.1);
|
|
color: #3B82F6;
|
|
}
|
|
|
|
/* Content styling */
|
|
.notification-content {
|
|
flex: 1;
|
|
}
|
|
|
|
.notification-title {
|
|
font-weight: 600;
|
|
font-size: 0.925rem;
|
|
margin-bottom: 0.25rem;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.notification-message {
|
|
font-size: 0.875rem;
|
|
color: hsl(var(--muted-foreground));
|
|
line-height: 1.4;
|
|
}
|
|
|
|
/* Dark mode adjustments */
|
|
.dark .notification {
|
|
background-color: hsl(var(--card));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .notification-title {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.dark .notification-message {
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
/* Animations */
|
|
@keyframes slideIn {
|
|
from {
|
|
transform: translateX(120%);
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
transform: translateX(0);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@keyframes slideOut {
|
|
from {
|
|
transform: translateX(0);
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
transform: translateX(120%);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* File info styles */
|
|
.file-info {
|
|
padding: 0.5rem;
|
|
background: rgba(var(--card), 0.5);
|
|
border-radius: var(--radius);
|
|
}
|
|
|
|
.file-info p {
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.file-info strong {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
/* Metadata info styles */
|
|
.metadata-info {
|
|
padding: 0.5rem;
|
|
background: rgba(var(--card), 0.5);
|
|
border-radius: var(--radius);
|
|
}
|
|
|
|
.metadata-info p {
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.metadata-info strong {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
/* Responsive adjustments */
|
|
@media (max-width: 640px) {
|
|
.notification-container {
|
|
left: 1rem;
|
|
right: 1rem;
|
|
}
|
|
|
|
.notification {
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
.collaboration-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
padding: 4px 8px;
|
|
border-radius: 12px;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.collaboration-badge.badge-info {
|
|
background-color: #17a2b8;
|
|
color: white;
|
|
}
|
|
|
|
.collaboration-badge.badge-secondary {
|
|
background-color: #6c757d;
|
|
color: white;
|
|
}
|
|
|
|
.toggle-collaboration-btn.active {
|
|
background-color: #17a2b8;
|
|
border-color: #17a2b8;
|
|
color: white;
|
|
}
|
|
|
|
.toggle-collaboration-btn:not(.active) {
|
|
background-color: #6c757d;
|
|
border-color: #6c757d;
|
|
}
|
|
|
|
.collaboration-details {
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.user-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px;
|
|
border-bottom: 1px solid #eee;
|
|
}
|
|
|
|
.user-avatar {
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
/* Styles pour le menu contextuel */
|
|
.context-menu {
|
|
position: fixed;
|
|
z-index: 1000 !important;
|
|
background-color: hsl(var(--card)) !important;
|
|
border: 1px solid hsl(var(--border)) !important;
|
|
border-radius: 12px !important;
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4) !important;
|
|
min-width: 200px;
|
|
overflow: hidden;
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
/* Style pour les items du menu */
|
|
.menu-item,
|
|
.dropdown-item,
|
|
.context-menu button,
|
|
.context-menu a {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100% !important;
|
|
padding: 0.75rem 1rem !important;
|
|
border: none !important;
|
|
background: none !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
font-size: 0.9rem !important;
|
|
text-align: left !important;
|
|
cursor: pointer !important;
|
|
transition: all 0.15s ease !important;
|
|
text-decoration: none !important;
|
|
white-space: nowrap !important;
|
|
border-radius: 8px !important;
|
|
margin: 0.15rem 0 !important;
|
|
}
|
|
|
|
/* Hover pour mode clair et sombre */
|
|
.menu-item:hover,
|
|
.dropdown-item:hover,
|
|
.context-menu button:hover,
|
|
.context-menu a:hover {
|
|
background-color: hsl(var(--accent)) !important;
|
|
color: hsl(var(--accent-foreground)) !important;
|
|
transform: translateX(2px);
|
|
}
|
|
|
|
.dark .menu-item:hover,
|
|
.dark .dropdown-item:hover,
|
|
.dark .context-menu button:hover,
|
|
.dark .context-menu a:hover {
|
|
background-color: hsl(var(--accent)) !important;
|
|
color: hsl(var(--accent-foreground)) !important;
|
|
transform: translateX(2px);
|
|
}
|
|
|
|
/* Alignement des icônes */
|
|
.menu-item i,
|
|
.dropdown-item i,
|
|
.context-menu button i,
|
|
.context-menu a i {
|
|
width: 20px !important;
|
|
margin-right: 0.75rem !important;
|
|
text-align: center !important;
|
|
font-size: 0.95rem !important;
|
|
}
|
|
|
|
/* Style pour les items destructifs (suppression) */
|
|
.menu-item.destructive,
|
|
.dropdown-item.destructive {
|
|
color: hsl(var(--destructive));
|
|
}
|
|
|
|
.menu-item.destructive:hover,
|
|
.dropdown-item.destructive:hover {
|
|
background-color: hsl(var(--destructive));
|
|
color: hsl(var(--destructive-foreground));
|
|
}
|
|
|
|
/* Style pour le séparateur */
|
|
.menu-separator,
|
|
.dropdown-divider {
|
|
height: 1px !important;
|
|
background-color: hsl(var(--border)) !important;
|
|
margin: 0.5rem 0 !important;
|
|
border: none !important;
|
|
}
|
|
|
|
/* Menu déroulant */
|
|
.dropdown-menu {
|
|
background-color: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
border-radius: var(--radius);
|
|
overflow: hidden;
|
|
min-width: 180px;
|
|
}
|
|
|
|
/* Animation */
|
|
@keyframes menuFadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
.context-menu,
|
|
.dropdown-menu.show {
|
|
animation: menuFadeIn 0.1s ease-out;
|
|
}
|
|
|
|
/* Dark mode hover fix */
|
|
.dark .table tr:hover {
|
|
background-color: hsl(var(--muted)) !important;
|
|
}
|
|
|
|
/* Dropdown animation fix */
|
|
.dropdown-menu {
|
|
display: none;
|
|
opacity: 0;
|
|
transform: translateY(-10px);
|
|
transition: opacity 0.15s ease-out, transform 0.15s ease-out;
|
|
}
|
|
|
|
.dropdown-menu.show {
|
|
display: block;
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
/* Double-click styles */
|
|
tr[data-type="folder"], tr[data-type="shared-folder"] {
|
|
cursor: pointer;
|
|
}
|
|
|
|
tr[data-type="folder"]:active, tr[data-type="shared-folder"]:active {
|
|
background-color: hsl(var(--accent));
|
|
}
|
|
|
|
/* === VUE GRILLE ULTRAMODERNE === */
|
|
.grid-view {
|
|
display: grid !important;
|
|
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)) !important;
|
|
gap: 1.25rem !important;
|
|
padding: 1.5rem !important;
|
|
width: 100% !important;
|
|
max-width: 100% !important;
|
|
box-sizing: border-box !important;
|
|
animation: gridFadeIn 0.4s ease-out !important;
|
|
}
|
|
|
|
.grid-view > tr {
|
|
display: flex !important;
|
|
flex-direction: column !important;
|
|
align-items: center !important;
|
|
justify-content: flex-start !important;
|
|
position: relative !important;
|
|
background: hsl(var(--card)) !important;
|
|
border: 1px solid hsl(var(--border)) !important;
|
|
border-radius: 16px !important;
|
|
padding: 1.5rem 1rem !important;
|
|
text-align: center !important;
|
|
cursor: pointer !important;
|
|
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
min-height: 160px !important;
|
|
overflow: visible !important;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06) !important;
|
|
}
|
|
|
|
.grid-view tr:hover {
|
|
transform: translateY(-6px) scale(1.02) !important;
|
|
box-shadow: 0 12px 35px rgba(0, 0, 0, 0.18) !important;
|
|
border-color: hsl(var(--primary) / 0.5) !important;
|
|
}
|
|
|
|
.grid-view td {
|
|
display: block !important;
|
|
padding: 0 !important;
|
|
border: none !important;
|
|
}
|
|
|
|
.grid-view td:not(:first-child) {
|
|
display: none !important;
|
|
}
|
|
|
|
.grid-view .icon-container {
|
|
display: flex !important;
|
|
flex-direction: column !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
gap: 1rem !important;
|
|
padding: 0 !important;
|
|
position: relative !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.grid-view .icon {
|
|
width: 72px !important;
|
|
height: 72px !important;
|
|
display: flex !important;
|
|
align-items: center !important;
|
|
justify-content: center !important;
|
|
background: linear-gradient(135deg, hsl(var(--primary) / 0.12), hsl(var(--accent) / 0.08)) !important;
|
|
border-radius: 16px !important;
|
|
margin-bottom: 0 !important;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05) !important;
|
|
}
|
|
|
|
.grid-view tr:hover .icon {
|
|
transform: scale(1.15) rotate(-5deg) !important;
|
|
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12) !important;
|
|
}
|
|
|
|
.grid-view .icon i {
|
|
font-size: 2.25rem !important;
|
|
color: hsl(var(--primary)) !important;
|
|
transition: all 0.2s ease !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-folder,
|
|
.grid-view .icon i.fa-folder-open {
|
|
color: #f59e0b !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-file {
|
|
color: #3b82f6 !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-image {
|
|
color: #10b981 !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-film {
|
|
color: #ef4444 !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-file-pdf {
|
|
color: #dc2626 !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-file-archive {
|
|
color: #8b5cf6 !important;
|
|
}
|
|
|
|
.grid-view .icon i.fa-file-code {
|
|
color: #06b6d4 !important;
|
|
}
|
|
|
|
.grid-view .label {
|
|
font-size: 0.875rem !important;
|
|
font-weight: 600 !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
margin: 0 !important;
|
|
overflow: hidden !important;
|
|
text-overflow: ellipsis !important;
|
|
display: -webkit-box !important;
|
|
-webkit-line-clamp: 2 !important;
|
|
line-clamp: 2 !important;
|
|
-webkit-box-orient: vertical !important;
|
|
max-width: 100% !important;
|
|
line-height: 1.4 !important;
|
|
min-height: 2.4rem !important;
|
|
text-align: center !important;
|
|
word-break: break-word !important;
|
|
padding: 0 0.5rem !important;
|
|
}
|
|
|
|
.grid-view .details {
|
|
font-size: 0.7rem !important;
|
|
color: hsl(var(--muted-foreground)) !important;
|
|
margin: 0 !important;
|
|
padding: 0.4rem 0.75rem !important;
|
|
background: hsl(var(--muted) / 0.4) !important;
|
|
border-radius: 12px !important;
|
|
width: auto !important;
|
|
text-align: center !important;
|
|
font-weight: 500 !important;
|
|
border: 1px solid hsl(var(--border) / 0.5) !important;
|
|
}
|
|
|
|
/* Actions pour la vue grille */
|
|
.grid-view .grid-dropdown {
|
|
position: absolute;
|
|
top: 0.5rem;
|
|
right: 0.5rem;
|
|
opacity: 0;
|
|
transition: all 0.2s ease;
|
|
z-index: 10;
|
|
}
|
|
|
|
.grid-view tr:hover .grid-dropdown {
|
|
opacity: 1;
|
|
}
|
|
|
|
.grid-view .grid-dropdown .dropdown-toggle {
|
|
background: rgba(255, 255, 255, 0.9);
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 6px;
|
|
padding: 0.25rem 0.5rem;
|
|
font-size: 0.75rem;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.grid-view .grid-dropdown .dropdown-menu {
|
|
font-size: 0.85rem;
|
|
min-width: 140px;
|
|
border-radius: 8px;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
/* Badge de collaboration pour la vue grille */
|
|
.grid-view .collaboration-badge {
|
|
position: absolute;
|
|
top: 0.75rem;
|
|
left: 0.75rem;
|
|
font-size: 0.65rem;
|
|
padding: 0.25rem 0.5rem;
|
|
border-radius: 8px;
|
|
background: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* Styles améliorés pour la vue liste */
|
|
.table:not(.grid-view) tr {
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.table:not(.grid-view) td {
|
|
vertical-align: middle;
|
|
padding: 1rem 0.75rem;
|
|
}
|
|
|
|
.table:not(.grid-view) td:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.table:not(.grid-view) .icon i {
|
|
font-size: 1.2rem;
|
|
width: 24px;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Bouton de basculement vue grille/liste */
|
|
.view-toggle-btn {
|
|
background: hsl(var(--secondary));
|
|
color: hsl(var(--secondary-foreground));
|
|
border: 1px solid hsl(var(--border));
|
|
padding: 0.5rem;
|
|
border-radius: var(--radius);
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.view-toggle-btn:hover {
|
|
background: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
.view-toggle-btn i {
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
/* Animation de transition entre les vues */
|
|
.table tbody {
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
/* Animations pour la vue grille */
|
|
@keyframes gridFadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes itemSlideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
.grid-view tr {
|
|
animation: itemSlideIn 0.3s ease-out backwards;
|
|
}
|
|
|
|
.grid-view tr:nth-child(1) { animation-delay: 0.05s; }
|
|
.grid-view tr:nth-child(2) { animation-delay: 0.1s; }
|
|
.grid-view tr:nth-child(3) { animation-delay: 0.15s; }
|
|
.grid-view tr:nth-child(4) { animation-delay: 0.2s; }
|
|
.grid-view tr:nth-child(5) { animation-delay: 0.25s; }
|
|
.grid-view tr:nth-child(6) { animation-delay: 0.3s; }
|
|
|
|
/* Responsive adjustments */
|
|
@media (max-width: 768px) {
|
|
.grid-view {
|
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
gap: 1rem;
|
|
padding: 1rem;
|
|
justify-content: center;
|
|
}
|
|
|
|
.grid-view .icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
}
|
|
|
|
.grid-view .icon i {
|
|
font-size: 1.5rem;
|
|
}
|
|
|
|
.grid-view .label {
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.grid-view .details {
|
|
font-size: 0.7rem;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.grid-view {
|
|
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
|
|
gap: 0.75rem;
|
|
padding: 0.75rem;
|
|
justify-content: center;
|
|
}
|
|
|
|
.grid-view .icon-container {
|
|
padding: 1rem 0.5rem 0.75rem;
|
|
}
|
|
}
|
|
|
|
/* Conteneur du tableau pour éviter l'espace vide */
|
|
#fileTable {
|
|
width: 100%;
|
|
table-layout: auto;
|
|
}
|
|
|
|
.grid-view.table {
|
|
table-layout: unset;
|
|
width: auto;
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* Dark mode adjustments */
|
|
.dark .grid-view tr {
|
|
background: hsl(var(--card));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .grid-view tr:hover {
|
|
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.dark .grid-view .grid-dropdown .dropdown-toggle {
|
|
background: rgba(0, 0, 0, 0.8);
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
/* Correction pour éviter l'espace vide à droite */
|
|
.table.grid-view {
|
|
display: grid !important;
|
|
table-layout: unset;
|
|
border-collapse: unset;
|
|
}
|
|
|
|
.table-responsive .grid-view {
|
|
overflow: visible;
|
|
}
|
|
|
|
.grid-view tbody {
|
|
display: contents;
|
|
}
|
|
|
|
.grid-view thead,
|
|
.grid-view tbody tr:empty {
|
|
display: none;
|
|
}
|
|
|
|
@keyframes fadeScale {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.98);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
.grid-view {
|
|
animation: fadeScale 0.2s ease-out;
|
|
}
|
|
|
|
/* Modal Collaboration - Design moderne */
|
|
.collaboration-modal {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
background: rgba(0, 0, 0, 0.5);
|
|
backdrop-filter: blur(8px);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 1050;
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.collaboration-modal.show {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
|
|
.collaboration-modal .modal-content {
|
|
background: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 16px;
|
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.05);
|
|
padding: 24px;
|
|
max-width: 90%;
|
|
width: 600px;
|
|
position: relative;
|
|
overflow: hidden;
|
|
animation: contentShow 0.15s cubic-bezier(0.16, 1, 0.3, 1);
|
|
}
|
|
|
|
.collaboration-modal .modal-header {
|
|
padding: 2rem 2rem 1rem 2rem;
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.collaboration-modal .modal-title {
|
|
font-size: 1.5rem;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
margin: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.collaboration-modal .modal-title i {
|
|
color: hsl(var(--primary));
|
|
}
|
|
|
|
.collaboration-modal .close {
|
|
background: none;
|
|
border: none;
|
|
font-size: 1.5rem;
|
|
cursor: pointer;
|
|
color: hsl(var(--muted-foreground));
|
|
padding: 0.5rem;
|
|
border-radius: 8px;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.collaboration-modal .close:hover {
|
|
background: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
.collaboration-modal .modal-body {
|
|
padding: 1.5rem 2rem;
|
|
max-height: 60vh;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.collaboration-modal .modal-footer {
|
|
padding: 1rem 2rem 2rem 2rem;
|
|
border-top: 1px solid hsl(var(--border));
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
}
|
|
|
|
/* Section des utilisateurs collaborateurs */
|
|
.collaboration-users {
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.collaboration-users h6 {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
margin-bottom: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.collaboration-user-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 1rem;
|
|
background: hsl(var(--muted) / 0.3);
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 12px;
|
|
margin-bottom: 0.75rem;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.collaboration-user-item:hover {
|
|
background: hsl(var(--muted) / 0.5);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.collaboration-user-info {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.collaboration-user-avatar {
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
border: 2px solid hsl(var(--border));
|
|
}
|
|
|
|
.collaboration-user-details h6 {
|
|
margin: 0;
|
|
font-size: 0.95rem;
|
|
font-weight: 500;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.collaboration-user-details small {
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.collaboration-user-status {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.status-indicator {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: hsl(var(--primary));
|
|
animation: pulse 2s infinite;
|
|
}
|
|
|
|
.status-indicator.offline {
|
|
background: hsl(var(--muted-foreground));
|
|
animation: none;
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0%, 100% { opacity: 1; }
|
|
50% { opacity: 0.5; }
|
|
}
|
|
|
|
/* Section d'ajout de collaborateur */
|
|
.add-collaborator {
|
|
padding: 1.5rem;
|
|
background: hsl(var(--accent) / 0.1);
|
|
border: 1px dashed hsl(var(--border));
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.add-collaborator h6 {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
margin-bottom: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.search-input-group {
|
|
position: relative;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.search-input-group input {
|
|
width: 100%;
|
|
padding: 0.75rem 1rem 0.75rem 2.5rem;
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 8px;
|
|
background: hsl(var(--background));
|
|
color: hsl(var(--foreground));
|
|
font-size: 0.9rem;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.search-input-group input:focus {
|
|
outline: none;
|
|
border-color: hsl(var(--primary));
|
|
box-shadow: 0 0 0 3px hsl(var(--primary) / 0.1);
|
|
}
|
|
|
|
.search-input-group i {
|
|
position: absolute;
|
|
left: 0.75rem;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.search-results {
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 8px;
|
|
background: hsl(var(--background));
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.user-result {
|
|
padding: 0.75rem 1rem;
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
transition: background 0.2s ease;
|
|
}
|
|
|
|
.user-result:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.user-result:hover {
|
|
background: hsl(var(--accent) / 0.2);
|
|
}
|
|
|
|
.user-result .user-info {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.user-result .user-avatar {
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 50%;
|
|
margin-right: 0.75rem;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.user-result .user-name {
|
|
font-weight: 500;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.user-result .btn {
|
|
padding: 0.4rem 0.8rem;
|
|
font-size: 0.8rem;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
/* État vide */
|
|
.empty-state {
|
|
text-align: center;
|
|
padding: 2rem 1rem;
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
.empty-state i {
|
|
font-size: 2.5rem;
|
|
margin-bottom: 1rem;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.empty-state p {
|
|
margin: 0;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
/* Context Menu amélioré */
|
|
.context-menu {
|
|
min-width: 220px;
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
.context-menu .menu-item {
|
|
border-radius: var(--radius);
|
|
margin: 0.2rem 0;
|
|
}
|
|
|
|
/* Style du menu contextuel en mode sombre */
|
|
.dark .context-menu {
|
|
background-color: hsl(var(--card));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .context-menu .menu-item {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.dark .context-menu .menu-item:hover {
|
|
background-color: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
/* Correction des modales en mode sombre */
|
|
.dark .modal-content {
|
|
background-color: hsl(var(--card));
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.dark .modal-header {
|
|
border-bottom-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .modal-footer {
|
|
border-top-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .modal .close {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.dark .modal-body {
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.dark .form-control {
|
|
background-color: hsl(var(--background));
|
|
border-color: hsl(var(--border));
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
/* SweetAlert2 Dark Mode */
|
|
.dark .swal2-popup {
|
|
background-color: hsl(var(--card)) !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
}
|
|
|
|
.dark .swal2-title {
|
|
color: hsl(var(--foreground)) !important;
|
|
}
|
|
|
|
.dark .swal2-content {
|
|
color: hsl(var(--foreground)) !important;
|
|
}
|
|
|
|
.dark .swal2-input {
|
|
background-color: hsl(var(--background)) !important;
|
|
border-color: hsl(var(--border)) !important;
|
|
color: hsl(var(--foreground)) !important;
|
|
}
|
|
|
|
/* Nouveau style pour le bouton de copie de lien */
|
|
.copy-link-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
width: 100%;
|
|
padding: 0.5rem 1rem;
|
|
color: hsl(var(--foreground));
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.copy-link-btn:hover {
|
|
background-color: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
.copy-link-btn i {
|
|
width: 20px;
|
|
text-align: center;
|
|
}
|
|
|
|
/* =================== MODAL COLLABORATION MODERNE =================== */
|
|
.collaboration-modal {
|
|
display: none !important;
|
|
position: fixed !important;
|
|
top: 0 !important;
|
|
left: 0 !important;
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
z-index: 1050 !important;
|
|
background-color: rgba(0, 0, 0, 0.6) !important;
|
|
backdrop-filter: blur(12px) !important;
|
|
-webkit-backdrop-filter: blur(12px) !important;
|
|
animation: overlayShow 0.15s cubic-bezier(0.16, 1, 0.3, 1) !important;
|
|
justify-content: center !important;
|
|
align-items: center !important;
|
|
}
|
|
|
|
.collaboration-modal.show,
|
|
.collaboration-modal[style*="display: block"] {
|
|
display: flex !important;
|
|
}
|
|
|
|
.collaboration-modal .modal-dialog {
|
|
position: relative !important;
|
|
width: 90vw !important;
|
|
max-width: 580px !important;
|
|
max-height: 85vh !important;
|
|
margin: 0 !important;
|
|
transform: none !important;
|
|
}
|
|
|
|
.collaboration-modal .modal-content {
|
|
background: hsl(var(--card)) !important;
|
|
border-radius: 16px !important;
|
|
border: 1px solid hsl(var(--border)) !important;
|
|
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25), 0 0 0 1px rgba(255, 255, 255, 0.05) !important;
|
|
animation: contentShow 0.15s cubic-bezier(0.16, 1, 0.3, 1) !important;
|
|
overflow: hidden !important;
|
|
position: relative !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.collaboration-modal .modal-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 20px 24px 16px;
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
background: hsl(var(--card));
|
|
}
|
|
|
|
.collaboration-modal .modal-title-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
.collaboration-modal .modal-icon {
|
|
width: 24px;
|
|
height: 24px;
|
|
color: hsl(var(--primary));
|
|
font-size: 20px;
|
|
}
|
|
|
|
.collaboration-modal .modal-title {
|
|
margin: 0;
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.collaboration-modal .close {
|
|
background: none;
|
|
border: none;
|
|
color: hsl(var(--muted-foreground));
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: all 0.15s ease;
|
|
cursor: pointer;
|
|
font-size: 16px;
|
|
padding: 0;
|
|
}
|
|
|
|
.collaboration-modal .close:hover {
|
|
background: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
.collaboration-modal .modal-body {
|
|
padding: 24px;
|
|
max-height: calc(85vh - 140px);
|
|
overflow-y: auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24px;
|
|
}
|
|
|
|
/* Sections */
|
|
.collaboration-section {
|
|
background: hsl(var(--background));
|
|
border-radius: 12px;
|
|
border: 1px solid hsl(var(--border));
|
|
overflow: hidden;
|
|
}
|
|
|
|
.collaboration-section-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 16px 20px;
|
|
background: hsl(var(--muted) / 0.3);
|
|
border-bottom: 1px solid hsl(var(--border));
|
|
}
|
|
|
|
.section-title-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.section-icon {
|
|
width: 18px;
|
|
height: 18px;
|
|
color: hsl(var(--primary));
|
|
font-size: 16px;
|
|
}
|
|
|
|
.collaboration-section-title {
|
|
margin: 0;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.collaboration-count-badge {
|
|
background: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
padding: 4px 8px;
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
min-width: 24px;
|
|
text-align: center;
|
|
}
|
|
|
|
/* Liste des utilisateurs */
|
|
.collaboration-users-list {
|
|
padding: 16px 20px;
|
|
}
|
|
|
|
.collaboration-user-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 16px;
|
|
padding: 16px;
|
|
background: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 12px;
|
|
margin-bottom: 12px;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.collaboration-user-item:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.collaboration-user-item:hover {
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
border-color: hsl(var(--primary) / 0.5);
|
|
}
|
|
|
|
.user-avatar-wrapper {
|
|
position: relative;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.user-avatar {
|
|
width: 48px;
|
|
height: 48px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
border: 2px solid hsl(var(--border));
|
|
}
|
|
|
|
.user-status-indicator {
|
|
position: absolute;
|
|
bottom: 2px;
|
|
right: 2px;
|
|
width: 14px;
|
|
height: 14px;
|
|
background: #10b981;
|
|
border: 2px solid hsl(var(--card));
|
|
border-radius: 50%;
|
|
animation: pulse 2s infinite;
|
|
}
|
|
|
|
.user-details {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
.user-name {
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.user-role {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 13px;
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
.user-role i {
|
|
font-size: 12px;
|
|
color: hsl(var(--primary));
|
|
}
|
|
|
|
.user-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
|
|
.action-btn {
|
|
width: 36px;
|
|
height: 36px;
|
|
border: none;
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.remove-btn {
|
|
background: rgba(239, 68, 68, 0.1);
|
|
color: #ef4444;
|
|
}
|
|
|
|
.remove-btn:hover {
|
|
background: #ef4444;
|
|
color: white;
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
/* État vide */
|
|
.collaboration-empty-state {
|
|
text-align: center;
|
|
padding: 40px 20px;
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
.empty-icon {
|
|
font-size: 48px;
|
|
color: hsl(var(--muted-foreground));
|
|
margin-bottom: 16px;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.collaboration-empty-state p {
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
margin: 0 0 8px 0;
|
|
color: hsl(var(--foreground));
|
|
}
|
|
|
|
.collaboration-empty-state span {
|
|
font-size: 14px;
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
/* Conteneur de recherche */
|
|
.collaboration-search-container {
|
|
padding: 20px;
|
|
}
|
|
|
|
.search-input-group {
|
|
display: flex;
|
|
gap: 12px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.search-input-wrapper {
|
|
position: relative;
|
|
flex: 1;
|
|
}
|
|
|
|
.search-icon {
|
|
position: absolute;
|
|
left: 12px;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 14px;
|
|
}
|
|
|
|
.search-input {
|
|
width: 100%;
|
|
padding: 12px 12px 12px 40px;
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 8px;
|
|
background: hsl(var(--card));
|
|
color: hsl(var(--foreground));
|
|
font-size: 14px;
|
|
outline: none;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.search-input:focus {
|
|
border-color: hsl(var(--primary));
|
|
box-shadow: 0 0 0 3px hsl(var(--primary) / 0.1);
|
|
}
|
|
|
|
.search-input::placeholder {
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
.search-btn {
|
|
padding: 12px 20px;
|
|
border: none;
|
|
border-radius: 8px;
|
|
background: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.search-btn:hover {
|
|
background: hsl(var(--primary) / 0.9);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
/* Résultats de recherche */
|
|
.search-results {
|
|
min-height: 60px;
|
|
}
|
|
|
|
.search-loading,
|
|
.search-no-result,
|
|
.search-error {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 12px;
|
|
padding: 24px;
|
|
background: hsl(var(--muted) / 0.3);
|
|
border-radius: 8px;
|
|
color: hsl(var(--muted-foreground));
|
|
font-size: 14px;
|
|
}
|
|
|
|
.search-loading i {
|
|
color: hsl(var(--primary));
|
|
}
|
|
|
|
.search-error {
|
|
color: #ef4444;
|
|
}
|
|
|
|
.search-result-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
padding: 16px;
|
|
background: hsl(var(--card));
|
|
border: 1px solid hsl(var(--border));
|
|
border-radius: 8px;
|
|
animation: slideInUp 0.3s ease;
|
|
}
|
|
|
|
.result-user-info {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
flex: 1;
|
|
}
|
|
|
|
.result-avatar-wrapper {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.result-avatar {
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
border: 2px solid hsl(var(--border));
|
|
}
|
|
|
|
.result-details {
|
|
flex: 1;
|
|
}
|
|
|
|
.result-name {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
color: hsl(var(--foreground));
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.result-status {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 12px;
|
|
color: hsl(var(--muted-foreground));
|
|
}
|
|
|
|
.result-status i {
|
|
color: #10b981;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.add-user-btn {
|
|
padding: 8px 16px;
|
|
border: none;
|
|
border-radius: 6px;
|
|
background: hsl(var(--primary));
|
|
color: hsl(var(--primary-foreground));
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.add-user-btn:hover {
|
|
background: hsl(var(--primary) / 0.9);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
/* Footer et boutons */
|
|
.collaboration-modal .modal-footer {
|
|
border-top: 1px solid hsl(var(--border));
|
|
padding: 16px 24px;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 12px;
|
|
background: hsl(var(--background) / 0.5);
|
|
}
|
|
|
|
.collaboration-modal .btn {
|
|
border-radius: 8px;
|
|
padding: 10px 16px;
|
|
font-weight: 500;
|
|
font-size: 14px;
|
|
transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
border: none;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.collaboration-modal .btn:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.collaboration-modal .btn-danger {
|
|
background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
|
|
color: white;
|
|
}
|
|
|
|
.collaboration-modal .btn-danger:hover {
|
|
background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
|
|
box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
|
|
}
|
|
|
|
.collaboration-modal .btn-secondary {
|
|
background: hsl(var(--secondary));
|
|
color: hsl(var(--secondary-foreground));
|
|
border: 1px solid hsl(var(--border));
|
|
}
|
|
|
|
.collaboration-modal .btn-secondary:hover {
|
|
background: hsl(var(--accent));
|
|
color: hsl(var(--accent-foreground));
|
|
}
|
|
|
|
/* Animations */
|
|
@keyframes overlayShow {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
@keyframes contentShow {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.96);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@keyframes slideInUp {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0%, 100% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
50% {
|
|
opacity: 0.6;
|
|
transform: scale(0.95);
|
|
}
|
|
}
|
|
|
|
/* Badge de collaboration amélioré */
|
|
.collaboration-badge {
|
|
background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
|
|
color: white;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 20px;
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
transition: all 0.2s ease;
|
|
animation: fadeIn 0.3s ease;
|
|
}
|
|
|
|
.collaboration-badge.badge-secondary {
|
|
background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);
|
|
}
|
|
|
|
.collaboration-badge:hover {
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.active-users-count {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
border-radius: 10px;
|
|
padding: 0.125rem 0.375rem;
|
|
font-size: 0.6875rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Mode sombre */
|
|
.dark .collaboration-modal .modal-content {
|
|
background: hsl(var(--card));
|
|
border-color: hsl(var(--border));
|
|
box-shadow:
|
|
0 25px 50px -12px rgba(0, 0, 0, 0.5),
|
|
0 0 0 1px rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
.dark .collaboration-section {
|
|
background: hsl(var(--background));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .collaboration-user-item {
|
|
background: hsl(var(--background));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .search-input {
|
|
background: hsl(var(--background));
|
|
color: hsl(var(--foreground));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
.dark .search-result-item {
|
|
background: hsl(var(--background));
|
|
border-color: hsl(var(--border));
|
|
}
|
|
|
|
/* Responsive */
|
|
@media (max-width: 640px) {
|
|
.collaboration-modal .modal-dialog {
|
|
width: 95vw;
|
|
max-width: none;
|
|
margin: 8px;
|
|
}
|
|
|
|
.collaboration-modal .modal-header,
|
|
.collaboration-modal .modal-body {
|
|
padding-left: 16px;
|
|
padding-right: 16px;
|
|
}
|
|
|
|
.collaboration-modal .modal-footer {
|
|
padding: 12px 16px;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.collaboration-modal .btn {
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
|
|
.search-input-group {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.search-btn {
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
|
|
.collaboration-user-item {
|
|
padding: 12px;
|
|
gap: 12px;
|
|
}
|
|
|
|
.user-avatar {
|
|
width: 40px;
|
|
height: 40px;
|
|
}
|
|
|
|
.search-result-item {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
gap: 12px;
|
|
}
|
|
|
|
.result-user-info {
|
|
justify-content: center;
|
|
}
|
|
|
|
.add-user-btn {
|
|
width: 100%;
|
|
justify-content: center;
|
|
}
|
|
|
|
.user-item {
|
|
padding: 10px;
|
|
}
|
|
|
|
.user-avatar {
|
|
width: 36px;
|
|
height: 36px;
|
|
}
|
|
}
|
|
|
|
/* Badge de collaboration amélioré */
|
|
.collaboration-badge {
|
|
background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
|
|
color: white;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 20px;
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
transition: all 0.2s ease;
|
|
animation: fadeIn 0.3s ease;
|
|
}
|
|
|
|
.collaboration-badge.badge-secondary {
|
|
background: linear-gradient(135deg, #6b7280 0%, #4b5563 100%);
|
|
}
|
|
|
|
.collaboration-badge:hover {
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.active-users-count {
|
|
background: rgba(255, 255, 255, 0.2);
|
|
border-radius: 10px;
|
|
padding: 0.125rem 0.375rem;
|
|
font-size: 0.6875rem;
|
|
font-weight: 600;
|
|
} |