Sell by Measure
By Kavio Labs · Version 1.0.3Sell products by weight, length, area or volume with decimal quantities, unit prices, step/min/max and a live price on the product page.
- WooCommerce10.1 – 11.2
- WordPress6.7+
- HPOS and blocksYes
by Kavio Labs · for WooCommerce 10.1+ on WordPress 6.7+
Block theme for toy, kids and baby stores: a Shop by age panel and growth chart, a gift finder by age, interest and budget, pastel toy-box product cards with age chips and safety shields, a boxed small-parts warning and a Make it a gift set builder. Four styles, one-click demo content, full site editing.
Block theme for toy, kids and baby stores: a Shop by age panel and growth chart, a gift finder by age, interest and budget, pastel toy-box product cards with age chips and safety shields, a boxed small-parts warning and a Make it a gift set builder. Four styles, one-click demo content, full site editing.
WooCommerce 10.1 - 11.2, WordPress 6.7+
Kite is a block theme for toy, kids and baby stores. It is built for parents and gift givers who shop by age: a Shop by age panel and growth chart, a gift finder that works in the browser, pastel toy-box cards with age chips and safety shields, a boxed small-parts warning, a gift wrap line and a Make it a gift set builder. Typography is Fredoka and Nunito (self-hosted). The layout is a classic e-commerce store: top bar, search, category bar, hero with promo tiles, tiles, product rows and a footer.
Product Personalizer for WooCommerce (a child's name on a toy) and Make an Offer for WooCommerce (negotiated prices on gift sets and multi-buys). Both are separate Kavio Labs products; the theme does not depend on them and their fields and buttons are styled to fit.
Kite is GPL-2.0-or-later. In the own-site (Kavio Labs) edition a licence key unlocks updates, the demo importer, the colour swatches, the gift finder and the gift set button; templates, patterns, styles and your store keep working without it, and the admin is never blocked. The CodeCanyon edition uses a purchase code for updates and support only. The WooCommerce.com edition has no licence screen. See configuration.

WordPress 6.7+, WooCommerce 10.1+, PHP 7.4+.
| Element | Where it comes from |
|---|---|
| Brand line, Brands A-Z, Shop by brand | Products > Brands (WooCommerce product brands) |
| Shop by age, growth chart, age chips, gift finder | A global attribute Age (Products > Attributes) with the terms 0-12 months, 1-2 years, 3-4 years, 5-7 years, 8-11 years, 12+ years; the links use ?filter_age=<slug> |
| Gift finder interest list | A global attribute Interest with your own terms |
| Safety shield and chips | A product attribute named Safety, a comma separated list such as Safety tested, Non-toxic finishes |
| Small-parts warning box | A product attribute named Warning with the full text |
| Price per piece | A product attribute named Pieces with a number |
| Colour swatches | A variable product with a variation attribute named Colour (or Seat cushion); the swatch colour comes from the name (Mint, Blush, Coral, Teal, Navy and about 30 more) |
| Size chips | A variation attribute named Size |
| Sale end date on cards | The scheduled sale dates of the product or of its variations |
| Gift set builder | The products named in the pattern's class kv-dyn-set-<slug>_<slug>_<slug> (up to four simple products) |
Without this data those elements are simply not shown or fall back to normal WooCommerce behaviour.
The importer creates 29 product categories, eight brands, 62 products (17 variable, with prices, stock, attributes, images and 200 reviews), the global attributes Age and Interest, seven pages (Brands A-Z, Gift finder, Shop by age, About, Delivery and returns, Safety and age guide, Contact) and four posts in the category Play ideas. Everything it creates is tagged, so Remove demo content deletes exactly those items (and the attributes it created) and nothing else. Running the import again updates the items instead of duplicating them. The first run creates the attributes and continues in a second request automatically.
Command line: wp kv-kite demo import, wp kv-kite demo remove, wp kv-kite demo status.
Upload the new zip over the old one (WordPress asks to replace the theme). Your template edits made in the Site Editor are stored in the database and are kept.
Switch to another theme and delete Kite. If you imported the demo content, remove it first (Appearance > Kite).
| Section | What it does |
|---|---|
| Licence (own-site and CodeCanyon editions) | Enter the licence key or purchase code. The check runs from the admin once a day and sends the site address and the key to kaviolabs.com; nothing about customers, visitors or orders. |
| Demo content | Import, update or remove the sample store. |
| Without a valid licence | Still works |
|---|---|
| Colour swatches (the normal select is shown), the gift finder form and the Add gift set to cart button | All templates, patterns, styles and the Site Editor |
| Demo importer | Cart, Checkout, orders and every store setting |
| Updates | The admin (never blocked) |
A new installation has a 14-day start period; if the licence server cannot be reached, a 14-day grace period applies. Development hosts (localhost, .test, private addresses) are always accepted. The CodeCanyon edition never locks features: the purchase code only enables updates and support. The WooCommerce.com edition has no licence screen and sends nothing.
The theme exposes its shape as custom values in theme.json: custom.radius, radiusSm, radiusBtn, heading.weight, heading.stretch, heading.tracking, card.border, card.shadowHover, pill.bg and pill.ink (the category bar buttons), well.1 to well.6 (the pastel card wells) and chip.1 to chip.6 with chip.ink-1 to chip.ink-6 (age chips, badges and the warning box). A child theme or a style variation can override them together with the colour palette.
The home page template (front-page) is a list of patterns. In Appearance > Editor > Templates > Front Page click a section to change its text, photos, links or products, or drag sections to reorder them. The same sections are in the block inserter under Kite sections so you can use them on any page.
| Section | Notes |
|---|---|
| Hero with promo tiles | A campaign banner with two buttons and two promo tiles. Replace the pictures and text. |
| Promise strip, Safety promise | Short promises and safety badges with icons. |
| Shop by age | Six age tiles with product counts that open the shop filtered by the Age attribute. |
| Shop by interest | Eight category tiles on pastel wells; replace the pictures and links with your categories. |
| New arrivals, Best sellers, Offers | Product collection blocks (newest, popularity, on sale). The offers band shows the end date of each sale. |
| Gift finder | Age, interest and budget selects; the matching gifts appear instantly without a page load. |
| Age growth chart | Growing bars, one per age step, each linking to its age filter. |
| Gift set builder | Three toys with checkboxes, a running total and Add gift set to cart. |
| Shop by brand, Play ideas, Reviews, Gift wrap line | Brands from Products > Brands, latest posts, three quotes and a call to action. |
Shop by age, Age growth chart, Gift finder, Gift set builder and Brands are filled by the theme on the front end from store data: in the editor they show as an empty group with a marker class (kv-dyn-age, kv-dyn-growth, kv-dyn-giftfinder, kv-dyn-giftset, kv-dyn-brands). The Safety badges pattern (kv-dyn-safety) sits in the single product template.
The header navigation is a Navigation block. Its first item is Shop by age, then the categories with drop-down menus. Edit it in Appearance > Editor > Patterns > Header. Item links point to the demo categories (/product-category/<slug>/); change them to match your own.
Open Appearance > Editor > Styles > Browse styles and pick Playroom, Nursery, Woodland or Bedtime. Colours, the six well tones, corner radius and the heading weight change everywhere, including the Cart and Checkout blocks.



The age chip and the safety chips are built from the Age and Safety attributes; a Warning attribute becomes a boxed notice above the add to cart button. Kite does not make toys safe: the text is whatever you enter, so only list claims you can prove. The gift wrap line under the button is plain text in the Product perks pattern; to make gift wrap a real service, mention it in the order note or add a gift wrap product or fee with a plugin.
A name field from Product Personalizer for WooCommerce appears in the product summary and the Make an Offer button sits under the Add to cart button. Both inherit the colours and shapes of the active style.
The block inserter has page patterns under Kite store pages: Brands A-Z, Gift finder, Shop by age, About us, Delivery and returns, Safety and age guide.

kv_kite_ / KavioLabs\Kite / KV_KITE_; text domain kv-kite.Catalog filters woocommerce_dropdown_variation_attribute_options_html (swatches next to the select), render_block_woocommerce/product-price (age chip, shield and warning mark above the price on cards, colour dots, price per piece and the sale end date below it) and render_block_woocommerce/product-image (New, Eco and Only N left badges). Swatch colours: Catalog::COLOURS; age steps: Catalog::AGE_STEPS.Blocks filters render_block_core/group: an empty Group with the class kv-dyn-brands (options kv-dyn-az, kv-dyn-limit-8), kv-dyn-age, kv-dyn-growth, kv-dyn-giftfinder, kv-dyn-giftset (option kv-dyn-set-<slug>_<slug>) or kv-dyn-safety is filled from store data. A theme cannot register blocks or shortcodes (Theme Check), hence the marker classes. The gift finder script (assets/js/theme.js) filters a JSON list printed in a data attribute; it builds the result cards with DOM calls, never with innerHTML.tests/gen-patterns.js, theme.json and the three style files by tests/gen-theme-json.js (one palette table), and the demo pack by tests/demo/build-pack.js (from the shared Skylark Toys & Baby pack of the other platforms). Edit the generators, not the output.tests/contrast.js checks every palette pair used by the theme against WCAG AA for all four styles.wp transient delete --all.node tooling/kv.js theme-validate woo_theme_kite --platform woocommerce
node tooling/kv.js theme-lint woo_theme_kite --platform woocommerce
node tooling/kv.js theme-package woo_theme_kite --platform woocommerce # dist/woocommerce/kv-kite/<version>/ kv|envato|woo zips
node tooling/kv.js theme-deploy woo_theme_kite --platform woocommerce --sync --activate
node woocommerce/themes/woo_theme_kite/tests/contrast.js
node woocommerce/themes/woo_theme_kite/tests/e2e.js # home, shop, gift finder, swatches, block checkout order
Applying a style on a dev store from the command line: wp eval-file tests/variation.php nursery --user=admin (a user is needed, otherwise WordPress strips the global styles content).
Yes. Both are styled by the theme and nothing replaces them.
The theme never reads or writes orders, so it is neutral to High-Performance Order Storage.
10.1 to 11.2, on WordPress 6.7 or newer.
They need a global attribute called Age with the standard terms and products that use it (see Installation > Your own data). The demo content creates them.
Swatches need a variable product whose variation attribute is called Colour (or Seat cushion). In the own-site edition they also need an active licence or the start period.
No. The server lists up to 120 in-stock products once and your browser filters them. Out-of-stock products are not listed.
No. The Safety and Warning text is whatever you enter. Only publish claims you can prove and follow the toy safety rules of your country.
Yes, the templates and styles are general; the home sections are written for toy and baby stores and are all editable.
The product is English. Strings are translatable (text domain kv-kite, .pot file in languages/).
Only the own-site and CodeCanyon editions, once a day from the admin, to check the licence. The WooCommerce.com edition makes no external request.
No. The demo uses generated illustrations of fictional brands.
More for WooCommerce
Sell products by weight, length, area or volume with decimal quantities, unit prices, step/min/max and a live price on the product page.
Year/make/model parts search for WooCommerce: fitment table per product, CSV import, My Garage, fits / does not fit badge and vehicle-filtered shop and search pages.
EN 16931 e-invoices and credit notes from WooCommerce orders: XRechnung (CII/UBL), ZUGFeRD/Factur-X PDF/A-3 and Peppol BIS 3.0 UBL, gapless numbering, B2B checkout fields, validation, e-mail attachments, My Account downloads and ZIP export.