Shopware Design

Icons

Meteor icons follow a minimal, expressive style aligned with Shopware's product language. For technical usage, see the Icon component documentation.

Philosophy

Icons in Meteor are functional first. They exist to support actions, communicate state, and aid navigation. Not to decorate. Every icon in the kit serves a clear interface purpose.

The style is intentionally restrained: consistent stroke weights, unified corner radii, and optical sizing that keeps icons readable at small sizes. This restraint makes the set cohesive and ensures icons never compete with the content they support.

All icons

Common usages

These examples demonstrate typical icon usage in the Shopware Administration and other Shopware products that use Meteor, where each icon has a clearly defined meaning.

Dashboardtachometer
Homehome
Productsproducts
Product Variantsvariants
SKU / Barcodebarcode
Cross-sellingcrossselling
Ordersshopping-bag
Customersusers
Contentcontent
Marketingmegaphone
Extensionsplug
Settingscog
Sales Channelsstorefront
Shopping cartshopping-cart
Wishlistheart
Searchsearch
Filterfilter
Sortsort
Bulk editbulk-edit
Previeweye
Login/Signupsign-in
Logoutsign-out
Import/Exportdatabase
Download / Exportdownload
Upload / Importupload
Rule Builderrule
Flow Builderflow
Categoriessitemap
Mediaimage
Folderfolder
Documentsfile-text
Tagstag
Archivearchive
Datecalendar
Scheduled / Pendingclock
Historyhistory
Linklink
Payment methodscredit-card
Promotions / Discountsdiscount
Shippingtruck
Stock / Inventoryinventory
Warehousewarehouse
Analyticsanalytics
Usersuser
API Key / Credentialskey
Maintenancetools-alt
Server / Infrastructureserver
Shopware Plansplans
Shopware Nexusshopware-nexus
Shopware Paymentsshopware-payments
Shopware Intelligenceshopware-intelligence
Successcheck-circle
Errorexclamation-circle
Warningexclamation-triangle
Infoinfo-circle
Notificationsbell
Back / Previouschevron-left
Forward / Nextchevron-right
Open in new tabexternal-link
Add / Createplus
Editpencil-s
Removeminus
Deletetrash
Duplicateduplicate
Copycopy
Closetimes

Regular and solid variants

Most icons come in two variants. Use them consistently within similar contexts. Mixing variants arbitrarily inside the same control group creates visual inconsistency.

Regular is the default for standard interface actions and supporting UI. Use it for navigation, actions, and inline indicators.

Solid works better for very small sizes and for larger decorative or prominent icon placements where a heavier fill reads better.

Sizing

Meteor icons are designed for a small set of sizes. Staying within this set keeps the UI consistent across screens.

  • 24px: Standalone icons, empty states, prominent surfaces
  • 20px: Standard actions, headers, supporting icons in regular-density UI
  • 16px: Inline controls, field affordances, compact supporting UI
  • 14px or smaller: Dense UI only, where the icon is clearly secondary
Do
Use 24px, 20px, and 16px for the vast majority of icons. Reserve smaller sizes for genuinely dense UI.
Don't
Use arbitrary sizes. The common size set keeps the interface visually consistent.

Color

Always use semantic icon tokens so they adapt correctly to light and dark themes and to interactive states.

  • --color-icon-primary-default for the standard icon color
  • --color-icon-secondary-default when the icon should attract less attention than surrounding content
  • Semantic variants such as brand, attention, critical, positive, or accent when the icon color carries a contextual meaning

See the Tokens page for the full list of available icon color tokens.

Do
Use icon color tokens so icons respond to theme changes and state transitions automatically.
Don't
Hardcode hex values for icon color. They will break in dark mode and won't reflect interactive states.

Icons and meaning

Icons rarely stand alone. Pair them with a visible label or place them inside a control that already communicates its purpose. When an icon does carry meaning on its own (a close button, a status indicator), make sure that meaning is also available through visible text or an accessible label on the parent control.

Do
Support icons with nearby text or an existing control label.
Don't
Rely on an icon alone to communicate a critical action or state. Color and shape alone are not sufficient.

Adding icons to the kit

New icons require sign-off from both design and engineering before they are added. The process ensures every new icon is genuinely needed, fits the visual style, and arrives in the codebase ready to use.

Starting the work

New icons always start in Figma. The designer draws the icon and adds it to the Meteor icon library file before any code is written. This keeps the source of truth in design and makes the review step natural: reviewers can see the icon in context alongside the rest of the set.

Open the discussion early by sharing the Figma frame in the Meteor Slack channel, leaving a comment on the icon library file, or opening a GitHub issue. Early visibility prevents duplicate work and gives engineering a chance to flag any technical constraints before design is finalized.

What to cover in the proposal

  • What the icon represents and the interface contexts where it will appear
  • Whether a regular variant, a solid variant, or both are needed
  • Whether an existing icon could cover the need with a different usage convention

Naming

Icons follow the regular-name and solid-name prefix convention. The name after the prefix should describe what the icon depicts, not where it is used. Keep names short, lowercase, and hyphenated.

Review and sign-off

Both the design team and the Meteor engineering team review the proposal. The review checks that the new icon is consistent with the existing visual style, that it is not a duplicate of something already in the kit, and that the name follows the naming convention.

From Figma to code

Once approved, the icon lives in the Figma library. From there a custom sync script exports the icon assets and packages them into the icon kit. The Meteor team owns the PR that lands the icon in the codebase and publishes it in the next release.