From c57987f6a84b594c3c23a512bebaf7c3e8b14d65 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 10 Jul 2026 05:10:31 +0000 Subject: [PATCH] fix frontend --- README.md | 2 +- apps/web/index.html | 31 +- apps/web/package-lock.json | 71 +- apps/web/package.json | 8 +- apps/web/public/brand-mark.jpg | Bin 0 -> 109047 bytes apps/web/public/favicon.svg | 26 +- apps/web/src/App.css | 50 - apps/web/src/App.tsx | 88 +- apps/web/src/auth/AuthContext.tsx | 79 + apps/web/src/auth/RequireAuth.tsx | 32 + .../web/src/components/layout/AccountMenu.tsx | 129 + apps/web/src/components/layout/AppShell.tsx | 21 + apps/web/src/components/layout/BellMenu.tsx | 174 + apps/web/src/components/layout/MobileDock.tsx | 141 + apps/web/src/components/layout/PageHeader.tsx | 14 + apps/web/src/components/layout/SidebarNav.tsx | 32 + apps/web/src/components/layout/Topbar.tsx | 33 + .../src/components/layout/UsagePlanWidget.tsx | 183 + .../components/persona/PersonaWorkbench.tsx | 549 ++ .../web/src/components/studio/ImageAttach.tsx | 109 + .../web/src/components/studio/PostMetrics.tsx | 64 + .../src/components/studio/ReplyComposer.tsx | 103 + apps/web/src/components/studio/Stepper.tsx | 31 + apps/web/src/components/ui/AccountAvatar.tsx | 54 + apps/web/src/components/ui/AppIcons.tsx | 129 + apps/web/src/components/ui/Badge.tsx | 16 + apps/web/src/components/ui/BrandMark.tsx | 23 + apps/web/src/components/ui/Button.tsx | 16 + apps/web/src/components/ui/Card.tsx | 15 + apps/web/src/components/ui/EmptyState.tsx | 17 + apps/web/src/components/ui/Input.tsx | 17 + apps/web/src/components/ui/Pager.tsx | 90 + apps/web/src/components/ui/Select.tsx | 20 + apps/web/src/components/ui/Textarea.tsx | 17 + apps/web/src/components/ui/index.ts | 14 + .../src/components/usage/PlanPricingGrid.tsx | 77 + apps/web/src/components/usage/UsageLedger.tsx | 60 + .../src/components/usage/UsageMeterBars.tsx | 70 + .../src/components/usage/UsageSeriesChart.tsx | 158 + apps/web/src/data/DataContext.tsx | 50 + apps/web/src/data/createRepos.ts | 16 + apps/web/src/data/mock/keys.ts | 59 + apps/web/src/data/mock/outboxSimulate.ts | 91 + apps/web/src/data/mock/repos.ts | 2088 ++++++++ apps/web/src/data/mock/seed.ts | 816 +++ apps/web/src/data/mock/store.ts | 308 ++ apps/web/src/data/repos.ts | 418 ++ apps/web/src/domain/speakers.ts | 66 + apps/web/src/domain/types.ts | 646 +++ apps/web/src/i18n/I18nContext.tsx | 87 + apps/web/src/index.css | 16 - apps/web/src/lib/accountInsights.ts | 507 ++ apps/web/src/lib/attachImage.ts | 72 + apps/web/src/lib/i18n/format.ts | 45 + apps/web/src/lib/i18n/messages.ts | 2464 +++++++++ apps/web/src/lib/i18n/prefs.ts | 57 + apps/web/src/lib/i18n/types.ts | 38 + apps/web/src/lib/id.ts | 6 + apps/web/src/lib/memberAvatar.ts | 64 + apps/web/src/lib/memberRole.ts | 41 + apps/web/src/lib/mockAi.ts | 204 + apps/web/src/lib/mockImage.ts | 20 + apps/web/src/lib/mockInspireAngles.ts | 68 + apps/web/src/lib/mockInspireChat.ts | 203 + apps/web/src/lib/mockProductImport.ts | 97 + apps/web/src/lib/mockResearch.ts | 323 ++ apps/web/src/lib/mockScoutExpand.ts | 242 + apps/web/src/lib/mockStyleAnalyze.ts | 239 + apps/web/src/lib/mockThreadLink.ts | 118 + apps/web/src/lib/mockTrends.ts | 205 + apps/web/src/lib/mockViral.ts | 47 + apps/web/src/lib/nav.ts | 58 + apps/web/src/lib/pagination.ts | 30 + apps/web/src/lib/personaPrompt.ts | 276 + apps/web/src/lib/planPurchase.ts | 63 + apps/web/src/lib/planRights.ts | 54 + apps/web/src/lib/productMatch.ts | 66 + apps/web/src/lib/scoutToday.ts | 51 + apps/web/src/lib/storage.ts | 37 + apps/web/src/lib/tenantUsers.ts | 477 ++ apps/web/src/lib/theme.ts | 38 + apps/web/src/lib/time.ts | 108 + apps/web/src/lib/usageMeter.ts | 829 +++ apps/web/src/main.tsx | 12 +- apps/web/src/pages/AdminUsersPage.tsx | 802 +++ apps/web/src/pages/BrandsPage.tsx | 670 +++ apps/web/src/pages/CrewPage.tsx | 241 + apps/web/src/pages/ForgotPasswordPage.tsx | 103 + apps/web/src/pages/InsightsPage.tsx | 497 ++ apps/web/src/pages/JobDetailPage.tsx | 65 + apps/web/src/pages/JobsPage.tsx | 112 + apps/web/src/pages/LoginPage.tsx | 86 + apps/web/src/pages/OutboxDetailPage.tsx | 136 + apps/web/src/pages/OutboxPage.tsx | 209 + apps/web/src/pages/PlanCheckoutPage.tsx | 217 + apps/web/src/pages/PlansPage.tsx | 57 + apps/web/src/pages/ProfilePage.tsx | 364 ++ apps/web/src/pages/ResetPasswordPage.tsx | 112 + apps/web/src/pages/ScoutPage.tsx | 1099 ++++ apps/web/src/pages/SettingsPage.tsx | 335 ++ apps/web/src/pages/StudioPage.tsx | 166 + apps/web/src/pages/TodayPage.tsx | 426 ++ apps/web/src/pages/UsagePage.tsx | 504 ++ apps/web/src/pages/VerifyEmailPage.tsx | 165 + apps/web/src/pages/studio/ComposerPanel.tsx | 289 ++ apps/web/src/pages/studio/InspirePanel.tsx | 564 +++ apps/web/src/pages/studio/MentionsPanel.tsx | 174 + apps/web/src/pages/studio/OwnPostsPanel.tsx | 461 ++ apps/web/src/pages/studio/PlaysPanel.tsx | 879 ++++ apps/web/src/pages/studio/WizardPage.tsx | 165 + apps/web/src/pages/studio/steps/CrewStep.tsx | 80 + .../src/pages/studio/steps/PreviewStep.tsx | 46 + .../src/pages/studio/steps/ScheduleStep.tsx | 33 + .../web/src/pages/studio/steps/ScriptStep.tsx | 180 + .../web/src/pages/studio/steps/SubmitStep.tsx | 36 + apps/web/src/pages/studio/steps/TopicStep.tsx | 112 + apps/web/src/pages/studio/wizardState.ts | 101 + apps/web/src/styles/global.css | 4476 +++++++++++++++++ apps/web/src/styles/layout.css | 860 ++++ apps/web/src/styles/tokens.css | 174 + apps/web/src/styles/ui.css | 1081 ++++ apps/web/src/theme/ThemeContext.tsx | 87 + apps/web/vite.config.ts | 17 +- docs/product/haixun-console/B-CHECKLIST.md | 73 + docs/product/haixun-console/README.md | 61 +- docs/product/haixun-console/tasks/INDEX.md | 42 +- .../tasks/T002-design-tokens.md | 5 +- .../tasks/T003-ui-primitives.md | 5 +- .../haixun-console/tasks/T004-app-shell.md | 5 +- .../tasks/T005-router-placeholders.md | 5 +- .../haixun-console/tasks/T006-mock-auth.md | 3 +- .../tasks/T007-repo-interfaces.md | 3 +- .../tasks/T008-mock-repos-seed.md | 3 +- .../haixun-console/tasks/T009-crew-page.md | 3 +- .../haixun-console/tasks/T010-studio-list.md | 3 +- .../haixun-console/tasks/T011-wizard-shell.md | 3 +- .../tasks/T012-wizard-topic-crew.md | 3 +- .../tasks/T013-wizard-script-steps.md | 3 +- .../tasks/T014-wizard-preview-submit.md | 3 +- .../haixun-console/tasks/T015-outbox-ui.md | 3 +- .../tasks/T016-outbox-simulate.md | 3 +- .../haixun-console/tasks/T017-mock-jobs.md | 3 +- .../tasks/T018-notifications.md | 3 +- .../haixun-console/tasks/T019-today-page.md | 3 +- .../tasks/T020-scout-settings.md | 3 +- .../tasks/T021-seed-example-play.md | 3 +- .../haixun-console/tasks/T022-rwd-smoke.md | 3 +- 147 files changed, 30839 insertions(+), 172 deletions(-) create mode 100644 apps/web/public/brand-mark.jpg delete mode 100644 apps/web/src/App.css create mode 100644 apps/web/src/auth/AuthContext.tsx create mode 100644 apps/web/src/auth/RequireAuth.tsx create mode 100644 apps/web/src/components/layout/AccountMenu.tsx create mode 100644 apps/web/src/components/layout/AppShell.tsx create mode 100644 apps/web/src/components/layout/BellMenu.tsx create mode 100644 apps/web/src/components/layout/MobileDock.tsx create mode 100644 apps/web/src/components/layout/PageHeader.tsx create mode 100644 apps/web/src/components/layout/SidebarNav.tsx create mode 100644 apps/web/src/components/layout/Topbar.tsx create mode 100644 apps/web/src/components/layout/UsagePlanWidget.tsx create mode 100644 apps/web/src/components/persona/PersonaWorkbench.tsx create mode 100644 apps/web/src/components/studio/ImageAttach.tsx create mode 100644 apps/web/src/components/studio/PostMetrics.tsx create mode 100644 apps/web/src/components/studio/ReplyComposer.tsx create mode 100644 apps/web/src/components/studio/Stepper.tsx create mode 100644 apps/web/src/components/ui/AccountAvatar.tsx create mode 100644 apps/web/src/components/ui/AppIcons.tsx create mode 100644 apps/web/src/components/ui/Badge.tsx create mode 100644 apps/web/src/components/ui/BrandMark.tsx create mode 100644 apps/web/src/components/ui/Button.tsx create mode 100644 apps/web/src/components/ui/Card.tsx create mode 100644 apps/web/src/components/ui/EmptyState.tsx create mode 100644 apps/web/src/components/ui/Input.tsx create mode 100644 apps/web/src/components/ui/Pager.tsx create mode 100644 apps/web/src/components/ui/Select.tsx create mode 100644 apps/web/src/components/ui/Textarea.tsx create mode 100644 apps/web/src/components/ui/index.ts create mode 100644 apps/web/src/components/usage/PlanPricingGrid.tsx create mode 100644 apps/web/src/components/usage/UsageLedger.tsx create mode 100644 apps/web/src/components/usage/UsageMeterBars.tsx create mode 100644 apps/web/src/components/usage/UsageSeriesChart.tsx create mode 100644 apps/web/src/data/DataContext.tsx create mode 100644 apps/web/src/data/createRepos.ts create mode 100644 apps/web/src/data/mock/keys.ts create mode 100644 apps/web/src/data/mock/outboxSimulate.ts create mode 100644 apps/web/src/data/mock/repos.ts create mode 100644 apps/web/src/data/mock/seed.ts create mode 100644 apps/web/src/data/mock/store.ts create mode 100644 apps/web/src/data/repos.ts create mode 100644 apps/web/src/domain/speakers.ts create mode 100644 apps/web/src/domain/types.ts create mode 100644 apps/web/src/i18n/I18nContext.tsx delete mode 100644 apps/web/src/index.css create mode 100644 apps/web/src/lib/accountInsights.ts create mode 100644 apps/web/src/lib/attachImage.ts create mode 100644 apps/web/src/lib/i18n/format.ts create mode 100644 apps/web/src/lib/i18n/messages.ts create mode 100644 apps/web/src/lib/i18n/prefs.ts create mode 100644 apps/web/src/lib/i18n/types.ts create mode 100644 apps/web/src/lib/id.ts create mode 100644 apps/web/src/lib/memberAvatar.ts create mode 100644 apps/web/src/lib/memberRole.ts create mode 100644 apps/web/src/lib/mockAi.ts create mode 100644 apps/web/src/lib/mockImage.ts create mode 100644 apps/web/src/lib/mockInspireAngles.ts create mode 100644 apps/web/src/lib/mockInspireChat.ts create mode 100644 apps/web/src/lib/mockProductImport.ts create mode 100644 apps/web/src/lib/mockResearch.ts create mode 100644 apps/web/src/lib/mockScoutExpand.ts create mode 100644 apps/web/src/lib/mockStyleAnalyze.ts create mode 100644 apps/web/src/lib/mockThreadLink.ts create mode 100644 apps/web/src/lib/mockTrends.ts create mode 100644 apps/web/src/lib/mockViral.ts create mode 100644 apps/web/src/lib/nav.ts create mode 100644 apps/web/src/lib/pagination.ts create mode 100644 apps/web/src/lib/personaPrompt.ts create mode 100644 apps/web/src/lib/planPurchase.ts create mode 100644 apps/web/src/lib/planRights.ts create mode 100644 apps/web/src/lib/productMatch.ts create mode 100644 apps/web/src/lib/scoutToday.ts create mode 100644 apps/web/src/lib/storage.ts create mode 100644 apps/web/src/lib/tenantUsers.ts create mode 100644 apps/web/src/lib/theme.ts create mode 100644 apps/web/src/lib/time.ts create mode 100644 apps/web/src/lib/usageMeter.ts create mode 100644 apps/web/src/pages/AdminUsersPage.tsx create mode 100644 apps/web/src/pages/BrandsPage.tsx create mode 100644 apps/web/src/pages/CrewPage.tsx create mode 100644 apps/web/src/pages/ForgotPasswordPage.tsx create mode 100644 apps/web/src/pages/InsightsPage.tsx create mode 100644 apps/web/src/pages/JobDetailPage.tsx create mode 100644 apps/web/src/pages/JobsPage.tsx create mode 100644 apps/web/src/pages/LoginPage.tsx create mode 100644 apps/web/src/pages/OutboxDetailPage.tsx create mode 100644 apps/web/src/pages/OutboxPage.tsx create mode 100644 apps/web/src/pages/PlanCheckoutPage.tsx create mode 100644 apps/web/src/pages/PlansPage.tsx create mode 100644 apps/web/src/pages/ProfilePage.tsx create mode 100644 apps/web/src/pages/ResetPasswordPage.tsx create mode 100644 apps/web/src/pages/ScoutPage.tsx create mode 100644 apps/web/src/pages/SettingsPage.tsx create mode 100644 apps/web/src/pages/StudioPage.tsx create mode 100644 apps/web/src/pages/TodayPage.tsx create mode 100644 apps/web/src/pages/UsagePage.tsx create mode 100644 apps/web/src/pages/VerifyEmailPage.tsx create mode 100644 apps/web/src/pages/studio/ComposerPanel.tsx create mode 100644 apps/web/src/pages/studio/InspirePanel.tsx create mode 100644 apps/web/src/pages/studio/MentionsPanel.tsx create mode 100644 apps/web/src/pages/studio/OwnPostsPanel.tsx create mode 100644 apps/web/src/pages/studio/PlaysPanel.tsx create mode 100644 apps/web/src/pages/studio/WizardPage.tsx create mode 100644 apps/web/src/pages/studio/steps/CrewStep.tsx create mode 100644 apps/web/src/pages/studio/steps/PreviewStep.tsx create mode 100644 apps/web/src/pages/studio/steps/ScheduleStep.tsx create mode 100644 apps/web/src/pages/studio/steps/ScriptStep.tsx create mode 100644 apps/web/src/pages/studio/steps/SubmitStep.tsx create mode 100644 apps/web/src/pages/studio/steps/TopicStep.tsx create mode 100644 apps/web/src/pages/studio/wizardState.ts create mode 100644 apps/web/src/styles/global.css create mode 100644 apps/web/src/styles/layout.css create mode 100644 apps/web/src/styles/tokens.css create mode 100644 apps/web/src/styles/ui.css create mode 100644 apps/web/src/theme/ThemeContext.tsx create mode 100644 docs/product/haixun-console/B-CHECKLIST.md diff --git a/README.md b/README.md index 54543c5..d6fc5ec 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ A 地基(登入 / 權限 / Threads / Job / 通知) ```bash cd apps/web npm install -npm run dev # 本機開發 +npm run dev # 本機開發,監聽 0.0.0.0:5173(區網可連) npm run build # 型別檢查 + 生產建置 ``` diff --git a/apps/web/index.html b/apps/web/index.html index d6f50ca..848327f 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -4,7 +4,36 @@ - Harbor Desk · 巡樓 + 巡樓 · Lapras + + + + + +
diff --git a/apps/web/package-lock.json b/apps/web/package-lock.json index bc383bf..c49f602 100644 --- a/apps/web/package-lock.json +++ b/apps/web/package-lock.json @@ -1,15 +1,17 @@ { - "name": "web", + "name": "@harbor/web", "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "web", + "name": "@harbor/web", "version": "0.0.0", "dependencies": { "react": "^19.2.7", - "react-dom": "^19.2.7" + "react-dom": "^19.2.7", + "react-router-dom": "^7.18.1", + "taipei-sans-tc": "^0.1.1" }, "devDependencies": { "@types/node": "^24.13.2", @@ -738,6 +740,19 @@ } } }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -1187,6 +1202,44 @@ "react": "^19.2.7" } }, + "node_modules/react-router": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.1.tgz", + "integrity": "sha512-GDLgg3i3uM0aeJO3Fm+TCS+sDQ7gu12T6x0qdTEzcwqEfleci7JwugVNIF3U//0FWKnJT7ptG+20B2jfDqnZAg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.1.tgz", + "integrity": "sha512-KaZh+X/6UtEp28x51AUYZDMg9NGoz2ja3dNHa+ta/tk40vCzKhQ/RypCWBMLbmDr6//E24Vv5uPsrqXFozdkAg==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/rolldown": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", @@ -1227,6 +1280,12 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -1237,6 +1296,12 @@ "node": ">=0.10.0" } }, + "node_modules/taipei-sans-tc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/taipei-sans-tc/-/taipei-sans-tc-0.1.1.tgz", + "integrity": "sha512-GCvdO+SATITfm128bT+fFmbpVW8+o0zLMVlNskSOk3CBghNzfqj4tvwTbIQ9vmvftd31s5UNypLA3aIw/IG6RQ==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", diff --git a/apps/web/package.json b/apps/web/package.json index 662ec05..a4c880e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -4,14 +4,16 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "vite --host 0.0.0.0", "build": "tsc -b && vite build", "lint": "oxlint", - "preview": "vite preview" + "preview": "vite preview --host 0.0.0.0" }, "dependencies": { "react": "^19.2.7", - "react-dom": "^19.2.7" + "react-dom": "^19.2.7", + "react-router-dom": "^7.18.1", + "taipei-sans-tc": "^0.1.1" }, "devDependencies": { "@types/node": "^24.13.2", diff --git a/apps/web/public/brand-mark.jpg b/apps/web/public/brand-mark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04f7941a0987b800016f549c936679e20b0f6e6c GIT binary patch literal 109047 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%0Ahsq^QQ(Z-VQE2lz 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 literal 0 HcmV?d00001 diff --git a/apps/web/public/favicon.svg b/apps/web/public/favicon.svg index 6893eb1..d5a4731 100644 --- a/apps/web/public/favicon.svg +++ b/apps/web/public/favicon.svg @@ -1 +1,25 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/web/src/App.css b/apps/web/src/App.css deleted file mode 100644 index d7737c6..0000000 --- a/apps/web/src/App.css +++ /dev/null @@ -1,50 +0,0 @@ -.scaffold { - min-height: 100vh; - margin: 0; - display: flex; - flex-direction: column; - justify-content: center; - align-items: flex-start; - gap: 0.75rem; - padding: 2rem; - box-sizing: border-box; - font-family: system-ui, -apple-system, "Segoe UI", sans-serif; - color: #1e293b; - background: #f8fafc; -} - -.scaffold-kicker { - margin: 0; - font-size: 0.875rem; - font-weight: 600; - letter-spacing: 0.04em; - text-transform: uppercase; - color: #2a9d8f; -} - -.scaffold h1 { - margin: 0; - font-size: 1.75rem; - font-weight: 700; -} - -.scaffold-lead { - margin: 0; - max-width: 28rem; - line-height: 1.6; - color: #475569; -} - -.scaffold-meta { - margin: 0.5rem 0 0; - font-size: 0.875rem; - color: #64748b; -} - -.scaffold code { - font-size: 0.85em; - padding: 0.1em 0.35em; - border-radius: 0.25rem; - background: #e2e8f0; - color: #0f172a; -} diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index aa12c99..0e02589 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,19 +1,79 @@ -import "./App.css"; +import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom"; +import { AuthProvider } from "./auth/AuthContext"; +import { RequireAuth } from "./auth/RequireAuth"; +import { AppShell } from "./components/layout/AppShell"; +import { DataProvider } from "./data/DataContext"; +import { I18nProvider } from "./i18n/I18nContext"; +import { ThemeProvider } from "./theme/ThemeContext"; +import { AdminUsersPage } from "./pages/AdminUsersPage"; +import { BrandsPage } from "./pages/BrandsPage"; +import { CrewPage } from "./pages/CrewPage"; +import { JobDetailPage } from "./pages/JobDetailPage"; +import { InsightsPage } from "./pages/InsightsPage"; +import { JobsPage } from "./pages/JobsPage"; +import { ForgotPasswordPage } from "./pages/ForgotPasswordPage"; +import { LoginPage } from "./pages/LoginPage"; +import { OutboxDetailPage } from "./pages/OutboxDetailPage"; +import { OutboxPage } from "./pages/OutboxPage"; +import { ProfilePage } from "./pages/ProfilePage"; +import { ResetPasswordPage } from "./pages/ResetPasswordPage"; +import { ScoutPage } from "./pages/ScoutPage"; +import { SettingsPage } from "./pages/SettingsPage"; +import { PlanCheckoutPage } from "./pages/PlanCheckoutPage"; +import { PlansPage } from "./pages/PlansPage"; +import { UsagePage } from "./pages/UsagePage"; +import { StudioPage } from "./pages/StudioPage"; +import { VerifyEmailPage } from "./pages/VerifyEmailPage"; +import { WizardPage } from "./pages/studio/WizardPage"; +import { TodayPage } from "./pages/TodayPage"; -/** - * T001 scaffold placeholder. Routing / Harbor Desk shell start at T004–T005. - */ export default function App() { return ( -
-

Harbor Desk

-

apps/web

-

- 巡樓 Console 前端骨架(T001)。下一步:設計 token 與 App Shell。 -

-

- 啟動:npm run dev · 產物:npm run build -

-
+ + + + + + + } /> + } /> + } /> + } /> + + + + } + > + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> + } /> + + + + + + ); } diff --git a/apps/web/src/auth/AuthContext.tsx b/apps/web/src/auth/AuthContext.tsx new file mode 100644 index 0000000..4190a42 --- /dev/null +++ b/apps/web/src/auth/AuthContext.tsx @@ -0,0 +1,79 @@ +import { + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useState, + type ReactNode, +} from "react"; +import type { Member } from "../domain/types"; +import type { MemberProfilePatch } from "../data/repos"; +import { useRepos } from "../data/DataContext"; + +type AuthContextValue = { + member: Member | null; + loading: boolean; + login: (email: string, password: string) => Promise; + logout: () => Promise; + reload: () => Promise; + updateProfile: (patch: MemberProfilePatch) => Promise; +}; + +const AuthContext = createContext(null); + +export function AuthProvider({ children }: { children: ReactNode }) { + const repos = useRepos(); + const [member, setMember] = useState(null); + const [loading, setLoading] = useState(true); + + const reload = useCallback(async () => { + // 已進過 app 後不要再把 loading=true:否則 RequireAuth 會卸載整棵 /app, + // 各頁本地 state(如用量「全體」分頁)會被重掛成預設。 + try { + const me = await repos.auth.me(); + setMember(me); + } finally { + setLoading(false); + } + }, [repos.auth]); + + useEffect(() => { + void reload(); + }, [reload]); + + const login = useCallback( + async (email: string, password: string) => { + const { member: m } = await repos.auth.login(email, password); + setMember(m); + }, + [repos.auth], + ); + + const logout = useCallback(async () => { + await repos.auth.logout(); + setMember(null); + }, [repos.auth]); + + const updateProfile = useCallback( + async (patch: MemberProfilePatch) => { + const next = await repos.auth.updateProfile(patch); + setMember(next); + return next; + }, + [repos.auth], + ); + + const value = useMemo( + () => ({ member, loading, login, logout, reload, updateProfile }), + [member, loading, login, logout, reload, updateProfile], + ); + + return {children}; +} + +export function useAuth(): AuthContextValue { + const ctx = useContext(AuthContext); + if (!ctx) throw new Error("useAuth must be used within AuthProvider"); + return ctx; +} diff --git a/apps/web/src/auth/RequireAuth.tsx b/apps/web/src/auth/RequireAuth.tsx new file mode 100644 index 0000000..97be8ac --- /dev/null +++ b/apps/web/src/auth/RequireAuth.tsx @@ -0,0 +1,32 @@ +import { Navigate, useLocation } from "react-router-dom"; +import { useAuth } from "./AuthContext"; + +export function RequireAuth({ children }: { children: React.ReactNode }) { + const { member, loading } = useAuth(); + const location = useLocation(); + + if (loading) { + return ( +
+

載入中…

+
+ ); + } + + if (!member) { + return ; + } + + // 未驗證信箱:擋下所有 /app,導向驗證頁 + if (!member.email_verified) { + return ( + + ); + } + + return children; +} diff --git a/apps/web/src/components/layout/AccountMenu.tsx b/apps/web/src/components/layout/AccountMenu.tsx new file mode 100644 index 0000000..f991305 --- /dev/null +++ b/apps/web/src/components/layout/AccountMenu.tsx @@ -0,0 +1,129 @@ +import { useEffect, useRef, useState } from "react"; +import { Link, useNavigate } from "react-router-dom"; +import { useAuth } from "../../auth/AuthContext"; +import { AccountAvatar } from "../ui/AccountAvatar"; +import { useI18n } from "../../i18n/I18nContext"; +import { memberRoleSummary } from "../../lib/memberRole"; +import { useTheme } from "../../theme/ThemeContext"; + +/** + * 頂欄帳號選單:會員資料、設定、主題、登出。 + * 用量與方案改由頂欄 UsagePlanWidget 處理。 + */ +export function AccountMenu() { + const { member, logout } = useAuth(); + const { t } = useI18n(); + const { resolved, toggle } = useTheme(); + const navigate = useNavigate(); + const [open, setOpen] = useState(false); + const rootRef = useRef(null); + + useEffect(() => { + function onDoc(e: MouseEvent) { + if (!rootRef.current?.contains(e.target as Node)) setOpen(false); + } + document.addEventListener("mousedown", onDoc); + return () => document.removeEventListener("mousedown", onDoc); + }, []); + + const name = member?.display_name || "…"; + const role = memberRoleSummary(member, t); + const avatarAccount = { + display_name: name, + username: member?.email || "user", + avatar_color: "#6dbf7a", + avatar_url: member?.avatar_url, + }; + + return ( +
+ + + {open ? ( +
+
+
+ +
+ {name} + {member?.email || "—"} +
+
+
+ + {role.primaryLabel} + + + {member?.email_verified ? t("role.verified") : t("role.unverified")} + +
+
+ + +
+ ) : null} +
+ ); +} diff --git a/apps/web/src/components/layout/AppShell.tsx b/apps/web/src/components/layout/AppShell.tsx new file mode 100644 index 0000000..667762d --- /dev/null +++ b/apps/web/src/components/layout/AppShell.tsx @@ -0,0 +1,21 @@ +import { Outlet } from "react-router-dom"; +import { MobileDock } from "./MobileDock"; +import { SidebarNav } from "./SidebarNav"; +import { Topbar } from "./Topbar"; + +export function AppShell() { + return ( +
+ +
+ +
+
+ +
+
+
+ +
+ ); +} diff --git a/apps/web/src/components/layout/BellMenu.tsx b/apps/web/src/components/layout/BellMenu.tsx new file mode 100644 index 0000000..e218930 --- /dev/null +++ b/apps/web/src/components/layout/BellMenu.tsx @@ -0,0 +1,174 @@ +import { useEffect, useRef, useState } from "react"; +import { useNavigate } from "react-router-dom"; +import { useData, useRepos } from "../../data/DataContext"; +import type { AppNotification } from "../../domain/types"; +import { useI18n } from "../../i18n/I18nContext"; +import { pathForNotification } from "../../lib/nav"; +import { formatLocalDateTime, formatTimeAgo } from "../../lib/time"; +import { Button } from "../ui"; + +const PREVIEW = 5; + +function kindLabel(kind: AppNotification["kind"], t: (k: string) => string): string { + if (kind === "job") return t("nav.jobs"); + if (kind === "outbox") return t("nav.outbox"); + return t("nav.settings"); +} + +export function BellMenu() { + const repos = useRepos(); + const { refresh, tick } = useData(); + const { t } = useI18n(); + const navigate = useNavigate(); + const [open, setOpen] = useState(false); + const [items, setItems] = useState([]); + const [unread, setUnread] = useState(0); + const rootRef = useRef(null); + + useEffect(() => { + void (async () => { + const list = await repos.notifications.list(); + // 未讀優先,再依時間 + const sorted = list.slice().sort((a, b) => { + const ar = a.read_at ? 1 : 0; + const br = b.read_at ? 1 : 0; + if (ar !== br) return ar - br; + return b.created_at - a.created_at; + }); + setItems(sorted); + setUnread(await repos.notifications.unreadCount()); + })(); + }, [repos.notifications, tick]); + + useEffect(() => { + const onStore = () => refresh(); + window.addEventListener("harbor:store", onStore); + return () => window.removeEventListener("harbor:store", onStore); + }, [refresh]); + + useEffect(() => { + function onDoc(e: MouseEvent) { + if (!rootRef.current?.contains(e.target as Node)) setOpen(false); + } + document.addEventListener("mousedown", onDoc); + return () => document.removeEventListener("mousedown", onDoc); + }, []); + + async function openItem(n: AppNotification) { + await repos.notifications.markRead(n.id); + refresh(); + setOpen(false); + navigate(pathForNotification(n)); + } + + const preview = items.slice(0, PREVIEW); + const more = Math.max(0, items.length - PREVIEW); + + return ( +
+ + + {open ? ( +
+
+
+ {t("topbar.notifications")} + {unread > 0 ? ( + + {t("topbar.unread", { n: unread })} + + ) : null} +
+ {items.length > 0 ? ( + + ) : null} +
+ + {items.length === 0 ? ( +

{t("topbar.noNotifications")}

+ ) : ( +
    + {preview.map((n) => ( +
  • + +
  • + ))} +
+ )} + +
+ {more > 0 ? ( + + {t("topbar.moreOlder", { n: more })} + + ) : ( + + )} + +
+
+ ) : null} +
+ ); +} diff --git a/apps/web/src/components/layout/MobileDock.tsx b/apps/web/src/components/layout/MobileDock.tsx new file mode 100644 index 0000000..0633424 --- /dev/null +++ b/apps/web/src/components/layout/MobileDock.tsx @@ -0,0 +1,141 @@ +import { useEffect, useId, useRef, useState } from "react"; +import { NavLink, useLocation, useNavigate } from "react-router-dom"; +import { useI18n } from "../../i18n/I18nContext"; +import { + isMoreNavActive, + isNavActive, + mobileDockMoreKeys, + mobileDockPrimaryKeys, + navItemsByKeys, +} from "../../lib/nav"; +import { AppIcon } from "../ui/AppIcons"; + +export function MobileDock() { + const { pathname } = useLocation(); + const { t } = useI18n(); + const navigate = useNavigate(); + const [moreOpen, setMoreOpen] = useState(false); + const sheetRef = useRef(null); + const moreBtnRef = useRef(null); + const titleId = useId(); + + const dockItems = navItemsByKeys(mobileDockPrimaryKeys); + const moreItems = navItemsByKeys(mobileDockMoreKeys); + const moreActive = isMoreNavActive(pathname); + + useEffect(() => { + setMoreOpen(false); + }, [pathname]); + + useEffect(() => { + if (!moreOpen) return; + function onKey(e: KeyboardEvent) { + if (e.key === "Escape") setMoreOpen(false); + } + function onDoc(e: MouseEvent | TouchEvent) { + const node = e.target as Node; + if (sheetRef.current?.contains(node) || moreBtnRef.current?.contains(node)) return; + setMoreOpen(false); + } + document.addEventListener("keydown", onKey); + document.addEventListener("mousedown", onDoc); + document.addEventListener("touchstart", onDoc); + return () => { + document.removeEventListener("keydown", onKey); + document.removeEventListener("mousedown", onDoc); + document.removeEventListener("touchstart", onDoc); + }; + }, [moreOpen]); + + useEffect(() => { + if (!moreOpen) return; + const prev = document.body.style.overflow; + document.body.style.overflow = "hidden"; + return () => { + document.body.style.overflow = prev; + }; + }, [moreOpen]); + + function goMore(path: string) { + setMoreOpen(false); + navigate(path); + } + + return ( + <> + {moreOpen ? ( +
+ + + ); + })} + +
+ + ) : null} + + + + ); +} diff --git a/apps/web/src/components/layout/PageHeader.tsx b/apps/web/src/components/layout/PageHeader.tsx new file mode 100644 index 0000000..022bda5 --- /dev/null +++ b/apps/web/src/components/layout/PageHeader.tsx @@ -0,0 +1,14 @@ +type Props = { + title: string; + description?: string; +}; + +export function PageHeader({ title, description }: Props) { + const desc = description?.trim(); + return ( +
+

{title}

+ {desc ?

{desc}

: null} +
+ ); +} diff --git a/apps/web/src/components/layout/SidebarNav.tsx b/apps/web/src/components/layout/SidebarNav.tsx new file mode 100644 index 0000000..d8c781e --- /dev/null +++ b/apps/web/src/components/layout/SidebarNav.tsx @@ -0,0 +1,32 @@ +import { NavLink, useLocation } from "react-router-dom"; +import { useI18n } from "../../i18n/I18nContext"; +import { isNavActive, primaryNav } from "../../lib/nav"; +import { AppIcon } from "../ui/AppIcons"; + +export function SidebarNav() { + const { pathname } = useLocation(); + const { t } = useI18n(); + + return ( + + ); +} diff --git a/apps/web/src/components/layout/Topbar.tsx b/apps/web/src/components/layout/Topbar.tsx new file mode 100644 index 0000000..8bfc665 --- /dev/null +++ b/apps/web/src/components/layout/Topbar.tsx @@ -0,0 +1,33 @@ +import { Link } from "react-router-dom"; +import { BrandMark } from "../ui/BrandMark"; +import { useI18n } from "../../i18n/I18nContext"; +import { AccountMenu } from "./AccountMenu"; +import { BellMenu } from "./BellMenu"; +import { UsagePlanWidget } from "./UsagePlanWidget"; + +export function Topbar() { + const { t, locale } = useI18n(); + + return ( +
+ + + + {t("app.name")} + {locale === "zh-TW" ? ( + {t("app.nameEn")} + ) : ( + {t("app.nameZh")} + )} + + +
+
+ + + +
+
+
+ ); +} diff --git a/apps/web/src/components/layout/UsagePlanWidget.tsx b/apps/web/src/components/layout/UsagePlanWidget.tsx new file mode 100644 index 0000000..208e193 --- /dev/null +++ b/apps/web/src/components/layout/UsagePlanWidget.tsx @@ -0,0 +1,183 @@ +import { useEffect, useRef, useState } from "react"; +import { Link, useLocation } from "react-router-dom"; +import { useData, useRepos } from "../../data/DataContext"; +import { useI18n } from "../../i18n/I18nContext"; +import { getPlanRights } from "../../lib/planRights"; +import type { PlanId, UsageMonthSummary } from "../../lib/usageMeter"; + +/** + * 頂欄:方案名 + 剩餘點數(可讀文字,不塞細進度條)。 + * 點開再看完整進度、權益與變更方案。 + */ +export function UsagePlanWidget() { + const repos = useRepos(); + const { tick } = useData(); + const { t, formatPlanPrice } = useI18n(); + const location = useLocation(); + const [summary, setSummary] = useState(null); + const [open, setOpen] = useState(false); + const rootRef = useRef(null); + + useEffect(() => { + let alive = true; + void repos.usage.getSummary().then((s) => { + if (alive) setSummary(s); + }); + return () => { + alive = false; + }; + }, [repos.usage, tick, location.pathname, location.key, open]); + + useEffect(() => { + function onDoc(e: MouseEvent) { + if (!rootRef.current?.contains(e.target as Node)) setOpen(false); + } + document.addEventListener("mousedown", onDoc); + return () => document.removeEventListener("mousedown", onDoc); + }, []); + + if (!summary) { + return ( + + … + + ); + } + + const planId = summary.plan.id as PlanId; + const rights = getPlanRights(planId, t); + const cap = summary.plan.monthly_credits; + const used = summary.total_credits; + const left = Math.max(0, summary.remaining_credits); + const pct = cap > 0 ? Math.min(100, Math.round((used / cap) * 100)) : 0; + const tight = !summary.unlimited && (pct >= 70 || used >= cap); + const over = !summary.unlimited && used > cap; + const isFree = planId === "free"; + const price = formatPlanPrice(summary.plan.price_twd); + + const triggerHint = summary.unlimited + ? t("usage.widget.titleUnlimited", { name: summary.plan.name }) + : t("usage.widget.titleUsed", { name: summary.plan.name, used, cap }); + + return ( +
+ + + {open ? ( +
+
+
+ {t("usage.widget.currentPlan")} + + {summary.plan.name} + {summary.unlimited ? ( + + {" "} + ∞ + + ) : null} + + + {price} + {t("usage.widget.perMonth")} + +
+
+ {t("usage.widget.monthUsage")} + + {used} + /{cap} + + + {summary.unlimited + ? t("usage.widget.unlimited") + : t("usage.widget.remaining", { n: left })} + +
+
+ + {!summary.unlimited ? ( +
+
+
+ ) : null} + +
    + {rights.bullets.map((b) => ( +
  • {b}
  • + ))} +
+ + {tight ?

{t("usage.widget.nudge")}

: null} + +
+ setOpen(false)} + > + {isFree || tight ? t("usage.widget.upgrade") : t("usage.widget.changePlan")} + + setOpen(false)} + > + {t("usage.widget.usageDetail")} + +
+
+ ) : null} +
+ ); +} diff --git a/apps/web/src/components/persona/PersonaWorkbench.tsx b/apps/web/src/components/persona/PersonaWorkbench.tsx new file mode 100644 index 0000000..d8cdd7d --- /dev/null +++ b/apps/web/src/components/persona/PersonaWorkbench.tsx @@ -0,0 +1,549 @@ +import { useEffect, useMemo, useState } from "react"; +import { Badge, Button, EmptyState, Input, Select, Textarea } from "../ui"; +import { useData, useRepos } from "../../data/DataContext"; +import type { Persona, StyleDimKey, ThreadsAccount } from "../../domain/types"; +import { mockGenerateOwnPostReply, mockGenerateRoot } from "../../lib/mockAi"; +import { newId } from "../../lib/id"; +import { useI18n } from "../../i18n/I18nContext"; +import { + DIM_ORDER, + buildPersonaPromptBlock, + createEmptyPersona, + isPersonaReady, + markReady, + serializeDraftText, + toneOf, +} from "../../lib/personaPrompt"; + +type AnalyzeMode = "account" | "text"; +type DetailTab = "overview" | "analyze" | "fingerprint" | "preview"; + +export function PersonaWorkbench() { + const repos = useRepos(); + const { refresh, tick } = useData(); + const { t } = useI18n(); + + const [personas, setPersonas] = useState([]); + const [accounts, setAccounts] = useState([]); + const [activeId, setActiveId] = useState(""); + const [selectedId, setSelectedId] = useState(""); + const [detailTab, setDetailTab] = useState("overview"); + const [analyzeMode, setAnalyzeMode] = useState("account"); + const [benchmarkUsername, setBenchmarkUsername] = useState(""); + const [refText, setRefText] = useState(""); + const [sourceLabel, setSourceLabel] = useState(""); + const [busy, setBusy] = useState(""); + const [message, setMessage] = useState(""); + const [previewPost, setPreviewPost] = useState(""); + const [previewReply, setPreviewReply] = useState(""); + const [promptPreview, setPromptPreview] = useState(""); + const [showPrompt, setShowPrompt] = useState(false); + /** mobile: list vs detail */ + const [mobileShowDetail, setMobileShowDetail] = useState(false); + + const selected = useMemo( + () => personas.find((p) => p.id === selectedId) || personas[0], + [personas, selectedId], + ); + + function statusLabel(status: string): string { + if (status === "ready") return t("persona.statusReady"); + if (status === "analyzing") return t("persona.statusAnalyzing"); + return t("persona.statusPending"); + } + + async function load() { + const [list, active, accList] = await Promise.all([ + repos.personas.list(), + repos.personas.getActiveId(), + repos.accounts.list(), + ]); + setPersonas(list); + setAccounts(accList); + setActiveId(active); + setSelectedId((cur) => { + if (cur && list.some((p) => p.id === cur)) return cur; + return active || list[0]?.id || ""; + }); + } + + useEffect(() => { + void load(); + }, [tick, repos.personas, repos.accounts]); // eslint-disable-line react-hooks/exhaustive-deps + + function selectPersona(id: string) { + setSelectedId(id); + setMessage(""); + setPreviewPost(""); + setPreviewReply(""); + setPromptPreview(""); + setShowPrompt(false); + setMobileShowDetail(true); + // 未 ready 預設帶到分析 + const p = personas.find((x) => x.id === id); + if (p && !isPersonaReady(p)) setDetailTab("analyze"); + else setDetailTab("overview"); + } + + async function createPersona() { + setBusy("create"); + try { + const p = createEmptyPersona({ + id: newId("persona"), + name: t("persona.newName"), + brief: "", + status: "empty", + }); + await repos.personas.save(p); + setSelectedId(p.id); + setDetailTab("analyze"); + setMobileShowDetail(true); + setMessage(t("persona.created")); + refresh(); + await load(); + } finally { + setBusy(""); + } + } + + async function saveBasics() { + if (!selected) return; + setBusy("save"); + try { + const draftText = + selected.style.draftText.trim() || serializeDraftText(selected.style.draft); + const next = markReady({ + ...selected, + style: { ...selected.style, draftText }, + voice: selected.style.draft.tone || selected.voice, + }); + if (!draftText) next.status = "empty"; + await repos.personas.save(next); + setMessage(t("persona.saved")); + refresh(); + await load(); + } finally { + setBusy(""); + } + } + + async function runAnalyzeFromText() { + if (!selected) return; + setBusy("analyze"); + setMessage(""); + try { + const next = await repos.personas.analyzeFromText( + selected.id, + refText, + sourceLabel || undefined, + ); + setSelectedId(next.id); + setMessage(t("persona.textDone", { n: next.style.sampleCount })); + setRefText(""); + setDetailTab("fingerprint"); + refresh(); + await load(); + } catch (e) { + setMessage(e instanceof Error ? e.message : t("persona.analyzeFail")); + } finally { + setBusy(""); + } + } + + async function runAnalyzeFromAccount() { + if (!selected) return; + setBusy("analyze"); + setMessage(t("persona.reading")); + try { + const next = await repos.personas.analyzeFromAccount(selected.id, benchmarkUsername); + setSelectedId(next.id); + setMessage( + t("persona.accountDone", { + user: next.style.benchmarkUsername || benchmarkUsername, + n: next.style.sampleCount, + }), + ); + setDetailTab("fingerprint"); + refresh(); + await load(); + } catch (e) { + setMessage(e instanceof Error ? e.message : t("persona.analyzeFail")); + } finally { + setBusy(""); + } + } + + async function setDefault() { + if (!selected) return; + await repos.personas.setActiveId(selected.id); + setActiveId(selected.id); + setMessage(t("persona.setDefaultMsg", { name: selected.name })); + refresh(); + } + + async function removePersona() { + if (!selected) return; + if (!window.confirm(t("persona.confirmDelete", { name: selected.name }))) return; + setBusy("delete"); + try { + await repos.personas.remove(selected.id); + setSelectedId(""); + setMobileShowDetail(false); + setMessage(t("persona.deleted")); + refresh(); + await load(); + } finally { + setBusy(""); + } + } + + function patchSelected(partial: Partial) { + if (!selected) return; + setPersonas((list) => list.map((p) => (p.id === selected.id ? { ...p, ...partial } : p))); + } + + function patchDraftText(text: string) { + if (!selected) return; + patchSelected({ + style: { ...selected.style, draftText: text }, + status: text.trim() ? "ready" : selected.status, + }); + } + + function runPreview() { + if (!selected || !isPersonaReady(selected)) { + setMessage(t("persona.needReady")); + return; + } + const samplePost = t("persona.previewTopic"); + setPreviewPost(mockGenerateRoot(samplePost, selected)); + setPreviewReply( + mockGenerateOwnPostReply({ + postText: samplePost, + replyText: t("persona.previewReplySample"), + persona: selected, + }), + ); + setPromptPreview(buildPersonaPromptBlock(selected, "post")); + } + + const hasAnalysis = + selected && + (selected.status === "ready" || Object.keys(selected.style.dimensions).length > 0); + + const listPane = ( +
+
+ +
+ {personas.length === 0 ? ( + + ) : ( +
    + {personas.map((p) => ( +
  • + +
  • + ))} +
+ )} +
+ ); + + const detailPane = selected ? ( +
+
+ +
+ {selected.name} + + {statusLabel(selected.status)} + +
+
+ + {message ? ( +

+ {message} +

+ ) : null} + +
+ {( + [ + ["overview", "persona.tabOverview"], + ["analyze", "persona.tabAnalyze"], + ["fingerprint", "persona.tabFingerprint"], + ["preview", "persona.tabPreview"], + ] as const + ).map(([key, labelKey]) => ( + + ))} +
+ + {detailTab === "overview" ? ( +
+ patchSelected({ name: e.target.value })} + /> +