From b9cf8bc55f80316926904e769dc1185c699330e8 Mon Sep 17 00:00:00 2001 From: liuyonghe0111 <1763195287@qq.com> Date: Tue, 4 Nov 2025 18:42:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 5 +- pnpm-lock.yaml | 29 -- public/component/close.svg | 4 - public/component/currency.svg | 29 ++ public/component/vip.svg | 8 + .../character/[id]/chat/Right/index.tsx | 86 ++--- src/app/(main)/character/[id]/chat/page.tsx | 1 - src/app/layout.tsx | 3 +- src/components/feature/BubbleSelectDialog.tsx | 132 +++++++- src/components/feature/ModelSelectDialog.tsx | 47 ++- .../feature/VoiceActorSelectDialog.tsx | 7 +- src/components/index.tsx | 1 - src/components/ui/form/index.tsx | 280 ---------------- src/components/ui/inputs/index.tsx | 2 +- src/components/ui/inputs/switch.tsx | 9 +- src/components/ui/modal/index.tsx | 20 +- src/components/ui/radix-form/Form.tsx | 314 ++++++++++++++++++ .../ui/radix-form/FormDependency.tsx | 54 +++ src/components/ui/radix-form/FormError.tsx | 72 ++++ src/components/ui/radix-form/FormItem.tsx | 100 ++++++ src/components/ui/radix-form/context.tsx | 18 + src/components/ui/radix-form/index.ts | 29 ++ src/components/ui/radix-form/types.ts | 164 +++++++++ src/components/ui/radix-form/utils.ts | 95 ++++++ 24 files changed, 1128 insertions(+), 381 deletions(-) delete mode 100644 public/component/close.svg create mode 100644 public/component/currency.svg create mode 100644 public/component/vip.svg delete mode 100644 src/components/ui/form/index.tsx create mode 100644 src/components/ui/radix-form/Form.tsx create mode 100644 src/components/ui/radix-form/FormDependency.tsx create mode 100644 src/components/ui/radix-form/FormError.tsx create mode 100644 src/components/ui/radix-form/FormItem.tsx create mode 100644 src/components/ui/radix-form/context.tsx create mode 100644 src/components/ui/radix-form/index.ts create mode 100644 src/components/ui/radix-form/types.ts create mode 100644 src/components/ui/radix-form/utils.ts diff --git a/package.json b/package.json index bbbb0e4..eff92d3 100644 --- a/package.json +++ b/package.json @@ -26,11 +26,8 @@ "radix-ui": "^1.4.3", "react": "19.1.0", "react-dom": "19.1.0", - "react-hook-form": "^7.65.0", "react-virtuoso": "^4.14.1", - "tailwind-merge": "^3.3.1", - "vaul": "^1.1.2", - "zod": "^4.1.12" + "tailwind-merge": "^3.3.1" }, "devDependencies": { "@eslint/eslintrc": "^3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 073b1c0..7a5608c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,21 +53,12 @@ importers: react-dom: specifier: 19.1.0 version: 19.1.0(react@19.1.0) - react-hook-form: - specifier: ^7.65.0 - version: 7.65.0(react@19.1.0) react-virtuoso: specifier: ^4.14.1 version: 4.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 - vaul: - specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - zod: - specifier: ^4.1.12 - version: 4.1.12 devDependencies: '@eslint/eslintrc': specifier: ^3 @@ -2859,12 +2850,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - vaul@1.1.2: - resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc - which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -2898,9 +2883,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod@4.1.12: - resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} - snapshots: '@alloc/quick-lru@5.2.0': {} @@ -5872,15 +5854,6 @@ snapshots: dependencies: react: 19.1.0 - vaul@1.1.2(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): - dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.1(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 @@ -5931,5 +5904,3 @@ snapshots: yallist@5.0.0: {} yocto-queue@0.1.0: {} - - zod@4.1.12: {} diff --git a/public/component/close.svg b/public/component/close.svg deleted file mode 100644 index a5a0d03..0000000 --- a/public/component/close.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/public/component/currency.svg b/public/component/currency.svg new file mode 100644 index 0000000..b23a5e0 --- /dev/null +++ b/public/component/currency.svg @@ -0,0 +1,29 @@ + diff --git a/public/component/vip.svg b/public/component/vip.svg new file mode 100644 index 0000000..a2c9a0a --- /dev/null +++ b/public/component/vip.svg @@ -0,0 +1,8 @@ + diff --git a/src/app/(main)/character/[id]/chat/Right/index.tsx b/src/app/(main)/character/[id]/chat/Right/index.tsx index 9f98a58..2052210 100644 --- a/src/app/(main)/character/[id]/chat/Right/index.tsx +++ b/src/app/(main)/character/[id]/chat/Right/index.tsx @@ -1,6 +1,6 @@ 'use client'; -import Form, { FormItem } from '@/components/ui/form'; +import Form, { FormItem } from '@/components/ui/radix-form'; import React from 'react'; import { cn } from '@/lib'; import { Select, Switch, Number, FontSize } from '@/components/ui/inputs'; @@ -11,6 +11,19 @@ import VoiceActorSelectDialog from '@/components/feature/VoiceActorSelectDialog' import BubbleSelectDialog from '@/components/feature/BubbleSelectDialog'; import IconFont from '@/components/ui/iconFont'; +// 表单数据类型定义 +type SettingFormValues = { + model?: string; + short_text?: boolean; + voiceActor?: string; + dialogueOnly?: boolean; + max_tokens?: number; + fontSize?: number; + chat_mode?: string; + chat_bubble?: string; + background?: string; +}; + const Title: React.FC< { text?: string; @@ -29,25 +42,6 @@ const Title: React.FC< }; const SettingForm = React.memo(() => { - const options = [ - { - label: 'Model 1', - value: 'model1', - }, - { - label: 'Model 2', - value: 'model2', - }, - { - label: 'Model 3', - value: 'model3', - }, - { - label: 'Model 4', - value: 'model4', - }, - ]; - return (