maybe good

This commit is contained in:
HotSwapp
2025-08-08 15:55:15 -05:00
parent ab6f163c15
commit b257a06787
80 changed files with 19739 additions and 0 deletions

259
static/css/components.css Normal file
View File

@@ -0,0 +1,259 @@
/* Delphi Database System - Component Styles */
/* Login Component */
.login-page {
background-color: #f8f9fa;
}
.login-card {
max-width: 400px;
margin: 2rem auto;
}
.login-logo {
height: 60px;
margin-bottom: 1rem;
}
.login-form .input-group-text {
background-color: #e9ecef;
border-right: none;
}
.login-form .form-control {
border-left: none;
}
.login-form .form-control:focus {
border-left: none;
box-shadow: none;
}
.login-status {
margin-top: 1rem;
}
/* Customer Management Component */
.customer-search-panel {
background-color: white;
border-radius: 0.5rem;
padding: 1.5rem;
margin-bottom: 1.5rem;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
.customer-table-container {
background-color: white;
border-radius: 0.5rem;
overflow: hidden;
}
.customer-modal .modal-dialog {
max-width: 90%;
}
.customer-form-section {
margin-bottom: 1.5rem;
}
.customer-form-section .card-header {
background-color: #f8f9fa;
border-bottom: 1px solid #dee2e6;
font-weight: 600;
}
.phone-entry {
background-color: #f8f9fa;
padding: 0.75rem;
border-radius: 0.375rem;
margin-bottom: 0.5rem;
}
.phone-entry:last-child {
margin-bottom: 0;
}
/* Statistics Modal */
.stats-modal .modal-body {
background-color: #f8f9fa;
}
.stats-section {
background-color: white;
border-radius: 0.375rem;
padding: 1rem;
margin-bottom: 1rem;
}
/* Navigation Component */
.navbar-shortcuts small {
font-size: 0.7rem;
opacity: 0.8;
}
.keyboard-shortcuts-modal .modal-body {
background-color: #f8f9fa;
}
.shortcuts-section {
background-color: white;
border-radius: 0.375rem;
padding: 1rem;
margin-bottom: 1rem;
}
/* Dashboard Component */
.dashboard-card {
transition: transform 0.2s ease-in-out;
}
.dashboard-card:hover {
transform: translateY(-2px);
}
.dashboard-stats {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border-radius: 1rem;
}
.recent-activity {
max-height: 400px;
overflow-y: auto;
}
.activity-item {
border-left: 3px solid var(--delphi-primary);
padding-left: 1rem;
margin-bottom: 1rem;
}
.activity-item:last-child {
margin-bottom: 0;
}
/* Form Components */
.form-floating-custom .form-control {
height: calc(3.5rem + 2px);
line-height: 1.25;
}
.form-floating-custom .form-control::placeholder {
color: transparent;
}
.form-floating-custom .form-control:focus ~ .form-label,
.form-floating-custom .form-control:not(:placeholder-shown) ~ .form-label {
opacity: 0.65;
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
}
/* Search Components */
.search-results {
position: absolute;
top: 100%;
left: 0;
right: 0;
background-color: white;
border: 1px solid #dee2e6;
border-top: none;
border-radius: 0 0 0.375rem 0.375rem;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
z-index: 1000;
max-height: 300px;
overflow-y: auto;
}
.search-result-item {
padding: 0.75rem 1rem;
border-bottom: 1px solid #f8f9fa;
cursor: pointer;
transition: background-color 0.15s ease-in-out;
}
.search-result-item:hover {
background-color: #f8f9fa;
}
.search-result-item:last-child {
border-bottom: none;
}
/* Notification Components */
#notification-container,
.notification-container {
z-index: 1070 !important;
}
#notification-container {
position: fixed;
top: 1rem;
right: 1rem;
width: 300px;
}
.notification {
margin-bottom: 0.5rem;
animation: slideInRight 0.3s ease-out;
}
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(100%);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Loading Components */
.loading-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(255, 255, 255, 0.8);
display: flex;
justify-content: center;
align-items: center;
z-index: 1000;
}
.loading-spinner {
width: 2rem;
height: 2rem;
border: 0.25rem solid #f3f3f3;
border-top: 0.25rem solid var(--delphi-primary);
border-radius: 50%;
animation: spin 1s linear infinite;
}
/* Table Components */
.sortable-header {
cursor: pointer;
user-select: none;
}
.sortable-header:hover {
background-color: rgba(255, 255, 255, 0.1);
}
.sortable-header.sort-asc::after {
content: " ↑";
}
.sortable-header.sort-desc::after {
content: " ↓";
}
/* Form Validation */
.invalid-feedback.hidden {
display: none;
}
.invalid-feedback.visible {
display: block;
}

