react-solid-gradient-picker
Version:
Color picker for react
515 lines (498 loc) • 12.7 kB
CSS
* {
box-sizing: border-box;
}
.ui-color-picker {
margin: 8px;
background-color: #FFFFFF;
display: flex;
flex-direction: column;
width: 280px;
user-select: none;
}
.ui-color-picker .gradient-controls {
display: flex;
flex-direction: row;
align-items: center;
width: 100%;
margin-bottom: 8px;
margin-top: 5px;
height: 24px;
padding: 0 16px;
}
.ui-color-picker .gradient-controls .gradient-type {
flex: 1;
display: flex;
}
.ui-color-picker .gradient-controls .gradient-type .gradient-type-item {
height: 28px;
width: 28px;
border-radius: 50%;
position: relative;
cursor: pointer;
}
.ui-color-picker .gradient-controls .gradient-type .gradient-type-item.active::after {
content: "";
display: block;
position: absolute;
top: -3px;
bottom: -3px;
left: -3px;
right: -3px;
border: 2px solid #1F2667;
border-radius: 50%;
}
.ui-color-picker .gradient-controls .gradient-type .gradient-type-item.liner-gradient {
background: linear-gradient(270deg, #FFFFFF 0%, #1F2667 100%);
}
.ui-color-picker .gradient-controls .gradient-type .gradient-type-item.radial-gradient {
margin-left: 8px;
background: radial-gradient(circle, #FFFFFF 0%, #1F2667 100%);
}
.ui-color-picker .gradient-controls .gradient-degrees-options {
position: relative;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degrees {
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
width: 28px;
height: 28px;
border: 3px solid #1F2667;
border-radius: 18px;
margin-right: 65px;
cursor: pointer;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degrees .gradient-degree-center {
position: relative;
width: 6px;
height: 22px;
pointer-events: none;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degrees .gradient-degree-center .gradient-degree-pointer {
position: absolute;
width: 6px;
height: 6px;
top: 2px;
border-radius: 3px;
background: #1F2667;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degree-value {
position: absolute;
top: 0;
right: 0;
width: 48px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #bbbfc5;
border-radius: 6px;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degree-value p {
text-align: center;
padding: 0 6px;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degree-value-input {
position: absolute;
top: 0;
right: 6px;
width: 48px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degree-value-input input {
width: 60px;
}
.ui-color-picker .gradient-controls .gradient-degrees-options .gradient-degree-value-input p {
position: absolute;
padding: 0px;
min-width: 10px;
text-align: center;
}
.ui-color-picker .picker-area {
display: flex;
flex-direction: column;
padding: 0px;
position: relative;
}
.ui-color-picker .picker-area.gradient-tab .picking-area {
margin-bottom: 10px;
}
.ui-color-picker .picker-area .extra-control {
position: absolute;
right: -8px;
top: -8px;
z-index: 1;
}
.ui-color-picker .picker-area .picking-area {
width: 100%;
height: 160px;
margin-bottom: 16px;
position: relative;
border-radius: 8px;
}
.ui-color-picker .picker-area .picking-area:hover {
cursor: default;
}
.ui-color-picker .picker-area .picking-area .picking-area-overlay1 {
height: 100%;
width: 100%;
background: linear-gradient(to right, white 0%, rgba(255, 255, 255, 0) 100%);
border-radius: 3px;
}
.ui-color-picker .picker-area .picking-area .picking-area-overlay1 .picking-area-overlay2 {
cursor: pointer;
height: 100%;
width: 100%;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, black 100%);
border-radius: 8px;
}
.ui-color-picker .picker-area .preview {
display: flex;
flex-direction: row;
margin-bottom: 16px;
position: relative;
}
.ui-color-picker .picker-area .preview .preview-box {
box-sizing: border-box;
height: 36px;
width: 36px;
border-radius: 8px;
border: 1px solid #EBEDF5;
cursor: pointer;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
align-content: center;
}
.ui-color-picker .picker-area .preview .color-hue-alpha {
display: flex;
flex-direction: column;
flex: 1;
margin-left: 6px;
}
.ui-color-picker .picker-area .preview .color-hue-alpha .hue {
width: 100%;
position: relative;
border-radius: 10px;
margin-bottom: 8px;
padding: 0 7px;
background-color: red;
}
.ui-color-picker .picker-area .preview .color-hue-alpha .hue .hue-area {
cursor: pointer;
position: relative;
height: 14px;
background: -webkit-linear-gradient(left, #ff0000, #ff0080, #ff00ff, #8000ff, #0000ff, #0080ff, #00ffff, #00ff80, #00ff00, #80ff00, #ffff00, #ff8000, #ff0000);
background: -o-linear-gradient(left, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff00ff, #ff0080, #ff0000);
background: -ms-linear-gradient(left, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff00ff, #ff0080, #ff0000);
background: -moz-linear-gradient(left, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff00ff, #ff0080, #ff0000);
background: linear-gradient(to right, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff00ff, #ff0080, #ff0000);
}
.ui-color-picker .picker-area .preview .color-hue-alpha .alpha {
position: relative;
width: 100%;
overflow: hidden;
border-radius: 10px;
height: 14px;
cursor: pointer;
}
.ui-color-picker .picker-area .preview .color-hue-alpha .alpha .gradient {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.ui-color-picker .picker-area .preview .color-hue-alpha .alpha .alpha-area {
width: 100%;
height: 100%;
background: url("assets/images/alpha-background.svg");
background-size: auto;
background-position: 50% 50%;
border-radius: 10px;
padding: 0 7px;
}
.ui-color-picker .picker-area .preview .color-hue-alpha .alpha .alpha-area .alpha-mask {
width: 100%;
height: 100%;
position: relative;
}
.ui-color-picker .picker-area .preview .eyeDropper {
position: absolute;
left: 10px;
top: 10px;
}
.ui-color-picker .picker-area .gradient {
width: 100%;
height: 14px;
position: relative;
cursor: pointer;
border-radius: 10px;
margin-bottom: 8px;
padding: 0 7px;
}
.ui-color-picker .picker-area .gradient .gradient-slider-container {
height: 100%;
width: 100%;
position: relative;
}
.ui-color-picker .picker-area .picker-pointer {
position: absolute;
top: 1px;
height: 12px;
width: 12px;
border: 1px solid #FFFFFF;
background: transparent;
border-radius: 50%;
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.3);
}
.ui-color-picker .picker-area .picker-pointer .child-point {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
height: 3px;
width: 3px;
background: #FFFFFF;
border-radius: 50%;
opacity: 0;
transition: opacity 0.33s;
}
.ui-color-picker .picker-area .picker-pointer .child-point.active {
opacity: 1;
}
.ui-color-picker .color-preview-area {
margin-bottom: 8px;
padding: 0 16px;
}
.ui-color-picker .color-preview-area .input-group {
width: 100%;
display: flex;
flex-direction: row;
justify-content: space-between;
}
.ui-color-picker .color-preview-area .input-group .uc-field-group:not(:last-child) {
margin-right: 7px;
}
.ui-color-picker .color-preview-area .hex {
width: 65px;
}
.ui-color-picker .color-preview-area .rgb {
width: 40px;
}
.ui-color-picker .colors {
padding: 3px 16px 0;
}
.ui-color-picker .colors .colors-label {
display: flex;
align-items: center;
margin-bottom: 4px;
cursor: pointer;
}
.ui-color-picker .colors .colors-label .uc-icon {
margin-right: 8px;
transition: transform 0.3s;
}
.ui-color-picker .colors .colors-label .tp-text {
text-transform: uppercase;
}
.ui-color-picker .colors .colors-label.show + .colors-item-container {
max-height: 80px;
padding-bottom: 16px;
}
.ui-color-picker .colors .colors-label.show .uc-icon {
transform: rotate(-90deg);
}
.ui-color-picker .colors .template {
display: flex;
flex-direction: column;
}
.ui-color-picker .colors .global {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.ui-color-picker .colors .colors-item-container {
display: flex;
flex-wrap: wrap;
width: 100%;
transition: max-height 0.3s, padding-bottom 0.3s;
max-height: 0;
overflow: hidden;
}
.ui-color-picker .colors .colors-item-container .colors-item {
height: 24px;
width: 24px;
border-radius: 50%;
background-color: #EBEDF5;
cursor: pointer;
position: relative;
margin-top: 4px;
flex-shrink: 0;
}
.ui-color-picker .colors .colors-item-container .colors-item:not(.plus) {
border: 1px solid #EBEDF5;
}
.ui-color-picker .colors .colors-item-container .colors-item.empty {
display: flex;
align-items: center;
justify-content: center;
}
.ui-color-picker .colors .colors-item-container .colors-item.empty .line {
width: 2px;
height: 16px;
background-color: #8892B3;
border-radius: 1px;
transform: rotate(45deg);
}
.ui-color-picker .colors .colors-item-container .colors-item.plus {
margin-bottom: 4px;
}
.ui-color-picker .colors .colors-item-container .colors-item.plus .uc-icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 1;
}
.ui-color-picker .colors .colors-item-container .colors-item:not(:first-child):not(:nth-child(9)) {
margin-left: 8px;
}
.ui-color-picker .colors .colors-item-container .colors-item .uc-icon {
position: absolute;
right: -8px;
top: -3px;
opacity: 0;
transition: opacity 0.3s;
}
.ui-color-picker .colors .colors-item-container .colors-item:hover .uc-icon {
opacity: 1;
}
.ui-color-picker .colors .colors-item-container .colors-item.active::after {
content: "";
display: block;
position: absolute;
top: -3px;
bottom: -3px;
left: -3px;
right: -3px;
border: 2px solid #8892B3;
border-radius: 50%;
}
.input-field {
display: flex;
flex-shrink: 0;
align-items: center;
flex-direction: column;
}
.input-field .label {
font-size: 12px;
line-height: 15px;
font-weight: 600;
margin-top: 6px;
margin-bottom: 0;
color: #1F2667;
}
.input-field .input-container {
display: flex;
align-items: center;
position: relative;
width: 100%;
border-radius: 6px;
color: #28314d;
}
.input-field .input-container .input {
width: 100%;
outline: 0;
color: #1F2667;
border-radius: inherit;
border: 1px solid #bbbfc5;
height: 24px;
font-size: 12px;
font-weight: 600;
padding: 0 6px;
}
.tippy-box[data-animation=fade][data-state=hidden] {
opacity: 0;
}
[data-tippy-root] {
max-width: calc(100vw - 10px);
}
.tippy-box {
position: relative;
background-color: #333;
color: #fff;
border-radius: 4px;
font-size: 14px;
line-height: 1.4;
white-space: normal;
outline: 0;
transition-property: transform, visibility, opacity;
}
.tippy-box[data-placement^=top] > .tippy-arrow {
bottom: 0;
}
.tippy-box[data-placement^=top] > .tippy-arrow:before {
bottom: -7px;
left: 0;
border-width: 8px 8px 0;
border-top-color: initial;
transform-origin: center top;
}
.tippy-box[data-placement^=bottom] > .tippy-arrow {
top: 0;
}
.tippy-box[data-placement^=bottom] > .tippy-arrow:before {
top: -7px;
left: 0;
border-width: 0 8px 8px;
border-bottom-color: initial;
transform-origin: center bottom;
}
.tippy-box[data-placement^=left] > .tippy-arrow {
right: 0;
}
.tippy-box[data-placement^=left] > .tippy-arrow:before {
border-width: 8px 0 8px 8px;
border-left-color: initial;
right: -7px;
transform-origin: center left;
}
.tippy-box[data-placement^=right] > .tippy-arrow {
left: 0;
}
.tippy-box[data-placement^=right] > .tippy-arrow:before {
left: -7px;
border-width: 8px 8px 8px 0;
border-right-color: initial;
transform-origin: center right;
}
.tippy-box[data-inertia][data-state=visible] {
transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11);
}
.tippy-arrow {
width: 16px;
height: 16px;
color: #333;
}
.tippy-arrow:before {
content: "";
position: absolute;
border-color: transparent;
border-style: solid;
}
.tippy-content {
position: relative;
padding: 5px 9px;
z-index: 1;
}