Pricing

Pro

A responsive marketing pricing table. Named parts you assemble into plan cards: a name, a big tabular price, a feature checklist and a bottom-pinned call to action. Mark the recommended plan featured.

Starter

For individuals exploring the system.

$0/month
  • Up to 5 projects
  • Up to 3 team members
  • Community support
  • 1 GB storage
  • Core integrations
  • 7-day activity history
  • Custom domains
  • Advanced analytics
  • Audit logs
  • SSO & SAML

Pro

Most popular

For teams shipping in production.

$29/month
  • Unlimited projects
  • Unlimited team members
  • Priority support
  • 100 GB storage
  • Custom domains
  • Advanced analytics
  • Custom roles & permissions
  • API access
  • Audit logs

Enterprise

For organizations operating at scale.

Custom
  • Everything in Pro
  • SSO & SAML
  • SCIM provisioning
  • Dedicated manager
  • Custom contracts & invoicing
  • Onboarding & training
  • Custom data residency
  • 99.99% uptime SLA

Installation#

# One-time setup (tokens + lib helpers)npx koalaui-cli@latest init# Activate your Pro license (once per machine)npx koalaui-cli@latest login <key># Add this component (its dependencies come along)npx koalaui-cli@latest add pricing

Usage#

This example is part of Koala UI Pro

The preview is yours to explore. Its code comes with a Pro license, paid once and used in every project.

Have a license? Unlock it here

Anatomy#

import {  Pricing,  PricingTierBanner,  PricingTier,  PricingTierHeader,  PricingTierName,  PricingTierDescription,  PricingPrice,  PricingAmount,  PricingPeriod,  PricingFeatures,  PricingFeature,  PricingFeatureGroup,  PricingTierAction,} from "@/components/ui/pricing"<Pricing>  <PricingTierBanner label="…">    <PricingTier>      <PricingTierHeader>        <PricingTierName />        <PricingTierDescription />      </PricingTierHeader>      <PricingPrice>        <PricingAmount />        <PricingPeriod />      </PricingPrice>      <PricingFeatures>        <PricingFeature />      </PricingFeatures>      <PricingFeatureGroup label="…">        <PricingFeature icon={…} />      </PricingFeatureGroup>      <PricingTierAction>…</PricingTierAction>    </PricingTier>  </PricingTierBanner></Pricing>

Card styles#

The tone prop on PricingTier sets the card's surface, and is orthogonal to featured (the recommended ring), so the two combine. default is the bare card (a transparent fill, so it blends with whatever it sits on, delineated by its border alone); outline swaps the hairline for an ink edge; solid fills the card with the accent and flips every part to inverse text and glyphs (pair it with a light CTA and a light badge); muted sits the card on a soft grey panel; dashed draws the bare card on a dashed contour, for an open-ended plan (a custom quote, a service) beside fixed-price tiers. The CTA's Button variant stays your choice.

Starter Plan

Most popular

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
tone="outline"Ink edge on the bare card

Starter Plan

Most popular

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
tone="solid"Accent fill; inverse text, glyphs, CTA and badge

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
tone="default"Transparent fill, blends with the page

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
tone="muted"Soft grey panel

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
tone="dashed"Dashed contour for an open-ended plan: a custom quote, a service

Wrap a tier in PricingTierBanner for the banner-behind treatment: the card nests inside a brand panel that peeks as a top label and a thin accent edge all around. It composes over any tone and, inside a grid, lines up with un-bannered neighbours.

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions
Get 40% off

Starter Plan

Most popular

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions

Action position#

actionPosition sets where the CTA sits. bottom (default) pins it to the card foot via mt-auto, so CTAs line up across cards no matter how long each list is. top lets it sit in flow right under the price, with the checklist below: place PricingTierAction accordingly in the markup.

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions

Starter Plan

A perfect starter package for those looking to refresh their space with expert guidance.

$49/month
  • Two design revisions
  • Email support throughout the project
  • Personalized color palette selection
  • Basic furniture arrangement tips
  • Mood board creation
  • Access to a curated list of decor recommendations
  • Personalized color palette and materials selection
  • Space planning and layout suggestions

Feature states#

Every PricingFeature is one of three states. Included rows (the default) get a filled success check. Mark a row included={false} for a filled cross and a dimmed label, so a single list reads as have vs. have-not. Add a hint to either to append an info glyph whose tooltip carries the caveat or limit, keeping the label terse.

Pro

One list, every feature state.

  • Unlimited projects
  • Unlimited team members
  • 100 GB storage
  • Priority support
  • Advanced analytics
  • Audit logs
  • SSO & SAML
  • Dedicated manager

Features with icons#

For a lifetime or all-in bundle, the value isn't a have vs. have-not checklist, it's a long, categorised inventory. Swap the flat PricingFeatures for stacked PricingFeatureGroup sections: each is a centered Divider header (with an optional icon) over its own list, and every PricingFeature carries a contextual icon that reads neutral (the success-check tint stays reserved for the default checklist). The rows sit at full text strength because the icon, not a dimmed weight, marks the line, and any row can wrap a link. Here the CTA floats under the price with actionPosition="top" so the inventory reads beneath it.

Lifetime

Best value

One payment. Every Koala UI asset, yours forever.

