# All files / src/list ListItemAddon.tsx

100% Statements 67/67
100% Branches 2/2
100% Functions 1/1
100% Lines 67/67

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    681x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
    1798x
     import { type ReactElement, type ReactNode } from "react";
    import {
      TextIconSpacing,
      type TextIconSpacingProps,
    } from "../icon/TextIconSpacing.js";
    import {
      listItemAddon,
      type ListItemAddonClassNameOptions,
    } from "./listItemStyles.js";

    export interface ListItemAddonProps
      extends Omit<TextIconSpacingProps, "icon" | "iconAfter" | "forceIconWrap">,
        ListItemAddonClassNameOptions {
      /**
       * The addon that should be rendered.
       */
      addon: ReactNode;

      /**
       * @defaultValue `type === "media" || type === "large-media"`
       */
      forceAddonWrap?: boolean;
    }

    /**
     * **Server Component**
     *
     * The `ListItemAddon` is used to create an addon to the left or right of the
     * text/children of a `ListItem`.
     *
     * @internal
     */
    export function ListItemAddon(props: ListItemAddonProps): ReactElement {
      const {
        className,
        children,
        addon,
        addonAfter,
        type = "icon",
        position,
        forceAddonWrap,
        disableCenteredMedia,
        disableBeforeSpacing,
        ...remaining
      } = props;

      const isMedia = type === "media" || type === "large-media";

      return (
        <TextIconSpacing
          {...remaining}
          icon={addon}
          forceIconWrap={forceAddonWrap ?? isMedia}
          className={listItemAddon({
            type,
            position,
            className,
            addonAfter,
            disableBeforeSpacing,
            disableCenteredMedia,
          })}
          iconAfter={addonAfter}
        >
          {children}
        </TextIconSpacing>
      );
    }