/** * RoadmapCard (pure presentation). Two densities — `default` (rich * /roadmap page card with vote buttons + figma/screenshots controls) * and `sm` (compact horizontal for chat-inline). * * The card writes NO click logic — the parent wraps with its own * anchor for the compact branch and supplies vote handlers for the * default branch. */ import React from 'react'; import type { RoadmapItem } from '../types/entities/roadmap-item'; type CardSize = 'default' | 'sm'; export type VoteType = 'up' | 'down' | null; export declare function RoadmapCardSkeleton({ size }: { size?: CardSize; }): React.JSX.Element; export interface RoadmapCardProps { item: RoadmapItem; /** Detail URL for the compact branch (`sm`). Used by the parent * wrapper to drive nav. Default-branch cards don't need href — * voting + screenshot UI is the entire action surface. */ href?: string; /** When `_blank`, opens in a new tab. Set by chat dispatch via * `computeIsNewTab`. Defaults to same-tab. */ target?: '_blank'; rel?: 'noopener noreferrer'; targetPlatform?: string | null; /** Compact-branch variant — drives the icon-slot fallback rule. */ cardType?: 'roadmap_item' | 'delivery_item' | 'internal_task'; size?: CardSize; className?: string; /** DOM `id` applied to the card's outer element. `RoadmapGrid` sets * `roadmap-` so chat-card deep-links * (`?search=#roadmap-`) have a target for `useScrollToHash` * to scroll to. `scroll-mt-24` on the outer element keeps the card * BELOW the sticky chrome. */ id?: string; userVote?: VoteType | null; onVote?: (voteType: 'up' | 'down') => void; isVoting?: boolean; } export declare function RoadmapCard({ item, href, target, rel, size, cardType, className, id, userVote, onVote, isVoting, }: RoadmapCardProps): React.JSX.Element; export {}; //# sourceMappingURL=roadmap-card.d.ts.map