Skip to content

docs: reorganize and validate release documentation - #1

Merged
drav0011 merged 48 commits into
mainfrom
reorg
Sep 20, 2026
Merged

drav0011 merged 48 commits into
mainfrom
reorg

Conversation

@drav0011

Copy link
Copy Markdown
Contributor

Updates the documentation structure and release-facing API guidance, including the Server declaration examples and the supported UI component-extension boundary. Validation: yarn typecheck; yarn build; clean strict TypeScript 6 checks against the released Server 0.2.0, Config 0.3.0, and UI 0.12.1 packages.

drav0011 and others added 30 commits August 26, 2026 10:49
A container-screens section covering the screen model, the ui-compile
Regolith filter and the measured chest-screen facts, component pages
for Container, Slot, SlotGrid, PlayerInventory and Hotbar, live text
on the Text page, and the item view pages gone with their components.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ble findings

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every handler now receives a single event instead of positional arguments:
`Button.onPress`, `Slot.onInsert`/`onRemove`, `Container.onOpen`/`onClose`,
`Form.onSubmit`/`onCancel`. A new Handler events section on the components
page is the one place the event types are listed, and each prop's page links
to it. `Form.onSubmit` carries the submitting player alongside `values`.

Custom native components are marked experimental: they are bound to the
serialization wire format rather than to the component API.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A container screen bakes a button's children into its face, colour included,
so an ore-styled button's caption stays at its enabled colour while the
background swaps to the disabled one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Measured 2026-08-27. A control the pack places itself owns a `form_buttons`
entry only when the control ITSELF carries a `collection_details` binding on
that collection; a host above it supplying `collection_index` is enough to
read the entry and to be pressed, but not for the press to be attributed.
Without it the form closes and script sees `canceled`, indistinguishable from
Esc — no log line, no visual difference.

Also recorded: a form's content can be replaced without touching a vanilla
file, since the library's own container is already gated on the protocol
header and accepts placed subtrees by ordinary reference.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…st and returns { config, shared }

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Seven token files under src/css/bedrock/ mapped onto Infima through
infima-bridge.css; custom.css is now import lines only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Every package gets its own docs folder, route and sidebar, registered in
src/data/sections.ts and grouped into Framework, UI, Content and Tooling.
New sections for the Regolith filters, the CLI and bds-runner. Old routes
redirect. Pages follow STYLE.md: props tables, sentence-case headings,
package-name overviews, core.* titles on the server API, no history.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Hero, package grid, feature cards, code tour and footer built from the
design kit; Docs mega-menu, Showcase link, icon links and DocSearch in the
navbar; Badge, Tag, Kbd, Icon, Button, FeatureCard and PackageCard usable
from any page; npm/yarn/pnpm install tabs; ore syntax palette for code.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Props tables carry <Req /> after the name instead of "(required)" in the
name cell or in the default column.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Header collapses in steps: full layout down to 996px, the right cluster
becomes icons at 768px, the left links at 600px. Docs and Showcase share
one shape, GitHub, Discord and the theme switch share one icon box, and
the theme toggle is rebuilt on the site's own icon set.

Docs pages get a drawer trigger that opens the section's page tree with
the section switcher on top; below 600px the drawer also carries the
social links and the theme switch.

Footer lays out in three columns, then two with the wordmark centered.

Release states are named beta, 1.0-rc and 1.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The three ALGOLIA_ variables come from a local .env or, in the deploy
workflow, from repository variables and secrets. Without them the site
builds with no search box.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…cards

The Showcase route, its navbar item and the icon-nav component are gone;
the Docs menu keeps its label at every width. Below 996px, where the
search collapses to a button, the social links and the theme switch move
into the drawer on the pages that have one.

