pleroma-fe/src/components/style_switcher/style_switcher.vue

213 lines
7.8 KiB
Vue
Raw Normal View History

2017-01-17 04:57:03 +11:00
<template>
<div>
<div>{{$t('settings.presets')}}
<label for="style-switcher" class='select'>
<select id="style-switcher" v-model="selected" class="style-switcher">
<option v-for="style in availableStyles" :value="style">{{style[0]}}</option>
</select>
<i class="icon-down-open"/>
</label>
</div>
<div class="color-container">
<p>{{$t('settings.theme_help')}}</p>
<div class="color-item">
<label for="bgcolor" class="theme-color-lb">{{$t('settings.background')}}</label>
<input id="bgcolor" class="theme-color-cl" type="color" v-model="bgColorLocal">
<input id="bgcolor-t" class="theme-color-in" type="text" v-model="bgColorLocal">
</div>
<div class="color-item">
<label for="fgcolor" class="theme-color-lb">{{$t('settings.foreground')}}</label>
<input id="fgcolor" class="theme-color-cl" type="color" v-model="btnColorLocal">
<input id="fgcolor-t" class="theme-color-in" type="text" v-model="btnColorLocal">
</div>
<div class="color-item">
<label for="textcolor" class="theme-color-lb">{{$t('settings.text')}}</label>
<input id="textcolor" class="theme-color-cl" type="color" v-model="textColorLocal">
<input id="textcolor-t" class="theme-color-in" type="text" v-model="textColorLocal">
</div>
<div class="color-item">
<label for="linkcolor" class="theme-color-lb">{{$t('settings.links')}}</label>
<input id="linkcolor" class="theme-color-cl" type="color" v-model="linkColorLocal">
<input id="linkcolor-t" class="theme-color-in" type="text" v-model="linkColorLocal">
</div>
<div class="color-item">
<label for="redcolor" class="theme-color-lb">{{$t('settings.cRed')}}</label>
<input id="redcolor" class="theme-color-cl" type="color" v-model="redColorLocal">
<input id="redcolor-t" class="theme-color-in" type="text" v-model="redColorLocal">
</div>
<div class="color-item">
<label for="bluecolor" class="theme-color-lb">{{$t('settings.cBlue')}}</label>
<input id="bluecolor" class="theme-color-cl" type="color" v-model="blueColorLocal">
<input id="bluecolor-t" class="theme-color-in" type="text" v-model="blueColorLocal">
</div>
<div class="color-item">
<label for="greencolor" class="theme-color-lb">{{$t('settings.cGreen')}}</label>
<input id="greencolor" class="theme-color-cl" type="color" v-model="greenColorLocal">
<input id="greencolor-t" class="theme-color-in" type="green" v-model="greenColorLocal">
</div>
<div class="color-item">
<label for="orangecolor" class="theme-color-lb">{{$t('settings.cOrange')}}</label>
<input id="orangecolor" class="theme-color-cl" type="color" v-model="orangeColorLocal">
<input id="orangecolor-t" class="theme-color-in" type="text" v-model="orangeColorLocal">
</div>
</div>
2018-04-08 09:39:39 +10:00
<div class="radius-container">
2018-04-08 09:52:15 +10:00
<p>{{$t('settings.radii_help')}}</p>
2018-04-08 09:39:39 +10:00
<div class="radius-item">
<label for="btnradius" class="theme-radius-lb">{{$t('settings.btnRadius')}}</label>
<input id="btnradius" class="theme-radius-rn" type="range" v-model="btnRadiusLocal">
<input id="btnradius-t" class="theme-radius-in" type="text" v-model="btnRadiusLocal">
</div>
<div class="radius-item">
<label for="panelradius" class="theme-radius-lb">{{$t('settings.panelRadius')}}</label>
<input id="panelradius" class="theme-radius-rn" type="range" v-model="panelRadiusLocal">
<input id="panelradius-t" class="theme-radius-in" type="text" v-model="panelRadiusLocal">
</div>
<div class="radius-item">
<label for="avatarradius" class="theme-radius-lb">{{$t('settings.avatarRadius')}}</label>
<input id="avatarradius" class="theme-radius-rn" type="range" v-model="avatarRadiusLocal">
<input id="avatarradius-t" class="theme-radius-in" type="green" v-model="avatarRadiusLocal">
</div>
<div class="radius-item">
<label for="avataraltradius" class="theme-radius-lb">{{$t('settings.avatarAltRadius')}}</label>
<input id="avataraltradius" class="theme-radius-rn" type="range" v-model="avatarAltRadiusLocal">
<input id="avataraltradius-t" class="theme-radius-in" type="text" v-model="avatarAltRadiusLocal">
</div>
<div class="radius-item">
<label for="attachmentradius" class="theme-radius-lb">{{$t('settings.attachmentRadius')}}</label>
<input id="attachmentrradius" class="theme-radius-rn" type="range" v-model="attachmentRadiusLocal">
<input id="attachmentradius-t" class="theme-radius-in" type="text" v-model="attachmentRadiusLocal">
</div>
<div class="radius-item">
<label for="tooltipradius" class="theme-radius-lb">{{$t('settings.tooltipRadius')}}</label>
<input id="tooltipradius" class="theme-radius-rn" type="range" v-model="tooltipRadiusLocal">
<input id="tooltipradius-t" class="theme-radius-in" type="text" v-model="tooltipRadiusLocal">
</div>
</div>
<div :style="{
'--btnRadius': btnRadiusLocal + 'px',
'--panelRadius': panelRadiusLocal + 'px',
'--avatarRadius': avatarRadiusLocal + 'px',
'--avatarAltRadius': avatarAltRadiusLocal + 'px',
'--tooltipRadius': tooltipRadiusLocal + 'px',
'--attachmentRadius': attachmentRadiusLocal + 'px'
}">
<div class="panel">
<div class="panel-heading" :style="{ 'background-color': btnColorLocal, 'color': textColorLocal }">Preview</div>
<div class="panel-body theme-preview-content" :style="{ 'background-color': bgColorLocal, 'color': textColorLocal }">
<h4>Content</h4>
<br>
A bunch of more content and
<a :style="{ 'color': linkColorLocal }">a nice lil' link</a>
<i :style="{ 'color': blueColorLocal }" class="icon-reply"/>
<i :style="{ 'color': greenColorLocal }" class="icon-retweet"/>
<i :style="{ 'color': redColorLocal }" class="icon-cancel"/>
<i :style="{ 'color': orangeColorLocal }" class="icon-star"/>
<br>
<br>
<div class="finder-error" :style="{ 'background-color': redColorLocal }">And a scary alert</div>
<button class="btn" :style="{ 'background-color': btnColorLocal, 'color': textColorLocal }">Button</button>
</div>
</div>
</div>
<button class="btn" @click="setCustomTheme">{{$t('general.apply')}}</button>
</div>
2017-01-17 04:57:03 +11:00
</template>
<script src="./style_switcher.js"></script>
2017-01-18 00:41:13 +11:00
<style lang="scss">
@import '../../_variables.scss';
.style-switcher {
2018-04-08 02:30:27 +10:00
margin-right: 1em;
}
2018-04-08 09:52:15 +10:00
.radius-container,
.color-container {
2018-04-08 02:30:27 +10:00
display: flex;
2018-04-08 09:52:15 +10:00
p {
margin-top: 2em;
margin-bottom: .5em;
}
}
.radius-container {
flex-direction: column;
}
.color-container {
2018-04-08 02:30:27 +10:00
flex-wrap: wrap;
justify-content: space-between;
}
2018-04-08 09:39:39 +10:00
.radius-item,
.color-item {
2018-04-08 02:30:27 +10:00
min-width: 20em;
display:flex;
flex: 1 1 0;
align-items: baseline;
margin: 5px 6px 5px 0;
2018-04-08 02:30:27 +10:00
label {
color: var(--faint, $fallback--faint);
}
}
2018-04-08 09:39:39 +10:00
.theme-radius-rn,
.theme-color-cl {
2018-04-08 02:30:27 +10:00
border: 0;
box-shadow: none;
background: transparent;
2018-04-08 09:39:39 +10:00
color: var(--faint, $fallback--faint);
}
.theme-color-cl,
2018-04-08 09:39:39 +10:00
.theme-radius-in,
.theme-color-in {
2018-04-08 02:30:27 +10:00
margin-left: 4px;
}
.theme-color-in {
2018-04-08 02:30:27 +10:00
padding: 5px;
min-width: 4em;
2018-04-08 09:39:39 +10:00
}
.theme-radius-in {
min-width: 1em;
}
.theme-radius-in,
.theme-color-in {
2018-04-08 02:30:27 +10:00
max-width: 7em;
flex: 1;
}
2018-04-08 09:39:39 +10:00
.theme-radius-lb,
.theme-color-lb {
2018-04-08 02:30:27 +10:00
flex: 2;
min-width: 7em;
2018-04-08 09:39:39 +10:00
}
.theme-radius-lb{
max-width: 50em;
}
.theme-color-lb {
2018-04-08 02:30:27 +10:00
max-width: 10em;
}
.theme-color-cl {
2018-04-08 02:30:27 +10:00
padding: 1px;
max-width: 8em;
align-self: stretch;
height: 100%;
flex: 0;
min-width: 2em;
cursor: pointer;
}
2018-04-08 02:30:27 +10:00
.theme-preview-content {
padding: 20px;
}
2017-01-18 00:41:13 +11:00
</style>