/** * dialogs.tsx — 页签的重命名 / 管理工作区 / 删除对话框,以及工作区行菜单的 * 「分配标签」选择器(批次⑥ 自 workspaceTabs.tsx 原样搬出)。 * * `AssignTabPicker` 在规格的行号表里归 R5,但它与三个对话框共用 `btnStyle` 与弹窗 * 外壳、并被对话框状态机调用,故按 Q9 落本文件。它调用的 `assignWsToTab` 来自 * assignMenuItem.ts(规格依赖图漏列的 dialogs → assignMenuItem 边,实测无环)。 */ import { type ReactNode } from 'react'; import { type WorkspaceLike } from './scope.js'; /** 分配目标选择(官方 Modal;由侧栏壳组件状态驱动,事件经窗口事件桥送达)。 */ export declare function AssignTabPicker(props: { workspaceId: string; title: string; currentOwner: string | undefined; groupNames: { id: string; name: string; }[]; onDone: () => void; }): ReactNode; /** * 重命名 / 新建页签对话框的 props。草稿分支必带 `onCreate`,所以「开着草稿却没人 * 负责创建」这种静默 no-op 组合在类型上无法表达。 */ type RenameDialogProps = { groupId: string; onDone: () => void; } & ({ draft: true; onCreate: (name: string) => void; } | { draft?: false; onCreate?: never; }); export declare function RenameDialog(props: RenameDialogProps): ReactNode; export declare function MembersDialog(props: { groupId: string; items: WorkspaceLike[]; membership: ReadonlyMap; onDone: () => void; }): ReactNode; export declare function DeleteDialog(props: { groupId: string; onDone: () => void; }): ReactNode; export {};