schema/schema library

Classes

BooleanComponent
CardBadge
CardLayout
How one record renders as a list card — the mobile answer to Filament's data table. Laravel derives a default from the table columns; a resource may override any slot. Every slot is optional: a card with only a title is a valid list tile.
CardLeading
CardMeta
ColorComponent
ColorPicker. The panel declares one of four string formats via ->hex()/->hsl()/->rgb()/->rgba()getFormat() is the ONLY accessor ColorPicker exposes (measured in vendor/filament/forms/src/ Components/ColorPicker.php), and the value on the wire is a plain string in that format. This client never converts it to another one: an rgb field gets rgb back, byte for byte, everywhere it did not itself edit the text.
DateComponent
date / datetime / time. One class, because the three differ only in which parts of a moment they carry.
EntryComponent
A read-only infolist entry. Every kind displays one field, so they share one class; the extra slots are per-kind and null elsewhere.
FileComponent
A file upload field. readOnly defaults to true so an older server that never publishes the key — meaning it predates upload support entirely — reads as inert rather than a renderer guessing it can accept one. A current server publishes false for a writable field, single or multiple.
KeyValueComponent
A keyvalue field: a free-form set of string key/value pairs.
LayoutComponent
A container node. Holds no value, so name is always null; the renderer decides how each kind frames its children.
MapPointComponent
map_point and read-only map_point_entry share one value/camera model. Rendering is intentionally supplied by the optional maps companion.
MapPointValue
One geographic point. Numeric strings are accepted because the upstream Filament plugin documents and stores that shape; the mobile client always exposes numbers and sends numbers back.
MediaItem
One file from Spatie's medialibrary — the client's read of an entry in the <field>.__media sibling a medialibrary-backed field publishes alongside its raw value (a media-uuid string, or a list of them for a multi-file field). The raw value is what a form submits back; this is what a screen renders.
MediaSet
The parsed <field>.__media sibling: every MediaItem the server could resolve for a medialibrary-backed field's raw uuid token(s).
NumberComponent
PanelSchema
The whole panel document. Contains only the resources the authenticated user may view — the server filters, the client never decides.
PhoneComponent
A phone value remains a string end to end. Formatting and validation stay server-side so the client never rewrites a number the panel stored.
PollConfig
Optional background-revalidation cadence published by the panel.
RealtimeConfig
Public Reverb connection settings published by the panel.
RelationDescriptor
One relation manager published for a resource: a related list of records rendered as cards, e.g. a banner's tags. Absent from the contract entirely on a server predating P6d — that reads as no relations, not an error.
ReorderConfig
A resource's drag-to-reorder capability (P18) — present on ResourceSchema.reorder if and only if the web panel's table declared a non-pivot reorder column and authorized this user for it. See contract/README.md's "Reordering" section for the full server contract.
RepeaterComponent
A repeater field: a list of rows built from a single item template.
ResourceBadge
The web sidebar's count badge for one resource — the value is whatever string the panel renders (usually a count), the colour the same semantic vocabulary card badges use (success, warning, …).
ResourceLabels
Display strings for a resource. Already localised by Laravel — the client uses them verbatim.
ResourcePermissions
What the authenticated user may do with a resource, as decided by the Laravel policies. Every flag denies by default: a missing key must never read as permission.
ResourceSchema
One Filament resource, rendered as a list of cards plus create/edit/view pages. Construct it directly for a Dart-defined override, or via ResourceSchema.fromJson for the server-served schema — same class, same renderer, one code path.
ResourceSearch
ResourceSort
RichAttrs
The attrs a node in the closed vocabulary carries: textAlign on paragraph/heading, level on heading, src on image. All three live on one small value type rather than a RichNode subclass per node kind, since no node carries more than one of them.
RichDocument
A parsed rich-text document — the client's read of the ProseMirror tree TipTap/Filament's RichContentRenderer publishes as <path>.__rich.doc, alongside the flattened <path>.__rich.text a card reads instead (design spec, "Wire shape"). The sibling is absent entirely when there is nothing to convert — absence means unavailable, and every consumer falls back to the raw string; that fallback happens above this parser, which only ever sees a sibling that exists.
RichMark
A mark applied to a text node — bold, italic, link, strike, underline or code. Only link carries an attribute in the closed vocabulary (design spec), so href is the one typed extra rather than a generic bag.
RichNode
One node of the ProseMirror tree: doc, paragraph, text, heading, bulletList, orderedList, listItem, blockquote, horizontalRule, image — or a type this build does not recognise, carried through by its raw string rather than rejected (see RichDocument's doc).
SchemaComponent
One node of a Filament schema tree.
SelectComponent
Covers select and multiselect, and — via optionsUrl — BelongsTo relations. A relation is a select with a URL, not a separate concept.
SelectOption
One choice in a SelectComponent. value stays untyped because the contract allows ints (foreign keys) and strings (enums) alike.
SliderComponent
slider. min/max/step are presentation bounds for the control; the enforceable half of the same declaration already arrives as the node's ordinary rules (required/numeric/min/max, which Filament's Slider force-registers server-side), so client-side validation needs no slider-specific machinery at all.
TagsComponent
A tags field: a free-form list of strings.
TextComponent
text, textarea, email and password in one class: they differ only by keyboard, obscurity and line count, all of which the renderer derives from kind.
ToggleButtonsComponent
toggle_buttons. Carries the same flattened option shape select/radio publish (SelectOption), but never an optionsUrl — the type has no search affordance server-side, so an over-cap field inlines its full list and this client renders however many options arrive.
UnknownComponent
A component type this build does not know how to render.
ValidationRules
Client-side hints for immediate feedback only. The server revalidates every submission, so anything not expressible here is simply omitted rather than approximated.

Enums

BooleanKind
ColorFormat
ComponentDirection
An optional node-level override of the panel's layout direction.
DateKind
EntryKind
LayoutKind
PanelDirection
The panel's layout direction, published on the wire as a closed set.
PhoneFormat
TextKind

Exceptions / Errors

SchemaFormatException
Thrown when the panel JSON does not match the contract.
UnsupportedSchemaVersionException
Thrown when the server speaks a newer contract than this build understands.