refactor: improve theme ui

This commit is contained in:
0xzio
2024-12-18 00:00:06 +08:00
parent 0746c66f84
commit e404af15c8
22 changed files with 30 additions and 27 deletions

View File

@@ -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'

View File

@@ -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",

15
pnpm-lock.yaml generated
View File

@@ -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

View File

@@ -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}
</h3>
<div className="text-foreground/60">{site.description}</div>
{/* <div className="flex space-x-3 pt-6">
<SocialIcon kind="mail" href={`mailto:${email}`} />
<SocialIcon kind="github" href={github} />
<SocialIcon kind="linkedin" href={linkedin} />
<SocialIcon kind="x" href={twitter} />
</div> */}
</div>
<div className="prose max-w-none pb-8 pt-8 dark:prose-invert xl:col-span-2 mx-auto lg:max-w-3xl">
<ContentRender content={site.about} />

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -47,7 +47,6 @@ export const Header = ({ site }: Props) => {
)
})}
</div>
{/* {MobileNav && <MobileNav />} */}
</div>
<div className="flex item-center gap-2">
<div className="flex items-center">

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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'

View File

@@ -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<string, any> = {${dir.map((t) => t).join(', ')}}`
const mapText = `const map: Record<string, any> = {${dir.map((t) => `"${t}": ${camelCase(t)}`).join(', ')}}`
return {
...nextConfig,