insomnia/packages/insomnia-app/app/ui/css/components/forms.less
Gregory Schier 0a616fba6b
Version Control (beta) (#1439)
* VCS proof of concept underway!

* Stuff

* Some things

* Replace deprecated Electron makeSingleInstance

* Rename `window` variables so not to be confused with window object

* Don't unnecessarily update request when URL does not change

* Regenerate package-lock

* Fix tests + ESLint

* Publish

 - insomnia-app@1.0.49
 - insomnia-cookies@0.0.12
 - insomnia-httpsnippet@1.16.18
 - insomnia-importers@2.0.13
 - insomnia-libcurl@0.0.23
 - insomnia-prettify@0.1.7
 - insomnia-url@0.1.6
 - insomnia-xpath@1.0.9
 - insomnia-plugin-base64@1.0.6
 - insomnia-plugin-cookie-jar@1.0.8
 - insomnia-plugin-core-themes@1.0.5
 - insomnia-plugin-default-headers@1.1.9
 - insomnia-plugin-file@1.0.7
 - insomnia-plugin-hash@1.0.7
 - insomnia-plugin-jsonpath@1.0.12
 - insomnia-plugin-now@1.0.11
 - insomnia-plugin-os@1.0.13
 - insomnia-plugin-prompt@1.1.9
 - insomnia-plugin-request@1.0.18
 - insomnia-plugin-response@1.0.16
 - insomnia-plugin-uuid@1.0.10

* Broken but w/e

* Some tweaks

* Big refactor. Create local snapshots and push done

* POC merging and a lot of improvements

* Lots of work done on initial UI/UX

* Fix old tests

* Atomic writes and size-based batches

* Update StageEntry definition once again to be better

* Factor out GraphQL query logic

* Merge algorithm, history modal, other minor things

* Fix test

* Merge, checkout, revert w/ user changes now work

* Force UI to refresh when switching branches changes active request

* Rough draft pull() and some cleanup

* E2EE stuff and some refactoring

* Add ability to share project with team and fixed tests

* VCS now created in root component and better remote project handling

* Remove unused definition

* Publish

 - insomnia-account@0.0.2
 - insomnia-app@1.1.1
 - insomnia-cookies@0.0.14
 - insomnia-httpsnippet@1.16.20
 - insomnia-importers@2.0.15
 - insomnia-libcurl@0.0.25
 - insomnia-prettify@0.1.9
 - insomnia-sync@0.0.2
 - insomnia-url@0.1.8
 - insomnia-xpath@1.0.11
 - insomnia-plugin-base64@1.0.8
 - insomnia-plugin-cookie-jar@1.0.10
 - insomnia-plugin-core-themes@1.0.7
 - insomnia-plugin-file@1.0.9
 - insomnia-plugin-hash@1.0.9
 - insomnia-plugin-jsonpath@1.0.14
 - insomnia-plugin-now@1.0.13
 - insomnia-plugin-os@1.0.15
 - insomnia-plugin-prompt@1.1.11
 - insomnia-plugin-request@1.0.20
 - insomnia-plugin-response@1.0.18
 - insomnia-plugin-uuid@1.0.12

* Move some deps around

* Fix Flow errors

* Update package.json

* Fix eslint errors

* Fix tests

* Update deps

* bootstrap insomnia-sync

* TRy fixing appveyor

* Try something else

* Bump lerna

* try powershell

*  Try again

* Fix imports

* Fixed errors

* sync types refactor

* Show remote projects in workspace dropdown

* Improved pulling of non-local workspaces

* Loading indicators and some tweaks

* Clean up sync staging modal

* Some sync improvements:

- No longer store stage
- Upgrade Electron
- Sync UI/UX improvements

* Fix snyc tests

* Upgraded deps and hot loader tweaks (it's broken for some reason)

* Fix tests

* Branches dialog, network refactoring, some tweaks

* Fixed merging when other branch is empty

* A bunch of small fixes from real testing

* Fixed pull merge logic

* Fix tests

* Some bug fixes

* A few small tweaks

* Conflict resolution and other improvements

* Fix tests

* Add revert changes

* Deal with duplicate projects per workspace

* Some tweaks and accessibility improvements

* Tooltip accessibility

* Fix API endpoint

* Fix tests

* Remove jest dep from insomnia-importers
2019-04-17 17:50:03 -07: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: @padding-xxs @padding-sm;
height: auto;
}
&.btn--micro {
font-size: @font-size-sm;
line-height: @font-size-xs;
padding: @padding-xxs @padding-sm;
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);
}
}
}