UNPKG

svarog-ui-core

Version:

Core components of Svarog UI without themes

140 lines (119 loc) 3.5 kB
import { css } from '../../utils/styleInjection.js'; export const formGroupStyles = css` /** * FormGroup component styles */ .form-group { display: flex; margin-bottom: var(--form-group-margin-bottom, var(--space-4, 16px)); position: relative; } /* Label styling */ .form-group__label { display: block; font-size: var(--form-group-label-font-size, var(--font-size-base, 16px)); color: var(--form-group-label-color, var(--color-text, #212529)); font-family: var( --form-group-font-family, var(--font-family-primary, sans-serif) ); font-weight: var( --form-group-label-font-weight, var(--font-weight-medium, 500) ); margin-bottom: var(--form-group-label-margin-bottom, var(--space-1, 4px)); line-height: 1.5; } /* Required label indicator */ .form-group__label--required::after { content: '*'; color: var(--form-group-required-color, var(--color-danger, #dc3545)); margin-left: var(--space-1, 4px); } /* Field container */ .form-group__field { flex: 1; min-width: 0; /* Prevents flex item from overflowing */ } /* Help text styling */ .form-group__help-text { font-size: var(--form-group-help-font-size, var(--font-size-sm, 14px)); color: var(--form-group-help-color, var(--color-text-light, #6c757d)); max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.3s ease, opacity 0.2s ease, margin-top 0.3s ease; margin-top: 0; } /* Show help text when parent has .has-help-text class */ .form-group.has-help-text .form-group__help-text { max-height: 3em; /* Enough room for most help texts */ opacity: 1; margin-top: var(--space-1, 4px); } /* Label position variants */ /* Top label (default) */ .form-group--top { flex-direction: column; } /* Bottom label */ .form-group--bottom { flex-direction: column-reverse; } .form-group--bottom .form-group__label { margin-bottom: 0; margin-top: var(--form-group-label-margin-bottom, var(--space-1, 4px)); } /* Left label */ .form-group--left { flex-direction: row; align-items: center; } .form-group--left .form-group__label { margin-bottom: 0; margin-right: var(--form-group-label-margin-right, var(--space-3, 12px)); width: var(--form-group-label-width, 30%); text-align: right; padding-right: var(--space-2, 8px); } .form-group--left .form-group__help-text { margin-left: calc( var(--form-group-label-width, 30%) + var(--form-group-label-margin-right, var(--space-3, 12px)) ); } /* Right label */ .form-group--right { flex-direction: row-reverse; align-items: center; } .form-group--right .form-group__label { margin-bottom: 0; margin-left: var(--form-group-label-margin-left, var(--space-3, 12px)); width: auto; } .form-group--right .form-group__help-text { margin-right: auto; } /* Responsive adjustments */ @media (max-width: 480px) { /* Stack labels on small screens */ .form-group--left, .form-group--right { flex-direction: column; align-items: flex-start; } .form-group--left .form-group__label, .form-group--right .form-group__label { width: 100%; text-align: left; margin: 0 0 var(--form-group-label-margin-bottom, var(--space-1, 4px)) 0; } .form-group--left .form-group__help-text { margin-left: 0; } } `;