Compare commits
2 commits
7fe9e8c25f
...
c5af572d38
Author | SHA1 | Date | |
---|---|---|---|
c5af572d38 | |||
04ec083b19 |
|
@ -1,7 +1,7 @@
|
|||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
checking:
|
||||
|
|
|
@ -66,7 +66,6 @@ deploy-site:
|
|||
- ssh $DEPLOY_USER@$DEPLOY_HOST 'PATH="$HOME/.local/bin:$PATH"; cd fgo-ta_com; find public -maxdepth 1 -printf "%p\n"; screen -S fgo-ta_com-public -dm serve public/ -p 9200'
|
||||
- echo "Website is up on https://fgo-ta.com"
|
||||
|
||||
|
||||
redeploy-site:
|
||||
stage: scripts
|
||||
when: manual
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { defineConfig } from 'astro/config';
|
||||
import sitemap from "@astrojs/sitemap";
|
||||
import { defineConfig } from 'astro/config'
|
||||
import sitemap from '@astrojs/sitemap'
|
||||
|
||||
export default defineConfig({
|
||||
sitemap: true,
|
||||
|
@ -7,5 +7,5 @@ export default defineConfig({
|
|||
outDir: 'dist',
|
||||
publicDir: 'static',
|
||||
site: 'https://fgo-ta.com/',
|
||||
integrations: [sitemap()]
|
||||
});
|
||||
integrations: [sitemap()],
|
||||
})
|
||||
|
|
67
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "fgo-ta-com-website",
|
||||
"version": "0.1.5",
|
||||
"version": "0.1.7",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "fgo-ta-com-website",
|
||||
"version": "0.1.5",
|
||||
"version": "0.1.7",
|
||||
"dependencies": {
|
||||
"@astro-community/astro-embed-youtube": "^0.4.3",
|
||||
"@astrojs/check": "^0.3.4",
|
||||
|
@ -16,6 +16,10 @@
|
|||
"iconoir": "^7.3.0",
|
||||
"postcss-preset-env": "^9.3.0",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^3.1.1",
|
||||
"prettier-plugin-astro": "^0.12.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
|
@ -6273,6 +6277,41 @@
|
|||
"node": ">=8.15"
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
|
||||
"integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
|
||||
"devOptional": true,
|
||||
"bin": {
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/prettier-plugin-astro": {
|
||||
"version": "0.12.3",
|
||||
"resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.12.3.tgz",
|
||||
"integrity": "sha512-GthUSu3zCvmtVyqlArosez0xE08vSJ0R1sWurxIWpABaCkNGYFANoUdFkqmIo54EV2uPLGcVJzOucWvCjPBWvg==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@astrojs/compiler": "^1.5.5",
|
||||
"prettier": "^3.0.0",
|
||||
"sass-formatter": "^0.7.6"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.15.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prettier-plugin-astro/node_modules/@astrojs/compiler": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-1.8.2.tgz",
|
||||
"integrity": "sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/prismjs": {
|
||||
"version": "1.29.0",
|
||||
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
|
||||
|
@ -7050,6 +7089,12 @@
|
|||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/s.color": {
|
||||
"version": "0.0.15",
|
||||
"resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz",
|
||||
"integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/safe-buffer": {
|
||||
"version": "5.2.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||
|
@ -7074,6 +7119,15 @@
|
|||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"node_modules/sass-formatter": {
|
||||
"version": "0.7.8",
|
||||
"resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.8.tgz",
|
||||
"integrity": "sha512-7fI2a8THglflhhYis7k06eUf92VQuJoXzEs2KRP0r1bluFxKFvLx0Ns7c478oYGM0fPfrr846ZRWVi2MAgHt9Q==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"suf-log": "^2.5.3"
|
||||
}
|
||||
},
|
||||
"node_modules/sax": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||
|
@ -7418,6 +7472,15 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/suf-log": {
|
||||
"version": "2.5.3",
|
||||
"resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz",
|
||||
"integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"s.color": "0.0.15"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "fgo-ta-com-website",
|
||||
"type": "module",
|
||||
"version": "0.1.6",
|
||||
"version": "0.1.7",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
|
@ -22,5 +22,9 @@
|
|||
"browserslist": [
|
||||
"last 2 versions",
|
||||
">0.5% and not dead"
|
||||
]
|
||||
],
|
||||
"devDependencies": {
|
||||
"prettier": "^3.1.1",
|
||||
"prettier-plugin-astro": "^0.12.3"
|
||||
}
|
||||
}
|
||||
|
|
15
serve.json
|
@ -5,16 +5,21 @@
|
|||
"headers": [
|
||||
{
|
||||
"source": "**/*.@(jpg|jpeg|gif|png|webp|svg)",
|
||||
"headers" : [{
|
||||
"headers": [
|
||||
{
|
||||
"key": "Cache-Control",
|
||||
"value": "no-cache"
|
||||
}]
|
||||
}, {
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "404.html",
|
||||
"headers" : [{
|
||||
"headers": [
|
||||
{
|
||||
"key": "Cache-Control",
|
||||
"value": "no-cache"
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
BIN
src/assets/ta_servants/altera.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
src/assets/ta_servants/astrea.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
src/assets/ta_servants/charlotte.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
src/assets/ta_servants/gong.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/ta_servants/jalter.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/ta_servants/koyo.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
src/assets/ta_servants/melt.png
Normal file
After Width: | Height: | Size: 34 KiB |
|
@ -1,11 +1,11 @@
|
|||
---
|
||||
interface Props {
|
||||
title: string;
|
||||
body: string;
|
||||
href: string;
|
||||
title: string
|
||||
body: string
|
||||
href: string
|
||||
}
|
||||
|
||||
const { href, title, body } = Astro.props;
|
||||
const { href, title, body } = Astro.props
|
||||
---
|
||||
|
||||
<li class="link-card">
|
||||
|
@ -30,7 +30,9 @@ const { href, title, body } = Astro.props;
|
|||
border-radius: 0.6rem;
|
||||
background-position: 100%;
|
||||
transition: background-position 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
||||
box-shadow:
|
||||
0 4px 6px -1px rgba(0, 0, 0, 0.1),
|
||||
0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.link-card > a {
|
||||
|
|
|
@ -11,9 +11,17 @@ const release = `https://forgejo.neshweb.net/Firq/fgo-ta-com-website/releases/ta
|
|||
In the future, it will be used to catalogue information around FGO TA and the
|
||||
game in general.
|
||||
<br />
|
||||
<a href="https://firq.dev" target="_blank" rel="noopener noreferrer">Feel free to check out my own site.</a>
|
||||
<a href="https://firq.dev" target="_blank" rel="noopener noreferrer"
|
||||
>Feel free to check out my own site.</a
|
||||
>
|
||||
<br />
|
||||
<span class="version">(Website version: <a href={release} target="_blank" rel="noopener noreferrer">{version}</a>)</span>
|
||||
<span class="version"
|
||||
>(Website version: <a
|
||||
href={release}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer">{version}</a
|
||||
>)</span
|
||||
>
|
||||
</span>
|
||||
<slot />
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
import { Image } from 'astro:assets';
|
||||
import { Image } from 'astro:assets'
|
||||
import logo from '../assets/logo.svg'
|
||||
import hamburger from 'iconoir/icons/menu.svg'
|
||||
const hamburger_src_url = `url("${hamburger.src}")`;
|
||||
const hamburger_src_url = `url("${hamburger.src}")`
|
||||
---
|
||||
|
||||
<header>
|
||||
|
@ -12,7 +12,12 @@ const hamburger_src_url = `url("${hamburger.src}")`;
|
|||
<ul class="desktop">
|
||||
<slot />
|
||||
</ul>
|
||||
<button class="mobile" aria-label="Navigation Button" tabindex="0" onclick="this.focus()">
|
||||
<button
|
||||
class="mobile"
|
||||
aria-label="Navigation Button"
|
||||
tabindex="0"
|
||||
onclick="this.focus()"
|
||||
>
|
||||
<ul>
|
||||
<slot />
|
||||
</ul>
|
||||
|
|
|
@ -17,7 +17,7 @@ if (currentPage === slug) {
|
|||
currPage = 'current'
|
||||
}
|
||||
|
||||
const icon_src_url = `url("${icon.src}")`;
|
||||
const icon_src_url = `url("${icon.src}")`
|
||||
const fulllink = `/${slug}`
|
||||
---
|
||||
|
||||
|
|
|
@ -12,7 +12,10 @@ const options_date: Intl.DateTimeFormatOptions = {
|
|||
day: '2-digit',
|
||||
}
|
||||
const { shortdescription, questReleaseDate, url, title } = Astro.props
|
||||
const render_date = new Date(questReleaseDate).toLocaleDateString('en-GB', options_date)
|
||||
const render_date = new Date(questReleaseDate).toLocaleDateString(
|
||||
'en-GB',
|
||||
options_date
|
||||
)
|
||||
---
|
||||
|
||||
<a href={url} rel="noopener noreferrer">
|
||||
|
|
|
@ -2,16 +2,15 @@
|
|||
import type { ImageMetadata } from 'astro'
|
||||
import { Image } from 'astro:assets'
|
||||
export interface Props {
|
||||
title: string,
|
||||
link: string,
|
||||
date: string,
|
||||
servant: string,
|
||||
turns: string,
|
||||
title: string
|
||||
link: string
|
||||
date: string
|
||||
servant: string
|
||||
turns: string
|
||||
runner: string
|
||||
}
|
||||
|
||||
const { turns, runner, date, servant, link, title } =
|
||||
Astro.props
|
||||
const { turns, runner, date, servant, link, title } = Astro.props
|
||||
|
||||
const options_date: Intl.DateTimeFormatOptions = {
|
||||
year: 'numeric',
|
||||
|
@ -25,7 +24,6 @@ const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
|
|||
const servant_images = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/ta_servants/*.png'
|
||||
)
|
||||
|
||||
---
|
||||
|
||||
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
},
|
||||
"data": [
|
||||
{
|
||||
"title": "Cernunnos 4T (No Castoria)",
|
||||
"title": "Shishou 4T (No Castoria)",
|
||||
"link": "https://www.youtube.com/watch?v=WrHudtdfivA",
|
||||
"date": "2023-07-19",
|
||||
"servant": "shishou",
|
||||
|
@ -15,12 +15,68 @@
|
|||
"runner": "Firq"
|
||||
},
|
||||
{
|
||||
"title": "Cernunnos 4T (FLO)",
|
||||
"link": "https://www.youtube.com/watch?O1f-go7uJQM",
|
||||
"title": "Shishou 4T (FLO)",
|
||||
"link": "https://www.youtube.com/watch?v=O1f-go7uJQM",
|
||||
"date": "2023-07-19",
|
||||
"servant": "shishou",
|
||||
"turns": "4T",
|
||||
"runner": "Requiem"
|
||||
},
|
||||
{
|
||||
"title": "Jalter 4T",
|
||||
"link": "https://www.youtube.com/watch?v=VGuXstsJa6k",
|
||||
"date": "2023-07-10",
|
||||
"servant": "jalter",
|
||||
"turns": "4T",
|
||||
"runner": "Ray"
|
||||
},
|
||||
{
|
||||
"title": "Altera 4T",
|
||||
"link": "https://www.youtube.com/watch?v=BrgJT3gC6sg",
|
||||
"date": "2023-07-13",
|
||||
"servant": "altera",
|
||||
"turns": "4T",
|
||||
"runner": "Requiem"
|
||||
},
|
||||
{
|
||||
"title": "Astrea 4T (4 Slot)",
|
||||
"link": "https://www.youtube.com/watch?v=0pwUn_bickU",
|
||||
"date": "2023-07-17",
|
||||
"servant": "astrea",
|
||||
"turns": "4T",
|
||||
"runner": "Alastair Hale"
|
||||
},
|
||||
{
|
||||
"title": "Meltryllis 4T (4 Slot)",
|
||||
"link": "https://www.youtube.com/watch?v=B5uZkC40SQc",
|
||||
"date": "2023-07-21",
|
||||
"servant": "melt",
|
||||
"turns": "4T",
|
||||
"runner": "Zectry"
|
||||
},
|
||||
{
|
||||
"title": "Kijyo Koyo 4T",
|
||||
"link": "https://www.youtube.com/watch?v=hea0QSvTbkY",
|
||||
"date": "2023-07-14",
|
||||
"servant": "koyo",
|
||||
"turns": "4T",
|
||||
"runner": "MCR"
|
||||
},
|
||||
{
|
||||
"title": "Charlotte 4T",
|
||||
"link": "https://www.youtube.com/watch?v=HMD2WLNGxAk",
|
||||
"date": "2023-07-12",
|
||||
"servant": "charlotte",
|
||||
"turns": "4T",
|
||||
"runner": "Dante09"
|
||||
},
|
||||
{
|
||||
"title": "Gong 4T (4 NPs)",
|
||||
"link": "https://www.youtube.com/watch?v=qQ82YA4BeGE",
|
||||
"date": "2023-07-11",
|
||||
"servant": "gong",
|
||||
"turns": "4T",
|
||||
"runner": "BadLuck"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -15,7 +15,7 @@ export interface Props {
|
|||
|
||||
const icons: IconsLookup = {
|
||||
home: home,
|
||||
database: database
|
||||
database: database,
|
||||
}
|
||||
|
||||
const { descriptionOverride, currentpage, title } = Astro.props
|
||||
|
@ -38,7 +38,7 @@ const mapped_navdata = navdata.map((item) => ({
|
|||
}))
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{title}</title>
|
||||
|
|
|
@ -9,14 +9,13 @@ export interface Props {
|
|||
}
|
||||
|
||||
const { datafile } = Astro.props
|
||||
const fulldata = import.meta.glob<{ default: any }>(
|
||||
`../content/data/*.json`
|
||||
)
|
||||
const fulldata = import.meta.glob<{ default: any }>(`../content/data/*.json`)
|
||||
const filecontent: filedata = (
|
||||
await fulldata[`../content/data/${datafile}.json`]()
|
||||
)['default']
|
||||
|
||||
const title = filecontent.info.title
|
||||
filecontent.data.sort((a, b) => Date.parse(b.date) - Date.parse(a.date))
|
||||
---
|
||||
|
||||
<Layout
|
||||
|
|
|
@ -9,7 +9,9 @@ const description =
|
|||
'My own small blog. Topics include FGO, TA, Programming, web technologies and more!'
|
||||
|
||||
const questInfo = []
|
||||
const fulldata = import.meta.glob<{ default: filedata }>(`../content/data/*.json`)
|
||||
const fulldata = import.meta.glob<{ default: filedata }>(
|
||||
`../content/data/*.json`
|
||||
)
|
||||
|
||||
for (const [key, value] of Object.entries(fulldata)) {
|
||||
const url = `${Astro.url}/${findSlug(key)}`
|
||||
|
|
|
@ -6,15 +6,9 @@ export function getStaticPaths() {
|
|||
const fulldata = import.meta.glob<{ default: any }>(
|
||||
`../../content/data/*.json`
|
||||
)
|
||||
const keylist = Object.keys(fulldata).map(
|
||||
(item) => findSlug(item)
|
||||
)
|
||||
const keylist = Object.keys(fulldata).map((item) => findSlug(item)!)
|
||||
|
||||
const paths: { params: { slug: string } }[] = []
|
||||
for (const key of keylist) {
|
||||
paths.push({ params: { slug: key! } })
|
||||
}
|
||||
return paths
|
||||
return keylist.map((slug) => ({ params: { slug } }))
|
||||
}
|
||||
|
||||
const { slug } = Astro.params
|
||||
|
|