add landing

This commit is contained in:
Emily
2024-06-02 02:46:47 +02:00
parent f8ab046b8a
commit d7bff30808
104 changed files with 73142 additions and 0 deletions

24
landing/.gitignore vendored Normal file
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1573
landing/assets/font-awesome/css/brands.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

12841
landing/assets/font-awesome/css/duotone.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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; }

View 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}

View 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; }

View 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}

View 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; }

View 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}

View 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; }

View 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}

View 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; }

View 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}

View 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; }

View 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}

View 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; }

View 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}

View 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); }

File diff suppressed because one or more lines are too long

View 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; }

View 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}

View 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; }

View 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}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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"); }

View 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")}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,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';
}

View 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;
}

View 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>

View 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>

View 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>

View 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>

View 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>

View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

25
landing/package.json Normal file
View 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"
}
}

View 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>

View 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
View 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
View 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
View 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 informationit 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 datathis 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 collectiononly 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 LitLyxs 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
View 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 accounteven 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
landing/public/carbon_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
landing/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1 @@
google-site-verification: googlef73a1f2c746dab8a.html

BIN
landing/public/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
landing/public/logo_old.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
landing/public/ogimage.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

BIN
landing/public/ryb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
landing/public/screen_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
landing/public/tech.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
landing/public/tech/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
landing/public/tech/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

BIN
landing/public/tech/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
landing/public/tech/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
landing/public/tech/13.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

BIN
landing/public/tech/14.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

BIN
landing/public/tech/15.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
landing/public/tech/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 926 B

BIN
landing/public/tech/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
landing/public/tech/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

BIN
landing/public/tech/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 984 B

BIN
landing/public/tech/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
landing/public/tech/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Some files were not shown because too many files have changed in this diff Show More