Verified against Semitexa Ultimate 2026.09.19.1020

PlatformUi attributes

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

#[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', 'arrow-nav'],
)]
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
#[AsUiContract(
    summary: 'Group related content in a themed surface with optional media and actions.',
    props: [
        new UiProp('variant', default: 'elevated', values: ['elevated', 'outlined', 'plain']),
        new UiProp('title', default: '', description: 'Heading used when the header slot is empty.'),
        new UiProp('subtitle', default: ''),
    ],
    examples: [
        new UiExample('default', 'Project overview', ['title' => 'Your workspace', 'subtitle' => 'A place for the next idea'], ['body' => 'Build something useful.', 'footer' => 'Updated just now']),
        new UiExample('outlined', 'Outlined', ['variant' => 'outlined', 'title' => 'A quieter surface'], ['body' => 'The same content, another token-driven treatment.']),
        new UiExample('empty', 'Empty', ['title' => 'Nothing here yet'], ['body' => 'Create your first item to get started.']),
    ],
    previewSafe: true,
)]
final class CardComponent

— vendor/semitexa/platform-ui/src/Application/Component/Builtin/CardComponent.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',
)]
final class AlertPrimitive

— vendor/semitexa/platform-ui/src/Application/Service/Primitive/Builtin/AlertPrimitive.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
    #[UiOn(part: 'input', event: 'change')]
    public function onInputChanged(UiInteractionEvent $event): UiInteractionResult

— vendor/semitexa/platform-ui/src/Application/Component/Builtin/FieldComponent.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: 'form', uses: FormRootPrimitive::class)]
#[UiSlot(name: 'field', description: 'Per-field edit binding anchor (field.edit).')]
#[UiSlot(name: 'presence', description: 'Presence heartbeat binding anchor (presence.ping).')]
#[UiSlot(name: 'lock', description: 'Lock lifecycle binding anchor (lock.acquire/release/heartbeat).')]
#[UiSlot(name: 'content', description: 'Caller-provided field inputs (tagged data-ui-field-name).')]
final class CollaborativeFormComponent

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

#[UiSlot]

Semitexa\PlatformUi\Attribute\UiSlot

Applies to: class. Repeatable.

parameter type required
name string yes
description string no
#[UiSlot(name: 'trailing', description: 'Optional inline actions rendered after the trail (e.g. a copy-path button or status badge).')]
final class BreadcrumbComponent

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