Setup completed.

Completed the main setup of the development environment of nuxt.js and created a simple boilerplate/temporary start page with theme functionality.
This commit is contained in:
Guz
2022-01-17 18:54:03 -03:00
parent ec58e3fda0
commit a59f1d375d
35 changed files with 33550 additions and 23 deletions

12
.editorconfig Normal file
View File

@@ -0,0 +1,12 @@
# editorconfig.org
root = true
[*]
indent_style = tab
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

15
.eslintrc.js Normal file
View File

@@ -0,0 +1,15 @@
module.exports = {
root: true,
env: {
browser: true,
node: true,
},
extends: [
'@nuxtjs/eslint-config-typescript',
'plugin:nuxt/recommended',
'prettier',
],
plugins: [],
// add your custom rules here
rules: {},
}

2
.gitattributes vendored
View File

@@ -1,2 +0,0 @@
# Auto detect text files and perform LF normalization
* text=auto

17
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
version: 2
updates:
# Fetch and update latest `npm` packages
- package-ecosystem: npm
directory: '/'
schedule:
interval: daily
time: '00:00'
open-pull-requests-limit: 10
reviewers:
- guz013
assignees:
- guz013
commit-message:
prefix: fix
prefix-development: chore
include: scope

96
.gitignore vendored Normal file
View File

@@ -0,0 +1,96 @@
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# Nuxt generate
dist
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE / Editor
.idea
# Service worker
sw.*
# macOS
.DS_Store
# Vim swap files
*.swp
# Vercel
.vercel
.vercel_build_output
.vercel

96
.prettierignore Normal file
View File

@@ -0,0 +1,96 @@
###
# Place your Prettier ignore content here
###
# .gitignore content is duplicated here due to https://github.com/prettier/prettier/issues/8506
# Created by .ignore support plugin (hsz.mobi)
### Node template
# Logs
/logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
# parcel-bundler cache (https://parceljs.org/)
.cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# Nuxt generate
dist
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# IDE / Editor
.idea
# Service worker
sw.*
# macOS
.DS_Store
# Vim swap files
*.swp

4
.prettierrc Normal file
View File

@@ -0,0 +1,4 @@
{
"semi": true,
"singleQuote": true
}

21
LICENSE
View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2022 Guz
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

68
README.md Normal file
View File

@@ -0,0 +1,68 @@
# ToToday
## Build Setup
```bash
# install dependencies
$ npm install
# serve with hot reload at localhost:3000
$ npm run dev
# build for production and launch server
$ npm run build
$ npm run start
# generate static project
$ npm run generate
```
For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).
## Special Directories
You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.
### `assets`
The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets).
### `components`
The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components).
### `layouts`
Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts).
### `pages`
This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing).
### `plugins`
The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.js`.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins).
### `static`
This directory contains your static files. Each file inside this directory is mapped to `/`.
Example: `/static/robots.txt` is mapped as `/robots.txt`.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static).
### `store`
This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex.
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store).

61
nuxt.config.js Normal file
View File

@@ -0,0 +1,61 @@
export default {
srcDir: 'src/',
buildDir: 'dist',
target: 'static',
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: 'ToToday',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: '' },
{ name: 'format-detection', content: 'telephone=no' },
],
link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
'~/assets/styles/global.scss',
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [],
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
// https://go.nuxtjs.dev/typescript
'@nuxt/typescript-build',
// https://go.nuxtjs.dev/stylelint
'@nuxtjs/stylelint-module',
'@nuxtjs/color-mode',
'@nuxt/image',
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
'@nuxtjs/pwa',
],
// PWA module configuration: https://go.nuxtjs.dev/pwa
pwa: {
manifest: {
lang: 'en',
},
},
image: {
screens: {
ToTodayLogoLg: 250,
}
},
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {},
}

32677
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

47
package.json Normal file
View File

@@ -0,0 +1,47 @@
{
"name": "ToToday",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"lint:js": "eslint --ext \".js,.ts,.vue\" --ignore-path .gitignore .",
"lint:style": "stylelint \"**/*.{css,scss,sass,html,vue}\" --ignore-path .gitignore",
"lint:prettier": "prettier --check .",
"lint": "npm run lint:js && npm run lint:style && npm run lint:prettier",
"lintfix": "prettier --write --list-different . && npm run lint:js -- --fix && npm run lint:style -- --fix"
},
"dependencies": {
"@nuxtjs/pwa": "^3.3.5",
"core-js": "^3.19.3",
"nuxt": "^2.15.8",
"vue": "^2.6.14",
"vue-server-renderer": "^2.6.14",
"vue-template-compiler": "^2.6.14",
"webpack": "^4.46.0"
},
"devDependencies": {
"@babel/eslint-parser": "^7.16.3",
"@nuxt/image": "^0.6.0",
"@nuxt/types": "^2.15.8",
"@nuxt/typescript-build": "^2.1.0",
"@nuxtjs/color-mode": "^2.1.1",
"@nuxtjs/eslint-config-typescript": "^8.0.0",
"@nuxtjs/eslint-module": "^3.0.2",
"@nuxtjs/stylelint-module": "^4.1.0",
"eslint": "^8.4.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-nuxt": "^3.1.0",
"eslint-plugin-vue": "^8.2.0",
"postcss-html": "^1.3.0",
"prettier": "^2.5.1",
"sass": "^1.48.0",
"sass-loader": "^10.2.1",
"stylelint": "^14.1.0",
"stylelint-config-prettier": "^9.0.3",
"stylelint-config-recommended-vue": "^1.1.0",
"stylelint-config-standard": "^24.0.0"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,33 @@
@import '~assets/styles/_variables.scss';
@mixin link {
a {
text-decoration: none;
transition: color 0.2s;
.light-mode &:link,
.light-mode &:visited {
color: $light-secondary;
}
.light-mode &:hover,
.light-mode &:focus {
color: $light-primary;
}
.dark-mode &:link,
.dark-mode &:visited {
color: $dark-secondary;
}
.dark-mode &:hover,
.dark-mode &:focus {
color: $dark-primary;
}
}
}
@mixin center {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}

View File

@@ -0,0 +1,12 @@
@import '~assets/styles/fonts.css';
$light-background: #fff;
$light-primary: #000;
$light-secondary: #afafaf;
$dark-background: #181b23;
$dark-primary: #eaf3f2;
$dark-secondary: #697699;
$main-font: 'Red Display', arial, helvetica, sans-serif;
$secondary-font: 'Fira Code', monospace, sans-serif;

View File

@@ -0,0 +1,16 @@
@font-face {
font-family: 'Fira Code';
src: url('../fonts/FiraCode.ttf') format('truetype');
src: url('../fonts/FiraCode-Medium.ttf') format('truetype');
}
@font-face {
font-family: 'Red Display';
src: url('../fonts/RedHatDisplay.ttf') format('truetype');
src: url('../fonts/RedHatDisplay-Bold.ttf') format('truetype');
}
@font-face {
font-family: 'Red Text';
src: url('../fonts/RedHatText.ttf') format('truetype');
}

View File

@@ -0,0 +1,29 @@
@import '~assets/styles/_variables.scss';
@import '~assets/styles/_mixins.scss';
body {
@include center;
overflow: hidden;
height: 100vh;
width: 100vw;
transition: background-color .3s;
font-family: $main-font;
}
* {
transition: all .3s;
transition: color .01s;
}
.light-mode body {
background-color: $light-background;
color: $light-primary;
}
.dark-mode body {
background-color: $dark-background;
color: $dark-primary;
}

View File

@@ -0,0 +1,36 @@
<template>
<div class="footer">
<p>
<a href="http://github.com/ProjectLored/ToToday.app" target="_blank">
(c) 2022 Project Lored &bull; MIT License
</a>
<br />
Icons provided by
<a href="https://iconoir.com/" target="_blank"> Iconoir </a>
</p>
</div>
</template>
<style scoped lang="scss">
@import '~assets/styles/_variables.scss';
@import '~assets/styles/_mixins.scss';
.footer {
@include link;
position: fixed;
bottom: 0;
left: 0;
width: 100vw;
font-family: $secondary-font;
font-size: small;
.light-mode & {
color: $light-secondary;
}
.dark-mode & {
color: $dark-secondary;
}
}
</style>

View File

@@ -0,0 +1,86 @@
<template>
<div class="themePicker">
<button
@click="
$colorMode.preference =
$colorMode.preference === 'dark' ? 'light' : 'dark'
"
>
<IconMoon v-if="$colorMode.preference !== 'dark'" />
<IconSun v-else/>
</button>
</div>
</template>
<style lang="scss">
@import '~assets/styles/_variables.scss';
@import '~assets/styles/_mixins.scss';
.themePicker {
z-index: 100;
position: fixed;
transition: right, bottom 1s ease-in-out;
right: 10px;
bottom: 10px;
@media screen and (min-width: 600px) {
right: 40px;
bottom: 40px;
}
font-family: $secondary-font;
font-size: 15px;
button {
* {
width: 25px;
height: 25px;
@include center;
margin: 3px 0px;
padding: 0;
}
background-color: transparent;
font-size: 15px;
outline: 0;
font-family: $secondary-font;
border-width: 2px;
border-style: solid;
border-radius: 25%;
transition: border-color 0.2s;
.icon * {
transition: stroke 0.2s;
}
.light-mode & {
border-color: $light-secondary;
.icon * {
stroke: $light-secondary;
}
&:focus,
&:hover {
.icon * {
stroke: $light-primary;
}
border-color: $light-primary;
}
}
.dark-mode & {
border-color: $dark-secondary;
.icon * {
stroke: $dark-secondary;
}
&:focus,
&:hover {
border-color: $dark-primary;
.icon * {
stroke: $dark-primary;
}
}
}
}
}
</style>

View File

@@ -0,0 +1,6 @@
<template>
<picture>
<nuxt-img v-if="$colorMode.value !== 'dark'" src="/images/ToToday-Dark.svg" alt="ToToday logo" width="250"/>
<nuxt-img v-else src="/images/ToToday-Light.svg" alt="ToToday logo" width="250"/>
</picture>
</template>

View File

@@ -0,0 +1,42 @@
<template>
<svg
class="icon"
width="24"
height="24"
stroke-width="1.5"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="1.5" />
<path
d="M7.63262 3.06689C8.98567 3.35733 9.99999 4.56025 9.99999 6.00007C9.99999 7.65693 8.65685 9.00007 6.99999 9.00007C5.4512 9.00007 4.17653 7.82641 4.01685 6.31997"
stroke="currentColor"
stroke-width="1.5"
/>
<path
d="M22 13.0505C21.3647 12.4022 20.4793 12 19.5 12C17.567 12 16 13.567 16 15.5C16 17.2632 17.3039 18.7219 19 18.9646"
stroke="currentColor"
stroke-width="1.5"
/>
<path
d="M14.5 8.51L14.51 8.49889"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M10 17C11.1046 17 12 16.1046 12 15C12 13.8954 11.1046 13 10 13C8.89543 13 8 13.8954 8 15C8 16.1046 8.89543 17 10 17Z"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
name: 'IconMoon',
});
</script>

View File

@@ -0,0 +1,73 @@
<template>
<svg
class="icon"
width="24"
height="24"
stroke-width="1.5"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18Z"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M22 12L23 12"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M12 2V1"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M12 23V22"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M20 20L19 19"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M20 4L19 5"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M4 20L5 19"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M4 4L5 5"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M1 12L2 12"
stroke="currentColor"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
name: 'IconMoon',
});
</script>

18
src/pages/index.vue Normal file
View File

@@ -0,0 +1,18 @@
<template>
<main class="container">
<div>
<ToTodayLogo />
<p>A single page web app to help yours day-to-day tasks</p>
<ThemePicker />
</div>
<PageFooter />
</main>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
name: 'IndexPage',
});
</script>

BIN
src/static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
src/static/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@@ -0,0 +1,7 @@
<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="1.5"/>
<path d="M7.63262 3.06689C8.98567 3.35733 9.99999 4.56025 9.99999 6.00007C9.99999 7.65693 8.65685 9.00007 6.99999 9.00007C5.4512 9.00007 4.17653 7.82641 4.01685 6.31997" stroke="currentColor" stroke-width="1.5"/>
<path d="M22 13.0505C21.3647 12.4022 20.4793 12 19.5 12C17.567 12 16 13.567 16 15.5C16 17.2632 17.3039 18.7219 19 18.9646" stroke="currentColor" stroke-width="1.5"/>
<path d="M14.5 8.51L14.51 8.49889" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10 17C11.1046 17 12 16.1046 12 15C12 13.8954 11.1046 13 10 13C8.89543 13 8 13.8954 8 15C8 16.1046 8.89543 17 10 17Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 879 B

View File

@@ -0,0 +1,11 @@
<svg width="24" height="24" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M22 12L23 12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 2V1" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12 23V22" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M20 20L19 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M20 4L19 5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4 20L5 19" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4 4L5 5" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1 12L2 12" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,26 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 650.02 154">
<defs>
<style>
.cls-1 {
fill: #63e5ff;
}
</style>
</defs>
<g id="ToToday">
<g id="Layer_7" data-name="Layer 7">
<path d="M56.47,117.68H33.79v-91H-.39V4h91V26.72H56.47Z" />
<path d="M232.46,117.68H209.78v-91H175.6V4h91V26.72h-34.1Z" />
<path
d="M348.31,74.46a45.6,45.6,0,0,1-3.41,17.72,44.32,44.32,0,0,1-9.27,14.2,43.54,43.54,0,0,1-13.76,9.44,43.18,43.18,0,0,1-33.78,0A43.48,43.48,0,0,1,265,92.18a45.78,45.78,0,0,1-3.41-17.72A46.5,46.5,0,0,1,265,56.54a43.92,43.92,0,0,1,9.32-14.24,43.2,43.2,0,0,1,13.8-9.39,41.88,41.88,0,0,1,16.85-3.41,44.52,44.52,0,0,1,16.93,3.21,41,41,0,0,1,13.76,9.12A43.21,43.21,0,0,1,344.9,56,47.92,47.92,0,0,1,348.31,74.46ZM320.16,91.19a22,22,0,0,0,4.64-7.29,27,27,0,0,0,0-18.92,22.4,22.4,0,0,0-4.64-7.29A19.86,19.86,0,0,0,313.3,53a22.28,22.28,0,0,0-16.73,0,19.52,19.52,0,0,0-6.82,4.68A22.22,22.22,0,0,0,285.19,65a25.77,25.77,0,0,0-1.66,9.48,24.52,24.52,0,0,0,1.66,9.12,22.86,22.86,0,0,0,4.56,7.29,21.19,21.19,0,0,0,6.82,4.88,20,20,0,0,0,8.37,1.79,21.15,21.15,0,0,0,8.36-1.67" />
<path
d="M423.81-1V35.34a42.83,42.83,0,0,0-5-2.44,44.52,44.52,0,0,0-16.93-3.21A42.1,42.1,0,0,0,385,33.1a43.34,43.34,0,0,0-13.79,9.4,43.81,43.81,0,0,0-9.32,14.24,46.47,46.47,0,0,0-3.41,17.92,45.78,45.78,0,0,0,3.41,17.72A43.45,43.45,0,0,0,385,116a43.09,43.09,0,0,0,33.79,0,43.51,43.51,0,0,0,13.76-9.43,48.21,48.21,0,0,0,13-35.56V-1Zm-2.07,85.13a21.93,21.93,0,0,1-4.64,7.3,20.71,20.71,0,0,1-6.86,4.68,21.15,21.15,0,0,1-8.36,1.66A20,20,0,0,1,393.51,96a21.34,21.34,0,0,1-6.82-4.88,22.86,22.86,0,0,1-4.56-7.29,24.57,24.57,0,0,1-1.67-9.12,25.77,25.77,0,0,1,1.67-9.48,22.37,22.37,0,0,1,4.56-7.3,19.62,19.62,0,0,1,6.82-4.67,22.28,22.28,0,0,1,16.73,0,20,20,0,0,1,6.86,4.67,22.55,22.55,0,0,1,4.64,7.3,27,27,0,0,1,0,18.91Z" />
<path
d="M547.42,119.1V78.31a48.16,48.16,0,0,0-13-35.56,43.43,43.43,0,0,0-13.76-9.44,43.07,43.07,0,0,0-33.78,0A43.48,43.48,0,0,0,463.71,57a45.78,45.78,0,0,0-3.41,17.72,46.5,46.5,0,0,0,3.41,17.92A43.93,43.93,0,0,0,473,106.82a43.18,43.18,0,0,0,13.8,9.4,42.08,42.08,0,0,0,16.85,3.41,44.48,44.48,0,0,0,16.93-3.21,43.61,43.61,0,0,0,5-2.43v5.11ZM525.25,74.67a25.36,25.36,0,0,1-1.7,9.48,22.67,22.67,0,0,1-4.64,7.29,20,20,0,0,1-6.86,4.68,22.28,22.28,0,0,1-16.73,0,19.42,19.42,0,0,1-6.82-4.68,22.32,22.32,0,0,1-4.56-7.29,25.77,25.77,0,0,1-1.67-9.48,24.53,24.53,0,0,1,1.67-9.12,23,23,0,0,1,4.56-7.3,21.21,21.21,0,0,1,6.82-4.87,19.93,19.93,0,0,1,8.36-1.79,21.24,21.24,0,0,1,8.37,1.67,20.82,20.82,0,0,1,6.86,4.68,22.14,22.14,0,0,1,4.64,7.29A25.45,25.45,0,0,1,525.25,74.67Z" />
<path
d="M627.37,74.63a25.08,25.08,0,0,1-1.7,9.17A22.51,22.51,0,0,1,621,91.09a19.86,19.86,0,0,1-6.86,4.68,22.28,22.28,0,0,1-16.73,0,19.61,19.61,0,0,1-6.82-4.68,22.32,22.32,0,0,1-4.56-7.29,25.72,25.72,0,0,1-1.66-9.17s-.4-39.08-.07-44.47H562.1l.34,44.47a46.16,46.16,0,0,0,3.4,17.61,43.92,43.92,0,0,0,9.32,14.24,43.2,43.2,0,0,0,13.8,9.39,41.88,41.88,0,0,0,16.85,3.41,44.52,44.52,0,0,0,16.93-3.21,42.78,42.78,0,0,0,5-2.43V153h21.8V78a30.07,30.07,0,0,0,.09-3.33l-.3-44.47H627.09Z" />
<path class="cls-1"
d="M172.33,74.46a45.78,45.78,0,0,1-3.41,17.72,44.52,44.52,0,0,1-9.28,14.2,43.43,43.43,0,0,1-13.76,9.44,43.18,43.18,0,0,1-33.78,0A43.48,43.48,0,0,1,89,92.18a45.78,45.78,0,0,1-3.41-17.72A46.5,46.5,0,0,1,89,56.54,44.08,44.08,0,0,1,98.3,42.3a43.31,43.31,0,0,1,13.8-9.39A41.91,41.91,0,0,1,129,29.5a44.48,44.48,0,0,1,16.93,3.21,40.86,40.86,0,0,1,13.76,9.12A43.39,43.39,0,0,1,168.92,56,48.11,48.11,0,0,1,172.33,74.46Z" />
<path d="M170.33,35.56,181.77,47l-57.42,57.25L95.8,75.71l11.47-11.48,17.2,17.2Z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,30 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 650.02 154">
<defs>
<style>
.cls-1 {
fill: #eaf3f2;
}
.cls-2 {
fill: #63e5ff;
}
</style>
</defs>
<g id="ToToday">
<g id="Layer_7" data-name="Layer 7">
<path class="cls-1" d="M57.47,117.68H34.79v-91H.61V4h91V26.72H57.47Z" />
<path class="cls-1" d="M233.46,117.68H210.78v-91H176.6V4h91V26.72h-34.1Z" />
<path class="cls-1"
d="M349.31,74.46a45.6,45.6,0,0,1-3.41,17.72,44.32,44.32,0,0,1-9.27,14.2,43.54,43.54,0,0,1-13.76,9.44,43.18,43.18,0,0,1-33.78,0A43.48,43.48,0,0,1,266,92.18a45.78,45.78,0,0,1-3.41-17.72A46.5,46.5,0,0,1,266,56.54a43.92,43.92,0,0,1,9.32-14.24,43.2,43.2,0,0,1,13.8-9.39,41.88,41.88,0,0,1,16.85-3.41,44.52,44.52,0,0,1,16.93,3.21,41,41,0,0,1,13.76,9.12A43.21,43.21,0,0,1,345.9,56,47.92,47.92,0,0,1,349.31,74.46ZM321.16,91.19a22,22,0,0,0,4.64-7.29,27,27,0,0,0,0-18.92,22.4,22.4,0,0,0-4.64-7.29A19.86,19.86,0,0,0,314.3,53a22.28,22.28,0,0,0-16.73,0,19.52,19.52,0,0,0-6.82,4.68A22.22,22.22,0,0,0,286.19,65a25.77,25.77,0,0,0-1.66,9.48,24.52,24.52,0,0,0,1.66,9.12,22.86,22.86,0,0,0,4.56,7.29,21.19,21.19,0,0,0,6.82,4.88,20,20,0,0,0,8.37,1.79,21.15,21.15,0,0,0,8.36-1.67" />
<path class="cls-1"
d="M424.81-1V35.34a42.83,42.83,0,0,0-5-2.44,44.52,44.52,0,0,0-16.93-3.21A42.1,42.1,0,0,0,386,33.1a43.34,43.34,0,0,0-13.79,9.4,43.81,43.81,0,0,0-9.32,14.24,46.47,46.47,0,0,0-3.41,17.92,45.78,45.78,0,0,0,3.41,17.72A43.45,43.45,0,0,0,386,116a43.09,43.09,0,0,0,33.79,0,43.51,43.51,0,0,0,13.76-9.43,48.21,48.21,0,0,0,13-35.56V-1Zm-2.07,85.13a21.93,21.93,0,0,1-4.64,7.3,20.71,20.71,0,0,1-6.86,4.68,21.15,21.15,0,0,1-8.36,1.66A20,20,0,0,1,394.51,96a21.34,21.34,0,0,1-6.82-4.88,22.86,22.86,0,0,1-4.56-7.29,24.57,24.57,0,0,1-1.67-9.12,25.77,25.77,0,0,1,1.67-9.48,22.37,22.37,0,0,1,4.56-7.3,19.62,19.62,0,0,1,6.82-4.67,22.28,22.28,0,0,1,16.73,0,20,20,0,0,1,6.86,4.67,22.55,22.55,0,0,1,4.64,7.3,27,27,0,0,1,0,18.91Z" />
<path class="cls-1"
d="M548.42,119.1V78.31a48.16,48.16,0,0,0-13-35.56,43.43,43.43,0,0,0-13.76-9.44,43.07,43.07,0,0,0-33.78,0A43.48,43.48,0,0,0,464.71,57a45.78,45.78,0,0,0-3.41,17.72,46.5,46.5,0,0,0,3.41,17.92A43.93,43.93,0,0,0,474,106.82a43.18,43.18,0,0,0,13.8,9.4,42.08,42.08,0,0,0,16.85,3.41,44.48,44.48,0,0,0,16.93-3.21,43.61,43.61,0,0,0,5-2.43v5.11ZM526.25,74.67a25.36,25.36,0,0,1-1.7,9.48,22.67,22.67,0,0,1-4.64,7.29,20,20,0,0,1-6.86,4.68,22.28,22.28,0,0,1-16.73,0,19.42,19.42,0,0,1-6.82-4.68,22.32,22.32,0,0,1-4.56-7.29,25.77,25.77,0,0,1-1.67-9.48,24.53,24.53,0,0,1,1.67-9.12,23,23,0,0,1,4.56-7.3,21.21,21.21,0,0,1,6.82-4.87,19.93,19.93,0,0,1,8.36-1.79,21.24,21.24,0,0,1,8.37,1.67,20.82,20.82,0,0,1,6.86,4.68,22.14,22.14,0,0,1,4.64,7.29A25.45,25.45,0,0,1,526.25,74.67Z" />
<path class="cls-1"
d="M628.37,74.63a25.08,25.08,0,0,1-1.7,9.17A22.51,22.51,0,0,1,622,91.09a19.86,19.86,0,0,1-6.86,4.68,22.28,22.28,0,0,1-16.73,0,19.61,19.61,0,0,1-6.82-4.68,22.32,22.32,0,0,1-4.56-7.29,25.72,25.72,0,0,1-1.66-9.17s-.4-39.08-.07-44.47H563.1l.34,44.47a46.16,46.16,0,0,0,3.4,17.61,43.92,43.92,0,0,0,9.32,14.24,43.2,43.2,0,0,0,13.8,9.39,41.88,41.88,0,0,0,16.85,3.41,44.52,44.52,0,0,0,16.93-3.21,42.78,42.78,0,0,0,5-2.43V153h21.8V78a30.07,30.07,0,0,0,.09-3.33l-.3-44.47H628.09Z" />
<path class="cls-2"
d="M173.33,74.46a45.78,45.78,0,0,1-3.41,17.72,44.52,44.52,0,0,1-9.28,14.2,43.43,43.43,0,0,1-13.76,9.44,43.18,43.18,0,0,1-33.78,0A43.48,43.48,0,0,1,90,92.18a45.78,45.78,0,0,1-3.41-17.72A46.5,46.5,0,0,1,90,56.54,44.08,44.08,0,0,1,99.3,42.3a43.31,43.31,0,0,1,13.8-9.39A41.91,41.91,0,0,1,130,29.5a44.48,44.48,0,0,1,16.93,3.21,40.86,40.86,0,0,1,13.76,9.12A43.39,43.39,0,0,1,169.92,56,48.11,48.11,0,0,1,173.33,74.46Z" />
<path class="cls-1" d="M171.33,35.56,182.77,47l-57.42,57.25L96.8,75.71l11.47-11.48,17.2,17.2Z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

11
stylelint.config.js Normal file
View File

@@ -0,0 +1,11 @@
module.exports = {
customSyntax: 'postcss-html',
extends: [
'stylelint-config-standard',
'stylelint-config-recommended-vue',
'stylelint-config-prettier',
],
// add your custom config here
// https://stylelint.io/user-guide/configuration
rules: {},
}

21
tsconfig.json Normal file
View File

@@ -0,0 +1,21 @@
{
"compilerOptions": {
"target": "ES2018",
"module": "ESNext",
"moduleResolution": "Node",
"lib": ["ESNext", "ESNext.AsyncIterable", "DOM"],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"~/*": ["./*"],
"@/*": ["./*"]
},
"types": ["@nuxt/types", "@types/node"]
},
"exclude": ["node_modules", ".nuxt", "dist"]
}