insomnia/packages/insomnia-app/app/ui/css/components/forms.less
Dimitri Mitropoulos 177d6adf38
Insomnia Config, controlled settings (#4031)
Co-authored-by: Opender Singh <opender94@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
2021-10-14 10:59:45 -04:00

385 lines
6.5 KiB
Plaintext

.form-control {
outline: none;
border: 0;
margin-bottom: var(--padding-sm);
width: 100%;
box-sizing: border-box;
&.form-control--btn-right {
position: relative;
input {
padding-right: 2em;
}
&:hover .form-control__right {
opacity: 0.8;
}
.form-control__right {
position: absolute;
right: 0;
top: 0;
padding: 0 var(--padding-sm);
height: 100%;
display: flex;
align-items: center;
margin: 0;
opacity: 0.5;
&:hover {
opacity: 1;
}
}
}
.input,
input,
textarea,
select,
button {
width: 100%;
display: block;
margin-top: var(--padding-xs);
box-sizing: border-box;
}
button,
input[type='radio'],
input[type='checkbox'] {
width: auto;
}
input[type='radio'],
input[type='checkbox'] {
height: 1rem;
float: left;
margin-top: 1px; // This is a magic number, yes, but there's some deeper problems at play with form styling and this is a hold-over until the DOM design is simplified. Before this fix it looked pretty bad, so this is at least a big improvement in one respect.
margin-right: var(--padding-xs);
}
& > button {
width: auto;
}
input:invalid {
border: 1px solid var(--color-warning) !important;
}
label {
font-weight: 600;
display: block;
margin-top: var(--padding-xs);
padding-top: 0;
* {
font-weight: normal;
}
}
&.form-control--thin {
label {
font-weight: normal;
}
margin-bottom: var(--padding-xxs);
}
&.form-control--padded,
&.form-control--outlined,
&.form-control--underlined {
textarea,
.input,
input,
select {
border: 1px solid var(--hl-md);
padding: var(--padding-sm);
border-radius: var(--radius-md);
background-color: var(--hl-xxs);
}
// Because <select> is weird
select {
padding-top: 0;
padding-bottom: 0;
}
&:not(.form-control--tall) {
.input,
input,
select {
height: var(--line-height-xs);
}
}
.input[data-focused='on'],
textarea:focus,
select:focus,
input:focus {
background-color: transparent;
border-color: var(--hl-lg);
}
}
&.form-control--underlined .input[data-focused='on'],
&.form-control--underlined input:focus,
&.form-control--underlined textarea:focus {
border-color: var(--hl);
}
&.form-control--padded {
.input,
textarea,
select,
input {
border: 0;
}
}
&.form-control--underlined {
textarea,
select,
.input,
input {
border-radius: 0;
border-top: 0;
border-right: 0;
border-left: 0;
background: none;
padding-left: var(--padding-xxs);
padding-right: var(--padding-xxs);
}
}
&.form-control--inactive {
textarea,
.input,
input,
.btn,
select {
border-style: dashed;
opacity: var(--opacity-subtle);
color: var(--hl-xl);
}
}
}
.form-control--wide {
margin-left: 0 !important;
margin-right: 0 !important;
}
.form-control--no-label::before {
content: 'nothing';
opacity: 0;
padding-top: var(--padding-xs);
display: block;
}
.form-row {
display: flex;
align-items: center;
justify-content: center;
align-content: center;
flex-direction: row;
& > * {
width: 100%;
margin-left: var(--padding-xxs);
margin-right: var(--padding-xxs);
}
& > p {
margin: 0;
}
& > *:first-child {
margin-left: 0;
}
& > *:last-child {
margin-right: 0;
}
&--start {
align-items: start;
& > * {
width: unset;
}
}
}
.icon {
text-align: center;
color: var(--hl);
&.icon--success {
color: var(--color-success);
}
&:hover {
color: var(--color-font);
}
}
.btn {
text-align: center;
background: var(--color-bg);
&:not(.btn--plain) {
padding: 0 calc(var(--padding-md) * 1.5);
height: var(--line-height-md);
border: 1px solid transparent;
}
&.btn--compact {
padding: 0 var(--padding-md);
height: var(--line-height-sm);
}
&.btn--super-compact {
padding: 0 var(--padding-md);
height: var(--line-height-xs);
}
&.btn--super-duper-compact {
padding: var(--padding-xxs) var(--padding-sm);
height: auto;
}
&.btn--micro {
font-size: var(--font-size-sm);
line-height: var(--font-size-xs);
padding: var(--padding-xxs) var(--padding-sm);
height: auto;
border-radius: 3px;
}
&.btn--outlined {
border: 1px solid var(--hl-lg);
border-radius: var(--radius-md);
}
&.btn--clicky {
.btn--super-compact;
.btn--outlined;
}
&.btn--clicky-small {
.btn--super-duper-compact;
.btn--outlined;
}
&.btn--expandable-small {
padding: 0 var(--padding-md);
min-height: var(--line-height-sm);
height: unset;
}
&.btn--largest {
width: 100%;
}
}
*:disabled {
opacity: 0.5;
}
.btn:focus:not(:disabled),
.btn.focus:not(:disabled),
.btn:hover:not(:disabled) {
background-color: var(--hl-xs);
}
.btn:active:not(:disabled) {
background-color: var(--hl-md);
}
.btn.btn--no-background {
opacity: 0.5;
background-color: transparent;
&:hover {
opacity: 1;
background-color: transparent;
}
}
textarea,
input,
.input,
button,
select {
transition: all 130ms ease-out;
box-sizing: border-box;
text-align: left;
font-size: inherit;
text-decoration: inherit;
background: none;
border: 0;
outline: 0;
margin: 0;
padding: 0;
color: inherit;
// Explicitly set font-family because browser stylesheet
// will use default it
font-family: var(--font-family);
&::-webkit-input-placeholder {
color: var(--hl-lg);
}
}
input[type='number']::-webkit-inner-spin-button {
opacity: 0.8;
}
input.input--error,
.input.input--error {
border-color: var(--color-danger) !important;
}
button {
width: auto;
padding: 0;
margin: 0;
white-space: nowrap;
}
option {
background-color: var(--color-bg);
color: var(--color-font);
}
textarea.no-resize {
resize: none;
}
input[type='color'] {
height: var(--line-height-xs) !important;
padding: var(--padding-xxs) !important;
}
label {
// So we can highlight from CSS checkbox selector
position: relative;
z-index: 1;
input[type='checkbox']:focus,
input[type='radio']:focus {
&::before {
z-index: -1;
content: ' ';
position: absolute;
top: var(--padding-xxs);
bottom: var(--padding-xxs);
left: var(--padding-xxs);
right: var(--padding-xxs);
border-radius: var(--radius-sm);
}
}
}