From 1f9f031a9fa10a1a6eafcc6e148e9e346819eadd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikko=20Forsstr=C3=B6m?= Date: Sat, 11 Nov 2023 18:21:31 +0200 Subject: [PATCH 01/17] Hip --- src/app/(app)/a/[id]/page.tsx | 46 +++++++++++++ src/app/(app)/error.tsx | 22 +++++++ src/app/(app)/layout.tsx | 33 ++++++++++ src/app/(app)/page.tsx | 45 +++++++++++++ src/app/(welcome)/layout.tsx | 2 + src/app/(welcome)/page.tsx | 5 -- src/components/Clock.tsx | 25 +++++++ src/components/Clocks.css.ts | 22 +++++++ src/components/Clocks.tsx | 56 ++++++++++++++++ src/components/Currencies.css.ts | 6 ++ src/components/Currencies.tsx | 64 ++++++++++++++++++ src/components/CurrenciesList.tsx | 65 +++++++++++++++++++ src/components/Footer.css.ts | 12 ++++ src/components/Footer.tsx | 12 ++++ src/components/Header.css.ts | 20 ++++++ src/components/Header.tsx | 15 +++++ src/components/Headline.css.ts | 11 ++++ src/components/Headline.tsx | 30 +++++++++ src/components/Headlines.tsx | 19 ++++++ src/components/LatestQuarticles.tsx | 34 ++++++++++ src/components/Layout.css.ts | 16 +++++ src/components/Main.css.ts | 7 ++ src/components/Main.tsx | 12 ++++ src/components/Provider.tsx | 22 +++++++ src/components/comments/Comment.css.ts | 6 ++ src/components/comments/Comment.tsx | 20 ++++++ src/components/comments/Comments.css.ts | 6 ++ src/components/comments/Comments.tsx | 55 ++++++++++++++++ src/components/comments/CommentsForm.tsx | 57 ++++++++++++++++ src/components/duck-ui/Button.css.ts | 6 ++ src/components/duck-ui/Button.tsx | 19 ++++++ src/components/duck-ui/Input.css.ts | 7 ++ src/components/duck-ui/Input.tsx | 19 ++++++ src/components/pages/IndexPageView.css.ts | 49 ++++++++++++++ src/components/pages/IndexPageView.tsx | 44 +++++++++++++ src/components/quarticle/HeadingBlock.tsx | 12 ++++ src/components/quarticle/ImageBlock.css.ts | 9 +++ src/components/quarticle/ImageBlock.tsx | 13 ++++ src/components/quarticle/MarkdownBlock.tsx | 13 ++++ .../quarticle/QuarticleRenderer.css.ts | 5 ++ .../quarticle/QuarticleRenderer.tsx | 39 +++++++++++ src/components/quarticle/UnknownBlock.tsx | 12 ++++ src/components/theme.css.ts | 43 ++++++++++++ src/components/welcome/BackendChecker.tsx | 5 ++ src/components/welcome/HotReloadTester.tsx | 7 +- .../welcome/VanillaExtractChecker.css.ts | 3 +- src/components/welcome/Welcome.tsx | 8 ++- src/hooks/useTime.tsx | 20 ++++++ 48 files changed, 1064 insertions(+), 14 deletions(-) create mode 100644 src/app/(app)/a/[id]/page.tsx create mode 100644 src/app/(app)/error.tsx create mode 100644 src/app/(app)/layout.tsx create mode 100644 src/app/(app)/page.tsx delete mode 100644 src/app/(welcome)/page.tsx create mode 100644 src/components/Clock.tsx create mode 100644 src/components/Clocks.css.ts create mode 100644 src/components/Clocks.tsx create mode 100644 src/components/Currencies.css.ts create mode 100644 src/components/Currencies.tsx create mode 100644 src/components/CurrenciesList.tsx create mode 100644 src/components/Footer.css.ts create mode 100644 src/components/Footer.tsx create mode 100644 src/components/Header.css.ts create mode 100644 src/components/Header.tsx create mode 100644 src/components/Headline.css.ts create mode 100644 src/components/Headline.tsx create mode 100644 src/components/Headlines.tsx create mode 100644 src/components/LatestQuarticles.tsx create mode 100644 src/components/Layout.css.ts create mode 100644 src/components/Main.css.ts create mode 100644 src/components/Main.tsx create mode 100644 src/components/Provider.tsx create mode 100644 src/components/comments/Comment.css.ts create mode 100644 src/components/comments/Comment.tsx create mode 100644 src/components/comments/Comments.css.ts create mode 100644 src/components/comments/Comments.tsx create mode 100644 src/components/comments/CommentsForm.tsx create mode 100644 src/components/duck-ui/Button.css.ts create mode 100644 src/components/duck-ui/Button.tsx create mode 100644 src/components/duck-ui/Input.css.ts create mode 100644 src/components/duck-ui/Input.tsx create mode 100644 src/components/pages/IndexPageView.css.ts create mode 100644 src/components/pages/IndexPageView.tsx create mode 100644 src/components/quarticle/HeadingBlock.tsx create mode 100644 src/components/quarticle/ImageBlock.css.ts create mode 100644 src/components/quarticle/ImageBlock.tsx create mode 100644 src/components/quarticle/MarkdownBlock.tsx create mode 100644 src/components/quarticle/QuarticleRenderer.css.ts create mode 100644 src/components/quarticle/QuarticleRenderer.tsx create mode 100644 src/components/quarticle/UnknownBlock.tsx create mode 100644 src/components/theme.css.ts create mode 100644 src/hooks/useTime.tsx diff --git a/src/app/(app)/a/[id]/page.tsx b/src/app/(app)/a/[id]/page.tsx new file mode 100644 index 00000000..71f3e27f --- /dev/null +++ b/src/app/(app)/a/[id]/page.tsx @@ -0,0 +1,46 @@ +import { cache } from "react"; + +import Comments from "@/components/comments/Comments"; +import QuarticleRenderer from "@/components/quarticle/QuarticleRenderer"; +import * as quarticleService from "@/services/quarticle"; +import { Metadata } from "next"; +import { notFound } from "next/navigation"; + +type Props = { + params: { + id: string; + }; +}; + +const getQuarticle = cache(quarticleService.getQuarticle); + +export async function generateMetadata({ params }: Props): Promise { + try { + const cert = await getQuarticle(params.id); + return { + title: `${cert.headline} - Kvauppalehti` + }; + } catch (e) { + notFound(); + } +} + +const QuarticlePage = async ({ params }: Props) => { + try { + const quarticle = await getQuarticle(params.id); + + return ( +
+ + +
+ + +
+ ); + } catch (e) { + notFound(); + } +}; + +export default QuarticlePage; diff --git a/src/app/(app)/error.tsx b/src/app/(app)/error.tsx new file mode 100644 index 00000000..1fac5b6b --- /dev/null +++ b/src/app/(app)/error.tsx @@ -0,0 +1,22 @@ +"use client"; // Error components must be Client Components + +import { useEffect } from "react"; + +export default function Error({ + error, + reset +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + useEffect(() => { + console.error("ERRORE FATALE", error); + }, [error]); + + return ( +
+

Carricamento! Errore fatale!

+ +
+ ); +} diff --git a/src/app/(app)/layout.tsx b/src/app/(app)/layout.tsx new file mode 100644 index 00000000..d50a3d5a --- /dev/null +++ b/src/app/(app)/layout.tsx @@ -0,0 +1,33 @@ +import { ReactNode } from "react"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; + +import "normalize.css"; +import Main from "@/components/Main"; + +import "@/components/Layout.css"; +import Provider from "@/components/Provider"; + +type Props = { + children: ReactNode; +}; + +export default async function RootLayout({ children }: Props) { + return ( + + + + + + + +
+ +
{children}
+ +