/** * Ausgelagerte Styles für das generische Entitätsmodul * Optimiert für kompakte Buttons ohne Zeilenumbruch */ /* ===== ENTITY TABLE STYLES ===== */ .entity-table-wrapper { width: 100%; overflow-x: auto; } .entity-actions { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.75rem; } .entity-bulk-actions { display: flex; align-items: center; gap: 0.5rem; } .entity-selection-count { font-size: 0.75rem; color: #6b7280; } .entity-filter { display: flex; align-items: center; } .entity-search { padding: 0.375rem; border: 1px solid #d1d5db; border-radius: 0.25rem; margin-right: 0.5rem; font-size: 0.875rem; } .entity-table-container { margin-bottom: 1rem; border: 1px solid #e5e7eb; border-radius: 0.25rem; overflow: hidden; } .entity-table { width: 100%; border-collapse: collapse; } .entity-table th, .entity-table td { padding: 0.5rem; text-align: left; border-bottom: 1px solid #e5e7eb; } .entity-table th { background-color: #f9fafb; font-weight: 500; } .entity-table th.sortable { cursor: pointer; } .entity-table th.sortable:hover { background-color: #f3f4f6; } /* Checkbox und ID Columns */ .entity-checkbox-column { width: 36px; } .entity-id-column { width: 50px; } /* Aktionen-Spalte breiter und mit fester Breite */ .entity-actions-column { width: 120px; /* Feste Breite */ min-width: 120px; /* Mindestbreite, verhindert Umbrüche */ } .entity-checkbox-cell, .entity-id-cell { white-space: nowrap; } /* Tabellenzelle für Aktionen mit fester Breite */ .entity-actions-cell { white-space: nowrap; width: 120px; min-width: 120px; max-width: 120px; } /* Pagination */ .entity-pagination { display: flex; align-items: center; justify-content: center; gap: 0.5rem; font-size: 0.875rem; } .entity-page-prev, .entity-page-next { padding: 0.25rem 0.5rem; border-radius: 0.25rem; background-color: #f3f4f6; } .entity-page-prev:disabled, .entity-page-next:disabled { opacity: 0.5; cursor: not-allowed; } .entity-items-per-page { padding: 0.25rem; border: 1px solid #d1d5db; border-radius: 0.25rem; } /* Empty and Loading States */ .entity-empty-state { text-align: center; padding: 2rem; } .entity-add-btn-empty { margin-top: 0.5rem; padding: 0.375rem 0.75rem; background-color: #3b82f6; color: white; border-radius: 0.25rem; } .entity-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem; } .entity-spinner { width: 2rem; height: 2rem; border: 3px solid #e5e7eb; border-top-color: #3b82f6; border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 0.5rem; } @keyframes spin { to { transform: rotate(360deg); } } .entity-error { background-color: #fee2e2; color: #b91c1c; padding: 0.75rem; border-radius: 0.25rem; margin-bottom: 1rem; } .entity-retry-btn { background-color: #ef4444; color: white; padding: 0.25rem 0.5rem; border-radius: 0.25rem; margin-top: 0.5rem; } /* Row Actions Container - nebeneinander ohne Umbruch */ .entity-row-actions, .entity-custom-actions { display: flex; flex-wrap: nowrap; /* Verhindert Umbrüche */ gap: 4px; /* Kleinerer Abstand */ } /* Kleinere optimierte Button-Styles */ .entity-action-btn, .entity-view-btn, .entity-edit-btn, .entity-delete-btn, .entity-custom-btn, .entity-use-btn, .entity-copy-btn, .entity-activate-btn, .entity-deactivate-btn, .entity-reset-btn, .entity-download-btn, .entity-default-btn { display: inline-flex; align-items: center; justify-content: center; width: 1.25rem; /* Kleinere Buttons */ height: 1.25rem; /* Kleinere Buttons */ border-radius: 0.25rem; color: white; font-size: 0.7rem; /* Kleinere Icons */ position: relative; padding: 0; /* Kein Padding */ margin: 0 1px; /* Kleinerer Rand */ min-width: 1.25rem; /* Feste Mindestbreite */ } /* Tooltips für Buttons ohne Text - nach unten positioniert für bessere Sichtbarkeit */ .entity-action-btn::before, .entity-view-btn::before, .entity-edit-btn::before, .entity-delete-btn::before, .entity-custom-btn::before, .entity-use-btn::before, .entity-copy-btn::before, .entity-activate-btn::before, .entity-deactivate-btn::before, .entity-reset-btn::before, .entity-download-btn::before, .entity-default-btn::before { content: attr(data-tooltip); position: absolute; bottom: -25px; /* Unter dem Button anzeigen statt oben */ left: 50%; transform: translateX(-50%); background-color: #333; color: white; padding: 2px 6px; border-radius: 3px; font-size: 0.7rem; white-space: nowrap; visibility: hidden; opacity: 0; transition: opacity 0.3s; z-index: 10; /* Höherer z-index */ } .entity-action-btn:hover::before, .entity-view-btn:hover::before, .entity-edit-btn:hover::before, .entity-delete-btn:hover::before, .entity-custom-btn:hover::before, .entity-use-btn:hover::before, .entity-copy-btn:hover::before, .entity-activate-btn:hover::before, .entity-deactivate-btn:hover::before, .entity-reset-btn:hover::before, .entity-download-btn:hover::before, .entity-default-btn:hover::before { visibility: visible; opacity: 1; } /* Farben für verschiedene Button-Typen */ .entity-view-btn { background-color: #3b82f6; } .entity-edit-btn { background-color: #10b981; } .entity-delete-btn { background-color: #ef4444; } .entity-copy-btn { background-color: #6b7280; } .entity-use-btn { background-color: #059669; } .entity-activate-btn { background-color: #16a34a; } .entity-deactivate-btn { background-color: #dc2626; } .entity-reset-btn { background-color: #f59e0b; } .entity-download-btn { background-color: #8b5cf6; } .entity-default-btn { background-color: #f59e0b; } .entity-add-btn { background-color: #3b82f6; color: white; padding: 0.375rem 0.75rem; border-radius: 0.25rem; font-size: 0.875rem; display: inline-flex; align-items: center; gap: 0.25rem; } .entity-add-btn:hover { background-color: #2563eb; } .entity-bulk-delete-btn { background-color: #ef4444; color: white; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.75rem; } .entity-bulk-delete-btn:hover { background-color: #dc2626; } /* ===== ENTITY MODAL STYLES ===== */ .entity-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1000; } .entity-modal-content { background-color: white; border-radius: 0.375rem; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); width: 90%; max-width: 500px; max-height: 90vh; overflow-y: auto; } .entity-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem; border-bottom: 1px solid #e0e0e0; } .entity-modal-header h3 { margin: 0; font-size: 1rem; } .entity-modal-close { background: none; border: none; font-size: 1.25rem; cursor: pointer; } .entity-modal-body { padding: 0.75rem; } .entity-modal-footer { padding: 0.75rem; display: flex; justify-content: flex-end; gap: 0.5rem; border-top: 1px solid #e0e0e0; } .entity-modal-save, .entity-modal-cancel, .entity-modal-edit, .entity-modal-delete { padding: 0.375rem 0.75rem; border-radius: 0.25rem; font-size: 0.875rem; cursor: pointer; } .entity-modal-save, .entity-modal-edit { background-color: #2563eb; color: white; } .entity-modal-cancel { background-color: #f3f4f6; color: #4b5563; } .entity-modal-delete { background-color: #ef4444; color: white; } /* Entity form */ .entity-form { width: 100%; } .entity-form-fields { display: flex; flex-direction: column; gap: 0.75rem; } .entity-form-group { margin-bottom: 0.5rem; } .entity-form-group label { display: block; font-weight: 500; margin-bottom: 0.375rem; font-size: 0.875rem; } .entity-form-group input, .entity-form-group textarea, .entity-form-group select { width: 100%; padding: 0.5rem; border: 1px solid #d1d5db; border-radius: 0.25rem; font-size: 0.875rem; } /* Entity Details */ .entity-details { margin-bottom: 1rem; } .entity-detail-row { display: flex; margin-bottom: 0.5rem; border-bottom: 1px solid #f3f4f6; padding-bottom: 0.5rem; } .entity-detail-label { font-weight: 500; width: 30%; color: #4b5563; } .entity-detail-value { width: 70%; } .entity-custom-details { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #e5e7eb; }