+
+
\ No newline at end of file
diff --git a/src/lib/components/Common/FullWidthRow.svelte b/src/lib/components/Common/FullWidthRow.svelte
new file mode 100644
index 0000000..485c6c3
--- /dev/null
+++ b/src/lib/components/Common/FullWidthRow.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/lib/components/Map/Marker.svelte b/src/lib/components/Map/Marker.svelte
new file mode 100644
index 0000000..63aa589
--- /dev/null
+++ b/src/lib/components/Map/Marker.svelte
@@ -0,0 +1,48 @@
+
+
+
+
+
diff --git a/src/lib/stores/game.js b/src/lib/stores/game.js
new file mode 100644
index 0000000..545b5d1
--- /dev/null
+++ b/src/lib/stores/game.js
@@ -0,0 +1,3 @@
+import { writable } from 'svelte/store'
+
+export const data = writable(null)
diff --git a/src/lib/svg/Earth.svelte b/src/lib/svg/Earth.svelte
new file mode 100644
index 0000000..77432b9
--- /dev/null
+++ b/src/lib/svg/Earth.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/Eye.svelte b/src/lib/svg/Eye.svelte
new file mode 100644
index 0000000..b419800
--- /dev/null
+++ b/src/lib/svg/Eye.svelte
@@ -0,0 +1,14 @@
+
+
+{#if active}
+
+{:else}
+
+{/if}
+
\ No newline at end of file
diff --git a/src/lib/svg/GoogleLogo.svelte b/src/lib/svg/GoogleLogo.svelte
new file mode 100644
index 0000000..ed80b48
--- /dev/null
+++ b/src/lib/svg/GoogleLogo.svelte
@@ -0,0 +1,16 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/svg/Help.svelte b/src/lib/svg/Help.svelte
new file mode 100644
index 0000000..f1272af
--- /dev/null
+++ b/src/lib/svg/Help.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/InputPicture.svelte b/src/lib/svg/InputPicture.svelte
new file mode 100644
index 0000000..bb220c6
--- /dev/null
+++ b/src/lib/svg/InputPicture.svelte
@@ -0,0 +1,27 @@
+
diff --git a/src/lib/svg/Logout.svelte b/src/lib/svg/Logout.svelte
new file mode 100644
index 0000000..4216c04
--- /dev/null
+++ b/src/lib/svg/Logout.svelte
@@ -0,0 +1,26 @@
+
diff --git a/src/lib/svg/Point.svelte b/src/lib/svg/Point.svelte
new file mode 100644
index 0000000..91a8490
--- /dev/null
+++ b/src/lib/svg/Point.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/PointSmall.svelte b/src/lib/svg/PointSmall.svelte
new file mode 100644
index 0000000..8526886
--- /dev/null
+++ b/src/lib/svg/PointSmall.svelte
@@ -0,0 +1,19 @@
+
diff --git a/src/lib/svg/Profile.svelte b/src/lib/svg/Profile.svelte
new file mode 100644
index 0000000..806fa00
--- /dev/null
+++ b/src/lib/svg/Profile.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/Search.svelte b/src/lib/svg/Search.svelte
new file mode 100644
index 0000000..18c9a16
--- /dev/null
+++ b/src/lib/svg/Search.svelte
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/svg/Setting.svelte b/src/lib/svg/Setting.svelte
new file mode 100644
index 0000000..093912b
--- /dev/null
+++ b/src/lib/svg/Setting.svelte
@@ -0,0 +1,20 @@
+
diff --git a/src/lib/svg/Setting2.svelte b/src/lib/svg/Setting2.svelte
new file mode 100644
index 0000000..df15098
--- /dev/null
+++ b/src/lib/svg/Setting2.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/Share.svelte b/src/lib/svg/Share.svelte
new file mode 100644
index 0000000..ce8515e
--- /dev/null
+++ b/src/lib/svg/Share.svelte
@@ -0,0 +1,26 @@
+
diff --git a/src/lib/svg/Star.svelte b/src/lib/svg/Star.svelte
new file mode 100644
index 0000000..5c3531a
--- /dev/null
+++ b/src/lib/svg/Star.svelte
@@ -0,0 +1,6 @@
+
diff --git a/src/lib/svg/Times.svelte b/src/lib/svg/Times.svelte
new file mode 100644
index 0000000..cfd87b5
--- /dev/null
+++ b/src/lib/svg/Times.svelte
@@ -0,0 +1,20 @@
+
diff --git a/src/lib/svg/Top-Image.svelte b/src/lib/svg/Top-Image.svelte
new file mode 100644
index 0000000..da675aa
--- /dev/null
+++ b/src/lib/svg/Top-Image.svelte
@@ -0,0 +1,44 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/lib/svg/Wallet.svelte b/src/lib/svg/Wallet.svelte
new file mode 100644
index 0000000..69b4e8c
--- /dev/null
+++ b/src/lib/svg/Wallet.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/svg/Warning.svelte b/src/lib/svg/Warning.svelte
new file mode 100644
index 0000000..e9ec653
--- /dev/null
+++ b/src/lib/svg/Warning.svelte
@@ -0,0 +1,8 @@
+
diff --git a/src/lib/utils/IdGenerator.js b/src/lib/utils/IdGenerator.js
new file mode 100644
index 0000000..3619eec
--- /dev/null
+++ b/src/lib/utils/IdGenerator.js
@@ -0,0 +1,3 @@
+export const idGenerator = () => {
+ return JSON.stringify(Date.now() * Math.floor(Math.random() * 100000))
+}
diff --git a/src/lib/utils/api.js b/src/lib/utils/api.js
new file mode 100644
index 0000000..f8e0019
--- /dev/null
+++ b/src/lib/utils/api.js
@@ -0,0 +1,55 @@
+async function send({ method, path, body, token, headers }) {
+ const opts = { method, headers: new Headers(), mode: 'cors' }
+ opts.headers.append('Content-Type', 'application/json')
+ opts.headers.append('Access-Control-Allow-Origin', '*')
+
+ if (body) {
+ opts.body = JSON.stringify(body)
+ }
+
+ if (headers) {
+ for (const [k, v] of Object.entries(headers)) {
+ opts.headers.append(k, v)
+ }
+ }
+
+ if (token) {
+ opts.headers['Authorization'] = `Bearer ${token}`
+ }
+
+ const res = fetch(path, opts)
+ .then(async (r) => {
+ if (r.status >= 200 && r.status < 400) {
+ return await r.text()
+ } else {
+ return await r.text()
+ }
+ })
+ .then((str) => {
+ try {
+ return JSON.parse(str)
+ } catch (err) {
+ return str
+ }
+ })
+
+ return res
+}
+
+export function get(path, token = null) {
+ return send({ method: 'GET', path, body: null, token })
+}
+
+export function del(path, token = null) {
+ return send({ method: 'DELETE', path, body: null, token })
+}
+
+export function post(path, body, token = null) {
+ return send({ method: 'POST', path, body, token })
+}
+
+export function put(path, body, token = null, headers = []) {
+ return send({ method: 'PUT', path, body, token, headers })
+}
+
+export const hostName = 'https://erant.cz/api'
diff --git a/src/lib/utils/parseQuestion.js b/src/lib/utils/parseQuestion.js
new file mode 100644
index 0000000..c6e0a00
--- /dev/null
+++ b/src/lib/utils/parseQuestion.js
@@ -0,0 +1,15 @@
+export default (question, questionType) => {
+ switch (questionType.toLowerCase()) {
+ case 'text':
+ return question
+ case 'number':
+ return Number.parseFloat(question)
+ case 'choice':
+ return question.split(/;\s*/).map((item) => ({
+ label: item.startsWith('*') ? item.substring(1) : item,
+ value: item.startsWith('*') ? true : false,
+ }))
+ default:
+ return null
+ }
+}
diff --git a/src/lib/utils/stores.js b/src/lib/utils/stores.js
new file mode 100644
index 0000000..8765b2e
--- /dev/null
+++ b/src/lib/utils/stores.js
@@ -0,0 +1,83 @@
+import { writable } from 'svelte/store'
+import * as api from './api'
+
+class FetchArray extends Array {
+ constructor(items, caller = () => null) {
+ super()
+ this.push(...items)
+ this.caller = caller
+ }
+
+ setFetch(caller) {
+ this.caller = caller
+ return this
+ }
+
+ fetch(fetchBody = {}, then = () => null) {
+ return this.caller(fetchBody, then)
+ }
+}
+
+export function fetchable(path, initBody = {}) {
+ const { subscribe, set } = writable(null)
+
+ return {
+ subscribe,
+ fetch(fetchBody = {}, then = () => null) {
+ const body = Object.assign(initBody, fetchBody)
+
+ api.post(path, body).then((result) => {
+ set(result)
+ then(result)
+ })
+
+ return this
+ }
+ }
+}
+
+export function loadable(path, initBody = {}) {
+ const fetcher = fetchable(path, initBody)
+ const fetchCaller = fetcher.fetch
+
+ const isFetching = writable(false)
+
+ fetcher.fetch = (fetchBody = {}, then = () => null) => {
+ isFetching.set(true)
+
+ fetchCaller(fetchBody, (result) => {
+ isFetching.set(false)
+ then(result)
+ })
+
+ return new FetchArray([fetcher, isFetching], fetcher.fetch)
+ }
+
+ return new FetchArray([fetcher, isFetching], fetcher.fetch)
+}
+
+export function mutable(path, callback = () => null) {
+ const isFetching = writable(false)
+ const { subscribe, set } = writable(null)
+
+ const mutateCall = async (fetchBody = {}) => {
+ isFetching.set(true)
+
+ const result = await api.post(path, fetchBody)
+ set(result)
+ isFetching.set(false)
+
+ return result
+ }
+
+ return [
+ {
+ subscribe,
+ mutate(fetchBody = {}) {
+ callback(mutateCall, fetchBody)
+ return this
+ }
+ },
+ isFetching
+ ]
+}
diff --git a/src/lib/utils/supabase.js b/src/lib/utils/supabase.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/main.js b/src/main.js
index 45e5e2d..91f9d88 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,7 +2,7 @@ import './app.css'
import App from './App.svelte'
const app = new App({
- target: document.getElementById('app')
+ target: document.getElementById('app'),
})
export default app
diff --git a/src/main.scss b/src/main.scss
index 24a1c19..9d0db9d 100644
--- a/src/main.scss
+++ b/src/main.scss
@@ -1,16 +1,42 @@
*,
-*::before,
-*::after {
+*:before,
+*:after {
box-sizing: border-box;
}
+@import url("normalize.scss");
+@import url("fonts.scss");
+
+@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@600&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Work+Sans:wght@500&display=swap');
+
html,
body {
- height: 100%;
width: 100%;
-
- tab-size: 4;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-text-size-adjust: 100%;
+ height: 100%;
+ padding: 0;
+ margin: 0;
+ font-family: 'Source Sans Pro', sans-serif;
+}
+
+#app {
+ width: 100%;
+ height: 100%;
+ justify-content: center;
+ display: flex;
+}
+
+.mapboxgl-ctrl-logo,
+.mapboxgl-ctrl-bottom-right {
+ display: none !important;
+}
+
+:root {
+ --quizHeader: 300px;
+ --fontSize: 40px;
+ --blue: #96ddff;
+ --border-radius: 25px;
+ --grey: rgba(0, 0, 0, 0.4);
+
+ --max-viewport-width: 500px;
}
diff --git a/src/normalize.scss b/src/normalize.scss
new file mode 100644
index 0000000..4b154ac
--- /dev/null
+++ b/src/normalize.scss
@@ -0,0 +1,379 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+ line-height: 1.15;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box;
+ /* 1 */
+ height: 0;
+ /* 1 */
+ overflow: visible;
+ /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none;
+ /* 1 */
+ text-decoration: underline;
+ /* 2 */
+ text-decoration: underline dotted;
+ /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ white-space: normal;
+ /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/src/routes/error.svelte b/src/routes/error.svelte
new file mode 100644
index 0000000..99d5667
--- /dev/null
+++ b/src/routes/error.svelte
@@ -0,0 +1,17 @@
+
+
+
+
+ Erant
+
+
+
+
Je nám líto ale tento zážitek nebyl nalezen.
+
+
+
+
diff --git a/src/routes/explore/Components/Filter.svelte b/src/routes/explore/Components/Filter.svelte
new file mode 100644
index 0000000..d2dc87e
--- /dev/null
+++ b/src/routes/explore/Components/Filter.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/explore/Components/Result.svelte b/src/routes/explore/Components/Result.svelte
new file mode 100644
index 0000000..b71cfe9
--- /dev/null
+++ b/src/routes/explore/Components/Result.svelte
@@ -0,0 +1,163 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/explore/Components/Search.svelte b/src/routes/explore/Components/Search.svelte
new file mode 100644
index 0000000..eabf720
--- /dev/null
+++ b/src/routes/explore/Components/Search.svelte
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/explore/Components/Top.svelte b/src/routes/explore/Components/Top.svelte
new file mode 100644
index 0000000..e110de3
--- /dev/null
+++ b/src/routes/explore/Components/Top.svelte
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/explore/explore.svelte b/src/routes/explore/explore.svelte
new file mode 100644
index 0000000..2cc4603
--- /dev/null
+++ b/src/routes/explore/explore.svelte
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+ {:else}
+
+ {/if}
+{:else if view === 'game-play'}
+
+{/if}
+
+
diff --git a/src/routes/homepage/Components/Animation.svelte b/src/routes/homepage/Components/Animation.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/src/routes/homepage/Components/Categories.svelte b/src/routes/homepage/Components/Categories.svelte
new file mode 100644
index 0000000..b539042
--- /dev/null
+++ b/src/routes/homepage/Components/Categories.svelte
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/homepage/Components/Category.svelte b/src/routes/homepage/Components/Category.svelte
new file mode 100644
index 0000000..d48eeb9
--- /dev/null
+++ b/src/routes/homepage/Components/Category.svelte
@@ -0,0 +1,66 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/homepage/Components/Comparment.svelte b/src/routes/homepage/Components/Comparment.svelte
new file mode 100644
index 0000000..4cb417c
--- /dev/null
+++ b/src/routes/homepage/Components/Comparment.svelte
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ {#each items as item }
+
+ {/each}
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/homepage/Components/Compartment_Item.svelte b/src/routes/homepage/Components/Compartment_Item.svelte
new file mode 100644
index 0000000..8f7d1c8
--- /dev/null
+++ b/src/routes/homepage/Components/Compartment_Item.svelte
@@ -0,0 +1,189 @@
+
+
+
+
+
diff --git a/src/routes/homepage/Components/Discover.svelte b/src/routes/homepage/Components/Discover.svelte
new file mode 100644
index 0000000..7ac4f97
--- /dev/null
+++ b/src/routes/homepage/Components/Discover.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+ Dicoveries around
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/routes/homepage/Components/Headline.svelte b/src/routes/homepage/Components/Headline.svelte
new file mode 100644
index 0000000..d166803
--- /dev/null
+++ b/src/routes/homepage/Components/Headline.svelte
@@ -0,0 +1,33 @@
+
+
+
+ {content}
+
+
+
\ No newline at end of file
diff --git a/src/routes/homepage/Components/Top.svelte b/src/routes/homepage/Components/Top.svelte
new file mode 100644
index 0000000..e3bdfad
--- /dev/null
+++ b/src/routes/homepage/Components/Top.svelte
@@ -0,0 +1,97 @@
+
+
+