diff --git a/dashboard/next.config.mjs b/dashboard/next.config.mjs
index 82a44cb..0b2d3da 100644
--- a/dashboard/next.config.mjs
+++ b/dashboard/next.config.mjs
@@ -49,6 +49,8 @@ const nextConfig = {
"@theme": path.join(__dirname, "src", "components", "theme"),
"@templates": path.join(__dirname, "src", "modules", "templates"),
"@src": path.join(__dirname, "src"),
+ "@": path.join(__dirname, "vendor", "neurapress", "src"),
+ "@neurapress": path.join(__dirname, "vendor", "neurapress", "src"),
};
// 添加模块搜索路径
diff --git a/dashboard/package.json b/dashboard/package.json
index a57fb20..d9ef467 100644
--- a/dashboard/package.json
+++ b/dashboard/package.json
@@ -24,10 +24,12 @@
"gray-matter": "^4.0.3",
"html2canvas": "^1.4.1",
"js-yaml": "^4.1.0",
+ "katex": "^0.16.27",
"lucide-react": "^0.319.0",
"marked": "^16.1.2",
"next": "^16.0.9",
"pdfjs-dist": "^4.2.67",
+ "prismjs": "^1.30.0",
"prop-types": "^15.8.1",
"qr.js": "0.0.0",
"qrcode": "^1.5.4",
diff --git a/dashboard/src/dashboard/apps/cms-editor/EditorShell.tsx b/dashboard/src/dashboard/apps/cms-editor/EditorShell.tsx
index dce85ce..2cb44a6 100644
--- a/dashboard/src/dashboard/apps/cms-editor/EditorShell.tsx
+++ b/dashboard/src/dashboard/apps/cms-editor/EditorShell.tsx
@@ -3,7 +3,7 @@
import Link from 'next/link'
import { useEffect, useMemo, useState } from 'react'
import { useLanguage } from '@i18n/LanguageProvider'
-import { neurapressSample, renderMarkdown } from '../../../../vendor/neurapress/src'
+import { neurapressSample, renderMarkdown } from '@neurapress'
import type { DraftStore } from './storage'
const defaultContent = `# 编辑器 / Editor
diff --git a/dashboard/tsconfig.json b/dashboard/tsconfig.json
index a05beee..270d4e4 100644
--- a/dashboard/tsconfig.json
+++ b/dashboard/tsconfig.json
@@ -17,6 +17,7 @@
"jsx": "react-jsx",
"baseUrl": ".", // 👈 根路径基准
"paths": {
+ "@/*": ["vendor/neurapress/src/*"],
"@components/*": ["src/components/*"],
"@i18n/*": ["src/i18n/*"],
"@lib/*": ["src/lib/*"],
@@ -27,7 +28,9 @@
"@theme": ["src/components/theme"],
"@theme/*": ["src/components/theme/*"],
"@templates/*": ["src/modules/templates/*"],
- "@src/*": ["src/*"]
+ "@src/*": ["src/*"],
+ "@neurapress": ["vendor/neurapress/src/index.ts"],
+ "@neurapress/*": ["vendor/neurapress/src/*"]
},
"types": ["node", "vitest/globals", "@testing-library/jest-dom"],
"plugins": [{ "name": "next" }]
diff --git a/dashboard/vendor/neurapress/src/app/about/page.tsx b/dashboard/vendor/neurapress/src/app/about/page.tsx
index 11b7239..bfb0772 100644
--- a/dashboard/vendor/neurapress/src/app/about/page.tsx
+++ b/dashboard/vendor/neurapress/src/app/about/page.tsx
@@ -1,7 +1,7 @@
-import { MainNav } from '@/components/nav/MainNav'
-import { Logo } from '@/components/icons/Logo'
-import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
-import { Button } from '@/components/ui/button'
+import { MainNav } from '@neurapress/components/nav/MainNav'
+import { Logo } from '@neurapress/components/icons/Logo'
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@neurapress/components/ui/card'
+import { Button } from '@neurapress/components/ui/button'
import Link from 'next/link'
import {
Heart,
diff --git a/dashboard/vendor/neurapress/src/app/help/page.tsx b/dashboard/vendor/neurapress/src/app/help/page.tsx
index 3bac243..01aefba 100644
--- a/dashboard/vendor/neurapress/src/app/help/page.tsx
+++ b/dashboard/vendor/neurapress/src/app/help/page.tsx
@@ -1,7 +1,7 @@
-import { MainNav } from '@/components/nav/MainNav'
-import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
-import { Button } from '@/components/ui/button'
-import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
+import { MainNav } from '@neurapress/components/nav/MainNav'
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@neurapress/components/ui/card'
+import { Button } from '@neurapress/components/ui/button'
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@neurapress/components/ui/tabs'
import Link from 'next/link'
import {
BookOpen,
diff --git a/dashboard/vendor/neurapress/src/app/layout.tsx b/dashboard/vendor/neurapress/src/app/layout.tsx
index 2b939bd..0e3de82 100644
--- a/dashboard/vendor/neurapress/src/app/layout.tsx
+++ b/dashboard/vendor/neurapress/src/app/layout.tsx
@@ -1,12 +1,12 @@
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import './globals.css'
-import '@/styles/code-themes.css'
+import '@neurapress/styles/code-themes.css'
import 'katex/dist/katex.min.css'
-import { ThemeProvider } from '@/components/theme/ThemeProvider'
-import { cn } from '@/lib/utils'
-import { Toaster } from '@/components/ui/toaster'
-import { GoogleAnalytics } from '@/components/GoogleAnalytics'
+import { ThemeProvider } from '@neurapress/components/theme/ThemeProvider'
+import { cn } from '@neurapress/lib/utils'
+import { Toaster } from '@neurapress/components/ui/toaster'
+import { GoogleAnalytics } from '@neurapress/components/GoogleAnalytics'
const inter = Inter({ subsets: ['latin'] })
diff --git a/dashboard/vendor/neurapress/src/app/page.tsx b/dashboard/vendor/neurapress/src/app/page.tsx
index 256153a..b416e7a 100644
--- a/dashboard/vendor/neurapress/src/app/page.tsx
+++ b/dashboard/vendor/neurapress/src/app/page.tsx
@@ -1,10 +1,10 @@
'use client'
import Link from 'next/link'
-import { Button } from '@/components/ui/button'
-import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
-import { MainNav } from '@/components/nav/MainNav'
-import { Logo } from '@/components/icons/Logo'
+import { Button } from '@neurapress/components/ui/button'
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@neurapress/components/ui/card'
+import { MainNav } from '@neurapress/components/nav/MainNav'
+import { Logo } from '@neurapress/components/icons/Logo'
import {
FileText,
Smartphone,
diff --git a/dashboard/vendor/neurapress/src/app/wechat/page.tsx b/dashboard/vendor/neurapress/src/app/wechat/page.tsx
index a7f4f09..208ced9 100644
--- a/dashboard/vendor/neurapress/src/app/wechat/page.tsx
+++ b/dashboard/vendor/neurapress/src/app/wechat/page.tsx
@@ -2,9 +2,9 @@
import dynamic from 'next/dynamic'
import { Suspense } from 'react'
-import { Logo } from '@/components/icons/Logo'
+import { Logo } from '@neurapress/components/icons/Logo'
import { Loader2 } from 'lucide-react'
-import { AdBanner } from '@/components/ui/AdBanner'
+import { AdBanner } from '@neurapress/components/ui/AdBanner'
const LoadingLogo = () => (
@@ -24,7 +24,7 @@ const LoadingLogo = () => (
)
// Dynamically import WechatEditor with no SSR
-const WechatEditor = dynamic(() => import('@/components/editor/WechatEditor'), {
+const WechatEditor = dynamic(() => import('@neurapress/components/editor/WechatEditor'), {
ssr: false,
loading: () => (
diff --git a/dashboard/vendor/neurapress/src/app/xiaohongshu/page.tsx b/dashboard/vendor/neurapress/src/app/xiaohongshu/page.tsx
index 57358ab..35b3eef 100644
--- a/dashboard/vendor/neurapress/src/app/xiaohongshu/page.tsx
+++ b/dashboard/vendor/neurapress/src/app/xiaohongshu/page.tsx
@@ -1,5 +1,5 @@
-import XiaohongshuMarkdownEditor from '@/components/editor/xiaohongshu/XiaohongshuMarkdownEditor'
-import { Toaster } from '@/components/ui/toaster'
+import XiaohongshuMarkdownEditor from '@neurapress/components/editor/xiaohongshu/XiaohongshuMarkdownEditor'
+import { Toaster } from '@neurapress/components/ui/toaster'
export default function XiaohongshuPage() {
return (
diff --git a/dashboard/vendor/neurapress/src/components/ArticleList.tsx b/dashboard/vendor/neurapress/src/components/ArticleList.tsx
index 2aa6e1e..03b02c2 100644
--- a/dashboard/vendor/neurapress/src/components/ArticleList.tsx
+++ b/dashboard/vendor/neurapress/src/components/ArticleList.tsx
@@ -1,8 +1,8 @@
'use client'
import { useState, useEffect } from 'react'
-import { cn } from '@/lib/utils'
-import { Button } from '@/components/ui/button'
+import { cn } from '@neurapress/lib/utils'
+import { Button } from '@neurapress/components/ui/button'
import {
Sheet,
SheetContent,
@@ -10,7 +10,7 @@ import {
SheetHeader,
SheetTitle,
SheetTrigger,
-} from '@/components/ui/sheet'
+} from '@neurapress/components/ui/sheet'
import {
AlertDialog,
AlertDialogAction,
@@ -21,12 +21,12 @@ import {
AlertDialogHeader,
AlertDialogTitle,
AlertDialogTrigger,
-} from "@/components/ui/alert-dialog"
-import { ScrollArea } from '@/components/ui/scroll-area'
+} from "@neurapress/components/ui/alert-dialog"
+import { ScrollArea } from '@neurapress/components/ui/scroll-area'
import { FileText, Trash2, Menu, Plus, Save, Edit2, Check } from 'lucide-react'
-import { useToast } from '@/components/ui/use-toast'
-import { ToastAction } from '@/components/ui/toast'
-import { Input } from '@/components/ui/input'
+import { useToast } from '@neurapress/components/ui/use-toast'
+import { ToastAction } from '@neurapress/components/ui/toast'
+import { Input } from '@neurapress/components/ui/input'
interface Article {
id: string
diff --git a/dashboard/vendor/neurapress/src/components/editor/CodeThemeSelector.tsx b/dashboard/vendor/neurapress/src/components/editor/CodeThemeSelector.tsx
index 85df236..75af426 100644
--- a/dashboard/vendor/neurapress/src/components/editor/CodeThemeSelector.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/CodeThemeSelector.tsx
@@ -1,8 +1,8 @@
'use client'
-import { codeThemes, type CodeThemeId } from '@/config/code-themes'
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
-import { Label } from '@/components/ui/label'
+import { codeThemes, type CodeThemeId } from '@neurapress/config/code-themes'
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@neurapress/components/ui/select'
+import { Label } from '@neurapress/components/ui/label'
interface CodeThemeSelectorProps {
value: CodeThemeId
diff --git a/dashboard/vendor/neurapress/src/components/editor/StyleConfigDialog.tsx b/dashboard/vendor/neurapress/src/components/editor/StyleConfigDialog.tsx
index 74b3496..c1c2de0 100644
--- a/dashboard/vendor/neurapress/src/components/editor/StyleConfigDialog.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/StyleConfigDialog.tsx
@@ -1,13 +1,13 @@
'use client'
import { useState, useEffect } from 'react'
-import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
-import { Label } from '@/components/ui/label'
-import { Input } from '@/components/ui/input'
-import { Button } from '@/components/ui/button'
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@neurapress/components/ui/dialog'
+import { Label } from '@neurapress/components/ui/label'
+import { Input } from '@neurapress/components/ui/input'
+import { Button } from '@neurapress/components/ui/button'
import { Settings } from 'lucide-react'
-import { type RendererOptions } from '@/lib/markdown'
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
+import { type RendererOptions } from '@neurapress/lib/markdown'
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@neurapress/components/ui/select'
const themeColors = [
{ name: '经典黑', value: '#1a1a1a' },
diff --git a/dashboard/vendor/neurapress/src/components/editor/WechatEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/WechatEditor.tsx
index efac7c4..e1e05bd 100644
--- a/dashboard/vendor/neurapress/src/components/editor/WechatEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/WechatEditor.tsx
@@ -1,30 +1,30 @@
'use client'
import { useState, useCallback, useRef, useEffect } from 'react'
-import { useToast } from '@/components/ui/use-toast'
-import { ToastAction } from '@/components/ui/toast'
-import { type RendererOptions } from '@/lib/markdown'
+import { useToast } from '@neurapress/components/ui/use-toast'
+import { ToastAction } from '@neurapress/components/ui/toast'
+import { type RendererOptions } from '@neurapress/lib/markdown'
import { useAutoSave } from './hooks/useAutoSave'
import { EditorToolbar } from './components/EditorToolbar'
import { EditorPreview } from './components/EditorPreview'
import { MarkdownToolbar } from './components/MarkdownToolbar'
import { type PreviewSize } from './constants'
-import { useLocalStorage } from '@/hooks/use-local-storage'
-import { codeThemes, type CodeThemeId } from '@/config/code-themes'
-import '@/styles/code-themes.css'
-import { templates } from '@/config/wechat-templates'
-import { cn } from '@/lib/utils'
+import { useLocalStorage } from '@neurapress/hooks/use-local-storage'
+import { codeThemes, type CodeThemeId } from '@neurapress/config/code-themes'
+import '@neurapress/styles/code-themes.css'
+import { templates } from '@neurapress/config/wechat-templates'
+import { cn } from '@neurapress/lib/utils'
import { usePreviewContent } from './hooks/usePreviewContent'
import { useEditorKeyboard } from './hooks/useEditorKeyboard'
import { useScrollSync } from './hooks/useScrollSync'
import { useWordStats } from './hooks/useWordStats'
import { useCopy } from './hooks/useCopy'
-import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'
-import { Button } from '@/components/ui/button'
+import { Tabs, TabsList, TabsTrigger, TabsContent } from '@neurapress/components/ui/tabs'
+import { Button } from '@neurapress/components/ui/button'
import { Copy } from 'lucide-react'
import { MobileEditor } from './components/MobileEditor'
import { DesktopEditor } from './components/DesktopEditor'
-import { getExampleContent } from '@/lib/utils/loadExampleContent'
+import { getExampleContent } from '@neurapress/lib/utils/loadExampleContent'
export default function WechatEditor() {
const { toast } = useToast()
diff --git a/dashboard/vendor/neurapress/src/components/editor/XiaohongshuEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/XiaohongshuEditor.tsx
index 004c269..4bc6494 100644
--- a/dashboard/vendor/neurapress/src/components/editor/XiaohongshuEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/XiaohongshuEditor.tsx
@@ -3,7 +3,7 @@
import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import { useState } from 'react'
-import { cn } from '@/lib/utils'
+import { cn } from '@neurapress/lib/utils'
import { Copy, Eye, Pencil } from 'lucide-react'
export default function XiaohongshuEditor() {
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/DesktopEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/components/DesktopEditor.tsx
index 7415a3e..c4ea3a4 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/DesktopEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/DesktopEditor.tsx
@@ -1,12 +1,12 @@
'use client'
import { type RefObject } from 'react'
-import { cn } from '@/lib/utils'
-import { templates } from '@/config/wechat-templates'
+import { cn } from '@neurapress/lib/utils'
+import { templates } from '@neurapress/config/wechat-templates'
import { EditorPreview } from './EditorPreview'
import { MarkdownToolbar } from './MarkdownToolbar'
import { type PreviewSize } from '../constants'
-import { type CodeThemeId } from '@/config/code-themes'
+import { type CodeThemeId } from '@neurapress/config/code-themes'
interface DesktopEditorProps {
editorRef: RefObject
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/EditorPreview.tsx b/dashboard/vendor/neurapress/src/components/editor/components/EditorPreview.tsx
index 6590988..6e9db23 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/EditorPreview.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/EditorPreview.tsx
@@ -1,13 +1,13 @@
'use client'
-import { cn } from '@/lib/utils'
+import { cn } from '@neurapress/lib/utils'
import { PREVIEW_SIZES, type PreviewSize } from '../constants'
import { Loader2, ZoomIn, ZoomOut, Maximize2, Minimize2 } from 'lucide-react'
-import { templates } from '@/config/wechat-templates'
+import { templates } from '@neurapress/config/wechat-templates'
import { useState, useRef, useEffect, useMemo } from 'react'
-import { type CodeThemeId } from '@/config/code-themes'
+import { type CodeThemeId } from '@neurapress/config/code-themes'
import { useTheme } from 'next-themes'
-import '@/styles/code-themes.css'
+import '@neurapress/styles/code-themes.css'
import mermaid from 'mermaid'
import { useScrollSync } from '../hooks/useScrollSync'
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/EditorToolbar.tsx b/dashboard/vendor/neurapress/src/components/editor/components/EditorToolbar.tsx
index 3866bbb..68c0c00 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/EditorToolbar.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/EditorToolbar.tsx
@@ -2,22 +2,22 @@
import { useState } from 'react'
import { Copy, Plus, Save, Smartphone, Settings, Github, Trash2 } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '@neurapress/lib/utils'
import { WechatStylePicker } from '../../template/WechatStylePicker'
import { TemplateManager } from '../../template/TemplateManager'
import { StyleConfigDialog } from '../StyleConfigDialog'
-import { ArticleList } from '@/components/ArticleList'
+import { ArticleList } from '@neurapress/components/ArticleList'
import { type Article } from '../constants'
-import { type RendererOptions } from '@/lib/markdown'
-import { ThemeToggle } from '@/components/theme/ThemeToggle'
-import { Logo } from '@/components/icons/Logo'
+import { type RendererOptions } from '@neurapress/lib/markdown'
+import { ThemeToggle } from '@neurapress/components/theme/ThemeToggle'
+import { Logo } from '@neurapress/components/icons/Logo'
import Link from 'next/link'
-import { Button } from '@/components/ui/button'
-import { useToast } from '@/components/ui/use-toast'
-import { ToastAction } from '@/components/ui/toast'
+import { Button } from '@neurapress/components/ui/button'
+import { useToast } from '@neurapress/components/ui/use-toast'
+import { ToastAction } from '@neurapress/components/ui/toast'
import { CodeThemeSelector } from '../CodeThemeSelector'
-import { useLocalStorage } from '@/hooks/use-local-storage'
-import { codeThemes, type CodeThemeId } from '@/config/code-themes'
+import { useLocalStorage } from '@neurapress/hooks/use-local-storage'
+import { codeThemes, type CodeThemeId } from '@neurapress/config/code-themes'
interface EditorToolbarProps {
value: string
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/MarkdownCheatSheet.tsx b/dashboard/vendor/neurapress/src/components/editor/components/MarkdownCheatSheet.tsx
index 72e3282..0f7c305 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/MarkdownCheatSheet.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/MarkdownCheatSheet.tsx
@@ -5,8 +5,8 @@ import {
DialogHeader,
DialogTitle,
DialogTrigger,
-} from "@/components/ui/dialog"
-import { Button } from "@/components/ui/button"
+} from "@neurapress/components/ui/dialog"
+import { Button } from "@neurapress/components/ui/button"
import { HelpCircle } from 'lucide-react'
const cheatSheet = [
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/MarkdownToolbar.tsx b/dashboard/vendor/neurapress/src/components/editor/components/MarkdownToolbar.tsx
index fa5f9d4..2d738b7 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/MarkdownToolbar.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/MarkdownToolbar.tsx
@@ -1,7 +1,7 @@
import React from 'react'
-import { Button } from '@/components/ui/button'
-import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from '@/components/ui/tooltip'
-import { Separator } from '@/components/ui/separator'
+import { Button } from '@neurapress/components/ui/button'
+import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from '@neurapress/components/ui/tooltip'
+import { Separator } from '@neurapress/components/ui/separator'
import {
Bold,
Italic,
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/MobileEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/components/MobileEditor.tsx
index c3ea9ae..14db036 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/MobileEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/MobileEditor.tsx
@@ -1,12 +1,12 @@
'use client'
import { type RefObject } from 'react'
-import { Tabs, TabsList, TabsTrigger, TabsContent } from '@/components/ui/tabs'
-import { Button } from '@/components/ui/button'
+import { Tabs, TabsList, TabsTrigger, TabsContent } from '@neurapress/components/ui/tabs'
+import { Button } from '@neurapress/components/ui/button'
import { Copy } from 'lucide-react'
import { EditorPreview } from './EditorPreview'
import { type PreviewSize } from '../constants'
-import { type CodeThemeId } from '@/config/code-themes'
+import { type CodeThemeId } from '@neurapress/config/code-themes'
interface MobileEditorProps {
textareaRef: RefObject
diff --git a/dashboard/vendor/neurapress/src/components/editor/components/MobileToolbar.tsx b/dashboard/vendor/neurapress/src/components/editor/components/MobileToolbar.tsx
index cc4a3cb..f5c52ca 100644
--- a/dashboard/vendor/neurapress/src/components/editor/components/MobileToolbar.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/components/MobileToolbar.tsx
@@ -1,6 +1,6 @@
import { Copy, Save, Settings } from 'lucide-react'
-import { cn } from '@/lib/utils'
-import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet'
+import { cn } from '@neurapress/lib/utils'
+import { Sheet, SheetContent, SheetTrigger } from '@neurapress/components/ui/sheet'
import { WechatStylePicker } from '../../template/WechatStylePicker'
interface MobileToolbarProps {
diff --git a/dashboard/vendor/neurapress/src/components/editor/hooks/useCopy.ts b/dashboard/vendor/neurapress/src/components/editor/hooks/useCopy.ts
index 320870d..e717a53 100644
--- a/dashboard/vendor/neurapress/src/components/editor/hooks/useCopy.ts
+++ b/dashboard/vendor/neurapress/src/components/editor/hooks/useCopy.ts
@@ -1,8 +1,8 @@
'use client'
import { useCallback } from 'react'
-import { useToast } from '@/components/ui/use-toast'
-import { initializeMermaid } from '@/lib/markdown/mermaid-utils'
+import { useToast } from '@neurapress/components/ui/use-toast'
+import { initializeMermaid } from '@neurapress/lib/markdown/mermaid-utils'
export const useCopy = () => {
const { toast } = useToast()
diff --git a/dashboard/vendor/neurapress/src/components/editor/hooks/usePreviewContent.ts b/dashboard/vendor/neurapress/src/components/editor/hooks/usePreviewContent.ts
index 8a40dad..2f859fb 100644
--- a/dashboard/vendor/neurapress/src/components/editor/hooks/usePreviewContent.ts
+++ b/dashboard/vendor/neurapress/src/components/editor/hooks/usePreviewContent.ts
@@ -1,9 +1,9 @@
import { useState, useCallback, useEffect } from 'react'
-import { templates } from '@/config/wechat-templates'
-import { convertToWechat, getCodeThemeStyles, type RendererOptions } from '@/lib/markdown'
-import { type CodeThemeId } from '@/config/code-themes'
-import { useToast } from '@/components/ui/use-toast'
-import { initializeMermaid } from '@/lib/markdown/mermaid-utils'
+import { templates } from '@neurapress/config/wechat-templates'
+import { convertToWechat, getCodeThemeStyles, type RendererOptions } from '@neurapress/lib/markdown'
+import { type CodeThemeId } from '@neurapress/config/code-themes'
+import { useToast } from '@neurapress/components/ui/use-toast'
+import { initializeMermaid } from '@neurapress/lib/markdown/mermaid-utils'
interface UsePreviewContentProps {
value: string
diff --git a/dashboard/vendor/neurapress/src/components/editor/hooks/useWordStats.ts b/dashboard/vendor/neurapress/src/components/editor/hooks/useWordStats.ts
index 32b131b..fe139fe 100644
--- a/dashboard/vendor/neurapress/src/components/editor/hooks/useWordStats.ts
+++ b/dashboard/vendor/neurapress/src/components/editor/hooks/useWordStats.ts
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react'
-import { convertToWechat } from '@/lib/markdown'
+import { convertToWechat } from '@neurapress/lib/markdown'
// 计算阅读时间(假设每分钟阅读300字)
const calculateReadingTime = (text: string): string => {
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/XiaohongshuMarkdownEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/XiaohongshuMarkdownEditor.tsx
index 05f2793..23f9f6f 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/XiaohongshuMarkdownEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/XiaohongshuMarkdownEditor.tsx
@@ -1,7 +1,7 @@
'use client'
import { useRef, useEffect } from 'react'
-import { TooltipProvider } from '@/components/ui/tooltip'
+import { TooltipProvider } from '@neurapress/components/ui/tooltip'
import { XiaohongshuToolbar } from './components/XiaohongshuToolbar'
import { XiaohongshuEditor } from './components/XiaohongshuEditor'
import { XiaohongshuPreview } from './components/XiaohongshuPreview'
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuEditor.tsx b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuEditor.tsx
index 852004a..9a71a7e 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuEditor.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuEditor.tsx
@@ -1,6 +1,6 @@
'use client'
-import { Textarea } from '@/components/ui/textarea'
+import { Textarea } from '@neurapress/components/ui/textarea'
import { XiaohongshuMarkdownToolbar } from './XiaohongshuMarkdownToolbar'
interface XiaohongshuEditorProps {
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuMarkdownToolbar.tsx b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuMarkdownToolbar.tsx
index 420bd7b..ec4a46a 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuMarkdownToolbar.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuMarkdownToolbar.tsx
@@ -1,9 +1,9 @@
'use client'
import React from 'react'
-import { Button } from '@/components/ui/button'
-import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'
-import { Separator } from '@/components/ui/separator'
+import { Button } from '@neurapress/components/ui/button'
+import { Tooltip, TooltipContent, TooltipTrigger } from '@neurapress/components/ui/tooltip'
+import { Separator } from '@neurapress/components/ui/separator'
import {
Bold,
Italic,
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuPreview.tsx b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuPreview.tsx
index edbcaa2..077640f 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuPreview.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuPreview.tsx
@@ -1,7 +1,7 @@
'use client'
import { ZoomIn, ZoomOut, Maximize2, Minimize2, ChevronLeft, ChevronRight } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '@neurapress/lib/utils'
import { xiaohongshuTemplates, type XiaohongshuTemplateId, type PageMode, type PageNumberPosition } from '../constants'
interface XiaohongshuPreviewProps {
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuToolbar.tsx b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuToolbar.tsx
index b959c65..0665ce6 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuToolbar.tsx
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/components/XiaohongshuToolbar.tsx
@@ -1,11 +1,11 @@
'use client'
import { Save, Copy, Palette, Image as ImageIcon, Settings, FileText } from 'lucide-react'
-import { Button } from '@/components/ui/button'
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'
-import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
-import { Label } from '@/components/ui/label'
-import { Logo } from '@/components/icons/Logo'
+import { Button } from '@neurapress/components/ui/button'
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@neurapress/components/ui/select'
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@neurapress/components/ui/dialog'
+import { Label } from '@neurapress/components/ui/label'
+import { Logo } from '@neurapress/components/icons/Logo'
import Link from 'next/link'
import {
xiaohongshuTemplates,
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useImageGeneration.ts b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useImageGeneration.ts
index b09b29f..37474cc 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useImageGeneration.ts
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useImageGeneration.ts
@@ -1,7 +1,7 @@
import { useState, useCallback } from 'react'
import html2canvas from 'html2canvas'
import JSZip from 'jszip'
-import { useToast } from '@/components/ui/use-toast'
+import { useToast } from '@neurapress/components/ui/use-toast'
import type { PageMode } from '../constants'
export function useImageGeneration() {
diff --git a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useXiaohongshuEditor.ts b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useXiaohongshuEditor.ts
index 9120503..4c6efd8 100644
--- a/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useXiaohongshuEditor.ts
+++ b/dashboard/vendor/neurapress/src/components/editor/xiaohongshu/hooks/useXiaohongshuEditor.ts
@@ -1,6 +1,6 @@
import { useState, useEffect, useCallback } from 'react'
import { marked } from 'marked'
-import { useToast } from '@/components/ui/use-toast'
+import { useToast } from '@neurapress/components/ui/use-toast'
import { defaultMarkdown, STORAGE_KEYS, type XiaohongshuTemplateId } from '../constants'
export function useXiaohongshuEditor() {
diff --git a/dashboard/vendor/neurapress/src/components/nav/MainNav.tsx b/dashboard/vendor/neurapress/src/components/nav/MainNav.tsx
index 2e8c264..88b8e2d 100644
--- a/dashboard/vendor/neurapress/src/components/nav/MainNav.tsx
+++ b/dashboard/vendor/neurapress/src/components/nav/MainNav.tsx
@@ -2,11 +2,11 @@
import Link from 'next/link'
import { usePathname } from 'next/navigation'
-import { cn } from '@/lib/utils'
-import { ThemeToggle } from '@/components/theme-toggle'
-import { Logo } from '@/components/icons/Logo'
+import { cn } from '@neurapress/lib/utils'
+import { ThemeToggle } from '@neurapress/components/theme-toggle'
+import { Logo } from '@neurapress/components/icons/Logo'
import { Github } from 'lucide-react'
-import { Button } from '@/components/ui/button'
+import { Button } from '@neurapress/components/ui/button'
const navigation = [
{ name: '微信公众号', href: '/wechat' },
diff --git a/dashboard/vendor/neurapress/src/components/template/TemplateManager.tsx b/dashboard/vendor/neurapress/src/components/template/TemplateManager.tsx
index dee06f9..67b07cf 100644
--- a/dashboard/vendor/neurapress/src/components/template/TemplateManager.tsx
+++ b/dashboard/vendor/neurapress/src/components/template/TemplateManager.tsx
@@ -1,16 +1,16 @@
'use client'
import { useState } from 'react'
-import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
-import { Button } from '@/components/ui/button'
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@neurapress/components/ui/dialog'
+import { Button } from '@neurapress/components/ui/button'
import { Settings2, Download, Upload, Star, Plus } from 'lucide-react'
-import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
-import { Input } from '@/components/ui/input'
-import { Label } from '@/components/ui/label'
-import { Textarea } from '@/components/ui/textarea'
-import { templates as defaultTemplates, type Template } from '@/config/wechat-templates'
-import { useLocalStorage } from '@/hooks/use-local-storage'
-import { cn } from '@/lib/utils'
+import { Tabs, TabsContent, TabsList, TabsTrigger } from '@neurapress/components/ui/tabs'
+import { Input } from '@neurapress/components/ui/input'
+import { Label } from '@neurapress/components/ui/label'
+import { Textarea } from '@neurapress/components/ui/textarea'
+import { templates as defaultTemplates, type Template } from '@neurapress/config/wechat-templates'
+import { useLocalStorage } from '@neurapress/hooks/use-local-storage'
+import { cn } from '@neurapress/lib/utils'
interface TemplateManagerProps {
onTemplateChange: () => void
diff --git a/dashboard/vendor/neurapress/src/components/template/WechatStylePicker.tsx b/dashboard/vendor/neurapress/src/components/template/WechatStylePicker.tsx
index 620e014..f6b9abf 100644
--- a/dashboard/vendor/neurapress/src/components/template/WechatStylePicker.tsx
+++ b/dashboard/vendor/neurapress/src/components/template/WechatStylePicker.tsx
@@ -2,16 +2,16 @@
import * as React from 'react'
import { Check } from 'lucide-react'
-import { cn } from '@/lib/utils'
+import { cn } from '@neurapress/lib/utils'
import {
Dialog,
DialogContent,
DialogHeader,
DialogTitle,
DialogTrigger,
-} from "@/components/ui/dialog"
-import { templates } from '@/config/wechat-templates'
-import { Button } from "@/components/ui/button"
+} from "@neurapress/components/ui/dialog"
+import { templates } from '@neurapress/config/wechat-templates'
+import { Button } from "@neurapress/components/ui/button"
interface WechatStylePickerProps {
value?: string
diff --git a/dashboard/vendor/neurapress/src/components/template/WechatTemplateSelector.tsx b/dashboard/vendor/neurapress/src/components/template/WechatTemplateSelector.tsx
index a108eb4..7706e39 100644
--- a/dashboard/vendor/neurapress/src/components/template/WechatTemplateSelector.tsx
+++ b/dashboard/vendor/neurapress/src/components/template/WechatTemplateSelector.tsx
@@ -2,8 +2,8 @@
import { Check, ChevronDown } from "lucide-react"
import * as SelectPrimitive from '@radix-ui/react-select'
-import { cn } from "@/lib/utils"
-import { templates } from '@/config/wechat-templates'
+import { cn } from "@neurapress/lib/utils"
+import { templates } from '@neurapress/config/wechat-templates'
export function WechatTemplateSelector({
onSelectAction
diff --git a/dashboard/vendor/neurapress/src/components/theme-toggle.tsx b/dashboard/vendor/neurapress/src/components/theme-toggle.tsx
index 7faed24..680e9b1 100644
--- a/dashboard/vendor/neurapress/src/components/theme-toggle.tsx
+++ b/dashboard/vendor/neurapress/src/components/theme-toggle.tsx
@@ -4,13 +4,13 @@ import * as React from "react"
import { Moon, Sun } from "lucide-react"
import { useTheme } from "next-themes"
-import { Button } from "@/components/ui/button"
+import { Button } from "@neurapress/components/ui/button"
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu"
+} from "@neurapress/components/ui/dropdown-menu"
export function ThemeToggle() {
const { setTheme } = useTheme()
diff --git a/dashboard/vendor/neurapress/src/components/theme/ThemeToggle.tsx b/dashboard/vendor/neurapress/src/components/theme/ThemeToggle.tsx
index 677a83c..a040cfd 100644
--- a/dashboard/vendor/neurapress/src/components/theme/ThemeToggle.tsx
+++ b/dashboard/vendor/neurapress/src/components/theme/ThemeToggle.tsx
@@ -3,7 +3,7 @@
import * as React from "react"
import { Moon, Sun } from "lucide-react"
import { useTheme } from "next-themes"
-import { Button } from "@/components/ui/button"
+import { Button } from "@neurapress/components/ui/button"
export function ThemeToggle() {
const { theme, setTheme } = useTheme()
diff --git a/dashboard/vendor/neurapress/src/components/ui/AdBanner.tsx b/dashboard/vendor/neurapress/src/components/ui/AdBanner.tsx
index fe460d9..9694468 100644
--- a/dashboard/vendor/neurapress/src/components/ui/AdBanner.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/AdBanner.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import { X } from "lucide-react"
import { Button } from "./button"
import { Card } from "./card"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
interface AdBannerProps {
id?: string // 广告ID,用于本地存储
diff --git a/dashboard/vendor/neurapress/src/components/ui/alert-dialog.tsx b/dashboard/vendor/neurapress/src/components/ui/alert-dialog.tsx
index 02de05b..642860f 100644
--- a/dashboard/vendor/neurapress/src/components/ui/alert-dialog.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/alert-dialog.tsx
@@ -3,8 +3,8 @@
import * as React from "react"
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"
-import { cn } from "@/lib/utils"
-import { buttonVariants } from "@/components/ui/button"
+import { cn } from "@neurapress/lib/utils"
+import { buttonVariants } from "@neurapress/components/ui/button"
const AlertDialog = AlertDialogPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/button.tsx b/dashboard/vendor/neurapress/src/components/ui/button.tsx
index f3ab3af..ee1e8b9 100644
--- a/dashboard/vendor/neurapress/src/components/ui/button.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/button.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import { Slot } from "@radix-ui/react-slot"
import { cva, type VariantProps } from "class-variance-authority"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const buttonVariants = cva(
"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
diff --git a/dashboard/vendor/neurapress/src/components/ui/card.tsx b/dashboard/vendor/neurapress/src/components/ui/card.tsx
index e855d73..aca5014 100644
--- a/dashboard/vendor/neurapress/src/components/ui/card.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/card.tsx
@@ -1,6 +1,6 @@
import * as React from "react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Card = React.forwardRef<
HTMLDivElement,
diff --git a/dashboard/vendor/neurapress/src/components/ui/dialog.tsx b/dashboard/vendor/neurapress/src/components/ui/dialog.tsx
index bda2dec..c224354 100644
--- a/dashboard/vendor/neurapress/src/components/ui/dialog.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/dialog.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import * as DialogPrimitive from "@radix-ui/react-dialog"
import { X } from "lucide-react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Dialog = DialogPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/dropdown-menu.tsx b/dashboard/vendor/neurapress/src/components/ui/dropdown-menu.tsx
index a0a8cdb..5f94d5f 100644
--- a/dashboard/vendor/neurapress/src/components/ui/dropdown-menu.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/dropdown-menu.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
import { Check, ChevronRight, Circle } from "lucide-react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const DropdownMenu = DropdownMenuPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/input.tsx b/dashboard/vendor/neurapress/src/components/ui/input.tsx
index 5ccb2a6..4ef1b66 100644
--- a/dashboard/vendor/neurapress/src/components/ui/input.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/input.tsx
@@ -1,6 +1,6 @@
import * as React from "react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
export interface InputProps
extends React.InputHTMLAttributes {}
diff --git a/dashboard/vendor/neurapress/src/components/ui/label.tsx b/dashboard/vendor/neurapress/src/components/ui/label.tsx
index 0f258cf..607e69a 100644
--- a/dashboard/vendor/neurapress/src/components/ui/label.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/label.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import * as LabelPrimitive from "@radix-ui/react-label"
import { cva, type VariantProps } from "class-variance-authority"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const labelVariants = cva(
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
diff --git a/dashboard/vendor/neurapress/src/components/ui/scroll-area.tsx b/dashboard/vendor/neurapress/src/components/ui/scroll-area.tsx
index c9e741f..12074d1 100644
--- a/dashboard/vendor/neurapress/src/components/ui/scroll-area.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/scroll-area.tsx
@@ -3,7 +3,7 @@
import * as React from "react"
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const ScrollArea = React.forwardRef<
React.ElementRef,
diff --git a/dashboard/vendor/neurapress/src/components/ui/select.tsx b/dashboard/vendor/neurapress/src/components/ui/select.tsx
index f957126..025643d 100644
--- a/dashboard/vendor/neurapress/src/components/ui/select.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/select.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import * as SelectPrimitive from "@radix-ui/react-select"
import { Check, ChevronDown, ChevronUp } from "lucide-react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Select = SelectPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/separator.tsx b/dashboard/vendor/neurapress/src/components/ui/separator.tsx
index d97cf37..ab541be 100644
--- a/dashboard/vendor/neurapress/src/components/ui/separator.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/separator.tsx
@@ -3,7 +3,7 @@
import * as React from "react"
import * as SeparatorPrimitive from "@radix-ui/react-separator"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Separator = React.forwardRef<
React.ElementRef,
diff --git a/dashboard/vendor/neurapress/src/components/ui/sheet.tsx b/dashboard/vendor/neurapress/src/components/ui/sheet.tsx
index 46d45fb..27b732d 100644
--- a/dashboard/vendor/neurapress/src/components/ui/sheet.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/sheet.tsx
@@ -5,7 +5,7 @@ import * as SheetPrimitive from "@radix-ui/react-dialog"
import { cva, type VariantProps } from "class-variance-authority"
import { X } from "lucide-react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Sheet = SheetPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/tabs.tsx b/dashboard/vendor/neurapress/src/components/ui/tabs.tsx
index 7affb7c..d89d264 100644
--- a/dashboard/vendor/neurapress/src/components/ui/tabs.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/tabs.tsx
@@ -2,7 +2,7 @@
import * as React from "react"
import * as TabsPrimitive from "@radix-ui/react-tabs"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const Tabs = TabsPrimitive.Root
diff --git a/dashboard/vendor/neurapress/src/components/ui/textarea.tsx b/dashboard/vendor/neurapress/src/components/ui/textarea.tsx
index 01ca99e..8c7d2f0 100644
--- a/dashboard/vendor/neurapress/src/components/ui/textarea.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/textarea.tsx
@@ -1,6 +1,6 @@
import * as React from "react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
export interface TextareaProps
extends React.TextareaHTMLAttributes {}
diff --git a/dashboard/vendor/neurapress/src/components/ui/toast.tsx b/dashboard/vendor/neurapress/src/components/ui/toast.tsx
index 5984854..9d5c2d4 100644
--- a/dashboard/vendor/neurapress/src/components/ui/toast.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/toast.tsx
@@ -5,7 +5,7 @@ import * as ToastPrimitives from "@radix-ui/react-toast"
import { cva, type VariantProps } from "class-variance-authority"
import { X } from "lucide-react"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const ToastProvider = ToastPrimitives.Provider
diff --git a/dashboard/vendor/neurapress/src/components/ui/toaster.tsx b/dashboard/vendor/neurapress/src/components/ui/toaster.tsx
index adf09c8..113e8f2 100644
--- a/dashboard/vendor/neurapress/src/components/ui/toaster.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/toaster.tsx
@@ -7,8 +7,8 @@ import {
ToastProvider,
ToastTitle,
ToastViewport,
-} from "@/components/ui/toast"
-import { useToast } from "@/components/ui/use-toast"
+} from "@neurapress/components/ui/toast"
+import { useToast } from "@neurapress/components/ui/use-toast"
export function Toaster() {
const { toasts } = useToast()
diff --git a/dashboard/vendor/neurapress/src/components/ui/toggle.tsx b/dashboard/vendor/neurapress/src/components/ui/toggle.tsx
index 26bd1f3..796609b 100644
--- a/dashboard/vendor/neurapress/src/components/ui/toggle.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/toggle.tsx
@@ -4,7 +4,7 @@ import * as React from "react"
import * as TogglePrimitive from "@radix-ui/react-toggle"
import { cva, type VariantProps } from "class-variance-authority"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const toggleVariants = cva(
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
diff --git a/dashboard/vendor/neurapress/src/components/ui/tooltip.tsx b/dashboard/vendor/neurapress/src/components/ui/tooltip.tsx
index 7398d69..0bf0dcb 100644
--- a/dashboard/vendor/neurapress/src/components/ui/tooltip.tsx
+++ b/dashboard/vendor/neurapress/src/components/ui/tooltip.tsx
@@ -3,7 +3,7 @@
import * as React from "react"
import * as TooltipPrimitive from "@radix-ui/react-tooltip"
-import { cn } from "@/lib/utils"
+import { cn } from "@neurapress/lib/utils"
const TooltipProvider = TooltipPrimitive.Provider
diff --git a/dashboard/vendor/neurapress/src/components/ui/use-toast.ts b/dashboard/vendor/neurapress/src/components/ui/use-toast.ts
index 6634612..2bfa74b 100644
--- a/dashboard/vendor/neurapress/src/components/ui/use-toast.ts
+++ b/dashboard/vendor/neurapress/src/components/ui/use-toast.ts
@@ -5,7 +5,7 @@ import * as React from "react"
import type {
ToastActionElement,
ToastProps,
-} from "@/components/ui/toast"
+} from "@neurapress/components/ui/toast"
const TOAST_LIMIT = 1
const TOAST_REMOVE_DELAY = 1000000
diff --git a/dashboard/vendor/neurapress/src/config/wechat-templates.ts b/dashboard/vendor/neurapress/src/config/wechat-templates.ts
index 67469fa..87da90a 100644
--- a/dashboard/vendor/neurapress/src/config/wechat-templates.ts
+++ b/dashboard/vendor/neurapress/src/config/wechat-templates.ts
@@ -1,4 +1,4 @@
-import type { RendererOptions } from '@/lib/markdown'
+import type { RendererOptions } from '@neurapress/lib/markdown'
export interface Template {
id: string
diff --git a/dashboard/vendor/neurapress/src/index.ts b/dashboard/vendor/neurapress/src/index.ts
index f12c19e..f11d5f5 100644
--- a/dashboard/vendor/neurapress/src/index.ts
+++ b/dashboard/vendor/neurapress/src/index.ts
@@ -1,8 +1,13 @@
+"use client"
+
import { convertToWechat, defaultOptions } from './lib/markdown'
import { getExampleContent } from './lib/utils/loadExampleContent'
+import WechatEditor from './components/editor/WechatEditor'
export const neurapressSample = getExampleContent()
export function renderMarkdown(markdown: string): string {
return convertToWechat(markdown, defaultOptions)
}
+
+export const Editor = WechatEditor
diff --git a/dashboard/vendor/neurapress/src/lib/markdown/code-highlight.ts b/dashboard/vendor/neurapress/src/lib/markdown/code-highlight.ts
index a447998..e3f29ec 100644
--- a/dashboard/vendor/neurapress/src/lib/markdown/code-highlight.ts
+++ b/dashboard/vendor/neurapress/src/lib/markdown/code-highlight.ts
@@ -16,7 +16,7 @@ import 'prismjs/components/prism-rust'
import 'prismjs/components/prism-sql'
import 'prismjs/components/prism-docker'
import 'prismjs/components/prism-nginx'
-import type { CodeThemeId } from '@/config/code-themes'
+import type { CodeThemeId } from '@neurapress/config/code-themes'
import { getTokenStyles } from './styles'
// Helper function to recursively process tokens
diff --git a/dashboard/vendor/neurapress/src/lib/markdown/styles.ts b/dashboard/vendor/neurapress/src/lib/markdown/styles.ts
index 9b93b7a..826e26a 100644
--- a/dashboard/vendor/neurapress/src/lib/markdown/styles.ts
+++ b/dashboard/vendor/neurapress/src/lib/markdown/styles.ts
@@ -1,5 +1,5 @@
import type { StyleOptions, RendererOptions } from './types'
-import { codeThemes, type CodeThemeId } from '@/config/code-themes'
+import { codeThemes, type CodeThemeId } from '@neurapress/config/code-themes'
// 将样式对象转换为 CSS 字符串
export function cssPropertiesToString(style: StyleOptions = {}): string {
diff --git a/dashboard/vendor/neurapress/src/lib/markdown/types.ts b/dashboard/vendor/neurapress/src/lib/markdown/types.ts
index ee2dac3..aa378e4 100644
--- a/dashboard/vendor/neurapress/src/lib/markdown/types.ts
+++ b/dashboard/vendor/neurapress/src/lib/markdown/types.ts
@@ -1,5 +1,5 @@
import type { CSSProperties } from 'react'
-import type { CodeThemeId } from '@/config/code-themes'
+import type { CodeThemeId } from '@neurapress/config/code-themes'
export interface StyleOptions {
// Layout
diff --git a/dashboard/yarn.lock b/dashboard/yarn.lock
index fcf666b..ce782b2 100644
--- a/dashboard/yarn.lock
+++ b/dashboard/yarn.lock
@@ -2229,12 +2229,14 @@ __metadata:
html2canvas: "npm:^1.4.1"
js-yaml: "npm:^4.1.0"
jsdom: "npm:^24.0.0"
+ katex: "npm:^0.16.27"
lucide-react: "npm:^0.319.0"
marked: "npm:^16.1.2"
next: "npm:^16.0.9"
pdfjs-dist: "npm:^4.2.67"
postcss: "npm:^8.4.32"
prettier: "npm:^3.3.3"
+ prismjs: "npm:^1.30.0"
prop-types: "npm:^15.8.1"
qr.js: "npm:0.0.0"
qrcode: "npm:^1.5.4"
@@ -2293,6 +2295,13 @@ __metadata:
languageName: node
linkType: hard
+"commander@npm:^8.3.0":
+ version: 8.3.0
+ resolution: "commander@npm:8.3.0"
+ checksum: 10/6b7b5d334483ce24bd73c5dac2eab901a7dbb25fd983ea24a1eeac6e7166bb1967f641546e8abf1920afbde86a45fbfe5812fbc69d0dc451bb45ca416a12a3a3
+ languageName: node
+ linkType: hard
+
"concat-map@npm:0.0.1":
version: 0.0.1
resolution: "concat-map@npm:0.0.1"
@@ -4407,6 +4416,17 @@ __metadata:
languageName: node
linkType: hard
+"katex@npm:^0.16.27":
+ version: 0.16.27
+ resolution: "katex@npm:0.16.27"
+ dependencies:
+ commander: "npm:^8.3.0"
+ bin:
+ katex: cli.js
+ checksum: 10/7666ae11c6c1238626bffaf1a526af6ff679114d62293bf2f0e29f8a34d8e961c0edcb686c5b628158ec92a143b4bef5d83539c81b29a63c7dcf0bdb4544eec9
+ languageName: node
+ linkType: hard
+
"keyv@npm:^4.5.3":
version: 4.5.4
resolution: "keyv@npm:4.5.4"
@@ -5458,6 +5478,13 @@ __metadata:
languageName: node
linkType: hard
+"prismjs@npm:^1.30.0":
+ version: 1.30.0
+ resolution: "prismjs@npm:1.30.0"
+ checksum: 10/6b48a2439a82e5c6882f48ebc1564c3890e16463ba17ac10c3ad4f62d98dea5b5c915b172b63b83023a70ad4f5d7be3e8a60304420db34a161fae69dd4e3e2da
+ languageName: node
+ linkType: hard
+
"proc-log@npm:^5.0.0":
version: 5.0.0
resolution: "proc-log@npm:5.0.0"