The page outline gains an "On this page" heading and the rule now hugs
the list instead of the container's padding. Next steps items render as
cards, each one clickable in full.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Yarn rewrites .yarn/install-state.gz on every install. It is a local
cache, so it only produced a dirty file in every diff.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…orking directory

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The shared page still documented `open()`, `persisted()`, `leaf()`, branches and
`patch`; the mirror is now a flat record, one observable per key, owner-writes-only
and storing nothing — a value that must survive a restart is a db document mapped
onto a key. `core.state` is removed, so its section, its row in the runtime table
and the two RPC examples reading through it go with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Server: config as three db collections with the nine core:config methods,
translations and guides as announcements, and new pages for events, db,
pages, Announcement and authorize; guides for the three channels and the
trust model. Sync: the events subsystem. New sections for db (overview,
collections, schema, targets, resolver) and observable (one page per
export), both promoted from planned. Every import reads from the public
package name. The section switcher drops the scope prefix.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A `by drav.dev` wordmark under the tagline, themed light and dark. The hero
says "addons" rather than "behavior packs", and `sync` sits with the rest of
the transport packages in the section list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ed screens

`ui-compile` is `ui-compiler` throughout. The compiler is a `Compiler` group
under `/docs/ui` rather than a section of its own, and the runtime half that
section carried becomes three guides: hosts, navigation and state.

New pages: Link, List, Tabs, Disclosure, Expect, Embed, useObservable,
useMechanism, api/errors and api/compiled-screens.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`createStackNavigator` and `useRoute` describe an API that no longer exists: a
compiled screen is drawn from the pack by its title and cannot be swapped into
a root, so the stack holds keys. New pages for `navigate`/`back`/`replace`/
`reset`, the real `useNavigation`, and the screen and page reference feeds.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`screens`, `page`, `guide`, `guideReference` and `translations` are no longer
register fields: a bundle is published with `core.translations.provide()`, and
screens and list pages ride the registries `@bedrock-core/navigation` builds.
`core.guides` and `core.pages` are gone with them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… declarations

`Input`, `Dropdown` and `Slider` no longer exist in `@bedrock-core/ui`; the four
deprecated pages are gone, redirected to their `Form.*` equivalents.

The ore-styled components of the same names are `Form.Input` / `Form.Dropdown` /
`Form.Slider` under the theme, so they take a `name` and report on submit rather
than holding a value and calling `onChange`. `Checkbox` and `Toggle` ask what a
boolean becomes on the screen they are drawn on, and the page says which props
each host uses.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
drav0011 and others added 18 commits September 13, 2026 03:00
… member

The themed fields are no longer members of `Form`: `Checkbox`, `Toggle`,
`Radio`, `ToggleButtonGroup`, `Slider`, `Dropdown` and `Input` each serve every
host they can be drawn on, so the seven `Form.*` pages are gone and each page
says which props its host uses. `Radio` and `ToggleButtonGroup` take an options
array rather than owning children through context.

Adds a page for `Trail` and documents `fieldLabel`, the `to` / `back` links on
`Button`, `MenuRow` and `Header`, and the live-text reservations on all three.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Roots, Layout, Content, Controls, Compiled, Container cells, Form and
Cross-pack, each with a generated index saying what the host spends on it.
Every link to a moved page follows, and the old flat routes redirect.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A root names a host and has no members. Every control is a top-level
component and its capabilities decide which hosts it works on: Toggle,
Select and Option serve all three and draw differently on each, while
Input, Slider and Dropdown only exist inside a Form.

`Form.Button` becomes `Button action`, which takes a handler, `'submit'`
or `'exit'`. The themed Form group goes with it — ore-styled's root drew
nothing once its one member was gone.

The docs lead the API here; `@bedrock-core/ui` still exports `Form.*`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
discovery.peers, discovery.incompatiblePeers and core.registry.addons read
with get() and watch with subscribe(). lastSeen is no longer a field on
PeerInfo or IncompatiblePeer, and core.host.hostId is now core.host.id.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Search is built into the site at build time with docusaurus-search-local; the Algolia block and
  its environment variables are removed.
- catalog is a section of its own, and config's description covers settings only.
- Every package is labelled beta.
- The section switcher opens with the active section in view, a table's name column wraps only at
  spaces, and redirects point at the current page locations.
