Verified against Semitexa Ultimate 2026.11.04.1133

PlatformUi attributes

Every attribute declared by PlatformUi, with the signature the code has and a usage quoted from the codebase.

#[AsCommandSource]

Semitexa\PlatformUi\Attribute\AsCommandSource

Applies to: class

Takes no arguments.

#[AsCommandSource]
final class CrudScreenCommands implements UiCommandSourceInterface

— vendor/semitexa/crud/src/Application/Service/Palette/CrudScreenCommands.php

#[AsDashboardWidget]

Semitexa\PlatformUi\Attribute\AsDashboardWidget

Applies to: class

parameter type required
dashboard string yes
order int no
permission string no
wide bool no
public bool no
#[AsDashboardWidget(dashboard: 'admin', order: 10)]
final class PublicWidgetFixture implements UiDashboardWidgetInterface

— vendor/semitexa/platform-ui/tests/Unit/Dashboard/DashboardTest.php

#[AsFieldType]

Semitexa\PlatformUi\Attribute\AsFieldType

Applies to: class

Takes no arguments.

#[AsFieldType]
final class StarsFieldTypeFixture extends \Semitexa\PlatformUi\Application\Service\Field\Type\AbstractUiFieldType

— vendor/semitexa/platform-ui/tests/Unit/Field/UiFieldTypesTest.php

#[AsFormSubmitAction]

Semitexa\PlatformUi\Attribute\AsFormSubmitAction

Applies to: class

parameter type required
name string yes
#[AsFormSubmitAction(self::NAME)]
final class CrudDeleteAction extends CrudFormAction implements UiFormSubmitActionInterface

— vendor/semitexa/crud/src/Application/Service/Submit/CrudDeleteAction.php

#[AsGridAction]

Semitexa\PlatformUi\Attribute\AsGridAction

Applies to: class

parameter type required
name string yes
#[AsGridAction(self::NAME)]
final class CrudGridAction implements UiGridActionInterface

— vendor/semitexa/crud/src/Application/Service/Grid/CrudGridAction.php

#[AsUiBehavior]

Semitexa\PlatformUi\Attribute\AsUiBehavior

Applies to: class

parameter type required
name string yes
ui string no
script string no
options array no
a11y array no
requires array no
#[AsUiBehavior(
    name: 'platform.accordion',
    ui: 'accordion',
    script: 'platform-ui:js:behaviors',
    options: [
        new UiBehaviorOption('multiple', UiOptionType::Bool, default: false, description: 'Allow more than one section open at once.'),
    ],
    a11y: ['aria-expanded', 'aria-controls', 'region-roles', 'arrow-nav'],
)]
#[AsUiContract(
    summary: 'Stacked sections that expand one at a time by default; with multiple, several can stay open.',
    examples: [
        new UiExample('single', 'Single open', [], template: '@platform-ui/examples/accordion.html.twig'),
        new UiExample('multiple', 'Several open', ['multiple' => true], template: '@platform-ui/examples/accordion.html.twig'),
    ],
    previewSafe: true,
)]
final class AccordionBehavior {}

— vendor/semitexa/platform-ui/src/Application/Service/Behavior/Builtin/AccordionBehavior.php

#[AsUiContract]

Semitexa\PlatformUi\Attribute\AsUiContract

Applies to: class

parameter type required
summary string yes
props array no
examples array no
previewSafe bool no
agent bool no
permission string no
extraProps string no
#[AsUiContract(
    summary: 'Light, dark or follow the system — a segmented control on the skin-mode contract, applied at once and remembered in this browser.',
    props: [
        new UiProp('title', default: 'Theme'),
        new UiProp('description', default: 'Choose how the interface looks on this device.'),
    ],
    previewSafe: true,
)]
final class AppearanceSettingsComponent

— vendor/semitexa/platform-ui/src/Application/Component/Builtin/AppearanceSettingsComponent.php

#[AsUiPrimitive]

Semitexa\PlatformUi\Attribute\AsUiPrimitive

Applies to: class

parameter type required
name string yes
ui string no
template string no
script string no
style string no
events array no
#[AsUiPrimitive(
    name: 'platform.alert',
    ui: 'alert',
    template: '@platform-ui/primitives/runtime/alert.html.twig',
    style: 'platform-ui:css:full',
)]
#[AsUiContract(
    summary: 'A message in a box, with a tone that says what kind: info, success, warning or danger.',
    props: [
        new UiProp('text', required: true),
        new UiProp('title', nullable: true),
        new UiProp('tone', default: 'info', values: ['neutral', 'info', 'success', 'warning', 'danger']),
        new UiProp('variant', default: 'soft', values: ['soft', 'outline', 'solid']),
    ],
    examples: [
        new UiExample('default', 'Saved', ['title' => 'Saved', 'text' => 'Your changes are live.', 'tone' => 'success']),
        new UiExample('info', 'Info', ['title' => 'Heads up', 'text' => 'Your trial ends in 3 days.']),
        new UiExample('success', 'Success', ['tone' => 'success', 'title' => 'Saved', 'text' => 'Your changes are live.']),
        new UiExample('warning', 'Warning', ['tone' => 'warning', 'title' => 'Storage almost full', 'text' => 'You have used 92% of your quota.']),
        new UiExample('danger', 'Danger', ['tone' => 'danger', 'title' => 'Payment failed', 'text' => 'Update your card to keep the workspace active.']),
        new UiExample('solid', 'Solid', ['tone' => 'success', 'variant' => 'solid', 'text' => 'Deployment finished.']),
    ],
    previewSafe: true,
)]
final class AlertPrimitive

