Files
michaelschiemer/resources/css/components/admin/admin-forms.css
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

317 lines
6.6 KiB
CSS

/**
* Admin Form Components
*
* Form controls, filters, and input elements for admin interfaces
* Extended from base form styles with admin-specific enhancements
*/
/* Form Groups */
.admin-form-group {
margin-bottom: var(--space-lg);
}
.admin-form-group__label {
display: block;
font-weight: 500;
color: var(--text);
margin-bottom: var(--space-sm);
font-size: 0.875rem;
}
.admin-form-group__label--required::after {
content: ' *';
color: var(--error);
}
.admin-form-group__help {
color: var(--muted);
font-size: 0.75rem;
margin-top: var(--space-sm);
}
.admin-form-group__error {
color: var(--error);
font-size: 0.75rem;
margin-top: var(--space-sm);
}
/* Input Fields */
.admin-input {
width: 100%;
padding: var(--space-sm) var(--space-md);
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg);
color: var(--text);
font-size: 0.875rem;
transition: all var(--duration-default) var(--easing-default);
}
.admin-input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px oklch(from var(--accent) l c h / 0.1);
}
.admin-input:invalid {
border-color: var(--error);
}
.admin-input:invalid:focus {
box-shadow: 0 0 0 3px oklch(from var(--error) l c h / 0.1);
}
.admin-input--small {
padding: 0.25rem var(--space-sm);
font-size: 0.75rem;
}
.admin-input--large {
padding: var(--space-md) var(--space-lg);
font-size: 1rem;
}
/* Select Fields */
.admin-select {
appearance: none;
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M6 9l6 6 6-6'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right var(--space-sm) center;
background-size: 1rem 1rem;
padding-right: calc(var(--space-md) + 1.5rem);
}
/* Textarea */
.admin-textarea {
min-height: 100px;
resize: vertical;
font-family: inherit;
}
/* Search Fields */
.admin-search {
position: relative;
display: inline-block;
}
.admin-search__input {
padding-left: calc(var(--space-md) + 1.5rem);
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3ccircle cx='11' cy='11' r='8'/%3e%3cpath d='m21 21-4.35-4.35'/%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: left var(--space-sm) center;
background-size: 1rem 1rem;
}
.admin-search__clear {
position: absolute;
right: var(--space-sm);
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
color: var(--muted);
cursor: pointer;
font-size: 1rem;
padding: 0.25rem;
border-radius: var(--radius-md);
}
.admin-search__clear:hover {
background: oklch(from var(--border) l c h / 0.5);
}
/* Filter Bar */
.admin-filter-bar {
display: flex;
gap: var(--space-md);
align-items: center;
padding: var(--space-md);
background: var(--bg-alt);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
margin-bottom: var(--space-lg);
flex-wrap: wrap;
}
.admin-filter-bar__group {
display: flex;
gap: var(--space-sm);
align-items: center;
}
.admin-filter-bar__label {
font-size: 0.75rem;
font-weight: 500;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.05em;
white-space: nowrap;
}
.admin-filter-bar__input {
min-width: 120px;
}
.admin-filter-bar__actions {
margin-left: auto;
display: flex;
gap: var(--space-sm);
}
/* Button Groups */
.admin-button-group {
display: inline-flex;
border-radius: var(--radius-md);
overflow: hidden;
border: 1px solid var(--border);
}
.admin-button-group .admin-button {
border-radius: 0;
border: none;
border-right: 1px solid var(--border);
}
.admin-button-group .admin-button:last-child {
border-right: none;
}
.admin-button-group .admin-button.active {
background: var(--accent);
color: var(--bg);
}
/* Toggle Switches */
.admin-toggle {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
}
.admin-toggle__input {
opacity: 0;
width: 0;
height: 0;
}
.admin-toggle__slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--border);
transition: var(--duration-default);
border-radius: 24px;
}
.admin-toggle__slider:before {
position: absolute;
content: "";
height: 18px;
width: 18px;
left: 3px;
bottom: 3px;
background: var(--bg);
transition: var(--duration-default);
border-radius: 50%;
}
.admin-toggle__input:checked + .admin-toggle__slider {
background: var(--accent);
}
.admin-toggle__input:checked + .admin-toggle__slider:before {
transform: translateX(20px);
}
/* Checkbox/Radio Groups */
.admin-checkbox-group,
.admin-radio-group {
display: flex;
flex-direction: column;
gap: var(--space-sm);
}
.admin-checkbox-group--horizontal,
.admin-radio-group--horizontal {
flex-direction: row;
flex-wrap: wrap;
gap: var(--space-md);
}
.admin-checkbox,
.admin-radio {
display: flex;
align-items: center;
gap: var(--space-sm);
cursor: pointer;
}
.admin-checkbox__input,
.admin-radio__input {
width: 1rem;
height: 1rem;
accent-color: var(--accent);
}
.admin-checkbox__label,
.admin-radio__label {
font-size: 0.875rem;
color: var(--text);
}
/* Form Actions */
.admin-form-actions {
display: flex;
gap: var(--space-md);
justify-content: flex-end;
padding-top: var(--space-lg);
border-top: 1px solid var(--border);
margin-top: var(--space-lg);
}
.admin-form-actions--left {
justify-content: flex-start;
}
.admin-form-actions--center {
justify-content: center;
}
.admin-form-actions--space-between {
justify-content: space-between;
}
/* Responsive */
@media (max-width: 768px) {
.admin-filter-bar {
flex-direction: column;
align-items: stretch;
}
.admin-filter-bar__group {
justify-content: space-between;
}
.admin-filter-bar__actions {
margin-left: 0;
width: 100%;
justify-content: flex-start;
}
.admin-form-actions {
flex-direction: column;
}
.admin-button-group {
width: 100%;
}
.admin-checkbox-group--horizontal,
.admin-radio-group--horizontal {
flex-direction: column;
}
}