270 lines
7.6 KiB
TypeScript
270 lines
7.6 KiB
TypeScript
import type { TerminalLine } from '$lib/components/tui/types';
|
|
import { user } from '$lib/config';
|
|
|
|
const artist = [
|
|
{
|
|
name: 'Noah Floersch',
|
|
url: 'https://music.youtube.com/channel/UCgPjhKqPg5cPxErhqnoPlWg?si=B7GEz2QMNtrgnAbz'
|
|
},
|
|
{
|
|
name: 'Laufey',
|
|
url: 'https://music.youtube.com/channel/UCJtROTPxo3qnEzww8JyDxuA?si=WwgYFkoccnXtJ6Im'
|
|
},
|
|
{
|
|
name: 'Tate McRae',
|
|
url: 'https://music.youtube.com/channel/UCz86IA7ooUetFnUGa_YlsVw?si=A1t0-hLHswhbEG0U'
|
|
}
|
|
]
|
|
|
|
const hobbies = [
|
|
{
|
|
name: 'Swimming',
|
|
description: 'I enjoy swimming as a way to relax and stay active. It is my favorite sport.',
|
|
icon: 'proicons:person-swim'
|
|
},
|
|
{
|
|
name: 'Baking',
|
|
description: 'I love baking pastries and experimenting with new dessert recipes.',
|
|
icon: 'proicons:cake'
|
|
},
|
|
{
|
|
name: 'Robotics',
|
|
description: 'Building and programming robots to solve problems is fun.',
|
|
icon: 'proicons:robot'
|
|
}
|
|
]
|
|
|
|
const games = [
|
|
{
|
|
name: 'Minecraft',
|
|
image: '/img/minecraft.png',
|
|
url: 'https://minecraft.net',
|
|
link: 'https://minecraft.net'
|
|
},
|
|
{
|
|
name: 'Pokemon TCG Online',
|
|
image: '/img/pokemontcg.png',
|
|
url: 'https://www.pokemon.com/us/pokemon-tcg'
|
|
},
|
|
{
|
|
name: "Fire Watch",
|
|
image: '/img/firewatch.png',
|
|
url: 'https://firewatchgame.com'
|
|
},
|
|
{
|
|
name: "Expediton 33",
|
|
image: '/img/e33.png',
|
|
url: 'https://expedition33.com'
|
|
},
|
|
{
|
|
name: "Mini Motorways",
|
|
image: '/img/mini.png',
|
|
url: 'https://store.steampowered.com/app/1127500/Mini_Motorways/'
|
|
},
|
|
{
|
|
name: "Risk",
|
|
image: '/img/risk.png',
|
|
url: 'https://store.steampowered.com/app/1128810/RISK_Global_Domination/'
|
|
}
|
|
]
|
|
|
|
let shows = [
|
|
{
|
|
name: 'Silo',
|
|
rating: '10/10',
|
|
imdburl: 'https://www.imdb.com/title/tt14688458/'
|
|
},
|
|
{
|
|
name: 'The Mandalorian',
|
|
rating: '7/10',
|
|
imdburl: 'https://www.imdb.com/title/tt8111088/'
|
|
},
|
|
{
|
|
name: "Andor",
|
|
rating: '9/10',
|
|
imdburl: 'https://www.imdb.com/title/tt9253284/'
|
|
},
|
|
{
|
|
name: 'Severance',
|
|
rating: '9/10',
|
|
imdburl: 'https://www.imdb.com/title/tt11280740/'
|
|
},
|
|
{
|
|
name: "D.P. (KDrama)",
|
|
rating: '10/10',
|
|
imdburl: 'https://www.imdb.com/title/tt13024974/'
|
|
}
|
|
];
|
|
|
|
shows = shows.sort((a, b) => {
|
|
const ratingA = parseFloat(a.rating.split('/')[0]);
|
|
const ratingB = parseFloat(b.rating.split('/')[0]);
|
|
return ratingB - ratingA;
|
|
});
|
|
|
|
|
|
let movies = [
|
|
{
|
|
name: 'Interstellar',
|
|
rating: '10/10',
|
|
imdburl: 'https://www.imdb.com/title/tt0816692/'
|
|
},
|
|
{
|
|
name: "How to Train Your Dragon",
|
|
rating: '10/10',
|
|
imdburl: 'https://www.imdb.com/title/tt1621800/'
|
|
}
|
|
];
|
|
|
|
movies = movies.sort((a, b) => {
|
|
const ratingA = parseFloat(a.rating.split('/')[0]);
|
|
const ratingB = parseFloat(b.rating.split('/')[0]);
|
|
return ratingB - ratingA;
|
|
});
|
|
|
|
|
|
export const lines: TerminalLine[] = [
|
|
{ type: 'command', content: 'cat ~/about.md' },
|
|
{ type: 'blank', content: '' },
|
|
|
|
{ type: 'image', content: '', image: user.avatar, imageAlt: user.name, imageWidth: 200, inline: true },
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
groupDirection: 'column',
|
|
groupAlign: 'start',
|
|
inline: true,
|
|
children: [
|
|
{ type: 'blank', content: '' },
|
|
{ type: 'header', content: `(&bold)${user.displayname}(&)` },
|
|
{ type: 'info', content: `(&accent)${user.title}(&)` },
|
|
{ type: 'output', content: `(&white)Location:(&) (&primary)${user.location}(&)` },
|
|
{ type: 'output', content: `(&muted)${user.bio}(&)` },
|
|
]
|
|
},
|
|
{ type: 'blank', content: '' },
|
|
|
|
{
|
|
type: 'group', content: '', groupAlign: 'start', groupGap: '1rem',
|
|
children: [
|
|
{ type: 'output', content: `(&primary, bold)Links >(&)`, inline: true },
|
|
{ type: 'link', href: "/about#hobbies", content: `(&bg-blue, black, bold)Hobbies(&)`, inline: true },
|
|
{ type: 'link', href: "/about#games", content: `(&bg-orange, black, bold)Games(&)`, inline: true },
|
|
{ type: 'link', href: "/about#shows", content: `(&bg-yellow, black, bold)Shows(&)`, inline: true },
|
|
{ type: 'link', href: "/about#movies", content: `(&bg-green, black, bold)Movies(&)`, inline: true },
|
|
{ type: 'link', href: "/about#music", content: `(&bg-accent, black, bold)Music(&)`, inline: true },
|
|
]
|
|
},
|
|
|
|
|
|
{ type: 'divider', content: 'Hobbies', id: 'hobbies' },
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
display: 'grid',
|
|
children: hobbies.map((h): TerminalLine => ({
|
|
type: 'card',
|
|
cardTitle: h.name,
|
|
icon: h.icon,
|
|
content: h.description,
|
|
cardWidth: 1,
|
|
cardFloat: 'center',
|
|
}))
|
|
},
|
|
{ type: 'blank', content: '' },
|
|
|
|
{ type: 'divider', content: 'Games', id: 'games' },
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
display: 'grid',
|
|
children: games.map((g): TerminalLine => ({
|
|
type: 'card',
|
|
cardTitle: g.name,
|
|
image: g.image,
|
|
imageAlt: g.name,
|
|
content: '',
|
|
cardWidth: 1,
|
|
cardFloat: 'center',
|
|
children: [
|
|
{
|
|
type: 'button',
|
|
content: '(&icon, proicons:game) (&white)Play(&)',
|
|
href: g.url,
|
|
style: 'primary',
|
|
textStyle: 'center',
|
|
}
|
|
]
|
|
}))
|
|
},
|
|
|
|
{ type: 'blank', content: '' },
|
|
|
|
{ type: 'divider', content: 'TV Shows', id: 'shows' },
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
display: 'grid',
|
|
children: shows.map((s): TerminalLine => ({
|
|
type: 'card',
|
|
cardTitle: s.name,
|
|
content: '',
|
|
cardWidth: 1,
|
|
cardFloat: 'center',
|
|
link: s.imdburl,
|
|
children: [
|
|
{ type: 'output', content: `Rating: (&accent)${s.rating}(&)` }
|
|
]
|
|
}))
|
|
},
|
|
|
|
{ type: 'blank', content: '' },
|
|
|
|
{ type: 'divider', content: 'Movies', id: 'movies' },
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
display: 'grid',
|
|
children: movies.map((m): TerminalLine => ({
|
|
type: 'card',
|
|
cardTitle: m.name,
|
|
content: '',
|
|
cardWidth: 1,
|
|
cardFloat: 'center',
|
|
link: m.imdburl,
|
|
children: [
|
|
{ type: 'output', content: `Rating: (&accent)${m.rating}(&)` }
|
|
]
|
|
}))
|
|
},
|
|
|
|
{ type: 'blank', content: '' },
|
|
|
|
{ type: 'divider', content: 'Music Recommendations', id: 'music' },
|
|
|
|
{
|
|
type: 'group',
|
|
content: '',
|
|
groupDirection: 'row',
|
|
children: [
|
|
{ type: 'output', content: '(&accent)Artists:(&) ', inline: true },
|
|
...artist.flatMap((a, i): TerminalLine[] => {
|
|
const item: TerminalLine = { type: 'link', content: `(&primary)${a.name}(&)`, href: a.url, inline: true };
|
|
return i < artist.length - 1 ? [item, { type: 'output', content: ' (&muted)•(&) ', inline: true }] : [item];
|
|
}),
|
|
]
|
|
},
|
|
|
|
{ type: 'blank', content: '' },
|
|
// {
|
|
// type: 'card',
|
|
// id: 'music-player',
|
|
// content: '',
|
|
// mobile: false,
|
|
// children: [
|
|
// { type: 'info', content: 'Loading playlist...' }
|
|
// ]
|
|
// },
|
|
// { type: 'blank', content: '' }
|
|
];
|