mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-20 14:56:17 -04:00
feat: first tool base
This commit is contained in:
parent
b0e232bc77
commit
02dafd6a2f
15 changed files with 326 additions and 168 deletions
|
@ -10,6 +10,8 @@ module.exports = {
|
|||
],
|
||||
// add your custom rules here
|
||||
rules: {
|
||||
'space-before-function-paren': 'off'
|
||||
'space-before-function-paren': 'off',
|
||||
'object-curly-spacing': 'off',
|
||||
'no-undef': 'off' // will be catch by the tsc compiler
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,3 +2,4 @@
|
|||
//
|
||||
// The variables you want to modify
|
||||
// $font-size-root: 20px;
|
||||
|
||||
|
|
30
components/Tool.vue
Normal file
30
components/Tool.vue
Normal file
|
@ -0,0 +1,30 @@
|
|||
<script lang="ts">
|
||||
import {Component, Vue} from 'nuxt-property-decorator'
|
||||
import ToolWrapper from '~/components/ToolWrapper.vue';
|
||||
|
||||
interface ToolConfig {
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export {ToolConfig}
|
||||
|
||||
@Component({components: {ToolWrapper}})
|
||||
export default class Tool extends Vue {
|
||||
public isTool = true;
|
||||
public config: ToolConfig = {
|
||||
title: 'Tool',
|
||||
description: 'Tool description'
|
||||
}
|
||||
|
||||
public head() {
|
||||
const {title, description} = this.config
|
||||
|
||||
return {
|
||||
title,
|
||||
description
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
61
components/ToolWrapper.vue
Normal file
61
components/ToolWrapper.vue
Normal file
|
@ -0,0 +1,61 @@
|
|||
<template>
|
||||
<div class="tool-wrapper">
|
||||
<v-row no-gutters justify="center" align="center">
|
||||
<v-col cols="12" lg="6">
|
||||
<div class="tool-wrapper-info">
|
||||
<h1>{{ config.title }}</h1>
|
||||
<div class="spacer"></div>
|
||||
<div class="description">{{ config.description }}</div>
|
||||
</div>
|
||||
<v-card flat>
|
||||
<v-card-text class="pa-10">
|
||||
<slot></slot>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {Component, Prop, Vue} from 'nuxt-property-decorator'
|
||||
import {ToolConfig} from '~/components/Tool.vue'
|
||||
|
||||
@Component
|
||||
export default class ToolWrapper extends Vue {
|
||||
@Prop() config!: ToolConfig;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.tool-wrapper {
|
||||
height: 100%;
|
||||
|
||||
.tool-wrapper-info{
|
||||
padding: 50px 0 30px;
|
||||
}
|
||||
|
||||
.category {
|
||||
color: #546167;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: 300;
|
||||
font-size: 50px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.spacer{
|
||||
width: 130px;
|
||||
height: 1px;
|
||||
background-color: var(--v-primary-base);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.description {
|
||||
color: #829097;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -2,11 +2,21 @@
|
|||
<v-app dark>
|
||||
<v-navigation-drawer
|
||||
v-model="drawer"
|
||||
:mini-variant="miniVariant"
|
||||
:clipped="clipped"
|
||||
fixed
|
||||
app
|
||||
>
|
||||
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis corporis cumque dolore esse eveniet
|
||||
exercitationem explicabo ipsa libero necessitatibus numquam optio pariatur, perferendis placeat porro ullam vel
|
||||
velit voluptas voluptates?
|
||||
</div>
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320">
|
||||
<path fill="#eee" fill-opacity="1"
|
||||
d="M0,160L26.7,133.3C53.3,107,107,53,160,58.7C213.3,64,267,128,320,176C373.3,224,427,256,480,250.7C533.3,245,587,203,640,186.7C693.3,171,747,181,800,186.7C853.3,192,907,192,960,186.7C1013.3,181,1067,171,1120,176C1173.3,181,1227,203,1280,192C1333.3,181,1387,139,1413,117.3L1440,96L1440,0L1413.3,0C1386.7,0,1333,0,1280,0C1226.7,0,1173,0,1120,0C1066.7,0,1013,0,960,0C906.7,0,853,0,800,0C746.7,0,693,0,640,0C586.7,0,533,0,480,0C426.7,0,373,0,320,0C266.7,0,213,0,160,0C106.7,0,53,0,27,0L0,0Z"></path>
|
||||
<path fill="#05e677" fill-opacity="1"
|
||||
d="M0,224L26.7,218.7C53.3,213,107,203,160,213.3C213.3,224,267,256,320,266.7C373.3,277,427,267,480,256C533.3,245,587,235,640,208C693.3,181,747,139,800,106.7C853.3,75,907,53,960,69.3C1013.3,85,1067,139,1120,181.3C1173.3,224,1227,256,1280,266.7C1333.3,277,1387,267,1413,261.3L1440,256L1440,0L1413.3,0C1386.7,0,1333,0,1280,0C1226.7,0,1173,0,1120,0C1066.7,0,1013,0,960,0C906.7,0,853,0,800,0C746.7,0,693,0,640,0C586.7,0,533,0,480,0C426.7,0,373,0,320,0C266.7,0,213,0,160,0C106.7,0,53,0,27,0L0,0Z"></path>
|
||||
</svg>
|
||||
|
||||
<v-list>
|
||||
<v-list-item
|
||||
v-for="(item, i) in items"
|
||||
|
@ -14,80 +24,87 @@
|
|||
:to="item.to"
|
||||
router
|
||||
exact
|
||||
dense
|
||||
>
|
||||
<v-list-item-action>
|
||||
<v-icon>{{ item.icon }}</v-icon>
|
||||
</v-list-item-action>
|
||||
<v-list-item-content>
|
||||
<v-list-item-title v-text="item.title" />
|
||||
<v-list-item-title v-text="item.title"/>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-navigation-drawer>
|
||||
<v-app-bar :clipped-left="clipped" fixed app>
|
||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer" />
|
||||
<v-btn icon @click.stop="miniVariant = !miniVariant">
|
||||
<v-icon>mdi-{{ `chevron-${miniVariant ? 'right' : 'left'}` }}</v-icon>
|
||||
</v-btn>
|
||||
<v-btn icon @click.stop="clipped = !clipped">
|
||||
<v-icon>mdi-application</v-icon>
|
||||
</v-btn>
|
||||
<v-btn icon @click.stop="fixed = !fixed">
|
||||
<v-icon>mdi-minus</v-icon>
|
||||
</v-btn>
|
||||
<v-toolbar-title v-text="title" />
|
||||
<v-spacer />
|
||||
<v-btn icon @click.stop="rightDrawer = !rightDrawer">
|
||||
<v-icon>mdi-menu</v-icon>
|
||||
</v-btn>
|
||||
|
||||
<v-app-bar
|
||||
app
|
||||
flat
|
||||
height="60px"
|
||||
>
|
||||
<v-app-bar-nav-icon @click.stop="drawer = !drawer"/>
|
||||
<v-toolbar-title v-text="title"/>
|
||||
<v-spacer/>
|
||||
</v-app-bar>
|
||||
|
||||
<v-main>
|
||||
<v-container>
|
||||
<nuxt />
|
||||
<nuxt/>
|
||||
</v-container>
|
||||
</v-main>
|
||||
<v-navigation-drawer v-model="rightDrawer" :right="right" temporary fixed>
|
||||
<v-list>
|
||||
<v-list-item @click.native="right = !right">
|
||||
<v-list-item-action>
|
||||
<v-icon light>
|
||||
mdi-repeat
|
||||
</v-icon>
|
||||
</v-list-item-action>
|
||||
<v-list-item-title>Switch drawer (click me)</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-navigation-drawer>
|
||||
<v-footer :absolute="!fixed" app>
|
||||
<span>© {{ new Date().getFullYear() }}</span>
|
||||
</v-footer>
|
||||
<!-- <v-footer app>-->
|
||||
<!-- <span>© {{ new Date().getFullYear() }}</span>-->
|
||||
<!-- </v-footer>-->
|
||||
</v-app>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
clipped: false,
|
||||
drawer: false,
|
||||
fixed: false,
|
||||
items: [
|
||||
{
|
||||
icon: 'mdi-apps',
|
||||
title: 'Welcome',
|
||||
to: '/'
|
||||
},
|
||||
{
|
||||
icon: 'mdi-chart-bubble',
|
||||
title: 'Inspire',
|
||||
to: '/inspire'
|
||||
}
|
||||
],
|
||||
miniVariant: false,
|
||||
right: true,
|
||||
rightDrawer: false,
|
||||
title: 'Vuetify.js'
|
||||
<script lang="ts">
|
||||
import {Component, Vue} from 'nuxt-property-decorator';
|
||||
|
||||
@Component
|
||||
export default class DefaultLayout extends Vue {
|
||||
title = 'IT - Tools'
|
||||
drawer = false
|
||||
items = [
|
||||
{
|
||||
icon: 'mdi-apps',
|
||||
title: 'Welcome',
|
||||
to: '/'
|
||||
},
|
||||
{
|
||||
icon: 'mdi-apps',
|
||||
title: 'Token generator',
|
||||
to: '/crypto/TokenGenerator'
|
||||
},
|
||||
{
|
||||
icon: 'mdi-chart-bubble',
|
||||
title: 'Inspire',
|
||||
to: '/inspire'
|
||||
}
|
||||
]
|
||||
|
||||
created() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
|
||||
.v-application {
|
||||
background-color: var(--v-background-base, #121212) !important;
|
||||
}
|
||||
|
||||
.theme--dark {
|
||||
.v-card,
|
||||
.v-footer,
|
||||
.v-navigation-drawer,
|
||||
.v-app-bar.v-toolbar.v-sheet {
|
||||
background-color: var(--v-foreground-base, #121212) !important;
|
||||
}
|
||||
|
||||
.v-footer,
|
||||
.v-app-bar.v-toolbar.v-sheet {
|
||||
background-color: var(--v-toolbar-base, #121212) !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
18
mixins/copyable.ts
Normal file
18
mixins/copyable.ts
Normal file
|
@ -0,0 +1,18 @@
|
|||
const copyToClipboard = (text: string) => {
|
||||
const input = document.createElement('textarea')
|
||||
input.innerHTML = text
|
||||
document.body.appendChild(input)
|
||||
input.select()
|
||||
const result = document.execCommand('copy')
|
||||
document.body.removeChild(input)
|
||||
return result
|
||||
}
|
||||
|
||||
export const copyable = {
|
||||
methods: {
|
||||
copy(text: string, toastText = 'Copied to clipboard !') {
|
||||
copyToClipboard(text)
|
||||
this.$toast.success(toastText)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
import colors from 'vuetify/es5/util/colors'
|
||||
|
||||
export default {
|
||||
// Disable server-side rendering (https://go.nuxtjs.dev/ssr-mode)
|
||||
ssr: false,
|
||||
// Enable server-side rendering (https://go.nuxtjs.dev/ssr-mode)
|
||||
ssr: true,
|
||||
|
||||
// Target (https://go.nuxtjs.dev/config-target)
|
||||
target: 'static',
|
||||
|
@ -50,17 +50,22 @@ export default {
|
|||
// Vuetify module configuration (https://go.nuxtjs.dev/config-vuetify)
|
||||
vuetify: {
|
||||
customVariables: ['~/assets/variables.scss'],
|
||||
treeShake: true,
|
||||
theme: {
|
||||
dark: true,
|
||||
options: { customProperties: true },
|
||||
themes: {
|
||||
dark: {
|
||||
primary: colors.blue.darken2,
|
||||
primary: '#05e677',
|
||||
accent: colors.grey.darken3,
|
||||
secondary: colors.amber.darken3,
|
||||
info: colors.teal.lighten1,
|
||||
warning: colors.amber.base,
|
||||
error: colors.deepOrange.accent4,
|
||||
success: colors.green.accent3
|
||||
success: colors.green.accent3,
|
||||
background: '#324148',
|
||||
foreground: '#28353b',
|
||||
toolbar: '#243137'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
41
package-lock.json
generated
41
package-lock.json
generated
|
@ -3968,9 +3968,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.21.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz",
|
||||
"integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==",
|
||||
"version": "0.21.1",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
|
||||
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
|
||||
"requires": {
|
||||
"follow-redirects": "^1.10.0"
|
||||
}
|
||||
|
@ -11612,6 +11612,18 @@
|
|||
"@nuxt/webpack": "2.14.12"
|
||||
}
|
||||
},
|
||||
"nuxt-property-decorator": {
|
||||
"version": "2.9.1",
|
||||
"resolved": "https://registry.npmjs.org/nuxt-property-decorator/-/nuxt-property-decorator-2.9.1.tgz",
|
||||
"integrity": "sha512-dE2GrrGKZMhv0dHAr+Lmj+JOQfjIouINgF58QNRDFNOZXMJrXxKO5zGqvCRwmx3hxqqwht7TXHdz9w1AnvL2IA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"vue-class-component": "^7.2.6",
|
||||
"vue-property-decorator": "^9.0.0",
|
||||
"vuex-class": "^0.3.2",
|
||||
"vuex-module-decorators": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"nwsapi": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
|
||||
|
@ -15823,6 +15835,12 @@
|
|||
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
|
||||
"integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
|
||||
},
|
||||
"vue-class-component": {
|
||||
"version": "7.2.6",
|
||||
"resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz",
|
||||
"integrity": "sha512-+eaQXVrAm/LldalI272PpDe3+i4mPis0ORiMYxF6Ae4hyuCh15W8Idet7wPUEs4N4YptgFHGys4UrgNQOMyO6w==",
|
||||
"dev": true
|
||||
},
|
||||
"vue-client-only": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/vue-client-only/-/vue-client-only-2.0.0.tgz",
|
||||
|
@ -16071,11 +16089,28 @@
|
|||
"loader-utils": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"vuetify-toast-snackbar": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/vuetify-toast-snackbar/-/vuetify-toast-snackbar-0.6.1.tgz",
|
||||
"integrity": "sha512-F2bLPMXiw7qQgX68adSu0zQrMTKODN5JAzCP8AP/HGhz/Bz1z24QbvYcX0fyHnG/yP6PAPkpMCXsLQSq6HV0Ag=="
|
||||
},
|
||||
"vuex": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.0.tgz",
|
||||
"integrity": "sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ=="
|
||||
},
|
||||
"vuex-class": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/vuex-class/-/vuex-class-0.3.2.tgz",
|
||||
"integrity": "sha512-m0w7/FMsNcwJgunJeM+wcNaHzK2KX1K1rw2WUQf7Q16ndXHo7pflRyOV/E8795JO/7fstyjH3EgqBI4h4n4qXQ==",
|
||||
"dev": true
|
||||
},
|
||||
"vuex-module-decorators": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/vuex-module-decorators/-/vuex-module-decorators-1.0.1.tgz",
|
||||
"integrity": "sha512-FLWZsXV5XAtl/bcKUyQFpnSBtpc3wK/7zSdy9oKbyp71mZd4ut5y2zSd219wWW9OG7WUOlVwac4rXFFDVnq7ug==",
|
||||
"dev": true
|
||||
},
|
||||
"w3c-hr-time": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
"@nuxtjs/axios": "^5.12.2",
|
||||
"@nuxtjs/pwa": "^3.0.2",
|
||||
"core-js": "^3.6.5",
|
||||
"nuxt": "^2.14.6"
|
||||
"nuxt": "^2.14.6",
|
||||
"vuetify-toast-snackbar": "^0.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nuxt/types": "^2.14.6",
|
||||
|
@ -36,8 +37,8 @@
|
|||
"jest": "^26.5.0",
|
||||
"less": "^4.0.0",
|
||||
"less-loader": "^7.1.0",
|
||||
"nuxt-property-decorator": "^2.9.1",
|
||||
"ts-jest": "^26.4.1",
|
||||
"vue-jest": "^3.0.4",
|
||||
"vue-property-decorator": "^9.1.2"
|
||||
"vue-jest": "^3.0.4"
|
||||
}
|
||||
}
|
||||
|
|
79
pages/crypto/TokenGenerator.vue
Normal file
79
pages/crypto/TokenGenerator.vue
Normal file
|
@ -0,0 +1,79 @@
|
|||
<template>
|
||||
<ToolWrapper :config="config">
|
||||
<v-row no-gutters>
|
||||
<v-col lg="6" md="12">
|
||||
<v-switch v-model="withLowercase" label="Lowercase (abc...)" />
|
||||
<v-switch v-model="withUppercase" label="Uppercase (ABC...)" />
|
||||
</v-col>
|
||||
<v-col lg="6" md="12">
|
||||
<v-switch v-model="withNumbers" label="Numbers (123...)" />
|
||||
<v-switch v-model="withSpecials" label="Specials (#]-...)" />
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-slider v-model="length" :label="`Length (${length})`" min="1" max="256" />
|
||||
|
||||
<v-textarea v-model="token" outlined />
|
||||
|
||||
<div class="text-center">
|
||||
<v-btn depressed class="mr-4" @click="refreshToken()">
|
||||
Refresh
|
||||
</v-btn>
|
||||
<!-- <v-btn @click="copyToken()" depressed>Copy token</v-btn>-->
|
||||
</div>
|
||||
</ToolWrapper>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import {Component} from 'nuxt-property-decorator'
|
||||
import Tool, {ToolConfig} from '~/components/Tool.vue'
|
||||
|
||||
const shuffle = (s: string) => s.split('').sort(() => 0.5 - Math.random()).join('')
|
||||
const lowercase = 'abcdefghijklmopqrstuvwxyz'
|
||||
const uppercase = 'ABCDEFGHIJKLMOPQRSTUVWXYZ'
|
||||
const numbers = '0123456789'
|
||||
const specials = '.,;:!?./-"\'#{([-|\\@)]=}*+'
|
||||
|
||||
@Component
|
||||
export default class TokenGenerator extends Tool {
|
||||
config: ToolConfig = {
|
||||
title: 'Token generator',
|
||||
description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Delectus distinctio dolor dolorum eaque eligendi, facilis impedit laboriosam odit placeat.'
|
||||
}
|
||||
|
||||
withNumbers = true;
|
||||
withLowercase = true;
|
||||
withUppercase = true;
|
||||
withSpecials = false;
|
||||
length = 64;
|
||||
refreshBool = true;
|
||||
|
||||
refreshToken() {
|
||||
this.refreshBool = !this.refreshBool
|
||||
}
|
||||
|
||||
get token() {
|
||||
if (this.refreshBool) { (() => {})() } // To force recomputation
|
||||
|
||||
let result = ''
|
||||
if (this.withLowercase) {
|
||||
result += lowercase
|
||||
}
|
||||
if (this.withUppercase) {
|
||||
result += uppercase
|
||||
}
|
||||
if (this.withNumbers) {
|
||||
result += numbers
|
||||
}
|
||||
if (this.withSpecials) {
|
||||
result += specials
|
||||
}
|
||||
|
||||
return shuffle(result.repeat(this.length)).substring(0, this.length)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -1,78 +1,7 @@
|
|||
<template>
|
||||
<v-row justify="center" align="center">
|
||||
<v-col cols="12" sm="8" md="6">
|
||||
<div class="text-center"/>
|
||||
<v-card>
|
||||
<v-card-title class="headline">
|
||||
Welcome to the Vuetify + Nuxt.js template
|
||||
</v-card-title>
|
||||
<v-card-text>
|
||||
|
||||
<p>
|
||||
Vuetify is a progressive Material Design component framework for
|
||||
Vue.js. It was designed to empower developers to create amazing
|
||||
applications.
|
||||
</p>
|
||||
<p>
|
||||
For more information on Vuetify, check out the
|
||||
<a
|
||||
href="https://vuetifyjs.com"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
documentation </a>.
|
||||
</p>
|
||||
<p>
|
||||
If you have questions, please join the official
|
||||
<a
|
||||
href="https://chat.vuetifyjs.com/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="chat"
|
||||
>
|
||||
discord </a>.
|
||||
</p>
|
||||
<p>
|
||||
Find a bug? Report it on the github
|
||||
<a
|
||||
href="https://github.com/vuetifyjs/vuetify/issues"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
title="contribute"
|
||||
>
|
||||
issue board </a>.
|
||||
</p>
|
||||
<p>
|
||||
Thank you for developing with Vuetify and I look forward to bringing
|
||||
more exciting features in the future.
|
||||
</p>
|
||||
<div class="text-xs-right">
|
||||
<em><small>— John Leider</small></em>
|
||||
</div>
|
||||
<hr class="my-3">
|
||||
<a
|
||||
href="https://nuxtjs.org/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
Nuxt Documentation
|
||||
</a>
|
||||
<br>
|
||||
<a
|
||||
href="https://github.com/nuxt/nuxt.js"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
Nuxt GitHub
|
||||
</a>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer/>
|
||||
<v-btn color="primary" nuxt to="/inspire">
|
||||
Continue
|
||||
</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
<v-col cols="12" sm="12" md="8">
|
||||
<h1>Yolo</h1>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
<template>
|
||||
<v-row>
|
||||
<v-col class="text-center">
|
||||
<img src="/v.png" alt="Vuetify.js" class="mb-5">
|
||||
<blockquote class="blockquote">
|
||||
“First, solve the problem. Then, write the code.”
|
||||
<footer>
|
||||
<small>
|
||||
<em>—John Johnson</em>
|
||||
</small>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</template>
|
|
@ -1,11 +0,0 @@
|
|||
# STATIC
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
||||
This directory contains your static files.
|
||||
Each file inside this directory is mapped to `/`.
|
||||
Thus you'd want to delete this README.md before deploying to production.
|
||||
|
||||
Example: `/static/robots.txt` is mapped as `/robots.txt`.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).
|
4
static/humans.txt
Normal file
4
static/humans.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
/* TEAM */
|
||||
Developer: Corentin Thomasset
|
||||
Site: https://github.com/CorentinTh
|
||||
Twitter: @cthmsst
|
2
static/robots.txt
Normal file
2
static/robots.txt
Normal file
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Disallow:
|
Loading…
Add table
Add a link
Reference in a new issue