@appthen/vibe-workspace 0.1.7 → 0.1.8

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.
Files changed (87) hide show
  1. package/PLUGIN_DEV.md +30 -0
  2. package/dist/{DocxPreview-GruinkmZ.js → DocxPreview-CAmipQT3.js} +5 -5
  3. package/dist/{DocxPreview-GruinkmZ.js.map → DocxPreview-CAmipQT3.js.map} +1 -1
  4. package/dist/{DotBadge-Dm0es7Ho.js → DotBadge-CeeLzNu3.js} +3 -3
  5. package/dist/{DotBadge-Dm0es7Ho.js.map → DotBadge-CeeLzNu3.js.map} +1 -1
  6. package/dist/{ExtensionManifestSchema-BIuNTfeS.js → ExtensionManifestSchema-INV7dTEG.js} +3 -3
  7. package/dist/{ExtensionManifestSchema-BIuNTfeS.js.map → ExtensionManifestSchema-INV7dTEG.js.map} +1 -1
  8. package/dist/{FreeCanvas-BC24RbJp.js → FreeCanvas-DritKIPq.js} +2 -2
  9. package/dist/{FreeCanvas-BC24RbJp.js.map → FreeCanvas-DritKIPq.js.map} +1 -1
  10. package/dist/{ImagePreview-BUZPZ76T.js → ImagePreview-ByIQrPzb.js} +4 -4
  11. package/dist/{ImagePreview-BUZPZ76T.js.map → ImagePreview-ByIQrPzb.js.map} +1 -1
  12. package/dist/{PdfPreview-C431TVJo.js → PdfPreview-0vwF3tLn.js} +4 -4
  13. package/dist/{PdfPreview-C431TVJo.js.map → PdfPreview-0vwF3tLn.js.map} +1 -1
  14. package/dist/{PluginContext-J-PUm9Dt.js → PluginContext-uAiGNF8S.js} +2 -20
  15. package/dist/PluginContext-uAiGNF8S.js.map +1 -0
  16. package/dist/{Workbench-C3Gi8mtZ.js → Workbench-8uTfTtsq.js} +4267 -2776
  17. package/dist/{Workbench-C3Gi8mtZ.js.map → Workbench-8uTfTtsq.js.map} +1 -1
  18. package/dist/{activate-Cn14NQGw.js → activate-DVnxnmfA.js} +84 -80
  19. package/dist/{activate-Cn14NQGw.js.map → activate-DVnxnmfA.js.map} +1 -1
  20. package/dist/canvas-core/index.js +1 -1
  21. package/dist/coding-kit/index.js +1 -1
  22. package/dist/components/index.js +4 -4
  23. package/dist/{devWorkbench-Ifd_a8Pb.js → devWorkbench-DZ1mFC3i.js} +2 -2
  24. package/dist/{devWorkbench-Ifd_a8Pb.js.map → devWorkbench-DZ1mFC3i.js.map} +1 -1
  25. package/dist/{dialog-DK8v51ew.js → dialog-ssICQNSV.js} +2 -2
  26. package/dist/{dialog-DK8v51ew.js.map → dialog-ssICQNSV.js.map} +1 -1
  27. package/dist/{docx-preview-BdpXCqA9.js → docx-preview-lJ7EdPsl.js} +2 -2
  28. package/dist/{docx-preview-BdpXCqA9.js.map → docx-preview-lJ7EdPsl.js.map} +1 -1
  29. package/dist/extension-cli/index.js +1 -1
  30. package/dist/extension-dev/index.js +1 -1
  31. package/dist/extension-dev-workbench/index.js +4 -4
  32. package/dist/extension-schema/index.js +3 -3
  33. package/dist/{extensionRegistry-C_OUg-8s.js → extensionRegistry-D35Ld-Wa.js} +10 -7
  34. package/dist/{extensionRegistry-C_OUg-8s.js.map → extensionRegistry-D35Ld-Wa.js.map} +1 -1
  35. package/dist/index.js +17 -17
  36. package/dist/index.js.map +1 -1
  37. package/dist/{list-detail-workspace-template-BVyGyLpE.js → list-detail-workspace-template-BTrgMGPx.js} +2 -2
  38. package/dist/{list-detail-workspace-template-BVyGyLpE.js.map → list-detail-workspace-template-BTrgMGPx.js.map} +1 -1
  39. package/dist/overlay/index.js +2 -2
  40. package/dist/{pluginCapabilities-9gzDTIuB.js → pluginCapabilities-BkCT7QDO.js} +197 -20
  41. package/dist/pluginCapabilities-BkCT7QDO.js.map +1 -0
  42. package/dist/plugins/agent/PluginModule.js +2 -2
  43. package/dist/plugins/base/index.js +1 -1
  44. package/dist/{sheet-CdvS0URe.js → sheet-Bsq3CLW4.js} +6 -6
  45. package/dist/{sheet-CdvS0URe.js.map → sheet-Bsq3CLW4.js.map} +1 -1
  46. package/dist/{skeleton-99iI2m9p.js → skeleton-BSqTbX9l.js} +4 -4
  47. package/dist/{skeleton-99iI2m9p.js.map → skeleton-BSqTbX9l.js.map} +1 -1
  48. package/dist/types-BL0aIpQ1.js.map +1 -1
  49. package/dist/ui/index.js +3 -3
  50. package/dist/{useBinaryFileUrl-CcgcbIxT.js → useBinaryFileUrl-D11yvGuG.js} +3 -3
  51. package/dist/{useBinaryFileUrl-CcgcbIxT.js.map → useBinaryFileUrl-D11yvGuG.js.map} +1 -1
  52. package/dist/vibe-workspace/src/components/ExtensionBadgeMark.d.ts +10 -0
  53. package/dist/vibe-workspace/src/components/LayoutSystem.d.ts +4 -0
  54. package/dist/vibe-workspace/src/components/MonacoWrapper.d.ts +5 -1
  55. package/dist/vibe-workspace/src/components/TopBar.d.ts +2 -0
  56. package/dist/vibe-workspace/src/core/extensionBadges.d.ts +47 -0
  57. package/dist/vibe-workspace/src/core/extensionBadges.test.d.ts +1 -0
  58. package/dist/vibe-workspace/src/core/extensionViews.d.ts +6 -0
  59. package/dist/vibe-workspace/src/core/pluginCapabilities.d.ts +15 -0
  60. package/dist/vibe-workspace/src/hooks/useThemeLayout.d.ts +3 -0
  61. package/dist/vibe-workspace/src/index.d.ts +1 -0
  62. package/dist/vibe-workspace/src/plugins/base/types.d.ts +1 -0
  63. package/dist/vibe-workspace/src/plugins/conversation-network/components/right-panel/ComponentDockBar.d.ts +6 -0
  64. package/dist/vibe-workspace/src/plugins/conversation-network/components/right-panel/DynamicComponentZone.d.ts +5 -3
  65. package/dist/vibe-workspace/src/plugins/conversation-network/components/right-panel/PanelSlotCard.d.ts +6 -1
  66. package/dist/vibe-workspace/src/plugins/conversation-network/components/right-panel/ParticipantBar.d.ts +1 -2
  67. package/dist/vibe-workspace/src/plugins/conversation-network/components/right-panel/ParticipantBarItem.d.ts +18 -15
  68. package/dist/vibe-workspace/src/plugins/conversation-network/conversationHubShell.d.ts +14 -1
  69. package/dist/vibe-workspace/src/plugins/conversation-network/services/conversationHubShellResolver.d.ts +3 -1
  70. package/dist/vibe-workspace/src/services/authRedirect.d.ts +1 -0
  71. package/dist/vibe-workspace/src/services/themeService.d.ts +81 -7
  72. package/dist/vibe-workspace/src/workbench/WorkbenchAccountMenu.d.ts +5 -0
  73. package/dist/vibe-workspace.css +36 -43
  74. package/dist/workbench/index.js +2 -2
  75. package/package.json +1 -1
  76. package/postcss.config.js +1 -2
  77. package/tailwind.config.js +10 -3
  78. package/dist/PluginContext-J-PUm9Dt.js.map +0 -1
  79. package/dist/pluginCapabilities-9gzDTIuB.js.map +0 -1
  80. package/dist/vibe-workspace/src/AgentEmbedPage.d.ts +0 -1
  81. package/dist/vibe-workspace/src/plugins/work-weixin/WorkWeixinPlugin.d.ts +0 -5
  82. package/dist/vibe-workspace/src/plugins/work-weixin/apiService.d.ts +0 -8
  83. package/dist/vibe-workspace/src/plugins/work-weixin/configService.d.ts +0 -46
  84. package/dist/vibe-workspace/src/plugins/work-weixin/index.d.ts +0 -2
  85. package/dist/vibe-workspace/src/plugins/workbench-admin/WorkbenchAdminSidebar.d.ts +0 -7
  86. package/dist/vibe-workspace/src/plugins/workbench-admin/activate.d.ts +0 -2
  87. package/dist/vibe-workspace/src/plugins/workbench-admin/index.d.ts +0 -2
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/coding-kit/business/agent-config-card.tsx","../src/coding-kit/business/build-plan-list-workspace.tsx","../src/coding-kit/business/dashboard-board.tsx","../src/coding-kit/business/document-management-workspace.tsx","../src/coding-kit/business/issue-workspace.tsx","../src/coding-kit/business/project-capability-sidebar.tsx","../src/coding-kit/business/project-overview-workspace.tsx","../src/coding-kit/business/resource-management-workspace.tsx","../src/coding-kit/business/tenant-switcher.tsx","../src/coding-kit/business/template-picker-workspace.tsx","../src/coding-kit/business/workbench-entry-card.tsx","../src/coding-kit/preview/build-plan-starter-preview.tsx","../src/coding-kit/preview/build-plan-list-page-preview.tsx","../src/coding-kit/preview/document-management-page-preview.tsx","../src/coding-kit/preview/goal-management-page-preview.tsx","../src/coding-kit/preview/project-overview-page-preview.tsx","../src/coding-kit/preview/resource-management-page-preview.tsx","../src/coding-kit/preview/collaboration-console-preview.tsx","../src/coding-kit/preview/list-detail-template-preview.tsx","../src/plugins/workspace-agent/core/agent-channel-harness.ts","../src/plugins/workspace-agent/core/agent-channel-fake-hub.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Bot, Cable, Sparkles } from \"lucide-react\";\n\nimport { SurfacePanel } from \"../primitives\";\n\ninterface AgentConfigCardProps {\n title: string;\n model: string;\n connectors: string[];\n status: \"ready\" | \"reviewing\" | \"blocked\";\n}\n\nconst statusMap = {\n ready: {\n label: \"已就绪\",\n className: \"bg-[var(--ck-success-soft)] text-[var(--ck-success-text)]\",\n },\n reviewing: {\n label: \"待评审\",\n className: \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\",\n },\n blocked: {\n label: \"阻塞中\",\n className: \"bg-[var(--ck-danger-soft)] text-[var(--ck-danger-text)]\",\n },\n} as const;\n\nexport function AgentConfigCard({\n title,\n model,\n connectors,\n status,\n}: AgentConfigCardProps) {\n const badge = statusMap[status];\n\n return (\n <SurfacePanel className=\"p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\">\n <Bot className=\"h-5 w-5\" />\n </div>\n <div>\n <div className=\"text-[14px] font-semibold text-[var(--ck-text-primary)]\">\n {title}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 面向会话类型和流程节点的标准配置卡\n </div>\n </div>\n </div>\n <div className={`rounded-[var(--ck-radius-xs)] px-2 py-1 text-[11px] font-medium ${badge.className}`}>\n {badge.label}\n </div>\n </div>\n\n <div className=\"mt-4 grid gap-3 md:grid-cols-2\">\n <div className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] p-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Sparkles className=\"h-3.5 w-3.5\" />\n 模型\n </div>\n <div className=\"mt-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {model}\n </div>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] p-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Cable className=\"h-3.5 w-3.5\" />\n 连接器\n </div>\n <div className=\"mt-2 flex flex-wrap gap-2\">\n {connectors.map((item) => (\n <span\n key={item}\n className=\"rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-[var(--ck-bg-surface)] px-2 py-1 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n {item}\n </span>\n ))}\n </div>\n </div>\n </div>\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ExternalLink,\n HelpCircle,\n ListFilter,\n Search,\n SlidersHorizontal,\n Star,\n ToggleLeft,\n Wrench,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, ConsoleSelectTrigger, SurfacePanel } from \"../primitives\";\n\nexport interface BuildPlanHelpLink {\n label: string;\n}\n\nexport interface BuildPlanFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface BuildPlanSelectFilter {\n label: string;\n value: string;\n}\n\nexport interface BuildPlanListItem {\n id: string;\n name: string;\n status: string;\n triggerMeta: string;\n starred?: boolean;\n}\n\ninterface BuildPlanListWorkspaceProps {\n title?: string;\n quotaLabel?: string;\n helpLinks: BuildPlanHelpLink[];\n primaryActionLabel: string;\n leftFilters: BuildPlanFilterChip[];\n groupFilters: BuildPlanFilterChip[];\n selectFilters: BuildPlanSelectFilter[];\n searchPlaceholder?: string;\n modeLabel?: string;\n items: BuildPlanListItem[];\n className?: string;\n}\n\nfunction ToolbarChip({\n label,\n active,\n}: BuildPlanFilterChip) {\n return (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {label}\n </button>\n );\n}\n\nexport function BuildPlanListWorkspace({\n title = \"构建计划\",\n quotaLabel = \"配额信息\",\n helpLinks,\n primaryActionLabel,\n leftFilters,\n groupFilters,\n selectFilters,\n searchPlaceholder = \"搜索...\",\n modeLabel = \"简洁模式\",\n items,\n className,\n}: BuildPlanListWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 flex-col bg-[var(--ck-surface-page)]\", className)}>\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-5\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n <div className=\"mt-3 flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex items-start gap-3 rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] px-4 py-3 text-left\"\n >\n <HelpCircle className=\"mt-0.5 h-4 w-4 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>\n <span className=\"block text-[13px] font-medium text-[var(--ck-text-primary)]\">\n 持续集成常见问题\n </span>\n <span className=\"mt-2 flex flex-wrap gap-x-4 gap-y-2 text-[12px] text-[var(--ck-text-secondary)]\">\n {helpLinks.map((item) => (\n <span key={item.label} className=\"inline-flex items-center gap-1\">\n {item.label}\n <ExternalLink className=\"h-3 w-3\" />\n </span>\n ))}\n </span>\n </span>\n </button>\n <div className=\"inline-flex h-11 items-center rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-4 text-[13px] text-[var(--ck-text-secondary)]\">\n <Wrench className=\"mr-2 h-4 w-4 text-[var(--ck-text-muted)]\" />\n {quotaLabel}\n </div>\n </div>\n </div>\n\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleButton size=\"md\" className=\"h-9 px-4 font-normal\">\n <HelpCircle className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 帮助文档\n </ConsoleButton>\n <ConsoleButton size=\"md\" className=\"h-9 px-4 font-normal\">\n <ExternalLink className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 构建机器出口 IP\n </ConsoleButton>\n <ConsoleButton variant=\"primary\" size=\"md\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n {leftFilters.map((item) => (\n <ToolbarChip key={item.label} {...item} />\n ))}\n <div className=\"mx-1 h-5 w-px bg-[var(--ck-border-subtle)]\" />\n {groupFilters.map((item) => (\n <ToolbarChip key={item.label} {...item} />\n ))}\n\n <ConsoleSelectTrigger>\n 更多\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </ConsoleSelectTrigger>\n\n <div className=\"ml-auto flex flex-wrap items-center gap-2.5\">\n {selectFilters.map((item) => (\n <ConsoleSelectTrigger\n key={item.label}\n label={item.label}\n value={item.value}\n />\n ))}\n <ConsoleInput icon={Search} placeholder={searchPlaceholder} containerClassName=\"w-[220px]\" className=\"text-[12px]\" />\n <ConsoleButton size=\"icon\" className=\"h-[var(--ck-chip-height)] w-[var(--ck-chip-height)]\">\n <ListFilter className=\"h-4 w-4\" />\n </ConsoleButton>\n <ConsoleSelectTrigger>\n {modeLabel}\n <ToggleLeft className=\"h-4 w-4\" />\n </ConsoleSelectTrigger>\n </div>\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-5\">\n <div className=\"space-y-3\">\n {items.map((item) => (\n <SurfacePanel\n key={item.id}\n className=\"flex items-center justify-between gap-4 rounded-[var(--ck-card-radius)] border-[var(--ck-border-default)] px-3 py-3 shadow-none transition-colors hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <Star\n className={cn(\"h-4 w-4\", item.starred && \"fill-[var(--ck-accent-star)] text-[var(--ck-accent-star)]\")}\n />\n </button>\n <button\n type=\"button\"\n className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)] hover:text-[var(--ck-brand-primary)]\"\n >\n {item.name}\n </button>\n </div>\n <div className=\"mt-2 flex flex-wrap items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <span className=\"inline-flex items-center gap-1 rounded-full bg-[var(--ck-status-success-bg)] px-2 py-[3px] font-medium text-[var(--ck-status-success-text)]\">\n {item.status}\n </span>\n <span>{item.triggerMeta}</span>\n </div>\n </div>\n\n <div className=\"flex shrink-0 items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n <SlidersHorizontal className=\"mr-1.5 h-3.5 w-3.5\" />\n 配置\n </button>\n </div>\n </SurfacePanel>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n Activity,\n ArrowDown,\n ArrowUp,\n CalendarRange,\n Flame,\n GripHorizontal,\n FolderKanban,\n GitCommitHorizontal,\n LineChart,\n ListTodo,\n Rocket,\n Users,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\nimport { SurfacePanel } from \"../primitives\";\n\nexport interface DashboardMetricStat {\n label: string;\n value: string;\n tone?: \"default\" | \"positive\" | \"negative\";\n}\n\nexport interface DashboardIssueItem {\n id: string;\n title: string;\n dueDate?: string;\n status: string;\n assignee: string;\n iteration?: string;\n}\n\nexport interface DashboardMemberRankItem {\n name: string;\n value: string;\n delta?: string;\n}\n\nexport interface DashboardProjectItem {\n name: string;\n progress: string;\n health?: string;\n}\n\nexport interface DashboardActivityItem {\n title: string;\n meta: string;\n}\n\nexport interface DashboardIterationItem {\n name: string;\n progress: string;\n project: string;\n}\n\nexport interface DashboardTrendPoint {\n label: string;\n value: string;\n}\n\nexport interface DashboardWidgetData {\n id: string;\n title: string;\n subtitle?: string;\n type: \"stats\" | \"ranking\" | \"issue-list\" | \"project-list\" | \"activity-list\" | \"iteration-list\" | \"trend\";\n stats?: DashboardMetricStat[];\n ranking?: DashboardMemberRankItem[];\n issues?: DashboardIssueItem[];\n projects?: DashboardProjectItem[];\n activities?: DashboardActivityItem[];\n iterations?: DashboardIterationItem[];\n trend?: DashboardTrendPoint[];\n accent?: \"brand\" | \"warning\" | \"danger\";\n cols?: \"wide\" | \"normal\";\n}\n\nexport interface DashboardWidgetCatalogItem {\n id: string;\n title: string;\n description: string;\n badge?: string;\n}\n\nexport type DashboardWorkspaceProductItem = CodingProductNavItem;\n\ninterface DashboardBoardProps {\n projectName: string;\n title: string;\n tabs: Array<{ label: string; active?: boolean }>;\n alertMessage: string;\n widgets: DashboardWidgetData[];\n widgetCatalog?: DashboardWidgetCatalogItem[];\n customMode?: boolean;\n onToggleCustomMode?: () => void;\n onAddWidget?: (widgetId: string) => void;\n onRemoveWidget?: (widgetId: string) => void;\n onResetWidgets?: () => void;\n className?: string;\n}\n\ninterface DashboardWorkspaceProps extends DashboardBoardProps {\n productItems: DashboardWorkspaceProductItem[];\n userName: string;\n systemNotice?: string;\n}\n\nfunction WidgetHeader({\n title,\n subtitle,\n editable = false,\n}: {\n title: string;\n subtitle?: string;\n editable?: boolean;\n}) {\n return (\n <div className=\"flex items-start justify-between gap-3 px-4 pb-2 pt-3\">\n <div className=\"min-w-0\">\n <div className=\"text-[14px] font-medium leading-[20px] text-[var(--ck-text-primary)]\">{title}</div>\n {subtitle ? <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">{subtitle}</div> : null}\n </div>\n {editable ? (\n <div className=\"inline-flex h-6 w-6 items-center justify-center rounded-[var(--ck-radius-sm)] text-[var(--ck-text-muted)]\">\n <GripHorizontal className=\"h-3.5 w-3.5\" />\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction WidgetEmptyState({\n title = \"暂无数据\",\n description,\n icon,\n}: {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n}) {\n return (\n <div className=\"flex min-h-[148px] flex-col items-center justify-center px-4 py-6 text-center\">\n {icon ? <div className=\"mb-1.5 text-[var(--ck-text-muted)]\">{icon}</div> : null}\n <div className=\"text-[12px] text-[var(--ck-text-secondary)]\">{title}</div>\n {description ? <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{description}</div> : null}\n </div>\n );\n}\n\nfunction DashboardPrimaryMetricWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const [primary, secondary] = widget.stats ?? [];\n const Icon = widget.id.includes(\"completed\")\n ? Activity\n : widget.id.includes(\"release\")\n ? Rocket\n : widget.id.includes(\"build\")\n ? LineChart\n : widget.id.includes(\"mr\")\n ? GitCommitHorizontal\n : ListTodo;\n const toneClass =\n primary?.tone === \"positive\"\n ? \"text-[var(--ck-success-text)]\"\n : primary?.tone === \"negative\"\n ? \"text-[var(--ck-danger-text)]\"\n : \"text-[var(--ck-text-secondary)]\";\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"flex min-h-[126px] items-center justify-between gap-4 px-4 pb-4 pt-1\">\n <div className=\"min-w-0\">\n <div className=\"text-[40px] font-normal leading-none text-[var(--ck-text-primary)]\">{primary?.value ?? \"0\"}</div>\n <div className={cn(\"mt-2.5 flex items-center gap-1 text-[12px]\", toneClass)}>\n {primary?.tone === \"positive\" ? <ArrowUp className=\"h-3.5 w-3.5\" /> : null}\n {primary?.tone === \"negative\" ? <ArrowDown className=\"h-3.5 w-3.5\" /> : null}\n <span>{secondary?.value ?? \"0\"}</span>\n <span className=\"text-[var(--ck-text-muted)]\">{secondary?.label ?? \"相比以往 2 周\"}</span>\n </div>\n </div>\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-goal-meta-value-bg)] text-[var(--ck-text-muted)]\">\n <Icon className=\"h-5 w-5\" />\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardCommitStatsWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const stats = widget.stats ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"grid min-h-[126px] grid-cols-[minmax(0,1fr)_96px] gap-4 px-4 pb-4 pt-1\">\n <div className=\"grid grid-cols-3 gap-3\">\n {stats.map((item) => (\n <div key={item.label} className=\"min-w-0\">\n <div className=\"text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n <div className=\"mt-3 text-[30px] font-normal leading-none text-[var(--ck-text-primary)]\">{item.value}</div>\n </div>\n ))}\n </div>\n <div className=\"flex items-end justify-end pb-1\">\n <div className=\"flex h-[62px] w-[64px] items-end gap-[6px]\">\n <div className=\"h-[28px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-fill-soft)]\" />\n <div className=\"h-[50px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-fill-medium)]\" />\n <div className=\"h-[22px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-primary)]\" />\n </div>\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardRankingWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const ranking = widget.ranking ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-2\">\n {ranking.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-1\">\n {ranking.map((item, index) => (\n <div\n key={item.name}\n className=\"flex items-center justify-between rounded-[var(--ck-radius-sm)] px-3 py-2 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"inline-flex h-6 w-6 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[12px] text-[var(--ck-text-secondary)]\">\n {index + 1}\n </div>\n <div>\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.name}</div>\n {item.delta ? <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.delta}</div> : null}\n </div>\n </div>\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{item.value}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction StatusChip({ value }: { value: string }) {\n const tone =\n value.includes(\"进行\") || value.includes(\"开发\")\n ? \"bg-[var(--ck-status-brand-bg)] text-[var(--ck-status-brand-text)]\"\n : value.includes(\"待\") || value === \"未开始\"\n ? \"bg-[var(--ck-status-idle-bg)] text-[var(--ck-status-idle-text)]\"\n : \"bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]\";\n\n return <span className={`rounded-[var(--ck-chip-radius)] px-2 py-[1px] text-[11px] ${tone}`}>{value}</span>;\n}\n\nfunction DashboardIssueListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-1 pt-0.5\">\n {(widget.issues ?? []).map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex w-full items-start justify-between gap-4 border-b border-[var(--ck-border-subtle)] py-2.5 text-left last:border-b-0\"\n >\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] leading-[20px] text-[var(--ck-brand-primary)]\">{item.title}</div>\n <div className=\"mt-1.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-[12px] text-[var(--ck-text-muted)]\">\n {item.iteration ? <span>{item.iteration}</span> : null}\n {item.dueDate ? (\n <span className=\"inline-flex items-center gap-1 text-[var(--ck-danger-text)]\">\n <CalendarRange className=\"h-3 w-3\" />\n {item.dueDate}\n </span>\n ) : null}\n <StatusChip value={item.status} />\n <span>{item.assignee}</span>\n </div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardProjectListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const projects = widget.projects ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-3 pt-0.5\">\n {projects.length === 0 ? (\n <WidgetEmptyState icon={<FolderKanban className=\"h-4 w-4\" />} />\n ) : (\n <div>\n {projects.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n className=\"flex w-full items-center justify-between border-b border-[var(--ck-border-subtle)] py-2 text-left last:border-b-0\"\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n <FolderKanban className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n <span className=\"truncate text-[13px] text-[var(--ck-brand-primary)]\">{item.name}</span>\n </div>\n {item.progress ? <span className=\"shrink-0 text-[12px] text-[var(--ck-text-muted)]\">{item.progress}</span> : null}\n </button>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardActivityListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const activities = widget.activities ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n {activities.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-1\">\n {activities.map((item, index) => (\n <div\n key={`${item.title}-${index}`}\n className=\"flex gap-3 rounded-[var(--ck-radius-sm)] px-3 py-2 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-1 flex h-6 w-6 items-center justify-center rounded-full bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\">\n <GitCommitHorizontal className=\"h-3.5 w-3.5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.title}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardIterationListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const iterations = widget.iterations ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n {iterations.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-2\">\n {iterations.map((item) => (\n <div key={item.name} className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] px-4 py-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.name}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.project}</div>\n </div>\n <div className=\"inline-flex items-center gap-1 rounded-full bg-[var(--ck-surface-overlay)] px-2 py-[3px] text-[11px] text-[var(--ck-brand-primary)]\">\n <Rocket className=\"h-3.5 w-3.5\" />\n {item.progress}\n </div>\n </div>\n <div className=\"mt-3 h-2 rounded-full bg-[var(--ck-progress-track-bg)]\">\n <div className=\"h-2 rounded-full bg-[var(--ck-brand-active)]\" style={{ width: item.progress }} />\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardTrendWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const values = widget.trend ?? [];\n\n if (values.length === 0) {\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n <WidgetEmptyState />\n </div>\n </SurfacePanel>\n );\n }\n\n const maxValue = Math.max(...values.map((item) => Number(item.value) || 0), 1);\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-2\">\n <div className=\"mb-3 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <LineChart className=\"h-3.5 w-3.5\" />\n 近 7 天趋势\n </div>\n <div className=\"flex min-h-[172px] items-end gap-3 rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] px-4 py-4\">\n {values.map((item, index) => {\n const height = `${Math.max((Number(item.value) / maxValue) * 100, 12)}%`;\n\n return (\n <div key={`${item.label}-${index}`} className=\"flex flex-1 flex-col items-center gap-2\">\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">{item.value}</div>\n <div className=\"flex h-[112px] w-full items-end justify-center\">\n <div className=\"w-full rounded-[6px] bg-[var(--ck-brand-fill-strong)]\" style={{ height }} />\n </div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n );\n })}\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n if (widget.id === \"recent-commits\") {\n return <DashboardCommitStatsWidget widget={widget} editable={editable} />;\n }\n\n if (widget.stats?.length === 2) {\n return <DashboardPrimaryMetricWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"ranking\") {\n return <DashboardRankingWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"issue-list\") {\n return <DashboardIssueListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"project-list\") {\n return <DashboardProjectListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"activity-list\") {\n return <DashboardActivityListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"iteration-list\") {\n return <DashboardIterationListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"trend\") {\n return <DashboardTrendWidget widget={widget} editable={editable} />;\n }\n\n return <DashboardCommitStatsWidget widget={widget} editable={editable} />;\n}\n\nfunction WidgetLibraryPanel({\n open,\n catalog,\n widgets,\n onAddWidget,\n}: {\n open: boolean;\n catalog: DashboardWidgetCatalogItem[];\n widgets: DashboardWidgetData[];\n onAddWidget?: (widgetId: string) => void;\n}) {\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"mt-4 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)]\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-2.5\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">添加卡片</div>\n <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">请拖拽卡片到仪表盘</div>\n </div>\n <div className=\"grid gap-px bg-[var(--ck-border-subtle)] sm:grid-cols-2 xl:grid-cols-3\">\n {catalog.map((item) => {\n const added = widgets.some((widget) => widget.id === item.id);\n\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={added}\n onClick={() => onAddWidget?.(item.id)}\n className={cn(\n \"min-h-[100px] bg-[var(--ck-surface-overlay)] p-4 text-left transition-colors\",\n added ? \"cursor-default bg-[var(--ck-bg-surface-muted)]/45 text-[var(--ck-text-muted)]\" : \"hover:bg-[var(--ck-bg-surface-muted)]/75\",\n )}\n >\n <div className=\"min-w-0\">\n <div className={cn(\"text-[13px]\", added ? \"text-[var(--ck-text-secondary)]\" : \"text-[var(--ck-text-primary)]\")}>\n {item.title}\n </div>\n <div className=\"mt-2 text-[12px] leading-5 text-[var(--ck-text-secondary)]\">{item.description}</div>\n </div>\n <div className=\"mt-3 text-[11px] text-[var(--ck-text-muted)]\">请拖拽卡片到仪表盘</div>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function DashboardBoard(props: DashboardBoardProps) {\n const {\n widgets,\n widgetCatalog = [],\n customMode = false,\n onToggleCustomMode,\n onAddWidget,\n onRemoveWidget,\n onResetWidgets,\n className,\n } = props;\n\n return (\n <div className={cn(\"coding-kit relative\", className)}>\n <div className=\"flex items-center justify-end gap-2 pb-3\">\n {customMode && onResetWidgets ? (\n <button\n type=\"button\"\n onClick={onResetWidgets}\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 恢复默认\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={onToggleCustomMode}\n className={cn(\n \"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border bg-[var(--ck-surface-overlay)] px-3 text-[12px]\",\n customMode\n ? \"border-[var(--ck-brand-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\",\n )}\n >\n {customMode ? \"完成\" : \"自定义\"}\n </button>\n </div>\n\n <div className=\"grid gap-4 xl:grid-cols-12\">\n {widgets.map((widget) => (\n <div\n key={widget.id}\n className={cn(widget.cols === \"wide\" ? \"xl:col-span-6\" : \"xl:col-span-3\", customMode && \"relative\")}\n >\n {customMode ? (\n <button\n type=\"button\"\n onClick={() => onRemoveWidget?.(widget.id)}\n className=\"absolute right-2 top-2 z-10 inline-flex h-5 w-5 items-center justify-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-muted)]\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n ) : null}\n <DashboardWidget widget={widget} editable={customMode} />\n </div>\n ))}\n </div>\n\n <WidgetLibraryPanel open={customMode} catalog={widgetCatalog} widgets={widgets} onAddWidget={onAddWidget} />\n </div>\n );\n}\n\nexport function DashboardWorkspace({\n productItems,\n userName,\n systemNotice,\n className,\n ...boardProps\n}: DashboardWorkspaceProps) {\n return (\n <ProjectWorkspaceShell\n productItems={productItems}\n userName={userName}\n className={className}\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"text-[20px] font-medium leading-[28px] text-[var(--ck-text-primary)]\">仪表盘</div>\n </div>\n }\n topBar={\n systemNotice ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-3 text-[12px] text-[var(--ck-text-secondary)]\">\n {systemNotice}\n </div>\n ) : null\n }\n contentClassName=\"min-h-0 flex-1 bg-[var(--ck-bg-page)] p-4\"\n >\n <DashboardBoard {...boardProps} />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ChevronRight,\n Clock3,\n FileText,\n FolderOpen,\n Search,\n Star,\n Upload,\n Users,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, SurfacePanel } from \"../primitives\";\n\nexport interface DocumentCategoryItem {\n label: string;\n count?: string;\n active?: boolean;\n children?: DocumentCategoryItem[];\n}\n\nexport interface DocumentFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface DocumentRecordItem {\n id: string;\n title: string;\n meta: string;\n summary: string;\n starred?: boolean;\n}\n\nexport interface DocumentDetailStat {\n label: string;\n value: string;\n}\n\ninterface DocumentManagementWorkspaceProps {\n title: string;\n description?: string;\n primaryActionLabel: string;\n categoryTree: DocumentCategoryItem[];\n filterChips: DocumentFilterChip[];\n records: DocumentRecordItem[];\n detailTitle: string;\n detailMeta: string;\n detailDescription: string;\n detailStats: DocumentDetailStat[];\n recentUpdates: DocumentRecordItem[];\n className?: string;\n}\n\nfunction CategoryNode({\n item,\n level = 0,\n}: {\n item: DocumentCategoryItem;\n level?: number;\n}) {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <div>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-card-radius-sm)] text-left text-[13px] transition-colors\",\n level === 0 ? \"px-3 py-2\" : \"ml-4 px-3 py-[7px]\",\n item.active\n ? \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n )}\n >\n <span className=\"truncate\">{item.label}</span>\n <span className=\"ml-3 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n {item.count ? <span>{item.count}</span> : null}\n {hasChildren ? <ChevronDown className=\"h-3.5 w-3.5\" /> : null}\n </span>\n </button>\n {hasChildren ? (\n <div className=\"mt-0.5 space-y-0.5\">\n {item.children?.map((child) => (\n <CategoryNode key={child.label} item={child} level={level + 1} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function DocumentManagementWorkspace({\n title,\n description,\n primaryActionLabel,\n categoryTree,\n filterChips,\n records,\n detailTitle,\n detailMeta,\n detailDescription,\n detailStats,\n recentUpdates,\n className,\n}: DocumentManagementWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 bg-[var(--ck-surface-page)]\", className)}>\n <aside className=\"hidden w-[248px] shrink-0 border-r border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] xl:flex xl:flex-col\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-4\">\n <ConsoleButton variant=\"primary\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-0.5\">\n {categoryTree.map((item) => (\n <CategoryNode key={item.label} item={item} />\n ))}\n </div>\n </div>\n </aside>\n\n <div className=\"flex min-w-0 flex-1\">\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleInput icon={Search} placeholder=\"搜索文档标题、标签或负责人\" containerClassName=\"h-9 w-[260px]\" />\n <ConsoleButton className=\"h-9 px-4 font-normal\">\n <Upload className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 批量导入\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap gap-2.5\">\n {filterChips.map((chip) => (\n <button\n key={chip.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n chip.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {chip.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-4\">\n <div className=\"space-y-3\">\n {records.map((record) => (\n <SurfacePanel\n key={record.id}\n className=\"flex items-start justify-between gap-4 rounded-[var(--ck-radius-sm)] border-[var(--ck-border-default)] px-3 py-3 shadow-none transition-colors hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <Star\n className={cn(\"h-4 w-4\", record.starred && \"fill-[var(--ck-accent-star)] text-[var(--ck-accent-star)]\")}\n />\n </button>\n <button\n type=\"button\"\n className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)] hover:text-[var(--ck-brand-primary)]\"\n >\n {record.title}\n </button>\n </div>\n <div className=\"mt-2 text-[12px] text-[var(--ck-text-muted)]\">{record.meta}</div>\n <div className=\"mt-2 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {record.summary}\n </div>\n </div>\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-control-height-md)] items-center rounded-[var(--ck-control-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)] transition-colors hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 查看\n </button>\n </SurfacePanel>\n ))}\n </div>\n </div>\n </div>\n\n <aside className=\"hidden w-[320px] shrink-0 border-l border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] xl:block\">\n <div className=\"space-y-4 p-4\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资料摘要\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-md)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <FolderOpen className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)]\">\n {detailTitle}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{detailMeta}</div>\n </div>\n </div>\n\n <div className=\"mt-4 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {detailDescription}\n </div>\n\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {detailStats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[18px] font-semibold text-[var(--ck-text-primary)]\">{item.value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近更新\" actionLabel=\"查看全部\" />\n <div className=\"px-4 py-2\">\n {recentUpdates.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <FileText className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </div>\n <div className=\"mt-1 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Clock3 className=\"h-3.5 w-3.5\" />\n <span>{item.meta}</span>\n </div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"协作成员\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Users className=\"h-4.5 w-4.5\" />\n </div>\n <div>\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">资料管理员 3 人</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 产品、运营、实施共同维护当前知识空间\n </div>\n </div>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </aside>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n Check,\n ChevronDown,\n ChevronLeft,\n Filter,\n ListFilter,\n Menu,\n MoreHorizontal,\n Search,\n Users,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleInput } from \"../primitives\";\nimport {\n CodingProductRail,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nexport type IssueWorkspaceMode = \"desktop\" | \"tablet\" | \"mobile\";\n\nexport type IssueWorkspaceProductItem = CodingProductNavItem;\n\nexport interface IssueWorkspaceSidebarView {\n id?: string;\n label: string;\n count?: string;\n active?: boolean;\n hint?: string;\n badge?: string;\n}\n\nexport interface IssueWorkspaceSidebarSection {\n label: string;\n views: IssueWorkspaceSidebarView[];\n actionLabel?: string;\n}\n\nexport interface IssueWorkspaceBatchAction {\n label: string;\n tone?: \"default\" | \"brand\" | \"danger\";\n}\n\nexport interface IssueWorkspaceRowBase {\n id: string;\n cells: React.ReactNode[];\n}\n\ninterface IssueWorkspaceProps<TRow extends IssueWorkspaceRowBase> {\n productItems: IssueWorkspaceProductItem[];\n sidebarViews: IssueWorkspaceSidebarView[];\n sidebarSections?: IssueWorkspaceSidebarSection[];\n tableHeaders: string[];\n rows: TRow[];\n enableSelection?: boolean;\n projectName: string;\n sectionName: string;\n userName: string;\n createButtonLabel: string;\n filterLabel: string;\n filterChips: string[];\n searchPlaceholder: string;\n sortLabel: string;\n secondaryFilterLabel?: string;\n savedViewLabel?: string;\n resultsSummary?: string;\n batchActions?: IssueWorkspaceBatchAction[];\n detailLabel?: string;\n detailButtonLabel?: string;\n detailTabs?: Array<{ key: string; label: string }>;\n defaultDetailTab?: string;\n defaultSelectedRowId?: string;\n tableColumnTemplate?: string;\n tableMinWidth?: number;\n headerLinks?: string[];\n viewportLocked?: boolean;\n className?: string;\n renderDetailContent: (\n row: TRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => React.ReactNode;\n}\n\nfunction useViewportMode(): IssueWorkspaceMode {\n const getMode = React.useCallback((): IssueWorkspaceMode => {\n if (typeof window === \"undefined\") {\n return \"desktop\";\n }\n\n if (window.innerWidth < 1024) {\n return \"mobile\";\n }\n\n if (window.innerWidth < 1680) {\n return \"tablet\";\n }\n\n return \"desktop\";\n }, []);\n\n const [mode, setMode] = React.useState<IssueWorkspaceMode>(getMode);\n\n React.useEffect(() => {\n const onResize = () => setMode(getMode());\n\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, [getMode]);\n\n return mode;\n}\n\nfunction TopHeader({\n mode,\n projectName,\n sectionName,\n userName,\n headerLinks,\n onToggleViews,\n}: {\n mode: IssueWorkspaceMode;\n projectName: string;\n sectionName: string;\n userName: string;\n headerLinks: string[];\n onToggleViews: () => void;\n}) {\n return (\n <header className=\"flex h-[var(--ck-header-height)] items-center justify-between border-b border-[var(--ck-border-strong)] bg-white px-3 sm:px-5\">\n <div className=\"flex min-w-0 items-center gap-3 sm:gap-4\">\n {mode !== \"desktop\" ? (\n <button\n type=\"button\"\n onClick={onToggleViews}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)] lg:hidden\"\n >\n <Menu className=\"h-4 w-4\" />\n </button>\n ) : null}\n <div className=\"flex min-w-0 items-center gap-2 text-[14px] font-medium text-[var(--ck-text-primary)]\">\n <span className=\"truncate\">{projectName}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 text-[var(--ck-text-muted)]\" />\n </div>\n <div className=\"hidden text-[13px] text-[var(--ck-text-secondary)] sm:block\">{sectionName}</div>\n </div>\n <div className=\"flex items-center gap-2 sm:gap-3\">\n {headerLinks.map((item, index) => (\n <button\n key={item}\n type=\"button\"\n className={cn(\n \"hidden h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-3 text-[13px] text-[var(--ck-text-secondary)]\",\n index === 0 && \"md:inline-flex\",\n index === 1 && \"xl:inline-flex\",\n index >= 2 && \"2xl:inline-flex\",\n )}\n >\n {item}\n </button>\n ))}\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center rounded-[999px] border border-[var(--ck-border-default)] px-2.5 text-[13px] text-[var(--ck-text-secondary)] sm:px-3\"\n >\n <Users className=\"mr-1.5 h-4 w-4 sm:mr-2\" />\n <span className=\"hidden sm:inline\">{userName}</span>\n </button>\n </div>\n </header>\n );\n}\n\nfunction ViewSidebar({\n mode,\n open,\n sections,\n createButtonLabel,\n onClose,\n}: {\n mode: IssueWorkspaceMode;\n open: boolean;\n sections: IssueWorkspaceSidebarSection[];\n createButtonLabel: string;\n onClose: () => void;\n}) {\n const isDesktop = mode === \"desktop\";\n\n return (\n <>\n {!isDesktop && open ? (\n <button\n type=\"button\"\n aria-label=\"关闭视图导航\"\n onClick={onClose}\n className=\"absolute inset-0 z-20 bg-[rgba(15,23,42,0.24)]\"\n />\n ) : null}\n <aside\n className={cn(\n \"flex flex-col border-r border-[var(--ck-border-subtle)] bg-white\",\n isDesktop\n ? \"relative h-full w-[var(--ck-view-sidebar-width)]\"\n : `absolute left-0 top-0 z-30 h-full ${\n mode === \"mobile\" ? \"w-[88vw] max-w-[320px]\" : \"w-[280px]\"\n } transform transition-transform duration-200 ${open ? \"translate-x-0\" : \"-translate-x-full\"}`,\n )}\n >\n <div className=\"flex items-center justify-between px-3 py-4\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-button-dark)] px-3 text-[13px] font-medium text-white\"\n >\n {createButtonLabel}\n </button>\n {!isDesktop ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n <div className=\"border-b border-[var(--ck-border-subtle)] px-3 pb-3 text-[12px] text-[var(--ck-text-muted)]\">\n 视图\n </div>\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-4\">\n {sections.map((section) => (\n <section key={section.label}>\n <div className=\"mb-1.5 flex items-center justify-between px-[10px]\">\n <div className=\"text-[11px] font-medium text-[var(--ck-text-muted)]\">\n {section.label}\n </div>\n {section.actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[11px] text-[var(--ck-brand-primary)]\"\n >\n {section.actionLabel}\n </button>\n ) : null}\n </div>\n <div className=\"space-y-1\">\n {section.views.map((item) => (\n <button\n key={item.id ?? item.label}\n type=\"button\"\n className={cn(\n \"w-full rounded-[var(--ck-radius-xs)] px-[10px] py-[7px] text-left\",\n item.active\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)]\",\n )}\n >\n <div className=\"flex items-center justify-between gap-3 text-[13px]\">\n <span className={cn(item.active && \"font-medium\")}>{item.label}</span>\n <div className=\"flex items-center gap-2\">\n {item.badge ? (\n <span className=\"rounded-full bg-white px-2 py-[1px] text-[11px] text-[var(--ck-brand-primary)]\">\n {item.badge}\n </span>\n ) : null}\n {item.count ? (\n <span className=\"text-[12px] text-[var(--ck-text-muted)]\">{item.count}</span>\n ) : null}\n </div>\n </div>\n {item.hint ? (\n <div className=\"mt-1 truncate text-[11px] text-[var(--ck-text-muted)]\">\n {item.hint}\n </div>\n ) : null}\n </button>\n ))}\n </div>\n </section>\n ))}\n </div>\n </div>\n </aside>\n </>\n );\n}\n\nfunction CompactViewTabs({\n sections,\n}: {\n sections: IssueWorkspaceSidebarSection[];\n}) {\n const views = sections.flatMap((section) => section.views);\n\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-3 py-2 lg:hidden\">\n <div className=\"flex gap-2 overflow-x-auto pb-1\">\n {views.map((item) => (\n <button\n key={item.id ?? item.label}\n type=\"button\"\n className={cn(\n \"shrink-0 rounded-[999px] border px-3 py-1.5 text-[12px]\",\n item.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)]\",\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n </div>\n );\n}\n\nfunction ToolbarChip({ children }: { children: React.ReactNode }) {\n return (\n <span className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\">\n {children}\n </span>\n );\n}\n\nfunction SelectionToggle({\n checked,\n indeterminate,\n onToggle,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n onToggle: () => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-pressed={checked || indeterminate}\n onClick={(event) => {\n event.stopPropagation();\n onToggle();\n }}\n className={cn(\n \"inline-flex h-4 w-4 items-center justify-center rounded-[var(--ck-radius-xs)] border transition-colors\",\n checked || indeterminate\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white\"\n : \"border-[var(--ck-border-strong)] bg-white text-transparent hover:border-[var(--ck-brand-active)]\",\n )}\n >\n {checked ? <Check className=\"h-3 w-3\" /> : null}\n {!checked && indeterminate ? <div className=\"h-[2px] w-2 rounded-full bg-white\" /> : null}\n </button>\n );\n}\n\nfunction IssuesToolbar({\n filterLabel,\n filterChips,\n searchPlaceholder,\n sortLabel,\n secondaryFilterLabel,\n savedViewLabel,\n resultsSummary,\n detailButtonLabel,\n onOpenDetail,\n}: {\n filterLabel: string;\n filterChips: string[];\n searchPlaceholder: string;\n sortLabel: string;\n secondaryFilterLabel?: string;\n savedViewLabel?: string;\n resultsSummary?: string;\n detailButtonLabel: string;\n onOpenDetail: () => void;\n}) {\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-3 py-3 sm:px-4\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)]\"\n >\n <Filter className=\"mr-1 h-3.5 w-3.5 text-[var(--ck-text-secondary)]\" />\n {filterLabel}\n </button>\n {secondaryFilterLabel ? (\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n <ListFilter className=\"mr-1 h-3.5 w-3.5\" />\n {secondaryFilterLabel}\n </button>\n ) : null}\n {savedViewLabel ? (\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n {savedViewLabel}\n </button>\n ) : null}\n <div className=\"hidden items-center gap-2 xl:flex\">\n {filterChips.map((item) => (\n <ToolbarChip key={item}>{item}</ToolbarChip>\n ))}\n </div>\n <div className=\"ml-auto flex w-full flex-wrap items-center gap-2 sm:w-auto sm:flex-nowrap\">\n <ConsoleInput\n icon={Search}\n placeholder={searchPlaceholder}\n containerClassName=\"h-8 min-w-0 flex-1 sm:w-[220px] sm:flex-none\"\n className=\"text-[14px]\"\n />\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)]\"\n >\n <ListFilter className=\"mr-1 h-3.5 w-3.5 text-[var(--ck-text-secondary)]\" />\n {sortLabel}\n </button>\n <button\n type=\"button\"\n onClick={onOpenDetail}\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)] 2xl:hidden\"\n >\n {detailButtonLabel}\n </button>\n </div>\n </div>\n <div className=\"mt-2 flex gap-2 overflow-x-auto xl:hidden\">\n {filterChips.map((item) => (\n <ToolbarChip key={item}>{item}</ToolbarChip>\n ))}\n </div>\n {resultsSummary ? <div className=\"mt-3 text-[12px] text-[var(--ck-text-muted)]\">{resultsSummary}</div> : null}\n </div>\n );\n}\n\nfunction SelectionToolbar({\n selectedCount,\n actions,\n onClear,\n}: {\n selectedCount: number;\n actions: IssueWorkspaceBatchAction[];\n onClear: () => void;\n}) {\n if (selectedCount === 0) {\n return null;\n }\n\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-bg-brand-soft)] px-4 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n 已选择 {selectedCount} 项\n </div>\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border px-2.5 text-[12px]\",\n action.tone === \"brand\" &&\n \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white\",\n action.tone === \"danger\" &&\n \"border-[var(--ck-danger-text)] bg-white text-[var(--ck-danger-text)]\",\n (!action.tone || action.tone === \"default\") &&\n \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)]\",\n )}\n >\n {action.label}\n </button>\n ))}\n <button\n type=\"button\"\n onClick={onClear}\n className=\"ml-auto inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] px-2 text-[12px] text-[var(--ck-text-muted)]\"\n >\n 取消选择\n </button>\n </div>\n </div>\n );\n}\n\nfunction IssuesTable<TRow extends IssueWorkspaceRowBase>({\n headers,\n rows,\n selectedId,\n selectedIds,\n enableSelection,\n columnTemplate,\n tableMinWidth,\n onSelect,\n onToggleRowChecked,\n onToggleAllRows,\n}: {\n headers: string[];\n rows: TRow[];\n selectedId?: string;\n selectedIds: Set<string>;\n enableSelection: boolean;\n columnTemplate: string;\n tableMinWidth: number;\n onSelect: (row: TRow) => void;\n onToggleRowChecked: (rowId: string) => void;\n onToggleAllRows: () => void;\n}) {\n const allSelected = rows.length > 0 && rows.every((row) => selectedIds.has(row.id));\n const partiallySelected = rows.some((row) => selectedIds.has(row.id)) && !allSelected;\n\n return (\n <div className=\"flex min-w-0 flex-1 flex-col bg-white\">\n <div className=\"overflow-auto\">\n <div style={{ minWidth: tableMinWidth }}>\n <div\n className=\"sticky top-0 z-10 border-b border-[var(--ck-border-subtle)] bg-white px-4\"\n style={{\n display: \"grid\",\n gridTemplateColumns: enableSelection ? `44px ${columnTemplate}` : columnTemplate,\n }}\n >\n {enableSelection ? (\n <div className=\"flex h-10 items-center\">\n <SelectionToggle\n checked={allSelected}\n indeterminate={partiallySelected}\n onToggle={onToggleAllRows}\n />\n </div>\n ) : null}\n {headers.map((header) => (\n <div\n key={header}\n className=\"flex h-10 items-center text-[12px] font-medium text-[rgba(32,45,64,0.5)]\"\n >\n {header}\n </div>\n ))}\n </div>\n {rows.map((row) => (\n <button\n key={row.id}\n type=\"button\"\n onClick={() => onSelect(row)}\n data-selected={row.id === selectedId ? \"true\" : \"false\"}\n className={cn(\n \"group w-full border-b border-[var(--ck-border-subtle)] px-4 text-left text-[13px] transition-colors\",\n row.id === selectedId\n ? \"bg-[var(--ck-bg-surface-muted)] shadow-[inset_2px_0_0_var(--ck-brand-active)]\"\n : \"bg-white hover:bg-[var(--ck-bg-surface-muted)]\",\n row.cells.some(\n (cell) =>\n React.isValidElement(cell) &&\n typeof cell.props.className === \"string\" &&\n cell.props.className.includes(\"text-[var(--ck-brand-primary)]\"),\n ) && \"relative after:absolute after:inset-y-[10px] after:right-2 after:w-1 after:rounded-full after:bg-[var(--ck-goal-list-row-active-marker)]\",\n )}\n style={{\n display: \"grid\",\n gridTemplateColumns: enableSelection ? `44px ${columnTemplate}` : columnTemplate,\n }}\n >\n {enableSelection ? (\n <div className=\"flex h-[52px] items-center\">\n <SelectionToggle\n checked={selectedIds.has(row.id)}\n onToggle={() => onToggleRowChecked(row.id)}\n />\n </div>\n ) : null}\n {row.cells.map((cell, index) => (\n <div\n key={`${row.id}-${index}`}\n className={cn(\n \"flex min-h-[52px] items-center py-[6px] text-[var(--ck-text-secondary)] transition-colors\",\n index === 1 && \"pr-6 text-[var(--ck-text-primary)]\",\n row.id !== selectedId && index === 1 && \"group-hover:text-[var(--ck-brand-primary)]\",\n )}\n >\n {cell}\n </div>\n ))}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction IssueDetailPanel<TRow extends IssueWorkspaceRowBase>({\n mode,\n open,\n detailLabel,\n detailTabs,\n activeTab,\n onChangeTab,\n row,\n onClose,\n renderContent,\n}: {\n mode: IssueWorkspaceMode;\n open: boolean;\n detailLabel: string;\n detailTabs: Array<{ key: string; label: string }>;\n activeTab: string;\n onChangeTab: (tabKey: string) => void;\n row: TRow | undefined;\n onClose: () => void;\n renderContent: (\n row: TRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => React.ReactNode;\n}) {\n if (mode === \"desktop\") {\n return (\n <aside className=\"flex h-full w-[var(--ck-detail-panel-width)] flex-col border-l border-[var(--ck-border-subtle)] bg-white\">\n <div className=\"flex items-center justify-between border-b border-[var(--ck-border-subtle)] px-5 py-4\">\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{detailLabel}</div>\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </button>\n </div>\n {detailTabs.length > 0 ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] px-5\">\n <div className=\"flex gap-5 overflow-x-auto\">\n {detailTabs.map((tab) => (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => onChangeTab(tab.key)}\n className={cn(\n \"border-b-2 px-1 py-3 text-[13px]\",\n activeTab === tab.key\n ? \"border-[var(--ck-brand-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-transparent text-[var(--ck-text-secondary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n {renderContent(row, { compact: false, activeTab })}\n </aside>\n );\n }\n\n return (\n <>\n {open ? (\n <button\n type=\"button\"\n aria-label={`关闭${detailLabel}`}\n onClick={onClose}\n className=\"absolute inset-0 z-30 bg-[rgba(15,23,42,0.28)]\"\n />\n ) : null}\n <aside\n className={cn(\n \"absolute right-0 top-0 z-40 flex h-full flex-col border-l border-[var(--ck-border-subtle)] bg-white shadow-[var(--ck-shadow-md)] transition-transform duration-200\",\n mode === \"mobile\" ? \"w-full\" : \"w-[min(720px,88vw)]\",\n open ? \"translate-x-0\" : \"translate-x-full\",\n )}\n >\n <div className=\"flex items-center justify-between border-b border-[var(--ck-border-subtle)] px-4 py-4 sm:px-5\">\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{detailLabel}</div>\n <div className=\"mt-1 truncate text-[12px] text-[var(--ck-text-muted)]\">\n {mode === \"mobile\" ? \"移动端全宽滑层\" : \"平板/笔记本覆盖式侧栏\"}\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n {detailTabs.length > 0 ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 sm:px-5\">\n <div className=\"flex gap-5 overflow-x-auto\">\n {detailTabs.map((tab) => (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => onChangeTab(tab.key)}\n className={cn(\n \"border-b-2 px-1 py-3 text-[13px]\",\n activeTab === tab.key\n ? \"border-[var(--ck-brand-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-transparent text-[var(--ck-text-secondary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n {renderContent(row, { compact: true, activeTab })}\n </aside>\n </>\n );\n}\n\nfunction normalizeSidebarSections(\n sidebarViews: IssueWorkspaceSidebarView[],\n sidebarSections?: IssueWorkspaceSidebarSection[],\n): IssueWorkspaceSidebarSection[] {\n if (sidebarSections && sidebarSections.length > 0) {\n return sidebarSections;\n }\n\n return [\n {\n label: \"视图\",\n views: sidebarViews,\n },\n ];\n}\n\nexport function IssueWorkspace<TRow extends IssueWorkspaceRowBase>({\n productItems,\n sidebarViews,\n sidebarSections,\n tableHeaders,\n rows,\n enableSelection = false,\n projectName,\n sectionName,\n userName,\n createButtonLabel,\n filterLabel,\n filterChips,\n searchPlaceholder,\n sortLabel,\n secondaryFilterLabel,\n savedViewLabel,\n resultsSummary,\n batchActions = [\n { label: \"批量更新状态\", tone: \"brand\" },\n { label: \"批量分配\" },\n { label: \"移动到迭代\" },\n { label: \"更多\" },\n ],\n detailLabel = \"事项详情\",\n detailButtonLabel = \"查看详情\",\n detailTabs = [\n { key: \"detail\", label: \"详情\" },\n { key: \"activity\", label: \"动态\" },\n { key: \"links\", label: \"关联\" },\n ],\n defaultDetailTab = \"detail\",\n defaultSelectedRowId,\n tableColumnTemplate = \"86px minmax(360px,2fr) 90px 90px 96px 96px 110px 140px 110px 110px 110px\",\n tableMinWidth = 1396,\n headerLinks = [\"仪表盘\", \"项目集\", \"目标\"],\n viewportLocked = true,\n className,\n renderDetailContent,\n}: IssueWorkspaceProps<TRow>) {\n const mode = useViewportMode();\n const sections = React.useMemo(\n () => normalizeSidebarSections(sidebarViews, sidebarSections),\n [sidebarSections, sidebarViews],\n );\n const [sidebarOpen, setSidebarOpen] = React.useState(false);\n const [detailOpen, setDetailOpen] = React.useState(mode !== \"mobile\");\n const [selectedId, setSelectedId] = React.useState(\n defaultSelectedRowId ?? rows[0]?.id ?? \"\",\n );\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(new Set());\n const [activeDetailTab, setActiveDetailTab] = React.useState(\n detailTabs[0]?.key ?? defaultDetailTab,\n );\n\n React.useEffect(() => {\n if (!rows.some((row) => row.id === selectedId)) {\n setSelectedId(defaultSelectedRowId ?? rows[0]?.id ?? \"\");\n }\n }, [defaultSelectedRowId, rows, selectedId]);\n\n React.useEffect(() => {\n setSelectedIds((current) => {\n const next = new Set(Array.from(current).filter((id) => rows.some((row) => row.id === id)));\n return next.size === current.size ? current : next;\n });\n }, [rows]);\n\n React.useEffect(() => {\n setActiveDetailTab(detailTabs[0]?.key ?? defaultDetailTab);\n }, [defaultDetailTab, detailTabs, selectedId]);\n\n React.useEffect(() => {\n if (mode === \"desktop\") {\n setSidebarOpen(false);\n setDetailOpen(true);\n return;\n }\n\n setSidebarOpen(false);\n setDetailOpen(false);\n }, [mode]);\n\n const selectedRow = React.useMemo(\n () => rows.find((row) => row.id === selectedId),\n [rows, selectedId],\n );\n\n const handleSelect = React.useCallback(\n (row: TRow) => {\n setSelectedId(row.id);\n if (mode !== \"desktop\") {\n setDetailOpen(true);\n }\n },\n [mode],\n );\n\n const toggleRowChecked = React.useCallback((rowId: string) => {\n setSelectedIds((current) => {\n const next = new Set(current);\n if (next.has(rowId)) {\n next.delete(rowId);\n } else {\n next.add(rowId);\n }\n return next;\n });\n }, []);\n\n const toggleAllRows = React.useCallback(() => {\n setSelectedIds((current) => {\n const allSelected = rows.length > 0 && rows.every((row) => current.has(row.id));\n if (allSelected) {\n return new Set();\n }\n return new Set(rows.map((row) => row.id));\n });\n }, [rows]);\n\n return (\n <div\n className={cn(\n viewportLocked\n ? \"coding-kit h-[calc(100vh-80px)] min-h-[760px] overflow-hidden rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-white\"\n : \"coding-kit min-h-[760px] overflow-visible rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-white\",\n className,\n )}\n >\n <div className={cn(\"flex bg-white\", viewportLocked ? \"h-full\" : \"min-h-[760px]\")}>\n <CodingProductRail items={productItems} userName={userName} className=\"h-full w-[var(--ck-global-nav-width)]\" />\n <div className=\"relative flex min-w-0 flex-1 flex-col\">\n <TopHeader\n mode={mode}\n projectName={projectName}\n sectionName={sectionName}\n userName={userName}\n headerLinks={headerLinks}\n onToggleViews={() => setSidebarOpen(true)}\n />\n <div className={cn(\"relative flex flex-1 bg-[var(--ck-bg-page)]\", viewportLocked ? \"min-h-0\" : \"min-h-[680px]\")}>\n <ViewSidebar\n mode={mode}\n open={mode === \"desktop\" || sidebarOpen}\n sections={sections}\n createButtonLabel={createButtonLabel}\n onClose={() => setSidebarOpen(false)}\n />\n <main className={cn(\"flex min-w-0 flex-1 flex-col\", viewportLocked ? \"min-h-0\" : \"min-h-[680px]\")}>\n <CompactViewTabs sections={sections} />\n <IssuesToolbar\n filterLabel={filterLabel}\n filterChips={filterChips}\n searchPlaceholder={searchPlaceholder}\n sortLabel={sortLabel}\n secondaryFilterLabel={secondaryFilterLabel}\n savedViewLabel={savedViewLabel}\n resultsSummary={resultsSummary}\n detailButtonLabel={detailButtonLabel}\n onOpenDetail={() => setDetailOpen(true)}\n />\n {enableSelection ? (\n <SelectionToolbar\n selectedCount={selectedIds.size}\n actions={batchActions}\n onClear={() => setSelectedIds(new Set())}\n />\n ) : null}\n <div className={cn(\"relative flex flex-1\", viewportLocked ? \"min-h-0\" : \"min-h-[620px]\")}>\n <div className=\"min-w-0 flex-1 bg-white\">\n <IssuesTable\n headers={tableHeaders}\n rows={rows}\n selectedId={selectedId}\n selectedIds={selectedIds}\n enableSelection={enableSelection}\n columnTemplate={tableColumnTemplate}\n tableMinWidth={tableMinWidth}\n onSelect={handleSelect}\n onToggleRowChecked={toggleRowChecked}\n onToggleAllRows={toggleAllRows}\n />\n </div>\n <IssueDetailPanel\n mode={mode}\n open={detailOpen}\n detailLabel={detailLabel}\n detailTabs={detailTabs}\n activeTab={activeDetailTab}\n onChangeTab={setActiveDetailTab}\n row={selectedRow}\n onClose={() => setDetailOpen(false)}\n renderContent={renderDetailContent}\n />\n </div>\n </main>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ProjectCapabilitySidebarItem {\n label: string;\n active?: boolean;\n children?: ProjectCapabilitySidebarItem[];\n}\n\nexport interface ProjectCapabilitySidebarSection {\n label?: string;\n items: ProjectCapabilitySidebarItem[];\n}\n\ninterface ProjectCapabilitySidebarProps {\n tenantLabel?: string;\n projectName: string;\n sections: ProjectCapabilitySidebarSection[];\n footerActionLabel?: string;\n className?: string;\n}\n\nfunction SidebarItem({\n item,\n level = 0,\n}: {\n item: ProjectCapabilitySidebarItem;\n level?: number;\n}) {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <div>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-radius-xs)] text-left text-[13px] transition-colors\",\n level === 0 && \"px-3 py-2\",\n level === 0 &&\n !item.active &&\n \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n level === 0 && item.active && \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\",\n level > 0 && \"ml-5 px-3 py-[7px]\",\n level > 0 &&\n !item.active &&\n \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n level > 0 &&\n item.active &&\n \"bg-[var(--ck-sidebar-item-active-bg)] font-medium text-[var(--ck-brand-active)]\",\n )}\n >\n <span>{item.label}</span>\n {hasChildren ? <ChevronDown className=\"h-3.5 w-3.5 text-[var(--ck-text-muted)]\" /> : null}\n </button>\n {hasChildren ? (\n <div className=\"mt-0.5 space-y-0.5\">\n {item.children?.map((child) => (\n <SidebarItem key={child.label} item={child} level={level + 1} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport function ProjectCapabilitySidebar({\n tenantLabel = \"项目\",\n projectName,\n sections,\n footerActionLabel,\n className,\n}: ProjectCapabilitySidebarProps) {\n return (\n <aside\n className={cn(\n \"flex w-[224px] shrink-0 flex-col border-r border-[var(--ck-border-subtle)] bg-white\",\n className,\n )}\n >\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-4\">\n <div className=\"text-[12px] text-[var(--ck-text-muted)]\">{tenantLabel}</div>\n <div className=\"mt-1 text-[14px] font-medium text-[var(--ck-text-primary)]\">{projectName}</div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-3\">\n {sections.map((section, index) => (\n <section key={section.label ?? `section-${index}`}>\n {section.label ? (\n <div className=\"mb-1.5 px-3 text-[11px] font-medium text-[var(--ck-text-muted)]\">{section.label}</div>\n ) : null}\n <div className=\"space-y-0.5\">\n {section.items.map((item) => (\n <SidebarItem key={item.label} item={item} />\n ))}\n </div>\n </section>\n ))}\n </div>\n </div>\n\n {footerActionLabel ? (\n <div className=\"border-t border-[var(--ck-border-subtle)] px-3 py-3\">\n <button\n type=\"button\"\n className=\"w-full rounded-[var(--ck-radius-xs)] px-3 py-2 text-left text-[13px] text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\"\n >\n {footerActionLabel}\n </button>\n </div>\n ) : null}\n </aside>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ChevronRight,\n FileText,\n FolderKanban,\n GitBranch,\n Megaphone,\n Rocket,\n ScrollText,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { SurfacePanel } from \"../primitives\";\n\nexport interface ProjectOverviewQuickAction {\n label: string;\n description: string;\n tone?: \"primary\" | \"secondary\";\n}\n\nexport interface ProjectOverviewStatTab {\n label: string;\n active?: boolean;\n}\n\nexport interface ProjectOverviewStatMetric {\n value: string;\n label: string;\n status?: string;\n}\n\nexport interface ProjectOverviewRepositorySummary {\n name: string;\n updatedMeta: string;\n branchCount: string;\n tagCount: string;\n}\n\nexport interface ProjectOverviewBuildSummary {\n name: string;\n status: string;\n meta: string;\n}\n\nexport interface ProjectOverviewDocumentItem {\n title: string;\n meta: string;\n}\n\nexport interface ProjectOverviewActivityItem {\n time: string;\n summary: string;\n target?: string;\n detail?: string;\n}\n\nexport interface ProjectOverviewAnnouncement {\n author: string;\n publishedAt: string;\n content: string[];\n}\n\ninterface ProjectOverviewWorkspaceProps {\n activeTab: string;\n statTabs: ProjectOverviewStatTab[];\n quickActions: ProjectOverviewQuickAction[];\n statMetrics: ProjectOverviewStatMetric[];\n repository: ProjectOverviewRepositorySummary;\n buildSummary: ProjectOverviewBuildSummary;\n recentFiles: ProjectOverviewDocumentItem[];\n wikiDocs: ProjectOverviewDocumentItem[];\n activities: ProjectOverviewActivityItem[];\n announcement: ProjectOverviewAnnouncement;\n projectSlug: string;\n projectDescription: string;\n memberCount: string;\n onSelectTab?: (label: string) => void;\n className?: string;\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction InfoList({\n items,\n icon,\n}: {\n items: ProjectOverviewDocumentItem[];\n icon: React.ReactNode;\n}) {\n return (\n <div className=\"px-4 py-2\">\n {items.map((item) => (\n <button\n key={item.title}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <span className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n {icon}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </span>\n <span className=\"mt-1 block text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</span>\n </span>\n </button>\n ))}\n </div>\n );\n}\n\nexport function ProjectOverviewWorkspace({\n activeTab,\n statTabs,\n quickActions,\n statMetrics,\n repository,\n buildSummary,\n recentFiles,\n wikiDocs,\n activities,\n announcement,\n projectSlug,\n projectDescription,\n memberCount,\n onSelectTab,\n className,\n}: ProjectOverviewWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 gap-4 overflow-auto bg-[var(--ck-surface-page)] p-4\", className)}>\n <div className=\"min-w-0 flex-1 space-y-4\">\n <SurfacePanel className=\"overflow-hidden\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 pt-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {statTabs.map((tab) => (\n <button\n key={tab.label}\n type=\"button\"\n onClick={() => onSelectTab?.(tab.label)}\n className={cn(\n \"rounded-t-[var(--ck-card-radius-sm)] px-3 py-2 text-[13px] transition-colors\",\n tab.active\n ? \"bg-[var(--ck-bg-surface-muted)] font-medium text-[var(--ck-text-primary)]\"\n : \"text-[var(--ck-text-secondary)] hover:text-[var(--ck-text-primary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"grid gap-3 px-3 py-3 lg:grid-cols-[216px_minmax(0,1fr)]\">\n <div className=\"space-y-3\">\n {quickActions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-radius-md)] border px-3 py-2.5 text-left transition-colors\",\n action.tone === \"primary\"\n ? \"border-[var(--ck-status-brand-bg)] bg-[var(--ck-bg-brand-soft)] hover:border-[var(--ck-brand-border-soft)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] hover:bg-[var(--ck-bg-surface-muted)]\",\n )}\n >\n <span>\n <span className=\"block text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {action.label}\n </span>\n <span className=\"mt-1 block text-[12px] text-[var(--ck-text-muted)]\">\n {action.description}\n </span>\n </span>\n <ChevronRight className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n </button>\n ))}\n </div>\n\n <div className=\"space-y-4\">\n <div className=\"grid gap-3 md:grid-cols-4\">\n {statMetrics.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[24px] font-semibold leading-none text-[var(--ck-text-primary)]\">\n {item.value}\n </div>\n <div className=\"mt-1.5 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n {item.status ? (\n <div className=\"mt-1.5 text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n {item.status}\n </div>\n ) : null}\n </div>\n ))}\n </div>\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"代码仓库\" />\n <div className=\"px-3 py-3\">\n <button\n type=\"button\"\n className=\"flex w-full items-center justify-between rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 text-left transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {repository.name}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n {repository.updatedMeta}\n </div>\n </div>\n <div className=\"flex items-center gap-4 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>{repository.branchCount}</span>\n <span>{repository.tagCount}</span>\n </div>\n </button>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"构建计划\" />\n <div className=\"px-3 py-3\">\n <button\n type=\"button\"\n className=\"flex w-full items-center justify-between gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 text-left transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {buildSummary.name}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{buildSummary.meta}</div>\n </div>\n <div className=\"rounded-full bg-[var(--ck-status-success-bg)] px-2.5 py-[3px] text-[11px] font-medium text-[var(--ck-status-success-text)]\">\n {buildSummary.status}\n </div>\n </button>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近文件\" actionLabel=\"查看全部\" />\n <InfoList items={recentFiles} icon={<FileText className=\"h-4 w-4\" />} />\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"Wiki 文档\" />\n <InfoList items={wikiDocs} icon={<ScrollText className=\"h-4 w-4\" />} />\n </SurfacePanel>\n </div>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"项目动态\" />\n <div className=\"px-4 py-3\">\n <div className=\"mb-3 flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center gap-1 rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 所有成员\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center gap-1 rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 所有类型\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n\n <div className=\"space-y-4\">\n {activities.map((item) => (\n <div key={`${item.time}-${item.summary}`} className=\"flex gap-3\">\n <div className=\"w-14 shrink-0 pt-0.5 text-[12px] text-[var(--ck-text-muted)]\">\n {item.time}\n </div>\n <div className=\"flex min-w-0 flex-1 gap-3 rounded-[var(--ck-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Rocket className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.summary}</div>\n {item.target ? (\n <div className=\"mt-2 text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n {item.target}\n </div>\n ) : null}\n {item.detail ? (\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.detail}</div>\n ) : null}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"hidden w-[320px] shrink-0 xl:block\">\n <SurfacePanel className=\"overflow-hidden\">\n <SectionHeader title=\"项目公告\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-9 w-9 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Megaphone className=\"h-4.5 w-4.5\" />\n </div>\n <div>\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {announcement.author}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 发表于 {announcement.publishedAt}\n </div>\n </div>\n </div>\n\n <div className=\"mt-4 space-y-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {announcement.content.map((paragraph) => (\n <p key={paragraph}>{paragraph}</p>\n ))}\n </div>\n\n <button\n type=\"button\"\n className=\"mt-4 text-[12px] font-medium text-[var(--ck-brand-primary)] hover:underline\"\n >\n 查看全部公告\n </button>\n\n <div className=\"mt-4 rounded-[var(--ck-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-3\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <FolderKanban className=\"h-4 w-4 text-[var(--ck-text-secondary)]\" />\n 示例项目\n </div>\n <div className=\"mt-2 text-[12px] text-[var(--ck-text-muted)]\">{projectSlug}</div>\n <div className=\"mt-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {projectDescription}\n </div>\n <div className=\"mt-4 flex items-center justify-between text-[12px] text-[var(--ck-text-secondary)]\">\n <span>{memberCount}</span>\n <button type=\"button\" className=\"inline-flex items-center gap-1 text-[var(--ck-brand-primary)]\">\n 查看成员\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n CalendarClock,\n ChevronDown,\n Clock3,\n HardDrive,\n Search,\n ShieldCheck,\n SlidersHorizontal,\n UserCog,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, ConsoleSelectTrigger, SurfacePanel } from \"../primitives\";\n\nexport interface ResourceFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface ResourceListItem {\n id: string;\n name: string;\n type: string;\n owner: string;\n status: string;\n location: string;\n updatedAt: string;\n}\n\nexport interface ResourceStatItem {\n label: string;\n value: string;\n}\n\nexport interface ResourceActivityItem {\n title: string;\n meta: string;\n}\n\ninterface ResourceManagementWorkspaceProps {\n title: string;\n description?: string;\n primaryActionLabel: string;\n filterChips: ResourceFilterChip[];\n stats: ResourceStatItem[];\n items: ResourceListItem[];\n detailTitle: string;\n detailMeta: string;\n detailDescription: string;\n detailStats: ResourceStatItem[];\n recentActivities: ResourceActivityItem[];\n className?: string;\n}\n\nfunction StatusTag({ value }: { value: string }) {\n const tone =\n value.includes(\"使用中\") || value.includes(\"正常\")\n ? \"bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]\"\n : value.includes(\"待分配\") || value.includes(\"待启用\")\n ? \"bg-[var(--ck-status-idle-bg)] text-[var(--ck-status-idle-text)]\"\n : \"bg-[var(--ck-status-warning-bg)] text-[var(--ck-status-warning-text)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function ResourceManagementWorkspace({\n title,\n description,\n primaryActionLabel,\n filterChips,\n stats,\n items,\n detailTitle,\n detailMeta,\n detailDescription,\n detailStats,\n recentActivities,\n className,\n}: ResourceManagementWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 gap-4 overflow-auto bg-[var(--ck-surface-page)] p-4\", className)}>\n <div className=\"min-w-0 flex-1 space-y-4\">\n <SurfacePanel className=\"overflow-hidden\">\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleInput icon={Search} placeholder=\"搜索资源名称、负责人、位置\" containerClassName=\"h-9 w-[240px]\" />\n <ConsoleButton variant=\"primary\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n {filterChips.map((chip) => (\n <button\n key={chip.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n chip.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {chip.label}\n </button>\n ))}\n <div className=\"ml-auto flex items-center gap-2\">\n <ConsoleSelectTrigger>\n 按更新时间排序\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </ConsoleSelectTrigger>\n <ConsoleButton size=\"icon\" className=\"h-[var(--ck-chip-height)] w-[var(--ck-chip-height)]\">\n <SlidersHorizontal className=\"h-4 w-4\" />\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"px-6 py-4\">\n <div className=\"grid gap-3 md:grid-cols-4\">\n {stats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[24px] font-semibold leading-none text-[var(--ck-text-primary)]\">\n {item.value}\n </div>\n <div className=\"mt-1.5 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资源台账\" actionLabel=\"导出清单\" />\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full border-collapse text-left\">\n <thead>\n <tr className=\"bg-[var(--ck-bg-surface-muted)]\">\n {[\"资源名称\", \"类型\", \"负责人\", \"状态\", \"位置\", \"最近更新时间\"].map((title) => (\n <th\n key={title}\n className=\"border-b border-[var(--ck-border-subtle)] px-4 py-3 text-[12px] font-medium text-[var(--ck-text-muted)]\"\n >\n {title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {items.map((item) => (\n <tr\n key={item.id}\n className=\"border-b border-[var(--ck-border-subtle)] last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <td className=\"px-4 py-3 text-[13px] font-medium text-[var(--ck-text-primary)]\">{item.name}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.type}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.owner}</td>\n <td className=\"px-4 py-3\"><StatusTag value={item.status} /></td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.location}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.updatedAt}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"hidden w-[320px] shrink-0 xl:block\">\n <div className=\"space-y-4\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资源摘要\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-md)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <HardDrive className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)]\">\n {detailTitle}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{detailMeta}</div>\n </div>\n </div>\n <div className=\"mt-4 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {detailDescription}\n </div>\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {detailStats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[18px] font-semibold text-[var(--ck-text-primary)]\">{item.value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近使用记录\" actionLabel=\"查看全部\" />\n <div className=\"px-4 py-2\">\n {recentActivities.map((item) => (\n <button\n key={item.title}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Clock3 className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"管理要求\" />\n <div className=\"space-y-2 px-3 py-3 text-[13px] text-[var(--ck-text-secondary)]\">\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <ShieldCheck className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>高敏感资源需要绑定责任人和共享范围,变更后需记录流转轨迹。</span>\n </div>\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <UserCog className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>离职或角色变更后,应及时回收账号、设备或业务资源的使用权限。</span>\n </div>\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <CalendarClock className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>建议按月回顾资源占用、闲置情况和续费提醒,避免出现沉默成本。</span>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronsUpDown, Building2 } from \"lucide-react\";\n\nimport { SurfacePanel } from \"../primitives\";\n\ninterface TenantSwitcherProps {\n tenant: string;\n environment: string;\n}\n\nexport function TenantSwitcher({\n tenant,\n environment,\n}: TenantSwitcherProps) {\n return (\n <SurfacePanel className=\"flex items-center gap-3 px-3 py-2\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\">\n <Building2 className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {tenant}\n </div>\n <div className=\"truncate text-[12px] text-[var(--ck-text-muted)]\">\n {environment}\n </div>\n </div>\n <ChevronsUpDown className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport { Search } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleInput } from \"../primitives\";\n\nexport interface TemplatePickerCategory {\n label: string;\n active?: boolean;\n}\n\nexport interface TemplatePickerCard {\n id: string;\n title: string;\n description: string;\n selected?: boolean;\n}\n\ninterface TemplatePickerWorkspaceProps {\n contextLabel?: string;\n title?: string;\n description?: string;\n primaryActionLabel: string;\n helpLabel?: string;\n footerHint?: string;\n primaryActionVariant?: \"outline\" | \"solid\";\n categories: TemplatePickerCategory[];\n cards: TemplatePickerCard[];\n searchPlaceholder?: string;\n onSelectCategory?: (label: string) => void;\n onSelectCard?: (cardId: string) => void;\n className?: string;\n}\n\nexport function TemplatePickerWorkspace({\n contextLabel,\n title,\n description,\n primaryActionLabel,\n helpLabel,\n footerHint,\n primaryActionVariant = \"outline\",\n categories,\n cards,\n searchPlaceholder = \"请输入模板关键字进行搜索\",\n onSelectCategory,\n onSelectCard,\n className,\n}: TemplatePickerWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 flex-col bg-[#fafbfc]\", className)}>\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-6 py-5\">\n {contextLabel ? (\n <div className=\"text-[12px] leading-5 text-[var(--ck-text-secondary)]\">{contextLabel}</div>\n ) : null}\n\n <div className=\"mt-1 flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n {title ? (\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">{description}</p>\n ) : null}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-4 pt-1\">\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-9 items-center rounded-[var(--ck-radius-xs)] border px-4 text-[13px] font-medium transition-colors\",\n primaryActionVariant === \"solid\"\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white hover:bg-[#1868f2]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-primary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {primaryActionLabel}\n </button>\n {helpLabel ? (\n <button\n type=\"button\"\n className=\"text-[13px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {helpLabel}\n </button>\n ) : null}\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-6 py-4\">\n <div className=\"flex flex-wrap gap-2.5\">\n {categories.map((item) => (\n <button\n key={item.label}\n type=\"button\"\n onClick={() => onSelectCategory?.(item.label)}\n className={cn(\n \"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border px-3 text-[13px] transition-colors\",\n item.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n <ConsoleInput\n icon={Search}\n placeholder={searchPlaceholder}\n containerClassName=\"mt-4 h-10 max-w-[460px]\"\n />\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-5\">\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-3\">\n {cards.map((card) => (\n <button\n key={card.id}\n type=\"button\"\n onClick={() => onSelectCard?.(card.id)}\n className={cn(\n \"min-h-[134px] rounded-[var(--ck-radius-sm)] border bg-white px-4 py-3.5 text-left transition-colors\",\n card.selected\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] shadow-[0_0_0_2px_rgba(37,126,250,0.06)]\"\n : \"border-[var(--ck-border-subtle)] hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-surface-muted)]\",\n )}\n >\n <div className=\"text-[14px] font-medium leading-6 text-[var(--ck-text-primary)]\">{card.title}</div>\n <div className=\"mt-1.5 text-[12px] leading-6 text-[var(--ck-text-secondary)]\">{card.description}</div>\n </button>\n ))}\n </div>\n {footerHint ? (\n <div className=\"mt-5 rounded-[var(--ck-radius-sm)] border border-dashed border-[var(--ck-border-default)] bg-white px-4 py-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {footerHint}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ArrowRight } from \"lucide-react\";\n\nimport { ConsoleButton, SurfacePanel } from \"../primitives\";\n\ninterface WorkbenchEntryCardProps {\n title: string;\n description: string;\n meta: string;\n tone?: \"brand\" | \"warning\" | \"success\";\n}\n\nconst toneMap = {\n brand: \"bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\",\n warning: \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\",\n success: \"bg-[var(--ck-success-soft)] text-[var(--ck-success-text)]\",\n} as const;\n\nexport function WorkbenchEntryCard({\n title,\n description,\n meta,\n tone = \"brand\",\n}: WorkbenchEntryCardProps) {\n return (\n <SurfacePanel className=\"p-4 transition-transform hover:-translate-y-px hover:shadow-[var(--ck-shadow-md)]\">\n <div className={`inline-flex rounded-[var(--ck-radius-xs)] px-2 py-1 text-[11px] font-medium ${toneMap[tone]}`}>\n {meta}\n </div>\n <div className=\"mt-3 text-[15px] font-semibold text-[var(--ck-text-primary)]\">\n {title}\n </div>\n <p className=\"mt-2 min-h-[40px] text-[13px] leading-5 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n <ConsoleButton className=\"mt-4\" variant=\"ghost\">\n 进入工作台\n <ArrowRight className=\"h-4 w-4\" />\n </ConsoleButton>\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n TemplatePickerWorkspace,\n type ProjectCapabilitySidebarSection,\n type TemplatePickerCard,\n type TemplatePickerCategory,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [\n { label: \"构建计划\", active: true },\n { label: \"构建节点\" },\n ],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst CATEGORY_SEED = [\"全部\", \"团队模板\", \"编程语言\", \"镜像仓库\", \"制品库\", \"部署\", \"基础\"];\n\nconst CARD_SEED: TemplatePickerCard[] = [\n {\n id: \"java-spring-docker\",\n title: \"Java + Spring + Docker\",\n description: \"该模板演示基于 Java + Spring 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"python-flask-docker\",\n title: \"Python + Flask + Docker\",\n description: \"该模板演示基于 Python + Flask 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"node-express-docker\",\n title: \"Nodejs + Express + Docker\",\n description: \"该模板演示基于 Nodejs + Express 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"golang-gin-docker\",\n title: \"GoLang + Gin + Docker\",\n description: \"该模板演示基于 GoLang + Gin 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"dotnet-core-docker\",\n title: \".Net Core + Docker\",\n description: \"该模板演示基于 .Net Core 实现检出代码、测试、构建 Docker 镜像并推送到制品库,再进一步部署到 Kubernetes。\",\n },\n {\n id: \"php-laravel-docker\",\n title: \"PHP + Laravel + Docker\",\n description: \"该模板演示基于 PHP + Laravel 实现代码检出、依赖安装、单元测试、镜像构建与部署的一体化过程。\",\n },\n {\n id: \"react-cos\",\n title: \"React + COS\",\n description: \"该模板演示基于 React 实现全自动检出代码 -> 单元测试 -> 编译构建 -> 上传到腾讯云 COS 的持续集成构建过程。\",\n },\n {\n id: \"vue-cos\",\n title: \"Vue + COS\",\n description: \"该模板演示基于 Vue 实现检出代码、安装依赖、前端编译并上传到 COS 的标准静态站点交付过程。\",\n },\n {\n id: \"java-spring-maven\",\n title: \"Java + Spring + Maven\",\n description: \"该模板聚焦于 Maven 构建制品的典型流程,适合以单元测试、打包和归档为核心的 Java 项目。\",\n },\n {\n id: \"android-apk\",\n title: \"Java-Android 编译并签名 Apk\",\n description: \"该模板内置 Android 编译、签名与产物归档步骤,适合移动端 APK 持续构建场景。\",\n },\n {\n id: \"docker-push\",\n title: \"CODING Docker 镜像推送\",\n description: \"该模板聚焦镜像构建与推送,适合已有部署流程但希望统一镜像制品产出的项目。\",\n },\n {\n id: \"generic-upload\",\n title: \"CODING Generic 制品上传\",\n description: \"该模板面向通用构建产物上传场景,可将压缩包、二进制文件等归档至 Generic 制品库。\",\n },\n {\n id: \"docker-k8s\",\n title: \"CODING Docker 镜像推送并部署到 Kubernetes\",\n description: \"该模板串联镜像构建、推送和 Kubernetes 发布,适合面向容器交付的一体化流水线。\",\n },\n {\n id: \"simple-template\",\n title: \"简易模板\",\n description: \"通过检出代码、构建、测试和部署来设置常规步骤。在模板中填充上真实构建和部署过程即可完成整个持续集成流程。\",\n },\n {\n id: \"parallel-template\",\n title: \"并行过程模板\",\n description: \"通过检出代码、构建、测试和存档来设置并行构建步骤。其中测试和存档两个步骤分别设定了两个并行执行的任务。\",\n },\n {\n id: \"multi-branch-template\",\n title: \"多分支操作模板\",\n description: \"该模板内置分支切换、检出和目标分支操作步骤,适合需要在多个分支间串联作业的场景。\",\n },\n {\n id: \"manual-approval-template\",\n title: \"人工确认模板\",\n description: \"在关键阶段插入人工确认节点,适合发布审批、生产部署前置复核等高风险流程。\",\n },\n {\n id: \"mr-reviewer-template\",\n title: \"CODING 合并请求添加评审者\",\n description: \"该模板面向代码协作流程,在流水线中自动为合并请求补充评审人,提升评审流转效率。\",\n },\n {\n id: \"ssh-password\",\n title: \"通过账号密码发起的 SSH 连接\",\n description: \"该模板用于通过账号密码连接目标服务器执行命令,适合传统主机场景下的自动化任务。\",\n },\n {\n id: \"ssh-private-key\",\n title: \"通过私钥发起的 SSH 连接\",\n description: \"该模板通过私钥建立安全 SSH 连接,适用于需要远程执行部署或运维脚本的流水线。\",\n },\n {\n id: \"sftp-deploy\",\n title: \"SFTP 部署\",\n description: \"该模板封装 SFTP 上传步骤,适合需要将构建结果同步到远程目录的交付场景。\",\n },\n {\n id: \"scp-deploy\",\n title: \"SCP 部署\",\n description: \"该模板基于 SCP 分发构建产物,适用于轻量级远程发布和主机文件替换流程。\",\n },\n {\n id: \"custom-pipeline\",\n title: \"自定义构建过程\",\n description: \"允许您根据 Jenkinsfile 的规范来随意定制持续集成流水线过程。\",\n },\n];\n\nexport function BuildPlanStarterPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeCategory, setActiveCategory] = React.useState(\"全部\");\n const [selectedCardId, setSelectedCardId] = React.useState(\"java-spring-docker\");\n\n const categories = React.useMemo<TemplatePickerCategory[]>(\n () => CATEGORY_SEED.map((label) => ({ label, active: label === activeCategory })),\n [activeCategory],\n );\n\n const cards = React.useMemo<TemplatePickerCard[]>(\n () => CARD_SEED.map((card) => ({ ...card, selected: card.id === selectedCardId })),\n [selectedCardId],\n );\n\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <>\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[#fafbfc] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[#2c2c2c] bg-[#2c2c2c] px-3 text-[13px] text-white\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3 border-b border-[var(--ck-border-subtle)] bg-white px-5 py-3 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>持续集成</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>构建计划</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span className=\"text-[var(--ck-text-primary)]\">选择构建计划模板</span>\n </div>\n </>\n }\n contentClassName=\"min-h-0 flex-1 flex-col\"\n >\n <TemplatePickerWorkspace\n contextLabel=\"项目 / 示例项目\"\n title=\"选择构建计划模板\"\n description=\"推荐先从团队模板或语言模板开始,快速搭出适合当前仓库的标准构建过程。\"\n primaryActionLabel=\"自定义构建过程\"\n helpLabel=\"查看帮助文档\"\n footerHint=\"找不到合适模板,可直接进入自定义构建过程,按团队规范自由编排流水线阶段、任务与触发条件。\"\n categories={categories}\n cards={cards}\n primaryActionVariant=\"outline\"\n onSelectCategory={setActiveCategory}\n onSelectCard={setSelectedCardId}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n BuildPlanListWorkspace,\n ProjectCapabilitySidebar,\n type BuildPlanFilterChip,\n type BuildPlanHelpLink,\n type BuildPlanListItem,\n type BuildPlanSelectFilter,\n type ProjectCapabilitySidebarSection,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [\n { label: \"构建计划\", active: true },\n { label: \"构建节点\" },\n ],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst HELP_LINKS: BuildPlanHelpLink[] = [\n { label: \"构建环境不是我想要的?\" },\n { label: \"几个小例子带你掌握 Jenkinsfile\" },\n { label: \"自定义构建环境 docker: command not found\" },\n];\n\nconst LEFT_FILTERS: BuildPlanFilterChip[] = [\n { label: \"我的星标\" },\n { label: \"系统来源\" },\n];\n\nconst GROUP_FILTERS: BuildPlanFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"未分组\" },\n];\n\nconst SELECT_FILTERS: BuildPlanSelectFilter[] = [\n { label: \"排序\", value: \"按照创建时间排序\" },\n { label: \"触发者\", value: \"所有人触发的\" },\n { label: \"计划来源\", value: \"自定义\" },\n];\n\nconst BUILD_PLAN_ITEMS: BuildPlanListItem[] = [\n {\n id: \"sample-task\",\n name: \"示例任务\",\n status: \"构建成功\",\n triggerMeta: \"黄磊 推送到分支 master 时触发\",\n starred: true,\n },\n];\n\nexport function BuildPlanListPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <BuildPlanListWorkspace\n helpLinks={HELP_LINKS}\n primaryActionLabel=\"创建构建计划\"\n leftFilters={LEFT_FILTERS}\n groupFilters={GROUP_FILTERS}\n selectFilters={SELECT_FILTERS}\n items={BUILD_PLAN_ITEMS}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n DocumentManagementWorkspace,\n ProjectCapabilitySidebar,\n type DocumentCategoryItem,\n type DocumentFilterChip,\n type DocumentRecordItem,\n type ProjectCapabilitySidebarSection,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\", active: true },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst CATEGORY_TREE: DocumentCategoryItem[] = [\n { label: \"全部资料\", count: \"48\", active: true },\n {\n label: \"产品资料\",\n count: \"12\",\n children: [\n { label: \"需求说明\", count: \"6\" },\n { label: \"原型与流程\", count: \"4\" },\n ],\n },\n {\n label: \"运营资料\",\n count: \"18\",\n children: [\n { label: \"操作手册\", count: \"9\" },\n { label: \"培训资料\", count: \"5\" },\n ],\n },\n {\n label: \"交付资料\",\n count: \"18\",\n children: [\n { label: \"实施方案\", count: \"8\" },\n { label: \"客户文档\", count: \"10\" },\n ],\n },\n];\n\nconst FILTERS: DocumentFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"我收藏的\" },\n { label: \"最近更新\" },\n { label: \"共享范围:全部成员\" },\n { label: \"类型:文档 / PDF / 表格\" },\n];\n\nconst RECORDS: DocumentRecordItem[] = [\n {\n id: \"doc-001\",\n title: \"渠道伙伴入驻操作手册\",\n meta: \"产品运营中心 · 黄磊更新于 2 小时前\",\n summary: \"覆盖伙伴账号开通、角色分配、资料上传、开票流程和常见问题处理,可供运营与实施团队共同使用。\",\n starred: true,\n },\n {\n id: \"doc-002\",\n title: \"审批流配置规范与业务约束说明\",\n meta: \"流程产品组 · 李静更新于 昨天 18:24\",\n summary: \"整理不同审批场景下的节点拆分原则、字段说明和角色权限边界,帮助实施项目快速复用标准审批方案。\",\n },\n {\n id: \"doc-003\",\n title: \"客户实施交付检查清单\",\n meta: \"实施交付组 · 孙明更新于 2026-04-18\",\n summary: \"用于项目交付前的最终检查,包括配置项、资料交接、权限核验、培训安排和回归确认。\",\n },\n];\n\nconst RECENT_UPDATES: DocumentRecordItem[] = [\n {\n id: \"recent-001\",\n title: \"渠道伙伴入驻操作手册\",\n meta: \"黄磊更新于 2 小时前\",\n summary: \"\",\n },\n {\n id: \"recent-002\",\n title: \"客户实施交付检查清单\",\n meta: \"孙明更新于 昨天 16:20\",\n summary: \"\",\n },\n {\n id: \"recent-003\",\n title: \"审批流配置规范与业务约束说明\",\n meta: \"李静更新于 2026-04-18\",\n summary: \"\",\n },\n];\n\nexport function DocumentManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n 文档空间已接入团队共享权限,当前页面展示跨角色可见的业务资料内容\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 资料助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <DocumentManagementWorkspace\n title=\"文档管理\"\n description=\"集中管理项目资料、培训手册、交付文档和业务规范,方便跨角色协作查阅与维护。\"\n primaryActionLabel=\"新建资料\"\n categoryTree={CATEGORY_TREE}\n filterChips={FILTERS}\n records={RECORDS}\n detailTitle=\"产品运营资料空间\"\n detailMeta=\"共 48 份资料 · 最近 7 天更新 6 次\"\n detailDescription=\"当前空间沉淀的是跨产品、运营、实施共同维护的业务资料,强调高频查阅、多人协同和版本延续性。\"\n detailStats={[\n { label: \"共享成员\", value: \"16\" },\n { label: \"收藏资料\", value: \"9\" },\n { label: \"近 7 天更新\", value: \"6\" },\n { label: \"待补充\", value: \"3\" },\n ]}\n recentUpdates={RECENT_UPDATES}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n GoalManagementWorkspace,\n type GoalBottomTab,\n type GoalFilter,\n type GoalListItem,\n} from \"../business\";\nimport {\n CodingProductRail,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"目标\", icon: Workflow, active: true },\n { label: \"应用\", icon: PlusCircle },\n];\n\nconst FILTERS: GoalFilter[] = [\n { key: \"owner\", label: \"负责人 & 参与者\", value: \"全部\" },\n { key: \"status\", label: \"状态\", value: \"全部\" },\n];\n\nconst BOTTOM_TABS: GoalBottomTab[] = [\n { key: \"comments\", label: \"评论\" },\n { key: \"notes\", label: \"备注\" },\n { key: \"logs\", label: \"进度记录\" },\n];\n\nconst INITIAL_GOALS: GoalListItem[] = [\n {\n id: \"252939\",\n title: \"【示例】学会并使 OKR 成为团队管理方式\",\n status: \"正常\",\n progress: \"0%\",\n owner: \"未指定\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"2 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"把团队目标管理方法真正跑起来,让目标拆解、同步和复盘形成稳定动作。\",\n metrics: [\n {\n id: \"kr-1\",\n content: \"团队全员学会使用团队目标\",\n weight: \"30.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-2\",\n content: \"团队全员创建一个周期内的个人目标\",\n weight: \"30.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-3\",\n content: \"每周至少更新 1 次 OKR 进度\",\n weight: \"40.00%\",\n progress: \"0%\",\n },\n ],\n relations: [\n {\n id: \"issue-kr-1\",\n label: \"事项 #12 增加邀请成员弹窗并完成邀请成员交互功能\",\n meta: \"执行团队目标落地训练 · 当前迭代 邀请成员\",\n status: \"进行中\",\n },\n {\n id: \"issue-kr-2\",\n label: \"事项 #15 增加批量发送邀请邮件接口\",\n meta: \"跟踪个人目标同步率 · 当前迭代 邀请成员\",\n status: \"未开始\",\n },\n ],\n comments: [\n {\n id: \"comment-1\",\n author: \"黄磊\",\n content: \"先把目标结构跑通,再把每周更新动作变成习惯,不然工具再完整也落不了地。\",\n time: \"今天 10:24\",\n },\n ],\n notes: [\n {\n id: \"note-1\",\n title: \"目标设计备注\",\n content: \"这个目标更像管理方式切换,不是单纯交付结果,因此详情侧要强调过程性记录。\",\n time: \"昨天 18:42\",\n },\n ],\n progressLogs: [\n {\n id: \"log-1\",\n title: \"初始化团队目标与关键结果\",\n detail: \"已建立 3 条关键结果,并同步团队说明,等待成员补充个人目标。\",\n time: \"2 天前\",\n },\n ],\n },\n {\n id: \"252940\",\n title: \"【示例】制定合理的目标体系\",\n status: \"落后\",\n progress: \"0%\",\n owner: \"未指定\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"2 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"统一目标口径、层级和权重,避免目标体系出现分裂和空转。\",\n metrics: [\n {\n id: \"kr-4\",\n content: \"形成团队目标分层模板\",\n weight: \"50.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-5\",\n content: \"明确目标评分和复盘节奏\",\n weight: \"50.00%\",\n progress: \"0%\",\n },\n ],\n comments: [],\n notes: [\n {\n id: \"note-2\",\n title: \"风险提示\",\n content: \"目前团队对目标权重理解不一致,可能导致指标口径混乱。\",\n time: \"昨天 09:10\",\n },\n ],\n progressLogs: [\n {\n id: \"log-2\",\n title: \"目标体系草案未完成评审\",\n detail: \"项目负责人未确认指标权重规则,目标模板暂未对外推广。\",\n time: \"昨天 09:10\",\n },\n ],\n },\n {\n id: \"252941\",\n title: \"【示例】让人机协同周会围绕目标推进\",\n status: \"正常\",\n progress: \"18%\",\n owner: \"黄磊\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"1 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"把周会从事项过账改为围绕目标推进,强化 AI 协同中的上下文聚焦。\",\n metrics: [\n {\n id: \"kr-6\",\n content: \"建立目标驱动的周会议程模板\",\n weight: \"35.00%\",\n progress: \"20%\",\n },\n {\n id: \"kr-7\",\n content: \"让 AI 每周自动汇总偏差与风险\",\n weight: \"35.00%\",\n progress: \"15%\",\n },\n {\n id: \"kr-8\",\n content: \"沉淀周会输出到目标进度记录\",\n weight: \"30.00%\",\n progress: \"18%\",\n },\n ],\n comments: [],\n notes: [],\n progressLogs: [\n {\n id: \"log-3\",\n title: \"已完成第一版周会议程结构\",\n detail: \"周会模板已从事项罗列改成目标驱动,并同步 AI 汇总入口。\",\n time: \"今天 09:15\",\n },\n ],\n },\n {\n id: \"252942\",\n title: \"【个人】完成本周期个人目标配置\",\n status: \"正常\",\n progress: \"0%\",\n owner: \"黄磊\",\n scopeKey: \"personal\",\n creator: \"黄磊\",\n createdAt: \"今天\",\n cycle: \"2026 年 Q2\",\n summary: \"围绕团队目标拆解个人目标,让执行动作真正挂接到个人节奏中。\",\n metrics: [\n {\n id: \"kr-9\",\n content: \"完成个人目标卡片与关键结果配置\",\n weight: \"60.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-10\",\n content: \"绑定本周期核心事项\",\n weight: \"40.00%\",\n progress: \"0%\",\n },\n ],\n comments: [],\n notes: [],\n progressLogs: [],\n },\n];\n\nexport function GoalManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeScope, setActiveScope] = React.useState(\"team\");\n const [goals, setGoals] = React.useState(INITIAL_GOALS);\n const [selectedGoalId, setSelectedGoalId] = React.useState(\"252939\");\n const [expandedAll, setExpandedAll] = React.useState(false);\n const [expandedIds, setExpandedIds] = React.useState<string[]>([\"252939\"]);\n const [activeBottomTab, setActiveBottomTab] = React.useState(\"comments\");\n const [draftComment, setDraftComment] = React.useState(\"\");\n\n const visibleGoals = React.useMemo(\n () => goals.filter((goal) => goal.scopeKey === activeScope),\n [activeScope, goals],\n );\n\n React.useEffect(() => {\n if (!visibleGoals.some((goal) => goal.id === selectedGoalId)) {\n setSelectedGoalId(visibleGoals[0]?.id ?? \"\");\n }\n }, [selectedGoalId, visibleGoals]);\n\n const selectedGoal = React.useMemo(\n () => visibleGoals.find((goal) => goal.id === selectedGoalId) ?? visibleGoals[0],\n [selectedGoalId, visibleGoals],\n );\n\n return (\n <GoalManagementWorkspace\n className={className}\n productRail={<CodingProductRail items={PRODUCT_ITEMS} userName=\"黄磊\" />}\n notice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n title=\"目标\"\n scopeTabs={[\n { key: \"team\", label: \"团队目标\" },\n { key: \"personal\", label: \"个人目标\" },\n ]}\n activeScopeKey={activeScope}\n onScopeChange={(key) => {\n setActiveScope(key);\n setActiveBottomTab(\"comments\");\n }}\n cycle={{ label: \"2026 年 Q2\", range: \"2026/04/01 - 2026/06/30\" }}\n primaryActionLabel={activeScope === \"team\" ? \"创建团队目标\" : \"创建个人目标\"}\n filters={FILTERS}\n searchPlaceholder=\"搜索目标内容\"\n goals={visibleGoals}\n selectedGoalId={selectedGoalId}\n onSelectGoal={setSelectedGoalId}\n expandedGoalIds={expandedIds}\n expandedAll={expandedAll}\n onToggleExpandedAll={() => setExpandedAll((current) => !current)}\n onToggleGoalExpanded={(goalId) => {\n setExpandedIds((current) =>\n current.includes(goalId) ? current.filter((item) => item !== goalId) : [...current, goalId],\n );\n }}\n onAddMetric={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n metrics: [\n ...goal.metrics,\n {\n id: `${goalId}-metric-${goal.metrics.length + 1}`,\n content: \"新增关键结果\",\n weight: \"10.00%\",\n progress: \"0%\",\n },\n ],\n }\n : goal,\n ),\n );\n }}\n onAddRelation={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n relations: [\n ...(goal.relations ?? []),\n {\n id: `${goalId}-relation-${(goal.relations?.length ?? 0) + 1}`,\n label: \"新增关联事项\",\n meta: \"通过目标详情抽屉直接补充\",\n status: \"未开始\",\n },\n ],\n }\n : goal,\n ),\n );\n }}\n bottomTabs={BOTTOM_TABS}\n activeBottomTab={activeBottomTab}\n onBottomTabChange={setActiveBottomTab}\n draftComment={draftComment}\n onDraftCommentChange={setDraftComment}\n onPublishComment={(goalId) => {\n if (!draftComment.trim()) {\n return;\n }\n\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n comments: [\n ...(goal.comments ?? []),\n {\n id: `${goalId}-comment-${(goal.comments?.length ?? 0) + 1}`,\n author: \"黄磊\",\n content: draftComment.trim(),\n time: \"刚刚\",\n },\n ],\n }\n : goal,\n ),\n );\n setDraftComment(\"\");\n }}\n onAdjustWeights={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n metrics: goal.metrics.map((metric, index, all) => ({\n ...metric,\n weight: `${(100 / all.length).toFixed(2)}%`,\n progress: index === 0 ? metric.progress : metric.progress,\n })),\n }\n : goal,\n ),\n );\n }}\n metaItems={\n selectedGoal\n ? [\n { label: \"状态\", value: selectedGoal.status },\n { label: \"进度\", value: selectedGoal.progress },\n { label: \"负责人\", value: selectedGoal.owner },\n { label: \"参与者\", value: \"未指定\" },\n { label: \"所在周期\", value: selectedGoal.cycle },\n ]\n : []\n }\n viewportLocked={false}\n />\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n ProjectOverviewWorkspace,\n type ProjectCapabilitySidebarSection,\n type ProjectOverviewActivityItem,\n type ProjectOverviewDocumentItem,\n type ProjectOverviewQuickAction,\n type ProjectOverviewStatMetric,\n type ProjectOverviewStatTab,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\", active: true },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst QUICK_ACTIONS: ProjectOverviewQuickAction[] = [\n { label: \"创建事项\", description: \"快速创建事项\", tone: \"primary\" },\n { label: \"去规划\", description: \"前往规划迭代\" },\n];\n\nconst RECENT_FILES: ProjectOverviewDocumentItem[] = [\n { title: \"Cloud Studio.pdf\", meta: \"1 MB · 黄磊更新于 6 年前\" },\n { title: \"CODING 研发管理系统画册.pdf\", meta: \"2 MB · 黄磊更新于 6 年前\" },\n];\n\nconst WIKI_DOCS: ProjectOverviewDocumentItem[] = [\n { title: \"如何使用 Wiki 进行项目知识沉淀\", meta: \"黄磊 创建于 6 年前\" },\n { title: \"Markdown 语法指南\", meta: \"黄磊 创建于 6 年前\" },\n];\n\nconst ACTIVITIES: ProjectOverviewActivityItem[] = [\n {\n time: \"20:04\",\n summary: \"持续集成:示例任务,任务 1 构建成功\",\n target: \"示例任务\",\n detail: \"构建代码仓库:coding-demo,构建版本:[f23a09c]\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 在需求 #10 中关联了子工作项\",\n target: \"#12-增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 创建了需求\",\n target: \"#14-[示例需求]-通过访问邀请链接可注册成为团队成员\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 推送了分支 new-feature 到代码仓库: coding-demo\",\n target: \"新增 new feature\",\n detail: \"[aa19556]\",\n },\n];\n\nexport function ProjectOverviewPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeTab, setActiveTab] = React.useState(\"项目概览\");\n\n const statTabs = React.useMemo<ProjectOverviewStatTab[]>(\n () => [\n { label: \"项目概览\", active: activeTab === \"项目概览\" },\n { label: \"项目动态\", active: activeTab === \"项目动态\" },\n ],\n [activeTab],\n );\n\n const statMetrics = React.useMemo<ProjectOverviewStatMetric[]>(\n () => [\n { value: \"0\", label: \"迭代\", status: \"进行中\" },\n { value: \"6\", label: \"我未完成的\" },\n { value: \"6\", label: \"分配给我的\" },\n { value: \"10\", label: \"我创建的\" },\n ],\n [],\n );\n\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <ProjectOverviewWorkspace\n activeTab={activeTab}\n statTabs={statTabs}\n quickActions={QUICK_ACTIONS}\n statMetrics={statMetrics}\n repository={{\n name: \"coding-demo\",\n updatedMeta: \"黄磊 最后提交于 6 年前\",\n branchCount: \"2\",\n tagCount: \"0\",\n }}\n buildSummary={{\n name: \"示例任务\",\n status: \"构建成功\",\n meta: \"6 年前 · 耗时 1 分钟 58 秒 · 黄磊 推送到分支 master 时触发\",\n }}\n recentFiles={RECENT_FILES}\n wikiDocs={WIKI_DOCS}\n activities={ACTIVITIES}\n announcement={{\n author: \"黄磊\",\n publishedAt: \"01-26 20:02\",\n content: [\n \"这是一个示例项目,任何团队项目成员都可以在里面尽情探索,以了解如何使用 CODING 进行高效率的项目协作。\",\n \"注意:请勿在示例项目内放置任何敏感或重要信息。\",\n ],\n }}\n projectSlug=\"mengti/coding-demo\"\n projectDescription=\"CODING 示例项目\"\n memberCount=\"1 项目成员\"\n onSelectTab={setActiveTab}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n ResourceManagementWorkspace,\n type ProjectCapabilitySidebarSection,\n type ResourceActivityItem,\n type ResourceFilterChip,\n type ResourceListItem,\n type ResourceStatItem,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\", active: true },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst FILTERS: ResourceFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"使用中\" },\n { label: \"待分配\" },\n { label: \"高敏感\" },\n { label: \"本月有变更\" },\n];\n\nconst STATS: ResourceStatItem[] = [\n { label: \"资源总数\", value: \"128\" },\n { label: \"使用中\", value: \"87\" },\n { label: \"待分配\", value: \"18\" },\n { label: \"近 30 天变更\", value: \"24\" },\n];\n\nconst ITEMS: ResourceListItem[] = [\n {\n id: \"asset-001\",\n name: \"渠道运营后台正式账号\",\n type: \"业务账号\",\n owner: \"黄磊\",\n status: \"使用中\",\n location: \"运营中心 / 华东渠道\",\n updatedAt: \"2026-04-20 10:24\",\n },\n {\n id: \"asset-002\",\n name: \"客户实施演示环境 A\",\n type: \"演示环境\",\n owner: \"孙明\",\n status: \"待分配\",\n location: \"实施交付组\",\n updatedAt: \"2026-04-19 16:12\",\n },\n {\n id: \"asset-003\",\n name: \"合同电子签章管理员权限\",\n type: \"权限资源\",\n owner: \"林妍\",\n status: \"使用中\",\n location: \"法务共享空间\",\n updatedAt: \"2026-04-18 09:42\",\n },\n {\n id: \"asset-004\",\n name: \"区域伙伴培训素材包\",\n type: \"资料资源\",\n owner: \"王敏\",\n status: \"待启用\",\n location: \"运营资料空间\",\n updatedAt: \"2026-04-17 14:06\",\n },\n];\n\nconst RECENT_ACTIVITIES: ResourceActivityItem[] = [\n { title: \"渠道运营后台正式账号完成权限复核\", meta: \"黄磊 · 2 小时前\" },\n { title: \"客户实施演示环境 A 从空闲转为待分配\", meta: \"孙明 · 昨天 16:12\" },\n { title: \"合同电子签章管理员权限新增法务共享角色\", meta: \"林妍 · 2026-04-18\" },\n];\n\nexport function ResourceManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n 资源台账已接入共享责任人与权限回收策略,用于统一管理业务账号、环境和权限资源\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 资源助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <ResourceManagementWorkspace\n title=\"应用与资源管理\"\n description=\"集中盘点业务账号、演示环境、权限资源和资料资产,便于跨角色协同维护、分配和回收。\"\n primaryActionLabel=\"新增资源\"\n filterChips={FILTERS}\n stats={STATS}\n items={ITEMS}\n detailTitle=\"渠道运营后台正式账号\"\n detailMeta=\"业务账号 · 高敏感 · 当前责任人 黄磊\"\n detailDescription=\"该资源用于渠道伙伴管理与返佣流程处理,涉及客户资料与结算信息,需按月完成权限复核与使用追踪。\"\n detailStats={[\n { label: \"关联成员\", value: \"4\" },\n { label: \"近 30 天操作\", value: \"12\" },\n { label: \"共享角色\", value: \"3\" },\n { label: \"待处理提醒\", value: \"1\" },\n ]}\n recentActivities={RECENT_ACTIVITIES}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n AlertTriangle,\n CheckCheck,\n Bell,\n Bug,\n CalendarClock,\n ChevronDown,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n GitBranch,\n LayoutGrid,\n Link2,\n ListTodo,\n MessageSquarePlus,\n Settings,\n ShieldAlert,\n Sparkles,\n Star,\n Upload,\n UserCog,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n DetailCommentComposer,\n DashboardWorkspace,\n DetailFieldPanel,\n DetailFilterTabs,\n DetailListSection,\n DetailMetaGrid,\n DetailSection,\n DetailTimeline,\n GoalManagementWorkspace,\n IssueWorkspace,\n type IssueWorkspaceSidebarSection,\n type IssueWorkspaceRowBase,\n} from \"../business\";\nimport { BuildPlanListPagePreview } from \"./build-plan-list-page-preview\";\nimport { BuildPlanStarterPagePreview } from \"./build-plan-starter-preview\";\nimport { DocumentManagementPagePreview } from \"./document-management-page-preview\";\nimport { GoalManagementPagePreview } from \"./goal-management-page-preview\";\nimport { ProjectOverviewPagePreview } from \"./project-overview-page-preview\";\nimport { ResourceManagementPagePreview } from \"./resource-management-page-preview\";\n\ntype WorkspaceRow = IssueWorkspaceRowBase & {\n title: string;\n priority: string;\n status: string;\n assignee: string;\n creator: string;\n iteration: string;\n project: string;\n dueDate: string;\n createdAt: string;\n updatedAt: string;\n ticketType: string;\n linkedRequirement?: string;\n attachmentCount?: number;\n childProgress?: string;\n severity?: string;\n};\n\ntype PreviewMode =\n | \"issue\"\n | \"defect\"\n | \"approval\"\n | \"dashboard\"\n | \"build-plan\"\n | \"build-plan-list\"\n | \"document-management\"\n | \"goal-management\"\n | \"project-overview\"\n | \"resource-management\";\n\ntype IssueActivityItem = {\n id: string;\n title: string;\n meta: string;\n content: string;\n type: \"日志\" | \"评论\";\n target: string;\n};\n\nconst PRODUCT_ITEMS = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText, active: true },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n];\n\nconst DASHBOARD_PRODUCT_ITEMS = [\n { label: \"工作台\", icon: LayoutGrid, active: true },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n];\n\nconst DASHBOARD_TABS = [\n { label: \"研发任务工作台\", active: true },\n { label: \"需求管理工作台\" },\n { label: \"项目管理工作台\" },\n];\n\nconst DASHBOARD_WIDGET_LIBRARY = [\n {\n id: \"recent-commits\",\n title: \"近期代码提交\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n accent: \"brand\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"次提交\", value: \"12\", tone: \"positive\" as const },\n { label: \"代码行数 +\", value: \"846\", tone: \"positive\" as const },\n { label: \"代码行数 -\", value: \"193\", tone: \"negative\" as const },\n ],\n },\n {\n id: \"member-ranking\",\n title: \"代码提交成员排名\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"ranking\" as const,\n cols: \"normal\" as const,\n ranking: [],\n },\n {\n id: \"stale-issues\",\n title: \"长期滞留事项列表\",\n subtitle: \"6 个事项超过 20 天未处理\",\n type: \"issue-list\" as const,\n accent: \"danger\" as const,\n cols: \"wide\" as const,\n issues: [\n {\n id: \"#12\",\n title: \"[示例任务]-增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n dueDate: \"2020年1月28日截止\",\n status: \"未开始\",\n assignee: \"未指定\",\n },\n {\n id: \"#10\",\n title: \"[示例需求]-通过访问邀请链接可注册成为团队成员\",\n iteration: \"邀请成员\",\n dueDate: \"2020年1月29日截止\",\n status: \"未开始\",\n assignee: \"未指定\",\n },\n {\n id: \"#13\",\n title: \"[示例需求]-在成员管理模块中可批量发送邀请成员邮件\",\n iteration: \"邀请成员\",\n dueDate: \"2020年1月29日截止\",\n status: \"未开始\",\n assignee: \"黄磊\",\n },\n {\n id: \"#8\",\n title: \"[示例缺陷]-商品详情页中商品价格字体应当显示为红色并且加粗\",\n status: \"待处理\",\n assignee: \"黄磊\",\n },\n {\n id: \"#7\",\n title: \"[示例缺陷]-登录页输入正确的用户名和密码后提示“用户不存在”\",\n dueDate: \"2020年1月26日截止\",\n status: \"待处理\",\n assignee: \"黄磊\",\n },\n {\n id: \"#6\",\n title: \"邀请成员\",\n dueDate: \"2020年1月7日截止\",\n status: \"未开始\",\n assignee: \"黄磊\",\n },\n ],\n },\n {\n id: \"created-issues\",\n title: \"近期创建事项数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"创建事项\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"finished-issues\",\n title: \"近期完成事项数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"完成事项\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-mr-list\",\n title: \"近期 MR 列表\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [],\n },\n {\n id: \"project-list\",\n title: \"项目列表\",\n subtitle: \"1 个项目\",\n type: \"project-list\" as const,\n cols: \"normal\" as const,\n projects: [\n { name: \"示例项目\", progress: \"\", health: \"\" },\n ],\n },\n {\n id: \"project-activity\",\n title: \"项目动态\",\n subtitle: \"展示项目动态\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [\n { title: \"黄磊提交了邀请成员弹窗交互优化\", meta: \"10 分钟前 · mengti\" },\n { title: \"李静更新了商品详情页价格样式回归结果\", meta: \"32 分钟前 · mall-web\" },\n { title: \"孙明修复登录态映射问题并发起 MR\", meta: \"1 小时前 · auth-center\" },\n ],\n },\n {\n id: \"active-iterations\",\n title: \"进行中的迭代\",\n subtitle: \"0 个迭代\",\n type: \"iteration-list\" as const,\n cols: \"normal\" as const,\n iterations: [],\n },\n {\n id: \"iteration-overview\",\n title: \"迭代概览\",\n subtitle: \"展示一个迭代的具体信息包括进度和燃尽图\",\n type: \"stats\" as const,\n accent: \"warning\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"完成进度\", value: \"68%\", tone: \"positive\" as const },\n { label: \"剩余事项\", value: \"12\", tone: \"default\" as const },\n { label: \"风险阻塞\", value: \"2\", tone: \"negative\" as const },\n ],\n },\n {\n id: \"issue-trend\",\n title: \"近期事项趋势\",\n subtitle: \"每日事项的增加和完成数量趋势\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [\n { label: \"04/14\", value: \"3\" },\n { label: \"04/15\", value: \"5\" },\n { label: \"04/16\", value: \"4\" },\n { label: \"04/17\", value: \"7\" },\n { label: \"04/18\", value: \"6\" },\n { label: \"04/19\", value: \"8\" },\n { label: \"04/20\", value: \"5\" },\n ],\n },\n {\n id: \"recent-merged-mr-count\",\n title: \"近期 合并的 MR 数量\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"合并 MR\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"merge-request-ranking\",\n title: \"合并请求排名\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"ranking\" as const,\n cols: \"normal\" as const,\n ranking: [],\n },\n {\n id: \"recent-build-count\",\n title: \"近期构建次数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"构建次数\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-build-trend\",\n title: \"近期构建趋势\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [],\n },\n {\n id: \"recent-build-records\",\n title: \"近期构建记录\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [],\n },\n {\n id: \"recent-release-count\",\n title: \"近期发布次数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"发布次数\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-release-trend\",\n title: \"近期发布趋势\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [],\n },\n];\n\nconst DASHBOARD_WIDGETS = [\n \"recent-commits\",\n \"member-ranking\",\n \"stale-issues\",\n \"created-issues\",\n \"finished-issues\",\n \"active-iterations\",\n \"recent-mr-list\",\n \"project-list\",\n].map((id) => DASHBOARD_WIDGET_LIBRARY.find((widget) => widget.id === id)!);\n\nconst DASHBOARD_WIDGET_CATALOG = [\n {\n id: \"project-list\",\n title: \"项目列表\",\n description: \"展示选择的项目列表,可选择展示项目的进度\",\n badge: \"项目\",\n },\n {\n id: \"project-activity\",\n title: \"项目动态\",\n description: \"展示项目动态\",\n badge: \"项目\",\n },\n {\n id: \"created-issues\",\n title: \"近期事项数\",\n description: \"统计事项创建、完成和活跃数量\",\n badge: \"事项\",\n },\n {\n id: \"active-iterations\",\n title: \"进行中的迭代\",\n description: \"展示特定项目下进行中的迭代列表,跟踪迭代进度\",\n badge: \"迭代\",\n },\n {\n id: \"iteration-overview\",\n title: \"迭代概览\",\n description: \"展示一个迭代的具体信息包括进度和燃尽图\",\n badge: \"迭代\",\n },\n {\n id: \"stale-issues\",\n title: \"长期滞留事项列表\",\n description: \"处于未处理时间超过某个限定时间的事项列表\",\n badge: \"事项\",\n },\n {\n id: \"issue-trend\",\n title: \"近期事项趋势\",\n description: \"每日事项的增加和完成的数量趋势\",\n badge: \"事项\",\n },\n {\n id: \"recent-merged-mr-count\",\n title: \"近期 合并的 MR 数量\",\n description: \"统计特定仓库的近期合并成功的 MR 数量\",\n badge: \"代码\",\n },\n {\n id: \"recent-mr-list\",\n title: \"近期 MR 列表\",\n description: \"近期提交的 MR 列表\",\n badge: \"代码\",\n },\n {\n id: \"recent-commits\",\n title: \"近期代码提交统计\",\n description: \"逐日统计每天提交的代码次数和变更行数\",\n badge: \"代码\",\n },\n {\n id: \"member-ranking\",\n title: \"代码提交排名\",\n description: \"统计近期代码提交次数最多的前10名成员\",\n badge: \"代码\",\n },\n {\n id: \"merge-request-ranking\",\n title: \"合并请求排名\",\n description: \"统计近期合并请求数量最多的前10名成员\",\n badge: \"代码\",\n },\n {\n id: \"recent-build-count\",\n title: \"近期构建次数\",\n description: \"统计近期一段时间构建的数量和构建成功数量\",\n badge: \"构建\",\n },\n {\n id: \"recent-build-trend\",\n title: \"近期构建趋势\",\n description: \"逐日统计近期一段时间构建提交数和成功数\",\n badge: \"构建\",\n },\n {\n id: \"recent-build-records\",\n title: \"近期构建记录\",\n description: \"逐日统计近期一段时间构建提交数和成功数\",\n badge: \"构建\",\n },\n {\n id: \"recent-release-count\",\n title: \"近期发布次数\",\n description: \"统计近期一段时间发布的数量和发布成功数量\",\n badge: \"发布\",\n },\n {\n id: \"recent-release-trend\",\n title: \"近期发布趋势\",\n description: \"逐日统计近期一段时间发布数和成功数\",\n badge: \"发布\",\n },\n];\n\nconst ISSUE_VIEWS = [\n { label: \"我未完成的默认\", active: true },\n { label: \"分配给我的\", count: \"6\" },\n { label: \"我创建的\", count: \"10\" },\n { label: \"我关注的\", count: \"1\" },\n { label: \"全部打开的\", count: \"21\" },\n { label: \"全部\", count: \"24\" },\n { label: \"我经办的\", count: \"8\" },\n];\n\nconst ISSUE_SIDEBAR_SECTIONS: IssueWorkspaceSidebarSection[] = [\n {\n label: \"默认视图\",\n views: [\n {\n id: \"my-default\",\n label: \"我未完成的默认\",\n count: \"6\",\n active: true,\n },\n {\n id: \"assigned-to-me\",\n label: \"分配给我的\",\n count: \"6\",\n },\n {\n id: \"created-by-me\",\n label: \"我创建的\",\n count: \"10\",\n },\n {\n id: \"following\",\n label: \"我关注的\",\n count: \"1\",\n },\n {\n id: \"all-open\",\n label: \"全部打开的\",\n count: \"21\",\n },\n {\n id: \"all-items\",\n label: \"全部\",\n count: \"24\",\n },\n {\n id: \"handled-by-me\",\n label: \"我经办的\",\n count: \"8\",\n },\n ],\n },\n];\n\nconst DEFECT_VIEWS = [\n { label: \"待我处理的缺陷\", active: true },\n { label: \"高严重级别\", count: \"5\" },\n { label: \"待验证\", count: \"4\" },\n { label: \"本周新增\", count: \"9\" },\n { label: \"全部未关闭\", count: \"18\" },\n { label: \"我创建的\", count: \"7\" },\n { label: \"已解决待回归\", count: \"3\" },\n];\n\nconst APPROVAL_VIEWS = [\n { label: \"待我审批\", active: true },\n { label: \"审批中\", count: \"11\" },\n { label: \"我发起的\", count: \"8\" },\n { label: \"已通过\", count: \"14\" },\n { label: \"已驳回\", count: \"3\" },\n { label: \"抄送我的\", count: \"5\" },\n { label: \"全部审批单\", count: \"27\" },\n];\n\nconst TABLE_HEADERS = [\n \"ID\",\n \"标题\",\n \"优先级\",\n \"状态\",\n \"处理人\",\n \"创建人\",\n \"迭代\",\n \"项目/项目集\",\n \"截止日期\",\n \"创建时间\",\n \"更新时间\",\n];\n\nconst ISSUE_ACTIONS = [\n { label: \"发起需求讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"1 人关注\", icon: Star },\n { label: \"编辑描述\", icon: FileText },\n { label: \"上传附件\", icon: Upload },\n { label: \"分解需求\", icon: ChevronRight },\n { label: \"添加子工作项\", icon: ChevronRight },\n { label: \"关联缺陷\", icon: ChevronRight },\n];\n\nconst DEFECT_ACTIONS = [\n { label: \"发起缺陷讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"2 人关注\", icon: Star },\n { label: \"编辑复现步骤\", icon: FileText },\n { label: \"上传日志\", icon: Upload },\n { label: \"关联修复提交\", icon: ChevronRight },\n { label: \"添加回归任务\", icon: ChevronRight },\n { label: \"关联需求\", icon: ChevronRight },\n];\n\nconst APPROVAL_ACTIONS = [\n { label: \"发起审批讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"添加审批意见\", icon: FileText },\n { label: \"上传补充材料\", icon: Upload },\n { label: \"转交审批\", icon: ChevronRight },\n { label: \"抄送成员\", icon: ChevronRight },\n { label: \"关联制度文档\", icon: ChevronRight },\n];\n\nconst ISSUE_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"#15\",\n title: \"[示例任务]-增加批量发送邀请邮件接口\",\n priority: \"P2\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#13\",\n title: \"[示例需求]-在成员管理模块中可批量发送邀请成员邮件 邀请成员\",\n priority: \"P1\",\n status: \"未开始\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-13\",\n updatedAt: \"2026-04-18\",\n ticketType: \"需求\",\n }),\n buildRow({\n id: \"#12\",\n title: \"增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n priority: \"P2\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-12\",\n updatedAt: \"2026-04-18\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#11\",\n title: \"增加批量发送邀请邮件接口\",\n priority: \"P2\",\n status: \"未开始\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-11\",\n updatedAt: \"2026-04-17\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#10\",\n title: \"[示例需求]-通过邮箱地址邀请成员加入团队 0/2 邀请成员\",\n priority: \"P1\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-10\",\n updatedAt: \"2026-04-19\",\n ticketType: \"需求\",\n linkedRequirement: \"REQ-88\",\n attachmentCount: 0,\n childProgress: \"0/2 子事项\",\n }),\n buildRow({\n id: \"#8\",\n title: \"[示例缺陷]-商品详情页中商品价格字体应当显示为红色并且加粗\",\n priority: \"P1\",\n status: \"未开始\",\n assignee: \"李静\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"mall-web\",\n dueDate: \"2026-04-23\",\n createdAt: \"2026-04-08\",\n updatedAt: \"2026-04-17\",\n ticketType: \"缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"#7\",\n title: \"[示例缺陷]-登录页输入正确的用户名和密码后提示“用户不存在”\",\n priority: \"P0\",\n status: \"未开始\",\n assignee: \"孙明\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"auth-center\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-07\",\n updatedAt: \"2026-04-17\",\n ticketType: \"缺陷\",\n severity: \"致命\",\n }),\n];\n\nconst ISSUE_ROW_SEED = ISSUE_ROWS.map(({ cells: _cells, ...row }) => row);\n\nconst DEFECT_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"BUG-218\",\n title: \"登录页输入正确的用户名和密码后提示“用户不存在”\",\n priority: \"P0\",\n status: \"待修复\",\n assignee: \"孙明\",\n creator: \"黄磊\",\n iteration: \"登录链路\",\n project: \"auth-center\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-17\",\n updatedAt: \"2026-04-19\",\n ticketType: \"缺陷\",\n severity: \"致命\",\n }),\n buildRow({\n id: \"BUG-214\",\n title: \"商品详情页价格字体未按设计稿显示红色加粗\",\n priority: \"P1\",\n status: \"待验证\",\n assignee: \"李静\",\n creator: \"黄磊\",\n iteration: \"商品详情页\",\n project: \"mall-web\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-16\",\n updatedAt: \"2026-04-19\",\n ticketType: \"UI 缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"BUG-209\",\n title: \"团队邀请弹窗在 Safari 下无法正确粘贴多邮箱地址\",\n priority: \"P1\",\n status: \"修复中\",\n assignee: \"黄磊\",\n creator: \"周杨\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-15\",\n updatedAt: \"2026-04-18\",\n ticketType: \"兼容性缺陷\",\n severity: \"中\",\n }),\n buildRow({\n id: \"BUG-205\",\n title: \"批量发送邀请邮件接口超时后前端无错误提示\",\n priority: \"P1\",\n status: \"待修复\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"交互缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"BUG-198\",\n title: \"移动端事项详情滑层打开后,背景列表还能横向滚动\",\n priority: \"P2\",\n status: \"待验证\",\n assignee: \"陈宇\",\n creator: \"黄磊\",\n iteration: \"移动端适配\",\n project: \"workspace-shell\",\n dueDate: \"2026-04-25\",\n createdAt: \"2026-04-12\",\n updatedAt: \"2026-04-18\",\n ticketType: \"体验缺陷\",\n severity: \"中\",\n }),\n buildRow({\n id: \"BUG-190\",\n title: \"插件扩展面板在详情抽屉中重复挂载,导致按钮重复触发\",\n priority: \"P1\",\n status: \"待分析\",\n assignee: \"王凯\",\n creator: \"赵一\",\n iteration: \"插件接入\",\n project: \"plugin-host\",\n dueDate: \"--\",\n createdAt: \"2026-04-10\",\n updatedAt: \"2026-04-17\",\n ticketType: \"插件缺陷\",\n severity: \"高\",\n }),\n];\n\nconst APPROVAL_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"AP-302\",\n title: \"供应商付款审批 / 华东代理结算单\",\n priority: \"P1\",\n status: \"待我审批\",\n assignee: \"黄磊\",\n creator: \"王敏\",\n iteration: \"财务复核\",\n project: \"finance-flow\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-18\",\n updatedAt: \"2026-04-19\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-298\",\n title: \"采购申请 / 办公网关设备替换\",\n priority: \"P2\",\n status: \"审批中\",\n assignee: \"黄磊\",\n creator: \"周浩\",\n iteration: \"IT 审批\",\n project: \"ops-flow\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-17\",\n updatedAt: \"2026-04-19\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-291\",\n title: \"合同盖章申请 / 华南渠道续签协议\",\n priority: \"P1\",\n status: \"待法务复核\",\n assignee: \"林妍\",\n creator: \"赵一\",\n iteration: \"法务节点\",\n project: \"legal-flow\",\n dueDate: \"2026-04-23\",\n createdAt: \"2026-04-16\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-286\",\n title: \"外包入场审批 / 测试团队临时扩编\",\n priority: \"P2\",\n status: \"已驳回\",\n assignee: \"李哲\",\n creator: \"黄磊\",\n iteration: \"人事审批\",\n project: \"hr-flow\",\n dueDate: \"--\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-280\",\n title: \"预算追加审批 / Q2 市场活动预算\",\n priority: \"P0\",\n status: \"审批中\",\n assignee: \"陈总\",\n creator: \"王敏\",\n iteration: \"总监审批\",\n project: \"budget-center\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-13\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n];\n\nfunction TypeBadge({ value }: { value: string }) {\n const tone =\n value === \"需求\"\n ? \"bg-[#eef5ff] text-[#176de6]\"\n : value === \"缺陷\" || value.includes(\"缺陷\")\n ? \"bg-[#fff1ef] text-[#c5342f]\"\n : value === \"审批单\"\n ? \"bg-[#f3f1ff] text-[#7057ff]\"\n : \"bg-[#edf8f1] text-[#18794e]\";\n\n return <span className={`rounded-[3px] px-1.5 py-[2px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction PriorityPill({ value }: { value: string }) {\n const tone =\n value === \"P0\"\n ? \"bg-[var(--ck-danger-soft)] text-[var(--ck-danger-text)]\"\n : value === \"P1\"\n ? \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\"\n : \"bg-[#eef4fb] text-[var(--ck-text-secondary)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction StatusPill({ value }: { value: string }) {\n const tone =\n value.includes(\"进行\") || value.includes(\"修复\") || value.includes(\"审批中\")\n ? \"bg-[#edf5ff] text-[#176de6]\"\n : value.includes(\"待\") || value === \"未开始\"\n ? \"bg-[#f6f8fb] text-[var(--ck-text-secondary)]\"\n : value.includes(\"已\")\n ? \"bg-[#edf8f1] text-[#18794e]\"\n : \"bg-[#f6f8fb] text-[var(--ck-text-secondary)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction MemberPill({ value }: { value: string }) {\n return (\n <div className=\"inline-flex items-center gap-2 text-[12px] text-[var(--ck-text-primary)]\">\n <span className=\"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[#e8eef8] text-[10px] font-semibold text-[#47607d]\">\n {value.slice(0, 1)}\n </span>\n <span>{value}</span>\n </div>\n );\n}\n\nfunction TitleCell({ row }: { row: Omit<WorkspaceRow, \"cells\"> }) {\n const updatedToday = row.updatedAt === \"2026-04-20\";\n\n return (\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <TypeBadge value={row.ticketType} />\n <span className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">{row.title}</span>\n {updatedToday ? (\n <span className=\"shrink-0 rounded-full bg-[#edf5ff] px-2 py-[2px] text-[10px] font-medium text-[#176de6]\">\n 刚更新\n </span>\n ) : null}\n </div>\n <div className=\"mt-1 flex items-center gap-3 text-[11px] text-[var(--ck-text-muted)]\">\n <span>{row.project}</span>\n <span>{row.iteration === \"--\" ? \"未规划迭代\" : row.iteration}</span>\n {row.linkedRequirement ? <span>需求 {row.linkedRequirement}</span> : null}\n {row.childProgress ? <span>{row.childProgress}</span> : null}\n {typeof row.attachmentCount === \"number\" && row.attachmentCount > 0 ? <span>附件 {row.attachmentCount}</span> : null}\n </div>\n </div>\n );\n}\n\nfunction buildRow(row: Omit<WorkspaceRow, \"cells\">): WorkspaceRow {\n const updatedToday = row.updatedAt === \"2026-04-20\";\n\n return {\n ...row,\n cells: [\n <span className=\"font-medium text-[var(--ck-text-primary)]\">{row.id}</span>,\n <TitleCell row={row} />,\n <PriorityPill value={row.priority} />,\n <StatusPill value={row.status} />,\n <MemberPill value={row.assignee} />,\n <MemberPill value={row.creator} />,\n <span className=\"truncate\">{row.iteration}</span>,\n <span className=\"truncate\">{row.project}</span>,\n <span>{row.dueDate}</span>,\n <span>{row.createdAt}</span>,\n <span\n className={\n updatedToday\n ? \"inline-flex h-6 items-center rounded-full bg-[#edf5ff] px-2 font-medium text-[var(--ck-brand-primary)]\"\n : undefined\n }\n >\n {row.updatedAt}\n </span>,\n ],\n };\n}\n\nfunction DetailActionButton({\n label,\n icon: Icon,\n primary,\n}: {\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n primary?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={`inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] px-3 text-[13px] ${\n primary\n ? \"border border-[var(--ck-text-secondary)] text-[var(--ck-text-secondary)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Icon className=\"mr-1.5 h-4 w-4\" />\n {label}\n </button>\n );\n}\n\nfunction RelationCard({\n label,\n value,\n hint,\n active,\n onClick,\n}: {\n label: string;\n value: string;\n hint: string;\n active?: boolean;\n onClick?: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`rounded-[var(--ck-radius-sm)] border px-3 py-3 text-left transition-colors ${\n active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)]\"\n : \"border-[var(--ck-border-subtle)] bg-white hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-surface-muted)]\"\n }`}\n >\n <div className=\"text-[11px] font-medium uppercase tracking-[0.04em] text-[var(--ck-text-muted)]\">{label}</div>\n <div className=\"mt-1 text-[13px] font-medium text-[var(--ck-text-primary)]\">{value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-secondary)]\">{hint}</div>\n </button>\n );\n}\n\nfunction FieldValueShell({\n children,\n quiet,\n editable = true,\n variant = \"default\",\n menu,\n expanded = false,\n onClick,\n}: {\n children: React.ReactNode;\n quiet?: boolean;\n editable?: boolean;\n variant?: \"default\" | \"select\";\n menu?: React.ReactNode;\n expanded?: boolean;\n onClick?: () => void;\n}) {\n return (\n <div className=\"relative inline-flex\">\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex min-h-8 items-center gap-2 rounded-[var(--ck-radius-xs)] border px-2.5 py-1 text-left text-[13px] transition-colors ${\n quiet\n ? \"border-transparent bg-transparent px-0 text-[var(--ck-text-primary)]\"\n : expanded\n ? \"border-[var(--ck-brand-active)] bg-white text-[var(--ck-text-primary)] shadow-[0_0_0_2px_rgba(37,126,250,0.08)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-primary)] hover:border-[var(--ck-brand-active)] hover:bg-white\"\n }`}\n >\n <span className=\"min-w-0\">{children}</span>\n {!quiet && editable ? (\n variant === \"select\" ? (\n <ChevronDown className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n )\n ) : null}\n </button>\n {expanded && menu ? (\n <div className=\"absolute left-0 top-[calc(100%+6px)] z-10 min-w-[188px] rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white p-1 shadow-[var(--ck-shadow-md)]\">\n {menu}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction FakeMenu({\n items,\n active,\n onSelect,\n}: {\n items: string[];\n active: string;\n onSelect: (value: string) => void;\n}) {\n return (\n <div className=\"space-y-0.5\">\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n onClick={() => onSelect(item)}\n className={`flex w-full items-center justify-between rounded-[var(--ck-radius-xs)] px-2.5 py-2 text-[12px] ${\n item === active\n ? \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)]\"\n }`}\n >\n <span>{item}</span>\n {item === active ? <span className=\"text-[11px]\">当前</span> : null}\n </button>\n ))}\n </div>\n );\n}\n\nfunction IssueDetailContent({\n row,\n compact,\n activeTab,\n onMutateIssue,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n activeTab: string;\n onMutateIssue: (\n issueId: string,\n patch: Partial<\n Pick<\n WorkspaceRow,\n \"status\" | \"priority\" | \"assignee\" | \"iteration\" | \"updatedAt\" | \"linkedRequirement\" | \"attachmentCount\" | \"childProgress\"\n >\n >,\n ) => void;\n}) {\n const currentRow = row ?? ISSUE_ROWS[4];\n void activeTab;\n const [openField, setOpenField] = React.useState<string | null>(compact ? null : \"status\");\n const [statusValue, setStatusValue] = React.useState(\"开发中\");\n const [priorityValue, setPriorityValue] = React.useState(\"P1\");\n const [assigneeValue, setAssigneeValue] = React.useState(\"黄磊\");\n const [iterationValue, setIterationValue] = React.useState(\"示例迭代\");\n const [activityFilter, setActivityFilter] = React.useState(\"全部\");\n const [commentMode, setCommentMode] = React.useState<\"edit\" | \"preview\">(\"edit\");\n const [commentFocused, setCommentFocused] = React.useState(false);\n const [commentValue, setCommentValue] = React.useState(\"\");\n const [activeLinkedItem, setActiveLinkedItem] = React.useState<string | null>(null);\n const [activeMoreActionGroup, setActiveMoreActionGroup] = React.useState<string | null>(null);\n const detailRef = React.useRef<HTMLDivElement | null>(null);\n\n const initialTimelineItems = React.useMemo<IssueActivityItem[]>(\n () => [\n {\n id: \"#6-邀请成员\",\n title: \"将状态从 未开始 更新为 进行中\",\n meta: \"黄磊 · 今天 16:42\",\n content: \"同步开始实现邀请成员邮箱校验与批量发送链路,并补充侧边栏中的评论编辑器壳与字段区域。\",\n type: \"日志\",\n target: \"#12\",\n },\n {\n id: \"#10-需求拆分\",\n title: \"添加子工作项 #11、#12\",\n meta: \"黄磊 · 今天 15:18\",\n content: \"将接口与前端弹窗拆成两个执行项,便于并行推进和跨端校验。\",\n type: \"日志\",\n target: \"#11\",\n },\n {\n id: \"#10-评论\",\n title: \"补充需求说明\",\n meta: \"系统 · 昨天 20:03\",\n content: \"根据默认规则自动指派负责人,并同步到示例迭代视图中,后续补附件与字段编辑态。\",\n type: \"评论\",\n target: \"BUG-205\",\n },\n ],\n [],\n );\n const [timelineItems, setTimelineItems] = React.useState(initialTimelineItems);\n\n const appendTimelineItem = React.useCallback((item: IssueActivityItem) => {\n setTimelineItems((current) => [item, ...current]);\n }, []);\n\n const mutateIssue = React.useCallback(\n (\n patch: Partial<\n Pick<\n WorkspaceRow,\n \"status\" | \"priority\" | \"assignee\" | \"iteration\" | \"updatedAt\" | \"linkedRequirement\" | \"attachmentCount\" | \"childProgress\"\n >\n >,\n options?: {\n timeline?: IssueActivityItem;\n activeTarget?: string | null;\n },\n ) => {\n onMutateIssue(currentRow.id, patch);\n if (options?.timeline) {\n appendTimelineItem(options.timeline);\n }\n if (options && \"activeTarget\" in options) {\n setActiveLinkedItem(options.activeTarget ?? null);\n }\n },\n [appendTimelineItem, currentRow.id, onMutateIssue],\n );\n\n React.useEffect(() => {\n setOpenField(compact ? null : \"status\");\n setStatusValue(currentRow.status);\n setPriorityValue(currentRow.priority);\n setAssigneeValue(currentRow.assignee);\n setIterationValue(currentRow.iteration);\n setCommentMode(\"edit\");\n setCommentValue(\"\");\n setCommentFocused(false);\n setActiveLinkedItem(null);\n setActiveMoreActionGroup(null);\n setTimelineItems(initialTimelineItems);\n }, [compact, currentRow.assignee, currentRow.id, currentRow.iteration, currentRow.priority, currentRow.status, initialTimelineItems]);\n\n React.useEffect(() => {\n const handlePointerDown = (event: MouseEvent) => {\n if (!detailRef.current) {\n return;\n }\n\n if (detailRef.current.contains(event.target as Node)) {\n return;\n }\n\n setOpenField(null);\n setCommentFocused(false);\n setActiveMoreActionGroup(null);\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n return () => document.removeEventListener(\"mousedown\", handlePointerDown);\n }, []);\n\n const fieldItems = [\n { label: \"项目\", value: <FieldValueShell variant=\"select\">{currentRow.project}</FieldValueShell> },\n {\n label: \"状态\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"status\"}\n onClick={() => setOpenField((current) => (current === \"status\" ? null : \"status\"))}\n menu={\n <FakeMenu\n items={[\"未开始\", \"开发中\", \"已完成\"]}\n active={statusValue}\n onSelect={(value) => {\n mutateIssue(\n { status: value },\n {\n timeline: {\n id: `#10-状态`,\n title: `将状态更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"在事项详情字段区中直接修改状态,保持当前协作上下文不丢失。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setStatusValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <StatusPill value={statusValue} />\n </FieldValueShell>\n ),\n },\n {\n label: \"处理人\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"assignee\"}\n onClick={() => setOpenField((current) => (current === \"assignee\" ? null : \"assignee\"))}\n menu={\n <FakeMenu\n items={[\"黄磊\", \"李静\", \"孙明\"]}\n active={assigneeValue}\n onSelect={(value) => {\n mutateIssue(\n { assignee: value },\n {\n timeline: {\n id: `#10-处理人`,\n title: `将处理人更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"字段变更即时写入动态流,方便团队追踪责任归属变化。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setAssigneeValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <MemberPill value={assigneeValue} />\n </FieldValueShell>\n ),\n },\n { label: \"验证人\", value: <FieldValueShell variant=\"select\">未指定</FieldValueShell> },\n {\n label: \"关联需求\",\n value: <FieldValueShell>{currentRow.linkedRequirement ? currentRow.linkedRequirement : \"未关联需求\"}</FieldValueShell>,\n },\n {\n label: \"迭代\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"iteration\"}\n onClick={() => setOpenField((current) => (current === \"iteration\" ? null : \"iteration\"))}\n menu={\n <FakeMenu\n items={[\"示例迭代\", \"邀请成员\", \"移动端适配\"]}\n active={iterationValue}\n onSelect={(value) => {\n mutateIssue(\n { iteration: value },\n {\n timeline: {\n id: `#10-迭代`,\n title: `将迭代更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"事项已重新归入新的执行节奏中,列表视图与详情字段保持同步。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setIterationValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n {iterationValue}\n </FieldValueShell>\n ),\n },\n { label: \"截止日期\", value: <FieldValueShell>2026/04/22</FieldValueShell> },\n {\n label: \"优先级\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"priority\"}\n onClick={() => setOpenField((current) => (current === \"priority\" ? null : \"priority\"))}\n menu={\n <FakeMenu\n items={[\"P0\", \"P1\", \"P2\", \"P3\"]}\n active={priorityValue}\n onSelect={(value) => {\n mutateIssue(\n { priority: value },\n {\n timeline: {\n id: `#10-优先级`,\n title: `将优先级更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"优先级调整会影响团队排序与视图筛选,也是对象协作历史的一部分。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setPriorityValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <PriorityPill value={priorityValue} />\n </FieldValueShell>\n ),\n },\n { label: \"事项类型\", value: <FieldValueShell variant=\"select\">需求类型</FieldValueShell> },\n { label: \"子事项\", value: <FieldValueShell>{currentRow.childProgress ?? \"暂无子事项\"}</FieldValueShell> },\n {\n label: \"附件\",\n value: <FieldValueShell>{typeof currentRow.attachmentCount === \"number\" ? `${currentRow.attachmentCount} 个附件` : \"暂无附件\"}</FieldValueShell>,\n },\n { label: \"创建时间\", value: <FieldValueShell quiet editable={false}>2020/01/29</FieldValueShell> },\n { label: \"工时\", value: <FieldValueShell>未预估: 8 小时</FieldValueShell> },\n ];\n\n const childItems = [\n {\n label: \"#11 增加批量发送邀请邮件接口\",\n value: <StatusPill value=\"未开始\" />,\n active: activeLinkedItem === \"#11\",\n onClick: () => {\n mutateIssue(\n { childProgress: \"1/2 子事项\" },\n {\n timeline: {\n id: \"#10-子事项-11\",\n title: \"同步子工作项 #11 的执行进展\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项摘要更新为 1/2 子事项,列表标题下方的进度说明即时同步。\",\n type: \"日志\",\n target: \"#11\",\n },\n activeTarget: \"#11\",\n },\n );\n },\n },\n {\n label: \"#12 增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n value: <StatusPill value=\"进行中\" />,\n active: activeLinkedItem === \"#12\",\n onClick: () => {\n mutateIssue(\n { childProgress: \"2/2 子事项\" },\n {\n timeline: {\n id: \"#10-子事项-12\",\n title: \"同步子工作项 #12 的执行进展\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项摘要更新为 2/2 子事项,方便在列表中直接看到分解项收口情况。\",\n type: \"日志\",\n target: \"#12\",\n },\n activeTarget: \"#12\",\n },\n );\n },\n },\n ];\n\n const relatedDefects = [\n {\n label: \"BUG-205 批量发送邀请邮件接口超时后前端无错误提示\",\n value: <StatusPill value=\"待修复\" />,\n active: activeLinkedItem === \"BUG-205\",\n onClick: () => setActiveLinkedItem(\"BUG-205\"),\n },\n {\n label: \"BUG-209 Safari 下无法正确粘贴多邮箱地址\",\n value: <StatusPill value=\"修复中\" />,\n active: activeLinkedItem === \"BUG-209\",\n onClick: () => setActiveLinkedItem(\"BUG-209\"),\n },\n ];\n\n const visibleTimelineItems = timelineItems.filter((item) => {\n if (activityFilter === \"只看日志\") {\n return item.type === \"日志\";\n }\n\n if (activityFilter === \"只看评论\") {\n return item.type === \"评论\";\n }\n\n return true;\n });\n\n return (\n <div ref={detailRef} className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <div className={`grid gap-6 px-4 py-5 sm:px-5 ${compact ? \"grid-cols-1\" : \"grid-cols-[minmax(0,1fr)_248px]\"}`}>\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-2 text-[12px] text-[var(--ck-text-muted)]\">\n <button type=\"button\" className=\"rounded-[var(--ck-radius-xs)] px-1 py-0.5 hover:bg-[var(--ck-bg-hover)]\">\n #6\n </button>\n <button\n type=\"button\"\n className=\"rounded-[var(--ck-radius-xs)] px-1 py-0.5 font-medium text-[var(--ck-brand-primary)] hover:bg-[var(--ck-bg-active)]\"\n >\n #10\n </button>\n <span>发起需求讨论</span>\n <span>1 人关注</span>\n <button\n type=\"button\"\n onClick={() => setActiveLinkedItem(\"#6\")}\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 引用父事项\n </button>\n <button\n type=\"button\"\n onClick={() =>\n mutateIssue(\n { linkedRequirement: currentRow.linkedRequirement ?? \"REQ-88\" },\n {\n timeline: {\n id: \"#10-关联需求\",\n title: `关联需求 ${currentRow.linkedRequirement ?? \"REQ-88\"}`,\n meta: \"黄磊 · 刚刚\",\n content: \"对象关系在详情头部与列表摘要中保持同步,便于跨模块追溯。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n )\n }\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 关联需求\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 复制链接\n </button>\n <FieldValueShell\n variant=\"default\"\n expanded={openField === \"header-actions\"}\n onClick={() => setOpenField((current) => (current === \"header-actions\" ? null : \"header-actions\"))}\n menu={\n <FakeMenu\n items={[\"复制事项链接\", \"添加到收藏\", \"归档事项\"]}\n active=\"复制事项链接\"\n onSelect={(value) => {\n setActiveMoreActionGroup(value);\n setOpenField(null);\n }}\n />\n }\n >\n 更多引用\n </FieldValueShell>\n </div>\n <h2\n className={`mt-3 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n {currentRow.title}\n </h2>\n <div className=\"mt-3 flex flex-wrap items-center gap-2\">\n <StatusPill value={statusValue} />\n <PriorityPill value={priorityValue} />\n <TypeBadge value={currentRow.ticketType} />\n <FieldValueShell quiet editable={false}>\n 当前处理人:{assigneeValue}\n </FieldValueShell>\n </div>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {ISSUE_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n <button\n type=\"button\"\n onClick={() => setOpenField((current) => (current === \"more-actions\" ? null : \"more-actions\"))}\n className={`inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border px-3 text-[13px] ${\n openField === \"more-actions\"\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n 更多操作\n </button>\n </div>\n <DetailSection title=\"对象关系\">\n <div className=\"grid gap-2 sm:grid-cols-2\">\n <RelationCard\n label=\"父事项\"\n value=\"#6 发起需求讨论\"\n hint=\"延续上游上下文与关注人\"\n active={activeLinkedItem === \"#6\"}\n onClick={() => setActiveLinkedItem(\"#6\")}\n />\n <RelationCard\n label=\"关联需求\"\n value={currentRow.linkedRequirement ?? \"未关联\"}\n hint={currentRow.linkedRequirement ? \"已进入上游需求链路\" : \"点击后建立需求引用\"}\n active={activeLinkedItem === \"REQ-88\"}\n onClick={() =>\n mutateIssue(\n { linkedRequirement: currentRow.linkedRequirement ?? \"REQ-88\" },\n {\n timeline: currentRow.linkedRequirement\n ? undefined\n : {\n id: \"#10-需求关联\",\n title: \"建立了一个上游需求关联\",\n meta: \"黄磊 · 刚刚\",\n content: \"关联需求后,列表摘要和详情关系卡会同时呈现该对象链路。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n )\n }\n />\n <RelationCard\n label=\"子事项\"\n value={currentRow.childProgress ?? \"暂无\"}\n hint=\"点击子工作项可同步父事项摘要\"\n active={activeLinkedItem === \"#11\" || activeLinkedItem === \"#12\"}\n onClick={() => setActiveLinkedItem(currentRow.childProgress === \"2/2 子事项\" ? \"#12\" : \"#11\")}\n />\n <RelationCard\n label=\"附件\"\n value={`${currentRow.attachmentCount ?? 0} 个附件`}\n hint=\"设计稿、截图、接口文档统一挂载\"\n active={activeLinkedItem === \"#10-attachment\"}\n onClick={() => setActiveLinkedItem(\"#10-attachment\")}\n />\n </div>\n </DetailSection>\n {openField === \"more-actions\" ? (\n <div className=\"mt-2 grid max-w-[420px] gap-2 md:grid-cols-[220px_1fr]\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white p-1 shadow-[var(--ck-shadow-md)]\">\n <FakeMenu\n items={[\"复制事项链接\", \"移动到迭代\", \"转为子事项\", \"归档事项\"]}\n active={activeMoreActionGroup ?? \"复制事项链接\"}\n onSelect={setActiveMoreActionGroup}\n />\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-3 py-3 text-[12px] text-[var(--ck-text-secondary)] shadow-[var(--ck-shadow-md)]\">\n {activeMoreActionGroup === \"移动到迭代\" ? \"将当前事项移动到其他迭代,并同步列表和视图。\" : null}\n {activeMoreActionGroup === \"转为子事项\" ? \"把当前事项挂到另一个父事项下,继承其协作上下文。\" : null}\n {activeMoreActionGroup === \"归档事项\" ? \"归档后从默认视图中移除,但仍保留可追溯记录。\" : null}\n {!activeMoreActionGroup || activeMoreActionGroup === \"复制事项链接\"\n ? \"复制后可用于评论、讨论或跨模块引用。\"\n : null}\n </div>\n </div>\n ) : null}\n\n {compact ? <DetailMetaGrid compact items={fieldItems.slice(0, 6)} /> : null}\n\n <DetailSection title=\"描述\" actionLabel=\"编辑描述\">\n <p>\n 管理员在后台成员管理页可点击“邀请成员”按钮,打开成员邀请弹窗。支持输入一个或多个邮箱地址,\n 并基于团队预设角色完成初始权限分配。\n </p>\n <p>\n 邀请请求提交后,系统需要校验邮箱格式、去重、过滤已加入成员,并生成对应的邀请记录。同时,\n 需要支持批量发送邀请邮件,便于管理员集中完成外部成员的引入操作。\n </p>\n </DetailSection>\n\n <DetailSection title=\"附件\" actionLabel=\"上传附件\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-dashed border-[var(--ck-border-default)] bg-[var(--ck-bg-surface-muted)] px-4 py-4 text-[13px] text-[var(--ck-text-secondary)]\">\n {currentRow.attachmentCount && currentRow.attachmentCount > 0 ? (\n <div className=\"space-y-2\">\n <div>当前已上传 {currentRow.attachmentCount} 个附件,列表摘要会同步展示。</div>\n <button\n type=\"button\"\n onClick={() => {\n mutateIssue(\n { attachmentCount: (currentRow.attachmentCount ?? 0) + 1 },\n {\n timeline: {\n id: \"#10-附件\",\n title: \"上传了新的附件\",\n meta: \"黄磊 · 刚刚\",\n content: \"附件上传后,列表标题下方的摘要同步显示附件数量。\",\n type: \"日志\",\n target: \"#10-attachment\",\n },\n activeTarget: \"#10-attachment\",\n },\n );\n }}\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-secondary)]\"\n >\n 再上传一个附件\n </button>\n </div>\n ) : (\n <div className=\"space-y-2\">\n <div>当前暂无附件,可上传 PR 截图、交互说明或接口文档。</div>\n <button\n type=\"button\"\n onClick={() => {\n mutateIssue(\n { attachmentCount: 1 },\n {\n timeline: {\n id: \"#10-附件\",\n title: \"上传了第一个附件\",\n meta: \"黄磊 · 刚刚\",\n content: \"附件上传后,列表标题下方的摘要同步显示附件数量。\",\n type: \"日志\",\n target: \"#10-attachment\",\n },\n activeTarget: \"#10-attachment\",\n },\n );\n }}\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-secondary)]\"\n >\n 模拟上传附件\n </button>\n </div>\n )}\n </div>\n </DetailSection>\n\n <DetailListSection title=\"子工作项\" items={childItems} />\n\n <DetailListSection title=\"关联缺陷\" items={relatedDefects} />\n\n <DetailListSection\n title=\"关联需求\"\n items={[\n {\n label: currentRow.linkedRequirement\n ? `${currentRow.linkedRequirement} 邀请成员加入团队能力增强`\n : \"关联一个上游需求\",\n value: currentRow.linkedRequirement ? \"已关联\" : \"未关联\",\n active: activeLinkedItem === \"REQ-88\",\n onClick: () => {\n mutateIssue(\n { linkedRequirement: \"REQ-88\" },\n {\n timeline: currentRow.linkedRequirement\n ? undefined\n : {\n id: \"#10-关联需求\",\n title: \"建立了一个上游需求关联\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项已经与需求池中的目标对象打通,后续可沿链路继续追踪。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n );\n },\n },\n ]}\n />\n\n <DetailFilterTabs\n items={[\n { label: \"全部\", active: activityFilter === \"全部\" },\n { label: \"只看日志\", active: activityFilter === \"只看日志\" },\n { label: \"只看评论\", active: activityFilter === \"只看评论\" },\n ]}\n onSelect={setActivityFilter}\n />\n\n <DetailTimeline\n items={visibleTimelineItems.map((item) => ({\n ...item,\n active: activeLinkedItem === item.target,\n onClick: () => setActiveLinkedItem(item.target),\n }))}\n />\n\n <DetailCommentComposer\n placeholder=\"在此输入评论内容(支持 Markdown)\"\n mode={commentMode}\n focused={commentFocused}\n onModeChange={setCommentMode}\n onFocus={() => setCommentFocused(true)}\n value={commentValue}\n onChange={setCommentValue}\n onPublish={() => {\n if (!commentValue.trim()) {\n return;\n }\n\n setTimelineItems((current) => [\n {\n id: \"#10-新评论\",\n title: \"发表了一条评论\",\n meta: \"黄磊 · 刚刚\",\n content: commentValue,\n type: \"评论\",\n target: currentRow.linkedRequirement ?? currentRow.id,\n },\n ...current,\n ]);\n setCommentValue(\"\");\n setCommentMode(\"edit\");\n setCommentFocused(false);\n setActiveLinkedItem(currentRow.linkedRequirement ?? currentRow.id);\n }}\n />\n\n {compact ? <DetailFieldPanel title=\"更多字段\" items={fieldItems} /> : null}\n </div>\n\n {!compact ? <DetailFieldPanel items={fieldItems} /> : null}\n </div>\n </div>\n </div>\n );\n}\n\nfunction DefectDetailContent({\n row,\n compact,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n}) {\n const currentRow = row ?? DEFECT_ROWS[0];\n\n return (\n <div className=\"flex-1 overflow-auto px-4 py-5 sm:px-5\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Bug className=\"h-3.5 w-3.5\" />\n <span>{currentRow.ticketType} {currentRow.id}</span>\n </div>\n <h2\n className={`mt-2 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n 登录页输入正确的用户名和密码后提示“用户不存在”\n </h2>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {DEFECT_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n </div>\n\n <DetailMetaGrid\n compact={compact}\n items={[\n { label: \"状态\", value: currentRow.status },\n { label: \"优先级\", value: currentRow.priority },\n { label: \"严重程度\", value: currentRow.severity ?? \"中\" },\n { label: \"处理人\", value: currentRow.assignee },\n ]}\n />\n\n <DetailSection title=\"复现步骤\" actionLabel=\"编辑步骤\">\n <p>1. 打开登录页并输入测试账号 `demo_admin@example.com`。</p>\n <p>2. 输入系统分配的正确密码后点击“登录”。</p>\n <p>3. 页面未进入工作台,而是在顶部提示“用户不存在”。</p>\n </DetailSection>\n\n <DetailSection title=\"影响分析\">\n <p>\n 该问题直接影响正式用户登录主链路,属于高价值路径阻断型缺陷。当前在 Chrome 中可稳定复现,\n 回归测试需要覆盖账号校验、错误提示映射与登录态写入三个阶段。\n </p>\n </DetailSection>\n\n <DetailListSection\n title=\"关联项\"\n items={[\n { label: \"关联需求 #102 登录链路重构\", value: \"已关联\" },\n { label: \"修复提交 commit/3af91b2\", value: \"待合并\" },\n ]}\n />\n </div>\n );\n}\n\nfunction ApprovalDetailContent({\n row,\n compact,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n}) {\n const currentRow = row ?? APPROVAL_ROWS[0];\n\n return (\n <div className=\"flex-1 overflow-auto px-4 py-5 sm:px-5\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Workflow className=\"h-3.5 w-3.5\" />\n <span>{currentRow.ticketType} {currentRow.id}</span>\n </div>\n <h2\n className={`mt-2 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n 供应商付款审批 / 华东代理结算单\n </h2>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {APPROVAL_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n </div>\n\n <DetailMetaGrid\n compact={compact}\n items={[\n { label: \"当前状态\", value: currentRow.status },\n { label: \"当前节点\", value: currentRow.iteration },\n { label: \"处理人\", value: currentRow.assignee },\n { label: \"发起人\", value: currentRow.creator },\n { label: \"申请金额\", value: \"186,000 元\" },\n { label: \"付款主体\", value: \"上海梦体科技有限公司\" },\n ]}\n />\n\n <DetailSection title=\"审批摘要\" actionLabel=\"编辑说明\">\n <p>申请内容为华东代理 2026 年 3 月结算款支付,申请金额 186,000 元。</p>\n <p>当前已完成业务负责人审批,流转至财务复核节点,待校验发票与付款账户信息。</p>\n </DetailSection>\n\n <DetailListSection\n title=\"关键信息\"\n items={[\n { label: \"结算周期 / 2026-03-01 至 2026-03-31\", value: \"月度结算\" },\n { label: \"付款方式 / 对公转账\", value: \"财务执行\" },\n { label: \"所属业务线 / 华东代理渠道\", value: \"渠道运营\" },\n { label: \"预算科目 / 渠道返佣\", value: \"已占用预算\" },\n ]}\n />\n\n <DetailSection title=\"风险提示\">\n <p>当前审批单金额高于近 90 天同类付款单均值,建议复核返佣计算口径与合同补充条款。</p>\n <p>系统检测到发票附件已上传,但付款账户信息仍待财务核验,放款前需要确认开户行与合同主体一致。</p>\n </DetailSection>\n\n <DetailSection title=\"流程节点\">\n <p>1. 发起申请</p>\n <p>2. 业务负责人审批</p>\n <p>3. 财务复核</p>\n <p>4. 总监确认并出纳付款</p>\n </DetailSection>\n\n <DetailListSection\n title=\"审批时序\"\n items={[\n { label: \"发起申请 / 王敏 / 2026-04-18 09:16\", value: \"已完成\" },\n { label: \"业务负责人审批 / 赵一 / 2026-04-18 11:02\", value: \"已同意\" },\n { label: \"财务复核 / 黄磊 / 2026-04-19 10:24\", value: \"当前节点\" },\n { label: \"总监确认 / 陈总\", value: \"待处理\" },\n ]}\n />\n\n <DetailSection title=\"审批意见\">\n <p>业务负责人:结算依据与代理回款对账单一致,同意进入财务复核。</p>\n <p>财务备注:请补充 3 月返佣明细中的两笔线下活动费用说明,并确认开户名与合同主体一致后继续流转。</p>\n </DetailSection>\n\n <DetailListSection\n title=\"附件与凭证\"\n items={[\n { label: \"代理结算对账单.pdf\", value: \"已上传\" },\n { label: \"3 月返佣明细.xlsx\", value: \"已上传\" },\n { label: \"发票扫描件.zip\", value: \"已上传\" },\n { label: \"补充情况说明.docx\", value: \"待补充\" },\n ]}\n />\n\n <DetailListSection\n title=\"处理记录\"\n items={[\n { label: \"业务负责人 / 已同意 / 2026-04-18 10:42\", value: \"已完成\" },\n { label: \"财务复核 / 待处理 / 2026-04-19 09:30\", value: \"当前节点\" },\n ]}\n />\n\n <DetailListSection\n title=\"关联信息\"\n items={[\n { label: \"关联合同 / 华东渠道年度续签协议\", value: \"已关联\" },\n { label: \"关联预算单 / Q1 渠道返佣预算\", value: \"已关联\" },\n { label: \"关联供应商 / 华东代理伙伴\", value: \"已关联\" },\n ]}\n />\n </div>\n );\n}\n\nexport function CollaborationConsolePreview() {\n const [mode, setMode] = React.useState<PreviewMode>(\"goal-management\");\n const [issueRowsState, setIssueRowsState] = React.useState(() => ISSUE_ROW_SEED.map((row) => ({ ...row })));\n const [dashboardCustomMode, setDashboardCustomMode] = React.useState(false);\n const [dashboardWidgets, setDashboardWidgets] = React.useState(() => DASHBOARD_WIDGETS.map((widget) => ({ ...widget })));\n\n const issueRows = React.useMemo(\n () => issueRowsState.map((row) => buildRow(row)),\n [issueRowsState],\n );\n const issueRowsAssignedToMe = React.useMemo(\n () => issueRowsState.filter((row) => row.assignee === \"黄磊\"),\n [issueRowsState],\n );\n const issueRowsActive = React.useMemo(\n () => issueRowsState.filter((row) => row.status === \"进行中\" || row.status === \"开发中\"),\n [issueRowsState],\n );\n\n const workspaceConfig = React.useMemo(() => {\n if (mode === \"dashboard\") {\n return null;\n }\n\n if (mode === \"defect\") {\n return {\n sectionName: \"缺陷\",\n sidebarViews: DEFECT_VIEWS,\n rows: DEFECT_ROWS,\n createButtonLabel: \"创建缺陷\",\n filterLabel: \"筛选 4个条件\",\n filterChips: [\"状态 待修复,待验证\", \"严重程度 高,致命\", \"处理人 全部\", \"标签 登录链路\"],\n secondaryFilterLabel: \"字段 11 个\",\n savedViewLabel: undefined,\n resultsSummary: \"共 18 条缺陷,已按严重程度与状态筛选\",\n batchActions: undefined,\n detailLabel: \"缺陷详情\",\n detailTabs: undefined,\n defaultSelectedRowId: \"BUG-218\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <DefectDetailContent row={row} compact={context.compact} />\n ),\n };\n }\n\n if (mode === \"approval\") {\n return {\n sectionName: \"审批\",\n sidebarViews: APPROVAL_VIEWS,\n rows: APPROVAL_ROWS,\n createButtonLabel: \"发起审批\",\n filterLabel: \"筛选 4个条件\",\n filterChips: [\"状态 审批中,待我审批\", \"当前节点 财务复核\", \"发起人 全部\", \"类型 付款审批\"],\n secondaryFilterLabel: \"字段 9 个\",\n savedViewLabel: undefined,\n resultsSummary: \"共 27 条审批单,当前视图展示与我相关的审批流\",\n batchActions: undefined,\n detailLabel: \"审批详情\",\n detailTabs: undefined,\n defaultSelectedRowId: \"AP-302\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <ApprovalDetailContent row={row} compact={context.compact} />\n ),\n };\n }\n\n return {\n sectionName: \"事项\",\n sidebarSections: ISSUE_SIDEBAR_SECTIONS,\n sidebarViews: ISSUE_VIEWS,\n rows: issueRows,\n createButtonLabel: \"创建事项\",\n filterLabel: \"筛选 3个条件\",\n secondaryFilterLabel: undefined,\n savedViewLabel: undefined,\n filterChips: [\n \"状态类型 未开始,进行中,开发中\",\n `处理人 黄磊(${issueRowsAssignedToMe.length})`,\n `进行中 ${issueRowsActive.length} 项`,\n ],\n resultsSummary: `显示 ${issueRowsAssignedToMe.length} / ${issueRows.length} 条事项,最近更新于 2026-04-20 的事项已高亮`,\n batchActions: undefined,\n detailLabel: \"事项详情\",\n detailTabs: [],\n defaultSelectedRowId: \"#10\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <IssueDetailContent\n row={row}\n compact={context.compact}\n activeTab={context.activeTab}\n onMutateIssue={(issueId, patch) => {\n setIssueRowsState((current) =>\n current.map((item) =>\n item.id === issueId\n ? {\n ...item,\n ...patch,\n updatedAt: \"2026-04-20\",\n }\n : item,\n ),\n );\n }}\n />\n ),\n };\n }, [issueRows, issueRowsActive.length, issueRowsAssignedToMe.length, mode]);\n\n return (\n <div className=\"space-y-3\">\n <div className=\"coding-kit rounded-[10px] border border-[var(--ck-border-subtle)] bg-white px-4 py-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div>\n <div className=\"text-[13px] font-semibold text-[var(--ck-text-primary)]\">Workspace Templates</div>\n <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">\n 一边复刻 CODING 的业务模块,一边抽象成可复用模板\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setMode(\"goal-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"goal-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Workflow className=\"mr-1.5 h-4 w-4\" />\n OKR 目标\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"project-overview\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"project-overview\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FolderKanban className=\"mr-1.5 h-4 w-4\" />\n 项目概览\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"document-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"document-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FileText className=\"mr-1.5 h-4 w-4\" />\n 文档资料\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"resource-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"resource-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <UserCog className=\"mr-1.5 h-4 w-4\" />\n 资源台账\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"build-plan-list\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"build-plan-list\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <CalendarClock className=\"mr-1.5 h-4 w-4\" />\n 构建列表\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"build-plan\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"build-plan\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Code2 className=\"mr-1.5 h-4 w-4\" />\n 构建计划\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"dashboard\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"dashboard\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <LayoutGrid className=\"mr-1.5 h-4 w-4\" />\n 仪表盘\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"issue\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"issue\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FileText className=\"mr-1.5 h-4 w-4\" />\n 事项\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"defect\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"defect\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <ShieldAlert className=\"mr-1.5 h-4 w-4\" />\n 缺陷\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"approval\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"approval\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <CheckCheck className=\"mr-1.5 h-4 w-4\" />\n 审批\n </button>\n </div>\n </div>\n </div>\n\n {mode === \"goal-management\" ? (\n <GoalManagementPagePreview />\n ) : mode === \"project-overview\" ? (\n <ProjectOverviewPagePreview />\n ) : mode === \"document-management\" ? (\n <DocumentManagementPagePreview />\n ) : mode === \"resource-management\" ? (\n <ResourceManagementPagePreview />\n ) : mode === \"build-plan-list\" ? (\n <BuildPlanListPagePreview />\n ) : mode === \"build-plan\" ? (\n <BuildPlanStarterPagePreview />\n ) : mode === \"dashboard\" ? (\n <DashboardWorkspace\n productItems={DASHBOARD_PRODUCT_ITEMS}\n projectName=\"mengti\"\n title=\"仪表盘\"\n userName=\"黄磊\"\n systemNotice=\"CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\"\n tabs={DASHBOARD_TABS}\n alertMessage=\"你有 8 个事项正在进行中,请及时处理\"\n widgets={dashboardWidgets}\n widgetCatalog={DASHBOARD_WIDGET_CATALOG}\n customMode={dashboardCustomMode}\n onToggleCustomMode={() => setDashboardCustomMode((current) => !current)}\n onAddWidget={(widgetId) => {\n setDashboardWidgets((current) => {\n if (current.some((widget) => widget.id === widgetId)) {\n return current;\n }\n\n const widget = DASHBOARD_WIDGET_LIBRARY.find((item) => item.id === widgetId);\n return widget ? [...current, { ...widget }] : current;\n });\n }}\n onRemoveWidget={(widgetId) => {\n setDashboardWidgets((current) => current.filter((widget) => widget.id !== widgetId));\n }}\n onResetWidgets={() => {\n setDashboardWidgets(DASHBOARD_WIDGETS.map((widget) => ({ ...widget })));\n }}\n />\n ) : workspaceConfig ? (\n <IssueWorkspace\n productItems={PRODUCT_ITEMS}\n sidebarViews={workspaceConfig.sidebarViews}\n sidebarSections={workspaceConfig.sidebarSections}\n tableHeaders={TABLE_HEADERS}\n rows={workspaceConfig.rows}\n projectName=\"mengti\"\n sectionName={workspaceConfig.sectionName}\n userName=\"黄磊\"\n createButtonLabel={workspaceConfig.createButtonLabel}\n filterLabel={workspaceConfig.filterLabel}\n secondaryFilterLabel={workspaceConfig.secondaryFilterLabel}\n savedViewLabel={workspaceConfig.savedViewLabel}\n filterChips={workspaceConfig.filterChips}\n resultsSummary={workspaceConfig.resultsSummary}\n batchActions={workspaceConfig.batchActions}\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 ·1个条件\"\n detailLabel={workspaceConfig.detailLabel}\n detailTabs={workspaceConfig.detailTabs}\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId={workspaceConfig.defaultSelectedRowId}\n renderDetailContent={workspaceConfig.renderDetailContent}\n />\n ) : null}\n\n {mode === \"dashboard\" ? (\n <div className=\"coding-kit rounded-[10px] border border-dashed border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] px-4 py-3\">\n <div className=\"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <LayoutGrid className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n <span className=\"font-medium text-[var(--ck-text-primary)]\">仪表盘模板关注点</span>\n <span>围绕团队执行态工作台、轻量 widget 自定义和待办暴露沉淀 dashboard block。</span>\n </div>\n </div>\n ) : (\n <div className=\"coding-kit grid gap-3 rounded-[10px] border border-[var(--ck-border-subtle)] bg-white p-4 lg:grid-cols-2\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Code2 className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 构建计划模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕项目内能力地图、二级导航和模板起手式选择展开</li>\n <li>核心不是表单,而是先帮助用户选对流程模板</li>\n <li>适合沉淀 project sidebar、template picker 和 starter page template</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <LayoutGrid className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 仪表盘模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>不是通用 BI,而是围绕团队执行态的工作台式信息聚合</li>\n <li>核心是可自定义 widget 网格、轻操作和待处理事项暴露</li>\n <li>适合沉淀 dashboard widget、board block 和具体工作台 template</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <FileText className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 事项模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕需求、任务、子工作项联动展开</li>\n <li>详情侧更偏描述、分解和协作动作</li>\n <li>适合做规划和执行过程中的主工作区</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Workflow className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 目标模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>不是目标总览表,而是目标对象的双栏工作台</li>\n <li>详情侧必须承接关键结果、关联事项和协作记录</li>\n <li>适合沉淀 goal workspace、okr object editor 和目标驱动的协同模板</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <AlertTriangle className=\"h-4 w-4 text-[var(--ck-warning-text)]\" />\n 缺陷模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕严重程度、复现步骤、验证状态展开</li>\n <li>详情侧更偏诊断、修复、回归和关联提交</li>\n <li>适合接测试流程与插件化日志分析面板</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4 lg:col-span-2\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Workflow className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 审批模板关注点\n </div>\n <ul className=\"mt-3 grid gap-2 text-[13px] text-[var(--ck-text-secondary)] md:grid-cols-3\">\n <li>围绕流程节点、当前状态、审批意见和审批人展开</li>\n <li>详情侧更偏流程摘要、节点说明与继续流转动作</li>\n <li>适合接规则校验、外部系统同步和审批辅助插件</li>\n </ul>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport function IssueTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={ISSUE_VIEWS}\n sidebarSections={ISSUE_SIDEBAR_SECTIONS}\n tableHeaders={TABLE_HEADERS}\n rows={ISSUE_ROWS}\n projectName=\"mengti\"\n sectionName=\"事项\"\n userName=\"黄磊\"\n createButtonLabel=\"创建事项\"\n filterLabel=\"筛选 3个条件\"\n filterChips={[\"状态类型 未开始,进行中\", \"处理人 黄磊\", \"事项类型 全部\"]}\n resultsSummary=\"显示 6 / 24 条事项\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 ·1个条件\"\n detailLabel=\"事项详情\"\n detailTabs={[]}\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"#10\"\n renderDetailContent={(row, context) => (\n <IssueDetailContent\n row={row}\n compact={context.compact}\n activeTab={context.activeTab}\n onMutateIssue={() => undefined}\n />\n )}\n />\n );\n}\n\nexport function DefectTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={DEFECT_VIEWS}\n tableHeaders={TABLE_HEADERS}\n rows={DEFECT_ROWS}\n projectName=\"mengti\"\n sectionName=\"缺陷\"\n userName=\"黄磊\"\n createButtonLabel=\"创建缺陷\"\n filterLabel=\"筛选 4个条件\"\n secondaryFilterLabel=\"字段 11 个\"\n filterChips={[\"状态 待修复,待验证\", \"严重程度 高,致命\", \"处理人 全部\", \"标签 登录链路\"]}\n resultsSummary=\"共 18 条缺陷,已按严重程度与状态筛选\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 · 1个条件\"\n detailLabel=\"缺陷详情\"\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"BUG-218\"\n renderDetailContent={(row, context) => (\n <DefectDetailContent row={row} compact={context.compact} />\n )}\n />\n );\n}\n\nexport function ApprovalTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={APPROVAL_VIEWS}\n tableHeaders={TABLE_HEADERS}\n rows={APPROVAL_ROWS}\n projectName=\"mengti\"\n sectionName=\"审批\"\n userName=\"黄磊\"\n createButtonLabel=\"发起审批\"\n filterLabel=\"筛选 4个条件\"\n secondaryFilterLabel=\"字段 9 个\"\n filterChips={[\"状态 审批中,待我审批\", \"当前节点 财务复核\", \"发起人 全部\", \"类型 付款审批\"]}\n resultsSummary=\"共 27 条审批单,当前视图展示与我相关的审批流\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 · 1个条件\"\n detailLabel=\"审批详情\"\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"AP-302\"\n renderDetailContent={(row, context) => (\n <ApprovalDetailContent row={row} compact={context.compact} />\n )}\n />\n );\n}\n","import * as React from 'react';\nimport { CheckCircle2, Clock3, Plus, Search } from 'lucide-react';\n\nimport {\n CodingButton,\n CodingInput,\n CodingListDetailWorkspace,\n CodingPanel,\n} from '../public';\n\ninterface PreviewItem {\n id: string;\n title: string;\n description: string;\n owner: string;\n status: '进行中' | '待处理' | '已完成';\n updatedAt: string;\n}\n\nconst PREVIEW_ITEMS: PreviewItem[] = [\n {\n id: 'issue-101',\n title: '完成扩展路由恢复回归',\n description: '验证复制链接后扩展、页签和资源状态是否一致恢复。',\n owner: '黄磊',\n status: '进行中',\n updatedAt: '今天 10:24',\n },\n {\n id: 'issue-102',\n title: '整理成员邀请的错误状态',\n description: '统一邀请成功、失败、过期和重复邀请的反馈路径。',\n owner: '李静',\n status: '待处理',\n updatedAt: '昨天 16:10',\n },\n {\n id: 'issue-103',\n title: '补充移动端详情返回路径',\n description: '列表和详情之间切换时保留筛选条件与局部状态。',\n owner: '王宁',\n status: '已完成',\n updatedAt: '周一 18:42',\n },\n];\n\nconst STATUS_STYLE: Record<PreviewItem['status'], string> = {\n 进行中: 'bg-[var(--ck-status-brand-bg)] text-[var(--ck-status-brand-text)]',\n 待处理: 'bg-[var(--ck-status-warning-bg)] text-[var(--ck-status-warning-text)]',\n 已完成: 'bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]',\n};\n\nfunction StatusTag({ status }: { status: PreviewItem['status'] }) {\n return (\n <span\n className={`inline-flex shrink-0 items-center gap-1 rounded-[var(--ck-chip-radius)] px-2 py-0.5 text-[11px] font-medium ${STATUS_STYLE[status]}`}\n >\n {status === '已完成' ? (\n <CheckCircle2 className=\"h-3 w-3\" />\n ) : (\n <Clock3 className=\"h-3 w-3\" />\n )}\n {status}\n </span>\n );\n}\n\nexport function ListDetailTemplatePreview({ className }: { className?: string }) {\n const items = PREVIEW_ITEMS;\n const [editorOpen, setEditorOpen] = React.useState(false);\n const [selectedKey, setSelectedKey] = React.useState(PREVIEW_ITEMS[0].id);\n const selected = items.find((item) => item.id === selectedKey) || items[0];\n\n return (\n <div className={className}>\n <CodingListDetailWorkspace\n title=\"事项管理\"\n subtitle=\"列表承接浏览与筛选,详情承接对象上下文,复杂编辑进入抽屉。\"\n rows={items}\n selectedKey={selectedKey}\n onSelectedKeyChange={setSelectedKey}\n getRowInfo={(row) => ({\n key: row.id,\n title: row.title,\n description: row.description,\n meta: `${row.owner} · ${row.updatedAt}`,\n status: <StatusTag status={row.status} />,\n })}\n headerActions={\n <CodingButton size=\"sm\" onClick={() => setEditorOpen(true)}>\n <Plus className=\"h-3.5 w-3.5\" />\n 创建事项\n </CodingButton>\n }\n toolbar={\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"relative min-w-[180px] flex-1 sm:max-w-[260px]\">\n <Search className=\"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[var(--ck-text-muted)]\" />\n <CodingInput className=\"pl-8\" placeholder=\"搜索事项标题\" />\n </div>\n <CodingButton variant=\"secondary\" size=\"sm\">\n 状态:全部\n </CodingButton>\n <CodingButton variant=\"secondary\" size=\"sm\">\n 负责人:全部\n </CodingButton>\n </div>\n }\n detailActions={\n <CodingButton size=\"sm\" variant=\"secondary\" onClick={() => setEditorOpen(true)}>\n 编辑\n </CodingButton>\n }\n renderDetail={({ row }) => (\n <div className=\"space-y-5\">\n <div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"min-w-0 text-[20px] font-semibold text-[var(--ck-text-primary)]\">\n {row.title}\n </h2>\n <StatusTag status={row.status} />\n </div>\n <p className=\"mt-2 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {row.description}\n </p>\n </div>\n <CodingPanel className=\"grid gap-3 p-4 sm:grid-cols-2\">\n <div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">负责人</div>\n <div className=\"mt-1 text-[13px] font-medium\">{row.owner}</div>\n </div>\n <div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">最近更新</div>\n <div className=\"mt-1 text-[13px] font-medium\">{row.updatedAt}</div>\n </div>\n </CodingPanel>\n <div>\n <div className=\"mb-2 text-[12px] font-medium text-[var(--ck-text-primary)]\">\n 协作记录\n </div>\n <div className=\"border-l-2 border-[var(--ck-brand-border-soft)] pl-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n 详情区域适合承接对象说明、状态变更、关联资源和协作动作;移动端切换为全屏详情。\n </div>\n </div>\n </div>\n )}\n editor={\n <div className=\"space-y-4\">\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 事项标题\n </span>\n <CodingInput defaultValue={selected?.title} />\n </label>\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 负责人\n </span>\n <CodingInput defaultValue={selected?.owner} />\n </label>\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 描述\n </span>\n <textarea\n defaultValue={selected?.description}\n className=\"min-h-28 w-full resize-y rounded-[var(--ck-control-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2 text-[13px] leading-5 text-[var(--ck-text-primary)] outline-none focus:border-[var(--ck-brand-active)]\"\n />\n </label>\n </div>\n }\n editorTitle=\"编辑事项\"\n editorDescription=\"桌面端从右侧打开,移动端从底部打开;表单状态由业务扩展维护。\"\n editorOpen={editorOpen}\n onEditorOpenChange={setEditorOpen}\n editorFooter={\n <div className=\"flex w-full justify-end gap-2\">\n <CodingButton variant=\"secondary\" onClick={() => setEditorOpen(false)}>\n 取消\n </CodingButton>\n <CodingButton\n onClick={() => {\n setEditorOpen(false);\n }}\n >\n 保存\n </CodingButton>\n </div>\n }\n />\n </div>\n );\n}\n","import type {\n AgentChannelEvent as ProtocolAgentChannelEvent,\n AgentChannelMessage as ProtocolAgentChannelMessage,\n AgentChannelPermissionRequest,\n AgentChannelRouteContext,\n AgentChannelSnapshot as ProtocolAgentChannelSnapshot,\n AgentChannelStatus,\n AgentChannelOwnerRef,\n ExternalConversationRef,\n} from '@contracts/agent-channel';\n\nimport {\n DaemonBackedAgentChannelService,\n type AgentChannel,\n type AgentChannelCreateInput,\n type AgentChannelMessage,\n type AgentChannelService,\n type AgentChannelSnapshot,\n} from './agent-channel';\nimport {\n WorkspaceAgentChannelClient,\n type AgentChannelPermissionStrategy,\n} from './agent-channel-client';\nimport type { DaemonAgentClientOptions } from './daemon-agent-client';\n\nexport type AgentChannelHarnessPermissionStrategy = AgentChannelPermissionStrategy;\n\nexport interface AgentChannelHarnessClientOptions extends DaemonAgentClientOptions {\n defaultCwd?: string;\n defaultTitle?: string | null;\n onConnectionChange?: (status: 'connected' | 'disconnected' | 'error', error?: string | null) => void;\n}\n\nexport interface AgentChannelHarnessInput {\n service?: AgentChannelService;\n daemon?: AgentChannelHarnessClientOptions;\n provider: string;\n cwd?: string;\n title?: string | null;\n message: string | AgentChannelMessage | ProtocolAgentChannelMessage;\n model?: string | null;\n modeId?: string | null;\n thinkingOptionId?: string | null;\n featureValues?: Record<string, unknown> | null;\n permissionStrategy?: AgentChannelHarnessPermissionStrategy;\n timeoutMs?: number;\n closeOnComplete?: boolean;\n routeContext?: AgentChannelRouteContext;\n externalConversationRef?: ExternalConversationRef;\n ownerRef?: AgentChannelOwnerRef;\n context?: Record<string, unknown>;\n onEvent?: (event: ProtocolAgentChannelEvent, allEvents: ProtocolAgentChannelEvent[]) => void;\n}\n\nexport interface AgentChannelHarnessResult {\n agentChannelId: string;\n channel: AgentChannel;\n finalStatus: AgentChannelStatus | 'timeout';\n events: ProtocolAgentChannelEvent[];\n snapshot: AgentChannelSnapshot | null;\n protocolSnapshot: ProtocolAgentChannelSnapshot | null;\n pendingPermissions: AgentChannelPermissionRequest[];\n error?: string;\n timedOut: boolean;\n closed: boolean;\n}\n\nexport function createAgentChannelHarnessClient(\n options: AgentChannelHarnessClientOptions,\n): DaemonBackedAgentChannelService {\n const service = new DaemonBackedAgentChannelService({\n serverUrl: options.serverUrl,\n token: options.token,\n projectId: options.projectId,\n workspaceId: options.workspaceId,\n clientId: options.clientId || 'workspace-agent-channel-harness',\n }, {\n defaultCwd: options.defaultCwd,\n defaultTitle: options.defaultTitle,\n onConnectionChange: options.onConnectionChange,\n });\n service.connect();\n return service;\n}\n\nexport async function runAgentChannelHarness(input: AgentChannelHarnessInput): Promise<AgentChannelHarnessResult> {\n const ownsService = !input.service;\n const service = input.service || createAgentChannelHarnessClient(requiredDaemonOptions(input));\n const client = new WorkspaceAgentChannelClient(service);\n try {\n const result = await client.run({\n create: channelCreateInput(input),\n message: input.message,\n permissionStrategy: input.permissionStrategy,\n timeoutMs: input.timeoutMs,\n closeOnComplete: input.closeOnComplete,\n onEvent: input.onEvent\n ? (event, state) => input.onEvent?.(event, state.events)\n : undefined,\n });\n\n return {\n agentChannelId: result.agentChannelId,\n channel: result.channel,\n finalStatus: result.finalStatus,\n events: result.events,\n snapshot: result.snapshot,\n protocolSnapshot: result.protocolSnapshot,\n pendingPermissions: result.pendingPermissions,\n error: result.error,\n timedOut: result.timedOut,\n closed: result.closed,\n };\n } finally {\n if (ownsService && 'disconnect' in service && typeof service.disconnect === 'function') {\n service.disconnect();\n }\n }\n}\n\nfunction requiredDaemonOptions(input: AgentChannelHarnessInput): AgentChannelHarnessClientOptions {\n if (!input.daemon) {\n throw new Error('runAgentChannelHarness requires either input.service or input.daemon');\n }\n return input.daemon;\n}\n\nfunction channelCreateInput(input: AgentChannelHarnessInput): AgentChannelCreateInput {\n return {\n capabilityId: `runtime:${input.provider}`,\n cwd: input.cwd,\n title: input.title,\n modeId: input.modeId,\n model: input.model,\n thinkingOptionId: input.thinkingOptionId,\n featureValues: input.featureValues,\n routeContext: input.routeContext,\n externalConversationRef: input.externalConversationRef,\n ownerRef: input.ownerRef,\n context: input.context,\n ...(input.permissionStrategy\n ? { runtime: { permissionStrategy: input.permissionStrategy } }\n : {}),\n };\n}\n","import type {\n AgentChannelConversationProjection,\n AgentChannelEvent,\n AgentChannelMessage,\n AgentChannelRouteContext,\n ExternalConversationRef,\n} from '@contracts/agent-channel';\n\nimport {\n WorkspaceAgentChannelClient,\n type AgentChannelPermissionStrategy,\n type AgentChannelRunResult,\n} from './agent-channel-client';\nimport type { AgentChannelService } from './agent-channel';\n\nexport interface FakeHubAgentBinding {\n capabilityId: string;\n provider: string;\n targetSubjectId: string;\n bindingId?: string;\n cwd?: string;\n model?: string | null;\n modeId?: string | null;\n thinkingOptionId?: string | null;\n}\n\nexport interface FakeHubAgentInvocationInput {\n conversationId: string;\n targetSubjectId: string;\n text: string;\n triggeredBySubjectId?: string;\n parentConversationId?: string;\n externalConversationRef?: ExternalConversationRef;\n timeoutMs?: number;\n permissionStrategy?: AgentChannelPermissionStrategy;\n closeOnComplete?: boolean;\n}\n\nexport interface FakeHubAgentInvocationResult {\n routeContext: AgentChannelRouteContext;\n agentChannelId: string;\n finalStatus: AgentChannelRunResult['finalStatus'];\n run: AgentChannelRunResult;\n projections: AgentChannelConversationProjection[];\n}\n\nexport class FakeHubAgentCaller {\n private readonly client: WorkspaceAgentChannelClient;\n private readonly bindings = new Map<string, FakeHubAgentBinding>();\n\n constructor(service: AgentChannelService, bindings: FakeHubAgentBinding[] = []) {\n this.client = new WorkspaceAgentChannelClient(service);\n bindings.forEach((binding) => this.registerBinding(binding));\n }\n\n registerBinding(binding: FakeHubAgentBinding): void {\n this.bindings.set(binding.targetSubjectId, binding);\n }\n\n async invokeAgent(input: FakeHubAgentInvocationInput): Promise<FakeHubAgentInvocationResult> {\n const binding = this.bindings.get(input.targetSubjectId);\n if (!binding) {\n throw new Error(`No fake Hub agent binding registered for subject ${input.targetSubjectId}`);\n }\n const routeContext = buildRouteContext(input, binding);\n const projectionCollector = new FakeHubProjectionCollector();\n\n const run = await this.client.run({\n create: {\n capabilityId: binding.capabilityId,\n cwd: binding.cwd,\n model: binding.model,\n modeId: binding.modeId,\n thinkingOptionId: binding.thinkingOptionId,\n routeContext,\n externalConversationRef: input.externalConversationRef,\n context: {\n fakeHub: {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n },\n },\n ...(input.permissionStrategy\n ? { runtime: { permissionStrategy: input.permissionStrategy } }\n : {}),\n },\n message: hubTextToAgentMessage(input),\n timeoutMs: input.timeoutMs,\n permissionStrategy: input.permissionStrategy,\n closeOnComplete: input.closeOnComplete,\n onEvent: (event) => {\n projectionCollector.accept(event, routeContext);\n },\n });\n\n return {\n routeContext,\n agentChannelId: run.agentChannelId,\n finalStatus: run.finalStatus,\n run,\n projections: projectionCollector.getProjections(),\n };\n }\n}\n\nexport class FakeHubProjectionCollector {\n private readonly seenEventIds = new Set<string>();\n private readonly projections: AgentChannelConversationProjection[] = [];\n\n accept(\n event: AgentChannelEvent,\n routeContext: AgentChannelRouteContext,\n ): AgentChannelConversationProjection | null {\n const projection = projectAgentChannelEventToFakeHub(event, routeContext);\n if (projection.sourceEventId) {\n if (this.seenEventIds.has(projection.sourceEventId)) {\n return null;\n }\n this.seenEventIds.add(projection.sourceEventId);\n }\n this.projections.push(projection);\n return projection;\n }\n\n getProjections(): AgentChannelConversationProjection[] {\n return [...this.projections];\n }\n}\n\nexport function buildRouteContext(\n input: FakeHubAgentInvocationInput,\n binding?: Pick<FakeHubAgentBinding, 'bindingId'>,\n): AgentChannelRouteContext {\n return {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n triggeredBySubjectId: input.triggeredBySubjectId,\n parentConversationId: input.parentConversationId,\n bindingId: binding?.bindingId,\n };\n}\n\nexport function hubTextToAgentMessage(input: FakeHubAgentInvocationInput): AgentChannelMessage {\n return {\n blocks: [{ type: 'text', text: input.text }],\n externalConversationRef: input.externalConversationRef,\n senderRef: {\n subjectId: input.triggeredBySubjectId,\n sourceUserId: input.externalConversationRef?.userId,\n },\n externalMessageId: input.externalConversationRef?.messageId,\n metadata: {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n parentConversationId: input.parentConversationId,\n },\n };\n}\n\nexport function projectAgentChannelEventToFakeHub(\n event: AgentChannelEvent,\n routeContext: AgentChannelRouteContext,\n): AgentChannelConversationProjection {\n if (event.type === 'timeline_item') {\n if (event.item.type === 'assistant_message') {\n return {\n kind: 'conversation_message',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.item.text,\n metadata: { itemType: event.item.type },\n };\n }\n if (event.item.type === 'tool_call') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: toolLifecycleText(event.item.toolName, event.item.status, event.item.summary?.targetPath),\n metadata: { itemType: event.item.type, status: event.item.status, summary: event.item.summary },\n };\n }\n if (event.item.type === 'user_message' || event.item.type === 'reasoning') {\n return {\n kind: 'ignore',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n metadata: { itemType: event.item.type },\n };\n }\n }\n if (event.type === 'permission_requested') {\n return {\n kind: 'approval_state',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.request.title || event.request.message || 'Permission requested',\n metadata: { request: event.request, state: 'requested' },\n };\n }\n if (event.type === 'permission_resolved') {\n return {\n kind: 'approval_state',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: `Permission ${event.result}`,\n metadata: { requestId: event.requestId, result: event.result, state: 'resolved' },\n };\n }\n if (event.type === 'status_changed') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: `Agent status: ${event.status}`,\n metadata: { status: event.status },\n };\n }\n if (event.type === 'error') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.error,\n metadata: { error: event.error },\n };\n }\n return {\n kind: 'ignore',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n metadata: { eventType: event.type },\n };\n}\n\nfunction toolLifecycleText(toolName: string, status: string, targetPath?: string): string {\n return [toolName, status, targetPath].filter(Boolean).join(' ');\n}\n"],"names":["ToolbarChip","HelpCircle","LineChart","X","SectionHeader","Filter","MoreHorizontal","_a","StatusTag","title","PRODUCT_ITEMS","PlusCircle","SIDEBAR_SECTIONS","Code2","FILTERS","widget","AlertTriangle","CheckCircle2","CodingButton","CodingInput","CodingPanel"],"mappings":"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;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE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"}
1
+ {"version":3,"file":"index.js","sources":["../src/coding-kit/business/agent-config-card.tsx","../src/coding-kit/business/build-plan-list-workspace.tsx","../src/coding-kit/business/dashboard-board.tsx","../src/coding-kit/business/document-management-workspace.tsx","../src/coding-kit/business/issue-workspace.tsx","../src/coding-kit/business/project-capability-sidebar.tsx","../src/coding-kit/business/project-overview-workspace.tsx","../src/coding-kit/business/resource-management-workspace.tsx","../src/coding-kit/business/tenant-switcher.tsx","../src/coding-kit/business/template-picker-workspace.tsx","../src/coding-kit/business/workbench-entry-card.tsx","../src/coding-kit/preview/build-plan-starter-preview.tsx","../src/coding-kit/preview/build-plan-list-page-preview.tsx","../src/coding-kit/preview/document-management-page-preview.tsx","../src/coding-kit/preview/goal-management-page-preview.tsx","../src/coding-kit/preview/project-overview-page-preview.tsx","../src/coding-kit/preview/resource-management-page-preview.tsx","../src/coding-kit/preview/collaboration-console-preview.tsx","../src/coding-kit/preview/list-detail-template-preview.tsx","../src/plugins/workspace-agent/core/agent-channel-harness.ts","../src/plugins/workspace-agent/core/agent-channel-fake-hub.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Bot, Cable, Sparkles } from \"lucide-react\";\n\nimport { SurfacePanel } from \"../primitives\";\n\ninterface AgentConfigCardProps {\n title: string;\n model: string;\n connectors: string[];\n status: \"ready\" | \"reviewing\" | \"blocked\";\n}\n\nconst statusMap = {\n ready: {\n label: \"已就绪\",\n className: \"bg-[var(--ck-success-soft)] text-[var(--ck-success-text)]\",\n },\n reviewing: {\n label: \"待评审\",\n className: \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\",\n },\n blocked: {\n label: \"阻塞中\",\n className: \"bg-[var(--ck-danger-soft)] text-[var(--ck-danger-text)]\",\n },\n} as const;\n\nexport function AgentConfigCard({\n title,\n model,\n connectors,\n status,\n}: AgentConfigCardProps) {\n const badge = statusMap[status];\n\n return (\n <SurfacePanel className=\"p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\">\n <Bot className=\"h-5 w-5\" />\n </div>\n <div>\n <div className=\"text-[14px] font-semibold text-[var(--ck-text-primary)]\">\n {title}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 面向会话类型和流程节点的标准配置卡\n </div>\n </div>\n </div>\n <div className={`rounded-[var(--ck-radius-xs)] px-2 py-1 text-[11px] font-medium ${badge.className}`}>\n {badge.label}\n </div>\n </div>\n\n <div className=\"mt-4 grid gap-3 md:grid-cols-2\">\n <div className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] p-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Sparkles className=\"h-3.5 w-3.5\" />\n 模型\n </div>\n <div className=\"mt-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {model}\n </div>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] p-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Cable className=\"h-3.5 w-3.5\" />\n 连接器\n </div>\n <div className=\"mt-2 flex flex-wrap gap-2\">\n {connectors.map((item) => (\n <span\n key={item}\n className=\"rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-[var(--ck-bg-surface)] px-2 py-1 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n {item}\n </span>\n ))}\n </div>\n </div>\n </div>\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ExternalLink,\n HelpCircle,\n ListFilter,\n Search,\n SlidersHorizontal,\n Star,\n ToggleLeft,\n Wrench,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, ConsoleSelectTrigger, SurfacePanel } from \"../primitives\";\n\nexport interface BuildPlanHelpLink {\n label: string;\n}\n\nexport interface BuildPlanFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface BuildPlanSelectFilter {\n label: string;\n value: string;\n}\n\nexport interface BuildPlanListItem {\n id: string;\n name: string;\n status: string;\n triggerMeta: string;\n starred?: boolean;\n}\n\ninterface BuildPlanListWorkspaceProps {\n title?: string;\n quotaLabel?: string;\n helpLinks: BuildPlanHelpLink[];\n primaryActionLabel: string;\n leftFilters: BuildPlanFilterChip[];\n groupFilters: BuildPlanFilterChip[];\n selectFilters: BuildPlanSelectFilter[];\n searchPlaceholder?: string;\n modeLabel?: string;\n items: BuildPlanListItem[];\n className?: string;\n}\n\nfunction ToolbarChip({\n label,\n active,\n}: BuildPlanFilterChip) {\n return (\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {label}\n </button>\n );\n}\n\nexport function BuildPlanListWorkspace({\n title = \"构建计划\",\n quotaLabel = \"配额信息\",\n helpLinks,\n primaryActionLabel,\n leftFilters,\n groupFilters,\n selectFilters,\n searchPlaceholder = \"搜索...\",\n modeLabel = \"简洁模式\",\n items,\n className,\n}: BuildPlanListWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 flex-col bg-[var(--ck-surface-page)]\", className)}>\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-5\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n <div className=\"mt-3 flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex items-start gap-3 rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] px-4 py-3 text-left\"\n >\n <HelpCircle className=\"mt-0.5 h-4 w-4 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>\n <span className=\"block text-[13px] font-medium text-[var(--ck-text-primary)]\">\n 持续集成常见问题\n </span>\n <span className=\"mt-2 flex flex-wrap gap-x-4 gap-y-2 text-[12px] text-[var(--ck-text-secondary)]\">\n {helpLinks.map((item) => (\n <span key={item.label} className=\"inline-flex items-center gap-1\">\n {item.label}\n <ExternalLink className=\"h-3 w-3\" />\n </span>\n ))}\n </span>\n </span>\n </button>\n <div className=\"inline-flex h-11 items-center rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-4 text-[13px] text-[var(--ck-text-secondary)]\">\n <Wrench className=\"mr-2 h-4 w-4 text-[var(--ck-text-muted)]\" />\n {quotaLabel}\n </div>\n </div>\n </div>\n\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleButton size=\"md\" className=\"h-9 px-4 font-normal\">\n <HelpCircle className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 帮助文档\n </ConsoleButton>\n <ConsoleButton size=\"md\" className=\"h-9 px-4 font-normal\">\n <ExternalLink className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 构建机器出口 IP\n </ConsoleButton>\n <ConsoleButton variant=\"primary\" size=\"md\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n {leftFilters.map((item) => (\n <ToolbarChip key={item.label} {...item} />\n ))}\n <div className=\"mx-1 h-5 w-px bg-[var(--ck-border-subtle)]\" />\n {groupFilters.map((item) => (\n <ToolbarChip key={item.label} {...item} />\n ))}\n\n <ConsoleSelectTrigger>\n 更多\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </ConsoleSelectTrigger>\n\n <div className=\"ml-auto flex flex-wrap items-center gap-2.5\">\n {selectFilters.map((item) => (\n <ConsoleSelectTrigger\n key={item.label}\n label={item.label}\n value={item.value}\n />\n ))}\n <ConsoleInput icon={Search} placeholder={searchPlaceholder} containerClassName=\"w-[220px]\" className=\"text-[12px]\" />\n <ConsoleButton size=\"icon\" className=\"h-[var(--ck-chip-height)] w-[var(--ck-chip-height)]\">\n <ListFilter className=\"h-4 w-4\" />\n </ConsoleButton>\n <ConsoleSelectTrigger>\n {modeLabel}\n <ToggleLeft className=\"h-4 w-4\" />\n </ConsoleSelectTrigger>\n </div>\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-5\">\n <div className=\"space-y-3\">\n {items.map((item) => (\n <SurfacePanel\n key={item.id}\n className=\"flex items-center justify-between gap-4 rounded-[var(--ck-card-radius)] border-[var(--ck-border-default)] px-3 py-3 shadow-none transition-colors hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <Star\n className={cn(\"h-4 w-4\", item.starred && \"fill-[var(--ck-accent-star)] text-[var(--ck-accent-star)]\")}\n />\n </button>\n <button\n type=\"button\"\n className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)] hover:text-[var(--ck-brand-primary)]\"\n >\n {item.name}\n </button>\n </div>\n <div className=\"mt-2 flex flex-wrap items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <span className=\"inline-flex items-center gap-1 rounded-full bg-[var(--ck-status-success-bg)] px-2 py-[3px] font-medium text-[var(--ck-status-success-text)]\">\n {item.status}\n </span>\n <span>{item.triggerMeta}</span>\n </div>\n </div>\n\n <div className=\"flex shrink-0 items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n <SlidersHorizontal className=\"mr-1.5 h-3.5 w-3.5\" />\n 配置\n </button>\n </div>\n </SurfacePanel>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n Activity,\n ArrowDown,\n ArrowUp,\n CalendarRange,\n Flame,\n GripHorizontal,\n FolderKanban,\n GitCommitHorizontal,\n LineChart,\n ListTodo,\n Rocket,\n Users,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\nimport { SurfacePanel } from \"../primitives\";\n\nexport interface DashboardMetricStat {\n label: string;\n value: string;\n tone?: \"default\" | \"positive\" | \"negative\";\n}\n\nexport interface DashboardIssueItem {\n id: string;\n title: string;\n dueDate?: string;\n status: string;\n assignee: string;\n iteration?: string;\n}\n\nexport interface DashboardMemberRankItem {\n name: string;\n value: string;\n delta?: string;\n}\n\nexport interface DashboardProjectItem {\n name: string;\n progress: string;\n health?: string;\n}\n\nexport interface DashboardActivityItem {\n title: string;\n meta: string;\n}\n\nexport interface DashboardIterationItem {\n name: string;\n progress: string;\n project: string;\n}\n\nexport interface DashboardTrendPoint {\n label: string;\n value: string;\n}\n\nexport interface DashboardWidgetData {\n id: string;\n title: string;\n subtitle?: string;\n type: \"stats\" | \"ranking\" | \"issue-list\" | \"project-list\" | \"activity-list\" | \"iteration-list\" | \"trend\";\n stats?: DashboardMetricStat[];\n ranking?: DashboardMemberRankItem[];\n issues?: DashboardIssueItem[];\n projects?: DashboardProjectItem[];\n activities?: DashboardActivityItem[];\n iterations?: DashboardIterationItem[];\n trend?: DashboardTrendPoint[];\n accent?: \"brand\" | \"warning\" | \"danger\";\n cols?: \"wide\" | \"normal\";\n}\n\nexport interface DashboardWidgetCatalogItem {\n id: string;\n title: string;\n description: string;\n badge?: string;\n}\n\nexport type DashboardWorkspaceProductItem = CodingProductNavItem;\n\ninterface DashboardBoardProps {\n projectName: string;\n title: string;\n tabs: Array<{ label: string; active?: boolean }>;\n alertMessage: string;\n widgets: DashboardWidgetData[];\n widgetCatalog?: DashboardWidgetCatalogItem[];\n customMode?: boolean;\n onToggleCustomMode?: () => void;\n onAddWidget?: (widgetId: string) => void;\n onRemoveWidget?: (widgetId: string) => void;\n onResetWidgets?: () => void;\n className?: string;\n}\n\ninterface DashboardWorkspaceProps extends DashboardBoardProps {\n productItems: DashboardWorkspaceProductItem[];\n userName: string;\n systemNotice?: string;\n}\n\nfunction WidgetHeader({\n title,\n subtitle,\n editable = false,\n}: {\n title: string;\n subtitle?: string;\n editable?: boolean;\n}) {\n return (\n <div className=\"flex items-start justify-between gap-3 px-4 pb-2 pt-3\">\n <div className=\"min-w-0\">\n <div className=\"text-[14px] font-medium leading-[20px] text-[var(--ck-text-primary)]\">{title}</div>\n {subtitle ? <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">{subtitle}</div> : null}\n </div>\n {editable ? (\n <div className=\"inline-flex h-6 w-6 items-center justify-center rounded-[var(--ck-radius-sm)] text-[var(--ck-text-muted)]\">\n <GripHorizontal className=\"h-3.5 w-3.5\" />\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction WidgetEmptyState({\n title = \"暂无数据\",\n description,\n icon,\n}: {\n title?: string;\n description?: string;\n icon?: React.ReactNode;\n}) {\n return (\n <div className=\"flex min-h-[148px] flex-col items-center justify-center px-4 py-6 text-center\">\n {icon ? <div className=\"mb-1.5 text-[var(--ck-text-muted)]\">{icon}</div> : null}\n <div className=\"text-[12px] text-[var(--ck-text-secondary)]\">{title}</div>\n {description ? <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{description}</div> : null}\n </div>\n );\n}\n\nfunction DashboardPrimaryMetricWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const [primary, secondary] = widget.stats ?? [];\n const Icon = widget.id.includes(\"completed\")\n ? Activity\n : widget.id.includes(\"release\")\n ? Rocket\n : widget.id.includes(\"build\")\n ? LineChart\n : widget.id.includes(\"mr\")\n ? GitCommitHorizontal\n : ListTodo;\n const toneClass =\n primary?.tone === \"positive\"\n ? \"text-[var(--ck-success-text)]\"\n : primary?.tone === \"negative\"\n ? \"text-[var(--ck-danger-text)]\"\n : \"text-[var(--ck-text-secondary)]\";\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"flex min-h-[126px] items-center justify-between gap-4 px-4 pb-4 pt-1\">\n <div className=\"min-w-0\">\n <div className=\"text-[40px] font-normal leading-none text-[var(--ck-text-primary)]\">{primary?.value ?? \"0\"}</div>\n <div className={cn(\"mt-2.5 flex items-center gap-1 text-[12px]\", toneClass)}>\n {primary?.tone === \"positive\" ? <ArrowUp className=\"h-3.5 w-3.5\" /> : null}\n {primary?.tone === \"negative\" ? <ArrowDown className=\"h-3.5 w-3.5\" /> : null}\n <span>{secondary?.value ?? \"0\"}</span>\n <span className=\"text-[var(--ck-text-muted)]\">{secondary?.label ?? \"相比以往 2 周\"}</span>\n </div>\n </div>\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-goal-meta-value-bg)] text-[var(--ck-text-muted)]\">\n <Icon className=\"h-5 w-5\" />\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardCommitStatsWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const stats = widget.stats ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"grid min-h-[126px] grid-cols-[minmax(0,1fr)_96px] gap-4 px-4 pb-4 pt-1\">\n <div className=\"grid grid-cols-3 gap-3\">\n {stats.map((item) => (\n <div key={item.label} className=\"min-w-0\">\n <div className=\"text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n <div className=\"mt-3 text-[30px] font-normal leading-none text-[var(--ck-text-primary)]\">{item.value}</div>\n </div>\n ))}\n </div>\n <div className=\"flex items-end justify-end pb-1\">\n <div className=\"flex h-[62px] w-[64px] items-end gap-[6px]\">\n <div className=\"h-[28px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-fill-soft)]\" />\n <div className=\"h-[50px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-fill-medium)]\" />\n <div className=\"h-[22px] flex-1 rounded-t-[2px] bg-[var(--ck-brand-primary)]\" />\n </div>\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardRankingWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const ranking = widget.ranking ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-2\">\n {ranking.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-1\">\n {ranking.map((item, index) => (\n <div\n key={item.name}\n className=\"flex items-center justify-between rounded-[var(--ck-radius-sm)] px-3 py-2 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"inline-flex h-6 w-6 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[12px] text-[var(--ck-text-secondary)]\">\n {index + 1}\n </div>\n <div>\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.name}</div>\n {item.delta ? <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.delta}</div> : null}\n </div>\n </div>\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{item.value}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction StatusChip({ value }: { value: string }) {\n const tone =\n value.includes(\"进行\") || value.includes(\"开发\")\n ? \"bg-[var(--ck-status-brand-bg)] text-[var(--ck-status-brand-text)]\"\n : value.includes(\"待\") || value === \"未开始\"\n ? \"bg-[var(--ck-status-idle-bg)] text-[var(--ck-status-idle-text)]\"\n : \"bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]\";\n\n return <span className={`rounded-[var(--ck-chip-radius)] px-2 py-[1px] text-[11px] ${tone}`}>{value}</span>;\n}\n\nfunction DashboardIssueListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-1 pt-0.5\">\n {(widget.issues ?? []).map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex w-full items-start justify-between gap-4 border-b border-[var(--ck-border-subtle)] py-2.5 text-left last:border-b-0\"\n >\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] leading-[20px] text-[var(--ck-brand-primary)]\">{item.title}</div>\n <div className=\"mt-1.5 flex flex-wrap items-center gap-x-2 gap-y-1 text-[12px] text-[var(--ck-text-muted)]\">\n {item.iteration ? <span>{item.iteration}</span> : null}\n {item.dueDate ? (\n <span className=\"inline-flex items-center gap-1 text-[var(--ck-danger-text)]\">\n <CalendarRange className=\"h-3 w-3\" />\n {item.dueDate}\n </span>\n ) : null}\n <StatusChip value={item.status} />\n <span>{item.assignee}</span>\n </div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardProjectListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const projects = widget.projects ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-3 pt-0.5\">\n {projects.length === 0 ? (\n <WidgetEmptyState icon={<FolderKanban className=\"h-4 w-4\" />} />\n ) : (\n <div>\n {projects.map((item) => (\n <button\n key={item.name}\n type=\"button\"\n className=\"flex w-full items-center justify-between border-b border-[var(--ck-border-subtle)] py-2 text-left last:border-b-0\"\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n <FolderKanban className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n <span className=\"truncate text-[13px] text-[var(--ck-brand-primary)]\">{item.name}</span>\n </div>\n {item.progress ? <span className=\"shrink-0 text-[12px] text-[var(--ck-text-muted)]\">{item.progress}</span> : null}\n </button>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardActivityListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const activities = widget.activities ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n {activities.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-1\">\n {activities.map((item, index) => (\n <div\n key={`${item.title}-${index}`}\n className=\"flex gap-3 rounded-[var(--ck-radius-sm)] px-3 py-2 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-1 flex h-6 w-6 items-center justify-center rounded-full bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\">\n <GitCommitHorizontal className=\"h-3.5 w-3.5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.title}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardIterationListWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const iterations = widget.iterations ?? [];\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n {iterations.length === 0 ? (\n <WidgetEmptyState />\n ) : (\n <div className=\"space-y-2\">\n {iterations.map((item) => (\n <div key={item.name} className=\"rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] px-4 py-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div>\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.name}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.project}</div>\n </div>\n <div className=\"inline-flex items-center gap-1 rounded-full bg-[var(--ck-surface-overlay)] px-2 py-[3px] text-[11px] text-[var(--ck-brand-primary)]\">\n <Rocket className=\"h-3.5 w-3.5\" />\n {item.progress}\n </div>\n </div>\n <div className=\"mt-3 h-2 rounded-full bg-[var(--ck-progress-track-bg)]\">\n <div className=\"h-2 rounded-full bg-[var(--ck-brand-active)]\" style={{ width: item.progress }} />\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardTrendWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n const values = widget.trend ?? [];\n\n if (values.length === 0) {\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-1\">\n <WidgetEmptyState />\n </div>\n </SurfacePanel>\n );\n }\n\n const maxValue = Math.max(...values.map((item) => Number(item.value) || 0), 1);\n\n return (\n <SurfacePanel className=\"overflow-hidden rounded-[var(--ck-radius-sm)] border-[var(--ck-border-subtle)] shadow-none\">\n <WidgetHeader title={widget.title} subtitle={widget.subtitle} editable={editable} />\n <div className=\"px-4 pb-4 pt-2\">\n <div className=\"mb-3 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <LineChart className=\"h-3.5 w-3.5\" />\n 近 7 天趋势\n </div>\n <div className=\"flex min-h-[172px] items-end gap-3 rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-surface-muted)] px-4 py-4\">\n {values.map((item, index) => {\n const height = `${Math.max((Number(item.value) / maxValue) * 100, 12)}%`;\n\n return (\n <div key={`${item.label}-${index}`} className=\"flex flex-1 flex-col items-center gap-2\">\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">{item.value}</div>\n <div className=\"flex h-[112px] w-full items-end justify-center\">\n <div className=\"w-full rounded-[6px] bg-[var(--ck-brand-fill-strong)]\" style={{ height }} />\n </div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n );\n })}\n </div>\n </div>\n </SurfacePanel>\n );\n}\n\nfunction DashboardWidget({\n widget,\n editable,\n}: {\n widget: DashboardWidgetData;\n editable?: boolean;\n}) {\n if (widget.id === \"recent-commits\") {\n return <DashboardCommitStatsWidget widget={widget} editable={editable} />;\n }\n\n if (widget.stats?.length === 2) {\n return <DashboardPrimaryMetricWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"ranking\") {\n return <DashboardRankingWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"issue-list\") {\n return <DashboardIssueListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"project-list\") {\n return <DashboardProjectListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"activity-list\") {\n return <DashboardActivityListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"iteration-list\") {\n return <DashboardIterationListWidget widget={widget} editable={editable} />;\n }\n\n if (widget.type === \"trend\") {\n return <DashboardTrendWidget widget={widget} editable={editable} />;\n }\n\n return <DashboardCommitStatsWidget widget={widget} editable={editable} />;\n}\n\nfunction WidgetLibraryPanel({\n open,\n catalog,\n widgets,\n onAddWidget,\n}: {\n open: boolean;\n catalog: DashboardWidgetCatalogItem[];\n widgets: DashboardWidgetData[];\n onAddWidget?: (widgetId: string) => void;\n}) {\n if (!open) {\n return null;\n }\n\n return (\n <div className=\"mt-4 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)]\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-2.5\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">添加卡片</div>\n <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">请拖拽卡片到仪表盘</div>\n </div>\n <div className=\"grid gap-px bg-[var(--ck-border-subtle)] sm:grid-cols-2 xl:grid-cols-3\">\n {catalog.map((item) => {\n const added = widgets.some((widget) => widget.id === item.id);\n\n return (\n <button\n key={item.id}\n type=\"button\"\n disabled={added}\n onClick={() => onAddWidget?.(item.id)}\n className={cn(\n \"min-h-[100px] bg-[var(--ck-surface-overlay)] p-4 text-left transition-colors\",\n added ? \"cursor-default bg-[var(--ck-bg-surface-muted)]/45 text-[var(--ck-text-muted)]\" : \"hover:bg-[var(--ck-bg-surface-muted)]/75\",\n )}\n >\n <div className=\"min-w-0\">\n <div className={cn(\"text-[13px]\", added ? \"text-[var(--ck-text-secondary)]\" : \"text-[var(--ck-text-primary)]\")}>\n {item.title}\n </div>\n <div className=\"mt-2 text-[12px] leading-5 text-[var(--ck-text-secondary)]\">{item.description}</div>\n </div>\n <div className=\"mt-3 text-[11px] text-[var(--ck-text-muted)]\">请拖拽卡片到仪表盘</div>\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function DashboardBoard(props: DashboardBoardProps) {\n const {\n widgets,\n widgetCatalog = [],\n customMode = false,\n onToggleCustomMode,\n onAddWidget,\n onRemoveWidget,\n onResetWidgets,\n className,\n } = props;\n\n return (\n <div className={cn(\"coding-kit relative\", className)}>\n <div className=\"flex items-center justify-end gap-2 pb-3\">\n {customMode && onResetWidgets ? (\n <button\n type=\"button\"\n onClick={onResetWidgets}\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 恢复默认\n </button>\n ) : null}\n <button\n type=\"button\"\n onClick={onToggleCustomMode}\n className={cn(\n \"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border bg-[var(--ck-surface-overlay)] px-3 text-[12px]\",\n customMode\n ? \"border-[var(--ck-brand-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\",\n )}\n >\n {customMode ? \"完成\" : \"自定义\"}\n </button>\n </div>\n\n <div className=\"grid gap-4 xl:grid-cols-12\">\n {widgets.map((widget) => (\n <div\n key={widget.id}\n className={cn(widget.cols === \"wide\" ? \"xl:col-span-6\" : \"xl:col-span-3\", customMode && \"relative\")}\n >\n {customMode ? (\n <button\n type=\"button\"\n onClick={() => onRemoveWidget?.(widget.id)}\n className=\"absolute right-2 top-2 z-10 inline-flex h-5 w-5 items-center justify-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-muted)]\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n ) : null}\n <DashboardWidget widget={widget} editable={customMode} />\n </div>\n ))}\n </div>\n\n <WidgetLibraryPanel open={customMode} catalog={widgetCatalog} widgets={widgets} onAddWidget={onAddWidget} />\n </div>\n );\n}\n\nexport function DashboardWorkspace({\n productItems,\n userName,\n systemNotice,\n className,\n ...boardProps\n}: DashboardWorkspaceProps) {\n return (\n <ProjectWorkspaceShell\n productItems={productItems}\n userName={userName}\n className={className}\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"text-[20px] font-medium leading-[28px] text-[var(--ck-text-primary)]\">仪表盘</div>\n </div>\n }\n topBar={\n systemNotice ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-3 text-[12px] text-[var(--ck-text-secondary)]\">\n {systemNotice}\n </div>\n ) : null\n }\n contentClassName=\"min-h-0 flex-1 bg-[var(--ck-bg-page)] p-4\"\n >\n <DashboardBoard {...boardProps} />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ChevronRight,\n Clock3,\n FileText,\n FolderOpen,\n Search,\n Star,\n Upload,\n Users,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, SurfacePanel } from \"../primitives\";\n\nexport interface DocumentCategoryItem {\n label: string;\n count?: string;\n active?: boolean;\n children?: DocumentCategoryItem[];\n}\n\nexport interface DocumentFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface DocumentRecordItem {\n id: string;\n title: string;\n meta: string;\n summary: string;\n starred?: boolean;\n}\n\nexport interface DocumentDetailStat {\n label: string;\n value: string;\n}\n\ninterface DocumentManagementWorkspaceProps {\n title: string;\n description?: string;\n primaryActionLabel: string;\n categoryTree: DocumentCategoryItem[];\n filterChips: DocumentFilterChip[];\n records: DocumentRecordItem[];\n detailTitle: string;\n detailMeta: string;\n detailDescription: string;\n detailStats: DocumentDetailStat[];\n recentUpdates: DocumentRecordItem[];\n className?: string;\n}\n\nfunction CategoryNode({\n item,\n level = 0,\n}: {\n item: DocumentCategoryItem;\n level?: number;\n}) {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <div>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-card-radius-sm)] text-left text-[13px] transition-colors\",\n level === 0 ? \"px-3 py-2\" : \"ml-4 px-3 py-[7px]\",\n item.active\n ? \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n )}\n >\n <span className=\"truncate\">{item.label}</span>\n <span className=\"ml-3 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n {item.count ? <span>{item.count}</span> : null}\n {hasChildren ? <ChevronDown className=\"h-3.5 w-3.5\" /> : null}\n </span>\n </button>\n {hasChildren ? (\n <div className=\"mt-0.5 space-y-0.5\">\n {item.children?.map((child) => (\n <CategoryNode key={child.label} item={child} level={level + 1} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function DocumentManagementWorkspace({\n title,\n description,\n primaryActionLabel,\n categoryTree,\n filterChips,\n records,\n detailTitle,\n detailMeta,\n detailDescription,\n detailStats,\n recentUpdates,\n className,\n}: DocumentManagementWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 bg-[var(--ck-surface-page)]\", className)}>\n <aside className=\"hidden w-[248px] shrink-0 border-r border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] xl:flex xl:flex-col\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-4\">\n <ConsoleButton variant=\"primary\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-0.5\">\n {categoryTree.map((item) => (\n <CategoryNode key={item.label} item={item} />\n ))}\n </div>\n </div>\n </aside>\n\n <div className=\"flex min-w-0 flex-1\">\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleInput icon={Search} placeholder=\"搜索文档标题、标签或负责人\" containerClassName=\"h-9 w-[260px]\" />\n <ConsoleButton className=\"h-9 px-4 font-normal\">\n <Upload className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n 批量导入\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap gap-2.5\">\n {filterChips.map((chip) => (\n <button\n key={chip.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n chip.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {chip.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-4\">\n <div className=\"space-y-3\">\n {records.map((record) => (\n <SurfacePanel\n key={record.id}\n className=\"flex items-start justify-between gap-4 rounded-[var(--ck-radius-sm)] border-[var(--ck-border-default)] px-3 py-3 shadow-none transition-colors hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 items-center gap-3\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <Star\n className={cn(\"h-4 w-4\", record.starred && \"fill-[var(--ck-accent-star)] text-[var(--ck-accent-star)]\")}\n />\n </button>\n <button\n type=\"button\"\n className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)] hover:text-[var(--ck-brand-primary)]\"\n >\n {record.title}\n </button>\n </div>\n <div className=\"mt-2 text-[12px] text-[var(--ck-text-muted)]\">{record.meta}</div>\n <div className=\"mt-2 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {record.summary}\n </div>\n </div>\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-control-height-md)] items-center rounded-[var(--ck-control-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)] transition-colors hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 查看\n </button>\n </SurfacePanel>\n ))}\n </div>\n </div>\n </div>\n\n <aside className=\"hidden w-[320px] shrink-0 border-l border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] xl:block\">\n <div className=\"space-y-4 p-4\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资料摘要\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-md)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <FolderOpen className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)]\">\n {detailTitle}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{detailMeta}</div>\n </div>\n </div>\n\n <div className=\"mt-4 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {detailDescription}\n </div>\n\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {detailStats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[18px] font-semibold text-[var(--ck-text-primary)]\">{item.value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近更新\" actionLabel=\"查看全部\" />\n <div className=\"px-4 py-2\">\n {recentUpdates.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <FileText className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </div>\n <div className=\"mt-1 flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Clock3 className=\"h-3.5 w-3.5\" />\n <span>{item.meta}</span>\n </div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"协作成员\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Users className=\"h-4.5 w-4.5\" />\n </div>\n <div>\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">资料管理员 3 人</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 产品、运营、实施共同维护当前知识空间\n </div>\n </div>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </aside>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n Check,\n ChevronDown,\n ChevronLeft,\n Filter,\n ListFilter,\n Menu,\n MoreHorizontal,\n Search,\n Users,\n X,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleInput } from \"../primitives\";\nimport {\n CodingProductRail,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nexport type IssueWorkspaceMode = \"desktop\" | \"tablet\" | \"mobile\";\n\nexport type IssueWorkspaceProductItem = CodingProductNavItem;\n\nexport interface IssueWorkspaceSidebarView {\n id?: string;\n label: string;\n count?: string;\n active?: boolean;\n hint?: string;\n badge?: string;\n}\n\nexport interface IssueWorkspaceSidebarSection {\n label: string;\n views: IssueWorkspaceSidebarView[];\n actionLabel?: string;\n}\n\nexport interface IssueWorkspaceBatchAction {\n label: string;\n tone?: \"default\" | \"brand\" | \"danger\";\n}\n\nexport interface IssueWorkspaceRowBase {\n id: string;\n cells: React.ReactNode[];\n}\n\ninterface IssueWorkspaceProps<TRow extends IssueWorkspaceRowBase> {\n productItems: IssueWorkspaceProductItem[];\n sidebarViews: IssueWorkspaceSidebarView[];\n sidebarSections?: IssueWorkspaceSidebarSection[];\n tableHeaders: string[];\n rows: TRow[];\n enableSelection?: boolean;\n projectName: string;\n sectionName: string;\n userName: string;\n createButtonLabel: string;\n filterLabel: string;\n filterChips: string[];\n searchPlaceholder: string;\n sortLabel: string;\n secondaryFilterLabel?: string;\n savedViewLabel?: string;\n resultsSummary?: string;\n batchActions?: IssueWorkspaceBatchAction[];\n detailLabel?: string;\n detailButtonLabel?: string;\n detailTabs?: Array<{ key: string; label: string }>;\n defaultDetailTab?: string;\n defaultSelectedRowId?: string;\n tableColumnTemplate?: string;\n tableMinWidth?: number;\n headerLinks?: string[];\n viewportLocked?: boolean;\n className?: string;\n renderDetailContent: (\n row: TRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => React.ReactNode;\n}\n\nfunction useViewportMode(): IssueWorkspaceMode {\n const getMode = React.useCallback((): IssueWorkspaceMode => {\n if (typeof window === \"undefined\") {\n return \"desktop\";\n }\n\n if (window.innerWidth < 1024) {\n return \"mobile\";\n }\n\n if (window.innerWidth < 1680) {\n return \"tablet\";\n }\n\n return \"desktop\";\n }, []);\n\n const [mode, setMode] = React.useState<IssueWorkspaceMode>(getMode);\n\n React.useEffect(() => {\n const onResize = () => setMode(getMode());\n\n window.addEventListener(\"resize\", onResize);\n return () => window.removeEventListener(\"resize\", onResize);\n }, [getMode]);\n\n return mode;\n}\n\nfunction TopHeader({\n mode,\n projectName,\n sectionName,\n userName,\n headerLinks,\n onToggleViews,\n}: {\n mode: IssueWorkspaceMode;\n projectName: string;\n sectionName: string;\n userName: string;\n headerLinks: string[];\n onToggleViews: () => void;\n}) {\n return (\n <header className=\"flex h-[var(--ck-header-height)] items-center justify-between border-b border-[var(--ck-border-strong)] bg-white px-3 sm:px-5\">\n <div className=\"flex min-w-0 items-center gap-3 sm:gap-4\">\n {mode !== \"desktop\" ? (\n <button\n type=\"button\"\n onClick={onToggleViews}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)] lg:hidden\"\n >\n <Menu className=\"h-4 w-4\" />\n </button>\n ) : null}\n <div className=\"flex min-w-0 items-center gap-2 text-[14px] font-medium text-[var(--ck-text-primary)]\">\n <span className=\"truncate\">{projectName}</span>\n <ChevronDown className=\"h-4 w-4 shrink-0 text-[var(--ck-text-muted)]\" />\n </div>\n <div className=\"hidden text-[13px] text-[var(--ck-text-secondary)] sm:block\">{sectionName}</div>\n </div>\n <div className=\"flex items-center gap-2 sm:gap-3\">\n {headerLinks.map((item, index) => (\n <button\n key={item}\n type=\"button\"\n className={cn(\n \"hidden h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-3 text-[13px] text-[var(--ck-text-secondary)]\",\n index === 0 && \"md:inline-flex\",\n index === 1 && \"xl:inline-flex\",\n index >= 2 && \"2xl:inline-flex\",\n )}\n >\n {item}\n </button>\n ))}\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center rounded-[999px] border border-[var(--ck-border-default)] px-2.5 text-[13px] text-[var(--ck-text-secondary)] sm:px-3\"\n >\n <Users className=\"mr-1.5 h-4 w-4 sm:mr-2\" />\n <span className=\"hidden sm:inline\">{userName}</span>\n </button>\n </div>\n </header>\n );\n}\n\nfunction ViewSidebar({\n mode,\n open,\n sections,\n createButtonLabel,\n onClose,\n}: {\n mode: IssueWorkspaceMode;\n open: boolean;\n sections: IssueWorkspaceSidebarSection[];\n createButtonLabel: string;\n onClose: () => void;\n}) {\n const isDesktop = mode === \"desktop\";\n\n return (\n <>\n {!isDesktop && open ? (\n <button\n type=\"button\"\n aria-label=\"关闭视图导航\"\n onClick={onClose}\n className=\"absolute inset-0 z-20 bg-[rgba(15,23,42,0.24)]\"\n />\n ) : null}\n <aside\n className={cn(\n \"flex flex-col border-r border-[var(--ck-border-subtle)] bg-white\",\n isDesktop\n ? \"relative h-full w-[var(--ck-view-sidebar-width)]\"\n : `absolute left-0 top-0 z-30 h-full ${\n mode === \"mobile\" ? \"w-[88vw] max-w-[320px]\" : \"w-[280px]\"\n } transform transition-transform duration-200 ${open ? \"translate-x-0\" : \"-translate-x-full\"}`,\n )}\n >\n <div className=\"flex items-center justify-between px-3 py-4\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-button-dark)] px-3 text-[13px] font-medium text-white\"\n >\n {createButtonLabel}\n </button>\n {!isDesktop ? (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n ) : null}\n </div>\n <div className=\"border-b border-[var(--ck-border-subtle)] px-3 pb-3 text-[12px] text-[var(--ck-text-muted)]\">\n 视图\n </div>\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-4\">\n {sections.map((section) => (\n <section key={section.label}>\n <div className=\"mb-1.5 flex items-center justify-between px-[10px]\">\n <div className=\"text-[11px] font-medium text-[var(--ck-text-muted)]\">\n {section.label}\n </div>\n {section.actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[11px] text-[var(--ck-brand-primary)]\"\n >\n {section.actionLabel}\n </button>\n ) : null}\n </div>\n <div className=\"space-y-1\">\n {section.views.map((item) => (\n <button\n key={item.id ?? item.label}\n type=\"button\"\n className={cn(\n \"w-full rounded-[var(--ck-radius-xs)] px-[10px] py-[7px] text-left\",\n item.active\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)]\",\n )}\n >\n <div className=\"flex items-center justify-between gap-3 text-[13px]\">\n <span className={cn(item.active && \"font-medium\")}>{item.label}</span>\n <div className=\"flex items-center gap-2\">\n {item.badge ? (\n <span className=\"rounded-full bg-white px-2 py-[1px] text-[11px] text-[var(--ck-brand-primary)]\">\n {item.badge}\n </span>\n ) : null}\n {item.count ? (\n <span className=\"text-[12px] text-[var(--ck-text-muted)]\">{item.count}</span>\n ) : null}\n </div>\n </div>\n {item.hint ? (\n <div className=\"mt-1 truncate text-[11px] text-[var(--ck-text-muted)]\">\n {item.hint}\n </div>\n ) : null}\n </button>\n ))}\n </div>\n </section>\n ))}\n </div>\n </div>\n </aside>\n </>\n );\n}\n\nfunction CompactViewTabs({\n sections,\n}: {\n sections: IssueWorkspaceSidebarSection[];\n}) {\n const views = sections.flatMap((section) => section.views);\n\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-3 py-2 lg:hidden\">\n <div className=\"flex gap-2 overflow-x-auto pb-1\">\n {views.map((item) => (\n <button\n key={item.id ?? item.label}\n type=\"button\"\n className={cn(\n \"shrink-0 rounded-[999px] border px-3 py-1.5 text-[12px]\",\n item.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)]\",\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n </div>\n );\n}\n\nfunction ToolbarChip({ children }: { children: React.ReactNode }) {\n return (\n <span className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\">\n {children}\n </span>\n );\n}\n\nfunction SelectionToggle({\n checked,\n indeterminate,\n onToggle,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n onToggle: () => void;\n}) {\n return (\n <button\n type=\"button\"\n aria-pressed={checked || indeterminate}\n onClick={(event) => {\n event.stopPropagation();\n onToggle();\n }}\n className={cn(\n \"inline-flex h-4 w-4 items-center justify-center rounded-[var(--ck-radius-xs)] border transition-colors\",\n checked || indeterminate\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white\"\n : \"border-[var(--ck-border-strong)] bg-white text-transparent hover:border-[var(--ck-brand-active)]\",\n )}\n >\n {checked ? <Check className=\"h-3 w-3\" /> : null}\n {!checked && indeterminate ? <div className=\"h-[2px] w-2 rounded-full bg-white\" /> : null}\n </button>\n );\n}\n\nfunction IssuesToolbar({\n filterLabel,\n filterChips,\n searchPlaceholder,\n sortLabel,\n secondaryFilterLabel,\n savedViewLabel,\n resultsSummary,\n detailButtonLabel,\n onOpenDetail,\n}: {\n filterLabel: string;\n filterChips: string[];\n searchPlaceholder: string;\n sortLabel: string;\n secondaryFilterLabel?: string;\n savedViewLabel?: string;\n resultsSummary?: string;\n detailButtonLabel: string;\n onOpenDetail: () => void;\n}) {\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-3 py-3 sm:px-4\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)]\"\n >\n <Filter className=\"mr-1 h-3.5 w-3.5 text-[var(--ck-text-secondary)]\" />\n {filterLabel}\n </button>\n {secondaryFilterLabel ? (\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n <ListFilter className=\"mr-1 h-3.5 w-3.5\" />\n {secondaryFilterLabel}\n </button>\n ) : null}\n {savedViewLabel ? (\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n {savedViewLabel}\n </button>\n ) : null}\n <div className=\"hidden items-center gap-2 xl:flex\">\n {filterChips.map((item) => (\n <ToolbarChip key={item}>{item}</ToolbarChip>\n ))}\n </div>\n <div className=\"ml-auto flex w-full flex-wrap items-center gap-2 sm:w-auto sm:flex-nowrap\">\n <ConsoleInput\n icon={Search}\n placeholder={searchPlaceholder}\n containerClassName=\"h-8 min-w-0 flex-1 sm:w-[220px] sm:flex-none\"\n className=\"text-[14px]\"\n />\n <button\n type=\"button\"\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)]\"\n >\n <ListFilter className=\"mr-1 h-3.5 w-3.5 text-[var(--ck-text-secondary)]\" />\n {sortLabel}\n </button>\n <button\n type=\"button\"\n onClick={onOpenDetail}\n className=\"inline-flex h-7 items-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-2 text-[12px] text-[var(--ck-text-primary)] 2xl:hidden\"\n >\n {detailButtonLabel}\n </button>\n </div>\n </div>\n <div className=\"mt-2 flex gap-2 overflow-x-auto xl:hidden\">\n {filterChips.map((item) => (\n <ToolbarChip key={item}>{item}</ToolbarChip>\n ))}\n </div>\n {resultsSummary ? <div className=\"mt-3 text-[12px] text-[var(--ck-text-muted)]\">{resultsSummary}</div> : null}\n </div>\n );\n}\n\nfunction SelectionToolbar({\n selectedCount,\n actions,\n onClear,\n}: {\n selectedCount: number;\n actions: IssueWorkspaceBatchAction[];\n onClear: () => void;\n}) {\n if (selectedCount === 0) {\n return null;\n }\n\n return (\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-bg-brand-soft)] px-4 py-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n 已选择 {selectedCount} 项\n </div>\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] border px-2.5 text-[12px]\",\n action.tone === \"brand\" &&\n \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white\",\n action.tone === \"danger\" &&\n \"border-[var(--ck-danger-text)] bg-white text-[var(--ck-danger-text)]\",\n (!action.tone || action.tone === \"default\") &&\n \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)]\",\n )}\n >\n {action.label}\n </button>\n ))}\n <button\n type=\"button\"\n onClick={onClear}\n className=\"ml-auto inline-flex h-7 items-center rounded-[var(--ck-radius-xs)] px-2 text-[12px] text-[var(--ck-text-muted)]\"\n >\n 取消选择\n </button>\n </div>\n </div>\n );\n}\n\nfunction IssuesTable<TRow extends IssueWorkspaceRowBase>({\n headers,\n rows,\n selectedId,\n selectedIds,\n enableSelection,\n columnTemplate,\n tableMinWidth,\n onSelect,\n onToggleRowChecked,\n onToggleAllRows,\n}: {\n headers: string[];\n rows: TRow[];\n selectedId?: string;\n selectedIds: Set<string>;\n enableSelection: boolean;\n columnTemplate: string;\n tableMinWidth: number;\n onSelect: (row: TRow) => void;\n onToggleRowChecked: (rowId: string) => void;\n onToggleAllRows: () => void;\n}) {\n const allSelected = rows.length > 0 && rows.every((row) => selectedIds.has(row.id));\n const partiallySelected = rows.some((row) => selectedIds.has(row.id)) && !allSelected;\n\n return (\n <div className=\"flex min-w-0 flex-1 flex-col bg-white\">\n <div className=\"overflow-auto\">\n <div style={{ minWidth: tableMinWidth }}>\n <div\n className=\"sticky top-0 z-10 border-b border-[var(--ck-border-subtle)] bg-white px-4\"\n style={{\n display: \"grid\",\n gridTemplateColumns: enableSelection ? `44px ${columnTemplate}` : columnTemplate,\n }}\n >\n {enableSelection ? (\n <div className=\"flex h-10 items-center\">\n <SelectionToggle\n checked={allSelected}\n indeterminate={partiallySelected}\n onToggle={onToggleAllRows}\n />\n </div>\n ) : null}\n {headers.map((header) => (\n <div\n key={header}\n className=\"flex h-10 items-center text-[12px] font-medium text-[rgba(32,45,64,0.5)]\"\n >\n {header}\n </div>\n ))}\n </div>\n {rows.map((row) => (\n <button\n key={row.id}\n type=\"button\"\n onClick={() => onSelect(row)}\n data-selected={row.id === selectedId ? \"true\" : \"false\"}\n className={cn(\n \"group w-full border-b border-[var(--ck-border-subtle)] px-4 text-left text-[13px] transition-colors\",\n row.id === selectedId\n ? \"bg-[var(--ck-bg-surface-muted)] shadow-[inset_2px_0_0_var(--ck-brand-active)]\"\n : \"bg-white hover:bg-[var(--ck-bg-surface-muted)]\",\n row.cells.some(\n (cell) =>\n React.isValidElement(cell) &&\n typeof cell.props.className === \"string\" &&\n cell.props.className.includes(\"text-[var(--ck-brand-primary)]\"),\n ) && \"relative after:absolute after:inset-y-[10px] after:right-2 after:w-1 after:rounded-full after:bg-[var(--ck-goal-list-row-active-marker)]\",\n )}\n style={{\n display: \"grid\",\n gridTemplateColumns: enableSelection ? `44px ${columnTemplate}` : columnTemplate,\n }}\n >\n {enableSelection ? (\n <div className=\"flex h-[52px] items-center\">\n <SelectionToggle\n checked={selectedIds.has(row.id)}\n onToggle={() => onToggleRowChecked(row.id)}\n />\n </div>\n ) : null}\n {row.cells.map((cell, index) => (\n <div\n key={`${row.id}-${index}`}\n className={cn(\n \"flex min-h-[52px] items-center py-[6px] text-[var(--ck-text-secondary)] transition-colors\",\n index === 1 && \"pr-6 text-[var(--ck-text-primary)]\",\n row.id !== selectedId && index === 1 && \"group-hover:text-[var(--ck-brand-primary)]\",\n )}\n >\n {cell}\n </div>\n ))}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction IssueDetailPanel<TRow extends IssueWorkspaceRowBase>({\n mode,\n open,\n detailLabel,\n detailTabs,\n activeTab,\n onChangeTab,\n row,\n onClose,\n renderContent,\n}: {\n mode: IssueWorkspaceMode;\n open: boolean;\n detailLabel: string;\n detailTabs: Array<{ key: string; label: string }>;\n activeTab: string;\n onChangeTab: (tabKey: string) => void;\n row: TRow | undefined;\n onClose: () => void;\n renderContent: (\n row: TRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => React.ReactNode;\n}) {\n if (mode === \"desktop\") {\n return (\n <aside className=\"flex h-full w-[var(--ck-detail-panel-width)] flex-col border-l border-[var(--ck-border-subtle)] bg-white\">\n <div className=\"flex items-center justify-between border-b border-[var(--ck-border-subtle)] px-5 py-4\">\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{detailLabel}</div>\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </button>\n </div>\n {detailTabs.length > 0 ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] px-5\">\n <div className=\"flex gap-5 overflow-x-auto\">\n {detailTabs.map((tab) => (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => onChangeTab(tab.key)}\n className={cn(\n \"border-b-2 px-1 py-3 text-[13px]\",\n activeTab === tab.key\n ? \"border-[var(--ck-brand-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-transparent text-[var(--ck-text-secondary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n {renderContent(row, { compact: false, activeTab })}\n </aside>\n );\n }\n\n return (\n <>\n {open ? (\n <button\n type=\"button\"\n aria-label={`关闭${detailLabel}`}\n onClick={onClose}\n className=\"absolute inset-0 z-30 bg-[rgba(15,23,42,0.28)]\"\n />\n ) : null}\n <aside\n className={cn(\n \"absolute right-0 top-0 z-40 flex h-full flex-col border-l border-[var(--ck-border-subtle)] bg-white shadow-[var(--ck-shadow-md)] transition-transform duration-200\",\n mode === \"mobile\" ? \"w-full\" : \"w-[min(720px,88vw)]\",\n open ? \"translate-x-0\" : \"translate-x-full\",\n )}\n >\n <div className=\"flex items-center justify-between border-b border-[var(--ck-border-subtle)] px-4 py-4 sm:px-5\">\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-brand-primary)]\">{detailLabel}</div>\n <div className=\"mt-1 truncate text-[12px] text-[var(--ck-text-muted)]\">\n {mode === \"mobile\" ? \"移动端全宽滑层\" : \"平板/笔记本覆盖式侧栏\"}\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <button type=\"button\" className=\"text-[var(--ck-text-muted)]\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n {detailTabs.length > 0 ? (\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 sm:px-5\">\n <div className=\"flex gap-5 overflow-x-auto\">\n {detailTabs.map((tab) => (\n <button\n key={tab.key}\n type=\"button\"\n onClick={() => onChangeTab(tab.key)}\n className={cn(\n \"border-b-2 px-1 py-3 text-[13px]\",\n activeTab === tab.key\n ? \"border-[var(--ck-brand-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-transparent text-[var(--ck-text-secondary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n ) : null}\n {renderContent(row, { compact: true, activeTab })}\n </aside>\n </>\n );\n}\n\nfunction normalizeSidebarSections(\n sidebarViews: IssueWorkspaceSidebarView[],\n sidebarSections?: IssueWorkspaceSidebarSection[],\n): IssueWorkspaceSidebarSection[] {\n if (sidebarSections && sidebarSections.length > 0) {\n return sidebarSections;\n }\n\n return [\n {\n label: \"视图\",\n views: sidebarViews,\n },\n ];\n}\n\nexport function IssueWorkspace<TRow extends IssueWorkspaceRowBase>({\n productItems,\n sidebarViews,\n sidebarSections,\n tableHeaders,\n rows,\n enableSelection = false,\n projectName,\n sectionName,\n userName,\n createButtonLabel,\n filterLabel,\n filterChips,\n searchPlaceholder,\n sortLabel,\n secondaryFilterLabel,\n savedViewLabel,\n resultsSummary,\n batchActions = [\n { label: \"批量更新状态\", tone: \"brand\" },\n { label: \"批量分配\" },\n { label: \"移动到迭代\" },\n { label: \"更多\" },\n ],\n detailLabel = \"事项详情\",\n detailButtonLabel = \"查看详情\",\n detailTabs = [\n { key: \"detail\", label: \"详情\" },\n { key: \"activity\", label: \"动态\" },\n { key: \"links\", label: \"关联\" },\n ],\n defaultDetailTab = \"detail\",\n defaultSelectedRowId,\n tableColumnTemplate = \"86px minmax(360px,2fr) 90px 90px 96px 96px 110px 140px 110px 110px 110px\",\n tableMinWidth = 1396,\n headerLinks = [\"仪表盘\", \"项目集\", \"目标\"],\n viewportLocked = true,\n className,\n renderDetailContent,\n}: IssueWorkspaceProps<TRow>) {\n const mode = useViewportMode();\n const sections = React.useMemo(\n () => normalizeSidebarSections(sidebarViews, sidebarSections),\n [sidebarSections, sidebarViews],\n );\n const [sidebarOpen, setSidebarOpen] = React.useState(false);\n const [detailOpen, setDetailOpen] = React.useState(mode !== \"mobile\");\n const [selectedId, setSelectedId] = React.useState(\n defaultSelectedRowId ?? rows[0]?.id ?? \"\",\n );\n const [selectedIds, setSelectedIds] = React.useState<Set<string>>(new Set());\n const [activeDetailTab, setActiveDetailTab] = React.useState(\n detailTabs[0]?.key ?? defaultDetailTab,\n );\n\n React.useEffect(() => {\n if (!rows.some((row) => row.id === selectedId)) {\n setSelectedId(defaultSelectedRowId ?? rows[0]?.id ?? \"\");\n }\n }, [defaultSelectedRowId, rows, selectedId]);\n\n React.useEffect(() => {\n setSelectedIds((current) => {\n const next = new Set(Array.from(current).filter((id) => rows.some((row) => row.id === id)));\n return next.size === current.size ? current : next;\n });\n }, [rows]);\n\n React.useEffect(() => {\n setActiveDetailTab(detailTabs[0]?.key ?? defaultDetailTab);\n }, [defaultDetailTab, detailTabs, selectedId]);\n\n React.useEffect(() => {\n if (mode === \"desktop\") {\n setSidebarOpen(false);\n setDetailOpen(true);\n return;\n }\n\n setSidebarOpen(false);\n setDetailOpen(false);\n }, [mode]);\n\n const selectedRow = React.useMemo(\n () => rows.find((row) => row.id === selectedId),\n [rows, selectedId],\n );\n\n const handleSelect = React.useCallback(\n (row: TRow) => {\n setSelectedId(row.id);\n if (mode !== \"desktop\") {\n setDetailOpen(true);\n }\n },\n [mode],\n );\n\n const toggleRowChecked = React.useCallback((rowId: string) => {\n setSelectedIds((current) => {\n const next = new Set(current);\n if (next.has(rowId)) {\n next.delete(rowId);\n } else {\n next.add(rowId);\n }\n return next;\n });\n }, []);\n\n const toggleAllRows = React.useCallback(() => {\n setSelectedIds((current) => {\n const allSelected = rows.length > 0 && rows.every((row) => current.has(row.id));\n if (allSelected) {\n return new Set();\n }\n return new Set(rows.map((row) => row.id));\n });\n }, [rows]);\n\n return (\n <div\n className={cn(\n viewportLocked\n ? \"coding-kit h-[calc(100vh-80px)] min-h-[760px] overflow-hidden rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-white\"\n : \"coding-kit min-h-[760px] overflow-visible rounded-[var(--ck-card-radius)] border border-[var(--ck-border-subtle)] bg-white\",\n className,\n )}\n >\n <div className={cn(\"flex bg-white\", viewportLocked ? \"h-full\" : \"min-h-[760px]\")}>\n <CodingProductRail items={productItems} userName={userName} className=\"h-full w-[var(--ck-global-nav-width)]\" />\n <div className=\"relative flex min-w-0 flex-1 flex-col\">\n <TopHeader\n mode={mode}\n projectName={projectName}\n sectionName={sectionName}\n userName={userName}\n headerLinks={headerLinks}\n onToggleViews={() => setSidebarOpen(true)}\n />\n <div className={cn(\"relative flex flex-1 bg-[var(--ck-bg-page)]\", viewportLocked ? \"min-h-0\" : \"min-h-[680px]\")}>\n <ViewSidebar\n mode={mode}\n open={mode === \"desktop\" || sidebarOpen}\n sections={sections}\n createButtonLabel={createButtonLabel}\n onClose={() => setSidebarOpen(false)}\n />\n <main className={cn(\"flex min-w-0 flex-1 flex-col\", viewportLocked ? \"min-h-0\" : \"min-h-[680px]\")}>\n <CompactViewTabs sections={sections} />\n <IssuesToolbar\n filterLabel={filterLabel}\n filterChips={filterChips}\n searchPlaceholder={searchPlaceholder}\n sortLabel={sortLabel}\n secondaryFilterLabel={secondaryFilterLabel}\n savedViewLabel={savedViewLabel}\n resultsSummary={resultsSummary}\n detailButtonLabel={detailButtonLabel}\n onOpenDetail={() => setDetailOpen(true)}\n />\n {enableSelection ? (\n <SelectionToolbar\n selectedCount={selectedIds.size}\n actions={batchActions}\n onClear={() => setSelectedIds(new Set())}\n />\n ) : null}\n <div className={cn(\"relative flex flex-1\", viewportLocked ? \"min-h-0\" : \"min-h-[620px]\")}>\n <div className=\"min-w-0 flex-1 bg-white\">\n <IssuesTable\n headers={tableHeaders}\n rows={rows}\n selectedId={selectedId}\n selectedIds={selectedIds}\n enableSelection={enableSelection}\n columnTemplate={tableColumnTemplate}\n tableMinWidth={tableMinWidth}\n onSelect={handleSelect}\n onToggleRowChecked={toggleRowChecked}\n onToggleAllRows={toggleAllRows}\n />\n </div>\n <IssueDetailPanel\n mode={mode}\n open={detailOpen}\n detailLabel={detailLabel}\n detailTabs={detailTabs}\n activeTab={activeDetailTab}\n onChangeTab={setActiveDetailTab}\n row={selectedRow}\n onClose={() => setDetailOpen(false)}\n renderContent={renderDetailContent}\n />\n </div>\n </main>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface ProjectCapabilitySidebarItem {\n label: string;\n active?: boolean;\n children?: ProjectCapabilitySidebarItem[];\n}\n\nexport interface ProjectCapabilitySidebarSection {\n label?: string;\n items: ProjectCapabilitySidebarItem[];\n}\n\ninterface ProjectCapabilitySidebarProps {\n tenantLabel?: string;\n projectName: string;\n sections: ProjectCapabilitySidebarSection[];\n footerActionLabel?: string;\n className?: string;\n}\n\nfunction SidebarItem({\n item,\n level = 0,\n}: {\n item: ProjectCapabilitySidebarItem;\n level?: number;\n}) {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <div>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-radius-xs)] text-left text-[13px] transition-colors\",\n level === 0 && \"px-3 py-2\",\n level === 0 &&\n !item.active &&\n \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n level === 0 && item.active && \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\",\n level > 0 && \"ml-5 px-3 py-[7px]\",\n level > 0 &&\n !item.active &&\n \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\",\n level > 0 &&\n item.active &&\n \"bg-[var(--ck-sidebar-item-active-bg)] font-medium text-[var(--ck-brand-active)]\",\n )}\n >\n <span>{item.label}</span>\n {hasChildren ? <ChevronDown className=\"h-3.5 w-3.5 text-[var(--ck-text-muted)]\" /> : null}\n </button>\n {hasChildren ? (\n <div className=\"mt-0.5 space-y-0.5\">\n {item.children?.map((child) => (\n <SidebarItem key={child.label} item={child} level={level + 1} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport function ProjectCapabilitySidebar({\n tenantLabel = \"项目\",\n projectName,\n sections,\n footerActionLabel,\n className,\n}: ProjectCapabilitySidebarProps) {\n return (\n <aside\n className={cn(\n \"flex w-[224px] shrink-0 flex-col border-r border-[var(--ck-border-subtle)] bg-white\",\n className,\n )}\n >\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 py-4\">\n <div className=\"text-[12px] text-[var(--ck-text-muted)]\">{tenantLabel}</div>\n <div className=\"mt-1 text-[14px] font-medium text-[var(--ck-text-primary)]\">{projectName}</div>\n </div>\n\n <div className=\"flex-1 overflow-auto px-3 py-3\">\n <div className=\"space-y-3\">\n {sections.map((section, index) => (\n <section key={section.label ?? `section-${index}`}>\n {section.label ? (\n <div className=\"mb-1.5 px-3 text-[11px] font-medium text-[var(--ck-text-muted)]\">{section.label}</div>\n ) : null}\n <div className=\"space-y-0.5\">\n {section.items.map((item) => (\n <SidebarItem key={item.label} item={item} />\n ))}\n </div>\n </section>\n ))}\n </div>\n </div>\n\n {footerActionLabel ? (\n <div className=\"border-t border-[var(--ck-border-subtle)] px-3 py-3\">\n <button\n type=\"button\"\n className=\"w-full rounded-[var(--ck-radius-xs)] px-3 py-2 text-left text-[13px] text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)] hover:text-[var(--ck-text-primary)]\"\n >\n {footerActionLabel}\n </button>\n </div>\n ) : null}\n </aside>\n );\n}\n","import * as React from \"react\";\nimport {\n ChevronDown,\n ChevronRight,\n FileText,\n FolderKanban,\n GitBranch,\n Megaphone,\n Rocket,\n ScrollText,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { SurfacePanel } from \"../primitives\";\n\nexport interface ProjectOverviewQuickAction {\n label: string;\n description: string;\n tone?: \"primary\" | \"secondary\";\n}\n\nexport interface ProjectOverviewStatTab {\n label: string;\n active?: boolean;\n}\n\nexport interface ProjectOverviewStatMetric {\n value: string;\n label: string;\n status?: string;\n}\n\nexport interface ProjectOverviewRepositorySummary {\n name: string;\n updatedMeta: string;\n branchCount: string;\n tagCount: string;\n}\n\nexport interface ProjectOverviewBuildSummary {\n name: string;\n status: string;\n meta: string;\n}\n\nexport interface ProjectOverviewDocumentItem {\n title: string;\n meta: string;\n}\n\nexport interface ProjectOverviewActivityItem {\n time: string;\n summary: string;\n target?: string;\n detail?: string;\n}\n\nexport interface ProjectOverviewAnnouncement {\n author: string;\n publishedAt: string;\n content: string[];\n}\n\ninterface ProjectOverviewWorkspaceProps {\n activeTab: string;\n statTabs: ProjectOverviewStatTab[];\n quickActions: ProjectOverviewQuickAction[];\n statMetrics: ProjectOverviewStatMetric[];\n repository: ProjectOverviewRepositorySummary;\n buildSummary: ProjectOverviewBuildSummary;\n recentFiles: ProjectOverviewDocumentItem[];\n wikiDocs: ProjectOverviewDocumentItem[];\n activities: ProjectOverviewActivityItem[];\n announcement: ProjectOverviewAnnouncement;\n projectSlug: string;\n projectDescription: string;\n memberCount: string;\n onSelectTab?: (label: string) => void;\n className?: string;\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction InfoList({\n items,\n icon,\n}: {\n items: ProjectOverviewDocumentItem[];\n icon: React.ReactNode;\n}) {\n return (\n <div className=\"px-4 py-2\">\n {items.map((item) => (\n <button\n key={item.title}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <span className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n {icon}\n </span>\n <span className=\"min-w-0\">\n <span className=\"block truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </span>\n <span className=\"mt-1 block text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</span>\n </span>\n </button>\n ))}\n </div>\n );\n}\n\nexport function ProjectOverviewWorkspace({\n activeTab,\n statTabs,\n quickActions,\n statMetrics,\n repository,\n buildSummary,\n recentFiles,\n wikiDocs,\n activities,\n announcement,\n projectSlug,\n projectDescription,\n memberCount,\n onSelectTab,\n className,\n}: ProjectOverviewWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 gap-4 overflow-auto bg-[var(--ck-surface-page)] p-4\", className)}>\n <div className=\"min-w-0 flex-1 space-y-4\">\n <SurfacePanel className=\"overflow-hidden\">\n <div className=\"border-b border-[var(--ck-border-subtle)] px-4 pt-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {statTabs.map((tab) => (\n <button\n key={tab.label}\n type=\"button\"\n onClick={() => onSelectTab?.(tab.label)}\n className={cn(\n \"rounded-t-[var(--ck-card-radius-sm)] px-3 py-2 text-[13px] transition-colors\",\n tab.active\n ? \"bg-[var(--ck-bg-surface-muted)] font-medium text-[var(--ck-text-primary)]\"\n : \"text-[var(--ck-text-secondary)] hover:text-[var(--ck-text-primary)]\",\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"grid gap-3 px-3 py-3 lg:grid-cols-[216px_minmax(0,1fr)]\">\n <div className=\"space-y-3\">\n {quickActions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n className={cn(\n \"flex w-full items-center justify-between rounded-[var(--ck-radius-md)] border px-3 py-2.5 text-left transition-colors\",\n action.tone === \"primary\"\n ? \"border-[var(--ck-status-brand-bg)] bg-[var(--ck-bg-brand-soft)] hover:border-[var(--ck-brand-border-soft)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] hover:bg-[var(--ck-bg-surface-muted)]\",\n )}\n >\n <span>\n <span className=\"block text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {action.label}\n </span>\n <span className=\"mt-1 block text-[12px] text-[var(--ck-text-muted)]\">\n {action.description}\n </span>\n </span>\n <ChevronRight className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n </button>\n ))}\n </div>\n\n <div className=\"space-y-4\">\n <div className=\"grid gap-3 md:grid-cols-4\">\n {statMetrics.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[24px] font-semibold leading-none text-[var(--ck-text-primary)]\">\n {item.value}\n </div>\n <div className=\"mt-1.5 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n {item.status ? (\n <div className=\"mt-1.5 text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n {item.status}\n </div>\n ) : null}\n </div>\n ))}\n </div>\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"代码仓库\" />\n <div className=\"px-3 py-3\">\n <button\n type=\"button\"\n className=\"flex w-full items-center justify-between rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 text-left transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {repository.name}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n {repository.updatedMeta}\n </div>\n </div>\n <div className=\"flex items-center gap-4 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>{repository.branchCount}</span>\n <span>{repository.tagCount}</span>\n </div>\n </button>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"构建计划\" />\n <div className=\"px-3 py-3\">\n <button\n type=\"button\"\n className=\"flex w-full items-center justify-between gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 text-left transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"min-w-0\">\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {buildSummary.name}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{buildSummary.meta}</div>\n </div>\n <div className=\"rounded-full bg-[var(--ck-status-success-bg)] px-2.5 py-[3px] text-[11px] font-medium text-[var(--ck-status-success-text)]\">\n {buildSummary.status}\n </div>\n </button>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近文件\" actionLabel=\"查看全部\" />\n <InfoList items={recentFiles} icon={<FileText className=\"h-4 w-4\" />} />\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"Wiki 文档\" />\n <InfoList items={wikiDocs} icon={<ScrollText className=\"h-4 w-4\" />} />\n </SurfacePanel>\n </div>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"项目动态\" />\n <div className=\"px-4 py-3\">\n <div className=\"mb-3 flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center gap-1 rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 所有成员\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-[var(--ck-chip-height)] items-center gap-1 rounded-[var(--ck-chip-radius)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 text-[12px] text-[var(--ck-text-secondary)]\"\n >\n 所有类型\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n\n <div className=\"space-y-4\">\n {activities.map((item) => (\n <div key={`${item.time}-${item.summary}`} className=\"flex gap-3\">\n <div className=\"w-14 shrink-0 pt-0.5 text-[12px] text-[var(--ck-text-muted)]\">\n {item.time}\n </div>\n <div className=\"flex min-w-0 flex-1 gap-3 rounded-[var(--ck-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Rocket className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"text-[13px] text-[var(--ck-text-primary)]\">{item.summary}</div>\n {item.target ? (\n <div className=\"mt-2 text-[12px] font-medium text-[var(--ck-brand-primary)]\">\n {item.target}\n </div>\n ) : null}\n {item.detail ? (\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.detail}</div>\n ) : null}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"hidden w-[320px] shrink-0 xl:block\">\n <SurfacePanel className=\"overflow-hidden\">\n <SectionHeader title=\"项目公告\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-9 w-9 items-center justify-center rounded-full bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Megaphone className=\"h-4.5 w-4.5\" />\n </div>\n <div>\n <div className=\"text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {announcement.author}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">\n 发表于 {announcement.publishedAt}\n </div>\n </div>\n </div>\n\n <div className=\"mt-4 space-y-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {announcement.content.map((paragraph) => (\n <p key={paragraph}>{paragraph}</p>\n ))}\n </div>\n\n <button\n type=\"button\"\n className=\"mt-4 text-[12px] font-medium text-[var(--ck-brand-primary)] hover:underline\"\n >\n 查看全部公告\n </button>\n\n <div className=\"mt-4 rounded-[var(--ck-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-3\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <FolderKanban className=\"h-4 w-4 text-[var(--ck-text-secondary)]\" />\n 示例项目\n </div>\n <div className=\"mt-2 text-[12px] text-[var(--ck-text-muted)]\">{projectSlug}</div>\n <div className=\"mt-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {projectDescription}\n </div>\n <div className=\"mt-4 flex items-center justify-between text-[12px] text-[var(--ck-text-secondary)]\">\n <span>{memberCount}</span>\n <button type=\"button\" className=\"inline-flex items-center gap-1 text-[var(--ck-brand-primary)]\">\n 查看成员\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport {\n CalendarClock,\n ChevronDown,\n Clock3,\n HardDrive,\n Search,\n ShieldCheck,\n SlidersHorizontal,\n UserCog,\n} from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleButton, ConsoleInput, ConsoleSelectTrigger, SurfacePanel } from \"../primitives\";\n\nexport interface ResourceFilterChip {\n label: string;\n active?: boolean;\n}\n\nexport interface ResourceListItem {\n id: string;\n name: string;\n type: string;\n owner: string;\n status: string;\n location: string;\n updatedAt: string;\n}\n\nexport interface ResourceStatItem {\n label: string;\n value: string;\n}\n\nexport interface ResourceActivityItem {\n title: string;\n meta: string;\n}\n\ninterface ResourceManagementWorkspaceProps {\n title: string;\n description?: string;\n primaryActionLabel: string;\n filterChips: ResourceFilterChip[];\n stats: ResourceStatItem[];\n items: ResourceListItem[];\n detailTitle: string;\n detailMeta: string;\n detailDescription: string;\n detailStats: ResourceStatItem[];\n recentActivities: ResourceActivityItem[];\n className?: string;\n}\n\nfunction StatusTag({ value }: { value: string }) {\n const tone =\n value.includes(\"使用中\") || value.includes(\"正常\")\n ? \"bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]\"\n : value.includes(\"待分配\") || value.includes(\"待启用\")\n ? \"bg-[var(--ck-status-idle-bg)] text-[var(--ck-status-idle-text)]\"\n : \"bg-[var(--ck-status-warning-bg)] text-[var(--ck-status-warning-text)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction SectionHeader({\n title,\n actionLabel,\n}: {\n title: string;\n actionLabel?: string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] px-4 py-3\">\n <div className=\"text-[14px] font-medium text-[var(--ck-text-primary)]\">{title}</div>\n {actionLabel ? (\n <button\n type=\"button\"\n className=\"text-[12px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {actionLabel}\n </button>\n ) : null}\n </div>\n );\n}\n\nexport function ResourceManagementWorkspace({\n title,\n description,\n primaryActionLabel,\n filterChips,\n stats,\n items,\n detailTitle,\n detailMeta,\n detailDescription,\n detailStats,\n recentActivities,\n className,\n}: ResourceManagementWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 gap-4 overflow-auto bg-[var(--ck-surface-page)] p-4\", className)}>\n <div className=\"min-w-0 flex-1 space-y-4\">\n <SurfacePanel className=\"overflow-hidden\">\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n ) : null}\n </div>\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 pt-1\">\n <ConsoleInput icon={Search} placeholder=\"搜索资源名称、负责人、位置\" containerClassName=\"h-9 w-[240px]\" />\n <ConsoleButton variant=\"primary\" className=\"h-9 px-4\">\n {primaryActionLabel}\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-overlay)] px-6 py-4\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n {filterChips.map((chip) => (\n <button\n key={chip.label}\n type=\"button\"\n className={cn(\n \"inline-flex h-[var(--ck-chip-height)] items-center rounded-[var(--ck-chip-radius)] border px-3 text-[12px] transition-colors\",\n chip.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {chip.label}\n </button>\n ))}\n <div className=\"ml-auto flex items-center gap-2\">\n <ConsoleSelectTrigger>\n 按更新时间排序\n <ChevronDown className=\"h-3.5 w-3.5\" />\n </ConsoleSelectTrigger>\n <ConsoleButton size=\"icon\" className=\"h-[var(--ck-chip-height)] w-[var(--ck-chip-height)]\">\n <SlidersHorizontal className=\"h-4 w-4\" />\n </ConsoleButton>\n </div>\n </div>\n </div>\n\n <div className=\"px-6 py-4\">\n <div className=\"grid gap-3 md:grid-cols-4\">\n {stats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[24px] font-semibold leading-none text-[var(--ck-text-primary)]\">\n {item.value}\n </div>\n <div className=\"mt-1.5 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资源台账\" actionLabel=\"导出清单\" />\n <div className=\"overflow-x-auto\">\n <table className=\"min-w-full border-collapse text-left\">\n <thead>\n <tr className=\"bg-[var(--ck-bg-surface-muted)]\">\n {[\"资源名称\", \"类型\", \"负责人\", \"状态\", \"位置\", \"最近更新时间\"].map((title) => (\n <th\n key={title}\n className=\"border-b border-[var(--ck-border-subtle)] px-4 py-3 text-[12px] font-medium text-[var(--ck-text-muted)]\"\n >\n {title}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {items.map((item) => (\n <tr\n key={item.id}\n className=\"border-b border-[var(--ck-border-subtle)] last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <td className=\"px-4 py-3 text-[13px] font-medium text-[var(--ck-text-primary)]\">{item.name}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.type}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.owner}</td>\n <td className=\"px-4 py-3\"><StatusTag value={item.status} /></td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.location}</td>\n <td className=\"px-4 py-3 text-[13px] text-[var(--ck-text-secondary)]\">{item.updatedAt}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </SurfacePanel>\n </div>\n\n <div className=\"hidden w-[320px] shrink-0 xl:block\">\n <div className=\"space-y-4\">\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"资源摘要\" />\n <div className=\"px-3 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex h-10 w-10 items-center justify-center rounded-[var(--ck-radius-md)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <HardDrive className=\"h-5 w-5\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[14px] font-medium text-[var(--ck-text-primary)]\">\n {detailTitle}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{detailMeta}</div>\n </div>\n </div>\n <div className=\"mt-4 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {detailDescription}\n </div>\n <div className=\"mt-4 grid gap-3 sm:grid-cols-2\">\n {detailStats.map((item) => (\n <div\n key={item.label}\n className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\"\n >\n <div className=\"text-[18px] font-semibold text-[var(--ck-text-primary)]\">{item.value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.label}</div>\n </div>\n ))}\n </div>\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"最近使用记录\" actionLabel=\"查看全部\" />\n <div className=\"px-4 py-2\">\n {recentActivities.map((item) => (\n <button\n key={item.title}\n type=\"button\"\n className=\"flex w-full items-start gap-3 border-b border-[var(--ck-border-subtle)] py-3 text-left last:border-b-0 hover:bg-[var(--ck-bg-surface-muted)]\"\n >\n <div className=\"mt-0.5 flex h-7 w-7 shrink-0 items-center justify-center rounded-[var(--ck-card-radius-sm)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-secondary)]\">\n <Clock3 className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {item.title}\n </div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-muted)]\">{item.meta}</div>\n </div>\n </button>\n ))}\n </div>\n </SurfacePanel>\n\n <SurfacePanel className=\"overflow-hidden shadow-none\">\n <SectionHeader title=\"管理要求\" />\n <div className=\"space-y-2 px-3 py-3 text-[13px] text-[var(--ck-text-secondary)]\">\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <ShieldCheck className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>高敏感资源需要绑定责任人和共享范围,变更后需记录流转轨迹。</span>\n </div>\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <UserCog className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>离职或角色变更后,应及时回收账号、设备或业务资源的使用权限。</span>\n </div>\n <div className=\"flex items-start gap-3 rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2.5 transition-colors hover:bg-[var(--ck-bg-hover)]\">\n <CalendarClock className=\"mt-0.5 h-4.5 w-4.5 shrink-0 text-[var(--ck-brand-primary)]\" />\n <span>建议按月回顾资源占用、闲置情况和续费提醒,避免出现沉默成本。</span>\n </div>\n </div>\n </SurfacePanel>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronsUpDown, Building2 } from \"lucide-react\";\n\nimport { SurfacePanel } from \"../primitives\";\n\ninterface TenantSwitcherProps {\n tenant: string;\n environment: string;\n}\n\nexport function TenantSwitcher({\n tenant,\n environment,\n}: TenantSwitcherProps) {\n return (\n <SurfacePanel className=\"flex items-center gap-3 px-3 py-2\">\n <div className=\"flex h-8 w-8 items-center justify-center rounded-[var(--ck-radius-sm)] bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\">\n <Building2 className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">\n {tenant}\n </div>\n <div className=\"truncate text-[12px] text-[var(--ck-text-muted)]\">\n {environment}\n </div>\n </div>\n <ChevronsUpDown className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport { Search } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nimport { ConsoleInput } from \"../primitives\";\n\nexport interface TemplatePickerCategory {\n label: string;\n active?: boolean;\n}\n\nexport interface TemplatePickerCard {\n id: string;\n title: string;\n description: string;\n selected?: boolean;\n}\n\ninterface TemplatePickerWorkspaceProps {\n contextLabel?: string;\n title?: string;\n description?: string;\n primaryActionLabel: string;\n helpLabel?: string;\n footerHint?: string;\n primaryActionVariant?: \"outline\" | \"solid\";\n categories: TemplatePickerCategory[];\n cards: TemplatePickerCard[];\n searchPlaceholder?: string;\n onSelectCategory?: (label: string) => void;\n onSelectCard?: (cardId: string) => void;\n className?: string;\n}\n\nexport function TemplatePickerWorkspace({\n contextLabel,\n title,\n description,\n primaryActionLabel,\n helpLabel,\n footerHint,\n primaryActionVariant = \"outline\",\n categories,\n cards,\n searchPlaceholder = \"请输入模板关键字进行搜索\",\n onSelectCategory,\n onSelectCard,\n className,\n}: TemplatePickerWorkspaceProps) {\n return (\n <div className={cn(\"flex min-w-0 flex-1 flex-col bg-[#fafbfc]\", className)}>\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-6 py-5\">\n {contextLabel ? (\n <div className=\"text-[12px] leading-5 text-[var(--ck-text-secondary)]\">{contextLabel}</div>\n ) : null}\n\n <div className=\"mt-1 flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n {title ? (\n <h2 className=\"text-[24px] font-medium leading-9 tracking-[-0.01em] text-[var(--ck-text-primary)]\">\n {title}\n </h2>\n ) : null}\n {description ? (\n <p className=\"mt-1 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">{description}</p>\n ) : null}\n </div>\n\n <div className=\"flex shrink-0 items-center gap-4 pt-1\">\n <button\n type=\"button\"\n className={cn(\n \"inline-flex h-9 items-center rounded-[var(--ck-radius-xs)] border px-4 text-[13px] font-medium transition-colors\",\n primaryActionVariant === \"solid\"\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-brand-active)] text-white hover:bg-[#1868f2]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-primary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {primaryActionLabel}\n </button>\n {helpLabel ? (\n <button\n type=\"button\"\n className=\"text-[13px] text-[var(--ck-brand-primary)] hover:underline\"\n >\n {helpLabel}\n </button>\n ) : null}\n </div>\n </div>\n </div>\n\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-6 py-4\">\n <div className=\"flex flex-wrap gap-2.5\">\n {categories.map((item) => (\n <button\n key={item.label}\n type=\"button\"\n onClick={() => onSelectCategory?.(item.label)}\n className={cn(\n \"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border px-3 text-[13px] transition-colors\",\n item.active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] bg-white text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\",\n )}\n >\n {item.label}\n </button>\n ))}\n </div>\n <ConsoleInput\n icon={Search}\n placeholder={searchPlaceholder}\n containerClassName=\"mt-4 h-10 max-w-[460px]\"\n />\n </div>\n\n <div className=\"flex-1 overflow-auto px-6 py-5\">\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-3\">\n {cards.map((card) => (\n <button\n key={card.id}\n type=\"button\"\n onClick={() => onSelectCard?.(card.id)}\n className={cn(\n \"min-h-[134px] rounded-[var(--ck-radius-sm)] border bg-white px-4 py-3.5 text-left transition-colors\",\n card.selected\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] shadow-[0_0_0_2px_rgba(37,126,250,0.06)]\"\n : \"border-[var(--ck-border-subtle)] hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-surface-muted)]\",\n )}\n >\n <div className=\"text-[14px] font-medium leading-6 text-[var(--ck-text-primary)]\">{card.title}</div>\n <div className=\"mt-1.5 text-[12px] leading-6 text-[var(--ck-text-secondary)]\">{card.description}</div>\n </button>\n ))}\n </div>\n {footerHint ? (\n <div className=\"mt-5 rounded-[var(--ck-radius-sm)] border border-dashed border-[var(--ck-border-default)] bg-white px-4 py-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {footerHint}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ArrowRight } from \"lucide-react\";\n\nimport { ConsoleButton, SurfacePanel } from \"../primitives\";\n\ninterface WorkbenchEntryCardProps {\n title: string;\n description: string;\n meta: string;\n tone?: \"brand\" | \"warning\" | \"success\";\n}\n\nconst toneMap = {\n brand: \"bg-[var(--ck-bg-brand-soft)] text-[var(--ck-brand-primary)]\",\n warning: \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\",\n success: \"bg-[var(--ck-success-soft)] text-[var(--ck-success-text)]\",\n} as const;\n\nexport function WorkbenchEntryCard({\n title,\n description,\n meta,\n tone = \"brand\",\n}: WorkbenchEntryCardProps) {\n return (\n <SurfacePanel className=\"p-4 transition-transform hover:-translate-y-px hover:shadow-[var(--ck-shadow-md)]\">\n <div className={`inline-flex rounded-[var(--ck-radius-xs)] px-2 py-1 text-[11px] font-medium ${toneMap[tone]}`}>\n {meta}\n </div>\n <div className=\"mt-3 text-[15px] font-semibold text-[var(--ck-text-primary)]\">\n {title}\n </div>\n <p className=\"mt-2 min-h-[40px] text-[13px] leading-5 text-[var(--ck-text-secondary)]\">\n {description}\n </p>\n <ConsoleButton className=\"mt-4\" variant=\"ghost\">\n 进入工作台\n <ArrowRight className=\"h-4 w-4\" />\n </ConsoleButton>\n </SurfacePanel>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n TemplatePickerWorkspace,\n type ProjectCapabilitySidebarSection,\n type TemplatePickerCard,\n type TemplatePickerCategory,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [\n { label: \"构建计划\", active: true },\n { label: \"构建节点\" },\n ],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst CATEGORY_SEED = [\"全部\", \"团队模板\", \"编程语言\", \"镜像仓库\", \"制品库\", \"部署\", \"基础\"];\n\nconst CARD_SEED: TemplatePickerCard[] = [\n {\n id: \"java-spring-docker\",\n title: \"Java + Spring + Docker\",\n description: \"该模板演示基于 Java + Spring 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"python-flask-docker\",\n title: \"Python + Flask + Docker\",\n description: \"该模板演示基于 Python + Flask 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"node-express-docker\",\n title: \"Nodejs + Express + Docker\",\n description: \"该模板演示基于 Nodejs + Express 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"golang-gin-docker\",\n title: \"GoLang + Gin + Docker\",\n description: \"该模板演示基于 GoLang + Gin 实现全自动检出代码 -> 单元测试 -> 构建 Docker 镜像 -> 推送到 Docker 制品库 -> 部署到 Kubernetes。\",\n },\n {\n id: \"dotnet-core-docker\",\n title: \".Net Core + Docker\",\n description: \"该模板演示基于 .Net Core 实现检出代码、测试、构建 Docker 镜像并推送到制品库,再进一步部署到 Kubernetes。\",\n },\n {\n id: \"php-laravel-docker\",\n title: \"PHP + Laravel + Docker\",\n description: \"该模板演示基于 PHP + Laravel 实现代码检出、依赖安装、单元测试、镜像构建与部署的一体化过程。\",\n },\n {\n id: \"react-cos\",\n title: \"React + COS\",\n description: \"该模板演示基于 React 实现全自动检出代码 -> 单元测试 -> 编译构建 -> 上传到腾讯云 COS 的持续集成构建过程。\",\n },\n {\n id: \"vue-cos\",\n title: \"Vue + COS\",\n description: \"该模板演示基于 Vue 实现检出代码、安装依赖、前端编译并上传到 COS 的标准静态站点交付过程。\",\n },\n {\n id: \"java-spring-maven\",\n title: \"Java + Spring + Maven\",\n description: \"该模板聚焦于 Maven 构建制品的典型流程,适合以单元测试、打包和归档为核心的 Java 项目。\",\n },\n {\n id: \"android-apk\",\n title: \"Java-Android 编译并签名 Apk\",\n description: \"该模板内置 Android 编译、签名与产物归档步骤,适合移动端 APK 持续构建场景。\",\n },\n {\n id: \"docker-push\",\n title: \"CODING Docker 镜像推送\",\n description: \"该模板聚焦镜像构建与推送,适合已有部署流程但希望统一镜像制品产出的项目。\",\n },\n {\n id: \"generic-upload\",\n title: \"CODING Generic 制品上传\",\n description: \"该模板面向通用构建产物上传场景,可将压缩包、二进制文件等归档至 Generic 制品库。\",\n },\n {\n id: \"docker-k8s\",\n title: \"CODING Docker 镜像推送并部署到 Kubernetes\",\n description: \"该模板串联镜像构建、推送和 Kubernetes 发布,适合面向容器交付的一体化流水线。\",\n },\n {\n id: \"simple-template\",\n title: \"简易模板\",\n description: \"通过检出代码、构建、测试和部署来设置常规步骤。在模板中填充上真实构建和部署过程即可完成整个持续集成流程。\",\n },\n {\n id: \"parallel-template\",\n title: \"并行过程模板\",\n description: \"通过检出代码、构建、测试和存档来设置并行构建步骤。其中测试和存档两个步骤分别设定了两个并行执行的任务。\",\n },\n {\n id: \"multi-branch-template\",\n title: \"多分支操作模板\",\n description: \"该模板内置分支切换、检出和目标分支操作步骤,适合需要在多个分支间串联作业的场景。\",\n },\n {\n id: \"manual-approval-template\",\n title: \"人工确认模板\",\n description: \"在关键阶段插入人工确认节点,适合发布审批、生产部署前置复核等高风险流程。\",\n },\n {\n id: \"mr-reviewer-template\",\n title: \"CODING 合并请求添加评审者\",\n description: \"该模板面向代码协作流程,在流水线中自动为合并请求补充评审人,提升评审流转效率。\",\n },\n {\n id: \"ssh-password\",\n title: \"通过账号密码发起的 SSH 连接\",\n description: \"该模板用于通过账号密码连接目标服务器执行命令,适合传统主机场景下的自动化任务。\",\n },\n {\n id: \"ssh-private-key\",\n title: \"通过私钥发起的 SSH 连接\",\n description: \"该模板通过私钥建立安全 SSH 连接,适用于需要远程执行部署或运维脚本的流水线。\",\n },\n {\n id: \"sftp-deploy\",\n title: \"SFTP 部署\",\n description: \"该模板封装 SFTP 上传步骤,适合需要将构建结果同步到远程目录的交付场景。\",\n },\n {\n id: \"scp-deploy\",\n title: \"SCP 部署\",\n description: \"该模板基于 SCP 分发构建产物,适用于轻量级远程发布和主机文件替换流程。\",\n },\n {\n id: \"custom-pipeline\",\n title: \"自定义构建过程\",\n description: \"允许您根据 Jenkinsfile 的规范来随意定制持续集成流水线过程。\",\n },\n];\n\nexport function BuildPlanStarterPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeCategory, setActiveCategory] = React.useState(\"全部\");\n const [selectedCardId, setSelectedCardId] = React.useState(\"java-spring-docker\");\n\n const categories = React.useMemo<TemplatePickerCategory[]>(\n () => CATEGORY_SEED.map((label) => ({ label, active: label === activeCategory })),\n [activeCategory],\n );\n\n const cards = React.useMemo<TemplatePickerCard[]>(\n () => CARD_SEED.map((card) => ({ ...card, selected: card.id === selectedCardId })),\n [selectedCardId],\n );\n\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <>\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[#fafbfc] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[#2c2c2c] bg-[#2c2c2c] px-3 text-[13px] text-white\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3 border-b border-[var(--ck-border-subtle)] bg-white px-5 py-3 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>持续集成</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>构建计划</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span className=\"text-[var(--ck-text-primary)]\">选择构建计划模板</span>\n </div>\n </>\n }\n contentClassName=\"min-h-0 flex-1 flex-col\"\n >\n <TemplatePickerWorkspace\n contextLabel=\"项目 / 示例项目\"\n title=\"选择构建计划模板\"\n description=\"推荐先从团队模板或语言模板开始,快速搭出适合当前仓库的标准构建过程。\"\n primaryActionLabel=\"自定义构建过程\"\n helpLabel=\"查看帮助文档\"\n footerHint=\"找不到合适模板,可直接进入自定义构建过程,按团队规范自由编排流水线阶段、任务与触发条件。\"\n categories={categories}\n cards={cards}\n primaryActionVariant=\"outline\"\n onSelectCategory={setActiveCategory}\n onSelectCard={setSelectedCardId}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n BuildPlanListWorkspace,\n ProjectCapabilitySidebar,\n type BuildPlanFilterChip,\n type BuildPlanHelpLink,\n type BuildPlanListItem,\n type BuildPlanSelectFilter,\n type ProjectCapabilitySidebarSection,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [\n { label: \"构建计划\", active: true },\n { label: \"构建节点\" },\n ],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst HELP_LINKS: BuildPlanHelpLink[] = [\n { label: \"构建环境不是我想要的?\" },\n { label: \"几个小例子带你掌握 Jenkinsfile\" },\n { label: \"自定义构建环境 docker: command not found\" },\n];\n\nconst LEFT_FILTERS: BuildPlanFilterChip[] = [\n { label: \"我的星标\" },\n { label: \"系统来源\" },\n];\n\nconst GROUP_FILTERS: BuildPlanFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"未分组\" },\n];\n\nconst SELECT_FILTERS: BuildPlanSelectFilter[] = [\n { label: \"排序\", value: \"按照创建时间排序\" },\n { label: \"触发者\", value: \"所有人触发的\" },\n { label: \"计划来源\", value: \"自定义\" },\n];\n\nconst BUILD_PLAN_ITEMS: BuildPlanListItem[] = [\n {\n id: \"sample-task\",\n name: \"示例任务\",\n status: \"构建成功\",\n triggerMeta: \"黄磊 推送到分支 master 时触发\",\n starred: true,\n },\n];\n\nexport function BuildPlanListPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <BuildPlanListWorkspace\n helpLinks={HELP_LINKS}\n primaryActionLabel=\"创建构建计划\"\n leftFilters={LEFT_FILTERS}\n groupFilters={GROUP_FILTERS}\n selectFilters={SELECT_FILTERS}\n items={BUILD_PLAN_ITEMS}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n DocumentManagementWorkspace,\n ProjectCapabilitySidebar,\n type DocumentCategoryItem,\n type DocumentFilterChip,\n type DocumentRecordItem,\n type ProjectCapabilitySidebarSection,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\", active: true },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst CATEGORY_TREE: DocumentCategoryItem[] = [\n { label: \"全部资料\", count: \"48\", active: true },\n {\n label: \"产品资料\",\n count: \"12\",\n children: [\n { label: \"需求说明\", count: \"6\" },\n { label: \"原型与流程\", count: \"4\" },\n ],\n },\n {\n label: \"运营资料\",\n count: \"18\",\n children: [\n { label: \"操作手册\", count: \"9\" },\n { label: \"培训资料\", count: \"5\" },\n ],\n },\n {\n label: \"交付资料\",\n count: \"18\",\n children: [\n { label: \"实施方案\", count: \"8\" },\n { label: \"客户文档\", count: \"10\" },\n ],\n },\n];\n\nconst FILTERS: DocumentFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"我收藏的\" },\n { label: \"最近更新\" },\n { label: \"共享范围:全部成员\" },\n { label: \"类型:文档 / PDF / 表格\" },\n];\n\nconst RECORDS: DocumentRecordItem[] = [\n {\n id: \"doc-001\",\n title: \"渠道伙伴入驻操作手册\",\n meta: \"产品运营中心 · 黄磊更新于 2 小时前\",\n summary: \"覆盖伙伴账号开通、角色分配、资料上传、开票流程和常见问题处理,可供运营与实施团队共同使用。\",\n starred: true,\n },\n {\n id: \"doc-002\",\n title: \"审批流配置规范与业务约束说明\",\n meta: \"流程产品组 · 李静更新于 昨天 18:24\",\n summary: \"整理不同审批场景下的节点拆分原则、字段说明和角色权限边界,帮助实施项目快速复用标准审批方案。\",\n },\n {\n id: \"doc-003\",\n title: \"客户实施交付检查清单\",\n meta: \"实施交付组 · 孙明更新于 2026-04-18\",\n summary: \"用于项目交付前的最终检查,包括配置项、资料交接、权限核验、培训安排和回归确认。\",\n },\n];\n\nconst RECENT_UPDATES: DocumentRecordItem[] = [\n {\n id: \"recent-001\",\n title: \"渠道伙伴入驻操作手册\",\n meta: \"黄磊更新于 2 小时前\",\n summary: \"\",\n },\n {\n id: \"recent-002\",\n title: \"客户实施交付检查清单\",\n meta: \"孙明更新于 昨天 16:20\",\n summary: \"\",\n },\n {\n id: \"recent-003\",\n title: \"审批流配置规范与业务约束说明\",\n meta: \"李静更新于 2026-04-18\",\n summary: \"\",\n },\n];\n\nexport function DocumentManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n 文档空间已接入团队共享权限,当前页面展示跨角色可见的业务资料内容\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 资料助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <DocumentManagementWorkspace\n title=\"文档管理\"\n description=\"集中管理项目资料、培训手册、交付文档和业务规范,方便跨角色协作查阅与维护。\"\n primaryActionLabel=\"新建资料\"\n categoryTree={CATEGORY_TREE}\n filterChips={FILTERS}\n records={RECORDS}\n detailTitle=\"产品运营资料空间\"\n detailMeta=\"共 48 份资料 · 最近 7 天更新 6 次\"\n detailDescription=\"当前空间沉淀的是跨产品、运营、实施共同维护的业务资料,强调高频查阅、多人协同和版本延续性。\"\n detailStats={[\n { label: \"共享成员\", value: \"16\" },\n { label: \"收藏资料\", value: \"9\" },\n { label: \"近 7 天更新\", value: \"6\" },\n { label: \"待补充\", value: \"3\" },\n ]}\n recentUpdates={RECENT_UPDATES}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n GoalManagementWorkspace,\n type GoalBottomTab,\n type GoalFilter,\n type GoalListItem,\n} from \"../business\";\nimport {\n CodingProductRail,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"目标\", icon: Workflow, active: true },\n { label: \"应用\", icon: PlusCircle },\n];\n\nconst FILTERS: GoalFilter[] = [\n { key: \"owner\", label: \"负责人 & 参与者\", value: \"全部\" },\n { key: \"status\", label: \"状态\", value: \"全部\" },\n];\n\nconst BOTTOM_TABS: GoalBottomTab[] = [\n { key: \"comments\", label: \"评论\" },\n { key: \"notes\", label: \"备注\" },\n { key: \"logs\", label: \"进度记录\" },\n];\n\nconst INITIAL_GOALS: GoalListItem[] = [\n {\n id: \"252939\",\n title: \"【示例】学会并使 OKR 成为团队管理方式\",\n status: \"正常\",\n progress: \"0%\",\n owner: \"未指定\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"2 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"把团队目标管理方法真正跑起来,让目标拆解、同步和复盘形成稳定动作。\",\n metrics: [\n {\n id: \"kr-1\",\n content: \"团队全员学会使用团队目标\",\n weight: \"30.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-2\",\n content: \"团队全员创建一个周期内的个人目标\",\n weight: \"30.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-3\",\n content: \"每周至少更新 1 次 OKR 进度\",\n weight: \"40.00%\",\n progress: \"0%\",\n },\n ],\n relations: [\n {\n id: \"issue-kr-1\",\n label: \"事项 #12 增加邀请成员弹窗并完成邀请成员交互功能\",\n meta: \"执行团队目标落地训练 · 当前迭代 邀请成员\",\n status: \"进行中\",\n },\n {\n id: \"issue-kr-2\",\n label: \"事项 #15 增加批量发送邀请邮件接口\",\n meta: \"跟踪个人目标同步率 · 当前迭代 邀请成员\",\n status: \"未开始\",\n },\n ],\n comments: [\n {\n id: \"comment-1\",\n author: \"黄磊\",\n content: \"先把目标结构跑通,再把每周更新动作变成习惯,不然工具再完整也落不了地。\",\n time: \"今天 10:24\",\n },\n ],\n notes: [\n {\n id: \"note-1\",\n title: \"目标设计备注\",\n content: \"这个目标更像管理方式切换,不是单纯交付结果,因此详情侧要强调过程性记录。\",\n time: \"昨天 18:42\",\n },\n ],\n progressLogs: [\n {\n id: \"log-1\",\n title: \"初始化团队目标与关键结果\",\n detail: \"已建立 3 条关键结果,并同步团队说明,等待成员补充个人目标。\",\n time: \"2 天前\",\n },\n ],\n },\n {\n id: \"252940\",\n title: \"【示例】制定合理的目标体系\",\n status: \"落后\",\n progress: \"0%\",\n owner: \"未指定\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"2 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"统一目标口径、层级和权重,避免目标体系出现分裂和空转。\",\n metrics: [\n {\n id: \"kr-4\",\n content: \"形成团队目标分层模板\",\n weight: \"50.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-5\",\n content: \"明确目标评分和复盘节奏\",\n weight: \"50.00%\",\n progress: \"0%\",\n },\n ],\n comments: [],\n notes: [\n {\n id: \"note-2\",\n title: \"风险提示\",\n content: \"目前团队对目标权重理解不一致,可能导致指标口径混乱。\",\n time: \"昨天 09:10\",\n },\n ],\n progressLogs: [\n {\n id: \"log-2\",\n title: \"目标体系草案未完成评审\",\n detail: \"项目负责人未确认指标权重规则,目标模板暂未对外推广。\",\n time: \"昨天 09:10\",\n },\n ],\n },\n {\n id: \"252941\",\n title: \"【示例】让人机协同周会围绕目标推进\",\n status: \"正常\",\n progress: \"18%\",\n owner: \"黄磊\",\n scopeKey: \"team\",\n creator: \"黄磊\",\n createdAt: \"1 天前\",\n cycle: \"2026 年 Q2\",\n summary: \"把周会从事项过账改为围绕目标推进,强化 AI 协同中的上下文聚焦。\",\n metrics: [\n {\n id: \"kr-6\",\n content: \"建立目标驱动的周会议程模板\",\n weight: \"35.00%\",\n progress: \"20%\",\n },\n {\n id: \"kr-7\",\n content: \"让 AI 每周自动汇总偏差与风险\",\n weight: \"35.00%\",\n progress: \"15%\",\n },\n {\n id: \"kr-8\",\n content: \"沉淀周会输出到目标进度记录\",\n weight: \"30.00%\",\n progress: \"18%\",\n },\n ],\n comments: [],\n notes: [],\n progressLogs: [\n {\n id: \"log-3\",\n title: \"已完成第一版周会议程结构\",\n detail: \"周会模板已从事项罗列改成目标驱动,并同步 AI 汇总入口。\",\n time: \"今天 09:15\",\n },\n ],\n },\n {\n id: \"252942\",\n title: \"【个人】完成本周期个人目标配置\",\n status: \"正常\",\n progress: \"0%\",\n owner: \"黄磊\",\n scopeKey: \"personal\",\n creator: \"黄磊\",\n createdAt: \"今天\",\n cycle: \"2026 年 Q2\",\n summary: \"围绕团队目标拆解个人目标,让执行动作真正挂接到个人节奏中。\",\n metrics: [\n {\n id: \"kr-9\",\n content: \"完成个人目标卡片与关键结果配置\",\n weight: \"60.00%\",\n progress: \"0%\",\n },\n {\n id: \"kr-10\",\n content: \"绑定本周期核心事项\",\n weight: \"40.00%\",\n progress: \"0%\",\n },\n ],\n comments: [],\n notes: [],\n progressLogs: [],\n },\n];\n\nexport function GoalManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeScope, setActiveScope] = React.useState(\"team\");\n const [goals, setGoals] = React.useState(INITIAL_GOALS);\n const [selectedGoalId, setSelectedGoalId] = React.useState(\"252939\");\n const [expandedAll, setExpandedAll] = React.useState(false);\n const [expandedIds, setExpandedIds] = React.useState<string[]>([\"252939\"]);\n const [activeBottomTab, setActiveBottomTab] = React.useState(\"comments\");\n const [draftComment, setDraftComment] = React.useState(\"\");\n\n const visibleGoals = React.useMemo(\n () => goals.filter((goal) => goal.scopeKey === activeScope),\n [activeScope, goals],\n );\n\n React.useEffect(() => {\n if (!visibleGoals.some((goal) => goal.id === selectedGoalId)) {\n setSelectedGoalId(visibleGoals[0]?.id ?? \"\");\n }\n }, [selectedGoalId, visibleGoals]);\n\n const selectedGoal = React.useMemo(\n () => visibleGoals.find((goal) => goal.id === selectedGoalId) ?? visibleGoals[0],\n [selectedGoalId, visibleGoals],\n );\n\n return (\n <GoalManagementWorkspace\n className={className}\n productRail={<CodingProductRail items={PRODUCT_ITEMS} userName=\"黄磊\" />}\n notice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n title=\"目标\"\n scopeTabs={[\n { key: \"team\", label: \"团队目标\" },\n { key: \"personal\", label: \"个人目标\" },\n ]}\n activeScopeKey={activeScope}\n onScopeChange={(key) => {\n setActiveScope(key);\n setActiveBottomTab(\"comments\");\n }}\n cycle={{ label: \"2026 年 Q2\", range: \"2026/04/01 - 2026/06/30\" }}\n primaryActionLabel={activeScope === \"team\" ? \"创建团队目标\" : \"创建个人目标\"}\n filters={FILTERS}\n searchPlaceholder=\"搜索目标内容\"\n goals={visibleGoals}\n selectedGoalId={selectedGoalId}\n onSelectGoal={setSelectedGoalId}\n expandedGoalIds={expandedIds}\n expandedAll={expandedAll}\n onToggleExpandedAll={() => setExpandedAll((current) => !current)}\n onToggleGoalExpanded={(goalId) => {\n setExpandedIds((current) =>\n current.includes(goalId) ? current.filter((item) => item !== goalId) : [...current, goalId],\n );\n }}\n onAddMetric={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n metrics: [\n ...goal.metrics,\n {\n id: `${goalId}-metric-${goal.metrics.length + 1}`,\n content: \"新增关键结果\",\n weight: \"10.00%\",\n progress: \"0%\",\n },\n ],\n }\n : goal,\n ),\n );\n }}\n onAddRelation={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n relations: [\n ...(goal.relations ?? []),\n {\n id: `${goalId}-relation-${(goal.relations?.length ?? 0) + 1}`,\n label: \"新增关联事项\",\n meta: \"通过目标详情抽屉直接补充\",\n status: \"未开始\",\n },\n ],\n }\n : goal,\n ),\n );\n }}\n bottomTabs={BOTTOM_TABS}\n activeBottomTab={activeBottomTab}\n onBottomTabChange={setActiveBottomTab}\n draftComment={draftComment}\n onDraftCommentChange={setDraftComment}\n onPublishComment={(goalId) => {\n if (!draftComment.trim()) {\n return;\n }\n\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n comments: [\n ...(goal.comments ?? []),\n {\n id: `${goalId}-comment-${(goal.comments?.length ?? 0) + 1}`,\n author: \"黄磊\",\n content: draftComment.trim(),\n time: \"刚刚\",\n },\n ],\n }\n : goal,\n ),\n );\n setDraftComment(\"\");\n }}\n onAdjustWeights={(goalId) => {\n setGoals((current) =>\n current.map((goal) =>\n goal.id === goalId\n ? {\n ...goal,\n metrics: goal.metrics.map((metric, index, all) => ({\n ...metric,\n weight: `${(100 / all.length).toFixed(2)}%`,\n progress: index === 0 ? metric.progress : metric.progress,\n })),\n }\n : goal,\n ),\n );\n }}\n metaItems={\n selectedGoal\n ? [\n { label: \"状态\", value: selectedGoal.status },\n { label: \"进度\", value: selectedGoal.progress },\n { label: \"负责人\", value: selectedGoal.owner },\n { label: \"参与者\", value: \"未指定\" },\n { label: \"所在周期\", value: selectedGoal.cycle },\n ]\n : []\n }\n viewportLocked={false}\n />\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n ProjectOverviewWorkspace,\n type ProjectCapabilitySidebarSection,\n type ProjectOverviewActivityItem,\n type ProjectOverviewDocumentItem,\n type ProjectOverviewQuickAction,\n type ProjectOverviewStatMetric,\n type ProjectOverviewStatTab,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\", active: true },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\" },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst QUICK_ACTIONS: ProjectOverviewQuickAction[] = [\n { label: \"创建事项\", description: \"快速创建事项\", tone: \"primary\" },\n { label: \"去规划\", description: \"前往规划迭代\" },\n];\n\nconst RECENT_FILES: ProjectOverviewDocumentItem[] = [\n { title: \"Cloud Studio.pdf\", meta: \"1 MB · 黄磊更新于 6 年前\" },\n { title: \"CODING 研发管理系统画册.pdf\", meta: \"2 MB · 黄磊更新于 6 年前\" },\n];\n\nconst WIKI_DOCS: ProjectOverviewDocumentItem[] = [\n { title: \"如何使用 Wiki 进行项目知识沉淀\", meta: \"黄磊 创建于 6 年前\" },\n { title: \"Markdown 语法指南\", meta: \"黄磊 创建于 6 年前\" },\n];\n\nconst ACTIVITIES: ProjectOverviewActivityItem[] = [\n {\n time: \"20:04\",\n summary: \"持续集成:示例任务,任务 1 构建成功\",\n target: \"示例任务\",\n detail: \"构建代码仓库:coding-demo,构建版本:[f23a09c]\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 在需求 #10 中关联了子工作项\",\n target: \"#12-增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 创建了需求\",\n target: \"#14-[示例需求]-通过访问邀请链接可注册成为团队成员\",\n },\n {\n time: \"20:02\",\n summary: \"黄磊 推送了分支 new-feature 到代码仓库: coding-demo\",\n target: \"新增 new feature\",\n detail: \"[aa19556]\",\n },\n];\n\nexport function ProjectOverviewPagePreview({\n className,\n}: {\n className?: string;\n}) {\n const [activeTab, setActiveTab] = React.useState(\"项目概览\");\n\n const statTabs = React.useMemo<ProjectOverviewStatTab[]>(\n () => [\n { label: \"项目概览\", active: activeTab === \"项目概览\" },\n { label: \"项目动态\", active: activeTab === \"项目动态\" },\n ],\n [activeTab],\n );\n\n const statMetrics = React.useMemo<ProjectOverviewStatMetric[]>(\n () => [\n { value: \"0\", label: \"迭代\", status: \"进行中\" },\n { value: \"6\", label: \"我未完成的\" },\n { value: \"6\", label: \"分配给我的\" },\n { value: \"10\", label: \"我创建的\" },\n ],\n [],\n );\n\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 代码助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <ProjectOverviewWorkspace\n activeTab={activeTab}\n statTabs={statTabs}\n quickActions={QUICK_ACTIONS}\n statMetrics={statMetrics}\n repository={{\n name: \"coding-demo\",\n updatedMeta: \"黄磊 最后提交于 6 年前\",\n branchCount: \"2\",\n tagCount: \"0\",\n }}\n buildSummary={{\n name: \"示例任务\",\n status: \"构建成功\",\n meta: \"6 年前 · 耗时 1 分钟 58 秒 · 黄磊 推送到分支 master 时触发\",\n }}\n recentFiles={RECENT_FILES}\n wikiDocs={WIKI_DOCS}\n activities={ACTIVITIES}\n announcement={{\n author: \"黄磊\",\n publishedAt: \"01-26 20:02\",\n content: [\n \"这是一个示例项目,任何团队项目成员都可以在里面尽情探索,以了解如何使用 CODING 进行高效率的项目协作。\",\n \"注意:请勿在示例项目内放置任何敏感或重要信息。\",\n ],\n }}\n projectSlug=\"mengti/coding-demo\"\n projectDescription=\"CODING 示例项目\"\n memberCount=\"1 项目成员\"\n onSelectTab={setActiveTab}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n Bell,\n CalendarClock,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n LayoutGrid,\n PlusCircle,\n Settings,\n Shield,\n Sparkles,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n ProjectCapabilitySidebar,\n ResourceManagementWorkspace,\n type ProjectCapabilitySidebarSection,\n type ResourceActivityItem,\n type ResourceFilterChip,\n type ResourceListItem,\n type ResourceStatItem,\n} from \"../business\";\nimport {\n ProjectWorkspaceShell,\n type CodingProductNavItem,\n} from \"../patterns\";\n\nconst PRODUCT_ITEMS: CodingProductNavItem[] = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban, active: true },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n { label: \"仪表盘\", icon: Shield },\n { label: \"项目集\", icon: FolderKanban },\n { label: \"目标\", icon: Workflow },\n { label: \"应用\", icon: PlusCircle },\n { label: \"设施\", icon: Settings },\n { label: \"生态\", icon: Sparkles },\n];\n\nconst SIDEBAR_SECTIONS: ProjectCapabilitySidebarSection[] = [\n {\n items: [\n { label: \"项目概览\" },\n { label: \"项目协同\" },\n { label: \"代码仓库\" },\n {\n label: \"持续集成\",\n children: [{ label: \"构建计划\" }, { label: \"构建节点\" }],\n },\n { label: \"持续部署\" },\n { label: \"代码分析\" },\n { label: \"应用管理\", active: true },\n { label: \"制品管理\" },\n { label: \"文档管理\" },\n { label: \"测试协同\" },\n { label: \"测试管理\" },\n { label: \"CoDesign\" },\n ],\n },\n {\n label: \"设置\",\n items: [{ label: \"项目设置\" }],\n },\n];\n\nconst FILTERS: ResourceFilterChip[] = [\n { label: \"全部\", active: true },\n { label: \"使用中\" },\n { label: \"待分配\" },\n { label: \"高敏感\" },\n { label: \"本月有变更\" },\n];\n\nconst STATS: ResourceStatItem[] = [\n { label: \"资源总数\", value: \"128\" },\n { label: \"使用中\", value: \"87\" },\n { label: \"待分配\", value: \"18\" },\n { label: \"近 30 天变更\", value: \"24\" },\n];\n\nconst ITEMS: ResourceListItem[] = [\n {\n id: \"asset-001\",\n name: \"渠道运营后台正式账号\",\n type: \"业务账号\",\n owner: \"黄磊\",\n status: \"使用中\",\n location: \"运营中心 / 华东渠道\",\n updatedAt: \"2026-04-20 10:24\",\n },\n {\n id: \"asset-002\",\n name: \"客户实施演示环境 A\",\n type: \"演示环境\",\n owner: \"孙明\",\n status: \"待分配\",\n location: \"实施交付组\",\n updatedAt: \"2026-04-19 16:12\",\n },\n {\n id: \"asset-003\",\n name: \"合同电子签章管理员权限\",\n type: \"权限资源\",\n owner: \"林妍\",\n status: \"使用中\",\n location: \"法务共享空间\",\n updatedAt: \"2026-04-18 09:42\",\n },\n {\n id: \"asset-004\",\n name: \"区域伙伴培训素材包\",\n type: \"资料资源\",\n owner: \"王敏\",\n status: \"待启用\",\n location: \"运营资料空间\",\n updatedAt: \"2026-04-17 14:06\",\n },\n];\n\nconst RECENT_ACTIVITIES: ResourceActivityItem[] = [\n { title: \"渠道运营后台正式账号完成权限复核\", meta: \"黄磊 · 2 小时前\" },\n { title: \"客户实施演示环境 A 从空闲转为待分配\", meta: \"孙明 · 昨天 16:12\" },\n { title: \"合同电子签章管理员权限新增法务共享角色\", meta: \"林妍 · 2026-04-18\" },\n];\n\nexport function ResourceManagementPagePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ProjectWorkspaceShell\n productItems={PRODUCT_ITEMS}\n userName=\"黄磊\"\n className={className}\n projectSidebar={\n <ProjectCapabilitySidebar\n tenantLabel=\"项目\"\n projectName=\"示例项目\"\n sections={SIDEBAR_SECTIONS}\n footerActionLabel=\"自定义菜单栏\"\n />\n }\n systemNotice={\n <div className=\"border-b border-[var(--ck-border-subtle)] bg-white px-5 py-2.5 text-[12px] text-[var(--ck-text-secondary)]\">\n 资源台账已接入共享责任人与权限回收策略,用于统一管理业务账号、环境和权限资源\n </div>\n }\n topBar={\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b border-[var(--ck-border-subtle)] bg-[var(--ck-surface-page)] px-5 py-3\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <span>项目</span>\n <ChevronRight className=\"h-3.5 w-3.5\" />\n <span>示例项目</span>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-button-dark-border)] bg-[var(--ck-button-dark)] px-3 text-[13px] text-[var(--ck-brand-contrast)] transition-colors hover:bg-[var(--ck-button-dark-hover)]\"\n >\n <Code2 className=\"h-3.5 w-3.5\" />\n AI 资源助手\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-8 items-center gap-1.5 rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-primary)]\"\n >\n <PlusCircle className=\"h-3.5 w-3.5\" />\n 邀请成员\n </button>\n </div>\n </div>\n }\n contentClassName=\"min-h-0 flex-1\"\n >\n <ResourceManagementWorkspace\n title=\"应用与资源管理\"\n description=\"集中盘点业务账号、演示环境、权限资源和资料资产,便于跨角色协同维护、分配和回收。\"\n primaryActionLabel=\"新增资源\"\n filterChips={FILTERS}\n stats={STATS}\n items={ITEMS}\n detailTitle=\"渠道运营后台正式账号\"\n detailMeta=\"业务账号 · 高敏感 · 当前责任人 黄磊\"\n detailDescription=\"该资源用于渠道伙伴管理与返佣流程处理,涉及客户资料与结算信息,需按月完成权限复核与使用追踪。\"\n detailStats={[\n { label: \"关联成员\", value: \"4\" },\n { label: \"近 30 天操作\", value: \"12\" },\n { label: \"共享角色\", value: \"3\" },\n { label: \"待处理提醒\", value: \"1\" },\n ]}\n recentActivities={RECENT_ACTIVITIES}\n />\n </ProjectWorkspaceShell>\n );\n}\n","import * as React from \"react\";\nimport {\n AlertTriangle,\n CheckCheck,\n Bell,\n Bug,\n CalendarClock,\n ChevronDown,\n ChevronRight,\n Clock3,\n Code2,\n FileText,\n FolderKanban,\n GitBranch,\n LayoutGrid,\n Link2,\n ListTodo,\n MessageSquarePlus,\n Settings,\n ShieldAlert,\n Sparkles,\n Star,\n Upload,\n UserCog,\n Workflow,\n} from \"lucide-react\";\n\nimport {\n DetailCommentComposer,\n DashboardWorkspace,\n DetailFieldPanel,\n DetailFilterTabs,\n DetailListSection,\n DetailMetaGrid,\n DetailSection,\n DetailTimeline,\n GoalManagementWorkspace,\n IssueWorkspace,\n type IssueWorkspaceSidebarSection,\n type IssueWorkspaceRowBase,\n} from \"../business\";\nimport { BuildPlanListPagePreview } from \"./build-plan-list-page-preview\";\nimport { BuildPlanStarterPagePreview } from \"./build-plan-starter-preview\";\nimport { DocumentManagementPagePreview } from \"./document-management-page-preview\";\nimport { GoalManagementPagePreview } from \"./goal-management-page-preview\";\nimport { ProjectOverviewPagePreview } from \"./project-overview-page-preview\";\nimport { ResourceManagementPagePreview } from \"./resource-management-page-preview\";\n\ntype WorkspaceRow = IssueWorkspaceRowBase & {\n title: string;\n priority: string;\n status: string;\n assignee: string;\n creator: string;\n iteration: string;\n project: string;\n dueDate: string;\n createdAt: string;\n updatedAt: string;\n ticketType: string;\n linkedRequirement?: string;\n attachmentCount?: number;\n childProgress?: string;\n severity?: string;\n};\n\ntype PreviewMode =\n | \"issue\"\n | \"defect\"\n | \"approval\"\n | \"dashboard\"\n | \"build-plan\"\n | \"build-plan-list\"\n | \"document-management\"\n | \"goal-management\"\n | \"project-overview\"\n | \"resource-management\";\n\ntype IssueActivityItem = {\n id: string;\n title: string;\n meta: string;\n content: string;\n type: \"日志\" | \"评论\";\n target: string;\n};\n\nconst PRODUCT_ITEMS = [\n { label: \"工作台\", icon: LayoutGrid },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText, active: true },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n];\n\nconst DASHBOARD_PRODUCT_ITEMS = [\n { label: \"工作台\", icon: LayoutGrid, active: true },\n { label: \"项目\", icon: FolderKanban },\n { label: \"AI\", icon: Sparkles },\n { label: \"事项\", icon: FileText },\n { label: \"代码\", icon: ChevronRight },\n { label: \"制品\", icon: Bell },\n { label: \"洞察\", icon: Clock3 },\n { label: \"知识\", icon: FileText },\n { label: \"自动化\", icon: Settings },\n { label: \"负载\", icon: CalendarClock },\n];\n\nconst DASHBOARD_TABS = [\n { label: \"研发任务工作台\", active: true },\n { label: \"需求管理工作台\" },\n { label: \"项目管理工作台\" },\n];\n\nconst DASHBOARD_WIDGET_LIBRARY = [\n {\n id: \"recent-commits\",\n title: \"近期代码提交\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n accent: \"brand\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"次提交\", value: \"12\", tone: \"positive\" as const },\n { label: \"代码行数 +\", value: \"846\", tone: \"positive\" as const },\n { label: \"代码行数 -\", value: \"193\", tone: \"negative\" as const },\n ],\n },\n {\n id: \"member-ranking\",\n title: \"代码提交成员排名\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"ranking\" as const,\n cols: \"normal\" as const,\n ranking: [],\n },\n {\n id: \"stale-issues\",\n title: \"长期滞留事项列表\",\n subtitle: \"6 个事项超过 20 天未处理\",\n type: \"issue-list\" as const,\n accent: \"danger\" as const,\n cols: \"wide\" as const,\n issues: [\n {\n id: \"#12\",\n title: \"[示例任务]-增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n dueDate: \"2020年1月28日截止\",\n status: \"未开始\",\n assignee: \"未指定\",\n },\n {\n id: \"#10\",\n title: \"[示例需求]-通过访问邀请链接可注册成为团队成员\",\n iteration: \"邀请成员\",\n dueDate: \"2020年1月29日截止\",\n status: \"未开始\",\n assignee: \"未指定\",\n },\n {\n id: \"#13\",\n title: \"[示例需求]-在成员管理模块中可批量发送邀请成员邮件\",\n iteration: \"邀请成员\",\n dueDate: \"2020年1月29日截止\",\n status: \"未开始\",\n assignee: \"黄磊\",\n },\n {\n id: \"#8\",\n title: \"[示例缺陷]-商品详情页中商品价格字体应当显示为红色并且加粗\",\n status: \"待处理\",\n assignee: \"黄磊\",\n },\n {\n id: \"#7\",\n title: \"[示例缺陷]-登录页输入正确的用户名和密码后提示“用户不存在”\",\n dueDate: \"2020年1月26日截止\",\n status: \"待处理\",\n assignee: \"黄磊\",\n },\n {\n id: \"#6\",\n title: \"邀请成员\",\n dueDate: \"2020年1月7日截止\",\n status: \"未开始\",\n assignee: \"黄磊\",\n },\n ],\n },\n {\n id: \"created-issues\",\n title: \"近期创建事项数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"创建事项\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"finished-issues\",\n title: \"近期完成事项数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"完成事项\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-mr-list\",\n title: \"近期 MR 列表\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [],\n },\n {\n id: \"project-list\",\n title: \"项目列表\",\n subtitle: \"1 个项目\",\n type: \"project-list\" as const,\n cols: \"normal\" as const,\n projects: [\n { name: \"示例项目\", progress: \"\", health: \"\" },\n ],\n },\n {\n id: \"project-activity\",\n title: \"项目动态\",\n subtitle: \"展示项目动态\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [\n { title: \"黄磊提交了邀请成员弹窗交互优化\", meta: \"10 分钟前 · mengti\" },\n { title: \"李静更新了商品详情页价格样式回归结果\", meta: \"32 分钟前 · mall-web\" },\n { title: \"孙明修复登录态映射问题并发起 MR\", meta: \"1 小时前 · auth-center\" },\n ],\n },\n {\n id: \"active-iterations\",\n title: \"进行中的迭代\",\n subtitle: \"0 个迭代\",\n type: \"iteration-list\" as const,\n cols: \"normal\" as const,\n iterations: [],\n },\n {\n id: \"iteration-overview\",\n title: \"迭代概览\",\n subtitle: \"展示一个迭代的具体信息包括进度和燃尽图\",\n type: \"stats\" as const,\n accent: \"warning\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"完成进度\", value: \"68%\", tone: \"positive\" as const },\n { label: \"剩余事项\", value: \"12\", tone: \"default\" as const },\n { label: \"风险阻塞\", value: \"2\", tone: \"negative\" as const },\n ],\n },\n {\n id: \"issue-trend\",\n title: \"近期事项趋势\",\n subtitle: \"每日事项的增加和完成数量趋势\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [\n { label: \"04/14\", value: \"3\" },\n { label: \"04/15\", value: \"5\" },\n { label: \"04/16\", value: \"4\" },\n { label: \"04/17\", value: \"7\" },\n { label: \"04/18\", value: \"6\" },\n { label: \"04/19\", value: \"8\" },\n { label: \"04/20\", value: \"5\" },\n ],\n },\n {\n id: \"recent-merged-mr-count\",\n title: \"近期 合并的 MR 数量\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"合并 MR\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"merge-request-ranking\",\n title: \"合并请求排名\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"ranking\" as const,\n cols: \"normal\" as const,\n ranking: [],\n },\n {\n id: \"recent-build-count\",\n title: \"近期构建次数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"构建次数\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-build-trend\",\n title: \"近期构建趋势\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [],\n },\n {\n id: \"recent-build-records\",\n title: \"近期构建记录\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"activity-list\" as const,\n cols: \"normal\" as const,\n activities: [],\n },\n {\n id: \"recent-release-count\",\n title: \"近期发布次数\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"stats\" as const,\n cols: \"normal\" as const,\n stats: [\n { label: \"发布次数\", value: \"0\", tone: \"default\" as const },\n { label: \"相比以往 2 周\", value: \"0\", tone: \"default\" as const },\n ],\n },\n {\n id: \"recent-release-trend\",\n title: \"近期发布趋势\",\n subtitle: \"最近 2 周 (04/08 - 04/21)\",\n type: \"trend\" as const,\n cols: \"wide\" as const,\n trend: [],\n },\n];\n\nconst DASHBOARD_WIDGETS = [\n \"recent-commits\",\n \"member-ranking\",\n \"stale-issues\",\n \"created-issues\",\n \"finished-issues\",\n \"active-iterations\",\n \"recent-mr-list\",\n \"project-list\",\n].map((id) => DASHBOARD_WIDGET_LIBRARY.find((widget) => widget.id === id)!);\n\nconst DASHBOARD_WIDGET_CATALOG = [\n {\n id: \"project-list\",\n title: \"项目列表\",\n description: \"展示选择的项目列表,可选择展示项目的进度\",\n badge: \"项目\",\n },\n {\n id: \"project-activity\",\n title: \"项目动态\",\n description: \"展示项目动态\",\n badge: \"项目\",\n },\n {\n id: \"created-issues\",\n title: \"近期事项数\",\n description: \"统计事项创建、完成和活跃数量\",\n badge: \"事项\",\n },\n {\n id: \"active-iterations\",\n title: \"进行中的迭代\",\n description: \"展示特定项目下进行中的迭代列表,跟踪迭代进度\",\n badge: \"迭代\",\n },\n {\n id: \"iteration-overview\",\n title: \"迭代概览\",\n description: \"展示一个迭代的具体信息包括进度和燃尽图\",\n badge: \"迭代\",\n },\n {\n id: \"stale-issues\",\n title: \"长期滞留事项列表\",\n description: \"处于未处理时间超过某个限定时间的事项列表\",\n badge: \"事项\",\n },\n {\n id: \"issue-trend\",\n title: \"近期事项趋势\",\n description: \"每日事项的增加和完成的数量趋势\",\n badge: \"事项\",\n },\n {\n id: \"recent-merged-mr-count\",\n title: \"近期 合并的 MR 数量\",\n description: \"统计特定仓库的近期合并成功的 MR 数量\",\n badge: \"代码\",\n },\n {\n id: \"recent-mr-list\",\n title: \"近期 MR 列表\",\n description: \"近期提交的 MR 列表\",\n badge: \"代码\",\n },\n {\n id: \"recent-commits\",\n title: \"近期代码提交统计\",\n description: \"逐日统计每天提交的代码次数和变更行数\",\n badge: \"代码\",\n },\n {\n id: \"member-ranking\",\n title: \"代码提交排名\",\n description: \"统计近期代码提交次数最多的前10名成员\",\n badge: \"代码\",\n },\n {\n id: \"merge-request-ranking\",\n title: \"合并请求排名\",\n description: \"统计近期合并请求数量最多的前10名成员\",\n badge: \"代码\",\n },\n {\n id: \"recent-build-count\",\n title: \"近期构建次数\",\n description: \"统计近期一段时间构建的数量和构建成功数量\",\n badge: \"构建\",\n },\n {\n id: \"recent-build-trend\",\n title: \"近期构建趋势\",\n description: \"逐日统计近期一段时间构建提交数和成功数\",\n badge: \"构建\",\n },\n {\n id: \"recent-build-records\",\n title: \"近期构建记录\",\n description: \"逐日统计近期一段时间构建提交数和成功数\",\n badge: \"构建\",\n },\n {\n id: \"recent-release-count\",\n title: \"近期发布次数\",\n description: \"统计近期一段时间发布的数量和发布成功数量\",\n badge: \"发布\",\n },\n {\n id: \"recent-release-trend\",\n title: \"近期发布趋势\",\n description: \"逐日统计近期一段时间发布数和成功数\",\n badge: \"发布\",\n },\n];\n\nconst ISSUE_VIEWS = [\n { label: \"我未完成的默认\", active: true },\n { label: \"分配给我的\", count: \"6\" },\n { label: \"我创建的\", count: \"10\" },\n { label: \"我关注的\", count: \"1\" },\n { label: \"全部打开的\", count: \"21\" },\n { label: \"全部\", count: \"24\" },\n { label: \"我经办的\", count: \"8\" },\n];\n\nconst ISSUE_SIDEBAR_SECTIONS: IssueWorkspaceSidebarSection[] = [\n {\n label: \"默认视图\",\n views: [\n {\n id: \"my-default\",\n label: \"我未完成的默认\",\n count: \"6\",\n active: true,\n },\n {\n id: \"assigned-to-me\",\n label: \"分配给我的\",\n count: \"6\",\n },\n {\n id: \"created-by-me\",\n label: \"我创建的\",\n count: \"10\",\n },\n {\n id: \"following\",\n label: \"我关注的\",\n count: \"1\",\n },\n {\n id: \"all-open\",\n label: \"全部打开的\",\n count: \"21\",\n },\n {\n id: \"all-items\",\n label: \"全部\",\n count: \"24\",\n },\n {\n id: \"handled-by-me\",\n label: \"我经办的\",\n count: \"8\",\n },\n ],\n },\n];\n\nconst DEFECT_VIEWS = [\n { label: \"待我处理的缺陷\", active: true },\n { label: \"高严重级别\", count: \"5\" },\n { label: \"待验证\", count: \"4\" },\n { label: \"本周新增\", count: \"9\" },\n { label: \"全部未关闭\", count: \"18\" },\n { label: \"我创建的\", count: \"7\" },\n { label: \"已解决待回归\", count: \"3\" },\n];\n\nconst APPROVAL_VIEWS = [\n { label: \"待我审批\", active: true },\n { label: \"审批中\", count: \"11\" },\n { label: \"我发起的\", count: \"8\" },\n { label: \"已通过\", count: \"14\" },\n { label: \"已驳回\", count: \"3\" },\n { label: \"抄送我的\", count: \"5\" },\n { label: \"全部审批单\", count: \"27\" },\n];\n\nconst TABLE_HEADERS = [\n \"ID\",\n \"标题\",\n \"优先级\",\n \"状态\",\n \"处理人\",\n \"创建人\",\n \"迭代\",\n \"项目/项目集\",\n \"截止日期\",\n \"创建时间\",\n \"更新时间\",\n];\n\nconst ISSUE_ACTIONS = [\n { label: \"发起需求讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"1 人关注\", icon: Star },\n { label: \"编辑描述\", icon: FileText },\n { label: \"上传附件\", icon: Upload },\n { label: \"分解需求\", icon: ChevronRight },\n { label: \"添加子工作项\", icon: ChevronRight },\n { label: \"关联缺陷\", icon: ChevronRight },\n];\n\nconst DEFECT_ACTIONS = [\n { label: \"发起缺陷讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"2 人关注\", icon: Star },\n { label: \"编辑复现步骤\", icon: FileText },\n { label: \"上传日志\", icon: Upload },\n { label: \"关联修复提交\", icon: ChevronRight },\n { label: \"添加回归任务\", icon: ChevronRight },\n { label: \"关联需求\", icon: ChevronRight },\n];\n\nconst APPROVAL_ACTIONS = [\n { label: \"发起审批讨论\", icon: MessageSquarePlus, primary: true },\n { label: \"添加审批意见\", icon: FileText },\n { label: \"上传补充材料\", icon: Upload },\n { label: \"转交审批\", icon: ChevronRight },\n { label: \"抄送成员\", icon: ChevronRight },\n { label: \"关联制度文档\", icon: ChevronRight },\n];\n\nconst ISSUE_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"#15\",\n title: \"[示例任务]-增加批量发送邀请邮件接口\",\n priority: \"P2\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#13\",\n title: \"[示例需求]-在成员管理模块中可批量发送邀请成员邮件 邀请成员\",\n priority: \"P1\",\n status: \"未开始\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-13\",\n updatedAt: \"2026-04-18\",\n ticketType: \"需求\",\n }),\n buildRow({\n id: \"#12\",\n title: \"增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n priority: \"P2\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-12\",\n updatedAt: \"2026-04-18\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#11\",\n title: \"增加批量发送邀请邮件接口\",\n priority: \"P2\",\n status: \"未开始\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"--\",\n createdAt: \"2026-04-11\",\n updatedAt: \"2026-04-17\",\n ticketType: \"任务\",\n }),\n buildRow({\n id: \"#10\",\n title: \"[示例需求]-通过邮箱地址邀请成员加入团队 0/2 邀请成员\",\n priority: \"P1\",\n status: \"进行中\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-10\",\n updatedAt: \"2026-04-19\",\n ticketType: \"需求\",\n linkedRequirement: \"REQ-88\",\n attachmentCount: 0,\n childProgress: \"0/2 子事项\",\n }),\n buildRow({\n id: \"#8\",\n title: \"[示例缺陷]-商品详情页中商品价格字体应当显示为红色并且加粗\",\n priority: \"P1\",\n status: \"未开始\",\n assignee: \"李静\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"mall-web\",\n dueDate: \"2026-04-23\",\n createdAt: \"2026-04-08\",\n updatedAt: \"2026-04-17\",\n ticketType: \"缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"#7\",\n title: \"[示例缺陷]-登录页输入正确的用户名和密码后提示“用户不存在”\",\n priority: \"P0\",\n status: \"未开始\",\n assignee: \"孙明\",\n creator: \"黄磊\",\n iteration: \"--\",\n project: \"auth-center\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-07\",\n updatedAt: \"2026-04-17\",\n ticketType: \"缺陷\",\n severity: \"致命\",\n }),\n];\n\nconst ISSUE_ROW_SEED = ISSUE_ROWS.map(({ cells: _cells, ...row }) => row);\n\nconst DEFECT_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"BUG-218\",\n title: \"登录页输入正确的用户名和密码后提示“用户不存在”\",\n priority: \"P0\",\n status: \"待修复\",\n assignee: \"孙明\",\n creator: \"黄磊\",\n iteration: \"登录链路\",\n project: \"auth-center\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-17\",\n updatedAt: \"2026-04-19\",\n ticketType: \"缺陷\",\n severity: \"致命\",\n }),\n buildRow({\n id: \"BUG-214\",\n title: \"商品详情页价格字体未按设计稿显示红色加粗\",\n priority: \"P1\",\n status: \"待验证\",\n assignee: \"李静\",\n creator: \"黄磊\",\n iteration: \"商品详情页\",\n project: \"mall-web\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-16\",\n updatedAt: \"2026-04-19\",\n ticketType: \"UI 缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"BUG-209\",\n title: \"团队邀请弹窗在 Safari 下无法正确粘贴多邮箱地址\",\n priority: \"P1\",\n status: \"修复中\",\n assignee: \"黄磊\",\n creator: \"周杨\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-15\",\n updatedAt: \"2026-04-18\",\n ticketType: \"兼容性缺陷\",\n severity: \"中\",\n }),\n buildRow({\n id: \"BUG-205\",\n title: \"批量发送邀请邮件接口超时后前端无错误提示\",\n priority: \"P1\",\n status: \"待修复\",\n assignee: \"黄磊\",\n creator: \"黄磊\",\n iteration: \"邀请成员\",\n project: \"mengti\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"交互缺陷\",\n severity: \"高\",\n }),\n buildRow({\n id: \"BUG-198\",\n title: \"移动端事项详情滑层打开后,背景列表还能横向滚动\",\n priority: \"P2\",\n status: \"待验证\",\n assignee: \"陈宇\",\n creator: \"黄磊\",\n iteration: \"移动端适配\",\n project: \"workspace-shell\",\n dueDate: \"2026-04-25\",\n createdAt: \"2026-04-12\",\n updatedAt: \"2026-04-18\",\n ticketType: \"体验缺陷\",\n severity: \"中\",\n }),\n buildRow({\n id: \"BUG-190\",\n title: \"插件扩展面板在详情抽屉中重复挂载,导致按钮重复触发\",\n priority: \"P1\",\n status: \"待分析\",\n assignee: \"王凯\",\n creator: \"赵一\",\n iteration: \"插件接入\",\n project: \"plugin-host\",\n dueDate: \"--\",\n createdAt: \"2026-04-10\",\n updatedAt: \"2026-04-17\",\n ticketType: \"插件缺陷\",\n severity: \"高\",\n }),\n];\n\nconst APPROVAL_ROWS: WorkspaceRow[] = [\n buildRow({\n id: \"AP-302\",\n title: \"供应商付款审批 / 华东代理结算单\",\n priority: \"P1\",\n status: \"待我审批\",\n assignee: \"黄磊\",\n creator: \"王敏\",\n iteration: \"财务复核\",\n project: \"finance-flow\",\n dueDate: \"2026-04-20\",\n createdAt: \"2026-04-18\",\n updatedAt: \"2026-04-19\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-298\",\n title: \"采购申请 / 办公网关设备替换\",\n priority: \"P2\",\n status: \"审批中\",\n assignee: \"黄磊\",\n creator: \"周浩\",\n iteration: \"IT 审批\",\n project: \"ops-flow\",\n dueDate: \"2026-04-22\",\n createdAt: \"2026-04-17\",\n updatedAt: \"2026-04-19\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-291\",\n title: \"合同盖章申请 / 华南渠道续签协议\",\n priority: \"P1\",\n status: \"待法务复核\",\n assignee: \"林妍\",\n creator: \"赵一\",\n iteration: \"法务节点\",\n project: \"legal-flow\",\n dueDate: \"2026-04-23\",\n createdAt: \"2026-04-16\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-286\",\n title: \"外包入场审批 / 测试团队临时扩编\",\n priority: \"P2\",\n status: \"已驳回\",\n assignee: \"李哲\",\n creator: \"黄磊\",\n iteration: \"人事审批\",\n project: \"hr-flow\",\n dueDate: \"--\",\n createdAt: \"2026-04-14\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n buildRow({\n id: \"AP-280\",\n title: \"预算追加审批 / Q2 市场活动预算\",\n priority: \"P0\",\n status: \"审批中\",\n assignee: \"陈总\",\n creator: \"王敏\",\n iteration: \"总监审批\",\n project: \"budget-center\",\n dueDate: \"2026-04-21\",\n createdAt: \"2026-04-13\",\n updatedAt: \"2026-04-18\",\n ticketType: \"审批单\",\n }),\n];\n\nfunction TypeBadge({ value }: { value: string }) {\n const tone =\n value === \"需求\"\n ? \"bg-[#edf0fe] text-[#3e5bec]\"\n : value === \"缺陷\" || value.includes(\"缺陷\")\n ? \"bg-[#fff1ef] text-[#c5342f]\"\n : value === \"审批单\"\n ? \"bg-[#f3f1ff] text-[#7057ff]\"\n : \"bg-[#edf8f1] text-[#18794e]\";\n\n return <span className={`rounded-[3px] px-1.5 py-[2px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction PriorityPill({ value }: { value: string }) {\n const tone =\n value === \"P0\"\n ? \"bg-[var(--ck-danger-soft)] text-[var(--ck-danger-text)]\"\n : value === \"P1\"\n ? \"bg-[var(--ck-warning-soft)] text-[var(--ck-warning-text)]\"\n : \"bg-[#eef4fb] text-[var(--ck-text-secondary)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction StatusPill({ value }: { value: string }) {\n const tone =\n value.includes(\"进行\") || value.includes(\"修复\") || value.includes(\"审批中\")\n ? \"bg-[#edf0fe] text-[#3e5bec]\"\n : value.includes(\"待\") || value === \"未开始\"\n ? \"bg-[#f6f8fb] text-[var(--ck-text-secondary)]\"\n : value.includes(\"已\")\n ? \"bg-[#edf8f1] text-[#18794e]\"\n : \"bg-[#f6f8fb] text-[var(--ck-text-secondary)]\";\n\n return <span className={`rounded-full px-2 py-[3px] text-[11px] font-medium ${tone}`}>{value}</span>;\n}\n\nfunction MemberPill({ value }: { value: string }) {\n return (\n <div className=\"inline-flex items-center gap-2 text-[12px] text-[var(--ck-text-primary)]\">\n <span className=\"inline-flex h-5 w-5 items-center justify-center rounded-full bg-[#e8eef8] text-[10px] font-semibold text-[#47607d]\">\n {value.slice(0, 1)}\n </span>\n <span>{value}</span>\n </div>\n );\n}\n\nfunction TitleCell({ row }: { row: Omit<WorkspaceRow, \"cells\"> }) {\n const updatedToday = row.updatedAt === \"2026-04-20\";\n\n return (\n <div className=\"min-w-0\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <TypeBadge value={row.ticketType} />\n <span className=\"truncate text-[13px] font-medium text-[var(--ck-text-primary)]\">{row.title}</span>\n {updatedToday ? (\n <span className=\"shrink-0 rounded-full bg-[#edf0fe] px-2 py-[2px] text-[10px] font-medium text-[#3e5bec]\">\n 刚更新\n </span>\n ) : null}\n </div>\n <div className=\"mt-1 flex items-center gap-3 text-[11px] text-[var(--ck-text-muted)]\">\n <span>{row.project}</span>\n <span>{row.iteration === \"--\" ? \"未规划迭代\" : row.iteration}</span>\n {row.linkedRequirement ? <span>需求 {row.linkedRequirement}</span> : null}\n {row.childProgress ? <span>{row.childProgress}</span> : null}\n {typeof row.attachmentCount === \"number\" && row.attachmentCount > 0 ? <span>附件 {row.attachmentCount}</span> : null}\n </div>\n </div>\n );\n}\n\nfunction buildRow(row: Omit<WorkspaceRow, \"cells\">): WorkspaceRow {\n const updatedToday = row.updatedAt === \"2026-04-20\";\n\n return {\n ...row,\n cells: [\n <span className=\"font-medium text-[var(--ck-text-primary)]\">{row.id}</span>,\n <TitleCell row={row} />,\n <PriorityPill value={row.priority} />,\n <StatusPill value={row.status} />,\n <MemberPill value={row.assignee} />,\n <MemberPill value={row.creator} />,\n <span className=\"truncate\">{row.iteration}</span>,\n <span className=\"truncate\">{row.project}</span>,\n <span>{row.dueDate}</span>,\n <span>{row.createdAt}</span>,\n <span\n className={\n updatedToday\n ? \"inline-flex h-6 items-center rounded-full bg-[#edf0fe] px-2 font-medium text-[var(--ck-brand-primary)]\"\n : undefined\n }\n >\n {row.updatedAt}\n </span>,\n ],\n };\n}\n\nfunction DetailActionButton({\n label,\n icon: Icon,\n primary,\n}: {\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n primary?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={`inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] px-3 text-[13px] ${\n primary\n ? \"border border-[var(--ck-text-secondary)] text-[var(--ck-text-secondary)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Icon className=\"mr-1.5 h-4 w-4\" />\n {label}\n </button>\n );\n}\n\nfunction RelationCard({\n label,\n value,\n hint,\n active,\n onClick,\n}: {\n label: string;\n value: string;\n hint: string;\n active?: boolean;\n onClick?: () => void;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`rounded-[var(--ck-radius-sm)] border px-3 py-3 text-left transition-colors ${\n active\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)]\"\n : \"border-[var(--ck-border-subtle)] bg-white hover:border-[var(--ck-brand-active)] hover:bg-[var(--ck-bg-surface-muted)]\"\n }`}\n >\n <div className=\"text-[11px] font-medium uppercase tracking-[0.04em] text-[var(--ck-text-muted)]\">{label}</div>\n <div className=\"mt-1 text-[13px] font-medium text-[var(--ck-text-primary)]\">{value}</div>\n <div className=\"mt-1 text-[12px] text-[var(--ck-text-secondary)]\">{hint}</div>\n </button>\n );\n}\n\nfunction FieldValueShell({\n children,\n quiet,\n editable = true,\n variant = \"default\",\n menu,\n expanded = false,\n onClick,\n}: {\n children: React.ReactNode;\n quiet?: boolean;\n editable?: boolean;\n variant?: \"default\" | \"select\";\n menu?: React.ReactNode;\n expanded?: boolean;\n onClick?: () => void;\n}) {\n return (\n <div className=\"relative inline-flex\">\n <button\n type=\"button\"\n onClick={onClick}\n className={`inline-flex min-h-8 items-center gap-2 rounded-[var(--ck-radius-xs)] border px-2.5 py-1 text-left text-[13px] transition-colors ${\n quiet\n ? \"border-transparent bg-transparent px-0 text-[var(--ck-text-primary)]\"\n : expanded\n ? \"border-[var(--ck-brand-active)] bg-white text-[var(--ck-text-primary)] shadow-[0_0_0_2px_rgba(37,126,250,0.08)]\"\n : \"border-[var(--ck-border-default)] bg-[var(--ck-bg-surface-muted)] text-[var(--ck-text-primary)] hover:border-[var(--ck-brand-active)] hover:bg-white\"\n }`}\n >\n <span className=\"min-w-0\">{children}</span>\n {!quiet && editable ? (\n variant === \"select\" ? (\n <ChevronDown className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n ) : (\n <ChevronRight className=\"h-3.5 w-3.5 shrink-0 text-[var(--ck-text-muted)]\" />\n )\n ) : null}\n </button>\n {expanded && menu ? (\n <div className=\"absolute left-0 top-[calc(100%+6px)] z-10 min-w-[188px] rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white p-1 shadow-[var(--ck-shadow-md)]\">\n {menu}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction FakeMenu({\n items,\n active,\n onSelect,\n}: {\n items: string[];\n active: string;\n onSelect: (value: string) => void;\n}) {\n return (\n <div className=\"space-y-0.5\">\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n onClick={() => onSelect(item)}\n className={`flex w-full items-center justify-between rounded-[var(--ck-radius-xs)] px-2.5 py-2 text-[12px] ${\n item === active\n ? \"bg-[var(--ck-bg-active)] font-medium text-[var(--ck-brand-active)]\"\n : \"text-[var(--ck-text-secondary)] hover:bg-[var(--ck-bg-hover)]\"\n }`}\n >\n <span>{item}</span>\n {item === active ? <span className=\"text-[11px]\">当前</span> : null}\n </button>\n ))}\n </div>\n );\n}\n\nfunction IssueDetailContent({\n row,\n compact,\n activeTab,\n onMutateIssue,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n activeTab: string;\n onMutateIssue: (\n issueId: string,\n patch: Partial<\n Pick<\n WorkspaceRow,\n \"status\" | \"priority\" | \"assignee\" | \"iteration\" | \"updatedAt\" | \"linkedRequirement\" | \"attachmentCount\" | \"childProgress\"\n >\n >,\n ) => void;\n}) {\n const currentRow = row ?? ISSUE_ROWS[4];\n void activeTab;\n const [openField, setOpenField] = React.useState<string | null>(compact ? null : \"status\");\n const [statusValue, setStatusValue] = React.useState(\"开发中\");\n const [priorityValue, setPriorityValue] = React.useState(\"P1\");\n const [assigneeValue, setAssigneeValue] = React.useState(\"黄磊\");\n const [iterationValue, setIterationValue] = React.useState(\"示例迭代\");\n const [activityFilter, setActivityFilter] = React.useState(\"全部\");\n const [commentMode, setCommentMode] = React.useState<\"edit\" | \"preview\">(\"edit\");\n const [commentFocused, setCommentFocused] = React.useState(false);\n const [commentValue, setCommentValue] = React.useState(\"\");\n const [activeLinkedItem, setActiveLinkedItem] = React.useState<string | null>(null);\n const [activeMoreActionGroup, setActiveMoreActionGroup] = React.useState<string | null>(null);\n const detailRef = React.useRef<HTMLDivElement | null>(null);\n\n const initialTimelineItems = React.useMemo<IssueActivityItem[]>(\n () => [\n {\n id: \"#6-邀请成员\",\n title: \"将状态从 未开始 更新为 进行中\",\n meta: \"黄磊 · 今天 16:42\",\n content: \"同步开始实现邀请成员邮箱校验与批量发送链路,并补充侧边栏中的评论编辑器壳与字段区域。\",\n type: \"日志\",\n target: \"#12\",\n },\n {\n id: \"#10-需求拆分\",\n title: \"添加子工作项 #11、#12\",\n meta: \"黄磊 · 今天 15:18\",\n content: \"将接口与前端弹窗拆成两个执行项,便于并行推进和跨端校验。\",\n type: \"日志\",\n target: \"#11\",\n },\n {\n id: \"#10-评论\",\n title: \"补充需求说明\",\n meta: \"系统 · 昨天 20:03\",\n content: \"根据默认规则自动指派负责人,并同步到示例迭代视图中,后续补附件与字段编辑态。\",\n type: \"评论\",\n target: \"BUG-205\",\n },\n ],\n [],\n );\n const [timelineItems, setTimelineItems] = React.useState(initialTimelineItems);\n\n const appendTimelineItem = React.useCallback((item: IssueActivityItem) => {\n setTimelineItems((current) => [item, ...current]);\n }, []);\n\n const mutateIssue = React.useCallback(\n (\n patch: Partial<\n Pick<\n WorkspaceRow,\n \"status\" | \"priority\" | \"assignee\" | \"iteration\" | \"updatedAt\" | \"linkedRequirement\" | \"attachmentCount\" | \"childProgress\"\n >\n >,\n options?: {\n timeline?: IssueActivityItem;\n activeTarget?: string | null;\n },\n ) => {\n onMutateIssue(currentRow.id, patch);\n if (options?.timeline) {\n appendTimelineItem(options.timeline);\n }\n if (options && \"activeTarget\" in options) {\n setActiveLinkedItem(options.activeTarget ?? null);\n }\n },\n [appendTimelineItem, currentRow.id, onMutateIssue],\n );\n\n React.useEffect(() => {\n setOpenField(compact ? null : \"status\");\n setStatusValue(currentRow.status);\n setPriorityValue(currentRow.priority);\n setAssigneeValue(currentRow.assignee);\n setIterationValue(currentRow.iteration);\n setCommentMode(\"edit\");\n setCommentValue(\"\");\n setCommentFocused(false);\n setActiveLinkedItem(null);\n setActiveMoreActionGroup(null);\n setTimelineItems(initialTimelineItems);\n }, [compact, currentRow.assignee, currentRow.id, currentRow.iteration, currentRow.priority, currentRow.status, initialTimelineItems]);\n\n React.useEffect(() => {\n const handlePointerDown = (event: MouseEvent) => {\n if (!detailRef.current) {\n return;\n }\n\n if (detailRef.current.contains(event.target as Node)) {\n return;\n }\n\n setOpenField(null);\n setCommentFocused(false);\n setActiveMoreActionGroup(null);\n };\n\n document.addEventListener(\"mousedown\", handlePointerDown);\n return () => document.removeEventListener(\"mousedown\", handlePointerDown);\n }, []);\n\n const fieldItems = [\n { label: \"项目\", value: <FieldValueShell variant=\"select\">{currentRow.project}</FieldValueShell> },\n {\n label: \"状态\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"status\"}\n onClick={() => setOpenField((current) => (current === \"status\" ? null : \"status\"))}\n menu={\n <FakeMenu\n items={[\"未开始\", \"开发中\", \"已完成\"]}\n active={statusValue}\n onSelect={(value) => {\n mutateIssue(\n { status: value },\n {\n timeline: {\n id: `#10-状态`,\n title: `将状态更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"在事项详情字段区中直接修改状态,保持当前协作上下文不丢失。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setStatusValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <StatusPill value={statusValue} />\n </FieldValueShell>\n ),\n },\n {\n label: \"处理人\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"assignee\"}\n onClick={() => setOpenField((current) => (current === \"assignee\" ? null : \"assignee\"))}\n menu={\n <FakeMenu\n items={[\"黄磊\", \"李静\", \"孙明\"]}\n active={assigneeValue}\n onSelect={(value) => {\n mutateIssue(\n { assignee: value },\n {\n timeline: {\n id: `#10-处理人`,\n title: `将处理人更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"字段变更即时写入动态流,方便团队追踪责任归属变化。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setAssigneeValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <MemberPill value={assigneeValue} />\n </FieldValueShell>\n ),\n },\n { label: \"验证人\", value: <FieldValueShell variant=\"select\">未指定</FieldValueShell> },\n {\n label: \"关联需求\",\n value: <FieldValueShell>{currentRow.linkedRequirement ? currentRow.linkedRequirement : \"未关联需求\"}</FieldValueShell>,\n },\n {\n label: \"迭代\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"iteration\"}\n onClick={() => setOpenField((current) => (current === \"iteration\" ? null : \"iteration\"))}\n menu={\n <FakeMenu\n items={[\"示例迭代\", \"邀请成员\", \"移动端适配\"]}\n active={iterationValue}\n onSelect={(value) => {\n mutateIssue(\n { iteration: value },\n {\n timeline: {\n id: `#10-迭代`,\n title: `将迭代更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"事项已重新归入新的执行节奏中,列表视图与详情字段保持同步。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setIterationValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n {iterationValue}\n </FieldValueShell>\n ),\n },\n { label: \"截止日期\", value: <FieldValueShell>2026/04/22</FieldValueShell> },\n {\n label: \"优先级\",\n value: (\n <FieldValueShell\n variant=\"select\"\n expanded={openField === \"priority\"}\n onClick={() => setOpenField((current) => (current === \"priority\" ? null : \"priority\"))}\n menu={\n <FakeMenu\n items={[\"P0\", \"P1\", \"P2\", \"P3\"]}\n active={priorityValue}\n onSelect={(value) => {\n mutateIssue(\n { priority: value },\n {\n timeline: {\n id: `#10-优先级`,\n title: `将优先级更新为 ${value}`,\n meta: \"黄磊 · 刚刚\",\n content: \"优先级调整会影响团队排序与视图筛选,也是对象协作历史的一部分。\",\n type: \"日志\",\n target: currentRow.id,\n },\n activeTarget: currentRow.id,\n },\n );\n setPriorityValue(value);\n setOpenField(null);\n }}\n />\n }\n >\n <PriorityPill value={priorityValue} />\n </FieldValueShell>\n ),\n },\n { label: \"事项类型\", value: <FieldValueShell variant=\"select\">需求类型</FieldValueShell> },\n { label: \"子事项\", value: <FieldValueShell>{currentRow.childProgress ?? \"暂无子事项\"}</FieldValueShell> },\n {\n label: \"附件\",\n value: <FieldValueShell>{typeof currentRow.attachmentCount === \"number\" ? `${currentRow.attachmentCount} 个附件` : \"暂无附件\"}</FieldValueShell>,\n },\n { label: \"创建时间\", value: <FieldValueShell quiet editable={false}>2020/01/29</FieldValueShell> },\n { label: \"工时\", value: <FieldValueShell>未预估: 8 小时</FieldValueShell> },\n ];\n\n const childItems = [\n {\n label: \"#11 增加批量发送邀请邮件接口\",\n value: <StatusPill value=\"未开始\" />,\n active: activeLinkedItem === \"#11\",\n onClick: () => {\n mutateIssue(\n { childProgress: \"1/2 子事项\" },\n {\n timeline: {\n id: \"#10-子事项-11\",\n title: \"同步子工作项 #11 的执行进展\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项摘要更新为 1/2 子事项,列表标题下方的进度说明即时同步。\",\n type: \"日志\",\n target: \"#11\",\n },\n activeTarget: \"#11\",\n },\n );\n },\n },\n {\n label: \"#12 增加邮件邀请成员弹窗并完成邀请成员交互功能\",\n value: <StatusPill value=\"进行中\" />,\n active: activeLinkedItem === \"#12\",\n onClick: () => {\n mutateIssue(\n { childProgress: \"2/2 子事项\" },\n {\n timeline: {\n id: \"#10-子事项-12\",\n title: \"同步子工作项 #12 的执行进展\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项摘要更新为 2/2 子事项,方便在列表中直接看到分解项收口情况。\",\n type: \"日志\",\n target: \"#12\",\n },\n activeTarget: \"#12\",\n },\n );\n },\n },\n ];\n\n const relatedDefects = [\n {\n label: \"BUG-205 批量发送邀请邮件接口超时后前端无错误提示\",\n value: <StatusPill value=\"待修复\" />,\n active: activeLinkedItem === \"BUG-205\",\n onClick: () => setActiveLinkedItem(\"BUG-205\"),\n },\n {\n label: \"BUG-209 Safari 下无法正确粘贴多邮箱地址\",\n value: <StatusPill value=\"修复中\" />,\n active: activeLinkedItem === \"BUG-209\",\n onClick: () => setActiveLinkedItem(\"BUG-209\"),\n },\n ];\n\n const visibleTimelineItems = timelineItems.filter((item) => {\n if (activityFilter === \"只看日志\") {\n return item.type === \"日志\";\n }\n\n if (activityFilter === \"只看评论\") {\n return item.type === \"评论\";\n }\n\n return true;\n });\n\n return (\n <div ref={detailRef} className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex-1 overflow-auto\">\n <div className={`grid gap-6 px-4 py-5 sm:px-5 ${compact ? \"grid-cols-1\" : \"grid-cols-[minmax(0,1fr)_248px]\"}`}>\n <div className=\"min-w-0\">\n <div className=\"flex flex-wrap items-center gap-x-4 gap-y-2 text-[12px] text-[var(--ck-text-muted)]\">\n <button type=\"button\" className=\"rounded-[var(--ck-radius-xs)] px-1 py-0.5 hover:bg-[var(--ck-bg-hover)]\">\n #6\n </button>\n <button\n type=\"button\"\n className=\"rounded-[var(--ck-radius-xs)] px-1 py-0.5 font-medium text-[var(--ck-brand-primary)] hover:bg-[var(--ck-bg-active)]\"\n >\n #10\n </button>\n <span>发起需求讨论</span>\n <span>1 人关注</span>\n <button\n type=\"button\"\n onClick={() => setActiveLinkedItem(\"#6\")}\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 引用父事项\n </button>\n <button\n type=\"button\"\n onClick={() =>\n mutateIssue(\n { linkedRequirement: currentRow.linkedRequirement ?? \"REQ-88\" },\n {\n timeline: {\n id: \"#10-关联需求\",\n title: `关联需求 ${currentRow.linkedRequirement ?? \"REQ-88\"}`,\n meta: \"黄磊 · 刚刚\",\n content: \"对象关系在详情头部与列表摘要中保持同步,便于跨模块追溯。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n )\n }\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 关联需求\n </button>\n <button\n type=\"button\"\n className=\"inline-flex h-6 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] px-2 text-[11px] text-[var(--ck-text-secondary)] hover:border-[var(--ck-brand-active)] hover:text-[var(--ck-brand-active)]\"\n >\n 复制链接\n </button>\n <FieldValueShell\n variant=\"default\"\n expanded={openField === \"header-actions\"}\n onClick={() => setOpenField((current) => (current === \"header-actions\" ? null : \"header-actions\"))}\n menu={\n <FakeMenu\n items={[\"复制事项链接\", \"添加到收藏\", \"归档事项\"]}\n active=\"复制事项链接\"\n onSelect={(value) => {\n setActiveMoreActionGroup(value);\n setOpenField(null);\n }}\n />\n }\n >\n 更多引用\n </FieldValueShell>\n </div>\n <h2\n className={`mt-3 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n {currentRow.title}\n </h2>\n <div className=\"mt-3 flex flex-wrap items-center gap-2\">\n <StatusPill value={statusValue} />\n <PriorityPill value={priorityValue} />\n <TypeBadge value={currentRow.ticketType} />\n <FieldValueShell quiet editable={false}>\n 当前处理人:{assigneeValue}\n </FieldValueShell>\n </div>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {ISSUE_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n <button\n type=\"button\"\n onClick={() => setOpenField((current) => (current === \"more-actions\" ? null : \"more-actions\"))}\n className={`inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border px-3 text-[13px] ${\n openField === \"more-actions\"\n ? \"border-[var(--ck-brand-active)] bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n 更多操作\n </button>\n </div>\n <DetailSection title=\"对象关系\">\n <div className=\"grid gap-2 sm:grid-cols-2\">\n <RelationCard\n label=\"父事项\"\n value=\"#6 发起需求讨论\"\n hint=\"延续上游上下文与关注人\"\n active={activeLinkedItem === \"#6\"}\n onClick={() => setActiveLinkedItem(\"#6\")}\n />\n <RelationCard\n label=\"关联需求\"\n value={currentRow.linkedRequirement ?? \"未关联\"}\n hint={currentRow.linkedRequirement ? \"已进入上游需求链路\" : \"点击后建立需求引用\"}\n active={activeLinkedItem === \"REQ-88\"}\n onClick={() =>\n mutateIssue(\n { linkedRequirement: currentRow.linkedRequirement ?? \"REQ-88\" },\n {\n timeline: currentRow.linkedRequirement\n ? undefined\n : {\n id: \"#10-需求关联\",\n title: \"建立了一个上游需求关联\",\n meta: \"黄磊 · 刚刚\",\n content: \"关联需求后,列表摘要和详情关系卡会同时呈现该对象链路。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n )\n }\n />\n <RelationCard\n label=\"子事项\"\n value={currentRow.childProgress ?? \"暂无\"}\n hint=\"点击子工作项可同步父事项摘要\"\n active={activeLinkedItem === \"#11\" || activeLinkedItem === \"#12\"}\n onClick={() => setActiveLinkedItem(currentRow.childProgress === \"2/2 子事项\" ? \"#12\" : \"#11\")}\n />\n <RelationCard\n label=\"附件\"\n value={`${currentRow.attachmentCount ?? 0} 个附件`}\n hint=\"设计稿、截图、接口文档统一挂载\"\n active={activeLinkedItem === \"#10-attachment\"}\n onClick={() => setActiveLinkedItem(\"#10-attachment\")}\n />\n </div>\n </DetailSection>\n {openField === \"more-actions\" ? (\n <div className=\"mt-2 grid max-w-[420px] gap-2 md:grid-cols-[220px_1fr]\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white p-1 shadow-[var(--ck-shadow-md)]\">\n <FakeMenu\n items={[\"复制事项链接\", \"移动到迭代\", \"转为子事项\", \"归档事项\"]}\n active={activeMoreActionGroup ?? \"复制事项链接\"}\n onSelect={setActiveMoreActionGroup}\n />\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-default)] bg-white px-3 py-3 text-[12px] text-[var(--ck-text-secondary)] shadow-[var(--ck-shadow-md)]\">\n {activeMoreActionGroup === \"移动到迭代\" ? \"将当前事项移动到其他迭代,并同步列表和视图。\" : null}\n {activeMoreActionGroup === \"转为子事项\" ? \"把当前事项挂到另一个父事项下,继承其协作上下文。\" : null}\n {activeMoreActionGroup === \"归档事项\" ? \"归档后从默认视图中移除,但仍保留可追溯记录。\" : null}\n {!activeMoreActionGroup || activeMoreActionGroup === \"复制事项链接\"\n ? \"复制后可用于评论、讨论或跨模块引用。\"\n : null}\n </div>\n </div>\n ) : null}\n\n {compact ? <DetailMetaGrid compact items={fieldItems.slice(0, 6)} /> : null}\n\n <DetailSection title=\"描述\" actionLabel=\"编辑描述\">\n <p>\n 管理员在后台成员管理页可点击“邀请成员”按钮,打开成员邀请弹窗。支持输入一个或多个邮箱地址,\n 并基于团队预设角色完成初始权限分配。\n </p>\n <p>\n 邀请请求提交后,系统需要校验邮箱格式、去重、过滤已加入成员,并生成对应的邀请记录。同时,\n 需要支持批量发送邀请邮件,便于管理员集中完成外部成员的引入操作。\n </p>\n </DetailSection>\n\n <DetailSection title=\"附件\" actionLabel=\"上传附件\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-dashed border-[var(--ck-border-default)] bg-[var(--ck-bg-surface-muted)] px-4 py-4 text-[13px] text-[var(--ck-text-secondary)]\">\n {currentRow.attachmentCount && currentRow.attachmentCount > 0 ? (\n <div className=\"space-y-2\">\n <div>当前已上传 {currentRow.attachmentCount} 个附件,列表摘要会同步展示。</div>\n <button\n type=\"button\"\n onClick={() => {\n mutateIssue(\n { attachmentCount: (currentRow.attachmentCount ?? 0) + 1 },\n {\n timeline: {\n id: \"#10-附件\",\n title: \"上传了新的附件\",\n meta: \"黄磊 · 刚刚\",\n content: \"附件上传后,列表标题下方的摘要同步显示附件数量。\",\n type: \"日志\",\n target: \"#10-attachment\",\n },\n activeTarget: \"#10-attachment\",\n },\n );\n }}\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-secondary)]\"\n >\n 再上传一个附件\n </button>\n </div>\n ) : (\n <div className=\"space-y-2\">\n <div>当前暂无附件,可上传 PR 截图、交互说明或接口文档。</div>\n <button\n type=\"button\"\n onClick={() => {\n mutateIssue(\n { attachmentCount: 1 },\n {\n timeline: {\n id: \"#10-附件\",\n title: \"上传了第一个附件\",\n meta: \"黄磊 · 刚刚\",\n content: \"附件上传后,列表标题下方的摘要同步显示附件数量。\",\n type: \"日志\",\n target: \"#10-attachment\",\n },\n activeTarget: \"#10-attachment\",\n },\n );\n }}\n className=\"inline-flex h-8 items-center rounded-[var(--ck-radius-xs)] border border-[var(--ck-border-default)] bg-white px-3 text-[13px] text-[var(--ck-text-secondary)]\"\n >\n 模拟上传附件\n </button>\n </div>\n )}\n </div>\n </DetailSection>\n\n <DetailListSection title=\"子工作项\" items={childItems} />\n\n <DetailListSection title=\"关联缺陷\" items={relatedDefects} />\n\n <DetailListSection\n title=\"关联需求\"\n items={[\n {\n label: currentRow.linkedRequirement\n ? `${currentRow.linkedRequirement} 邀请成员加入团队能力增强`\n : \"关联一个上游需求\",\n value: currentRow.linkedRequirement ? \"已关联\" : \"未关联\",\n active: activeLinkedItem === \"REQ-88\",\n onClick: () => {\n mutateIssue(\n { linkedRequirement: \"REQ-88\" },\n {\n timeline: currentRow.linkedRequirement\n ? undefined\n : {\n id: \"#10-关联需求\",\n title: \"建立了一个上游需求关联\",\n meta: \"黄磊 · 刚刚\",\n content: \"父事项已经与需求池中的目标对象打通,后续可沿链路继续追踪。\",\n type: \"日志\",\n target: \"REQ-88\",\n },\n activeTarget: \"REQ-88\",\n },\n );\n },\n },\n ]}\n />\n\n <DetailFilterTabs\n items={[\n { label: \"全部\", active: activityFilter === \"全部\" },\n { label: \"只看日志\", active: activityFilter === \"只看日志\" },\n { label: \"只看评论\", active: activityFilter === \"只看评论\" },\n ]}\n onSelect={setActivityFilter}\n />\n\n <DetailTimeline\n items={visibleTimelineItems.map((item) => ({\n ...item,\n active: activeLinkedItem === item.target,\n onClick: () => setActiveLinkedItem(item.target),\n }))}\n />\n\n <DetailCommentComposer\n placeholder=\"在此输入评论内容(支持 Markdown)\"\n mode={commentMode}\n focused={commentFocused}\n onModeChange={setCommentMode}\n onFocus={() => setCommentFocused(true)}\n value={commentValue}\n onChange={setCommentValue}\n onPublish={() => {\n if (!commentValue.trim()) {\n return;\n }\n\n setTimelineItems((current) => [\n {\n id: \"#10-新评论\",\n title: \"发表了一条评论\",\n meta: \"黄磊 · 刚刚\",\n content: commentValue,\n type: \"评论\",\n target: currentRow.linkedRequirement ?? currentRow.id,\n },\n ...current,\n ]);\n setCommentValue(\"\");\n setCommentMode(\"edit\");\n setCommentFocused(false);\n setActiveLinkedItem(currentRow.linkedRequirement ?? currentRow.id);\n }}\n />\n\n {compact ? <DetailFieldPanel title=\"更多字段\" items={fieldItems} /> : null}\n </div>\n\n {!compact ? <DetailFieldPanel items={fieldItems} /> : null}\n </div>\n </div>\n </div>\n );\n}\n\nfunction DefectDetailContent({\n row,\n compact,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n}) {\n const currentRow = row ?? DEFECT_ROWS[0];\n\n return (\n <div className=\"flex-1 overflow-auto px-4 py-5 sm:px-5\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Bug className=\"h-3.5 w-3.5\" />\n <span>{currentRow.ticketType} {currentRow.id}</span>\n </div>\n <h2\n className={`mt-2 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n 登录页输入正确的用户名和密码后提示“用户不存在”\n </h2>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {DEFECT_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n </div>\n\n <DetailMetaGrid\n compact={compact}\n items={[\n { label: \"状态\", value: currentRow.status },\n { label: \"优先级\", value: currentRow.priority },\n { label: \"严重程度\", value: currentRow.severity ?? \"中\" },\n { label: \"处理人\", value: currentRow.assignee },\n ]}\n />\n\n <DetailSection title=\"复现步骤\" actionLabel=\"编辑步骤\">\n <p>1. 打开登录页并输入测试账号 `demo_admin@example.com`。</p>\n <p>2. 输入系统分配的正确密码后点击“登录”。</p>\n <p>3. 页面未进入工作台,而是在顶部提示“用户不存在”。</p>\n </DetailSection>\n\n <DetailSection title=\"影响分析\">\n <p>\n 该问题直接影响正式用户登录主链路,属于高价值路径阻断型缺陷。当前在 Chrome 中可稳定复现,\n 回归测试需要覆盖账号校验、错误提示映射与登录态写入三个阶段。\n </p>\n </DetailSection>\n\n <DetailListSection\n title=\"关联项\"\n items={[\n { label: \"关联需求 #102 登录链路重构\", value: \"已关联\" },\n { label: \"修复提交 commit/3af91b2\", value: \"待合并\" },\n ]}\n />\n </div>\n );\n}\n\nfunction ApprovalDetailContent({\n row,\n compact,\n}: {\n row: WorkspaceRow | undefined;\n compact: boolean;\n}) {\n const currentRow = row ?? APPROVAL_ROWS[0];\n\n return (\n <div className=\"flex-1 overflow-auto px-4 py-5 sm:px-5\">\n <div className=\"flex items-center gap-2 text-[12px] text-[var(--ck-text-muted)]\">\n <Workflow className=\"h-3.5 w-3.5\" />\n <span>{currentRow.ticketType} {currentRow.id}</span>\n </div>\n <h2\n className={`mt-2 font-semibold leading-[1.35] text-[var(--ck-text-primary)] ${\n compact ? \"text-[18px]\" : \"text-[22px]\"\n }`}\n >\n 供应商付款审批 / 华东代理结算单\n </h2>\n <div className=\"mt-4 flex flex-wrap gap-2\">\n {APPROVAL_ACTIONS.map((action) => (\n <DetailActionButton\n key={action.label}\n label={action.label}\n icon={action.icon}\n primary={action.primary}\n />\n ))}\n </div>\n\n <DetailMetaGrid\n compact={compact}\n items={[\n { label: \"当前状态\", value: currentRow.status },\n { label: \"当前节点\", value: currentRow.iteration },\n { label: \"处理人\", value: currentRow.assignee },\n { label: \"发起人\", value: currentRow.creator },\n { label: \"申请金额\", value: \"186,000 元\" },\n { label: \"付款主体\", value: \"上海梦体科技有限公司\" },\n ]}\n />\n\n <DetailSection title=\"审批摘要\" actionLabel=\"编辑说明\">\n <p>申请内容为华东代理 2026 年 3 月结算款支付,申请金额 186,000 元。</p>\n <p>当前已完成业务负责人审批,流转至财务复核节点,待校验发票与付款账户信息。</p>\n </DetailSection>\n\n <DetailListSection\n title=\"关键信息\"\n items={[\n { label: \"结算周期 / 2026-03-01 至 2026-03-31\", value: \"月度结算\" },\n { label: \"付款方式 / 对公转账\", value: \"财务执行\" },\n { label: \"所属业务线 / 华东代理渠道\", value: \"渠道运营\" },\n { label: \"预算科目 / 渠道返佣\", value: \"已占用预算\" },\n ]}\n />\n\n <DetailSection title=\"风险提示\">\n <p>当前审批单金额高于近 90 天同类付款单均值,建议复核返佣计算口径与合同补充条款。</p>\n <p>系统检测到发票附件已上传,但付款账户信息仍待财务核验,放款前需要确认开户行与合同主体一致。</p>\n </DetailSection>\n\n <DetailSection title=\"流程节点\">\n <p>1. 发起申请</p>\n <p>2. 业务负责人审批</p>\n <p>3. 财务复核</p>\n <p>4. 总监确认并出纳付款</p>\n </DetailSection>\n\n <DetailListSection\n title=\"审批时序\"\n items={[\n { label: \"发起申请 / 王敏 / 2026-04-18 09:16\", value: \"已完成\" },\n { label: \"业务负责人审批 / 赵一 / 2026-04-18 11:02\", value: \"已同意\" },\n { label: \"财务复核 / 黄磊 / 2026-04-19 10:24\", value: \"当前节点\" },\n { label: \"总监确认 / 陈总\", value: \"待处理\" },\n ]}\n />\n\n <DetailSection title=\"审批意见\">\n <p>业务负责人:结算依据与代理回款对账单一致,同意进入财务复核。</p>\n <p>财务备注:请补充 3 月返佣明细中的两笔线下活动费用说明,并确认开户名与合同主体一致后继续流转。</p>\n </DetailSection>\n\n <DetailListSection\n title=\"附件与凭证\"\n items={[\n { label: \"代理结算对账单.pdf\", value: \"已上传\" },\n { label: \"3 月返佣明细.xlsx\", value: \"已上传\" },\n { label: \"发票扫描件.zip\", value: \"已上传\" },\n { label: \"补充情况说明.docx\", value: \"待补充\" },\n ]}\n />\n\n <DetailListSection\n title=\"处理记录\"\n items={[\n { label: \"业务负责人 / 已同意 / 2026-04-18 10:42\", value: \"已完成\" },\n { label: \"财务复核 / 待处理 / 2026-04-19 09:30\", value: \"当前节点\" },\n ]}\n />\n\n <DetailListSection\n title=\"关联信息\"\n items={[\n { label: \"关联合同 / 华东渠道年度续签协议\", value: \"已关联\" },\n { label: \"关联预算单 / Q1 渠道返佣预算\", value: \"已关联\" },\n { label: \"关联供应商 / 华东代理伙伴\", value: \"已关联\" },\n ]}\n />\n </div>\n );\n}\n\nexport function CollaborationConsolePreview() {\n const [mode, setMode] = React.useState<PreviewMode>(\"goal-management\");\n const [issueRowsState, setIssueRowsState] = React.useState(() => ISSUE_ROW_SEED.map((row) => ({ ...row })));\n const [dashboardCustomMode, setDashboardCustomMode] = React.useState(false);\n const [dashboardWidgets, setDashboardWidgets] = React.useState(() => DASHBOARD_WIDGETS.map((widget) => ({ ...widget })));\n\n const issueRows = React.useMemo(\n () => issueRowsState.map((row) => buildRow(row)),\n [issueRowsState],\n );\n const issueRowsAssignedToMe = React.useMemo(\n () => issueRowsState.filter((row) => row.assignee === \"黄磊\"),\n [issueRowsState],\n );\n const issueRowsActive = React.useMemo(\n () => issueRowsState.filter((row) => row.status === \"进行中\" || row.status === \"开发中\"),\n [issueRowsState],\n );\n\n const workspaceConfig = React.useMemo(() => {\n if (mode === \"dashboard\") {\n return null;\n }\n\n if (mode === \"defect\") {\n return {\n sectionName: \"缺陷\",\n sidebarViews: DEFECT_VIEWS,\n rows: DEFECT_ROWS,\n createButtonLabel: \"创建缺陷\",\n filterLabel: \"筛选 4个条件\",\n filterChips: [\"状态 待修复,待验证\", \"严重程度 高,致命\", \"处理人 全部\", \"标签 登录链路\"],\n secondaryFilterLabel: \"字段 11 个\",\n savedViewLabel: undefined,\n resultsSummary: \"共 18 条缺陷,已按严重程度与状态筛选\",\n batchActions: undefined,\n detailLabel: \"缺陷详情\",\n detailTabs: undefined,\n defaultSelectedRowId: \"BUG-218\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <DefectDetailContent row={row} compact={context.compact} />\n ),\n };\n }\n\n if (mode === \"approval\") {\n return {\n sectionName: \"审批\",\n sidebarViews: APPROVAL_VIEWS,\n rows: APPROVAL_ROWS,\n createButtonLabel: \"发起审批\",\n filterLabel: \"筛选 4个条件\",\n filterChips: [\"状态 审批中,待我审批\", \"当前节点 财务复核\", \"发起人 全部\", \"类型 付款审批\"],\n secondaryFilterLabel: \"字段 9 个\",\n savedViewLabel: undefined,\n resultsSummary: \"共 27 条审批单,当前视图展示与我相关的审批流\",\n batchActions: undefined,\n detailLabel: \"审批详情\",\n detailTabs: undefined,\n defaultSelectedRowId: \"AP-302\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <ApprovalDetailContent row={row} compact={context.compact} />\n ),\n };\n }\n\n return {\n sectionName: \"事项\",\n sidebarSections: ISSUE_SIDEBAR_SECTIONS,\n sidebarViews: ISSUE_VIEWS,\n rows: issueRows,\n createButtonLabel: \"创建事项\",\n filterLabel: \"筛选 3个条件\",\n secondaryFilterLabel: undefined,\n savedViewLabel: undefined,\n filterChips: [\n \"状态类型 未开始,进行中,开发中\",\n `处理人 黄磊(${issueRowsAssignedToMe.length})`,\n `进行中 ${issueRowsActive.length} 项`,\n ],\n resultsSummary: `显示 ${issueRowsAssignedToMe.length} / ${issueRows.length} 条事项,最近更新于 2026-04-20 的事项已高亮`,\n batchActions: undefined,\n detailLabel: \"事项详情\",\n detailTabs: [],\n defaultSelectedRowId: \"#10\",\n renderDetailContent: (\n row: WorkspaceRow | undefined,\n context: { compact: boolean; activeTab: string },\n ) => (\n <IssueDetailContent\n row={row}\n compact={context.compact}\n activeTab={context.activeTab}\n onMutateIssue={(issueId, patch) => {\n setIssueRowsState((current) =>\n current.map((item) =>\n item.id === issueId\n ? {\n ...item,\n ...patch,\n updatedAt: \"2026-04-20\",\n }\n : item,\n ),\n );\n }}\n />\n ),\n };\n }, [issueRows, issueRowsActive.length, issueRowsAssignedToMe.length, mode]);\n\n return (\n <div className=\"space-y-3\">\n <div className=\"coding-kit rounded-[10px] border border-[var(--ck-border-subtle)] bg-white px-4 py-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div>\n <div className=\"text-[13px] font-semibold text-[var(--ck-text-primary)]\">Workspace Templates</div>\n <div className=\"mt-0.5 text-[12px] text-[var(--ck-text-muted)]\">\n 一边复刻 CODING 的业务模块,一边抽象成可复用模板\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setMode(\"goal-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"goal-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Workflow className=\"mr-1.5 h-4 w-4\" />\n OKR 目标\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"project-overview\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"project-overview\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FolderKanban className=\"mr-1.5 h-4 w-4\" />\n 项目概览\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"document-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"document-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FileText className=\"mr-1.5 h-4 w-4\" />\n 文档资料\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"resource-management\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"resource-management\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <UserCog className=\"mr-1.5 h-4 w-4\" />\n 资源台账\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"build-plan-list\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"build-plan-list\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <CalendarClock className=\"mr-1.5 h-4 w-4\" />\n 构建列表\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"build-plan\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"build-plan\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <Code2 className=\"mr-1.5 h-4 w-4\" />\n 构建计划\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"dashboard\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"dashboard\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <LayoutGrid className=\"mr-1.5 h-4 w-4\" />\n 仪表盘\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"issue\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"issue\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <FileText className=\"mr-1.5 h-4 w-4\" />\n 事项\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"defect\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"defect\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <ShieldAlert className=\"mr-1.5 h-4 w-4\" />\n 缺陷\n </button>\n <button\n type=\"button\"\n onClick={() => setMode(\"approval\")}\n className={`inline-flex h-7 items-center rounded-[4px] px-3 text-[12px] ${\n mode === \"approval\"\n ? \"bg-[var(--ck-bg-active)] text-[var(--ck-brand-active)]\"\n : \"border border-[var(--ck-border-default)] text-[var(--ck-text-secondary)]\"\n }`}\n >\n <CheckCheck className=\"mr-1.5 h-4 w-4\" />\n 审批\n </button>\n </div>\n </div>\n </div>\n\n {mode === \"goal-management\" ? (\n <GoalManagementPagePreview />\n ) : mode === \"project-overview\" ? (\n <ProjectOverviewPagePreview />\n ) : mode === \"document-management\" ? (\n <DocumentManagementPagePreview />\n ) : mode === \"resource-management\" ? (\n <ResourceManagementPagePreview />\n ) : mode === \"build-plan-list\" ? (\n <BuildPlanListPagePreview />\n ) : mode === \"build-plan\" ? (\n <BuildPlanStarterPagePreview />\n ) : mode === \"dashboard\" ? (\n <DashboardWorkspace\n productItems={DASHBOARD_PRODUCT_ITEMS}\n projectName=\"mengti\"\n title=\"仪表盘\"\n userName=\"黄磊\"\n systemNotice=\"CODING DevOps 标准版产品已于 2025 年 9 月 1 日下线,无法进行写操作;详情可查看下线公告\"\n tabs={DASHBOARD_TABS}\n alertMessage=\"你有 8 个事项正在进行中,请及时处理\"\n widgets={dashboardWidgets}\n widgetCatalog={DASHBOARD_WIDGET_CATALOG}\n customMode={dashboardCustomMode}\n onToggleCustomMode={() => setDashboardCustomMode((current) => !current)}\n onAddWidget={(widgetId) => {\n setDashboardWidgets((current) => {\n if (current.some((widget) => widget.id === widgetId)) {\n return current;\n }\n\n const widget = DASHBOARD_WIDGET_LIBRARY.find((item) => item.id === widgetId);\n return widget ? [...current, { ...widget }] : current;\n });\n }}\n onRemoveWidget={(widgetId) => {\n setDashboardWidgets((current) => current.filter((widget) => widget.id !== widgetId));\n }}\n onResetWidgets={() => {\n setDashboardWidgets(DASHBOARD_WIDGETS.map((widget) => ({ ...widget })));\n }}\n />\n ) : workspaceConfig ? (\n <IssueWorkspace\n productItems={PRODUCT_ITEMS}\n sidebarViews={workspaceConfig.sidebarViews}\n sidebarSections={workspaceConfig.sidebarSections}\n tableHeaders={TABLE_HEADERS}\n rows={workspaceConfig.rows}\n projectName=\"mengti\"\n sectionName={workspaceConfig.sectionName}\n userName=\"黄磊\"\n createButtonLabel={workspaceConfig.createButtonLabel}\n filterLabel={workspaceConfig.filterLabel}\n secondaryFilterLabel={workspaceConfig.secondaryFilterLabel}\n savedViewLabel={workspaceConfig.savedViewLabel}\n filterChips={workspaceConfig.filterChips}\n resultsSummary={workspaceConfig.resultsSummary}\n batchActions={workspaceConfig.batchActions}\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 ·1个条件\"\n detailLabel={workspaceConfig.detailLabel}\n detailTabs={workspaceConfig.detailTabs}\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId={workspaceConfig.defaultSelectedRowId}\n renderDetailContent={workspaceConfig.renderDetailContent}\n />\n ) : null}\n\n {mode === \"dashboard\" ? (\n <div className=\"coding-kit rounded-[10px] border border-dashed border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] px-4 py-3\">\n <div className=\"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ck-text-secondary)]\">\n <LayoutGrid className=\"h-4 w-4 text-[var(--ck-text-muted)]\" />\n <span className=\"font-medium text-[var(--ck-text-primary)]\">仪表盘模板关注点</span>\n <span>围绕团队执行态工作台、轻量 widget 自定义和待办暴露沉淀 dashboard block。</span>\n </div>\n </div>\n ) : (\n <div className=\"coding-kit grid gap-3 rounded-[10px] border border-[var(--ck-border-subtle)] bg-white p-4 lg:grid-cols-2\">\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Code2 className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 构建计划模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕项目内能力地图、二级导航和模板起手式选择展开</li>\n <li>核心不是表单,而是先帮助用户选对流程模板</li>\n <li>适合沉淀 project sidebar、template picker 和 starter page template</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <LayoutGrid className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 仪表盘模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>不是通用 BI,而是围绕团队执行态的工作台式信息聚合</li>\n <li>核心是可自定义 widget 网格、轻操作和待处理事项暴露</li>\n <li>适合沉淀 dashboard widget、board block 和具体工作台 template</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <FileText className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 事项模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕需求、任务、子工作项联动展开</li>\n <li>详情侧更偏描述、分解和协作动作</li>\n <li>适合做规划和执行过程中的主工作区</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Workflow className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 目标模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>不是目标总览表,而是目标对象的双栏工作台</li>\n <li>详情侧必须承接关键结果、关联事项和协作记录</li>\n <li>适合沉淀 goal workspace、okr object editor 和目标驱动的协同模板</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <AlertTriangle className=\"h-4 w-4 text-[var(--ck-warning-text)]\" />\n 缺陷模板关注点\n </div>\n <ul className=\"mt-3 space-y-2 text-[13px] text-[var(--ck-text-secondary)]\">\n <li>围绕严重程度、复现步骤、验证状态展开</li>\n <li>详情侧更偏诊断、修复、回归和关联提交</li>\n <li>适合接测试流程与插件化日志分析面板</li>\n </ul>\n </div>\n <div className=\"rounded-[var(--ck-radius-sm)] border border-[var(--ck-border-subtle)] bg-[var(--ck-bg-surface-muted)] p-4 lg:col-span-2\">\n <div className=\"flex items-center gap-2 text-[13px] font-medium text-[var(--ck-text-primary)]\">\n <Workflow className=\"h-4 w-4 text-[var(--ck-brand-primary)]\" />\n 审批模板关注点\n </div>\n <ul className=\"mt-3 grid gap-2 text-[13px] text-[var(--ck-text-secondary)] md:grid-cols-3\">\n <li>围绕流程节点、当前状态、审批意见和审批人展开</li>\n <li>详情侧更偏流程摘要、节点说明与继续流转动作</li>\n <li>适合接规则校验、外部系统同步和审批辅助插件</li>\n </ul>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport function IssueTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={ISSUE_VIEWS}\n sidebarSections={ISSUE_SIDEBAR_SECTIONS}\n tableHeaders={TABLE_HEADERS}\n rows={ISSUE_ROWS}\n projectName=\"mengti\"\n sectionName=\"事项\"\n userName=\"黄磊\"\n createButtonLabel=\"创建事项\"\n filterLabel=\"筛选 3个条件\"\n filterChips={[\"状态类型 未开始,进行中\", \"处理人 黄磊\", \"事项类型 全部\"]}\n resultsSummary=\"显示 6 / 24 条事项\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 ·1个条件\"\n detailLabel=\"事项详情\"\n detailTabs={[]}\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"#10\"\n renderDetailContent={(row, context) => (\n <IssueDetailContent\n row={row}\n compact={context.compact}\n activeTab={context.activeTab}\n onMutateIssue={() => undefined}\n />\n )}\n />\n );\n}\n\nexport function DefectTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={DEFECT_VIEWS}\n tableHeaders={TABLE_HEADERS}\n rows={DEFECT_ROWS}\n projectName=\"mengti\"\n sectionName=\"缺陷\"\n userName=\"黄磊\"\n createButtonLabel=\"创建缺陷\"\n filterLabel=\"筛选 4个条件\"\n secondaryFilterLabel=\"字段 11 个\"\n filterChips={[\"状态 待修复,待验证\", \"严重程度 高,致命\", \"处理人 全部\", \"标签 登录链路\"]}\n resultsSummary=\"共 18 条缺陷,已按严重程度与状态筛选\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 · 1个条件\"\n detailLabel=\"缺陷详情\"\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"BUG-218\"\n renderDetailContent={(row, context) => (\n <DefectDetailContent row={row} compact={context.compact} />\n )}\n />\n );\n}\n\nexport function ApprovalTemplateWorkspacePreview({\n className,\n}: {\n className?: string;\n}) {\n return (\n <IssueWorkspace\n className={className}\n productItems={PRODUCT_ITEMS}\n sidebarViews={APPROVAL_VIEWS}\n tableHeaders={TABLE_HEADERS}\n rows={APPROVAL_ROWS}\n projectName=\"mengti\"\n sectionName=\"审批\"\n userName=\"黄磊\"\n createButtonLabel=\"发起审批\"\n filterLabel=\"筛选 4个条件\"\n secondaryFilterLabel=\"字段 9 个\"\n filterChips={[\"状态 审批中,待我审批\", \"当前节点 财务复核\", \"发起人 全部\", \"类型 付款审批\"]}\n resultsSummary=\"共 27 条审批单,当前视图展示与我相关的审批流\"\n searchPlaceholder=\"标题或描述\"\n sortLabel=\"排序 · 1个条件\"\n detailLabel=\"审批详情\"\n detailButtonLabel=\"查看详情\"\n viewportLocked={false}\n defaultSelectedRowId=\"AP-302\"\n renderDetailContent={(row, context) => (\n <ApprovalDetailContent row={row} compact={context.compact} />\n )}\n />\n );\n}\n","import * as React from 'react';\nimport { CheckCircle2, Clock3, Plus, Search } from 'lucide-react';\n\nimport {\n CodingButton,\n CodingInput,\n CodingListDetailWorkspace,\n CodingPanel,\n} from '../public';\n\ninterface PreviewItem {\n id: string;\n title: string;\n description: string;\n owner: string;\n status: '进行中' | '待处理' | '已完成';\n updatedAt: string;\n}\n\nconst PREVIEW_ITEMS: PreviewItem[] = [\n {\n id: 'issue-101',\n title: '完成扩展路由恢复回归',\n description: '验证复制链接后扩展、页签和资源状态是否一致恢复。',\n owner: '黄磊',\n status: '进行中',\n updatedAt: '今天 10:24',\n },\n {\n id: 'issue-102',\n title: '整理成员邀请的错误状态',\n description: '统一邀请成功、失败、过期和重复邀请的反馈路径。',\n owner: '李静',\n status: '待处理',\n updatedAt: '昨天 16:10',\n },\n {\n id: 'issue-103',\n title: '补充移动端详情返回路径',\n description: '列表和详情之间切换时保留筛选条件与局部状态。',\n owner: '王宁',\n status: '已完成',\n updatedAt: '周一 18:42',\n },\n];\n\nconst STATUS_STYLE: Record<PreviewItem['status'], string> = {\n 进行中: 'bg-[var(--ck-status-brand-bg)] text-[var(--ck-status-brand-text)]',\n 待处理: 'bg-[var(--ck-status-warning-bg)] text-[var(--ck-status-warning-text)]',\n 已完成: 'bg-[var(--ck-status-success-bg)] text-[var(--ck-status-success-text)]',\n};\n\nfunction StatusTag({ status }: { status: PreviewItem['status'] }) {\n return (\n <span\n className={`inline-flex shrink-0 items-center gap-1 rounded-[var(--ck-chip-radius)] px-2 py-0.5 text-[11px] font-medium ${STATUS_STYLE[status]}`}\n >\n {status === '已完成' ? (\n <CheckCircle2 className=\"h-3 w-3\" />\n ) : (\n <Clock3 className=\"h-3 w-3\" />\n )}\n {status}\n </span>\n );\n}\n\nexport function ListDetailTemplatePreview({ className }: { className?: string }) {\n const items = PREVIEW_ITEMS;\n const [editorOpen, setEditorOpen] = React.useState(false);\n const [selectedKey, setSelectedKey] = React.useState(PREVIEW_ITEMS[0].id);\n const selected = items.find((item) => item.id === selectedKey) || items[0];\n\n return (\n <div className={className}>\n <CodingListDetailWorkspace\n title=\"事项管理\"\n subtitle=\"列表承接浏览与筛选,详情承接对象上下文,复杂编辑进入抽屉。\"\n rows={items}\n selectedKey={selectedKey}\n onSelectedKeyChange={setSelectedKey}\n getRowInfo={(row) => ({\n key: row.id,\n title: row.title,\n description: row.description,\n meta: `${row.owner} · ${row.updatedAt}`,\n status: <StatusTag status={row.status} />,\n })}\n headerActions={\n <CodingButton size=\"sm\" onClick={() => setEditorOpen(true)}>\n <Plus className=\"h-3.5 w-3.5\" />\n 创建事项\n </CodingButton>\n }\n toolbar={\n <div className=\"flex flex-wrap items-center gap-2\">\n <div className=\"relative min-w-[180px] flex-1 sm:max-w-[260px]\">\n <Search className=\"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-[var(--ck-text-muted)]\" />\n <CodingInput className=\"pl-8\" placeholder=\"搜索事项标题\" />\n </div>\n <CodingButton variant=\"secondary\" size=\"sm\">\n 状态:全部\n </CodingButton>\n <CodingButton variant=\"secondary\" size=\"sm\">\n 负责人:全部\n </CodingButton>\n </div>\n }\n detailActions={\n <CodingButton size=\"sm\" variant=\"secondary\" onClick={() => setEditorOpen(true)}>\n 编辑\n </CodingButton>\n }\n renderDetail={({ row }) => (\n <div className=\"space-y-5\">\n <div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <h2 className=\"min-w-0 text-[20px] font-semibold text-[var(--ck-text-primary)]\">\n {row.title}\n </h2>\n <StatusTag status={row.status} />\n </div>\n <p className=\"mt-2 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n {row.description}\n </p>\n </div>\n <CodingPanel className=\"grid gap-3 p-4 sm:grid-cols-2\">\n <div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">负责人</div>\n <div className=\"mt-1 text-[13px] font-medium\">{row.owner}</div>\n </div>\n <div>\n <div className=\"text-[11px] text-[var(--ck-text-muted)]\">最近更新</div>\n <div className=\"mt-1 text-[13px] font-medium\">{row.updatedAt}</div>\n </div>\n </CodingPanel>\n <div>\n <div className=\"mb-2 text-[12px] font-medium text-[var(--ck-text-primary)]\">\n 协作记录\n </div>\n <div className=\"border-l-2 border-[var(--ck-brand-border-soft)] pl-3 text-[13px] leading-6 text-[var(--ck-text-secondary)]\">\n 详情区域适合承接对象说明、状态变更、关联资源和协作动作;移动端切换为全屏详情。\n </div>\n </div>\n </div>\n )}\n editor={\n <div className=\"space-y-4\">\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 事项标题\n </span>\n <CodingInput defaultValue={selected?.title} />\n </label>\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 负责人\n </span>\n <CodingInput defaultValue={selected?.owner} />\n </label>\n <label className=\"block\">\n <span className=\"mb-1.5 block text-[12px] font-medium text-[var(--ck-text-secondary)]\">\n 描述\n </span>\n <textarea\n defaultValue={selected?.description}\n className=\"min-h-28 w-full resize-y rounded-[var(--ck-control-radius-md)] border border-[var(--ck-border-default)] bg-[var(--ck-surface-overlay)] px-3 py-2 text-[13px] leading-5 text-[var(--ck-text-primary)] outline-none focus:border-[var(--ck-brand-active)]\"\n />\n </label>\n </div>\n }\n editorTitle=\"编辑事项\"\n editorDescription=\"桌面端从右侧打开,移动端从底部打开;表单状态由业务扩展维护。\"\n editorOpen={editorOpen}\n onEditorOpenChange={setEditorOpen}\n editorFooter={\n <div className=\"flex w-full justify-end gap-2\">\n <CodingButton variant=\"secondary\" onClick={() => setEditorOpen(false)}>\n 取消\n </CodingButton>\n <CodingButton\n onClick={() => {\n setEditorOpen(false);\n }}\n >\n 保存\n </CodingButton>\n </div>\n }\n />\n </div>\n );\n}\n","import type {\n AgentChannelEvent as ProtocolAgentChannelEvent,\n AgentChannelMessage as ProtocolAgentChannelMessage,\n AgentChannelPermissionRequest,\n AgentChannelRouteContext,\n AgentChannelSnapshot as ProtocolAgentChannelSnapshot,\n AgentChannelStatus,\n AgentChannelOwnerRef,\n ExternalConversationRef,\n} from '@contracts/agent-channel';\n\nimport {\n DaemonBackedAgentChannelService,\n type AgentChannel,\n type AgentChannelCreateInput,\n type AgentChannelMessage,\n type AgentChannelService,\n type AgentChannelSnapshot,\n} from './agent-channel';\nimport {\n WorkspaceAgentChannelClient,\n type AgentChannelPermissionStrategy,\n} from './agent-channel-client';\nimport type { DaemonAgentClientOptions } from './daemon-agent-client';\n\nexport type AgentChannelHarnessPermissionStrategy = AgentChannelPermissionStrategy;\n\nexport interface AgentChannelHarnessClientOptions extends DaemonAgentClientOptions {\n defaultCwd?: string;\n defaultTitle?: string | null;\n onConnectionChange?: (status: 'connected' | 'disconnected' | 'error', error?: string | null) => void;\n}\n\nexport interface AgentChannelHarnessInput {\n service?: AgentChannelService;\n daemon?: AgentChannelHarnessClientOptions;\n provider: string;\n cwd?: string;\n title?: string | null;\n message: string | AgentChannelMessage | ProtocolAgentChannelMessage;\n model?: string | null;\n modeId?: string | null;\n thinkingOptionId?: string | null;\n featureValues?: Record<string, unknown> | null;\n permissionStrategy?: AgentChannelHarnessPermissionStrategy;\n timeoutMs?: number;\n closeOnComplete?: boolean;\n routeContext?: AgentChannelRouteContext;\n externalConversationRef?: ExternalConversationRef;\n ownerRef?: AgentChannelOwnerRef;\n context?: Record<string, unknown>;\n onEvent?: (event: ProtocolAgentChannelEvent, allEvents: ProtocolAgentChannelEvent[]) => void;\n}\n\nexport interface AgentChannelHarnessResult {\n agentChannelId: string;\n channel: AgentChannel;\n finalStatus: AgentChannelStatus | 'timeout';\n events: ProtocolAgentChannelEvent[];\n snapshot: AgentChannelSnapshot | null;\n protocolSnapshot: ProtocolAgentChannelSnapshot | null;\n pendingPermissions: AgentChannelPermissionRequest[];\n error?: string;\n timedOut: boolean;\n closed: boolean;\n}\n\nexport function createAgentChannelHarnessClient(\n options: AgentChannelHarnessClientOptions,\n): DaemonBackedAgentChannelService {\n const service = new DaemonBackedAgentChannelService({\n serverUrl: options.serverUrl,\n token: options.token,\n projectId: options.projectId,\n workspaceId: options.workspaceId,\n clientId: options.clientId || 'workspace-agent-channel-harness',\n }, {\n defaultCwd: options.defaultCwd,\n defaultTitle: options.defaultTitle,\n onConnectionChange: options.onConnectionChange,\n });\n service.connect();\n return service;\n}\n\nexport async function runAgentChannelHarness(input: AgentChannelHarnessInput): Promise<AgentChannelHarnessResult> {\n const ownsService = !input.service;\n const service = input.service || createAgentChannelHarnessClient(requiredDaemonOptions(input));\n const client = new WorkspaceAgentChannelClient(service);\n try {\n const result = await client.run({\n create: channelCreateInput(input),\n message: input.message,\n permissionStrategy: input.permissionStrategy,\n timeoutMs: input.timeoutMs,\n closeOnComplete: input.closeOnComplete,\n onEvent: input.onEvent\n ? (event, state) => input.onEvent?.(event, state.events)\n : undefined,\n });\n\n return {\n agentChannelId: result.agentChannelId,\n channel: result.channel,\n finalStatus: result.finalStatus,\n events: result.events,\n snapshot: result.snapshot,\n protocolSnapshot: result.protocolSnapshot,\n pendingPermissions: result.pendingPermissions,\n error: result.error,\n timedOut: result.timedOut,\n closed: result.closed,\n };\n } finally {\n if (ownsService && 'disconnect' in service && typeof service.disconnect === 'function') {\n service.disconnect();\n }\n }\n}\n\nfunction requiredDaemonOptions(input: AgentChannelHarnessInput): AgentChannelHarnessClientOptions {\n if (!input.daemon) {\n throw new Error('runAgentChannelHarness requires either input.service or input.daemon');\n }\n return input.daemon;\n}\n\nfunction channelCreateInput(input: AgentChannelHarnessInput): AgentChannelCreateInput {\n return {\n capabilityId: `runtime:${input.provider}`,\n cwd: input.cwd,\n title: input.title,\n modeId: input.modeId,\n model: input.model,\n thinkingOptionId: input.thinkingOptionId,\n featureValues: input.featureValues,\n routeContext: input.routeContext,\n externalConversationRef: input.externalConversationRef,\n ownerRef: input.ownerRef,\n context: input.context,\n ...(input.permissionStrategy\n ? { runtime: { permissionStrategy: input.permissionStrategy } }\n : {}),\n };\n}\n","import type {\n AgentChannelConversationProjection,\n AgentChannelEvent,\n AgentChannelMessage,\n AgentChannelRouteContext,\n ExternalConversationRef,\n} from '@contracts/agent-channel';\n\nimport {\n WorkspaceAgentChannelClient,\n type AgentChannelPermissionStrategy,\n type AgentChannelRunResult,\n} from './agent-channel-client';\nimport type { AgentChannelService } from './agent-channel';\n\nexport interface FakeHubAgentBinding {\n capabilityId: string;\n provider: string;\n targetSubjectId: string;\n bindingId?: string;\n cwd?: string;\n model?: string | null;\n modeId?: string | null;\n thinkingOptionId?: string | null;\n}\n\nexport interface FakeHubAgentInvocationInput {\n conversationId: string;\n targetSubjectId: string;\n text: string;\n triggeredBySubjectId?: string;\n parentConversationId?: string;\n externalConversationRef?: ExternalConversationRef;\n timeoutMs?: number;\n permissionStrategy?: AgentChannelPermissionStrategy;\n closeOnComplete?: boolean;\n}\n\nexport interface FakeHubAgentInvocationResult {\n routeContext: AgentChannelRouteContext;\n agentChannelId: string;\n finalStatus: AgentChannelRunResult['finalStatus'];\n run: AgentChannelRunResult;\n projections: AgentChannelConversationProjection[];\n}\n\nexport class FakeHubAgentCaller {\n private readonly client: WorkspaceAgentChannelClient;\n private readonly bindings = new Map<string, FakeHubAgentBinding>();\n\n constructor(service: AgentChannelService, bindings: FakeHubAgentBinding[] = []) {\n this.client = new WorkspaceAgentChannelClient(service);\n bindings.forEach((binding) => this.registerBinding(binding));\n }\n\n registerBinding(binding: FakeHubAgentBinding): void {\n this.bindings.set(binding.targetSubjectId, binding);\n }\n\n async invokeAgent(input: FakeHubAgentInvocationInput): Promise<FakeHubAgentInvocationResult> {\n const binding = this.bindings.get(input.targetSubjectId);\n if (!binding) {\n throw new Error(`No fake Hub agent binding registered for subject ${input.targetSubjectId}`);\n }\n const routeContext = buildRouteContext(input, binding);\n const projectionCollector = new FakeHubProjectionCollector();\n\n const run = await this.client.run({\n create: {\n capabilityId: binding.capabilityId,\n cwd: binding.cwd,\n model: binding.model,\n modeId: binding.modeId,\n thinkingOptionId: binding.thinkingOptionId,\n routeContext,\n externalConversationRef: input.externalConversationRef,\n context: {\n fakeHub: {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n },\n },\n ...(input.permissionStrategy\n ? { runtime: { permissionStrategy: input.permissionStrategy } }\n : {}),\n },\n message: hubTextToAgentMessage(input),\n timeoutMs: input.timeoutMs,\n permissionStrategy: input.permissionStrategy,\n closeOnComplete: input.closeOnComplete,\n onEvent: (event) => {\n projectionCollector.accept(event, routeContext);\n },\n });\n\n return {\n routeContext,\n agentChannelId: run.agentChannelId,\n finalStatus: run.finalStatus,\n run,\n projections: projectionCollector.getProjections(),\n };\n }\n}\n\nexport class FakeHubProjectionCollector {\n private readonly seenEventIds = new Set<string>();\n private readonly projections: AgentChannelConversationProjection[] = [];\n\n accept(\n event: AgentChannelEvent,\n routeContext: AgentChannelRouteContext,\n ): AgentChannelConversationProjection | null {\n const projection = projectAgentChannelEventToFakeHub(event, routeContext);\n if (projection.sourceEventId) {\n if (this.seenEventIds.has(projection.sourceEventId)) {\n return null;\n }\n this.seenEventIds.add(projection.sourceEventId);\n }\n this.projections.push(projection);\n return projection;\n }\n\n getProjections(): AgentChannelConversationProjection[] {\n return [...this.projections];\n }\n}\n\nexport function buildRouteContext(\n input: FakeHubAgentInvocationInput,\n binding?: Pick<FakeHubAgentBinding, 'bindingId'>,\n): AgentChannelRouteContext {\n return {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n triggeredBySubjectId: input.triggeredBySubjectId,\n parentConversationId: input.parentConversationId,\n bindingId: binding?.bindingId,\n };\n}\n\nexport function hubTextToAgentMessage(input: FakeHubAgentInvocationInput): AgentChannelMessage {\n return {\n blocks: [{ type: 'text', text: input.text }],\n externalConversationRef: input.externalConversationRef,\n senderRef: {\n subjectId: input.triggeredBySubjectId,\n sourceUserId: input.externalConversationRef?.userId,\n },\n externalMessageId: input.externalConversationRef?.messageId,\n metadata: {\n conversationId: input.conversationId,\n targetSubjectId: input.targetSubjectId,\n parentConversationId: input.parentConversationId,\n },\n };\n}\n\nexport function projectAgentChannelEventToFakeHub(\n event: AgentChannelEvent,\n routeContext: AgentChannelRouteContext,\n): AgentChannelConversationProjection {\n if (event.type === 'timeline_item') {\n if (event.item.type === 'assistant_message') {\n return {\n kind: 'conversation_message',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.item.text,\n metadata: { itemType: event.item.type },\n };\n }\n if (event.item.type === 'tool_call') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: toolLifecycleText(event.item.toolName, event.item.status, event.item.summary?.targetPath),\n metadata: { itemType: event.item.type, status: event.item.status, summary: event.item.summary },\n };\n }\n if (event.item.type === 'user_message' || event.item.type === 'reasoning') {\n return {\n kind: 'ignore',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n metadata: { itemType: event.item.type },\n };\n }\n }\n if (event.type === 'permission_requested') {\n return {\n kind: 'approval_state',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.request.title || event.request.message || 'Permission requested',\n metadata: { request: event.request, state: 'requested' },\n };\n }\n if (event.type === 'permission_resolved') {\n return {\n kind: 'approval_state',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: `Permission ${event.result}`,\n metadata: { requestId: event.requestId, result: event.result, state: 'resolved' },\n };\n }\n if (event.type === 'status_changed') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: `Agent status: ${event.status}`,\n metadata: { status: event.status },\n };\n }\n if (event.type === 'error') {\n return {\n kind: 'lifecycle_entry',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n sourceEventId: event.eventId,\n text: event.error,\n metadata: { error: event.error },\n };\n }\n return {\n kind: 'ignore',\n conversationId: routeContext.conversationId,\n subjectId: routeContext.targetSubjectId,\n metadata: { eventType: event.type },\n };\n}\n\nfunction toolLifecycleText(toolName: string, status: string, targetPath?: string): string {\n return [toolName, status, targetPath].filter(Boolean).join(' ');\n}\n"],"names":["ToolbarChip","HelpCircle","LineChart","X","SectionHeader","Filter","MoreHorizontal","_a","StatusTag","title","PRODUCT_ITEMS","PlusCircle","SIDEBAR_SECTIONS","Code2","FILTERS","widget","AlertTriangle","CheckCircle2","CodingButton","CodingInput","CodingPanel"],"mappings":"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;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,EAAA;AAEjB;AAEO,SAAS,4BAA4B;AAAA,EAC1C;AACF,GAEG;AACD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,IAAI;AAC/D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,oBAAoB;AAE/E,QAAM,aAAa,MAAM;AAAA,IACvB,MAAM,cAAc,IAAI,CAAC,WAAW,EAAE,OAAO,QAAQ,UAAU,eAAA,EAAiB;AAAA,IAChF,CAAC,cAAc;AAAA,EAAA;AAGjB,QAAM,QAAQ,MAAM;AAAA,IAClB,MAAM,UAAU,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,UAAU,KAAK,OAAO,eAAA,EAAiB;AAAA,IACjF,CAAC,cAAc;AAAA,EAAA;AAGjB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAcF;AAAAA,MACd,UAAS;AAAA,MACT;AAAA,MACA,gBACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,UAAUE;AAAAA,UACV,mBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGtB,cACE,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,4DAE5H;AAAA,MAEF,QACE,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,sHACb,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,YAAA,oBAAC,UAAK,UAAA,KAAA,CAAE;AAAA,YACR,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,YACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,UAAA,GACZ;AAAA,UACA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBAEV,UAAA;AAAA,kBAAA,oBAACC,SAAA,EAAM,WAAU,cAAA,CAAc;AAAA,kBAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGnC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAU;AAAA,gBAEV,UAAA;AAAA,kBAAA,oBAACF,YAAA,EAAW,WAAU,cAAA,CAAc;AAAA,kBAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAExC,EAAA,CACF;AAAA,QAAA,GACF;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,8IACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,UACV,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,UACV,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,QAAA,EAAK,WAAU,iCAAgC,UAAA,WAAA,CAAQ;AAAA,QAAA,EAAA,CAC1D;AAAA,MAAA,GACF;AAAA,MAEF,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAa;AAAA,UACb,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,oBAAmB;AAAA,UACnB,WAAU;AAAA,UACV,YAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,sBAAqB;AAAA,UACrB,kBAAkB;AAAA,UAClB,cAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AAGN;AC7PA,MAAMD,kBAAwC;AAAA,EAC5C,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAc,QAAQ,KAAA;AAAA,EAC3C,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,OAAA;AAAA,EACtB,EAAE,OAAO,OAAO,MAAM,aAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAMC,WAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AACvB;AAEA,MAAMC,qBAAsD;AAAA,EAC1D;AAAA,IACE,OAAO;AAAA,MACL,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT;AAAA,QACE,OAAO;AAAA,QACP,UAAU;AAAA,UACR,EAAE,OAAO,QAAQ,QAAQ,KAAA;AAAA,UACzB,EAAE,OAAO,OAAA;AAAA,QAAO;AAAA,MAClB;AAAA,MAEF,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,WAAA;AAAA,IAAW;AAAA,EACtB;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO,CAAC,EAAE,OAAO,QAAQ;AAAA,EAAA;AAE7B;AAEA,MAAM,aAAkC;AAAA,EACtC,EAAE,OAAO,cAAA;AAAA,EACT,EAAE,OAAO,wBAAA;AAAA,EACT,EAAE,OAAO,oCAAA;AACX;AAEA,MAAM,eAAsC;AAAA,EAC1C,EAAE,OAAO,OAAA;AAAA,EACT,EAAE,OAAO,OAAA;AACX;AAEA,MAAM,gBAAuC;AAAA,EAC3C,EAAE,OAAO,MAAM,QAAQ,KAAA;AAAA,EACvB,EAAE,OAAO,MAAA;AACX;AAEA,MAAM,iBAA0C;AAAA,EAC9C,EAAE,OAAO,MAAM,OAAO,WAAA;AAAA,EACtB,EAAE,OAAO,OAAO,OAAO,SAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,OAAO,MAAA;AAC1B;AAEA,MAAM,mBAAwC;AAAA,EAC5C;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,EAAA;AAEb;AAEO,SAAS,yBAAyB;AAAA,EACvC;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAcF;AAAAA,MACd,UAAS;AAAA,MACT;AAAA,MACA,gBACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,UAAUE;AAAAA,UACV,mBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGtB,cACE,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,4DAE5H;AAAA,MAEF,QACE,qBAAC,OAAA,EAAI,WAAU,qIACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,KAAA,CAAE;AAAA,UACR,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,QAAA,GACZ;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACC,SAAA,EAAM,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACF,YAAA,EAAW,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAExC,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,UACX,oBAAmB;AAAA,UACnB,aAAa;AAAA,UACb,cAAc;AAAA,UACd,eAAe;AAAA,UACf,OAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACT;AAAA,EAAA;AAGN;AC7IA,MAAMD,kBAAwC;AAAA,EAC5C,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAc,QAAQ,KAAA;AAAA,EAC3C,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,OAAA;AAAA,EACtB,EAAE,OAAO,OAAO,MAAM,aAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAMC,WAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AACvB;AAEA,MAAMC,qBAAsD;AAAA,EAC1D;AAAA,IACE,OAAO;AAAA,MACL,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT;AAAA,QACE,OAAO;AAAA,QACP,UAAU,CAAC,EAAE,OAAO,UAAU,EAAE,OAAO,OAAA,CAAQ;AAAA,MAAA;AAAA,MAEjD,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,QAAQ,QAAQ,KAAA;AAAA,MACzB,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,WAAA;AAAA,IAAW;AAAA,EACtB;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO,CAAC,EAAE,OAAO,QAAQ;AAAA,EAAA;AAE7B;AAEA,MAAM,gBAAwC;AAAA,EAC5C,EAAE,OAAO,QAAQ,OAAO,MAAM,QAAQ,KAAA;AAAA,EACtC;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,MACxB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,IAAI;AAAA,EAC/B;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,MACxB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,IAAI;AAAA,EAC9B;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,MACxB,EAAE,OAAO,QAAQ,OAAO,KAAA;AAAA,IAAK;AAAA,EAC/B;AAEJ;AAEA,MAAME,YAAgC;AAAA,EACpC,EAAE,OAAO,MAAM,QAAQ,KAAA;AAAA,EACvB,EAAE,OAAO,OAAA;AAAA,EACT,EAAE,OAAO,OAAA;AAAA,EACT,EAAE,OAAO,YAAA;AAAA,EACT,EAAE,OAAO,mBAAA;AACX;AAEA,MAAM,UAAgC;AAAA,EACpC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAAA,EAEX;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAEX;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb;AAEA,MAAM,iBAAuC;AAAA,EAC3C;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAEX;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAAA,EAEX;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EAAA;AAEb;AAEO,SAAS,8BAA8B;AAAA,EAC5C;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAcJ;AAAAA,MACd,UAAS;AAAA,MACT;AAAA,MACA,gBACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,UAAUE;AAAAA,UACV,mBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGtB,cACE,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,oCAE5H;AAAA,MAEF,QACE,qBAAC,OAAA,EAAI,WAAU,qIACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,KAAA,CAAE;AAAA,UACR,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,QAAA,GACZ;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACC,SAAA,EAAM,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACF,YAAA,EAAW,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAExC,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,oBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,aAAaG;AAAAA,UACb,SAAS;AAAA,UACT,aAAY;AAAA,UACZ,YAAW;AAAA,UACX,mBAAkB;AAAA,UAClB,aAAa;AAAA,YACX,EAAE,OAAO,QAAQ,OAAO,KAAA;AAAA,YACxB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,YACxB,EAAE,OAAO,WAAW,OAAO,IAAA;AAAA,YAC3B,EAAE,OAAO,OAAO,OAAO,IAAA;AAAA,UAAI;AAAA,UAE7B,eAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IACjB;AAAA,EAAA;AAGN;ACtMA,MAAMJ,kBAAwC;AAAA,EAC5C,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,UAAU,QAAQ,KAAA;AAAA,EACvC,EAAE,OAAO,MAAM,MAAMC,WAAA;AACvB;AAEA,MAAMG,YAAwB;AAAA,EAC5B,EAAE,KAAK,SAAS,OAAO,aAAa,OAAO,KAAA;AAAA,EAC3C,EAAE,KAAK,UAAU,OAAO,MAAM,OAAO,KAAA;AACvC;AAEA,MAAM,cAA+B;AAAA,EACnC,EAAE,KAAK,YAAY,OAAO,KAAA;AAAA,EAC1B,EAAE,KAAK,SAAS,OAAO,KAAA;AAAA,EACvB,EAAE,KAAK,QAAQ,OAAO,OAAA;AACxB;AAEA,MAAM,gBAAgC;AAAA,EACpC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,WAAW;AAAA,MACT;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,MAEV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,IAEF,UAAU;AAAA,MACR;AAAA,QACE,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,cAAc;AAAA,MACZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,UAAU,CAAA;AAAA,IACV,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,cAAc;AAAA,MACZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,UAAU,CAAA;AAAA,IACV,OAAO,CAAA;AAAA,IACP,cAAc;AAAA,MACZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,IAEF,UAAU,CAAA;AAAA,IACV,OAAO,CAAA;AAAA,IACP,cAAc,CAAA;AAAA,EAAC;AAEnB;AAEO,SAAS,0BAA0B;AAAA,EACxC;AACF,GAEG;AACD,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,MAAM;AAC3D,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAAS,aAAa;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,QAAQ;AACnE,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,KAAK;AAC1D,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAmB,CAAC,QAAQ,CAAC;AACzE,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,MAAM,SAAS,UAAU;AACvE,QAAM,CAAC,cAAc,eAAe,IAAI,MAAM,SAAS,EAAE;AAEzD,QAAM,eAAe,MAAM;AAAA,IACzB,MAAM,MAAM,OAAO,CAAC,SAAS,KAAK,aAAa,WAAW;AAAA,IAC1D,CAAC,aAAa,KAAK;AAAA,EAAA;AAGrB,QAAM,UAAU,MAAM;;AACpB,QAAI,CAAC,aAAa,KAAK,CAAC,SAAS,KAAK,OAAO,cAAc,GAAG;AAC5D,0BAAkB,kBAAa,CAAC,MAAd,mBAAiB,OAAM,EAAE;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,gBAAgB,YAAY,CAAC;AAEjC,QAAM,eAAe,MAAM;AAAA,IACzB,MAAM,aAAa,KAAK,CAAC,SAAS,KAAK,OAAO,cAAc,KAAK,aAAa,CAAC;AAAA,IAC/E,CAAC,gBAAgB,YAAY;AAAA,EAAA;AAG/B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,aAAa,oBAAC,mBAAA,EAAkB,OAAOJ,iBAAe,UAAS,MAAK;AAAA,MACpE,QACE,oBAAC,OAAA,EAAI,WAAU,4GAA2G,UAAA,4DAE1H;AAAA,MAEF,OAAM;AAAA,MACN,WAAW;AAAA,QACT,EAAE,KAAK,QAAQ,OAAO,OAAA;AAAA,QACtB,EAAE,KAAK,YAAY,OAAO,OAAA;AAAA,MAAO;AAAA,MAEnC,gBAAgB;AAAA,MAChB,eAAe,CAAC,QAAQ;AACtB,uBAAe,GAAG;AAClB,2BAAmB,UAAU;AAAA,MAC/B;AAAA,MACA,OAAO,EAAE,OAAO,aAAa,OAAO,0BAAA;AAAA,MACpC,oBAAoB,gBAAgB,SAAS,WAAW;AAAA,MACxD,SAASI;AAAAA,MACT,mBAAkB;AAAA,MAClB,OAAO;AAAA,MACP;AAAA,MACA,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB;AAAA,MACA,qBAAqB,MAAM,eAAe,CAAC,YAAY,CAAC,OAAO;AAAA,MAC/D,sBAAsB,CAAC,WAAW;AAChC;AAAA,UAAe,CAAC,YACd,QAAQ,SAAS,MAAM,IAAI,QAAQ,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI,CAAC,GAAG,SAAS,MAAM;AAAA,QAAA;AAAA,MAE9F;AAAA,MACA,aAAa,CAAC,WAAW;AACvB;AAAA,UAAS,CAAC,YACR,QAAQ;AAAA,YAAI,CAAC,SACX,KAAK,OAAO,SACR;AAAA,cACE,GAAG;AAAA,cACH,SAAS;AAAA,gBACP,GAAG,KAAK;AAAA,gBACR;AAAA,kBACE,IAAI,GAAG,MAAM,WAAW,KAAK,QAAQ,SAAS,CAAC;AAAA,kBAC/C,SAAS;AAAA,kBACT,QAAQ;AAAA,kBACR,UAAU;AAAA,gBAAA;AAAA,cACZ;AAAA,YACF,IAEF;AAAA,UAAA;AAAA,QACN;AAAA,MAEJ;AAAA,MACA,eAAe,CAAC,WAAW;AACzB;AAAA,UAAS,CAAC,YACR,QAAQ;AAAA,YAAI,CAAC,SAAA;;AACX,0BAAK,OAAO,SACR;AAAA,gBACE,GAAG;AAAA,gBACH,WAAW;AAAA,kBACT,GAAI,KAAK,aAAa,CAAA;AAAA,kBACtB;AAAA,oBACE,IAAI,GAAG,MAAM,gBAAc,UAAK,cAAL,mBAAgB,WAAU,KAAK,CAAC;AAAA,oBAC3D,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,QAAQ;AAAA,kBAAA;AAAA,gBACV;AAAA,cACF,IAEF;AAAA;AAAA,UAAA;AAAA,QACN;AAAA,MAEJ;AAAA,MACA,YAAY;AAAA,MACZ;AAAA,MACA,mBAAmB;AAAA,MACnB;AAAA,MACA,sBAAsB;AAAA,MACtB,kBAAkB,CAAC,WAAW;AAC5B,YAAI,CAAC,aAAa,QAAQ;AACxB;AAAA,QACF;AAEA;AAAA,UAAS,CAAC,YACR,QAAQ;AAAA,YAAI,CAAC,SAAA;;AACX,0BAAK,OAAO,SACR;AAAA,gBACE,GAAG;AAAA,gBACH,UAAU;AAAA,kBACR,GAAI,KAAK,YAAY,CAAA;AAAA,kBACrB;AAAA,oBACE,IAAI,GAAG,MAAM,eAAa,UAAK,aAAL,mBAAe,WAAU,KAAK,CAAC;AAAA,oBACzD,QAAQ;AAAA,oBACR,SAAS,aAAa,KAAA;AAAA,oBACtB,MAAM;AAAA,kBAAA;AAAA,gBACR;AAAA,cACF,IAEF;AAAA;AAAA,UAAA;AAAA,QACN;AAEF,wBAAgB,EAAE;AAAA,MACpB;AAAA,MACA,iBAAiB,CAAC,WAAW;AAC3B;AAAA,UAAS,CAAC,YACR,QAAQ;AAAA,YAAI,CAAC,SACX,KAAK,OAAO,SACR;AAAA,cACE,GAAG;AAAA,cACH,SAAS,KAAK,QAAQ,IAAI,CAAC,QAAQ,OAAO,SAAS;AAAA,gBACjD,GAAG;AAAA,gBACH,QAAQ,IAAI,MAAM,IAAI,QAAQ,QAAQ,CAAC,CAAC;AAAA,gBACxC,UAAU,UAAU,IAAI,OAAO,WAAW,OAAO;AAAA,cAAA,EACjD;AAAA,YAAA,IAEJ;AAAA,UAAA;AAAA,QACN;AAAA,MAEJ;AAAA,MACA,WACE,eACI;AAAA,QACE,EAAE,OAAO,MAAM,OAAO,aAAa,OAAA;AAAA,QACnC,EAAE,OAAO,MAAM,OAAO,aAAa,SAAA;AAAA,QACnC,EAAE,OAAO,OAAO,OAAO,aAAa,MAAA;AAAA,QACpC,EAAE,OAAO,OAAO,OAAO,MAAA;AAAA,QACvB,EAAE,OAAO,QAAQ,OAAO,aAAa,MAAA;AAAA,MAAM,IAE7C,CAAA;AAAA,MAEN,gBAAgB;AAAA,IAAA;AAAA,EAAA;AAGtB;AClXA,MAAMJ,kBAAwC;AAAA,EAC5C,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAc,QAAQ,KAAA;AAAA,EAC3C,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,OAAA;AAAA,EACtB,EAAE,OAAO,OAAO,MAAM,aAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAMC,WAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AACvB;AAEA,MAAMC,qBAAsD;AAAA,EAC1D;AAAA,IACE,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,QAAQ,KAAA;AAAA,MACzB,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT;AAAA,QACE,OAAO;AAAA,QACP,UAAU,CAAC,EAAE,OAAO,UAAU,EAAE,OAAO,OAAA,CAAQ;AAAA,MAAA;AAAA,MAEjD,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,WAAA;AAAA,IAAW;AAAA,EACtB;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO,CAAC,EAAE,OAAO,QAAQ;AAAA,EAAA;AAE7B;AAEA,MAAM,gBAA8C;AAAA,EAClD,EAAE,OAAO,QAAQ,aAAa,UAAU,MAAM,UAAA;AAAA,EAC9C,EAAE,OAAO,OAAO,aAAa,SAAA;AAC/B;AAEA,MAAM,eAA8C;AAAA,EAClD,EAAE,OAAO,oBAAoB,MAAM,oBAAA;AAAA,EACnC,EAAE,OAAO,uBAAuB,MAAM,oBAAA;AACxC;AAEA,MAAM,YAA2C;AAAA,EAC/C,EAAE,OAAO,sBAAsB,MAAM,cAAA;AAAA,EACrC,EAAE,OAAO,iBAAiB,MAAM,cAAA;AAClC;AAEA,MAAM,aAA4C;AAAA,EAChD;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEV;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAAA,EAEV;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAAA,EAEV;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,EAAA;AAEZ;AAEO,SAAS,2BAA2B;AAAA,EACzC;AACF,GAEG;AACD,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,MAAM;AAEvD,QAAM,WAAW,MAAM;AAAA,IACrB,MAAM;AAAA,MACJ,EAAE,OAAO,QAAQ,QAAQ,cAAc,OAAA;AAAA,MACvC,EAAE,OAAO,QAAQ,QAAQ,cAAc,OAAA;AAAA,IAAO;AAAA,IAEhD,CAAC,SAAS;AAAA,EAAA;AAGZ,QAAM,cAAc,MAAM;AAAA,IACxB,MAAM;AAAA,MACJ,EAAE,OAAO,KAAK,OAAO,MAAM,QAAQ,MAAA;AAAA,MACnC,EAAE,OAAO,KAAK,OAAO,QAAA;AAAA,MACrB,EAAE,OAAO,KAAK,OAAO,QAAA;AAAA,MACrB,EAAE,OAAO,MAAM,OAAO,OAAA;AAAA,IAAO;AAAA,IAE/B,CAAA;AAAA,EAAC;AAGH,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAcF;AAAAA,MACd,UAAS;AAAA,MACT;AAAA,MACA,gBACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,UAAUE;AAAAA,UACV,mBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGtB,cACE,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,4DAE5H;AAAA,MAEF,QACE,qBAAC,OAAA,EAAI,WAAU,qIACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,KAAA,CAAE;AAAA,UACR,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,QAAA,GACZ;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACC,SAAA,EAAM,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACF,YAAA,EAAW,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAExC,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA,cAAc;AAAA,UACd;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,aAAa;AAAA,YACb,aAAa;AAAA,YACb,UAAU;AAAA,UAAA;AAAA,UAEZ,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,UAAA;AAAA,UAER,aAAa;AAAA,UACb,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,YACZ,QAAQ;AAAA,YACR,aAAa;AAAA,YACb,SAAS;AAAA,cACP;AAAA,cACA;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,aAAY;AAAA,UACZ,oBAAmB;AAAA,UACnB,aAAY;AAAA,UACZ,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IACf;AAAA,EAAA;AAGN;AC9LA,MAAMD,kBAAwC;AAAA,EAC5C,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAc,QAAQ,KAAA;AAAA,EAC3C,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,OAAA;AAAA,EACtB,EAAE,OAAO,OAAO,MAAM,aAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAMC,WAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AACvB;AAEA,MAAM,mBAAsD;AAAA,EAC1D;AAAA,IACE,OAAO;AAAA,MACL,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT;AAAA,QACE,OAAO;AAAA,QACP,UAAU,CAAC,EAAE,OAAO,UAAU,EAAE,OAAO,OAAA,CAAQ;AAAA,MAAA;AAAA,MAEjD,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,QAAQ,QAAQ,KAAA;AAAA,MACzB,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,OAAA;AAAA,MACT,EAAE,OAAO,WAAA;AAAA,IAAW;AAAA,EACtB;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,OAAO,CAAC,EAAE,OAAO,QAAQ;AAAA,EAAA;AAE7B;AAEA,MAAM,UAAgC;AAAA,EACpC,EAAE,OAAO,MAAM,QAAQ,KAAA;AAAA,EACvB,EAAE,OAAO,MAAA;AAAA,EACT,EAAE,OAAO,MAAA;AAAA,EACT,EAAE,OAAO,MAAA;AAAA,EACT,EAAE,OAAO,QAAA;AACX;AAEA,MAAM,QAA4B;AAAA,EAChC,EAAE,OAAO,QAAQ,OAAO,MAAA;AAAA,EACxB,EAAE,OAAO,OAAO,OAAO,KAAA;AAAA,EACvB,EAAE,OAAO,OAAO,OAAO,KAAA;AAAA,EACvB,EAAE,OAAO,YAAY,OAAO,KAAA;AAC9B;AAEA,MAAM,QAA4B;AAAA,EAChC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAEf;AAEA,MAAM,oBAA4C;AAAA,EAChD,EAAE,OAAO,oBAAoB,MAAM,aAAA;AAAA,EACnC,EAAE,OAAO,uBAAuB,MAAM,gBAAA;AAAA,EACtC,EAAE,OAAO,uBAAuB,MAAM,kBAAA;AACxC;AAEO,SAAS,8BAA8B;AAAA,EAC5C;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAcD;AAAAA,MACd,UAAS;AAAA,MACT;AAAA,MACA,gBACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,aAAY;AAAA,UACZ,UAAU;AAAA,UACV,mBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,MAGtB,cACE,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,0CAE5H;AAAA,MAEF,QACE,qBAAC,OAAA,EAAI,WAAU,qIACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,uEACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,KAAA,CAAE;AAAA,UACR,oBAAC,cAAA,EAAa,WAAU,cAAA,CAAc;AAAA,UACtC,oBAAC,UAAK,UAAA,OAAA,CAAI;AAAA,QAAA,GACZ;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACG,SAAA,EAAM,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAEV,UAAA;AAAA,gBAAA,oBAACF,YAAA,EAAW,WAAU,cAAA,CAAc;AAAA,gBAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAExC,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,kBAAiB;AAAA,MAEjB,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,aAAY;AAAA,UACZ,oBAAmB;AAAA,UACnB,aAAa;AAAA,UACb,OAAO;AAAA,UACP,OAAO;AAAA,UACP,aAAY;AAAA,UACZ,YAAW;AAAA,UACX,mBAAkB;AAAA,UAClB,aAAa;AAAA,YACX,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,YACxB,EAAE,OAAO,YAAY,OAAO,KAAA;AAAA,YAC5B,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,YACxB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,UAAI;AAAA,UAE/B,kBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IACpB;AAAA,EAAA;AAGN;ACvHA,MAAM,gBAAgB;AAAA,EACpB,EAAE,OAAO,OAAO,MAAM,WAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,UAAU,QAAQ,KAAA;AAAA,EACvC,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AACxB;AAEA,MAAM,0BAA0B;AAAA,EAC9B,EAAE,OAAO,OAAO,MAAM,YAAY,QAAQ,KAAA;AAAA,EAC1C,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,aAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,KAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,OAAA;AAAA,EACrB,EAAE,OAAO,MAAM,MAAM,SAAA;AAAA,EACrB,EAAE,OAAO,OAAO,MAAM,SAAA;AAAA,EACtB,EAAE,OAAO,MAAM,MAAM,cAAA;AACvB;AAEA,MAAM,iBAAiB;AAAA,EACrB,EAAE,OAAO,WAAW,QAAQ,KAAA;AAAA,EAC5B,EAAE,OAAO,UAAA;AAAA,EACT,EAAE,OAAO,UAAA;AACX;AAEA,MAAM,2BAA2B;AAAA,EAC/B;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,OAAO,OAAO,MAAM,MAAM,WAAA;AAAA,MACnC,EAAE,OAAO,UAAU,OAAO,OAAO,MAAM,WAAA;AAAA,MACvC,EAAE,OAAO,UAAU,OAAO,OAAO,MAAM,WAAA;AAAA,IAAoB;AAAA,EAC7D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC;AAAA,EAEZ;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ;AAAA,MACN;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,MAEZ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,UAAU;AAAA,MAAA;AAAA,IACZ;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,OAAO,KAAK,MAAM,UAAA;AAAA,MACnC,EAAE,OAAO,YAAY,OAAO,KAAK,MAAM,UAAA;AAAA,IAAmB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,OAAO,KAAK,MAAM,UAAA;AAAA,MACnC,EAAE,OAAO,YAAY,OAAO,KAAK,MAAM,UAAA;AAAA,IAAmB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,EAAC;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,MACR,EAAE,MAAM,QAAQ,UAAU,IAAI,QAAQ,GAAA;AAAA,IAAG;AAAA,EAC3C;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY;AAAA,MACV,EAAE,OAAO,mBAAmB,MAAM,kBAAA;AAAA,MAClC,EAAE,OAAO,sBAAsB,MAAM,oBAAA;AAAA,MACrC,EAAE,OAAO,qBAAqB,MAAM,sBAAA;AAAA,IAAsB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,EAAC;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,OAAO,OAAO,MAAM,WAAA;AAAA,MACrC,EAAE,OAAO,QAAQ,OAAO,MAAM,MAAM,UAAA;AAAA,MACpC,EAAE,OAAO,QAAQ,OAAO,KAAK,MAAM,WAAA;AAAA,IAAoB;AAAA,EACzD;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,MACzB,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,IAAI;AAAA,EAC/B;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,SAAS,OAAO,KAAK,MAAM,UAAA;AAAA,MACpC,EAAE,OAAO,YAAY,OAAO,KAAK,MAAM,UAAA;AAAA,IAAmB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS,CAAA;AAAA,EAAC;AAAA,EAEZ;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,OAAO,KAAK,MAAM,UAAA;AAAA,MACnC,EAAE,OAAO,YAAY,OAAO,KAAK,MAAM,UAAA;AAAA,IAAmB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO,CAAA;AAAA,EAAC;AAAA,EAEV;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,YAAY,CAAA;AAAA,EAAC;AAAA,EAEf;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,MACL,EAAE,OAAO,QAAQ,OAAO,KAAK,MAAM,UAAA;AAAA,MACnC,EAAE,OAAO,YAAY,OAAO,KAAK,MAAM,UAAA;AAAA,IAAmB;AAAA,EAC5D;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO,CAAA;AAAA,EAAC;AAEZ;AAEA,MAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,IAAI,CAAC,OAAO,yBAAyB,KAAK,CAAC,WAAW,OAAO,OAAO,EAAE,CAAE;AAE1E,MAAM,2BAA2B;AAAA,EAC/B;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,EAAA;AAEX;AAEA,MAAM,cAAc;AAAA,EAClB,EAAE,OAAO,WAAW,QAAQ,KAAA;AAAA,EAC5B,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,OAAO,KAAA;AAAA,EACxB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,EACxB,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,EACzB,EAAE,OAAO,MAAM,OAAO,KAAA;AAAA,EACtB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAC1B;AAEA,MAAM,yBAAyD;AAAA,EAC7D;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,MAEV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAEJ;AAEA,MAAM,eAAe;AAAA,EACnB,EAAE,OAAO,WAAW,QAAQ,KAAA;AAAA,EAC5B,EAAE,OAAO,SAAS,OAAO,IAAA;AAAA,EACzB,EAAE,OAAO,OAAO,OAAO,IAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,EACxB,EAAE,OAAO,SAAS,OAAO,KAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,EACxB,EAAE,OAAO,UAAU,OAAO,IAAA;AAC5B;AAEA,MAAM,iBAAiB;AAAA,EACrB,EAAE,OAAO,QAAQ,QAAQ,KAAA;AAAA,EACzB,EAAE,OAAO,OAAO,OAAO,KAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,EACxB,EAAE,OAAO,OAAO,OAAO,KAAA;AAAA,EACvB,EAAE,OAAO,OAAO,OAAO,IAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,OAAO,IAAA;AAAA,EACxB,EAAE,OAAO,SAAS,OAAO,KAAA;AAC3B;AAEA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,gBAAgB;AAAA,EACpB,EAAE,OAAO,UAAU,MAAM,mBAAmB,SAAS,KAAA;AAAA,EACrD,EAAE,OAAO,SAAS,MAAM,KAAA;AAAA,EACxB,EAAE,OAAO,QAAQ,MAAM,SAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,MAAM,OAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,MAAM,aAAA;AAAA,EACvB,EAAE,OAAO,UAAU,MAAM,aAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,MAAM,aAAA;AACzB;AAEA,MAAM,iBAAiB;AAAA,EACrB,EAAE,OAAO,UAAU,MAAM,mBAAmB,SAAS,KAAA;AAAA,EACrD,EAAE,OAAO,SAAS,MAAM,KAAA;AAAA,EACxB,EAAE,OAAO,UAAU,MAAM,SAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,MAAM,OAAA;AAAA,EACvB,EAAE,OAAO,UAAU,MAAM,aAAA;AAAA,EACzB,EAAE,OAAO,UAAU,MAAM,aAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,MAAM,aAAA;AACzB;AAEA,MAAM,mBAAmB;AAAA,EACvB,EAAE,OAAO,UAAU,MAAM,mBAAmB,SAAS,KAAA;AAAA,EACrD,EAAE,OAAO,UAAU,MAAM,SAAA;AAAA,EACzB,EAAE,OAAO,UAAU,MAAM,OAAA;AAAA,EACzB,EAAE,OAAO,QAAQ,MAAM,aAAA;AAAA,EACvB,EAAE,OAAO,QAAQ,MAAM,aAAA;AAAA,EACvB,EAAE,OAAO,UAAU,MAAM,aAAA;AAC3B;AAEA,MAAM,aAA6B;AAAA,EACjC,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,iBAAiB;AAAA,IACjB,eAAe;AAAA,EAAA,CAChB;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AACH;AAEA,MAAM,iBAAiB,WAAW,IAAI,CAAC,EAAE,OAAO,QAAQ,GAAG,IAAA,MAAU,GAAG;AAExE,MAAM,cAA8B;AAAA,EAClC,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,EAAA,CACX;AACH;AAEA,MAAM,gBAAgC;AAAA,EACpC,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AAAA,EACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EAAA,CACb;AACH;AAEA,SAAS,UAAU,EAAE,SAA4B;AAC/C,QAAM,OACJ,UAAU,OACN,gCACA,UAAU,QAAQ,MAAM,SAAS,IAAI,IACnC,gCACA,UAAU,QACR,gCACA;AAEV,6BAAQ,QAAA,EAAK,WAAW,yDAAyD,IAAI,IAAK,UAAA,OAAM;AAClG;AAEA,SAAS,aAAa,EAAE,SAA4B;AAClD,QAAM,OACJ,UAAU,OACN,4DACA,UAAU,OACR,8DACA;AAER,6BAAQ,QAAA,EAAK,WAAW,sDAAsD,IAAI,IAAK,UAAA,OAAM;AAC/F;AAEA,SAAS,WAAW,EAAE,SAA4B;AAChD,QAAM,OACJ,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,IAAI,KAAK,MAAM,SAAS,KAAK,IAChE,gCACA,MAAM,SAAS,GAAG,KAAK,UAAU,QAC/B,iDACA,MAAM,SAAS,GAAG,IAChB,gCACA;AAEV,6BAAQ,QAAA,EAAK,WAAW,sDAAsD,IAAI,IAAK,UAAA,OAAM;AAC/F;AAEA,SAAS,WAAW,EAAE,SAA4B;AAChD,SACE,qBAAC,OAAA,EAAI,WAAU,4EACb,UAAA;AAAA,IAAA,oBAAC,UAAK,WAAU,sHACb,gBAAM,MAAM,GAAG,CAAC,GACnB;AAAA,IACA,oBAAC,UAAM,UAAA,MAAA,CAAM;AAAA,EAAA,GACf;AAEJ;AAEA,SAAS,UAAU,EAAE,OAA6C;AAChE,QAAM,eAAe,IAAI,cAAc;AAEvC,SACE,qBAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,mCACb,UAAA;AAAA,MAAA,oBAAC,WAAA,EAAU,OAAO,IAAI,WAAA,CAAY;AAAA,MAClC,oBAAC,QAAA,EAAK,WAAU,kEAAkE,cAAI,OAAM;AAAA,MAC3F,eACC,oBAAC,QAAA,EAAK,WAAU,2FAA0F,iBAE1G,IACE;AAAA,IAAA,GACN;AAAA,IACA,qBAAC,OAAA,EAAI,WAAU,wEACb,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAM,cAAI,QAAA,CAAQ;AAAA,0BAClB,QAAA,EAAM,UAAA,IAAI,cAAc,OAAO,UAAU,IAAI,WAAU;AAAA,MACvD,IAAI,oBAAoB,qBAAC,QAAA,EAAK,UAAA;AAAA,QAAA;AAAA,QAAI,IAAI;AAAA,MAAA,EAAA,CAAkB,IAAU;AAAA,MAClE,IAAI,gBAAgB,oBAAC,QAAA,EAAM,UAAA,IAAI,eAAc,IAAU;AAAA,MACvD,OAAO,IAAI,oBAAoB,YAAY,IAAI,kBAAkB,yBAAK,QAAA,EAAK,UAAA;AAAA,QAAA;AAAA,QAAI,IAAI;AAAA,MAAA,EAAA,CAAgB,IAAU;AAAA,IAAA,EAAA,CAChH;AAAA,EAAA,GACF;AAEJ;AAEA,SAAS,SAAS,KAAgD;AAChE,QAAM,eAAe,IAAI,cAAc;AAEvC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO;AAAA,MACL,oBAAC,QAAA,EAAK,WAAU,6CAA6C,cAAI,IAAG;AAAA,MACpE,oBAAC,aAAU,KAAU;AAAA,MACrB,oBAAC,cAAA,EAAa,OAAO,IAAI,SAAA,CAAU;AAAA,MACnC,oBAAC,YAAA,EAAW,OAAO,IAAI,OAAA,CAAQ;AAAA,MAC/B,oBAAC,YAAA,EAAW,OAAO,IAAI,SAAA,CAAU;AAAA,MACjC,oBAAC,YAAA,EAAW,OAAO,IAAI,QAAA,CAAS;AAAA,MAChC,oBAAC,QAAA,EAAK,WAAU,YAAY,cAAI,WAAU;AAAA,MAC1C,oBAAC,QAAA,EAAK,WAAU,YAAY,cAAI,SAAQ;AAAA,MACxC,oBAAC,QAAA,EAAM,UAAA,IAAI,QAAA,CAAQ;AAAA,MACnB,oBAAC,QAAA,EAAM,UAAA,IAAI,UAAA,CAAU;AAAA,MACrB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WACE,eACI,2GACA;AAAA,UAGL,UAAA,IAAI;AAAA,QAAA;AAAA,MAAA;AAAA,IACP;AAAA,EACF;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA,MAAM;AAAA,EACN;AACF,GAIG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,+EACT,UACI,6EACA,0EACN;AAAA,MAEA,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,WAAU,iBAAA,CAAiB;AAAA,QAChC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAAS,aAAa;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA,WAAW,8EACT,SACI,6DACA,uHACN;AAAA,MAEA,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,mFAAmF,UAAA,OAAM;AAAA,QACxG,oBAAC,OAAA,EAAI,WAAU,8DAA8D,UAAA,OAAM;AAAA,QACnF,oBAAC,OAAA,EAAI,WAAU,oDAAoD,UAAA,KAAA,CAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9E;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AAAA,EACV;AAAA,EACA,WAAW;AAAA,EACX;AACF,GAQG;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL;AAAA,QACA,WAAW,mIACT,QACI,yEACA,WACE,oHACA,sJACR;AAAA,QAEA,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,WAAW,SAAA,CAAS;AAAA,UACnC,CAAC,SAAS,WACT,YAAY,WACV,oBAAC,aAAA,EAAY,WAAU,mDAAA,CAAmD,IAE1E,oBAAC,cAAA,EAAa,WAAU,oDAAmD,IAE3E;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEL,YAAY,OACX,oBAAC,SAAI,WAAU,4KACZ,gBACH,IACE;AAAA,EAAA,GACN;AAEJ;AAEA,SAAS,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,6BACG,OAAA,EAAI,WAAU,eACZ,UAAA,MAAM,IAAI,CAAC,SACV;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,MAAK;AAAA,MACL,SAAS,MAAM,SAAS,IAAI;AAAA,MAC5B,WAAW,kGACT,SAAS,SACL,uEACA,+DACN;AAAA,MAEA,UAAA;AAAA,QAAA,oBAAC,UAAM,UAAA,KAAA,CAAK;AAAA,QACX,SAAS,SAAS,oBAAC,UAAK,WAAU,eAAc,gBAAE,IAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAVxD;AAAA,EAAA,CAYR,GACH;AAEJ;AAEA,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAaG;AACD,QAAM,aAAa,OAAO,WAAW,CAAC;AAEtC,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAwB,UAAU,OAAO,QAAQ;AACzF,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,KAAK;AAC1D,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAS,IAAI;AAC7D,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAS,IAAI;AAC7D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,MAAM;AACjE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,IAAI;AAC/D,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAA6B,MAAM;AAC/E,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,KAAK;AAChE,QAAM,CAAC,cAAc,eAAe,IAAI,MAAM,SAAS,EAAE;AACzD,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,MAAM,SAAwB,IAAI;AAClF,QAAM,CAAC,uBAAuB,wBAAwB,IAAI,MAAM,SAAwB,IAAI;AAC5F,QAAM,YAAY,MAAM,OAA8B,IAAI;AAE1D,QAAM,uBAAuB,MAAM;AAAA,IACjC,MAAM;AAAA,MACJ;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,MAEV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,MAEV;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,IAEF,CAAA;AAAA,EAAC;AAEH,QAAM,CAAC,eAAe,gBAAgB,IAAI,MAAM,SAAS,oBAAoB;AAE7E,QAAM,qBAAqB,MAAM,YAAY,CAAC,SAA4B;AACxE,qBAAiB,CAAC,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC;AAAA,EAClD,GAAG,CAAA,CAAE;AAEL,QAAM,cAAc,MAAM;AAAA,IACxB,CACE,OAMA,YAIG;AACH,oBAAc,WAAW,IAAI,KAAK;AAClC,UAAI,mCAAS,UAAU;AACrB,2BAAmB,QAAQ,QAAQ;AAAA,MACrC;AACA,UAAI,WAAW,kBAAkB,SAAS;AACxC,4BAAoB,QAAQ,gBAAgB,IAAI;AAAA,MAClD;AAAA,IACF;AAAA,IACA,CAAC,oBAAoB,WAAW,IAAI,aAAa;AAAA,EAAA;AAGnD,QAAM,UAAU,MAAM;AACpB,iBAAa,UAAU,OAAO,QAAQ;AACtC,mBAAe,WAAW,MAAM;AAChC,qBAAiB,WAAW,QAAQ;AACpC,qBAAiB,WAAW,QAAQ;AACpC,sBAAkB,WAAW,SAAS;AACtC,mBAAe,MAAM;AACrB,oBAAgB,EAAE;AAClB,sBAAkB,KAAK;AACvB,wBAAoB,IAAI;AACxB,6BAAyB,IAAI;AAC7B,qBAAiB,oBAAoB;AAAA,EACvC,GAAG,CAAC,SAAS,WAAW,UAAU,WAAW,IAAI,WAAW,WAAW,WAAW,UAAU,WAAW,QAAQ,oBAAoB,CAAC;AAEpI,QAAM,UAAU,MAAM;AACpB,UAAM,oBAAoB,CAAC,UAAsB;AAC/C,UAAI,CAAC,UAAU,SAAS;AACtB;AAAA,MACF;AAEA,UAAI,UAAU,QAAQ,SAAS,MAAM,MAAc,GAAG;AACpD;AAAA,MACF;AAEA,mBAAa,IAAI;AACjB,wBAAkB,KAAK;AACvB,+BAAyB,IAAI;AAAA,IAC/B;AAEA,aAAS,iBAAiB,aAAa,iBAAiB;AACxD,WAAO,MAAM,SAAS,oBAAoB,aAAa,iBAAiB;AAAA,EAC1E,GAAG,CAAA,CAAE;AAEL,QAAM,aAAa;AAAA,IACjB,EAAE,OAAO,MAAM,OAAO,oBAAC,mBAAgB,SAAQ,UAAU,UAAA,WAAW,QAAA,CAAQ,EAAA;AAAA,IAC5E;AAAA,MACE,OAAO;AAAA,MACP,OACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,UAAU,cAAc;AAAA,UACxB,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,WAAW,OAAO,QAAS;AAAA,UACjF,MACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,CAAC,OAAO,OAAO,KAAK;AAAA,cAC3B,QAAQ;AAAA,cACR,UAAU,CAAC,UAAU;AACnB;AAAA,kBACE,EAAE,QAAQ,MAAA;AAAA,kBACV;AAAA,oBACE,UAAU;AAAA,sBACR,IAAI;AAAA,sBACJ,OAAO,UAAU,KAAK;AAAA,sBACtB,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,QAAQ,WAAW;AAAA,oBAAA;AAAA,oBAErB,cAAc,WAAW;AAAA,kBAAA;AAAA,gBAC3B;AAEF,+BAAe,KAAK;AACpB,6BAAa,IAAI;AAAA,cACnB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIJ,UAAA,oBAAC,YAAA,EAAW,OAAO,YAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAClC;AAAA,IAGJ;AAAA,MACE,OAAO;AAAA,MACP,OACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,UAAU,cAAc;AAAA,UACxB,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,aAAa,OAAO,UAAW;AAAA,UACrF,MACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,CAAC,MAAM,MAAM,IAAI;AAAA,cACxB,QAAQ;AAAA,cACR,UAAU,CAAC,UAAU;AACnB;AAAA,kBACE,EAAE,UAAU,MAAA;AAAA,kBACZ;AAAA,oBACE,UAAU;AAAA,sBACR,IAAI;AAAA,sBACJ,OAAO,WAAW,KAAK;AAAA,sBACvB,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,QAAQ,WAAW;AAAA,oBAAA;AAAA,oBAErB,cAAc,WAAW;AAAA,kBAAA;AAAA,gBAC3B;AAEF,iCAAiB,KAAK;AACtB,6BAAa,IAAI;AAAA,cACnB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIJ,UAAA,oBAAC,YAAA,EAAW,OAAO,cAAA,CAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IACpC;AAAA,IAGJ,EAAE,OAAO,OAAO,2BAAQ,iBAAA,EAAgB,SAAQ,UAAS,UAAA,MAAA,CAAG,EAAA;AAAA,IAC5D;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,iBAAA,EAAiB,qBAAW,oBAAoB,WAAW,oBAAoB,QAAA,CAAQ;AAAA,IAAA;AAAA,IAEjG;AAAA,MACE,OAAO;AAAA,MACP,OACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,UAAU,cAAc;AAAA,UACxB,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,cAAc,OAAO,WAAY;AAAA,UACvF,MACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,CAAC,QAAQ,QAAQ,OAAO;AAAA,cAC/B,QAAQ;AAAA,cACR,UAAU,CAAC,UAAU;AACnB;AAAA,kBACE,EAAE,WAAW,MAAA;AAAA,kBACb;AAAA,oBACE,UAAU;AAAA,sBACR,IAAI;AAAA,sBACJ,OAAO,UAAU,KAAK;AAAA,sBACtB,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,QAAQ,WAAW;AAAA,oBAAA;AAAA,oBAErB,cAAc,WAAW;AAAA,kBAAA;AAAA,gBAC3B;AAEF,kCAAkB,KAAK;AACvB,6BAAa,IAAI;AAAA,cACnB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,IAGJ,EAAE,OAAO,QAAQ,OAAO,oBAAC,iBAAA,EAAgB,wBAAU,EAAA;AAAA,IACnD;AAAA,MACE,OAAO;AAAA,MACP,OACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAQ;AAAA,UACR,UAAU,cAAc;AAAA,UACxB,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,aAAa,OAAO,UAAW;AAAA,UACrF,MACE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAO,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,cAC9B,QAAQ;AAAA,cACR,UAAU,CAAC,UAAU;AACnB;AAAA,kBACE,EAAE,UAAU,MAAA;AAAA,kBACZ;AAAA,oBACE,UAAU;AAAA,sBACR,IAAI;AAAA,sBACJ,OAAO,WAAW,KAAK;AAAA,sBACvB,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,QAAQ,WAAW;AAAA,oBAAA;AAAA,oBAErB,cAAc,WAAW;AAAA,kBAAA;AAAA,gBAC3B;AAEF,iCAAiB,KAAK;AACtB,6BAAa,IAAI;AAAA,cACnB;AAAA,YAAA;AAAA,UAAA;AAAA,UAIJ,UAAA,oBAAC,cAAA,EAAa,OAAO,cAAA,CAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IACtC;AAAA,IAGJ,EAAE,OAAO,QAAQ,2BAAQ,iBAAA,EAAgB,SAAQ,UAAS,UAAA,OAAA,CAAI,EAAA;AAAA,IAC9D,EAAE,OAAO,OAAO,2BAAQ,iBAAA,EAAiB,UAAA,WAAW,iBAAiB,QAAA,CAAQ,EAAA;AAAA,IAC7E;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,iBAAA,EAAiB,UAAA,OAAO,WAAW,oBAAoB,WAAW,GAAG,WAAW,eAAe,SAAS,OAAA,CAAO;AAAA,IAAA;AAAA,IAEzH,EAAE,OAAO,QAAQ,OAAO,oBAAC,iBAAA,EAAgB,OAAK,MAAC,UAAU,OAAO,UAAA,aAAA,CAAU,EAAA;AAAA,IAC1E,EAAE,OAAO,MAAM,OAAO,oBAAC,iBAAA,EAAgB,uBAAS,EAAA;AAAA,EAAmB;AAGrE,QAAM,aAAa;AAAA,IACjB;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,YAAA,EAAW,OAAM,MAAA,CAAM;AAAA,MAC/B,QAAQ,qBAAqB;AAAA,MAC7B,SAAS,MAAM;AACb;AAAA,UACE,EAAE,eAAe,UAAA;AAAA,UACjB;AAAA,YACE,UAAU;AAAA,cACR,IAAI;AAAA,cACJ,OAAO;AAAA,cACP,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,cACN,QAAQ;AAAA,YAAA;AAAA,YAEV,cAAc;AAAA,UAAA;AAAA,QAChB;AAAA,MAEJ;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,YAAA,EAAW,OAAM,MAAA,CAAM;AAAA,MAC/B,QAAQ,qBAAqB;AAAA,MAC7B,SAAS,MAAM;AACb;AAAA,UACE,EAAE,eAAe,UAAA;AAAA,UACjB;AAAA,YACE,UAAU;AAAA,cACR,IAAI;AAAA,cACJ,OAAO;AAAA,cACP,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,cACN,QAAQ;AAAA,YAAA;AAAA,YAEV,cAAc;AAAA,UAAA;AAAA,QAChB;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,iBAAiB;AAAA,IACrB;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,YAAA,EAAW,OAAM,MAAA,CAAM;AAAA,MAC/B,QAAQ,qBAAqB;AAAA,MAC7B,SAAS,MAAM,oBAAoB,SAAS;AAAA,IAAA;AAAA,IAE9C;AAAA,MACE,OAAO;AAAA,MACP,OAAO,oBAAC,YAAA,EAAW,OAAM,MAAA,CAAM;AAAA,MAC/B,QAAQ,qBAAqB;AAAA,MAC7B,SAAS,MAAM,oBAAoB,SAAS;AAAA,IAAA;AAAA,EAC9C;AAGF,QAAM,uBAAuB,cAAc,OAAO,CAAC,SAAS;AAC1D,QAAI,mBAAmB,QAAQ;AAC7B,aAAO,KAAK,SAAS;AAAA,IACvB;AAEA,QAAI,mBAAmB,QAAQ;AAC7B,aAAO,KAAK,SAAS;AAAA,IACvB;AAEA,WAAO;AAAA,EACT,CAAC;AAED,6BACG,OAAA,EAAI,KAAK,WAAW,WAAU,gCAC7B,UAAA,oBAAC,OAAA,EAAI,WAAU,wBACb,+BAAC,OAAA,EAAI,WAAW,gCAAgC,UAAU,gBAAgB,iCAAiC,IACzG,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,WACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,uFACb,UAAA;AAAA,QAAA,oBAAC,UAAA,EAAO,MAAK,UAAS,WAAU,2EAA0E,UAAA,MAE1G;AAAA,QACA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,oBAAC,UAAK,UAAA,SAAA,CAAM;AAAA,QACZ,oBAAC,UAAK,UAAA,QAAA,CAAK;AAAA,QACX;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,oBAAoB,IAAI;AAAA,YACvC,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MACP;AAAA,cACE,EAAE,mBAAmB,WAAW,qBAAqB,SAAA;AAAA,cACrD;AAAA,gBACE,UAAU;AAAA,kBACR,IAAI;AAAA,kBACJ,OAAO,QAAQ,WAAW,qBAAqB,QAAQ;AAAA,kBACvD,MAAM;AAAA,kBACN,SAAS;AAAA,kBACT,MAAM;AAAA,kBACN,QAAQ;AAAA,gBAAA;AAAA,gBAEV,cAAc;AAAA,cAAA;AAAA,YAChB;AAAA,YAGJ,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,UAAU,cAAc;AAAA,YACxB,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,mBAAmB,OAAO,gBAAiB;AAAA,YACjG,MACE;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAO,CAAC,UAAU,SAAS,MAAM;AAAA,gBACjC,QAAO;AAAA,gBACP,UAAU,CAAC,UAAU;AACnB,2CAAyB,KAAK;AAC9B,+BAAa,IAAI;AAAA,gBACnB;AAAA,cAAA;AAAA,YAAA;AAAA,YAGL,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,GACF;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,mEACT,UAAU,gBAAgB,aAC5B;AAAA,UAEC,UAAA,WAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,QAAA,oBAAC,YAAA,EAAW,OAAO,YAAA,CAAa;AAAA,QAChC,oBAAC,cAAA,EAAa,OAAO,cAAA,CAAe;AAAA,QACpC,oBAAC,WAAA,EAAU,OAAO,WAAW,WAAA,CAAY;AAAA,QACzC,qBAAC,iBAAA,EAAgB,OAAK,MAAC,UAAU,OAAO,UAAA;AAAA,UAAA;AAAA,UAC/B;AAAA,QAAA,EAAA,CACT;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,6BACZ,UAAA;AAAA,QAAA,cAAc,IAAI,CAAC,WAClB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAO,OAAO;AAAA,YACd,MAAM,OAAO;AAAA,YACb,SAAS,OAAO;AAAA,UAAA;AAAA,UAHX,OAAO;AAAA,QAAA,CAKf;AAAA,QACD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,aAAa,CAAC,YAAa,YAAY,iBAAiB,OAAO,cAAe;AAAA,YAC7F,WAAW,sFACT,cAAc,iBACV,2FACA,mEACN;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,GACF;AAAA,0BACC,eAAA,EAAc,OAAM,QACnB,UAAA,qBAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAM;AAAA,YACN,MAAK;AAAA,YACL,QAAQ,qBAAqB;AAAA,YAC7B,SAAS,MAAM,oBAAoB,IAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,WAAW,qBAAqB;AAAA,YACvC,MAAM,WAAW,oBAAoB,cAAc;AAAA,YACnD,QAAQ,qBAAqB;AAAA,YAC7B,SAAS,MACP;AAAA,cACE,EAAE,mBAAmB,WAAW,qBAAqB,SAAA;AAAA,cACrD;AAAA,gBACE,UAAU,WAAW,oBACjB,SACA;AAAA,kBACE,IAAI;AAAA,kBACJ,OAAO;AAAA,kBACP,MAAM;AAAA,kBACN,SAAS;AAAA,kBACT,MAAM;AAAA,kBACN,QAAQ;AAAA,gBAAA;AAAA,gBAEd,cAAc;AAAA,cAAA;AAAA,YAChB;AAAA,UACF;AAAA,QAAA;AAAA,QAGJ;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,WAAW,iBAAiB;AAAA,YACnC,MAAK;AAAA,YACL,QAAQ,qBAAqB,SAAS,qBAAqB;AAAA,YAC3D,SAAS,MAAM,oBAAoB,WAAW,kBAAkB,YAAY,QAAQ,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAE3F;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,GAAG,WAAW,mBAAmB,CAAC;AAAA,YACzC,MAAK;AAAA,YACL,QAAQ,qBAAqB;AAAA,YAC7B,SAAS,MAAM,oBAAoB,gBAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,MACrD,EAAA,CACF,EAAA,CACF;AAAA,MACC,cAAc,iBACb,qBAAC,OAAA,EAAI,WAAU,0DACb,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,oHACb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO,CAAC,UAAU,SAAS,SAAS,MAAM;AAAA,YAC1C,QAAQ,yBAAyB;AAAA,YACjC,UAAU;AAAA,UAAA;AAAA,QAAA,GAEd;AAAA,QACA,qBAAC,OAAA,EAAI,WAAU,sKACZ,UAAA;AAAA,UAAA,0BAA0B,UAAU,2BAA2B;AAAA,UAC/D,0BAA0B,UAAU,6BAA6B;AAAA,UACjE,0BAA0B,SAAS,2BAA2B;AAAA,UAC9D,CAAC,yBAAyB,0BAA0B,WACjD,uBACA;AAAA,QAAA,EAAA,CACN;AAAA,MAAA,EAAA,CACF,IACE;AAAA,MAEH,UAAU,oBAAC,gBAAA,EAAe,SAAO,MAAC,OAAO,WAAW,MAAM,GAAG,CAAC,EAAA,CAAG,IAAK;AAAA,MAEvE,qBAAC,eAAA,EAAc,OAAM,MAAK,aAAY,QACpC,UAAA;AAAA,QAAA,oBAAC,OAAE,UAAA,oEAAA,CAGH;AAAA,QACA,oBAAC,OAAE,UAAA,gFAAA,CAGH;AAAA,MAAA,GACF;AAAA,0BAEC,eAAA,EAAc,OAAM,MAAK,aAAY,QACpC,8BAAC,OAAA,EAAI,WAAU,8KACZ,UAAA,WAAW,mBAAmB,WAAW,kBAAkB,IAC1D,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,UAAA;AAAA,UAAA;AAAA,UAAO,WAAW;AAAA,UAAgB;AAAA,QAAA,GAAe;AAAA,QACtD;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM;AACb;AAAA,gBACE,EAAE,kBAAkB,WAAW,mBAAmB,KAAK,EAAA;AAAA,gBACvD;AAAA,kBACE,UAAU;AAAA,oBACR,IAAI;AAAA,oBACJ,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,SAAS;AAAA,oBACT,MAAM;AAAA,oBACN,QAAQ;AAAA,kBAAA;AAAA,kBAEV,cAAc;AAAA,gBAAA;AAAA,cAChB;AAAA,YAEJ;AAAA,YACA,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF,IAEA,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,oBAAC,SAAI,UAAA,8BAAA,CAA2B;AAAA,QAChC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM;AACb;AAAA,gBACE,EAAE,iBAAiB,EAAA;AAAA,gBACnB;AAAA,kBACE,UAAU;AAAA,oBACR,IAAI;AAAA,oBACJ,OAAO;AAAA,oBACP,MAAM;AAAA,oBACN,SAAS;AAAA,oBACT,MAAM;AAAA,oBACN,QAAQ;AAAA,kBAAA;AAAA,kBAEV,cAAc;AAAA,gBAAA;AAAA,cAChB;AAAA,YAEJ;AAAA,YACA,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF,GAEJ,GACF;AAAA,MAEA,oBAAC,mBAAA,EAAkB,OAAM,QAAO,OAAO,YAAY;AAAA,MAEnD,oBAAC,mBAAA,EAAkB,OAAM,QAAO,OAAO,gBAAgB;AAAA,MAEvD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,OAAO;AAAA,YACL;AAAA,cACE,OAAO,WAAW,oBACd,GAAG,WAAW,iBAAiB,kBAC/B;AAAA,cACJ,OAAO,WAAW,oBAAoB,QAAQ;AAAA,cAC9C,QAAQ,qBAAqB;AAAA,cAC7B,SAAS,MAAM;AACb;AAAA,kBACE,EAAE,mBAAmB,SAAA;AAAA,kBACrB;AAAA,oBACE,UAAU,WAAW,oBACjB,SACA;AAAA,sBACE,IAAI;AAAA,sBACJ,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,QAAQ;AAAA,oBAAA;AAAA,oBAEd,cAAc;AAAA,kBAAA;AAAA,gBAChB;AAAA,cAEJ;AAAA,YAAA;AAAA,UACF;AAAA,QACF;AAAA,MAAA;AAAA,MAGF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,EAAE,OAAO,MAAM,QAAQ,mBAAmB,KAAA;AAAA,YAC1C,EAAE,OAAO,QAAQ,QAAQ,mBAAmB,OAAA;AAAA,YAC5C,EAAE,OAAO,QAAQ,QAAQ,mBAAmB,OAAA;AAAA,UAAO;AAAA,UAErD,UAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAGZ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO,qBAAqB,IAAI,CAAC,UAAU;AAAA,YACzC,GAAG;AAAA,YACH,QAAQ,qBAAqB,KAAK;AAAA,YAClC,SAAS,MAAM,oBAAoB,KAAK,MAAM;AAAA,UAAA,EAC9C;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,aAAY;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,cAAc;AAAA,UACd,SAAS,MAAM,kBAAkB,IAAI;AAAA,UACrC,OAAO;AAAA,UACP,UAAU;AAAA,UACV,WAAW,MAAM;AACf,gBAAI,CAAC,aAAa,QAAQ;AACxB;AAAA,YACF;AAEA,6BAAiB,CAAC,YAAY;AAAA,cAC5B;AAAA,gBACE,IAAI;AAAA,gBACJ,OAAO;AAAA,gBACP,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,MAAM;AAAA,gBACN,QAAQ,WAAW,qBAAqB,WAAW;AAAA,cAAA;AAAA,cAErD,GAAG;AAAA,YAAA,CACJ;AACD,4BAAgB,EAAE;AAClB,2BAAe,MAAM;AACrB,8BAAkB,KAAK;AACvB,gCAAoB,WAAW,qBAAqB,WAAW,EAAE;AAAA,UACnE;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,UAAU,oBAAC,kBAAA,EAAiB,OAAM,QAAO,OAAO,YAAY,IAAK;AAAA,IAAA,GACpE;AAAA,IAEC,CAAC,UAAU,oBAAC,kBAAA,EAAiB,OAAO,YAAY,IAAK;AAAA,EAAA,EAAA,CACxD,GACF,GACF;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,QAAM,aAAa,OAAO,YAAY,CAAC;AAEvC,SACE,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,mEACb,UAAA;AAAA,MAAA,oBAAC,KAAA,EAAI,WAAU,cAAA,CAAc;AAAA,2BAC5B,QAAA,EAAM,UAAA;AAAA,QAAA,WAAW;AAAA,QAAW;AAAA,QAAE,WAAW;AAAA,MAAA,EAAA,CAAG;AAAA,IAAA,GAC/C;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,mEACT,UAAU,gBAAgB,aAC5B;AAAA,QACD,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,wBAGA,OAAA,EAAI,WAAU,6BACZ,UAAA,eAAe,IAAI,CAAC,WACnB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,QACb,SAAS,OAAO;AAAA,MAAA;AAAA,MAHX,OAAO;AAAA,IAAA,CAKf,GACH;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,UACL,EAAE,OAAO,MAAM,OAAO,WAAW,OAAA;AAAA,UACjC,EAAE,OAAO,OAAO,OAAO,WAAW,SAAA;AAAA,UAClC,EAAE,OAAO,QAAQ,OAAO,WAAW,YAAY,IAAA;AAAA,UAC/C,EAAE,OAAO,OAAO,OAAO,WAAW,SAAA;AAAA,QAAS;AAAA,MAC7C;AAAA,IAAA;AAAA,IAGF,qBAAC,eAAA,EAAc,OAAM,QAAO,aAAY,QACtC,UAAA;AAAA,MAAA,oBAAC,OAAE,UAAA,4CAAA,CAAyC;AAAA,MAC5C,oBAAC,OAAE,UAAA,yBAAA,CAAsB;AAAA,MACzB,oBAAC,OAAE,UAAA,8BAAA,CAA2B;AAAA,IAAA,GAChC;AAAA,wBAEC,eAAA,EAAc,OAAM,QACnB,UAAA,oBAAC,KAAA,EAAE,6FAGH,EAAA,CACF;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,oBAAoB,OAAO,MAAA;AAAA,UACpC,EAAE,OAAO,uBAAuB,OAAO,MAAA;AAAA,QAAM;AAAA,MAC/C;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEA,SAAS,sBAAsB;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;AACD,QAAM,aAAa,OAAO,cAAc,CAAC;AAEzC,SACE,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,mEACb,UAAA;AAAA,MAAA,oBAAC,UAAA,EAAS,WAAU,cAAA,CAAc;AAAA,2BACjC,QAAA,EAAM,UAAA;AAAA,QAAA,WAAW;AAAA,QAAW;AAAA,QAAE,WAAW;AAAA,MAAA,EAAA,CAAG;AAAA,IAAA,GAC/C;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW,mEACT,UAAU,gBAAgB,aAC5B;AAAA,QACD,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,wBAGA,OAAA,EAAI,WAAU,6BACZ,UAAA,iBAAiB,IAAI,CAAC,WACrB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,OAAO,OAAO;AAAA,QACd,MAAM,OAAO;AAAA,QACb,SAAS,OAAO;AAAA,MAAA;AAAA,MAHX,OAAO;AAAA,IAAA,CAKf,GACH;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,OAAO;AAAA,UACL,EAAE,OAAO,QAAQ,OAAO,WAAW,OAAA;AAAA,UACnC,EAAE,OAAO,QAAQ,OAAO,WAAW,UAAA;AAAA,UACnC,EAAE,OAAO,OAAO,OAAO,WAAW,SAAA;AAAA,UAClC,EAAE,OAAO,OAAO,OAAO,WAAW,QAAA;AAAA,UAClC,EAAE,OAAO,QAAQ,OAAO,YAAA;AAAA,UACxB,EAAE,OAAO,QAAQ,OAAO,aAAA;AAAA,QAAa;AAAA,MACvC;AAAA,IAAA;AAAA,IAGF,qBAAC,eAAA,EAAc,OAAM,QAAO,aAAY,QACtC,UAAA;AAAA,MAAA,oBAAC,OAAE,UAAA,4CAAA,CAAyC;AAAA,MAC5C,oBAAC,OAAE,UAAA,uCAAA,CAAoC;AAAA,IAAA,GACzC;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,kCAAkC,OAAO,OAAA;AAAA,UAClD,EAAE,OAAO,eAAe,OAAO,OAAA;AAAA,UAC/B,EAAE,OAAO,kBAAkB,OAAO,OAAA;AAAA,UAClC,EAAE,OAAO,eAAe,OAAO,QAAA;AAAA,QAAQ;AAAA,MACzC;AAAA,IAAA;AAAA,IAGF,qBAAC,eAAA,EAAc,OAAM,QACnB,UAAA;AAAA,MAAA,oBAAC,OAAE,UAAA,4CAAA,CAAyC;AAAA,MAC5C,oBAAC,OAAE,UAAA,gDAAA,CAA6C;AAAA,IAAA,GAClD;AAAA,IAEA,qBAAC,eAAA,EAAc,OAAM,QACnB,UAAA;AAAA,MAAA,oBAAC,OAAE,UAAA,UAAA,CAAO;AAAA,MACV,oBAAC,OAAE,UAAA,aAAA,CAAU;AAAA,MACb,oBAAC,OAAE,UAAA,UAAA,CAAO;AAAA,MACV,oBAAC,OAAE,UAAA,eAAA,CAAY;AAAA,IAAA,GACjB;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,gCAAgC,OAAO,MAAA;AAAA,UAChD,EAAE,OAAO,mCAAmC,OAAO,MAAA;AAAA,UACnD,EAAE,OAAO,gCAAgC,OAAO,OAAA;AAAA,UAChD,EAAE,OAAO,aAAa,OAAO,MAAA;AAAA,QAAM;AAAA,MACrC;AAAA,IAAA;AAAA,IAGF,qBAAC,eAAA,EAAc,OAAM,QACnB,UAAA;AAAA,MAAA,oBAAC,OAAE,UAAA,iCAAA,CAA8B;AAAA,MACjC,oBAAC,OAAE,UAAA,mDAAA,CAAgD;AAAA,IAAA,GACrD;AAAA,IAEA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,eAAe,OAAO,MAAA;AAAA,UAC/B,EAAE,OAAO,gBAAgB,OAAO,MAAA;AAAA,UAChC,EAAE,OAAO,aAAa,OAAO,MAAA;AAAA,UAC7B,EAAE,OAAO,eAAe,OAAO,MAAA;AAAA,QAAM;AAAA,MACvC;AAAA,IAAA;AAAA,IAGF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,kCAAkC,OAAO,MAAA;AAAA,UAClD,EAAE,OAAO,iCAAiC,OAAO,OAAA;AAAA,QAAO;AAAA,MAC1D;AAAA,IAAA;AAAA,IAGF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO;AAAA,UACL,EAAE,OAAO,qBAAqB,OAAO,MAAA;AAAA,UACrC,EAAE,OAAO,qBAAqB,OAAO,MAAA;AAAA,UACrC,EAAE,OAAO,kBAAkB,OAAO,MAAA;AAAA,QAAM;AAAA,MAC1C;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;AAEO,SAAS,8BAA8B;AAC5C,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAsB,iBAAiB;AACrE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,MAAM,SAAS,MAAM,eAAe,IAAI,CAAC,SAAS,EAAE,GAAG,IAAA,EAAM,CAAC;AAC1G,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,MAAM,SAAS,KAAK;AAC1E,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,MAAM,SAAS,MAAM,kBAAkB,IAAI,CAAC,YAAY,EAAE,GAAG,OAAA,EAAS,CAAC;AAEvH,QAAM,YAAY,MAAM;AAAA,IACtB,MAAM,eAAe,IAAI,CAAC,QAAQ,SAAS,GAAG,CAAC;AAAA,IAC/C,CAAC,cAAc;AAAA,EAAA;AAEjB,QAAM,wBAAwB,MAAM;AAAA,IAClC,MAAM,eAAe,OAAO,CAAC,QAAQ,IAAI,aAAa,IAAI;AAAA,IAC1D,CAAC,cAAc;AAAA,EAAA;AAEjB,QAAM,kBAAkB,MAAM;AAAA,IAC5B,MAAM,eAAe,OAAO,CAAC,QAAQ,IAAI,WAAW,SAAS,IAAI,WAAW,KAAK;AAAA,IACjF,CAAC,cAAc;AAAA,EAAA;AAGjB,QAAM,kBAAkB,MAAM,QAAQ,MAAM;AAC1C,QAAI,SAAS,aAAa;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,UAAU;AACrB,aAAO;AAAA,QACL,aAAa;AAAA,QACb,cAAc;AAAA,QACd,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,aAAa,CAAC,cAAc,aAAa,UAAU,SAAS;AAAA,QAC5D,sBAAsB;AAAA,QACtB,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,sBAAsB;AAAA,QACtB,qBAAqB,CACnB,KACA,gCAEC,qBAAA,EAAoB,KAAU,SAAS,QAAQ,QAAA,CAAS;AAAA,MAAA;AAAA,IAG/D;AAEA,QAAI,SAAS,YAAY;AACvB,aAAO;AAAA,QACL,aAAa;AAAA,QACb,cAAc;AAAA,QACd,MAAM;AAAA,QACN,mBAAmB;AAAA,QACnB,aAAa;AAAA,QACb,aAAa,CAAC,eAAe,aAAa,UAAU,SAAS;AAAA,QAC7D,sBAAsB;AAAA,QACtB,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,sBAAsB;AAAA,QACtB,qBAAqB,CACnB,KACA,gCAEC,uBAAA,EAAsB,KAAU,SAAS,QAAQ,QAAA,CAAS;AAAA,MAAA;AAAA,IAGjE;AAEA,WAAO;AAAA,MACL,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,aAAa;AAAA,QACX;AAAA,QACA,UAAU,sBAAsB,MAAM;AAAA,QACtC,OAAO,gBAAgB,MAAM;AAAA,MAAA;AAAA,MAE/B,gBAAgB,MAAM,sBAAsB,MAAM,MAAM,UAAU,MAAM;AAAA,MACxE,cAAc;AAAA,MACd,aAAa;AAAA,MACb,YAAY,CAAA;AAAA,MACZ,sBAAsB;AAAA,MACtB,qBAAqB,CACnB,KACA,YAEA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,SAAS,QAAQ;AAAA,UACjB,WAAW,QAAQ;AAAA,UACnB,eAAe,CAAC,SAAS,UAAU;AACjC;AAAA,cAAkB,CAAC,YACjB,QAAQ;AAAA,gBAAI,CAAC,SACX,KAAK,OAAO,UACR;AAAA,kBACE,GAAG;AAAA,kBACH,GAAG;AAAA,kBACH,WAAW;AAAA,gBAAA,IAEb;AAAA,cAAA;AAAA,YACN;AAAA,UAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAGN,GAAG,CAAC,WAAW,gBAAgB,QAAQ,sBAAsB,QAAQ,IAAI,CAAC;AAE1E,SACE,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,IAAA,oBAAC,SAAI,WAAU,wFACb,UAAA,qBAAC,OAAA,EAAI,WAAU,qDACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EACC,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAU,2DAA0D,UAAA,uBAAmB;AAAA,QAC5F,oBAAC,OAAA,EAAI,WAAU,kDAAiD,UAAA,+BAAA,CAEhE;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,qCACf,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,iBAAiB;AAAA,YACxC,WAAW,+DACT,SAAS,oBACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,UAAA,EAAS,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,kBAAkB;AAAA,YACzC,WAAW,+DACT,SAAS,qBACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,cAAA,EAAa,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAG7C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,qBAAqB;AAAA,YAC5C,WAAW,+DACT,SAAS,wBACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,UAAA,EAAS,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,qBAAqB;AAAA,YAC5C,WAAW,+DACT,SAAS,wBACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,SAAA,EAAQ,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGxC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,iBAAiB;AAAA,YACxC,WAAW,+DACT,SAAS,oBACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,eAAA,EAAc,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAG9C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,YAAY;AAAA,YACnC,WAAW,+DACT,SAAS,eACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAACE,SAAA,EAAM,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGtC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,WAAW;AAAA,YAClC,WAAW,+DACT,SAAS,cACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,YAAA,EAAW,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAG3C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,OAAO;AAAA,YAC9B,WAAW,+DACT,SAAS,UACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,UAAA,EAAS,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,QAAQ;AAAA,YAC/B,WAAW,+DACT,SAAS,WACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,aAAA,EAAY,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAG5C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAS,MAAM,QAAQ,UAAU;AAAA,YACjC,WAAW,+DACT,SAAS,aACL,2DACA,0EACN;AAAA,YAEA,UAAA;AAAA,cAAA,oBAAC,YAAA,EAAW,WAAU,iBAAA,CAAiB;AAAA,cAAE;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAE3C,EAAA,CACF;AAAA,IAAA,EAAA,CACA,EAAA,CACF;AAAA,IAEC,SAAS,oBACR,oBAAC,2BAAA,CAAA,CAA0B,IACzB,SAAS,qBACX,oBAAC,4BAAA,CAAA,CAA2B,IAC1B,SAAS,4CACV,+BAAA,CAAA,CAA8B,IAC7B,SAAS,wBACX,oBAAC,+BAAA,EAA8B,IAC7B,SAAS,oBACX,oBAAC,0BAAA,CAAA,CAAyB,IACxB,SAAS,eACX,oBAAC,6BAAA,CAAA,CAA4B,IAC3B,SAAS,cACX;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAc;AAAA,QACd,aAAY;AAAA,QACZ,OAAM;AAAA,QACN,UAAS;AAAA,QACT,cAAa;AAAA,QACb,MAAM;AAAA,QACN,cAAa;AAAA,QACb,SAAS;AAAA,QACT,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,oBAAoB,MAAM,uBAAuB,CAAC,YAAY,CAAC,OAAO;AAAA,QACtE,aAAa,CAAC,aAAa;AACzB,8BAAoB,CAAC,YAAY;AAC/B,gBAAI,QAAQ,KAAK,CAACE,YAAWA,QAAO,OAAO,QAAQ,GAAG;AACpD,qBAAO;AAAA,YACT;AAEA,kBAAM,SAAS,yBAAyB,KAAK,CAAC,SAAS,KAAK,OAAO,QAAQ;AAC3E,mBAAO,SAAS,CAAC,GAAG,SAAS,EAAE,GAAG,OAAA,CAAQ,IAAI;AAAA,UAChD,CAAC;AAAA,QACH;AAAA,QACA,gBAAgB,CAAC,aAAa;AAC5B,8BAAoB,CAAC,YAAY,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,QAAQ,CAAC;AAAA,QACrF;AAAA,QACA,gBAAgB,MAAM;AACpB,8BAAoB,kBAAkB,IAAI,CAAC,YAAY,EAAE,GAAG,OAAA,EAAS,CAAC;AAAA,QACxE;AAAA,MAAA;AAAA,IAAA,IAEA,kBACF;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAc;AAAA,QACd,cAAc,gBAAgB;AAAA,QAC9B,iBAAiB,gBAAgB;AAAA,QACjC,cAAc;AAAA,QACd,MAAM,gBAAgB;AAAA,QACtB,aAAY;AAAA,QACZ,aAAa,gBAAgB;AAAA,QAC7B,UAAS;AAAA,QACT,mBAAmB,gBAAgB;AAAA,QACnC,aAAa,gBAAgB;AAAA,QAC7B,sBAAsB,gBAAgB;AAAA,QACtC,gBAAgB,gBAAgB;AAAA,QAChC,aAAa,gBAAgB;AAAA,QAC7B,gBAAgB,gBAAgB;AAAA,QAChC,cAAc,gBAAgB;AAAA,QAC9B,mBAAkB;AAAA,QAClB,WAAU;AAAA,QACV,aAAa,gBAAgB;AAAA,QAC7B,YAAY,gBAAgB;AAAA,QAC5B,mBAAkB;AAAA,QAClB,gBAAgB;AAAA,QAChB,sBAAsB,gBAAgB;AAAA,QACtC,qBAAqB,gBAAgB;AAAA,MAAA;AAAA,IAAA,IAErC;AAAA,IAEH,SAAS,cACR,oBAAC,OAAA,EAAI,WAAU,6HACb,UAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,MAAA,oBAAC,YAAA,EAAW,WAAU,sCAAA,CAAsC;AAAA,MAC5D,oBAAC,QAAA,EAAK,WAAU,6CAA4C,UAAA,YAAQ;AAAA,MACpE,oBAAC,UAAK,UAAA,mDAAA,CAAgD;AAAA,IAAA,EAAA,CACxD,EAAA,CACF,IAEA,qBAAC,OAAA,EAAI,WAAU,4GACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAACF,SAAA,EAAM,WAAU,yCAAA,CAAyC;AAAA,UAAE;AAAA,QAAA,GAE9D;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8DACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,2BAAA,CAAwB;AAAA,UAC5B,oBAAC,QAAG,UAAA,uBAAA,CAAoB;AAAA,UACxB,oBAAC,QAAG,UAAA,+DAAA,CAA4D;AAAA,QAAA,EAAA,CAClE;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAAC,YAAA,EAAW,WAAU,yCAAA,CAAyC;AAAA,UAAE;AAAA,QAAA,GAEnE;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8DACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,6BAAA,CAA0B;AAAA,UAC9B,oBAAC,QAAG,UAAA,gCAAA,CAA6B;AAAA,UACjC,oBAAC,QAAG,UAAA,oDAAA,CAAiD;AAAA,QAAA,EAAA,CACvD;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,WAAU,yCAAA,CAAyC;AAAA,UAAE;AAAA,QAAA,GAEjE;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8DACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,mBAAA,CAAgB;AAAA,UACpB,oBAAC,QAAG,UAAA,kBAAA,CAAe;AAAA,UACnB,oBAAC,QAAG,UAAA,mBAAA,CAAgB;AAAA,QAAA,EAAA,CACtB;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,WAAU,yCAAA,CAAyC;AAAA,UAAE;AAAA,QAAA,GAEjE;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8DACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,uBAAA,CAAoB;AAAA,UACxB,oBAAC,QAAG,UAAA,wBAAA,CAAqB;AAAA,UACzB,oBAAC,QAAG,UAAA,mDAAA,CAAgD;AAAA,QAAA,EAAA,CACtD;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,6GACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAACG,eAAA,EAAc,WAAU,wCAAA,CAAwC;AAAA,UAAE;AAAA,QAAA,GAErE;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8DACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,qBAAA,CAAkB;AAAA,UACtB,oBAAC,QAAG,UAAA,qBAAA,CAAkB;AAAA,UACtB,oBAAC,QAAG,UAAA,oBAAA,CAAiB;AAAA,QAAA,EAAA,CACvB;AAAA,MAAA,GACF;AAAA,MACA,qBAAC,OAAA,EAAI,WAAU,2HACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,iFACb,UAAA;AAAA,UAAA,oBAAC,UAAA,EAAS,WAAU,yCAAA,CAAyC;AAAA,UAAE;AAAA,QAAA,GAEjE;AAAA,QACA,qBAAC,MAAA,EAAG,WAAU,8EACZ,UAAA;AAAA,UAAA,oBAAC,QAAG,UAAA,yBAAA,CAAsB;AAAA,UAC1B,oBAAC,QAAG,UAAA,wBAAA,CAAqB;AAAA,UACzB,oBAAC,QAAG,UAAA,wBAAA,CAAqB;AAAA,QAAA,EAAA,CAC3B;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;AAEO,SAAS,8BAA8B;AAAA,EAC5C;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,MAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAS;AAAA,MACT,mBAAkB;AAAA,MAClB,aAAY;AAAA,MACZ,aAAa,CAAC,gBAAgB,UAAU,SAAS;AAAA,MACjD,gBAAe;AAAA,MACf,mBAAkB;AAAA,MAClB,WAAU;AAAA,MACV,aAAY;AAAA,MACZ,YAAY,CAAA;AAAA,MACZ,mBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,sBAAqB;AAAA,MACrB,qBAAqB,CAAC,KAAK,YACzB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,SAAS,QAAQ;AAAA,UACjB,WAAW,QAAQ;AAAA,UACnB,eAAe,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IACvB;AAAA,EAAA;AAIR;AAEO,SAAS,+BAA+B;AAAA,EAC7C;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,MAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAS;AAAA,MACT,mBAAkB;AAAA,MAClB,aAAY;AAAA,MACZ,sBAAqB;AAAA,MACrB,aAAa,CAAC,cAAc,aAAa,UAAU,SAAS;AAAA,MAC5D,gBAAe;AAAA,MACf,mBAAkB;AAAA,MAClB,WAAU;AAAA,MACV,aAAY;AAAA,MACZ,mBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,sBAAqB;AAAA,MACrB,qBAAqB,CAAC,KAAK,gCACxB,qBAAA,EAAoB,KAAU,SAAS,QAAQ,QAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAIjE;AAEO,SAAS,iCAAiC;AAAA,EAC/C;AACF,GAEG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,cAAc;AAAA,MACd,cAAc;AAAA,MACd,cAAc;AAAA,MACd,MAAM;AAAA,MACN,aAAY;AAAA,MACZ,aAAY;AAAA,MACZ,UAAS;AAAA,MACT,mBAAkB;AAAA,MAClB,aAAY;AAAA,MACZ,sBAAqB;AAAA,MACrB,aAAa,CAAC,eAAe,aAAa,UAAU,SAAS;AAAA,MAC7D,gBAAe;AAAA,MACf,mBAAkB;AAAA,MAClB,WAAU;AAAA,MACV,aAAY;AAAA,MACZ,mBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,sBAAqB;AAAA,MACrB,qBAAqB,CAAC,KAAK,gCACxB,uBAAA,EAAsB,KAAU,SAAS,QAAQ,QAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAInE;AC75EA,MAAM,gBAA+B;AAAA,EACnC;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,EAAA;AAEf;AAEA,MAAM,eAAsD;AAAA,EAC1D,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAEA,SAAS,UAAU,EAAE,UAA6C;AAChE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,+GAA+G,aAAa,MAAM,CAAC;AAAA,MAE7I,UAAA;AAAA,QAAA,WAAW,4BACTC,aAAA,EAAa,WAAU,WAAU,IAElC,oBAAC,QAAA,EAAO,WAAU,UAAA,CAAU;AAAA,QAE7B;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEO,SAAS,0BAA0B,EAAE,aAAqC;AAC/E,QAAM,QAAQ;AACd,QAAM,CAAC,YAAY,aAAa,IAAI,MAAM,SAAS,KAAK;AACxD,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAAS,cAAc,CAAC,EAAE,EAAE;AACxE,QAAM,WAAW,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,WAAW,KAAK,MAAM,CAAC;AAEzE,SACE,oBAAC,SAAI,WACH,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,UAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA,qBAAqB;AAAA,MACrB,YAAY,CAAC,SAAS;AAAA,QACpB,KAAK,IAAI;AAAA,QACT,OAAO,IAAI;AAAA,QACX,aAAa,IAAI;AAAA,QACjB,MAAM,GAAG,IAAI,KAAK,MAAM,IAAI,SAAS;AAAA,QACrC,QAAQ,oBAAC,WAAA,EAAU,QAAQ,IAAI,OAAA,CAAQ;AAAA,MAAA;AAAA,MAEzC,oCACGC,eAAA,EAAa,MAAK,MAAK,SAAS,MAAM,cAAc,IAAI,GACvD,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,WAAU,cAAA,CAAc;AAAA,QAAE;AAAA,MAAA,GAElC;AAAA,MAEF,SACE,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EAAI,WAAU,kDACb,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAO,WAAU,yGAAA,CAAyG;AAAA,UAC3H,oBAACC,cAAA,EAAY,WAAU,QAAO,aAAY,SAAA,CAAS;AAAA,QAAA,GACrD;AAAA,4BACCD,eAAA,EAAa,SAAQ,aAAY,MAAK,MAAK,UAAA,SAE5C;AAAA,4BACCA,eAAA,EAAa,SAAQ,aAAY,MAAK,MAAK,UAAA,SAAA,CAE5C;AAAA,MAAA,GACF;AAAA,MAEF,eACE,oBAACA,eAAA,EAAa,MAAK,MAAK,SAAQ,aAAY,SAAS,MAAM,cAAc,IAAI,GAAG,UAAA,KAAA,CAEhF;AAAA,MAEF,cAAc,CAAC,EAAE,UACf,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,qBAAC,OAAA,EACC,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAG,WAAU,mEACX,UAAA,IAAI,OACP;AAAA,YACA,oBAAC,WAAA,EAAU,QAAQ,IAAI,OAAA,CAAQ;AAAA,UAAA,GACjC;AAAA,UACA,oBAAC,KAAA,EAAE,WAAU,8DACV,cAAI,YAAA,CACP;AAAA,QAAA,GACF;AAAA,QACA,qBAACE,cAAA,EAAY,WAAU,iCACrB,UAAA;AAAA,UAAA,qBAAC,OAAA,EACC,UAAA;AAAA,YAAA,oBAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,OAAG;AAAA,YAC5D,oBAAC,OAAA,EAAI,WAAU,gCAAgC,cAAI,MAAA,CAAM;AAAA,UAAA,GAC3D;AAAA,+BACC,OAAA,EACC,UAAA;AAAA,YAAA,oBAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,QAAI;AAAA,YAC7D,oBAAC,OAAA,EAAI,WAAU,gCAAgC,cAAI,UAAA,CAAU;AAAA,UAAA,EAAA,CAC/D;AAAA,QAAA,GACF;AAAA,6BACC,OAAA,EACC,UAAA;AAAA,UAAA,oBAAC,OAAA,EAAI,WAAU,8DAA6D,UAAA,QAE5E;AAAA,UACA,oBAAC,OAAA,EAAI,WAAU,8GAA6G,UAAA,0CAAA,CAE5H;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,QACE,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,qBAAC,SAAA,EAAM,WAAU,SACf,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,wEAAuE,UAAA,QAEvF;AAAA,UACA,oBAACD,cAAA,EAAY,cAAc,qCAAU,MAAA,CAAO;AAAA,QAAA,GAC9C;AAAA,QACA,qBAAC,SAAA,EAAM,WAAU,SACf,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,wEAAuE,UAAA,OAEvF;AAAA,UACA,oBAACA,cAAA,EAAY,cAAc,qCAAU,MAAA,CAAO;AAAA,QAAA,GAC9C;AAAA,QACA,qBAAC,SAAA,EAAM,WAAU,SACf,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,wEAAuE,UAAA,MAEvF;AAAA,UACA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,cAAc,qCAAU;AAAA,cACxB,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEF,aAAY;AAAA,MACZ,mBAAkB;AAAA,MAClB;AAAA,MACA,oBAAoB;AAAA,MACpB,cACE,qBAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,QAAA,oBAACD,eAAA,EAAa,SAAQ,aAAY,SAAS,MAAM,cAAc,KAAK,GAAG,UAAA,KAAA,CAEvE;AAAA,QACA;AAAA,UAACA;AAAAA,UAAA;AAAA,YACC,SAAS,MAAM;AACb,4BAAc,KAAK;AAAA,YACrB;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;AC7HO,SAAS,gCACd,SACiC;AACjC,QAAM,UAAU,IAAI,gCAAgC;AAAA,IAClD,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ;AAAA,IACf,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ;AAAA,IACrB,UAAU,QAAQ,YAAY;AAAA,EAAA,GAC7B;AAAA,IACD,YAAY,QAAQ;AAAA,IACpB,cAAc,QAAQ;AAAA,IACtB,oBAAoB,QAAQ;AAAA,EAAA,CAC7B;AACD,UAAQ,QAAA;AACR,SAAO;AACT;AAEA,eAAsB,uBAAuB,OAAqE;AAChH,QAAM,cAAc,CAAC,MAAM;AAC3B,QAAM,UAAU,MAAM,WAAW,gCAAgC,sBAAsB,KAAK,CAAC;AAC7F,QAAM,SAAS,IAAI,4BAA4B,OAAO;AACtD,MAAI;AACF,UAAM,SAAS,MAAM,OAAO,IAAI;AAAA,MAC9B,QAAQ,mBAAmB,KAAK;AAAA,MAChC,SAAS,MAAM;AAAA,MACf,oBAAoB,MAAM;AAAA,MAC1B,WAAW,MAAM;AAAA,MACjB,iBAAiB,MAAM;AAAA,MACvB,SAAS,MAAM,UACX,CAAC,OAAO,UAAA;;AAAU,2BAAM,YAAN,+BAAgB,OAAO,MAAM;AAAA,UAC/C;AAAA,IAAA,CACL;AAED,WAAO;AAAA,MACL,gBAAgB,OAAO;AAAA,MACvB,SAAS,OAAO;AAAA,MAChB,aAAa,OAAO;AAAA,MACpB,QAAQ,OAAO;AAAA,MACf,UAAU,OAAO;AAAA,MACjB,kBAAkB,OAAO;AAAA,MACzB,oBAAoB,OAAO;AAAA,MAC3B,OAAO,OAAO;AAAA,MACd,UAAU,OAAO;AAAA,MACjB,QAAQ,OAAO;AAAA,IAAA;AAAA,EAEnB,UAAA;AACE,QAAI,eAAe,gBAAgB,WAAW,OAAO,QAAQ,eAAe,YAAY;AACtF,cAAQ,WAAA;AAAA,IACV;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,OAAmE;AAChG,MAAI,CAAC,MAAM,QAAQ;AACjB,UAAM,IAAI,MAAM,sEAAsE;AAAA,EACxF;AACA,SAAO,MAAM;AACf;AAEA,SAAS,mBAAmB,OAA0D;AACpF,SAAO;AAAA,IACL,cAAc,WAAW,MAAM,QAAQ;AAAA,IACvC,KAAK,MAAM;AAAA,IACX,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb,kBAAkB,MAAM;AAAA,IACxB,eAAe,MAAM;AAAA,IACrB,cAAc,MAAM;AAAA,IACpB,yBAAyB,MAAM;AAAA,IAC/B,UAAU,MAAM;AAAA,IAChB,SAAS,MAAM;AAAA,IACf,GAAI,MAAM,qBACN,EAAE,SAAS,EAAE,oBAAoB,MAAM,mBAAA,MACvC,CAAA;AAAA,EAAC;AAET;AClGO,MAAM,mBAAmB;AAAA,EAI9B,YAAY,SAA8B,WAAkC,IAAI;AAFhF,SAAiB,+BAAe,IAAA;AAG9B,SAAK,SAAS,IAAI,4BAA4B,OAAO;AACrD,aAAS,QAAQ,CAAC,YAAY,KAAK,gBAAgB,OAAO,CAAC;AAAA,EAC7D;AAAA,EAEA,gBAAgB,SAAoC;AAClD,SAAK,SAAS,IAAI,QAAQ,iBAAiB,OAAO;AAAA,EACpD;AAAA,EAEA,MAAM,YAAY,OAA2E;AAC3F,UAAM,UAAU,KAAK,SAAS,IAAI,MAAM,eAAe;AACvD,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,oDAAoD,MAAM,eAAe,EAAE;AAAA,IAC7F;AACA,UAAM,eAAe,kBAAkB,OAAO,OAAO;AACrD,UAAM,sBAAsB,IAAI,2BAAA;AAEhC,UAAM,MAAM,MAAM,KAAK,OAAO,IAAI;AAAA,MAChC,QAAQ;AAAA,QACN,cAAc,QAAQ;AAAA,QACtB,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,QAAQ,QAAQ;AAAA,QAChB,kBAAkB,QAAQ;AAAA,QAC1B;AAAA,QACA,yBAAyB,MAAM;AAAA,QAC/B,SAAS;AAAA,UACP,SAAS;AAAA,YACP,gBAAgB,MAAM;AAAA,YACtB,iBAAiB,MAAM;AAAA,UAAA;AAAA,QACzB;AAAA,QAEF,GAAI,MAAM,qBACN,EAAE,SAAS,EAAE,oBAAoB,MAAM,mBAAA,MACvC,CAAA;AAAA,MAAC;AAAA,MAEP,SAAS,sBAAsB,KAAK;AAAA,MACpC,WAAW,MAAM;AAAA,MACjB,oBAAoB,MAAM;AAAA,MAC1B,iBAAiB,MAAM;AAAA,MACvB,SAAS,CAAC,UAAU;AAClB,4BAAoB,OAAO,OAAO,YAAY;AAAA,MAChD;AAAA,IAAA,CACD;AAED,WAAO;AAAA,MACL;AAAA,MACA,gBAAgB,IAAI;AAAA,MACpB,aAAa,IAAI;AAAA,MACjB;AAAA,MACA,aAAa,oBAAoB,eAAA;AAAA,IAAe;AAAA,EAEpD;AACF;AAEO,MAAM,2BAA2B;AAAA,EAAjC,cAAA;AACL,SAAiB,mCAAmB,IAAA;AACpC,SAAiB,cAAoD,CAAA;AAAA,EAAC;AAAA,EAEtE,OACE,OACA,cAC2C;AAC3C,UAAM,aAAa,kCAAkC,OAAO,YAAY;AACxE,QAAI,WAAW,eAAe;AAC5B,UAAI,KAAK,aAAa,IAAI,WAAW,aAAa,GAAG;AACnD,eAAO;AAAA,MACT;AACA,WAAK,aAAa,IAAI,WAAW,aAAa;AAAA,IAChD;AACA,SAAK,YAAY,KAAK,UAAU;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,iBAAuD;AACrD,WAAO,CAAC,GAAG,KAAK,WAAW;AAAA,EAC7B;AACF;AAEO,SAAS,kBACd,OACA,SAC0B;AAC1B,SAAO;AAAA,IACL,gBAAgB,MAAM;AAAA,IACtB,iBAAiB,MAAM;AAAA,IACvB,sBAAsB,MAAM;AAAA,IAC5B,sBAAsB,MAAM;AAAA,IAC5B,WAAW,mCAAS;AAAA,EAAA;AAExB;AAEO,SAAS,sBAAsB,OAAyD;;AAC7F,SAAO;AAAA,IACL,QAAQ,CAAC,EAAE,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,IAC3C,yBAAyB,MAAM;AAAA,IAC/B,WAAW;AAAA,MACT,WAAW,MAAM;AAAA,MACjB,eAAc,WAAM,4BAAN,mBAA+B;AAAA,IAAA;AAAA,IAE/C,oBAAmB,WAAM,4BAAN,mBAA+B;AAAA,IAClD,UAAU;AAAA,MACR,gBAAgB,MAAM;AAAA,MACtB,iBAAiB,MAAM;AAAA,MACvB,sBAAsB,MAAM;AAAA,IAAA;AAAA,EAC9B;AAEJ;AAEO,SAAS,kCACd,OACA,cACoC;;AACpC,MAAI,MAAM,SAAS,iBAAiB;AAClC,QAAI,MAAM,KAAK,SAAS,qBAAqB;AAC3C,aAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB,aAAa;AAAA,QAC7B,WAAW,aAAa;AAAA,QACxB,eAAe,MAAM;AAAA,QACrB,MAAM,MAAM,KAAK;AAAA,QACjB,UAAU,EAAE,UAAU,MAAM,KAAK,KAAA;AAAA,MAAK;AAAA,IAE1C;AACA,QAAI,MAAM,KAAK,SAAS,aAAa;AACnC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB,aAAa;AAAA,QAC7B,WAAW,aAAa;AAAA,QACxB,eAAe,MAAM;AAAA,QACrB,MAAM,kBAAkB,MAAM,KAAK,UAAU,MAAM,KAAK,SAAQ,WAAM,KAAK,YAAX,mBAAoB,UAAU;AAAA,QAC9F,UAAU,EAAE,UAAU,MAAM,KAAK,MAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS,MAAM,KAAK,QAAA;AAAA,MAAQ;AAAA,IAElG;AACA,QAAI,MAAM,KAAK,SAAS,kBAAkB,MAAM,KAAK,SAAS,aAAa;AACzE,aAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB,aAAa;AAAA,QAC7B,WAAW,aAAa;AAAA,QACxB,eAAe,MAAM;AAAA,QACrB,UAAU,EAAE,UAAU,MAAM,KAAK,KAAA;AAAA,MAAK;AAAA,IAE1C;AAAA,EACF;AACA,MAAI,MAAM,SAAS,wBAAwB;AACzC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB,aAAa;AAAA,MAC7B,WAAW,aAAa;AAAA,MACxB,eAAe,MAAM;AAAA,MACrB,MAAM,MAAM,QAAQ,SAAS,MAAM,QAAQ,WAAW;AAAA,MACtD,UAAU,EAAE,SAAS,MAAM,SAAS,OAAO,YAAA;AAAA,IAAY;AAAA,EAE3D;AACA,MAAI,MAAM,SAAS,uBAAuB;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB,aAAa;AAAA,MAC7B,WAAW,aAAa;AAAA,MACxB,eAAe,MAAM;AAAA,MACrB,MAAM,cAAc,MAAM,MAAM;AAAA,MAChC,UAAU,EAAE,WAAW,MAAM,WAAW,QAAQ,MAAM,QAAQ,OAAO,WAAA;AAAA,IAAW;AAAA,EAEpF;AACA,MAAI,MAAM,SAAS,kBAAkB;AACnC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB,aAAa;AAAA,MAC7B,WAAW,aAAa;AAAA,MACxB,eAAe,MAAM;AAAA,MACrB,MAAM,iBAAiB,MAAM,MAAM;AAAA,MACnC,UAAU,EAAE,QAAQ,MAAM,OAAA;AAAA,IAAO;AAAA,EAErC;AACA,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB,aAAa;AAAA,MAC7B,WAAW,aAAa;AAAA,MACxB,eAAe,MAAM;AAAA,MACrB,MAAM,MAAM;AAAA,MACZ,UAAU,EAAE,OAAO,MAAM,MAAA;AAAA,IAAM;AAAA,EAEnC;AACA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,gBAAgB,aAAa;AAAA,IAC7B,WAAW,aAAa;AAAA,IACxB,UAAU,EAAE,WAAW,MAAM,KAAA;AAAA,EAAK;AAEtC;AAEA,SAAS,kBAAkB,UAAkB,QAAgB,YAA6B;AACxF,SAAO,CAAC,UAAU,QAAQ,UAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAChE;"}