From e404af15c82dfd72b309fb4e98db01abbf259165 Mon Sep 17 00:00:00 2001 From: 0xzio Date: Wed, 18 Dec 2024 00:00:06 +0800 Subject: [PATCH] refactor: improve theme ui --- app/(blog)/about/page.tsx | 2 +- .../ContentRender/ContentRender.tsx | 0 components/{ => plate-ui}/ContentRender/Leaf.tsx | 0 .../{ => plate-ui}/ContentRender/SlateContent.tsx | 0 components/{ => plate-ui}/ContentRender/index.ts | 0 package.json | 2 +- pnpm-lock.yaml | 15 ++++++++++++--- themes/card/pages/AboutPage.tsx | 8 +------- themes/card/pages/HomePage.tsx | 2 +- themes/card/pages/PostDetail.tsx | 2 +- themes/garden/pages/AboutPage.tsx | 2 +- themes/garden/pages/PostDetail.tsx | 2 +- themes/micro/pages/AboutPage.tsx | 2 +- themes/micro/pages/HomePage.tsx | 2 +- themes/micro/pages/PostDetail.tsx | 2 +- themes/minimal/components/Header.tsx | 1 - themes/minimal/pages/AboutPage.tsx | 2 +- themes/minimal/pages/HomePage.tsx | 2 +- themes/minimal/pages/PostDetail.tsx | 2 +- themes/photo/pages/AboutPage.tsx | 2 +- themes/photo/pages/PostDetail.tsx | 2 +- withTheme.mjs | 5 +++-- 22 files changed, 30 insertions(+), 27 deletions(-) rename components/{ => plate-ui}/ContentRender/ContentRender.tsx (100%) rename components/{ => plate-ui}/ContentRender/Leaf.tsx (100%) rename components/{ => plate-ui}/ContentRender/SlateContent.tsx (100%) rename components/{ => plate-ui}/ContentRender/index.ts (100%) diff --git a/app/(blog)/about/page.tsx b/app/(blog)/about/page.tsx index 8036b5e7..3fe8f561 100644 --- a/app/(blog)/about/page.tsx +++ b/app/(blog)/about/page.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender/ContentRender' import { getSite } from '@/lib/fetchers' import { loadTheme } from '@/themes/theme-loader' diff --git a/components/ContentRender/ContentRender.tsx b/components/plate-ui/ContentRender/ContentRender.tsx similarity index 100% rename from components/ContentRender/ContentRender.tsx rename to components/plate-ui/ContentRender/ContentRender.tsx diff --git a/components/ContentRender/Leaf.tsx b/components/plate-ui/ContentRender/Leaf.tsx similarity index 100% rename from components/ContentRender/Leaf.tsx rename to components/plate-ui/ContentRender/Leaf.tsx diff --git a/components/ContentRender/SlateContent.tsx b/components/plate-ui/ContentRender/SlateContent.tsx similarity index 100% rename from components/ContentRender/SlateContent.tsx rename to components/plate-ui/ContentRender/SlateContent.tsx diff --git a/components/ContentRender/index.ts b/components/plate-ui/ContentRender/index.ts similarity index 100% rename from components/ContentRender/index.ts rename to components/plate-ui/ContentRender/index.ts diff --git a/package.json b/package.json index 543efdd2..8244035e 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "ai": "^4.0.18", "array-move": "^4.0.0", "big.js": "^6.2.2", + "case-anything": "^3.1.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.0.4", @@ -126,7 +127,6 @@ "penx-theme-photo": "^0.0.10", "prismjs": "^1.29.0", "react": "^19.0.0", - "react-datepicker": "^7.5.0", "react-day-picker": "^9.4.3", "react-dnd": "^16.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2e489d9..53942619 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,6 +248,9 @@ importers: big.js: specifier: ^6.2.2 version: 6.2.2 + case-anything: + specifier: ^3.1.0 + version: 3.1.0 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -3641,6 +3644,10 @@ packages: capnp-ts@0.7.0: resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} + case-anything@3.1.0: + resolution: {integrity: sha512-rRYnn5Elur8RuNHKoJ2b0tgn+pjYxL7BzWom+JZ7NKKn1lt/yGV/tUNwOovxYa9l9VL5hnXQdMc+mENbhJzosQ==} + engines: {node: '>=18'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -11060,6 +11067,8 @@ snapshots: transitivePeerDependencies: - supports-color + case-anything@3.1.0: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -11927,7 +11936,7 @@ snapshots: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -11958,7 +11967,7 @@ snapshots: is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -11977,7 +11986,7 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.2.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 diff --git a/themes/card/pages/AboutPage.tsx b/themes/card/pages/AboutPage.tsx index cf8b66bc..59168882 100644 --- a/themes/card/pages/AboutPage.tsx +++ b/themes/card/pages/AboutPage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Site } from '@penxio/types' @@ -24,12 +24,6 @@ export function AboutPage({ site }: Props) { {site.name}
{site.description}
- {/*
- - - - -
*/}
diff --git a/themes/card/pages/HomePage.tsx b/themes/card/pages/HomePage.tsx index e0323287..a6b77189 100644 --- a/themes/card/pages/HomePage.tsx +++ b/themes/card/pages/HomePage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { Post, Site } from '@penxio/types' import Link from 'next/link' import { PostItem } from '../components/PostItem' diff --git a/themes/card/pages/PostDetail.tsx b/themes/card/pages/PostDetail.tsx index 980615c1..d55cfcfb 100644 --- a/themes/card/pages/PostDetail.tsx +++ b/themes/card/pages/PostDetail.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { PostActions } from '@/components/theme-ui/PostActions' import { formatDate } from '@/lib/utils' diff --git a/themes/garden/pages/AboutPage.tsx b/themes/garden/pages/AboutPage.tsx index 759007b0..488cdf7a 100644 --- a/themes/garden/pages/AboutPage.tsx +++ b/themes/garden/pages/AboutPage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Site } from '@penxio/types' diff --git a/themes/garden/pages/PostDetail.tsx b/themes/garden/pages/PostDetail.tsx index 9f72c610..28004a52 100644 --- a/themes/garden/pages/PostDetail.tsx +++ b/themes/garden/pages/PostDetail.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { PostActions } from '@/components/theme-ui/PostActions' import { cn, formatDate } from '@/lib/utils' diff --git a/themes/micro/pages/AboutPage.tsx b/themes/micro/pages/AboutPage.tsx index 9d464bea..18e1d943 100644 --- a/themes/micro/pages/AboutPage.tsx +++ b/themes/micro/pages/AboutPage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Site } from '@penxio/types' diff --git a/themes/micro/pages/HomePage.tsx b/themes/micro/pages/HomePage.tsx index 06f30261..c39a9249 100644 --- a/themes/micro/pages/HomePage.tsx +++ b/themes/micro/pages/HomePage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Post, Site } from '@penxio/types' import Link from 'next/link' diff --git a/themes/micro/pages/PostDetail.tsx b/themes/micro/pages/PostDetail.tsx index 85556a15..7eb00a8f 100644 --- a/themes/micro/pages/PostDetail.tsx +++ b/themes/micro/pages/PostDetail.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { PostActions } from '@/components/theme-ui/PostActions' import { cn, formatDate } from '@/lib/utils' diff --git a/themes/minimal/components/Header.tsx b/themes/minimal/components/Header.tsx index 89af4059..caed4076 100644 --- a/themes/minimal/components/Header.tsx +++ b/themes/minimal/components/Header.tsx @@ -47,7 +47,6 @@ export const Header = ({ site }: Props) => { ) })}
- {/* {MobileNav && } */}
diff --git a/themes/minimal/pages/AboutPage.tsx b/themes/minimal/pages/AboutPage.tsx index 163892b1..76620a6a 100644 --- a/themes/minimal/pages/AboutPage.tsx +++ b/themes/minimal/pages/AboutPage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Site } from '@penxio/types' diff --git a/themes/minimal/pages/HomePage.tsx b/themes/minimal/pages/HomePage.tsx index 2aeff1cb..a4820a94 100644 --- a/themes/minimal/pages/HomePage.tsx +++ b/themes/minimal/pages/HomePage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Post, Site } from '@penxio/types' import Link from 'next/link' diff --git a/themes/minimal/pages/PostDetail.tsx b/themes/minimal/pages/PostDetail.tsx index aa7d14e6..81656d01 100644 --- a/themes/minimal/pages/PostDetail.tsx +++ b/themes/minimal/pages/PostDetail.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { PostActions } from '@/components/theme-ui/PostActions' import { cn, formatDate } from '@/lib/utils' diff --git a/themes/photo/pages/AboutPage.tsx b/themes/photo/pages/AboutPage.tsx index 759007b0..488cdf7a 100644 --- a/themes/photo/pages/AboutPage.tsx +++ b/themes/photo/pages/AboutPage.tsx @@ -1,4 +1,4 @@ -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { Site } from '@penxio/types' diff --git a/themes/photo/pages/PostDetail.tsx b/themes/photo/pages/PostDetail.tsx index aa7d14e6..81656d01 100644 --- a/themes/photo/pages/PostDetail.tsx +++ b/themes/photo/pages/PostDetail.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react' -import { ContentRender } from '@/components/ContentRender' +import { ContentRender } from '@/components/plate-ui/ContentRender' import { PageTitle } from '@/components/theme-ui/PageTitle' import { PostActions } from '@/components/theme-ui/PostActions' import { cn, formatDate } from '@/lib/utils' diff --git a/withTheme.mjs b/withTheme.mjs index 539c75c9..99ec366c 100644 --- a/withTheme.mjs +++ b/withTheme.mjs @@ -1,6 +1,7 @@ import fs from 'fs' import path from 'path' import { fileURLToPath } from 'url' +import { camelCase, kebabCase } from 'case-anything' export function withTheme(nextConfig = {}) { const __filename = fileURLToPath(import.meta.url) @@ -15,10 +16,10 @@ export function withTheme(nextConfig = {}) { const themesText = `export const themes = [${dir.map((t) => '"' + t + '"').join(', ')}]` const importList = dir - .map((t) => `import * as ${t} from './${t}';`) + .map((t) => `import * as ${camelCase(t)} from './${t}';`) .join('\n') - const mapText = `const map: Record = {${dir.map((t) => t).join(', ')}}` + const mapText = `const map: Record = {${dir.map((t) => `"${t}": ${camelCase(t)}`).join(', ')}}` return { ...nextConfig,