{"version":3,"file":"CopilotModalHeader.cjs","names":["useCopilotChatConfiguration","CopilotChatDefaultLabels","renderSlot","cn","X"],"sources":["../../../src/components/chat/CopilotModalHeader.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\n\nimport { cn } from \"@/lib/utils\";\nimport {\n  useCopilotChatConfiguration,\n  CopilotChatDefaultLabels,\n} from \"@/providers/CopilotChatConfigurationProvider\";\nimport { renderSlot, WithSlots } from \"@/lib/slots\";\nimport { X } from \"lucide-react\";\n\ntype HeaderSlots = {\n  titleContent: typeof CopilotModalHeader.Title;\n  closeButton: typeof CopilotModalHeader.CloseButton;\n};\n\ntype HeaderRestProps = {\n  title?: string;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"children\">;\n\nexport type CopilotModalHeaderProps = WithSlots<HeaderSlots, HeaderRestProps>;\n\nexport function CopilotModalHeader({\n  title,\n  titleContent,\n  closeButton,\n  children,\n  className,\n  ...rest\n}: CopilotModalHeaderProps) {\n  const configuration = useCopilotChatConfiguration();\n\n  const fallbackTitle =\n    configuration?.labels.modalHeaderTitle ??\n    CopilotChatDefaultLabels.modalHeaderTitle;\n  const resolvedTitle = title ?? fallbackTitle;\n\n  const handleClose = useCallback(() => {\n    configuration?.setModalOpen?.(false);\n  }, [configuration]);\n\n  const BoundTitle = renderSlot(titleContent, CopilotModalHeader.Title, {\n    children: resolvedTitle,\n  });\n\n  const BoundCloseButton = renderSlot(\n    closeButton,\n    CopilotModalHeader.CloseButton,\n    {\n      onClick: handleClose,\n    },\n  );\n\n  if (children) {\n    return children({\n      titleContent: BoundTitle,\n      closeButton: BoundCloseButton,\n      title: resolvedTitle,\n      ...rest,\n    });\n  }\n\n  return (\n    <header\n      data-testid=\"copilot-modal-header\"\n      data-slot=\"copilot-modal-header\"\n      className={cn(\n        \"copilotKitHeader\",\n        \"cpk:flex cpk:items-center cpk:justify-between cpk:border-b cpk:border-border cpk:px-4 cpk:py-4\",\n        \"cpk:bg-background/95 cpk:backdrop-blur cpk:supports-[backdrop-filter]:bg-background/80\",\n        className,\n      )}\n      {...rest}\n    >\n      <div className=\"cpk:flex cpk:w-full cpk:items-center cpk:gap-2\">\n        <div className=\"cpk:flex-1\" aria-hidden=\"true\" />\n        <div className=\"cpk:flex cpk:flex-1 cpk:justify-center cpk:text-center\">\n          {BoundTitle}\n        </div>\n        <div className=\"cpk:flex cpk:flex-1 cpk:justify-end\">\n          {BoundCloseButton}\n        </div>\n      </div>\n    </header>\n  );\n}\n\nCopilotModalHeader.displayName = \"CopilotModalHeader\";\n\nexport namespace CopilotModalHeader {\n  export const Title: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n    children,\n    className,\n    ...props\n  }) => (\n    <div\n      data-testid=\"copilot-header-title\"\n      className={cn(\n        \"cpk:w-full cpk:text-base cpk:font-medium cpk:leading-none cpk:tracking-tight cpk:text-foreground\",\n        className,\n      )}\n      {...props}\n    >\n      {children}\n    </div>\n  );\n\n  export const CloseButton: React.FC<\n    React.ButtonHTMLAttributes<HTMLButtonElement>\n  > = ({ className, ...props }) => (\n    <button\n      type=\"button\"\n      data-testid=\"copilot-close-button\"\n      className={cn(\n        \"cpk:inline-flex cpk:size-8 cpk:items-center cpk:justify-center cpk:rounded-full cpk:text-muted-foreground cpk:transition cpk:cursor-pointer\",\n        \"cpk:hover:bg-muted cpk:hover:text-foreground cpk:focus-visible:outline-none cpk:focus-visible:ring-2 cpk:focus-visible:ring-ring\",\n        className,\n      )}\n      aria-label=\"Close\"\n      {...props}\n    >\n      <X className=\"cpk:h-4 cpk:w-4\" aria-hidden=\"true\" />\n    </button>\n  );\n}\n\nCopilotModalHeader.Title.displayName = \"CopilotModalHeader.Title\";\nCopilotModalHeader.CloseButton.displayName = \"CopilotModalHeader.CloseButton\";\n\nexport default CopilotModalHeader;\n"],"mappings":";;;;;;;;;;AAqBA,SAAgB,mBAAmB,EACjC,OACA,cACA,aACA,UACA,WACA,GAAG,QACuB;CAC1B,MAAM,gBAAgBA,sEAA6B;CAEnD,MAAM,gBACJ,eAAe,OAAO,oBACtBC,kEAAyB;CAC3B,MAAM,gBAAgB,SAAS;CAE/B,MAAM,2CAAgC;AACpC,iBAAe,eAAe,MAAM;IACnC,CAAC,cAAc,CAAC;CAEnB,MAAM,aAAaC,yBAAW,cAAc,mBAAmB,OAAO,EACpE,UAAU,eACX,CAAC;CAEF,MAAM,mBAAmBA,yBACvB,aACA,mBAAmB,aACnB,EACE,SAAS,aACV,CACF;AAED,KAAI,SACF,QAAO,SAAS;EACd,cAAc;EACd,aAAa;EACb,OAAO;EACP,GAAG;EACJ,CAAC;AAGJ,QACE,2CAAC;EACC,eAAY;EACZ,aAAU;EACV,WAAWC,iBACT,oBACA,kGACA,0FACA,UACD;EACD,GAAI;YAEJ,4CAAC;GAAI,WAAU;;IACb,2CAAC;KAAI,WAAU;KAAa,eAAY;MAAS;IACjD,2CAAC;KAAI,WAAU;eACZ;MACG;IACN,2CAAC;KAAI,WAAU;eACZ;MACG;;IACF;GACC;;AAIb,mBAAmB,cAAc;;8BAGuC,EACpE,UACA,WACA,GAAG,YAEH,2CAAC;EACC,eAAY;EACZ,WAAWA,iBACT,oGACA,UACD;EACD,GAAI;EAEH;GACG;oCAKH,EAAE,WAAW,GAAG,YACnB,2CAAC;EACC,MAAK;EACL,eAAY;EACZ,WAAWA,iBACT,+IACA,oIACA,UACD;EACD,cAAW;EACX,GAAI;YAEJ,2CAACC;GAAE,WAAU;GAAkB,eAAY;IAAS;GAC7C;;AAIb,mBAAmB,MAAM,cAAc;AACvC,mBAAmB,YAAY,cAAc"}