wikijs-fork/client/themes/default/scss/app.scss

828 lines
17 KiB
SCSS

/* THEME SPECIFIC STYLES */
.v-content .contents {
color: mc('grey', '800');
padding: .5rem 0 50px;
position: relative;
> div > *:first-child {
margin-top: 0;
}
@at-root .theme--dark & {
color: mc('grey', '300');
}
// ---------------------------------
// LINKS
// ---------------------------------
a {
color: mc('blue', '700');
&.is-internal-link.is-invalid-page {
color: mc('red', '700');
@at-root .theme--dark & {
color: mc('red', '200');
}
}
&.is-external-link {
padding-right: 3px;
&::after {
font-family: 'Material Design Icons', sans-serif;
font-size: 24px/1;
padding-left: 3px;
display: inline-block;
content: '\F3CC';
color: mc('grey', '500');
text-decoration: none;
}
}
@at-root .theme--dark & {
color: mc('blue', '200');
}
}
// ---------------------------------
// HEADERS
// ---------------------------------
h1, h2, h3, h4, h5, h6 {
position: relative;
&:first-child {
padding-top: 0;
}
&:hover {
.toc-anchor {
display: block;
}
}
.toc-anchor {
display: none;
position: absolute;
right: 1rem;
bottom: .5rem;
font-size: 1.25rem;
text-decoration: none;
color: mc('grey', '500');
}
& + h2, & + h3, & + h4, & + h5, & + h6 {
margin-top: 8px;
}
}
h1 {
padding: 0;
color: mc('blue', '800');
margin-top: 2rem;
position: relative;
@at-root .theme--dark & {
color: mc('grey', '300');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(to right, mc('theme', 'primary'), rgba(mc('theme', 'primary'), 0));
border-radius: 3px;
@at-root .theme--dark & {
background: linear-gradient(to right, mc('blue', '300') 0%, mc('blue', '500') 10%, rgba(mc('blue', '900'), 0) 100%);
}
@at-root .is-rtl & {
background: linear-gradient(to left, mc('theme', 'primary'), rgba(mc('theme', 'primary'), 0));
}
@at-root .theme--dark.is-rtl & {
background: linear-gradient(to left, mc('grey', '600'), rgba(mc('grey', '600'), 0));
}
}
}
h2 {
margin: 1rem 0 0 0;
color: mc('grey', '800');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '400');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '700'), rgba(mc('grey', '700'), 0));
@at-root .theme--dark & {
background: linear-gradient(to right, mc('grey', '300'), rgba(mc('grey', '700'), 0));
}
@at-root .is-rtl & {
background: linear-gradient(to left, mc('grey', '700'), rgba(mc('grey', '700'), 0));
}
@at-root .theme--dark.is-rtl & {
background: linear-gradient(to left, mc('grey', '300'), rgba(mc('grey', '700'), 0));
}
}
}
h3 {
margin: 8px 0 0 0;
color: mc('grey', '700');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '600');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 90%);
}
}
h4, h5, h6 {
font-size: 1rem;
margin: 8px 0 0 0;
color: mc('grey', '700');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '600');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 70%);
}
}
h5 {
&::after {
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 50%);
}
}
h6 {
&::after {
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 30%);
}
}
// ---------------------------------
// PARAGRAPHS
// ---------------------------------
p {
padding: 1rem 0 0 0;
margin: 0;
text-align: justify;
@at-root .contents > div > p:first-child {
padding-top: 0;
}
@at-root .v-application & {
margin-bottom: 0;
}
}
hr {
margin: 1rem 0;
height: 1px;
border: none;
background-color: mc('grey', '400');
@at-root .theme--dark & {
background-color: mc('grey', '700');
}
}
.emoji {
height: 1.25em;
margin: 0 1px -4px;
}
blockquote {
padding: 0 1rem 1rem 1rem;
border-left: 5px solid mc('blue', '500');
border-radius: .5rem;
margin: 1rem 0;
> p:first-child .emoji {
margin-right: .5rem;
}
&.valign-center > p {
display: flex;
align-items: center;
}
&.is-info {
background-color: mc('blue', '50');
border-color: mc('blue', '300');
color: mc('blue', '900');
code {
background-color: mc('blue', '50');
color: mc('blue', '800');
}
@at-root .theme--dark & {
background-color: mc('blue', '900');
color: mc('blue', '50');
border-color: mc('blue', '500');
}
}
&.is-warning {
background-color: mc('orange', '50');
border-color: mc('orange', '300');
color: darken(mc('orange', '900'), 10%);
code {
background-color: mc('orange', '50');
color: mc('orange', '800');
}
@at-root .theme--dark & {
background-color: darken(mc('orange', '900'), 5%);
color: mc('orange', '100');
border-color: mc('orange', '500');
box-shadow: 0 0 2px 0 mc('grey', '900');
}
}
&.is-danger {
background-color: mc('red', '50');
border-color: mc('red', '300');
color: mc('red', '900');
code {
background-color: mc('red', '50');
color: mc('red', '800');
}
@at-root .theme--dark & {
background-color: mc('red', '900');
color: mc('red', '100');
border-color: mc('red', '500');
}
}
&.is-success {
background-color: mc('green', '50');
border-color: mc('green', '300');
color: mc('green', '900');
code {
background-color: mc('green', '50');
color: mc('green', '800');
}
@at-root .theme--dark & {
background-color: mc('green', '900');
color: mc('green', '50');
border-color: mc('green', '500');
}
}
}
// ---------------------------------
// LISTS
// ---------------------------------
ol, ul {
padding: 1rem 0 0 1rem;
list-style-position: outside;
@at-root .is-rtl & {
padding-left: 0;
padding-right: 1rem;
}
li > ul, li > ol {
padding-top: .5rem;
padding-left: 1rem;
@at-root .is-rtl & {
padding-left: 0;
padding-right: 1rem;
}
}
li + li {
margin-top: .5rem;
}
&.links-list {
padding-left: 0;
list-style-type: none;
@at-root .is-rtl & {
padding-right: 0;
}
li {
background-color: mc('grey', '50');
background-image: linear-gradient(to bottom, #FFF, mc('grey', '50'));
border-right: 1px solid mc('grey', '200');
border-bottom: 1px solid mc('grey', '200');
border-left: 5px solid mc('grey', '300');
box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);
padding: 1rem;
border-radius: 5px;
font-weight: 500;
@at-root .is-rtl & {
border-left-width: 1px;
border-right-width: 5px;
}
&:hover {
background-image: linear-gradient(to bottom, #FFF, lighten(mc('blue', '50'), 4%));
border-left-color: mc('blue', '500');
cursor: pointer;
@at-root .is-rtl & {
border-left-color: mc('grey', '200');
border-right-width: mc('blue', '500');
}
}
&::before {
content: '';
display: none;
}
> a {
display: block;
text-decoration: none;
margin: -1rem;
padding: 1rem;
> em {
font-weight: 400;
font-style: normal;
color: mc('grey', '700');
display: inline-block;
padding-left: .5rem;
border-left: 1px solid mc('grey', '300');
margin-left: .5rem;
&.is-block {
display: block;
padding-left: 0;
margin-left: 0;
border-left: none;
}
}
}
> em {
font-weight: 400;
font-style: normal;
}
@at-root .theme--dark & {
background-color: mc('grey', '50');
background-image: linear-gradient(to bottom, lighten(mc('grey', '900'), 5%), mc('grey', '900'));
border-right: 1px solid mc('grey', '900');
border-bottom: 1px solid mc('grey', '900');
border-left: 5px solid mc('grey', '700');
box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.1);
@at-root .theme--dark.is-rtl & {
border-left-width: 1px;
border-right-width: 5px;
}
&:hover {
background-image: linear-gradient(to bottom, lighten(mc('grey', '900'), 2%), darken(mc('grey', '900'), 3%));
border-left-color: mc('indigo', '300');
cursor: pointer;
@at-root .theme--dark.is-rtl & {
border-left-color: mc('grey', '900');
border-right-width: mc('indigo', '300');
}
}
}
}
}
&.grid-list {
margin: 1rem 0 0 0;
background-color: #FFF;
border: 1px solid mc('grey', '200');
padding: 1px;
display: inline-block;
list-style-type: none;
@at-root .theme--dark & {
background-color: #000;
border: 1px solid mc('grey', '800');
}
li {
background-color: mc('grey', '50');
padding: .6rem 1rem;
display: block;
&:nth-child(odd) {
background-color: mc('grey', '100');
}
& + li {
margin-top: 0;
}
&::before {
content: '';
display: none;
}
@at-root .theme--dark & {
background-color: mc('grey', '900');
&:nth-child(odd) {
background-color: darken(mc('grey', '900'), 5%);
}
}
}
}
}
ul {
list-style: square outside;
}
// ---------------------------------
// CODE
// ---------------------------------
code {
background-color: mc('indigo', '50');
padding: 0 5px;
color: mc('indigo', '800');
font-family: 'Roboto Mono', monospace;
font-weight: normal;
font-size: 1rem;
box-shadow: none;
&::before, &::after {
display: none;
}
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
color: mc('indigo', '100');
}
}
.prismjs{
border: none;
border-radius: 5px;
box-shadow: initial;
background-color: mc('grey', '900');
padding: 1rem 1rem 1rem 3rem;
margin: 1rem 0;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
}
> code {
background-color: transparent;
padding: 0;
color: #FFF;
box-shadow: initial;
display: block;
font-size: .85rem;
font-family: 'Roboto Mono', monospace;
&:after, &:before {
content: initial;
letter-spacing: initial;
}
}
}
// ---------------------------------
// TASK LISTS
// ---------------------------------
.task-list-item {
position: relative;
list-style-type: none;
&-checkbox[disabled] {
display: none;
& + label {
padding-left: 1.5rem;
}
& + label::before {
position: absolute;
left: 0;
top: 2px;
content: ' ';
display: block;
width: 1.1rem;
height: 1.1rem;
background-color: #FFF;
border: 1px solid mc('grey', '400');
border-radius: 2px;
font-weight: bold;
font-size: .8rem;
line-height: 1rem;
text-align: center;
@at-root .theme--dark & {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
}
}
&[checked] + label::before {
content: '';
}
}
.contains-task-list {
padding: .5rem 0 0 1.5rem;
}
}
// ---------------------------------
// TABLES
// ---------------------------------
table {
margin: .5rem 1.75rem;
border-spacing: 0;
th {
padding: .75rem;
border-bottom: 2px solid mc('grey', '500');
color: mc('grey', '600');
}
td {
padding: .75rem;
}
tr {
td {
border-bottom: 1px solid mc('grey', '200');
}
}
}
// ---------------------------------
// IMAGES
// ---------------------------------
img {
max-width: 100%;
&.align-left {
float: left;
margin: 0 1rem 1rem 0;
}
&.align-right {
float: right;
margin: 0 0 1rem 1rem;
}
&.align-center {
display: block;
max-width: 100%;
margin: auto;
}
&.align-abstopright {
position: absolute;
top: -90px;
right: 1rem;
height: calc(90px - 32px);
width: auto;
}
&.decor-shadow {
box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);
}
&.decor-outline {
border: 1px solid mc('grey', '400');
}
&.uml-diagram {
margin: 1rem 0;
}
}
figure.image {
margin: 1rem 0 0 0;
img {
margin: 0 auto;
}
figcaption {
padding: 4px 1rem;
text-align: center;
font-size: 12px;
color: mc('grey', '700');
background-color: mc('grey', '100');
@at-root .theme--dark & {
color: mc('grey', '400');
background-color: mc('grey', '800');
}
}
}
// ---------------------------------
// DETAILS
// ---------------------------------
details {
background-color: mc('grey', '50');
margin: 1rem 2rem;
border: 1px solid mc('grey', '300');
border-radius: 7px;
> p {
padding-left: 0;
}
summary {
border-radius: 7px;
background-color: mc('grey', '50');
cursor: pointer;
height: 40px;
display: flex;
align-items: center;
padding: 0 1rem;
transition: background-color .4s ease;
&:focus {
outline: none;
background-color: mc('grey', '100');
}
}
&[open] {
padding: 1rem;
summary {
background-color: mc('grey', '100');
border-bottom: 1px solid mc('grey', '300');
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
margin: -1rem -1rem 1rem -1rem;
}
}
@at-root .theme--dark & {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
summary {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
}
&[open] summary {
background-color: lighten(mc('grey', '900'), 5%);
}
}
}
// ---------------------------------
// HIGHLIGHTING
// ---------------------------------
mark {
&.pen-red {
color: mc('red', '500');
background-color: initial;
}
&.pen-green {
color: mc('green', '500');
background-color: initial;
}
&.marker-blue {
background-color: mc('blue', '300');
}
&.marker-yellow {
background-color: mc('yellow', '300');
}
&.marker-pink {
background-color: mc('pink', '300');
}
&.marker-green {
background-color: mc('green', '300');
}
}
}
// ---------------
// RTL FIXES
// Vuetify GH Issue: https://github.com/vuetifyjs/vuetify/issues/6317
// ---------------
.is-rtl {
.page-col-content.is-page-header {
@each $size, $width in $grid-breakpoints {
@media (min-width: $width) {
@for $n from 0 through 12 {
&.offset-#{$size}-#{$n} {
margin-left: 0;
margin-right: ($n / 12 * 100) * 1%;
}
}
}
}
}
}
// ---------------
// PRINT OVERRIDES
// ---------------
@media print {
.nav-header,
.v-navigation-drawer,
.v-footer,
.v-btn--fab,
.page-col-sd,
.v-tooltip__content
{
display: none !important;
}
.page-col-content {
flex-basis: 100% !important;
flex-grow: 1 !important;
max-width: 100% !important;
margin-left: 0 !important;
> .v-toolbar {
border: 1px solid mc('grey', '300') !important;
border-radius: 7px !important;
& + .v-divider {
display: none !important;
}
}
}
.v-content {
padding: 0 !important;
font-size: 14px;
background-color: #FFF;
}
.v-content .contents {
color: #000;
background-color: #FFF;
@at-root .theme--dark & {
color: #000;
}
.prismjs{
box-shadow: none;
background-color: #FFF;
@at-root .theme--dark & {
background-color: #FFF;
}
> code {
color: #000;
box-shadow: none;
text-shadow: none;
}
}
}
}