add landing
24
landing/.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
75
landing/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Nuxt 3 Minimal Starter
|
||||
|
||||
Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure to install the dependencies:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install
|
||||
|
||||
# pnpm
|
||||
pnpm install
|
||||
|
||||
# yarn
|
||||
yarn install
|
||||
|
||||
# bun
|
||||
bun install
|
||||
```
|
||||
|
||||
## Development Server
|
||||
|
||||
Start the development server on `http://localhost:3000`:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run dev
|
||||
|
||||
# pnpm
|
||||
pnpm run dev
|
||||
|
||||
# yarn
|
||||
yarn dev
|
||||
|
||||
# bun
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Production
|
||||
|
||||
Build the application for production:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run build
|
||||
|
||||
# pnpm
|
||||
pnpm run build
|
||||
|
||||
# yarn
|
||||
yarn build
|
||||
|
||||
# bun
|
||||
bun run build
|
||||
```
|
||||
|
||||
Locally preview production build:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run preview
|
||||
|
||||
# pnpm
|
||||
pnpm run preview
|
||||
|
||||
# yarn
|
||||
yarn preview
|
||||
|
||||
# bun
|
||||
bun run preview
|
||||
```
|
||||
|
||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
||||
26
landing/app.vue
Normal file
@@ -0,0 +1,26 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
useServerSeoMeta({
|
||||
title: 'Litlyx',
|
||||
ogTitle: 'Litlyx',
|
||||
description: 'One line code analytics solution',
|
||||
ogDescription: 'One line code analytics solution',
|
||||
author: 'Litlyx',
|
||||
ogImage: 'https://litlyx.com/ogimage.jpg',
|
||||
ogType: 'website',
|
||||
ogUrl: 'https://litlyx.com'
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
<div class="w-dvw h-dvh bg-[#151517]">
|
||||
<NuxtLayout>
|
||||
<NuxtPage></NuxtPage>
|
||||
</NuxtLayout>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
27846
landing/assets/font-awesome/css/all.css
vendored
Normal file
12
landing/assets/font-awesome/css/all.min.css
vendored
Normal file
1573
landing/assets/font-awesome/css/brands.css
vendored
Normal file
6
landing/assets/font-awesome/css/brands.min.css
vendored
Normal file
12841
landing/assets/font-awesome/css/duotone.css
vendored
Normal file
8
landing/assets/font-awesome/css/duotone.min.css
vendored
Normal file
13336
landing/assets/font-awesome/css/fontawesome.css
vendored
Normal file
9
landing/assets/font-awesome/css/fontawesome.min.css
vendored
Normal file
19
landing/assets/font-awesome/css/light.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Pro'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
|
||||
|
||||
.fal,
|
||||
.fa-light {
|
||||
font-weight: 300; }
|
||||
6
landing/assets/font-awesome/css/light.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}.fa-light,.fal{font-weight:300}
|
||||
19
landing/assets/font-awesome/css/regular.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Pro'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.far,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
||||
6
landing/assets/font-awesome/css/regular.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
||||
19
landing/assets/font-awesome/css/sharp-light.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-sharp: 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Sharp';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-sharp-light-300.woff2") format("woff2"), url("../webfonts/fa-sharp-light-300.ttf") format("truetype"); }
|
||||
|
||||
.fasl,
|
||||
.fa-light {
|
||||
font-weight: 300; }
|
||||
6
landing/assets/font-awesome/css/sharp-light.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-light:normal 300 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:300;font-display:block;src:url(../webfonts/fa-sharp-light-300.woff2) format("woff2"),url(../webfonts/fa-sharp-light-300.ttf) format("truetype")}.fa-light,.fasl{font-weight:300}
|
||||
19
landing/assets/font-awesome/css/sharp-regular.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-sharp: 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Sharp';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-sharp-regular-400.woff2") format("woff2"), url("../webfonts/fa-sharp-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.fasr,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
||||
6
landing/assets/font-awesome/css/sharp-regular.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-regular:normal 400 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-sharp-regular-400.woff2) format("woff2"),url(../webfonts/fa-sharp-regular-400.ttf) format("truetype")}.fa-regular,.fasr{font-weight:400}
|
||||
19
landing/assets/font-awesome/css/sharp-solid.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-sharp: 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Sharp';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-sharp-solid-900.woff2") format("woff2"), url("../webfonts/fa-sharp-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fass,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
||||
6
landing/assets/font-awesome/css/sharp-solid.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-solid:normal 900 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-sharp-solid-900.woff2) format("woff2"),url(../webfonts/fa-sharp-solid-900.ttf) format("truetype")}.fa-solid,.fass{font-weight:900}
|
||||
19
landing/assets/font-awesome/css/sharp-thin.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-sharp: 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-thin: normal 100 1em/1 'Font Awesome 6 Sharp'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Sharp';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-sharp-thin-100.woff2") format("woff2"), url("../webfonts/fa-sharp-thin-100.ttf") format("truetype"); }
|
||||
|
||||
.fast,
|
||||
.fa-thin {
|
||||
font-weight: 100; }
|
||||
6
landing/assets/font-awesome/css/sharp-thin.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-sharp:"Font Awesome 6 Sharp";--fa-font-sharp-thin:normal 100 1em/1 "Font Awesome 6 Sharp"}@font-face{font-family:"Font Awesome 6 Sharp";font-style:normal;font-weight:100;font-display:block;src:url(../webfonts/fa-sharp-thin-100.woff2) format("woff2"),url(../webfonts/fa-sharp-thin-100.ttf) format("truetype")}.fa-thin,.fast{font-weight:100}
|
||||
19
landing/assets/font-awesome/css/solid.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Pro'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
||||
6
landing/assets/font-awesome/css/solid.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
||||
640
landing/assets/font-awesome/css/svg-with-js.css
vendored
Normal file
@@ -0,0 +1,640 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
||||
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-thin: normal 100 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
||||
|
||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
||||
overflow: visible;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: var(--fa-display, inline-block);
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-2xs {
|
||||
vertical-align: 0.1em; }
|
||||
.svg-inline--fa.fa-xs {
|
||||
vertical-align: 0em; }
|
||||
.svg-inline--fa.fa-sm {
|
||||
vertical-align: -0.07143em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -0.2em; }
|
||||
.svg-inline--fa.fa-xl {
|
||||
vertical-align: -0.25em; }
|
||||
.svg-inline--fa.fa-2xl {
|
||||
vertical-align: -0.3125em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: var(--fa-li-width, 2em);
|
||||
top: 0.25em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: var(--fa-fw-width, 1.25em); }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers-text, .fa-layers-counter {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: var(--fa-counter-background-color, #ff253a);
|
||||
border-radius: var(--fa-counter-border-radius, 1em);
|
||||
box-sizing: border-box;
|
||||
color: var(--fa-inverse, #fff);
|
||||
line-height: var(--fa-counter-line-height, 1);
|
||||
max-width: var(--fa-counter-max-width, 5em);
|
||||
min-width: var(--fa-counter-min-width, 1.5em);
|
||||
overflow: hidden;
|
||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||
right: var(--fa-right, 0);
|
||||
text-overflow: ellipsis;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
||||
transform: scale(var(--fa-counter-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
right: var(--fa-right, 0);
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom right;
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom left;
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
top: var(--fa-top, 0);
|
||||
right: var(--fa-right, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-2xs {
|
||||
font-size: 0.625em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: 0.225em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: 0.75em;
|
||||
line-height: 0.08333em;
|
||||
vertical-align: 0.125em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: 0.875em;
|
||||
line-height: 0.07143em;
|
||||
vertical-align: 0.05357em; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.25em;
|
||||
line-height: 0.05em;
|
||||
vertical-align: -0.075em; }
|
||||
|
||||
.fa-xl {
|
||||
font-size: 1.5em;
|
||||
line-height: 0.04167em;
|
||||
vertical-align: -0.125em; }
|
||||
|
||||
.fa-2xl {
|
||||
font-size: 2em;
|
||||
line-height: 0.03125em;
|
||||
vertical-align: -0.1875em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: var(--fa-li-margin, 2.5em);
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: calc(var(--fa-li-width, 2em) * -1);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: var(--fa-li-width, 2em);
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border-color: var(--fa-border-color, #eee);
|
||||
border-radius: var(--fa-border-radius, 0.1em);
|
||||
border-style: var(--fa-border-style, solid);
|
||||
border-width: var(--fa-border-width, 0.08em);
|
||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left;
|
||||
margin-right: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right;
|
||||
margin-left: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-beat {
|
||||
-webkit-animation-name: fa-beat;
|
||||
animation-name: fa-beat;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-bounce {
|
||||
-webkit-animation-name: fa-bounce;
|
||||
animation-name: fa-bounce;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
||||
|
||||
.fa-fade {
|
||||
-webkit-animation-name: fa-fade;
|
||||
animation-name: fa-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-beat-fade {
|
||||
-webkit-animation-name: fa-beat-fade;
|
||||
animation-name: fa-beat-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-flip {
|
||||
-webkit-animation-name: fa-flip;
|
||||
animation-name: fa-flip;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-shake {
|
||||
-webkit-animation-name: fa-shake;
|
||||
animation-name: fa-shake;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
||||
animation-duration: var(--fa-animation-duration, 2s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin-reverse {
|
||||
--fa-animation-direction: reverse; }
|
||||
|
||||
.fa-pulse,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.fa-beat,
|
||||
.fa-bounce,
|
||||
.fa-fade,
|
||||
.fa-beat-fade,
|
||||
.fa-flip,
|
||||
.fa-pulse,
|
||||
.fa-shake,
|
||||
.fa-spin,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-delay: -1ms;
|
||||
animation-delay: -1ms;
|
||||
-webkit-animation-duration: 1ms;
|
||||
animation-duration: 1ms;
|
||||
-webkit-animation-iteration-count: 1;
|
||||
animation-iteration-count: 1;
|
||||
-webkit-transition-delay: 0s;
|
||||
transition-delay: 0s;
|
||||
-webkit-transition-duration: 0s;
|
||||
transition-duration: 0s; } }
|
||||
|
||||
@-webkit-keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@-webkit-keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@-webkit-keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@-webkit-keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@-webkit-keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@-webkit-keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@-webkit-keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
-webkit-transform: rotate(270deg);
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
-webkit-transform: scale(-1, 1);
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
-webkit-transform: scale(1, -1);
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-both,
|
||||
.fa-flip-horizontal.fa-flip-vertical {
|
||||
-webkit-transform: scale(-1, -1);
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
.fa-rotate-by {
|
||||
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
||||
transform: rotate(var(--fa-rotate-angle, none)); }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: var(--fa-stack-z-index, auto); }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1.25em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
|
||||
.sr-only,
|
||||
.fa-sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.sr-only-focusable:not(:focus),
|
||||
.fa-sr-only-focusable:not(:focus) {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.svg-inline--fa .fa-primary {
|
||||
fill: var(--fa-primary-color, currentColor);
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa .fa-secondary {
|
||||
fill: var(--fa-secondary-color, currentColor);
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa mask .fa-primary,
|
||||
.svg-inline--fa mask .fa-secondary {
|
||||
fill: black; }
|
||||
|
||||
.fad.fa-inverse,
|
||||
.fa-duotone.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
6
landing/assets/font-awesome/css/svg-with-js.min.css
vendored
Normal file
19
landing/assets/font-awesome/css/thin.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Pro';
|
||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Pro'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Pro';
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-thin-100.woff2") format("woff2"), url("../webfonts/fa-thin-100.ttf") format("truetype"); }
|
||||
|
||||
.fat,
|
||||
.fa-thin {
|
||||
font-weight: 100; }
|
||||
6
landing/assets/font-awesome/css/thin.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Pro";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Pro"}@font-face{font-family:"Font Awesome 6 Pro";font-style:normal;font-weight:100;font-display:block;src:url(../webfonts/fa-thin-100.woff2) format("woff2"),url(../webfonts/fa-thin-100.ttf) format("truetype")}.fa-thin,.fat{font-weight:100}
|
||||
26
landing/assets/font-awesome/css/v4-font-face.css
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
||||
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
||||
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
||||
6
landing/assets/font-awesome/css/v4-font-face.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
||||
2194
landing/assets/font-awesome/css/v4-shims.css
vendored
Normal file
6
landing/assets/font-awesome/css/v4-shims.min.css
vendored
Normal file
34
landing/assets/font-awesome/css/v5-font-face.css
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Brands';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-display: block;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-display: block;
|
||||
font-weight: 400;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Pro';
|
||||
font-display: block;
|
||||
font-weight: 300;
|
||||
src: url("../webfonts/fa-light-300.woff2") format("woff2"), url("../webfonts/fa-light-300.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 5 Duotone';
|
||||
font-display: block;
|
||||
font-weight: 900;
|
||||
src: url("../webfonts/fa-duotone-900.woff2") format("woff2"), url("../webfonts/fa-duotone-900.ttf") format("truetype"); }
|
||||
6
landing/assets/font-awesome/css/v5-font-face.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Pro 6.5.1 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license (Commercial License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Pro";font-display:block;font-weight:300;src:url(../webfonts/fa-light-300.woff2) format("woff2"),url(../webfonts/fa-light-300.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Duotone";font-display:block;font-weight:900;src:url(../webfonts/fa-duotone-900.woff2) format("woff2"),url(../webfonts/fa-duotone-900.ttf) format("truetype")}
|
||||
BIN
landing/assets/font-awesome/webfonts/fa-brands-400.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-brands-400.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-duotone-900.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-duotone-900.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-light-300.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-light-300.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-regular-400.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-regular-400.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-light-300.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-light-300.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-regular-400.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-regular-400.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-solid-900.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-solid-900.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-thin-100.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-sharp-thin-100.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-solid-900.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-solid-900.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-thin-100.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-thin-100.woff2
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-v4compatibility.ttf
Normal file
BIN
landing/assets/font-awesome/webfonts/fa-v4compatibility.woff2
Normal file
92
landing/assets/scss/main.scss
Normal file
@@ -0,0 +1,92 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;0,1000;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900;1,1000&display=swap');
|
||||
@import url('https://fonts.cdnfonts.com/css/brockmann');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap');
|
||||
|
||||
@import '../font-awesome/css/all.css';
|
||||
@import './utilities.scss';
|
||||
|
||||
@import url('https://fonts.cdnfonts.com/css/geometric-sans-serif-v1');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap');
|
||||
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
|
||||
|
||||
// @import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css");
|
||||
|
||||
.fas,
|
||||
.far,
|
||||
.fat {
|
||||
font-family: "Font Awesome 6 Pro" !important;
|
||||
}
|
||||
|
||||
.fab {
|
||||
font-family: "Font Awesome 6 Brands" !important;
|
||||
}
|
||||
|
||||
.brockmann {
|
||||
font-family: "Brockmann" !important;
|
||||
}
|
||||
|
||||
.nunito {
|
||||
font-family: "Nunito" !important;
|
||||
}
|
||||
|
||||
.inter {
|
||||
font-family: "Inter" !important;
|
||||
}
|
||||
|
||||
.geometric {
|
||||
font-family: 'Geometric Sans Serif v1' !important;
|
||||
}
|
||||
|
||||
.manrope {
|
||||
font-family: 'Manrope' !important;
|
||||
}
|
||||
|
||||
.lato {
|
||||
font-family: 'Lato' !important;
|
||||
}
|
||||
|
||||
.poppins {
|
||||
font-family: 'Poppins' !important;
|
||||
}
|
||||
|
||||
.poppins-childs {
|
||||
font-family: 'Poppins' !important;
|
||||
|
||||
* {
|
||||
font-family: 'Poppins' !important;
|
||||
}
|
||||
}
|
||||
|
||||
.hide-scroll {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.card-shadow {
|
||||
box-shadow: 0 0 18px #00000033;
|
||||
}
|
||||
|
||||
progress::-webkit-progress-value {
|
||||
transition: all 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
progress::-moz-progress-bar {
|
||||
transition: all 0.5s ease-in-out;
|
||||
}
|
||||
|
||||
html,
|
||||
body {
|
||||
margin: 0;
|
||||
width: 100dvw;
|
||||
height: 100dvh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: 'Nunito';
|
||||
}
|
||||
15
landing/assets/scss/utilities.scss
Normal file
@@ -0,0 +1,15 @@
|
||||
.test0 {
|
||||
@apply border-gray-400/20 border;
|
||||
}
|
||||
|
||||
.test {
|
||||
border: 1px solid yellow !important;
|
||||
}
|
||||
|
||||
.test2 {
|
||||
border: 2px solid blue !important;
|
||||
}
|
||||
|
||||
.test3 {
|
||||
border: 3px solid green !important;
|
||||
}
|
||||
36
landing/components/SelectButton.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
type Props = {
|
||||
options: { label: string }[],
|
||||
currentIndex: number
|
||||
}
|
||||
|
||||
const props = defineProps<Props>();
|
||||
|
||||
const emits = defineEmits<{
|
||||
(evt: 'changeIndex', newIndex: number): void;
|
||||
}>();
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
<div class="flex gap-2 border-[1px] border-gray-400 px-2 py-2 rounded-xl">
|
||||
<div @click="$emit('changeIndex', index)" v-for="(opt, index) of options"
|
||||
class="hover:bg-white/10 select-btn-animated cursor-pointer px-3 py-1 rounded-lg poppins font-semibold"
|
||||
:class="{
|
||||
'bg-accent hover:!bg-accent': currentIndex == index,
|
||||
}">
|
||||
{{ opt.label }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang="scss">
|
||||
.select-btn-animated {
|
||||
transition: all .4s linear;
|
||||
}
|
||||
</style>
|
||||
108
landing/components/home/BgGrid.vue
Normal file
@@ -0,0 +1,108 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
|
||||
type Props = {
|
||||
size: number,
|
||||
spacing: number,
|
||||
opacity: string
|
||||
}
|
||||
|
||||
const props = defineProps<Props>();
|
||||
|
||||
const sizeArr = new Array(props.size).fill('a');
|
||||
|
||||
function calculateOpacity(x: number, y: number) {
|
||||
const distanceFromCenter = Math.sqrt(Math.pow(x - props.size / 2, 2) + Math.pow(y - props.size / 2, 2));
|
||||
const normalizedDistance = distanceFromCenter / (props.size / 2);
|
||||
return (1 - normalizedDistance).toFixed(1);
|
||||
}
|
||||
|
||||
const widthHeight = computed(() => {
|
||||
return 9 + props.size * props.spacing;
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div class="w-fit h-fit">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" :width="widthHeight" :height="widthHeight" :style="`opacity: ${props.opacity};`"
|
||||
fill="none">
|
||||
|
||||
<template v-for="(p, x) of sizeArr">
|
||||
<template v-for="(p, y) of sizeArr">
|
||||
<circle :cx="9 + (spacing * x)" :cy="9 + (spacing * y)" r="1" fill="#fff"
|
||||
:fill-opacity="calculateOpacity(x, y)" />
|
||||
</template>
|
||||
</template>
|
||||
|
||||
<!-- <circle cx="27" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="9" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="27" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="45" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="63" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="81" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="99" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="117" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="9" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="27" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="45" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="63" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="81" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="99" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="117" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
<circle cx="135" cy="135" r="1" fill="#fff" fill-opacity=".9" />
|
||||
-->
|
||||
</svg>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
23
landing/components/home/HomeCard.vue
Normal file
@@ -0,0 +1,23 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
const props = defineProps<{ title: string, text: string, icon: string }>();
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div class="bg-menu flex flex-col justify-center items-center px-8 py-10 w-[20rem] gap-4 rounded-xl">
|
||||
<div>
|
||||
<div class="bg-[#36363f] p-6 flex items-center justify-center h-[5rem] w-[5rem] rounded-2xl">
|
||||
<i :class="props.icon" class="text-text text-[1.6rem]"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-text text-[1.3rem] poppins font-semibold text-center mt-6">
|
||||
{{ props.title }}
|
||||
</div>
|
||||
<div class="text-text-sub/80 text-[1rem] poppins text-center">
|
||||
{{ props.text }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
20
landing/components/home/TechCard.vue
Normal file
@@ -0,0 +1,20 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
const props = defineProps<{
|
||||
icon: string,
|
||||
name: string
|
||||
}>();
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div class="p-6 flex flex-col items-center gap-3">
|
||||
<div class="w-[4.2rem] h-[4.2rem] lg:w-[6rem] lg:h-[6rem] bg-menu rounded-2xl flex items-center justify-center">
|
||||
<img :src="icon">
|
||||
</div>
|
||||
<div class="poppins font-semibold text-text-sub">
|
||||
{{ name }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
58
landing/components/pricing/PricingCard.vue
Normal file
@@ -0,0 +1,58 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
type Prop = {
|
||||
title: string,
|
||||
icon: string,
|
||||
list: { text: string, icon: string }[],
|
||||
price: string,
|
||||
}
|
||||
|
||||
const props = defineProps<Prop>();
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<div class="bg-menu py-6 rounded-lg w-full h-full flex flex-col items-center justify-normal px-6 relative">
|
||||
|
||||
<div
|
||||
class="absolute rounded-full top-[-2.1rem] bg-accent w-[4.2rem] h-[4.2rem] flex items-center justify-center">
|
||||
<i :class="icon" class="text-[2.5rem]"></i>
|
||||
</div>
|
||||
|
||||
<div class="poppins mt-6 font-semibold text-[1.4rem]">
|
||||
{{ title }}
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-400/50 h-[1px] w-full mt-6 mb-10"></div>
|
||||
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="flex gap-3 items-center" v-for="element of list">
|
||||
|
||||
<div class="shrink-0 flex items-center bg-accent w-[2rem] h-[2rem] justify-center rounded-full">
|
||||
<i :class="element.icon" class="text-[.9rem]"></i>
|
||||
</div>
|
||||
|
||||
<div class="poppins">
|
||||
{{ element.text }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-400/50 h-[1px] w-full mt-10 mb-6"></div>
|
||||
|
||||
<div class="flex gap-2 justify-between w-full">
|
||||
<div class="flex gap-2 items-end">
|
||||
<div class="manrope text-[2.5rem] font-bold text-text"> {{ price }} </div>
|
||||
<div class="poppins text-text-sub/90 mb-1">/month</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Tasto bello
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
10
landing/ecosystem.config.cjs
Normal file
@@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
apps: [
|
||||
{
|
||||
name: 'Landing',
|
||||
port: '3009',
|
||||
exec_mode: 'fork',
|
||||
script: './.output/server/index.mjs',
|
||||
}
|
||||
]
|
||||
}
|
||||
194
landing/layouts/header.vue
Normal file
@@ -0,0 +1,194 @@
|
||||
<script setup lang="ts">
|
||||
|
||||
const isMenuOpen = ref<boolean>(false);
|
||||
|
||||
|
||||
const scroller = ref<any>(null);
|
||||
|
||||
const nuxtApp = useNuxtApp()
|
||||
|
||||
nuxtApp.hook("page:finish", () => {
|
||||
scroller.value?.scrollTo(0, 0);
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
<div class="layout h-full flex flex-col pt-1 px-1">
|
||||
|
||||
<div class="text-white items-center py-4 gap-2 flex-col lg:flex-row lg:mx-20 lg:pl-10 hidden lg:flex">
|
||||
|
||||
|
||||
<NuxtLink to="/" tag="div" class="flex gap-4 items-center">
|
||||
<div class="bg-[#2969f1] h-[2.8rem] aspect-[1/1] flex items-center justify-center rounded-lg">
|
||||
<img class="h-[1.8rem]" :src="'/logo.png'">
|
||||
</div>
|
||||
<div class="font-bold text-[1.6rem] text-gray-300 poppins">
|
||||
Litlyx
|
||||
</div>
|
||||
</NuxtLink>
|
||||
|
||||
<div class="grow"></div>
|
||||
<div class="flex gap-8 text-[1rem] text-white font-[500] poppins">
|
||||
<NuxtLink target="_blank" to="https://dashboard.litlyx.com/live_demo" class="hover:text-text-sub/90">
|
||||
Live demo </NuxtLink>
|
||||
<NuxtLink target="_blank" to="https://docs.litlyx.com" class="hover:text-text-sub/90"> Docs </NuxtLink>
|
||||
<NuxtLink to="/pricing" class="hover:text-text-sub/90"> Pricing </NuxtLink>
|
||||
<NuxtLink target="_blank" to="https://github.com/Litlyx/litlyx"
|
||||
class="hover:text-text-sub/90"> GitHub </NuxtLink>
|
||||
</div>
|
||||
<div class="px-10 pt-6 lg:pt-0">
|
||||
<NuxtLink to="https://dashboard.litlyx.com" target="_blank"
|
||||
class="poppins font-[500] px-4 py-[.3rem] bg-accent rounded-xl">
|
||||
Get started
|
||||
</NuxtLink>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex lg:hidden p-4">
|
||||
<NuxtLink to="/" class="flex gap-4 items-center">
|
||||
<div class="bg-[#2969f1] h-[2.8rem] aspect-[1/1] flex items-center justify-center rounded-lg">
|
||||
<img class="h-[1.8rem]" :src="'/logo.png'">
|
||||
</div>
|
||||
<div class="font-bold text-[1.6rem] text-gray-300 poppins">
|
||||
Litlyx
|
||||
</div>
|
||||
</NuxtLink>
|
||||
|
||||
<div class="grow"></div>
|
||||
<div class="text-text-sub text-[1.5rem] flex items-center">
|
||||
<i @click="isMenuOpen = !isMenuOpen" class="fas fa-bars" :class="{ 'fa-times': isMenuOpen }"></i>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div ref="scroller" :class="{ 'overflow-y-hidden': isMenuOpen }" class="overflow-y-auto shrink h-full relative">
|
||||
<div v-if="isMenuOpen" class="menu fixed z-[20] top-20 left-0 w-full bg-bg h-dvh lg:hidden">
|
||||
<div class="flex flex-col p-4">
|
||||
|
||||
<div class="flex flex-col gap-4">
|
||||
<NuxtLink to="https://dashboard.litlyx.com" target="_blank"
|
||||
class="poppins font-semibold px-4 py-3 text-center bg-accent rounded-lg">
|
||||
Get started
|
||||
</NuxtLink>
|
||||
|
||||
<NuxtLink to="https://dashboard.litlyx.com/live_demo" target="_blank"
|
||||
class="poppins font-semibold px-4 mb-6 py-3 text-center bg-[#e4e6f7] text-accent rounded-lg">
|
||||
Live demo
|
||||
</NuxtLink>
|
||||
</div>
|
||||
|
||||
<!-- <div class="flex justify-between items-center mr-2">
|
||||
<NuxtLink to="/" class="hover:text-text-sub/90 py-3"> Live demo </NuxtLink>
|
||||
<div> <i class="fas fa-chevron-right"></i> </div>
|
||||
</div>
|
||||
<div class="divider border-b border-gray-500/40"></div> -->
|
||||
|
||||
<div class="flex justify-between items-center mr-2">
|
||||
<NuxtLink target="_blank" to="https://docs.litlyx.com" class="hover:text-text-sub/90 py-3">
|
||||
Docs
|
||||
</NuxtLink>
|
||||
<div> <i class="fas fa-chevron-right"></i> </div>
|
||||
</div>
|
||||
|
||||
<div class="divider border-b border-gray-500/40"></div>
|
||||
|
||||
<div class="flex justify-between items-center mr-2">
|
||||
<NuxtLink @click="isMenuOpen = false" to="/pricing" class="hover:text-text-sub/90 py-3"> Pricing
|
||||
</NuxtLink>
|
||||
<div> <i class="fas fa-chevron-right"></i> </div>
|
||||
</div>
|
||||
|
||||
<div class="divider border-b border-gray-500/40"></div>
|
||||
|
||||
<div class="flex justify-between items-center mr-2">
|
||||
<NuxtLink target="_blank" to="https://github.com/Litlyx/litlyx"
|
||||
class="hover:text-text-sub/90 py-3"> GitHub </NuxtLink>
|
||||
<div> <i class="fas fa-chevron-right"></i> </div>
|
||||
</div>
|
||||
|
||||
<div class="divider border-b border-gray-500/40"></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<slot></slot>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center text-[1.3rem] items-center poppins py-16">
|
||||
Made with ❤ in Italy
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="border-t-[1px] border-accent/40 flex h-fit py-12 w-full justify-between footer flex-col lg:flex-row lg:px-[8rem]">
|
||||
|
||||
<div class="flex flex-row lg:flex-col gap-7 justify-center mb-10 lg:mb-0">
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<div class="poppins font-bold text-[1.6rem] text-text/90">
|
||||
Litlyx
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-6 text-[1.5rem] text-text-sub/80">
|
||||
<!-- <div> <i class="fab fa-x-twitter"></i> </div> -->
|
||||
<div> <a href="https://www.linkedin.com/company/litlyx" target="_blank"> <i class="fab fa-linkedin"></i>
|
||||
</a></div>
|
||||
</div>
|
||||
|
||||
<div class="hidden lg:flex">
|
||||
<div class="text-[.9rem] text-text-sub/80">
|
||||
© 2024 Litlyx All right reserved.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flex gap-6 lg:gap-20 flex-col lg:flex-row text-center lg:text-start">
|
||||
|
||||
<div class="flex flex-col gap-4">
|
||||
|
||||
<div class="text-text-sub/60 font-semibold text-[1.3rem]"> Product </div>
|
||||
|
||||
<NuxtLink to="/pricing" class="hover:text-accent cursor-pointer"> Pricing </NuxtLink>
|
||||
<NuxtLink target="_blank" to="https://docs.litlyx.com" class="hover:text-accent cursor-pointer">
|
||||
Docs </NuxtLink>
|
||||
<NuxtLink target="_blank" to="https://github.com/Litlyx/litlyx"
|
||||
class="hover:text-accent cursor-pointer"> Github </NuxtLink>
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="text-text-sub/60 font-semibold text-[1.3rem]"> Company </div>
|
||||
<!-- <NuxtLink to="/" class="hover:text-accent cursor-pointer"> About </NuxtLink> -->
|
||||
<NuxtLink to="/contacts" class="hover:text-accent cursor-pointer"> Contacts </NuxtLink>
|
||||
</div>
|
||||
<div class="flex-col flex gap-4 text-center lg:text-start">
|
||||
<div class="text-text-sub/60 font-semibold text-[1.3rem]"> Legal </div>
|
||||
<NuxtLink to="/privacy" class="hover:text-accent cursor-pointer"> Privacy </NuxtLink>
|
||||
<NuxtLink to="/terms" class="hover:text-accent cursor-pointer"> Terms </NuxtLink>
|
||||
<NuxtLink to="/data_policy" class="hover:text-accent cursor-pointer"> Data policy </NuxtLink>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.banner * {
|
||||
font-family: "Nunito";
|
||||
}
|
||||
|
||||
.layout * {
|
||||
font-family: "Inter";
|
||||
}
|
||||
</style>
|
||||
29
landing/nuxt.config.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
|
||||
export default defineNuxtConfig({
|
||||
colorMode: { preference: 'dark', },
|
||||
devtools: { enabled: false },
|
||||
app: {
|
||||
head: {
|
||||
script: [
|
||||
{
|
||||
src: 'https://cdn.jsdelivr.net/npm/litlyx@1.0.5/browser/litlyx.js',
|
||||
'data-project': '6643cd08a1854e3b81722ab5',
|
||||
defer: true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
pages: true,
|
||||
ssr: false,
|
||||
routeRules: {
|
||||
'/**': {
|
||||
prerender: true
|
||||
},
|
||||
},
|
||||
css: ['~/assets/scss/main.scss'],
|
||||
modules: ['@nuxt/ui'],
|
||||
devServer: {
|
||||
host: '0.0.0.0',
|
||||
},
|
||||
})
|
||||
12693
landing/package-lock.json
generated
Normal file
25
landing/package.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "litlyx-dashboard",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nuxtjs/tailwindcss": "^6.12.0",
|
||||
"nuxt": "^3.11.2",
|
||||
"sass": "^1.75.0",
|
||||
"vue": "^3.4.21",
|
||||
"vue-router": "^4.3.0",
|
||||
"vue3-lottie": "^3.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nuxt/ui": "^2.15.2",
|
||||
"autoprefixer": "^10.4.19",
|
||||
"postcss": "^8.4.38",
|
||||
"tailwindcss": "^3.4.3"
|
||||
}
|
||||
}
|
||||
29
landing/pages/contacts.vue
Normal file
@@ -0,0 +1,29 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
|
||||
<div class="tutto-poppins flex flex-col gap-3 px-2 lg:px-96 mt-20 text-[1.2rem] leading-[2rem]">
|
||||
|
||||
<div class="flex justify-center flex-col items-center">
|
||||
<div class="font-bold text-[2rem]"> Contact us </div>
|
||||
<div class="font-bold mb-1 mt-4 text-accent">
|
||||
<a href="mailto:helplitlyx@gmail.com">helplitlyx@gmail.com </a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang=scss>
|
||||
.tutto-poppins * {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
</style>
|
||||
231
landing/pages/data_policy.vue
Normal file
@@ -0,0 +1,231 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
|
||||
<div class="tutto-poppins flex flex-col gap-3 px-2 lg:px-96 mt-20 text-[1.2rem] leading-[2rem]">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="font-bold text-[2rem]">
|
||||
LitLyx Analytics Data Policy
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-500/90 h-[1px] w-full my-6"></div>
|
||||
|
||||
<div>
|
||||
LitLyx is committed to protecting your privacy and ensuring that our data practices are transparent, secure,
|
||||
and compliant with all relevant regulations. This data policy outlines the information we collect, how we
|
||||
use it, and the measures we take to protect your data. Our services are hosted on servers provided by
|
||||
Hetzner in Nuremberg, Germany, and comply with European data protection laws, including GDPR, CCPA, and
|
||||
PECR.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Data Collection and Usage : </div>
|
||||
<div>
|
||||
LitLyx is designed to provide insightful analytics without compromising user privacy. We adhere to the
|
||||
following principles:
|
||||
</div>
|
||||
<ul>
|
||||
<div class="ml-8"> 1. Non-Personal Data Collection: We do not collect personal data or personally
|
||||
identifiable information (PII). Our analytics focus on aggregated data to identify trends without
|
||||
tracking individual users.</div>
|
||||
<div class="ml-8"> 2 No Cookies or Persistent Identifiers: We do not use cookies, browser storage, or any
|
||||
form of persistent identifiers. All data is session-based and anonymized. </div>
|
||||
</ul>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Specific Data Points Collected </div>
|
||||
<div>We collect only the most essential data points, which are:</div>
|
||||
<ul>
|
||||
<div class="ml-8"> • Page URL: We track the URLs of pages viewed on your website to understand which pages
|
||||
are most popular. Query parameters and hash parameters are discarded.
|
||||
</div>
|
||||
<div class="ml-8"> • HTTP Referrer: This helps us determine the source of your traffic by identifying the
|
||||
referring website. </div>
|
||||
<div class="ml-8"> • Browser: We track the browser type and version (derived from the User-Agent header) to
|
||||
understand the technology used by visitors. The full User-Agent string is discarded.
|
||||
</div>
|
||||
<div class="ml-8"> • Operating System: We identify the operating system and its version (derived from the
|
||||
User-Agent header) to see what systems visitors use. The full User-Agent string is discarded.</div>
|
||||
<div class="ml-8"> • Device Type: We categorize devices into desktop, mobile, or tablet based on the
|
||||
User-Agent header. </div>
|
||||
<div class="ml-8"> • Geographical Location: We determine the visitor's country, region, and city using their
|
||||
IP address. We do not track anything more granular than the city level, and IP addresses are not stored.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Unique User Counting Without Cookies </div>
|
||||
|
||||
<div>
|
||||
Counting unique visitors is crucial for analytics, but we prioritize visitor privacy. We do not generate
|
||||
persistent identifiers. Instead, we use a combination of the visitor's IP address and User-Agent to create a
|
||||
unique identifier for each day.
|
||||
</div>
|
||||
<div>
|
||||
|
||||
Formula for Unique User Identification -
|
||||
Every HTTP request includes the IP address and User-Agent. To generate a unique identifier while maintaining
|
||||
anonymity, we apply the following process:
|
||||
</div>
|
||||
|
||||
<div class="bg-menu font-normal px-8 py-4 text-[1.1rem]" style="font-family:Consolas">
|
||||
hash(daily_salt + strip(website_domain) + strip(ip_address) + user_agent)
|
||||
</div>
|
||||
|
||||
<ul>
|
||||
<div class="ml-8"> • Daily Salt: A randomly generated value that changes daily.</div>
|
||||
<div class="ml-8"> • Website Domain: The domain of the website being visited.</div>
|
||||
<div class="ml-8"> • IP Address and User-Agent: Used to create a unique but anonymized identifier.</div>
|
||||
<div class="ml-8"> • Strip function: Used to transform string in only [A-z0-9]</div>
|
||||
</ul>
|
||||
|
||||
<div>This identifier is used to count unique visitors for a single day. The raw IP addresses and User-Agent
|
||||
strings are never stored. Daily salts are deleted every 24 hours to prevent linking visitor data across
|
||||
days.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Custom Events and Custom Events Metadata </div>
|
||||
<div>
|
||||
At LitLyx, we understand the importance of flexibility and customization in web analytics. To cater to
|
||||
specific needs, we allow the tracking of custom events and the storage of custom events metadata. This
|
||||
section outlines how we manage these custom events while ensuring privacy and compliance with relevant
|
||||
regulations.
|
||||
</div>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Tracking Custom Events </div>
|
||||
<div>
|
||||
Custom events allow you to track specific interactions on your website beyond standard page views. These
|
||||
interactions might include button clicks, form submissions, or other user actions that are important for
|
||||
understanding user behavior on your site.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Data Points for Custom Events </div>
|
||||
|
||||
<ul>
|
||||
<div class="ml-8"> • Event Name: A descriptive name for the event (e.g., "Button Click", "Form Submission").
|
||||
</div>
|
||||
<div class="ml-8"> • Event Metadata: Additional metadata associated with the event (e.g., button ID,
|
||||
form ID).</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- <div class="font-bold mb-1 mt-4"> Storing Custom Events Metadata </div>
|
||||
<div>
|
||||
In addition to tracking custom events, we provide the capability to store metadata related to these events.
|
||||
This metadata can include any additional information you deem relevant, such as user attributes or
|
||||
contextual details about the event.
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Formula for Storing Custom Events Metadata -
|
||||
To ensure the privacy and security of custom events metadata, we use a hashing mechanism. The metadata is
|
||||
combined with the project ID and hashed before being stored in our database. This process ensures that the
|
||||
metadata is anonymized and cannot be linked back to individual users.
|
||||
</div>
|
||||
|
||||
<div>
|
||||
Hashing Formula for Custom Events Metadata -
|
||||
We use the following formula to hash the custom events metadata:
|
||||
</div>
|
||||
|
||||
<div>
|
||||
“Hash(text{project_id} + text{metadata as string})”
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• Project ID: The unique identifier for your project.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Metadata as String: The string representation of the custom events metadata.
|
||||
</div>
|
||||
</ul>
|
||||
-->
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Data Hosting and Security </div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• Hosting: All data is hosted on Hetzner servers in Nuremberg, Germany. These servers are powered by
|
||||
100% renewable energy and comply with EU data protection laws.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Security Measures: We use HTTPS for data transmission and employ hashing processes for data at rest.
|
||||
Regular backups are performed and stored within the EU in redundant locations.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• No Third-Party Access: Apart from Hetzner, no third-party vendors have access to the data. This ensures
|
||||
all data remains within the EU and is protected by strict European privacy laws.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Tracking Custom Events </div>
|
||||
<div>
|
||||
Custom events allow you to track specific interactions on your website beyond standard page views. These
|
||||
interactions might include button clicks, form submissions, or other user actions that are important for
|
||||
understanding user behavior on your site.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Data Ownership </div>
|
||||
<div>
|
||||
LitLyx respects that you own your website data. We do not sell, share, or monetize your data. You retain
|
||||
full control over your data, with the ability to delete your account or data at any time. Upon deletion, all
|
||||
data is permanently removed from our servers and cannot be recovered.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Trust and Transparency </div>
|
||||
<div>
|
||||
LitLyx is built on principles of transparency and openness. While our analytics tools are proprietary, we
|
||||
adhere strictly to our privacy commitments. Our policies and processes are open for review to ensure we meet
|
||||
our stated objectives.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Compliance with GDPR, CCPA, and PECR </div>
|
||||
<div>
|
||||
Using LitLyx ensures compliance with GDPR, CCPA, and PECR regulations. Our data practices eliminate the need
|
||||
for complex privacy policies or intrusive cookie prompts. Visitors to your website can enjoy a seamless and
|
||||
privacy-respecting experience.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Liability </div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
<div> Contact Information </div>
|
||||
<div>
|
||||
For any questions or concerns about our data policy, please contact our data protection officer at
|
||||
<a class="text-blue-400" href="mailto:helplitlyx@gmail.com">helplitlyx@gmail.com</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang=scss>
|
||||
.tutto-poppins * {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
</style>
|
||||
264
landing/pages/index.vue
Normal file
@@ -0,0 +1,264 @@
|
||||
<script setup lang="ts">
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
const autoscroll = ref<HTMLElement>();
|
||||
|
||||
onMounted(() => {
|
||||
// setInterval(() => {
|
||||
// if (!autoscroll.value) return;
|
||||
// autoscroll.value.scrollLeft++;
|
||||
// }, 10);
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
<div class="home relative h-full w-full bg-[#151517]">
|
||||
|
||||
<div class="absolute top-0 left-0 w-full h-full flex flex-col items-center z-0 overflow-hidden">
|
||||
<HomeBgGrid :size="100" :spacing="18" opacity="0.3" class="w-fit h-fit"></HomeBgGrid>
|
||||
<HomeBgGrid :size="100" :spacing="18" opacity="0.2" class="w-fit h-fit"></HomeBgGrid>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex w-full mt-20 justify-center relative z-[10]">
|
||||
<div class="flex flex-col items-center justify-center gap-20 rounded-lg py-6">
|
||||
|
||||
<div class="poppins text-center font-bold text-text lg:leading-[5rem] text-[1.7rem] lg:text-[4rem]">
|
||||
Boost Analytics Collection
|
||||
<br>
|
||||
with <span class="text-accent"> minimal setup </span>
|
||||
</div>
|
||||
|
||||
<div class="flex gap-4 flex-col lg:flex-row lg:gap-10">
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<i class="fas fa-check text-[1.5rem]"></i>
|
||||
<div class="poppins text-[1.2rem]"> One-line code event </div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<i class="fas fa-check text-[1.5rem]"></i>
|
||||
<div class="poppins text-[1.2rem]"> 15+ Techs Supported </div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-2">
|
||||
<i class="fas fa-check text-[1.5rem]"></i>
|
||||
<div class="poppins text-[1.2rem]"> High customization </div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flex gap-6 items-center flex-col lg:flex-row">
|
||||
<NuxtLink to="https://dashboard.litlyx.com"
|
||||
class="hover:bg-white/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-text text-bg-light px-8 py-3 rounded-2xl text-black">
|
||||
<div class="poppins"> Get started for free </div>
|
||||
<i class="fas fa-arrow-right"></i>
|
||||
</NuxtLink>
|
||||
|
||||
<NuxtLink target="_blank" to="https://dashboard.litlyx.com/live_demo"
|
||||
class="hover:bg-accent/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-accent text-bg-light px-16 py-3 rounded-2xl text-text">
|
||||
<div class="poppins"> Live demo </div>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-10 z-[10] relative">
|
||||
<div class="bg-[#1d1d1f] rounded-[1rem] overflow-hidden w-[96%] lg:w-[60%] ">
|
||||
<img :src="'screen_1.png'" class="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-20 z-[10] relative items-center flex-col gap-6">
|
||||
<div class="poppins font-bold text-text text-center text-[2.2rem] lg:text-[3rem]">
|
||||
+15 Supported technologies
|
||||
</div>
|
||||
<div class="poppins text-[1.2rem] text-text-sub text-center w-[90%] lg:w-[40%]">
|
||||
Seamless Integrations with popular JS/TS frameworks, including React, Angular, Vue, Node, Next and many
|
||||
more.
|
||||
</div>
|
||||
<div class="flex flex-wrap justify-center py-10 lg:gap-8 lg:px-20">
|
||||
<HomeTechCard name="Node.js" icon="tech/4.png"></HomeTechCard>
|
||||
<HomeTechCard name="React" icon="tech/15.png"></HomeTechCard>
|
||||
<HomeTechCard name="Vue.js" icon="tech/8.png"></HomeTechCard>
|
||||
<HomeTechCard name="Next.js" icon="tech/7.png"></HomeTechCard>
|
||||
<HomeTechCard name="Nuxt" icon="tech/12.png"></HomeTechCard>
|
||||
<HomeTechCard name="Angular" icon="tech/9.png"></HomeTechCard>
|
||||
<HomeTechCard name="Firebase" icon="tech/1.png"></HomeTechCard>
|
||||
<HomeTechCard name="NestJS" icon="tech/2.png"></HomeTechCard>
|
||||
<HomeTechCard name="Deno" icon="tech/11.png"></HomeTechCard>
|
||||
<HomeTechCard name="Lambda" icon="tech/14.png"></HomeTechCard>
|
||||
<HomeTechCard name="Fastify" icon="tech/5.png"></HomeTechCard>
|
||||
<HomeTechCard name="Netlify" icon="tech/13.png"></HomeTechCard>
|
||||
<HomeTechCard name="Bun" icon="tech/3.png"></HomeTechCard>
|
||||
<HomeTechCard name="Svelte" icon="tech/6.png"></HomeTechCard>
|
||||
<HomeTechCard name="Solid" icon="tech/10.png"></HomeTechCard>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-20 z-[10] relative items-center flex-col gap-6">
|
||||
<div class="poppins font-bold text-[2.2rem] lg:text-[3rem] text-text">
|
||||
That's it !
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center">
|
||||
<img :src="'carbon_1.png'">
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col items-center justify-center gap-2">
|
||||
<div
|
||||
class="poppins font-semibold text-[1.5rem] z-[10] lg:text-[1.85rem] text-text-sub text-center w-[75%] lg:w-[40%]">
|
||||
This one-line code Collect 9 KPI
|
||||
</div>
|
||||
<div class="poppins text-[1.35rem] text-text-sub text-center w-[90%] lg:w-[60%] z-[10]">
|
||||
Websites visits, Custom events, Referrers, Browsers, Devices, OS, Countries, SearchTerms, User Unique
|
||||
Session and more
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-20 z-[20] relative">
|
||||
<div class="flex gap-6 items-center flex-col lg:flex-row">
|
||||
<NuxtLink to="https://dashboard.litlyx.com"
|
||||
class="hover:bg-white/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-text text-bg-light px-8 py-3 rounded-2xl text-black">
|
||||
<div class="poppins"> Get started for free </div>
|
||||
<i class="fas fa-arrow-right"></i>
|
||||
</NuxtLink>
|
||||
|
||||
<NuxtLink target="_blank" to="https://dashboard.litlyx.com/live_demo"
|
||||
class="hover:bg-accent/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-accent text-bg-light px-16 py-3 rounded-2xl text-text">
|
||||
<div class="poppins"> Live demo </div>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI AGENT SECTION -->
|
||||
|
||||
<div class="flex justify-center mt-20 z-[10] relative items-center flex-col gap-6">
|
||||
<div class="poppins font-bold text-[2.2rem] lg:text-[3rem] text-text">
|
||||
AI Analyst Integrated
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mx-auto w-[20rem] z-[10] relative">
|
||||
<img class="w-full h-full" :src="'agent.png'" >
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col items-center justify-center gap-2">
|
||||
<div
|
||||
class="poppins font-semibold text-[1.5rem] lg:text-[1.85rem] z-[10] text-text-sub text-center w-[75%] lg:w-[40%]">
|
||||
Meet Lit! The Agent that help you analyze your data!
|
||||
</div>
|
||||
<div class="poppins text-[1.35rem] text-text-sub text-center z-[10] w-[90%] lg:w-[60%]">
|
||||
Take metrics-driven decision with the AI agent suggestions!
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="flex justify-center mt-20 z-[20] relative">
|
||||
<div class="flex gap-6 items-center flex-col lg:flex-row">
|
||||
<NuxtLink to="https://dashboard.litlyx.com"
|
||||
class="hover:bg-white/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-text text-bg-light px-8 py-3 rounded-2xl text-black">
|
||||
<div class="poppins"> Get started for free </div>
|
||||
<i class="fas fa-arrow-right"></i>
|
||||
</NuxtLink>
|
||||
|
||||
<NuxtLink target="_blank" to="https://dashboard.litlyx.com/live_demo"
|
||||
class="hover:bg-accent/90 font-semibold cursor-pointer flex items-center gap-4 text-xl bg-accent text-bg-light px-16 py-3 rounded-2xl text-text">
|
||||
<div class="poppins"> Live demo </div>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div class="flex justify-center mt-20 z-[10] relative items-center flex-col gap-6">
|
||||
<div class="poppins font-bold text-[2.2rem] lg:text-[3rem] text-text"> Why use litlyx </div>
|
||||
<!-- <div class="poppins text-[1.2rem] text-text-sub text-center w-[40%]">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
|
||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
|
||||
</div> -->
|
||||
<div ref="autoscroll"
|
||||
class="flex gap-8 flex-row lg:flex-col overflow-x-auto overflow-y-hidden lg:overflow-hidden w-full hide-scroll px-6">
|
||||
<div class="flex justify-center gap-8">
|
||||
<HomeCard title="1-Minute Setup"
|
||||
text="Effortlessly set up and start collecting analytics & KPIs within seconds."
|
||||
icon="far fa-clock">
|
||||
</HomeCard>
|
||||
<HomeCard title="Real-time Insights"
|
||||
text="Instantly visualize events on your Project Dashboard in real-time."
|
||||
icon="far fa-line-chart">
|
||||
</HomeCard>
|
||||
<HomeCard title="Custom events" text="Tailor your user experience tracking with custom events, now."
|
||||
icon="far fa-tools">
|
||||
</HomeCard>
|
||||
</div>
|
||||
<div class="flex justify-center gap-8">
|
||||
<HomeCard title="Start for Free"
|
||||
text="Explore Litlyx dashboard with 3.000 free visits and events for your website."
|
||||
icon="far fa-gift">
|
||||
</HomeCard>
|
||||
<HomeCard title="Cost-Effective"
|
||||
text="Get more for less with Litlyx, maximizing value without breaking the bank."
|
||||
icon="far fa-wallet">
|
||||
</HomeCard>
|
||||
<HomeCard title="<4kb"
|
||||
text="Litlyx imports seamlessly, optimizing code resources and enhancing modular efficiency."
|
||||
icon="far fa-temperature-quarter">
|
||||
</HomeCard>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="flex justify-center mt-20 z-[10] relative items-center flex-col gap-6">
|
||||
<!-- <div class="poppins font-bold text-[2.2rem] lg:text-[3rem] text-text text-center">
|
||||
Signup for LitLyx updates
|
||||
</div> -->
|
||||
<!-- <div class="poppins text-[1.2rem] text-text-sub text-center w-[40%]">
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
|
||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
|
||||
</div> -->
|
||||
|
||||
|
||||
<!-- <div class="flex flex-col items-center justify-center py-6">
|
||||
<div class="flex items-center">
|
||||
<div class="w-full bg-menu px-12 py-8 rounded-lg flex flex-col gap-1">
|
||||
<div class="text-[1.5rem] poppins font-semibold text-text">
|
||||
Subscribe for Updates
|
||||
</div>
|
||||
<div class="text-[1rem] poppins text-text-sub">
|
||||
Get the latest news straight to your inbox
|
||||
</div>
|
||||
<div class="flex items-center mt-4">
|
||||
<input type="email" placeholder="Enter your email"
|
||||
class="poppins flex-1 px-4 py-2 placeholder:text-text-sub/70 rounded-l-lg focus:outline-none">
|
||||
<button class="poppins px-4 py-2 bg-accent text-white rounded-r-lg">
|
||||
Subscribe
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.footer * {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
|
||||
.footer {
|
||||
border-style: dashed !important;
|
||||
}
|
||||
</style>
|
||||
111
landing/pages/pricing.vue
Normal file
@@ -0,0 +1,111 @@
|
||||
<script setup lang="ts">
|
||||
import { Vue3Lottie } from 'vue3-lottie';
|
||||
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
<!--
|
||||
<div class="home h-full overflow-y-auto relative">
|
||||
|
||||
<div class="absolute top-0 left-0 w-full h-full flex flex-col items-center z-0 overflow-hidden">
|
||||
<HomeBgGrid :size="50" :spacing="18" opacity="0.3" class="w-fit h-fit"></HomeBgGrid>
|
||||
<HomeBgGrid :size="50" :spacing="18" opacity="0.3" class="w-fit h-fit"></HomeBgGrid>
|
||||
</div>
|
||||
|
||||
<div class="flex w-full justify-center px-20">
|
||||
<SelectButton class="text-[1.4rem]" :current-index="0" :options="[
|
||||
{ label: 'Monthly' },
|
||||
{ label: 'Yearly' },
|
||||
]"></SelectButton>
|
||||
</div>
|
||||
|
||||
<div class="flex mt-20 gap-10 mx-20">
|
||||
|
||||
<PricingCard title="Free plan" icon="far fa-fire" price="€ 54" :list="[
|
||||
|
||||
{ text: '3k Page visits / Custom Events (one time)', icon: 'fas fa-check' },
|
||||
{ text: 'Access to Crm', icon: 'fas fa-check' },
|
||||
{ text: 'Download CSV Raw data', icon: 'fas fa-check' },
|
||||
{ text: 'PDF Report For investor', icon: 'fas fa-check' },
|
||||
|
||||
{ text: 'Team member', icon: '' },
|
||||
{ text: 'Only 1 project connected', icon: '' },
|
||||
|
||||
]"></PricingCard>
|
||||
|
||||
<PricingCard title="Free plan" icon="far fa-fire" price="€ 54" :list="[
|
||||
|
||||
{ text: '3k Page visits / Custom Events (one time)', icon: 'fas fa-check' },
|
||||
{ text: 'Access to Crm', icon: 'fas fa-check' },
|
||||
{ text: 'Download CSV Raw data', icon: 'fas fa-check' },
|
||||
{ text: 'PDF Report For investor', icon: 'fas fa-check' },
|
||||
|
||||
{ text: 'Team member', icon: '' },
|
||||
{ text: 'Only 1 project connected', icon: '' },
|
||||
|
||||
]"></PricingCard>
|
||||
|
||||
<PricingCard title="Free plan" icon="far fa-fire" price="€ 54" :list="[
|
||||
|
||||
{ text: '3k Page visits / Custom Events (one time)', icon: 'fas fa-check' },
|
||||
{ text: 'Access to Crm', icon: 'fas fa-check' },
|
||||
{ text: 'Download CSV Raw data', icon: 'fas fa-check' },
|
||||
{ text: 'PDF Report For investor', icon: 'fas fa-check' },
|
||||
|
||||
{ text: 'Team member', icon: '' },
|
||||
{ text: 'Only 1 project connected', icon: '' },
|
||||
|
||||
]"></PricingCard>
|
||||
|
||||
|
||||
<PricingCard title="Free plan" icon="far fa-fire" price="€ 54" :list="[
|
||||
|
||||
{ text: '3k Page visits / Custom Events (one time)', icon: 'fas fa-check' },
|
||||
{ text: 'Access to Crm', icon: 'fas fa-check' },
|
||||
{ text: 'Download CSV Raw data', icon: 'fas fa-check' },
|
||||
{ text: 'PDF Report For investor', icon: 'fas fa-check' },
|
||||
|
||||
{ text: 'Team member', icon: '' },
|
||||
{ text: 'Only 1 project connected', icon: '' },
|
||||
|
||||
]"></PricingCard>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex w-full py-20 my-20 px-20">
|
||||
<div class="flex justify-between w-full">
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="poppins font-bold text-[2.2rem]">
|
||||
Ready to ditch Google Analytics ?
|
||||
</div>
|
||||
<div class="text-accent poppins font-bold text-[2.2rem]">
|
||||
Start your free trial today.
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex gap-4 items-center mr-20">
|
||||
<div class="poppins px-12 py-6 text-[1.2rem] hover:bg-accent/90 text-text cursor-pointer bg-accent rounded-xl font-semibold">
|
||||
Get started
|
||||
</div>
|
||||
<div class="poppins px-12 py-6 text-[1.2rem] hover:bg-text/90 cursor-pointer text-accent bg-text rounded-xl font-semibold">
|
||||
Live demo
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
|
||||
<div class="home h-full w-full min-h-[40dvh]">
|
||||
<Vue3Lottie height="16rem" animation-link="pricing_lottie.json"></Vue3Lottie>
|
||||
<div class="poppins text-[2rem] font-semibold text-center mt-6">
|
||||
Pricing coming soon
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
122
landing/pages/privacy.vue
Normal file
@@ -0,0 +1,122 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
|
||||
<div class="tutto-poppins flex flex-col gap-3 px-2 lg:px-96 mt-20 text-[1.2rem] leading-[2rem]">
|
||||
|
||||
<div class="font-bold text-[2rem]">
|
||||
LitLyx Privacy Policy
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-500/90 h-[1px] w-full my-6"></div>
|
||||
|
||||
<div>
|
||||
For our beloved litlyx.com visitors and users.
|
||||
This document outlines our commitment to privacy for all visitors and users.
|
||||
</div>
|
||||
<div>
|
||||
At LitLyx Analytics, your privacy is really important. We avoid using cookies and never gather personal
|
||||
information. Should you opt to register an account, only essential details are requested, and these are
|
||||
shared
|
||||
exclusively with crucial services required for app functionality.
|
||||
</div>
|
||||
<div>
|
||||
LitLyx Analytics (SaaS) adheres strictly to GDPR, CCPA, PECR, and other relevant privacy standards both on
|
||||
our site and within our analytics tool. We prioritize the confidentiality of your information—it belongs to
|
||||
you, not us. This policy details the types of data we gather, the handling process, and your rights over
|
||||
your data. We are committed to never selling your data—this has always been our stance.
|
||||
</div>
|
||||
<div>
|
||||
For those using the LitLyx Analytics script on their sites, refer to our detailed data policy to understand
|
||||
what
|
||||
we collect on your behalf regarding site visitors.
|
||||
</div>
|
||||
<div class="font-bold mb-1 mt-4">Visitor privacy on litlyx.com includes:</div>
|
||||
<ul>
|
||||
<div class="ml-8"> • No collection of personal details</div>
|
||||
<div class="ml-8"> • No browser cookie storage </div>
|
||||
<div class="ml-8"> • No data sharing with third parties or advertisers </div>
|
||||
<div class="ml-8"> • No collection or analysis of personal or behavioral trends </div>
|
||||
<div class="ml-8"> • No monetization of data </div>
|
||||
</ul>
|
||||
|
||||
<div>
|
||||
We deploy the LitLyx Analytics script solely to accumulate anonymous statistical data, aiming to analyze
|
||||
general
|
||||
website traffic trends without tracking individual users. All collected data is aggregated, and no personal
|
||||
information is captured. Our live demo page showcases the accessible data, including referral sources, top
|
||||
visited pages, session durations, and device specifics like type, OS, country, and browser.
|
||||
</div>
|
||||
<div class="font-bold mb-1 mt-4"> As a LitLyx Analytics subscriber: </div>
|
||||
<div>
|
||||
Our core principle is minimal data collection—only what is essential for delivering the services you
|
||||
register
|
||||
for. We select trusted external providers who comply with stringent data security and privacy regulations.
|
||||
Information shared with them is strictly necessary for their services, and they are contractually obliged to
|
||||
maintain confidentiality and adhere to our processing directives.
|
||||
</div>
|
||||
<div>
|
||||
Here's a practical overview
|
||||
</div>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Collected data and usage:</div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• Email address: Required for account setup to enable login, personalization, and to send you necessary
|
||||
communications like invoices or updates.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Persistent first-party cookie: Facilitates seamless login across sessions, improving usability. You
|
||||
control cookie settings via your browser, including their deletion.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Data security: All collected data is securely encrypted and stored on renewable
|
||||
energy-powered servers in Falkenstein, Germany, adhering to EU data privacy laws. Your data does not
|
||||
leave the EU.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
•Payment processing: Handled by PayPal, with detailed privacy information
|
||||
available on their site.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Email communication: Managed by European providers Gmail or Brevo, with disabled tracking features.
|
||||
Full privacy details are available on their respective sites.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Data retention: </div>
|
||||
<div>
|
||||
Your data remains with us as long as your account is active or as needed to deliver services. It is used in
|
||||
line
|
||||
with this policy and retained to fulfill legal obligations, resolve disputes, and protect LitLyx’s rights.
|
||||
You
|
||||
may delete your account anytime, which results in immediate and permanent data deletion.
|
||||
</div>
|
||||
<div class="font-bold mb-1 mt-4"> Updates and inquiries: </div>
|
||||
<div>
|
||||
We update this policy as necessary to stay compliant and reflect new practices. Significant changes are
|
||||
communicated through our blog, social media, and direct emails.
|
||||
</div>
|
||||
<div>
|
||||
Please reach out to us at <a href="mailto:helplitlyx@gmail.com" class=text-blue-400>helplitlyx@gmail.com</a> with any questions or concerns regarding this privacy policy
|
||||
or
|
||||
your rights.
|
||||
</div>
|
||||
<div class="font-bold mb-1 mt-4"> Last updated: May 1, 2024 </div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang=scss>
|
||||
.tutto-poppins * {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
</style>
|
||||
176
landing/pages/terms.vue
Normal file
@@ -0,0 +1,176 @@
|
||||
<script lang="ts" setup>
|
||||
|
||||
|
||||
definePageMeta({ layout: 'header' });
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<template>
|
||||
|
||||
|
||||
<div class="tutto-poppins flex flex-col gap-3 px-2 lg:px-96 mt-20 text-[1.2rem] leading-[2rem]">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="font-bold text-[2rem]">
|
||||
LitLyx Analytics Terms of Service
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-500/90 h-[1px] w-full my-6"></div>
|
||||
|
||||
<div>
|
||||
Welcome, and thank you for choosing LitLyx Analytics! The terms “company”, “we”, “our”, “us”, “service”, and
|
||||
“services” throughout this document refer to LitLyx Analytics.
|
||||
</div>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Important Note: </div>
|
||||
<div>
|
||||
These Terms of Service are applicable solely to LitLyx Analytics Cloud. They do not apply to LitLyx
|
||||
Analytics
|
||||
Self-Hosted, which you would manage on your own servers.
|
||||
We may revise these Terms of Service in the future. Significant changes will be announced via email, our
|
||||
blog or
|
||||
socials.
|
||||
By utilizing our service now or in the future, you accept the most recent version of these Terms of Service.
|
||||
This applies to all our current and upcoming products and any new features added to our service. Not
|
||||
exercising
|
||||
or enforcing any rights or provisions of these Terms does not constitute a waiver of such rights or
|
||||
provisions.
|
||||
Please note these terms include limitations on our liability. Our Data Processing Agreement (DPA) under the
|
||||
European General Data Protection Regulation (GDPR) is incorporated into these Terms.
|
||||
If you disagree with these Terms, please refrain from using our service. Violating these terms may lead to
|
||||
the
|
||||
termination of your account. We value your trust highly, and we strive to be transparent about our
|
||||
operations
|
||||
and responsive to your feedback.
|
||||
</div>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Account Terms</div>
|
||||
<ul>
|
||||
<div class="ml-8"> • You must secure your account and password. LitLyx Analytics is not liable for losses or
|
||||
damages resulting from
|
||||
your failure to protect your login information.</div>
|
||||
<div class="ml-8"> • You are accountable for all activities conducted under your account—even by others who
|
||||
have access to your
|
||||
account. </div>
|
||||
<div class="ml-8"> • You must not use our service for illegal purposes or in violation of any local laws.
|
||||
</div>
|
||||
<div class="ml-8"> • You must provide a legal full name and a valid email address to complete the signup
|
||||
process.</div>
|
||||
<div class="ml-8"> • Only humans can register accounts. Registrations by bots or automated methods are not
|
||||
allowed. </div>
|
||||
</ul>
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Payment, Refunds, Upgrading, and Downgrading Terms</div>
|
||||
<ul>
|
||||
<div class="ml-8"> • Our free trial details, including duration, are provided at signup. No credit card is
|
||||
needed for the trial,
|
||||
and your data is not sold. Post-trial, payment is required in advance to continue service use. Unpaid
|
||||
accounts
|
||||
will be frozen until payment is received. Accounts frozen for 60 days will be scheduled for
|
||||
auto-cancellation.</div>
|
||||
<div class="ml-8"> • Upgrading from a free trial to a paid plan incurs immediate charges, and the billing
|
||||
cycle begins on the
|
||||
upgrade day. </div>
|
||||
<div class="ml-8"> • Payments are processed automatically via credit card or PayPal.</div>
|
||||
<div class="ml-8"> • Pageviews purchased must be used within the term; unused pageviews are forfeited.</div>
|
||||
<div class="ml-8"> • No additional charges for occasional traffic spikes. No surprise fees. </div>
|
||||
<div class="ml-8"> • Exceeding the pageview limit of your plan for two consecutive months prompts a
|
||||
notification to upgrade. You
|
||||
have two weeks to respond, either continuing with a higher plan or cancelling. </div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Cancellation and Termination</div>
|
||||
<ul>
|
||||
<div class="ml-8"> • You are solely responsible for properly cancelling your account. Email cancellation is
|
||||
not recognized.
|
||||
Cancellation instructions are provided.</div>
|
||||
<div class="ml-8"> • Cancellations take effect at the end of the current paid period; no further charges
|
||||
will be incurred.
|
||||
Post-cancellation, your stats are inaccessible and eventually permanently deleted from backups after 60
|
||||
days.</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Modifications to the Service and Prices</div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• We reserve the right to modify or discontinue any part of the service with or without notice.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• Pricing changes may exempt existing customers, but we reserve the right to change prices for current
|
||||
users
|
||||
with 30 days notice via email or blog post.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Privacy and Security of Your Data </div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• We implement various security measures like backups, redundancies, and encryption to secure your data.
|
||||
You
|
||||
agree that we may process your site data as detailed in our data policy.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> General Conditions </div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• The service is provided on an "as is" and "as available" basis. While we strive for uptime, access to
|
||||
the
|
||||
service is not guaranteed.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• We aim to design our services to meet diverse needs, but they may not meet every individual
|
||||
expectation.
|
||||
</div>
|
||||
<div class="ml-8">
|
||||
• We extensively test our features, but the possibility of bugs remains. We prioritize fixing
|
||||
significant bugs,
|
||||
especially those affecting security or privacy.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Liability </div>
|
||||
<ul>
|
||||
<div class="ml-8">
|
||||
• You expressly understand and agree that LitLyx Analytics shall not be liable, in law or in equity, to
|
||||
you or
|
||||
to any third party for any direct, indirect, incidental, lost profits, special, consequential, punitive
|
||||
or
|
||||
exemplary damages, including, but not limited to, damages for loss of profits, goodwill, use, data or
|
||||
other
|
||||
intangible losses (even if the company has been advised of the possibility of such damages), resulting
|
||||
from: (i)
|
||||
the use or the inability to use the services; (ii) the cost of procurement of substitute goods and
|
||||
services
|
||||
resulting from any goods, data, information or services purchased or obtained or messages received or
|
||||
transactions entered into through or from the services; (iii) unauthorized access to or alteration of
|
||||
your
|
||||
transmissions or data; (iv) statements or conduct of any third party on the service; (v) or any other
|
||||
matter
|
||||
relating to this Terms of Service or the services, whether as a breach of contract, tort (including
|
||||
negligence
|
||||
whether active or passive), or any other theory of liability.
|
||||
</div>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="font-bold mb-1 mt-4"> Thank you for choosing LitLyx Analytics! </div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
|
||||
<style scoped lang=scss>
|
||||
.tutto-poppins * {
|
||||
font-family: "Poppins";
|
||||
}
|
||||
</style>
|
||||
BIN
landing/public/agent.png
Normal file
|
After Width: | Height: | Size: 136 KiB |
BIN
landing/public/carbon_1.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
landing/public/favicon.ico
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
1
landing/public/googlef73a1f2c746dab8a.html
Normal file
@@ -0,0 +1 @@
|
||||
google-site-verification: googlef73a1f2c746dab8a.html
|
||||
BIN
landing/public/logo.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
landing/public/logo_old.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
landing/public/ogimage.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
1
landing/public/pricing_lottie.json
Normal file
BIN
landing/public/report/card_image.png
Normal file
|
After Width: | Height: | Size: 532 KiB |
BIN
landing/public/ryb.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
landing/public/screen_1.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
landing/public/tech.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
landing/public/tech/1.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
landing/public/tech/10.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
landing/public/tech/11.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
landing/public/tech/12.png
Normal file
|
After Width: | Height: | Size: 766 B |
BIN
landing/public/tech/13.png
Normal file
|
After Width: | Height: | Size: 757 B |
BIN
landing/public/tech/14.png
Normal file
|
After Width: | Height: | Size: 706 B |
BIN
landing/public/tech/15.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
landing/public/tech/2.png
Normal file
|
After Width: | Height: | Size: 926 B |
BIN
landing/public/tech/3.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
landing/public/tech/4.png
Normal file
|
After Width: | Height: | Size: 945 B |
BIN
landing/public/tech/5.png
Normal file
|
After Width: | Height: | Size: 984 B |
BIN
landing/public/tech/6.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
landing/public/tech/7.png
Normal file
|
After Width: | Height: | Size: 597 B |