UNPKG

geeks-ui-framework

Version:

A modern, lightweight CSS framework with 15+ components for developers. Build beautiful interfaces with minimal effort.

295 lines (253 loc) 7.25 kB
/* =================================== FORMS COMPONENT =================================== */ /* Form Groups */ .form-group { margin-bottom: 1.5rem; } .form-group:last-child { margin-bottom: 0; } /* Form Labels */ .form-label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: var(--text-color); font-size: 0.875rem; } .form-label.required::after { content: ' *'; color: var(--danger-color); } /* Form Controls */ .form-control { display: block; width: 100%; padding: 0.75rem 1rem; font-size: 1rem; line-height: 1.5; color: var(--text-color); background-color: var(--white); background-clip: padding-box; border: 1px solid var(--border-color); border-radius: 0.375rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .form-control:focus { color: var(--text-color); background-color: var(--white); border-color: var(--primary-color); outline: 0; box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25); } .form-control::placeholder { color: var(--muted-color); opacity: 1; } .form-control:disabled { background-color: var(--light-gray); opacity: 1; cursor: not-allowed; } /* Form Control Sizes */ .form-control-sm { padding: 0.5rem 0.75rem; font-size: 0.875rem; } .form-control-lg { padding: 1rem 1.25rem; font-size: 1.125rem; } /* Select Elements */ .form-select { display: block; width: 100%; padding: 0.75rem 2.25rem 0.75rem 1rem; font-size: 1rem; font-weight: 400; line-height: 1.5; color: var(--text-color); background-color: var(--white); background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 6 7 7 7-7'/%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 16px 12px; border: 1px solid var(--border-color); border-radius: 0.375rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .form-select:focus { border-color: var(--primary-color); outline: 0; box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25); } /* Checkboxes and Radios */ .form-check { display: block; min-height: 1.5rem; padding-left: 1.75rem; margin-bottom: 0.5rem; } .form-check-input { width: 1.25rem; height: 1.25rem; margin-top: 0.125rem; margin-left: -1.75rem; vertical-align: top; background-color: var(--white); background-repeat: no-repeat; background-position: center; background-size: contain; border: 1px solid var(--border-color); -webkit-appearance: none; -moz-appearance: none; appearance: none; transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; } .form-check-input[type="checkbox"] { border-radius: 0.25rem; } .form-check-input[type="radio"] { border-radius: 50%; } .form-check-input:active { filter: brightness(90%); } .form-check-input:focus { border-color: var(--primary-color); outline: 0; box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.25); } .form-check-input:checked { background-color: var(--primary-color); border-color: var(--primary-color); } .form-check-input:checked[type="checkbox"] { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); } .form-check-input:checked[type="radio"] { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); } .form-check-label { cursor: pointer; font-size: 0.875rem; } /* Input Groups */ .input-group { position: relative; display: flex; flex-wrap: wrap; align-items: stretch; width: 100%; } .input-group>.form-control { position: relative; flex: 1 1 auto; width: 1%; min-width: 0; } .input-group-text { display: flex; align-items: center; padding: 0.75rem 1rem; font-size: 1rem; font-weight: 400; line-height: 1.5; color: var(--text-color); text-align: center; white-space: nowrap; background-color: var(--light-gray); border: 1px solid var(--border-color); } .input-group>.form-control:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group>.form-control:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } .input-group>.input-group-text:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .input-group>.input-group-text:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; } /* Form Text */ .form-text { margin-top: 0.25rem; font-size: 0.875rem; color: var(--muted-color); } /* Form Validation */ .was-validated .form-control:valid, .form-control.is-valid { border-color: var(--success-color); } .was-validated .form-control:valid:focus, .form-control.is-valid:focus { border-color: var(--success-color); box-shadow: 0 0 0 0.2rem rgba(16, 185, 129, 0.25); } .was-validated .form-control:invalid, .form-control.is-invalid { border-color: var(--danger-color); } .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { border-color: var(--danger-color); box-shadow: 0 0 0 0.2rem rgba(239, 68, 68, 0.25); } .valid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 0.875rem; color: var(--success-color); } .invalid-feedback { display: none; width: 100%; margin-top: 0.25rem; font-size: 0.875rem; color: var(--danger-color); } .was-validated .form-control:valid~.valid-feedback, .form-control.is-valid~.valid-feedback { display: block; } .was-validated .form-control:invalid~.invalid-feedback, .form-control.is-invalid~.invalid-feedback { display: block; } /* Floating Labels */ .form-floating { position: relative; } .form-floating>.form-control { height: calc(3.5rem + 2px); line-height: 1.25; padding: 1rem 1rem 0.25rem 1rem; } .form-floating>label { position: absolute; top: 0; left: 0; height: 100%; padding: 1rem 1rem 0.25rem 1rem; pointer-events: none; border: 1px solid transparent; transform-origin: 0 0; transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; } .form-floating>.form-control:focus~label, .form-floating>.form-control:not(:placeholder-shown)~label { opacity: 0.65; transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); }