236
static/css/main.css Normal file
View File

@@ -0,0 +1,236 @@
/* Delphi Consulting Group Database System - Main Styles */
/* Variables */
:root {
--delphi-primary: #0d6efd;
--delphi-secondary: #6c757d;
--delphi-success: #198754;
--delphi-info: #0dcaf0;
--delphi-warning: #ffc107;
--delphi-danger: #dc3545;
--delphi-dark: #212529;
}
/* Body and base styles */
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
background-color: #f8f9fa;
}
/* Navigation customizations */
.navbar-brand img {
filter: brightness(0) invert(1);
}
/* Card customizations */
.card {
border: none;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
transition: box-shadow 0.15s ease-in-out;
}
.card:hover {
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
/* Button customizations */
.btn {
border-radius: 0.375rem;
font-weight: 500;
}
.btn-lg small {
font-size: 0.75rem;
font-weight: 400;
}
/* Form customizations */
.form-control {
border-radius: 0.375rem;
}
.form-control:focus {
border-color: var(--delphi-primary);
box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);
}
/* Table customizations */
.table {
background-color: white;
}
.table th {
border-top: none;
background-color: var(--delphi-primary);
color: white;
font-weight: 600;
}
.table tbody tr:hover {
background-color: rgba(13, 110, 253, 0.05);
}
/* Keyboard shortcut styling */
kbd {
background-color: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
color: #495057;
font-size: 0.8rem;
padding: 0.125rem 0.25rem;
}
.nav-link small {
opacity: 0.7;
font-size: 0.7rem;
}
/* Modal customizations */
.modal-content {
border: none;
box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175);
}
.modal-header {
background-color: var(--delphi-primary);
color: white;
}
.modal-header .btn-close {
filter: invert(1);
}
/* Status badges */
.badge {
font-size: 0.8em;
font-weight: 500;
}
/* Utility classes */
.text-primary { color: var(--delphi-primary) !important; }
.text-secondary { color: var(--delphi-secondary) !important; }
.text-success { color: var(--delphi-success) !important; }
.text-info { color: var(--delphi-info) !important; }
.text-warning { color: var(--delphi-warning) !important; }
.text-danger { color: var(--delphi-danger) !important; }
.bg-primary { background-color: var(--delphi-primary) !important; }
.bg-secondary { background-color: var(--delphi-secondary) !important; }
.bg-success { background-color: var(--delphi-success) !important; }
.bg-info { background-color: var(--delphi-info) !important; }
.bg-warning { background-color: var(--delphi-warning) !important; }
.bg-danger { background-color: var(--delphi-danger) !important; }
/* Animation classes */
.fade-in {
animation: fadeIn 0.3s ease-in;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Responsive adjustments */
@media (max-width: 768px) {
.container-fluid {
padding-left: 1rem;
padding-right: 1rem;
}
.nav-link small {
display: none;
}
.btn-lg small {
display: none;
}
}
/* Loading spinner */
.spinner {
display: inline-block;
width: 1rem;
height: 1rem;
border: 2px solid #f3f3f3;
border-top: 2px solid var(--delphi-primary);
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Error and success messages */
.alert {
border: none;
border-radius: 0.5rem;
}
.alert-dismissible .btn-close {
padding: 1rem 0.75rem;
}
/* Data tables */
.table-responsive {
border-radius: 0.5rem;
overflow: hidden;
}
/* Form sections */
.form-section {
background: white;
border-radius: 0.5rem;
padding: 1.5rem;
margin-bottom: 1.5rem;
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}
.form-section h5 {
color: var(--delphi-primary);
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid #e9ecef;
}
/* Pagination */
.pagination {
margin-bottom: 0;
}
.page-link {
color: var(--delphi-primary);
}
.page-item.active .page-link {
background-color: var(--delphi-primary);
border-color: var(--delphi-primary);
}
/* Visibility utility classes */
.hidden {
display: none !important;
}
.visible {
display: block !important;
}
.visible-inline {
display: inline !important;
}
.visible-inline-block {
display: inline-block !important;
}
/* Customer management specific styles */
.delete-customer-btn {
display: none;
}
.delete-customer-btn.show {
display: inline-block;
}

198
static/css/themes.css Normal file
View File

@@ -0,0 +1,198 @@
/* Delphi Database System - Theme Styles */
/* Light Theme (Default) */
:root {
--delphi-primary: #0d6efd;
--delphi-primary-dark: #0b5ed7;
--delphi-primary-light: #6ea8fe;
--delphi-secondary: #6c757d;
--delphi-success: #198754;
--delphi-info: #0dcaf0;
--delphi-warning: #ffc107;
--delphi-danger: #dc3545;
--delphi-light: #f8f9fa;
--delphi-dark: #212529;
/* Background colors */
--bg-primary: #ffffff;
--bg-secondary: #f8f9fa;
--bg-tertiary: #e9ecef;
/* Text colors */
--text-primary: #212529;
--text-secondary: #6c757d;
--text-muted: #868e96;
/* Border colors */
--border-color: #dee2e6;
--border-light: #f8f9fa;
/* Shadow */
--shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
}
/* Dark Theme */
[data-theme="dark"] {
--delphi-primary: #6ea8fe;
--delphi-primary-dark: #0b5ed7;
--delphi-primary-light: #9ec5fe;
--delphi-secondary: #adb5bd;
--delphi-success: #20c997;
--delphi-info: #39d7f0;
--delphi-warning: #ffcd39;
--delphi-danger: #ea868f;
--delphi-light: #495057;
--delphi-dark: #f8f9fa;
/* Background colors */
--bg-primary: #212529;
--bg-secondary: #343a40;
--bg-tertiary: #495057;
/* Text colors */
--text-primary: #f8f9fa;
--text-secondary: #adb5bd;
--text-muted: #6c757d;
/* Border colors */
--border-color: #495057;
--border-light: #343a40;
/* Shadow */
--shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.25);
--shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.35);
--shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.45);
}
/* High Contrast Theme */
[data-theme="high-contrast"] {
--delphi-primary: #0000ff;
--delphi-primary-dark: #000080;
--delphi-primary-light: #4040ff;
--delphi-secondary: #808080;
--delphi-success: #008000;
--delphi-info: #008080;
--delphi-warning: #ff8000;
--delphi-danger: #ff0000;
--delphi-light: #ffffff;
--delphi-dark: #000000;
/* Background colors */
--bg-primary: #ffffff;
--bg-secondary: #f0f0f0;
--bg-tertiary: #e0e0e0;
/* Text colors */
--text-primary: #000000;
--text-secondary: #404040;
--text-muted: #606060;
/* Border colors */
--border-color: #000000;
--border-light: #808080;
/* Shadow */
--shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.5);
--shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.7);
--shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.8);
}
/* Apply theme variables to components */
body {
background-color: var(--bg-secondary);
color: var(--text-primary);
}
.card {
background-color: var(--bg-primary);
border-color: var(--border-color);
box-shadow: var(--shadow-sm);
}
.navbar-dark {
background-color: var(--delphi-primary) !important;
}
.table {
background-color: var(--bg-primary);
color: var(--text-primary);
}
.table th {
background-color: var(--delphi-primary);
border-color: var(--border-color);
}
.table td {
border-color: var(--border-color);
}
.form-control {
background-color: var(--bg-primary);
border-color: var(--border-color);
color: var(--text-primary);
}
.form-control:focus {
border-color: var(--delphi-primary);
box-shadow: 0 0 0 0.2rem rgba(var(--delphi-primary), 0.25);
}
.modal-content {
background-color: var(--bg-primary);
border-color: var(--border-color);
}
.modal-header {
background-color: var(--delphi-primary);
border-color: var(--border-color);
}
.btn-primary {
background-color: var(--delphi-primary);
border-color: var(--delphi-primary);
}
.btn-primary:hover {
background-color: var(--delphi-primary-dark);
border-color: var(--delphi-primary-dark);
}
.alert {
border-color: var(--border-color);
}
/* Theme transition */
* {
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
/* Print styles */
@media print {
:root {
--delphi-primary: #000000;
--bg-primary: #ffffff;
--bg-secondary: #ffffff;
--text-primary: #000000;
--border-color: #000000;
}
.navbar, .btn, .modal, .alert {
display: none !important;
}
.card {
border: 1px solid #000000;
box-shadow: none;
}
}
/* Reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
* {
transition: none !important;
animation: none !important;
}
}