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);