What is a Block?
A block is one typed piece of a page: a heading, a paragraph, an image, a form field, a table, a card. A surface is blocks arranged in a tree, and an app is a set of surfaces.
PhiCo composes from a real catalog
Blocks are not invented on demand. Your World has a catalog of installed blocks, each one described by a manifest that says what it is for and which properties it accepts, and PhiCo composes from that catalog only. If a block does not exist, no amount of asking will summon it — which is why a proposal can be trusted to render.
blocks compose into surfaces enhanced by capabilities
The categories
The installed catalog is organised into eight categories:
| Category | What lives there |
|---|---|
| text | Headings, paragraphs, quotes, lists. |
| media | Images, video, galleries, logos. |
| layout | Containers, grids, columns, spacers — the structure other blocks sit in. |
| panel | Cards, sections, banners, hero and feature arrangements. |
| control | Buttons, links, badges, avatars, breadcrumbs, tabs. |
| form | Inputs, selects, checkboxes and the form container that submits them. |
| data | Tables, lists and repeaters that render records. |
| feedback | Alerts, empty states and status messages. |
The exact list is whatever your World has installed — your account shows the live catalog, and the marketplace carries the rest.
Block properties
Every block has configurable properties:
- Content — the actual content: text, images, labels.
- Styling — colours, typography, borders, shadows.
- Spacing — margin, padding, gaps.
- Responsive — behaviour at different screen sizes.
Property values are validated against the block’s own schema, so an invalid value is refused when it is set rather than discovered after publish.
What about hero sections and pricing tables?
Those are compositions, not blocks. Rather than ship a rigid block per pattern, PhiWebs keeps the pieces small and combines them:
- Starters — pre-composed arrangements you can begin from.
- Marketplace — blocks and starters we publish.
- Copy and customise — start from any starter and change it.
Block composition example
How blocks compose into a hero section:
container (full-width, centered)
├── heading (h1: "Welcome")
├── text (the subtitle)
├── grid (2 columns)
│ ├── button (primary: "Get started")
│ └── button (secondary: "Learn more")
└── image (hero illustration)