{"version":3,"sources":["../src/card/card.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { forwardRef } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { Slot } from \"@radix-ui/react-slot\";\n\nexport const CardMedia = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"div\";\n    return (\n      <Component {...rest} className={clsx(\"hds-card__media\", className as undefined)} ref={ref}>\n        {children}\n      </Component>\n    );\n  },\n);\nCardMedia.displayName = \"Card.Media\";\n\nexport interface CardImageMediaProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n  /**\n   * Change the default rendered element for the one passed as a child, merging their props and behavior.\n   *\n   * @default false\n   */\n  asChild?: boolean;\n  /**\n   * Define image scaling behavior when the image are varies in both width and height across different page breaks and  sizes of the card.\n   * \"crop\": Image always fills the available space.\n   *         If the aspect ratio doesn't match, then the top/bottom or left/right edges are cropped away.\n   * \"scale\": No cropping, image scales to the maximum size available and centers.\n   *          If the aspect ratio doesn't match, then the background will show on the top/bottom or left/right sides of the image.\n   *\n   * @default \"crop\"\n   */\n  variant?: \"crop\" | \"scale\";\n}\nexport const CardMediaImg = forwardRef<HTMLImageElement, CardImageMediaProps>(\n  ({ asChild, variant, className, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"img\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\n          \"hds-card__media__img\",\n          { \"hds-card__img__scale\": variant === \"scale\" },\n          className as undefined,\n        )}\n        ref={ref}\n      />\n    );\n  },\n);\nCardMediaImg.displayName = \"Card.MediaImg\";\n\nexport const CardBody = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"div\";\n    return (\n      <Component {...rest} className={clsx(\"hds-card__body\", className as undefined)} ref={ref}>\n        <div className={clsx(\"hds-card__centerbody\", className as undefined)}>{children}</div>\n      </Component>\n    );\n  },\n);\nCardBody.displayName = \"Card.Body\";\n\nexport const CardBodyHeader = forwardRef<\n  HTMLHeadingElement,\n  CardBaseProps &\n    (\n      | {\n          /**\n           * Heading level of the card heading\n           */\n          as: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n          asChild?: never;\n        }\n      | {\n          asChild: true;\n          as?: never;\n        }\n    )\n>(({ as: Tag, asChild, className, children, ...rest }, ref) => {\n  const Component = asChild ? Slot : Tag;\n  return (\n    <Component\n      {...rest}\n      className={clsx(\"hds-card__body-header\", className as undefined)}\n      ref={ref}\n    >\n      {children}\n    </Component>\n  );\n});\nCardBodyHeader.displayName = \"Card.BodyHeader\";\n\nexport const CardBodyHeaderOverline = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"span\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\"hds-card__body-header-overline\", className as undefined)}\n        ref={ref}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\nCardBodyHeaderOverline.displayName = \"Card.BodyHeaderOverline\";\n\nexport const CardBodyHeaderTitle = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"div\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\"hds-card__body-header-title\", className as undefined)}\n        ref={ref}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\nCardBodyHeaderTitle.displayName = \"Card.BodyHeaderTitle\";\n\nexport const CardBodyDescription = forwardRef<HTMLParagraphElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"p\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\"hds-card__body-description\", className as undefined)}\n        ref={ref}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\nCardBodyDescription.displayName = \"Card.BodyDescription\";\n\nexport const CardBodyAction = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"div\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\"hds-card__body-action\", className as undefined)}\n        ref={ref}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\nCardBodyAction.displayName = \"Card.BodyAction\";\n\nexport const CardBodyActionRow = forwardRef<HTMLDivElement, CardBaseProps>(\n  ({ asChild, className, children, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"div\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\"hds-card__body-action-row\", className as undefined)}\n        ref={ref}\n      >\n        {children}\n      </Component>\n    );\n  },\n);\nCardBodyActionRow.displayName = \"Card.BodyActionRow\";\n\ninterface CardBodyActionArrowProps extends React.HTMLAttributes<HTMLSpanElement> {\n  /**\n   * Change the default rendered element for the one passed as a child, merging their props and behavior.\n   *\n   * @default false\n   */\n  asChild?: boolean;\n\n  /**\n   * Set direction of the arrow\n   *\n   * @default \"right\"\n   */\n  direction?: \"right\" | \"up-right\";\n}\nexport const CardBodyActionArrow = forwardRef<HTMLSpanElement, CardBodyActionArrowProps>(\n  ({ asChild, className, direction, ...rest }, ref) => {\n    const Component = asChild ? Slot : \"span\";\n    return (\n      <Component\n        {...rest}\n        className={clsx(\n          \"hds-card__body-action-arrow\",\n          { \"hds-card__body-action-arrow-up-right\": direction === \"up-right\" },\n          className as undefined,\n        )}\n        ref={ref}\n      />\n    );\n  },\n);\nCardBodyActionArrow.displayName = \"Card.BodyActionArrow\";\n\nexport interface CardBaseProps extends React.HTMLAttributes<HTMLDivElement> {\n  children: ReactNode;\n\n  /**\n   * Change the default rendered element for the one passed as a child, merging their props and behavior.\n   *\n   * @default false\n   */\n  asChild?: boolean;\n}\n\nexport interface CardSlimAndMiniatureProps extends CardBaseProps {\n  /**\n   * Change the default rendered element for Card.\n   */\n  as?: \"section\" | \"div\" | \"article\" | \"aside\";\n  /**\n   * Allows for a horizontal variant for sizes above small.\n   *\n   * @default \"slim\"\n   */\n  variant?: \"slim\" | \"miniature\";\n  /**\n   * The color of the card.\n   *\n   * @default \"lighter-brand\"\n   * */\n  color?: \"white\" | \"lighter-brand\" | \"light-grey-fill\";\n\n  /* Only fullwidth or focus cards can have images to the left or right of the text: */\n  imagePosition?: never;\n}\n\nexport interface CardFocusProps extends CardBaseProps {\n  as?: \"section\" | \"div\" | \"article\" | \"aside\";\n  variant: \"focus\";\n  color?: \"darker\";\n  /**\n   * fullwidth or focus cards can have images to the left or right of the text.\n   *\n   * @default \"left\"\n   * */\n  imagePosition?: \"left\" | \"right\";\n}\n\nexport interface CardFullwidthProps extends CardBaseProps {\n  as?: \"section\" | \"div\" | \"article\" | \"aside\";\n  variant: \"full-width\";\n  color: \"white\" | \"lighter-brand\" | \"light-grey-fill\";\n  /**\n   * fullwidth or focus cards can have images to the left or right of the text.\n   *\n   * @default \"left\"\n   * */\n  imagePosition?: \"left\" | \"right\";\n}\n\nexport type CardProps = CardSlimAndMiniatureProps | CardFocusProps | CardFullwidthProps;\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n  (\n    {\n      as: Tag = \"section\",\n      asChild,\n      className,\n      children,\n      variant = \"slim\",\n      color,\n      imagePosition,\n      ...rest\n    },\n    ref,\n  ) => {\n    const Component = asChild ? Slot : Tag;\n    const effectiveColor = variant === \"focus\" && !color ? \"darker\" : color;\n    return (\n      <Component\n        {...rest}\n        className={clsx(\n          \"hds-card\",\n          { \"hds-card--full-width\": variant === \"full-width\" },\n          { \"hds-card--miniature\": variant === \"miniature\" },\n          { \"hds-card--focus\": variant === \"focus\" },\n          { \"hds-card--slim\": variant === \"slim\" },\n          { \"hds-card--color-white\": effectiveColor === \"white\" },\n          { \"hds-card--color-light-grey-fill\": effectiveColor === \"light-grey-fill\" },\n          { \"hds-card--color-darker\": effectiveColor === \"darker\" },\n          { \"hds-card--image-position-right\": imagePosition === \"right\" },\n          className as undefined,\n        )}\n        ref={ref}\n      >\n        {variant === \"full-width\" ? (\n          <div className={clsx(\"hds-card__layoutwrapper\", className as undefined)}>{children}</div>\n        ) : (\n          children\n        )}\n      </Component>\n    );\n  },\n) as CardType;\nCard.displayName = \"Card\";\n\nCard.Media = CardMedia;\nCard.MediaImg = CardMediaImg;\nCard.Body = CardBody;\nCard.BodyHeader = CardBodyHeader;\nCard.BodyHeaderOverline = CardBodyHeaderOverline;\nCard.BodyHeaderTitle = CardBodyHeaderTitle;\nCard.BodyDescription = CardBodyDescription;\nCard.BodyAction = CardBodyAction;\nCard.BodyActionRow = CardBodyActionRow;\nCard.BodyActionArrow = CardBodyActionArrow;\n\ntype CardType = ReturnType<typeof forwardRef<HTMLDivElement, CardProps>> & {\n  Media: typeof CardMedia;\n  MediaImg: typeof CardMediaImg;\n  Body: typeof CardBody;\n  BodyHeader: typeof CardBodyHeader;\n  BodyHeaderOverline: typeof CardBodyHeaderOverline;\n  BodyHeaderTitle: typeof CardBodyHeaderTitle;\n  BodyDescription: typeof CardBodyDescription;\n  BodyAction: typeof CardBodyAction;\n  BodyActionRow: typeof CardBodyActionRow;\n  BodyActionArrow: typeof CardBodyActionArrow;\n};\n"],"mappings":"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","names":[]}