import React, { useMemo } from 'react'; import { Variant as BannerVariant } from '@leafygreen-ui/banner'; import { css, cx } from '@leafygreen-ui/emotion'; import { InlineDefinition } from './inline-definition'; import { Banner, Button } from './leafygreen'; const bannerStyle = css({ width: '100%', }); const listStyle = css({ padding: 0, margin: 0, listStylePosition: 'inside', }); const summaryStyles = css({ display: 'flex', }); const actionButtonStyles = css({ marginLeft: 'auto', }); function Summary({ messages }: { messages: string[] }): React.ReactElement { if (messages.length === 1) { return
{messages[0]}
; } if (messages.length === 2) { return (
    {messages.map((message, i) => (
  1. {message}
  2. ))}
); } const tooltipErrors = (
    {messages.map((message, i) => (
  1. {message}
  2. ))}
); const firstMessageNoDot = messages[0].endsWith('.') ? messages[0].slice(0, messages[0].length - 1) : messages[0]; return (
{firstMessageNoDot}, and other {messages.length - 1} problems. {' '} View all
); } const BannerWithSummary: React.FunctionComponent< { messages: string | string[]; variant: BannerVariant; ['data-testid']?: string; className?: string; } & ( | { actionText: string; onAction(): void } | { actionText?: never; onAction?: never } ) > = ({ ['data-testid']: dataTestId, messages, onAction, actionText, variant, className, }) => { const _messages = useMemo(() => { return !Array.isArray(messages) ? [messages] : messages; }, [messages]); return (
{onAction && actionText && ( )}
); }; export const ErrorSummary: React.FunctionComponent< { className?: string; errors: string | string[]; ['data-testid']?: string; } & ( | { actionText: string; onAction(): void } | { actionText?: never; onAction?: never } ) > = ({ className, errors, ...props }) => { return ( ); }; export const WarningSummary: React.FunctionComponent< { className?: string; warnings: string | string[]; ['data-testid']?: string; } & ( | { actionText: string; onAction(): void } | { actionText?: never; onAction?: never } ) > = ({ className, warnings, ...props }) => { return ( ); };