- The addon list, config screen and guide page screenshots are retaken.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…cal sidebar

- ToggleButtons replaces ToggleButton, and Tabs and fieldLabel have pages; Tabs and Trail show
  screenshots.
- Header and Trail describe a baked trail as one label per language.
- The sidebar lists the overview, the components alphabetically, then fieldLabel and theme.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- catalog documents the addon list and the page an addon publishes.
- config leaves server for pages of its own: settings, commands, permissions and scopes, schema to
  screens, localization and the API.
- guides gains authoring, localization and API pages: a paragraph with links is drawn with Trans,
  and operator-only pages are compiled per audience.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… and settings

- i18n gains authoring, libraries and API pages, including tags for Trans.
- A filter page says what the filter does, how to install it and its settings; the guides material
  lives in the guides section and the ui-compiler material in the compiler pages.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- uiOf(core) has a page of its own: the show methods, the navigator and the way back. It replaces
  the server's UI integration guide.
- references and navigate describe the params a link carries from a static screen and to another
  realm.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- register() takes one declaration per field, each installed into a runtime slot, with a section
  on writing one; core.host is reserved for capabilities.
- The mirror applies a namespace's entries only from its owner.
- A block document needs a block entity with dynamic properties.
- Announcement documents isRecord and which packages construct one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ld as generated

- bds-runner documents optimize, the build pinned from the packs' min_engine_version on the first
  run, and the nethernet transport.
- cli documents its three prompts, the test profiles and GameTests, and the apps the template
  installs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Component pages sit directly under components/, listed alphabetically after the overview, which
  keeps the groups as prose.
- Trans has a page, Button documents hug, and Link's params must be plain data on a static screen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… and its checks

- Writing a screen: names and keys, reserved values, carried visibility, static screens and their
  link params, library and app screens, import time.
- What the build writes: roots and mounts, entity and block hosts, text composed per language, the
  character table.
- Build checks lists every check that stops a build, Trans included.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…block container screens

- API gains ModalContext and withControl; compiled screens describe link params and
  whyNotPlainData.
- Hooks gain useComposed, and useObservable says what a form and a container screen do with a
  change.
- Handlers are onPress, the render pack is 1.12.x on protocol v0009, and a container screen is
  hosted by an entity or a block.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Comment out the 'Marketplace ready' entry in the TRUST array
- Remove the conditional rendering of the 'soon' badge in the Hero component
@drav0011
drav0011 marked this pull request as ready for review September 20, 2026 23:03
Copilot AI lite review requested due to automatic review settings September 20, 2026 23:03

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Several release-facing examples use the wrong form event shape, and the Prism loader overwrites an existing global instance.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 8 Medium severity · 3 Low severity

Open (11)
What changed in this PR

Reorganizes the documentation into package-based sections and refreshes the Docusaurus theme, navigation, homepage, and release-facing API guidance.

Changes:

  • Adds custom theme components, design tokens, Prism styling, and package-manager MDX helpers.
  • Replaces the former documentation hierarchy with generated package sections and updated API/component guides.
  • Updates build tooling, CI actions, cleanup scripts, and repository guidance.
