@activecollab/components
Version:
ActiveCollab Components
91 lines • 5.16 kB
TypeScript
import React, { ReactElement, ReactNode } from "react";
/**
* Content-level chrome shared by the typed StackedCard components.
*
* These live OUTSIDE the shell on purpose. The shell is hollow; the "…" entity
* menu, the cover-management controls, the clamp, the favicon, the chips and
* the placeholder frame are content concerns, so they belong here where the
* typed cards (TaskCard, LinkCard, …) compose them.
*
* The card itself — the shell, the Stack/StackRow/Cover primitives and the
* cover chrome — is the shipped design-system component,
* `components/StackedCard`. These stories import it under the concept
* vocabulary (Cover, StackRow, …) so the spec prose and the code keep using
* the same words.
*/
/**
* There is no global CSS reset in this Storybook, so a raw element (a `<span>`
* holding a date, a `<button>` holding a word) falls back to the browser default
* — a SERIF face at the UA's own size. Anything that is not a DS `Typography`
* has to name the font itself. Use a DS Typography where one fits; use this
* where the app itself sets the size in CSS (the column card's date row is a
* plain `div` in `view.project_tasks_column_mode.less`, not a Typography).
*/
export declare const CARD_FONT = "-apple-system, BlinkMacSystemFont, \"Roboto\",\n \"Helvetica Neue\", Arial, sans-serif";
/**
* The design system ships one default cover ratio
* (`STACKED_CARD_COVER_RATIO`). How tall a cover reads is a decision of the
* content type, so the variants live here with the content: a link hero, a
* full-bleed image, a colour swatch band.
*/
export declare const COVER_RATIO_HERO = "320 / 190";
export declare const COVER_RATIO_IMAGE = "260 / 168";
export declare const COVER_RATIO_SWATCH = "260 / 104";
/** Centered media control (play), for a cover that wraps audio/video. */
export declare const playControl: React.JSX.Element;
/**
* Top-right cover management. Acts on the COVER (collapse it, remove it) — not
* on the entity. Callers wire the click handlers; the default is inert chrome
* for the static demos.
*/
export declare const coverManagement: ({ removeLabel, onCollapse, onRemove, }?: {
removeLabel?: string;
onCollapse?: () => void;
onRemove?: () => void;
}) => ReactElement;
export declare const EntityDots: (props: React.ButtonHTMLAttributes<HTMLButtonElement>) => ReactElement;
/** Two-line title clamp — the card's name row content. */
export declare const StyledClamp: import("styled-components").StyledComponent<React.ForwardRefExoticComponent<import("../../..").IBodyProps & Omit<import("../../../components/Typography/Typography").ITypographyProps, "variant" | "weight"> & React.RefAttributes<HTMLDivElement>>, any, {}, never>;
/**
* The title block — everything the title row stacks to the LEFT of the "…"
* menu. A card that only has a title puts the clamp straight in the row; a card
* that puts a line above or below it (the project a task belongs to, the client
* a project is for) stacks them here so the row keeps its two-child shape:
* text block, then the fixed-width menu.
*/
export declare const StyledTitleBlock: import("styled-components").StyledComponent<"div", any, {}, never>;
/**
* The project a card's entity lives in, above the title.
*
* On a canvas a task card has lost the column that used to say which project it
* came from, so the card says it itself. One line, one treatment, shared by
* every content type that can carry it (the whiteboard's own task face already
* wrote it this way: `Caption 2` tertiary, tight above the title, ellipsis on
* overflow — a project name is a reference, never a second title).
*/
export declare const StyledProjectLine: import("styled-components").StyledComponent<React.ForwardRefExoticComponent<import("../../..").ICaptionProps & Omit<import("../../../components/Typography/Typography").ITypographyProps, "variant" | "weight"> & React.RefAttributes<HTMLDivElement>>, any, {}, never>;
export declare const CardProjectLine: ({ children, }: {
children: ReactNode;
}) => ReactElement;
/** A favicon square — a solid data colour stands in for the real favicon. */
export declare const StyledFavicon: import("styled-components").StyledComponent<"span", any, {
$bg: string;
}, never>;
/** A small pill for link metadata (media kind, duration, …). */
export declare const StyledChip: import("styled-components").StyledComponent<"span", any, {}, never>;
/** A solid-colour cover fill (swatch value, generic link cover, image stand-in). */
export declare const StyledColorCover: import("styled-components").StyledComponent<"div", any, {
$color: string;
}, never>;
/**
* The shared placeholder frame. Each type supplies its own icon and verb-first,
* sentence-case invitation (ActiveCollab voice). Interactive by design — the
* whole frame is a button — and distinct from the loading skeleton.
*/
export declare const Placeholder: ({ icon, label, height, dashed, ...rest }: {
icon: ReactNode;
label: ReactNode;
height?: number;
dashed?: boolean;
} & React.ButtonHTMLAttributes<HTMLButtonElement>) => ReactElement;
//# sourceMappingURL=shared.d.ts.map