Init astro
This commit is contained in:
parent
e7a42b121e
commit
7811574d5b
39 changed files with 3562 additions and 2154 deletions
61
src/components/Card.astro
Normal file
61
src/components/Card.astro
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
interface Props {
|
||||
title: string;
|
||||
body: string;
|
||||
href: string;
|
||||
}
|
||||
|
||||
const { href, title, body } = Astro.props;
|
||||
---
|
||||
|
||||
<li class="link-card">
|
||||
<a href={href}>
|
||||
<h2>
|
||||
{title}
|
||||
<span>→</span>
|
||||
</h2>
|
||||
<p>
|
||||
{body}
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
<style>
|
||||
.link-card {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
padding: 1px;
|
||||
background-color: #23262d;
|
||||
background-image: none;
|
||||
background-size: 400%;
|
||||
border-radius: 7px;
|
||||
background-position: 100%;
|
||||
transition: background-position 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.link-card > a {
|
||||
width: 100%;
|
||||
text-decoration: none;
|
||||
line-height: 1.4;
|
||||
padding: calc(1.5rem - 1px);
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
background-color: #23262d;
|
||||
opacity: 0.8;
|
||||
}
|
||||
h2 {
|
||||
margin: 0;
|
||||
font-size: 1.25rem;
|
||||
transition: color 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
}
|
||||
p {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.link-card:is(:hover, :focus-within) {
|
||||
background-position: 0;
|
||||
background-image: var(--accent-gradient);
|
||||
}
|
||||
.link-card:is(:hover, :focus-within) h2 {
|
||||
color: rgb(var(--accent-light));
|
||||
}
|
||||
</style>
|
1
src/env.d.ts
vendored
Normal file
1
src/env.d.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/// <reference types="astro/client" />
|
51
src/layouts/Layout.astro
Normal file
51
src/layouts/Layout.astro
Normal file
|
@ -0,0 +1,51 @@
|
|||
---
|
||||
interface Props {
|
||||
title: string;
|
||||
}
|
||||
|
||||
const { title } = Astro.props;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="description" content="Astro description" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
<title>{title}</title>
|
||||
</head>
|
||||
<body>
|
||||
<slot />
|
||||
</body>
|
||||
</html>
|
||||
<style is:global>
|
||||
:root {
|
||||
--accent: 136, 58, 234;
|
||||
--accent-light: 224, 204, 250;
|
||||
--accent-dark: 49, 10, 101;
|
||||
--accent-gradient: linear-gradient(
|
||||
45deg,
|
||||
rgb(var(--accent)),
|
||||
rgb(var(--accent-light)) 30%,
|
||||
white 60%
|
||||
);
|
||||
}
|
||||
html {
|
||||
font-family: system-ui, sans-serif;
|
||||
background: #13151a;
|
||||
background-size: 224px;
|
||||
}
|
||||
code {
|
||||
font-family:
|
||||
Menlo,
|
||||
Monaco,
|
||||
Lucida Console,
|
||||
Liberation Mono,
|
||||
DejaVu Sans Mono,
|
||||
Bitstream Vera Sans Mono,
|
||||
Courier New,
|
||||
monospace;
|
||||
}
|
||||
</style>
|
0
src/pages/about/page.module.css
Normal file
0
src/pages/about/page.module.css
Normal file
30
src/pages/about/page.tsx
Normal file
30
src/pages/about/page.tsx
Normal file
|
@ -0,0 +1,30 @@
|
|||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<section>
|
||||
<h1>Why does this bot exist?</h1>
|
||||
<p>We had a person in our team, who sent <a href={"https://static.moonleay.net/img/lilJuddWeb/about/oldplanningmsg.png"}>these planning messages</a> and I thought that this should be automated. Some time later the first version of li'l Judd was born.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h1>What now?</h1>
|
||||
<p>Today the bot has more features and keeps getting more of them! It is designed to actually improve the Splatoon experience and not be the 10000th moderation and general utility bot with the same features as all bots.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h1>Who is behind this?</h1>
|
||||
<p>The bot is currently being developed by <a href={"https://discord.com/users/372703841151614976"} target={"_blank"}>moonleay</a> (hey thats me!) with the occasional oneliner from his friends!</p>
|
||||
</section>
|
||||
<section>
|
||||
<h1>Where is my data stored?</h1>
|
||||
<p>Your data is stored in my basement on my server in Germany. And this will stay that way until I move.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h1>So whats in the future?</h1>
|
||||
<p>I plan on adding features, which are aimed to improve your and your teams competitive experience! I probably should set up a todo list in the future, but for now you can see my ideas <a href={"https://git.moonleay.net/DiscordBots/lilJudd#maybe-upcoming-features"} target={"_blank"}>in the README of the git project</a>.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h1>Hey, there is this realy cool idea I have! Can you add it?</h1>
|
||||
<p>Just message me! I can't promise anything, but I am always open to new ideas and improvements! You can find ways to contact me <a href={"/contact"} target={"_blank"}>here</a>.</p>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
0
src/pages/acknowledgements/page.module.css
Normal file
0
src/pages/acknowledgements/page.module.css
Normal file
114
src/pages/acknowledgements/page.tsx
Normal file
114
src/pages/acknowledgements/page.tsx
Normal file
|
@ -0,0 +1,114 @@
|
|||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<h1>Acknowledgements</h1>
|
||||
<section>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>
|
||||
<p>tool</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>license</p>
|
||||
</th>
|
||||
<th>
|
||||
<p>page</p>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Kotlin</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://kotlinlang.org/docs/faq.html#is-kotlin-free"} target={"_blank"}>Apache license 2.0</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://kotlinlang.org/"} target={"_blank"}>website</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Kord</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/kordlib/kord/blob/main/LICENSE"} target={"_blank"}>MIT license</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://kord.dev/"} target={"_blank"}>website</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Kord Extensions</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/Kord-Extensions/kord-extensions/blob/root/LICENSE"} target={"_blank"}>Mozilla Public License 2.0</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://kordex.kotlindiscord.com/"} target={"_blank"}>website</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>PostgreSQL</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://www.postgresql.org/about/licence/"} target={"_blank"}>PostgreSQL license</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://www.postgresql.org/"} target={"_blank"}>website</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>kotlinx-coroutines-core</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/Kotlin/kotlinx.coroutines/blob/master/LICENSE.txt"} target={"_blank"}>Apache license 2.0</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/Kotlin/kotlinx.coroutines"} target={"_blank"}>repo</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>slf4j</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/qos-ch/slf4j/blob/master/LICENSE.txt"} target={"_blank"}>MIT license</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://www.slf4j.org/"} target={"_blank"}>website</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Exposed</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/JetBrains/Exposed/blob/main/LICENSE.txt"}>Apache license 2.0</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/JetBrains/Exposed"} target={"_blank"}>repo</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>Krontab</p>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/InsanusMokrassar/krontab/blob/master/LICENSE"} target={"_blank"}>Apache license 2.0</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href={"https://github.com/InsanusMokrassar/krontab"} target={"_blank"}>repo</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
0
src/pages/contact/page.module.css
Normal file
0
src/pages/contact/page.module.css
Normal file
9
src/pages/contact/page.tsx
Normal file
9
src/pages/contact/page.tsx
Normal file
|
@ -0,0 +1,9 @@
|
|||
export default function Contact() {
|
||||
return (
|
||||
<section>
|
||||
<h1>Contact</h1>
|
||||
<p>EMail: <a href={"mailto:contact@moonleay.net"}>contact@moonleay.net</a></p>
|
||||
<p>Discord: <a>@moonleay</a></p>
|
||||
</section>
|
||||
)
|
||||
}
|
0
src/pages/features/page.module.css
Normal file
0
src/pages/features/page.module.css
Normal file
61
src/pages/features/page.tsx
Normal file
61
src/pages/features/page.tsx
Normal file
|
@ -0,0 +1,61 @@
|
|||
//"use client"
|
||||
import React from 'react';
|
||||
|
||||
interface SectionProps {
|
||||
imgUrl: string;
|
||||
imgAlt: string;
|
||||
title: string;
|
||||
description: string;
|
||||
note: string;
|
||||
}
|
||||
|
||||
export default function Features() {
|
||||
return (
|
||||
<>
|
||||
<p>Features</p>
|
||||
<ImageSection imgUrl={"https://static.moonleay.net/img/lilJuddWeb/features/timeplanner.png"}
|
||||
imgAlt={"Screenshot of the time planning feature of li'l Judd"}
|
||||
title={"Time Planning and Management"}
|
||||
description={"Helps you to see on which days your fellow team members are available."}
|
||||
note={"The bot can send these planning messages every monday at 3AM. Members can click the buttons on each message to communicate, if they have time on that day."}
|
||||
/>
|
||||
<ImageSection imgUrl={"https://static.moonleay.net/img/lilJuddWeb/features/notifs.png"}
|
||||
imgAlt={"Screenshot of the notification feature of li'l Judd"}
|
||||
title={"Notifications"}
|
||||
description={"Make sure that you and your team members remember to vote in the Time Planner."}
|
||||
note={"The bot can add roles. The first one gets pinged, when the time planner sends the messages, the other one gets assigned to the available members of the day, so that it is possible to ping all available people."}
|
||||
/>
|
||||
<ImageSection imgUrl={"https://static.moonleay.net/img/lilJuddWeb/features/matchplanner.png"}
|
||||
imgAlt={"Screenshot of the match planning feature of li'l Judd"}
|
||||
title={"Match Planner"}
|
||||
description={"Make sure that you know when your next match is and who will participate."}
|
||||
note={"The bot can send these planning messages, when the command /match is used. Members can click the buttons on each message to communicate, if they will participate in the match. Participating members will get a role until the match has started."}
|
||||
/>
|
||||
<ImageSection imgUrl={"https://static.moonleay.net/img/lilJuddWeb/features/rotationstatus.png"}
|
||||
imgAlt={"Screenshot of the current x map rotation in li'l Judd's status"}
|
||||
title={"Rotation Status"}
|
||||
description={"Li'l Judd can show you the current map rotation in his status."}
|
||||
note={"The bot cycles through the current map and mode rotation. It updates every few seconds."}
|
||||
/>
|
||||
<ImageSection
|
||||
imgUrl={"https://static.moonleay.net/img/lilJuddWeb/features/unknown.png"}
|
||||
imgAlt={"A Question Mark"}
|
||||
title={"More to come.."}
|
||||
description={"The bot is still in development. More features will be added."}
|
||||
note={"If you have a specific feature request, you can contact me on Discord: @moonleay or email: contact at moonleay dot net"}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export function ImageSection(props: SectionProps) {
|
||||
const { imgUrl, imgAlt, title, description , note} = props;
|
||||
return(
|
||||
<section>
|
||||
<h1>{title}</h1>
|
||||
<img src={imgUrl} alt={imgAlt}/>
|
||||
<p>{description}</p>
|
||||
<p>{note}</p>
|
||||
</section>
|
||||
)
|
||||
}
|
33
src/pages/globals.css
Normal file
33
src/pages/globals.css
Normal file
|
@ -0,0 +1,33 @@
|
|||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@font-face {
|
||||
font-family: 'Splatoon';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('/assets/fonts/Splatoon2-common.woff2') format('woff2'),
|
||||
url('/assets/fonts/Splatoon2-common.woff') format('woff');
|
||||
}
|
||||
|
||||
:root {
|
||||
--foreground-rgb: 255, 255, 255;
|
||||
font-family: "Splatoon", sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
color: rgb(var(--foreground-rgb));
|
||||
background-color: black;
|
||||
background-image: url("https://static.moonleay.net/img/lilJuddWeb/bgs/bg.jpg");
|
||||
background-repeat: repeat;
|
||||
background-size: 300px;
|
||||
background-position: center;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
body a,p,h1,h2,h3,h4,h5,h6,span,li,ul {
|
||||
font-family: "Splatoon", sans-serif;
|
||||
}
|
33
src/pages/home.module.css
Normal file
33
src/pages/home.module.css
Normal file
|
@ -0,0 +1,33 @@
|
|||
.section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.section h1 {
|
||||
font-size: 4rem;
|
||||
margin-top: 8rem;
|
||||
}
|
||||
|
||||
.section h5 {
|
||||
font-size: 1.5rem;
|
||||
margin-top: .25rem;
|
||||
}
|
||||
|
||||
.section div {
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
|
||||
.p1 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.p2 {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.p2 a {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
0
src/pages/how-do-i/page.module.css
Normal file
0
src/pages/how-do-i/page.module.css
Normal file
23
src/pages/how-do-i/page.tsx
Normal file
23
src/pages/how-do-i/page.tsx
Normal file
|
@ -0,0 +1,23 @@
|
|||
export default function Stack() {
|
||||
return (
|
||||
<>
|
||||
<h1>How do I...?</h1>
|
||||
<section>
|
||||
<h2>.. enable / disable certain features?</h2>
|
||||
<p>Features can be enabled and disables using the <code>/feature</code> command.<br/>Example:</p>
|
||||
<p>"<code>/feature feature:Time Planning Feature set:Enable channel:#ich-kann-heute</code>"<br/>will enable the Time Planning Feature in the "ich-kann-heute" channel.</p>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/howdoi/featureexample.png"} alt={"A screenshot of the example in Discord."}/>
|
||||
</section>
|
||||
<section>
|
||||
<h2>.. create a match?</h2>
|
||||
<p>You can create a match time using the <code>/match</code> command.<br/>Example:</p>
|
||||
<p>"<code>/match match:Ladder Match timestamp:24.12.2069 04:20 opponent:Forbidden</code>"<br/>will create a match on the 24th of December 2069 at 4am in the morning.<br/>Keep in mind that it is important to use the right time format. (<code>dd.MM.yyyy HH:mm</code>)</p>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/howdoi/matchexample.png"} alt={"A screenshot of the example in Discord."}/>
|
||||
</section>
|
||||
<section>
|
||||
<p>Is something missing here? Please contact me!</p>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
0
src/pages/imprint/page.module.css
Normal file
0
src/pages/imprint/page.module.css
Normal file
19
src/pages/imprint/page.tsx
Normal file
19
src/pages/imprint/page.tsx
Normal file
|
@ -0,0 +1,19 @@
|
|||
export default function Imprint() {
|
||||
return (
|
||||
<>
|
||||
<section>
|
||||
<h1>Imprint</h1>
|
||||
<p>In accordance with the applicable legal regulations, we would like to point out that this website is not subject to the imprint obligation. This notice is for clarification and transparent information for our visitors.
|
||||
<br/>
|
||||
<br/>
|
||||
According to § 5 TMG (Telemedia Act), certain providers of telemedia in Germany are obliged to provide an imprint with certain information. This obligation applies in particular to commercial websites or those that are used for business purposes.
|
||||
<br/>
|
||||
<br/>
|
||||
However, since this website has no business or commercial character and only provides non-commercial, informative or private content, it is not subject to the imprint obligation according to § 5 TMG.
|
||||
<br/>
|
||||
<br/>
|
||||
Nevertheless, we strive to keep all information on this website correct and up-to-date to the best of our knowledge and belief. However, if you have any questions or concerns, please feel free to contact us using the contact options provided.</p>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
123
src/pages/index.astro
Normal file
123
src/pages/index.astro
Normal file
|
@ -0,0 +1,123 @@
|
|||
---
|
||||
import Layout from '../layouts/Layout.astro';
|
||||
import Card from '../components/Card.astro';
|
||||
---
|
||||
|
||||
<Layout title="Welcome to Astro.">
|
||||
<main>
|
||||
<svg
|
||||
class="astro-a"
|
||||
width="495"
|
||||
height="623"
|
||||
viewBox="0 0 495 623"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M167.19 364.254C83.4786 364.254 0 404.819 0 404.819C0 404.819 141.781 19.4876 142.087 18.7291C146.434 7.33701 153.027 0 162.289 0H332.441C341.703 0 348.574 7.33701 352.643 18.7291C352.92 19.5022 494.716 404.819 494.716 404.819C494.716 404.819 426.67 364.254 327.525 364.254L264.41 169.408C262.047 159.985 255.147 153.581 247.358 153.581C239.569 153.581 232.669 159.985 230.306 169.408L167.19 364.254ZM160.869 530.172C160.877 530.18 160.885 530.187 160.894 530.195L160.867 530.181C160.868 530.178 160.868 530.175 160.869 530.172ZM136.218 411.348C124.476 450.467 132.698 504.458 160.869 530.172C160.997 529.696 161.125 529.242 161.248 528.804C161.502 527.907 161.737 527.073 161.917 526.233C165.446 509.895 178.754 499.52 195.577 500.01C211.969 500.487 220.67 508.765 223.202 527.254C224.141 534.12 224.23 541.131 224.319 548.105C224.328 548.834 224.337 549.563 224.347 550.291C224.563 566.098 228.657 580.707 237.264 593.914C245.413 606.426 256.108 615.943 270.749 622.478C270.593 621.952 270.463 621.508 270.35 621.126C270.045 620.086 269.872 619.499 269.685 618.911C258.909 585.935 266.668 563.266 295.344 543.933C298.254 541.971 301.187 540.041 304.12 538.112C310.591 533.854 317.059 529.599 323.279 525.007C345.88 508.329 360.09 486.327 363.431 457.844C364.805 446.148 363.781 434.657 359.848 423.275C358.176 424.287 356.587 425.295 355.042 426.275C351.744 428.366 348.647 430.33 345.382 431.934C303.466 452.507 259.152 455.053 214.03 448.245C184.802 443.834 156.584 436.019 136.218 411.348Z"
|
||||
fill="url(#paint0_linear_1805_24383)"></path>
|
||||
<defs>
|
||||
<linearGradient
|
||||
id="paint0_linear_1805_24383"
|
||||
x1="247.358"
|
||||
y1="0"
|
||||
x2="247.358"
|
||||
y2="622.479"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
>
|
||||
<stop stop-opacity="0.9"></stop>
|
||||
<stop offset="1" stop-opacity="0.2"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<h1>Welcome to <span class="text-gradient">Astro</span></h1>
|
||||
<p class="instructions">
|
||||
To get started, open the directory <code>src/pages</code> in your project.<br />
|
||||
<strong>Code Challenge:</strong> Tweak the "Welcome to Astro" message above.
|
||||
</p>
|
||||
<ul role="list" class="link-card-grid">
|
||||
<Card
|
||||
href="https://docs.astro.build/"
|
||||
title="Documentation"
|
||||
body="Learn how Astro works and explore the official API docs."
|
||||
/>
|
||||
<Card
|
||||
href="https://astro.build/integrations/"
|
||||
title="Integrations"
|
||||
body="Supercharge your project with new frameworks and libraries."
|
||||
/>
|
||||
<Card
|
||||
href="https://astro.build/themes/"
|
||||
title="Themes"
|
||||
body="Explore a galaxy of community-built starter themes."
|
||||
/>
|
||||
<Card
|
||||
href="https://astro.build/chat/"
|
||||
title="Community"
|
||||
body="Come say hi to our amazing Discord community. ❤️"
|
||||
/>
|
||||
</ul>
|
||||
</main>
|
||||
</Layout>
|
||||
|
||||
<style>
|
||||
main {
|
||||
margin: auto;
|
||||
padding: 1rem;
|
||||
width: 800px;
|
||||
max-width: calc(100% - 2rem);
|
||||
color: white;
|
||||
font-size: 20px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.astro-a {
|
||||
position: absolute;
|
||||
top: -32px;
|
||||
left: 50%;
|
||||
transform: translatex(-50%);
|
||||
width: 220px;
|
||||
height: auto;
|
||||
z-index: -1;
|
||||
}
|
||||
h1 {
|
||||
font-size: 4rem;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.text-gradient {
|
||||
background-image: var(--accent-gradient);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-size: 400%;
|
||||
background-position: 0%;
|
||||
}
|
||||
.instructions {
|
||||
margin-bottom: 2rem;
|
||||
border: 1px solid rgba(var(--accent-light), 25%);
|
||||
background: linear-gradient(rgba(var(--accent-dark), 66%), rgba(var(--accent-dark), 33%));
|
||||
padding: 1.5rem;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.instructions code {
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
background: rgba(var(--accent-light), 12%);
|
||||
color: rgb(var(--accent-light));
|
||||
border-radius: 4px;
|
||||
padding: 0.3em 0.4em;
|
||||
}
|
||||
.instructions strong {
|
||||
color: rgb(var(--accent-light));
|
||||
}
|
||||
.link-card-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(24ch, 1fr));
|
||||
gap: 2rem;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
31
src/pages/layout.tsx
Normal file
31
src/pages/layout.tsx
Normal file
|
@ -0,0 +1,31 @@
|
|||
import './globals.css'
|
||||
import type {Metadata} from 'next'
|
||||
import {Inter} from 'next/font/google'
|
||||
import React from "react";
|
||||
import {Footer, NavBar} from "@/app/util/wrapping_objects";
|
||||
import styles from "./util/wrapping_objects.module.css";
|
||||
|
||||
const inter = Inter({ subsets: ['latin'] })
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Lil Judd',
|
||||
description: 'The Splatoon Discord bot with unique features.',
|
||||
}
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: {
|
||||
children: React.ReactNode
|
||||
}) {
|
||||
return (
|
||||
<html lang="en">
|
||||
<body className={inter.className}>
|
||||
<NavBar/>
|
||||
<div className={styles.contentDiv}>
|
||||
{children}
|
||||
</div>
|
||||
<Footer/>
|
||||
</body>
|
||||
</html>
|
||||
)
|
||||
}
|
18
src/pages/page.tsx
Normal file
18
src/pages/page.tsx
Normal file
|
@ -0,0 +1,18 @@
|
|||
//import Image from "@/app/test/page";
|
||||
import styles from "./home.module.css";
|
||||
|
||||
export default function Home() {
|
||||
return (
|
||||
<>
|
||||
<section className={styles.section}>
|
||||
<h1>li'l Judd</h1>
|
||||
<h5>The competetive Splatoon Bot</h5>
|
||||
<div>
|
||||
<p className={styles.p1}>Improve your competitive Splatoon experience!</p>
|
||||
<p className={styles.p2}>See what li'l Judd can help you with: <a href={"/features"}>here</a></p>
|
||||
</div>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
0
src/pages/privacy-policy/page.module.css
Normal file
0
src/pages/privacy-policy/page.module.css
Normal file
83
src/pages/privacy-policy/page.tsx
Normal file
83
src/pages/privacy-policy/page.tsx
Normal file
|
@ -0,0 +1,83 @@
|
|||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<section>
|
||||
<h1>Privacy Policy</h1>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
This Privacy Policy outlines how the li'l Judd Discord bot ("the bot") collects, uses, and protects user data. The bot is committed to complying with the General Data Protection Regulation (GDPR) and ensuring the privacy and security of user information.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>1. Information Collection</h2>
|
||||
|
||||
<h3>1.1. Data Collection</h3>
|
||||
|
||||
The bot does not collect or store any personal information from users.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h3>1.2. Server Data</h3>
|
||||
|
||||
The bot may collect and store server-related data necessary for its functionality, but this data is not associated with individual users and is used solely for operational purposes.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>2. Data Storage and Security</h2>
|
||||
|
||||
<h3>2.1. Data Storage Location</h3>
|
||||
|
||||
All data collected by the bot is stored within servers located in Germany.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h3>2.2. Security Measures</h3>
|
||||
|
||||
We employ industry-standard security measures to ensure the safety and confidentiality of the data stored within our systems.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>3. Data Sharing</h2>
|
||||
|
||||
The bot does not share any user or server data with third parties.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>4. Rights of Users</h2>
|
||||
|
||||
<h3>4.1. Access, Rectification, and Deletion</h3>
|
||||
|
||||
Users have the right to access, rectify, or delete any personal data held by the bot. For such requests, please contact the bot's developer at contact at moonleay dot net.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h3>4.2. Data Retention</h3>
|
||||
|
||||
As the bot does not collect personal data, data retention is not applicable.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>5. Compliance with GDPR</h2>
|
||||
|
||||
The bot is designed to comply with the GDPR and respects the rights of individuals regarding their personal data.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>6. Changes to the Privacy Policy</h2>
|
||||
|
||||
We reserve the right to update or modify this Privacy Policy at any time. Changes will be effective immediately upon posting. Continued use of the bot after any modifications indicates acceptance of the updated Privacy Policy.
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<h2>7. Contact</h2>
|
||||
|
||||
For any inquiries or concerns regarding this Privacy Policy, please contact us at contact at moonleay dot net.
|
||||
|
||||
By using the li'l Judd Discord bot, you acknowledge that you have read, understood, and agree to this Privacy Policy.
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
0
src/pages/stack/page.module.css
Normal file
0
src/pages/stack/page.module.css
Normal file
30
src/pages/stack/page.tsx
Normal file
30
src/pages/stack/page.tsx
Normal file
|
@ -0,0 +1,30 @@
|
|||
export default function Stack() {
|
||||
return (
|
||||
<>
|
||||
<section>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/logos/kotlin.svg"} alt={"Kotlin 'K' logo"}/>
|
||||
<h1>The Kotlin programming language</h1>
|
||||
<p>I chose this programming language because it is my main one. There is nothing more to that.</p>
|
||||
</section>
|
||||
<section>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/logos/kord.png"} alt={"The Kord logo"}/>
|
||||
<h1>The Kord library</h1>
|
||||
<p>A Kotlin library for creating Discord bots. Pretty bare bones.</p>
|
||||
</section>
|
||||
<section>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/logos/kordextensions.png"} alt={"The Kord-Extensions logo"}/>
|
||||
<h1>The Kord Extensions library</h1>
|
||||
<p>A Kotlin library to improve the Kord experience.</p>
|
||||
</section>
|
||||
<section>
|
||||
<img src={"https://static.moonleay.net/img/lilJuddWeb/logos/pgelephant.png"} alt={"The PostgreSQL elephant"}/>
|
||||
<h1>The PostgreSQL database</h1>
|
||||
<p>A fast and reliable database. Also something, which I already used beforehand.</p>
|
||||
</section>
|
||||
<section>
|
||||
<p>To see all used libraries and their licenses, check the Acknowledgements.</p>
|
||||
</section>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
0
src/pages/terms-of-service/page.module.css
Normal file
0
src/pages/terms-of-service/page.module.css
Normal file
71
src/pages/terms-of-service/page.tsx
Normal file
71
src/pages/terms-of-service/page.tsx
Normal file
|
@ -0,0 +1,71 @@
|
|||
export default function About() {
|
||||
return (
|
||||
<>
|
||||
<h1>Terms of Service</h1>
|
||||
<p>
|
||||
<h2>Introduction</h2>
|
||||
|
||||
Welcome to li'l Judd, an open-source Discord bot licensed under GNU GPL 3.0. This document outlines the terms of service ("Terms") for using the li'l Judd Discord bot ("the Bot") and the services associated with it.
|
||||
<br/>
|
||||
By using the Bot, you agree to comply with these Terms, the GNU GPL 3.0 license, and Discord's Terms of Service.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>1. Acceptance of Terms</h2>
|
||||
|
||||
By using the Bot, you agree to be bound by these Terms and the GNU GPL 3.0 license. If you do not agree with any of these terms, you are prohibited from using the Bot.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>2. License</h2>
|
||||
|
||||
The li'l Judd Discord Bot is open-source and licensed under GNU General Public License (GPL) version 3.0. You are free to use, modify, and distribute the Bot in accordance with the terms specified in the GNU GPL 3.0 license.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>3. Use of the Bot</h2>
|
||||
<h3>3.1. Compliance with Discord's Terms of Service</h3>
|
||||
You must abide by Discord's Terms of Service and Community Guidelines while using the Bot. Any violation of Discord's policies may result in termination of access to the Bot.
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
<h3>3.2. No Warranty</h3>
|
||||
|
||||
The Bot is provided "as is" without any warranty, expressed or implied. The authors and maintainers of the Bot are not responsible for any damages or consequences resulting from the use of the Bot.
|
||||
<br/>
|
||||
<br/>
|
||||
<h3>3.3. User Conduct</h3>
|
||||
|
||||
You agree to use the Bot in a manner that is respectful, lawful, and in compliance with all applicable laws and regulations. Any harmful or abusive behavior towards others is strictly prohibited.
|
||||
<br/>
|
||||
<br/>
|
||||
<h3>3.4. Modifications</h3>
|
||||
|
||||
You may modify, adapt, or extend the Bot in accordance with the GNU GPL 3.0 license, as long as any derivative work remains open-source and is also licensed under GNU GPL 3.0.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>4. Limitation of Liability</h2>
|
||||
The authors and maintainers of the Bot shall not be liable for any direct, indirect, incidental, special, consequential, or exemplary damages arising out of the use or inability to use the Bot.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>5. Indemnification</h2>
|
||||
|
||||
You agree to indemnify and hold harmless the authors and maintainers of the Bot from any claims, damages, losses, or liabilities arising from your use of the Bot or your breach of these Terms.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>6. Governing Law</h2>
|
||||
|
||||
These Terms are governed by and construed in accordance with the laws of Germany. Any disputes arising under or in connection with these Terms shall be subject to the exclusive jurisdiction of the courts in Germany.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>7. Changes to the Terms</h2>
|
||||
|
||||
We reserve the right to update or modify these Terms at any time. Changes will be effective immediately upon posting. Continued use of the Bot after any modifications indicates your acceptance of the updated Terms.
|
||||
<br/>
|
||||
<br/>
|
||||
<h2>Contact</h2>
|
||||
|
||||
If you have any questions or concerns regarding these Terms, you may contact us at contact at moonleay dot net.
|
||||
|
||||
By using the li'l Judd Discord Bot, you acknowledge that you have read, understood, and agree to these Terms of Service.
|
||||
</p>
|
||||
</>
|
||||
)
|
||||
}
|
201
src/pages/util/wrapping_objects.module.css
Normal file
201
src/pages/util/wrapping_objects.module.css
Normal file
|
@ -0,0 +1,201 @@
|
|||
.navMenu {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
backdrop-filter: blur(5px);
|
||||
position: sticky;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 100%;
|
||||
max-width: initial;
|
||||
max-height: initial;
|
||||
margin: .35rem;
|
||||
}
|
||||
|
||||
.navElem {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: .5s;
|
||||
}
|
||||
|
||||
|
||||
.navElem:hover {
|
||||
color: rgb(96 59 255) !important;
|
||||
}
|
||||
|
||||
.navElemR {
|
||||
transition: .5s;
|
||||
}
|
||||
|
||||
.navElemR:hover {
|
||||
color: rgb(96 59 255) !important;
|
||||
}
|
||||
|
||||
|
||||
.logoWtxt {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.pad3px {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.textBx {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.footer {
|
||||
align-items: center;
|
||||
margin: 100px 1px 0 0;
|
||||
background-color: rgba(0, 0, 0, 0.4);
|
||||
backdrop-filter: blur(5px);
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.footerImageNote {
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.footerIcon {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footerImage {
|
||||
max-width: initial;
|
||||
max-height: initial;
|
||||
width: 48px;
|
||||
margin: 0.5rem auto;
|
||||
}
|
||||
|
||||
.footerNotice {
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
.footerTable {
|
||||
padding: 20px 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.footerTable div {
|
||||
}
|
||||
|
||||
.footerTable h3 {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.footerLinks {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
|
||||
.table {
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.table th {
|
||||
padding: 4px 7px;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.table td {
|
||||
padding: 4px 7px;
|
||||
}
|
||||
|
||||
.footerLinks a {
|
||||
position: relative;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.footerLinks a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
|
||||
.footerLinks a::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
transform: scaleX(0);
|
||||
transform-origin: left;
|
||||
background-color: #ffffff;
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
|
||||
.footerLinks a:hover::before {
|
||||
transform: scaleX(1);
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.footer {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 1fr;
|
||||
column-gap: 0px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: grid;
|
||||
/*grid-template-columns: repeat(6, 1fr);*/
|
||||
grid-template-columns: repeat(8, 1fr);
|
||||
}
|
||||
|
||||
.navElem {
|
||||
grid-column: span 1;
|
||||
margin: 0.5rem 0.5rem 0.5rem 0.5rem;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.navElemR {
|
||||
grid-column: 8;
|
||||
margin: 0.5rem 0.5rem 0.5rem 0.5rem;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footerIcon {
|
||||
grid-column: span 1;
|
||||
justify-self: center;
|
||||
}
|
||||
|
||||
.footerTable {
|
||||
grid-column: span 3;
|
||||
}
|
||||
|
||||
.footerNotice {
|
||||
grid-column: span 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.contentDiv {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: auto;
|
||||
}
|
96
src/pages/util/wrapping_objects.tsx
Normal file
96
src/pages/util/wrapping_objects.tsx
Normal file
|
@ -0,0 +1,96 @@
|
|||
import styles from "./wrapping_objects.module.css"
|
||||
|
||||
export function NavBar(){
|
||||
return(
|
||||
<nav className={styles.navMenu}>
|
||||
<ul className={styles.grid}>
|
||||
<li className={styles.navElem}>
|
||||
<div className={styles.logoWtxt}>
|
||||
<a className={[styles.pad3px, styles.textBx].join(" ")} href={"/"} target={"_self"}><img className={`${styles.logo} ${styles.pad3px}`}src={"https://static.moonleay.net/img/lilJuddWeb/logos/logox256.png"}alt={"The Bots Logo"}/>li'l Judd</a>
|
||||
</div>
|
||||
</li>
|
||||
<li className={styles.navElem}>
|
||||
<a className={styles.navLink} href={"/features"} target={"_self"}>Features</a>
|
||||
</li>
|
||||
<li className={styles.navElem}>
|
||||
<a className={styles.navLink} href={"/how-do-i"} target={"_self"}>How do I...?</a>
|
||||
</li>
|
||||
<li className={styles.navElem}>
|
||||
<a className={styles.navLink} href={"/stack"} target={"_self"}>The Stack</a>
|
||||
</li>
|
||||
<li className={styles.navElem}>
|
||||
<a className={styles.navLink} href={"/about"} target={"_self"}>About</a>
|
||||
</li>
|
||||
<li className={styles.navElemR}>
|
||||
<a className={styles.navLink} href={"https://discord.com/api/oauth2/authorize?client_id=1024410658973941862&permissions=8&scope=bot"}
|
||||
target={"_blank"}>Invite to your server</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
)
|
||||
}
|
||||
|
||||
export function Footer() {
|
||||
return (
|
||||
<>
|
||||
<footer className={styles.footer}>
|
||||
<div className={styles.footerIcon}>
|
||||
<img className={styles.footerImage} src={"https://static.moonleay.net/img/lilJuddWeb/lilJudd.png"}
|
||||
alt={"A cute Image of lil Judd <3"}/>
|
||||
<p>li'l Judd</p>
|
||||
<p className={styles.footerImageNote}>Your competitive Splatoon assistant.</p>
|
||||
</div>
|
||||
<div className={styles.footerTable}>
|
||||
<div>
|
||||
<h3 className={styles.fong}>Navigation</h3>
|
||||
<div className={styles.footerLinks}>
|
||||
<a href={"/"} target={"_self"}>Home</a>
|
||||
<a href={"/features"} target={"_self"}>Features</a>
|
||||
<a href={"/how-do-i"} target={"_self"}>How do I...?</a>
|
||||
<a href={"/stack"} target={"_self"}>The Stack</a>
|
||||
<a href={"/about"} target={"_self"}>About</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className={styles.fong}>The Software</h3>
|
||||
<div className={styles.footerLinks}>
|
||||
<a href={"https://git.moonleay.net/DiscordBots/lilJudd"} target={"_blank"}>The Bot Code</a>
|
||||
<a href={"https://git.moonleay.net/Websites/liljudd-website"} target={"_blank"}>The Website
|
||||
Code</a>
|
||||
<a href={"/acknowledgements"} target={"_self"}>Acknowledgements</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className={styles.fong}>More</h3>
|
||||
<div className={styles.footerLinks}>
|
||||
<a href={"https://moonleay.net/"} target={"_self"}>My homepage</a>
|
||||
<a href={"https://moonleay.net/blog/"} target={"_blank"}>My blog</a>
|
||||
<a href={"/contact"} target={"_self"}>Contact me</a>
|
||||
<a href={"https://up.moonleay.net/"} target={"_blank"}>Uptime Status</a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3 className={styles.fong}>Legal</h3>
|
||||
<div className={styles.footerLinks}>
|
||||
<a href={"/imprint"} target={"_self"}>Imprint</a>
|
||||
<a href={"/privacy-policy"} target={"_self"}>Privacy Policy</a>
|
||||
<a href={"/terms-of-service"} target={"_self"}>Terms of Service</a>
|
||||
<a href={"https://git.moonleay.net/DiscordBots/lilJudd/src/branch/master/LICENSE"}
|
||||
target={"_blank"}>The license</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Notice/>
|
||||
</footer>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export function Notice() {
|
||||
return (
|
||||
<div className={styles.footerNotice}>
|
||||
<p>This website is NOT affiliated with Nintendo or any other party. All product names, logos, and brands are property of their respective owners.</p>
|
||||
<p>li'l Judd © 2023 <a href={"https://moonleay.net/"} target={"_blank"}>moonleay</a></p>
|
||||
</div>
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue