- apps/desktop: electron-vite + React + Tailwind mapped onto design tokens (preflight off; tokens/base.css owns the reset); boots to a Reginald placeholder proving fonts/tokens/core wiring - packages/core: pure TS; gitea label schema (est/*, p/*, deadline/hard) with pessimistic conflict resolution + 15 unit tests - docs/design: full design handoff (tokens, 16 component contracts, interactive 14-screen prototype, Reginald voice rules) - docs/PLAN.md: product plan (purity rule, pm-state repo, deterministic scheduler + Monte Carlo, directive log) - Deliberate deviation from novelpad stack: no ElectricSQL/PGlite — local store is a rebuildable cache over gitea REST/webhooks (better-sqlite3 in main process, arriving in P1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
20 lines
469 B
Plaintext
20 lines
469 B
Plaintext
/**
|
|
* Underline tabs for view switching (Board / Gantt / Dependencies).
|
|
*/
|
|
export interface TabItem {
|
|
id: string;
|
|
label: string;
|
|
/** Lucide icon name */
|
|
icon?: string;
|
|
/** Mono count rendered after the label */
|
|
count?: number;
|
|
}
|
|
export interface TabsProps {
|
|
items: TabItem[];
|
|
/** id of the active tab */
|
|
active: string;
|
|
onChange?: (id: string) => void;
|
|
style?: React.CSSProperties;
|
|
}
|
|
export declare function Tabs(props: TabsProps): JSX.Element;
|