File Description
tsconfig.json Adds TypeScript deprecation compatibility.
src/​theme/​TOC/​styles.module.css Styles the table of contents.
src/​theme/​TOC/​index.tsx Adds a custom TOC heading.
src/​theme/​prism-include-languages.ts Loads Prism grammars.
src/​theme/​NavbarItem/​ComponentTypes.tsx Registers custom navbar item types.
src/​theme/​Navbar/​MobileSidebar/​Toggle/​index.tsx Adds the mobile sidebar trigger.
src/​theme/​Navbar/​MobileSidebar/​Layout/​index.tsx Customizes mobile sidebar layout.
src/​theme/​Navbar/​MobileSidebar/​Header/​styles.module.css Styles the mobile sidebar header.
src/​theme/​Navbar/​MobileSidebar/​Header/​index.tsx Adds mobile social links and controls.
src/​theme/​MDXComponents.tsx Registers global MDX components.
src/​theme/​Footer/​index.tsx Adds the package-aware footer.
src/​theme/​DocSidebar/​Mobile/​index.tsx Customizes mobile documentation navigation.
src/​theme/​DocSidebar/​Desktop/​Content/​index.tsx Adds the section switcher to desktop sidebars.
src/​theme/​ColorModeToggle/​styles.module.css Styles the color-mode toggle.
src/​theme/​ColorModeToggle/​index.tsx Replaces the color-mode toggle.
src/​prism/​bedrock.ts Adds the Bedrock Prism theme.
src/​pages/​index.tsx Rebuilds the homepage composition.
src/​pages/​index.module.css Removes obsolete homepage styles.
src/​css/​custom.css Loads the new design system CSS.
src/​css/​bedrock/​typography.css Adds typography tokens.
src/​css/​bedrock/​spacing.css Adds spacing and layout tokens.
src/​css/​bedrock/​motion.css Adds motion tokens.
src/​css/​bedrock/​fonts.css Adds font definitions.
src/​css/​bedrock/​elevation.css Adds elevation tokens.
src/​components/​PackageManager.tsx Adds npm, Yarn, and pnpm helpers.
src/​components/​PackageGrid/​styles.module.css Styles the package grid.
src/​components/​PackageGrid/​index.tsx Adds the homepage package grid.
src/​components/​nav/​switcher.module.css Styles the section switcher.
src/​components/​nav/​IconLink.tsx Adds reusable icon links.
src/​components/​HomepageFeatures/​styles.module.css Removes obsolete feature styles.
src/​components/​HomepageFeatures/​index.tsx Removes the old homepage features.
sidebars.ts Uses a shared autogenerated sidebar.
scripts/​clean.mjs Adds repository cleanup logic.
README.md Refreshes repository usage guidance.
docs/​ui/​ui-runtime/​ui-runtime.md Removes superseded UI runtime overview.
docs/​ui/​ui-runtime/​hooks/​hooks.md Removes superseded hooks overview.
docs/​ui/​ui-runtime/​components/​Panel.md Removes superseded Panel guide.
docs/​ui/​ui-runtime/​components/​modal-field-props.md Removes superseded modal-field guide.
docs/​ui/​ui-runtime/​components/​ItemRenderer.md Removes superseded ItemRenderer guide.
docs/​ui/​ui-runtime/​components/​Image.md Removes superseded Image guide.
docs/​ui/​ui-runtime/​components/​Form/​FormToggle.md Removes superseded form toggle guide.
docs/​ui/​ui-runtime/​components/​Form/​FormOption.md Removes superseded form option guide.
docs/​ui/​ui-runtime/​components/​Form/​FormInput.md Removes superseded form input guide.
docs/​ui/​ui-runtime/​components/​Form/​FormButton.md Removes superseded form button guide.
docs/​ui/​ui-runtime/​components/​Form/​_category_.json Removes obsolete category metadata.
docs/​ui/​ui-runtime/​components/​components.md Removes superseded components index.
docs/​ui/​ui-runtime/​api/​render.md Removes superseded render guide.
docs/​ui/​ui-runtime/​api/​api.md Removes superseded API index.
docs/​ui/​ui-runtime/​_category_.json Removes obsolete category metadata.
docs/​ui/​ore-styled/​Toggle.md Removes superseded toggle guide.
docs/​ui/​ore-styled/​Radio.md Removes superseded radio guide.
docs/​ui/​ore-styled/​ItemSlot.md Removes superseded item-slot guide.
docs/​ui/​ore-styled/​ItemContainer.md Removes superseded item-container guide.
docs/​ui/​ore-styled/​Input.md Removes superseded input guide.
docs/​ui/​ore-styled/​Form/​FormToggle.md Removes superseded themed form toggle guide.
docs/​ui/​ore-styled/​Form/​FormSlider.md Removes superseded themed form slider guide.
docs/​ui/​ore-styled/​Form/​FormInput.md Removes superseded themed form input guide.
docs/​ui/​ore-styled/​Form/​FormCheckbox.md Removes superseded themed checkbox guide.
docs/​ui/​ore-styled/​Form/​FormButton.md Removes superseded themed form button guide.
docs/​ui/​ore-styled/​Form/​_category_.json Removes obsolete category metadata.
docs/​ui/​ore-styled/​EquipmentSlots.md Removes superseded equipment guide.
docs/​ui/​ore-styled/​Checkbox.md Removes superseded checkbox guide.
docs/​ui/​ore-styled/​Button.md Removes superseded themed button guide.
docs/​ui/​ore-styled/​_category_.json Removes obsolete category metadata.
docs/​ui/​navigation/​useRoute.md Removes superseded navigation hook guide.
docs/​ui/​navigation/​navigation.md Removes superseded navigation overview.
docs/​ui/​navigation/​_category_.json Removes obsolete category metadata.
docs/​ui/​i18n/​_category_.json Removes obsolete category metadata.
docs/​ui/​hooks/​useTranslation.md Updates translation hook documentation.
docs/​ui/​hooks/​useReducer.md Updates reducer hook documentation.
docs/​ui/​hooks/​usePlayer.md Updates player hook documentation.
docs/​ui/​hooks/​useMechanism.md Documents mechanism selection.
docs/​ui/​hooks/​useExit.md Updates exit hook documentation.
docs/​ui/​hooks/​useEvent.md Updates event hook documentation.
docs/​ui/​hooks/​useContext.md Updates context hook documentation.
docs/​ui/​hooks/​useComposed.md Documents composed text.
docs/​ui/​hooks/​hooks.md Adds the new hooks index.
docs/​ui/​hooks/​_category_.json Updates hooks category metadata.
docs/​ui/​guides/​handler-events.md Documents handler event objects.
docs/​ui/​guides/​custom-native-components.md Documents the component extension boundary.
docs/​ui/​guides/​_category_.json Converts guides to a generated index.
docs/​ui/​get-started/​_category_.json Removes obsolete category metadata.
docs/​ui/​flexbox/​_category_.json Removes obsolete category metadata.
docs/​ui/​components/​Tabs.md Documents Tabs.
docs/​ui/​components/​SlotGrid.md Documents SlotGrid.
docs/​ui/​components/​Scroll.md Updates Scroll documentation.
docs/​ui/​components/​PlayerInventory.md Documents PlayerInventory.
docs/​ui/​components/​List.md Documents List.
docs/​ui/​components/​Link.md Documents Link.
docs/​ui/​components/​Input.md Documents Input.
docs/​ui/​components/​Image.md Updates Image documentation.
docs/​ui/​components/​Hotbar.md Documents Hotbar.
docs/​ui/​components/​Fragment.md Documents Fragment.
docs/​ui/​components/​Expect.md Documents host expectations.
docs/​ui/​components/​Disclosure.md Documents Disclosure.
docs/​ui/​components/​Background.md Updates Background documentation.
docs/​ui/​components/​_category_.json Updates components category metadata.
docs/​ui/​compiler/​checks.md Documents compiler checks.
docs/​ui/​compiler/​_category_.json Updates compiler category metadata.
docs/​ui/​api/​withControl.md Documents withControl.
docs/​ui/​api/​TranslationContext.md Updates translation context documentation.
docs/​ui/​api/​render.md Updates render documentation.
docs/​ui/​api/​ModalContext.md Documents modal context.
docs/​ui/​api/​errors.md Documents UI errors.
docs/​ui/​api/​createContext.md Updates context creation documentation.
docs/​ui/​api/​api.md Adds the new UI API index.
docs/​ui/​api/​_category_.json Updates API category metadata.
docs/​sync/​rpc.md Updates RPC documentation.
docs/​sync/​events.md Documents sync events.
docs/​server/​sync/​_category_.json Removes obsolete category metadata.
docs/​server/​server-runtime/​_category_.json Removes obsolete category metadata.
docs/​server/​guides/​_category_.json Adds the server guides category.
docs/​server/​get-started/​overview.md Removes superseded server overview.
docs/​server/​get-started/​_category_.json Removes obsolete category metadata.
docs/​server/​api/​host.md Documents host election.
docs/​server/​api/​announcement.md Documents announcements.
docs/​server/​api/​_category_.json Adds the server API category.
docs/​ore-styled/​Tabs.md Documents themed Tabs.
docs/​ore-styled/​Slider.md Documents themed Slider.
docs/​ore-styled/​Input.md Documents themed Input.
docs/​ore-styled/​fieldLabel.md Documents fieldLabel.
docs/​ore-styled/​Divider.md Updates Divider documentation.
docs/​ore-styled/​Card.md Updates Card documentation.
docs/​observable/​last.md Documents last.
docs/​observable/​effect.md Documents effect.
docs/​observable/​computed.md Documents computed.
docs/​observable/​batch.md Documents batch.
docs/​guides/​api.md Documents the guides API.
docs/​flexbox/​index.md Updates the flexbox overview.
docs/​flexbox/​computeLayout.md Updates layout documentation.
docs/​filters/​ui-compiler.md Documents the UI compiler filter.
docs/​filters/​index.md Updates the filters overview.
docs/​filters/​i18n.md Documents the i18n filter.
docs/​filters/​ci.md Documents CI execution.
docs/​config/​permissions-and-scopes.md Documents config permissions.
docs/​config/​localization.md Documents config localization.
docs/​config/​index.md Adds the config overview.
docs/​config/​api.md Documents the config API.
docs/​catalog/​index.md Adds the catalog overview.
docs/​catalog/​api.md Documents the catalog API.
docs/​bds-runner/​index.md Adds the BDS runner overview.
.gitignore Ignores local build artifacts and environment files.
.github/​workflows/​deploy.yml Updates deployment actions and Node.js.
.env.example Documents that no environment variables are required.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

