From bc4ab6e85a606f7ca3f93e3f305e171b230656f9 Mon Sep 17 00:00:00 2001 From: Souma <101255979+5ouma@users.noreply.github.com> Date: Fri, 8 Nov 2024 20:56:14 +0900 Subject: [PATCH] feat(component): Add homepage component (#7) Generate a QR code for the homepage URL. Render a clickable component and a URL with it. --- astro.config.ts | 3 +- bun.lockb | Bin 212758 -> 246160 bytes package.json | 5 ++ src/components/Homepage/Homepage.astro | 68 ++++++++++++++++++++ src/components/Homepage/Homepage.stories.ts | 11 ++++ src/components/Homepage/Homepage.test.ts | 23 +++++++ src/components/Homepage/story.ts | 5 ++ src/libs/qrcode.ts | 8 +++ 8 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/components/Homepage/Homepage.astro create mode 100644 src/components/Homepage/Homepage.stories.ts create mode 100644 src/components/Homepage/Homepage.test.ts create mode 100644 src/components/Homepage/story.ts create mode 100644 src/libs/qrcode.ts diff --git a/astro.config.ts b/astro.config.ts index c4bf52f..ed4e822 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -1,8 +1,9 @@ import type { AstroIntegration } from "astro"; +import icon from "astro-icon"; import { defineConfig } from "astro/config"; import astrobook from "astrobook"; -const integrations: AstroIntegration[] = []; +const integrations: AstroIntegration[] = [icon()]; if (process.env.ASTROBOOK) { integrations.push(astrobook({ directory: "src/components" })); diff --git a/bun.lockb b/bun.lockb index 94591fff84ed97f5fa9d3a4af94c2208f936d4ef..78bfedb31b86c6b763e4931d1204b93f2efd42de 100755 GIT binary patch delta 61731 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 LZ~LUx%>P6IgqXvu diff --git a/package.json b/package.json index 3c4d18e..034bb14 100644 --- a/package.json +++ b/package.json @@ -13,13 +13,18 @@ "test:cov": "vitest run --coverage" }, "dependencies": { + "@cxa/astro-inline-svg": "0.5.1", + "@iconify-json/mingcute": "1.2.1", "astro": "4.16.10", + "astro-icon": "1.1.2", + "qrcode": "1.5.4", "typescript": "5.6.3" }, "devDependencies": { "@astrojs/check": "0.9.4", "@biomejs/biome": "1.9.4", "@types/node": "22.9.0", + "@types/qrcode": "1.5.5", "@vitest/coverage-v8": "2.1.4", "astrobook": "0.5.1", "vitest": "2.1.4" diff --git a/src/components/Homepage/Homepage.astro b/src/components/Homepage/Homepage.astro new file mode 100644 index 0000000..43e2ea6 --- /dev/null +++ b/src/components/Homepage/Homepage.astro @@ -0,0 +1,68 @@ +--- +import Svg from "@cxa/astro-inline-svg"; +import { Icon } from "astro-icon/components"; + +import "../../styles/global.css"; +import { generateQRCode } from "../../libs/qrcode.ts"; + +export type Props = { url: string }; +const props = Astro.props; + +const url = new URL(props.url); +const qrCode: string = await generateQRCode(props.url); +--- + + + +
+ + +
+
+ + diff --git a/src/components/Homepage/Homepage.stories.ts b/src/components/Homepage/Homepage.stories.ts new file mode 100644 index 0000000..5cffc9c --- /dev/null +++ b/src/components/Homepage/Homepage.stories.ts @@ -0,0 +1,11 @@ +import Homepage from "./Homepage.astro"; +import * as stories from "./story.ts"; + +export default { + title: "Homepage", + component: Homepage, +}; + +export const Domain = { args: stories.Domain }; +export const Path = { args: stories.Path }; +export const Japanese = { args: stories.Japanese }; diff --git a/src/components/Homepage/Homepage.test.ts b/src/components/Homepage/Homepage.test.ts new file mode 100644 index 0000000..613f3bf --- /dev/null +++ b/src/components/Homepage/Homepage.test.ts @@ -0,0 +1,23 @@ +import { experimental_AstroContainer as AstroContainer } from "astro/container"; +import { describe, expect, test } from "vitest"; + +import Homepage from "./Homepage.astro"; +import * as stories from "./story.ts"; + +describe("Homepage", () => { + for (const [name, props] of Object.entries(stories)) { + test(name, async () => { + const container: AstroContainer = await AstroContainer.create(); + const result: string = await container.renderToString(Homepage, { + props, + }); + const url = new URL(props.url); + + expect(result).toContain( + `> ${encodeURI(url.hostname)}${ + url.pathname === "/" ? "" : url.pathname + } `, + ); + }); + } +}); diff --git a/src/components/Homepage/story.ts b/src/components/Homepage/story.ts new file mode 100644 index 0000000..0b3fc24 --- /dev/null +++ b/src/components/Homepage/story.ts @@ -0,0 +1,5 @@ +import type { Props } from "./Homepage.astro"; + +export const Domain: Props = { url: "https://example.com" }; +export const Path: Props = { url: "https://www.example.com/path" }; +export const Japanese: Props = { url: "https://www.example.com/パス" }; diff --git a/src/libs/qrcode.ts b/src/libs/qrcode.ts new file mode 100644 index 0000000..cd63edc --- /dev/null +++ b/src/libs/qrcode.ts @@ -0,0 +1,8 @@ +import QRCode from "qrcode"; + +export const generateQRCode = async (url: string): Promise => + await QRCode.toString(url, { + type: "svg", + margin: 0, + color: { light: "#00000000" }, + });