Initial Project Setup
This commit is contained in:
commit
12937a9e9f
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
1
Backend/test.txt
Normal file
1
Backend/test.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
dwdw
|
13
Frontend/.eslintignore
Normal file
13
Frontend/.eslintignore
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/build
|
||||||
|
/.svelte-kit
|
||||||
|
/package
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|
||||||
|
# Ignore files for PNPM, NPM and YARN
|
||||||
|
pnpm-lock.yaml
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
31
Frontend/.eslintrc.cjs
Normal file
31
Frontend/.eslintrc.cjs
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/** @type { import("eslint").Linter.Config } */
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:@typescript-eslint/recommended',
|
||||||
|
'plugin:svelte/recommended',
|
||||||
|
'prettier'
|
||||||
|
],
|
||||||
|
parser: '@typescript-eslint/parser',
|
||||||
|
plugins: ['@typescript-eslint'],
|
||||||
|
parserOptions: {
|
||||||
|
sourceType: 'module',
|
||||||
|
ecmaVersion: 2020,
|
||||||
|
extraFileExtensions: ['.svelte']
|
||||||
|
},
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
es2017: true,
|
||||||
|
node: true
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['*.svelte'],
|
||||||
|
parser: 'svelte-eslint-parser',
|
||||||
|
parserOptions: {
|
||||||
|
parser: '@typescript-eslint/parser'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
10
Frontend/.gitignore
vendored
Normal file
10
Frontend/.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/build
|
||||||
|
/.svelte-kit
|
||||||
|
/package
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
vite.config.js.timestamp-*
|
||||||
|
vite.config.ts.timestamp-*
|
1
Frontend/.npmrc
Normal file
1
Frontend/.npmrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
engine-strict=true
|
4
Frontend/.prettierignore
Normal file
4
Frontend/.prettierignore
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Ignore files for PNPM, NPM and YARN
|
||||||
|
pnpm-lock.yaml
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
8
Frontend/.prettierrc
Normal file
8
Frontend/.prettierrc
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"useTabs": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"printWidth": 100,
|
||||||
|
"plugins": ["prettier-plugin-svelte"],
|
||||||
|
"overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
|
||||||
|
}
|
120
Frontend/.vscode/settings.json
vendored
Normal file
120
Frontend/.vscode/settings.json
vendored
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"prettier.documentSelectors": [
|
||||||
|
"**/*.svelte"
|
||||||
|
],
|
||||||
|
"tailwindCSS.classAttributes": [
|
||||||
|
"class",
|
||||||
|
"accent",
|
||||||
|
"active",
|
||||||
|
"animIndeterminate",
|
||||||
|
"aspectRatio",
|
||||||
|
"background",
|
||||||
|
"badge",
|
||||||
|
"bgBackdrop",
|
||||||
|
"bgDark",
|
||||||
|
"bgDrawer",
|
||||||
|
"bgLight",
|
||||||
|
"blur",
|
||||||
|
"border",
|
||||||
|
"button",
|
||||||
|
"buttonAction",
|
||||||
|
"buttonBack",
|
||||||
|
"buttonClasses",
|
||||||
|
"buttonComplete",
|
||||||
|
"buttonDismiss",
|
||||||
|
"buttonNeutral",
|
||||||
|
"buttonNext",
|
||||||
|
"buttonPositive",
|
||||||
|
"buttonTextCancel",
|
||||||
|
"buttonTextConfirm",
|
||||||
|
"buttonTextFirst",
|
||||||
|
"buttonTextLast",
|
||||||
|
"buttonTextNext",
|
||||||
|
"buttonTextPrevious",
|
||||||
|
"buttonTextSubmit",
|
||||||
|
"caretClosed",
|
||||||
|
"caretOpen",
|
||||||
|
"chips",
|
||||||
|
"color",
|
||||||
|
"controlSeparator",
|
||||||
|
"controlVariant",
|
||||||
|
"cursor",
|
||||||
|
"display",
|
||||||
|
"element",
|
||||||
|
"fill",
|
||||||
|
"fillDark",
|
||||||
|
"fillLight",
|
||||||
|
"flex",
|
||||||
|
"flexDirection",
|
||||||
|
"gap",
|
||||||
|
"gridColumns",
|
||||||
|
"height",
|
||||||
|
"hover",
|
||||||
|
"inactive",
|
||||||
|
"indent",
|
||||||
|
"justify",
|
||||||
|
"meter",
|
||||||
|
"padding",
|
||||||
|
"position",
|
||||||
|
"regionAnchor",
|
||||||
|
"regionBackdrop",
|
||||||
|
"regionBody",
|
||||||
|
"regionCaption",
|
||||||
|
"regionCaret",
|
||||||
|
"regionCell",
|
||||||
|
"regionChildren",
|
||||||
|
"regionChipList",
|
||||||
|
"regionChipWrapper",
|
||||||
|
"regionCone",
|
||||||
|
"regionContent",
|
||||||
|
"regionControl",
|
||||||
|
"regionDefault",
|
||||||
|
"regionDrawer",
|
||||||
|
"regionFoot",
|
||||||
|
"regionFootCell",
|
||||||
|
"regionFooter",
|
||||||
|
"regionHead",
|
||||||
|
"regionHeadCell",
|
||||||
|
"regionHeader",
|
||||||
|
"regionIcon",
|
||||||
|
"regionInput",
|
||||||
|
"regionInterface",
|
||||||
|
"regionInterfaceText",
|
||||||
|
"regionLabel",
|
||||||
|
"regionLead",
|
||||||
|
"regionLegend",
|
||||||
|
"regionList",
|
||||||
|
"regionListItem",
|
||||||
|
"regionNavigation",
|
||||||
|
"regionPage",
|
||||||
|
"regionPanel",
|
||||||
|
"regionRowHeadline",
|
||||||
|
"regionRowMain",
|
||||||
|
"regionSummary",
|
||||||
|
"regionSymbol",
|
||||||
|
"regionTab",
|
||||||
|
"regionTrail",
|
||||||
|
"ring",
|
||||||
|
"rounded",
|
||||||
|
"select",
|
||||||
|
"shadow",
|
||||||
|
"slotDefault",
|
||||||
|
"slotFooter",
|
||||||
|
"slotHeader",
|
||||||
|
"slotLead",
|
||||||
|
"slotMessage",
|
||||||
|
"slotMeta",
|
||||||
|
"slotPageContent",
|
||||||
|
"slotPageFooter",
|
||||||
|
"slotPageHeader",
|
||||||
|
"slotSidebarLeft",
|
||||||
|
"slotSidebarRight",
|
||||||
|
"slotTrail",
|
||||||
|
"spacing",
|
||||||
|
"text",
|
||||||
|
"track",
|
||||||
|
"transition",
|
||||||
|
"width",
|
||||||
|
"zIndex"
|
||||||
|
]
|
||||||
|
}
|
38
Frontend/README.md
Normal file
38
Frontend/README.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# create-svelte
|
||||||
|
|
||||||
|
Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte).
|
||||||
|
|
||||||
|
## Creating a project
|
||||||
|
|
||||||
|
If you're seeing this, you've probably already done this step. Congrats!
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# create a new project in the current directory
|
||||||
|
npm create svelte@latest
|
||||||
|
|
||||||
|
# create a new project in my-app
|
||||||
|
npm create svelte@latest my-app
|
||||||
|
```
|
||||||
|
|
||||||
|
## Developing
|
||||||
|
|
||||||
|
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
# or start the server and open the app in a new browser tab
|
||||||
|
npm run dev -- --open
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To create a production version of your app:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
You can preview the production build with `npm run preview`.
|
||||||
|
|
||||||
|
> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
|
4528
Frontend/package-lock.json
generated
Normal file
4528
Frontend/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
45
Frontend/package.json
Normal file
45
Frontend/package.json
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite dev",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||||
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||||
|
"lint": "prettier --check . && eslint .",
|
||||||
|
"format": "prettier --write ."
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@sveltejs/adapter-auto": "^3.0.0",
|
||||||
|
"@sveltejs/kit": "^2.0.0",
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^3.0.0",
|
||||||
|
"@types/eslint": "8.56.0",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
||||||
|
"@typescript-eslint/parser": "^6.0.0",
|
||||||
|
"eslint": "^8.56.0",
|
||||||
|
"eslint-config-prettier": "^9.1.0",
|
||||||
|
"eslint-plugin-svelte": "^2.35.1",
|
||||||
|
"prettier": "^3.1.1",
|
||||||
|
"prettier-plugin-svelte": "^3.1.2",
|
||||||
|
"svelte": "^4.2.7",
|
||||||
|
"svelte-check": "^3.6.0",
|
||||||
|
"tslib": "^2.4.1",
|
||||||
|
"typescript": "^5.0.0",
|
||||||
|
"vite": "^5.0.3",
|
||||||
|
"postcss": "8.4.33",
|
||||||
|
"autoprefixer": "10.4.17",
|
||||||
|
"tailwindcss": "3.4.1",
|
||||||
|
"@skeletonlabs/skeleton": "2.8.0",
|
||||||
|
"@skeletonlabs/tw-plugin": "0.3.1",
|
||||||
|
"vite-plugin-tailwind-purgecss": "0.2.0",
|
||||||
|
"@tailwindcss/typography": "0.5.10",
|
||||||
|
"@tailwindcss/forms": "0.5.7",
|
||||||
|
"@types/node": "20.11.16"
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"dependencies": {
|
||||||
|
"@floating-ui/dom": "1.6.1"
|
||||||
|
}
|
||||||
|
}
|
6
Frontend/postcss.config.cjs
Normal file
6
Frontend/postcss.config.cjs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
}
|
9
Frontend/src/app.d.ts
vendored
Normal file
9
Frontend/src/app.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// See https://kit.svelte.dev/docs/types#app
|
||||||
|
// for information about these interfaces
|
||||||
|
// and what to do when importing types
|
||||||
|
declare namespace App {
|
||||||
|
// interface Locals {}
|
||||||
|
// interface PageData {}
|
||||||
|
// interface Error {}
|
||||||
|
// interface Platform {}
|
||||||
|
}
|
12
Frontend/src/app.html
Normal file
12
Frontend/src/app.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en" class="dark">
|
||||||
|
<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" data-theme="mpe_theme">
|
||||||
|
<div style="display: contents" class="h-full overflow-hidden">%sveltekit.body%</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
9
Frontend/src/app.postcss
Normal file
9
Frontend/src/app.postcss
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
@tailwind variants;
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
@apply h-full overflow-hidden;
|
||||||
|
}
|
1
Frontend/src/lib/index.ts
Normal file
1
Frontend/src/lib/index.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
// place files you want to import through the `$lib` alias in this folder.
|
101
Frontend/src/mpe_theme.ts
Normal file
101
Frontend/src/mpe_theme.ts
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
// You can also use the generator at https://skeleton.dev/docs/generator to create these values for you
|
||||||
|
import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin';
|
||||||
|
export const mpe_theme: CustomThemeConfig = {
|
||||||
|
name: 'mpe_theme',
|
||||||
|
properties: {
|
||||||
|
// =~= Theme Properties =~=
|
||||||
|
"--theme-font-family-base": "system-ui",
|
||||||
|
"--theme-font-family-heading": "system-ui",
|
||||||
|
"--theme-font-color-base": "0 0 0",
|
||||||
|
"--theme-font-color-dark": "255 255 255",
|
||||||
|
"--theme-rounded-base": "9999px",
|
||||||
|
"--theme-rounded-container": "8px",
|
||||||
|
"--theme-border-base": "1px",
|
||||||
|
// =~= Theme On-X Colors =~=
|
||||||
|
"--on-primary": "0 0 0",
|
||||||
|
"--on-secondary": "255 255 255",
|
||||||
|
"--on-tertiary": "0 0 0",
|
||||||
|
"--on-success": "0 0 0",
|
||||||
|
"--on-warning": "0 0 0",
|
||||||
|
"--on-error": "255 255 255",
|
||||||
|
"--on-surface": "255 255 255",
|
||||||
|
// =~= Theme Colors =~=
|
||||||
|
// primary | #0FBA81
|
||||||
|
"--color-primary-50": "219 245 236", // #dbf5ec
|
||||||
|
"--color-primary-100": "207 241 230", // #cff1e6
|
||||||
|
"--color-primary-200": "195 238 224", // #c3eee0
|
||||||
|
"--color-primary-300": "159 227 205", // #9fe3cd
|
||||||
|
"--color-primary-400": "87 207 167", // #57cfa7
|
||||||
|
"--color-primary-500": "15 186 129", // #0FBA81
|
||||||
|
"--color-primary-600": "14 167 116", // #0ea774
|
||||||
|
"--color-primary-700": "11 140 97", // #0b8c61
|
||||||
|
"--color-primary-800": "9 112 77", // #09704d
|
||||||
|
"--color-primary-900": "7 91 63", // #075b3f
|
||||||
|
// secondary | #4F46E5
|
||||||
|
"--color-secondary-50": "229 227 251", // #e5e3fb
|
||||||
|
"--color-secondary-100": "220 218 250", // #dcdafa
|
||||||
|
"--color-secondary-200": "211 209 249", // #d3d1f9
|
||||||
|
"--color-secondary-300": "185 181 245", // #b9b5f5
|
||||||
|
"--color-secondary-400": "132 126 237", // #847eed
|
||||||
|
"--color-secondary-500": "79 70 229", // #4F46E5
|
||||||
|
"--color-secondary-600": "71 63 206", // #473fce
|
||||||
|
"--color-secondary-700": "59 53 172", // #3b35ac
|
||||||
|
"--color-secondary-800": "47 42 137", // #2f2a89
|
||||||
|
"--color-secondary-900": "39 34 112", // #272270
|
||||||
|
// tertiary | #0EA5E9
|
||||||
|
"--color-tertiary-50": "219 242 252", // #dbf2fc
|
||||||
|
"--color-tertiary-100": "207 237 251", // #cfedfb
|
||||||
|
"--color-tertiary-200": "195 233 250", // #c3e9fa
|
||||||
|
"--color-tertiary-300": "159 219 246", // #9fdbf6
|
||||||
|
"--color-tertiary-400": "86 192 240", // #56c0f0
|
||||||
|
"--color-tertiary-500": "14 165 233", // #0EA5E9
|
||||||
|
"--color-tertiary-600": "13 149 210", // #0d95d2
|
||||||
|
"--color-tertiary-700": "11 124 175", // #0b7caf
|
||||||
|
"--color-tertiary-800": "8 99 140", // #08638c
|
||||||
|
"--color-tertiary-900": "7 81 114", // #075172
|
||||||
|
// success | #84cc16
|
||||||
|
"--color-success-50": "237 247 220", // #edf7dc
|
||||||
|
"--color-success-100": "230 245 208", // #e6f5d0
|
||||||
|
"--color-success-200": "224 242 197", // #e0f2c5
|
||||||
|
"--color-success-300": "206 235 162", // #ceeba2
|
||||||
|
"--color-success-400": "169 219 92", // #a9db5c
|
||||||
|
"--color-success-500": "132 204 22", // #84cc16
|
||||||
|
"--color-success-600": "119 184 20", // #77b814
|
||||||
|
"--color-success-700": "99 153 17", // #639911
|
||||||
|
"--color-success-800": "79 122 13", // #4f7a0d
|
||||||
|
"--color-success-900": "65 100 11", // #41640b
|
||||||
|
// warning | #EAB308
|
||||||
|
"--color-warning-50": "252 244 218", // #fcf4da
|
||||||
|
"--color-warning-100": "251 240 206", // #fbf0ce
|
||||||
|
"--color-warning-200": "250 236 193", // #faecc1
|
||||||
|
"--color-warning-300": "247 225 156", // #f7e19c
|
||||||
|
"--color-warning-400": "240 202 82", // #f0ca52
|
||||||
|
"--color-warning-500": "234 179 8", // #EAB308
|
||||||
|
"--color-warning-600": "211 161 7", // #d3a107
|
||||||
|
"--color-warning-700": "176 134 6", // #b08606
|
||||||
|
"--color-warning-800": "140 107 5", // #8c6b05
|
||||||
|
"--color-warning-900": "115 88 4", // #735804
|
||||||
|
// error | #D41976
|
||||||
|
"--color-error-50": "249 221 234", // #f9ddea
|
||||||
|
"--color-error-100": "246 209 228", // #f6d1e4
|
||||||
|
"--color-error-200": "244 198 221", // #f4c6dd
|
||||||
|
"--color-error-300": "238 163 200", // #eea3c8
|
||||||
|
"--color-error-400": "225 94 159", // #e15e9f
|
||||||
|
"--color-error-500": "212 25 118", // #D41976
|
||||||
|
"--color-error-600": "191 23 106", // #bf176a
|
||||||
|
"--color-error-700": "159 19 89", // #9f1359
|
||||||
|
"--color-error-800": "127 15 71", // #7f0f47
|
||||||
|
"--color-error-900": "104 12 58", // #680c3a
|
||||||
|
// surface | #495a8f
|
||||||
|
"--color-surface-50": "228 230 238", // #e4e6ee
|
||||||
|
"--color-surface-100": "219 222 233", // #dbdee9
|
||||||
|
"--color-surface-200": "210 214 227", // #d2d6e3
|
||||||
|
"--color-surface-300": "182 189 210", // #b6bdd2
|
||||||
|
"--color-surface-400": "128 140 177", // #808cb1
|
||||||
|
"--color-surface-500": "73 90 143", // #495a8f
|
||||||
|
"--color-surface-600": "66 81 129", // #425181
|
||||||
|
"--color-surface-700": "55 68 107", // #37446b
|
||||||
|
"--color-surface-800": "44 54 86", // #2c3656
|
||||||
|
"--color-surface-900": "36 44 70", // #242c46
|
||||||
|
}
|
||||||
|
}
|
49
Frontend/src/routes/+layout.svelte
Normal file
49
Frontend/src/routes/+layout.svelte
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import '../app.postcss';
|
||||||
|
import { AppShell, AppBar } from '@skeletonlabs/skeleton';
|
||||||
|
|
||||||
|
// Floating UI for Popups
|
||||||
|
import { computePosition, autoUpdate, flip, shift, offset, arrow } from '@floating-ui/dom';
|
||||||
|
import { storePopup } from '@skeletonlabs/skeleton';
|
||||||
|
storePopup.set({ computePosition, autoUpdate, flip, shift, offset, arrow });
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- App Shell -->
|
||||||
|
<AppShell>
|
||||||
|
<svelte:fragment slot="header">
|
||||||
|
<!-- App Bar -->
|
||||||
|
<AppBar>
|
||||||
|
<svelte:fragment slot="lead">
|
||||||
|
<strong class="text-xl uppercase">Skeleton</strong>
|
||||||
|
</svelte:fragment>
|
||||||
|
<svelte:fragment slot="trail">
|
||||||
|
<a
|
||||||
|
class="btn btn-sm variant-ghost-surface"
|
||||||
|
href="https://discord.gg/EXqV7W8MtY"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Discord
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-sm variant-ghost-surface"
|
||||||
|
href="https://twitter.com/SkeletonUI"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Twitter
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-sm variant-ghost-surface"
|
||||||
|
href="https://github.com/skeletonlabs/skeleton"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
GitHub
|
||||||
|
</a>
|
||||||
|
</svelte:fragment>
|
||||||
|
</AppBar>
|
||||||
|
</svelte:fragment>
|
||||||
|
<!-- Page Route Content -->
|
||||||
|
<slot />
|
||||||
|
</AppShell>
|
71
Frontend/src/routes/+page.svelte
Normal file
71
Frontend/src/routes/+page.svelte
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<!-- YOU CAN DELETE EVERYTHING IN THIS PAGE -->
|
||||||
|
|
||||||
|
<div class="container h-full mx-auto flex justify-center items-center">
|
||||||
|
<div class="space-y-10 text-center flex flex-col items-center">
|
||||||
|
<h2 class="h2">Welcome to Skeleton.</h2>
|
||||||
|
<!-- Animated Logo -->
|
||||||
|
<figure>
|
||||||
|
<section class="img-bg" />
|
||||||
|
<svg
|
||||||
|
class="fill-token -scale-x-[100%]"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="0 0 200 200"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
fill-rule="evenodd"
|
||||||
|
d="M98.77 50.95c25.1 0 46.54 8.7 61.86 23a41.34 41.34 0 0 0 5.19-1.93c4.35-2.02 10.06-6.17 17.13-12.43-1.15 10.91-2.38 18.93-3.7 24.04-.7 2.75-1.8 6.08-3.3 10a80.04 80.04 0 0 1 8.42 23.33c6.04 30.3-4.3 43.7-28.33 51.18.18.9.32 1.87.42 2.9.86 8.87-3.62 23.19-9 23.19-3.54 0-5.84-4.93-8.3-12.13-.78 8.34-4.58 17.9-8.98 17.9-4.73 0-7.25-8.84-10.93-20.13a214 214 0 0 1-.64 2.93l-.16.71-.16.71-.17.71c-1.84 7.58-4.46 15.07-8.5 15.07-5.06 0-2.29-15.9-10.8-22.63-43.14 2.36-79.43-13.6-79.43-59.62 0-8.48 2-16.76 5.69-24.45a93.72 93.72 0 0 1-1.77-3.68c-2.87-6.32-6.3-15.88-10.31-28.7 10.26 7.66 18.12 12.22 23.6 13.68.5.14 1.02.26 1.57.36 14.36-14.44 35.88-24.01 60.6-24.01Zm-9.99 62.3c-14.57 0-26.39 11.45-26.39 25.58 0 14.14 11.82 25.6 26.39 25.6s26.39-11.46 26.39-25.6c0-13.99-11.58-25.35-25.95-25.58Zm37.45 31.95c-4.4 0-6.73 9.4-6.73 13.62 0 3.3 1.1 5.12 2.9 5.45 4.39.4 3.05-5.97 5.23-5.97 1.06 0 2.2 1.35 3.34 2.73l.34.42c1.25 1.52 2.5 2.93 3.64 2.49 2.7-1.61 1.67-5.12.74-7.88-3.3-6.96-5.05-10.86-9.46-10.86Zm-36.85-28.45c12.57 0 22.76 9.78 22.76 21.85 0 12.07-10.2 21.85-22.76 21.85-.77 0-1.53-.04-2.29-.11 11.5-1.1 20.46-10.42 20.46-21.74 0-11.32-8.97-20.63-20.46-21.74.76-.07 1.52-.1 2.3-.1Zm65.54-5c-10.04 0-18.18 10.06-18.18 22.47 0 12.4 8.14 22.47 18.18 22.47s18.18-10.06 18.18-22.47c0-12.41-8.14-22.48-18.18-22.48Zm.6 3.62c8.38 0 15.16 8.4 15.16 18.74 0 10.35-6.78 18.74-15.16 18.74-.77 0-1.54-.07-2.28-.21 7.3-1.36 12.89-9.14 12.89-18.53 0-9.4-5.6-17.17-12.89-18.53.74-.14 1.5-.2 2.28-.2Zm3.34-72.27.12.07c.58.38.75 1.16.37 1.74l-2.99 4.6c-.35.55-1.05.73-1.61.44l-.12-.07a1.26 1.26 0 0 1-.37-1.74l2.98-4.6a1.26 1.26 0 0 1 1.62-.44ZM39.66 42l.08.1 2.76 3.93a1.26 1.26 0 0 1-2.06 1.45l-2.76-3.94A1.26 1.26 0 0 1 39.66 42Zm63.28-42 2.85 24.13 10.62-11.94.28 29.72-2.1-.47a77.8 77.8 0 0 0-16.72-2.04c-4.96 0-9.61.67-13.96 2l-2.34.73L83.5 4.96l9.72 18.37L102.94 0Zm-1.87 13.39-7.5 17.96-7.3-13.8-1.03 19.93.22-.06a51.56 51.56 0 0 1 12.1-1.45h.31c4.58 0 9.58.54 15 1.61l.35.07-.15-16.54-9.79 11-2.21-18.72Zm38.86 19.23c.67.2 1.05.89.86 1.56l-.38 1.32c-.17.62-.8 1-1.42.89l-.13-.03a1.26 1.26 0 0 1-.86-1.56l.38-1.32c.19-.66.88-1.05 1.55-.86ZM63.95 31.1l.05.12.7 2.17a1.26 1.26 0 0 1-2.34.9l-.04-.12-.71-2.17a1.26 1.26 0 0 1 2.34-.9Z"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</figure>
|
||||||
|
<!-- / -->
|
||||||
|
<div class="flex justify-center space-x-2">
|
||||||
|
<a
|
||||||
|
class="btn variant-filled"
|
||||||
|
href="https://skeleton.dev/"
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer"
|
||||||
|
>
|
||||||
|
Launch Documentation
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="space-y-2">
|
||||||
|
<p>Try editing the following:</p>
|
||||||
|
<p><code class="code">/src/routes/+layout.svelte</code></p>
|
||||||
|
<p><code class="code">/src/routes/+page.svelte</code></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="postcss">
|
||||||
|
figure {
|
||||||
|
@apply flex relative flex-col;
|
||||||
|
}
|
||||||
|
figure svg,
|
||||||
|
.img-bg {
|
||||||
|
@apply w-64 h-64 md:w-80 md:h-80;
|
||||||
|
}
|
||||||
|
.img-bg {
|
||||||
|
@apply absolute z-[-1] rounded-full blur-[50px] transition-all;
|
||||||
|
animation: pulse 5s cubic-bezier(0, 0, 0, 0.5) infinite,
|
||||||
|
glow 5s linear infinite;
|
||||||
|
}
|
||||||
|
@keyframes glow {
|
||||||
|
0% {
|
||||||
|
@apply bg-primary-400/50;
|
||||||
|
}
|
||||||
|
33% {
|
||||||
|
@apply bg-secondary-400/50;
|
||||||
|
}
|
||||||
|
66% {
|
||||||
|
@apply bg-tertiary-400/50;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
@apply bg-primary-400/50;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes pulse {
|
||||||
|
50% {
|
||||||
|
transform: scale(1.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
BIN
Frontend/static/favicon.png
Normal file
BIN
Frontend/static/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
18
Frontend/svelte.config.js
Normal file
18
Frontend/svelte.config.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import adapter from '@sveltejs/adapter-auto';
|
||||||
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||||
|
|
||||||
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
|
const config = {
|
||||||
|
extensions: ['.svelte'],
|
||||||
|
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
|
||||||
|
// for more information about preprocessors
|
||||||
|
preprocess: [vitePreprocess()],
|
||||||
|
|
||||||
|
kit: {
|
||||||
|
// adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
|
||||||
|
// If your environment is not supported or you settled on a specific environment, switch out the adapter.
|
||||||
|
// See https://kit.svelte.dev/docs/adapters for more information about adapters.
|
||||||
|
adapter: adapter()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export default config;
|
25
Frontend/tailwind.config.ts
Normal file
25
Frontend/tailwind.config.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { join } from 'path'
|
||||||
|
import type { Config } from 'tailwindcss'
|
||||||
|
import forms from '@tailwindcss/forms';
|
||||||
|
import typography from '@tailwindcss/typography';
|
||||||
|
import { skeleton } from '@skeletonlabs/tw-plugin';
|
||||||
|
import { mpe_theme } from './src/mpe_theme'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
darkMode: 'class',
|
||||||
|
content: ['./src/**/*.{html,js,svelte,ts}', join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}')],
|
||||||
|
theme: {
|
||||||
|
extend: {},
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
forms,
|
||||||
|
typography,
|
||||||
|
skeleton({
|
||||||
|
themes: {
|
||||||
|
custom: [
|
||||||
|
mpe_theme,
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
} satisfies Config;
|
18
Frontend/tsconfig.json
Normal file
18
Frontend/tsconfig.json
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"extends": "./.svelte-kit/tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowJs": true,
|
||||||
|
"checkJs": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"moduleResolution": "bundler"
|
||||||
|
}
|
||||||
|
// Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
|
||||||
|
//
|
||||||
|
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
|
||||||
|
// from the referenced tsconfig.json - TypeScript does not merge them in
|
||||||
|
}
|
7
Frontend/vite.config.ts
Normal file
7
Frontend/vite.config.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import { purgeCss } from 'vite-plugin-tailwind-purgecss';
|
||||||
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
|
import { defineConfig } from 'vite';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [sveltekit(), purgeCss()]
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user