$199once · no subscription
  • Up to 1 designer
  • Access to 210+ Marketing Sections
  • Access to 30+ Dashboard / SaaS Templates
  • 110+ Styles
  • Free lifetime updates
  • 4 Themes Available
  • Auto Layout 5.0
  • 4 Styles & Modes
  • Access to 5000+ Components
  • Koala University

Size#

size sets a tier's type scale. md (default) is the compact card for a docs page, a dialog or a three-up row. lg is the landing-page scale, where a long categorised inventory is read at body size: 16px rows, a 48px price, a 20px name and a readable group label. The name, price, rows and group labels step together, so the card keeps its hierarchy at either size.

size="md"

Lifetime

Get full access.

$199once
  • Desktop · Marketing & Product Apps
  • Product Application
  • Exclusive access to Discord Server

size="lg"

Lifetime

Get full access.

$199once
  • Desktop · Marketing & Product Apps
  • Product Application
  • Exclusive access to Discord Server

Billing cycle#

The component is stateless: you own the prices, so a billing toggle is a few lines of state that swap the PricingAmount and PricingPeriod. Because the amount is tabular-nums, the digits change without the row reflowing. Here a Tabs control drives a columns={2} table, and a small RollingAmount cross-fades and rolls the price so the swap reads as smooth instead of a snap.

Pro

Most popular

For teams shipping in production.

$29/month
  • Unlimited projects
  • Priority support
  • 100 GB storage
  • Custom domains
  • Advanced analytics
  • Unlimited team members

Business

For scaling organizations.

$59/month
  • Everything in Pro
  • SSO & SAML
  • Dedicated manager
  • Audit logs
  • 99.9% uptime SLA
  • Custom contracts

Build your plan#

Because the component is stateless, the price is just a number you own, so you can drive it from anything, including a set of add-on checkboxes. Tick a box and the total counts up to the new figure instead of snapping: a small useCountUp hook tweens it on requestAnimationFrame (interruptible, and it collapses to an instant settle under prefers-reduced-motion). Each add-on is a full-row label so the whole row is the hit target; the selected row keeps a transparent background, with the brand-coloured price keying off the checkbox's data-state via group-has, so there's no extra state to thread.

Build your plan

Start with the essentials and add only what you need.

$19/month

Add-ons

API reference#

Pricing

The grid of tiers. Forwards native <div> props. Every part accepts className, merged last.

PropTypeDefaultDescription
columns2 | 3 | 43Tiers per row at lg; below that the grid falls to two columns, then one.

PricingTier

One plan card; it owns its tone and shares it with its parts. Forwards native <div> props.

PropTypeDefaultDescription
tone"default" | "outline" | "solid" | "muted" | "dashed""default"Transparent, an ink edge, a brand fill with inverse parts, a grey panel, or a dashed edge.
featuredbooleanfalseAnchors the recommended plan with an ink edge; independent of tone.
actionPosition"bottom" | "top""bottom"bottom pins the CTA so buttons line up across cards; top floats it under the price.
size"md" | "lg""md"lg is the landing-page type scale.
asChildbooleanfalseRenders the child (an <a>) as the card, so the whole tier is one link.
Data attributeDescription
data-featuredPresent when featured.
data-toneThe tier's tone, when set.

PricingTierHeader

The name and description block. Drop a Badge beside the name to label a plan. Forwards native <div> props.

PricingTierName

The plan name, a balanced <h3>.

PricingTierDescription

The muted line under the name, a <p>.

PricingPrice

The baseline-aligned price row. Forwards native <div> props.

PricingAmount

The headline figure in tabular-nums, so switching plans never shifts the layout. Text works too, e.g. Custom. Renders a <span>.

PricingPeriod

The muted suffix, e.g. /month. Renders a <span>.

PricingFeatures

The checklist, a <ul>.

PricingFeature

One row, an <li>, with its own leading glyph.

PropTypeDefaultDescription
includedbooleantrueA success check; false dims the row and shows a neutral minus.
iconReact.ReactNode-Replaces the leading glyph.
hintReact.ReactNode-Appends an info glyph whose tooltip carries the detail on hover or focus.
hintLabelstring"More information"The info glyph's accessible label.
Data attributeDescription
data-includedPresent when the feature is included.

PricingFeatureGroup

A labelled section of PricingFeature rows under a centred Divider header, for a long, categorised inventory. Rows read at full strength with neutral icons. Forwards native <div> props.

PropTypeDefaultDescription
labelReact.ReactNode-The header label, e.g. What's inside. Omit for a bare list.
iconReact.ReactNode-A glyph beside the label.

PricingTierAction

The CTA band; its direct child stretches to the card's width. Forwards native <div> props.

PropTypeDefaultDescription
size"sm" | "md" | "lg" | "xl""md"Button size imposed on the CTA, the house 36px by default. The Button's own size wins.
Data attributeDescription
data-control-sizeThe imposed size.

PricingTierBanner

Wraps a PricingTier in a brand panel that peeks as a top label and a thin edge. Works over any tone and stretches to the row in a grid. Forwards native <div> props.

PropTypeDefaultDescription
label*React.ReactNode-The banner's text, e.g. Get 40% off.

FAQ#

Pass `featured` to its PricingTier for the ink edge, drop a `<Badge variant="orange" dot pill>Most popular</Badge>` next to the name in the header, and use a primary Button in its PricingTierAction while the other tiers use `variant="outline"`.