change to next

This commit is contained in:
xiongxiao
2026-01-15 12:32:07 +08:00
parent 62b5c5841a
commit b2f315a459
122 changed files with 9396 additions and 9354 deletions

5
.gitignore vendored
View File

@@ -1 +1,6 @@
node_modules node_modules
.pnpm-store
dist
.env*
!.env*example
.next

1
backup/web/.env.example Normal file
View File

@@ -0,0 +1 @@
VITE_API_URL='http://localhost:4005'

View File

@@ -1,11 +1,11 @@
{ {
"$schema": "https://ui.shadcn.com/schema.json", "$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york", "style": "new-york",
"rsc": true, "rsc": false,
"tsx": true, "tsx": true,
"tailwind": { "tailwind": {
"config": "", "config": "",
"css": "app/globals.css", "css": "src/styles/global.css",
"baseColor": "neutral", "baseColor": "neutral",
"cssVariables": true, "cssVariables": true,
"prefix": "" "prefix": ""

View File

@@ -3,7 +3,7 @@
"name": "kevisual", "name": "kevisual",
"share": "public" "share": "public"
}, },
"registry": "https://kevisual.cn/root/ai/kevisual/next/next-simple-template", "registry": "https://kevisual.cn/root/ai/kevisual/frontend/simple-astro-template",
"clone": { "clone": {
".": { ".": {
"enabled": true "enabled": true
@@ -14,12 +14,12 @@
"files": [ "files": [
"**/*" "**/*"
], ],
"ignore": [
"dist",
".next"
],
"registry": "" "registry": ""
} }
], ],
"sync": {} "sync": {
".gitignore": {
"url": "/gitignore.txt"
}
}
} }

85
backup/web/package.json Normal file
View File

@@ -0,0 +1,85 @@
{
"name": "@kevisual/router-studio",
"version": "0.0.2",
"description": "",
"main": "index.js",
"basename": "/root/router-studio",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"pub": "envision deploy ./dist -k router-studio -v 0.0.2 -u -y yes",
"slide:dev": "slidev --open slides/index.md",
"slide:build": "slidev build slides/index.md --base /root/router-studio-slide/",
"slide:pub": "envision deploy ./slides/dist -k router-studio-slide -v 0.0.2 -u -y yes",
"ui": "pnpm dlx shadcn@latest add "
},
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"type": "module",
"dependencies": {
"@astrojs/mdx": "^4.3.13",
"@astrojs/react": "^4.4.2",
"@astrojs/sitemap": "^3.6.0",
"@astrojs/vue": "^5.1.3",
"@kevisual/cache": "^0.0.5",
"@kevisual/context": "^0.0.4",
"@kevisual/query": "^0.0.35",
"@kevisual/query-login": "^0.0.7",
"@kevisual/registry": "^0.0.1",
"@kevisual/router": "^0.0.52",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/vite": "^4.1.18",
"@tanstack/react-table": "^8.21.3",
"@uiw/react-md-editor": "^4.0.11",
"antd": "^6.1.3",
"astro": "^5.16.6",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"dayjs": "^1.11.19",
"es-toolkit": "^1.43.0",
"github-markdown-css": "^5.8.1",
"handsontable": "^16.2.0",
"highlight.js": "^11.11.1",
"lucide-react": "^0.562.0",
"marked": "^17.0.1",
"marked-highlight": "^2.2.3",
"nanoid": "^5.1.6",
"papaparse": "^5.5.3",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-hook-form": "^7.70.0",
"react-resizable-panels": "^4.2.1",
"react-toastify": "^11.0.5",
"tailwind-merge": "^3.4.0",
"vue": "^3.5.26",
"zustand": "^5.0.9"
},
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@kevisual/api": "^0.0.17",
"@kevisual/types": "^0.0.10",
"@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3",
"baseline-browser-mapping": "^2.9.11",
"dotenv": "^17.2.3",
"tailwindcss": "^4.1.18",
"tw-animate-css": "^1.4.0"
},
"packageManager": "pnpm@10.27.0",
"onlyBuiltDependencies": [
"@tailwindcss/oxide",
"esbuild",
"sharp"
]
}

