insomnia/packages/insomnia-app/app/ui/css/components/forms.less
2018-11-05 22:10:09 -04:00

377 lines
6.1 KiB
Plaintext

@import '../constants/dimensions';
@import '../constants/colors';
.form-control {
outline: none;
border: 0;
margin-bottom: @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 @padding-sm;
height: 100%;
display: flex;
align-items: center;
margin: 0;
opacity: 0.5;
&:hover {
opacity: 1;
}
}
}
.input,
input,
textarea,
select,
button {
width: 100%;
height: 100%;
display: block;
margin-top: @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: @padding-xxs;
margin-right: @padding-xs;
}
& > button {
width: auto;
}
input:invalid {
border: 1px solid var(--color-warning) !important;
}
label {
font-weight: 600;
display: block;
margin-top: @padding-xs;
padding-top: 0;
* {
font-weight: normal;
}
}
&.form-control--thin {
label {
font-weight: normal;
}
margin-bottom: @padding-xxs;
}
&.form-control--padded,
&.form-control--outlined,
&.form-control--underlined {
textarea,
.input,
input,
select {
border: 1px solid var(--hl-md);
padding: @padding-sm;
border-radius: @radius-md;
background-color: @hl-xxs;
}
// Because <select> is weird
select {
padding-top: 0;
padding-bottom: 0;
}
&:not(.form-control--tall) {
.input,
input,
select {
height: @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: @padding-xxs;
padding-right: @padding-xxs;
}
}
&.form-control--inactive {
textarea,
.input,
input,
.btn,
select {
border-style: dashed;
opacity: @opacity-subtle;
color: @hl-xl;
}
}
}
.form-control--wide {
margin-left: 0 !important;
margin-right: 0 !important;
}
.form-control--no-label::before {
content: 'nothing';
opacity: 0;
padding-top: @padding-xs;
display: block;
}
.form-row {
display: flex;
align-items: center;
justify-content: center;
align-content: center;
flex-direction: row;
& > * {
width: 100%;
margin-left: @padding-xxs;
margin-right: @padding-xxs;
}
& > p {
margin: 0;
}
& > *:first-child {
margin-left: 0;
}
& > *:last-child {
margin-right: 0;
}
}
.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(@padding-md * 1.5);
height: @line-height-md;
border: 1px solid transparent;
}
&.btn--compact {
padding: 0 @padding-md;
height: @line-height-sm;
}
&.btn--super-compact {
padding: 0 @padding-md;
height: @line-height-xs;
}
&.btn--super-duper-compact {
padding: 0 @padding-sm;
height: @line-height-xxs;
}
&.btn--micro {
font-size: @font-size-xs;
line-height: @font-size-xs;
padding: @padding-xxs @padding-xs;
height: auto;
border-radius: 3px;
}
&.btn--outlined {
border: 1px solid @hl-lg;
border-radius: @radius-md;
}
&.btn--clicky {
.btn--super-compact;
.btn--outlined;
}
&.btn--clicky-small {
.btn--super-duper-compact;
.btn--outlined;
}
&.btn--expandable-small {
padding: 0 @padding-md;
min-height: @line-height-sm;
height: unset;
}
}
*:disabled {
opacity: 0.5;
}
.btn:focus:not(:disabled),
.btn.focus:not(:disabled),
.btn:hover:not(:disabled) {
background-color: @hl-xs;
}
.btn:active:not(:disabled) {
background-color: @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: @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: @line-height-xs !important;
padding: @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: calc(-@padding-xxs * -1);
bottom: calc(-@padding-xxs * -1);
left: calc(-@padding-xxs * -1);
right: calc(-@padding-xxs * -1);
border-radius: @radius-sm;
background-color: var(--hl-sm);
}
}
}