@godxjp/ui 0.2.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BRAND.md +286 -0
- package/CHANGELOG.md +94 -0
- package/README.md +189 -33
- package/dist/components/primitives.d.ts +266 -0
- package/dist/components/primitives.js +252 -0
- package/dist/components/primitives.js.map +1 -0
- package/dist/components/screens.d.ts +51 -0
- package/dist/components/screens.js +806 -0
- package/dist/components/screens.js.map +1 -0
- package/dist/components/shell.d.ts +112 -0
- package/dist/components/shell.js +768 -0
- package/dist/components/shell.js.map +1 -0
- package/dist/data.d.ts +35 -0
- package/dist/data.js +93 -0
- package/dist/data.js.map +1 -0
- package/dist/hooks.d.ts +25 -0
- package/dist/hooks.js +144 -0
- package/dist/hooks.js.map +1 -0
- package/dist/i18n.d.ts +9 -0
- package/dist/i18n.js +409 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +14 -2730
- package/dist/index.js +725 -5683
- package/dist/index.js.map +1 -1
- package/package.json +75 -117
- package/src/tokens/tokens-ext.css +401 -0
- package/src/tokens/tokens.css +765 -0
- package/src/styles/theme.css +0 -678
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/components/screens/DashboardScreen.tsx","../../src/data/products.ts","../../src/components/screens/ProjectsListScreen.tsx","../../src/components/primitives/cn.ts","../../src/components/screens/PlansScreen.tsx","../../src/components/screens/IssuesScreen.tsx","../../src/components/screens/WikiScreen.tsx","../../src/components/screens/IdeasScreen.tsx","../../src/components/screens/PlanDetailScreen.tsx","../../src/components/screens/IssueDetailScreen.tsx"],"names":["useTranslation","jsxs","Fragment","jsx","STATUS_LABEL","useState","ArrowLeft","ChevronRight"],"mappings":"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","file":"screens.js","sourcesContent":["import { Activity, BugPlay, Rocket, TrendingUp } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport type { ForgeProduct } from \"../../data/products\";\n\n// DashboardScreen — product-level dashboard. KPI strip + recent\n// activity + quick actions. Mirrors the design's\n// `ProductDashboardScreen` (screens-1.jsx).\n\ninterface ActivityRow {\n id: string;\n type: \"deploy\" | \"issue\" | \"plan\";\n who: string;\n what: string;\n when: string;\n}\n\nconst ACTIVITY: ActivityRow[] = [\n { id: \"a1\", type: \"deploy\", who: \"satoshi\", what: \"production deploy v0.42.0\", when: \"12m\" },\n { id: \"a2\", type: \"issue\", who: \"naoki\", what: \"moved GK-310 to In Review\", when: \"32m\" },\n { id: \"a3\", type: \"plan\", who: \"anh\", what: \"PDCA-Q2-001 entered Check\", when: \"1h\" },\n];\n\nexport interface DashboardScreenProps {\n product: ForgeProduct;\n}\n\nexport function DashboardScreen({ product }: DashboardScreenProps) {\n const { t } = useTranslation();\n const totalIssues = product.projects.reduce((s, p) => s + p.openIssues, 0);\n const totalPrs = product.projects.reduce((s, p) => s + p.prs, 0);\n\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{product.name} · {t(\"nav.dashboard\")}</h1>\n <p className=\"page-subtitle\">{product.desc}</p>\n </div>\n </div>\n\n <div className=\"grid grid-cols-4 gap-3 mb-6\">\n <Kpi label={t(\"kpi.activeDevs\")} value={String(product.devs)} icon={Activity} delta=\"+1\" />\n <Kpi label={t(\"kpi.openIssues\")} value={String(totalIssues)} icon={BugPlay} delta={`${totalPrs} PR`} />\n <Kpi label={t(\"kpi.deployments\")} value=\"14\" icon={Rocket} delta=\"+3\" />\n <Kpi label={t(\"kpi.uptime\")} value=\"99.94%\" icon={TrendingUp} delta=\"30d\" />\n </div>\n\n <div className=\"grid grid-cols-3 gap-3\">\n <section className=\"card col-span-2\">\n <header className=\"card-header\">\n <h2 className=\"card-title\">{t(\"kpi.recentActivity\")}</h2>\n </header>\n <ul className=\"flex flex-col gap-1\">\n {ACTIVITY.map((a) => (\n <li key={a.id} className=\"log-line\">\n <span className=\"time\">{a.when}</span>\n <span className={`src ${a.type === \"deploy\" ? \"ok\" : a.type === \"plan\" ? \"\" : \"warn\"}`}>{a.who}</span>\n <span>{a.what}</span>\n </li>\n ))}\n </ul>\n </section>\n\n <section className=\"card\">\n <header className=\"card-header\">\n <h2 className=\"card-title\">{t(\"kpi.quickActions\")}</h2>\n </header>\n <div className=\"flex flex-col gap-2\">\n <button className=\"btn btn-secondary justify-start\">{t(\"nav.plans\")}</button>\n <button className=\"btn btn-secondary justify-start\">{t(\"nav.issues\")}</button>\n <button className=\"btn btn-secondary justify-start\">{t(\"nav.ideas\")}</button>\n <button className=\"btn btn-secondary justify-start\">{t(\"nav.gantt\")}</button>\n </div>\n </section>\n </div>\n </>\n );\n}\n\nfunction Kpi({\n label,\n value,\n icon: Icon,\n delta,\n}: {\n label: string;\n value: string;\n icon: React.ComponentType<{ size?: number }>;\n delta?: string;\n}) {\n return (\n <div className=\"kpi\">\n <span className=\"kpi-label\">\n <Icon size={14} /> {label}\n </span>\n <span className=\"kpi-value\">{value}</span>\n {delta && <span className=\"kpi-delta\">{delta}</span>}\n </div>\n );\n}\n","// Product / project registry — mock data layer.\n//\n// Mirrors the design prototype's `PRODUCTS` array (shell.jsx). Today\n// this is a static fixture so the UI shell renders end-to-end; a\n// follow-up phase will swap it for `/api/v1/orgs/...` calls against\n// forge-service + identity-service.\n//\n// Vocabulary:\n// Product = Org (GitHub-shaped tenant). Owns projects, members,\n// domains, design tokens (per the OKLCH tenant override\n// in tokens-ext.css).\n// Project = Repo. Has a stack (e.g. \"Vue 3 · Vite\"), kind\n// (service / web / desktop / mobile / library / infra /\n// workstation), branch, lastCommit, openIssues, prs.\n//\n// Tenants must match a `[data-tenant=\"<id>\"]` block in tokens-ext.css.\nexport type ProjectKind =\n | \"service\"\n | \"web\"\n | \"desktop\"\n | \"workstation\"\n | \"mobile\"\n | \"library\"\n | \"infra\";\n\nexport type ProjectStatus = \"active\" | \"review\" | \"planning\" | \"archived\";\n\nexport type ForgeProject = {\n id: string;\n name: string;\n stack: string;\n kind: ProjectKind;\n devs: number;\n status: ProjectStatus;\n branch: string;\n lastCommit: string;\n openIssues: number;\n prs: number;\n sandbox: boolean;\n};\n\nexport type ForgeProduct = {\n id: string;\n name: string;\n tenant: \"godx\" | \"kintai\" | \"tempo\" | \"betoya\" | \"restaurant\";\n role: string;\n desc: string;\n /** Brand color in OKLCH — used as the sidebar logo mark + accent. */\n color: string;\n owner: string;\n devs: number;\n projects: ForgeProject[];\n};\n\nexport const PRODUCTS: ForgeProduct[] = [\n {\n id: \"restaurant\",\n name: \"godx-restaurant\",\n tenant: \"restaurant\",\n role: \"レストラン管理\",\n desc: \"店舗向け統合管理プラットフォーム\",\n color: \"oklch(58% 0.18 25)\",\n owner: \"Satoshi F\",\n devs: 6,\n projects: [\n { id: \"api\", name: \"restaurant-api\", stack: \"NestJS · PostgreSQL\", kind: \"service\", devs: 3, status: \"active\", branch: \"main\", lastCommit: \"12分前\", openIssues: 8, prs: 2, sandbox: true },\n { id: \"admin\", name: \"restaurant-admin\", stack: \"Next.js 14 · React\", kind: \"web\", devs: 2, status: \"active\", branch: \"main\", lastCommit: \"1時間前\", openIssues: 5, prs: 1, sandbox: true },\n { id: \"pos\", name: \"restaurant-pos\", stack: \"Tauri · Vue 3\", kind: \"desktop\", devs: 1, status: \"active\", branch: \"feature/print\", lastCommit: \"30分前\", openIssues: 3, prs: 1, sandbox: true },\n { id: \"kds\", name: \"restaurant-kds\", stack: \"React · Electron\", kind: \"workstation\", devs: 1, status: \"review\", branch: \"main\", lastCommit: \"昨日\", openIssues: 2, prs: 1, sandbox: true },\n { id: \"kintai\", name: \"restaurant-kintai\", stack: \"Vue 3 · Laravel\", kind: \"service\", devs: 2, status: \"active\", branch: \"main\", lastCommit: \"5分前\", openIssues: 4, prs: 0, sandbox: true },\n { id: \"mobile\", name: \"restaurant-mobile\", stack: \"React Native\", kind: \"mobile\", devs: 1, status: \"planning\", branch: \"develop\", lastCommit: \"3日前\", openIssues: 1, prs: 0, sandbox: false },\n ],\n },\n {\n id: \"godx\",\n name: \"godx-admin\",\n tenant: \"godx\",\n role: \"Platform admin\",\n desc: \"GoDX Forge developer workspace\",\n color: \"oklch(60% 0.137 163)\",\n owner: \"Satoshi F\",\n devs: 4,\n projects: [\n { id: \"frontend\", name: \"godx-admin-frontend\", stack: \"React · Vite\", kind: \"web\", devs: 2, status: \"active\", branch: \"master\", lastCommit: \"2時間前\", openIssues: 6, prs: 2, sandbox: true },\n { id: \"api\", name: \"godx-admin-api\", stack: \"Go · Gin\", kind: \"service\", devs: 1, status: \"active\", branch: \"master\", lastCommit: \"4時間前\", openIssues: 3, prs: 1, sandbox: true },\n { id: \"ui\", name: \"@godxjp/ui\", stack: \"TypeScript · React\", kind: \"library\", devs: 2, status: \"active\", branch: \"master\", lastCommit: \"1時間前\", openIssues: 2, prs: 0, sandbox: false },\n ],\n },\n {\n id: \"kintai\",\n name: \"dxs-kintai\",\n tenant: \"kintai\",\n role: \"HR / Attendance\",\n desc: \"勤怠管理プラットフォーム\",\n color: \"oklch(56% 0.15 240)\",\n owner: \"Naoki N\",\n devs: 3,\n projects: [\n { id: \"frontend\", name: \"kintai-web\", stack: \"Vue 3 · Vite\", kind: \"web\", devs: 2, status: \"active\", branch: \"main\", lastCommit: \"20分前\", openIssues: 7, prs: 1, sandbox: true },\n { id: \"backend\", name: \"kintai-api\", stack: \"Laravel 11\", kind: \"service\", devs: 1, status: \"active\", branch: \"main\", lastCommit: \"1日前\", openIssues: 4, prs: 0, sandbox: true },\n ],\n },\n {\n id: \"tempo\",\n name: \"dxs-tempo\",\n tenant: \"tempo\",\n role: \"Shop / Inventory\",\n desc: \"店舗・在庫バックエンド\",\n color: \"oklch(48% 0.16 285)\",\n owner: \"Naoki N\",\n devs: 2,\n projects: [\n { id: \"api\", name: \"tempo-api\", stack: \"Go · Echo\", kind: \"service\", devs: 2, status: \"active\", branch: \"main\", lastCommit: \"5時間前\", openIssues: 9, prs: 1, sandbox: true },\n { id: \"ops\", name: \"tempo-ops\", stack: \"Terraform\", kind: \"infra\", devs: 1, status: \"planning\", branch: \"main\", lastCommit: \"1週間前\", openIssues: 1, prs: 0, sandbox: false },\n ],\n },\n {\n id: \"betoya\",\n name: \"betoya\",\n tenant: \"betoya\",\n role: \"Vietnamese restaurant\",\n desc: \"ベト屋 Tenant\",\n color: \"oklch(58% 0.159 150)\",\n owner: \"Anh K\",\n devs: 1,\n projects: [\n { id: \"site\", name: \"betoya-site\", stack: \"Astro\", kind: \"web\", devs: 1, status: \"active\", branch: \"main\", lastCommit: \"昨日\", openIssues: 2, prs: 0, sandbox: false },\n ],\n },\n];\n\nexport const PROJECT_KIND: Record<ProjectKind, { color: string; label: string }> = {\n service: { color: \"oklch(60% 0.137 163)\", label: \"API\" },\n web: { color: \"oklch(56% 0.15 240)\", label: \"Web\" },\n desktop: { color: \"oklch(48% 0.16 285)\", label: \"Desktop\" },\n workstation: { color: \"oklch(50% 0.16 30)\", label: \"Workstation\" },\n mobile: { color: \"oklch(58% 0.18 25)\", label: \"Mobile\" },\n library: { color: \"oklch(50% 0.05 250)\", label: \"Library\" },\n infra: { color: \"oklch(45% 0.05 260)\", label: \"Infra\" },\n};\n\nexport function findProductByTenant(tenant: string): ForgeProduct | undefined {\n return PRODUCTS.find((p) => p.tenant === tenant);\n}\n","import { GitBranch } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\nimport { PROJECT_KIND, type ForgeProduct, type ForgeProject } from \"../../data/products\";\n\n// ProjectsListScreen — every project owning the active product, in a\n// design-system `.table` shape. Click a row to drill in.\nexport interface ProjectsListScreenProps {\n product: ForgeProduct;\n onSelect: (project: ForgeProject) => void;\n}\n\nexport function ProjectsListScreen({ product, onSelect }: ProjectsListScreenProps) {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{t(\"nav.projects\")}</h1>\n <p className=\"page-subtitle\">\n {product.name} · {product.projects.length} {t(\"nav.projects\").toLowerCase()}\n </p>\n </div>\n <div className=\"page-actions\">\n <button className=\"btn btn-primary\">+ {t(\"common.new\")}</button>\n </div>\n </div>\n\n <div className=\"card p-0 overflow-hidden\">\n <table className=\"table\">\n <thead>\n <tr>\n <th>Project</th>\n <th>Stack</th>\n <th>Kind</th>\n <th className=\"num\">Devs</th>\n <th className=\"num\">Issues</th>\n <th className=\"num\">PR</th>\n <th>Branch</th>\n <th>Last commit</th>\n </tr>\n </thead>\n <tbody>\n {product.projects.map((p) => (\n <tr key={p.id} onClick={() => onSelect(p)} className=\"cursor-pointer\">\n <td className=\"font-medium\">{p.name}</td>\n <td className=\"muted\">{p.stack}</td>\n <td>\n <span className=\"chip\" style={{ color: PROJECT_KIND[p.kind].color }}>\n {PROJECT_KIND[p.kind].label}\n </span>\n </td>\n <td className=\"num\">{p.devs}</td>\n <td className=\"num\">{p.openIssues}</td>\n <td className=\"num\">{p.prs}</td>\n <td className=\"mono\">\n <span className=\"inline-flex items-center gap-1\">\n <GitBranch size={11} /> {p.branch}\n </span>\n </td>\n <td className=\"muted\">{p.lastCommit}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n );\n}\n","// cn — class-name merger. Standard shadcn utility: clsx merges values\n// and tailwind-merge resolves Tailwind class conflicts (e.g. last\n// `bg-*` wins). Every primitive in this package and every consumer\n// service imports cn from this single location to keep the dedupe\n// rules consistent.\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { useTranslation } from \"react-i18next\";\nimport { cn } from \"../primitives/cn\";\n\ntype Phase = \"plan\" | \"do\" | \"check\" | \"act\";\ntype Health = \"ok\" | \"at-risk\" | \"off-track\";\n\ninterface PlanCardData {\n id: string;\n number: number;\n title: string;\n phase: Phase;\n health: Health;\n owner: string;\n due: string;\n progress: number;\n}\n\nconst PLANS: PlanCardData[] = [\n { id: \"PDCA-Q2-001\", number: 1, title: \"OAuth migration kickoff\", phase: \"check\", health: \"at-risk\", owner: \"satoshi\", due: \"2026-06-30\", progress: 64 },\n { id: \"PDCA-Q2-002\", number: 2, title: \"Forge-service extraction (Plan #19)\", phase: \"do\", health: \"ok\", owner: \"naoki\", due: \"2026-07-14\", progress: 41 },\n { id: \"PDCA-Q2-003\", number: 3, title: \"Sandbox secrets via Vault (Plan #38)\", phase: \"plan\", health: \"ok\", owner: \"anh\", due: \"2026-08-01\", progress: 12 },\n { id: \"PDCA-Q2-004\", number: 4, title: \"Knowledge-service slug routing (Plan #18)\", phase: \"act\", health: \"ok\", owner: \"kira\", due: \"2026-05-31\", progress: 92 },\n];\n\nconst PHASE_LABEL: Record<Phase, string> = { plan: \"Plan\", do: \"Do\", check: \"Check\", act: \"Act\" };\nconst HEALTH_TONE: Record<Health, string> = {\n ok: \"badge-success\",\n \"at-risk\": \"badge-warning\",\n \"off-track\": \"badge-error\",\n};\n\nexport interface PlansScreenProps {\n onOpenPlan: (id: string) => void;\n}\n\nexport function PlansScreen({ onOpenPlan }: PlansScreenProps) {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{t(\"nav.plans\")}</h1>\n <p className=\"page-subtitle\">{PLANS.length} plans · PDCA cycle</p>\n </div>\n <div className=\"page-actions\">\n <button className=\"btn btn-primary\">+ {t(\"common.new\")}</button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n {PLANS.map((plan) => (\n <button\n key={plan.id}\n type=\"button\"\n onClick={() => onOpenPlan(plan.id)}\n className=\"card text-left hover:border-primary transition-colors\"\n >\n <div className=\"flex items-center gap-2 mb-2\">\n <span className=\"text-xs font-mono text-muted-foreground\">#{plan.id}</span>\n <span className=\"badge badge-neutral\">\n <span className=\"dot\" /> {PHASE_LABEL[plan.phase]}\n </span>\n <span className={cn(\"badge\", HEALTH_TONE[plan.health])}>\n <span className=\"dot\" />\n {plan.health}\n </span>\n </div>\n <h3 className=\"text-base font-medium mb-2\">{plan.title}</h3>\n <div className=\"flex items-center gap-2 text-xs text-muted-foreground mb-3\">\n <span>@{plan.owner}</span>\n <span>·</span>\n <span>{plan.due}</span>\n </div>\n <div className=\"h-1.5 bg-surface-3 rounded-full overflow-hidden\">\n <div className=\"h-full bg-primary transition-all\" style={{ width: `${plan.progress}%` }} />\n </div>\n <span className=\"text-[10px] text-muted-foreground mt-1 block tnum\">{plan.progress}%</span>\n </button>\n ))}\n </div>\n </>\n );\n}\n","import { useTranslation } from \"react-i18next\";\n\ntype IssueStatus = \"backlog\" | \"in-progress\" | \"review\" | \"done\";\ntype IssuePriority = \"low\" | \"medium\" | \"high\" | \"urgent\";\ntype IssueType = \"task\" | \"bug\" | \"feature\" | \"chore\";\n\ninterface IssueCardData {\n id: string;\n status: IssueStatus;\n title: string;\n type: IssueType;\n priority: IssuePriority;\n assignee: string;\n}\n\nconst ISSUES: IssueCardData[] = [\n { id: \"GK-301\", status: \"backlog\", title: \"Notify SSE handshake retries when token expired\", type: \"bug\", priority: \"high\", assignee: \"satoshi\" },\n { id: \"GK-310\", status: \"in-progress\", title: \"Wire sticky QuickComposer for backlog-style edits\", type: \"feature\", priority: \"medium\", assignee: \"naoki\" },\n { id: \"GK-311\", status: \"in-progress\", title: \"Tweaks panel keyboard shortcut conflict\", type: \"task\", priority: \"low\", assignee: \"anh\" },\n { id: \"GK-302\", status: \"review\", title: \"Forge nav grouping per audience\", type: \"task\", priority: \"medium\", assignee: \"kira\" },\n { id: \"GK-298\", status: \"done\", title: \"Drop NOT NULL project_id on plans/issues\", type: \"bug\", priority: \"urgent\", assignee: \"satoshi\" },\n];\n\nconst COLS: { id: IssueStatus; label: string }[] = [\n { id: \"backlog\", label: \"Backlog\" },\n { id: \"in-progress\", label: \"In progress\" },\n { id: \"review\", label: \"Review\" },\n { id: \"done\", label: \"Done\" },\n];\n\nconst PRIO_DOT: Record<IssuePriority, string> = {\n low: \"var(--muted-foreground)\",\n medium: \"var(--info)\",\n high: \"var(--warning)\",\n urgent: \"var(--destructive)\",\n};\n\nexport interface IssuesScreenProps {\n onOpenIssue: (id: string) => void;\n}\n\nexport function IssuesScreen({ onOpenIssue }: IssuesScreenProps) {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{t(\"nav.issues\")}</h1>\n <p className=\"page-subtitle\">{ISSUES.length} issues</p>\n </div>\n <div className=\"page-actions\">\n <button className=\"btn btn-primary\">+ {t(\"common.new\")}</button>\n </div>\n </div>\n\n <div className=\"kanban\">\n {COLS.map((col) => {\n const rows = ISSUES.filter((i) => i.status === col.id);\n return (\n <div key={col.id} className=\"kanban-col\">\n <div className=\"kanban-col-head\">\n <span>{col.label}</span>\n <span className=\"kanban-col-count\">{rows.length}</span>\n </div>\n {rows.map((issue) => (\n <button\n key={issue.id}\n type=\"button\"\n onClick={() => onOpenIssue(issue.id)}\n className=\"issue-card text-left\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"issue-id\">{issue.id}</span>\n <span\n className=\"dot\"\n style={{ background: PRIO_DOT[issue.priority] }}\n aria-label={issue.priority}\n />\n <span className=\"chip ml-auto\">{issue.type}</span>\n </div>\n <span className=\"issue-title\">{issue.title}</span>\n <span className=\"text-[10px] text-muted-foreground\">@{issue.assignee}</span>\n </button>\n ))}\n </div>\n );\n })}\n </div>\n </>\n );\n}\n","import { useTranslation } from \"react-i18next\";\n\n// WikiScreen — 3-column wiki layout (TOC · prose · meta). Content is\n// a static placeholder; consumers replace `children` with their\n// markdown-rendered body.\nexport interface WikiScreenProps {\n toc?: Array<{ id: string; label: string }>;\n children?: React.ReactNode;\n meta?: React.ReactNode;\n}\n\nconst DEFAULT_TOC = [\n { id: \"intro\", label: \"Introduction\" },\n { id: \"stack\", label: \"Stack\" },\n { id: \"deployment\", label: \"Deployment\" },\n { id: \"onboarding\", label: \"Onboarding\" },\n];\n\nexport function WikiScreen({ toc = DEFAULT_TOC, children, meta }: WikiScreenProps) {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{t(\"nav.wiki\")}</h1>\n <p className=\"page-subtitle\">Living documentation</p>\n </div>\n <div className=\"page-actions\">\n <button className=\"btn btn-primary\">+ {t(\"common.new\")}</button>\n </div>\n </div>\n\n <div className=\"wiki-layout\">\n <nav className=\"wiki-toc\" aria-label=\"Table of contents\">\n {toc.map((entry, i) => (\n <a key={entry.id} href={`#${entry.id}`} className={i === 0 ? \"active\" : undefined}>\n {entry.label}\n </a>\n ))}\n </nav>\n\n <article className=\"prose\">\n {children ?? (\n <>\n <h1 id=\"intro\">GoDX Forge — Engineering handbook</h1>\n <p>\n This wiki is a living reference for everyone working on the GoDX\n Forge platform. It mirrors the source-of-truth documentation that\n lives in <code>docs/</code>; edits here are commits.\n </p>\n <h2 id=\"stack\">Stack</h2>\n <p>\n Each frontend service consumes <code>@godxjp/ui</code> for tokens,\n primitives, shell, i18n. Backend kernel lives in{\" \"}\n <code>services/_sdk/</code> (Go).\n </p>\n <ul>\n <li>React 19 · Vite · TypeScript</li>\n <li>Tailwind v4 with CSS-first <code>@theme</code> bridge</li>\n <li>i18next auto-detect + JA fallback</li>\n </ul>\n <h2 id=\"deployment\">Deployment</h2>\n <p>\n Compose-orchestrated; subdomains route through Caddy per\n <code>deploy/docker/Caddyfile</code>.\n </p>\n <h2 id=\"onboarding\">Onboarding</h2>\n <p>\n See <code>docs/onboarding/dev.md</code> for the day-0 checklist.\n </p>\n </>\n )}\n </article>\n\n <aside className=\"text-xs text-muted-foreground\" aria-label=\"Meta\">\n {meta ?? (\n <>\n <div className=\"text-[10px] uppercase tracking-wider mb-2\">Updated</div>\n <p>2 hours ago by @satoshi</p>\n </>\n )}\n </aside>\n </div>\n </>\n );\n}\n","import { useTranslation } from \"react-i18next\";\n\ntype IdeaStatus = \"draft\" | \"under_review\" | \"scored\" | \"accepted\" | \"rejected\";\ntype Appetite = \"1d\" | \"3d\" | \"1w\" | \"2w\" | \"6w\";\n\ninterface IdeaCardData {\n id: string;\n title: string;\n problem: string;\n appetite: Appetite;\n status: IdeaStatus;\n votes: number;\n pitched_by: string;\n}\n\nconst IDEAS: IdeaCardData[] = [\n { id: \"IDEA-12\", title: \"Bulk action on issues board\", problem: \"Triaging 30+ issues requires clicking each card. Need shift-click multi-select + bulk move/edit.\", appetite: \"1w\", status: \"under_review\", votes: 7, pitched_by: \"satoshi\" },\n { id: \"IDEA-13\", title: \"Sandbox snapshot for AI debugging\", problem: \"When agent goes off the rails I want to time-travel the sandbox FS to a known-good state.\", appetite: \"6w\", status: \"draft\", votes: 4, pitched_by: \"naoki\" },\n { id: \"IDEA-14\", title: \"Workspace dark-mode default detection\", problem: \"First-load flicker as theme resolves from localStorage — should follow system pref pre-hydration.\", appetite: \"3d\", status: \"scored\", votes: 2, pitched_by: \"anh\" },\n];\n\nconst STATUS_TONE: Record<IdeaStatus, string> = {\n draft: \"badge-neutral\",\n under_review: \"badge-info\",\n scored: \"badge-warning\",\n accepted: \"badge-success\",\n rejected: \"badge-error\",\n};\n\nconst STATUS_LABEL: Record<IdeaStatus, string> = {\n draft: \"Draft\",\n under_review: \"Review\",\n scored: \"Scored\",\n accepted: \"Accepted\",\n rejected: \"Rejected\",\n};\n\nexport function IdeasScreen() {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">{t(\"nav.ideas\")}</h1>\n <p className=\"page-subtitle\">Shape Up — problem · appetite · solution</p>\n </div>\n <div className=\"page-actions\">\n <button className=\"btn btn-primary\">+ {t(\"common.new\")}</button>\n </div>\n </div>\n\n <div className=\"grid grid-cols-3 gap-3\">\n {IDEAS.map((idea) => (\n <article key={idea.id} className=\"card flex flex-col gap-2\">\n <header className=\"flex items-center gap-2\">\n <span className=\"text-xs font-mono text-muted-foreground\">{idea.id}</span>\n <span className={`badge ${STATUS_TONE[idea.status]}`}>\n <span className=\"dot\" /> {STATUS_LABEL[idea.status]}\n </span>\n <span className=\"chip ml-auto\">⏱ {idea.appetite}</span>\n </header>\n <h3 className=\"text-base font-medium\">{idea.title}</h3>\n <p className=\"text-xs text-muted-foreground line-clamp-3\">{idea.problem}</p>\n <footer className=\"flex items-center gap-2 text-[10px] text-muted-foreground mt-auto pt-2 border-t border-border\">\n <span>@{idea.pitched_by}</span>\n <span className=\"ml-auto\">▲ {idea.votes}</span>\n </footer>\n </article>\n ))}\n </div>\n </>\n );\n}\n","import { ArrowLeft, ChevronRight } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"../primitives/cn\";\n\ntype Phase = \"plan\" | \"do\" | \"check\" | \"act\";\n\nconst PHASES: Array<{ id: Phase; description: string }> = [\n { id: \"plan\", description: \"Frame the goal + design contract\" },\n { id: \"do\", description: \"Execute + track progress\" },\n { id: \"check\", description: \"Measure outcomes + review\" },\n { id: \"act\", description: \"Standardize + roll out\" },\n];\n\nconst LINKED_TASKS = [\n { id: \"GK-310\", title: \"Wire sticky QuickComposer\", owner: \"naoki\", state: \"in-progress\" },\n { id: \"GK-301\", title: \"SSE retry on token expire\", owner: \"satoshi\", state: \"review\" },\n { id: \"GK-302\", title: \"Forge nav grouping\", owner: \"kira\", state: \"review\" },\n];\n\nconst KPI = [\n { label: \"Activation rate\", value: \"62%\", delta: \"+8\" },\n { label: \"Time to first plan\", value: \"4m12s\", delta: \"-22s\" },\n { label: \"Plans per dev\", value: \"1.4\", delta: \"+0.3\" },\n { label: \"Hypothesis hit\", value: \"3/5\", delta: \"\" },\n];\n\nconst ADOPTION = [\n { tag: \"ADOPT\", title: \"Sticky QuickComposer is now default\", color: \"var(--success)\" },\n { tag: \"TRY\", title: \"Markdown preview in modal — gather 1 sprint feedback\", color: \"var(--info)\" },\n { tag: \"DROP\", title: \"Auto-save every keystroke (too aggressive)\", color: \"var(--destructive)\" },\n { tag: \"PARK\", title: \"AI-suggested labels (waiting on plan #21 G18)\", color: \"var(--muted-foreground)\" },\n];\n\n// PlanDetailScreen — PDCA cycle visualizer. Click phase pill to swap\n// the body view. Static handoff data — caller swaps in real backend\n// payload in a later phase. Mirrors design's PlanDetailScreen\n// (screens-detail.jsx).\nexport interface PlanDetailScreenProps {\n planId: string;\n onBack: () => void;\n onOpenIssue: (id: string) => void;\n}\n\nexport function PlanDetailScreen({ planId, onBack, onOpenIssue }: PlanDetailScreenProps) {\n const { t } = useTranslation();\n const [phase, setPhase] = useState<Phase>(\"check\");\n\n return (\n <>\n <div className=\"flex items-center gap-2 mb-4 text-xs\">\n <button onClick={onBack} className=\"tb-icon-btn\" aria-label={t(\"common.back\")}>\n <ArrowLeft size={14} />\n </button>\n <span className=\"text-muted-foreground\">{t(\"nav.plans\")}</span>\n <ChevronRight size={12} className=\"text-muted-foreground\" />\n <span className=\"font-mono\">{planId}</span>\n </div>\n\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">OAuth migration kickoff</h1>\n <p className=\"page-subtitle\">\n Q2 PDCA — moving the legacy admin login chain to OIDC end-to-end\n </p>\n </div>\n <div className=\"page-actions\">\n <span className=\"badge badge-warning\">\n <span className=\"dot\" /> at risk\n </span>\n </div>\n </div>\n\n <div className=\"grid grid-cols-4 gap-2 mb-6\">\n {PHASES.map((p, idx) => {\n const active = p.id === phase;\n return (\n <button\n key={p.id}\n type=\"button\"\n onClick={() => setPhase(p.id)}\n className={cn(\"relative card text-left transition-colors\", active && \"border-primary\")}\n aria-current={active}\n >\n <span className=\"text-[10px] uppercase tracking-wider text-muted-foreground\">\n Step {idx + 1}\n </span>\n <h3 className=\"text-base font-medium mt-1\">{t(`pdca.${p.id}`)}</h3>\n <p className=\"text-xs text-muted-foreground mt-1\">{p.description}</p>\n {idx < PHASES.length - 1 && (\n <ChevronRight\n size={14}\n className=\"absolute -right-2.5 top-1/2 -translate-y-1/2 bg-background border border-border rounded-full text-muted-foreground\"\n />\n )}\n </button>\n );\n })}\n </div>\n\n {phase === \"plan\" && (\n <section className=\"card\">\n <h2 className=\"card-title mb-3\">{t(\"pdca.hypothesis\")}</h2>\n <p className=\"text-sm\">\n Replacing the legacy admin password form with the OIDC chain will\n cut authentication failures by 40% within one quarter.\n </p>\n <h3 className=\"card-title mt-6 mb-2\">{t(\"pdca.metrics\")}</h3>\n <ul className=\"text-sm list-disc pl-5\">\n <li>Auth failures < 0.5% of attempts</li>\n <li>Time-to-sign-in < 3s p95</li>\n <li>Zero password resets logged for SSO users</li>\n </ul>\n <h3 className=\"card-title mt-6 mb-2\">{t(\"pdca.risks\")}</h3>\n <ul className=\"text-sm list-disc pl-5 text-muted-foreground\">\n <li>Identity-portal cookie domain drift between envs</li>\n <li>RFC 9457 problem-detail rollout coupling</li>\n </ul>\n </section>\n )}\n\n {phase === \"do\" && (\n <section className=\"card\">\n <h2 className=\"card-title mb-3\">{t(\"pdca.linkedTasks\")}</h2>\n <table className=\"table\">\n <thead>\n <tr>\n <th>ID</th>\n <th>Title</th>\n <th>Owner</th>\n <th>State</th>\n </tr>\n </thead>\n <tbody>\n {LINKED_TASKS.map((task) => (\n <tr key={task.id} onClick={() => onOpenIssue(task.id)} className=\"cursor-pointer\">\n <td className=\"mono\">{task.id}</td>\n <td>{task.title}</td>\n <td className=\"muted\">@{task.owner}</td>\n <td>\n <span className=\"badge badge-neutral\">\n <span className=\"dot\" /> {task.state}\n </span>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n )}\n\n {phase === \"check\" && (\n <>\n <div className=\"grid grid-cols-4 gap-3 mb-4\">\n {KPI.map((k) => (\n <div key={k.label} className=\"kpi\">\n <span className=\"kpi-label\">{k.label}</span>\n <span className=\"kpi-value\">{k.value}</span>\n {k.delta && (\n <span className={cn(\"kpi-delta\", k.delta.startsWith(\"-\") && \"down\")}>{k.delta}</span>\n )}\n </div>\n ))}\n </div>\n <section className=\"card\">\n <h2 className=\"card-title mb-3\">{t(\"pdca.review\")}</h2>\n <Sparkline />\n </section>\n </>\n )}\n\n {phase === \"act\" && (\n <div className=\"grid grid-cols-2 gap-3\">\n {ADOPTION.map((a) => (\n <div key={a.tag} className=\"card flex flex-col gap-2\">\n <span\n className=\"text-[10px] font-medium uppercase tracking-wider\"\n style={{ color: a.color }}\n >\n {a.tag}\n </span>\n <p className=\"text-sm\">{a.title}</p>\n </div>\n ))}\n </div>\n )}\n </>\n );\n}\n\nfunction Sparkline() {\n const points = [12, 14, 16, 13, 18, 22, 19, 24, 28, 26, 30, 34, 31, 38];\n const max = Math.max(...points);\n const path = points\n .map((y, i) => `${i === 0 ? \"M\" : \"L\"}${(i / (points.length - 1)) * 100},${100 - (y / max) * 80}`)\n .join(\" \");\n return (\n <svg viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" className=\"spark\" style={{ height: 80 }}>\n <path d={`${path} L100,100 L0,100 Z`} className=\"area\" />\n <path d={path} className=\"line\" />\n </svg>\n );\n}\n","import * as Popover from \"@radix-ui/react-popover\";\nimport { ArrowLeft, ChevronRight, Send } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { cn } from \"../primitives/cn\";\n\ntype Tab = \"conversation\" | \"checklist\" | \"code\" | \"history\";\ntype IssueStatus = \"backlog\" | \"in-progress\" | \"review\" | \"done\" | \"abandoned\";\ntype IssuePriority = \"low\" | \"medium\" | \"high\" | \"urgent\";\n\nconst STATUS_LABEL: Record<IssueStatus, string> = {\n backlog: \"Backlog\",\n \"in-progress\": \"In progress\",\n review: \"Review\",\n done: \"Done\",\n abandoned: \"Abandoned\",\n};\n\nconst PRIORITY_LABEL: Record<IssuePriority, string> = {\n low: \"P3\",\n medium: \"P2\",\n high: \"P1\",\n urgent: \"P0\",\n};\n\nconst TEAM = [\"satoshi\", \"naoki\", \"anh\", \"kira\"];\n\nconst COMMENTS = [\n { id: \"c1\", who: \"satoshi\", when: \"2h\", body: \"Cloned latest design; QuickComposer collapse is 52px, expand on focus.\" },\n { id: \"c2\", who: \"naoki\", when: \"1h\", body: \"Picked P1 — release window is tight.\" },\n { id: \"c3\", who: \"anh\", when: \"12m\", body: \"Backend ON CONFLICT works; reproduced count 1→2 via curl.\" },\n];\n\n// IssueDetailScreen — Linear/GitLab-style detail page with the sticky\n// QuickComposer pinned to the page bottom (per chat2.md feedback).\n//\n// Composer collapses to 52 px; focusing the input expands it to a\n// markdown editor with three inline pill-pickers (status / assignee /\n// priority). Changed pills glow orange + a \"submitWithChanges\" badge\n// surfaces so the user knows the comment will commit those state\n// changes alongside.\nexport interface IssueDetailScreenProps {\n issueId: string;\n onBack: () => void;\n onOpenPlan: (id: string) => void;\n}\n\nexport function IssueDetailScreen({ issueId, onBack, onOpenPlan }: IssueDetailScreenProps) {\n const { t } = useTranslation();\n const [tab, setTab] = useState<Tab>(\"conversation\");\n\n const [composerOpen, setComposerOpen] = useState(false);\n const [body, setBody] = useState(\"\");\n const [status, setStatus] = useState<IssueStatus>(\"in-progress\");\n const [assignee, setAssignee] = useState<string>(TEAM[0]);\n const [priority, setPriority] = useState<IssuePriority>(\"medium\");\n const initial = { status: \"in-progress\" as IssueStatus, assignee: TEAM[0], priority: \"medium\" as IssuePriority };\n const hasChanges =\n status !== initial.status || assignee !== initial.assignee || priority !== initial.priority;\n\n return (\n <div\n className=\"flex flex-col\"\n style={{ minHeight: \"calc(100vh - var(--header-height))\" }}\n >\n <div className=\"flex-1\">\n <div className=\"flex items-center gap-2 mb-4 text-xs\">\n <button onClick={onBack} className=\"tb-icon-btn\" aria-label={t(\"common.back\")}>\n <ArrowLeft size={14} />\n </button>\n <span className=\"text-muted-foreground\">{t(\"nav.issues\")}</span>\n <ChevronRight size={12} className=\"text-muted-foreground\" />\n <span className=\"font-mono\">{issueId}</span>\n </div>\n\n <div className=\"page-header\">\n <div>\n <h1 className=\"page-title\">\n Wire sticky QuickComposer for backlog-style edits\n </h1>\n <p className=\"page-subtitle\">@naoki opened · 2 days ago</p>\n </div>\n <div className=\"page-actions\">\n <span className=\"badge badge-info\">\n <span className=\"dot\" /> {STATUS_LABEL[status]}\n </span>\n <span className=\"badge badge-warning\">{PRIORITY_LABEL[priority]}</span>\n </div>\n </div>\n\n <div className=\"grid gap-6\" style={{ gridTemplateColumns: \"1fr 240px\" }}>\n <div>\n <div className=\"tabs mb-4\">\n <button className=\"tab\" data-active={tab === \"conversation\"} onClick={() => setTab(\"conversation\")}>\n {t(\"issue.conversation\")}\n </button>\n <button className=\"tab\" data-active={tab === \"checklist\"} onClick={() => setTab(\"checklist\")}>\n {t(\"issue.checklist\")}\n </button>\n <button className=\"tab\" data-active={tab === \"code\"} onClick={() => setTab(\"code\")}>\n {t(\"issue.codeChanges\")}\n </button>\n <button className=\"tab\" data-active={tab === \"history\"} onClick={() => setTab(\"history\")}>\n {t(\"issue.history\")}\n </button>\n </div>\n\n {tab === \"conversation\" && (\n <ul className=\"flex flex-col gap-3\">\n {COMMENTS.map((c) => (\n <li key={c.id} className=\"card\">\n <header className=\"flex items-center gap-2 text-xs text-muted-foreground mb-2\">\n <span className=\"avatar\" style={{ width: 24, height: 24, fontSize: 10 }}>\n {c.who[0]?.toUpperCase()}\n </span>\n <span className=\"font-medium text-foreground\">@{c.who}</span>\n <span>·</span>\n <span>{c.when}</span>\n </header>\n <p className=\"text-sm\">{c.body}</p>\n </li>\n ))}\n </ul>\n )}\n {tab === \"checklist\" && (\n <div className=\"card\">\n <ul className=\"flex flex-col gap-2 text-sm\">\n <li><label className=\"flex items-center gap-2\"><input type=\"checkbox\" defaultChecked /> Sticky composer renders at 52px</label></li>\n <li><label className=\"flex items-center gap-2\"><input type=\"checkbox\" defaultChecked /> Expand on focus, collapse on outside click</label></li>\n <li><label className=\"flex items-center gap-2\"><input type=\"checkbox\" /> Status/assignee/priority pickers</label></li>\n <li><label className=\"flex items-center gap-2\"><input type=\"checkbox\" /> ⌘+Enter submit</label></li>\n </ul>\n </div>\n )}\n {tab === \"code\" && (\n <div className=\"diff\">\n <div className=\"diff-row ctx\"><span className=\"ln\">12</span><span className=\"ln\">12</span><span className=\"body\">function App() {</span></div>\n <div className=\"diff-row del\"><span className=\"ln\">13</span><span className=\"ln\"></span><span className=\"body\"> const [open, setOpen] = useState(false);</span></div>\n <div className=\"diff-row add\"><span className=\"ln\"></span><span className=\"ln\">13</span><span className=\"body\"> const [composerOpen, setComposerOpen] = useState(false);</span></div>\n <div className=\"diff-row ctx\"><span className=\"ln\">14</span><span className=\"ln\">14</span><span className=\"body\"> return <Shell />;</span></div>\n </div>\n )}\n {tab === \"history\" && (\n <ul className=\"flex flex-col gap-1 text-xs\">\n <li className=\"log-line\"><span className=\"time\">2d</span><span className=\"src\">@naoki</span><span>opened the issue</span></li>\n <li className=\"log-line\"><span className=\"time\">1d</span><span className=\"src ok\">@satoshi</span><span>moved to In progress</span></li>\n <li className=\"log-line\"><span className=\"time\">2h</span><span className=\"src warn\">@anh</span><span>changed priority to P1</span></li>\n </ul>\n )}\n </div>\n\n <aside className=\"flex flex-col gap-3 text-xs\">\n <SidebarField label={t(\"issue.assignee\")}>@{assignee}</SidebarField>\n <SidebarField label={t(\"issue.labels\")}>\n <span className=\"chip\">design-system</span>\n <span className=\"chip\">frontend</span>\n </SidebarField>\n <SidebarField label={t(\"issue.milestone\")}>2026-Q2 release</SidebarField>\n <SidebarField label={t(\"issue.sprint\")}>Sprint 12</SidebarField>\n <SidebarField label={t(\"issue.points\")}>5</SidebarField>\n <SidebarField label={t(\"issue.relatedPlan\")}>\n <button onClick={() => onOpenPlan(\"PDCA-Q2-001\")} className=\"underline text-primary\">\n PDCA-Q2-001\n </button>\n </SidebarField>\n </aside>\n </div>\n </div>\n\n <div\n className=\"sticky bottom-0 mt-6 py-2 border-t border-border bg-background/85 backdrop-blur\"\n style={{ marginLeft: \"calc(var(--spacing-6) * -1)\", marginRight: \"calc(var(--spacing-6) * -1)\", paddingLeft: \"var(--spacing-6)\", paddingRight: \"var(--spacing-6)\" }}\n >\n {!composerOpen ? (\n <button\n type=\"button\"\n className=\"flex w-full items-center gap-2 text-xs text-muted-foreground hover:text-foreground py-1\"\n onClick={() => setComposerOpen(true)}\n >\n <span className=\"avatar\" style={{ width: 24, height: 24, fontSize: 10 }}>S</span>\n <span>{issueId} · {t(\"issue.addComment\")}</span>\n <span className=\"ml-auto flex items-center gap-2\">\n <span className=\"chip\">{STATUS_LABEL[status]}</span>\n <span className=\"chip\">{PRIORITY_LABEL[priority]}</span>\n <kbd className=\"kbd\">C</kbd>\n </span>\n </button>\n ) : (\n <div className=\"flex flex-col gap-2\">\n <textarea\n autoFocus\n value={body}\n onChange={(e) => setBody(e.target.value)}\n placeholder={t(\"issue.addComment\")}\n rows={3}\n className=\"input\"\n onBlur={(e) => {\n if (!e.currentTarget.value && !e.relatedTarget) {\n setComposerOpen(false);\n }\n }}\n />\n <div className=\"flex items-center gap-2 flex-wrap\">\n <PillPicker label={t(\"issue.status\")} value={STATUS_LABEL[status]} changed={status !== initial.status}>\n {(Object.keys(STATUS_LABEL) as IssueStatus[]).map((s) => (\n <button key={s} type=\"button\" className=\"sw-pop-item w-full text-left\" onClick={() => setStatus(s)}>\n {STATUS_LABEL[s]}\n </button>\n ))}\n </PillPicker>\n <PillPicker label={t(\"issue.assignee\")} value={`@${assignee}`} changed={assignee !== initial.assignee}>\n {TEAM.map((u) => (\n <button key={u} type=\"button\" className=\"sw-pop-item w-full text-left\" onClick={() => setAssignee(u)}>\n @{u}\n </button>\n ))}\n </PillPicker>\n <PillPicker label={t(\"issue.priority\")} value={PRIORITY_LABEL[priority]} changed={priority !== initial.priority}>\n {(Object.keys(PRIORITY_LABEL) as IssuePriority[]).map((p) => (\n <button key={p} type=\"button\" className=\"sw-pop-item w-full text-left\" onClick={() => setPriority(p)}>\n {PRIORITY_LABEL[p]}\n </button>\n ))}\n </PillPicker>\n\n {hasChanges && (\n <span className=\"badge badge-attention\">↻ {t(\"issue.submitWithChanges\")}</span>\n )}\n\n <button\n type=\"button\"\n className=\"btn btn-primary btn-sm ml-auto\"\n onClick={() => {\n setBody(\"\");\n setComposerOpen(false);\n }}\n disabled={!body.trim()}\n >\n <Send size={12} /> {t(\"common.submit\")}\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction SidebarField({ label, children }: { label: string; children: React.ReactNode }) {\n return (\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-[10px] uppercase tracking-wider text-muted-foreground\">{label}</span>\n <div className=\"flex flex-wrap items-center gap-1\">{children}</div>\n </div>\n );\n}\n\nfunction PillPicker({\n label,\n value,\n changed,\n children,\n}: {\n label: string;\n value: string;\n changed?: boolean;\n children: React.ReactNode;\n}) {\n return (\n <Popover.Root>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"chip text-xs cursor-pointer\",\n changed && \"border border-[var(--attention)] text-[var(--attention)]\",\n )}\n >\n {label}: {value}\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content className=\"sw-pop\" align=\"start\" sideOffset={4} style={{ width: 200 }}>\n <div className=\"sw-pop-list\">{children}</div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n"]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ReactNode, ComponentType } from 'react';
|
|
3
|
+
import { ForgeProduct, ForgeProject } from '../data.js';
|
|
4
|
+
|
|
5
|
+
interface AppShellProps {
|
|
6
|
+
sidebar: ReactNode;
|
|
7
|
+
topbar: ReactNode;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* Controls the visual collapsed state. The hook + Tweaks panel
|
|
11
|
+
* mirror this onto `<html data-collapsed>` via useTweaks; pass the
|
|
12
|
+
* same value here so the grid columns shrink in lockstep.
|
|
13
|
+
*/
|
|
14
|
+
sidebarCollapsed?: boolean;
|
|
15
|
+
}
|
|
16
|
+
declare function AppShell({ sidebar, topbar, children, sidebarCollapsed }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
17
|
+
|
|
18
|
+
interface SidebarItem {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
icon: ComponentType<{
|
|
22
|
+
size?: number;
|
|
23
|
+
}>;
|
|
24
|
+
/** Optional numeric badge (e.g. open issue count). */
|
|
25
|
+
badge?: string | number;
|
|
26
|
+
/** Disabled rows are dimmed and unclickable. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
interface SidebarSection {
|
|
30
|
+
/** Section label shown above the nav items. */
|
|
31
|
+
label?: string;
|
|
32
|
+
items: SidebarItem[];
|
|
33
|
+
}
|
|
34
|
+
interface SidebarProps {
|
|
35
|
+
/** Currently active route id — must match an item's `id`. */
|
|
36
|
+
activeId: string;
|
|
37
|
+
/** Click handler — called with the item's `id`. */
|
|
38
|
+
onSelect: (id: string) => void;
|
|
39
|
+
sections: SidebarSection[];
|
|
40
|
+
/** Product = the org-shaped tenant shown in the top product chip. */
|
|
41
|
+
product: ForgeProduct;
|
|
42
|
+
/** Click to open the product switcher dropdown (owned by parent). */
|
|
43
|
+
onProductClick?: () => void;
|
|
44
|
+
collapsed?: boolean;
|
|
45
|
+
footer?: ReactNode;
|
|
46
|
+
}
|
|
47
|
+
declare function Sidebar({ activeId, onSelect, sections, product, onProductClick, collapsed, footer, }: SidebarProps): react_jsx_runtime.JSX.Element;
|
|
48
|
+
|
|
49
|
+
interface TopbarProps {
|
|
50
|
+
product: ForgeProduct;
|
|
51
|
+
project?: ForgeProject | null;
|
|
52
|
+
onProductOpen?: () => void;
|
|
53
|
+
onProjectOpen?: () => void;
|
|
54
|
+
onSearchOpen?: () => void;
|
|
55
|
+
onTweaksOpen?: () => void;
|
|
56
|
+
collapsed?: boolean;
|
|
57
|
+
onToggleCollapsed?: () => void;
|
|
58
|
+
/** Optional breadcrumb / actions slot on the right. */
|
|
59
|
+
rightSlot?: ReactNode;
|
|
60
|
+
}
|
|
61
|
+
declare function Topbar({ product, project, onProductOpen, onProjectOpen, onSearchOpen, onTweaksOpen, collapsed, onToggleCollapsed, rightSlot, }: TopbarProps): react_jsx_runtime.JSX.Element;
|
|
62
|
+
|
|
63
|
+
interface TweaksPanelProps {
|
|
64
|
+
open: boolean;
|
|
65
|
+
onOpenChange: (open: boolean) => void;
|
|
66
|
+
}
|
|
67
|
+
declare function TweaksPanel({ open, onOpenChange }: TweaksPanelProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
|
|
69
|
+
interface ProductSwitcherProps {
|
|
70
|
+
trigger: ReactNode;
|
|
71
|
+
activeId: string;
|
|
72
|
+
products?: ForgeProduct[];
|
|
73
|
+
onSelect: (product: ForgeProduct) => void;
|
|
74
|
+
/** Controlled-open API. Omit for uncontrolled. */
|
|
75
|
+
open?: boolean;
|
|
76
|
+
onOpenChange?: (open: boolean) => void;
|
|
77
|
+
}
|
|
78
|
+
declare function ProductSwitcher({ trigger, activeId, products, onSelect, open, onOpenChange, }: ProductSwitcherProps): react_jsx_runtime.JSX.Element;
|
|
79
|
+
|
|
80
|
+
interface RecentProject {
|
|
81
|
+
productId: string;
|
|
82
|
+
projectId: string;
|
|
83
|
+
}
|
|
84
|
+
interface ProjectSwitcherProps {
|
|
85
|
+
trigger: ReactNode;
|
|
86
|
+
/** Currently active product+project, used for the ✓ marker. */
|
|
87
|
+
activeProductId?: string;
|
|
88
|
+
activeProjectId?: string;
|
|
89
|
+
/** Optional list of recent (product, project) tuples — surfaces them first. */
|
|
90
|
+
recent?: RecentProject[];
|
|
91
|
+
products?: ForgeProduct[];
|
|
92
|
+
onSelect: (project: ForgeProject, product: ForgeProduct) => void;
|
|
93
|
+
open?: boolean;
|
|
94
|
+
onOpenChange?: (open: boolean) => void;
|
|
95
|
+
}
|
|
96
|
+
declare function ProjectSwitcher({ trigger, activeProductId, activeProjectId, recent, products, onSelect, open, onOpenChange, }: ProjectSwitcherProps): react_jsx_runtime.JSX.Element;
|
|
97
|
+
|
|
98
|
+
interface CommandItem {
|
|
99
|
+
id: string;
|
|
100
|
+
label: string;
|
|
101
|
+
group?: string;
|
|
102
|
+
hint?: string;
|
|
103
|
+
onSelect: () => void;
|
|
104
|
+
}
|
|
105
|
+
interface CommandPaletteProps {
|
|
106
|
+
open: boolean;
|
|
107
|
+
onOpenChange: (open: boolean) => void;
|
|
108
|
+
commands: CommandItem[];
|
|
109
|
+
}
|
|
110
|
+
declare function CommandPalette({ open, onOpenChange, commands }: CommandPaletteProps): react_jsx_runtime.JSX.Element;
|
|
111
|
+
|
|
112
|
+
export { AppShell, type AppShellProps, type CommandItem, CommandPalette, type CommandPaletteProps, ProductSwitcher, type ProductSwitcherProps, ProjectSwitcher, type ProjectSwitcherProps, type RecentProject, Sidebar, type SidebarItem, type SidebarProps, type SidebarSection, Topbar, type TopbarProps, TweaksPanel, type TweaksPanelProps };
|