Compare commits

...

4 Commits

36 changed files with 1264 additions and 70 deletions

View File

@ -7,8 +7,8 @@ Please note we have a code of conduct, please follow it in all your interactions
## Discussion
- Join the [Gitter community](https://gitter.im/book-tracker/general) to chat about the project or give feedback
- Add [Issues](https://gitlab.com/Alamantus/book-tracker/issues) for feature requests or bug reports
- Join the [Gitter community](https://gitter.im/Readlebee/community) to chat about the project or give feedback
- Add [Issues](https://gitlab.com/Alamantus/Readlebee/issues) for feature requests or bug reports
## Pull Request Process

View File

@ -631,7 +631,7 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
book-tracker
Readlebee
Copyright (C) 2019 Robbie Antenesse
This program is free software: you can redistribute it and/or modify
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
book-tracker Copyright (C) 2019 Robbie Antenesse
Readlebee Copyright (C) 2019 Robbie Antenesse
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.

View File

@ -1,24 +1,24 @@
# book-tracker
# Readlebee
[![Read our Contribution Guidelines](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](./CONTRIBUTING.md) [![Issues](https://img.shields.io/github/issues/Alamantus/book-tracker.svg)](https://gitlab.com/Alamantus/book-tracker/issues) [![Join the chat at https://gitter.im/book-tracker/general](https://badges.gitter.im/book-tracker/general.svg)](https://gitter.im/book-tracker/general)
[![Read our Contribution Guidelines](https://badges.frapsoft.com/os/v1/open-source.svg?v=102)](./CONTRIBUTING.md) [![Issues](https://img.shields.io/github/issues/Alamantus/Readlebee.svg)](https://gitlab.com/Alamantus/Readlebee/issues) [![Join the chat at https://gitter.im/Readlebee/community](https://badges.gitter.im/Readlebee/general.svg)](https://gitter.im/Readlebee/community)
An attempt at a viable alternative to Goodreads (currently lacking a name—ideas welcome!)
## Important Links
- [Project Scope](https://gitlab.com/Alamantus/book-tracker/wikis/Project-Scope)
- [Project Scope](https://gitlab.com/Alamantus/Readlebee/wikis/Project-Scope)
- Features we feel are essential to the project. Anything beyond the scope should be discussed for later and not prioritized.
- [Dependencies Stack](https://gitlab.com/Alamantus/book-tracker/wikis/Dependencies-Stack)
- [Dependencies Stack](https://gitlab.com/Alamantus/Readlebee/wikis/Dependencies-Stack)
- A list of dependencies used in the project and a short explanation of what each of them are for.
- [Contrubution Guidelines](./CONTRIBUTING.md)
- Subject to change but important to follow. Includes a basic code of conduct.
- [Project chat via Gitter](https://gitter.io/book-tracker)
- [Project chat via Gitter](https://gitter.io/Readlebee)
- Real-time discussion about the project.
- [Issue Tracker](https://gitlab.com/Alamantus/book-tracker/issues)
- [Issue Tracker](https://gitlab.com/Alamantus/Readlebee/issues)
- For adding and tracking feature requests, feedback, and bug reports.
- [Main Repo on GitLab](https://gitlab.com/Alamantus/book-tracker)
- [Main Repo on GitLab](https://gitlab.com/Alamantus/Readlebee)
- Where all changes are made "official".
- [Mirror Repo on GitHub](https://github.com/Alamantus/book-tracker)
- [Mirror Repo on GitHub](https://github.com/Alamantus/Readlebee)
- Gets changes from GitLab pushed to it so people who prefer GitHub can contribute there as well. Pull requests and issues created here will also be addressed.
## Development
@ -30,7 +30,7 @@ To develop, you'll need to know how to use a terminal or shell on your computer.
Clone the repo to your computer with [Git](https://git-scm.com/) by running:
```
git clone https://gitlab.com/Alamantus/book-tracker.git
git clone https://gitlab.com/Alamantus/Readlebee.git
```
Then run use [Yarn](https://yarnpkg.com) to install the dependencies:
@ -45,19 +45,24 @@ Alternatively, you can use the NPM that's included with Node:
npm install
```
This install process will compile the sass into CSS at `public/css/index.css` and turn the svg in `images`
into PNGs in `public/images` after the dependencies are installed. (Note: This runs even if you install new packages.)
In the future, this postinstall process will also set up the database tables.
Once installed, make sure that the images are processed from their original form:
```
npm run process-images
```
Finally, copy the `config.example.json` files in `app/` and `server/` folders into a new `config.json` file in each.
These config files are not saved to the project, so you can put your server/database info in there safely.
## Usage
After everything's installed, run the "start" NPM script to build and serve the front end:
After everything's installed, run the "dev" NPM script to build and watch the front end and run the back end:
```
npm start
npm run dev
```
Then use your browser to navigate to http://localhost:1234 to view the website.
Then use your browser to navigate to http://localhost:3000 to view the website.
When you make a change, you need to stop the server with `Ctrl+C` and re-run the script.
@ -115,10 +120,10 @@ the current user's home folder using Git like so:
```
cd ~
git clone https://gitlab.com/Alamantus/book-tracker.git && cd book-tracker
git clone https://gitlab.com/Alamantus/Readlebee.git && cd Readlebee
```
This will download the entire project source code into a `book-tracker` folder.
This will download the entire project source code into a `Readlebee` folder.
#### Step 3: Configure the Project
@ -136,7 +141,7 @@ the `config.example.json` looks like with some explanations of each field:
"port": 3000 # the port that the server will serve the app from.
"dbhost": "localhost" # Where the postgres server is
"dbport": 5432 # What port the postgres server uses
"dbname": "book-tracker" # The name of the database book-tracker will use to make tables and store data in
"dbname": "Readlebee" # The name of the database Readlebee will use to make tables and store data in
"dbuser": "root" # The username with access to your postgres database
"dbpass": "password" # The password for the username above
... # more to come
@ -159,7 +164,7 @@ and do any other things that need to be done to get the project set up and usabl
Run the following to start the server:
```
sudo npm start-production
sudo npm start
```
Then it'll be running on your server's localhost at the port you specified in the config!

View File

@ -1,3 +1,3 @@
{
"siteName": "book-tracker"
"siteName": "Readlebee"
}

View File

@ -0,0 +1,30 @@
Font license info
## Typicons
(c) Stephen Hutchings 2012
Author: Stephen Hutchings
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://typicons.com/
## Fontelico
Copyright (C) 2012 by Fontello project
Author: Crowdsourced, for Fontello project
License: SIL (http://scripts.sil.org/OFL)
Homepage: http://fontello.com
## Font Awesome
Copyright (C) 2016 by Dave Gandy
Author: Dave Gandy
License: SIL ()
Homepage: http://fortawesome.github.com/Font-Awesome/

View File

@ -0,0 +1,75 @@
This webfont is generated by http://fontello.com open source project.
================================================================================
Please, note, that you should obey original font licenses, used to make this
webfont pack. Details available in LICENSE.txt file.
- Usually, it's enough to publish content of LICENSE.txt file somewhere on your
site in "About" section.
- If your project is open-source, usually, it will be ok to make LICENSE.txt
file publicly available in your repository.
- Fonts, used in Fontello, don't require a clickable link on your site.
But any kind of additional authors crediting is welcome.
================================================================================
Comments on archive content
---------------------------
- /font/* - fonts in different formats
- /css/* - different kinds of css, for all situations. Should be ok with
twitter bootstrap. Also, you can skip <i> style and assign icon classes
directly to text elements, if you don't mind about IE7.
- demo.html - demo file, to show your webfont content
- LICENSE.txt - license info about source fonts, used to build your one.
- config.json - keeps your settings. You can import it back into fontello
anytime, to continue your work
Why so many CSS files ?
-----------------------
Because we like to fit all your needs :)
- basic file, <your_font_name>.css - is usually enough, it contains @font-face
and character code definitions
- *-ie7.css - if you need IE7 support, but still don't wish to put char codes
directly into html
- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face
rules, but still wish to benefit from css generation. That can be very
convenient for automated asset build systems. When you need to update font -
no need to manually edit files, just override old version with archive
content. See fontello source code for examples.
- *-embedded.css - basic css file, but with embedded WOFF font, to avoid
CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain.
We strongly recommend to resolve this issue by `Access-Control-Allow-Origin`
server headers. But if you ok with dirty hack - this file is for you. Note,
that data url moved to separate @font-face to avoid problems with <IE9, when
string is too long.
- animate.css - use it to get ideas about spinner rotation animation.
Attention for server setup
--------------------------
You MUST setup server to reply with proper `mime-types` for font files -
otherwise some browsers will fail to show fonts.
Usually, `apache` already has necessary settings, but `nginx` and other
webservers should be tuned. Here is list of mime types for our file extensions:
- `application/vnd.ms-fontobject` - eot
- `application/x-font-woff` - woff
- `application/x-font-ttf` - ttf
- `image/svg+xml` - svg

85
app/fonts/fontello/css/animation.css vendored Normal file
View File

@ -0,0 +1,85 @@
/*
Animation example, for spinners
*/
.animate-spin {
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
-webkit-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
display: inline-block;
}
@-moz-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-webkit-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-o-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@-ms-keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes spin {
0% {
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-moz-transform: rotate(359deg);
-o-transform: rotate(359deg);
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

View File

@ -0,0 +1,7 @@
.icon-heart-outline:before { content: '\e803'; } /* '' */
.icon-heart-filled:before { content: '\e804'; } /* '' */
.icon-check:before { content: '\e807'; } /* '' */
.icon-plus:before { content: '\e808'; } /* '' */
.icon-loading:before { content: '\e839'; } /* '' */
.icon-external:before { content: '\f08e'; } /* '' */

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,7 @@
.icon-heart-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-heart-filled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-check { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-loading { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-external { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;&nbsp;'); }

18
app/fonts/fontello/css/icons-ie7.css vendored Normal file
View File

@ -0,0 +1,18 @@
[class^="icon-"], [class*=" icon-"] {
font-family: 'icons';
font-style: normal;
font-weight: normal;
/* fix buttons height */
line-height: 1em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
}
.icon-heart-outline { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe803;&nbsp;'); }
.icon-heart-filled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe804;&nbsp;'); }
.icon-check { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe807;&nbsp;'); }
.icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe808;&nbsp;'); }
.icon-loading { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xe839;&nbsp;'); }
.icon-external { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '&#xf08e;&nbsp;'); }

63
app/fonts/fontello/css/icons.css vendored Normal file
View File

@ -0,0 +1,63 @@
@font-face {
font-family: 'icons';
src: url('../font/icons.eot?51482644');
src: url('../font/icons.eot?51482644#iefix') format('embedded-opentype'),
url('../font/icons.woff2?51482644') format('woff2'),
url('../font/icons.woff?51482644') format('woff'),
url('../font/icons.ttf?51482644') format('truetype'),
url('../font/icons.svg?51482644#icons') format('svg');
font-weight: normal;
font-style: normal;
}
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
/*
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'icons';
src: url('../font/icons.svg?51482644#icons') format('svg');
}
}
*/
[class^="icon-"]:before, [class*=" icon-"]:before {
font-family: "icons";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* you can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
.icon-heart-outline:before { content: '\e803'; } /* '' */
.icon-heart-filled:before { content: '\e804'; } /* '' */
.icon-check:before { content: '\e807'; } /* '' */
.icon-plus:before { content: '\e808'; } /* '' */
.icon-loading:before { content: '\e839'; } /* '' */
.icon-external:before { content: '\f08e'; } /* '' */

View File

@ -0,0 +1,313 @@
<!DOCTYPE html>
<html>
<head><!--[if lt IE 9]><script language="javascript" type="text/javascript" src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<meta charset="UTF-8"><style>/*
* Bootstrap v2.2.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
*zoom: 1;
}
.clearfix:before,
.clearfix:after {
display: table;
content: "";
line-height: 0;
}
.clearfix:after {
clear: both;
}
html {
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
a:focus {
outline: thin dotted #333;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
a:hover,
a:active {
outline: 0;
}
button,
input,
select,
textarea {
margin: 0;
font-size: 100%;
vertical-align: middle;
}
button,
input {
*overflow: visible;
line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
body {
margin: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 20px;
color: #333;
background-color: #fff;
}
a {
color: #08c;
text-decoration: none;
}
a:hover {
color: #005580;
text-decoration: underline;
}
.row {
margin-left: -20px;
*zoom: 1;
}
.row:before,
.row:after {
display: table;
content: "";
line-height: 0;
}
.row:after {
clear: both;
}
[class*="span"] {
float: left;
min-height: 1px;
margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
width: 940px;
}
.span12 {
width: 940px;
}
.span11 {
width: 860px;
}
.span10 {
width: 780px;
}
.span9 {
width: 700px;
}
.span8 {
width: 620px;
}
.span7 {
width: 540px;
}
.span6 {
width: 460px;
}
.span5 {
width: 380px;
}
.span4 {
width: 300px;
}
.span3 {
width: 220px;
}
.span2 {
width: 140px;
}
.span1 {
width: 60px;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
float: right;
}
.container {
margin-right: auto;
margin-left: auto;
*zoom: 1;
}
.container:before,
.container:after {
display: table;
content: "";
line-height: 0;
}
.container:after {
clear: both;
}
p {
margin: 0 0 10px;
}
.lead {
margin-bottom: 20px;
font-size: 21px;
font-weight: 200;
line-height: 30px;
}
small {
font-size: 85%;
}
h1 {
margin: 10px 0;
font-family: inherit;
font-weight: bold;
line-height: 20px;
color: inherit;
text-rendering: optimizelegibility;
}
h1 small {
font-weight: normal;
line-height: 1;
color: #999;
}
h1 {
line-height: 40px;
}
h1 {
font-size: 38.5px;
}
h1 small {
font-size: 24.5px;
}
body {
margin-top: 90px;
}
.header {
position: fixed;
top: 0;
left: 50%;
margin-left: -480px;
background-color: #fff;
border-bottom: 1px solid #ddd;
padding-top: 10px;
z-index: 10;
}
.footer {
color: #ddd;
font-size: 12px;
text-align: center;
margin-top: 20px;
}
.footer a {
color: #ccc;
text-decoration: underline;
}
.the-icons {
font-size: 14px;
line-height: 24px;
}
.switch {
position: absolute;
right: 0;
bottom: 10px;
color: #666;
}
.switch input {
margin-right: 0.3em;
}
.codesOn .i-name {
display: none;
}
.codesOn .i-code {
display: inline;
}
.i-code {
display: none;
}
@font-face {
font-family: 'icons';
src: url('./font/icons.eot?47391532');
src: url('./font/icons.eot?47391532#iefix') format('embedded-opentype'),
url('./font/icons.woff?47391532') format('woff'),
url('./font/icons.ttf?47391532') format('truetype'),
url('./font/icons.svg?47391532#icons') format('svg');
font-weight: normal;
font-style: normal;
}
.demo-icon
{
font-family: "icons";
font-style: normal;
font-weight: normal;
speak: none;
display: inline-block;
text-decoration: inherit;
width: 1em;
margin-right: .2em;
text-align: center;
/* opacity: .8; */
/* For safety - reset parent styles, that can break glyph codes*/
font-variant: normal;
text-transform: none;
/* fix buttons height, for twitter bootstrap */
line-height: 1em;
/* Animation center compensation - margins should be symmetric */
/* remove if not needed */
margin-left: .2em;
/* You can be more comfortable with increased icons size */
/* font-size: 120%; */
/* Font smoothing. That was taken from TWBS */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* Uncomment for 3D effect */
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}
</style>
<link rel="stylesheet" href="css/animation.css"><!--[if IE 7]><link rel="stylesheet" href="css/" + font.fontname + "-ie7.css"><![endif]-->
<script>
function toggleCodes(on) {
var obj = document.getElementById('icons');
if (on) {
obj.className += ' codesOn';
} else {
obj.className = obj.className.replace(' codesOn', '');
}
}
</script>
</head>
<body>
<div class="container header">
<h1>icons <small>font demo</small></h1>
<label class="switch">
<input type="checkbox" onclick="toggleCodes(this.checked)">show codes
</label>
</div>
<div class="container" id="icons">
<div class="row">
<div class="the-icons span3" title="Code: 0xe803"><i class="demo-icon icon-heart-outline">&#xe803;</i> <span class="i-name">icon-heart-outline</span><span class="i-code">0xe803</span></div>
<div class="the-icons span3" title="Code: 0xe804"><i class="demo-icon icon-heart-filled">&#xe804;</i> <span class="i-name">icon-heart-filled</span><span class="i-code">0xe804</span></div>
<div class="the-icons span3" title="Code: 0xe807"><i class="demo-icon icon-check">&#xe807;</i> <span class="i-name">icon-check</span><span class="i-code">0xe807</span></div>
<div class="the-icons span3" title="Code: 0xe808"><i class="demo-icon icon-plus">&#xe808;</i> <span class="i-name">icon-plus</span><span class="i-code">0xe808</span></div>
</div>
<div class="row">
<div class="the-icons span3" title="Code: 0xe839"><i class="demo-icon icon-loading animate-spin">&#xe839;</i> <span class="i-name">icon-loading</span><span class="i-code">0xe839</span></div>
<div class="the-icons span3" title="Code: 0xf08e"><i class="demo-icon icon-external">&#xf08e;</i> <span class="i-name">icon-external</span><span class="i-code">0xf08e</span></div>
</div>
</div>
<div class="container footer">Generated by <a href="http://fontello.com">fontello.com</a></div>
</body>
</html>

Binary file not shown.

View File

@ -0,0 +1,22 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
<defs>
<font id="icons" horiz-adv-x="1000" >
<font-face font-family="icons" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="heart-outline" unicode="&#xe803;" d="M508-66q-17 0-29 9-26 17-85 58t-154 112-134 110q-106 106-106 264 0 116 82 198t198 82q143 0 228-118 38 55 99 86t129 32q117 0 198-82t81-198q0-158-106-264-38-38-133-110t-155-113-83-57q-13-9-30-9z m-228 729q-72 0-124-51t-52-125q0-114 76-190 79-79 328-248 248 169 327 248 76 76 76 190 0 73-51 125t-124 51q-73 0-125-51t-51-125q0-22-16-37t-36-15-37 15-15 37q0 73-52 125t-124 51z" horiz-adv-x="1015" />
<glyph glyph-name="heart-filled" unicode="&#xe804;" d="M456 487q0 95-67 161t-161 67-162-67-66-161q0-137 91-229 37-36 128-104t164-118l73-50q282 190 364 272 91 92 91 229 0 95-66 161t-161 67-161-67-67-161z" horiz-adv-x="911" />
<glyph glyph-name="check" unicode="&#xe807;" d="M625 676q38-20 49-63t-9-80l-260-469q-30-53-91-53-43 0-74 31l-209 207q-31 32-31 74t31 74 74 31 74-31l111-110 193 347q20 38 62 50t80-8z" horiz-adv-x="679" />
<glyph glyph-name="plus" unicode="&#xe808;" d="M729 454q44 0 74-31t31-73-31-73-74-30l-208 3 0-212q0-43-30-73t-75-31-73 31-30 73l3 212-212-3q-44 0-74 30t-30 73 30 73 74 31l212 0-3 209q0 42 30 73t73 31 75-31 30-73l0-209 208 0z" horiz-adv-x="834" />
<glyph glyph-name="loading" unicode="&#xe839;" d="M855 9c-189-190-520-172-705 13-190 190-200 494-28 695 11 13 21 26 35 34 36 23 85 18 117-13 30-31 35-76 16-112-5-9-9-15-16-22-140-151-145-379-8-516 153-153 407-121 542 34 106 122 142 297 77 451-83 198-305 291-510 222l0 1c236 82 492-24 588-252 71-167 37-355-72-493-11-15-23-29-36-42z" horiz-adv-x="1000" />
<glyph glyph-name="external" unicode="&#xf08e;" d="M786 332v-178q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h393q7 0 12-5t5-13v-36q0-8-5-13t-12-5h-393q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v178q0 8 5 13t13 5h36q8 0 13-5t5-13z m214 482v-285q0-15-11-25t-25-11-25 11l-98 98-364-364q-5-6-13-6t-12 6l-64 64q-6 5-6 12t6 13l364 364-98 98q-11 11-11 25t11 25 25 11h285q15 0 25-11t11-25z" horiz-adv-x="1000" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,46 @@
{
"name": "icons",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "e15f0d620a7897e2035c18c80142f6d9",
"css": "external",
"code": 61582,
"src": "fontawesome"
},
{
"uid": "9bc2902722abb366a213a052ade360bc",
"css": "loading",
"code": 59449,
"src": "fontelico"
},
{
"uid": "3b00728aa97ad1a2581d414bd9d650bc",
"css": "heart-outline",
"code": 59395,
"src": "typicons"
},
{
"uid": "hi76m8qggwn5lbl286oeqp64q0n8kusy",
"css": "heart-filled",
"code": 59396,
"src": "typicons"
},
{
"uid": "43fl9m553j1z5937vfjz0lgolrlspxwl",
"css": "check",
"code": 59399,
"src": "typicons"
},
{
"uid": "1gf923f9wvaezxmfon515dglxa3drf0e",
"css": "plus",
"code": 59400,
"src": "typicons"
}
]
}

View File

@ -26,6 +26,7 @@ export class I18n {
result = language[section][phrase];
} else {
console.error(`The translation for "${section}.${phrase}" is set up in neither the target nor default locale.`);
result = `${section}.${phrase}`;
}
return result;

View File

@ -12,6 +12,13 @@
"login_button": "Log In!"
},
"search": {
"header": "Search"
"header": "Search",
"people_header": "People",
"series_header": "Series",
"books_header": "Books"
},
"interaction": {
"heart": "Like",
"add": "Add to Shelf"
}
}

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" style="height: 512px; width: 512px;"><path d="M0 0h512v512H0z" fill="#000" fill-opacity="1"></path><g class="" transform="translate(0,0)" style="touch-action: none;"><path d="M341.79 95.5L65.54 166.379l127.84 58.11 276.025-72.64L341.789 95.5zm-1.577 18.984l74.858 33.059-72.551 19.09-77.258-32.916 74.951-19.233zm142.813 52.395L194.864 242.71l-3.057.805h-.002l-.041.01-2.857-1.3L44.73 178.15l-.184-.092c-5.585-2.793-8.012-1.992-10.77.11-2.757 2.1-5.515 6.88-6.275 12.956-1.519 12.153 3.616 27.58 23.916 34.346l.412.139L193.338 288.5l173.235-45.588V212.45l76-18.345v28.806l42.173-11.097c-4.36-14.037-5.33-29.146-1.72-44.934zm-58.453 50.086l-40 9.656v103.186l21.947-21.948 18.053 12.498V216.965zm58.453 13.914l-40.453 10.646v45.385l42.173-11.098c-4.36-14.036-5.33-29.145-1.72-44.933zM38.42 240.268c-1.803.036-3.177.782-4.642 1.898-2.758 2.101-5.516 6.88-6.276 12.957-1.519 12.153 3.616 27.579 23.916 34.346l.412.138L193.338 352.5l173.235-45.588v-45.387l-174.766 45.99-146.62-65.161a61.602 61.602 0 0 1-4.802-1.874 8.317 8.317 0 0 0-1.965-.212zm6.768 2.086l.021.008-.279-.125.258.117zm437.838 52.525l-40.453 10.646v45.385l42.173-11.097c-4.36-14.037-5.33-29.146-1.72-44.934zM38.42 304.268c-1.803.036-3.177.782-4.642 1.898-2.758 2.101-5.516 6.88-6.276 12.957-1.519 12.153 3.616 27.579 23.916 34.346l.412.138L193.338 416.5l173.235-45.588v-45.387l-174.766 45.99-146.62-65.161a61.602 61.602 0 0 1-4.802-1.874 8.317 8.317 0 0 0-1.965-.212zm6.768 2.086l.021.008-.279-.125.258.117zm363.437 24.855l-38.863 38.863 68.834-18.115-29.97-20.748z" fill="#1c4aff" fill-opacity="1"></path></g></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

171
app/images/logo.svg Normal file
View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Vectornator for iOS (http://vectornator.io/) -->
<svg
xmlns:vectornator="http://vectornator.io"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;"
xml:space="preserve"
version="1.1"
viewBox="0 0 300 300"
id="svg35"
sodipodi:docname="logo.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1409"
inkscape:window-height="706"
id="namedview37"
showgrid="false"
inkscape:zoom="3.1466666"
inkscape:cx="159.44177"
inkscape:cy="145.08419"
inkscape:window-x="2398"
inkscape:window-y="336"
inkscape:window-maximized="0"
inkscape:current-layer="svg35" />
<metadata
id="metadata2">
<vectornator:setting
key="DisplayWhiteBackground"
value="0" />
<vectornator:setting
key="RulersVisible"
value="1" />
<vectornator:setting
key="SnapToEdges"
value="0" />
<vectornator:setting
key="Units"
value="Pixels" />
<vectornator:setting
key="DynamicGuides"
value="0" />
<vectornator:setting
key="SnapToPoints"
value="0" />
<vectornator:setting
key="CMYKEnabledKey"
value="0" />
<vectornator:setting
key="SnapToGrid"
value="0" />
<vectornator:setting
key="SnapToGuides"
value="1" />
<vectornator:setting
key="ShowGrid"
value="1" />
<vectornator:setting
key="GridSpacing"
value="36" />
<rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata>
<defs
id="defs4">
</defs>
<path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;opacity:1;fill:#a8a69d;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round"
d="m 13.015828,137.45049 -0.05325,0.31198 c -2.3424,13.64456 14.685877,27.82663 38.033528,31.67592 v 0 c 23.347658,3.84931 44.172214,-4.09105 46.514197,-17.73454 l 0.0537,-0.31306 c 2.341983,-13.6435 -14.686294,-27.82555 -38.033945,-31.67484 v 0 c -23.346167,-3.84996 -44.171796,4.08997 -46.514197,17.73454 z"
id="path16-2" /><g
aria-label="R"
transform="scale(1.0003218,0.9996783)"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:23.13201714px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="text846"><path
style="font-size:231.32017517px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 126.69967,200.50442 c 0.0745,15.27498 0.14903,30.54996 0.22354,45.82494 -12.49129,0.61686 -24.98258,1.23371 -37.473869,1.85057 L 87.367459,93.195408 C 115.24254,79.967138 147.50422,74.998582 177.91485,80.87038 c 22.47966,3.610153 43.6798,20.02107 48.30255,43.03278 4.49286,21.6303 0.0608,46.83888 -17.68154,61.51671 -6.51367,2.22791 -4.82192,6.73663 -2.74468,11.57077 5.47865,16.36913 10.95729,32.73827 16.43594,49.1074 -12.02865,2.69874 -24.0573,5.39747 -36.08595,8.09621 -6.55407,-17.58033 -13.10814,-35.16067 -19.66221,-52.741 -11.29285,3.21499 -32.36923,-3.46717 -39.77929,-0.94883 z m -0.008,-82.58128 v 49.0634 c 17.15143,2.72318 36.70492,5.17538 52.04704,-4.85772 12.26897,-8.66675 14.1217,-28.8505 4.1484,-39.88195 -13.14417,-9.78245 -44.71293,-14.82749 -56.19544,-4.32373 z"
id="path892"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc" /></g><path
inkscape:connector-curvature="0"
style="clip-rule:evenodd;opacity:1;fill:#cbcbc8;fill-rule:evenodd;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round"
d="m 33.490129,92.247454 -0.208448,0.230093 C 24.168717,102.5449 30.947522,123.68065 48.421604,139.68639 v 0 c 17.474082,16.00574 39.026229,20.81979 48.139201,10.75243 l 0.208866,-0.23116 c 9.112559,-10.06628 2.333741,-31.20204 -15.140341,-47.20777 v 0 C 64.156337,86.994566 42.603101,82.1801 33.490129,92.247454 Z"
id="path22-0" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:round;stroke-linejoin:round"
d="m 210.27192,95.07012 -6.79491,-6.015245 c 10.37293,-11.248091 27.07499,-25.33294 40.79397,-31.758866 -7.81099,5.476783 -29.9057,30.283694 -33.99906,37.774111 z"
id="path26-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:2.00000024;stroke-linecap:round;stroke-linejoin:round"
d="m 197.32038,85.159528 -7.4218,-3.410681 c 9.03223,-12.347898 24.78673,-27.718823 37.68916,-35.654171 -8.1278,7.527117 -27.08439,31.249253 -30.26736,39.064852 z"
id="path28-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" /><path
d="m 244.31608,144.47883 41.79781,22.62945 -50.01717,1.53219 z"
id="path963"
inkscape:connector-curvature="0"
style="opacity:1;fill:#fbe656;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 237.88836,149.55246 44.58502,16.79979 -48.23254,0.83906 z"
id="path965"
inkscape:connector-curvature="0"
style="opacity:1;fill:#a8a69d;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 226.7531,163.69746 57.62848,3.32996 -58.09079,4.35874 z"
id="path967"
inkscape:connector-curvature="0"
style="opacity:1;fill:#cbcbc8;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 287.25306,166.80437 -67.08721,1.25177 -20.43937,63.82173 65.5193,-0.93427 z"
id="path969"
inkscape:connector-curvature="0"
style="opacity:1;fill:#fbe656;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 237.85941,175.65768 -0.0811,0.0163 c -3.54921,0.70853 -5.41293,6.18905 -4.16261,12.24099 v 0 c 1.25032,6.05193 5.14091,10.3833 8.68981,9.67477 l 0.0814,-0.0163 c 3.5489,-0.70853 5.41262,-6.18905 4.1623,-12.24098 v 0 c -1.25002,-6.05163 -5.1406,-10.38331 -8.68981,-9.67478 z"
id="path973"
inkscape:connector-curvature="0"
style="opacity:1;fill:#a8a69d;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 244.27717,189.80126 -0.26297,-0.0106 c -11.48327,-0.4605 -21.05307,4.9944 -21.37485,12.18403 v 0 c -0.32148,7.18962 8.7269,13.39134 20.21018,13.85184 l 0.26297,0.0105 c 11.48328,0.4605 21.0532,-4.9947 21.37482,-12.18403 v 0 c 0.32163,-7.18962 -8.72657,-13.39134 -20.21015,-13.85184 z"
id="path975"
inkscape:connector-curvature="0"
style="opacity:1;fill:#030300;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 245.88154,190.00228 -1.14929,25.692 c -1.82388,0.11127 -3.71662,-0.0797 -5.39393,-0.32159 l 1.13964,-25.48164 c 1.93528,-0.14331 3.57707,-0.10386 5.40358,0.11123 z m 2.86554,0.34356 c 1.85015,0.33483 3.55464,0.85893 5.16594,1.47283 l -1.016,22.70868 c -1.66106,0.48311 -3.40445,0.86857 -5.27872,1.05421 0.37583,-8.41193 0.75245,-16.82382 1.12878,-25.23572 z m -11.16602,-0.0961 -1.09742,24.53381 c -8.29264,-2.01078 -14.17662,-7.07932 -13.91848,-12.84706 0.25785,-5.76803 6.57368,-10.34714 15.0159,-11.68675 z m 19.15588,2.84257 c 4.80773,2.56562 7.8638,6.35301 7.67728,10.52225 -0.18652,4.16923 -3.57068,7.71612 -8.59044,9.88754 z"
id="path977"
inkscape:connector-curvature="0"
style="opacity:1;fill:#fbe656;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round"
sodipodi:nodetypes="cccccccccccccccscc" /><path
d="m 252.54478,176.57748 -0.0757,-0.0292 c -3.31127,-1.27723 -7.83304,2.35706 -10.09996,8.11726 v 0 c -2.26692,5.7602 -1.42041,11.46495 1.89085,12.74218 l 0.076,0.0292 c 3.31096,1.27723 7.83274,-2.35706 10.09966,-8.11726 v 0 c 2.26692,-5.7599 1.42041,-11.46495 -1.89086,-12.74218 z"
id="path979"
inkscape:connector-curvature="0"
style="opacity:1;fill:#cbcbc8;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 230.02607,200.61553 c 0.0543,-1.21454 -0.48373,-2.22234 -1.20207,-2.25128 -0.71835,-0.0286 -1.34471,0.93246 -1.399,2.14701 -0.0543,1.21454 0.48403,2.22234 1.20207,2.25097 0.71835,0.0289 1.34471,-0.93215 1.399,-2.1467 z"
id="path981"
inkscape:connector-curvature="0"
style="opacity:1;fill:#030300;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 220.60102,188.8034 c 0.79646,0.77273 3.13967,2.24495 3.81459,2.95228 2.10347,2.20457 1.90835,3.18796 1.90835,3.18796 l 1.53712,-1.16331 c 0,0 -1.35768,-1.71453 -2.39177,-2.46255 -2.45661,-1.77691 -5.85895,-3.47577 -4.86829,-2.51438 z"
id="path983"
inkscape:connector-curvature="0"
style="opacity:1;fill:#030300;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /><path
d="m 223.25576,186.99304 c 0.70327,0.85771 2.86374,2.58369 3.45391,3.36245 1.83929,2.42728 1.5341,3.38294 1.5341,3.38294 l 1.65835,-0.98369 c 0,0 -1.15412,-1.85677 -2.09653,-2.7163 -2.23827,-2.04182 -5.42469,-4.11197 -4.54983,-3.0454 z"
id="path985"
inkscape:connector-curvature="0"
style="opacity:1;fill:#030300;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round" /></svg>

After

Width:  |  Height:  |  Size: 9.7 KiB

201
app/images/social.svg Normal file
View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Vectornator for iOS (http://vectornator.io/) -->
<svg
xmlns:vectornator="http://vectornator.io"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round"
xml:space="preserve"
version="1.1"
viewBox="0 0 1280 640"
id="svg35"
sodipodi:docname="social.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
width="1280"
height="640"
inkscape:export-filename="C:\Users\rantenesse\Downloads\Personal Downloads\Readlebee_social.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1409"
inkscape:window-height="706"
id="namedview37"
showgrid="false"
inkscape:zoom="0.5"
inkscape:cx="604.74915"
inkscape:cy="250.8411"
inkscape:window-x="2398"
inkscape:window-y="336"
inkscape:window-maximized="0"
inkscape:current-layer="svg35" />
<metadata
id="metadata2">
<vectornator:setting
key="DisplayWhiteBackground"
value="0" />
<vectornator:setting
key="RulersVisible"
value="1" />
<vectornator:setting
key="SnapToEdges"
value="0" />
<vectornator:setting
key="Units"
value="Pixels" />
<vectornator:setting
key="DynamicGuides"
value="0" />
<vectornator:setting
key="SnapToPoints"
value="0" />
<vectornator:setting
key="CMYKEnabledKey"
value="0" />
<vectornator:setting
key="SnapToGrid"
value="0" />
<vectornator:setting
key="SnapToGuides"
value="1" />
<vectornator:setting
key="ShowGrid"
value="1" />
<vectornator:setting
key="GridSpacing"
value="36" />
<rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata>
<defs
id="defs4">
</defs>
<g
id="g1062"
transform="matrix(1.0509747,0,0,1.0515096,-40.385398,-54.950942)"
style="stroke-width:0.95125568"><path
id="path16-2-9"
d="m 45.043411,337.26593 -0.07953,0.46571 c -3.498477,20.36786 21.933998,41.53808 56.804729,47.28409 v 0 c 34.87075,5.74604 65.97313,-6.1069 69.47099,-26.47315 l 0.0802,-0.46732 c 3.49786,-20.36628 -21.93462,-41.53647 -56.80535,-47.28248 v 0 c -34.86852,-5.74701 -65.972506,6.10529 -69.470983,26.47315 z"
style="clip-rule:evenodd;opacity:1;fill:#a8a69d;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0" /><path
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:231.32017517px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;clip-rule:evenodd;fill:#fbe656;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.15128279;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 214.89609,431.29312 c 0.11131,22.79432 0.22265,45.58865 0.33397,68.38297 -18.66229,0.92052 -37.32458,1.84102 -55.98686,2.76154 L 156.13281,271.1596 c 41.64605,-19.74008 89.84579,-27.15449 135.28001,-18.3922 33.58515,5.3873 65.25867,29.87674 72.16518,64.21632 6.71244,32.27815 0.0908,69.89604 -26.41666,91.79925 -9.73158,3.32463 -7.20406,10.05284 -4.10061,17.26666 8.18523,24.42709 16.37046,48.85419 24.55569,73.28127 -17.9711,4.02723 -35.94219,8.05445 -53.91328,12.08169 -9.79194,-26.23451 -19.58388,-52.46905 -29.37582,-78.70356 -16.8718,4.79762 -48.36042,-5.17394 -59.43123,-1.41591 z m -0.0119,-123.23318 v 73.21561 c 25.62465,4.06371 54.83804,7.72304 77.75954,-7.24901 18.33014,-12.93309 21.09817,-43.0526 6.19781,-59.51444 -19.63771,-14.59801 -66.8022,-22.12655 -83.95735,-6.45216 z"
id="path892"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccccc" /><path
id="path22-0-4"
d="m 75.622673,269.78931 -0.311326,0.34346 c -13.61061,15.028 -3.486168,46.5783 22.612136,70.4708 v 0 c 26.098307,23.8925 58.287377,31.07864 71.897997,16.05064 l 0.31195,-0.34507 c 13.61,-15.02639 3.48554,-46.5767 -22.61276,-70.46919 v 0 C 121.42399,261.94808 89.233295,254.76131 75.622673,269.78931 Z"
style="clip-rule:evenodd;opacity:1;fill:#cbcbc8;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:round;stroke-linejoin:round"
inkscape:connector-curvature="0" /><path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path26-5-0"
d="M 339.65399,274.00283 329.5055,265.0236 c 15.49242,-16.79054 40.43768,-37.81563 60.92758,-47.40791 -11.66606,8.17545 -44.66548,45.20585 -50.77909,56.38714 z"
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.43418884;stroke-linecap:round;stroke-linejoin:round" /><path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path28-1-5"
d="m 320.3103,259.20884 -11.08478,-5.09128 c 13.49003,-18.43227 37.02006,-41.37715 56.29041,-53.2226 -12.13923,11.23607 -40.45172,46.64718 -45.20563,58.31388 z"
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.43418884;stroke-linecap:round;stroke-linejoin:round" /><path
style="clip-rule:evenodd;opacity:1;fill:#fbe656;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path963-7"
d="m 390.50044,347.75746 62.42685,33.78001 -74.70283,2.28717 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#a8a69d;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path965-4"
d="m 380.90036,355.3311 66.58967,25.07781 -72.0374,1.2525 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#cbcbc8;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path967-9"
d="m 364.26936,376.44598 86.07065,4.97078 -86.76114,6.5065 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#fbe656;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path969-2"
d="m 454.62869,381.08381 -100.19768,1.86858 -30.52709,95.2696 97.85594,-1.39463 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#a8a69d;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path973-1"
d="m 380.85712,394.29955 -0.12113,0.0243 c -5.3009,1.05766 -8.08444,9.23868 -6.21704,18.27269 v 0 c 1.86741,9.03399 7.67817,15.49963 12.97861,14.44197 l 0.12158,-0.0243 c 5.30043,-1.05766 8.08398,-9.23867 6.21657,-18.27266 v 0 C 391.96875,399.708 386.158,393.2419 380.8571,394.29956 Z" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path975-2"
d="m 390.44232,415.41232 -0.39276,-0.0158 c -17.15076,-0.68741 -31.44367,7.45537 -31.92427,18.18766 v 0 c -0.48014,10.73228 13.03401,19.98986 30.18478,20.67727 l 0.39277,0.0157 c 17.15078,0.68741 31.44387,-7.45582 31.92423,-18.18766 v 0 c 0.48036,-10.73227 -13.03352,-19.98986 -30.18475,-20.67727 z" /><path
sodipodi:nodetypes="cccccccccccccccscc"
style="clip-rule:evenodd;opacity:1;fill:#fbe656;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path977-4"
d="m 392.83852,415.71238 -1.71652,38.35163 c -2.72404,0.16609 -5.55093,-0.11898 -8.05607,-0.48006 l 1.70211,-38.0376 c 2.89042,-0.21393 5.3425,-0.15504 8.07048,0.16603 z m 4.2798,0.51285 c 2.76329,0.49982 5.30902,1.28217 7.71556,2.19857 l -1.51743,33.89827 c -2.48087,0.72117 -5.0847,1.29656 -7.88401,1.57367 0.56132,-12.55687 1.12382,-25.11368 1.68588,-37.67051 z m -16.67693,-0.14345 -1.63905,36.62273 c -12.38542,-3.00158 -21.1734,-10.56762 -20.78785,-19.17739 0.38511,-8.6102 9.81808,-15.44564 22.4269,-17.44534 z m 28.61014,4.24323 c 7.18055,3.82983 11.74493,9.48343 11.46635,15.70704 -0.27857,6.2236 -5.33297,11.51821 -12.83019,14.75959 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#cbcbc8;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path979-7"
d="m 402.79035,395.67257 -0.11305,-0.0436 c -4.94553,-1.90657 -11.69899,3.5185 -15.08473,12.11701 v 0 c -3.38575,8.59851 -2.12145,17.11425 2.82406,19.02083 l 0.11351,0.0436 c 4.94506,1.90658 11.69854,-3.51849 15.08428,-12.117 v 0 c 3.38575,-8.59807 2.12145,-17.11425 -2.82407,-19.02084 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path981-1"
d="m 369.15768,431.55527 c 0.0811,-1.81301 -0.72247,-3.31739 -1.79534,-3.36059 -1.07289,-0.0427 -2.00839,1.39192 -2.08947,3.20494 -0.0811,1.813 0.72292,3.31739 1.79534,3.36013 1.07289,0.0432 2.00838,-1.39147 2.08947,-3.20448 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path983-7"
d="m 355.08095,413.92276 c 1.18955,1.15349 4.68924,3.35115 5.69726,4.40701 3.14163,3.29085 2.85021,4.75881 2.85021,4.75881 l 2.29576,-1.73653 c 0,0 -2.02776,-2.55935 -3.57222,-3.67596 -3.66906,-2.65247 -8.7506,-5.18844 -7.27101,-3.75333 z" /><path
style="clip-rule:evenodd;opacity:1;fill:#030300;fill-rule:evenodd;stroke:#000000;stroke-width:3.4341886;stroke-linecap:butt;stroke-linejoin:round"
inkscape:connector-curvature="0"
id="path985-8"
d="m 359.04593,411.22036 c 1.05036,1.28034 4.27712,3.85679 5.15856,5.01928 2.74707,3.62331 2.29124,5.04987 2.29124,5.04987 l 2.47683,-1.4684 c 0,0 -1.72373,-2.77169 -3.13127,-4.05474 -3.34295,-3.04793 -8.10201,-6.13813 -6.79536,-4.54601 z" /><path
d="m 454.89948,447.09308 c 3.23201,15.69763 13.18656,23.54646 29.86367,23.54646 10.20159,-0.0583 19.7822,-3.75243 27.34271,-9.14614 l 11.82911,21.40586 c -13.20074,8.83938 -28.63225,13.54278 -43.05022,13.62191 -15.34179,-0.2077 -30.40921,-4.92764 -40.52926,-15.1787 -10.977,-11.92756 -14.8531,-27.99161 -14.93182,-42.42253 0.18422,-14.51829 3.59213,-29.21522 12.60479,-39.50355 11.13791,-12.11288 27.55187,-16.26165 41.8867,-16.34629 12.50426,0.22696 25.25127,2.59287 34.71165,9.72993 10.09158,7.93516 14.08092,20.51022 14.15615,31.7196 -0.0222,7.27784 -1.2881,14.39603 -3.10272,20.82207 z m 24.82175,-41.25493 c -16.35502,0.8116 -23.4341,8.27789 -25.4035,22.76806 l 47.7043,-0.19461 v -1.55679 c -0.8204,-15.21817 -9.29989,-20.89336 -22.3008,-21.01666 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:4.75627851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path917"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" /><path
d="m 607.65901,493.79678 c -0.65529,-3.31547 -0.8975,-7.09022 -1.35743,-10.11913 -13.85197,5.38763 -27.71318,12.40555 -41.8867,10.89753 -20.36543,-2.16683 -32.07698,-12.17847 -32.19071,-30.9412 4.88052,-27.71873 23.37045,-30.59779 44.98942,-32.88719 8.79104,-0.90812 17.84064,-1.55679 27.14879,-1.94599 -1.13021,-13.22888 -10.56075,-19.55733 -21.33119,-19.65446 -3.36127,0 -6.65792,0.38919 -9.88991,1.16759 -8.65079,2.49079 -17.11209,5.09692 -22.49471,11.87052 l -13.76832,-21.01666 c 13.97058,-13.11195 33.01191,-17.99563 50.22526,-18.09769 13.38651,0.14971 27.26306,3.55336 35.48734,13.42732 8.08423,10.44738 10.21754,23.82754 10.47168,35.61157 1.51103,21.60878 -0.85903,41.15074 2.52095,59.93641 z m -2.52095,-28.8006 c -0.40676,-6.6001 -0.38784,-12.25853 -0.38784,-19.07068 -11.20304,1.47318 -21.88377,1.56707 -32.38462,4.86497 -5.42983,1.70529 -9.55686,5.71367 -9.50208,10.89752 0.0758,7.16653 6.08602,11.09252 12.02303,10.89754 10.78203,-0.35411 20.75646,-4.19939 30.25151,-7.58935 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:4.75627851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path919"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsccccccccccccccsssc" /><path
d="m 748.91062,489.90481 -26.56703,1.55679 -1.74528,-12.25973 c -4.52479,4.02172 -9.69599,7.20017 -15.51359,9.53535 -12.14537,4.37007 -25.19804,4.66622 -36.45694,0.1946 -20.33988,-8.80313 -26.67061,-31.01807 -26.76094,-50.20648 0.19928,-15.48249 3.73497,-31.13751 13.76831,-42.03333 8.31599,-8.69482 19.6357,-13.15118 30.63934,-13.23271 11.53982,0.31838 22.54766,4.05148 31.60894,9.72993 l -0.58175,-43.97931 31.60894,-1.75139 z m -54.10365,-22.76805 c 7.88607,0 15.83679,-3.11358 23.85214,-9.34075 l -0.58175,-40.67113 c -6.88406,-4.16731 -14.53899,-7.35563 -22.10687,-7.39475 -16.19462,-0.0837 -24.99139,14.73724 -25.20959,29.18981 0.7859,16.61988 8.1171,28.01187 24.04607,28.21682 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:4.75627851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path921"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccscc" /><path
d="m 793.91734,490.09941 -29.66975,1.55679 -2.71488,-142.25168 31.80286,-1.75138 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:4.75627851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path923"
inkscape:connector-curvature="0" /><path
sodipodi:nodetypes="cccccsccccccsccsss"
d="m 949.7787,393.96763 c 9.40072,-6.92458 20.79424,-10.44459 31.41503,-10.50833 12.00026,0.18385 23.66447,4.45212 31.22107,12.64892 9.8431,10.96692 12.5429,25.97305 12.6048,38.91975 -0.2684,15.64014 -3.9701,31.28191 -13.5744,42.61713 -8.3308,9.27193 -19.80697,14.66925 -31.22108,14.59489 -11.71843,-0.0764 -22.76553,-4.27645 -31.60894,-10.50832 l -0.58176,8.36774 -27.53663,1.55679 -2.71488,-142.25168 31.80287,-1.75138 z m 23.07647,14.78951 c -8.70411,-0.0379 -16.61927,3.7427 -23.07647,8.17314 l 0.19392,41.25493 c 6.68773,4.35067 14.13753,9.0075 21.52511,7.78395 18.512,-3.06599 24.75981,-14.31481 24.4339,-30.3574 -0.33079,-16.2834 -7.58884,-26.78724 -23.07646,-26.85462 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;fill:#fbe656;fill-opacity:1;stroke:#000000;stroke-width:4.75627851;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path927"
inkscape:connector-curvature="0" /><path
d="m 834.05789,447.09308 c 3.23201,15.69763 13.18656,23.54646 29.86367,23.54646 10.20159,-0.0583 19.7822,-3.75243 27.3427,-9.14614 l 11.82912,21.40586 c -13.20074,8.83938 -28.63225,13.54278 -43.05022,13.62191 -15.34179,-0.2077 -30.40921,-4.92764 -40.52926,-15.1787 -10.977,-11.92756 -14.8531,-27.99161 -14.93182,-42.42253 0.18422,-14.51829 3.59213,-29.21522 12.60479,-39.50355 11.13791,-12.11288 27.55186,-16.26165 41.8867,-16.34629 12.50425,0.22696 25.25127,2.59287 34.71165,9.72993 10.09157,7.93516 14.08092,20.51022 14.15615,31.7196 -0.0222,7.27784 -1.2881,14.39603 -3.10272,20.82207 z m 24.82175,-41.25493 c -16.35503,0.8116 -23.4341,8.27789 -25.4035,22.76806 l 47.7043,-0.19461 v -1.55679 c -0.8204,-15.21817 -9.29989,-20.89336 -22.3008,-21.01666 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;clip-rule:evenodd;fill:#fbe656;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.75627851;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path917-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" /><path
d="m 1063.3887,447.09308 c 3.232,15.69763 13.1866,23.54646 29.8638,23.54646 10.2015,-0.0583 19.7821,-3.75243 27.3426,-9.14614 l 11.8292,21.40586 c -13.2009,8.83938 -28.6324,13.54278 -43.0502,13.62191 -15.3419,-0.2077 -30.4092,-4.92764 -40.5293,-15.1787 -10.9771,-11.92756 -14.8531,-27.99161 -14.9318,-42.42253 0.1841,-14.51829 3.592,-29.21522 12.6047,-39.50355 11.138,-12.11288 27.5518,-16.26165 41.8867,-16.34629 12.5043,0.22696 25.2513,2.59287 34.7117,9.72993 10.0915,7.93516 14.0809,20.51022 14.1561,31.7196 -0.023,7.27784 -1.2881,14.39603 -3.1027,20.82207 z m 24.8218,-41.25493 c -16.3551,0.8116 -23.4341,8.27789 -25.4036,22.76806 l 47.7044,-0.19461 v -1.55679 c -0.8204,-15.21817 -9.2998,-20.89336 -22.3008,-21.01666 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;clip-rule:evenodd;fill:#fbe656;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.75627851;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path917-3-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" /><path
d="m 1175.5839,447.09308 c 3.232,15.69763 13.1865,23.54646 29.8636,23.54646 10.2016,-0.0583 19.7822,-3.75243 27.3428,-9.14614 l 11.829,21.40586 c -13.2007,8.83938 -28.6322,13.54278 -43.0502,13.62191 -15.3417,-0.2077 -30.4092,-4.92764 -40.5292,-15.1787 -10.977,-11.92756 -14.8531,-27.99161 -14.9319,-42.42253 0.1843,-14.51829 3.5922,-29.21522 12.6048,-39.50355 11.138,-12.11288 27.5519,-16.26165 41.8868,-16.34629 12.5042,0.22696 25.2513,2.59287 34.7116,9.72993 10.0916,7.93516 14.0809,20.51022 14.1562,31.7196 -0.023,7.27784 -1.2881,14.39603 -3.1028,20.82207 z m 24.8217,-41.25493 c -16.355,0.8116 -23.434,8.27789 -25.4035,22.76806 l 47.7043,-0.19461 v -1.55679 c -0.8203,-15.21817 -9.2999,-20.89336 -22.3008,-21.01666 z"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:171.95491028px;line-height:1.25;font-family:Remissis;-inkscape-font-specification:'Remissis Semi-Bold';letter-spacing:0px;word-spacing:0px;clip-rule:evenodd;fill:#fbe656;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.75627851;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path917-3-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccccccccc" /></g></svg>

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -5,7 +5,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>book-tracker</title>
<title>Readlebee</title>
<meta name="description" content="An attempt at a viable alternative to Goodreads">
<meta name="keywords" content="books, tracking, lists, bookshelves, bookshelf, rating, reviews, reading">
@ -13,7 +13,7 @@
<meta name="theme-color" content="#000000">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="book-tracker">
<meta name="apple-mobile-web-app-title" content="Readlebee">
<link rel="apple-touch-icon" href="../dev/images/favicon.png">
<link rel="stylesheet" href="styles/index.scss">

View File

@ -1,6 +1,6 @@
{
"name": "book-tracker",
"short_name": "book-tracker",
"name": "Readlebee",
"short_name": "Readlebee",
"icons": [
{
"src": "../dev/images/icon-128.png",

6
app/styles/_search.scss Normal file
View File

@ -0,0 +1,6 @@
.search-result {
.search-image {
width: 100%;
max-width: 300px;
}
}

View File

@ -36,7 +36,14 @@
// @import '../../node_modules/picnic/src/plugins/dropimage/plugin';
// @import '../../node_modules/picnic/src/plugins/tabs/plugin';
// @import '../../node_modules/picnic/src/plugins/tooltip/plugin';
@import '../../node_modules/picnic/src/plugins/tooltip/plugin';
// Custom global styling
@import './picnic-customizations/custom';
// View styling
@import './search';
// Icons
@import '../fonts/fontello/css/animation.css';
@import '../fonts/fontello/css/icons.css';

View File

@ -26,14 +26,14 @@ footer nav {
}
// External links
// a[href^="http://"]:not([href*="localhost"]):not([href*="guts.plus"]):after,
// a[href^="https://"]:not([href*="localhost"]):not([href*="guts.plus"]):after{
// font-family: "icons";
// font-size: 70%;
// vertical-align: top;
// margin-left: 3px;
// content: "\f08e";
// }
a[href^="http://"]:after,
a[href^="https://"]:after{
font-family: "icons";
font-size: 70%;
vertical-align: top;
margin-left: 3px;
content: "\f08e";
}
.menu ul li {
display: inline-block;

View File

@ -1,5 +1,7 @@
import html from 'choo/html';
import headerImage from '../../dev/images/header.png';
import { homeView } from './home';
import { loginView } from './login';
import { searchView } from './search';
@ -30,7 +32,7 @@ export const viewManager = (state, emit) => {
<nav>
<div class="brand">
<a href="/">
<span class="title">Unnamed Book Tracker</span>
<span><img src=${headerImage} alt="Readlebee"></span>
</a>
</div>
@ -58,8 +60,8 @@ export const viewManager = (state, emit) => {
<footer>
<nav>
<div class="links">
<a href="https://gitlab.com/Alamantus/book-tracker" class="pseudo button">Repo</a>
<a href="https://gitter.im/book-tracker/general" class="pseudo button">Chat</a>
<a href="https://gitlab.com/Alamantus/Readlebee" class="pseudo button">Repo</a>
<a href="https://gitter.im/Readlebee/community" class="pseudo button">Chat</a>
</div>
</nav>
</footer>

View File

@ -7,7 +7,11 @@ export class SearchController extends ViewController {
super(state, 'search', {
lastSearch: undefined,
done: false,
results: [],
results: {
humans: [],
series: [],
works: [],
},
});
// If using controller methods in an input's onchange or onclick instance,
@ -15,8 +19,12 @@ export class SearchController extends ViewController {
// or use `onclick=${() => controller.submit()}` to maintain the 'this' of the class instead.
}
get doneSearching() {
return this.state.done;
}
get results() {
return [];
return this.state.results;
}
get hasQuery() {
@ -33,7 +41,6 @@ export class SearchController extends ViewController {
return fetch(`/api/search?for=${searchTerm}&lang=${this.appState.language}`)
.then(response => response.json())
.then(responseJSON => {
console.log(responseJSON);
this.state.results = responseJSON;
this.state.done = true;
});

View File

@ -19,24 +19,80 @@ export const searchView = (state, emit) => {
// This one doesn't have the problem right now, but it's good to remember.
return [
html`<section>
<h2 class="subtitle">${i18n.__('search.header')}</h2>
<h1 class="title">${i18n.__('search.header')}</h1>
<article>
${controller.state.done ? 'Done searching' : 'Loading...'}
${controller.doneSearching ? null : html`<h2><i class="icon-loading animate-spin"></i></h2>`}
${controller.results.map(result => {
return html`<div class="card">
<header>
${result.covers.map(cover => {
return html`<img src=${cover} />`;
})}
<h1 class="title">${result.title}</h1>
${result.authors.map(author => {
return html`<h2 class="subtitle">${author}</h2>`;
})}
</header>
</div>`;
})}
${controller.results.works < 1
? null
: [
html`<h2>${i18n.__('search.books_header')}</h2>`,
controller.results.works.map(result => {
return html`<div class="flex search-result">
<div class="sixth-500">
${result.image ? html`<img src=${result.image.url} class="search-image">` : null}
</div>
<div class="half-500">
<h3 class="title">${result.name}</h3>
${result.description ? html`<h4 class="subtitle">${result.description}</h4>` : null}
<span data-tooltip=${i18n.__('interaction.heart')}>
<button class="pseudo">
<i class="pseudo icon-heart-outline"></i>
</button>
</span>
<span data-tooltip=${i18n.__('interaction.add')}>
<button class="pseudo">
<i class="pseudo icon-plus"></i>
</button>
</span>
</div>
<div class="third-500">
<a class="small pseudo button" href=${result.link} target="_blank">See details on Inventaire</a>
</div>
</div>`;
}),
]}
${controller.results.series.length < 1
? null
: [
html`<h2>${i18n.__('search.series_header')}</h2>`,
controller.results.series.map(result => {
return html`<div class="flex search-result">
<div class="sixth-500">
${result.image ? html`<img src=${result.image.url} class="search-image">` : null}
</div>
<div class="half-500">
<h3 class="title">${result.name}</h3>
${result.description ? html`<h4 class="subtitle">${result.description}</h4>` : null}
</div>
<div class="third-500">
<a href=${result.link} target="_blank">See details on Inventaire</a>
</div>
</div>`;
}),
]}
${controller.results.humans.length < 1
? null
: [
html`<h2>${i18n.__('search.people_header')}</h2>`,
controller.results.humans.map(result => {
return html`<div class="flex search-result">
<div class="sixth-500">
${result.image ? html`<img src=${result.image.url} class="search-image">` : null}
</div>
<div class="half-500">
<h3 class="title">${result.name}</h3>
${result.description ? html`<h4 class="subtitle">${result.description}</h4>` : null}
</div>
<div class="third-500">
<a href=${result.link} target="_blank">See details on Inventaire</a>
</div>
</div>`;
}),
]}
</article>
</section>`,
];

View File

@ -1,9 +1,9 @@
{
"name": "book-tracker",
"name": "readlebee",
"version": "0.0.0",
"description": "An attempt at a viable alternative to Goodreads",
"main": "index.html",
"repository": "https://gitlab.com/Alamantus/book-tracker.git",
"repository": "https://gitlab.com/Alamantus/Readlebee.git",
"author": "Robbie Antenesse <dev@alamantus.com>",
"license": "MIT",
"scripts": {

View File

@ -10,12 +10,18 @@ if (!fs.existsSync('./dev/images')) {
fs.mkdirSync('./dev/images');
}
const favicon = sharp('./app/images/book-pile.svg');
const favicon = sharp('./app/images/logo.svg');
const social = sharp('./app/images/social.svg');
// sharp('./src/images/social.jpg').toFile(folder + 'social.jpg', (err, info) => {
// if (err) return console.error(err);
// console.log(info);
// });
social.clone().resize(1280, 640).flatten({ background: '#ffffff' }).toFile(folder + 'social.png', (err, info) => {
if (err) return console.error(err);
console.log(info);
});
social.clone().trim(1).resize(null, 48).toFile(folder + 'header.png', (err, info) => {
if (err) return console.error(err);
console.log(info);
});
favicon.clone().resize(32, 32).toFile(folder + 'favicon.png', (err, info) => {
if (err) return console.error(err);

View File

@ -124,7 +124,7 @@ class SearchController {
: null
),
image: (
hasImage && typeof human.image.url !== 'undefined'
hasImage && typeof work.image.url !== 'undefined'
? human.image
: null
),

View File

@ -1,8 +1,8 @@
<footer>
<nav>
<div class="links">
<a href="https://gitlab.com/Alamantus/book-tracker" class="pseudo button">Repo</a>
<a href="https://gitter.im/book-tracker/general" class="pseudo button">Chat</a>
<a href="https://gitlab.com/Alamantus/Readlebee" class="pseudo button">Repo</a>
<a href="https://gitter.im/Readlebee/community" class="pseudo button">Chat</a>
</div>
</nav>
</footer>