import { Box, Divider, SkeletonGroup, SkeletonLine, Table, TableToolbar, Text, TextButton, } from '@wix/design-system'; import React, { Fragment } from 'react'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { observer } from 'mobx-react-lite'; import { useSelector } from '../../useSelector'; import { Trans } from '../Trans'; export interface SummaryItem { title: string; value: string; } export type SummaryBarStatus = 'loading' | 'error' | 'success'; export type SummaryData = SummaryItem[]; export interface SummaryBarProps { /** * Data to display in the summary bar. * @external */ data: SummaryData; /** * Summary bar status. *

* Supported values:
* - `"success"`
* - `"loading"`
* - `"error"` * @external * @default success */ status: SummaryBarStatus; /** * Function that is called every time **Reload** is clicked. * @external */ onRetry: () => void | Promise; } const SkeletonSummaryBar = () => ( ); const ErrorSummaryBar = ({ onRetry, }: { onRetry: SummaryBarProps['onRetry']; }) => { const { translate: t, ...container } = useWixPatternsContainer(); useSelector(() => container.initTask.status); return ( {t('cairo.table.summaryBar.loadError')} {t('cairo.table.summaryBar.loadError.cta')} ); }; const SummaryBarContent = ({ data }: { data: SummaryBarProps['data'] }) => { const { translate: t, ...container } = useWixPatternsContainer(); useSelector(() => container.initTask.status); return ( {data.map(({ title, value }, index) => ( ), }} /> {index !== data.length - 1 && ( )} ))} ); }; const _SummaryBar = (props: SummaryBarProps) => { const { data, status, onRetry } = props; const contentByStatus = { loading: , error: , success: , }; return ( {contentByStatus[status]} ); }; export const SummaryBar = observer(_SummaryBar);