{"version":3,"file":"code-block-misc.cjs","sources":["../../../components/code-block/code-block-misc.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'class-variance-authority';\nimport { ComponentProps, ReactNode } from 'react';\nimport { Button } from '../button';\nimport { CopyButton } from '../copy-button';\nimport { Flex } from '../flex';\nimport { Text } from '../text';\nimport styles from './code-block.module.css';\nimport { useCodeBlockContext } from './code-block-root';\n\nexport function CodeBlockContent({\n  children,\n  className,\n  ...props\n}: ComponentProps<'div'>) {\n  return (\n    <div\n      className={cx(styles.content, className)}\n      data-slot='code-block-content'\n      {...props}\n    >\n      {children}\n    </div>\n  );\n}\n\nCodeBlockContent.displayName = 'CodeBlock.Content';\n\nexport function CodeBlockHeader({\n  children,\n  className,\n  ...props\n}: ComponentProps<typeof Flex>) {\n  return (\n    <Flex\n      align='center'\n      gap={4}\n      className={cx(styles.header, className)}\n      data-slot='code-block-header'\n      {...props}\n    >\n      {children}\n    </Flex>\n  );\n}\n\nCodeBlockHeader.displayName = 'CodeBlock.Header';\n\nexport function CodeBlockLabel({\n  children,\n  className,\n  ...props\n}: ComponentProps<typeof Text>) {\n  return (\n    <Text\n      className={cx(styles.label, className)}\n      data-slot='code-block-label'\n      {...props}\n    >\n      {children}\n    </Text>\n  );\n}\n\nCodeBlockLabel.displayName = 'CodeBlock.Label';\n\nexport interface CodeBlockCollapseTriggerProps\n  extends Omit<ComponentProps<typeof Button>, 'children'> {\n  children?: ReactNode | ((collapsed: boolean) => ReactNode);\n}\n\nexport function CodeBlockCollapseTrigger({\n  className,\n  children = collapsed => (collapsed ? 'Show Code' : 'Hide Code'),\n  onClick,\n  ...props\n}: CodeBlockCollapseTriggerProps) {\n  const { maxLines, collapsed, toggleCollapsed, code } = useCodeBlockContext();\n  const canCollapse = maxLines && maxLines > 0;\n  const lineCount = code?.split('\\n').length ?? 0;\n\n  if (!canCollapse || lineCount < maxLines) return null;\n\n  return (\n    <Button\n      onClick={e => {\n        toggleCollapsed();\n        onClick?.(e);\n      }}\n      variant='text'\n      color='neutral'\n      className={cx(\n        styles.collapseTrigger,\n        collapsed && styles.collapsed,\n        className\n      )}\n      data-slot='code-block-collapse-trigger'\n      {...props}\n    >\n      {typeof children === 'function' ? children(!!collapsed) : children}\n    </Button>\n  );\n}\n\nCodeBlockCollapseTrigger.displayName = 'CodeBlock.CollapseTrigger';\n\nexport interface CodeBlockCopyButtonProps\n  extends Omit<ComponentProps<typeof CopyButton>, 'text'> {\n  variant?: 'floating' | 'default';\n}\n\nexport function CodeBlockCopyButton({\n  className,\n  variant = 'default',\n  ...props\n}: CodeBlockCopyButtonProps) {\n  const { code = '' } = useCodeBlockContext();\n\n  return (\n    <CopyButton\n      text={code}\n      size={variant === 'floating' ? 2 : 3}\n      className={cx(\n        styles.copyButton,\n        variant === 'floating' && styles.floatingCopyButton,\n        className\n      )}\n      data-slot='code-block-copy-button'\n      {...props}\n    />\n  );\n}\n\nCodeBlockCopyButton.displayName = 'CodeBlock.CopyButton';\n"],"names":[],"mappings":";;;;;;;;;;;;AAWM;;AAcN;AAEA;AAEM;AAKJ;AAWF;AAEA;AAEM;;AAcN;AAEA;AAOgB;AAMd;AACA;AACA;AAEA;AAA0C;;AAKpC;AACA;;AAeR;AAEA;AAOgB;;;AAoBhB;AAEA;;;;;;"}