Initial Commit
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/target
|
||||
/dist
|
||||
824
Cargo.lock
generated
Normal file
824
Cargo.lock
generated
Normal file
@ -0,0 +1,824 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.52"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "84450d0b4a8bd1ba4144ce8ce718fbc5d071358b1e5384bace6536b3d1f2d5b3"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
|
||||
|
||||
[[package]]
|
||||
name = "base-x"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "console_error_panic_hook"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const_fn"
|
||||
version = "0.4.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7"
|
||||
|
||||
[[package]]
|
||||
name = "cookie"
|
||||
version = "0.14.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951"
|
||||
dependencies = [
|
||||
"percent-encoding",
|
||||
"time",
|
||||
"version_check 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "css_typegen"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/hulthe/css_typegen.git?branch=master#ed1c4b1b7c8bf19e1ce045cafa12f3886041134c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regex",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dbg"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4677188513e0e9d7adced5997cf9a1e7a3c996c994f90093325c5332c1a8b221"
|
||||
dependencies = [
|
||||
"version_check 0.1.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "discard"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0"
|
||||
|
||||
[[package]]
|
||||
name = "enclose"
|
||||
version = "1.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1056f553da426e9c025a662efa48b52e62e0a3a7648aa2d15aeaaf7f0d329357"
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "28560757fe2bb34e79f907794bb6b22ae8b0e5c669b638a1132f2592b19035b4"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
"futures-util",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b1f9d34af5a1aac6fb380f735fe510746c38067c5bf16c7fd250280503c971b2"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-macro",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
"pin-utils",
|
||||
"slab",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getopts"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
|
||||
dependencies = [
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.1.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"wasi 0.9.0+wasi-snapshot-preview1",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"libc",
|
||||
"wasi 0.10.2+wasi-snapshot-preview1",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo-events"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "088514ec8ef284891c762c88a66b639b3a730134714692ee31829765c5bc814f"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo-file"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8f9fecfe46b5dc3cc46f58e98ba580cc714f2c93860796d002eb3527a465ef49"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"gloo-events",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo-timers"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f16c88aa13d2656ef20d1c042086b8767bbe2bdb62526894275a1b062161b2e"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.11.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.55"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.112"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
|
||||
|
||||
[[package]]
|
||||
name = "percent-encoding"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
|
||||
|
||||
[[package]]
|
||||
name = "pin-utils"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-hack"
|
||||
version = "0.5.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.36"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
|
||||
dependencies = [
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pulldown-cmark"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"getopts",
|
||||
"memchr",
|
||||
"unicase",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
||||
dependencies = [
|
||||
"getrandom 0.1.16",
|
||||
"libc",
|
||||
"rand_chacha",
|
||||
"rand_core",
|
||||
"rand_hc",
|
||||
"rand_pcg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_core"
|
||||
version = "0.5.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
|
||||
dependencies = [
|
||||
"getrandom 0.1.16",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_hc"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rand_pcg"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
|
||||
dependencies = [
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
||||
dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
|
||||
|
||||
[[package]]
|
||||
name = "seed"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b599be9cc57456f4b7fc99b8abfb154d4819f7b6c147e80be5580663dad4536"
|
||||
dependencies = [
|
||||
"console_error_panic_hook",
|
||||
"cookie",
|
||||
"dbg",
|
||||
"enclose",
|
||||
"futures",
|
||||
"gloo-file",
|
||||
"gloo-timers",
|
||||
"indexmap",
|
||||
"js-sys",
|
||||
"pulldown-cmark",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"uuid",
|
||||
"version_check 0.9.3",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||
dependencies = [
|
||||
"semver-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.132"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.132"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.73"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sha1"
|
||||
version = "0.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d"
|
||||
|
||||
[[package]]
|
||||
name = "singit2"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"css_typegen",
|
||||
"seed",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5"
|
||||
|
||||
[[package]]
|
||||
name = "standback"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff"
|
||||
dependencies = [
|
||||
"version_check 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdweb"
|
||||
version = "0.4.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5"
|
||||
dependencies = [
|
||||
"discard",
|
||||
"rustc_version",
|
||||
"stdweb-derive",
|
||||
"stdweb-internal-macros",
|
||||
"stdweb-internal-runtime",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdweb-derive"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdweb-internal-macros"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
|
||||
dependencies = [
|
||||
"base-x",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde",
|
||||
"serde_derive",
|
||||
"serde_json",
|
||||
"sha1",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stdweb-internal-runtime"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0"
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.84"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.2.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242"
|
||||
dependencies = [
|
||||
"const_fn",
|
||||
"libc",
|
||||
"standback",
|
||||
"stdweb",
|
||||
"time-macros",
|
||||
"version_check 0.9.3",
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time-macros"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1"
|
||||
dependencies = [
|
||||
"proc-macro-hack",
|
||||
"time-macros-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time-macros-impl"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f"
|
||||
dependencies = [
|
||||
"proc-macro-hack",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"standback",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicase"
|
||||
version = "2.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
|
||||
dependencies = [
|
||||
"version_check 0.9.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
version = "0.1.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||
|
||||
[[package]]
|
||||
name = "uuid"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
|
||||
dependencies = [
|
||||
"getrandom 0.2.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.9.0+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
|
||||
|
||||
[[package]]
|
||||
name = "wasi"
|
||||
version = "0.10.2+wasi-snapshot-preview1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"wasm-bindgen-macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"lazy_static",
|
||||
"log",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8e8d7523cb1f2a4c96c1317ca690031b714a51cc14e05f712446691f413f5d39"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.78"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc"
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.55"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
dependencies = [
|
||||
"winapi-i686-pc-windows-gnu",
|
||||
"winapi-x86_64-pc-windows-gnu",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi-i686-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
|
||||
[[package]]
|
||||
name = "winapi-x86_64-pc-windows-gnu"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
19
Cargo.toml
Normal file
19
Cargo.toml
Normal file
@ -0,0 +1,19 @@
|
||||
[package]
|
||||
name = "singit2"
|
||||
version = "0.1.0"
|
||||
authors = ["Joakim Hulthe <joakim@hulthe.net"]
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib"]
|
||||
|
||||
[dependencies]
|
||||
seed = "0.8.0"
|
||||
#wasm-bindgen = "0.2.70"
|
||||
serde = { version = "1", features = ['derive'] }
|
||||
serde_json = "1"
|
||||
anyhow = "*"
|
||||
|
||||
[dependencies.css_typegen]
|
||||
git = "https://github.com/hulthe/css_typegen.git"
|
||||
branch = "master"
|
||||
39
index.html
Executable file
39
index.html
Executable file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="Karaokelåtar på IT">
|
||||
|
||||
<!-- stylesheets -->
|
||||
<link data-trunk data-inline rel="scss" href="/static/styles/common.scss">
|
||||
<link data-trunk data-inline rel="scss" href="/static/styles/penguin.scss">
|
||||
<link data-trunk rel="scss" href="/static/styles/marquee.scss">
|
||||
|
||||
<!-- fonts -->
|
||||
<!--
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu|Ubuntu+Mono&display=swap">
|
||||
-->
|
||||
|
||||
<!-- pwa manifest -->
|
||||
<link data-trunk rel="copy-file" href="/static/manifest.json">
|
||||
<link rel="manifest" href="/static/manifest.json">
|
||||
|
||||
<!-- copy image directory -->
|
||||
<link data-trunk rel="copy-dir" href="/static/images">
|
||||
|
||||
<!-- image preloading -->
|
||||
<link rel="preload" href="/images/penguin1.svg" as="image">
|
||||
<link rel="preload" href="/images/penguin2.svg" as="image">
|
||||
<link rel="preload" href="/images/penguin3.svg" as="image">
|
||||
|
||||
<!-- icon -->
|
||||
<link rel="icon" type="image/png" href="/images/icon.png">
|
||||
|
||||
<title>SingIT</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
138
src/app.rs
Normal file
138
src/app.rs
Normal file
@ -0,0 +1,138 @@
|
||||
use crate::css::C;
|
||||
use crate::song::Song;
|
||||
use anyhow::anyhow;
|
||||
use seed::browser::util::document;
|
||||
use seed::prelude::*;
|
||||
use seed::{attrs, br, button, div, empty, error, img, input, log, p, span, C, IF};
|
||||
|
||||
pub struct Model {
|
||||
songs: Vec<Song>,
|
||||
show_elements: usize,
|
||||
}
|
||||
|
||||
const SCROLL_THRESHOLD: usize = 50;
|
||||
const INITIAL_ELEM_COUNT: usize = 100;
|
||||
|
||||
//#[derive(Clone, Debug)]
|
||||
pub enum Msg {
|
||||
Search(String),
|
||||
Scroll,
|
||||
}
|
||||
|
||||
pub fn init(_url: Url, _orders: &mut impl Orders<Msg>) -> Model {
|
||||
Model {
|
||||
songs: serde_json::from_str(include_str!("../static/songs.json"))
|
||||
.expect("failed to parsed songs"),
|
||||
show_elements: INITIAL_ELEM_COUNT,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders<Msg>) {
|
||||
match msg {
|
||||
Msg::Search(query) => {
|
||||
log!("search query");
|
||||
}
|
||||
Msg::Scroll => {
|
||||
let (scroll, max_scroll) = match get_scroll() {
|
||||
Ok(v) => v,
|
||||
Err(e) => {
|
||||
error!(e);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
let scroll_left: i32 = max_scroll - scroll;
|
||||
|
||||
// when there are fewer elements than this below the scroll viewport, add more
|
||||
const ELEMENT_HEIGHT: i32 = 48;
|
||||
|
||||
log!("scroll={}, height={}", scroll, max_scroll);
|
||||
if scroll_left < ELEMENT_HEIGHT * SCROLL_THRESHOLD as i32 {
|
||||
log!("showing more items");
|
||||
model.show_elements += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn view(model: &Model) -> Vec<Node<Msg>> {
|
||||
let song_card = |song: &Song| -> Node<Msg> {
|
||||
div![
|
||||
C![C.song_item],
|
||||
img![
|
||||
C![C.song_item_cover],
|
||||
match song.cover {
|
||||
Some(_) => attrs! {At::Src => format!("/images/songs/{}.png", song.song_hash)},
|
||||
None => attrs! {At::Src => "/images/default_cover.png"},
|
||||
},
|
||||
],
|
||||
div![
|
||||
C![C.song_item_info],
|
||||
div![C![C.song_item_title], song.title.to_string()],
|
||||
div![C![C.song_item_artist], song.artist.to_string()],
|
||||
],
|
||||
div![
|
||||
C![C.song_gizmos],
|
||||
match (&song.duet_singer_1, &song.duet_singer_2) {
|
||||
(Some(p1), Some(p2)) => div![
|
||||
C![C.duet_icon, C.tooltip],
|
||||
span![
|
||||
C![C.tooltiptext],
|
||||
"Duet",
|
||||
div![
|
||||
C![C.marquee],
|
||||
p![" 🗲 ", p1, " 🗲 ", p2, " 🗲 ", p1, " 🗲 ", p2]
|
||||
],
|
||||
],
|
||||
],
|
||||
_ => empty![],
|
||||
},
|
||||
],
|
||||
]
|
||||
};
|
||||
|
||||
vec![
|
||||
div![
|
||||
C![C.song_search_bar],
|
||||
div![
|
||||
input![
|
||||
attrs! {
|
||||
At::Placeholder => "Search",
|
||||
},
|
||||
C![C.song_search_field, C.tooltip],
|
||||
],
|
||||
button![
|
||||
C![C.song_sort_button, C.tooltip],
|
||||
span![C![C.tooltiptext], "awawawaw", br![], "aawawaw?"],
|
||||
],
|
||||
button![
|
||||
C![C.song_sort_button, C.tooltip],
|
||||
span![C![C.tooltiptext], "awawawaw"],
|
||||
],
|
||||
button![
|
||||
C![C.song_sort_button, C.song_sort_button_right, C.tooltip],
|
||||
span![C![C.tooltiptext], "awawawaw"],
|
||||
],
|
||||
],
|
||||
],
|
||||
div![
|
||||
C![C.song_list],
|
||||
attrs! {At::Id => SONG_LIST_ID},
|
||||
ev(Ev::Scroll, |_| Msg::Scroll),
|
||||
model.songs.iter().take(model.show_elements).map(song_card),
|
||||
IF![model.show_elements < model.songs.len() => div![C![C.center, C.penguin]]],
|
||||
],
|
||||
]
|
||||
}
|
||||
|
||||
const SONG_LIST_ID: &str = "song_list";
|
||||
|
||||
fn get_scroll() -> anyhow::Result<(i32, i32)> {
|
||||
let list = document()
|
||||
.get_element_by_id(SONG_LIST_ID)
|
||||
.ok_or(anyhow!("Failed to access song list element"))?;
|
||||
let scroll = list.scroll_top();
|
||||
let height = list.client_height();
|
||||
let max = (list.scroll_height() - height).max(0);
|
||||
Ok((scroll, max))
|
||||
}
|
||||
7
src/css.rs
Normal file
7
src/css.rs
Normal file
@ -0,0 +1,7 @@
|
||||
use css_typegen::css_typegen;
|
||||
|
||||
// NOTE: Remember to edit index.html when adding new css-files!
|
||||
|
||||
// Generate rust types for css-classes.
|
||||
// Used for autocompletion and extra compile-time checks.
|
||||
css_typegen!("static/styles");
|
||||
11
src/lib.rs
Normal file
11
src/lib.rs
Normal file
@ -0,0 +1,11 @@
|
||||
mod app;
|
||||
mod css;
|
||||
mod song;
|
||||
|
||||
use seed::prelude::wasm_bindgen;
|
||||
use seed::App;
|
||||
|
||||
#[wasm_bindgen(start)]
|
||||
pub fn start() {
|
||||
App::start("app", app::init, app::update, app::view);
|
||||
}
|
||||
18
src/song.rs
Normal file
18
src/song.rs
Normal file
@ -0,0 +1,18 @@
|
||||
use serde::Deserialize;
|
||||
|
||||
#[derive(Deserialize, Debug, Clone, Default)]
|
||||
pub struct Song {
|
||||
pub title: String,
|
||||
pub artist: String,
|
||||
pub cover: Option<String>,
|
||||
pub song_hash: String,
|
||||
pub language: Option<String>,
|
||||
pub video: Option<String>,
|
||||
pub year: Option<String>,
|
||||
pub genre: Option<String>,
|
||||
pub bpm: String,
|
||||
#[serde(rename = "duetsingerp1")]
|
||||
pub duet_singer_1: Option<String>,
|
||||
#[serde(rename = "duetsingerp2")]
|
||||
pub duet_singer_2: Option<String>,
|
||||
}
|
||||
BIN
static/images/default_cover.png
Normal file
BIN
static/images/default_cover.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.5 KiB |
58
static/images/duet.svg
Normal file
58
static/images/duet.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 35 KiB |
84
static/images/penguin1.svg
Normal file
84
static/images/penguin1.svg
Normal file
@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="120"
|
||||
height="120"
|
||||
viewBox="0 0 31.75 31.75"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="penguin1.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview14"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.9083333"
|
||||
inkscape:cx="60"
|
||||
inkscape:cy="68.54041"
|
||||
inkscape:window-width="1702"
|
||||
inkscape:window-height="930"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
style="display:none">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 7.5967544,-6.2400058 c 0,0 -0.041418,0.1031026 -0.02862,0.2093299 0.012798,0.1062273 0.084435,0.1741091 0.084435,0.1741091 l -0.083147,0.088222 c 0,0 -0.1053512,-0.138166 -0.073877,-0.2774823 0.031474,-0.1393166 0.1012092,-0.1941783 0.101209,-0.1941787 z"
|
||||
id="path1039" />
|
||||
</g>
|
||||
<g
|
||||
id="layer2"
|
||||
style="display:inline;fill:#ffffff">
|
||||
<g
|
||||
id="g1085"
|
||||
transform="matrix(4.3607823,0,0,4.3607823,-25.60314,0)"
|
||||
style="fill:#ffffff">
|
||||
<path
|
||||
style="fill:#ffffff;stroke-width:0.0678637"
|
||||
d="m 8.9055733,7.2413582 c -0.565186,-0.09685 -1.176774,-0.415363 -1.632858,-0.850389 -1.503214,-1.43381 -1.115157,-3.86618 0.767032,-4.807792 0.257986,-0.129065 0.613842,-0.340937 0.790791,-0.470828 0.427006,-0.31344801 0.957267,-0.88614801 0.957267,-1.03388001 0,-0.09418 0.01716,-0.101117 0.08424,-0.03403 0.04633,0.04633 0.09978,0.25562 0.118763,0.465073 l 0.03452,0.380824 0.213389,-0.180047 c 0.117363,-0.09903 0.228326,-0.180047 0.246583,-0.180047 0.01825,0 0.05453,0.199156 0.08059,0.442568 0.04564,0.42610801 0.0569,0.44741901 0.303068,0.57300001 0.140621,0.07174 0.394132,0.23612 0.563357,0.365292 l 0.307682,0.234855 0.07434,-0.163155 c 0.159263,-0.34954 0.752058,-0.0992 0.869072,0.367026 0.06159,0.245394 -0.05541,0.517892 -0.23331,0.543385 -0.08323,0.01193 -0.150934,0.0272 -0.150453,0.03393 4.74e-4,0.0067 0.06156,0.205833 0.135728,0.442438 0.385927,1.231145 -0.08926,2.609103 -1.154563,3.348037 -0.643116,0.446087 -1.5987099,0.656795 -2.3752269,0.523734 z m 1.2351777,-0.136144 c 0.558283,-0.117422 1.025941,-0.369806 1.37326,-0.741116 0.473889,-0.506621 0.628567,-0.967713 0.420215,-1.252649 -0.07888,-0.107873 -0.07888,-0.161324 0,-0.350108 0.121083,-0.289793 0.117727,-0.594607 -0.01134,-1.029201 -0.101025,-0.340191 -0.181472,-0.425109 -0.268827,-0.28377 -0.08904,0.144072 -0.389985,0.0647 -0.617562,-0.162872 -0.17695,-0.176948 -0.230737,-0.287688 -0.230737,-0.475043 0,-0.241031 -0.0037,-0.244309 -0.280028,-0.244309 -0.176302,0 -0.427095,0.07473 -0.6770717,0.201763 l -0.397045,0.201762 -0.337336,-0.209698 c -0.815418,-0.506889 -1.602182,-0.242198 -2.027616,0.682148 -0.191776,0.416675 -0.236961,1.14766 -0.08788,1.421699 0.06294,0.115695 0.06651,0.180504 0.01288,0.234129 -0.116061,0.11606 -0.08718,0.501906 0.059,0.78846 0.482693,0.946148 1.827708,1.480112 3.0700767,1.218805 z M 8.8477543,5.2533082 c -0.424112,-0.10747 -0.654904,-0.301236 -0.592603,-0.497529 0.06213,-0.195726 0.665023,-0.497533 1.076087,-0.538679 0.611047,-0.06116 1.5000967,0.382898 1.3821197,0.69034 -0.119917,0.312492 -1.2041087,0.513493 -1.8656037,0.345868 z m 1.2589217,-0.1425 c 0.456161,-0.135464 0.539706,-0.23998 0.34103,-0.426626 -0.419028,-0.393651 -1.1014207,-0.461363 -1.6826577,-0.166964 -0.455585,0.230757 -0.494803,0.363836 -0.150648,0.511195 0.486065,0.208121 0.97753,0.235258 1.4922757,0.0824 z M 8.6341183,4.7696162 c 0,-0.08863 0.121319,-0.101086 0.82579,-0.08483 0.5862597,0.01353 0.8339577,0.04366 0.8539537,0.103883 0.02154,0.06486 -0.172846,0.08483 -0.8257887,0.08483 -0.72146,0 -0.853955,-0.01612 -0.853955,-0.103884 z m 2.9852977,-1.422177 c 0.116451,-0.140314 0.03796,-0.315999 -0.115476,-0.258467 -0.109958,0.04122 -0.111839,0.03384 -0.02006,-0.07879 0.09429,-0.115732 0.08966,-0.120606 -0.06733,-0.07078 -0.151,0.04792 -0.158931,0.04187 -0.07599,-0.05808 0.08138,-0.09805 0.07308,-0.112539 -0.0684,-0.119456 -0.115019,-0.0056 -0.127085,-0.01674 -0.04224,-0.03891 0.145624,-0.03806 0.154107,-0.128726 0.01697,-0.181351 -0.432561,-0.165989 -0.470623,0.571787 -0.04153,0.804994 0.228877,0.12439 0.311386,0.124558 0.414065,8.42e-4 z m 0.337056,-0.43736 0.16668,-0.128093 -0.131214,-0.243646 c -0.07217,-0.134006 -0.148013,-0.243647 -0.168546,-0.243647 -0.02982,0 -0.274289,0.150867 -0.397626,0.245381 -0.03646,0.02793 0.26552,0.501375 0.318664,0.499607 0.02495,-8.28e-4 0.120369,-0.05915 0.212042,-0.129602 z m 0.629143,-0.248805 c 0.176025,-0.386328 -0.430301,-0.9977 -0.667609,-0.673165 -0.104081,0.142338 -0.09554,0.249613 0.02302,0.289132 0.04119,0.01373 0.09163,-0.03017 0.112083,-0.09756 0.02046,-0.06738 0.02721,-0.03826 0.015,0.0647 -0.01797,0.151566 -0.0046,0.1726 0.0703,0.110451 0.111754,-0.09275 0.124608,0.01632 0.01486,0.126073 -0.05828,0.05827 -0.03712,0.06896 0.08483,0.04283 0.137963,-0.02955 0.144981,-0.02359 0.04653,0.03952 -0.06377,0.04088 -0.09868,0.119327 -0.07757,0.174329 0.06225,0.162216 0.290873,0.116122 0.378559,-0.07633 z"
|
||||
id="path913-7" />
|
||||
<path
|
||||
style="fill:#ffffff;stroke-width:0.0691565"
|
||||
d="M 7.8768005,4.236173 C 7.6543017,4.153323 7.6524223,3.710674 7.8742605,3.628625 8.0875869,3.549705 8.2761935,3.613255 8.3404236,3.785709 8.4567516,4.098027 8.1933217,4.354002 7.8768404,4.236173 Z M 8.1361383,3.927654 c 0,-0.117352 -0.1782109,-0.133788 -0.2468281,-0.02276 -0.052137,0.08436 0.1031823,0.211193 0.1916582,0.156514 0.030349,-0.01875 0.055173,-0.07894 0.055173,-0.13375 z m 2.6417907,0.232298 c -0.219104,-0.219102 0.03747,-0.636462 0.342282,-0.556756 0.196786,0.05146 0.30135,0.306717 0.201823,0.492685 -0.08796,0.164344 -0.406338,0.201838 -0.544105,0.06407 z m 0.370255,-0.130506 c 0.07127,-0.115313 -0.08903,-0.247547 -0.184421,-0.152145 -0.0798,0.0798 -0.02986,0.227327 0.07696,0.227327 0.03354,0 0.0819,-0.03383 0.107459,-0.07518 z"
|
||||
id="path913-6-5" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 10.825894,3.3605122 c 0,0 -0.04142,0.1031026 -0.02862,0.2093299 0.0128,0.1062273 0.08444,0.1741091 0.08444,0.1741091 l -0.08315,0.088222 c 0,0 -0.105351,-0.138166 -0.07388,-0.2774823 0.03147,-0.1393166 0.101209,-0.1941783 0.10121,-0.1941787 z"
|
||||
id="path1039-6" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 7.7793686,3.3458678 c 0,0 -0.04142,0.1031026 -0.02862,0.2093299 0.0128,0.1062273 0.08444,0.1741091 0.08444,0.1741091 l -0.08315,0.088222 c 0,0 -0.105351,-0.138166 -0.07388,-0.2774823 0.03147,-0.1393166 0.101209,-0.1941783 0.10121,-0.1941787 z"
|
||||
id="path1039-6-2" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="layer3"
|
||||
style="display:inline" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.8 KiB |
66
static/images/penguin2.svg
Normal file
66
static/images/penguin2.svg
Normal file
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="120"
|
||||
height="120"
|
||||
viewBox="0 0 31.75 31.75"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="penguin2.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview839"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.2083333"
|
||||
inkscape:cx="6.8456376"
|
||||
inkscape:cy="60"
|
||||
inkscape:window-width="1702"
|
||||
inkscape:window-height="930"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
style="display:inline;fill:#ffffff">
|
||||
<path
|
||||
style="fill:#ffffff;stroke-width:0.177246"
|
||||
d="m 13.134179,31.651166 c -1.367874,-0.18043 -3.4872278,-0.85238 -4.780367,-1.51563 -1.871747,-0.96002 -4.179215,-3.22966 -5.0074297,-4.92534 -1.5914865,-3.25839 -1.6801158,-7.72336 -0.2278948,-11.48085 1.0247424,-2.65144 2.7098602,-4.5706201 5.4768881,-6.2376401 4.4640374,-2.6894 6.9208324,-4.59636 8.5218534,-6.61464 0.435944,-0.54955 0.851411,-0.9404 0.923263,-0.86855 0.34663,0.34663 0.709996,2.45556 0.596276,3.46071 l -0.118698,1.04918 0.543199,-0.3868 c 0.298763,-0.21273 0.754695,-0.66407 1.013185,-1.00297 0.258491,-0.3389 0.531184,-0.55268 0.605988,-0.47507 0.277608,0.28804 0.872923,2.3693 0.872923,3.05181 0,0.78189 -0.07309,0.70941 2.140938,2.12277 3.360595,2.14527 5.28622,5.2741001 5.845846,9.4985401 0.238089,1.79727 0.119928,4.12317 -0.289284,5.69424 -0.438918,1.68512 -1.295306,3.20011 -2.596637,4.59356 -2.715779,2.90803 -6.119638,4.1954 -10.928887,4.13338 -1.132683,-0.0146 -2.298705,-0.0581 -2.591161,-0.0967 z m 5.683631,-1.1265 c 5.074026,-0.89873 8.492767,-3.70496 9.49005,-7.7898 0.358508,-1.46844 0.317005,-5.28368 -0.07569,-6.95754 -0.594746,-2.53514 -2.005266,-4.78931 -3.64922,-5.8318801 -1.428352,-0.90583 -1.561881,-0.82384 -2.840659,1.7442101 -0.615739,1.23654 -1.777129,3.21756 -2.580868,4.40229 l -1.461342,2.15404 0.927607,0.3153 c 1.188141,0.40386 2.476979,1.20634 2.848748,1.77373 0.272049,0.4152 0.269021,0.4806 -0.04735,1.02231 -0.778356,1.33273 -2.272203,1.79512 -5.849412,1.81056 l -2.340153,0.0101 -2.489801,2.46697 c -2.6276133,2.60352 -2.8788341,3.03045 -2.0880964,3.54856 1.8126654,1.18771 7.0732674,1.8772 10.1561944,1.33115 z m 3.183004,-13.17071 c -0.205126,-0.14999 -0.329285,-0.4602 -0.329285,-0.8227 0,-0.96498 1.087198,-1.43355 1.715448,-0.73934 0.872429,0.96402 -0.338235,2.3283 -1.386163,1.56204 z m -3.186586,4.78402 c 1.133944,-0.30198 1.619925,-0.56299 1.85054,-0.9939 0.246861,-0.46126 -0.269147,-0.94676 -1.770094,-1.66543 -1.062457,-0.50872 -1.296906,-0.55176 -3.013183,-0.55311 -1.794444,-0.001 -1.910137,0.0225 -3.231141,0.66815 -1.860639,0.90936 -2.118197,1.48499 -0.948717,2.12031 1.182601,0.64245 5.357705,0.89133 7.112595,0.42398 z m -5.26747,-0.96936 c -1.113796,-0.13246 -1.303724,-0.23853 -1.149022,-0.64168 0.08921,-0.23246 0.582443,-0.27351 3.286452,-0.27351 1.749822,0 3.307658,0.0484 3.461858,0.10758 0.350902,0.13466 0.365077,0.53097 0.02367,0.66198 -0.432127,0.16582 -4.555272,0.2726 -5.622968,0.14563 z m -3.7845902,-3.81466 c 0.7343882,-0.537 0.2478022,-1.88618 -0.6802563,-1.88618 -0.5030742,0 -0.9992445,0.51278 -0.9992445,1.03268 0,0.90987 0.9453857,1.39029 1.6795008,0.8535 z"
|
||||
id="path865" />
|
||||
<path
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 7.5967544,-6.2400058 c 0,0 -0.041418,0.1031026 -0.02862,0.2093299 0.012798,0.1062273 0.084435,0.1741091 0.084435,0.1741091 l -0.083147,0.088222 c 0,0 -0.1053512,-0.138166 -0.073877,-0.2774823 0.031474,-0.1393166 0.1012092,-0.1941783 0.101209,-0.1941787 z"
|
||||
id="path1039" />
|
||||
</g>
|
||||
<g
|
||||
id="layer2"
|
||||
style="display:none" />
|
||||
<g
|
||||
id="layer3"
|
||||
style="display:none" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
67
static/images/penguin3.svg
Normal file
67
static/images/penguin3.svg
Normal file
@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="120"
|
||||
height="120"
|
||||
viewBox="0 0 31.75 31.75"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
sodipodi:docname="penguin3.svg"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<sodipodi:namedview
|
||||
id="namedview906"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#ffffff"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="6.2083333"
|
||||
inkscape:cx="6.8456376"
|
||||
inkscape:cy="60"
|
||||
inkscape:window-width="1702"
|
||||
inkscape:window-height="930"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg8" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1"
|
||||
style="display:none">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 7.5967544,-6.2400058 c 0,0 -0.041418,0.1031026 -0.02862,0.2093299 0.012798,0.1062273 0.084435,0.1741091 0.084435,0.1741091 l -0.083147,0.088222 c 0,0 -0.1053512,-0.138166 -0.073877,-0.2774823 0.031474,-0.1393166 0.1012092,-0.1941783 0.101209,-0.1941787 z"
|
||||
id="path1039" />
|
||||
</g>
|
||||
<g
|
||||
id="layer2"
|
||||
style="display:none" />
|
||||
<g
|
||||
id="layer3"
|
||||
style="display:inline;fill:#ffffff">
|
||||
<path
|
||||
style="display:inline;fill:#ffffff;stroke-width:0.294273"
|
||||
d="M 13.219872,31.561152 C 7.7639295,30.619019 3.1854282,26.04262 2.2530273,20.599337 1.3266857,15.191452 4.3731265,9.445337 9.4587119,7.0081512 12.617064,5.4945709 15.836366,2.8084407 16.825842,0.86116517 L 17.263414,0 17.622933,0.67182296 c 0.19778,0.36951884 0.313308,1.25361504 0.256757,1.96469194 -0.05655,0.7110726 -0.05991,1.2928605 -0.0077,1.2928605 0.05242,0 0.52936,-0.3310521 1.059852,-0.7356803 0.530492,-0.4046239 1.05135,-0.7356802 1.157461,-0.7356802 0.106124,0 0.192929,0.845204 0.192929,1.8782354 v 1.8782312 l 1.580587,0.7733087 c 7.26375,3.5537888 9.530087,12.9645358 4.6616,19.3568408 -3.030552,3.979101 -8.363039,6.069856 -13.304766,5.216521 z m 5.356014,-0.592886 c 3.720242,-0.783427 7.101118,-3.48828 7.892345,-6.314256 0.336074,-1.200345 0.329308,-1.506279 -0.04795,-2.163583 -0.383774,-0.668636 -0.386199,-0.89544 -0.01957,-1.791532 0.938375,-2.291723 -0.417007,-6.522811 -2.67179,-8.34061 -0.91567,-0.738208 -1.4406,-0.918725 -2.942743,-1.011981 -1.593611,-0.09893 -2.045846,0.0015 -3.523445,0.781916 l -1.694978,0.895411 -1.487934,-0.924941 c -3.376446,-2.0989003 -6.6719039,-1.163244 -8.4524067,2.399829 -1.1527548,2.306846 -1.4375744,4.436294 -0.8292982,6.200159 0.2922024,0.847387 0.3536045,1.421626 0.1714833,1.603781 -0.4403631,0.440338 -0.3350945,2.176004 0.2005035,3.304594 0.7011922,1.477632 2.814632,3.472702 4.6084279,4.350322 2.6015972,1.272827 5.8052792,1.640958 8.7973002,1.010891 z m -5.355571,-7.922727 c -1.664073,-0.348285 -2.79605,-1.176171 -2.79605,-2.044978 0,-0.89302 2.504528,-2.316003 4.490206,-2.551169 1.788767,-0.211822 3.947996,0.437993 5.353112,1.610989 0.846392,0.706597 0.936274,0.903347 0.653807,1.431145 -0.704264,1.315915 -4.845636,2.151609 -7.701075,1.554013 z m 5.207815,-0.725102 c 2.110112,-0.626633 2.388166,-1.069391 1.265061,-2.014417 -1.037329,-0.87285 -2.579593,-1.366029 -4.266265,-1.364263 -1.351595,0.0015 -4.190311,1.218923 -4.45594,1.911124 -0.557627,1.453161 4.291873,2.407531 7.457144,1.467556 z m -6.385357,-1.479496 c 0,-0.384327 0.526071,-0.438355 3.580814,-0.367817 2.54216,0.05868 3.616241,0.189313 3.702949,0.450461 0.0934,0.281224 -0.749501,0.367859 -3.580813,0.367859 -3.128417,0 -3.70295,-0.06991 -3.70295,-0.450469 z M 8.5850578,18.025628 c -0.9467707,-0.352541 -0.9547704,-2.236086 -0.010638,-2.585219 0.907738,-0.335818 1.7102922,-0.0654 1.9836022,0.668419 0.494995,1.328966 -0.625944,2.418182 -1.9726282,1.9168 z m 1.1035225,-1.3128 c 0,-0.499353 -0.7583177,-0.569291 -1.0502946,-0.09685 -0.2218645,0.358966 0.439061,0.898662 0.815537,0.665994 0.1291443,-0.07979 0.2347576,-0.335903 0.2347576,-0.569129 z m 11.2412737,0.988467 c -0.932325,-0.932316 0.159441,-2.708253 1.456467,-2.36909 0.837358,0.218971 1.282295,1.305132 0.858791,2.096457 -0.374285,0.699311 -1.729037,0.858855 -2.315258,0.272633 z m 1.575497,-0.555325 c 0.303266,-0.490676 -0.378838,-1.053354 -0.784743,-0.647403 -0.339562,0.339563 -0.127059,0.967315 0.327478,0.967315 0.142719,0 0.348498,-0.143952 0.457256,-0.319903 z"
|
||||
id="path913-6" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.0 KiB |
15
static/manifest.json
Normal file
15
static/manifest.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "SingIT",
|
||||
"short_name": "SingIT",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"background_color": "#09babe",
|
||||
"description": "Karaokelåtar på IT",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/static/icon.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
276
static/styles/common.scss
Normal file
276
static/styles/common.scss
Normal file
@ -0,0 +1,276 @@
|
||||
body {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
-webkit-box-align: center;
|
||||
-ms-flex-align: center;
|
||||
align-items: center;
|
||||
background-color: #0c2738;
|
||||
color: #ffffff;
|
||||
height: 100%;
|
||||
font-family: Open Sans,serif;
|
||||
}
|
||||
|
||||
.nobr {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.center {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.song_list {
|
||||
overflow: auto;
|
||||
position: absolute;
|
||||
top: 6em;
|
||||
bottom: 0;
|
||||
left: 1em;
|
||||
right: 1em;
|
||||
padding-right: 1em; /* Leave space for scroll bar */
|
||||
}
|
||||
|
||||
.song_search_bar {
|
||||
position: relative;
|
||||
padding: 1em 1em .5em;
|
||||
}
|
||||
|
||||
.song_search_field {
|
||||
border: none;
|
||||
border-radius: .3em;
|
||||
padding: .7em 1em;
|
||||
width: calc(100% - 11em);
|
||||
color: #0c2738;
|
||||
margin: 0;
|
||||
float: left;
|
||||
height: 2em;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
.song_sort_button {
|
||||
width: 3em;
|
||||
height: 3.4em;
|
||||
border-radius: 0;
|
||||
border-style: none;
|
||||
border-left-style: solid;
|
||||
background-color: #427493;
|
||||
transition: 0.4s;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.song_sort_button:hover {
|
||||
background-color: #5598be;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.song_sort_button:active {
|
||||
background-color: #30566c;
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
.song_sort_button_selected {
|
||||
color: #ffff00;
|
||||
transition: 0.1s;
|
||||
}
|
||||
|
||||
.song_sort_button_right {
|
||||
border-top-right-radius: 0.3em;
|
||||
border-bottom-right-radius: 0.3em;
|
||||
}
|
||||
|
||||
.song_search_counter {
|
||||
font-size: smaller;
|
||||
}
|
||||
|
||||
.song_item {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
border-radius: 1em;
|
||||
background: black;
|
||||
margin-bottom: 1em;
|
||||
animation: song_item_enter 1s 1;
|
||||
}
|
||||
|
||||
@keyframes song_item_enter {
|
||||
from {
|
||||
margin-left: -16em;
|
||||
margin-right: 16em;
|
||||
}
|
||||
to {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.song_item_info {
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: column;
|
||||
flex-direction: column;
|
||||
-webkit-box-flex: 1;
|
||||
-ms-flex: 1;
|
||||
flex: 1;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.song_item_cover {
|
||||
height: 5em;
|
||||
width: 5em;
|
||||
border-top-left-radius: 1em;
|
||||
border-bottom-left-radius: 1em;
|
||||
}
|
||||
|
||||
.song_item_date {
|
||||
font-size: smaller;
|
||||
color: #427493;
|
||||
}
|
||||
|
||||
.song_item_title {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.song_item_artist {
|
||||
font-size: smaller;
|
||||
color: #adddff;
|
||||
}
|
||||
|
||||
.song_gizmos {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 1;
|
||||
padding-top: 1.5em;
|
||||
padding-right: 1.5em;
|
||||
}
|
||||
|
||||
.duet_icon {
|
||||
background-image: url("/images/duet.svg");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.play_queue {
|
||||
position: fixed;
|
||||
width: 26em;
|
||||
max-width: 100%;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
background-color: #434343;
|
||||
border-top-left-radius: 1em;
|
||||
border-top-right-radius: 1em;
|
||||
max-height: 100%;
|
||||
transition: max-height 0.3s;
|
||||
}
|
||||
|
||||
@media (orientation: portrait) {
|
||||
.play_queue {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.play_queue_hidden {
|
||||
max-height: 6.3em;
|
||||
transition: max-height 0.3s;
|
||||
}
|
||||
|
||||
.play_queue_head {
|
||||
padding: 1em;
|
||||
padding-top:0.4em;
|
||||
border-bottom: solid 0.2em;
|
||||
border-color: #fff;
|
||||
border-top-left-radius: 1em;
|
||||
border-top-right-radius: 1em;
|
||||
background: rgba(99, 99, 99, 0.0);
|
||||
transition: background 0.1s;
|
||||
}
|
||||
|
||||
.play_queue_head:hover {
|
||||
background: rgba(99, 99, 99, 1.0);
|
||||
transition: background 0.1s;
|
||||
}
|
||||
|
||||
.play_queue_list {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
.spinner {
|
||||
border: 16px solid #f3f3f3;
|
||||
border-top: 16px solid #0c2738;
|
||||
border-radius: 50%;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
animation: spin 1.3s cubic-bezier(0.455, 0.03, 0.515, 0.955) infinite;
|
||||
margin: auto;
|
||||
border-bottom: 16px solid #0c2738;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* Tooltip container */
|
||||
.tooltip {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
|
||||
}
|
||||
|
||||
/* Tooltip text */
|
||||
.tooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 120px;
|
||||
background-color: #555;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 5px 0;
|
||||
border-radius: 6px;
|
||||
|
||||
/* Position the tooltip text */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: 125%;
|
||||
left: 50%;
|
||||
margin-left: -100px;
|
||||
|
||||
/* Fade in tooltip */
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
|
||||
/* Tooltip arrow */
|
||||
.tooltip .tooltiptext::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 100%;
|
||||
left: 100px;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent transparent #555 transparent;
|
||||
}
|
||||
|
||||
/* Show the tooltip text when you mouse over the tooltip container */
|
||||
.tooltip:hover .tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
25
static/styles/marquee.scss
Normal file
25
static/styles/marquee.scss
Normal file
@ -0,0 +1,25 @@
|
||||
.marquee {
|
||||
height: 2em;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
border-left: 2px solid #4a4a4a;
|
||||
border-right: 2px solid #4a4a4a;
|
||||
}
|
||||
|
||||
.marquee p {
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
transform: translateX(100%);
|
||||
animation: scroll-left 6s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes scroll-left {
|
||||
0% {
|
||||
transform: translateX(0%);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
58
static/styles/penguin.scss
Normal file
58
static/styles/penguin.scss
Normal file
@ -0,0 +1,58 @@
|
||||
@keyframes example {
|
||||
0% {
|
||||
transform: perspective(36em) rotateY(-90deg);
|
||||
background-image: url(/images/penguin1.svg);
|
||||
}
|
||||
24.99% {
|
||||
transform: perspective(36em) rotateY(90deg);
|
||||
background-image: url(/images/penguin1.svg);
|
||||
}
|
||||
25% {
|
||||
transform: perspective(36em) rotateY(90deg);
|
||||
background-image: url(/images/penguin2.svg);
|
||||
}
|
||||
49.99% {
|
||||
transform: perspective(36em) rotateY(270deg);
|
||||
background-image: url(/images/penguin2.svg);
|
||||
}
|
||||
50% {
|
||||
transform: perspective(36em) rotateY(270deg);
|
||||
background-image: url(/images/penguin3.svg);
|
||||
}
|
||||
74.99% {
|
||||
transform: perspective(36em) rotateY(450deg);
|
||||
background-image: url(/images/penguin3.svg);
|
||||
}
|
||||
75% {
|
||||
transform: perspective(36em) rotateY(450deg);
|
||||
background-image: url(/images/penguin2.svg);
|
||||
}
|
||||
99.99% {
|
||||
transform: perspective(36em) rotateY(630deg);
|
||||
background-image: url(/images/penguin2.svg);
|
||||
}
|
||||
100% {
|
||||
transform: perspective(36em) rotateY(630deg);
|
||||
background-image: url(/images/penguin1.svg);
|
||||
}
|
||||
}
|
||||
|
||||
.penguin {
|
||||
width: 12em;
|
||||
height: 12em;
|
||||
margin-top: 1em;
|
||||
margin-bottom: 1em;
|
||||
background-image: url(/images/penguin1.svg);
|
||||
background-size: contain;
|
||||
animation-name: example;
|
||||
animation-duration: 4s;
|
||||
animation-iteration-count: infinite;
|
||||
animation-timing-function: cubic-bezier(0.1, 0.5, 0.9, 0.5);
|
||||
}
|
||||
|
||||
.penguin_small {
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
margin-top: 0em;
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
Reference in New Issue
Block a user