'use client' import { forwardRef } from 'react' import * as React from 'react' import { isBezierIcon } from '@channel.io/bezier-icons' import classNames from 'classnames' import { isArray, isEmpty, isNil } from '~/src/utils/type' import { Button } from '~/src/components/Button' import { Icon } from '~/src/components/Icon' import { Text, type TextProps } from '~/src/components/Text' import { Tooltip } from '~/src/components/Tooltip' import { type ItemActionWithIcon, type KeyValueItemAction, type KeyValueItemProps, } from './KeyValueItem.types' import styles from './KeyValueItem.module.scss' export const KEY_VALUE_ITEM_TEST_ID = 'bezier-key-value-item' export const KEY_VALUE_ITEM_KEY_ICON_TEST_ID = 'bezier-key-value-item-key-icon' function KeyItem({ icon, children, }: { icon: KeyValueItemProps['keyIcon'] children: React.ReactNode }) { return (
{isBezierIcon(icon) ? ( ) : ( icon )} {children}
) } function ValueItem({ truncated, children }: TextProps) { return ( {children} ) } function isItemActionWithIcon(args: object): args is ItemActionWithIcon { return 'icon' in args } function ActionButton({ children }: { children: KeyValueItemAction }) { if (!isItemActionWithIcon(children)) { return children } const withTooltip = !isEmpty(children.tooltip) const Wrapper = withTooltip ? Tooltip : React.Fragment return (