soft-ui-library
Version:
A Collection of UI Elements implementing a neumorphic design pattern with light/dark mode toggle.
397 lines (370 loc) • 11.7 kB
CSS
@charset "UTF-8";
@import "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css";
@import url("https://fonts.googleapis.com/css?family=Rubik|Poppins:300&display=swap");
:root {
--ruler: 13px;
--transition: all 0.25s ease-in-out;
--main-font: "Rubik", sans-serif;
--main-font: "Poppins", "Rubik", sans-serif;
}
.light-mode {
--primary-color: #0097e6;
--color-bg: #ebecf0;
--color-white: #fff;
--color-shadow: rgba(186, 190, 204, 0.9);
--main-text-color: #333;
--text-field-radius: calc(var(--ruler) * 1);
--check-radio-color: var(--primary-color);
}
.dark-mode {
--primary-color: #0086cc;
--color-bg: #333333;
--color-white: #3b3b3b;
--color-shadow: #2b2b2b;
--main-text-color: #aaa;
--text-field-radius: calc(var(--ruler) * 1);
--check-radio-color: var(--primary-color);
}
/********************************************* COMMON PROPERTIES *********************************************/
.sul-btn,
.sul-text-field,
.sul-checkbox-type-1,
.sul-checkbox-type-2,
.sul-radio,
.sul-select {
-webkit-appearance: none;
appearance: none;
border: 0;
outline: 0;
transition: var(--transition);
color: var(--main-text-color);
}
/******************************************** TEXT FIELDS & BUTTONS ********************************************/
.sul-btn,
.sul-text-field {
font-size: 16px;
border-radius: var(--text-field-radius);
padding: calc(var(--ruler) + 5px);
background: var(--color-bg);
width: 100%;
}
.sul-btn::placeholder,
.sul-text-field::placeholder {
color: var(--main-text-color);
opacity: 0.5;
}
/************************************************* TEXT FIELDS *************************************************/
.sul-text-field {
box-shadow: inset 2px 2px 5px var(--color-shadow), inset -5px -5px 10px var(--color-white);
}
.sul-text-field:focus {
box-shadow: inset 1px 1px 2px var(--color-shadow), inset -1px -1px 2px var(--color-white);
}
/************************************************** BUTTONS **************************************************/
.sul-btn {
display: block;
box-shadow: -5px -5px 20px var(--color-white), 5px 5px 20px var(--color-shadow);
text-align: center;
width: auto;
}
.sul-btn:hover {
box-shadow: -2px -2px 5px var(--color-white), 2px 2px 5px var(--color-shadow);
}
.sul-btn:active {
box-shadow: inset 1px 1px 2px var(--color-shadow), inset -1px -1px 2px var(--color-white);
}
.sul-btn i {
margin-right: 5px;
}
.sul-btn.btn-primary {
background: var(--primary-color);
color: #eee;
}
.sul-btn .btn-block {
width: 100%;
}
/******************************************** BUTTONS, CHECKBOX & RADIO ******************************************/
.sul-btn,
.sul-radio,
.sul-checkbox-type-1,
.sul-checkbox-type-2 {
cursor: pointer;
}
/*********************************************** CHECKBOX & RADIO ***********************************************/
.sul-radio,
.sul-checkbox-type-1 {
box-shadow: 2px 2px 4px var(--color-shadow), -2px -2px 4px var(--color-white);
max-width: calc(var(--ruler) * 2.5);
max-height: calc(var(--ruler) * 2.5);
min-width: calc(var(--ruler) * 2.5);
min-height: calc(var(--ruler) * 2.5);
background: transparent;
margin-right: 10px;
display: inline-flex;
justify-content: center;
align-items: center;
}
.sul-radio::before,
.sul-checkbox-type-1::before {
transition: var(--transition);
font-family: "Font Awesome 5 Free";
font-size: calc(var(--ruler) * 1.5);
font-weight: bolder;
text-shadow: -3px -3px 5px var(--color-shadow), 3px 3px 5px var(--color-white);
color: var(--color-bg);
}
.sul-radio:checked,
.sul-checkbox-type-1:checked {
box-shadow: -3px -3px 5px var(--color-shadow), 3px 3px 5px var(--color-white);
}
.sul-radio:checked::before,
.sul-checkbox-type-1:checked::before {
text-shadow: 3px 3px 5px var(--color-shadow), -3px -3px 5px var(--color-white);
color: var(--check-radio-color);
}
.sul-radio:disabled,
.sul-checkbox-type-1:disabled {
box-shadow: -3px -3px 5px var(--color-shadow), 3px 3px 5px var(--color-white);
}
.sul-radio:disabled::before,
.sul-checkbox-type-1:disabled::before {
text-shadow: 3px 3px 5px var(--color-shadow), -3px -3px 5px var(--color-white);
color: var(--color-bg);
}
/***************************************************** CHECKBOX *************************************************/
.sul-checkbox-type-1 {
border-radius: calc(var(--ruler) * 1);
}
.sul-checkbox-type-1::before, .sul-checkbox-type-1:checked::before, .sul-checkbox-type-1:disabled {
content: "";
}
/***************************************************** RADIO *****************************************************/
.sul-radio {
border-radius: 50%;
}
.sul-radio::before, .sul-radio:checked::before, .sul-radio:disabled {
content: "";
}
/***************************************************** SELECT *****************************************************/
.sul-select-wrapper {
position: relative;
}
.sul-select-wrapper::after {
transition: var(--transition);
font-family: "Font Awesome 5 Free";
content: "";
font-size: calc(var(--ruler) * 3);
font-weight: bolder;
text-shadow: 1px 1px 2px var(--color-shadow), -1px -1px 2px var(--color-white);
color: var(--check-radio-color);
position: absolute;
right: 20px;
top: 5%;
z-index: 1;
}
.sul-select-wrapper .sul-select {
position: relative;
z-index: 2;
font-size: 16px;
border-radius: var(--text-field-radius);
padding: var(--ruler);
background: var(--color-bg);
width: 100%;
box-shadow: inset 0 0 0 transparent, inset 0 0 0 transparent, 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white);
transition: var(--transition);
}
.sul-select-wrapper .sul-select:focus {
box-shadow: inset 2px 2px 3px var(--color-shadow), inset -2px -2px 3px var(--color-white);
}
.sul-select-wrapper .sul-select option {
background: var(--color-bg);
}
/***************************************************** CHECKBOX TYPE 2 *****************************************/
.sul-checkbox-type-2 {
border-radius: calc(var(--ruler) * 1);
box-shadow: inset 2px 2px 4px var(--color-shadow), inset -2px -2px 4px var(--color-white);
max-width: 50px;
min-width: 50px;
max-height: 25px;
min-height: 25px;
background: var(--color-bg);
margin-right: 10px;
display: inline-flex;
justify-content: center;
align-items: center;
}
.sul-checkbox-type-2::before {
transition: var(--transition);
font-family: "Font Awesome 5 Free";
content: "";
font-size: calc(var(--ruler) * 2.5);
font-weight: bolder;
text-shadow: 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white);
color: var(--color-bg);
position: relative;
left: -15px;
}
.sul-checkbox-type-2:checked {
box-shadow: inset 2px 2px 4px var(--primary-color), inset -2px -2px 4px var(--primary-color);
background: var(--primary-color);
max-width: 50px;
min-width: 50px;
max-height: 25px;
min-height: 25px;
}
.sul-checkbox-type-2:checked::before {
left: 15px;
}
/***************************************************** RANGE *****************************************************/
.sul-range {
-webkit-appearance: none;
width: 100%;
height: calc(var(--ruler) * 2.5);
background: var(--color-bg);
outline: none;
border-radius: calc(var(--ruler) * 1);
box-shadow: inset 2px 2px 3px var(--color-shadow), inset -2px -2px 3px var(--color-white);
}
.sul-range::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
}
.sul-range::-webkit-slider-thumb {
min-width: calc(var(--ruler) * 3.5);
min-height: calc(var(--ruler) * 3.5);
max-width: calc(var(--ruler) * 3.5);
max-height: calc(var(--ruler) * 3.5);
border: none;
border-radius: 50%;
box-shadow: 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white);
background: var(--color-bg);
cursor: pointer;
}
.sul-range::-moz-range-thumb {
min-width: calc(var(--ruler) * 3.5);
min-height: calc(var(--ruler) * 3.5);
max-width: calc(var(--ruler) * 3.5);
max-height: calc(var(--ruler) * 3.5);
border: none;
border-radius: 50%;
box-shadow: 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white);
background: var(--color-bg);
cursor: pointer;
}
.with-hover {
transition: var(--transition);
}
.sul-box-raised-1 {
background-color: var(--color-bg);
box-shadow: -5px -5px 20px var(--color-white), 5px 5px 20px var(--color-shadow);
/*********************************** SMALL ***********************************/
}
.sul-box-raised-1.with-hover:hover {
background-color: var(--color-bg);
box-shadow: -2px -2px 5px var(--color-white), 2px 2px 5px var(--color-shadow);
}
.sul-box-raised-2 {
background-color: var(--color-bg);
box-shadow: 3px 3px 7px var(--color-shadow), -3px -3px 7px var(--color-white), inset 0 0 0 transparent, inset 0 0 0 transparent;
/*********************************** SMALL ***********************************/
}
.sul-box-raised-2.with-hover:hover {
background-color: var(--color-bg);
box-shadow: 0 0 0 transparent, 0 0 0 transparent, inset 3px 3px 7px var(--color-shadow), inset -3px -3px 7px var(--color-white);
}
.sul-box-raised-2.sm {
background-color: var(--color-bg);
box-shadow: 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white), inset 0 0 0 transparent, inset 0 0 0 transparent;
}
.sul-box-raised-2.sm.with-hover:hover {
background-color: var(--color-bg);
box-shadow: 0 0 0 transparent, 0 0 0 transparent, inset 2px 2px 3px var(--color-shadow), inset -2px -2px 3px var(--color-white);
}
.sul-box-raised-3 {
background-color: var(--color-bg);
box-shadow: -2px -2px 5px var(--color-white), 2px 2px 5px var(--color-shadow);
/*********************************** SMALL ***********************************/
}
.sul-box-raised-3.with-hover:hover {
background-color: var(--color-bg);
box-shadow: -5px -5px 20px var(--color-white), 5px 5px 20px var(--color-shadow);
}
.sul-box-inset-1 {
background-color: var(--color-bg);
box-shadow: 0 0 0 transparent, 0 0 0 transparent, inset 3px 3px 7px var(--color-shadow), inset -3px -3px 7px var(--color-white);
/*********************************** SMALL ***********************************/
}
.sul-box-inset-1.with-hover:hover {
background-color: var(--color-bg);
box-shadow: 3px 3px 7px var(--color-shadow), -3px -3px 7px var(--color-white), inset 0 0 0 transparent, inset 0 0 0 transparent;
}
.sul-box-inset-1.sm {
background-color: var(--color-bg);
box-shadow: 0 0 0 transparent, 0 0 0 transparent, inset 2px 2px 3px var(--color-shadow), inset -2px -2px 3px var(--color-white);
}
.sul-box-inset-1.sm.with-hover:hover {
background-color: var(--color-bg);
box-shadow: 2px 2px 3px var(--color-shadow), -2px -2px 3px var(--color-white), inset 0 0 0 transparent, inset 0 0 0 transparent;
}
html {
box-sizing: border-box;
scroll-behavior: smooth;
}
body {
font-family: var(--main-font);
background-color: var(--color-bg);
color: var(--main-text-color);
}
body .sul-text-field {
font-family: var(--main-font);
}
h1,
h2,
h3,
span,
p,
a {
font-weight: 300;
}
*,
*::before,
*::after {
box-sizing: inherit;
padding: 0;
margin: 0;
}
header {
background-color: var(--color-bg);
}
.sul-link {
color: var(--primary-color);
text-decoration: none;
position: relative;
}
.sul-link:visited {
color: var(--primary-color);
text-decoration: none;
}
.sul-link::before {
content: "";
position: absolute;
bottom: -3px;
left: 0;
width: 0;
height: 2px;
background-color: var(--primary-color);
transition: 0.5s;
}
.sul-link:hover::before {
width: 100%;
}
a {
text-decoration: none;
color: inherit;
cursor: pointer;
}
a:hover {
text-decoration: none;
color: inherit;
}
/*# sourceMappingURL=neumorphism-ui.css.map */