Files
eveAI/eveai_app/static/assets/css/eveai-forms.css
Josako acad28b623 - Introduction of eveai-listview (to select objects) that is sortable, filterable, ...
- npm build does now also include building css files.
- Source javascript and css are now defined in the source directories (eveai_app or eveai_chat_client), and automatically built for use with nginx
- eveai.css is now split into several more manageable files (per control type)
2025-07-11 15:25:28 +02:00

211 lines
6.1 KiB
CSS

/* Form and Input Fields ----------------------------------------------------------------------- */
.form-group label.form-label {
color: var(--bs-secondary) !important; /* Secondary color for labels */
font-weight: 500; /* Slightly bolder labels */
}
.form-group:last-of-type {
margin-bottom: 2rem; /* Adjust this value to control spacing */
}
.form-control {
background-color: var(--bs-light) !important; /* Light background for input fields */
border-color: var(--bs-secondary) !important; /* Secondary color for borders */
color: var(--bs-body-color) !important; /* Text color consistent with the theme */
}
/* Style for both disabled and readonly fields - same gray background */
.form-control:disabled,
.form-control[readonly] {
background-color: var(--bs-gray-100) !important; /* Gray background */
color: var(--bs-gray-600) !important; /* Dimmed text color */
}
.form-check-input:checked {
background-color: var(--bs-primary) !important; /* Primary color for checked checkboxes */
border-color: var(--bs-primary) !important; /* Primary color for checkbox border */
}
.form-check-label {
color: var(--bs-body-color) !important; /* Consistent text color for check labels */
}
/* Tabs Navigation ----------------------------------------------------------------------------- */
.nav-pills .nav-link {
color: var(--bs-primary) !important; /* Primary color for inactive tab text */
border-radius: 0.375rem !important; /* Rounded corners for tabs */
transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transitions */
}
.nav-pills .nav-link.active {
background-color: var(--bs-primary) !important; /* Primary background for active tab */
color: var(--bs-white) !important; /* White text for active tab */
}
.nav-pills .nav-link:hover {
background-color: var(--bs-secondary) !important; /* Secondary background on hover */
color: var(--bs-white) !important; /* White text on hover */
}
/* Tabs Content -------------------------------------------------------------------------------- */
.tab-pane {
padding-top: 1rem; /* Consistent padding inside tabs */
}
.moving-tab {
background-color: var(--bs-primary) !important; /* Primary color for the moving tab indicator */
}
/* Buttons ------------------------------------------------------------------------------------- */
.btn-primary:hover {
background-color: var(--bs-secondary) !important;
border-color: var(--bs-secondary) !important;
}
#copy-message {
color: var(--bs-success) !important; /* Success color for the copy message */
}
/* Danger Button Styling */
.btn-danger {
background-color: var(--bs-danger) !important; /* Use the danger color from the EveAI theme */
border-color: var(--bs-danger) !important;
color: var(--bs-white) !important; /* Ensure text is white for readability */
transition: background-color 0.3s ease, color 0.3s ease; /* Smooth transition on hover */
}
.btn-danger:hover {
background-color: var(--bs-secondary) !important;
border-color: var(--bs-secondary) !important;
color: var(--bs-white) !important; /* Ensure the text remains white and readable */
}
/* Success Alert Styling */
.alert-success {
background-color: var(--bs-success) !important; /* EveAI success background color */
color: var(--bs-dark) !important; /* Dark color for the text for better readability */
border-color: var(--bs-success) !important; /* Matching border color */
border-radius: 0.375rem; /* Rounded corners for the alert box */
padding: 1rem; /* Consistent padding */
box-shadow: 0px 4px 10px rgba(118, 89, 154, 0.2); /* Soft shadow for some depth */
}
.alert-success .alert-heading {
color: var(--bs-dark) !important; /* Ensure the heading stands out */
font-weight: 600; /* Slightly bolder heading */
}
.alert-success p {
margin-bottom: 0; /* Remove extra margin from paragraphs inside alerts */
}
.form-control {
border: 1px solid #d2d6da;
padding: 0.625rem 0.75rem;
}
.form-control:focus {
color: #495057;
background-color: transparent;
border-color: #d2d6da;
outline: 0;
box-shadow: none;
}
/* REQUIRED FIELD SETTINGS --------------------------------------------------------------------- */
/* Required field indicator styling */
.field-label-wrapper {
display: flex;
align-items: baseline; /* Changed from center to baseline for proper text alignment */
gap: 0.25rem;
}
.required-field-indicator {
display: inline-flex;
align-items: baseline; /* Match the wrapper's alignment */
}
.required-field-indicator .required-icon {
font-size: 0.7rem;
transition: transform 0.2s ease-in-out;
opacity: 0.8;
line-height: 1; /* Ensure proper vertical alignment */
}
/* Hover animation */
.field-label-wrapper:hover .required-icon {
transform: scale(1.2);
opacity: 1;
}
/* Animation when field is invalid */
.is-invalid + .field-label-wrapper .required-icon {
color: var(--bs-danger);
animation: pulse 1s infinite;
}
@keyframes pulse {
0% {
transform: scale(1);
opacity: 0.8;
}
50% {
transform: scale(1.2);
opacity: 1;
}
100% {
transform: scale(1);
opacity: 0.8;
}
}
/* Hide visually but maintain accessibility */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* TAB ERROR STYLES ---------------------------------------------------------------------------- */
/* Style for tabs with errors */
.nav-link.has-error {
position: relative;
}
.nav-link.has-error::after {
content: '';
position: absolute;
top: 0;
right: 0;
width: 8px;
height: 8px;
background-color: var(--bs-danger);
border-radius: 50%;
transform: translate(50%, -50%);
}
/* Enhance the invalid field visualization */
.form-control:invalid {
border-color: var(--bs-danger);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
/* Add smooth transition for tab changes */
.tab-pane {
transition: opacity 0.15s linear;
}
.tab-pane.fade {
opacity: 0;
}
.tab-pane.fade.show {
opacity: 1;
}