forked from mirrors/stickerpicker
78fdb6f175
The license was initially MPLv2 as I expected the project to be a fairly simple tiny web app, but it has already grown into multiple files. Now that I'm going to add a server component, I'm switching the license for future versions to AGPL like all my other non-library projects.
165 lines
3.1 KiB
Sass
165 lines
3.1 KiB
Sass
// maunium-stickerpicker - A fast and simple Matrix sticker picker widget.
|
|
// Copyright (C) 2020 Tulir Asokan
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
font-family: sans-serif
|
|
|
|
body
|
|
margin: 0
|
|
|
|
h1
|
|
font-size: 1rem
|
|
|
|
\:root
|
|
--stickers-per-row: 4
|
|
--sticker-size: calc(100vw / var(--stickers-per-row))
|
|
|
|
$nav-sticker-size: 12vw
|
|
$nav-bottom-highlight: 2px
|
|
$nav-height: calc(#{$nav-sticker-size} + #{$nav-bottom-highlight})
|
|
$nav-height-inverse: calc(-#{$nav-sticker-size} - #{$nav-bottom-highlight})
|
|
|
|
main
|
|
color: var(--text-color)
|
|
|
|
&.spinner
|
|
margin-top: 5rem
|
|
|
|
&.error, &.empty
|
|
margin: 2rem
|
|
|
|
&.empty
|
|
text-align: center
|
|
|
|
&.has-content
|
|
position: fixed
|
|
top: 0
|
|
left: 0
|
|
right: 0
|
|
bottom: 0
|
|
|
|
display: grid
|
|
grid-template-rows: $nav-height auto
|
|
|
|
main.theme-light
|
|
--highlight-color: #eee
|
|
--text-color: black
|
|
background-color: white
|
|
|
|
main.theme-dark
|
|
--highlight-color: #444
|
|
--text-color: white
|
|
background-color: #22262e
|
|
|
|
main.theme-black
|
|
--highlight-color: #222
|
|
--text-color: white
|
|
background-color: black
|
|
|
|
.icon
|
|
width: 100%
|
|
height: 100%
|
|
background-color: var(--text-color)
|
|
mask-size: contain
|
|
-webkit-mask-size: contain
|
|
mask-image: var(--icon-image)
|
|
-webkit-mask-image: var(--icon-image)
|
|
|
|
&.icon-settings
|
|
--icon-image: url(../res/settings.svg)
|
|
|
|
&.icon-recent
|
|
--icon-image: url(../res/recent.svg)
|
|
|
|
nav
|
|
display: flex
|
|
overflow-x: auto
|
|
|
|
> a
|
|
border-bottom: $nav-bottom-highlight solid transparent
|
|
|
|
&.visible
|
|
border-bottom-color: green
|
|
|
|
> div.sticker
|
|
width: $nav-sticker-size
|
|
height: $nav-sticker-size
|
|
|
|
div.pack-list, nav
|
|
scrollbar-width: none
|
|
|
|
&::-webkit-scrollbar
|
|
display: none
|
|
|
|
div.pack-list
|
|
overflow-y: auto
|
|
|
|
div.pack-list.ios-safari-hack
|
|
position: fixed
|
|
top: $nav-height
|
|
bottom: 0
|
|
left: 0
|
|
right: 0
|
|
-webkit-overflow-scrolling: touch
|
|
|
|
section.stickerpack
|
|
margin-top: .75rem
|
|
|
|
> div.sticker-list
|
|
display: flex
|
|
flex-wrap: wrap
|
|
|
|
> h1
|
|
margin: 0 0 0 .75rem
|
|
|
|
div.sticker
|
|
display: flex
|
|
padding: 4px
|
|
cursor: pointer
|
|
position: relative
|
|
width: var(--sticker-size)
|
|
height: var(--sticker-size)
|
|
box-sizing: border-box
|
|
|
|
&:hover
|
|
background-color: var(--highlight-color)
|
|
|
|
> img
|
|
display: none
|
|
width: 100%
|
|
object-fit: contain
|
|
|
|
&.visible
|
|
display: initial
|
|
|
|
> .icon
|
|
width: 70%
|
|
height: 70%
|
|
margin: 15%
|
|
|
|
div.settings-list
|
|
display: flex
|
|
flex-direction: column
|
|
|
|
> *
|
|
margin: .5rem
|
|
|
|
button
|
|
padding: .5rem
|
|
border-radius: .25rem
|
|
|
|
input
|
|
width: 100%
|