mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-24 09:50:39 +00:00
landing page
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<div class="page-title left" :class="type">
|
||||
<h1 class="title" v-html="title"></h1>
|
||||
<h2 class="description" v-if="description">
|
||||
{{ description }}
|
||||
</h2>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'IndexPageTile',
|
||||
props: ['title', 'description', 'type']
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.page-title {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
||||
&.center {
|
||||
text-align: center;
|
||||
|
||||
.title {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 780px;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
max-width: 580px;
|
||||
font-size: 48px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 15px;
|
||||
|
||||
/deep/ span {
|
||||
font-size: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
max-width: 580px;
|
||||
@include font-size(20);
|
||||
font-weight: 500;
|
||||
line-height: 1.65;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
.page-title {
|
||||
|
||||
.title {
|
||||
max-width: 100%;
|
||||
font-size: 28px;
|
||||
line-height: 1.25;
|
||||
margin-bottom: 15px;
|
||||
|
||||
/deep/ span {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
max-width: 100%;
|
||||
@include font-size(16);
|
||||
line-height: 1.6;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,141 @@
|
||||
<template>
|
||||
<div class="plans-wrapper" v-if="plans">
|
||||
<article class="plan" v-for="(plan, i) in plans" :key="i">
|
||||
<div class="plan-wrapper">
|
||||
<header class="plan-header">
|
||||
<div class="icon">
|
||||
<hard-drive-icon size="26"></hard-drive-icon>
|
||||
</div>
|
||||
<h1 class="title">{{ plan.data.attributes.name }}</h1>
|
||||
<h2 class="description">{{ plan.data.attributes.description }}</h2>
|
||||
</header>
|
||||
<section class="plan-features">
|
||||
<b class="storage-size">{{ plan.data.attributes.capacity_formatted }}</b>
|
||||
<span class="storage-description">Of Storage Capacity</span>
|
||||
</section>
|
||||
<footer class="plan-footer">
|
||||
<b class="price">
|
||||
{{ plan.data.attributes.price }}/Mo.
|
||||
</b>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {HardDriveIcon} from "vue-feather-icons"
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'PricingTables',
|
||||
components: {
|
||||
HardDriveIcon,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
plans: undefined,
|
||||
}
|
||||
},
|
||||
created() {
|
||||
axios.get('/api/public/pricing')
|
||||
.then(response => {
|
||||
this.plans = response.data
|
||||
this.$emit('load', false)
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.plans-wrapper {
|
||||
box-shadow: 0 7px 20px 5px hsla(220, 36%, 16%, 0.05);
|
||||
border-radius: 8px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.plan {
|
||||
text-align: center;
|
||||
flex: 0 0 33%;
|
||||
padding: 55px 25px 75px;
|
||||
border-right: 1px solid #F7F7F7;
|
||||
|
||||
&:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.plan-header {
|
||||
|
||||
.icon {
|
||||
path, line, polyline, rect, circle {
|
||||
color: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
@include font-size(22);
|
||||
font-weight: 800;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.description {
|
||||
@include font-size(14);
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.plan-features {
|
||||
margin: 55px 0;
|
||||
|
||||
.storage-size {
|
||||
@include font-size(48);
|
||||
font-weight: 900;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.storage-description {
|
||||
display: block;
|
||||
@include font-size(15);
|
||||
font-weight: 800;
|
||||
}
|
||||
}
|
||||
|
||||
.plan-footer {
|
||||
|
||||
.sign-in-button {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.price {
|
||||
color: $theme;
|
||||
@include font-size(18);
|
||||
display: block;
|
||||
padding-top: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.plans-wrapper {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: 0 -25px;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
|
||||
.plans-wrapper {
|
||||
display: block;
|
||||
margin: 0;
|
||||
|
||||
.plan {
|
||||
padding: 30px 25px;
|
||||
border-bottom: 1px solid #F7F7F7;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,322 @@
|
||||
<template>
|
||||
<div class="page-wrapper large get-started">
|
||||
|
||||
<PageTitle
|
||||
class="page-title"
|
||||
type="center"
|
||||
title="Ready to Get <span style='color: #41B883'>Started</span><br> With Us?"
|
||||
description="Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Trully freedom."
|
||||
></PageTitle>
|
||||
|
||||
<router-link tag="button" class="get-started-button" :to="{name: 'SignUp'}">
|
||||
<span class="content">Get Started</span>
|
||||
<chevron-right-icon size="22"></chevron-right-icon>
|
||||
</router-link>
|
||||
|
||||
<cloud-icon size="790" class="cloud-bg"></cloud-icon>
|
||||
|
||||
<div class="icons">
|
||||
<hard-drive-icon size="42" class="icon"></hard-drive-icon>
|
||||
<settings-icon size="22" class="icon"></settings-icon>
|
||||
<image-icon size="50" class="icon"></image-icon>
|
||||
<link-icon size="24" class="icon"></link-icon>
|
||||
<trash2-icon size="40" class="icon"></trash2-icon>
|
||||
<search-icon size="18" class="icon"></search-icon>
|
||||
<eye-icon size="36" class="icon"></eye-icon>
|
||||
<star-icon size="34" class="icon"></star-icon>
|
||||
<folder-plus-icon size="20" class="icon"></folder-plus-icon>
|
||||
<grid-icon size="28" class="icon"></grid-icon>
|
||||
<share-icon size="32" class="icon"></share-icon>
|
||||
<folder-plus-icon size="48" class="icon"></folder-plus-icon>
|
||||
<search-icon size="34" class="icon"></search-icon>
|
||||
<star-icon size="22" class="icon"></star-icon>
|
||||
<upload-cloud-icon size="42" class="icon"></upload-cloud-icon>
|
||||
<grid-icon size="18" class="icon"></grid-icon>
|
||||
<settings-icon size="32" class="icon"></settings-icon>
|
||||
<link-icon size="36" class="icon"></link-icon>
|
||||
<hard-drive-icon size="22" class="icon"></hard-drive-icon>
|
||||
<info-icon size="36" class="icon"></info-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PageTitle from '@/components/Index/Components/PageTitle'
|
||||
import {
|
||||
ChevronRightIcon,
|
||||
FolderPlusIcon,
|
||||
HardDriveIcon,
|
||||
SettingsIcon,
|
||||
Trash2Icon,
|
||||
SearchIcon,
|
||||
CloudIcon,
|
||||
ImageIcon,
|
||||
GridIcon,
|
||||
LinkIcon,
|
||||
StarIcon,
|
||||
EyeIcon,
|
||||
} from 'vue-feather-icons'
|
||||
import ShareIcon from "vue-feather-icons/icons/ShareIcon";
|
||||
import UploadCloudIcon from "vue-feather-icons/icons/UploadCloudIcon";
|
||||
import InfoIcon from "vue-feather-icons/icons/InfoIcon";
|
||||
|
||||
export default {
|
||||
name: 'IndexGetStarted',
|
||||
components: {
|
||||
InfoIcon,
|
||||
UploadCloudIcon,
|
||||
ShareIcon,
|
||||
ChevronRightIcon,
|
||||
FolderPlusIcon,
|
||||
HardDriveIcon,
|
||||
SettingsIcon,
|
||||
Trash2Icon,
|
||||
SearchIcon,
|
||||
CloudIcon,
|
||||
PageTitle,
|
||||
ImageIcon,
|
||||
GridIcon,
|
||||
LinkIcon,
|
||||
StarIcon,
|
||||
EyeIcon,
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.icons {
|
||||
|
||||
.icon {
|
||||
position: absolute;
|
||||
|
||||
&:nth-child(20) {
|
||||
bottom: -37%;
|
||||
left: 37%;
|
||||
transform: rotate(0deg);
|
||||
|
||||
circle, line {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(19) {
|
||||
bottom: -21%;
|
||||
left: 23.5%;
|
||||
transform: rotate(-20deg);
|
||||
|
||||
path, line {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(18) {
|
||||
bottom: -4%;
|
||||
left: 26.5%;
|
||||
transform: rotate(0deg);
|
||||
|
||||
path {
|
||||
stroke: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(17) {
|
||||
bottom: -5%;
|
||||
left: 8.5%;
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
&:nth-child(16) {
|
||||
top: 86%;
|
||||
left: 17%;
|
||||
transform: rotate(18deg);
|
||||
}
|
||||
|
||||
&:nth-child(15) {
|
||||
top: 64%;
|
||||
left: 17%;
|
||||
transform: rotate(0deg);
|
||||
|
||||
polyline, line, path {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(14) {
|
||||
top: 44%;
|
||||
left: 28%;
|
||||
transform: rotate(0deg);
|
||||
|
||||
polygon {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(13) {
|
||||
top: 33%;
|
||||
left: 16%;
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
&:nth-child(12) {
|
||||
top: 23%;
|
||||
left: 32%;
|
||||
transform: rotate(13deg);
|
||||
|
||||
line, path {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(1) {
|
||||
top: 35%;
|
||||
right: 49%;
|
||||
transform: rotate(-11deg);
|
||||
|
||||
line, path {
|
||||
stroke: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
top: 12%;
|
||||
right: 45%;
|
||||
transform: rotate(0);
|
||||
|
||||
circle, path {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
top: 30%;
|
||||
right: 30%;
|
||||
transform: rotate(20deg);
|
||||
}
|
||||
|
||||
&:nth-child(4) {
|
||||
top: 14%;
|
||||
right: 14.5%;
|
||||
transform: rotate(-1deg);
|
||||
}
|
||||
|
||||
&:nth-child(5) {
|
||||
top: 62%;
|
||||
right: 15.5%;
|
||||
transform: rotate(21deg);
|
||||
|
||||
polyline, path, line {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(6) {
|
||||
top: 66%;
|
||||
right: 26.5%;
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
&:nth-child(7) {
|
||||
bottom: 3%;
|
||||
right: 21.5%;
|
||||
transform: rotate(16deg);
|
||||
}
|
||||
|
||||
&:nth-child(8) {
|
||||
bottom: -13%;
|
||||
right: 16.5%;
|
||||
transform: rotate(0deg);
|
||||
|
||||
polygon {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(9) {
|
||||
bottom: -32%;
|
||||
right: 27%;
|
||||
transform: rotate(-20deg);
|
||||
}
|
||||
|
||||
&:nth-child(10) {
|
||||
bottom: -5%;
|
||||
right: 34%;
|
||||
transform: rotate(16deg);
|
||||
|
||||
rect {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(11) {
|
||||
bottom: -28%;
|
||||
right: 44%;
|
||||
transform: rotate(-12deg);
|
||||
|
||||
polyline, line, path {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.cloud-bg {
|
||||
z-index: 0;
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
right: 60px;
|
||||
transform: scale(-1, 1) rotate(13deg);
|
||||
|
||||
path {
|
||||
stroke: none;
|
||||
fill: rgba($theme, 0.05);
|
||||
}
|
||||
}
|
||||
|
||||
.page-title {
|
||||
padding-top: 340px;
|
||||
}
|
||||
|
||||
.get-started-button {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: none;
|
||||
outline: none;
|
||||
border: none;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
cursor: pointer;
|
||||
background: rgba($theme, 0.8);
|
||||
padding: 20px 36px;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 5px 10px 2px rgba($theme, 0.34);
|
||||
margin-bottom: 395px;
|
||||
@include transition(150ms);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 7px 16px 2px rgba($theme, 0.4);
|
||||
background: rgba($theme, 1);
|
||||
}
|
||||
|
||||
.content {
|
||||
@include font-size(19);
|
||||
font-weight: 700;
|
||||
margin-right: 8px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
polyline {
|
||||
stroke: white;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 690px) {
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,198 @@
|
||||
<template>
|
||||
<div class="page-wrapper large hero-screenshot">
|
||||
<img src="/assets/images/vuefilemanager-screenshot.png" alt="VueFileManager screenshot">
|
||||
|
||||
<div class="icons">
|
||||
<link-icon size="20" class="icon"></link-icon>
|
||||
<image-icon size="38" class="icon"></image-icon>
|
||||
<hard-drive-icon size="34" class="icon"></hard-drive-icon>
|
||||
<folder-plus-icon size="40" class="icon"></folder-plus-icon>
|
||||
<settings-icon size="18" class="icon"></settings-icon>
|
||||
<search-icon size="24" class="icon"></search-icon>
|
||||
<star-icon size="18" class="icon"></star-icon>
|
||||
<trash2-icon size="32" class="icon"></trash2-icon>
|
||||
<search-icon size="18" class="icon"></search-icon>
|
||||
<eye-icon size="30" class="icon"></eye-icon>
|
||||
<star-icon size="30" class="icon"></star-icon>
|
||||
<folder-plus-icon size="16" class="icon"></folder-plus-icon>
|
||||
<grid-icon size="20" class="icon"></grid-icon>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
FolderPlusIcon,
|
||||
HardDriveIcon,
|
||||
SettingsIcon,
|
||||
Trash2Icon,
|
||||
SearchIcon,
|
||||
ImageIcon,
|
||||
GridIcon,
|
||||
LinkIcon,
|
||||
StarIcon,
|
||||
EyeIcon,
|
||||
} from 'vue-feather-icons'
|
||||
|
||||
export default {
|
||||
name: 'IndexNavigation',
|
||||
components: {
|
||||
FolderPlusIcon,
|
||||
HardDriveIcon,
|
||||
SettingsIcon,
|
||||
Trash2Icon,
|
||||
SearchIcon,
|
||||
ImageIcon,
|
||||
GridIcon,
|
||||
LinkIcon,
|
||||
StarIcon,
|
||||
EyeIcon,
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.icons {
|
||||
|
||||
.icon {
|
||||
position: absolute;
|
||||
|
||||
&:nth-child(1) {
|
||||
top: -14%;
|
||||
right: 2%;
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
top: -5%;
|
||||
right: 14%;
|
||||
transform: rotate(19deg);
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
top: -6.5%;
|
||||
right: 28.5%;
|
||||
transform: rotate(-12deg);
|
||||
|
||||
line, path {
|
||||
stroke: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(4) {
|
||||
top: -9.5%;
|
||||
right: 41.5%;
|
||||
transform: rotate(13deg);
|
||||
|
||||
path, line {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(5) {
|
||||
top: -16%;
|
||||
right: 26%;
|
||||
|
||||
circle, path {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(6) {
|
||||
top: -13%;
|
||||
right: 49%;
|
||||
}
|
||||
|
||||
&:nth-child(7) {
|
||||
top: 2.5%;
|
||||
right: 46%;
|
||||
|
||||
polygon {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(8) {
|
||||
top: 13%;
|
||||
right: 2.5%;
|
||||
transform: rotate(22deg);
|
||||
|
||||
polyline, path, line {
|
||||
stroke: $red;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(9) {
|
||||
top: 14%;
|
||||
right: 11%;
|
||||
|
||||
circle, line {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(10) {
|
||||
top: 29%;
|
||||
right: 7%;
|
||||
transform: rotate(19deg);
|
||||
}
|
||||
|
||||
&:nth-child(11) {
|
||||
top: 38%;
|
||||
right: 3%;
|
||||
|
||||
polygon {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(12) {
|
||||
top: 50%;
|
||||
right: 11.5%;
|
||||
transform: rotate(-22deg);
|
||||
}
|
||||
|
||||
&:nth-child(13) {
|
||||
top: 34%;
|
||||
right: 16%;
|
||||
transform: rotate(13deg);
|
||||
|
||||
rect {
|
||||
stroke: $theme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hero-screenshot {
|
||||
padding-top: 75px;
|
||||
padding-bottom: 130px;
|
||||
|
||||
img {
|
||||
border-radius: 8px;
|
||||
max-width: 1165px;
|
||||
box-shadow: 0 7px 255px rgba(#19363C, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1390px) and (min-width: 1190px) {
|
||||
.hero-screenshot {
|
||||
|
||||
img {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1190px) {
|
||||
.hero-screenshot {
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<section class="main-features page-wrapper medium">
|
||||
<PageTitle
|
||||
type="center"
|
||||
title="The Fastest Growing <span style='color: #41B883'>File Manager</span><br> on the CodeCanyon Market"
|
||||
description="Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Trully freedom."
|
||||
></PageTitle>
|
||||
<div class="content">
|
||||
<div class="hero">
|
||||
<img src="/assets/images/hero-Illustration.svg" alt="Hero">
|
||||
</div>
|
||||
<div class="features">
|
||||
<div class="feature">
|
||||
<div class="icon">
|
||||
<cloud-icon size="24"></cloud-icon>
|
||||
</div>
|
||||
<h3 class="title">
|
||||
Truly Freedom
|
||||
</h3>
|
||||
<p class="description">
|
||||
You have full control over VueFileManager, no third authorities will control your service or usage, only you.
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<div class="icon">
|
||||
<user-icon size="24"></user-icon>
|
||||
</div>
|
||||
<h3 class="title">
|
||||
The Sky is the Limit
|
||||
</h3>
|
||||
<p class="description">
|
||||
VueFileManager is cloud storage software. You have to install and running application on your own server hosting.
|
||||
</p>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<div class="icon">
|
||||
<hard-drive-icon size="24"></hard-drive-icon>
|
||||
</div>
|
||||
<h3 class="title">
|
||||
No Monthly Fees
|
||||
</h3>
|
||||
<p class="description">
|
||||
When you running VueFileManager on your own server hosting, anybody can't control your content or resell your user data. Your data is safe.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PageTitle from '@/components/Index/Components/PageTitle'
|
||||
import { UserIcon, CloudIcon, HardDriveIcon } from 'vue-feather-icons'
|
||||
|
||||
export default {
|
||||
name: 'IndexMainFeatures',
|
||||
components: {
|
||||
PageTitle,
|
||||
HardDriveIcon,
|
||||
CloudIcon,
|
||||
UserIcon,
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.features {
|
||||
padding-left: 75px;
|
||||
|
||||
.feature {
|
||||
margin-bottom: 25px;
|
||||
|
||||
.title {
|
||||
@include font-size(26);
|
||||
font-weight: 800;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.description {
|
||||
line-height: 1.5;
|
||||
color: $text-muted;
|
||||
@include font-size(18);
|
||||
}
|
||||
|
||||
.icon {
|
||||
border-radius: 12px;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 18px;
|
||||
|
||||
svg {
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(1) .icon {
|
||||
background: rgba($yellow, 0.1);
|
||||
|
||||
path, line, polyline, rect, circle {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) .icon {
|
||||
background: rgba($theme, 0.1);
|
||||
|
||||
path, line, polyline, rect, circle {
|
||||
stroke: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(3) .icon {
|
||||
background: rgba($purple, 0.1);
|
||||
|
||||
path, line, polyline, rect, circle {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-top: 107px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1190px) {
|
||||
|
||||
.content {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.hero {
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.features {
|
||||
padding-left: 0;
|
||||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<nav class="main-navigation">
|
||||
<router-link :to="{name: 'SaaSLandingPage'}" tag="div" class="logo">
|
||||
<img src="/assets/images/vuefilemanager-horizontal-logo.svg" alt="VueFileManager">
|
||||
</router-link>
|
||||
<div class="navigation">
|
||||
<ul class="navigation-links">
|
||||
<li>
|
||||
<a href="/#pricing">
|
||||
Pricing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<router-link :to="{name: 'ContactUs'}">
|
||||
Contact Us
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="navigation-links">
|
||||
<li>
|
||||
<router-link :to="{name: 'SignIn'}">
|
||||
Log In
|
||||
</router-link>
|
||||
</li>
|
||||
<li>
|
||||
<router-link class="cta-button" :to="{name: 'SignUp'}">
|
||||
Sign Up
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<router-link class="cta-button log-in" :to="{name: 'SignIn'}">
|
||||
Log In
|
||||
</router-link>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'IndexNavigation',
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.main-navigation {
|
||||
justify-content: space-between;
|
||||
padding-bottom: 25px;
|
||||
align-items: center;
|
||||
padding-top: 25px;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.logo {
|
||||
|
||||
img {
|
||||
cursor: pointer;
|
||||
height: 38px;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.navigation-links {
|
||||
display: inline-block;
|
||||
margin-left: 50px;
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
padding: 14px;
|
||||
font-weight: 700;
|
||||
@include font-size(17);
|
||||
@include transition(150ms);
|
||||
|
||||
&:hover {
|
||||
color: $theme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cta-button {
|
||||
background: rgba($theme, 0.1);
|
||||
border-radius: 6px;
|
||||
padding: 8px 23px;
|
||||
color: $theme;
|
||||
@include font-size(17);
|
||||
font-weight: 700;
|
||||
|
||||
&.log-in {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 690px) {
|
||||
|
||||
.navigation {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.logo {
|
||||
|
||||
img {
|
||||
height: auto;
|
||||
width: 190px;
|
||||
}
|
||||
}
|
||||
|
||||
.cta-button.log-in {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<footer class="page-wrapper medium">
|
||||
<div class="logo">
|
||||
<img src="/assets/images/vuefilemanager-horizontal-logo.svg" alt="VueFileManager">
|
||||
</div>
|
||||
<ul class="navigation-links">
|
||||
<li>
|
||||
<a href="/#pricing">
|
||||
Pricing
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<router-link :to="{name: 'ContactUs'}">
|
||||
Contact Us
|
||||
</router-link>
|
||||
</li>
|
||||
<li>
|
||||
<router-link :to="{name: 'DynamicPage', params: {slug: 'terms'}}">
|
||||
Terms
|
||||
</router-link>
|
||||
</li>
|
||||
<li>
|
||||
<router-link :to="{name: 'DynamicPage', params: {slug: 'privacy'}}">
|
||||
Privacy
|
||||
</router-link>
|
||||
</li>
|
||||
<li>
|
||||
<router-link :to="{name: 'DynamicPage', params: {slug: 'cookies'}}">
|
||||
Cookies
|
||||
</router-link>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright">
|
||||
© 2020 VueFileManager. All rights reserved.
|
||||
</p>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'IndexPageFooter',
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.logo {
|
||||
margin-bottom: 15px;
|
||||
|
||||
img {
|
||||
height: 38px;
|
||||
width: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.navigation-links {
|
||||
display: inline-block;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
|
||||
a {
|
||||
padding: 19px;
|
||||
font-weight: 700;
|
||||
@include font-size(17);
|
||||
@include transition(150ms);
|
||||
|
||||
&:hover {
|
||||
color: $theme;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.copyright {
|
||||
@include font-size(17);
|
||||
color: $text-muted;
|
||||
padding-top: 50px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 690px) {
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,110 @@
|
||||
<template>
|
||||
<header class="main-header page-wrapper medium">
|
||||
<PageTitle
|
||||
title="Simple <span style='color: #41B883'>&</span> Powerfull Personal Cloud Storage"
|
||||
description="Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Trully freedom."
|
||||
></PageTitle>
|
||||
|
||||
<router-link class="sign-up-button" :to="{name: 'SignUp'}">
|
||||
<AuthButton class="button" icon="chevron-right" text="Sign Up Now" />
|
||||
</router-link>
|
||||
|
||||
<div class="features">
|
||||
<div class="feature">
|
||||
<credit-card-icon size="19" class="feature-icon"></credit-card-icon>
|
||||
<b class="feature-title">No credit card required</b>
|
||||
</div>
|
||||
<div class="feature">
|
||||
<hard-drive-icon size="19" class="feature-icon"></hard-drive-icon>
|
||||
<b class="feature-title">5GB Free storage space</b>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import HardDriveIcon from "vue-feather-icons/icons/HardDriveIcon";
|
||||
import PageTitle from '@/components/Index/Components/PageTitle'
|
||||
import AuthButton from '@/components/Auth/AuthButton'
|
||||
import { CreditCardIcon } from 'vue-feather-icons'
|
||||
|
||||
export default {
|
||||
name: 'IndexPageHeader',
|
||||
components: {
|
||||
PageTitle,
|
||||
CreditCardIcon,
|
||||
HardDriveIcon,
|
||||
AuthButton,
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.features {
|
||||
display: flex;
|
||||
margin-top: 35px;
|
||||
|
||||
.feature {
|
||||
display: flex;
|
||||
margin-right: 35px;
|
||||
|
||||
&:nth-child(1) {
|
||||
path, line, polyline, rect, circle {
|
||||
stroke: $yellow;
|
||||
}
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
path, line, polyline, rect, circle {
|
||||
stroke: $purple;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.feature-title {
|
||||
@include font-size(14);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.feature-icon {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-header {
|
||||
padding-top: 70px;
|
||||
}
|
||||
|
||||
.sign-up-button {
|
||||
margin-top: 65px;
|
||||
display: block;
|
||||
|
||||
.button {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 690px) {
|
||||
.features {
|
||||
display: block;
|
||||
|
||||
.feature {
|
||||
margin-right: 0;
|
||||
margin-bottom: 15px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,147 @@
|
||||
<template>
|
||||
<div class="page-wrapper medium pricing">
|
||||
<div id="pricing" class="page-title center">
|
||||
<h1 class="title">
|
||||
Pick the <span style="color: #41B883">Best Plan</span> For Your Needs
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<PricingTables class="pricing-tables"/>
|
||||
|
||||
<div class="page-title center">
|
||||
<h2 class="description">
|
||||
Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Trully freedom.
|
||||
</h2>
|
||||
<router-link class="sign-up-button" :to="{name: 'SignUp'}">
|
||||
<AuthButton class="button" icon="chevron-right" text="Sign Up Now" />
|
||||
</router-link>
|
||||
</div>
|
||||
|
||||
<cloud-icon size="800" class="cloud-bg"></cloud-icon>
|
||||
<cloud-icon size="560" class="cloud-bg"></cloud-icon>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PricingTables from '@/components/Index/Components/PricingTables'
|
||||
import AuthButton from '@/components/Auth/AuthButton'
|
||||
import { CloudIcon } from 'vue-feather-icons'
|
||||
|
||||
export default {
|
||||
name: 'IndexPricingTables',
|
||||
components: {
|
||||
PricingTables,
|
||||
AuthButton,
|
||||
CloudIcon,
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vue-file-manager/_landing-page';
|
||||
@import '@assets/vue-file-manager/_variables';
|
||||
@import '@assets/vue-file-manager/_mixins';
|
||||
|
||||
.pricing {
|
||||
.cloud-bg {
|
||||
z-index: 0;
|
||||
|
||||
path {
|
||||
stroke: none;
|
||||
fill: rgba($theme, 0.05);
|
||||
}
|
||||
|
||||
&:first-of-type {
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
right: -130px;
|
||||
transform: scale(-1, 1) rotate(-17deg);
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
position: absolute;
|
||||
bottom: 160px;
|
||||
left: -230px;
|
||||
transform: rotate(13deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page-title {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
||||
&.center {
|
||||
text-align: center;
|
||||
|
||||
.title {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.description {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
max-width: 580px;
|
||||
font-size: 48px;
|
||||
font-weight: 800;
|
||||
line-height: 1.25;
|
||||
margin-bottom: 15px;
|
||||
|
||||
/deep/ span {
|
||||
font-size: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
max-width: 580px;
|
||||
@include font-size(20);
|
||||
font-weight: 500;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.pricing {
|
||||
padding-top: 250px;
|
||||
padding-bottom: 120px;
|
||||
}
|
||||
|
||||
.pricing-tables {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 60px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.sign-up-button {
|
||||
padding-top: 10px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
|
||||
.page-title {
|
||||
|
||||
.title {
|
||||
font-size: 28px;
|
||||
line-height: 1.25;
|
||||
margin-bottom: 15px;
|
||||
|
||||
/deep/ span {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
@include font-size(16);
|
||||
line-height: 1.6;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user