1
0
Fork 1
mirror of https://github.com/maunium/stickerpicker synced 2024-11-11 03:44:10 +00:00
stickerpicker/web/style/index.sass

228 lines
4.6 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})
$search-box-icon-size: 1rem
$search-box-input-height: 1rem
$search-box-input-padding: .7rem
$search-box-input-margin: .5rem
$search-box-height: calc(2 * #{$search-box-input-padding} + 2 * #{$search-box-input-margin} + #{$search-box-input-height})
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 min-content auto
main.theme-light
--highlight-color: #eee
--search-box-color: var(--highlight-color)
--text-color: black
background-color: white
main.theme-dark
--highlight-color: #444
--search-box-color: #383e4b
--text-color: white
background-color: #22262e
main.theme-black
--highlight-color: #222
--search-box-color: var(--highlight-color)
--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)
&.icon-search
--icon-image: url(../res/search.svg)
&.icon-reset
--icon-image: url(../res/reset.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: calc(#{$nav-height} + #{$search-box-height})
bottom: 0
left: 0
right: 0
-webkit-overflow-scrolling: touch
div.search-empty
margin: 1.2rem
text-align: center
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.search-box
display: flex
margin: $search-box-input-margin
padding: 0
border-radius: .4rem
background-color: var(--search-box-color)
opacity: .5
transition: all .1s
border: 1px solid transparent
&:focus-within
opacity: 1
border: 1px solid var(--text-color)
&:not(:focus-within):hover
opacity: .7
input,.icon-display
color: var(--text-color)
outline: none
border: none
height: $search-box-input-height
margin: 0
padding: $search-box-input-padding
background-color: transparent
-webkit-tap-highlight-color: transparent
.icon-display
width: $search-box-input-height
&.reset-click-zone
cursor: pointer
.icon
display: block
width: $search-box-icon-size
height: $search-box-icon-size
.icon-search
opacity: .5
input
flex-grow: 1
font-size: 1rem
div.settings-list
display: flex
flex-direction: column
> *
margin: .5rem
button
padding: .5rem
border-radius: .25rem
input:not([type="checkbox"])
width: 100%