{"version":3,"file":"prompt-input-submit.cjs","sources":["../../../components/prompt-input/prompt-input-submit.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'class-variance-authority';\nimport { ComponentProps, MouseEvent } from 'react';\nimport { ArrowUpIcon, StopIcon } from '~/icons';\nimport { Spinner } from '../spinner';\nimport styles from './prompt-input.module.css';\nimport { usePromptInputContext } from './prompt-input-context';\n\nexport interface PromptInputSubmitProps extends ComponentProps<'button'> {}\n\nexport function PromptInputSubmit({\n  className,\n  children,\n  onClick,\n  disabled,\n  'aria-label': ariaLabel,\n  ...props\n}: PromptInputSubmitProps) {\n  const context = usePromptInputContext('Submit');\n  const busy = context.status === 'submitted' || context.status === 'streaming';\n  // Reported by the mounted input part, so a message of nothing but a chip is\n  // sendable and a lone trailing space is not.\n  const empty = context.empty;\n\n  const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n    onClick?.(event);\n    if (event.defaultPrevented) return;\n    if (busy) context.onStop?.();\n  };\n\n  return (\n    <button\n      // While a response is in flight the button becomes a stop control and\n      // must not resubmit the form.\n      type={busy ? 'button' : 'submit'}\n      className={cx(styles.submit, className)}\n      data-slot='prompt-input-submit'\n      data-status={context.status}\n      disabled={disabled ?? (context.disabled || (!busy && empty))}\n      aria-label={ariaLabel ?? (busy ? 'Stop response' : 'Send message')}\n      onClick={handleClick}\n      {...props}\n    >\n      {children ??\n        (context.status === 'submitted' ? (\n          <Spinner size={2} color='default' aria-hidden='true' />\n        ) : context.status === 'streaming' ? (\n          <StopIcon aria-hidden='true' />\n        ) : (\n          <ArrowUpIcon aria-hidden='true' />\n        ))}\n    </button>\n  );\n}\n\nPromptInputSubmit.displayName = 'PromptInput.Submit';\n"],"names":[],"mappings":";;;;;;;;;;;;AAmBE;AACA;;;AAGA;AAEA;AACE;;;AAEA;AAAU;AACZ;AAEA;;;AAII;;AAmBN;AAEA;;"}