stuf
parent
43294614b5
commit
2aabdcae7a
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"tabWidth": 4,
|
||||||
|
"useTabs": false,
|
||||||
|
"plugins": ["./node_modules/prettier-plugin-astro"],
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": "*.astro",
|
||||||
|
"options": {
|
||||||
|
"parser": "astro"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"prettier.documentSelectors": ["**/*.astro"],
|
||||||
|
"[astro]": {
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.detectIndentation": false,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.detectIndentation": false,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.detectIndentation": false,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.insertSpaces": true,
|
||||||
|
"editor.detectIndentation": false,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +1,21 @@
|
|||||||
---
|
---
|
||||||
import Spoiler from "./Spoiler.astro"
|
import Spoiler from "./Spoiler.astro";
|
||||||
const { spoiler, img, alt, source } = Astro.props
|
|
||||||
|
const { spoiler, img, alt, source } = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
spoiler ? (<Spoiler {...Astro.props} ><img src={img} alt={alt} /></Spoiler>) : (
|
spoiler ? (
|
||||||
source ? (<a href={source}><img src={img} alt={alt} /></a>) : (<img src={img} alt={alt} />)
|
<Spoiler {...Astro.props}>
|
||||||
|
<img src={img} alt={alt} />
|
||||||
|
</Spoiler>
|
||||||
|
) : source ? (
|
||||||
|
<a href={source}>
|
||||||
|
<img src={img} alt={alt} />
|
||||||
|
</a>
|
||||||
|
) : (
|
||||||
|
<img src={img} alt={alt} />
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
@ -1,30 +1,31 @@
|
|||||||
---
|
---
|
||||||
const allPosts = await Astro.glob("../pages/blog/*.md*");
|
import { getCollection } from "astro:content";
|
||||||
const posts = allPosts
|
|
||||||
.map((item) => Object.assign({}, item.frontmatter, { url: item.url }))
|
const posts = (await getCollection("blog"))
|
||||||
//@ts-expect-error cease this bitch crying, what do you mean i shouldn't implicitly convert Dates to Numbers
|
.filter(
|
||||||
.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
|
(entry) => !entry.data.wip || process.env.NODE_ENV === "development"
|
||||||
|
)
|
||||||
|
.sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf());
|
||||||
---
|
---
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
posts.map((post) => {
|
posts.map((post) => {
|
||||||
if (!post.wip || process.env.NODE_ENV === "development") {
|
|
||||||
return (
|
return (
|
||||||
<a href={post.url}>
|
<a href={`blog/${post.slug}`}>
|
||||||
<div
|
<div
|
||||||
class="main-content"
|
class="main-content"
|
||||||
style="margin-bottom: 10px; font-size: 125%;"
|
style="margin-bottom: 10px; font-size: 125%;"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<b>{post.title}</b> - {post.pubDate}
|
<b>{post.data.title}</b> -{" "}
|
||||||
|
{post.data.pubDate.toDateString()}
|
||||||
<br />
|
<br />
|
||||||
</div>
|
</div>
|
||||||
<i>{post.description}</i>
|
<i>{post.data.description}</i>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
);
|
);
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,23 +1,34 @@
|
|||||||
---
|
---
|
||||||
import '../css/base.scss'
|
import "../css/base.scss";
|
||||||
import '../css/font.scss'
|
import "../css/font.scss";
|
||||||
import '../css/color.scss'
|
import "../css/color.scss";
|
||||||
---
|
---
|
||||||
|
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<div class="white footer">
|
<div class="white footer">
|
||||||
<div class="footer-entries">
|
<div class="footer-entries">
|
||||||
{Object.keys(Astro.props.entries).map((key) => {
|
{
|
||||||
const val = Astro.props.entries[key]
|
Object.keys(Astro.props.entries).map((key) => {
|
||||||
|
const val = Astro.props.entries[key];
|
||||||
return (
|
return (
|
||||||
<a href={val} class="grey">{key}</a>
|
<a href={val} class="grey">
|
||||||
)
|
{key}
|
||||||
})}
|
</a>
|
||||||
|
);
|
||||||
|
})
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="img-container">
|
<div class="img-container">
|
||||||
<!--<img src="https://media.ruthenic.com/pentagram.png" alt="Spinning pentagram" style="animation: rotation 10s infinite linear;">-->
|
<!--<img src="https://media.ruthenic.com/pentagram.png" alt="Spinning pentagram" style="animation: rotation 10s infinite linear;">-->
|
||||||
<img src="https://media.ruthenic.com/lgbtq%20badge.png" alt="LGBTQ+ rights!"> <!-- sry idk what else to put there lmao -->
|
<img
|
||||||
<img src="https://media.ruthenic.com/god%20cant%20help%20you%20now%20badge.png" alt="CAUTION: God can't help you now.">
|
src="https://media.ruthenic.com/lgbtq%20badge.png"
|
||||||
|
alt="LGBTQ+ rights!"
|
||||||
|
/>
|
||||||
|
<!-- sry idk what else to put there lmao -->
|
||||||
|
<img
|
||||||
|
src="https://media.ruthenic.com/god%20cant%20help%20you%20now%20badge.png"
|
||||||
|
alt="CAUTION: God can't help you now."
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -1,8 +1,13 @@
|
|||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
// always adding rel=me to every entry *probably* doesn't break anything
|
// always adding rel=me to every entry *probably* doesn't break anything
|
||||||
Object.keys(Astro.props.entries).map(k => (
|
Object.keys(Astro.props.entries).map((k) => (
|
||||||
<a rel="me" href = {Astro.props.entries[k]}>{k}</a><br>
|
<>
|
||||||
|
<a rel="me" href={Astro.props.entries[k]}>
|
||||||
|
{k}
|
||||||
|
</a>
|
||||||
|
<br />
|
||||||
|
</>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
@ -0,0 +1,33 @@
|
|||||||
|
import { z, defineCollection } from "astro:content";
|
||||||
|
|
||||||
|
const blog = defineCollection({
|
||||||
|
schema: z.object({
|
||||||
|
title: z.string(),
|
||||||
|
description: z.string(),
|
||||||
|
wip: z.boolean().optional().default(false),
|
||||||
|
pubDate: z.string().transform((dateStr) => new Date(dateStr)),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const fanfic = defineCollection({
|
||||||
|
schema: z.object({
|
||||||
|
title: z.string(),
|
||||||
|
// description and tags need to be optional because of chapters
|
||||||
|
description: z.string().optional(),
|
||||||
|
tags: z.array(z.string()).optional(),
|
||||||
|
oneshot: z.boolean().optional().default(false),
|
||||||
|
wip: z.boolean().optional().default(false),
|
||||||
|
|
||||||
|
// exclusive to chapters
|
||||||
|
parent: z.string().optional(),
|
||||||
|
pubDate: z
|
||||||
|
.string()
|
||||||
|
.transform((dateStr) => new Date(dateStr))
|
||||||
|
.optional(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const collections = {
|
||||||
|
blog: blog,
|
||||||
|
fanfic: fanfic,
|
||||||
|
};
|
@ -1,30 +1,30 @@
|
|||||||
body {
|
body {
|
||||||
background-color:#333333;
|
background-color: #333333;
|
||||||
color: white;
|
color: white;
|
||||||
font-family: 'IBM Plex Sans', sans-serif;
|
font-family: "IBM Plex Sans", sans-serif;
|
||||||
}
|
}
|
||||||
pre {
|
pre {
|
||||||
background-color: #333333 !important;
|
background-color: #333333 !important;
|
||||||
max-width: 33%;
|
max-width: 33%;
|
||||||
font-family: 'IBM Plex Mono', monospace;
|
font-family: "IBM Plex Mono", monospace;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
p {
|
p {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color:#47FF58;
|
color: #47ff58;
|
||||||
text-decoration:none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
a:link {
|
a:link {
|
||||||
color:#47FF58;
|
color: #47ff58;
|
||||||
}
|
}
|
||||||
a:visited {
|
a:visited {
|
||||||
color:#47FF58;
|
color: #47ff58;
|
||||||
}
|
}
|
||||||
a:hover {
|
a:hover {
|
||||||
color:#47FF58;
|
color: #47ff58;
|
||||||
}
|
}
|
||||||
a:active {
|
a:active {
|
||||||
color:#47FF58;
|
color: #47ff58;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'IBM Plex Mono';
|
font-family: "IBM Plex Mono";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('/fonts/mono.ttf') format('truetype');
|
src: url("/fonts/mono.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'IBM Plex Sans';
|
font-family: "IBM Plex Sans";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url('/fonts/sans.ttf') format('truetype');
|
src: url("/fonts/sans.ttf") format("truetype");
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,2 @@
|
|||||||
|
/// <reference path="../.astro/types.d.ts" />
|
||||||
|
/// <reference types="astro/client" />
|
@ -1,9 +1,10 @@
|
|||||||
---
|
---
|
||||||
import Base from '../layout/BaseHeaderless.astro'
|
import Base from "../layout/BaseHeaderless.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base title="ruthenic.com: 404">
|
<Base title="ruthenic.com: 404">
|
||||||
<center><h1>404</h1>
|
<center
|
||||||
|
><h1>404</h1>
|
||||||
<h3>Sorry, the page you are looking for does not exist!</h3>
|
<h3>Sorry, the page you are looking for does not exist!</h3>
|
||||||
</center>
|
</center>
|
||||||
</Base>
|
</Base>
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
import Base from '../layout/Base.astro'
|
|
||||||
import BlogList from '../components/blogList.astro'
|
|
||||||
---
|
|
||||||
|
|
||||||
<Base title="ruthenic.com: Blog">
|
|
||||||
<h1>Blog</h1>
|
|
||||||
<BlogList />
|
|
||||||
</Base>
|
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
|
|
||||||
|
export async function getStaticPaths() {
|
||||||
|
const posts = await getCollection("blog");
|
||||||
|
|
||||||
|
return posts
|
||||||
|
.filter(
|
||||||
|
(entry) => !entry.data.wip || process.env.NODE_ENV === "development"
|
||||||
|
)
|
||||||
|
.map((entry) => ({
|
||||||
|
params: { slug: entry.slug },
|
||||||
|
props: { entry },
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
const { entry } = Astro.props;
|
||||||
|
const { Content } = await entry.render();
|
||||||
|
---
|
||||||
|
|
||||||
|
<Content />
|
@ -1,38 +0,0 @@
|
|||||||
import rss from "@astrojs/rss";
|
|
||||||
/* function sortWithTransform(array, transform, sorter) {
|
|
||||||
console.log(array)
|
|
||||||
global.JANK_newArray = []
|
|
||||||
Promise.all(array.map(async (i) => { return await transform(i) })).then(
|
|
||||||
(res)=>{
|
|
||||||
res.forEach(i => {
|
|
||||||
global.JANK_newArray.push(i)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
)
|
|
||||||
console.log(global.JANK_newArray)
|
|
||||||
return array
|
|
||||||
}
|
|
||||||
|
|
||||||
/*const sortObject = obj => Object.keys(obj).sort(async (a,b)=> {
|
|
||||||
console.log(await obj[b]())
|
|
||||||
return (new Date((await obj[b]()).frontmatter.pubDate)) - (new Date((await obj[a]()).frontmatter.pubDate))
|
|
||||||
}).reduce((res, key) => (res[key] = obj[key], res), {}); * /
|
|
||||||
const sortObject = obj => sortWithTransform(Object.keys(obj), async (o) => {
|
|
||||||
return new Date((await obj[o]()).frontmatter.pubDate)
|
|
||||||
}, (a,b) => b-a).reduce((res, key) => (res[key] = obj[key], res), {}); */
|
|
||||||
|
|
||||||
let posts = import.meta.glob("./*.md*");
|
|
||||||
Object.keys(posts).forEach(async (k) => {
|
|
||||||
const res = await posts[k]();
|
|
||||||
if (res.frontmatter.wip) {
|
|
||||||
delete posts[k];
|
|
||||||
}
|
|
||||||
}) //remove WIP entries
|
|
||||||
|
|
||||||
export const get = () => rss({
|
|
||||||
title: "Ruthenic's blog",
|
|
||||||
description: "My blog, utilized for talking about random things.",
|
|
||||||
site: import.meta.env.SITE,
|
|
||||||
items: posts,
|
|
||||||
stylesheet: "/rssStyle.xsl"
|
|
||||||
})
|
|
@ -0,0 +1,23 @@
|
|||||||
|
import rss from "@astrojs/rss";
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
|
|
||||||
|
export async function get(context) {
|
||||||
|
const posts = (await getCollection("blog"))
|
||||||
|
.filter(
|
||||||
|
(entry) => !entry.data.wip || process.env.NODE_ENV === "development"
|
||||||
|
)
|
||||||
|
.map((post) => ({
|
||||||
|
title: post.data.title,
|
||||||
|
pubDate: post.data.pubDate,
|
||||||
|
description: post.data.description,
|
||||||
|
link: `/blog/${post.slug}/`,
|
||||||
|
}));
|
||||||
|
|
||||||
|
return rss({
|
||||||
|
title: "Ruthenic's blog",
|
||||||
|
description: "My blog, utilized for talking about random things.",
|
||||||
|
site: context.site,
|
||||||
|
items: posts,
|
||||||
|
stylesheet: "/rssStyle.xsl",
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
import Base from "../../layout/Base.astro";
|
||||||
|
import BlogList from "../../components/blogList.astro";
|
||||||
|
---
|
||||||
|
|
||||||
|
<Base title="ruthenic.com: Blog">
|
||||||
|
<h1>Blog</h1>
|
||||||
|
<BlogList />
|
||||||
|
</Base>
|
@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
layout: ../../layout/BaseBlog.astro
|
|
||||||
title: template
|
|
||||||
description: description
|
|
||||||
wip: true
|
|
||||||
pubDate: WORDDAY, MONTH NUMDAY YEAR
|
|
||||||
---
|
|
||||||
|
|
||||||
Content here!
|
|
@ -1,9 +0,0 @@
|
|||||||
---
|
|
||||||
layout: ../../layout/BaseBlog.astro
|
|
||||||
title: Why Tulpamancy isn't
|
|
||||||
description: description
|
|
||||||
wip: true
|
|
||||||
pubDate: WORDDAY, MONTH NUMDAY YEAR
|
|
||||||
---
|
|
||||||
|
|
||||||
Content here!
|
|
@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
import Base from "../layout/Base.astro";
|
|
||||||
const allFics = await Astro.glob("./fanfic/*.md*");
|
|
||||||
---
|
|
||||||
|
|
||||||
<Base title="ruthenic.com: Fanfics">
|
|
||||||
<h1>Fanfics</h1>
|
|
||||||
<div>
|
|
||||||
{
|
|
||||||
allFics
|
|
||||||
.sort((a, b) =>
|
|
||||||
a.frontmatter.title.localeCompare(b.frontmatter.title)
|
|
||||||
)
|
|
||||||
.map((fic) =>
|
|
||||||
(
|
|
||||||
<a href={fic.url}>
|
|
||||||
<div
|
|
||||||
class="main-content"
|
|
||||||
style="margin-bottom: 10px; font-size: 125%;"
|
|
||||||
>
|
|
||||||
<div style="display:flex;">
|
|
||||||
<b>{fic.frontmatter.title}</b>{fic.frontmatter.oneshot ? (<span> - (Oneshot)</span>) : undefined}
|
|
||||||
</div>
|
|
||||||
{fic.frontmatter.description ? (<br/><i>{fic.frontmatter.description}</i>) : undefined}
|
|
||||||
{fic.frontmatter.tags.toString().split(",").join(", ")}
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
</Base>
|
|
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
|
|
||||||
|
export async function getStaticPaths() {
|
||||||
|
const fics = await getCollection("fanfic");
|
||||||
|
|
||||||
|
return fics
|
||||||
|
.filter(
|
||||||
|
(entry) => !entry.data.wip || process.env.NODE_ENV === "development"
|
||||||
|
)
|
||||||
|
.map((entry) => ({
|
||||||
|
params: { slug: entry.slug },
|
||||||
|
props: { entry },
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
const { entry } = Astro.props;
|
||||||
|
const { Content } = await entry.render();
|
||||||
|
---
|
||||||
|
|
||||||
|
<Content />
|
@ -0,0 +1,26 @@
|
|||||||
|
import rss from "@astrojs/rss";
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
|
|
||||||
|
export async function get(context) {
|
||||||
|
const fics = (await getCollection("fanfic"))
|
||||||
|
.filter(
|
||||||
|
(entry) =>
|
||||||
|
(!entry.data.wip || process.env.NODE_ENV === "development") &&
|
||||||
|
!entry.data.parent
|
||||||
|
)
|
||||||
|
.map((fic) => ({
|
||||||
|
title: fic.data.title,
|
||||||
|
// fics dont have a published date and it's required for some reason, literally 1984
|
||||||
|
pubDate: new Date(441763200000),
|
||||||
|
description: fic.data.description ?? "",
|
||||||
|
link: `/fanfic/${fic.slug}/`,
|
||||||
|
}));
|
||||||
|
|
||||||
|
return rss({
|
||||||
|
title: "Ruthenic's fanfics",
|
||||||
|
description: "My fanfics.",
|
||||||
|
site: context.site,
|
||||||
|
items: fics,
|
||||||
|
stylesheet: "/rssStyle.xsl",
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
|
|
||||||
|
import Base from "../../layout/Base.astro";
|
||||||
|
const fics = (await getCollection("fanfic"))
|
||||||
|
.filter(
|
||||||
|
(entry) =>
|
||||||
|
(!entry.data.wip || process.env.NODE_ENV === "development") &&
|
||||||
|
!entry.data.parent
|
||||||
|
)
|
||||||
|
.sort((a, b) => a.data.title.localeCompare(b.data.title));
|
||||||
|
---
|
||||||
|
|
||||||
|
<Base title="ruthenic.com: Fanfics">
|
||||||
|
<h1>Fanfics</h1>
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
fics.map((fic) => (
|
||||||
|
<a href={`fanfic/${fic.slug}`}>
|
||||||
|
<div
|
||||||
|
class="main-content"
|
||||||
|
style="margin-bottom: 10px; font-size: 125%;"
|
||||||
|
>
|
||||||
|
<div style="display:flex;">
|
||||||
|
<b>{fic.data.title}</b>
|
||||||
|
{fic.data.oneshot ? (
|
||||||
|
<span> - (Oneshot)</span>
|
||||||
|
) : undefined}
|
||||||
|
</div>
|
||||||
|
{fic.data.description ? (
|
||||||
|
<i>{fic.data.description}</i>
|
||||||
|
) : undefined}
|
||||||
|
{fic.data.tags?.join(", ")}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</Base>
|
@ -1,19 +1,26 @@
|
|||||||
---
|
---
|
||||||
import Base from '../layout/Base.astro'
|
import Base from "../layout/Base.astro";
|
||||||
import Linklist from '../components/linkList.astro'
|
import Linklist from "../components/linkList.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base title="ruthenic.com: Homepage">
|
<Base title="ruthenic.com: Homepage">
|
||||||
<h1>Ruthenic's site</h1> <!--originally intended to be only written in CSS and HTML but f**k that-->
|
<h1>Ruthenic's site</h1>
|
||||||
|
<!--originally intended to be only written in CSS and HTML but f**k that-->
|
||||||
<p>Welcome to my site. I hope you enjoy the experience.</p>
|
<p>Welcome to my site. I hope you enjoy the experience.</p>
|
||||||
<marquee behavior="scroll" direction="left"><a href = "https://github.com/Ruthenic">Checkout (haha) my Github!</a></marquee>
|
<marquee behavior="scroll" direction="left"
|
||||||
|
><a href="https://github.com/Ruthenic">Checkout (haha) my Github!</a
|
||||||
|
></marquee
|
||||||
|
>
|
||||||
<p>Check me out on</p>
|
<p>Check me out on</p>
|
||||||
<Linklist entries={{
|
<Linklist
|
||||||
|
entries={{
|
||||||
Gitea: "https://git.ruthenic.com/ruthenic",
|
Gitea: "https://git.ruthenic.com/ruthenic",
|
||||||
Github: "https://github.com/Ruthenic",
|
Github: "https://github.com/Ruthenic",
|
||||||
"Last.fm": "https://www.last.fm/user/DustyAngel47",
|
"Last.fm": "https://www.last.fm/user/DustyAngel47",
|
||||||
Fediverse: "https://social.ruthenic.com/ruthenic",
|
Fediverse: "https://social.ruthenic.com/ruthenic",
|
||||||
Youtube: "https://www.youtube.com/channel/UC5BfTH4lP7rY5q3qSAvpvhA",
|
Youtube: "https://www.youtube.com/channel/UC5BfTH4lP7rY5q3qSAvpvhA",
|
||||||
"Wattpad (for some reason)": "https://www.wattpad.com/user/DustyAngel47"
|
"Wattpad (for some reason)":
|
||||||
}}/>
|
"https://www.wattpad.com/user/DustyAngel47",
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</Base>
|
</Base>
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
---
|
---
|
||||||
import Base from '../layout/BaseHeaderless.astro'
|
import Base from "../layout/BaseHeaderless.astro";
|
||||||
import Newtab from '../components/linkList.astro'
|
import NewTab from "../components/linkList.astro";
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base title="ruthenic.com: Example Page">
|
<Base title="ruthenic.com: New Tab">
|
||||||
<Newtab entries={{
|
<NewTab
|
||||||
|
entries={{
|
||||||
Youtube: "https://youtube.com",
|
Youtube: "https://youtube.com",
|
||||||
Fediverse: "https://social.ruthenic.com",
|
Fediverse: "https://social.ruthenic.com",
|
||||||
Gitea: "https://git.ruthenic.com",
|
Gitea: "https://git.ruthenic.com",
|
||||||
"ruthenic.com": "https://ruthenic.com",
|
"ruthenic.com": "https://ruthenic.com",
|
||||||
CharacterAI: "https://beta.character.ai",
|
CharacterAI: "https://beta.character.ai",
|
||||||
AO3: "https://archiveofourown.org"
|
AO3: "https://archiveofourown.org",
|
||||||
}}/>
|
}}
|
||||||
|
/>
|
||||||
</Base>
|
</Base>
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
import Base from '../layout/Base.astro'
|
|
||||||
---
|
|
||||||
|
|
||||||
<Base title="ruthenic.com: Example Page">
|
|
||||||
<h1>Hello, world!</h1>
|
|
||||||
</Base>
|
|
@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"extends": "astro/tsconfigs/base",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"moduleResolution": "node"
|
"strictNullChecks": true,
|
||||||
|
"allowJs": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue