import type { AccessCode } from '@seamapi/types/connect'
import { CheckIcon } from 'lib/icons/Check.js'
import { ExclamationCircleOutlineIcon } from 'lib/icons/ExclamationCircleOutline.js'
import { TableFilterBar } from 'lib/ui/Table/TableFilterBar/TableFilterBar.js'
import { TableFilterItem } from 'lib/ui/Table/TableFilterBar/TableFilterItem.js'
export type AccessCodeFilter = 'access_code_issues'
interface AccessCodeHealthBarProps {
accessCodes: AccessCode[]
errorFilter: (error: AccessCode['errors'][number]) => boolean
warningFilter: (warning: AccessCode['warnings'][number]) => boolean
filter: AccessCodeFilter | null
onFilterSelect: (filter: AccessCodeFilter | null) => void
}
export function AccessCodeHealthBar({
accessCodes,
errorFilter,
warningFilter,
filter,
onFilterSelect,
}: AccessCodeHealthBarProps): JSX.Element {
const codesWithIssues = accessCodes.filter(
({ errors, warnings }) =>
errors.filter(errorFilter).length > 0 ||
warnings.filter(warningFilter).length > 0
)
const issueCount = codesWithIssues.length
const toggle = (target: AccessCodeFilter) => () => {
const newFilter = target === filter ? null : target
onFilterSelect(newFilter)
}
const isPlural = issueCount === 0 || issueCount > 1
const label = isPlural
? `${issueCount} ${t.accessCodeIssues}`
: `${issueCount} ${t.accessCodeIssue}`
if (issueCount === 0) {
return (
{t.accessCodesOk}
)
}
return (
{
onFilterSelect(null)
}}
>
{label}
)
}
const t = {
accessCodesOk: 'Access codes OK',
accessCodeIssue: 'access code issue',
accessCodeIssues: 'access code issues',
}