This commit is contained in:
parent
f30e079bbe
commit
38df3907c6
6
astro.config.js
Normal file
6
astro.config.js
Normal file
@ -0,0 +1,6 @@
|
||||
import { defineConfig } from "astro/config";
|
||||
import tailwindcss from "@tailwindcss/vite";
|
||||
|
||||
export default defineConfig({
|
||||
vite: { plugins: [tailwindcss()] },
|
||||
});
|
@ -1,10 +0,0 @@
|
||||
// @ts-check
|
||||
import { defineConfig } from "astro/config";
|
||||
import tailwind from "@tailwindcss/vite";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
vite: {
|
||||
plugins: [tailwind()],
|
||||
},
|
||||
});
|
10
package.json
10
package.json
@ -1,7 +1,6 @@
|
||||
{
|
||||
"name": "lua.re",
|
||||
"type": "module",
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"build": "astro check && astro build",
|
||||
@ -9,10 +8,11 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.9.4",
|
||||
"@fontsource/faustina": "^5.2.6",
|
||||
"@fontsource/source-serif-4": "^5.2.8",
|
||||
"@tailwindcss/vite": "^4.1.8",
|
||||
"astro": "^5.8.1",
|
||||
"tailwindcss": "^4.1.8",
|
||||
"typescript": "^5.8.3"
|
||||
"@tailwindcss/vite": "^4.1.11",
|
||||
"astro": "^5.12.9",
|
||||
"tailwindcss": "^4.1.11",
|
||||
"typescript": "^5.9.2"
|
||||
}
|
||||
}
|
||||
|
1112
pnpm-lock.yaml
generated
1112
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 8.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 24 KiB |
@ -1,6 +0,0 @@
|
||||
export function classes(...s: (string | false | null | undefined)[]) {
|
||||
return s
|
||||
.flatMap((s) => (s ? s : "").split(" "))
|
||||
.filter((s) => s)
|
||||
.join(" ");
|
||||
}
|
@ -1,14 +1,15 @@
|
||||
---
|
||||
import "../styles/index.css";
|
||||
import "@fontsource/source-serif-4/latin.css";
|
||||
import "@fontsource/source-serif-4/latin-italic.css";
|
||||
import "./index.css";
|
||||
import icon from "@assets/icon.png";
|
||||
import favicon16x16 from "@assets/favicon-16x16.png";
|
||||
import favicon32x32 from "@assets/favicon-32x32.png";
|
||||
|
||||
type Props = {
|
||||
title?: string;
|
||||
className?: string;
|
||||
class?: string;
|
||||
};
|
||||
|
||||
const { title, className } = Astro.props;
|
||||
const { title, class: className } = Astro.props;
|
||||
---
|
||||
|
||||
<html lang="en">
|
||||
@ -16,24 +17,10 @@ const { title, className } = Astro.props;
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
|
||||
<link rel="icon" href="/favicon.ico?v=2" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="16x16"
|
||||
href="/favicon-16x16.png?v=2"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="32x32"
|
||||
href="/favicon-32x32.png?v=2"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="180x180"
|
||||
href="/apple-touch-icon.png?v=2"
|
||||
/>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href={favicon16x16.src} />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href={favicon32x32.src} />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href={icon.src} />
|
||||
|
||||
<script
|
||||
is:inline
|
||||
|
27
src/layouts/index.css
Normal file
27
src/layouts/index.css
Normal file
@ -0,0 +1,27 @@
|
||||
@import "tailwindcss";
|
||||
@import "@fontsource/faustina/latin";
|
||||
@import "@fontsource/faustina/latin-italic";
|
||||
|
||||
@theme {
|
||||
--font-serif: Faustina, ui-serif, Georgia, Cambria, "Times New Roman", Times,
|
||||
serif;
|
||||
|
||||
--color-white: hsl(0, 0%, 99.3%);
|
||||
--color-black: hsl(60 2.5% 23.3%);
|
||||
--color-paper: hsl(8, 68%, 98.4%);
|
||||
|
||||
--text-base: 14px;
|
||||
--text-sm: 0.85rem;
|
||||
}
|
||||
|
||||
html {
|
||||
@apply bg-paper text-black text-base font-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
@apply hover:underline;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: inherit;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
---
|
||||
import Layout from "../layouts/index.astro";
|
||||
---
|
||||
|
||||
<Layout>
|
||||
<main class="max-w-prose mx-auto p-4 sm:p-8">
|
||||
<h1><strong>Not found</strong></h1>
|
||||
<p><a href="/" class="text-pink-400">Home</a></p>
|
||||
</main>
|
||||
</Layout>
|
@ -1,56 +1,35 @@
|
||||
---
|
||||
import Layout from "../layouts/index.astro";
|
||||
import Layout from "@layouts/index.astro";
|
||||
|
||||
// const socials = [
|
||||
// ["Bluesky", "bs/lua.re", "https://bsky.app/profile/lua.re"],
|
||||
// ["GitHub", "gh/luaneko", "https://github.com/luaneko"],
|
||||
// ];
|
||||
|
||||
const links = [
|
||||
["Twitter", "twt", "https://twitter.com/luanekos"],
|
||||
["Bluesky", "bsky", "https://bsky.app/profile/lua.re"],
|
||||
["Gitea", "git", "https://git.lua.re/"],
|
||||
["Memos", "memo", "https://memo.lua.re/"],
|
||||
["AFFiNE", "docs", "https://docs.lua.re/"],
|
||||
].sort(([_a, a], [_b, b]) => a.length - b.length || a.localeCompare(b));
|
||||
const links = {
|
||||
git: { alt: "Git", href: "https://git.lua.re/" },
|
||||
twt: { alt: "Twitter", href: "https://twitter.com/luanekos" },
|
||||
mail: { alt: "Email", href: "mailto:lumi(at)lua.re" },
|
||||
// bsky: { alt: "Bluesky", href: "https://bsky.app/profile/lua.re" },
|
||||
};
|
||||
---
|
||||
|
||||
<Layout>
|
||||
<div class="max-w-screen-sm mx-auto p-8">
|
||||
<pre
|
||||
class="leading-snug px-5 py-4 bg-white rounded-lg border-gray-100 shadow-xs">
|
||||
∧.,,∧ 𝜗𝜚
|
||||
<Layout class="max-w-screen-sm mx-auto p-8">
|
||||
<main class="px-4 py-3 bg-white rounded shadow-xs leading-tight">
|
||||
<pre>{
|
||||
` ∧...∧ 𝜗𝜚
|
||||
( ̳• · • ̳) ᭢
|
||||
/ づ <a class="mail font-serif"><em><strong class="font-semibold">lumi</strong><span class="at"> at </span>lua.re</em></a> ₊˚.⋆⁺₊
|
||||
<!--
|
||||
{socials.map(([name, text, href]) => (
|
||||
<>・:。<small><a href={href} title={name}>{text}</a></small>
|
||||
</s>))} -->
|
||||
🍡 🌸 🎀 🌙
|
||||
</pre>
|
||||
<p class="my-2">
|
||||
<small
|
||||
>{
|
||||
links.map(([name, sub, href], i) => (
|
||||
<>
|
||||
{i ? " · " : ""}
|
||||
<a href={href} title={name}>
|
||||
{sub}
|
||||
</a>
|
||||
</>
|
||||
))
|
||||
}</small
|
||||
>
|
||||
</p>
|
||||
</div>
|
||||
</Layout>
|
||||
/ づ `}<a href={links.twt.href} title={links.twt.alt}>awa {`⋆.⁺₊`}</a>{
|
||||
}</pre>
|
||||
</main>
|
||||
<footer class="my-3 text-sm">
|
||||
{
|
||||
Object.entries(links).map(([name, { alt, href }], i) => [
|
||||
i ? " · " : "",
|
||||
<a href={href} title={alt} set:text={name} />,
|
||||
])
|
||||
}
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
// don't scrape my email please
|
||||
const node = document.querySelector(`.mail`);
|
||||
|
||||
if (node) {
|
||||
node.querySelector(`.at`)?.replaceWith("@");
|
||||
node.setAttribute("href", `mailto:${node.textContent}`);
|
||||
for (const link of document.querySelectorAll(`a[href^="mailto:"]`)) {
|
||||
const href = link.attributes.getNamedItem("href")!;
|
||||
href.value = href.value.replace("(at)", "@");
|
||||
}
|
||||
</script>
|
||||
</Layout>
|
||||
|
@ -1,24 +0,0 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--font-serif:
|
||||
"Source Serif 4", ui-serif, Georgia, Cambria, "Times New Roman", Times,
|
||||
serif;
|
||||
|
||||
--color-bg: #fff8f7;
|
||||
--color-white: #fffefe;
|
||||
--color-pink: #f3d0d7;
|
||||
}
|
||||
|
||||
html {
|
||||
@apply bg-bg font-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
a {
|
||||
@apply hover:underline;
|
||||
}
|
||||
|
||||
pre {
|
||||
font-family: inherit;
|
||||
}
|
@ -1,3 +1,12 @@
|
||||
{
|
||||
"extends": "astro/tsconfigs/strict"
|
||||
"extends": "astro/tsconfigs/strict",
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@assets/*": ["src/assets/*", "public/*"],
|
||||
"@layouts/*": ["src/layouts/*"],
|
||||
"@components": ["src/components/*"],
|
||||
"@pages": ["src/pages/*"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user