©
-
+
•
{site.author}
diff --git a/src/components/LegalDate.astro b/src/components/LegalDate.astro
new file mode 100644
index 0000000..e2663c8
--- /dev/null
+++ b/src/components/LegalDate.astro
@@ -0,0 +1,19 @@
+---
+
+---
+
+
+
+
diff --git a/src/components/LegalDate.tsx b/src/components/LegalDate.tsx
deleted file mode 100644
index 23d1e22..0000000
--- a/src/components/LegalDate.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-export const LegalDate = () => {
- const currentDate = new Date();
- const isoDate = currentDate.toISOString();
- const currentYear = currentDate.getFullYear();
-
- return
;
-};
diff --git a/src/components/Link.astro b/src/components/Link.astro
new file mode 100644
index 0000000..b606995
--- /dev/null
+++ b/src/components/Link.astro
@@ -0,0 +1,25 @@
+---
+// Cspell:words astro classnames noopener noreferrer
+import cx from 'classnames';
+
+interface Props {
+ class?: string;
+ href?: string;
+ [key: string]: any;
+}
+
+const { class: className, href = '#', ...props } = Astro.props;
+
+const isExternal = (href as string).startsWith('http');
+const classes = cx('link', { external: isExternal }, className);
+---
+
+
+
+
diff --git a/src/components/Link.tsx b/src/components/Link.tsx
deleted file mode 100644
index ca5405d..0000000
--- a/src/components/Link.tsx
+++ /dev/null
@@ -1,27 +0,0 @@
-import cx from 'classnames';
-
-import type { FunctionalComponent, JSX } from 'preact';
-
-interface Props extends JSX.HTMLAttributes
{}
-
-export const Link: FunctionalComponent = ({
- class: className,
- children,
- href = '#',
- ...props
-}: Props) => {
- const isExternal = (href as string).startsWith('http');
- const classes = cx('link', { external: isExternal }, className as string);
-
- return (
-
- {children}
-
- );
-};
diff --git a/src/components/ListItem.astro b/src/components/ListItem.astro
new file mode 100644
index 0000000..78cf039
--- /dev/null
+++ b/src/components/ListItem.astro
@@ -0,0 +1,17 @@
+---
+// Cspell:words astro classnames
+import cx from 'classnames';
+
+export interface Props {
+ class?: string;
+ [key: string]: any;
+}
+
+const { class: className, ...props } = Astro.props;
+
+const classes = cx('mbe-2', className);
+---
+
+
+
+
diff --git a/src/components/ListItem.tsx b/src/components/ListItem.tsx
deleted file mode 100644
index adc0005..0000000
--- a/src/components/ListItem.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import cx from 'classnames';
-
-import type { ComponentChild, FunctionalComponent } from 'preact';
-
-interface Props {
- class?: string;
- children: ComponentChild;
-}
-
-export const ListItem: FunctionalComponent = ({ class: className, children, ...props }) => {
- const classes = cx('mbe-2', className);
-
- return (
-
- {children}
-
- );
-};
diff --git a/src/components/MainNavigation.astro b/src/components/MainNavigation.astro
index d5b9f3a..582c666 100644
--- a/src/components/MainNavigation.astro
+++ b/src/components/MainNavigation.astro
@@ -1,5 +1,6 @@
---
-import { Link } from '.';
+// Cspell:words astro umami shibui
+import Link from './Link.astro';
import navigation from '../data/navigation.json';
import SearchLink from './SearchLink.astro';
diff --git a/src/components/MarkdownImage.astro b/src/components/MarkdownImage.astro
index 55b0733..c5bdd92 100644
--- a/src/components/MarkdownImage.astro
+++ b/src/components/MarkdownImage.astro
@@ -1,4 +1,5 @@
---
+// Cspell:words astro classnames
import cx from 'classnames';
interface Props {
diff --git a/src/components/MoreLink.astro b/src/components/MoreLink.astro
new file mode 100644
index 0000000..e080c71
--- /dev/null
+++ b/src/components/MoreLink.astro
@@ -0,0 +1,22 @@
+---
+// Cspell:words astro
+import { ArrowRight } from './icons';
+import TextLink from './TextLink.astro';
+
+interface Props {
+ href: string;
+ text: string;
+}
+
+const { href, text, ...props } = Astro.props;
+---
+
+
+ {text}
+
+
+
+
diff --git a/src/components/MoreLink.tsx b/src/components/MoreLink.tsx
deleted file mode 100644
index e3bf755..0000000
--- a/src/components/MoreLink.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import type { FunctionalComponent, JSX } from 'preact';
-
-import { TextLink } from '.';
-import { ArrowRight } from './icons';
-
-interface Props extends JSX.HTMLAttributes {
- href: string;
- text: string;
-}
-
-export const MoreLink: FunctionalComponent = ({ href, text, ...props }) => (
-
- {text}
-
-
-
-
-);
diff --git a/src/components/NetflixFlag.astro b/src/components/NetflixFlag.astro
new file mode 100644
index 0000000..fd860c4
--- /dev/null
+++ b/src/components/NetflixFlag.astro
@@ -0,0 +1,24 @@
+---
+// Cspell:words astro etflix classnames
+import cx from 'classnames';
+import Link from './Link.astro';
+
+export interface Props {
+ class?: string;
+ id: string;
+ [key: string]: any;
+}
+
+const { class: className, id, ...props } = Astro.props;
+
+const classes = cx(
+ 'rounded-1 border-1 border-solid border-red-600 bg-red-600 font-mono text-[0.7em] text-white decoration-0 pli-[0.3em] pbe-0 pbs-[0.1em] print:bg-transparent print:border-gray-500',
+ className
+);
+---
+
+
+ [
+ N
+ etflix]
+
diff --git a/src/components/NetflixFlag.tsx b/src/components/NetflixFlag.tsx
deleted file mode 100644
index 284d034..0000000
--- a/src/components/NetflixFlag.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-import cx from 'classnames';
-
-import type { FunctionalComponent } from 'preact';
-
-import { Link } from '.';
-
-interface Props {
- class?: string;
- id: string;
-}
-
-export const NetflixFlag: FunctionalComponent = ({ class: className, id, ...props }) => {
- const classes = cx(
- 'rounded-1 border-1 border-solid border-red-600 bg-red-600 font-mono text-[0.7em] text-white decoration-0 pli-[0.3em] pbe-0 pbs-[0.1em] print:bg-transparent print:border-gray-500',
- className
- );
-
- return (
-
-
- [
-
- N
-
- etflix]
-
-
- );
-};
diff --git a/src/components/OdyseeVideo.astro b/src/components/OdyseeVideo.astro
new file mode 100644
index 0000000..0f63d7c
--- /dev/null
+++ b/src/components/OdyseeVideo.astro
@@ -0,0 +1,23 @@
+---
+// Cspell:words astro classnames autoplay allowfullscreen
+import cx from 'classnames';
+
+export interface Props {
+ class?: string;
+ id: string;
+ [key: string]: any;
+}
+
+const { class: className, id, ...props } = Astro.props;
+
+const classes = cx('relative aspect-video mbe-10', className);
+---
+
+
+
+
diff --git a/src/components/OdyseeVideo.tsx b/src/components/OdyseeVideo.tsx
deleted file mode 100644
index adf2758..0000000
--- a/src/components/OdyseeVideo.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import cx from 'classnames';
-
-import type { FunctionalComponent } from 'preact';
-
-interface Props {
- class?: string;
- id: string;
-}
-
-export const OdyseeVideo: FunctionalComponent = ({ class: className, id, ...props }) => {
- const classes = cx('relative aspect-video mbe-10', className);
-
- return (
-
-
-
- );
-};
diff --git a/src/components/OrderedList.astro b/src/components/OrderedList.astro
new file mode 100644
index 0000000..c3a5c0d
--- /dev/null
+++ b/src/components/OrderedList.astro
@@ -0,0 +1,20 @@
+---
+// Cspell:words astro classnames
+import cx from 'classnames';
+
+export interface Props {
+ class?: string;
+ [key: string]: any;
+}
+
+const { class: className, children, ...props } = Astro.props;
+
+const classes = cx(
+ 'list-decimal text-3 mbe-12 pis-[1.5rem] md:pis-0 [li>&]:mbe-0 [li>&]:pis-[1.5rem]',
+ className
+);
+---
+
+
+
+
diff --git a/src/components/OrderedList.tsx b/src/components/OrderedList.tsx
deleted file mode 100644
index f0ad37d..0000000
--- a/src/components/OrderedList.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import cx from 'classnames';
-
-import type { ComponentChild, FunctionalComponent } from 'preact';
-
-interface Props {
- class?: string;
- children: ComponentChild;
-}
-
-export const OrderedList: FunctionalComponent = ({
- class: className,
- children,
- ...props
-}) => {
- const classes = cx(
- 'list-decimal text-3 mbe-12 pis-[1.5rem] md:pis-0 [li>&]:mbe-0 [li>&]:pis-[1.5rem]',
- className
- );
-
- return (
-
- {children}
-
- );
-};
diff --git a/src/components/PageFooter.astro b/src/components/PageFooter.astro
index b76fd2a..98031fd 100644
--- a/src/components/PageFooter.astro
+++ b/src/components/PageFooter.astro
@@ -1,8 +1,10 @@
---
+// Cspell:words astro subnavigation shibui
import Legal from './Legal.astro';
import RSSLink from './RSSLink.astro';
+import SocialLinks from './SocialLinks.astro';
import Subnavigation from './Subnavigation.astro';
-import { UpLink, SocialLinks } from '.';
+import UpLink from './UpLink.astro';
---