goobs-frontend
Version:
A comprehensive React-based libary for building modern web applications
70 lines • 3.21 kB
TypeScript
import { default as React, ReactNode } from 'react';
export type ListItemCardTheme = 'sacred' | 'light' | 'dark';
export interface ListItemCardProps extends Omit<React.LiHTMLAttributes<HTMLLIElement>, 'onSelect'> {
/** Selection state — emits `data-selected` + accent ring. */
selected?: boolean;
/**
* Selection handler. When set the whole row becomes a click/Enter/Space
* target (`role="button"`). Omit for non-selectable rows.
*/
onSelect?: () => void;
/**
* Remove handler. When set, a trailing error-colored `<IconButton>` remove
* control is rendered. Omit for non-removable rows.
*/
onRemove?: () => void;
/**
* Move-up handler — wired into the composed `<Card.DragHandle>`. When both
* move handlers are omitted, no drag handle renders.
*/
onMoveUp?: () => void;
/** Move-down handler — wired into the composed `<Card.DragHandle>`. */
onMoveDown?: () => void;
/**
* Optional accent color (left border + selected ring). The common
* "status-bar on left edge" / "this step is green" pattern.
*/
accentColor?: string;
/** Accessible label for the row's reorder handle (e.g. "Reorder step 3"). */
reorderLabel?: string;
/** Accessible label for the remove button. Default `'Remove'`. */
removeLabel?: string;
/** Theming. Default `'sacred'`. */
styles?: {
theme?: ListItemCardTheme;
};
/** Slot children — `ListItemCard.Order` / `.Icon` / `.Content` / `.Actions`. */
children: ReactNode;
}
interface ListItemCardComponent {
(props: ListItemCardProps & React.RefAttributes<HTMLLIElement>): React.ReactElement | null;
displayName?: string;
Order: typeof ListItemCardOrder;
Icon: typeof ListItemCardIcon;
Content: typeof ListItemCardContent;
Actions: typeof ListItemCardActions;
}
export interface ListItemCardOrderProps extends React.HTMLAttributes<HTMLSpanElement> {
/** The order number / position label rendered inside the circle. */
children: ReactNode;
}
declare const ListItemCardOrder: React.ForwardRefExoticComponent<ListItemCardOrderProps & React.RefAttributes<HTMLSpanElement>>;
export interface ListItemCardIconProps extends React.HTMLAttributes<HTMLSpanElement> {
children: ReactNode;
}
declare const ListItemCardIcon: React.ForwardRefExoticComponent<ListItemCardIconProps & React.RefAttributes<HTMLSpanElement>>;
export interface ListItemCardContentProps {
title: ReactNode;
subtitle?: ReactNode;
/** Optional extra body rendered under the subtitle (chips, meta, etc.). */
children?: ReactNode;
}
declare const ListItemCardContent: React.ForwardRefExoticComponent<ListItemCardContentProps & React.RefAttributes<HTMLDivElement>>;
export interface ListItemCardActionsProps extends React.HTMLAttributes<HTMLDivElement> {
children: ReactNode;
}
declare const ListItemCardActions: React.ForwardRefExoticComponent<ListItemCardActionsProps & React.RefAttributes<HTMLDivElement>>;
declare const ListItemCard: ListItemCardComponent;
export { ListItemCardOrder, ListItemCardIcon, ListItemCardContent, ListItemCardActions, };
export default ListItemCard;
//# sourceMappingURL=index.d.ts.map