Livewire UI Components 3.0 is rebuilt on the ArtisanPack UI design system. The components keep their purpose, and three things change underneath them: -...
Livewire UI Components 3.0 is rebuilt on the ArtisanPack UI design system. The components keep their purpose, and three things change underneath them:
- DaisyUI is gone. Components are styled by
@artisanpack-ui/css: plain CSS in cascade layers, driven by design tokens. Tailwind is optional.
- One API across Livewire, React and Vue. Some components and attributes were renamed to match. Most 2.x tags still render in 3.0 as deprecated aliases, so an app keeps working while you migrate, but the aliases go in the next major.
- Theming is tokens. The DaisyUI theme generator is replaced by presets built on the tokens.
php artisan artisanpack:upgrade-ui does the mechanical part. This guide covers that command and what is left for you.
How long the old version is supported
The previous major gets security fixes only for 12 months after the new one ships. No features or component fixes are backported. Each repository's SECURITY.md carries the end date from launch day.
The old and new majors can't be mixed in one app: the new CSS replaces DaisyUI, and the two style the same components differently. Upgrade a whole app at once, on a branch.
1. Update the package
Commit your work first, then:
composer require artisanpack-ui/livewire-ui-components:^3.0
2. Run the upgrade command
Preview the changes:
php artisan artisanpack:upgrade-ui --dry-run
The dry run prints a diff of every file it would change and writes nothing. Run it without --dry-run to apply them:
php artisan artisanpack:upgrade-ui
| Option |
What it does |
paths |
Files or directories to upgrade. Default: resources/views |
--dry-run |
Show the changes as a diff without writing |
--no-classes |
Leave raw DaisyUI classes out of the report |
--json |
Print the report as JSON. It writes without asking, so pair it with --dry-run to only report |
--force |
Write without asking. Required when the command can't ask, as in CI |
Views in a package or a module are not under resources/views, so pass them: php artisan artisanpack:upgrade-ui packages/billing/resources/views.
What it rewrites. Renamed components (<x-artisanpack-modal> to <x-artisanpack-dialog>), renamed attributes and slots, flags that became values (right to side="end"), per-part class attributes (merged into :classes), label on a self-closing button (moved into the slot) and tooltip attributes (the element is wrapped in <x-artisanpack-tooltip>). It reads values where the name alone isn't enough: on Button, variant="primary" becomes color="primary" and variant="ghost" stays.
What it reports and leaves alone. Each line of the report has the file, line and column:
| Label |
Meaning |
manual |
An attribute, slot or component with no automatic replacement. The message says what to do |
review |
A change that was made and deserves a look |
removed |
An attribute that was deleted because 3.0 has no equivalent |
class |
A raw DaisyUI class, theme variable or DaisyUI configuration. See step 3 |
What it never touches. Tags that other packages register under the same prefix, such as <x-artisanpack-ec-price>; Blade comments; @verbatim blocks; anything that isn't a Blade component tag. It does not edit PHP, so attributes built in a component class or passed through $attributes->merge() are yours to check: the command flags tags that build their attributes with Blade.
You can run the command again after you fix things by hand: migrated markup has nothing left for it to rewrite. Preview a second run with --dry-run all the same.
3. Remove DaisyUI and adopt the new CSS
Without a bundler
Publish the prebuilt assets and load them in your layout:
php artisan vendor:publish --tag=artisanpack-design-system-assets
<head>
@apuiThemeScript
@artisanpackStyles
</head>
<body>
…
@artisanpackScripts
@livewireScripts
</body>
@artisanpackScripts goes before Livewire's script: it registers the behavior engine with Alpine as Alpine starts. @apuiThemeScript applies the stored theme before first paint.
With Vite
npm install @artisanpack-ui/css @artisanpack-ui/behavior
npm uninstall daisyui
Without Tailwind, import the CSS in your entry stylesheet:
@import '@artisanpack-ui/css';
With Tailwind v4, declare the layer order first, so Preflight never restyles a component and a utility on a component still wins. The last import is optional: it adds utilities generated from the tokens (bg-surface-page, text-muted, rounded-control).
@layer theme, base, apui, components, utilities;
@import 'tailwindcss';
@import '@artisanpack-ui/css';
@import '@artisanpack-ui/css/tailwind';
Then delete @plugin "daisyui"; and any @plugin "daisyui/theme" block from your CSS, and register the behavior engine with Alpine:
import apuiBehavior from '@artisanpack-ui/behavior/alpine';
Alpine.plugin(apuiBehavior);
To bring your own styles, import @artisanpack-ui/css/headless instead: the same markup, ARIA and behavior with no component CSS.
Replace raw DaisyUI classes
Markup that used DaisyUI classes directly (btn, card, badge, bg-base-200) has no styles once DaisyUI is gone. The upgrade tool lists every one with its file and line and never rewrites them, because the right replacement depends on the element. For each:
| You have |
Use instead |
A component class: btn, badge, card, alert, tab, modal, tooltip, … |
The component. <a class="btn btn-primary"> is a Button with href. Where you need the bare markup, the apui- class and data attributes: class="apui-button" data-color="primary" |
A size or color modifier: btn-sm, badge-success, alert-warning |
The component's size and color props (data-size, data-color on bare markup) |
input, select, textarea, checkbox, toggle, label on native controls |
The form components, which draw the label, hint and error too |
bg-base-100 |
bg-surface-default with the Tailwind preset, or background: var(--apui-surface-default) |
bg-base-200 |
bg-surface-sunken · var(--apui-surface-sunken) |
bg-base-300, border-base-300 |
border-default · var(--apui-border-default); as a background, bg-surface-sunken |
text-base-content |
text-default · var(--apui-text-default) |
text-base-content/70, /60, /50 |
text-muted · var(--apui-text-muted). text-subtle for the faintest text. Opacity on text is gone: the tokens are checked for contrast, an opacity isn't |
text-primary-content, text-error-content, … |
The color's own foreground: text-primary-foreground, text-error-foreground · var(--apui-color-primary-foreground), var(--apui-color-error-foreground) |
bg-primary, text-error, border-success |
Unchanged with the Tailwind preset. Without Tailwind, the color's own token: var(--apui-color-primary), var(--apui-color-error), var(--apui-color-success) |
rounded-box, rounded-btn |
rounded-surface, rounded-control · var(--apui-radius-surface), var(--apui-radius-control) |
The tool marks names such as input, table, link and label as "may be": they are DaisyUI classes and also common class names of your own. Check each.
Left and right are logical now. Use ms-*, me-*, ps-*, pe-*, start-* and end-* next to components so layouts mirror in right-to-left languages.
4. Migrate your theme
php artisan artisanpack:generate-theme wrote Tailwind palettes and DaisyUI variables. It still runs in 3.0, deprecated, and its output has nothing to style. Use the preset generator instead:
php artisan artisanpack:generate-preset acme --primary="#7c3aed"
It writes resources/css/presets/acme.css and refuses to write a preset that fails WCAG 2.2 AA contrast in any theme. Import the file after @artisanpack-ui/css and switch it on with <html data-preset="acme">. --secondary, --accent, --neutral and the --font-* options set the rest of the brand; --format=php or json gives the values as data.
The 2.x theme builder page and its route are removed. The mary-theme storage keys, the class on <html> and the theme-changed events are gone too: the theme lives in data-theme, and ThemeToggle reports a change as value-change.
Repoint theme variables
DaisyUI's custom properties are gone, and nothing aliases them. The tool lists each reference:
| DaisyUI |
Token |
--color-base-100 |
--apui-surface-default |
--color-base-200 |
--apui-surface-sunken |
--color-base-300 |
--apui-border-default |
--color-base-content |
--apui-text-default |
--color-primary, --color-error, … |
--apui-color-primary, --apui-color-error, … |
--color-primary-content |
--apui-color-primary-foreground |
--radius-box |
--apui-radius-surface |
--radius-field |
--apui-radius-field |
--radius-selector |
--apui-radius-control |
var(--p), var(--b1), var(--bc) (DaisyUI 4) |
The same tokens as above |
--color-* is also a Tailwind theme namespace, so some of these may be yours and not DaisyUI's. The tool can't tell; you can.
Themes and presets
| Before |
Now |
data-theme="light" or a DaisyUI theme name |
data-theme="light", "dark" or "high-contrast". With no attribute the page follows the system setting |
| A custom DaisyUI theme, or a generated theme file |
A preset: a named set of token values switched with data-preset. ledger and harbor ship with the CSS |
| Glass props with tints and opacities |
surface="glass" on the component; the look comes from the glass tokens |
| Per-component color overrides |
Tokens. Set --apui-color-primary and the rest once, in a preset |
Theme, preset and density (data-density="compact") combine, and any element can set them for its subtree.
5. Renamed and consolidated components
| 2.x |
Now |
Notes |
<x-artisanpack-choices> |
<x-artisanpack-combobox> |
Choices was multiple by default; Combobox is single. The tool adds multiple. |
<x-artisanpack-choices-offline> |
<x-artisanpack-combobox> |
Choices was multiple by default; Combobox is single. The tool adds multiple. |
<x-artisanpack-colorpicker> |
<x-artisanpack-color-picker> |
|
<x-artisanpack-datepicker> |
<x-artisanpack-date-picker> |
|
<x-artisanpack-datetime> |
<x-artisanpack-date-picker> |
Add time for a date and time. |
<x-artisanpack-drawer> |
<x-artisanpack-drawer> |
The default side moved from start to end. The tool adds side="start" where it is missing. |
<x-artisanpack-dropdown> |
<x-artisanpack-dropdown-menu> |
|
<x-artisanpack-editor> |
<x-artisanpack-rich-text-editor> |
|
<x-artisanpack-errors> |
<x-artisanpack-validation-summary> |
|
<x-artisanpack-group> |
<x-artisanpack-radio-group> |
Group is RadioGroup with variant="segmented" and orientation="horizontal". The tool adds variant="segmented" and orientation="horizontal". |
<x-artisanpack-header> |
<x-artisanpack-page-header> |
|
<x-artisanpack-main> |
<x-artisanpack-app-shell> |
|
<x-artisanpack-modal> |
<x-artisanpack-dialog> |
|
<x-artisanpack-nav> |
<x-artisanpack-navbar> |
Navbar is sticky by default; 2.x nav was not. Add :sticky="false" to keep a bar that scrolls away. |
<x-artisanpack-profile> |
<x-artisanpack-user-menu> |
|
<x-artisanpack-radio> |
<x-artisanpack-radio-group> |
|
<x-artisanpack-select-group> |
<x-artisanpack-select> |
Pass the groups to Select as { label, options } entries. |
<x-artisanpack-separator> |
<x-artisanpack-divider> |
|
<x-artisanpack-subheading> |
<x-artisanpack-text> |
Subheading is Text with size="lead". The tool adds size="lead". |
<x-artisanpack-tags> |
<x-artisanpack-combobox> |
Tags is a Combobox with multiple and allow-create. The tool adds multiple and allow-create. |
<x-artisanpack-widget-grid> |
<x-artisanpack-grid> |
|
6. Changes by component
Every 2.x attribute and slot that changed. "Automatic" says whether artisanpack:upgrade-ui makes the change for you. Attributes are written in kebab-case, as in Blade; the camelCase form is handled the same way.
<x-artisanpack-accordion>
| 2.x |
3.0 |
Automatic |
no-join |
Removed. |
Yes |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
collapse-plus-minus |
Removed, with no replacement. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
<x-artisanpack-alert>
| 2.x |
3.0 |
Automatic |
shadow |
Removed. |
Yes |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
<x-artisanpack-avatar>
| 2.x |
3.0 |
Automatic |
image |
Now src. |
Yes |
placeholder |
Now name. |
Yes |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
subtitle |
Gone: lay out a name beside the avatar with a ListItem, or use UserMenu. |
By hand |
<x-artisanpack-badge>
| 2.x |
3.0 |
Automatic |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
<x-artisanpack-breadcrumbs>
| 2.x |
3.0 |
Automatic |
separator |
Gone: the separator is always a chevron; remove it and style it through classes. |
By hand |
link-item-class |
Breadcrumbs has no linkItem part. Style it with class, or a classes key: root, list, item, link, separator, current, overflow. |
By hand |
text-item-class |
Breadcrumbs has no textItem part. Style it with class, or a classes key: root, list, item, link, separator, current, overflow. |
By hand |
icon-class |
Breadcrumbs has no icon part. Style it with class, or a classes key: root, list, item, link, separator, current, overflow. |
By hand |
separator-class |
Now the separator key of classes. |
Yes |
no-wire-navigate |
Now navigate, with the opposite meaning: the flag becomes navigate set to false. |
Yes |
| 2.x |
3.0 |
Automatic |
label |
Now the default slot. |
On self-closing tags |
icon |
Now leading-icon. |
Yes |
icon-right |
Now trailing-icon. |
Yes |
spinner |
Gone: set the boolean loading prop to show the spinner; there is no wire:target shortcut. |
By hand |
link |
Now href. |
Yes |
external |
Gone: add target="_blank" and rel="noopener" to the button yourself. |
By hand |
no-wire-navigate |
Not in the 3.0 API (planned as navigate). Remove it, or check the component's docs for what replaces it. |
By hand |
responsive |
Removed. The label no longer hides on small screens; use icon-only for an icon button. |
Yes |
badge |
Gone: render a Badge inside the button's slot or beside it. |
By hand |
badge-classes |
Button has no badge part. Style it with class, or a classes key: root, icon, iconEnd, label, spinner. |
By hand |
tooltip |
Now content on a <x-artisanpack-tooltip> wrapped around the element. |
Yes |
tooltip-left |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="start". |
Yes |
tooltip-right |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="end". |
Yes |
tooltip-bottom |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="bottom". |
Yes |
variant |
Depends on the value: color for primary, secondary, accent, neutral, success, warning, error, info. Unchanged for solid, soft, outline, ghost, link. |
For literal values |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
tooltip-position |
Now placement on a <x-artisanpack-tooltip> wrapped around the element. |
Yes |
<x-artisanpack-card>
| 2.x |
3.0 |
Automatic |
subtitle |
Now description. |
Yes |
separator |
Removed. The card draws no header rule; use classes if you need one. |
Yes |
shadow |
Gone: use surface="raised" for an elevated card. |
By hand |
progress-indicator |
Gone: show a Progress component inside the card while loading. |
By hand |
figure-position |
Gone: media always sits at the top of the card; lay out side or bottom images yourself. |
By hand |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
menu |
Use the actions slot, which now sits at the end of the header; move 2.x bottom actions to footer. |
By hand |
figure |
Now media. |
Yes |
<x-slot:figure> |
Now <x-slot:media>. |
Yes |
<x-slot:menu> |
Use the actions slot, which now sits at the end of the header; move 2.x bottom actions to footer. |
By hand |
<x-slot:subtitle> |
Now <x-slot:description>. |
Yes |
<x-artisanpack-carousel>
| 2.x |
3.0 |
Automatic |
without-indicators |
Removed. |
Yes |
without-arrows |
Removed. |
Yes |
next-arrow |
Ignored in 3.0: remove it; the next button is built in (next-label names it). |
By hand |
previous-arrow |
Ignored in 3.0: remove it; the previous button is built in (previous-label names it). |
By hand |
dots |
Ignored in 3.0: remove it; the dots are built in and always show. |
By hand |
aria-label |
Now label. |
Yes |
aria-labelled-by |
Ignored in 3.0: name the carousel with label instead. |
By hand |
respects-reduced-motion |
Removed. Ignored: autoplay always respects reduced motion. |
Yes |
content |
The content scoped slot is now @scope('slide', $slide). |
By hand |
<x-artisanpack-chart>
| 2.x |
3.0 |
Automatic |
options |
Apex options are dropped; categories, labels and the title still fill labels and title. |
By hand |
theme |
Series take --apui-chart-1…6. |
By hand |
animated |
Removed. |
Yes |
animation-speed |
Gone: remove it; the chart renders on the server with no animation options. |
By hand |
animation-easing |
Gone: remove it; the chart renders on the server with no animation options. |
By hand |
dynamic-animation |
Removed. The chart has no animation options. |
Yes |
dynamic-animation-speed |
Gone: remove it; the chart renders on the server with no animation options. |
By hand |
glass |
Removed, with no replacement. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
<x-artisanpack-checkbox>
| 2.x |
3.0 |
Automatic |
right |
Removed. The label always follows the box. |
Yes |
hint |
Now description. |
Yes |
hint-class |
Now the description key of classes. |
Yes |
card |
Gone on Checkbox: use CheckboxGroup with variant="cards" for card options. |
By hand |
card-class |
Checkbox has no card part. Style it with class, or a classes key: root, box, control, indicator, label, description, error. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-slot:hint> |
Now <x-slot:description>. |
Yes |
<x-artisanpack-checkbox-group>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
option-value |
Gone: give each options entry a value key. |
By hand |
option-label |
Gone: give each options entry a label key. |
By hand |
option-hint |
Gone: give each options entry a description key. |
By hand |
horizontal |
Now orientation="horizontal". |
Yes |
card |
Now variant="cards". |
Yes |
card-class |
CheckboxGroup has no card part. Style it with class, or a classes key: root, label, selectAll, items, hint, error. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-choices> → <x-artisanpack-combobox>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
icon |
Now leading-icon. |
Yes |
icon-right |
Removed, with no replacement. |
By hand |
inline |
Removed. |
Yes |
prefix |
Removed, with no replacement. |
By hand |
suffix |
Removed, with no replacement. |
By hand |
searchable |
Now remote. |
Yes |
single |
Now multiple, with the opposite meaning: the flag becomes multiple set to false. |
Yes |
compact |
Removed. |
Yes |
compact-text |
Removed, with no replacement. |
By hand |
allow-all |
Removed. |
Yes |
debounce |
Now integer milliseconds: :debounce="250" for 250ms, :debounce="1000" for 1s. |
For literal values |
min-chars |
Check the length in the search-model handler. |
By hand |
allow-all-text |
Removed, with no replacement. |
By hand |
remove-all-text |
Removed, with no replacement. |
By hand |
search-function |
The deprecated choices, choices-offline and tags tags still call it. combobox doesn't: set search-model to a property and search in its updated hook, or call your method with wire:search-change="yourMethod($event.detail.search)". |
By hand |
option-value |
Manual: map options to { value, label, description }. |
By hand |
option-label |
Manual: see optionValue. |
By hand |
option-sub-label |
Manual: becomes each option's description. |
By hand |
option-avatar |
Use the option's icon or the item scoped slot. |
By hand |
values-as-string |
Removed. |
Yes |
height |
Removed, with no replacement. |
By hand |
no-result-text |
Now empty-label. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Removed. |
Yes |
first-error-only |
Removed. |
Yes |
lazy-load |
Removed. |
Yes |
lazy-load-method |
Removed, with no replacement. |
By hand |
lazy-load-modifier |
Removed, with no replacement. |
By hand |
has-more-options |
Removed. |
Yes |
selection |
Slot removed; chips render the label. |
By hand |
prepend |
Removed, with no replacement. |
By hand |
append |
Removed, with no replacement. |
By hand |
<x-artisanpack-choices-offline> → <x-artisanpack-combobox>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
icon |
Now leading-icon. |
Yes |
icon-right |
Removed, with no replacement. |
By hand |
inline |
Removed. |
Yes |
prefix |
Removed, with no replacement. |
By hand |
suffix |
Removed, with no replacement. |
By hand |
searchable |
Removed. Filtering is always on. |
Yes |
single |
Now multiple, with the opposite meaning: the flag becomes multiple set to false. |
Yes |
compact |
Removed. |
Yes |
compact-text |
Removed, with no replacement. |
By hand |
allow-all |
Removed. |
Yes |
debounce |
Now integer milliseconds: :debounce="250" for 250ms, :debounce="1000" for 1s. |
For literal values |
min-chars |
Check the length in the search-model handler. |
By hand |
allow-all-text |
Removed, with no replacement. |
By hand |
remove-all-text |
Removed, with no replacement. |
By hand |
option-value |
Manual: map options to { value, label, description }. |
By hand |
option-label |
Manual: see optionValue. |
By hand |
option-sub-label |
Manual: becomes each option's description. |
By hand |
option-avatar |
Use the option's icon or the item scoped slot. |
By hand |
values-as-string |
Removed. |
Yes |
height |
Removed, with no replacement. |
By hand |
no-result-text |
Now empty-label. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Removed. |
Yes |
first-error-only |
Removed. |
Yes |
selection |
Slot removed; chips render the label. |
By hand |
prepend |
Removed, with no replacement. |
By hand |
append |
Removed, with no replacement. |
By hand |
search-function |
The deprecated choices, choices-offline and tags tags still call it. combobox doesn't: set search-model to a property and search in its updated hook, or call your method with wire:search-change="yourMethod($event.detail.search)". |
By hand |
<x-artisanpack-code>
| 2.x |
3.0 |
Automatic |
hint |
Gone: remove it; Code is read-only and shows no hint. |
By hand |
light-theme |
The 2.x Ace editor is now CodeEditor; Code is read-only. |
By hand |
dark-theme |
Removed, with no replacement. |
By hand |
light-class |
Code has no light part. Style it with class, or a classes key: root, header, file, language, copy, status, pre, line. |
By hand |
dark-class |
Code has no dark part. Style it with class, or a classes key: root, header, file, language, copy, status, pre, line. |
By hand |
height |
Removed, with no replacement. |
By hand |
line-height |
Gone: remove it; set line height through classes or tokens. |
By hand |
print-margin |
Removed. |
Yes |
<x-artisanpack-collapse>
| 2.x |
3.0 |
Automatic |
name |
Removed, with no replacement. |
By hand |
separator |
Removed. |
Yes |
no-icon |
Removed. |
Yes |
collapse-plus-minus |
Removed, with no replacement. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
heading |
Now label. |
Yes |
content |
Use the default slot. Deprecated alias kept in 3.0. |
By hand |
<x-slot:content> |
Use the default slot. Deprecated alias kept in 3.0. |
By hand |
<x-slot:heading> |
Now <x-slot:label>. |
Yes |
<x-artisanpack-colorpicker> → <x-artisanpack-color-picker>
| 2.x |
3.0 |
Automatic |
icon |
Gone: remove it; the swatch trigger sits at the start of the field. |
By hand |
icon-right |
Gone: remove it; the field has no trailing icon. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
prefix |
Ignored in 3.0: remove it. |
By hand |
suffix |
Ignored in 3.0: remove it. |
By hand |
inline |
Removed. Ignored in 3.0; the label always sits above the field. |
Yes |
clearable |
Removed. There is no clear button. |
Yes |
random |
Removed. There is no random-color button. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-datepicker> → <x-artisanpack-date-picker>
| 2.x |
3.0 |
Automatic |
icon |
Ignored in 3.0: remove it; the field has no icon prop. |
By hand |
icon-right |
Ignored in 3.0: remove it; the calendar trigger sits at the end of the field. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
inline |
Removed. Ignored in 3.0; the label always sits above the field. |
Yes |
config |
Replace the flatpickr config with mode, min, max, format and time; other options are ignored. |
By hand |
color |
Ignored in 3.0: remove it; colors come from the theme tokens. |
By hand |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
theme |
Ignored in 3.0: remove it; the picker is styled by the design tokens. |
By hand |
font-config |
Ignored in 3.0: remove it; fonts come from the design tokens. |
By hand |
dark-mode-support |
Removed. Ignored: dark mode comes from the theme. |
Yes |
prepend |
Gone: put the related control next to the field instead. |
By hand |
append |
Gone: put the related control next to the field instead. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-datetime> → <x-artisanpack-date-picker>
| 2.x |
3.0 |
Automatic |
icon |
Ignored in 3.0: remove it; the field has no icon prop. |
By hand |
icon-right |
Ignored in 3.0: remove it; the calendar trigger sits at the end of the field. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
inline |
Removed. Ignored in 3.0; the label always sits above the field. |
Yes |
prepend |
Gone: put the related control next to the field instead. |
By hand |
append |
Gone: put the related control next to the field instead. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-diff>
| 2.x |
3.0 |
Automatic |
old |
Now old-content. |
Yes |
new |
Now new-content. |
Yes |
config |
Gone: use view, word-level and context instead of the diff2html config. |
By hand |
<x-artisanpack-drawer>
| 2.x |
3.0 |
Automatic |
right |
Now side="end". |
Yes |
subtitle |
Now description. |
Yes |
separator |
Removed. |
Yes |
with-close-button |
Removed. The close button always renders; hideClose removes it. |
Yes |
close-on-escape |
Removed. Escape always closes. |
Yes |
without-trap-focus |
Removed. Disabling focus trap breaks the WCAG 2.2 AA dialog contract. |
Yes |
open-on |
Removed, with no replacement. |
By hand |
close-on |
Removed, with no replacement. |
By hand |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
actions |
Now footer. |
Yes |
<x-slot:subtitle> |
Now <x-slot:description>. |
Yes |
<x-slot:actions> |
Now <x-slot:footer>. |
Yes |
| 2.x |
3.0 |
Automatic |
label |
Unchanged. Still the trigger's text. |
Yes |
icon |
Gone: the trigger always shows a chevron; put a custom icon in the label slot. |
By hand |
right |
Now align="end". |
Yes |
top |
Removed. DropdownMenu has no vertical placement prop. |
Yes |
no-xanchor |
Removed. Superseded by behavior-engine positioning. |
Yes |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
trigger |
Put the trigger's content in the label slot; the trigger is always a Button. |
By hand |
<x-slot:trigger> |
Put the trigger's content in the label slot; the trigger is always a Button. |
By hand |
<x-artisanpack-editor> → <x-artisanpack-rich-text-editor>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
gpl-license |
Removed. The engine runs TinyMCE without it. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-errors> → <x-artisanpack-validation-summary>
| 2.x |
3.0 |
Automatic |
description |
Gone: ValidationSummary shows only a title and the list of errors. |
By hand |
icon |
Gone: the icon follows color (error or warning). |
By hand |
<x-artisanpack-fieldset>
| 2.x |
3.0 |
Automatic |
subtitle |
Now description. |
Yes |
icon |
Gone: add an icon to your own content if you need one. |
By hand |
separator |
Gone: pick a variant (panel, divided or plain) instead. |
By hand |
bg-color |
Raw color passthrough. Use color or classes. |
By hand |
text-color |
Raw color passthrough. Use color or classes. |
By hand |
border |
Gone: pick a variant (panel is bordered) or style through classes. |
By hand |
middle |
Gone: place the content inside the fieldset yourself. |
By hand |
actions |
Gone: place the buttons inside the fieldset yourself. |
By hand |
<x-slot:subtitle> |
Now <x-slot:description>. |
Yes |
<x-artisanpack-file>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
hide-progress |
Removed. Upload progress always shows in the file list. |
Yes |
crop-after-change |
Removed. File no longer crops images; ImageLibrary does. |
Yes |
change-text |
Gone with the image preview: remove it. |
By hand |
crop-title-text |
Gone with cropping: remove it (ImageLibrary still crops). |
By hand |
crop-cancel-text |
Gone with cropping: remove it (ImageLibrary still crops). |
By hand |
crop-save-text |
Gone with cropping: remove it (ImageLibrary still crops). |
By hand |
crop-config |
Gone with cropping: remove it (ImageLibrary still crops). |
By hand |
crop-mime-type |
Gone with cropping: remove it (ImageLibrary still crops). |
By hand |
with-drag-drop |
Removed. The drop zone is always on. |
Yes |
drag-drop-text |
Use title for the drop zone's main line. |
By hand |
drag-drop-class |
Now the dropzone key of classes. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
| 2.x |
3.0 |
Automatic |
no-separator |
Removed. The actions row has no edge unless you add divided. |
Yes |
<x-artisanpack-group> → <x-artisanpack-radio-group>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
option-value |
Gone: give each options entry a value key. |
By hand |
option-label |
Gone: give each options entry a label key. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
inline |
Now orientation="horizontal". |
Yes |
| 2.x |
3.0 |
Automatic |
subtitle |
Now description. |
Yes |
separator |
Removed. |
Yes |
progress-indicator |
Removed, with no replacement. |
By hand |
progress-indicator-class |
Removed, with no replacement. |
By hand |
with-anchor |
Removed. |
Yes |
size |
level sets the heading. |
By hand |
icon |
Removed, with no replacement. |
By hand |
icon-classes |
PageHeader has no icon part. Style it with class, or a classes key: root, breadcrumbs, row, meta, title, description, actions, tabs. |
By hand |
middle |
Not part of PageHeader: move the content into the actions or meta slot. |
By hand |
<x-slot:subtitle> |
Now <x-slot:description>. |
Yes |
<x-artisanpack-heading>
| 2.x |
3.0 |
Automatic |
color |
Gone: use classes for a one-off color. |
By hand |
semibold |
Removed. Headings are always 600 weight. |
Yes |
bold |
Removed. Headings are always 600 weight; use classes for a heavier one. |
Yes |
extrabold |
Removed. Headings are always 600 weight; use classes for a heavier one. |
Yes |
center |
Gone: center the heading with your own class. |
By hand |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
<x-artisanpack-icon>
| 2.x |
3.0 |
Automatic |
label |
Meaning change: was visible text beside the icon, now the accessible name. |
By hand |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
<x-artisanpack-image-gallery>
| 2.x |
3.0 |
Automatic |
aspect-ratio |
Ignored in 3.0: remove it; thumbnails are always 4:3. |
By hand |
gap |
Ignored in 3.0: remove it. |
By hand |
enable-lightbox |
Now lightbox. |
Yes |
show-captions |
Removed. Ignored: captions show whenever an image has one. |
Yes |
layout |
Ignored in 3.0: remove it; the gallery is always a grid. |
By hand |
lazy-load |
Removed. Ignored: thumbnails are always lazy-loaded. |
Yes |
filters |
Ignored in 3.0: remove it; filter the images array yourself. |
By hand |
items-per-page |
Ignored in 3.0: remove it; paginate the images array yourself. |
By hand |
loading-style |
Ignored in 3.0: remove it. |
By hand |
<x-artisanpack-image-library>
| 2.x |
3.0 |
Automatic |
hide-errors |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
preview |
Now assets. |
Yes |
with-drag-drop |
Now droppable. |
Yes |
drag-drop-multiple-text |
Ignored in 3.0: remove it; the drop overlay no longer counts files. |
By hand |
drag-drop-class |
Now the dropzone key of classes. |
Yes |
<x-artisanpack-image-slider>
| 2.x |
3.0 |
Automatic |
with-arrows |
Removed. Ignored: the arrows always show. |
Yes |
with-indicators |
Removed. Ignored: the dots always show. |
Yes |
auto-play |
Now autoplay. |
Yes |
auto-play-interval |
Now interval. |
Yes |
pause-on-hover |
Removed. Ignored: autoplay always pauses on hover and focus. |
Yes |
transition |
Ignored in 3.0: remove it; slides always scroll. |
By hand |
transition-duration |
Ignored in 3.0: remove it; slides always scroll. |
By hand |
show-counter |
Removed. Ignored: the counter always shows. |
Yes |
enable-lightbox |
Removed. ImageSlider has no lightbox; use ImageGallery. |
Yes |
| 2.x |
3.0 |
Automatic |
icon |
Now leading-icon. |
Yes |
icon-right |
Now trailing-icon. |
Yes |
hint-class |
Now the hint key of classes. |
Yes |
inline |
Removed. The label always sits above the field. |
Yes |
clearable |
Removed. There is no clear button. |
Yes |
money |
Gone: currency masking isn't built in; format the value yourself. |
By hand |
locale |
Gone with money: remove it. |
By hand |
prepend |
Gone: put the control next to the field, or use prefix for text inside the box. |
By hand |
append |
Gone: put the control next to the field, or use suffix for text inside the box. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-kpi-card>
| 2.x |
3.0 |
Automatic |
title |
stat.label. |
By hand |
value |
stat.value. |
By hand |
icon |
stat.icon. |
By hand |
change |
stat.change. |
By hand |
change-label |
stat.description. |
By hand |
sparkline-data |
Now sparkline. |
Yes |
sparkline-type |
Always an area sparkline. |
By hand |
sparkline-color |
Removed, with no replacement. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
footer |
Gone: render the content after the card, or use period and target. |
By hand |
<x-slot:footer> |
Gone: render the content after the card, or use period and target. |
By hand |
<x-artisanpack-link>
| 2.x |
3.0 |
Automatic |
color |
Gone: use tone, or tokens and classes. |
By hand |
underline |
Removed. Inline links are always underlined; standalone drops it. |
Yes |
hover-underline |
Removed. Use standalone for a link without the inline underline. |
Yes |
no-wire-navigate |
Now navigate, with the opposite meaning: the flag becomes navigate set to false. |
Yes |
icon |
Now leading-icon. |
Yes |
icon-right |
Now trailing-icon. |
Yes |
tooltip |
Now content on a <x-artisanpack-tooltip> wrapped around the element. |
Yes |
tooltip-left |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="start". |
Yes |
tooltip-right |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="end". |
Yes |
tooltip-bottom |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="bottom". |
Yes |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
tooltip-position |
Now placement on a <x-artisanpack-tooltip> wrapped around the element. |
Yes |
<x-artisanpack-list-item>
| 2.x |
3.0 |
Automatic |
no-separator |
Removed. The separator is the List's variant. |
Yes |
no-hover |
Removed. Hover comes from the row's interactive or href. |
Yes |
link |
Now href. |
Yes |
icon |
Now leading-icon. |
Yes |
icon-type |
Gone: choose the icon with leading-icon or the leading slot. |
By hand |
no-icon |
Removed. No icon shows unless leading-icon or the leading slot is set. |
Yes |
actions |
Now trailing. |
Yes |
icon-slot |
Use the leading slot. |
By hand |
<x-slot:actions> |
Now <x-slot:trailing>. |
Yes |
<x-slot:avatar> |
Now <x-slot:leading>. |
Yes |
<x-slot:sub-value> |
Now <x-slot:description>. |
Yes |
<x-slot:value> |
Now <x-slot:title>. |
Yes |
<x-artisanpack-loading>
| 2.x |
3.0 |
Automatic |
custom-svg |
Gone: use variant (spinner or dots). |
By hand |
animated |
Removed. The indicator always animates. |
Yes |
<x-artisanpack-main> → <x-artisanpack-app-shell>
| 2.x |
3.0 |
Automatic |
content |
Slot. Use the default slot. |
By hand |
full-width |
Removed. |
Yes |
with-nav |
Removed. Put a Menu in the sidebar slot. |
Yes |
collapse-text |
Now collapse-label. |
Yes |
collapse-icon |
Ignored in 3.0: remove it; the collapse button's icon is fixed. |
By hand |
<x-slot:content> |
Slot. Use the default slot. |
By hand |
<x-artisanpack-markdown>
| 2.x |
3.0 |
Automatic |
label |
Now editor-label. |
Yes |
hint |
Removed, with no replacement. |
By hand |
hint-class |
Markdown has no hint part. Style it with class, or a classes key: root, editor, preview, split, task. |
By hand |
disk |
Markdown image uploads are removed. |
By hand |
folder |
Removed, with no replacement. |
By hand |
config |
EasyMDE is removed; use mode="write" or mode="split" for the editor. |
By hand |
error-class |
Markdown has no error part. Style it with class, or a classes key: root, editor, preview, split, task. |
By hand |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
| 2.x |
3.0 |
Automatic |
icon |
Gone: add a menu-title child for the heading instead. |
By hand |
icon-classes |
Now the icon key of classes. |
Yes |
separator |
Gone: add a menu-separator child instead. |
By hand |
active-bg-color |
Gone: use classes or the design tokens. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
| 2.x |
3.0 |
Automatic |
icon-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
spinner |
Gone: remove it. |
By hand |
link |
Now href. |
Yes |
no-wire-navigate |
Now navigate, with the opposite meaning: the flag becomes navigate set to false. |
Yes |
badge-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
active |
Now current. |
Yes |
separator |
Gone: add a menu-separator child after the item. |
By hand |
bg-color |
Raw color passthrough. Use color or classes. |
By hand |
role |
Gone: remove it; role="menuitem" is no longer rendered. |
By hand |
| 2.x |
3.0 |
Automatic |
icon |
Gone: the separator is a plain rule; remove it. |
By hand |
icon-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
| 2.x |
3.0 |
Automatic |
icon-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
active |
Removed. A sub opens by itself when it holds the current page. |
Yes |
bg-color |
Raw color passthrough. Use color or classes. |
By hand |
| 2.x |
3.0 |
Automatic |
icon |
Gone: the title is text only; remove it. |
By hand |
icon-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
<x-artisanpack-modal> → <x-artisanpack-dialog>
| 2.x |
3.0 |
Automatic |
title |
Unchanged. Still the heading and the accessible name. |
Yes |
subtitle |
Now description. |
Yes |
box-class |
Now the root key of classes. |
Yes |
separator |
Removed. The dialog draws its own header and footer. |
Yes |
persistent |
Gone: use role="alertdialog" so the backdrop doesn't close it, and hide-close to drop the close button; Escape still closes. |
By hand |
without-trap-focus |
Removed. Disabling focus trap breaks the WCAG 2.2 AA dialog contract. |
Yes |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
actions |
Now footer. |
Yes |
<x-slot:subtitle> |
Now <x-slot:description>. |
Yes |
<x-slot:actions> |
Now <x-slot:footer>. |
Yes |
<x-artisanpack-nav> → <x-artisanpack-navbar>
| 2.x |
3.0 |
Automatic |
full-width |
Removed. The bar is full width; put it in your own container to constrain it. |
Yes |
| 2.x |
3.0 |
Automatic |
per-page-values |
Gone: pair Pagination with a Select for "Rows per page". |
By hand |
simple |
Removed. There is one design. |
Yes |
compact |
Removed. There is one design. |
Yes |
advanced |
Removed. There is one design. |
Yes |
minimal |
Removed. There is one design. |
Yes |
hide-per-page |
Removed. Pagination has no per-page select. |
Yes |
hide-page-info |
Now summary, with the opposite meaning: the flag becomes summary set to false. |
Yes |
show-first-last |
Removed. There are no first and last buttons. |
Yes |
show-jump-to |
Removed. There is no jump-to field. |
Yes |
on-each-side |
Now siblings. |
Yes |
size |
Gone: there is one size; remove it. |
By hand |
page-info-template |
Now summary-label. |
Yes |
<x-artisanpack-password>
| 2.x |
3.0 |
Automatic |
icon |
Now leading-icon. |
Yes |
icon-right |
Gone: the reveal button sits at the end of the field; remove it. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
prefix |
Gone: remove it. |
By hand |
suffix |
Gone: remove it. |
By hand |
inline |
Removed. The label always sits above the field. |
Yes |
clearable |
Removed. There is no clear button. |
Yes |
password-icon |
Gone: the reveal button's icons are fixed; remove it. |
By hand |
password-visible-icon |
Gone: the reveal button's icons are fixed; remove it. |
By hand |
right |
Removed. The reveal button is always at the end of the field. |
Yes |
only-password |
Removed. The reveal button always shows. |
Yes |
prepend |
Gone: put the control next to the field instead. |
By hand |
append |
Gone: put the control next to the field instead. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
<x-artisanpack-pin>
| 2.x |
3.0 |
Automatic |
size |
Now length. |
Yes |
numeric |
Now type="numeric". |
Yes |
hide |
Now mask. |
Yes |
hide-type |
Gone: mask always shows a dot; remove it. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-popover>
| 2.x |
3.0 |
Automatic |
position |
Now placement. Values: left is now start, right is now end. left and right are now start and end. |
Yes |
offset |
Removed, with no replacement. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
content |
Slot. Use the default slot; deprecated alias kept in 3.0. |
By hand |
<x-slot:content> |
Slot. Use the default slot; deprecated alias kept in 3.0. |
By hand |
| 2.x |
3.0 |
Automatic |
image |
Pass the image URL as avatar in the user array. |
By hand |
color |
Gone: remove it. |
By hand |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
subtitle |
Pass the text as role in the user array. |
By hand |
right |
Not in the 3.0 API (planned as end). Remove it, or check the component's docs for what replaces it. |
By hand |
top |
Removed. UserMenu has no vertical placement prop. |
Yes |
no-xanchor |
Removed. Superseded by behavior-engine positioning. |
Yes |
<x-artisanpack-progress-radial>
| 2.x |
3.0 |
Automatic |
unit |
Gone: use value-text for a value other than a percentage. |
By hand |
<x-artisanpack-radio> → <x-artisanpack-radio-group>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
option-value |
Gone: give each options entry a value key. |
By hand |
option-label |
Gone: give each options entry a label key. |
By hand |
option-hint |
Gone: give each options entry a description key. |
By hand |
inline |
Now orientation="horizontal". |
Yes |
card |
variant="cards". |
By hand |
card-class |
Now the item key of classes. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-radio-group>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
option-value |
Gone: give each options entry a value key. |
By hand |
option-label |
Gone: give each options entry a label key. |
By hand |
option-hint |
Gone: give each options entry a description key. |
By hand |
horizontal |
Now orientation="horizontal". |
Yes |
card |
variant="cards". |
By hand |
card-class |
Now the item key of classes. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
inline |
Now orientation="horizontal". |
Yes |
<x-artisanpack-range>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-rating>
| 2.x |
3.0 |
Automatic |
total |
Now max. |
Yes |
icon |
Gone: the rating always draws stars; remove it. |
By hand |
filled-icon |
Gone: the rating always draws stars; remove it. |
By hand |
empty-icon |
Gone: the rating always draws stars; remove it. |
By hand |
color |
Gone: style the stars through tokens or classes. |
By hand |
filled-color |
Gone: style the stars through tokens or classes. |
By hand |
empty-color |
Gone: style the stars through tokens or classes. |
By hand |
half-stars |
Removed. A readonly rating rounds to the nearest half star by itself. |
Yes |
hover-effect |
Removed. Remove it. |
Yes |
show-value |
Removed. A readonly rating shows its value by itself. |
Yes |
value-format |
Gone: remove it; value-label sets the text alternative (:value, :max). |
By hand |
clearable |
Removed. There is no clear button. |
Yes |
clear-icon |
Gone with clearable: remove it. |
By hand |
inline-label |
Removed. Gone: label is the accessible name, not visible text. |
Yes |
helper |
Gone: render help text beside the rating yourself. |
By hand |
error |
Gone: Rating isn't a field and shows no error; render the message yourself. |
By hand |
<x-artisanpack-select>
| 2.x |
3.0 |
Automatic |
icon |
Now leading-icon. |
Yes |
icon-right |
Gone: the select's indicator sits at the end; remove it. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
prefix |
Gone: remove it; use leading-icon or a label. |
By hand |
suffix |
Gone: remove it. |
By hand |
placeholder-value |
Gone: the placeholder option's value is always empty. |
By hand |
inline |
Removed. The label always sits above the field. |
Yes |
option-value |
Gone: give each options entry a value key. |
By hand |
option-label |
Gone: give each options entry a label key. |
By hand |
prepend |
Gone: put the control next to the field instead. |
By hand |
append |
Gone: put the control next to the field instead. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-select-group> → <x-artisanpack-select>
| 2.x |
3.0 |
Automatic |
icon |
Now leading-icon. |
Yes |
icon-right |
Gone: the select's indicator sits at the end; remove it. |
By hand |
hint-class |
Now the hint key of classes. |
Yes |
placeholder-value |
Gone: the placeholder option's value is always empty. |
By hand |
inline |
Removed. The label always sits above the field. |
Yes |
option-value |
Gone: pass groups as [ 'label' => …, 'options' => [ [ 'value' => …, 'label' => … ] ] ]. |
By hand |
option-label |
Gone: pass groups as [ 'label' => …, 'options' => [ [ 'value' => …, 'label' => … ] ] ]. |
By hand |
prepend |
Gone: put the control next to the field instead. |
By hand |
append |
Gone: put the control next to the field instead. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-separator> → <x-artisanpack-divider>
| 2.x |
3.0 |
Automatic |
target |
The 2.x loading bar is dropped; use Progress. |
By hand |
progress |
Removed. The 2.x loading bar is dropped; use Progress. |
Yes |
color |
Use strength. |
By hand |
image |
Removed, with no replacement. |
By hand |
vertical |
Now orientation="vertical". |
Yes |
<x-artisanpack-signature>
| 2.x |
3.0 |
Automatic |
clear-text |
Now clear-label. |
Yes |
hint-class |
Now the hint key of classes. |
Yes |
config |
Gone: the signature_pad options no longer apply; use pen-color and modes. |
By hand |
clear-btn-style |
Gone: style the Clear button through classes. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-sparkline>
| 2.x |
3.0 |
Automatic |
type |
Now variant. |
Yes |
color |
Gone: the trend uses --apui-chart-1; set that token on a parent to change it. |
By hand |
stroke-width |
Gone: remove it. |
By hand |
curve |
Gone: remove it. |
By hand |
fill-opacity |
Gone: remove it; use variant="area" for a filled trend. |
By hand |
<x-artisanpack-spotlight>
| 2.x |
3.0 |
Automatic |
search-text |
Now placeholder. |
Yes |
no-results-text |
Now empty-text. |
Yes |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
append |
Now footer. |
Yes |
<x-slot:append> |
Now <x-slot:footer>. |
Yes |
<x-artisanpack-stat>
| 2.x |
3.0 |
Automatic |
title |
Now label. |
Yes |
tooltip |
Now content on a <x-artisanpack-tooltip> wrapped around the element. |
Yes |
tooltip-left |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="start". |
Yes |
tooltip-right |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="end". |
Yes |
tooltip-bottom |
Now content on a <x-artisanpack-tooltip> wrapped around the element with placement="bottom". |
Yes |
icon-position |
Removed, with no replacement. |
By hand |
title-position |
Removed, with no replacement. |
By hand |
content-align |
Removed, with no replacement. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
sparkline-data |
Use KpiCard's sparkline. |
By hand |
sparkline-type |
Removed, with no replacement. |
By hand |
sparkline-color |
Removed, with no replacement. |
By hand |
change-label |
Now description. |
Yes |
animate |
Removed. |
Yes |
animate-duration |
Removed, with no replacement. |
By hand |
<x-artisanpack-step>
| 2.x |
3.0 |
Automatic |
text |
Now title. |
Yes |
step-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
data-content |
Gone: the marker shows the step number, or icon. |
By hand |
<x-artisanpack-steps>
| 2.x |
3.0 |
Automatic |
vertical |
Now orientation="vertical". |
Yes |
steps-color |
Not in the 3.0 API (planned as color). Remove it, or check the component's docs for what replaces it. |
By hand |
stepper-classes |
Steps has no stepper part. Style it with class, or a classes key: root, step, marker, title, connector, description. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
<x-artisanpack-streamable-content>
| 2.x |
3.0 |
Automatic |
tag |
Removed, with no replacement. |
By hand |
prose |
Removed. |
Yes |
placeholder |
Removed, with no replacement. |
By hand |
show-cursor |
Removed. The caret part shows while streaming. |
Yes |
<x-artisanpack-subheading> → <x-artisanpack-text>
| 2.x |
3.0 |
Automatic |
color |
Gone: use tone, or classes for a one-off color. |
By hand |
semibold |
Now weight="semibold". |
Yes |
bold |
Now weight="semibold". |
Yes |
center |
Gone: center the text with your own class. |
By hand |
muted |
Now tone="muted". |
Yes |
<x-artisanpack-swap>
| 2.x |
3.0 |
Automatic |
true |
Pass the content in the on slot; as an attribute it is no longer read. |
By hand |
false |
Pass the content in the off slot; as an attribute it is no longer read. |
By hand |
true-icon |
Now on-icon. |
Yes |
false-icon |
Now off-icon. |
Yes |
icon-size |
Removed, with no replacement. |
By hand |
<x-slot:false> |
Now <x-slot:off>. |
Yes |
<x-slot:true> |
Now <x-slot:on>. |
Yes |
<x-slot:after> |
Gone: put the content beside the swap yourself. |
By hand |
<x-slot:before> |
Gone: put the content beside the swap yourself. |
By hand |
<x-artisanpack-tab>
| 2.x |
3.0 |
Automatic |
content-classes |
Per-part class props are gone here. Use class, or the parent's classes. |
By hand |
<x-artisanpack-table>
| 2.x |
3.0 |
Automatic |
striped |
Removed. |
Yes |
no-headers |
Now hide-headers. |
Yes |
with-pagination |
Now paginated. |
Yes |
show-empty-text |
Removed. No longer needed: an empty table always shows the empty state. |
Yes |
container-class |
Classes go on the root div. |
By hand |
no-hover |
Removed. |
Yes |
uuid |
Internal wire:key plumbing; never public API. |
By hand |
header-glass |
Removed, with no replacement. |
By hand |
header-glass-tint |
Replaced by glass surface tokens. |
By hand |
header-glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
virtual-scroll |
Removed. |
Yes |
virtual-row-height |
Removed, with no replacement. |
By hand |
virtual-buffer |
Removed, with no replacement. |
By hand |
virtual-container-height |
Removed, with no replacement. |
By hand |
exportable |
Removed. TableExporter remains for server-side export. |
Yes |
export-formats |
Removed, with no replacement. |
By hand |
export-filename |
Removed, with no replacement. |
By hand |
tr |
Not rendered: remove it; use row-decoration for row classes. |
By hand |
sort-handle-slot |
Gone: the drag handle is built in (a grip icon); remove it. |
By hand |
<x-artisanpack-tabs>
| 2.x |
3.0 |
Automatic |
selected |
Now value. |
Yes |
gap |
Gone: use classes or the design tokens. |
By hand |
label-color-classes |
Tabs has no labelColor part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
active-color-classes |
Tabs has no activeColor part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
label-class |
Tabs has no label part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
active-class |
Tabs has no active part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
label-div-class |
Tabs has no labelDiv part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
tabs-class |
Tabs has no tabs part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-tabs-class |
Tabs has no verticalTabs part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-label-class |
Tabs has no verticalLabel part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-active-class |
Tabs has no verticalActive part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-label-div-class |
Tabs has no verticalLabelDiv part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-content-class |
Tabs has no verticalContent part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-right-active-class |
Tabs has no verticalRightActive part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
vertical-right-label-div-class |
Tabs has no verticalRightLabelDiv part. Style it with class, or a classes key: root, list, trigger, icon, count, content. |
By hand |
glass |
Not in the 3.0 API (planned as surface). Remove it, or check the component's docs for what replaces it. |
By hand |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
icon |
Now leading-icon. |
Yes |
icon-right |
Removed, with no replacement. |
By hand |
inline |
Removed. |
Yes |
prefix |
Removed, with no replacement. |
By hand |
suffix |
Removed, with no replacement. |
By hand |
searchable |
Removed. choices: becomes remote (server search). choices-offline: dropped, filtering is always on. |
Yes |
debounce |
Now integer milliseconds: :debounce="250" for 250ms, :debounce="1000" for 1s. |
For literal values |
min-chars |
Check the length in the search-model handler. |
By hand |
search-function |
The deprecated choices, choices-offline and tags tags still call it. combobox doesn't: set search-model to a property and search in its updated hook, or call your method with wire:search-change="yourMethod($event.detail.search)". |
By hand |
option-value |
Manual: map options to { value, label, description }. |
By hand |
option-label |
Manual: see optionValue. |
By hand |
option-sub-label |
Manual: becomes each option's description. |
By hand |
option-avatar |
Use the option's icon or the item scoped slot. |
By hand |
height |
Removed, with no replacement. |
By hand |
no-result-text |
Now empty-label. |
Yes |
allow-custom-tags |
Now allow-create. |
Yes |
custom-tags-text |
Now create-label. |
Yes |
prepend |
Removed, with no replacement. |
By hand |
append |
Removed, with no replacement. |
By hand |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Removed. |
Yes |
first-error-only |
Removed. |
Yes |
single |
Now multiple, with the opposite meaning: the flag becomes multiple set to false. |
Yes |
<x-artisanpack-text>
| 2.x |
3.0 |
Automatic |
color |
Gone: use tone, or classes for a one-off color. |
By hand |
semibold |
Now weight="semibold". |
Yes |
bold |
Now weight="semibold". |
Yes |
center |
Gone: center the text with your own class. |
By hand |
muted |
Now tone="muted". |
Yes |
lead |
Now size="lead". |
Yes |
prose |
Removed. Text no longer adds prose styles or a bottom margin. |
Yes |
<x-artisanpack-textarea>
| 2.x |
3.0 |
Automatic |
hint-class |
Now the hint key of classes. |
Yes |
inline |
Removed. The label always sits above the field. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-artisanpack-theme-toggle>
| 2.x |
3.0 |
Automatic |
light |
Now light-label. |
Yes |
dark |
Now dark-label. |
Yes |
light-theme |
Removed, with no replacement. |
By hand |
dark-theme |
Removed, with no replacement. |
By hand |
light-class |
ThemeToggle has no light part. Style it with class, or a classes key: root. |
By hand |
dark-class |
ThemeToggle has no dark part. Style it with class, or a classes key: root. |
By hand |
with-label |
Removed. |
Yes |
<x-artisanpack-timeline-item>
| 2.x |
3.0 |
Automatic |
subtitle |
Now time. |
Yes |
pending |
Removed. |
Yes |
first |
Removed. Ignored: the list draws its own line. |
Yes |
last |
Removed. Ignored: the list draws its own line. |
Yes |
<x-artisanpack-toast>
| 2.x |
3.0 |
Automatic |
position |
Set placement on <x-artisanpack-toaster> instead (for example top-end). |
By hand |
color-adjustment |
Per-instance color math. Theming belongs in tokens. |
By hand |
duration |
Set duration on <x-artisanpack-toaster> instead. |
By hand |
glass |
Now surface. |
Yes |
glass-tint |
Replaced by glass surface tokens. |
By hand |
glass-tint-opacity |
Replaced by glass surface tokens. |
By hand |
<x-artisanpack-toggle>
| 2.x |
3.0 |
Automatic |
right |
Removed. The label always follows the switch. |
Yes |
hint |
Now description. |
Yes |
hint-class |
Now the description key of classes. |
Yes |
error-class |
Now the error key of classes. |
Yes |
omit-error |
Not in the 3.0 API (planned as hideError). Remove it, or check the component's docs for what replaces it. |
By hand |
<x-slot:hint> |
Now <x-slot:description>. |
Yes |
| 2.x |
3.0 |
Automatic |
cols |
Now columns. |
Yes |
7. After the command
- Work through the
manual lines of the report, then the class lines.
- Icons. String icon names resolve against the design system's Lucide set first (
leading-icon="plus"). Heroicons and Font Awesome names (o-plus, fa-user) still render through blade-icons, so nothing breaks, but new markup should use the registry names.
- Events. Components report changes as
value-change and open-change. wire:model covers both, so most apps have nothing to do; listeners for 2.x events such as theme-changed or row-selection need the new names.
- Defaults that moved. A Drawer opens from the end side (the command adds
side="start" where 2.x relied on the old default). Combobox is single-select where Choices was multiple (the command adds multiple). A Form draws no separator unless divided is set. A Pin is numeric by default: add type="alphanumeric" where 2.x accepted any character.
- Run your tests, and look at each page in light, dark and high-contrast themes.