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