diff --git a/src/components/organisms/ComparisonTable/ComparisonTable.stories.tsx b/src/components/organisms/ComparisonTable/ComparisonTable.stories.tsx index b78ba6b..9576c75 100644 --- a/src/components/organisms/ComparisonTable/ComparisonTable.stories.tsx +++ b/src/components/organisms/ComparisonTable/ComparisonTable.stories.tsx @@ -346,7 +346,7 @@ export const MixedVerified: Story = { // --- Missing Itemised Data --------------------------------------------------- -/** One provider has no itemised breakdown — cells show "—" */ +/** One provider has no itemised breakdown — unverified cells show "Unknown" */ export const MissingData: Story = { args: { packages: [pkgWollongong, pkgNoItemised, pkgMackay], diff --git a/src/components/organisms/ComparisonTable/ComparisonTable.tsx b/src/components/organisms/ComparisonTable/ComparisonTable.tsx index 658022d..bb629b0 100644 --- a/src/components/organisms/ComparisonTable/ComparisonTable.tsx +++ b/src/components/organisms/ComparisonTable/ComparisonTable.tsx @@ -226,11 +226,20 @@ function lookupValue( sectionHeading: string, itemName: string, ): ComparisonCellValue { - if (pkg.itemizedAvailable === false) return { type: 'unavailable' }; + // For unverified providers, absence means "we don't know" — data is + // scraped/estimated. For verified providers, absence means the package + // explicitly doesn't include this item (→ "Not Included" in Optionals/ + // Extras; em-dash in Essentials as a safety net — canonical-essentials + // rule says every verified package has all 9, so this path shouldn't + // fire in practice). + const missing: ComparisonCellValue = pkg.provider.verified + ? { type: 'unavailable' } + : { type: 'unknown' }; + if (pkg.itemizedAvailable === false) return missing; const section = pkg.sections.find((s) => s.heading === sectionHeading); - if (!section) return { type: 'unavailable' }; + if (!section) return missing; const item = section.items.find((i) => i.name === itemName); - if (!item) return { type: 'unavailable' }; + if (!item) return missing; return item.value; } @@ -493,13 +502,6 @@ export const ComparisonTable = React.forwardRef ))} - - {packages.some((p) => p.itemizedAvailable === false) && mergedSections.length > 0 && ( - - * Some providers have not provided an itemised pricing breakdown. Their items are shown - as "—" above. - - )} ); },