
Built a scalable, mobile-first pricing table for packages, bonuses, and retail pricing that marketing can reuse across product types.
| What's included | Package 1$797Value: $2,288 | Package 2$997Value: $2,688 | Best valuePackage 3$1,197Value: $3,088 |
|---|---|---|---|
| Feature 1 | |||
| Feature 2 | |||
| ★ BonusFeature 3 | |||
| ★ BonusFeature 4 | |||
| Feature 5 | |||
| Feature 6 | |||
Role: UI design + frontend implementation
Context: Buyers comparing packages on an offer page, on a desktop or a phone. Marketing needed one pricing table it could reuse across product types. I designed it and built it in HTML, CSS, and JavaScript.
A buyer comparing packages has to scan name, price, retail price, bonuses, and what is included, and still be able to do that on a phone.
The old module was three cards with the same build: a plan name, a small divider icon, the price, a Limited Time Offer badge, an Included list of checked features, and an orange Sign Up Now button. The two bonus items are only labeled in text. Recreated here with generic packages and prices.
Phone width (390px), same callouts.
The live module is built from the system this site ships from. Package headers, the Best Value pill, and the Buy Now button use that accent, those surfaces, and the shared button. A check and the bonus tag use the success color. An × uses the danger color. The patterns stay the package header, the bonus tag, the Best Value pill, the check or × row, and one action per package.
A new product fills in packages, bonuses, and prices. The table, the cards, and the breakpoint stay. Operators do not commission a new layout for each offer.
OfferTable takes the packages. Each package has a name, a price, a retail price, bonuses, and the features it includes. At 900px and wider the component renders a table. Below that it renders stacked cards. A new product is a new list of packages passed into the same component. The preview on this page uses this site system for type, color, surfaces, and the button.
The same three packages in the offer table at desktop width:
Phone width (390px), same callouts. Below 900px, the same list of packages renders as stacked cards.
Run a few moderated sessions with buyers on phones to check that comparing packages in the card view is as quick as in the table.
Skills demonstrated: Responsive design, frontend implementation, component design, marketing operations.