Compare commits

..

No commits in common. "58a49fe3fabec11872c006d45dbe485c801ab9d7" and "709f459963576e0a7c45b147a2e571f5dbff3f11" have entirely different histories.

232 changed files with 348 additions and 422 deletions

View file

@ -8,7 +8,7 @@ FROM forgejo.neshweb.net/firq/website-serve-docker:latest AS runtime
COPY --from=build /app/dist /public COPY --from=build /app/dist /public
COPY --from=build /app/serve.json /public/serve.json COPY --from=build /app/serve.json /public/serve.json
RUN rm -r /public/data/ RUN rm -r /public/assets/data/
ENV PORT 8081 ENV PORT 8081
EXPOSE 8081 EXPOSE 8081

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"version": "0.1.11", "version": "0.1.6",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"version": "0.1.11", "version": "0.1.6",
"dependencies": { "dependencies": {
"@astrojs/check": "^0.3.3", "@astrojs/check": "^0.3.3",
"@astrojs/sitemap": "^3.0.3", "@astrojs/sitemap": "^3.0.3",

View file

@ -1,7 +1,7 @@
{ {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"type": "module", "type": "module",
"version": "0.1.11", "version": "0.1.10",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",

View file

@ -21,7 +21,7 @@
"source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)", "source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)",
"headers" : [{ "headers" : [{
"key" : "Cache-Control", "key" : "Cache-Control",
"value" : "max-age=31536000" "value" : "max-age=86400"
}] }]
} }
] ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 554 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View file

@ -1,21 +1,16 @@
--- ---
import type { ImageMetadata } from 'astro'
import { Image } from 'astro:assets'
import mlb_ce from '../assets/ce/mlb.webp'
export interface Props { export interface Props {
name: string name: string
imageFile: string link: string
mlb: string mlb: string
} }
const { mlb, imageFile, name } = Astro.props const { mlb, link, name } = Astro.props
const imagePath = `/src/assets/ce/${imageFile}`
const images_ces = import.meta.glob<{ default: ImageMetadata }>(
'/src/assets/ce/*.{png,webp}'
)
const ce_img: string = `/assets/ce/${link}.webp`
const mlb_ce: string = `/assets/ce/mlb.webp`
let mlb_image: string = 'mlbalign' let mlb_image: string = 'mlbalign'
if (mlb === 'false') { if (mlb === 'false') {
mlb_image = 'hidemlb' mlb_image = 'hidemlb'
} }
@ -23,10 +18,10 @@ if (mlb === 'false') {
<article> <article>
<div> <div>
<Image src={images_ces[imagePath]()} alt={name} class="ce-crop" /> <img class="ce-crop" src={ce_img} alt={name} />
</div> </div>
<div class={mlb_image}> <div class={mlb_image}>
<Image src={mlb_ce} alt="Max-limit broken" class="mlb" /> <img class="mlb" src={mlb_ce} alt="Max-limit broken" />
</div> </div>
</article> </article>
@ -91,7 +86,6 @@ if (mlb === 'false') {
.mlb { .mlb {
width: 5.5rem; width: 5.5rem;
height: auto;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
} }

View file

@ -1,25 +1,20 @@
--- ---
import type { ImageMetadata } from 'astro'
import { Image } from 'astro:assets'
export interface Props { export interface Props {
site: string site: string
link: string link: string
imageFile: string image: string
} }
const { imageFile, link, site } = Astro.props const { image, link, site } = Astro.props
const imagePath = `/src/assets/social/${imageFile}` const icon: string = `background-image: url('/assets/social/${image}.webp')`
const images_logos = import.meta.glob<{ default: ImageMetadata }>(
'/src/assets/social/*.{png,webp}'
)
--- ---
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}> <a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}>
<article class="contact do-hover"> <article class="contact do-hover">
<Image src={images_logos[imagePath]()} alt="" /> <div style={icon}>
<div> <span>
<h2>{site}</h2> <h2>{site}</h2>
</span>
</div> </div>
</article> </article>
</a> </a>
@ -29,29 +24,18 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
text-decoration: none; text-decoration: none;
} }
article { article div {
--size-value: 6.25rem;
border-radius: 1.25rem; border-radius: 1.25rem;
background-size: contain;
display: flex; display: flex;
justify-content: center;
align-items: center; align-items: center;
background-color: var(--c-darkergray); justify-content: center;
border-color: var(--c-darkgray); --size-value: 6.25rem;
padding: 10px;
text-align: center;
transition: transform var(--speed) var(--ease);
height: auto;
width: auto;
position: relative;
}
article img {
border-radius: 1.25rem;
width: var(--size-value); width: var(--size-value);
height: var(--size-value); height: var(--size-value);
} }
article:hover div { article:hover span {
border-radius: 1.25rem; border-radius: 1.25rem;
padding: 0 0.5rem; padding: 0 0.5rem;
display: flex; display: flex;
@ -59,11 +43,9 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
justify-content: center; justify-content: center;
text-align: center; text-align: center;
background-color: var(--c-darkgray); background-color: var(--c-darkgray);
height: calc(var(--size-value)); height: calc(var(--size-value) + 0.1rem);
width: calc(var(--size-value) - 1rem); width: calc(var(--size-value) + 0.1rem);
opacity: 90%; opacity: 90%;
z-index: 100;
position: absolute;
} }
article:hover h2 { article:hover h2 {
@ -75,14 +57,25 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
} }
article h2 { article h2 {
position: absolute;
display: none; display: none;
} }
article div { article span {
display: none; display: none;
} }
article {
border-radius: 1.25rem;
display: flex;
align-items: center;
justify-content: center;
background-color: var(--c-darkergray);
border-color: var(--c-darkgray);
padding: 10px;
text-align: center;
transition: transform var(--speed) var(--ease);
height: auto;
width: auto;
}
a:hover { a:hover {
transform: scale(var(--hover-scale)); transform: scale(var(--hover-scale));
} }