8346
backup/web/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,11 @@
import { toast, ToastContainer, Slide } from 'react-toastify'; import { toast, ToastContainer, Slide } from 'react-toastify';
import { useStudioStore } from './store.ts'; import { useStudioStore } from './store.js';
import { use, useEffect, useState } from 'react'; import { use, useEffect, useState } from 'react';
import { MonitorPlay, Play, PanelLeft, PanelLeftClose, PanelRight, PanelRightClose, Filter, FilterX, Search, X } from 'lucide-react'; import { MonitorPlay, Play, PanelLeft, PanelLeftClose, PanelRight, PanelRightClose, Filter, FilterX, Search, X } from 'lucide-react';
import { Panel, Group } from 'react-resizable-panels' import { Panel, Group } from 'react-resizable-panels'
import { ViewList } from '../view/list.tsx'; import { ViewList } from '../view/list.js';
import { useShallow } from 'zustand/shallow'; import { useShallow } from 'zustand/shallow';
import { Chat } from '../chat/index.tsx'; import { Chat } from '../chat/index.js';
import { Input } from '@/components/ui/input.tsx'; import { Input } from '@/components/ui/input.tsx';
export const AppProvider = () => { export const AppProvider = () => {
const { showLeftPanel, showRightPanel } = useStudioStore(useShallow((state) => ({ const { showLeftPanel, showRightPanel } = useStudioStore(useShallow((state) => ({

View File

@@ -1,5 +1,5 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useStudioStore } from '../studio/store.ts'; import { useStudioStore } from '../studio/store.js';
import { Search, RotateCw, Plus, MoreHorizontal, Layout, Edit2, Trash2 } from "lucide-react"; import { Search, RotateCw, Plus, MoreHorizontal, Layout, Edit2, Trash2 } from "lucide-react";
import { Input } from "@/components/ui/input"; import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as CheckboxPrimitive from "@radix-ui/react-checkbox" import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
import { CheckIcon } from "lucide-react" import { CheckIcon } from "lucide-react"

View File

@@ -0,0 +1,42 @@
import * as React from "react"
import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button"
const Dialog = ({ open, onOpenChange, children }: { open: boolean; onOpenChange: (open: boolean) => void; children: React.ReactNode }) => {
if (!open) return null
return (
<div className="fixed inset-0 z-50 flex items-center justify-center">
<div className="fixed inset-0 bg-black/50" onClick={() => onOpenChange(false)} />
<div className="relative z-50 w-full max-w-2xl max-h-[90vh] overflow-auto bg-white rounded-lg shadow-lg p-6">
{children}
</div>
</div>
)
}
const DialogHeader = ({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
<div className={cn("flex flex-col space-y-1.5 text-center sm:text-left mb-4", className)} {...props}>
{children}
</div>
)
const DialogTitle = ({ className, children, ...props }: React.HTMLAttributes<HTMLHeadingElement>) => (
<h2 className={cn("text-lg font-semibold leading-none tracking-tight", className)} {...props}>
{children}
</h2>
)
const DialogContent = ({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
<div className={cn("", className)} {...props}>
{children}
</div>
)
const DialogFooter = ({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
<div className={cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-4", className)} {...props}>
{children}
</div>
)
export { Dialog, DialogHeader, DialogTitle, DialogContent, DialogFooter }

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react" import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as LabelPrimitive from "@radix-ui/react-label" import * as LabelPrimitive from "@radix-ui/react-label"

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as PopoverPrimitive from "@radix-ui/react-popover" import * as PopoverPrimitive from "@radix-ui/react-popover"

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as TabsPrimitive from "@radix-ui/react-tabs" import * as TabsPrimitive from "@radix-ui/react-tabs"

View File

@@ -1,5 +1,3 @@
"use client"
import * as React from "react" import * as React from "react"
import * as TooltipPrimitive from "@radix-ui/react-tooltip" import * as TooltipPrimitive from "@radix-ui/react-tooltip"

View File

@@ -1,5 +1,5 @@
import { app } from '@/app.ts'; import { app } from '@/app.ts';
import './routes/left-panel.ts'; import './routes/left-panel.js';
export { app }; export { app };

View File

@@ -0,0 +1,13 @@
// @ts-ignore
export const basename = BASE_NAME;
console.log(basename);
export const wrapBasename = (path: string) => {
const hasEnd = path.endsWith('/')
if (basename) {
return `${basename}${path}` + (hasEnd ? '' : '/');
} else {
return path;
}
}

View File

@@ -0,0 +1,19 @@
import { QueryClient } from '@kevisual/query'
const getUrl = () => {
const host = window.location.host
const isKevisual = host.includes('kevisual');
if (isKevisual) {
return '/api/router'
}
return '/client/router'
}
export const query = new QueryClient({
url: '/api/router',
});
export const queryClient = new QueryClient({
url: getUrl(),
});

18
backup/web/tsconfig.json Normal file
View File

@@ -0,0 +1,18 @@
{
"extends": "@kevisual/types/json/frontend.json",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": [
"./src/*"
],
"@/agent": [
"./src/agent"
]
},
},
"include": [
"src/**/*",
"agent/**/*"
],
}

21
pnpm-lock.yaml generated
View File

@@ -177,6 +177,9 @@ importers:
web-v2: web-v2:
dependencies: dependencies:
'@kevisual/api':
specifier: ^0.0.17
version: 0.0.17
'@kevisual/context': '@kevisual/context':
specifier: ^0.0.4 specifier: ^0.0.4
version: 0.0.4 version: 0.0.4
@@ -216,6 +219,9 @@ importers:
'@radix-ui/react-tooltip': '@radix-ui/react-tooltip':
specifier: ^1.2.8 specifier: ^1.2.8
version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@tanstack/react-table':
specifier: ^8.21.3
version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
antd: antd:
specifier: ^6.2.0 specifier: ^6.2.0
version: 6.2.0(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) version: 6.2.0(moment@2.30.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -249,6 +255,12 @@ importers:
react-dom: react-dom:
specifier: 19.2.3 specifier: 19.2.3
version: 19.2.3(react@19.2.3) version: 19.2.3(react@19.2.3)
react-resizable-panels:
specifier: ^4.4.1
version: 4.4.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
react-toastify:
specifier: ^11.0.5
version: 11.0.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
sonner: sonner:
specifier: ^2.0.7 specifier: ^2.0.7
version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) version: 2.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
@@ -263,8 +275,8 @@ importers:
version: 5.0.10(@types/react@19.2.8)(react@19.2.3) version: 5.0.10(@types/react@19.2.8)(react@19.2.3)
devDependencies: devDependencies:
'@kevisual/types': '@kevisual/types':
specifier: ^0.0.10 specifier: ^0.0.11
version: 0.0.10 version: 0.0.11
'@tailwindcss/postcss': '@tailwindcss/postcss':
specifier: ^4 specifier: ^4
version: 4.1.18 version: 4.1.18
@@ -907,6 +919,9 @@ packages:
'@kevisual/types@0.0.10': '@kevisual/types@0.0.10':
resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==}
'@kevisual/types@0.0.11':
resolution: {integrity: sha512-idNLDTEKVdNXZHFQq8PTN62nflh94kvGtx+v8YDcMxt0Zo+HWVZTFElm+dMQxAs/vn4wo8F2r3VwzWNX/vcqwQ==}
'@mdx-js/mdx@3.1.1': '@mdx-js/mdx@3.1.1':
resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
@@ -4792,6 +4807,8 @@ snapshots:
'@kevisual/types@0.0.10': {} '@kevisual/types@0.0.10': {}
'@kevisual/types@0.0.11': {}
'@mdx-js/mdx@3.1.1': '@mdx-js/mdx@3.1.1':
dependencies: dependencies:
'@types/estree': 1.0.8 '@types/estree': 1.0.8

View File

@@ -1 +0,0 @@
NODE_ENV=

View File

@@ -1,52 +0,0 @@
{
"name": "@kevisual/next-simple-template",
"version": "0.1.0",
"basename": "/root/next-simple-template",
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"pub": "ev deploy ./dist -k next-simple-template -v 0.1.0 -u -y y",
"ui": "pnpm dlx shadcn@latest add "
},
"dependencies": {
"@kevisual/context": "^0.0.4",
"@kevisual/query": "^0.0.35",
"@kevisual/router": "^0.0.53",
"@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-tooltip": "^1.2.8",
"antd": "^6.2.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"dotenv": "^17.2.3",
"es-toolkit": "^1.43.0",
"idb-keyval": "^6.2.2",
"lucide-react": "^0.562.0",
"next": "16.1.2",
"react": "19.2.3",
"react-dom": "19.2.3",
"sonner": "^2.0.7",
"tailwind-merge": "^3.4.0",
"valtio": "^2.3.0",
"zustand": "^5.0.10"
},
"devDependencies": {
"@kevisual/types": "^0.0.10",
"@tailwindcss/postcss": "^4",
"@types/node": "^25",
"@types/react": "^19",
"@types/react-dom": "^19",
"tailwindcss": "^4",
"tw-animate-css": "^1.4.0",
"typescript": "^5"
}
}

3018
web-v2/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +0,0 @@
export default function Home() {
return (
<div className="flex min-h-screen items-center justify-center bg-zinc-50 font-sans dark:bg-black">
<main className="flex min-h-screen w-full max-w-3xl flex-col items-center justify-between py-32 px-16 bg-white dark:bg-black sm:items-start">
Light Code
</main>
</div>
);
}

View File

@@ -1,143 +0,0 @@
"use client"
import * as React from "react"
import * as DialogPrimitive from "@radix-ui/react-dialog"
import { XIcon } from "lucide-react"
import { cn } from "@/lib/utils"
function Dialog({
...props
}: React.ComponentProps<typeof DialogPrimitive.Root>) {
return <DialogPrimitive.Root data-slot="dialog" {...props} />
}
function DialogTrigger({
...props
}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
}
function DialogPortal({
...props
}: React.ComponentProps<typeof DialogPrimitive.Portal>) {
return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
}
function DialogClose({
...props
}: React.ComponentProps<typeof DialogPrimitive.Close>) {
return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
}
function DialogOverlay({
className,
...props
}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {
return (
<DialogPrimitive.Overlay
data-slot="dialog-overlay"
className={cn(
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
className
)}
{...props}
/>
)
}
function DialogContent({
className,
children,
showCloseButton = true,
...props
}: React.ComponentProps<typeof DialogPrimitive.Content> & {
showCloseButton?: boolean
}) {
return (
<DialogPortal data-slot="dialog-portal">
<DialogOverlay />
<DialogPrimitive.Content
data-slot="dialog-content"
className={cn(
"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
className
)}
{...props}
>
{children}
{showCloseButton && (
<DialogPrimitive.Close
data-slot="dialog-close"
className="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
>
<XIcon />
<span className="sr-only">Close</span>
</DialogPrimitive.Close>
)}
</DialogPrimitive.Content>
</DialogPortal>
)
}
function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="dialog-header"
className={cn("flex flex-col gap-2 text-center sm:text-left", className)}
{...props}
/>
)
}
function DialogFooter({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="dialog-footer"
className={cn(
"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
className
)}
{...props}
/>
)
}
function DialogTitle({
className,
...props
}: React.ComponentProps<typeof DialogPrimitive.Title>) {
return (
<DialogPrimitive.Title
data-slot="dialog-title"
className={cn("text-lg leading-none font-semibold", className)}
{...props}
/>
)
}
function DialogDescription({
className,
...props
}: React.ComponentProps<typeof DialogPrimitive.Description>) {
return (
<DialogPrimitive.Description
data-slot="dialog-description"
className={cn("text-muted-foreground text-sm", className)}
{...props}
/>
)
}
export {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogOverlay,
DialogPortal,
DialogTitle,
DialogTrigger,
}

View File

@@ -1,18 +0,0 @@
const isDev = process.env.NODE_ENV === "development";
const BASE_NAME = isDev ? '' : '/root/perler-beads';
export const basename = BASE_NAME;
export const wrapBasename = (path: string) => {
const hasEnd = path.endsWith('/')
let _basename = basename;
if (basename) {
_basename = `${basename}${path}`;
} else {
_basename = path;
}
if (isDev) {
return _basename
}
return _basename + '.html';
}

View File

@@ -1,31 +0,0 @@
{
"extends": "@kevisual/types/json/frontend.json",
"compilerOptions": {
"jsx": "react-jsx",
"incremental": true,
"allowImportingTsExtensions": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": [
"./src/*"
]
}
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
".next/dev/types/**/*.ts",
"**/*.mts",
"dist/types/**/*.ts",
"dist/dev/types/**/*.ts"
],
"exclude": [
"node_modules"
]
}

View File

@@ -1 +1,2 @@
VITE_API_URL='http://localhost:4005' NODE_ENV=
API_URL=http://localhost:51515

View File

@@ -1,11 +1,11 @@
{ {
"$schema": "https://ui.shadcn.com/schema.json", "$schema": "https://ui.shadcn.com/schema.json",
"style": "new-york", "style": "new-york",
"rsc": false, "rsc": true,
"tsx": true, "tsx": true,
"tailwind": { "tailwind": {
"config": "", "config": "",
"css": "src/styles/global.css", "css": "app/globals.css",
"baseColor": "neutral", "baseColor": "neutral",
"cssVariables": true, "cssVariables": true,
"prefix": "" "prefix": ""

View File

@@ -3,7 +3,7 @@
"name": "kevisual", "name": "kevisual",
"share": "public" "share": "public"
}, },
"registry": "https://kevisual.cn/root/ai/kevisual/frontend/simple-astro-template", "registry": "https://kevisual.cn/root/ai/kevisual/next/next-simple-template",
"clone": { "clone": {
".": { ".": {
"enabled": true "enabled": true
@@ -14,12 +14,12 @@
"files": [ "files": [
"**/*" "**/*"
], ],
"ignore": [
"dist",
".next"
],
"registry": "" "registry": ""
} }
], ],
"sync": { "sync": {}
".gitignore": {
"url": "/gitignore.txt"
}
}
} }

View File

@@ -1,6 +1,6 @@
/// <reference types="next" /> /// <reference types="next" />
/// <reference types="next/image-types/global" /> /// <reference types="next/image-types/global" />
import "./.next/types/routes.d.ts"; import "./dist/dev/types/routes.d.ts";
// NOTE: This file should not be edited // NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.

View File

@@ -10,6 +10,8 @@ const nextConfig: NextConfig = {
distDir: 'dist', distDir: 'dist',
basePath: basePath, basePath: basePath,
trailingSlash: true, trailingSlash: true,
turbopack: { root: '/workspace' },
transpilePackages: ['@kevisual/api', '@kevisual/router'],
}; };
export default nextConfig; export default nextConfig;

View File

@@ -1,85 +1,56 @@
{ {
"name": "@kevisual/router-studio", "name": "@kevisual/next-simple-template",
"version": "0.0.2", "version": "0.1.0",
"description": "", "basename": "/root/next-simple-template",
"main": "index.js",
"basename": "/root/router-studio",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "next dev",
"build": "astro build", "build": "next build",
"preview": "astro preview", "start": "next start",
"pub": "envision deploy ./dist -k router-studio -v 0.0.2 -u -y yes", "pub": "ev deploy ./dist -k next-simple-template -v 0.1.0 -u -y y",
"slide:dev": "slidev --open slides/index.md",
"slide:build": "slidev build slides/index.md --base /root/router-studio-slide/",
"slide:pub": "envision deploy ./slides/dist -k router-studio-slide -v 0.0.2 -u -y yes",
"ui": "pnpm dlx shadcn@latest add " "ui": "pnpm dlx shadcn@latest add "
}, },
"keywords": [],
"author": "abearxiong <xiongxiao@xiongxiao.me> (https://www.xiongxiao.me)",
"license": "MIT",
"type": "module",
"dependencies": { "dependencies": {
"@astrojs/mdx": "^4.3.13", "@kevisual/api": "^0.0.17",
"@astrojs/react": "^4.4.2",
"@astrojs/sitemap": "^3.6.0",
"@astrojs/vue": "^5.1.3",
"@kevisual/cache": "^0.0.5",
"@kevisual/context": "^0.0.4", "@kevisual/context": "^0.0.4",
"@kevisual/query": "^0.0.35", "@kevisual/query": "^0.0.35",
"@kevisual/query-login": "^0.0.7", "@kevisual/router": "^0.0.53",
"@kevisual/registry": "^0.0.1",
"@kevisual/router": "^0.0.52",
"@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-checkbox": "^1.3.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-label": "^2.1.8", "@radix-ui/react-label": "^2.1.8",
"@radix-ui/react-menubar": "^1.1.16",
"@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-popover": "^1.1.15",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-slot": "^1.2.4",
"@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-tabs": "^1.1.13",
"@radix-ui/react-tooltip": "^1.2.8", "@radix-ui/react-tooltip": "^1.2.8",
"@tailwindcss/vite": "^4.1.18",
"@tanstack/react-table": "^8.21.3", "@tanstack/react-table": "^8.21.3",
"@uiw/react-md-editor": "^4.0.11", "antd": "^6.2.0",
"antd": "^6.1.3",
"astro": "^5.16.6",
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "^1.1.1", "cmdk": "^1.1.1",
"dayjs": "^1.11.19", "dotenv": "^17.2.3",
"es-toolkit": "^1.43.0", "es-toolkit": "^1.43.0",
"github-markdown-css": "^5.8.1", "idb-keyval": "^6.2.2",
"handsontable": "^16.2.0",
"highlight.js": "^11.11.1",
"lucide-react": "^0.562.0", "lucide-react": "^0.562.0",
"marked": "^17.0.1", "next": "16.1.2",
"marked-highlight": "^2.2.3", "react": "19.2.3",
"nanoid": "^5.1.6", "react-dom": "19.2.3",
"papaparse": "^5.5.3", "react-resizable-panels": "^4.4.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-hook-form": "^7.70.0",
"react-resizable-panels": "^4.2.1",
"react-toastify": "^11.0.5", "react-toastify": "^11.0.5",
"sonner": "^2.0.7",
"tailwind-merge": "^3.4.0", "tailwind-merge": "^3.4.0",
"vue": "^3.5.26", "valtio": "^2.3.0",
"zustand": "^5.0.9" "zustand": "^5.0.10"
},
"publishConfig": {
"access": "public"
}, },
"devDependencies": { "devDependencies": {
"@kevisual/api": "^0.0.17", "@kevisual/types": "^0.0.11",
"@kevisual/types": "^0.0.10", "@tailwindcss/postcss": "^4",
"@types/react": "^19.2.7", "@types/node": "^25",
"@types/react-dom": "^19.2.3", "@types/react": "^19",
"baseline-browser-mapping": "^2.9.11", "@types/react-dom": "^19",
"dotenv": "^17.2.3", "tailwindcss": "^4",
"tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0",
"tw-animate-css": "^1.4.0" "typescript": "^5"
}, }
"packageManager": "pnpm@10.27.0",
"onlyBuiltDependencies": [
"@tailwindcss/oxide",
"esbuild",
"sharp"
]
} }

6546
web/pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

8
web/src/app/page.tsx Normal file
View File

@@ -0,0 +1,8 @@
import { AppProvider } from './studio/index.tsx';
export default function Home() {
return (
<AppProvider />
);
}

Some files were not shown because too many files have changed in this diff Show More