mirror of
				https://github.com/gpxstudio/gpx.studio.git
				synced 2025-11-04 05:21:09 +00:00 
			
		
		
		
	using markdown for docs
This commit is contained in:
		
							
								
								
									
										64
									
								
								website/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										64
									
								
								website/package-lock.json
									
									
									
										generated
									
									
									
								
							@@ -44,6 +44,7 @@
 | 
			
		||||
                "eslint-config-prettier": "^9.1.0",
 | 
			
		||||
                "eslint-plugin-svelte": "^2.40.0",
 | 
			
		||||
                "events": "^3.3.0",
 | 
			
		||||
                "mdsvex": "^0.11.2",
 | 
			
		||||
                "postcss": "^8.4.38",
 | 
			
		||||
                "prettier": "^3.3.2",
 | 
			
		||||
                "prettier-plugin-svelte": "^3.2.4",
 | 
			
		||||
@@ -1532,6 +1533,12 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/three/-/three-0.134.0.tgz",
 | 
			
		||||
            "integrity": "sha512-4YB+99Rgqq27EjiYTItEoZtdjLnTh8W9LxowgpC9eWsjaQJIL4Kn/ZcUKAnW3gB/jS4hqGN8iqmid+RcUZDzpA=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/unist": {
 | 
			
		||||
            "version": "2.0.10",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
 | 
			
		||||
            "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/@types/virtual-dom": {
 | 
			
		||||
            "version": "2.1.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/@types/virtual-dom/-/virtual-dom-2.1.4.tgz",
 | 
			
		||||
@@ -3931,6 +3938,21 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
 | 
			
		||||
            "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/mdsvex": {
 | 
			
		||||
            "version": "0.11.2",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.11.2.tgz",
 | 
			
		||||
            "integrity": "sha512-Y4ab+vLvTJS88196Scb/RFNaHMHVSWw6CwfsgWIQP8f42D57iDII0/qABSu530V4pkv8s6T2nx3ds0MC1VwFLA==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/unist": "^2.0.3",
 | 
			
		||||
                "prism-svelte": "^0.4.7",
 | 
			
		||||
                "prismjs": "^1.17.1",
 | 
			
		||||
                "vfile-message": "^2.0.4"
 | 
			
		||||
            },
 | 
			
		||||
            "peerDependencies": {
 | 
			
		||||
                "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0-next.120"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/memoizee": {
 | 
			
		||||
            "version": "0.4.15",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
 | 
			
		||||
@@ -4674,6 +4696,21 @@
 | 
			
		||||
                "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/prism-svelte": {
 | 
			
		||||
            "version": "0.4.7",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz",
 | 
			
		||||
            "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==",
 | 
			
		||||
            "dev": true
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/prismjs": {
 | 
			
		||||
            "version": "1.29.0",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
 | 
			
		||||
            "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "engines": {
 | 
			
		||||
                "node": ">=6"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/process": {
 | 
			
		||||
            "version": "0.11.10",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
 | 
			
		||||
@@ -6299,6 +6336,19 @@
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
 | 
			
		||||
            "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/unist-util-stringify-position": {
 | 
			
		||||
            "version": "2.0.3",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
 | 
			
		||||
            "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/unist": "^2.0.2"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": {
 | 
			
		||||
                "type": "opencollective",
 | 
			
		||||
                "url": "https://opencollective.com/unified"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/update-browserslist-db": {
 | 
			
		||||
            "version": "1.0.13",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
 | 
			
		||||
@@ -6352,6 +6402,20 @@
 | 
			
		||||
                "spdx-expression-parse": "^3.0.0"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/vfile-message": {
 | 
			
		||||
            "version": "2.0.4",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
 | 
			
		||||
            "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
 | 
			
		||||
            "dev": true,
 | 
			
		||||
            "dependencies": {
 | 
			
		||||
                "@types/unist": "^2.0.0",
 | 
			
		||||
                "unist-util-stringify-position": "^2.0.0"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": {
 | 
			
		||||
                "type": "opencollective",
 | 
			
		||||
                "url": "https://opencollective.com/unified"
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        "node_modules/virtual-dom": {
 | 
			
		||||
            "version": "2.1.1",
 | 
			
		||||
            "resolved": "https://registry.npmjs.org/virtual-dom/-/virtual-dom-2.1.1.tgz",
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,7 @@
 | 
			
		||||
        "eslint-config-prettier": "^9.1.0",
 | 
			
		||||
        "eslint-plugin-svelte": "^2.40.0",
 | 
			
		||||
        "events": "^3.3.0",
 | 
			
		||||
        "mdsvex": "^0.11.2",
 | 
			
		||||
        "postcss": "^8.4.38",
 | 
			
		||||
        "prettier": "^3.3.2",
 | 
			
		||||
        "prettier-plugin-svelte": "^3.2.4",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								website/src/lib/components/Footer.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								website/src/lib/components/Footer.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { Button } from '$lib/components/ui/button';
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<footer class="w-full">
 | 
			
		||||
	<div class="mx-6 py-2 flex flex-row flex-wrap border-t">
 | 
			
		||||
		<div class="flex flex-row" id="contact">
 | 
			
		||||
			<Button variant="link" href="https://github.com/gpxstudio/gpx.studio" target="_blank"
 | 
			
		||||
				>GitHub</Button
 | 
			
		||||
			>
 | 
			
		||||
			<Button variant="link" href="https://facebook.com/gpx.studio" target="_blank">Facebook</Button
 | 
			
		||||
			>
 | 
			
		||||
			<Button variant="link" href="https://twitter.com/gpxstudio" target="_blank">Twitter</Button>
 | 
			
		||||
			<Button variant="link" href="mailto:hello@gpx.studio" target="_blank">Mail</Button>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</footer>
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { base } from '$app/paths';
 | 
			
		||||
 | 
			
		||||
	import { mode } from 'mode-watcher';
 | 
			
		||||
 | 
			
		||||
	export let iconOnly = false;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								website/src/lib/components/MapboxLogo.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								website/src/lib/components/MapboxLogo.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { base } from '$app/paths';
 | 
			
		||||
	import { mode } from 'mode-watcher';
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<a href="https://mapbox.com" target="_blank">
 | 
			
		||||
	<img
 | 
			
		||||
		src="{base}/mapbox-logo-{$mode === 'dark' ? 'white' : 'black'}.svg"
 | 
			
		||||
		alt="Logo of Mapbox."
 | 
			
		||||
		{...$$restProps}
 | 
			
		||||
	/>
 | 
			
		||||
</a>
 | 
			
		||||
							
								
								
									
										67
									
								
								website/src/lib/components/Nav.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								website/src/lib/components/Nav.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { goto } from '$app/navigation';
 | 
			
		||||
	import Logo from '$lib/components/Logo.svelte';
 | 
			
		||||
	import { Button } from '$lib/components/ui/button';
 | 
			
		||||
	import * as Select from '$lib/components/ui/select';
 | 
			
		||||
	import { languages } from '$lib/languages';
 | 
			
		||||
	import { BookOpenText, Info, Languages, Map } from 'lucide-svelte';
 | 
			
		||||
	import { _, locale } from 'svelte-i18n';
 | 
			
		||||
 | 
			
		||||
	let selected = {
 | 
			
		||||
		value: '',
 | 
			
		||||
		label: ''
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	$: if ($locale) {
 | 
			
		||||
		selected = {
 | 
			
		||||
			value: $locale,
 | 
			
		||||
			label: languages[$locale]
 | 
			
		||||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getURLForLanguage(lang?: string): string {
 | 
			
		||||
		let currentPath = window.location.pathname;
 | 
			
		||||
		let currentPathArray = currentPath.split('/');
 | 
			
		||||
 | 
			
		||||
		if (currentPathArray.length > 1 && languages.hasOwnProperty(currentPathArray[1])) {
 | 
			
		||||
			currentPathArray.splice(1, 1);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (lang !== undefined && lang !== 'en') {
 | 
			
		||||
			currentPathArray.splice(1, 0, lang);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return currentPathArray.join('/');
 | 
			
		||||
	}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<nav class="w-full sticky top-0 bg-background">
 | 
			
		||||
	<div class="mx-6 py-2 flex flex-row items-center border-b">
 | 
			
		||||
		<a href="./">
 | 
			
		||||
			<Logo class="h-6" />
 | 
			
		||||
		</a>
 | 
			
		||||
		<Button variant="link" class="text-base" href="./">
 | 
			
		||||
			<Map size="18" class="mr-1.5" />
 | 
			
		||||
			{$_('menu.app')}
 | 
			
		||||
		</Button>
 | 
			
		||||
		<Button variant="link" class="text-base" href="./about">
 | 
			
		||||
			<Info size="18" class="mr-1.5" />
 | 
			
		||||
			{$_('menu.about')}
 | 
			
		||||
		</Button>
 | 
			
		||||
		<Button variant="link" class="text-base" href="./documentation">
 | 
			
		||||
			<BookOpenText size="18" class="mr-1.5" />
 | 
			
		||||
			{$_('menu.documentation')}
 | 
			
		||||
		</Button>
 | 
			
		||||
		<Select.Root bind:selected onSelectedChange={(s) => goto(getURLForLanguage(s?.value))}>
 | 
			
		||||
			<Select.Trigger class="w-[180px] ml-auto">
 | 
			
		||||
				<Languages size="16" />
 | 
			
		||||
				<Select.Value class="ml-2 mr-auto" />
 | 
			
		||||
			</Select.Trigger>
 | 
			
		||||
			<Select.Content>
 | 
			
		||||
				{#each Object.entries(languages) as [key, value]}
 | 
			
		||||
					<Select.Item value={key}>{value}</Select.Item>
 | 
			
		||||
				{/each}
 | 
			
		||||
			</Select.Content>
 | 
			
		||||
		</Select.Root>
 | 
			
		||||
	</div>
 | 
			
		||||
</nav>
 | 
			
		||||
							
								
								
									
										9
									
								
								website/src/lib/components/docs/Docs.svx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								website/src/lib/components/docs/Docs.svx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
<script>
 | 
			
		||||
	import Test from '$lib/docs/en/introduction/test.md';
 | 
			
		||||
 | 
			
		||||
	const toc = {
 | 
			
		||||
		introduction: ['test']
 | 
			
		||||
	};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<Test />
 | 
			
		||||
							
								
								
									
										19
									
								
								website/src/lib/components/docs/DocsLoader.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								website/src/lib/components/docs/DocsLoader.svelte
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { _, locale } from 'svelte-i18n';
 | 
			
		||||
 | 
			
		||||
	export let path: string;
 | 
			
		||||
 | 
			
		||||
	let module = undefined;
 | 
			
		||||
 | 
			
		||||
	const modules = import.meta.glob('/src/lib/docs/**/*.{md,svx}');
 | 
			
		||||
 | 
			
		||||
	$: if ($locale) {
 | 
			
		||||
		modules[`/src/lib/docs/${$locale}/${path}`]().then((mod) => {
 | 
			
		||||
			module = mod.default;
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
{#if module !== undefined}
 | 
			
		||||
	<svelte:component this={module} />
 | 
			
		||||
{/if}
 | 
			
		||||
							
								
								
									
										33
									
								
								website/src/lib/docs/en/about.svx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								website/src/lib/docs/en/about.svx
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
    import MapboxLogo from '$lib/components/MapboxLogo.svelte';
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
**gpx.studio** is a *free* and *open-source* online GPX viewer and editor which allows to:
 | 
			
		||||
- visualize multiple traces in different colors and aided by many different maps (cycling, hiking, satellite, etc.)
 | 
			
		||||
- edit traces by adding, inserting, moving or deleting track points
 | 
			
		||||
- reverse traces
 | 
			
		||||
- add or change the timestamps of a trace
 | 
			
		||||
- view, add, edit and remove waypoints
 | 
			
		||||
- reduce the number of track points
 | 
			
		||||
- view and rework the structure of the file
 | 
			
		||||
- automatically add elevation data to traces if missing
 | 
			
		||||
- merge multiple traces, extending time, heart rate, cadence, power and temperature data where needed
 | 
			
		||||
- extract segments from traces and perform any other action while maintaining the segments' structure within files
 | 
			
		||||
- save the result on your computer or to your Google Drive™ to get a shareable link and embedding code
 | 
			
		||||
 | 
			
		||||
## Mapbox Community 🤝
 | 
			
		||||
 | 
			
		||||
[Mapbox](https://mapbox.com) is the company providing some of the beautiful maps on this website. They created a program called [Mapbox Community](https://www.mapbox.com/community) to support non-profits, educational institutions, and positive-impact organizations. We are very lucky and grateful to have joined this program and to benefit from a great discount on all API rates.
 | 
			
		||||
 | 
			
		||||
<MapboxLogo class="h-10" />
 | 
			
		||||
 | 
			
		||||
## Help keep the website free (and ad-free) 🙏
 | 
			
		||||
 | 
			
		||||
Each time you add or move a track point, we make a request to our servers to retrieve a route on the road network. We also rely on APIs from Mapbox to load beautiful maps, retrieve elevation data and process geocoding requests (looking for a place in the search bar).
 | 
			
		||||
 | 
			
		||||
Unfortunately this is very costly so if you like the tool and use it frequently, please consider making even a small donation so that this website can stay free to use and ad-free. Thanks for your support!
 | 
			
		||||
 | 
			
		||||
## Translating 🗣
 | 
			
		||||
 | 
			
		||||
The website is translated by volunteers on a collaborative translation platform. You can help complete and improve the translations by joining the [Crowdin project](https://crowdin.com/project/gpxstudio). [Get in touch](#contact) if you would like to start the translation in a new language. Any help is greatly appreciated!
 | 
			
		||||
							
								
								
									
										0
									
								
								website/src/lib/docs/en/introduction/test.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								website/src/lib/docs/en/introduction/test.md
									
									
									
									
									
										Normal file
									
								
							@@ -1,3 +1,3 @@
 | 
			
		||||
export const languages = {
 | 
			
		||||
export const languages: Record<string, string> = {
 | 
			
		||||
    'en': 'English',
 | 
			
		||||
};
 | 
			
		||||
@@ -52,8 +52,10 @@
 | 
			
		||||
        "layers": "Map layers...",
 | 
			
		||||
        "distance_markers": "Distance markers",
 | 
			
		||||
        "direction_markers": "Direction markers",
 | 
			
		||||
        "app": "App",
 | 
			
		||||
        "about": "About",
 | 
			
		||||
        "donate": "Donate",
 | 
			
		||||
        "documentation": "Documentation",
 | 
			
		||||
        "ctrl": "Ctrl",
 | 
			
		||||
        "click": "Click",
 | 
			
		||||
        "drag": "Drag",
 | 
			
		||||
 
 | 
			
		||||
@@ -2,14 +2,55 @@
 | 
			
		||||
	import { ModeWatcher } from 'mode-watcher';
 | 
			
		||||
	import { isLoading, locale, _ } from 'svelte-i18n';
 | 
			
		||||
	import { page } from '$app/stores';
 | 
			
		||||
	import Nav from '$lib/components/Nav.svelte';
 | 
			
		||||
	import Footer from '$lib/components/Footer.svelte';
 | 
			
		||||
 | 
			
		||||
	if ($page.params.language) {
 | 
			
		||||
	$: if ($page.params.language === '' && $locale !== 'en') {
 | 
			
		||||
		locale.set('en');
 | 
			
		||||
	} else if ($page.params.language && $locale !== $page.params.language) {
 | 
			
		||||
		locale.set($page.params.language);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	const appRoute = '/[...language]';
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<ModeWatcher />
 | 
			
		||||
 | 
			
		||||
{#if !$isLoading}
 | 
			
		||||
	<slot />
 | 
			
		||||
	{#if $page.route.id === appRoute}
 | 
			
		||||
		<slot />
 | 
			
		||||
	{:else}
 | 
			
		||||
		<Nav />
 | 
			
		||||
		<main>
 | 
			
		||||
			<slot />
 | 
			
		||||
		</main>
 | 
			
		||||
		<Footer />
 | 
			
		||||
	{/if}
 | 
			
		||||
{/if}
 | 
			
		||||
 | 
			
		||||
<style lang="postcss">
 | 
			
		||||
	:global(.markdown) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	:global(.markdown h1) {
 | 
			
		||||
		@apply text-3xl;
 | 
			
		||||
		@apply font-bold;
 | 
			
		||||
		@apply mt-4 mb-2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	:global(.markdown h2) {
 | 
			
		||||
		@apply text-2xl;
 | 
			
		||||
		@apply font-bold;
 | 
			
		||||
		@apply mt-4 mb-2;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	:global(.markdown a) {
 | 
			
		||||
		@apply text-blue-500;
 | 
			
		||||
		@apply hover:underline;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	:global(.markdown ul) {
 | 
			
		||||
		@apply list-disc;
 | 
			
		||||
		@apply pl-4;
 | 
			
		||||
	}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { base } from '$app/paths';
 | 
			
		||||
	import DocsLoader from '$lib/components/docs/DocsLoader.svelte';
 | 
			
		||||
	import { languages } from '$lib/languages';
 | 
			
		||||
	import { _ } from 'svelte-i18n';
 | 
			
		||||
</script>
 | 
			
		||||
@@ -21,3 +22,7 @@
 | 
			
		||||
		{/if}
 | 
			
		||||
	{/each}
 | 
			
		||||
</svelte:head>
 | 
			
		||||
 | 
			
		||||
<div class="px-10 py-6 markdown">
 | 
			
		||||
	<DocsLoader path="about.svx" />
 | 
			
		||||
</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
<script>
 | 
			
		||||
	import Docs from '$lib/components/docs/Docs.svx';
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<Docs />
 | 
			
		||||
							
								
								
									
										38
									
								
								website/static/mapbox-logo-black.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								website/static/mapbox-logo-black.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<svg version="1.1" id="new" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
			
		||||
	 viewBox="0 0 800 180" style="enable-background:new 0 0 800 180;" xml:space="preserve">
 | 
			
		||||
<title>Mapbox_Logo_08</title>
 | 
			
		||||
<g>
 | 
			
		||||
	<g>
 | 
			
		||||
		<path d="M594.6,49.8c-9.9,0-19.4,4.1-26.3,11.3V23c0-1.2-1-2.2-2.2-2.2l0,0h-13.4c-1.2,0-2.2,1-2.2,2.2v103c0,1.2,1,2.2,2.2,2.2
 | 
			
		||||
			h13.4c1.2,0,2.2-1,2.2-2.2v0v-7.1c6.9,7.2,16.3,11.3,26.3,11.3c20.9,0,37.8-18,37.8-40.2S615.5,49.8,594.6,49.8z M591.5,114.1
 | 
			
		||||
			c-12.7,0-23-10.6-23.1-23.8v-0.6c0.2-13.2,10.4-23.8,23.1-23.8c12.8,0,23.1,10.8,23.1,24.1S604.2,114.1,591.5,114.1L591.5,114.1z"
 | 
			
		||||
			/>
 | 
			
		||||
		<path d="M681.7,49.8c-22.6,0-40.9,18-40.9,40.2s18.3,40.2,40.9,40.2c22.6,0,40.9-18,40.9-40.2S704.3,49.8,681.7,49.8z
 | 
			
		||||
			 M681.6,114.1c-12.8,0-23.1-10.8-23.1-24.1s10.4-24.1,23.1-24.1s23.1,10.8,23.1,24.1S694.3,114.1,681.6,114.1L681.6,114.1z"/>
 | 
			
		||||
		<path d="M431.6,51.8h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0v7.1c-6.9-7.2-16.3-11.3-26.3-11.3c-20.9,0-37.8,18-37.8,40.2
 | 
			
		||||
			s16.9,40.2,37.8,40.2c9.9,0,19.4-4.1,26.3-11.3v7.1c0,1.2,1,2.2,2.2,2.2l0,0h13.4c1.2,0,2.2-1,2.2-2.2v0V54
 | 
			
		||||
			C433.8,52.8,432.8,51.8,431.6,51.8z M392.8,114.1c-12.8,0-23.1-10.8-23.1-24.1s10.4-24.1,23.1-24.1c12.7,0,23,10.6,23.1,23.8v0.6
 | 
			
		||||
			C415.8,103.5,405.5,114.1,392.8,114.1L392.8,114.1z"/>
 | 
			
		||||
		<path d="M498.5,49.8c-9.9,0-19.4,4.1-26.3,11.3V54c0-1.2-1-2.2-2.2-2.2l0,0h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0v103
 | 
			
		||||
			c0,1.2,1,2.2,2.2,2.2l0,0h13.4c1.2,0,2.2-1,2.2-2.2v0v-38.1c6.9,7.2,16.3,11.3,26.3,11.3c20.9,0,37.8-18,37.8-40.2
 | 
			
		||||
			S519.4,49.8,498.5,49.8z M495.4,114.1c-12.7,0-23-10.6-23.1-23.8v-0.6c0.2-13.2,10.4-23.8,23.1-23.8c12.8,0,23.1,10.8,23.1,24.1
 | 
			
		||||
			S508.2,114.1,495.4,114.1L495.4,114.1z"/>
 | 
			
		||||
		<path d="M311.8,49.8c-10,0.1-19.1,5.9-23.4,15c-4.9-9.3-14.7-15.1-25.2-15c-8.2,0-15.9,4-20.7,10.6V54c0-1.2-1-2.2-2.2-2.2l0,0
 | 
			
		||||
			h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0v72c0,1.2,1,2.2,2.2,2.2h0h13.4c1.2,0,2.2-1,2.2-2.2v0V82.9c0.5-9.6,7.2-17.3,15.4-17.3
 | 
			
		||||
			c8.5,0,15.6,7.1,15.6,16.4v44c0,1.2,1,2.2,2.2,2.2l13.5,0c1.2,0,2.2-1,2.2-2.2c0,0,0,0,0,0l-0.1-44.8c1.2-8.8,7.5-15.6,15.2-15.6
 | 
			
		||||
			c8.5,0,15.6,7.1,15.6,16.4v44c0,1.2,1,2.2,2.2,2.2l13.5,0c1.2,0,2.2-1,2.2-2.2c0,0,0,0,0,0l-0.1-49.5
 | 
			
		||||
			C339.9,61.7,327.3,49.8,311.8,49.8z"/>
 | 
			
		||||
		<path d="M794.7,125.1l-23.2-35.3l23-35c0.6-0.9,0.3-2.2-0.6-2.8c-0.3-0.2-0.7-0.3-1.1-0.3h-15.5c-1.2,0-2.3,0.6-2.9,1.6L760.9,76
 | 
			
		||||
			l-13.5-22.6c-0.6-1-1.7-1.6-2.9-1.6h-15.5c-1.1,0-2,0.9-2,2c0,0.4,0.1,0.8,0.3,1.1l23,35l-23.2,35.3c-0.6,0.9-0.3,2.2,0.6,2.8
 | 
			
		||||
			c0.3,0.2,0.7,0.3,1.1,0.3h15.5c1.2,0,2.3-0.6,2.9-1.6l13.8-23l13.8,23c0.6,1,1.7,1.6,2.9,1.6H793c1.1,0,2-0.9,2-2
 | 
			
		||||
			C795,125.9,794.9,125.5,794.7,125.1z"/>
 | 
			
		||||
	</g>
 | 
			
		||||
	<g>
 | 
			
		||||
		<path d="M93.9,1.1C44.8,1.1,5,40.9,5,90s39.8,88.9,88.9,88.9s88.9-39.8,88.9-88.9C182.8,40.9,143,1.1,93.9,1.1z M136.1,111.8
 | 
			
		||||
			c-30.4,30.4-84.7,20.7-84.7,20.7s-9.8-54.2,20.7-84.7C89,30.9,117,31.6,134.7,49.2S153,94.9,136.1,111.8L136.1,111.8z"/>
 | 
			
		||||
		<polygon points="104.1,53.2 95.4,71.1 77.5,79.8 95.4,88.5 104.1,106.4 112.8,88.5 130.7,79.8 112.8,71.1 		"/>
 | 
			
		||||
	</g>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 3.1 KiB  | 
							
								
								
									
										42
									
								
								website/static/mapbox-logo-white.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								website/static/mapbox-logo-white.svg
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<svg version="1.1" id="new" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 | 
			
		||||
	 viewBox="0 0 800 180" style="enable-background:new 0 0 800 180;" xml:space="preserve">
 | 
			
		||||
<style type="text/css">
 | 
			
		||||
	.st0{fill:#FFFFFF;}
 | 
			
		||||
</style>
 | 
			
		||||
<title>Mapbox_Logo_08</title>
 | 
			
		||||
<g>
 | 
			
		||||
	<g>
 | 
			
		||||
		<path class="st0" d="M594.6,49.8c-9.9,0-19.4,4.1-26.3,11.3V23c0-1.2-1-2.2-2.2-2.2l0,0h-13.4c-1.2,0-2.2,1-2.2,2.2v103
 | 
			
		||||
			c0,1.2,1,2.2,2.2,2.2h13.4c1.2,0,2.2-1,2.2-2.2v0v-7.1c6.9,7.2,16.3,11.3,26.3,11.3c20.9,0,37.8-18,37.8-40.2
 | 
			
		||||
			S615.5,49.8,594.6,49.8z M591.5,114.1c-12.7,0-23-10.6-23.1-23.8v-0.6c0.2-13.2,10.4-23.8,23.1-23.8c12.8,0,23.1,10.8,23.1,24.1
 | 
			
		||||
			S604.2,114.1,591.5,114.1L591.5,114.1z"/>
 | 
			
		||||
		<path class="st0" d="M681.7,49.8c-22.6,0-40.9,18-40.9,40.2s18.3,40.2,40.9,40.2c22.6,0,40.9-18,40.9-40.2S704.3,49.8,681.7,49.8z
 | 
			
		||||
			 M681.6,114.1c-12.8,0-23.1-10.8-23.1-24.1s10.4-24.1,23.1-24.1s23.1,10.8,23.1,24.1S694.3,114.1,681.6,114.1L681.6,114.1z"/>
 | 
			
		||||
		<path class="st0" d="M431.6,51.8h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0v7.1c-6.9-7.2-16.3-11.3-26.3-11.3
 | 
			
		||||
			c-20.9,0-37.8,18-37.8,40.2s16.9,40.2,37.8,40.2c9.9,0,19.4-4.1,26.3-11.3v7.1c0,1.2,1,2.2,2.2,2.2l0,0h13.4c1.2,0,2.2-1,2.2-2.2
 | 
			
		||||
			v0V54C433.8,52.8,432.8,51.8,431.6,51.8z M392.8,114.1c-12.8,0-23.1-10.8-23.1-24.1s10.4-24.1,23.1-24.1c12.7,0,23,10.6,23.1,23.8
 | 
			
		||||
			v0.6C415.8,103.5,405.5,114.1,392.8,114.1L392.8,114.1z"/>
 | 
			
		||||
		<path class="st0" d="M498.5,49.8c-9.9,0-19.4,4.1-26.3,11.3V54c0-1.2-1-2.2-2.2-2.2l0,0h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0
 | 
			
		||||
			v103c0,1.2,1,2.2,2.2,2.2l0,0h13.4c1.2,0,2.2-1,2.2-2.2v0v-38.1c6.9,7.2,16.3,11.3,26.3,11.3c20.9,0,37.8-18,37.8-40.2
 | 
			
		||||
			S519.4,49.8,498.5,49.8z M495.4,114.1c-12.7,0-23-10.6-23.1-23.8v-0.6c0.2-13.2,10.4-23.8,23.1-23.8c12.8,0,23.1,10.8,23.1,24.1
 | 
			
		||||
			S508.2,114.1,495.4,114.1L495.4,114.1z"/>
 | 
			
		||||
		<path class="st0" d="M311.8,49.8c-10,0.1-19.1,5.9-23.4,15c-4.9-9.3-14.7-15.1-25.2-15c-8.2,0-15.9,4-20.7,10.6V54
 | 
			
		||||
			c0-1.2-1-2.2-2.2-2.2l0,0h-13.4c-1.2,0-2.2,1-2.2,2.2c0,0,0,0,0,0v72c0,1.2,1,2.2,2.2,2.2h0h13.4c1.2,0,2.2-1,2.2-2.2v0V82.9
 | 
			
		||||
			c0.5-9.6,7.2-17.3,15.4-17.3c8.5,0,15.6,7.1,15.6,16.4v44c0,1.2,1,2.2,2.2,2.2l13.5,0c1.2,0,2.2-1,2.2-2.2c0,0,0,0,0,0l-0.1-44.8
 | 
			
		||||
			c1.2-8.8,7.5-15.6,15.2-15.6c8.5,0,15.6,7.1,15.6,16.4v44c0,1.2,1,2.2,2.2,2.2l13.5,0c1.2,0,2.2-1,2.2-2.2c0,0,0,0,0,0l-0.1-49.5
 | 
			
		||||
			C339.9,61.7,327.3,49.8,311.8,49.8z"/>
 | 
			
		||||
		<path class="st0" d="M794.7,125.1l-23.2-35.3l23-35c0.6-0.9,0.3-2.2-0.6-2.8c-0.3-0.2-0.7-0.3-1.1-0.3h-15.5
 | 
			
		||||
			c-1.2,0-2.3,0.6-2.9,1.6L760.9,76l-13.5-22.6c-0.6-1-1.7-1.6-2.9-1.6h-15.5c-1.1,0-2,0.9-2,2c0,0.4,0.1,0.8,0.3,1.1l23,35
 | 
			
		||||
			l-23.2,35.3c-0.6,0.9-0.3,2.2,0.6,2.8c0.3,0.2,0.7,0.3,1.1,0.3h15.5c1.2,0,2.3-0.6,2.9-1.6l13.8-23l13.8,23c0.6,1,1.7,1.6,2.9,1.6
 | 
			
		||||
			H793c1.1,0,2-0.9,2-2C795,125.9,794.9,125.5,794.7,125.1z"/>
 | 
			
		||||
	</g>
 | 
			
		||||
	<g>
 | 
			
		||||
		<path class="st0" d="M93.9,1.1C44.8,1.1,5,40.9,5,90s39.8,88.9,88.9,88.9s88.9-39.8,88.9-88.9C182.8,40.9,143,1.1,93.9,1.1z
 | 
			
		||||
			 M136.1,111.8c-30.4,30.4-84.7,20.7-84.7,20.7s-9.8-54.2,20.7-84.7C89,30.9,117,31.6,134.7,49.2S153,94.9,136.1,111.8L136.1,111.8
 | 
			
		||||
			z"/>
 | 
			
		||||
		<polygon class="st0" points="104.1,53.2 95.4,71.1 77.5,79.8 95.4,88.5 104.1,106.4 112.8,88.5 130.7,79.8 112.8,71.1 		"/>
 | 
			
		||||
	</g>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 3.2 KiB  | 
@@ -1,9 +1,16 @@
 | 
			
		||||
import adapter from '@sveltejs/adapter-static';
 | 
			
		||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
 | 
			
		||||
import { mdsvex } from 'mdsvex';
 | 
			
		||||
 | 
			
		||||
/** @type {import('mdsvex').MdsvexOptions} */
 | 
			
		||||
const mdsvexOptions = {
 | 
			
		||||
    extensions: ['.svx', '.md']
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** @type {import('@sveltejs/kit').Config} */
 | 
			
		||||
const config = {
 | 
			
		||||
    preprocess: vitePreprocess(),
 | 
			
		||||
    extensions: ['.svelte', ...mdsvexOptions.extensions],
 | 
			
		||||
    preprocess: [vitePreprocess(), mdsvex(mdsvexOptions)],
 | 
			
		||||
    kit: {
 | 
			
		||||
        adapter: adapter({
 | 
			
		||||
            pages: 'build',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user