latest updates
This commit is contained in:
parent
4aeb6ebe6b
commit
3e43fa5a1b
10 changed files with 81 additions and 35 deletions
3
.dockerignore
Normal file
3
.dockerignore
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
dist
|
34
Dockerfile
Normal file
34
Dockerfile
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
FROM node:lts AS base
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# By copying only the package.json and package-lock.json here, we ensure that the following `-deps` steps are independent of the source code.
|
||||||
|
# Therefore, the `-deps` steps will be skipped if only the source code changes.
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
|
||||||
|
RUN corepack enable
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
|
||||||
|
|
||||||
|
FROM base AS prod-deps
|
||||||
|
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm fetch --frozen-lockfile
|
||||||
|
RUN --mount=type=cache,id=pnpm,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile --prod
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FROM base AS build-deps
|
||||||
|
RUN pnpm install
|
||||||
|
|
||||||
|
FROM build-deps AS build
|
||||||
|
COPY . .
|
||||||
|
RUN pnpm run build
|
||||||
|
|
||||||
|
FROM base AS runtime
|
||||||
|
COPY --from=prod-deps /app/node_modules ./node_modules
|
||||||
|
COPY --from=build /app/dist ./dist
|
||||||
|
|
||||||
|
ENV HOST=0.0.0.0
|
||||||
|
ENV PORT=4321
|
||||||
|
EXPOSE 4321
|
||||||
|
CMD node ./dist/server/entry.mjs
|
|
@ -1,13 +1,15 @@
|
||||||
title: Gallery
|
title: Gallery
|
||||||
description: this is a very long description so i can test if my css for this works fine
|
description: this is a very long description so i can test if my css for this works fine
|
||||||
icon: /avatar.jpg
|
icon: /avatar.jpg
|
||||||
background: /bg.png
|
background: /background.png
|
||||||
|
socialIcons: true
|
||||||
socials:
|
socials:
|
||||||
- name: bsky
|
- name: bluesky
|
||||||
url: https://lio.to/bluesky
|
url: https://lio.to/bluesky
|
||||||
- name: twitter
|
- name: twitter
|
||||||
url: https://lio.to/twitter
|
url: https://lio.to/twitter
|
||||||
- name: furaffinity
|
- name: furaffinity
|
||||||
url: https://lio.to/bluesky
|
url: https://lio.to/furaffinity
|
||||||
|
icon: paw
|
||||||
- name: mastodon
|
- name: mastodon
|
||||||
url: https://lio.to/mastodon
|
url: https://lio.to/mastodon
|
Before Width: | Height: | Size: 892 KiB After Width: | Height: | Size: 892 KiB |
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
import { Image } from "astro:assets";
|
import { Image } from "astro:assets";
|
||||||
import config from "../../config.yaml";
|
import config from "../../config.yaml";
|
||||||
import SocialCard from "./SocialCard.astro";
|
import Social from "./Social.astro";
|
||||||
const {} = Astro.props;
|
const {} = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -32,10 +32,11 @@ const {} = Astro.props;
|
||||||
{
|
{
|
||||||
config.socials &&
|
config.socials &&
|
||||||
config.socials.map((s) => (
|
config.socials.map((s) => (
|
||||||
<a href={s.url} target="_blank">
|
<Social href={s.url} text={s.name} icon={s.icon} />
|
||||||
{/* <img src={s.icon} alt={s.name} /> */}
|
// <a href={s.url} target="_blank" rel="noopener noreferrer">
|
||||||
<span class="hover:underline">{s.name}</span>
|
// {/* <img src={s.icon} alt={s.name} /> */}
|
||||||
</a>
|
// <span class="">{s.name}</span>
|
||||||
|
// </a>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
import { Image } from "astro:assets";
|
import { Image } from "astro:assets";
|
||||||
import config from "../../config.yaml";
|
import config from "../../config.yaml";
|
||||||
|
import Social from "./Social.astro";
|
||||||
const {} = Astro.props;
|
const {} = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -24,10 +25,11 @@ const {} = Astro.props;
|
||||||
{
|
{
|
||||||
config.socials &&
|
config.socials &&
|
||||||
config.socials.map((s) => (
|
config.socials.map((s) => (
|
||||||
<a href={s.url} target="_blank" rel="noopener noreferrer">
|
<Social href={s.url} text={s.name} image={s.icon} alt={s.name} />
|
||||||
{/* <img src={s.icon} alt={s.name} /> */}
|
// <a href={s.url} target="_blank" rel="noopener noreferrer">
|
||||||
<span class="">{s.name}</span>
|
// {/* <img src={s.icon} alt={s.name} /> */}
|
||||||
</a>
|
// <span class="">{s.name}</span>
|
||||||
|
// </a>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
<br />
|
<br />
|
||||||
|
|
19
src/components/Social.astro
Normal file
19
src/components/Social.astro
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
import config from "../../config.yaml";
|
||||||
|
const { href, text, icon } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
{
|
||||||
|
config.socialIcons && (
|
||||||
|
<a href={href} target="_blank" rel="noopener noreferrer">
|
||||||
|
<i class={`fa-brands fa-${icon ? icon : text.toLowerCase()}`} />
|
||||||
|
</a>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
!config.socialIcons && (
|
||||||
|
<a href={href} target="_blank" rel="noopener noreferrer">
|
||||||
|
<i class={`fa-brands fa-${icon ? icon : text.toLowerCase()}`} />
|
||||||
|
</a>
|
||||||
|
)
|
||||||
|
}
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
const { href, text, image, alt } = Astro.props;
|
|
||||||
---
|
|
||||||
|
|
||||||
<div class="relative bg-black max-w-xl mx-auto mt-10 h-16">
|
|
||||||
<a href={href} class="block">
|
|
||||||
{
|
|
||||||
image && (
|
|
||||||
<img class="h-16 object-cover rounded-md" src={image} alt={alt} />
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
<div class="absolute inset-0 bg-gray-700 opacity-60 rounded-md"></div>
|
|
||||||
<div class="absolute inset-0 flex items-center justify-center">
|
|
||||||
<h2 class="text-white text-3xl font-bold">{text}</h2>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
2
src/config.d.ts
vendored
2
src/config.d.ts
vendored
|
@ -1,5 +1,6 @@
|
||||||
declare module "*config.yaml" {
|
declare module "*config.yaml" {
|
||||||
const value: {
|
const value: {
|
||||||
|
[x: string]: any;
|
||||||
title?: string;
|
title?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
icon?: string;
|
icon?: string;
|
||||||
|
@ -18,6 +19,7 @@ declare module "*config.yml" {
|
||||||
description?: string;
|
description?: string;
|
||||||
icon?: string;
|
icon?: string;
|
||||||
background?: string;
|
background?: string;
|
||||||
|
socialIcons?: boolean;
|
||||||
socials: {
|
socials: {
|
||||||
name: string;
|
name: string;
|
||||||
link: string;
|
link: string;
|
||||||
|
|
|
@ -9,6 +9,7 @@ import config from "../../config.yaml";
|
||||||
<meta name="description" content="Astro description" />
|
<meta name="description" content="Astro description" />
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
|
||||||
<meta name="generator" content={Astro.generator} />
|
<meta name="generator" content={Astro.generator} />
|
||||||
<title>{config.title}</title>
|
<title>{config.title}</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
Loading…
Add table
Reference in a new issue