Skip to content

feat(pricing): implement pricing comparison table UI - #599

Merged
Tybravo merged 3 commits into
Tybravo:mainfrom
Deb-Auth:feat/397-pricing-comparison-table
Aug 31, 2026
Merged

feat(pricing): implement pricing comparison table UI#599
Tybravo merged 3 commits into
Tybravo:mainfrom
Deb-Auth:feat/397-pricing-comparison-table

Conversation

@Deb-Auth

Copy link
Copy Markdown

Summary

Implements the detailed feature comparison table for the pricing page. Visitors can now compare every capability across the four tiers in one place instead of cross-referencing the individual plan cards.

closes #397

What was added

frontend/app/pricing/components/PricingTable.tsx

  • A PricingTable component rendering a four-column comparison table (Free, Personal, Business, Enterprise).
  • Features are mapped to their respective tiers through a typed data model:
    • PricingTierColumn describes a plan column (name, price label, popular flag, CTA).
    • PricingFeature.values is a Record<PricingTierId, PricingFeatureValue>, so TypeScript enforces that every feature declares a value for every tier and the table can never go ragged.
    • A value is either a boolean (renders an availability icon) or a string (renders a quota/limit such as "Unlimited", "Testnet", "10").
  • Features are grouped into five sections that mirror the product surface: Verification, Certificates, Collaboration, Developer and Support. Feature values were derived from the tier feature lists already declared on the pricing page so the table and the cards stay consistent.
  • Tier columns and feature groups are exported (PRICING_TIER_COLUMNS, PRICING_FEATURE_GROUPS) and can be overridden through props, which keeps the component reusable and testable.

frontend/app/pricing/page.tsx

  • Renders the table between the plan cards and the FAQ section.

Design and accessibility notes

  • Semantic table markup: <caption> (screen-reader only), scope="col" on tier headers, scope="row" on feature headers, and scope="colgroup" on group separator rows.
  • Boolean cells pair an aria-hidden icon with an "Included" / "Not included" screen-reader label, so the table is not conveyed through iconography alone.
  • The container scrolls horizontally on narrow viewports while the feature column and the tier header stay pinned, so the row context is never lost.
  • The "Personal" column carries the same "Most Popular" highlight used by the pricing cards.
  • Styling follows the existing pricing page conventions (Tailwind, primary/darkblue theme tokens, light and dark mode).

Tests

Added frontend/app/pricing/components/__tests__/PricingTable.test.tsx covering:

  • a column header renders for every tier;
  • every feature group and feature row renders;
  • each feature maps to the correct per-tier value, for both string and boolean cells;
  • the popular tier badge renders;
  • each tier renders a CTA link pointing at the right destination.
Test Suites: 1 passed, 1 total
Tests:       5 passed, 5 total

pnpm --filter web run lint reports no new errors or warnings from these files.

Add a PricingTable component that maps every StellarProof capability to the
Free, Personal, Business and Enterprise tiers, grouped by Verification,
Certificates, Collaboration, Developer and Support.

- Boolean cells render an availability icon with a screen-reader label,
  while quota/limit cells render their text value.
- The table uses semantic table markup (caption, scope, colgroup headers)
  and scrolls horizontally on narrow viewports with the feature column
  pinned to the left edge.
- Tier columns and feature groups are exported and overridable via props.
- Rendered on the pricing page between the plan cards and the FAQ.
@drips-wave

drips-wave Bot commented Aug 30, 2026

Copy link
Copy Markdown

@Deb-Auth Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Tybravo
Tybravo merged commit 4ca351a into Tybravo:main Aug 31, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Frontend] [Feature] Implement Pricing Comparison Table UI

2 participants