RocketChat/Rocket.Chat

View on GitHub
packages/fuselage-ui-kit/src/blocks/ContextBlock.Item.tsx

Summary

Maintainability
A
1 hr
Test Coverage
import { Box } from '@rocket.chat/fuselage';
import * as UiKit from '@rocket.chat/ui-kit';
import type { ReactElement } from 'react';

type ItemProps = {
  block: UiKit.ContextBlock['elements'][number];
  surfaceRenderer: UiKit.SurfaceRenderer<ReactElement>;
  index: number;
};

const Item = ({
  block: element,
  surfaceRenderer: parser,
  index,
}: ItemProps): ReactElement | null => {
  const renderedElement = parser.renderContextBlockElement(element, index);

  if (!renderedElement) {
    return null;
  }

  switch (element.type) {
    case UiKit.TextObjectType.PLAIN_TEXT:
    case UiKit.TextObjectType.MARKDOWN:
      return (
        <Box is='span' fontScale='c1' color='hint' margin={4}>
          {renderedElement}
        </Box>
      );

    default:
      return renderedElement;
  }
};

export default Item;