— vendor/semitexa/platform-ui/src/Application/Service/Primitive/Builtin/AlertPrimitive.php

#[AsUiTreeAction]

Semitexa\PlatformUi\Attribute\AsUiTreeAction

Applies to: class

parameter type required
kind string yes
#[AsUiTreeAction(kind: 'create')]
final class CrudCreateTreeAction extends CrudScreenTreeAction

— vendor/semitexa/crud/src/Application/Service/Tree/CrudCreateTreeAction.php

#[CollaborativeForm]

Semitexa\PlatformUi\Attribute\CollaborativeForm

Applies to: class

parameter type required
formKey string yes
mode Semitexa\PlatformUi\Domain\Model\Collaboration\FormCollaborationMode no
#[CollaborativeForm(formKey: 'demo_form', mode: FormCollaborationMode::FieldLock)]
final class CollaborativeFormFixture

— vendor/semitexa/platform-ui/tests/Unit/Attribute/CollaborativeFormTest.php

#[HandlesUiEvent]

Semitexa\PlatformUi\Attribute\HandlesUiEvent

Applies to: class. Repeatable.

parameter type required
component string yes
part string yes
event string yes
payload string no
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'field', event: 'edit')]
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'presence', event: 'ping')]
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'lock', event: 'acquire')]
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'lock', event: 'release')]
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'lock', event: 'heartbeat')]
#[HandlesUiEvent(component: CollaborativeFormComponent::class, part: 'form', event: 'save')]
final class FormCollaborationEventHandler implements UiEventHandlerInterface

— vendor/semitexa/platform-ui/src/Application/Service/Collaboration/FormCollaborationEventHandler.php

#[ProvidesUiPart]

Semitexa\PlatformUi\Attribute\ProvidesUiPart

Applies to: method

parameter type required
part string yes
    #[ProvidesUiPart(part: 'input')]
    public function inputPart(array $props): array

— vendor/semitexa/platform-ui/src/Application/Component/Builtin/FieldComponent.php

#[UiOn]

Semitexa\PlatformUi\Attribute\UiOn

Applies to: method

parameter type required
part string yes
event string yes
updates string no
debounce int no
throttle int no
    #[UiOn(part: 'trigger', event: 'click')]
    public function onExpand(UiInteractionEvent $event): UiInteractionResult

— vendor/semitexa/demo/resources/examples/Rendering/Philosophy/EventComponent.example.php

#[UiPart]

Semitexa\PlatformUi\Attribute\UiPart

Applies to: class. Repeatable.

parameter type required
name string yes
uses string yes
defaults array no
bind string no
#[UiPart(name: 'trigger', uses: ButtonPrimitive::class)]
final class DisclosurePromptComponent

— vendor/semitexa/demo/resources/examples/Rendering/Philosophy/EventComponent.example.php

#[UiSlot]

Semitexa\PlatformUi\Attribute\UiSlot

Applies to: class. Repeatable.

parameter type required
name string yes
description string no
#[UiSlot(name: 'media', description: 'An image, video or illustration; beside the text on a wide block, below it on a narrow one.')]
#[AsUiContract(
    summary: 'The opening statement of a page: eyebrow, headline, lead and actions, with optional media beside it.',
    props: [
        new UiProp('title', required: true, description: 'The headline (the page\'s h1 unless headingLevel says otherwise).'),
        new UiProp('eyebrow', default: '', description: 'A short line above the headline.'),
        new UiProp('lead', default: ''),
        new UiProp('align', default: 'start', values: ['start', 'center']),
        new UiProp('headingLevel', UiPropType::Integer, default: 1, values: [1, 2]),
        new UiProp('actions', UiPropType::Array, default: [], items: new UiProp('action', UiPropType::Object, properties: [
            new UiProp('label', required: true),
            new UiProp('href', required: true, description: 'Through ui_href(): a script URL renders no link.'),
            new UiProp('variant', default: 'solid', values: ['solid', 'soft', 'outline', 'ghost', 'link']),
            new UiProp('icon', default: '', description: 'A Lucide icon name after the label.'),
        ])),
    ],
    examples: [
        new UiExample('default', 'Product launch', [
            'eyebrow' => 'New in 2026.10',
            'title' => 'Ship the interface, not the plumbing',
            'lead' => 'Server-rendered components, native popovers and one transport for every interaction.',
            'actions' => [['label' => 'Get started', 'href' => '#start'], ['label' => 'Read the docs', 'href' => '#docs', 'variant' => 'outline']],
        ]),
        new UiExample('centered', 'Centred', ['title' => 'One place for your whole team', 'lead' => 'Plan, build and ship together.', 'align' => 'center']),
    ],

— vendor/semitexa/platform-ui/src/Application/Component/Builtin/Block/HeroBlockComponent.php

#[UiState]

Semitexa\PlatformUi\Attribute\UiState

Applies to: property

Takes no arguments.

            #[UiState]
            public int $count = 0;

— vendor/semitexa/platform-ui/src/Attribute/UiOn.php

#[UiUrl]

Semitexa\PlatformUi\Attribute\UiUrl

Applies to: class. Repeatable.

parameter type required
prop string yes
as string no
history string no
type string no
values array no
maxLength int no
min int no
max int no
except string|int|bool|null no
        #[UiUrl(prop: 'q', maxLength: 80)]
        #[UiUrl(prop: 'status', values: ['new', 'paid'])]
        #[UiUrl(prop: 'page', type: 'int', min: 1, except: 1)]
        final class OrdersComponent {}

— vendor/semitexa/platform-ui/src/Attribute/UiUrl.php

Have a product idea?One free MVP every month