Initial commit

This commit is contained in:
Jonas_Jones 2023-09-15 20:24:31 +02:00 committed by GitHub
commit 09c002f1ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 2255 additions and 0 deletions

12
src/app.d.ts vendored Normal file
View file

@ -0,0 +1,12 @@
// See https://kit.svelte.dev/docs/types#app
// for information about these interfaces
declare global {
namespace App {
// interface Error {}
// interface Locals {}
// interface PageData {}
// interface Platform {}
}
}
export {};

12
src/app.html Normal file
View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<meta name="viewport" content="width=device-width" />
%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!-- Footer.svelte -->
<footer>
<a href="/">Home</a>
<nav>
<ul>
<li>
<a href="/about">About</a>
</li>
<li>
<a href="/contact">Contact</a>
</li>
</ul>
</nav>
</footer>
<style>
footer {
padding: 1rem;
background: lightskyblue;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ul {
margin: 0;
list-style-type: none;
display: flex;
gap: 1rem;
}
a {
text-decoration: none;
color: inherit;
}
</style>

View file

@ -0,0 +1,36 @@
<!-- Header.svelte -->
<header>
<a href="/"><img src="/favicon.png" alt="logo" width="50" height="50" /></a>
<nav>
<ul>
<li>
<a href="/about">About</a>
</li>
<li>
<a href="/contact">Contact</a>
</li>
</ul>
</nav>
</header>
<style>
header {
padding: 1rem;
background: lightskyblue;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
ul {
margin: 0;
list-style-type: none;
display: flex;
gap: 1rem;
}
a {
text-decoration: none;
color: inherit;
}
</style>

View file

@ -0,0 +1,49 @@
<script>
let data = import.meta.glob('/src/routes/**/+page.md');
let paths = data;
function buildHierarchy(paths) {
const nestedList = {};
let fixedpaths = [];
let fixedpaths2 = [];
fixedpaths = Object.keys(paths);
fixedpaths.forEach((path) => {
const fixedpath = path.replace("/+page.md", "").replace("/src/routes", "");
fixedpaths2.push(fixedpath);
});
fixedpaths2.forEach((folder) => {
const parts = folder.split('/').filter(Boolean);
let currentNode = nestedList;
parts.forEach((part) => {
if (!currentNode[part]) {
currentNode[part] = {};
}
currentNode = currentNode[part];
});
});
return nestedList;
}
const nestedFolders = buildHierarchy(paths);
// Helper function to recursively render the nested list
function renderNestedList(node, prefix = '') {
return Object.keys(node).map((key) => {
const fullPath = `${prefix}/${key}`;
return `<li><a href="${fullPath}">${key}</a><ul>${renderNestedList(node[key], fullPath)}</ul></li>`;
}).join('');
}
const renderedList = `<ul>${renderNestedList(nestedFolders)}</ul>`;
</script>
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Pages</h1>
{@html renderedList}
</div>
</div>
</div>

34
src/lib/styles/style.css Normal file
View file

@ -0,0 +1,34 @@
/* style.css */
body {
margin: 0;
background: #eee;
color: #333;
font-family: sans-serif;
}
main {
padding: 1rem;
margin: 2rem auto;
max-width: 40rem;
}
.column {
float: left;
padding: 10px;
height: auto;
display: table-cell;
}
.navbar {
border-right: black solid 1px;
}
.container {
display: table;
}
.row:after {
content: "";
display: table;
clear: both;
}

15
src/lib/utils/index.js Normal file
View file

@ -0,0 +1,15 @@
export const fetchMarkdownPages = async () => {
const allPageFiles = import.meta.glob('/src/routes/**/+page.md');
const iterablePageFiles = Object.entries(allPageFiles);
const allPages = await Promise.all(
iterablePageFiles.map(async ([path]) => {
const pagePath = path.slice(11, -3);
return {
path: pagePath
};
})
);
return allPages;
};

22
src/routes/+layout.svelte Normal file
View file

@ -0,0 +1,22 @@
<script>
import Header from '$lib/components/Header.svelte';
import Footer from '$lib/components/Footer.svelte';
import Navbar from '$lib/components/Navbar.svelte';
import '$lib/styles/style.css';
</script>
<Header />
<div class="container">
<div class="column navbar"><Navbar /></div>
<div class="column content">
<main>
<slot />
</main>
</div>
</div>
<Footer />

65
src/routes/+page.md Normal file
View file

@ -0,0 +1,65 @@
# Welcome to the Svelte Markdown Wiki!
Every page here is a Markdown file. Svelte does the rest!
---
## Different headers
### Even smaller header
You can use **bold**, *italic*, and ~~strikethrough~~ text.
You can also use [links](/).
You can use `code` blocks.
You can use tables:
| Header 1 | Header 2 |
| -------- | -------- |
| Cell 1 | Cell 2 |
You can use blockquotes:
> This is a blockquote.
> It can span multiple lines.
> > You can even nest blockquotes.
> > > And nest them deeper.
> > > > And deeper.
> > > > > And deeper.
You can use horizontal rules:
---
You can use ordered lists:
1. Item 1
2. Item 2
3. Item 3
1. Item 3.1
2. Item 3.2
4. Item 4
5. Item 5
You can use unordered lists:
- Item 1
- Item 2
- Item 3
- Item 3.1
- Item 3.2
- Item 4
- Item 5
You can use codeblocks:
```js
const foo = 'bar';
```
You can use images:
![Svelte logo](/favicon.png)

View file

@ -0,0 +1,2 @@
# Exampletopic
This is an example topic.

View file

@ -0,0 +1,2 @@
# Introduction
This is the introduction.

View file

@ -0,0 +1,2 @@
# Q & A
This is an example Q&A page

View file

@ -0,0 +1,10 @@
import { fetchMarkdownPages } from '$lib/utils';
import { json } from '@sveltejs/kit';
export const GET = async () => {
const allPosts = await fetchMarkdownPages();
// sort posts alphabetically
allPosts.sort((a, b) => a.path.localeCompare(b.path));
return json(allPosts);
};

View file

@ -0,0 +1,5 @@
# About
A Wiki Template by Jonas_Jones
[GitHub Repository](https://github.com/J-onasJones/SvelteMarkdownWiki)

View file

@ -0,0 +1,3 @@
# Contact
This is the contact page.