Block catalog

The block bundles a theme inherits from @revenexx/cover-theme, grouped by area — around ninety in total, so you know what already exists before you write a new one.

@revenexx/cover-theme ships around ninety block bundles. Before you write a block, check whether one already exists: extending a bundled block is usually less work than building and maintaining a new one, and it inherits the editor affordances already tuned for it.

Naming is snake_case throughout, and each bundle lives at app/components/blokkli/<bundle>/index.vue.

This is the inventory of the reference theme at the version you're building against. theme.json#blokkli.blocks[] in the layer is the authoritative list for your version, and the editor's block picker is the authoritative list for a given tenant — a block gated behind requiresCapability only appears where the capability is available.

Standalone content blocks

The editorial building blocks. These are the ones an editor drops on any page.

BundleWhat it renders
heroFull-width hero banner with headline, subline, and a call to action
marketing_bannerFull-bleed promotional banner
textRich text
titleA standalone heading
title_descriptionA heading with supporting copy
imageA single image
modelAn interactive 3D model
ctaCall-to-action button or link
badgeSmall inline label with an optional icon
icon_labelAn icon paired with a label
back_linkA back-navigation link
accordionAccordion container
accordion_itemOne accordion entry
formRenders a form built in Cockpit — see Forms

Layout containers

Containers hold other blocks. Each is a shell with a field.

BundleWhat it renders
content_sectionA page section that hosts other blocks
rowA horizontal row of columns
columnOne column within a row, width set by the shared colSpan option

Product

Ten bundles, split between listing widgets and the product-detail shell's widgets.

BundleWhat it renders
product_gridProducts in a responsive grid
product_swiperProducts in a horizontal carousel
product_detailThe product-detail page shell
product_identityName, brand, SKU
product_galleryImage and media gallery
product_pricePrice, resolved as a deferred offer
product_pricingTiered and contract pricing
product_stockAvailability
product_specificationsThe specification table
product_descriptionLong description
product_add_to_cartQuantity input and add-to-cart action

product_price and product_stock are worth understanding before you replace them: they read the batched offer cache rather than fetching per card, which is what keeps a grid of forty products from firing forty price requests. See Customize blocks.

Category and listing

BundleWhat it renders
categoryThe category page shell
category_gridCategories in a grid
listing_headerListing title and result count
listing_toolbarSort, view mode, page size
listing_filtersThe filter panel
listing_filters_barFilters as a horizontal bar
listing_active_filtersThe applied-filter chips
listing_resultsThe result set itself
listing_search_headerHeader for a search-result listing
searchThe search-results surface — see Search

Cart

A shell plus five widgets. The shell orchestrates recalculation; the widgets read shared state.

BundleWhat it renders
cartThe cart page shell
cart_headerCart title and top-level actions
cart_messagesValidation and availability messages
cart_positionsThe line items
cart_summaryTotals
cart_recommendationsCross-sell suggestions
cart_requisitionsRequisition context for approval-driven buying

Checkout and confirmation

BundleWhat it renders
checkoutThe checkout shell
checkout_addressAddress step
checkout_deliveryDelivery method step
checkout_paymentPayment step
checkout_notesOrder notes and references
checkout_summaryOrder summary and submit
checkout_workflowApproval-workflow step
checkout_confirmationThe confirmation page shell
confirmation_heroConfirmation headline
confirmation_recapWhat was ordered
confirmation_next_stepsWhat happens next
confirmation_actionsFollow-up actions

The checkout steps are schema-driven, so adding a customer-specific field is usually a schema change rather than a new block. See Catalog, cart and checkout.

Authentication

BundleWhat it renders
login_formSign in
register_formRegistration
forgot_password_formRequest a reset link
reset_password_formSet a new password

These are buyer identity, not admin identity. See Authentication.

Account

The largest family — twenty-six bundles covering the whole self-service area, including the B2B governance surfaces that a B2C template wouldn't have.

AreaBundles
Shell and chromeaccount, account_title
Dashboardaccount_dashboard_greeting, account_dashboard_kpis, account_dashboard_quick_actions, account_dashboard_recent_orders, account_dashboard_budgets, account_dashboard_requisitions
Ordersaccount_orders_table, account_orders_detail
Order listsaccount_order_list_table, account_order_list_detail
Saved cartsaccount_carts
Quick orderingaccount_direct_order
Requisitionsaccount_requisitions_table, account_requisitions_detail
Approvalsaccount_approvals
Workflowsaccount_workflows_table, account_workflows_detail
Cost centersaccount_cost_centers_table, account_cost_centers_detail
Organizationaccount_organization, account_team
Addressesaccount_addresses
Profileaccount_profile_form, account_password_form, account_preferences

If you're scoping a B2B project, this table is worth reading closely. Cost centers, requisitions, approvals, budgets and team management are frequently written up as bespoke work; they already exist.

Presets

The reference theme also ships starting arrangements an editor can drop in as a unit:

PresetBlocks
homemarketing_banner, content_section, product_swiper, text, product_grid
landinghero, text, image, cta
faqhero, accordion

How to use this list

Extend before you replace. Most "we need a different product card" requirements are an option or a wrapper away, not a new bundle.

Reuse the widget vocabulary. If you add a widget to a shell — a compliance notice in the cart, a delivery-window picker in checkout — follow the shell's conventions: read shared state, don't orchestrate, and name it after its shell.

Only add a bundle for something genuinely new. Ninety blocks is already a lot for an editor to navigate. A ninety-first that duplicates an existing one makes the picker worse for everyone.

Next steps

Was this page helpful?