/** * 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; } }