Compare commits
No commits in common. "58a49fe3fabec11872c006d45dbe485c801ab9d7" and "709f459963576e0a7c45b147a2e571f5dbff3f11" have entirely different histories.
58a49fe3fa
...
709f459963
|
@ -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/serve.json /public/serve.json
|
||||
RUN rm -r /public/data/
|
||||
RUN rm -r /public/assets/data/
|
||||
|
||||
ENV PORT 8081
|
||||
EXPOSE 8081
|
||||
|
|
4
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "@firq/fgosite",
|
||||
"version": "0.1.11",
|
||||
"version": "0.1.6",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@firq/fgosite",
|
||||
"version": "0.1.11",
|
||||
"version": "0.1.6",
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.3.3",
|
||||
"@astrojs/sitemap": "^3.0.3",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@firq/fgosite",
|
||||
"type": "module",
|
||||
"version": "0.1.11",
|
||||
"version": "0.1.10",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
"source" : "**/*.@(jpg|jpeg|gif|png|webp|svg)",
|
||||
"headers" : [{
|
||||
"key" : "Cache-Control",
|
||||
"value" : "max-age=31536000"
|
||||
"value" : "max-age=86400"
|
||||
}]
|
||||
}
|
||||
]
|
||||
|
|
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 554 KiB |
Before Width: | Height: | Size: 565 KiB |
Before Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 26 KiB |
|
@ -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 {
|
||||
name: string
|
||||
imageFile: string
|
||||
link: string
|
||||
mlb: string
|
||||
}
|
||||
|
||||
const { mlb, imageFile, name } = Astro.props
|
||||
const imagePath = `/src/assets/ce/${imageFile}`
|
||||
const images_ces = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/ce/*.{png,webp}'
|
||||
)
|
||||
const { mlb, link, name } = Astro.props
|
||||
|
||||
const ce_img: string = `/assets/ce/${link}.webp`
|
||||
const mlb_ce: string = `/assets/ce/mlb.webp`
|
||||
let mlb_image: string = 'mlbalign'
|
||||
|
||||
if (mlb === 'false') {
|
||||
mlb_image = 'hidemlb'
|
||||
}
|
||||
|
@ -23,10 +18,10 @@ if (mlb === 'false') {
|
|||
|
||||
<article>
|
||||
<div>
|
||||
<Image src={images_ces[imagePath]()} alt={name} class="ce-crop" />
|
||||
<img class="ce-crop" src={ce_img} alt={name} />
|
||||
</div>
|
||||
<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>
|
||||
</article>
|
||||
|
||||
|
@ -91,7 +86,6 @@ if (mlb === 'false') {
|
|||
|
||||
.mlb {
|
||||
width: 5.5rem;
|
||||
height: auto;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
|
|
@ -1,25 +1,20 @@
|
|||
---
|
||||
import type { ImageMetadata } from 'astro'
|
||||
import { Image } from 'astro:assets'
|
||||
|
||||
export interface Props {
|
||||
site: string
|
||||
link: string
|
||||
imageFile: string
|
||||
image: string
|
||||
}
|
||||
|
||||
const { imageFile, link, site } = Astro.props
|
||||
const imagePath = `/src/assets/social/${imageFile}`
|
||||
const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/social/*.{png,webp}'
|
||||
)
|
||||
const { image, link, site } = Astro.props
|
||||
const icon: string = `background-image: url('/assets/social/${image}.webp')`
|
||||
---
|
||||
|
||||
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={site}>
|
||||
<article class="contact do-hover">
|
||||
<Image src={images_logos[imagePath]()} alt="" />
|
||||
<div>
|
||||
<div style={icon}>
|
||||
<span>
|
||||
<h2>{site}</h2>
|
||||
</span>
|
||||
</div>
|
||||
</article>
|
||||
</a>
|
||||
|
@ -29,29 +24,18 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
text-decoration: none;
|
||||
}
|
||||
|
||||
article {
|
||||
--size-value: 6.25rem;
|
||||
article div {
|
||||
border-radius: 1.25rem;
|
||||
background-size: contain;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: 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;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
article img {
|
||||
border-radius: 1.25rem;
|
||||
justify-content: center;
|
||||
--size-value: 6.25rem;
|
||||
width: var(--size-value);
|
||||
height: var(--size-value);
|
||||
}
|
||||
|
||||
article:hover div {
|
||||
article:hover span {
|
||||
border-radius: 1.25rem;
|
||||
padding: 0 0.5rem;
|
||||
display: flex;
|
||||
|
@ -59,11 +43,9 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
justify-content: center;
|
||||
text-align: center;
|
||||
background-color: var(--c-darkgray);
|
||||
height: calc(var(--size-value));
|
||||
width: calc(var(--size-value) - 1rem);
|
||||
height: calc(var(--size-value) + 0.1rem);
|
||||
width: calc(var(--size-value) + 0.1rem);
|
||||
opacity: 90%;
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
article:hover h2 {
|
||||
|
@ -75,14 +57,25 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
}
|
||||
|
||||
article h2 {
|
||||
position: absolute;
|
||||
display: none;
|
||||
}
|
||||
|
||||
article div {
|
||||
article span {
|
||||
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 {
|
||||
transform: scale(var(--hover-scale));
|
||||
}
|
||||
|
|
|
@ -1,22 +1,19 @@
|
|||
---
|
||||
import type { ImageMetadata } from 'astro';
|
||||
import { Image } from 'astro:assets';
|
||||
|
||||
export interface Props {
|
||||
name: string
|
||||
origin: string
|
||||
imageFile: string
|
||||
image: string
|
||||
link: string
|
||||
}
|
||||
|
||||
const { link, imageFile, origin, name } = Astro.props
|
||||
const imagePath = `/src/assets/favourites/${imageFile}`
|
||||
const images = import.meta.glob<{ default: ImageMetadata }>('/src/assets/favourites/*.{png,webp}')
|
||||
const { link, image, origin, name } = Astro.props
|
||||
|
||||
const img: string = `/assets/favourites/${image}.webp`
|
||||
---
|
||||
|
||||
<a href={link} target="_blank" rel="noopener noreferrer">
|
||||
<div class="heading">{name}</div>
|
||||
<Image src={images[imagePath]()} alt={name} />
|
||||
<img src={img} alt={name} />
|
||||
<h2 class="subtext">
|
||||
{origin}
|
||||
</h2>
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
---
|
||||
import { Image } from 'astro:assets';
|
||||
import logo from '../assets/logo.svg'
|
||||
---
|
||||
|
||||
<header>
|
||||
<a href="/" rel="noopener noreferrer" aria-label="Home">
|
||||
<Image src={logo} alt="Website Logo"/>
|
||||
<img src="/assets/logo.svg" alt="" />
|
||||
</a>
|
||||
<ul class="desktop">
|
||||
<slot />
|
||||
|
|
|
@ -1,40 +1,36 @@
|
|||
---
|
||||
import type { ImageMetadata } from 'astro';
|
||||
import { Image } from 'astro:assets';
|
||||
|
||||
export interface Props {
|
||||
name: string
|
||||
level: string
|
||||
skills: string
|
||||
np: string
|
||||
servantImageFile: string
|
||||
bondceImageFile: string
|
||||
image_servant: string
|
||||
image_bond: string
|
||||
ml: string
|
||||
bond10: boolean
|
||||
bond10: string
|
||||
}
|
||||
|
||||
const { bond10, ml, bondceImageFile, servantImageFile, np, skills, level, name } = Astro.props
|
||||
const servantImagePath = `/src/assets/servant/${servantImageFile}`
|
||||
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 { bond10, ml, image_bond, image_servant, np, skills, level, name } =
|
||||
Astro.props
|
||||
|
||||
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'
|
||||
|
||||
if (bond10 === false) {
|
||||
if (bond10 === 'false') {
|
||||
bondce_css += ' unobtained'
|
||||
}
|
||||
---
|
||||
|
||||
<article>
|
||||
<Image src={images_servants[servantImagePath]()} alt={name} />
|
||||
<img src={servant_img} alt={name} />
|
||||
<h2 class="subtext">
|
||||
Level {level}<br />
|
||||
{skills}<br />
|
||||
NP {np}
|
||||
</h2>
|
||||
<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>
|
||||
</div>
|
||||
</article>
|
||||
|
@ -114,7 +110,6 @@ if (bond10 === false) {
|
|||
|
||||
.bond-ce {
|
||||
padding-top: 0.75rem;
|
||||
width: auto;
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,15 @@
|
|||
---
|
||||
import type { ImageMetadata } from 'astro'
|
||||
import { Image } from 'astro:assets'
|
||||
export interface Props {
|
||||
date: string
|
||||
title: string
|
||||
link: string
|
||||
targetImageFile: string
|
||||
image: string
|
||||
user?: string
|
||||
servantImageFile?: string
|
||||
ta_servant?: string
|
||||
turns?: string
|
||||
}
|
||||
|
||||
const { turns, targetImageFile, user, date, servantImageFile, link, title } =
|
||||
Astro.props
|
||||
const { turns, ta_servant, user, date, image, link, title } = Astro.props
|
||||
|
||||
const options_date: Intl.DateTimeFormatOptions = {
|
||||
year: 'numeric',
|
||||
|
@ -20,16 +17,9 @@ const options_date: Intl.DateTimeFormatOptions = {
|
|||
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 target_images = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/ta_icons/*.{png,webp}'
|
||||
)
|
||||
const servant_images = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/ta_icons/ta_servants/*.{png,webp}'
|
||||
)
|
||||
const icon: string = `background-image: url('/assets/ta_icons/${image}.webp')`
|
||||
const servant: string = `/assets/ta_icons/ta_servants/${ta_servant}.webp`
|
||||
|
||||
let hasuser = ''
|
||||
if (user !== undefined) {
|
||||
|
@ -39,9 +29,10 @@ if (user !== undefined) {
|
|||
|
||||
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
|
||||
<article>
|
||||
<Image src={target_images[targetImagePath]()} alt={title} class="icon" />
|
||||
<div class="title">
|
||||
<div class="icon" style={icon}>
|
||||
<span>
|
||||
<h2>{title}</h2>
|
||||
</span>
|
||||
</div>
|
||||
<p>
|
||||
<span class={hasuser}>
|
||||
|
@ -50,29 +41,22 @@ if (user !== undefined) {
|
|||
{formatted_date}
|
||||
</p>
|
||||
<div class="expand-on-hover">
|
||||
<Image src={servant_images[servantImagePath ?? 'undefined']()} alt="" />
|
||||
<img src={servant} alt="" />
|
||||
<h2>{turns}</h2>
|
||||
</div>
|
||||
</article>
|
||||
</a>
|
||||
|
||||
<style>
|
||||
div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hasuser {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
article {
|
||||
background-color: var(--c-darkergray);
|
||||
border-color: var(--c-darkgray);
|
||||
|
@ -81,28 +65,23 @@ if (user !== undefined) {
|
|||
transition: transform var(--speed) var(--ease);
|
||||
height: auto;
|
||||
width: auto;
|
||||
max-width: 8rem;
|
||||
border-radius: 1.25rem;
|
||||
padding-bottom: 1.5rem;
|
||||
--size-value: 7rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
article:hover {
|
||||
transform: scale(var(--hover-scale));
|
||||
}
|
||||
|
||||
article > .icon {
|
||||
border-radius: 1.25rem;
|
||||
--size-value: 7rem;
|
||||
width: var(--size-value);
|
||||
height: var(--size-value);
|
||||
margin: 0.5rem;
|
||||
background-size: var(--size-value);
|
||||
background-position: center center;
|
||||
}
|
||||
|
||||
article:hover .title {
|
||||
article:hover .icon span {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
align-items: center;
|
||||
|
@ -113,10 +92,9 @@ if (user !== undefined) {
|
|||
width: calc(var(--size-value) + 0.1rem);
|
||||
opacity: 90%;
|
||||
border-radius: 1.25rem;
|
||||
top: 1.1em;
|
||||
}
|
||||
|
||||
article:hover .title h2 {
|
||||
article:hover span h2 {
|
||||
margin: 0;
|
||||
display: inline-flex;
|
||||
font-weight: bold;
|
||||
|
@ -126,11 +104,11 @@ if (user !== undefined) {
|
|||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
article .title h2 {
|
||||
article span h2 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
article .title {
|
||||
article .icon span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,25 +1,21 @@
|
|||
---
|
||||
import type { ImageMetadata } from 'astro'
|
||||
import { Image } from 'astro:assets'
|
||||
|
||||
export interface Props {
|
||||
title: string
|
||||
link: string
|
||||
imageFile: string
|
||||
image: string
|
||||
}
|
||||
|
||||
const { imageFile, link, title } = Astro.props
|
||||
const imagePath = `/src/assets/technologies/${imageFile}`
|
||||
const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
||||
'/src/assets/technologies/*.{png,webp}'
|
||||
)
|
||||
const { image, link, title } = Astro.props
|
||||
|
||||
const icon: string = `background-image: url('/assets/technologies/${image}.webp')`
|
||||
---
|
||||
|
||||
<a href={link} target="_blank" rel="noopener noreferrer" aria-label={title}>
|
||||
<article>
|
||||
<Image src={images_logos[imagePath]()} alt="" />
|
||||
<div>
|
||||
<div style={icon}>
|
||||
<span>
|
||||
<h2>{title}</h2>
|
||||
</span>
|
||||
</div>
|
||||
</article>
|
||||
</a>
|
||||
|
@ -29,31 +25,31 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
text-decoration: none;
|
||||
}
|
||||
article {
|
||||
--size-value: 6.25rem;
|
||||
background-color: var(--c-darkergray);
|
||||
border-color: var(--c-darkgray);
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
transition: transform var(--speed) var(--ease);
|
||||
height: auto;
|
||||
width: auto;
|
||||
line-height: 100px;
|
||||
border-radius: 1.25rem;
|
||||
position: relative;
|
||||
}
|
||||
article:hover {
|
||||
transform: scale(var(--hover-scale));
|
||||
}
|
||||
article > img {
|
||||
article > div {
|
||||
border-radius: 1.25rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-size: contain;
|
||||
--size-value: 6.25rem;
|
||||
width: var(--size-value);
|
||||
height: var(--size-value);
|
||||
}
|
||||
|
||||
article:hover div {
|
||||
article:hover span {
|
||||
border-radius: 1.25rem;
|
||||
padding: 0 0.5rem;
|
||||
display: flex;
|
||||
|
@ -61,16 +57,13 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
justify-content: center;
|
||||
text-align: center;
|
||||
background-color: var(--c-darkgray);
|
||||
height: calc(var(--size-value));
|
||||
width: calc(var(--size-value) - 1rem);
|
||||
height: calc(var(--size-value) + 0.1rem);
|
||||
width: calc(var(--size-value) + 0.1rem);
|
||||
opacity: 90%;
|
||||
z-index: 100;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
article:hover h2 {
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
display: inline-flex;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
|
@ -82,7 +75,7 @@ const images_logos = import.meta.glob<{ default: ImageMetadata }>(
|
|||
display: none;
|
||||
}
|
||||
|
||||
article div {
|
||||
article span {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
import Navbar from '../components/navbar.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 {
|
||||
title: string
|
||||
|
@ -45,7 +45,7 @@ if (currentpage !== 'home') {
|
|||
content="SmcWcewh7DCANcLeTe3ntU0R-LESbo_bsolICJnmulE"
|
||||
/>
|
||||
<!-- 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 href="https://mastodon.neshweb.net/@Firq" rel="me" />
|
||||
<link
|
||||
|
|
|
@ -15,19 +15,15 @@ const { title } = Astro.props
|
|||
|
||||
<style>
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
line-height: 48px;
|
||||
font-size: 26px;
|
||||
line-height: 32px;
|
||||
letter-spacing: -1px;
|
||||
color: white;
|
||||
font-size: 2.25rem;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin: 0.5rem 0.75rem 0.5rem 0.75rem;
|
||||
padding: 0.25rem 0.75rem;
|
||||
max-width: max-content;
|
||||
width: max-content;
|
||||
background-color: var(--c-darkgray);
|
||||
padding: 0.25rem 1.5rem;
|
||||
padding: 0.25rem 1rem;
|
||||
border-radius: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
@ -65,10 +61,4 @@ const { title } = Astro.props
|
|||
justify-content: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 520px) {
|
||||
h1 {
|
||||
margin: 0.5rem 0.75rem 0.5rem 0.75rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -83,9 +83,6 @@ const { title } = Astro.props
|
|||
.line {
|
||||
margin-left: 2.1rem;
|
||||
}
|
||||
h1 {
|
||||
margin-left: 3rem;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1500px) {
|
||||
.wrapper {
|
||||
|
|
|
@ -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>
|
||||
|
@ -29,7 +24,7 @@ import { Image } from 'astro:assets';
|
|||
rel="noopener noreferrer">Atlas Academy</a
|
||||
> for providing the servant and ce images.
|
||||
<div class="sticky-image-wrapper">
|
||||
<Image src={atlas} alt="Icon of Atlas Academy" />
|
||||
<img src="/assets/atlas.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
@ -45,7 +40,7 @@ import { Image } from 'astro:assets';
|
|||
rel="noopener noreferrer">FGO Timers here</a
|
||||
>
|
||||
<div class="sticky-image-wrapper">
|
||||
<Image src={foxcat} alt="Best Foxcat" />
|
||||
<img src="/assets/lurker.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
@ -59,7 +54,7 @@ import { Image } from 'astro:assets';
|
|||
>his site here</a
|
||||
>
|
||||
<div class="sticky-image-wrapper">
|
||||
<Image src={okita} alt="" style="height:60px" />
|
||||
<img src="/assets/okita.png" alt="" style="height:60px" />
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
@ -70,7 +65,7 @@ import { Image } from 'astro:assets';
|
|||
rel="noopener noreferrer">AnthonyJ</a
|
||||
> for providing me with the custom Shishou favicon.
|
||||
<div class="sticky-image-wrapper">
|
||||
<Image src={padoru} alt="Hashire sori yo ..." />
|
||||
<img src="/assets/padoru.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
---
|
||||
import { Image } from 'astro:assets'
|
||||
import Layout from '../layouts/Layout.astro'
|
||||
import BaseSection from '../layouts/baseSection.astro'
|
||||
import sadshishou from '../assets/shishousad.webp'
|
||||
|
||||
const description = "Error. This shouldn't happen :/"
|
||||
---
|
||||
|
@ -14,7 +12,7 @@ const description = "Error. This shouldn't happen :/"
|
|||
>
|
||||
<BaseSection title="FirqhundredandFirq - Not Found">
|
||||
<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>
|
||||
<a href="/" aria-label="Home" rel="noopener noreferrer">
|
||||
<i class="iconoir-fast-arrow-left"></i>Go back home
|
||||
|
|
|
@ -4,11 +4,11 @@ import AboutSection from '../layouts/aboutSection.astro'
|
|||
|
||||
import ContactSection from '../layouts/contactSection.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 TechnologyCard from '../components/technologyCard.astro'
|
||||
import technologydata from '../../static/data/_technologydata.json'
|
||||
import technologydata from '../../static/assets/data/_technologydata.json'
|
||||
|
||||
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."
|
||||
|
@ -23,15 +23,15 @@ const description =
|
|||
This is a small sideproject that I'm creating. First time doing webdev in
|
||||
general, and first project using Typescript.
|
||||
</AboutSection>
|
||||
<ContactSection title="Technologies used">
|
||||
<AboutSection title="Technologies used">
|
||||
{technologydata.map((item) => <TechnologyCard {...item} />)}
|
||||
</ContactSection>
|
||||
</AboutSection>
|
||||
<ContactSection title="Contact me">
|
||||
{contactdata.map((item) => <ContactCard {...item} />)}
|
||||
</ContactSection>
|
||||
<ContactSection title="Disclaimers">
|
||||
<AboutSection title="Disclaimers">
|
||||
<CustomFooter />
|
||||
</ContactSection>
|
||||
</AboutSection>
|
||||
</Layout>
|
||||
|
||||
<style></style>
|
||||
|
|
|
@ -124,8 +124,11 @@ FROM node:20.10.0-bookworm
|
|||
LABEL authorname="firq"
|
||||
WORKDIR /unlighthouse
|
||||
|
||||
# renovate: datasource=repology depName=debian_12/chromium versioning=loose
|
||||
ENV CHROMIUM_VERSION="120.0.6099.109-1~deb12u1"
|
||||
ENV NODE_ENV='production'
|
||||
|
||||
# Update path so executable can be run globally
|
||||
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/*
|
||||
|
|
|
@ -7,7 +7,7 @@ author: 'Firq'
|
|||
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"
|
||||
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.
|
||||
|
@ -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.
|
||||
|
||||
<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>
|
||||
|
||||
## Conclusion
|
||||
|
|
|
@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro'
|
|||
import Hero from '../components/hero.astro'
|
||||
import BaseSection from '../layouts/baseSection.astro'
|
||||
import FavouriteCard from '../components/favouriteCard.astro'
|
||||
import favouritesdata from '../../static/data/_favouritesdata.json'
|
||||
import favouritesdata from '../../static/assets/data/_favouritesdata.json'
|
||||
|
||||
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'
|
||||
|
|
|
@ -3,10 +3,10 @@ import Layout from '../layouts/Layout.astro'
|
|||
import BaseSection from '../layouts/baseSection.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 cedata from '../../static/data/_cedata.json'
|
||||
import cedata from '../../static/assets/data/_cedata.json'
|
||||
|
||||
const description =
|
||||
'A list of all the servants and ces that Firq can offer up on support for TA.'
|
||||
|
|
|
@ -9,8 +9,8 @@ import Layout from '../layouts/Layout.astro'
|
|||
|
||||
import TaSection from '../layouts/taSection.astro'
|
||||
import TaCard from '../components/taCard.astro'
|
||||
import tadata from '../../static/data/_tadata.json'
|
||||
import featured_data from '../../static/data/_featureddata.json'
|
||||
import tadata from '../../static/assets/data/_tadata.json'
|
||||
import featured_data from '../../static/assets/data/_featureddata.json'
|
||||
|
||||
const important_data = tadata.filter(function (el) {
|
||||
return [
|
||||
|
@ -36,7 +36,7 @@ const description = 'A collection of TAs previously completed be Firq.'
|
|||
currentpage="ta-collection"
|
||||
descriptionOverride={description}
|
||||
>
|
||||
<TaSection title="Notable TAs" abovetext="My most notable TAs">
|
||||
<TaSection title="Notable TAs" abovetext="">
|
||||
{important_data.map((item) => <TaCard {...item} />)}
|
||||
</TaSection>
|
||||
<TaSection title="Completed TAs">
|
||||
|
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
BIN
static/assets/ce/2030.webp
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
static/assets/ce/500.webp
Normal file
After Width: | Height: | Size: 4 KiB |
BIN
static/assets/ce/bg.webp
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
static/assets/ce/bond-ce/bride.webp
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
static/assets/ce/bond-ce/castoria.webp
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
static/assets/ce/bond-ce/chiron.webp
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
static/assets/ce/bond-ce/crane.webp
Normal file
After Width: | Height: | Size: 1.4 KiB |