Skip to content

Administration component API

All components forward unclaimed attributes to their root or primary native control. Props below are in addition to standard Vue attributes and slots.

Foundation

Component Main props Events and slots
jetpack-button variant, size, type, disabled, loading, block, square, href, to, target click; default, icon-front, icon-back
jetpack-icon name, size, decorative, label
jetpack-link href, to, target, disabled default
jetpack-loader size, label

Button variants are primary, secondary, tertiary, and critical. Sizes are small, default, and large. to renders a router link, href renders an anchor, and otherwise a native button is used.

Fields

Text, number, password, email, URL, textarea, select, search select, multi-select, entity select, entity multi-select, datepicker, and color picker share modelValue, id, label, helpText, error, disabled, and required. Text-like fields also accept placeholder and readonly where meaningful.

Component Additional props Value/event behavior
jetpack-number-field min, max, step Emits number \| null
jetpack-textarea rows Emits string
jetpack-select options, placeholder Emits the selected option's typed value
jetpack-search-select options, placeholder, searchPlaceholder, emptyText Emits a scalar and search
jetpack-multi-select same as search select Emits an array
jetpack-entity-select entity, criteria, labelProperty, emptyText, loadingText Loads DAL entities; emits load-error
jetpack-entity-multi-select entity, criteria, context, labelProperty, emptyText, loadingText, searchPlaceholder Updates a Shopware entity collection; emits change and load-error
jetpack-datepicker min, max Emits an ISO date string from the native date control
jetpack-color-picker Emits a CSS hex color string
jetpack-rich-text-editor common field props Emits HTML through update:modelValue and change

Options use this shape:

type JetpackOption = {
    value: string | number | boolean | null;
    label: string;
    disabled?: boolean;
    description?: string;
};

jetpack-checkbox and jetpack-switch accept modelValue, label, helpText, disabled, and required; they emit update:modelValue and change with a boolean.

jetpack-inheritance-control accepts inherited, label, inheritLabel, overwriteLabel, and disabled. Use v-model:inherited; its default slot receives { inherited }.

jetpack-entity-multi-select requires a mutable Shopware entity collection as modelValue, not an array of IDs. It preserves loaded entity instances, searches the first 25 matching records by default, and emits the synchronized collection through update:modelValue and change.

Layout, feedback, and navigation

Component Main props Events and slots
jetpack-card title, subtitle, compact default, header, actions, footer
jetpack-grid columns (1–4), gap, align, tag default
jetpack-stack direction, gap, align, tag default
jetpack-empty-state title, description, icon default actions, icon
jetpack-banner variant, title, message, dismissible dismiss; default, actions
jetpack-badge variant, size default
jetpack-progress value, label, showValue, indeterminate
jetpack-skeleton variant, size
jetpack-tabs modelValue, tabs, ariaLabel update:modelValue, change; default receives activeTab
jetpack-pagination modelValue, total, limit, ariaLabel update:modelValue, change

Tab items use { name, label, disabled?, error?, badge? }.

Overlays and menus

Component Main props Events and slots
jetpack-modal modelValue, title, size, closeOnBackdrop, closeOnEscape update:modelValue, close; default, header, footer
jetpack-tooltip text, position default trigger
jetpack-popover modelValue, position, closeOnOutside update:modelValue, open, close; trigger receives { open, toggle }, default
jetpack-action-menu / jetpack-context-menu items, ariaLabel, position select; trigger receives { open, toggle }

Menu items use { id, label, disabled?, critical?, icon? }.

Tables and charts

jetpack-data-table accepts items, columns, itemKey, selectable, modelValue, loading, emptyText, sortBy, and sortDirection. It emits update:modelValue, selection-change, sort-change, and row-click. A cell can be customized with #column-<property>="{ item, value, column }"; row actions use #actions="{ item }".

Columns use { property, label, sortable?, align?, width? }. Dot-separated properties read nested values.

jetpack-entity-table adds entity, criteria, and limit, loads with the DAL repository factory, and emits load or load-error. Paging and sorting cause a new repository search.

jetpack-chart accepts points, type (bar or line), title, and ariaLabel. Points use { label, value }. The chart is rendered as accessible inline SVG without a chart dependency.

Media

Component Main props Events and slots
jetpack-avatar src, name, label, size
jetpack-media-preview src, mediaType, fileName, alt, caption, removable remove; caption
jetpack-media-upload accept, multiple, common field props, title, description update:modelValue, change

The upload value is a File for single selection and File[] for multiple selection. Uploading to Shopware's media API remains an application decision; the UI component owns selection and drag/drop, not persistence.