@activecollab/components
Version:
ActiveCollab Components
109 lines • 5.81 kB
TypeScript
import React, { ReactElement } from "react";
import { ProjectElementDef } from "./projectElements";
export type OutlineElementType = "circle" | "roundedRectangle" | "triangle" | "postit" | "text" | "freehand" | "link" | "file" | "task" | "project";
export type OutlineIcon = React.ComponentType<React.SVGProps<SVGSVGElement>>;
export declare const OUTLINE_TYPE_ICONS: Record<OutlineElementType, OutlineIcon>;
export declare const OUTLINE_TYPE_LABELS: Record<OutlineElementType, string>;
export interface OutlineElement {
id: string;
name: string | null;
type: OutlineElementType;
locked?: boolean;
connections?: number;
renamable?: boolean;
limited?: boolean;
groupId: string | null;
}
export interface OutlineGroup {
id: string;
name: string;
}
export declare const OUTLINE_GROUPS: OutlineGroup[];
export declare const OUTLINE_ELEMENTS: OutlineElement[];
export declare const OUTLINE_MIN_WIDTH = 260;
export declare const OUTLINE_MAX_WIDTH: number;
export declare const OUTLINE_WIDTH = 320;
export declare const UNGROUPED = "__ungrouped__";
export declare const StyledOutlineSidebar: import("styled-components").StyledComponent<"aside", any, {}, never>;
export declare const StyledOutlineResizer: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledOutlineBody: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledOutlineRow: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledOutlineGroupRow: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledOutlineChildRow: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledOutlineToggle: import("styled-components").StyledComponent<"button", any, {}, never>;
export declare const StyledOutlineCounter: import("styled-components").StyledComponent<"span", any, {}, never>;
export declare const OutlineCounter: ({ count }: {
count: number;
}) => ReactElement;
export declare const StyledOutlineSignifiers: import("styled-components").StyledComponent<"span", any, {}, never>;
export declare const StyledOutlineTypeIcon: import("styled-components").StyledComponent<"span", any, {}, never>;
export declare const StyledOutlineName: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const outlineLabel: (element: OutlineElement) => string;
/**
* Outline rows for the entity cards on the canvas.
*
* They are DERIVED on every render rather than seeded into the outline's own
* state the way the mock elements are. That is the whole trick that keeps this
* cheap: the canvas already owns these elements, so there is no second copy to
* reconcile when one is added, resolved or cancelled, and the drag-reorder and
* grouping state the outline holds for its mock rows is left completely alone.
*
* The row id IS the canvas element id, which is what makes selection sync free
* in both directions — the sidebar and the canvas already share `selectedId`.
*/
export declare const entityOutlineRows: (elements: ProjectElementDef[], locks: Record<string, boolean>) => OutlineElement[];
export declare const OUTLINE_MENU_LIST_STYLE: {
padding: string;
};
export declare const OUTLINE_MENU_WIDTH = 264;
export declare const OutlineMenuSliderStyle: import("styled-components").GlobalStyleComponent<{}, import("styled-components").DefaultTheme>;
export declare const StyledOutlineElementMenu: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const ARRANGE_ITEMS: {
label: string;
Icon: OutlineIcon;
}[];
export interface OutlineElementOptionsMenuProps {
locked: boolean;
onToggleLock: () => void;
renamable?: boolean;
}
export declare const OutlineElementOptionsMenu: ({ locked, onToggleLock, renamable, }: OutlineElementOptionsMenuProps) => ReactElement;
export declare const OutlineGroupOptionsMenu: () => ReactElement;
export type DropSpot = {
kind: "before" | "after";
id: string;
} | {
kind: "into";
id: string;
};
export type LeftPanel = "info" | "outline";
export declare const INFO_ROWS: [string, string][];
export declare const LeftMenuContents: ({ sidebarOpen, onToggleSidebar, boardName, onRenameBoard, }: {
sidebarOpen: boolean;
onToggleSidebar: () => void;
boardName: string;
onRenameBoard: (name: string) => void;
}) => ReactElement;
export declare const StyledSidebarHeader: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledChooseRow: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledPanelChooseSlot: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const StyledInfoPanel: import("styled-components").StyledComponent<"div", any, {}, never>;
export declare const InfoPanelContent: ({ boardName, }: {
boardName: string;
}) => ReactElement;
export declare const StyledNewGroupRow: import("styled-components").StyledComponent<"div", any, {}, never>;
export interface LeftSidebarProps {
selectedId: string | null;
onSelect: (id: string | null) => void;
activePanel: LeftPanel;
onPanelChange: (panel: LeftPanel) => void;
sidebarOpen: boolean;
onToggleSidebar: () => void;
boardName: string;
onRenameBoard: (name: string) => void;
projectElements: ProjectElementDef[];
locks: Record<string, boolean>;
onToggleElementLock: (id: string) => void;
}
export declare const LeftSidebar: ({ selectedId, onSelect, activePanel, onPanelChange, sidebarOpen, onToggleSidebar, boardName, onRenameBoard, projectElements, locks, onToggleElementLock, }: LeftSidebarProps) => ReactElement;
//# sourceMappingURL=outline.d.ts.map