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,