Loading...
Loading...
Use when building ecommerce interfaces, product pages, shopping carts, checkout flows, order management, or store navigation with Tailwind CSS. Covers product cards, product lists, product detail pages, category filters, shopping cart, checkout forms, order summaries, order history, pricing displays, promo sections, reviews, ratings, store navigation, category previews, inventory badges, wishlist buttons, compare features.
npx skill4agent add peixotorms/odinlayer-skills tailwind-ecommerce| Variant | Key Classes | Use Case |
|---|---|---|
| Simple grid card | | Category pages, minimal listings |
| Card with details | | Product listings, search results |
| Horizontal card | | Cart items, wishlists, comparisons |
| Quick view overlay | | Browse-and-add flows |
| Featured card | | Homepage hero products |
| Concern | Pattern | Classes |
|---|---|---|
| Aspect ratio | Fixed ratio container | |
| Fill behavior | Cover without distortion | |
| Responsive sizing | Fluid width, fixed aspect | |
| Placeholder | Background color fallback | |
| Hover zoom | Scale on group hover | |
| Lazy loading | Native attribute | |
| Scenario | Pattern |
|---|---|
| Regular price | |
| Sale price | Original: |
| Price range | |
| Currency symbol | Keep symbol adjacent, no wrapping: |
| Element | Classes |
|---|---|
| Star icon (filled) | |
| Star icon (empty) | |
| Half star | Clip filled star at 50% with |
| Review count | |
| Container | |
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
<!-- Product cards -->
</div>| Layout | Classes | When to Use |
|---|---|---|
| Grid (default) | | Category pages, search results |
| Two-column wide | | Featured products, comparisons |
| List view | | Detail-heavy browsing |
| Masonry-style | | Visual-heavy catalogs |
| Pattern | Implementation |
|---|---|
| Skeleton card | |
| Skeleton image | |
| Skeleton text | |
| Load more button | |
| Pagination | |
| Infinite scroll | Intersection observer on sentinel div at grid end |
| Empty state | |
| Element | Classes |
|---|---|
| Panel container | |
| Filter group | |
| Group heading | |
| Checkbox + label | |
| Color swatch | |
| Price range | Two |
| Apply button | |
| Element | Classes |
|---|---|
| Trigger button | |
| Backdrop | |
| Panel | |
| Header | |
| Footer | |
| Element | Classes |
|---|---|
| Filter chip | |
| Remove button | |
| Clear all link | |
| Sort dropdown | |
| Result count | |
| Filter count badge | |
<div class="flex gap-4 py-4 border-b">
<img class="size-20 rounded-lg object-cover shrink-0" src="..." alt="..." />
<div class="flex flex-1 flex-col justify-between">
<div class="flex justify-between">
<div>
<h3 class="text-sm font-medium text-gray-900">Product Name</h3>
<p class="mt-1 text-sm text-gray-500">Color / Size</p>
</div>
<p class="text-sm font-medium text-gray-900">$49.99</p>
</div>
<div class="flex items-center justify-between">
<!-- Quantity selector -->
<div class="flex items-center rounded-lg border">
<button class="px-3 py-1 text-gray-600">-</button>
<span class="px-3 py-1 border-x text-sm">1</span>
<button class="px-3 py-1 text-gray-600">+</button>
</div>
<button class="text-sm text-red-600 hover:text-red-800">Remove</button>
</div>
</div>
</div>| Section | Classes | Content |
|---|---|---|
| Cart list | | Cart item rows |
| Summary panel | | Subtotal, shipping, tax, total |
| Summary row | | Label + amount |
| Total row | | Total label + amount |
| Checkout CTA | | "Proceed to Checkout" |
| Continue shopping | | Link back |
| State | Pattern |
|---|---|
| Empty cart | |
| Mini cart / drawer | |
| Cart badge | |
| Updating state | |
| Step State | Classes |
|---|---|
| Completed | |
| Current | |
| Upcoming | |
| Connector (done) | |
| Connector (pending) | |
| Container | |
| Section | Structure |
|---|---|
| Two-column layout | |
| Field group | |
| Two-field row | |
| Full-width field | |
| Label | |
| Input | |
| Error input | |
| Error message | |
| Element | Pattern |
|---|---|
| Card number | Full-width input with card icon right-aligned |
| Expiry + CVC | |
| Card group | |
| Saved cards | Radio group: |
| Security note | |
| Pattern | Implementation |
|---|---|
| Guest vs account | Toggle or tabs at top: |
| Order review | Summary card: item thumbnails, quantities, line totals in |
| Place order CTA | |
| Terms checkbox | |
| Loading on submit | Button with |
| Viewport | Pattern |
|---|---|
| Desktop | Standard |
| Mobile | Stacked cards: |
| Table header | |
| Table cell | |
| Status | Classes |
|---|---|
| Pending | |
| Processing | |
| Shipped | |
| Delivered | |
| Cancelled | |
| Refunded | |
| Section | Pattern |
|---|---|
| Status timeline | Vertical: |
| Timeline dot (done) | |
| Timeline dot (current) | |
| Timeline line | |
| Items list | Horizontal cards with image, name, qty, price |
| Totals section | Same pattern as cart summary |
| Shipping address | |
| Invoice layout | |
| Pattern | Implementation |
|---|---|
| Original + sale | |
| Save amount | |
| Per-unit price | |
<div class="relative">
<img class="aspect-[3/4] w-full rounded-lg object-cover" src="..." alt="..." />
<span class="absolute top-2 left-2 rounded-full bg-red-600 px-2.5 py-0.5 text-xs font-semibold text-white">
-50%
</span>
</div>| Element | Classes |
|---|---|
| Card container | |
| Featured card | |
| Price | |
| Period | |
| Feature list | |
| CTA button | |
| Pattern | Classes |
|---|---|
| Full-width banner | |
| Dismissable banner | Add |
| Trust icons row | |
| Trust icon item | |
| Coupon input | |
| Element | Classes |
|---|---|
| Header bar | |
| Inner layout | |
| Logo | |
| Search bar | |
| Icon group | |
| Cart icon + badge | |
| Element | Classes |
|---|---|
| Trigger | |
| Dropdown | |
| Inner grid | |
| Column heading | |
| Column links | |
| Featured image | |
| Element | Classes |
|---|---|
| Category card | |
| Category image | |
| Category overlay | |
| Category label | |
| Breadcrumb nav | |
| Breadcrumb separator | |
| Breadcrumb current | |
| Element | Requirement | Implementation |
|---|---|---|
| Product image | Descriptive alt text | |
| Decorative image | Skip for screen readers | |
| Sale price | Announce was/now | |
| Cart update | Announce change | |
| Cart count badge | Announce count | |
| Quantity selector | Label buttons | |
| Star rating | Text alternative | |
| Filter change | Announce results | |
| Form errors | Link to field | |
| Checkout steps | Current step | |
| Remove from cart | Confirm action | Identify item in label: |
| Sort dropdown | Label purpose | |
| Color swatch | Name the color | |
| Dialog filters | Trap focus | |
| Mistake | Fix |
|---|---|
| Fixed pixel image heights | Use |
| Cart with no empty state | Always handle zero items with illustration and CTA |
Price without | Currency and amount should not wrap to separate lines |
| Filter panel always visible on mobile | Hide with |
| No loading state during cart updates | Show |
| Checkout form in single column | Use |
| Status badges with only color | Add text labels; color alone fails WCAG |
Missing | Cart count and summary changes must announce to screen readers |
| Mega menu not keyboard-navigable | Ensure focus management and Escape key closes the menu |
| Discount badge over product text | Position badge on image ( |
frontend-componentshyperuidaisyuiflyonuisearch_components(query: "product", framework: "hyperui")search_components(query: "pricing")