Measured entry
hextaui-billing-upgrade-prompt
A client-side React and TypeScript upgrade prompt that presents plan pricing, savings, feature highlights, dismissal, and upgrade actions. It ships as a shadcn registry block and imports local Badge, Button, Card, Separator, and cn utilities, with Tailwind styling and Lucide icons.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | flagged at 375 |
| Axe critical | 1 |
| Axe serious | 0 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 35.2 KB (100.7 KB build, 65.5 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 936ms error during build: [vite]: Rollup failed to resolve import "lucide-react" from "<sandbox>re-543259eda7f2/src/cut/blocks/billing/billing-upgrade-prompt.tsx".
Verdict
A useful starting point for an existing shadcn-style app, with sensible callbacks and content slots. It is not ready unchanged: it needs a shadcn-style setup, clips at the narrow viewport, and has a critical ARIA issue. Fix those before using it in a billing path.
Use it if
- Your product already uses shadcn-style primitives and needs an inline plan upsell card or banner.
- You want controlled plan copy, feature rows, savings messaging, dismissal, and an upgrade loading state in one component.
- Your team can correct the narrow-screen layout and audit the reported ARIA attributes before release.
Skip it if
- Your checkout or account flow must work on narrow screens without horizontal clipping.
- You need a component that passes accessibility checks without modification, since rendered nodes use unsupported ARIA attributes.
- You need a true modal with dialog semantics, focus management, and an overlay; the modal option renders the same card structure.
- Your project is headless or does not want to adopt shadcn-style local primitives and Tailwind theme conventions.
Install
| Declared dependencies | @radix-ui/react-slot, @radix-ui/react-separator, clsx, tailwind-merge |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
In a non-shadcn project, add compatible Badge, Button, Card, and Separator components, a cn class-merging utility, Tailwind theme tokens, Lucide React icons, and the Radix, clsx, and tailwind-merge packages used by those primitives. Remap the alias imports to local paths.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/preetsuthar17/HextaUIAlternatives
Other published entries for the feature-grid pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- hyperui-feature-grids-3editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 17.7KB
- Bare
- pass
- Prov
- NO
- hyperui-feature-grids-1editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 17.9KB
- Bare
- pass
- Prov
- NO
- hyperui-feature-grids-4editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 17.9KB
- Bare
- pass
- Prov
- NO
- hyperui-feature-grids-2editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 18.3KB
- Bare
- pass
- Prov
- NO
- meraki-feature-grid-list-with-imageminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 18.5KB
- Bare
- pass
- Prov
- NO
- meraki-feature-simpleminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 20.2KB
- Bare
- pass
- Prov
- NO