View file

@ -1,22 +1,19 @@
--- ---
import type { ImageMetadata } from 'astro';
import { Image } from 'astro:assets';
export interface Props { export interface Props {
name: string name: string
origin: string origin: string
imageFile: string image: string
link: string link: string
} }
const { link, imageFile, origin, name } = Astro.props const { link, image, origin, name } = Astro.props
const imagePath = `/src/assets/favourites/${imageFile}`
const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favourites/*.{png,webp}') const img: string = `/assets/favourites/${image}.webp`
--- ---
<a href={link} target="_blank" rel="noopener noreferrer"> <a href={link} target="_blank" rel="noopener noreferrer">
<div class="heading">{name}</div> <div class="heading">{name}</div>
<Image src={images[imagePath]()} alt={name} /> <img src={img} alt={name} />
<h2 class="subtext"> <h2 class="subtext">
{origin} {origin}
</h2> </h2>

View file

@ -1,11 +1,9 @@
--- ---
import { Image } from 'astro:assets';
import logo from '../assets/logo.svg'
--- ---
<header> <header>
<a href="/" rel="noopener noreferrer" aria-label="Home"> <a href="/" rel="noopener noreferrer" aria-label="Home">
<Image src={logo} alt="Website Logo"/> <img src="/assets/logo.svg" alt="" />
</a> </a>
<ul class="desktop"> <ul class="desktop">
<slot /> <slot />

View file

@ -1,40 +1,36 @@
--- ---
import type { ImageMetadata } from 'astro';
import { Image } from 'astro:assets';
export interface Props { export interface Props {
name: string name: string
level: string level: string
skills: string skills: string
np: string np: string
servantImageFile: string image_servant: string
bondceImageFile: string image_bond: string
ml: string ml: string
bond10: boolean bond10: string
} }
const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props const { bond10, ml, image_bond, image_servant, np, skills, level, name } =
const servantImagePath = `/src/assets/servant/${servantImageFile}` Astro.props
const bondceImagePath = `/src/assets/ce/bond-ce/${bondceImageFile}`
const images_servants = import.meta.glob<{ default: ImageMetadata }>('/src/assets/servant/*.{png,webp}')
const images_bond_ces = import.meta.glob<{ default: ImageMetadata }>('/src/assets/ce/bond-ce/*.{png,webp}')
const servant_img: string = `/assets/servant/${image_servant}.webp`
const bondce_img: string = `/assets/ce/bond-ce/${image_bond}.webp`
let bondce_css: string = 'bond-ce' let bondce_css: string = 'bond-ce'
if (bond10 === false) { if (bond10 === 'false') {
bondce_css += ' unobtained' bondce_css += ' unobtained'
} }
--- ---
<article> <article>
<Image src={images_servants[servantImagePath]()} alt={name} /> <img src={servant_img} alt={name} />
<h2 class="subtext"> <h2 class="subtext">
Level {level}<br /> Level {level}<br />
{skills}<br /> {skills}<br />
NP {np} NP {np}
</h2> </h2>
<div class="expand-on-hover"> <div class="expand-on-hover">
<Image src={images_bond_ces[bondceImagePath]()} alt="" class={bondce_css}/> <img class={bondce_css} src={bondce_img} alt="" />
<h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2> <h2 class="subtext">Mana Loading: {ml === 'Not Unlocked' && <br />}{ml}</h2>
</div> </div>
</article> </article>
@ -114,7 +110,6 @@ if (bond10 === false) {
.bond-ce { .bond-ce {
padding-top: 0.75rem; padding-top: 0.75rem;
width: auto;
height: 3rem; height: 3rem;
} }

View file

@ -1,18 +1,15 @@
--- ---
import type { ImageMetadata } from 'astro'
import { Image } from 'astro:assets'
export interface Props { export interface Props {
date: string date: string
title: string title: string
link: string link: string
targetImageFile: string image: string
user?: string user?: string
servantImageFile?: string ta_servant?: string
turns?: string turns?: string
} }
const { turns, targetImageFile, user, date, servantImageFile, link, title } = const { turns, ta_servant, user, date, image, link, title } = Astro.props
Astro.props
const options_date: Intl.DateTimeFormatOptions = { const options_date: Intl.DateTimeFormatOptions = {
year: 'numeric', year: 'numeric',
@ -20,16 +17,9 @@ const options_date: Intl.DateTimeFormatOptions = {
day: '2-digit', day: '2-digit',
} }
const targetImagePath = `/src/assets/ta_icons/${targetImageFile}`
const servantImagePath = `/src/assets/ta_icons/ta_servants/${servantImageFile}`
const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date) const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date)
const target_images = import.meta.glob<{ default: ImageMetadata }>( const icon: string = `background-image: url('/assets/ta_icons/${image}.webp')`
'/src/assets/ta_icons/*.{png,webp}' const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp`
)
const servant_images = import.meta.glob<{ default: ImageMetadata }>(
'/src/assets/ta_icons/ta_servants/*.{png,webp}'
)
let hasuser = '' let hasuser = ''
if (user !== undefined) { if (user !== undefined) {
@ -39,9 +29,10 @@ if (user !== undefined) {
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
<article> <article>
<Image src={target_images[targetImagePath]()} alt={title} class="icon" /> <div class="icon" style={icon}>
<div class="title"> <span>
<h2>{title}</h2> <h2>{title}</h2>
</span>
</div> </div>
<p> <p>
<span class={hasuser}> <span class={hasuser}>
@ -50,29 +41,22 @@ if (user !== undefined) {
{formatted_date} {formatted_date}
</p> </p>
<div class="expand-on-hover"> <div class="expand-on-hover">
<Image src={servant_images[servantImagePath ?? 'undefined']()} alt="" /> <img src={servant} alt="" />
<h2>{turns}</h2> <h2>{turns}</h2>
</div> </div>
</article> </article>
</a> </a>
<style> <style>
div {
display: none;
}
span { span {
display: none; display: none;
} }
.hasuser { .hasuser {
display: flex; display: flex;
} }
a { a {
text-decoration: none; text-decoration: none;
} }
article { article {
background-color: var(--c-darkergray); background-color: var(--c-darkergray);
border-color: var(--c-darkgray); border-color: var(--c-darkgray);
@ -81,28 +65,23 @@ if (user !== undefined) {
transition: transform var(--speed) var(--ease); transition: transform var(--speed) var(--ease);
height: auto; height: auto;
width: auto; width: auto;
max-width: 8rem;
border-radius: 1.25rem; border-radius: 1.25rem;
padding-bottom: 1.5rem; padding-bottom: 1.5rem;
--size-value: 7rem;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
} }
article:hover { article:hover {
transform: scale(var(--hover-scale)); transform: scale(var(--hover-scale));
} }
article > .icon { article > .icon {
border-radius: 1.25rem; border-radius: 1.25rem;
--size-value: 7rem;
width: var(--size-value); width: var(--size-value);
height: var(--size-value); height: var(--size-value);
margin: 0.5rem; margin: 0.5rem;
background-size: var(--size-value);
background-position: center center;
} }
article:hover .title { article:hover .icon span {
display: flex; display: flex;
position: absolute; position: absolute;
align-items: center; align-items: center;
@ -113,10 +92,9 @@ if (user !== undefined) {
width: calc(var(--size-value) + 0.1rem); width: calc(var(--size-value) + 0.1rem);
opacity: 90%; opacity: 90%;
border-radius: 1.25rem; border-radius: 1.25rem;
top: 1.1em;
} }
article:hover .title h2 { article:hover span h2 {
margin: 0; margin: 0;
display: inline-flex; display: inline-flex;
font-weight: bold; font-weight: bold;
@ -126,11 +104,11 @@ if (user !== undefined) {
padding: 0.5rem; padding: 0.5rem;
} }
article .title h2 { article span h2 {
display: none; display: none;
} }
article .title { article .icon span {
display: none; display: none;
} }

View file

@ -1,25 +1,21 @@
--- ---
import type { ImageMetadata } from 'astro'
import { Image } from 'astro:assets'
export interface Props { export interface Props {
title: string title: string
link: string link: string
imageFile: string image: string
} }
const { imageFile, link, title } = Astro.props const { image, link, title } = Astro.props
const imagePath = `/src/assets/technologies/${imageFile}`
const images_logos = import.meta.glob<{ default: ImageMetadata }>( const icon: string = `background-image: url('/assets/technologies/${image}.webp')`
'/src/assets/technologies/*.{png,webp}'
)
--- ---
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}> <a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
<article> <article>
<Image src={images_logos[imagePath]()} alt="" /> <div style={icon}>
<div> <span>
<h2>{title}</h2> <h2>{title}</h2>
</span>
</div> </div>
</article> </article>
</a> </a>
@ -29,31 +25,31 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
text-decoration: none; text-decoration: none;
} }
article { article {
--size-value: 6.25rem;
background-color: var(--c-darkergray); background-color: var(--c-darkergray);
border-color: var(--c-darkgray); border-color: var(--c-darkgray);
padding: 10px; padding: 10px;
display: flex;
justify-content: center;
align-items: center;
text-align: center; text-align: center;
transition: transform var(--speed) var(--ease); transition: transform var(--speed) var(--ease);
height: auto; height: auto;
width: auto; width: auto;
line-height: 100px; line-height: 100px;
border-radius: 1.25rem; border-radius: 1.25rem;
position: relative;
} }
article:hover { article:hover {
transform: scale(var(--hover-scale)); transform: scale(var(--hover-scale));
} }
article > img { article > div {
border-radius: 1.25rem; border-radius: 1.25rem;
display: flex;
justify-content: center;
align-items: center;
background-size: contain;
--size-value: 6.25rem;
width: var(--size-value); width: var(--size-value);
height: var(--size-value); height: var(--size-value);
} }
article:hover div { article:hover span {
border-radius: 1.25rem; border-radius: 1.25rem;
padding: 0 0.5rem; padding: 0 0.5rem;
display: flex; display: flex;
@ -61,16 +57,13 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
justify-content: center; justify-content: center;
text-align: center; text-align: center;
background-color: var(--c-darkgray); background-color: var(--c-darkgray);
height: calc(var(--size-value)); height: calc(var(--size-value) + 0.1rem);
width: calc(var(--size-value) - 1rem); width: calc(var(--size-value) + 0.1rem);
opacity: 90%; opacity: 90%;
z-index: 100;
position: absolute;
} }
article:hover h2 { article:hover h2 {
margin: 0; margin: 0;
position: absolute;
display: inline-flex; display: inline-flex;
font-weight: bold; font-weight: bold;
color: white; color: white;
@ -82,7 +75,7 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
display: none; display: none;
} }
article div { article span {
display: none; display: none;
} }
</style> </style>

View file

@ -1,7 +1,7 @@
--- ---
import Navbar from '../components/navbar.astro' import Navbar from '../components/navbar.astro'
import NavbarEntry from '../components/navbarEntry.astro' import NavbarEntry from '../components/navbarEntry.astro'
import navdata from '../../static/data/_navdata.json' import navdata from '../../static/assets/data/_navdata.json'
export interface Props { export interface Props {
title: string title: string
@ -45,7 +45,7 @@ if (currentpage !== 'home') {
content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE" content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE"
/> />
<!-- Links --> <!-- Links -->
<link rel="icon" type="image/ico" href="/favicon.ico" /> <link rel="icon" type="image/ico" href="/assets/favicon.ico" />
<link rel="sitemap" href="/sitemap-index.xml" /> <link rel="sitemap" href="/sitemap-index.xml" />
<link href="https://mastodon.neshweb.net/@Firq" rel="me" /> <link href="https://mastodon.neshweb.net/@Firq" rel="me" />
<link <link

View file

@ -15,19 +15,15 @@ const { title } = Astro.props
<style> <style>
h1 { h1 {
font-size: 40px; font-size: 26px;
line-height: 48px; line-height: 32px;
letter-spacing: -1px; letter-spacing: -1px;
color: white; color: white;
font-size: 2.25rem; margin: 0.5rem 0.75rem 0.5rem 0.75rem;
margin-top: 1rem;
margin-bottom: 0;
margin-left: auto;
margin-right: auto;
padding: 0.25rem 0.75rem; padding: 0.25rem 0.75rem;
max-width: max-content; width: max-content;
background-color: var(--c-darkgray); background-color: var(--c-darkgray);
padding: 0.25rem 1.5rem; padding: 0.25rem 1rem;
border-radius: 0.5rem; border-radius: 0.5rem;
padding-bottom: 0.5rem; padding-bottom: 0.5rem;
} }
@ -65,10 +61,4 @@ const { title } = Astro.props
justify-content: left; justify-content: left;
} }
} }
@media (min-width: 520px) {
h1 {
margin: 0.5rem 0.75rem 0.5rem 0.75rem;
}
}
</style> </style>

View file

@ -83,9 +83,6 @@ const { title } = Astro.props
.line { .line {
margin-left: 2.1rem; margin-left: 2.1rem;
} }
h1 {
margin-left: 3rem;
}
} }
@media (min-width: 1500px) { @media (min-width: 1500px) {
.wrapper { .wrapper {

View file

@ -1,9 +1,4 @@
--- ---
import okita from '../assets/okita.png'
import atlas from '../assets/atlas.png'
import foxcat from '../assets/lurker.png'
import padoru from '../assets/padoru.png'
import { Image } from 'astro:assets';
--- ---
<footer> <footer>
@ -29,7 +24,7 @@ import { Image } from 'astro:assets';
rel="noopener noreferrer">Atlas Academy</a rel="noopener noreferrer">Atlas Academy</a
> for providing the servant and ce images. > for providing the servant and ce images.
<div class="sticky-image-wrapper"> <div class="sticky-image-wrapper">
<Image src={atlas} alt="Icon of Atlas Academy" /> <img src="/assets/atlas.png" alt="" />
</div> </div>
</div> </div>
<br /> <br />
@ -45,7 +40,7 @@ import { Image } from 'astro:assets';
rel="noopener noreferrer">FGO Timers here</a rel="noopener noreferrer">FGO Timers here</a
> >
<div class="sticky-image-wrapper"> <div class="sticky-image-wrapper">
<Image src={foxcat} alt="Best Foxcat" /> <img src="/assets/lurker.png" alt="" />
</div> </div>
</div> </div>
<br /> <br />
@ -59,7 +54,7 @@ import { Image } from 'astro:assets';
>his site here</a >his site here</a
> >
<div class="sticky-image-wrapper"> <div class="sticky-image-wrapper">
<Image src={okita} alt="" style="height:60px" /> <img src="/assets/okita.png" alt="" style="height:60px" />
</div> </div>
</div> </div>
<br /> <br />
@ -70,7 +65,7 @@ import { Image } from 'astro:assets';
rel="noopener noreferrer">AnthonyJ</a rel="noopener noreferrer">AnthonyJ</a
> for providing me with the custom Shishou favicon. > for providing me with the custom Shishou favicon.
<div class="sticky-image-wrapper"> <div class="sticky-image-wrapper">
<Image src={padoru} alt="Hashire sori yo ..." /> <img src="/assets/padoru.png" alt="" />
</div> </div>
</div> </div>
</footer> </footer>

View file

@ -1,8 +1,6 @@
--- ---
import { Image } from 'astro:assets'
import Layout from '../layouts/Layout.astro' import Layout from '../layouts/Layout.astro'
import BaseSection from '../layouts/baseSection.astro' import BaseSection from '../layouts/baseSection.astro'
import sadshishou from '../assets/shishousad.webp'
const description = "Error. This shouldn't happen :/" const description = "Error. This shouldn't happen :/"
--- ---
@ -14,7 +12,7 @@ const description = "Error. This shouldn't happen :/"
> >
<BaseSection title="FirqhundredandFirq - Not Found"> <BaseSection title="FirqhundredandFirq - Not Found">
<div> <div>
<Image src={sadshishou} alt="Sad Shishou" /> <img src="/assets/shishousad.webp" alt="Sad Shishou" />
<h2>Well ... you were not supposed to end up here.</h2> <h2>Well ... you were not supposed to end up here.</h2>
<a href="/" aria-label="Home" rel="noopener noreferrer"> <a href="/" aria-label="Home" rel="noopener noreferrer">
<i class="iconoir-fast-arrow-left"></i>Go back home <i class="iconoir-fast-arrow-left"></i>Go back home

View file

@ -4,11 +4,11 @@ import AboutSection from '../layouts/aboutSection.astro'
import ContactSection from '../layouts/contactSection.astro' import ContactSection from '../layouts/contactSection.astro'
import ContactCard from '../components/contactCard.astro' import ContactCard from '../components/contactCard.astro'
import contactdata from '../../static/data/_contactdata.json' import contactdata from '../../static/assets/data/_contactdata.json'
import CustomFooter from '../layouts/customFooter.astro' import CustomFooter from '../layouts/customFooter.astro'
import TechnologyCard from '../components/technologyCard.astro' import TechnologyCard from '../components/technologyCard.astro'
import technologydata from '../../static/data/_technologydata.json' import technologydata from '../../static/assets/data/_technologydata.json'
const description = const description =
"A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me." "A summary of the technologies used as well as my contact information. You'll also find disclaimers and thank you notes for the people that helped me."
@ -23,15 +23,15 @@ const description =
This is a small sideproject that I'm creating. First time doing webdev in This is a small sideproject that I'm creating. First time doing webdev in
general, and first project using Typescript. general, and first project using Typescript.
</AboutSection> </AboutSection>
<ContactSection title="Technologies used"> <AboutSection title="Technologies used">
{technologydata.map((item) => <TechnologyCard {...item} />)} {technologydata.map((item) => <TechnologyCard {...item} />)}
</ContactSection> </AboutSection>
<ContactSection title="Contact me"> <ContactSection title="Contact me">
{contactdata.map((item) => <ContactCard {...item} />)} {contactdata.map((item) => <ContactCard {...item} />)}
</ContactSection> </ContactSection>
<ContactSection title="Disclaimers"> <AboutSection title="Disclaimers">
<CustomFooter /> <CustomFooter />
</ContactSection> </AboutSection>
</Layout> </Layout>
<style></style> <style></style>

View file

@ -124,8 +124,11 @@ FROM node:20.10.0-bookworm
LABEL authorname="firq" LABEL authorname="firq"
WORKDIR /unlighthouse WORKDIR /unlighthouse
# renovate: datasource=repology depName=debian_12/chromium versioning=loose
ENV CHROMIUM_VERSION="120.0.6099.109-1~deb12u1" ENV CHROMIUM_VERSION="120.0.6099.109-1~deb12u1"
ENV NODE_ENV='production' ENV NODE_ENV='production'
# Update path so executable can be run globally
ENV PATH="/unlighthouse/node_modules/.bin:${PATH}" ENV PATH="/unlighthouse/node_modules/.bin:${PATH}"
RUN apt-get update && apt-get -y install --no-install-recommends chromium=${CHROMIUM_VERSION} procps && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get -y install --no-install-recommends chromium=${CHROMIUM_VERSION} procps && rm -rf /var/lib/apt/lists/*

View file

@ -7,7 +7,7 @@ author: 'Firq'
tags: ['fgo', 'games'] tags: ['fgo', 'games']
--- ---
> **Disclaimer**<br/> > **Disclaimer**<br>
> While writing this, Requiem and I faced a bit of a challenge concerning death rate calculations. Case in point is the passive "Item Construction" > While writing this, Requiem and I faced a bit of a challenge concerning death rate calculations. Case in point is the passive "Item Construction"
and its interaction with Instant Kill, as we could not reach a final verdict if it affects Instant Kill Hit rate or not. In case of this article, I will assume and its interaction with Instant Kill, as we could not reach a final verdict if it affects Instant Kill Hit rate or not. In case of this article, I will assume
it doesn't interact with the hitrate, but if you have proof that this is different, I will gladly incorporate this in the article. it doesn't interact with the hitrate, but if you have proof that this is different, I will gladly incorporate this in the article.
@ -104,7 +104,7 @@ For other skill levels, this looks like this (_Her S1 scales from 50% to 100%_)
In the end, this resulted in the following comp that worked like a charm. In the end, this resulted in the following comp that worked like a charm.
<div style="width: 100%; display: flex; justify-content: center; padding-top: 0.75rem"> <div style="width: 100%; display: flex; justify-content: center; padding-top: 0.75rem">
<iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen loading="lazy"></iframe> <iframe width="640" height="360" src="https://www.youtube-nocookie.com/embed/UwbNp_dB_VU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div> </div>
## Conclusion ## Conclusion

View file

@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro'
import Hero from '../components/hero.astro' import Hero from '../components/hero.astro'
import BaseSection from '../layouts/baseSection.astro' import BaseSection from '../layouts/baseSection.astro'
import FavouriteCard from '../components/favouriteCard.astro' import FavouriteCard from '../components/favouriteCard.astro'
import favouritesdata from '../../static/data/_favouritesdata.json' import favouritesdata from '../../static/assets/data/_favouritesdata.json'
const description = const description =
'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff' 'The very own page of Firq for providing informating about TA servants, listing past TA achievements and hosting a blog for talking about FGO, Programming and other stuff'

View file

@ -3,10 +3,10 @@ import Layout from '../layouts/Layout.astro'
import BaseSection from '../layouts/baseSection.astro' import BaseSection from '../layouts/baseSection.astro'
import ServantCard from '../components/servantCard.astro' import ServantCard from '../components/servantCard.astro'
import servantdata from '../../static/data/_servantdata.json' import servantdata from '../../static/assets/data/_servantdata.json'
import CeCard from '../components/ceCard.astro' import CeCard from '../components/ceCard.astro'
import cedata from '../../static/data/_cedata.json' import cedata from '../../static/assets/data/_cedata.json'
const description = const description =
'A list of all the servants and ces that Firq can offer up on support for TA.' 'A list of all the servants and ces that Firq can offer up on support for TA.'

View file

@ -9,8 +9,8 @@ import Layout from '../layouts/Layout.astro'
import TaSection from '../layouts/taSection.astro' import TaSection from '../layouts/taSection.astro'
import TaCard from '../components/taCard.astro' import TaCard from '../components/taCard.astro'
import tadata from '../../static/data/_tadata.json' import tadata from '../../static/assets/data/_tadata.json'
import featured_data from '../../static/data/_featureddata.json' import featured_data from '../../static/assets/data/_featureddata.json'
const important_data = tadata.filter(function (el) { const important_data = tadata.filter(function (el) {
return [ return [
@ -36,7 +36,7 @@ const description = 'A collection of TAs previously completed be Firq.'
currentpage="ta-collection" currentpage="ta-collection"
descriptionOverride={description} descriptionOverride={description}
> >
<TaSection title="Notable TAs" abovetext="My most notable TAs"> <TaSection title="Notable TAs" abovetext="">
{important_data.map((item) => <TaCard {...item} />)} {important_data.map((item) => <TaCard {...item} />)}
</TaSection> </TaSection>
<TaSection title="Completed TAs"> <TaSection title="Completed TAs">

View file

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

BIN
static/assets/ce/2030.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
static/assets/ce/500.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

BIN
static/assets/ce/bg.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Some files were not shown because too many files have changed in this diff Show more