{"version":3,"file":"Card.mjs","sources":["../../../../src/components/Card/Card.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { memo, cloneElement, FC, useMemo, useContext, ReactNode } from 'react';\nimport * as React from 'react';\n\nimport { GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { getFocusStyles } from '../../themes/mixins';\nimport { t } from '../../utils/i18n';\n\nimport { CardContainer, CardContainerProps, getCardContainerStyles } from './CardContainer';\n\n/**\n * @public\n */\nexport interface Props extends Omit<CardContainerProps, 'disableEvents' | 'disableHover'> {\n  /** Indicates if the card and all its actions can be interacted with */\n  disabled?: boolean;\n  /** Link to redirect to on card click. If provided, the Card inner content will be rendered inside `a` */\n  href?: string;\n  /** On click handler for the Card */\n  onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n  /** @deprecated Use `Card.Heading` instead */\n  heading?: ReactNode;\n  /** @deprecated Use `Card.Description` instead */\n  description?: string;\n  isSelected?: boolean;\n  /** If true, the padding of the Card will be smaller */\n  isCompact?: boolean;\n}\n\nexport interface CardInterface extends FC<Props> {\n  Heading: typeof Heading;\n  Tags: typeof Tags;\n  Figure: typeof Figure;\n  Meta: typeof Meta;\n  Actions: typeof Actions;\n  SecondaryActions: typeof SecondaryActions;\n  Description: typeof Description;\n}\n\nconst CardContext = React.createContext<{\n  href?: string;\n  onClick?: (e: React.MouseEvent<HTMLElement>) => void;\n  disabled?: boolean;\n  isSelected?: boolean;\n} | null>(null);\n\n/**\n * Generic card component\n *\n * @public\n */\nexport const Card: CardInterface = ({\n  disabled,\n  href,\n  onClick,\n  children,\n  isSelected,\n  isCompact,\n  className,\n  ...htmlProps\n}) => {\n  const hasHeadingComponent = useMemo(\n    () => React.Children.toArray(children).some((c) => React.isValidElement(c) && c.type === Heading),\n    [children]\n  );\n\n  const disableHover = disabled || (!onClick && !href);\n  const onCardClick = onClick && !disabled ? onClick : undefined;\n  const styles = useStyles2(getCardContainerStyles, disabled, disableHover, isSelected, isCompact);\n\n  return (\n    <CardContainer\n      disableEvents={disabled}\n      disableHover={disableHover}\n      isSelected={isSelected}\n      className={cx(styles.container, className)}\n      {...htmlProps}\n    >\n      <CardContext.Provider value={{ href, onClick: onCardClick, disabled, isSelected }}>\n        {!hasHeadingComponent && <Heading />}\n        {children}\n      </CardContext.Provider>\n    </CardContainer>\n  );\n};\nCard.displayName = 'Card';\n\ninterface ChildProps {\n  className?: string;\n  disabled?: boolean;\n  children?: React.ReactNode;\n}\n\n/** Main heading for the card */\nconst Heading = ({ children, className, 'aria-label': ariaLabel }: ChildProps & { 'aria-label'?: string }) => {\n  const context = useContext(CardContext);\n  const styles = useStyles2(getHeadingStyles);\n\n  const { href, onClick, isSelected } = context ?? {\n    href: undefined,\n    onClick: undefined,\n    isSelected: undefined,\n  };\n  const optionLabel = t('grafana-ui.card.option', 'option');\n\n  return (\n    <h2 className={cx(styles.heading, className)}>\n      {href ? (\n        <a href={href} className={styles.linkHack} aria-label={ariaLabel} onClick={onClick}>\n          {children}\n        </a>\n      ) : onClick ? (\n        <button onClick={onClick} className={styles.linkHack} aria-label={ariaLabel} type=\"button\">\n          {children}\n        </button>\n      ) : (\n        <>{children}</>\n      )}\n      {/* Input must be readonly because we are providing a value for the checked prop with no onChange handler */}\n      {isSelected !== undefined && <input aria-label={optionLabel} type=\"radio\" checked={isSelected} readOnly />}\n    </h2>\n  );\n};\nHeading.displayName = 'Heading';\n\nconst getHeadingStyles = (theme: GrafanaTheme2) => ({\n  heading: css({\n    gridArea: 'Heading',\n    justifySelf: 'start',\n    display: 'flex',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n    width: '100%',\n    marginBottom: 0,\n    fontSize: theme.typography.size.md,\n    letterSpacing: 'inherit',\n    lineHeight: theme.typography.body.lineHeight,\n    color: theme.colors.text.primary,\n    fontWeight: theme.typography.fontWeightMedium,\n    '& input[readonly]': {\n      cursor: 'inherit',\n    },\n  }),\n  linkHack: css({\n    all: 'unset',\n    '&::after': {\n      position: 'absolute',\n      content: '\"\"',\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n      borderRadius: theme.shape.radius.default,\n    },\n\n    '&:focus-visible': {\n      outline: 'none',\n      outlineOffset: 0,\n      boxShadow: 'none',\n\n      '&::after': {\n        ...getFocusStyles(theme),\n        zIndex: 1,\n      },\n    },\n  }),\n});\n\nconst Tags = ({ children, className }: ChildProps) => {\n  const styles = useStyles2(getTagStyles);\n  return <div className={cx(styles.tagList, className)}>{children}</div>;\n};\nTags.displayName = 'Tags';\n\nconst getTagStyles = (theme: GrafanaTheme2) => ({\n  tagList: css({\n    position: 'relative',\n    gridArea: 'Tags',\n    alignSelf: 'center',\n  }),\n});\n\n/** Card description text */\nconst Description = ({ children, className }: ChildProps) => {\n  const styles = useStyles2(getDescriptionStyles);\n  const Element = typeof children === 'string' ? 'p' : 'div';\n  return <Element className={cx(styles.description, className)}>{children}</Element>;\n};\nDescription.displayName = 'Description';\n\nconst getDescriptionStyles = (theme: GrafanaTheme2) => ({\n  description: css({\n    width: '100%',\n    gridArea: 'Description',\n    margin: theme.spacing(1, 0, 0),\n    color: theme.colors.text.secondary,\n    lineHeight: theme.typography.body.lineHeight,\n  }),\n});\n\nconst Figure = ({ children, align = 'start', className }: ChildProps & { align?: 'start' | 'center' }) => {\n  const styles = useStyles2(getFigureStyles);\n  return (\n    <div\n      className={cx(\n        styles.media,\n        className,\n        css({\n          alignSelf: align,\n        })\n      )}\n    >\n      {children}\n    </div>\n  );\n};\nFigure.displayName = 'Figure';\n\nconst getFigureStyles = (theme: GrafanaTheme2) => ({\n  media: css({\n    position: 'relative',\n    gridArea: 'Figure',\n\n    marginRight: theme.spacing(2),\n    width: '40px',\n\n    '> img': {\n      width: '100%',\n    },\n\n    '&:empty': {\n      display: 'none',\n    },\n  }),\n});\n\nconst Meta = memo(({ children, className, separator = '|' }: ChildProps & { separator?: string }) => {\n  const styles = useStyles2(getMetaStyles);\n  let meta = children;\n\n  const filtered = React.Children.toArray(children).filter(Boolean);\n  if (!filtered.length) {\n    return null;\n  }\n  meta = filtered.map((element, i) => (\n    <div key={`element_${i}`} className={styles.metadataItem}>\n      {element}\n    </div>\n  ));\n  // Join meta data elements by separator\n  if (filtered.length > 1 && separator) {\n    meta = filtered.reduce((prev, curr, i) => [\n      prev,\n      <span key={`separator_${i}`} className={styles.separator}>\n        {separator}\n      </span>,\n      curr,\n    ]);\n  }\n  return <div className={cx(styles.metadata, className)}>{meta}</div>;\n});\nMeta.displayName = 'Meta';\n\nconst getMetaStyles = (theme: GrafanaTheme2) => ({\n  metadata: css({\n    gridArea: 'Meta',\n    display: 'flex',\n    alignItems: 'center',\n    width: '100%',\n    fontSize: theme.typography.size.sm,\n    color: theme.colors.text.secondary,\n    margin: theme.spacing(0.5, 0, 0),\n    lineHeight: theme.typography.bodySmall.lineHeight,\n    overflowWrap: 'anywhere',\n  }),\n  metadataItem: css({\n    // Needed to allow for clickable children in metadata\n    zIndex: 0,\n  }),\n  separator: css({\n    margin: `0 ${theme.spacing(1)}`,\n  }),\n});\n\ninterface ActionsProps extends ChildProps {\n  children?: React.ReactNode;\n  variant?: 'primary' | 'secondary';\n}\n\nconst BaseActions = ({ children, disabled, variant, className }: ActionsProps) => {\n  const styles = useStyles2(getActionStyles);\n  const context = useContext(CardContext);\n  const isDisabled = context?.disabled || disabled;\n\n  const css = variant === 'primary' ? styles.actions : styles.secondaryActions;\n  return (\n    <div className={cx(css, className)}>\n      {React.Children.map(children, (child) => {\n        return React.isValidElement(child) ? cloneElement(child, { disabled: isDisabled, ...child.props }) : null;\n      })}\n    </div>\n  );\n};\n\nconst getActionStyles = (theme: GrafanaTheme2) => ({\n  actions: css({\n    display: 'flex',\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: theme.spacing(1),\n    gridArea: 'Actions',\n    marginTop: theme.spacing(2),\n  }),\n  secondaryActions: css({\n    alignSelf: 'center',\n    color: theme.colors.text.secondary,\n    display: 'flex',\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n    gap: theme.spacing(1),\n    gridArea: 'Secondary',\n    marginTop: theme.spacing(2),\n  }),\n});\n\nconst Actions = ({ children, disabled, className }: ChildProps) => {\n  return (\n    <BaseActions variant=\"primary\" disabled={disabled} className={className}>\n      {children}\n    </BaseActions>\n  );\n};\nActions.displayName = 'Actions';\n\nconst SecondaryActions = ({ children, disabled, className }: ChildProps) => {\n  return (\n    <BaseActions variant=\"secondary\" disabled={disabled} className={className}>\n      {children}\n    </BaseActions>\n  );\n};\nSecondaryActions.displayName = 'SecondaryActions';\n\n/**\n * @public\n * @deprecated Use `className` on respective components to modify styles\n */\nexport const getCardStyles = (theme: GrafanaTheme2) => {\n  return {\n    inner: css({\n      display: 'flex',\n      justifyContent: 'space-between',\n      alignItems: 'center',\n      width: '100%',\n      flexWrap: 'wrap',\n    }),\n    ...getHeadingStyles(theme),\n    ...getMetaStyles(theme),\n    ...getDescriptionStyles(theme),\n    ...getFigureStyles(theme),\n    ...getActionStyles(theme),\n    ...getTagStyles(theme),\n  };\n};\n\nCard.Heading = Heading;\nCard.Tags = Tags;\nCard.Figure = Figure;\nCard.Meta = Meta;\nCard.Actions = Actions;\nCard.SecondaryActions = SecondaryActions;\nCard.Description = Description;\n"],"names":["css"],"mappings":"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"}