import React from 'react' import { Box, Text, Badge, BadgeMode, BadgeTone, Flex, Tooltip, studioTheme, usePrefersDark, type FlexJustify, } from '@sanity/ui' import { WarningOutlineIcon } from '@sanity/icons' type DeployStatusProps = { status: string errorMessage?: string justify?: FlexJustify | FlexJustify[] } const DeployStatus: React.FC = ({ status, errorMessage, justify, }) => { const scheme = usePrefersDark() ? 'dark' : 'light' const getStatus = (status: string, errorMessage?: string) => { if (errorMessage && errorMessage.indexOf('Canceled build') >= 0) { return 'canceled' } else if (errorMessage && errorMessage.indexOf('Skipped') >= 0) { return 'skipped' } else { return status } } const badgeStatus = getStatus(status, errorMessage)?.toUpperCase() const badgeTone = ({ NEW: 'default', LOADING: 'default', ERROR: 'critical', ENQUEUED: 'default', CANCELED: 'default', SKIPPED: 'default', READY: 'positive', BUILDING: 'caution', PREPARING: 'caution', PROCESSING: 'caution', }[badgeStatus] as BadgeTone) || 'default' const badgeMode = ({ LOADING: 'outline', READY: 'outline', SKIPPED: 'outline', CANCELED: 'outline', }[badgeStatus] as BadgeMode) || 'default' return ( {badgeStatus} { (errorMessage && (badgeStatus !== 'CANCELED' && badgeStatus != 'SKIPPED')) && ( {errorMessage} } placement="top" > ) } ) } export default DeployStatus