[`<Form>`](../components/Form.md) provides it once, at its own root, with the `onSubmit` / `onCancel` handlers it was given:

```tsx
<Form onSubmit={values => save(values)}>
Comment on lines +52 to +53
<Toggle name={'music'} />
<Input name={'nickname'} />
Exactly one `'submit'` is required, and at most one `'exit'` beside it.

```tsx
<Form onSubmit={({ values }) => apply(values)} onCancel={() => back(player)}>
## Usage

```tsx
<Form onSubmit={v => console.warn(v.mode)}>
## Usage

```tsx
<Form onSubmit={v => console.warn(v.nickname)}>
## Usage

```tsx
<Form onSubmit={v => console.warn(v.volume)}>
PrismObject.languages.jsonc = PrismObject.languages.json5;
delete (globalThis as { Prism?: unknown }).Prism;
if (typeof PrismBefore !== 'undefined') {
(globalThis as { Prism?: unknown }).Prism = PrismObject;
Comment thread docs/catalog/index.md
catalog.open(player);
```

`registerCatalog()` takes no arguments: the list is the [registry](/docs/server/api/registry), and each page is what its addon published.

A handler that returns a promise keeps the press's transaction open until it settles, which is what makes an async handoff flash-free. See [State](../guides/state.md#one-ui-slot-per-player).

This is the primitive [`@bedrock-core/ore-styled`'s `Button`](/docs/ore-styled/Button) is built on.

- Prefer `Select` over `Dropdown` when the option count is small and you want everything visible without an extra tap.
- Keep `Option` children order stable across renders — the result is an index-based, like `Dropdown`.
- This is the primitive [`@bedrock-core/ore-styled`](/docs/ore-styled)'s [`Radio`](/docs/ore-styled/Radio) and [`ToggleButtons`](/docs/ore-styled/ToggleButtons) are built on — reach for those on a themed screen rather than styling this by hand.
@drav0011
drav0011 merged commit 5dc2f48 into main Sep 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants