diff --git a/apps/katt.dev/next.config.mjs b/apps/katt.dev/next.config.mjs index 4678774..b3bb85b 100644 --- a/apps/katt.dev/next.config.mjs +++ b/apps/katt.dev/next.config.mjs @@ -1,4 +1,14 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "github.com", + port: "", + }, + ], + }, +}; export default nextConfig; diff --git a/apps/katt.dev/package.json b/apps/katt.dev/package.json index 1ebc50b..b774bfb 100644 --- a/apps/katt.dev/package.json +++ b/apps/katt.dev/package.json @@ -15,6 +15,7 @@ "next": "14.1.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-tweet": "^3.2.0", "schema-dts": "^1.1.2", "twoslash-cdn": "^0.2.5" }, @@ -22,6 +23,7 @@ "@next/eslint-plugin-next": "^14.1.1", "@repo/eslint-config": "workspace:*", "@repo/typescript-config": "workspace:*", + "@tailwindcss/typography": "^0.5.12", "@types/node": "^20.12.4", "@types/react": "^18.2.74", "@types/react-dom": "^18.2.24", diff --git a/apps/katt.dev/src/app/globals.css b/apps/katt.dev/src/app/globals.css index 32cc6fd..77d435b 100644 --- a/apps/katt.dev/src/app/globals.css +++ b/apps/katt.dev/src/app/globals.css @@ -2,16 +2,26 @@ @tailwind components; @tailwind utilities; -/* dark mode can wait */ -/* +:root { + --color-fg: 20, 20, 20; + --color-bg: 244, 244, 244; +} +body { + background-color: rgb(var(--color-bg)); + color: rgb(var(--color-fg)); +} + @media (prefers-color-scheme: dark) { :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; + --color-fg: 244, 244, 244; + --color-bg: 20, 20, 20; } -} -*/ +} + +/* transform all except .notprose with 300ms */ +*:not(.not-prose) { + transition: all 300ms ease-out; +} @layer utilities { .text-balance { diff --git a/apps/katt.dev/src/app/layout.tsx b/apps/katt.dev/src/app/layout.tsx index 2fe8f25..e2ad575 100644 --- a/apps/katt.dev/src/app/layout.tsx +++ b/apps/katt.dev/src/app/layout.tsx @@ -1,16 +1,16 @@ -import { JsonLd } from '@/ui/JsonLd'; -import { Analytics } from '@vercel/analytics/next'; -import type { Metadata } from 'next'; -import { Inter } from 'next/font/google'; -import './globals.css'; +import { JsonLd } from "@/ui/JsonLd"; +import { Analytics } from "@vercel/analytics/next"; +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; -const inter = Inter({ subsets: ['latin'] }); +const inter = Inter({ subsets: ["latin"] }); export default function RootLayout({ children, -}: Readonly<{ +}: { children: React.ReactNode; -}>) { +}) { return ( @@ -18,36 +18,36 @@ export default function RootLayout({ @@ -58,11 +58,11 @@ export default function RootLayout({ } export const metadata: Metadata = { - title: 'KATTCORP', + title: "KATTCORP", description: "KATTCORP is a software development company based in Sweden. We're a small team of developers who love to build things.", - metadataBase: new URL('https://katt.dev'), + metadataBase: new URL("https://katt.dev"), alternates: { - canonical: '/', + canonical: "/", }, }; diff --git a/apps/katt.dev/src/app/post/2024-hello-world/page.tsx b/apps/katt.dev/src/app/post/2024-hello-world/page.tsx new file mode 100644 index 0000000..eda3412 --- /dev/null +++ b/apps/katt.dev/src/app/post/2024-hello-world/page.tsx @@ -0,0 +1,56 @@ +import { JsonLd } from "@/ui/JsonLd"; +import { Tweet } from "react-tweet"; +import { PostAuthor } from "../ui/PostAuthor"; + +const postDate = "2024-04-06"; + +const headline = "Hello world"; +const author: React.ComponentProps = { + name: 'Alex "KATT" Johansson', + title: "Creator of tRPC", + avatarSrc: "https://github.com/KATT.png", + href: "https://twitter.com/alexdotjs", +}; + +export default function Page() { + return ( + <> +
+

{headline}

+
+ +
+ +

Hi, here's a tweet:

+ +
+ +
+ +
+ +
+
+ + + ); +} diff --git a/apps/katt.dev/src/app/post/layout.tsx b/apps/katt.dev/src/app/post/layout.tsx new file mode 100644 index 0000000..d3680a5 --- /dev/null +++ b/apps/katt.dev/src/app/post/layout.tsx @@ -0,0 +1,3 @@ +export default function Layout(props: { children: React.ReactNode }) { + return
{props.children}
; +} diff --git a/apps/katt.dev/src/app/post/ui/PostAuthor.tsx b/apps/katt.dev/src/app/post/ui/PostAuthor.tsx new file mode 100644 index 0000000..0d0bee8 --- /dev/null +++ b/apps/katt.dev/src/app/post/ui/PostAuthor.tsx @@ -0,0 +1,30 @@ +import Image from "next/image"; +import { ReactNode } from "react"; + +export function PostAuthor(props: { + name: string; + title: ReactNode; + avatarSrc: string; + href: string; +}) { + return ( +
+ {props.name} +
+

+ + + {props.name} + +

+

{props.title}

+
+
+ ); +} diff --git a/apps/katt.dev/src/app/shiki/_snippet.md b/apps/katt.dev/src/app/shiki/_snippet.md new file mode 100644 index 0000000..625944a --- /dev/null +++ b/apps/katt.dev/src/app/shiki/_snippet.md @@ -0,0 +1,4 @@ +### Title + +- some +- paragraphs diff --git a/apps/katt.dev/src/app/shiki/_snippet.ts b/apps/katt.dev/src/app/shiki/_snippet.ts index 447992d..aae4e46 100644 --- a/apps/katt.dev/src/app/shiki/_snippet.ts +++ b/apps/katt.dev/src/app/shiki/_snippet.ts @@ -1,4 +1,7 @@ -console.log(); +import { z } from "zod"; +const foozzz = "bar"; -const hello = 'world'; -// ^? +// .. +// .. +const parsed = z.string().parse("foo"); +// ^? diff --git a/apps/katt.dev/src/app/shiki/page.tsx b/apps/katt.dev/src/app/shiki/page.tsx index 5b29274..113e423 100644 --- a/apps/katt.dev/src/app/shiki/page.tsx +++ b/apps/katt.dev/src/app/shiki/page.tsx @@ -1,14 +1,28 @@ import { Code } from "@/ui/Code"; -import { Suspense } from "react"; export default async function Page() { return ( -
    - +
    +

    Shikiii code

    +

    Default stuff

    +
      - - - -
    +
+ +

Classic

+
    + + +
+ +

Markdown

+
    + +
+ ); } diff --git a/apps/katt.dev/src/ui/Code.css b/apps/katt.dev/src/ui/Code.css new file mode 100644 index 0000000..fc01c4f --- /dev/null +++ b/apps/katt.dev/src/ui/Code.css @@ -0,0 +1,11 @@ +@media (prefers-color-scheme: dark) { + .shiki, + .shiki span { + color: var(--shiki-dark) !important; + background-color: var(--shiki-dark-bg) !important; + /* Optional, if you also want font styles */ + font-style: var(--shiki-dark-font-style) !important; + font-weight: var(--shiki-dark-font-weight) !important; + text-decoration: var(--shiki-dark-text-decoration) !important; + } +} diff --git a/apps/katt.dev/src/ui/Code.tsx b/apps/katt.dev/src/ui/Code.tsx index 9f5a711..a8a8036 100644 --- a/apps/katt.dev/src/ui/Code.tsx +++ b/apps/katt.dev/src/ui/Code.tsx @@ -3,7 +3,15 @@ import fs from "fs/promises"; import "@shikijs/twoslash/style-classic.css"; import "@shikijs/twoslash/style-rich.css"; +import "./Code.css"; +import { Suspense } from "react"; +async function Render(props: ShikiSchemaInput) { + const html = await getShikiHtml(props); + return ( +
+ ); +} export async function Code( props: Omit & ( @@ -18,9 +26,11 @@ export async function Code( ) ) { const code = - props.code ?? - (await fs.readFile(`${process.cwd()}/${props.file}`, "utf-8")); + props.code ?? (await fs.readFile(`${process.cwd()}${props.file}`, "utf-8")); - const html = await getShikiHtml({ ...props, code }); - return
; + return ( + {props.code}}> + + + ); } diff --git a/apps/katt.dev/src/ui/LinkList.tsx b/apps/katt.dev/src/ui/LinkList.tsx index 1fc5bb9..c18a099 100644 --- a/apps/katt.dev/src/ui/LinkList.tsx +++ b/apps/katt.dev/src/ui/LinkList.tsx @@ -5,13 +5,15 @@ export function LinkList(props: { }[]; }) { return ( -
    + diff --git a/apps/katt.dev/tailwind.config.ts b/apps/katt.dev/tailwind.config.ts index 06f585b..1f5dd7f 100644 --- a/apps/katt.dev/tailwind.config.ts +++ b/apps/katt.dev/tailwind.config.ts @@ -1,21 +1,20 @@ -import type { Config } from 'tailwindcss'; +import type { Config } from "tailwindcss"; const config: Config = { content: [ - './src/pages/**/*.{js,ts,jsx,tsx,mdx}', - './src/components/**/*.{js,ts,jsx,tsx,mdx}', - './src/app/**/*.{js,ts,jsx,tsx,mdx}', - './src/**/*.{jsx,tsx,mdx}', + "./src/pages/**/*.{js,ts,jsx,tsx,mdx}", + "./src/components/**/*.{js,ts,jsx,tsx,mdx}", + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + "./src/**/*.{jsx,tsx,mdx}", ], theme: { - // extend: { - // backgroundImage: { - // "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", - // "gradient-conic": - // "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", - // }, - // }, + extend: { + colors: { + fg: "var(rgba(--color-fg))", + muted: "rgba(var(--color-fg), 0.4)", + }, + }, }, - plugins: [], + plugins: [require("@tailwindcss/typography")], }; export default config; diff --git a/apps/shiki.katt.dev/server/app.test.ts b/apps/shiki.katt.dev/server/app.test.ts index 5261a26..f412f72 100644 --- a/apps/shiki.katt.dev/server/app.test.ts +++ b/apps/shiki.katt.dev/server/app.test.ts @@ -42,19 +42,19 @@ test("POST", async () => { expect(res.status).toBe(200); expect(await res.text()).toMatchInlineSnapshot(` - "
    import { import zz } from "zod";
    -    const 
    const foo: "bar"
    foo
    = "bar";
    + "
    import { import zz } from "zod";
    +    const 
    const foo: "bar"
    foo
    = "bar";
    - // .. - const
    const parsed: string
    parsed
    = import zz.function string(params?: ({ - errorMap?: z.ZodErrorMap | undefined; - invalid_type_error?: string | undefined; - required_error?: string | undefined; - description?: string | undefined; - } & { - coerce?: true | undefined; - }) | undefined): z.ZodString - export stringstring().ZodType<string, ZodStringDef, string>.parse(data: unknown, params?: Partial<z.ParseParams> | undefined): stringparse("foo");
    + // .. + const
    const parsed: string
    parsed
    = import zz.function string(params?: ({ + errorMap?: z.ZodErrorMap | undefined; + invalid_type_error?: string | undefined; + required_error?: string | undefined; + description?: string | undefined; + } & { + coerce?: true | undefined; + }) | undefined): z.ZodString + export stringstring().ZodType<string, ZodStringDef, string>.parse(data: unknown, params?: Partial<z.ParseParams> | undefined): stringparse("foo");
    " `); }); @@ -78,19 +78,19 @@ test("GET", async () => { expect(res.status).toBe(200); expect(await res.text()).toMatchInlineSnapshot(` - "
    import { import zz } from "zod";
    -    const 
    const foo: "bar"
    foo
    = "bar";
    + "
    import { import zz } from "zod";
    +    const 
    const foo: "bar"
    foo
    = "bar";
    - // .. - const
    const parsed: string
    parsed
    = import zz.function string(params?: ({ - errorMap?: z.ZodErrorMap | undefined; - invalid_type_error?: string | undefined; - required_error?: string | undefined; - description?: string | undefined; - } & { - coerce?: true | undefined; - }) | undefined): z.ZodString - export stringstring().ZodType<string, ZodStringDef, string>.parse(data: unknown, params?: Partial<z.ParseParams> | undefined): stringparse("foo");
    + // .. + const
    const parsed: string
    parsed
    = import zz.function string(params?: ({ + errorMap?: z.ZodErrorMap | undefined; + invalid_type_error?: string | undefined; + required_error?: string | undefined; + description?: string | undefined; + } & { + coerce?: true | undefined; + }) | undefined): z.ZodString + export stringstring().ZodType<string, ZodStringDef, string>.parse(data: unknown, params?: Partial<z.ParseParams> | undefined): stringparse("foo");
    " `); }); diff --git a/apps/shiki.katt.dev/server/v1.ts b/apps/shiki.katt.dev/server/v1.ts index bb22d76..727518d 100644 --- a/apps/shiki.katt.dev/server/v1.ts +++ b/apps/shiki.katt.dev/server/v1.ts @@ -111,7 +111,10 @@ const codeToHtmlDeduped = dedupe( try { const html = await codeToHtml(input.code, { lang: input.lang, - theme: "github-dark-default", + themes: { + light: "github-light-default", + dark: "github-dark-default", + }, transformers: [ transformerTwoslash({ renderer: diff --git a/packages/shiki/src/index.ts b/packages/shiki/src/index.ts index bbc8f6a..e268198 100644 --- a/packages/shiki/src/index.ts +++ b/packages/shiki/src/index.ts @@ -7,6 +7,7 @@ const langs = [ "json", "jsx", "markdown", + "md", "ts", "tsx", ] as const satisfies Options["lang"][]; @@ -29,7 +30,6 @@ const booleanSchema = z export const shikiSchema = z.object({ lang: z.enum(langs), - theme: z.string().optional().default("github-dark"), code: z.string(), renderer: z.enum(["classic", "rich"]).default("rich"), htmlDoc: booleanSchema diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b1dccf..c4a5701 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,6 +45,9 @@ importers: react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) + react-tweet: + specifier: ^3.2.0 + version: 3.2.0(react-dom@18.2.0)(react@18.2.0) schema-dts: specifier: ^1.1.2 version: 1.1.2(typescript@5.4.4) @@ -61,6 +64,9 @@ importers: '@repo/typescript-config': specifier: workspace:* version: link:../../packages/typescript-config + '@tailwindcss/typography': + specifier: ^0.5.12 + version: 0.5.12(tailwindcss@3.4.3) '@types/node': specifier: ^20.12.4 version: 20.12.4 @@ -405,7 +411,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 - dev: true /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -1122,120 +1127,120 @@ packages: tslib: 2.6.2 dev: true - /@rollup/rollup-android-arm-eabi@4.14.0: - resolution: {integrity: sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w==} + /@rollup/rollup-android-arm-eabi@4.14.1: + resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.14.0: - resolution: {integrity: sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q==} + /@rollup/rollup-android-arm64@4.14.1: + resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.14.0: - resolution: {integrity: sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA==} + /@rollup/rollup-darwin-arm64@4.14.1: + resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.14.0: - resolution: {integrity: sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ==} + /@rollup/rollup-darwin-x64@4.14.1: + resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.14.0: - resolution: {integrity: sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA==} + /@rollup/rollup-linux-arm-gnueabihf@4.14.1: + resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.14.0: - resolution: {integrity: sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A==} + /@rollup/rollup-linux-arm64-gnu@4.14.1: + resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.14.0: - resolution: {integrity: sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA==} + /@rollup/rollup-linux-arm64-musl@4.14.1: + resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.14.0: - resolution: {integrity: sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA==} + /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: + resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} cpu: [ppc64le] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.14.0: - resolution: {integrity: sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw==} + /@rollup/rollup-linux-riscv64-gnu@4.14.1: + resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.14.0: - resolution: {integrity: sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA==} + /@rollup/rollup-linux-s390x-gnu@4.14.1: + resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.14.0: - resolution: {integrity: sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg==} + /@rollup/rollup-linux-x64-gnu@4.14.1: + resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.14.0: - resolution: {integrity: sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg==} + /@rollup/rollup-linux-x64-musl@4.14.1: + resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.14.0: - resolution: {integrity: sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ==} + /@rollup/rollup-win32-arm64-msvc@4.14.1: + resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.14.0: - resolution: {integrity: sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw==} + /@rollup/rollup-win32-ia32-msvc@4.14.1: + resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.14.0: - resolution: {integrity: sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag==} + /@rollup/rollup-win32-x64-msvc@4.14.1: + resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} cpu: [x64] os: [win32] requiresBuild: true @@ -1270,6 +1275,24 @@ packages: tslib: 2.6.2 dev: false + /@swc/helpers@0.5.8: + resolution: {integrity: sha512-lruDGw3pnfM3wmZHeW7JuhkGQaJjPyiKjxeGhdmfoOT53Ic9qb5JLDNaK2HUdl1zLDeX28H221UvKjfdvSLVMg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@tailwindcss/typography@0.5.12(tailwindcss@3.4.3): + resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.3 + dev: true + /@tootallnate/quickjs-emscripten@0.23.0: resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} dev: true @@ -2503,6 +2526,11 @@ packages: engines: {node: '>=0.8'} dev: true + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false + /cluster-key-slot@1.1.2: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} @@ -2613,6 +2641,13 @@ packages: engines: {node: '>= 14'} dev: true + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.23.2 + dev: false + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4588,6 +4623,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + dev: true + /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} dev: false @@ -4600,6 +4639,10 @@ packages: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} dev: false + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -5326,6 +5369,14 @@ packages: postcss-selector-parser: 6.0.16 dev: true + /postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + /postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} @@ -5482,6 +5533,20 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /react-tweet@3.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eYLAX5ViOICQT/vkte/IzYZZDoBnl7hDO3Ns4++lKEFr/+BohPK5Rg+Lvbfx78Qtn3AjfDG5c6n+rOt7c2J6qg==} + peerDependencies: + react: '>= 18.0.0' + react-dom: '>= 18.0.0' + dependencies: + '@swc/helpers': 0.5.8 + clsx: 2.1.0 + date-fns: 2.30.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + swr: 2.2.5(react@18.2.0) + dev: false + /react@18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -5555,7 +5620,6 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} @@ -5641,28 +5705,28 @@ packages: glob: 7.2.3 dev: true - /rollup@4.14.0: - resolution: {integrity: sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ==} + /rollup@4.14.1: + resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.14.0 - '@rollup/rollup-android-arm64': 4.14.0 - '@rollup/rollup-darwin-arm64': 4.14.0 - '@rollup/rollup-darwin-x64': 4.14.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.14.0 - '@rollup/rollup-linux-arm64-gnu': 4.14.0 - '@rollup/rollup-linux-arm64-musl': 4.14.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.14.0 - '@rollup/rollup-linux-riscv64-gnu': 4.14.0 - '@rollup/rollup-linux-s390x-gnu': 4.14.0 - '@rollup/rollup-linux-x64-gnu': 4.14.0 - '@rollup/rollup-linux-x64-musl': 4.14.0 - '@rollup/rollup-win32-arm64-msvc': 4.14.0 - '@rollup/rollup-win32-ia32-msvc': 4.14.0 - '@rollup/rollup-win32-x64-msvc': 4.14.0 + '@rollup/rollup-android-arm-eabi': 4.14.1 + '@rollup/rollup-android-arm64': 4.14.1 + '@rollup/rollup-darwin-arm64': 4.14.1 + '@rollup/rollup-darwin-x64': 4.14.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.1 + '@rollup/rollup-linux-arm64-gnu': 4.14.1 + '@rollup/rollup-linux-arm64-musl': 4.14.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.1 + '@rollup/rollup-linux-riscv64-gnu': 4.14.1 + '@rollup/rollup-linux-s390x-gnu': 4.14.1 + '@rollup/rollup-linux-x64-gnu': 4.14.1 + '@rollup/rollup-linux-x64-musl': 4.14.1 + '@rollup/rollup-win32-arm64-msvc': 4.14.1 + '@rollup/rollup-win32-ia32-msvc': 4.14.1 + '@rollup/rollup-win32-x64-msvc': 4.14.1 fsevents: 2.3.3 dev: true @@ -6167,6 +6231,16 @@ packages: upper-case: 1.1.3 dev: true + /swr@2.2.5(react@18.2.0): + resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + /synckit@0.8.5: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6637,6 +6711,14 @@ packages: punycode: 2.3.0 dev: true + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true @@ -6720,7 +6802,7 @@ packages: dependencies: esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.14.0 + rollup: 4.14.1 optionalDependencies: fsevents: 2.3.3 dev: true