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