'use client' import * as React from 'react' import { cn } from '../../../utils/cn' import { ApprovalBatchMessage } from '../../chat/approval-batch-message' import { useCollapsible } from '../../chat/hooks/use-collapsible' import { Chevron02DownIcon, Chevron02UpIcon, DotsLoaderIcon, ShieldCheckIcon } from '../../icons-v2-generated' import type { BoardTicketPendingApproval } from './types' export interface BoardTicketApprovalProps { pendingApproval: BoardTicketPendingApproval onApprove?: (requestId?: string) => void | Promise onReject?: (requestId?: string) => void | Promise } /** * Inline, collapsed-by-default approval section for a board ticket card. Expands to * the shared {@link ApprovalBatchMessage} so the request can be approved/rejected * without leaving the board. The header switches between the client variant (grey, * "Pending client approval") and the technician/admin variant (yellow shield, * "Technician approval required") on `approvalType`. */ export function BoardTicketApproval({ pendingApproval, onApprove, onReject }: BoardTicketApprovalProps) { const [expanded, setExpanded] = React.useState(false) const { innerRef, containerStyle } = useCollapsible({ expanded }) const isAdmin = pendingApproval.approvalType === 'ADMIN' return (
) }