- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
317 lines
6.6 KiB
CSS
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;
|
|
}
|
|
} |