# Onboarding UI Optimization (技术计划) ## 1. 基础设施与样式定义 (Foundation) - [ ] **定义 Design Tokens** - 在 `constants/Colors.ts` 或新文件 `constants/OnboardingTheme.ts` 中定义新色值: - `background`: `#FFF4EA` - `textPrimary`: `#4A3B32` (深棕) - `buttonGradientStart`: `#F69F7B` - `buttonGradientEnd`: `#F99CC0` - `inputBackground`: `#FFFFFF` - [ ] **创建基础组件** - `SerifText`: 封装 `Text` 组件,默认应用 `fontFamily: Platform.select({ ios: 'Georgia', android: 'serif', default: 'serif' })` 及主题色。 - `OnboardingLayout`: 通用容器,包含 `SafeAreaView`、背景色设置、Header (Skip 按钮) 与 Footer 占位。 ## 2. UI 组件开发 (UI Components) - [ ] **下一步按钮 (NextButton)** - 使用 `expo-linear-gradient` 实现渐变背景。 - 绘制 SVG 箭头 (使用 `react-native-svg` 或直接嵌入 SVG xml string 如果不引入新库,首选 `react-native-svg` 如果项目已有,否则用简单 View/Image 替代或引入库)。 - *注:检查 `package.json` 发现未安装 `react-native-svg`,将使用 Image 或 Text Icon 替代,或者建议安装。鉴于需求“你自己生成 SVG”,推荐安装 `react-native-svg`。* - [ ] **称呼页 (NameInputStep)** - 居中白色圆角容器。 - `TextInput` 样式定制:隐藏默认下划线,自定义光标颜色 (selectionColor),字体样式。 - [ ] **意图选择页 (IntentSelectionStep)** - 2x2 Grid 布局。 - `SelectionCard` 组件:支持选中/未选中状态切换 (边框/背景变化)。 - 实现多选逻辑。 ## 3. 页面整合与逻辑 (Integration) - [ ] **重构 `app/(onboarding)/onboarding.tsx`** - 引入状态管理:`currentStep` (0: Name, 1: Intent)。 - 状态收集:`name` (string), `selectedIntents` (string[])。 - 步骤切换逻辑: - Step 1 -> Next -> Step 2。 - Step 2 -> Next -> Finish (持久化 & 跳转)。 - [ ] **持久化逻辑更新** - 确保 `appStorage.ts` 支持存储新的字段(如果需要)。 - 完成时写入 `isOnboardingCompleted`。 ## 4. 依赖检查 - 需确认是否允许安装 `react-native-svg` 用于渲染高质量图标。若不允许,将导出为 PNG 使用。