Open navigation

API Reference

The v0.44.0-beta.1 current line documents only the five consumer packages. Retired alpha packages and internal subpaths are not authoring surfaces.

01 / interface rule

Authoring starts at product packages.

Current documentation, starters and dogfood use the five supported interfaces. Loader, action and form semantics are frozen at 0.42.0 (ADR-0122); framework session, active cache and streaming are outside the current contract and have no assigned version.

02 / supported surface

Five products, one application path.

Each package owns a distinct consumer decision; absorbed implementation packages remain private.

@openelement/adapter-vite@openelement/adapter-vite

The official Vite, content, static-build and Nitro output adapter.

Use `buildApp()` or the generated build task.Plugin ordering, manifests and content scans are adapter implementation details.
rootcli/buildcli/startnitro-mountsitemap
BUILD
@openelement/app@openelement/app

The application surface for pages, routes, islands and request/render semantics.

Use `definePage`, `defineIslandConfig` and `defineApp` for application authoring.The router and request-driver implementation are internal product knowledge.
rootmodelpreactspa
CORE
@openelement/create@openelement/create

The installed starter and zero-context consumer entrypoint.

Generated projects expose `dev`, `check`, `test`, `build`, `start` and `preview`.The starter imports product packages only.
root
BUILD
@openelement/element@openelement/element

The supported Custom Element authoring surface for JSX, DSD, hydration, signals and styles.

Start here for standalone element authoring.Author compiled elements as `@element`-decorated `OpenElement` classes with `@property` state; `StyleSheet` and signal helpers come from the same root.@experimental additions: the `element`/`property` decorator intrinsics (#1209) and the dangerous-key guards `isDangerousKey`, `injectPropsSafe`, `DANGEROUS_KEYS` (#1214).
rootbuild-utilsjsx-dev-runtimejsx-runtimesanitize
CORE
@openelement/ui@openelement/ui

Optional primitives retained only when they have demonstrated reusable behavior.

UI is not required to use OpenElement.Website-specific brand, hero, lab and layout artifacts are not UI package contracts.
rootopen-badgeopen-buttonopen-callout+8 more
OPTIONAL

※ Internal subpaths (app/i18n, adapter-vite build pipeline, element hydration modules) stay importable for tooling but carry no compatibility promise. The public type surface is explicit — no export-star seams on the v0.44.0-beta.1 line.

Generated from repository truth by deno task package-surface:check and machine-checked against each package's exports map.

03 / export reference

Every documented export, anchored.

Each entry below is enumerated from the package exports maps by the reference generator — name, kind, stability class and JSDoc summary are generated facts, never hand-copied. The anchor matches the generated search record for the same export.

buildApp@openelement/adapter-vite · rootfunctionstable-candidate

Build an OpenElement application through the supported adapter boundary.

packages/adapter-vite/src/index.ts:64
buildHeadExtras@openelement/adapter-vite · rootfunctionstable-candidate

Build the headExtras string from FrameworkOptions.inject.

packages/adapter-vite/src/head-injection.ts:247
CollectionEntry@openelement/adapter-vite · rootinterfacestable-candidate

One loaded collection entry: slug, validated frontmatter and rendered HTML.

packages/adapter-vite/src/internal/content/collection/types.ts:48
CollectionFieldDefinition@openelement/adapter-vite · rootinterfacestable-candidate

Declarative definition of one frontmatter field (type, required, default).

packages/adapter-vite/src/internal/content/collection/types.ts:5
CollectionFieldType@openelement/adapter-vite · roottypestable-candidate

Primitive frontmatter field types supported by content collections.

packages/adapter-vite/src/internal/content/collection/types.ts:2
CollectionOptions@openelement/adapter-vite · rootinterfacestable-candidate

Configuration of one content collection (directory, base path, schema).

packages/adapter-vite/src/internal/content/collection/types.ts:39
CollectionSchema@openelement/adapter-vite · rootinterfacestable-candidate

Declarative fields keep generated modules typed. `transform` covers values derived from filenames (for example a site's locale suffix) without making that convention part of the framework.

packages/adapter-vite/src/internal/content/collection/types.ts:30
CollectionSchemaContext@openelement/adapter-vite · rootinterfacestable-candidate

Context handed to a collection schema's `transform` hook.

packages/adapter-vite/src/internal/content/collection/types.ts:12
CollectionSchemaResult@openelement/adapter-vite · rootinterfacestable-candidate

The slug/frontmatter result a collection schema `transform` returns.

packages/adapter-vite/src/internal/content/collection/types.ts:20
createCollectionPlugin@openelement/adapter-vite · rootfunctionstable-candidate

Create the Vite plugin that loads one content collection into a generated data module.

packages/adapter-vite/src/internal/content/collection/plugin.ts:22
default@openelement/adapter-vite · rootfunctionstable-candidate

Low-level Vite plugin pipeline: SSR dev server, SSG and islands without the content/i18n conveniences of `openElement()`.

packages/adapter-vite/src/index.ts:43
generateSitemap@openelement/adapter-vite · rootfunctionstable-candidate

Generate sitemap.xml and optionally robots.txt from dist/ output.

packages/adapter-vite/src/internal/content/sitemap/generator.ts:79
HeadExtrasResult@openelement/adapter-vite · rootinterfacestable-candidate

Result of building head extras from FrameworkOptions.

packages/adapter-vite/src/head-injection.ts:235
loadCollectionData@openelement/adapter-vite · rootfunctionstable-candidate

Load a content collection from disk: parse frontmatter, validate the schema and render Markdown.

packages/adapter-vite/src/internal/content/collection/data.ts:10
mdxPlugin@openelement/adapter-vite · rootfunctionstable-candidate

Vite plugin compiling `.mdx` route files into compiled page modules.

packages/adapter-vite/src/plugin-mdx.ts:228
openElement@openelement/adapter-vite · rootfunctionstable-candidate

Create the full OpenElement Vite plugin set: pipeline, content collections, nav, i18n and sitemap.

packages/adapter-vite/src/app-vite.ts:38
OpenElementBlogOptions@openelement/adapter-vite · rootinterfacestable-candidate

Blog options stored in the adapter build context.

packages/adapter-vite/src/framework.ts:27
OpenElementBuildContextLike@openelement/adapter-vite · rootinterfacestable-candidate

Minimal build-context contract available to adapter sub-plugins.

packages/adapter-vite/src/framework.ts:52
OpenElementI18nContextOptions@openelement/adapter-vite · rootinterfacestable-candidate

Locale options carried through the build context to the i18n integration.

packages/adapter-vite/src/framework.ts:45
OpenElementNavSection@openelement/adapter-vite · rootinterfacestable-candidate

Navigation section produced by the adapter content pipeline.

packages/adapter-vite/src/framework.ts:33
OpenElementOptions@openelement/adapter-vite · rootinterfacestable-candidate

Options for the openElement() unified Vite entry.

packages/adapter-vite/src/app-vite.ts:28
OpenMdxPluginOptions@openelement/adapter-vite · rootinterfacestable-candidate

Options for the `.mdx` route plugin ({@linkcode mdxPlugin}).

packages/adapter-vite/src/plugin-mdx.ts:25
openPipeline@openelement/adapter-vite · rootfunctionstable-candidate

Low-level Vite plugin pipeline: SSR dev server, SSG and islands without the content/i18n conveniences of `openElement()`.

packages/adapter-vite/src/index.ts:43
OpenPipelineConfig@openelement/adapter-vite · rootinterfacestable-candidate

Options for the low-level {@linkcode openPipeline} Vite plugin pipeline.

packages/adapter-vite/src/index.ts:32
writeCollectionDataModule@openelement/adapter-vite · rootfunctionstable-candidate

Serialize loaded collection entries into the generated typed data module source.

packages/adapter-vite/src/internal/content/collection/data.ts:44
createOpenElementNitroHandler@openelement/adapter-vite · nitro-mountfunctionstable-candidate

Mounts an OpenElement request handler on a Nitro v3 route. Near pass-through: the event's standard `req` goes in, the handler's Response comes out — h3 v2 serves a returned Response as-is.

packages/adapter-vite/src/nitro-mount.ts:62
NitroRequestEvent@openelement/adapter-vite · nitro-mountinterfacestable-candidate

Minimal Nitro v3 route event shape (#857). Nitro v3 is fetch-native: its h3 v2 event carries `req`, a srvx ServerRequest that already IS a standard Request, so the pre-v3 method/path/headers/body translation layer is gone. The mount only wires the OpenElement runtime context around the standard Request → Response seam.

packages/adapter-vite/src/nitro-mount.ts:11
OpenElementNitroMountOptions@openelement/adapter-vite · nitro-mountinterfacestable-candidate

Options for mounting an OpenElement request handler under a Nitro/Node server.

packages/adapter-vite/src/nitro-mount.ts:21
generateSitemap@openelement/adapter-vite · sitemapfunctionstable-candidate

Generate sitemap.xml and optionally robots.txt from dist/ output.

packages/adapter-vite/src/internal/content/sitemap/generator.ts:79
SitemapOptions@openelement/adapter-vite · sitemapinterfacestable-candidate

Sitemap module configuration

packages/adapter-vite/src/internal/content/types.ts:73
Action@openelement/app · roottypestable-candidate

Route action: handles form submissions for a page route.

packages/element/src/internal/protocol/data.ts:67
ACTION_FETCH_HEADER@openelement/app · rootvaluestable-candidate

Request header selecting the action response channel (ADR-0121, amends ADR-0120): `true` marks a programmatic caller and selects the serialized ActionResult union; `enhance` marks the built-in morph enhancement and selects the same full-HTML responses the no-JS path receives.

packages/element/src/internal/protocol/data.ts:144
ActionContext@openelement/app · rootinterfacestable-candidate

Context passed to a route action function (extends loader context).

packages/element/src/internal/protocol/data.ts:50
ActionResult@openelement/app · roottypestable-candidate

Wire shape returned to the JavaScript form-enhancement path (0.42.0-alpha.2, ADR-0120). The no-JS path never sees this: it gets the equivalent semantics as plain HTTP (303 on success, 422 with the re-rendered form on validation failure, redirect/error as status codes).

packages/element/src/internal/protocol/data.ts:110
createRequestContext@openelement/app · rootfunctionstable-candidate

Build the canonical OpenElement request context from a platform request event.

packages/app/src/model.ts:27
CreateRequestContextOptions@openelement/app · rootinterfacestable-candidate

Inputs for building an {@linkcode OpenElementRequestContext} from a platform request event.

packages/app/src/model.ts:17
defineApp@openelement/app · rootfunctionstable-candidate

Define a client-side SPA application: route table, router mode and mount/dispose lifecycle.

packages/app/src/spa.ts:100
defineIslandConfig@openelement/app · rootfunctionstable-candidate

Validate and register an island delivery descriptor; returns the normalized config.

packages/app/src/authoring.ts:493
definePage@openelement/app · rootfunctionstable-candidate

Attach a page descriptor to a compiled page element class.

packages/app/src/authoring.ts:320
fail@openelement/app · rootfunctionstable-candidate

Return a structured action failure with an HTTP status and typed data payload.

packages/app/src/authoring.ts:166
isActionFailure@openelement/app · rootfunctionstable-candidate

Type guard for {@linkcode OpenElementActionFailure}, including its duck-typed cross-realm shape.

packages/app/src/authoring.ts:171
IslandConfig@openelement/app · rootinterfacestable-candidate

Per-island delivery configuration (SSR/DSD participation and hydration strategy).

packages/app/src/authoring.ts:422
IslandDeliveryStrategy@openelement/app · roottypestable-candidate

Delivery strategy for an island: a hydration trigger or media-gated loading.

packages/app/src/authoring.ts:419
isOpenElementNotFound@openelement/app · rootfunctionstable-candidate

Type guard for {@linkcode OpenElementNotFound}, including its duck-typed cross-realm shape.

packages/app/src/authoring.ts:130
isOpenElementRedirect@openelement/app · rootfunctionstable-candidate

Type guard for {@linkcode OpenElementRedirect}, including its duck-typed cross-realm shape.

packages/app/src/authoring.ts:114
Loader@openelement/app · roottypestable-candidate

Route loader: fetches data for a page route.

packages/element/src/internal/protocol/data.ts:59
LoaderContext@openelement/app · rootinterfacestable-candidate

Context passed to a request-time ('dynamic') route loader.

packages/element/src/internal/protocol/data.ts:43
notFound@openelement/app · rootfunctionstable-candidate

Throw an {@linkcode OpenElementNotFound} to render the 404 path.

packages/app/src/authoring.ts:109
OpenElementActionFailure@openelement/app · rootclassstable-candidate

Expected-failure channel for actions (0.42.0-alpha.2, ADR-0120): validation failures RETURN `fail(status, data)` — never throw — so the server can answer 422 with the form re-rendered and the submitted values echoed back. Thrown values keep the exception channel (redirect/notFound/error page).

packages/app/src/authoring.ts:147
OpenElementNotFound@openelement/app · rootclassstable-candidate

Not-found signal thrown from a loader to render the route's 404 path.

packages/app/src/authoring.ts:88
OpenElementPageDescriptor@openelement/app · rootinterfacestable-candidate

The page descriptor the pipeline reads (`module.default.openElementPage`). Attached to the compiled page class by definePage(); the class owns the render program, so the descriptor carries metadata and projectors only.

packages/app/src/authoring.ts:275
OpenElementRedirect@openelement/app · rootclassstable-candidate

Redirect signal thrown from a loader/action to short-circuit rendering with an HTTP redirect.

packages/app/src/authoring.ts:60
OpenElementRequestContext@openelement/app · rootinterfacestable-candidate

Host-agnostic request context shared by App request adapters.

packages/app/src/model.ts:3
PageComponentConstructor@openelement/app · roottypestable-candidate

A compiled element class carrying the page descriptor static.

packages/app/src/authoring.ts:288
PageErrorProjector@openelement/app · roottypestable-candidate

Maps a caught render/loader/action failure onto the error variant of the page's compiled properties. Its presence declares that the page's compiled markup carries an error variant (the generated entry renders the page with these props and status 500 — the POST/GET error-boundary channel of ADR-0121 §7); without it the generic status page answers.

packages/app/src/authoring.ts:251
PagePropsContext@openelement/app · rootinterfacestable-candidate

The request-scoped context handed to a page's props projector. Everything a compiled page can render must pass through here: the compiled render() only reads `this.<property>`, so the projector is the single deterministic seam that maps loader data, action data, params and request onto the page's compiled properties (v0.44, ADR-0143).

packages/app/src/authoring.ts:219
PagePropsProjector@openelement/app · roottypestable-candidate

Maps the request-scoped context onto the page's compiled properties. Declared as part of the page descriptor; the generated server entry and the SPA bootstrap call it per render and feed the result to renderDsd() props (server) or pre-connect property sets (SPA).

packages/app/src/authoring.ts:239
PROBLEM_JSON_MEDIA_TYPE@openelement/app · rootvaluestable-candidate

Media type of the RFC 9457 action error channel (#863).

packages/element/src/internal/protocol/data.ts:136
ProblemDetails@openelement/app · rootinterfacestable-candidate

RFC 9457 Problem Details document (0.42.0-alpha.13, #863, ADR-0123 addendum item 13): the action error channel answers `application/problem+json` instead of the bespoke `{ type: 'error', error: { message } }` JSON, so HTTP tooling recognizes failures natively. With `type: 'about:blank'`, `title` is the HTTP reason phrase and `detail` carries the specific explanation. The wire shape is alpha-unfrozen; ADR-0122 acceptance freezes it in this problem+json form.

packages/element/src/internal/protocol/data.ts:124
redirect@openelement/app · rootfunctionstable-candidate

Throw an {@linkcode OpenElementRedirect} for `location` (status must be a real 3xx).

packages/app/src/authoring.ts:104
ServerRouteContext@openelement/app · rootinterfacestable-candidate

Canonical request-time/SSG server route context.

packages/element/src/internal/protocol/data.ts:28
ServerRouteMetadata@openelement/app · rootinterfacestable-candidate

Context passed to a request-time ('dynamic') route loader. This is the server contract: the loader runs on the server with the Web-standard request, matched route params, the host environment and the platform object, and signals validation failure via fail()/redirect() (ADR-0120).

packages/element/src/internal/protocol/data.ts:22
SpaAction@openelement/app · roottypestable-candidate

SPA route action: client-side submit handler; signal failure by throwing.

packages/element/src/internal/protocol/data.ts:97
SpaActionContext@openelement/app · rootinterfacestable-candidate

Context passed to an SPA-mode route action (client-side).

packages/element/src/internal/protocol/data.ts:89
SpaAppInstance@openelement/app · rootinterfacestable-candidate

A mounted SPA: idempotent mount/dispose plus the client-side router instance.

packages/app/src/spa.ts:88
SpaLoader@openelement/app · roottypestable-candidate

SPA route loader: client-side data fetch receiving route params only.

packages/element/src/internal/protocol/data.ts:94
SpaLoaderContext@openelement/app · rootinterfacestable-candidate

Context passed to an SPA-mode route loader (#570). The SPA chain runs client-side and supplies only the matched route params — no request, env or platform — and signals failure by throwing (a throw is normalized to action data by the SPA submit handler). These semantics are frozen under ADR-0119; this type names the existing narrowing without changing any runtime behavior.

packages/element/src/internal/protocol/data.ts:84
createRequestContext@openelement/app · modelfunctionstable-candidate

Build the canonical OpenElement request context from a platform request event.

packages/app/src/model.ts:27
CreateRequestContextOptions@openelement/app · modelinterfacestable-candidate

Inputs for building an {@linkcode OpenElementRequestContext} from a platform request event.

packages/app/src/model.ts:17
OpenElementRequestContext@openelement/app · modelinterfacestable-candidate

Host-agnostic request context shared by App request adapters.

packages/app/src/model.ts:3
definePreactIsland@openelement/app · preactfunctionstable-candidate

Define a Preact component as a custom-element island with attribute-to-props bridging.

packages/app/src/preact.ts:77
PreactIslandConstructor@openelement/app · preactinterfacestable-candidate

A Preact island constructor plus its server-render seam.

packages/app/src/preact.ts:46
PreactIslandOptions@openelement/app · preactinterfacestable-candidate

Options for {@linkcode definePreactIsland} (base props, SSR participation).

packages/app/src/preact.ts:34
defineApp@openelement/app · spafunctionstable-candidate

Define a client-side SPA application: route table, router mode and mount/dispose lifecycle.

packages/app/src/spa.ts:100
SpaAppInstance@openelement/app · spainterfacestable-candidate

A mounted SPA: idempotent mount/dispose plus the client-side router instance.

packages/app/src/spa.ts:88
Action@openelement/element · roottypestable-candidate

Route action: handles form submissions for a page route.

packages/element/src/internal/protocol/data.ts:67
ACTION_FETCH_HEADER@openelement/element · rootvaluestable-candidate

Request header selecting the action response channel (ADR-0121, amends ADR-0120): `true` marks a programmatic caller and selects the serialized ActionResult union; `enhance` marks the built-in morph enhancement and selects the same full-HTML responses the no-JS path receives.

packages/element/src/internal/protocol/data.ts:144
ActionContext@openelement/element · rootinterfacestable-candidate

Context passed to a route action function (extends loader context).

packages/element/src/internal/protocol/data.ts:50
ActionResult@openelement/element · roottypestable-candidate

Wire shape returned to the JavaScript form-enhancement path (0.42.0-alpha.2, ADR-0120). The no-JS path never sees this: it gets the equivalent semantics as plain HTTP (303 on success, 422 with the re-rendered form on validation failure, redirect/error as status codes).

packages/element/src/internal/protocol/data.ts:110
computed@openelement/element · rootfunctionstable-candidate

Create a derived read-only signal recomputed from its dependencies.

packages/element/src/internal/signal/framework.ts:23
consumeContext@openelement/element · rootfunctionstable-candidate

Consumer-local reactive projection of a protocol context value.

packages/element/src/internal/core/signal-context.ts:143
Context@openelement/element · rootinterfacestable-candidate

A typed context token: protocol identity (`key`) plus its default value.

packages/element/src/internal/core/signal-context.ts:13
createContext@openelement/element · rootfunctionstable-candidate

Create a typed context token shared between provider and consumer elements.

packages/element/src/internal/core/signal-context.ts:58
DANGEROUS_KEYS@openelement/element · rootvalueexperimental

Object prototype keys that must never be injected from untrusted props.

packages/element/src/internal/core/security.ts:25
effect@openelement/element · rootfunctionstable-candidate

Run a side effect that re-subscribes whenever its signal dependencies change.

packages/element/src/internal/signal/framework.ts:29
element@openelement/element · rootfunctionexperimental

Compiler-recognized element decorator; inert no-op at runtime.

packages/element/src/internal/core/compile-decorators.ts:20
ERROR_PREFIX@openelement/element · rootvaluestable-candidate

Error message prefix for all openElement errors.

packages/element/src/internal/protocol/errors.ts:15
ErrorBoundary@openelement/element · rootclassstable-candidate

Base class for elements that catch descendant render/hydration errors and apply a retry policy.

packages/element/src/error-boundary.ts:27
ErrorTelemetryHook@openelement/element · roottypestable-candidate

Callback receiving every reported {@linkcode OpenElementError} for telemetry.

packages/element/src/internal/protocol/errors.ts:38
escapeAttr@openelement/element · rootfunctionstable-candidate

Escape an HTML attribute value.

packages/element/src/internal/core/html-escape.ts:54
escapeHtml@openelement/element · rootfunctionstable-candidate

Escape the five HTML-significant characters in text content.

packages/element/src/internal/core/html-escape.ts:34
HYDRATION_STRATEGIES@openelement/element · rootvaluestable-candidate

Runtime list of supported hydration strategies; the single source of truth for the `HydrationStrategy` union. Consumed by island/registry validation and re-exported from the element root for app and build adapters.

packages/element/src/internal/protocol/framework.ts:21
HydrationStrategy@openelement/element · roottypestable-candidate

Island hydration trigger: 'load' | 'idle' | 'visible' | 'only'.

packages/element/src/internal/protocol/framework.ts:23
injectPropsSafe@openelement/element · rootfunctionexperimental

Safely assign caller-supplied props onto a target object, skipping keys that could enable prototype pollution and tolerating read-only properties.

packages/element/src/internal/core/security.ts:128
isDangerousKey@openelement/element · rootfunctionexperimental

Shared dangerous-key predicate (#903, #1214). Prototype-internal keys must never be injected from untrusted props on ANY path: host prop collection (collectPublicProps / normalizePublicProps in props-utils.ts), guarded assignment (injectPropsSafe below — the SPA bootstrap page-projection write boundary in

packages/element/src/internal/core/security.ts:51
IslandOptions@openelement/element · rootinterfacestable-candidate

Per-island delivery options (hydration strategy, SSR/DSD participation).

packages/element/src/internal/protocol/island.ts:8
isSafeAttributeName@openelement/element · rootfunctionstable-candidate

Shared safe-attribute-name predicate (#1033). Attribute *names* are not escaped on any render path, so a name must be a valid HTML attribute name (blocks quote/space injection, #602) and must not be an event handler (`on*`, case-insensitive). render-ir.ts (silent skip) and adapter-vite head-injection.ts (throw) enforce the same rule with different failure strategies; both delegate here so the boundary cannot diverge.

packages/element/src/internal/core/security.ts:63
Loader@openelement/element · roottypestable-candidate

Route loader: fetches data for a page route.

packages/element/src/internal/protocol/data.ts:59
LoaderContext@openelement/element · rootinterfacestable-candidate

Context passed to a request-time ('dynamic') route loader.

packages/element/src/internal/protocol/data.ts:43
LocalePath@openelement/element · rootinterfacestable-candidate

Locale-aware resolved path contract.

packages/element/src/internal/protocol/framework.ts:73
Middleware@openelement/element · roottypestable-candidate

Fetch middleware contract (ADR-0123 item 2, #858): WinterCG shape, dialect-free — no Hono/h3 context object. Composed at the handler boundary in onion order (`use[0]` is outermost: it sees the request first and the response last), so it runs with identical semantics in the dev server, the `start` CLI, the e2e fixture server, and the Nitro production entry.

packages/element/src/internal/protocol/framework.ts:131
OpenElement@openelement/element · rootclassstable-candidate

Custom Element base class for the compiled Part Program architecture.

packages/element/src/open-element-implementation.ts:134
OpenElementAttribute@openelement/element · rootinterfacestable-candidate

One documented attribute of a custom element declaration.

packages/element/src/internal/protocol/manifest.ts:10
OpenElementCssPart@openelement/element · rootinterfacestable-candidate

One documented CSS part of a custom element declaration.

packages/element/src/internal/protocol/manifest.ts:33
OpenElementDeclaration@openelement/element · rootinterfacestable-candidate

One custom element declaration in a package manifest: tag, members and delivery metadata.

packages/element/src/internal/protocol/manifest.ts:48
OpenElementError@openelement/element · rootclassstable-candidate

Framework error carrying a stable code, severity, phase and recoverability contract.

packages/element/src/internal/core/errors.ts:52
OpenElementEvent@openelement/element · rootinterfacestable-candidate

One documented custom event of a custom element declaration.

packages/element/src/internal/protocol/manifest.ts:20
OpenElementPackageManifest@openelement/element · rootinterfacestable-candidate

Package manifest of component declarations (not CEM-compatible; see packages/ui README).

packages/element/src/internal/protocol/manifest.ts:61
OpenElementRouteKind@openelement/element · roottypecompatibility-only

Host-agnostic route and asset contracts shared by app and build drivers.

packages/element/src/internal/protocol/app-model.ts:2
OpenElementRouteNode@openelement/element · rootinterfacecompatibility-only

packages/element/src/internal/protocol/app-model.ts:4
OpenElementSlot@openelement/element · rootinterfacestable-candidate

One documented slot of a custom element declaration.

packages/element/src/internal/protocol/manifest.ts:27
PROBLEM_JSON_MEDIA_TYPE@openelement/element · rootvaluestable-candidate

Media type of the RFC 9457 action error channel (#863).

packages/element/src/internal/protocol/data.ts:136
ProblemDetails@openelement/element · rootinterfacestable-candidate

RFC 9457 Problem Details document (0.42.0-alpha.13, #863, ADR-0123 addendum item 13): the action error channel answers `application/problem+json` instead of the bespoke `{ type: 'error', error: { message } }` JSON, so HTTP tooling recognizes failures natively. With `type: 'about:blank'`, `title` is the HTTP reason phrase and `detail` carries the specific explanation. The wire shape is alpha-unfrozen; ADR-0122 acceptance freezes it in this problem+json form.

packages/element/src/internal/protocol/data.ts:124
property@openelement/element · rootfunctionexperimental

Compiler-recognized property decorator; inert no-op at runtime.

packages/element/src/internal/core/compile-decorators.ts:34
provideContext@openelement/element · rootfunctionstable-candidate

Provide a plain protocol value; the provider Signal remains OE-private.

packages/element/src/internal/core/signal-context.ts:107
RenderError@openelement/element · rootclassstable-candidate

Recoverable render-phase error carrying the failing component path and tag.

packages/element/src/internal/core/errors.ts:108
reportError@openelement/element · rootfunctionstable-candidate

Report an {@linkcode OpenElementError} to the telemetry hook, or console.error when none is installed.

packages/element/src/internal/core/errors.ts:149
ServerRouteContext@openelement/element · rootinterfacestable-candidate

Canonical request-time/SSG server route context.

packages/element/src/internal/protocol/data.ts:28
ServerRouteMetadata@openelement/element · rootinterfacestable-candidate

Context passed to a request-time ('dynamic') route loader. This is the server contract: the loader runs on the server with the Web-standard request, matched route params, the host environment and the platform object, and signals validation failure via fail()/redirect() (ADR-0120).

packages/element/src/internal/protocol/data.ts:22
setErrorTelemetryHook@openelement/element · rootfunctionstable-candidate

Install the process-wide error telemetry hook (replaceable for tests/HMR/multi-app pages).

packages/element/src/internal/core/errors.ts:137
signal@openelement/element · rootfunctionstable-candidate

Create a writable signal through the selected signal engine.

packages/element/src/internal/signal/framework.ts:17
Signal@openelement/element · roottypestable-candidate

Alias for APIs that accept either writable or read-only signals.

packages/element/src/internal/protocol/signal.ts:31
SpaAction@openelement/element · roottypestable-candidate

SPA route action: client-side submit handler; signal failure by throwing.

packages/element/src/internal/protocol/data.ts:97
SpaActionContext@openelement/element · rootinterfacestable-candidate

Context passed to an SPA-mode route action (client-side).

packages/element/src/internal/protocol/data.ts:89
SpaLoader@openelement/element · roottypestable-candidate

SPA route loader: client-side data fetch receiving route params only.

packages/element/src/internal/protocol/data.ts:94
SpaLoaderContext@openelement/element · rootinterfacestable-candidate

Context passed to an SPA-mode route loader (#570). The SPA chain runs client-side and supplies only the matched route params — no request, env or platform — and signals failure by throwing (a throw is normalized to action data by the SPA submit handler). These semantics are frozen under ADR-0119; this type names the existing narrowing without changing any runtime behavior.

packages/element/src/internal/protocol/data.ts:84
StyleSheet@openelement/element · rootvaluestable-candidate

Cross-realm StyleSheet constructor: the native CSSStyleSheet or the internal shim.

packages/element/src/internal/core/style-sheet.ts:67
StyleSheetLike@openelement/element · rootinterfacestable-candidate

Minimal stylesheet contract (replaceSync + cssRules) satisfied by native and shim sheets.

packages/element/src/internal/protocol/style-sheet.ts:14
trustedHtml@openelement/element · rootfunctionstable-candidate

Mark an HTML string as trusted for explicit `innerHTML` sinks (the trust does not serialize).

packages/element/src/internal/core/security.ts:84
TrustedHtml@openelement/element · rootinterfacestable-candidate

Opaque capability marking HTML the application has explicitly vetted as trusted.

packages/element/src/internal/core/security.ts:79
Fragment@openelement/element · jsx-dev-runtimefunctionstable-candidate

Typechecking-only fragment marker; fails closed when executed at runtime.

packages/element/src/jsx-dev-runtime.ts:38
JSX@openelement/element · jsx-dev-runtimenamespacestable-candidate

JSX type interface consumed by TypeScript's automatic JSX transform.

packages/element/src/jsx-dev-runtime.ts:43
jsxDEV@openelement/element · jsx-dev-runtimefunctionstable-candidate

Typechecking-only factory; fails closed when executed at runtime.

packages/element/src/jsx-dev-runtime.ts:26
Fragment@openelement/element · jsx-runtimefunctionstable-candidate

Typechecking-only fragment marker; fails closed when executed at runtime.

packages/element/src/jsx-runtime.ts:39
jsx@openelement/element · jsx-runtimefunctionstable-candidate

Typechecking-only factory; fails closed when executed at runtime.

packages/element/src/jsx-runtime.ts:29
JSX@openelement/element · jsx-runtimenamespacestable-candidate

JSX type interface consumed by TypeScript's automatic JSX transform.

packages/element/src/jsx-runtime.ts:44
jsxs@openelement/element · jsx-runtimefunctionstable-candidate

Typechecking-only factory; fails closed when executed at runtime.

packages/element/src/jsx-runtime.ts:34
isSafeUrl@openelement/element · sanitizefunctionstable-candidate

URL scheme policy (ADR-0126): reject anything that could become an executable scheme after browser-side parsing.

packages/element/src/sanitize.ts:236
sanitizeHtml@openelement/element · sanitizefunctionstable-candidate

Sanitize untrusted HTML against the allow-list (ADR-0126).

packages/element/src/sanitize.ts:353
SanitizeOptions@openelement/element · sanitizeinterfacestable-candidate

Per-tag attribute allow-list; '*' applies to every tag.

packages/element/src/sanitize.ts:26
manifest@openelement/ui · rootvaluestable-candidate

The build-time generated package manifest (declarations for every UI component).

packages/ui/src/manifest.ts:12
OpenBadge@openelement/ui · rootclassstable-candidate

Compact status badge backed by Open Props semantic tokens.

packages/ui/src/open-badge.tsx:13
OpenButton@openelement/ui · rootclassstable-candidate

Minimal button component following Swiss International Style.

packages/ui/src/open-button.tsx:30
OpenCallout@openelement/ui · rootclassstable-candidate

Callout/notice box for inline documentation alerts.

packages/ui/src/open-callout.tsx:27
OpenCard@openelement/ui · rootclassstable-candidate

Minimal card container with optional header and footer.

packages/ui/src/open-card.tsx:28
OpenCodeBlock@openelement/ui · rootclassstable-candidate

Code block with copy button AND syntax highlighting via Prism.

packages/ui/src/open-code-block.tsx:32
OpenDialog@openelement/ui · rootclassstable-candidate

Dialog component using native <dialog> element + popover API.

packages/ui/src/open-dialog.tsx:36
OpenDropdown@openelement/ui · rootclassstable-candidate

Popover-API dropdown with CSS Anchor Positioning placement.

packages/ui/src/open-dropdown.tsx:21
OpenInput@openelement/ui · rootclassstable-candidate

Minimal input field following Swiss International Style.

packages/ui/src/open-input.tsx:41
openPropsRootSheet@openelement/ui · rootvaluestable-candidate

Pre-built stylesheet exposing the Open Props tokens on `:root` (document-level adoption).

packages/ui/src/open-props-tokens.ts:408
openPropsTokenSheet@openelement/ui · rootvaluestable-candidate

Pre-built stylesheet carrying the full Open Props token set (adopt into a shadow root).

packages/ui/src/open-props-tokens.ts:405
OpenTabs@openelement/ui · rootclassstable-candidate

WAI-ARIA tabs pattern. The slotted [slot="tab"] and [slot="panel"] elements

packages/ui/src/open-tabs.tsx:25
OpenThemeToggle@openelement/ui · rootclassstable-candidate

Theme toggle Reactive DSD component for Dark/Light mode switching.

packages/ui/src/open-theme-toggle.tsx:26
registerOpenUi@openelement/ui · rootfunctionstable-candidate

Explicitly register every first-party UI element. Safe to call repeatedly.

packages/ui/src/register.ts:29
OpenBadge@openelement/ui · open-badgeclassstable-candidate

Compact status badge backed by Open Props semantic tokens.

packages/ui/src/open-badge.tsx:13
OpenButton@openelement/ui · open-buttonclassstable-candidate

Minimal button component following Swiss International Style.

packages/ui/src/open-button.tsx:30
OpenCallout@openelement/ui · open-calloutclassstable-candidate

Callout/notice box for inline documentation alerts.

packages/ui/src/open-callout.tsx:27
OpenCard@openelement/ui · open-cardclassstable-candidate

Minimal card container with optional header and footer.

packages/ui/src/open-card.tsx:28
OpenCodeBlock@openelement/ui · open-code-blockclassstable-candidate

Code block with copy button AND syntax highlighting via Prism.

packages/ui/src/open-code-block.tsx:32
OpenDialog@openelement/ui · open-dialogclassstable-candidate

Dialog component using native <dialog> element + popover API.

packages/ui/src/open-dialog.tsx:36
OpenDropdown@openelement/ui · open-dropdownclassstable-candidate

Popover-API dropdown with CSS Anchor Positioning placement.

packages/ui/src/open-dropdown.tsx:21
OpenInput@openelement/ui · open-inputclassstable-candidate

Minimal input field following Swiss International Style.

packages/ui/src/open-input.tsx:41
openPropsRootSheet@openelement/ui · open-props-tokensvaluestable-candidate

Pre-built stylesheet exposing the Open Props tokens on `:root` (document-level adoption).

packages/ui/src/open-props-tokens.ts:408
openPropsTokenSheet@openelement/ui · open-props-tokensvaluestable-candidate

Pre-built stylesheet carrying the full Open Props token set (adopt into a shadow root).

packages/ui/src/open-props-tokens.ts:405
OpenTabs@openelement/ui · open-tabsclassstable-candidate

WAI-ARIA tabs pattern. The slotted [slot="tab"] and [slot="panel"] elements

packages/ui/src/open-tabs.tsx:25
OpenThemeToggle@openelement/ui · open-theme-toggleclassstable-candidate

Theme toggle Reactive DSD component for Dark/Light mode switching.

packages/ui/src/open-theme-toggle.tsx:26

04 / element reference

Custom elements from the compiler manifest.

Tag, layer, hydration strategy, attributes, events, slots and CSS parts come from the @openelement/ui compiler manifest — the same truth the SSR/claim pipeline validates against.

<open-badge>OpenBadgedsd-staticidle

Compact status badge backed by Open Props semantic tokens.

@openelement/ui/open-badge
Attributestone: string — tone attribute; size: string — size attributeEventsSlots(default) — Default slotCSS partsbadge — The badge span
<open-button>OpenButtondsd-interactiveload

Minimal button component following Swiss International Style.

@openelement/ui/open-button
Attributesvariant: string — variant attribute; size: string — size attribute; disabled: boolean = false — disabled attribute; href: string — href attribute; target: string — target attribute; type: string — type attributeEventsopen-click: CustomEvent — Fired on open-clickSlots(default) — Default slotCSS partscontrol — The visible button or anchor element
<open-callout>OpenCalloutdsd-staticidle

Callout/notice box for inline documentation alerts.

@openelement/ui/open-callout
Attributestype: string — type attribute; label: string — label attributeEventsSlots(default) — Default slotCSS partscontainer — The callout wrapper; icon — The type icon span; content — The content area
<open-card>OpenCarddsd-staticidle

Minimal card container with optional header and footer.

@openelement/ui/open-card
Attributesvariant: string — variant attributeEventsSlots(default) — Default slot; header — The 'header' slot; footer — The 'footer' slotCSS partscontainer — The article wrapper; body — The card body content area
<open-code-block>OpenCodeBlockdsd-staticidle

Code block with copy button AND syntax highlighting via Prism.

@openelement/ui/open-code-block
AttributesEventsSlots(default) — Default slotCSS partscopy — The copy button
<open-dialog>OpenDialogdsd-interactiveidle

Dialog component using native <dialog> element + popover API.

@openelement/ui/open-dialog
Attributesopen: boolean = false — open attribute; label: string — label attributeEventsopen-dialog-close: CustomEvent — Fired on open-dialog-closeSlots(default) — Default slot; trigger — The 'trigger' slot; footer — The 'footer' slotCSS partsoverlay — The dialog backdrop/element; header — The header bar; close — The close button; body — The content area (<slot>); footer — The optional footer slot
<open-dropdown>OpenDropdowndsd-interactiveload

Popover-API dropdown with CSS Anchor Positioning placement.

@openelement/ui/open-dropdown
AttributesEventsSlotstrigger — Control used to toggle the dropdown; (default) — Dropdown contentCSS partstrigger — Trigger wrapper; content — Popover content
<open-input>OpenInputdsd-interactiveload

Minimal input field following Swiss International Style.

@openelement/ui/open-input
Attributestype: string — type attribute; placeholder: string — placeholder attribute; label: string — label attribute; name: string — name attribute; value: string — value attribute; disabled: boolean = false — disabled attribute; required: boolean = false — required attribute; error: string — error attributeEventsopen-input: CustomEvent<{ value: unknown }> — Fired on open-input; open-change: CustomEvent<{ value: unknown }> — Fired on open-change; open-focus: CustomEvent — Fired on open-focus; open-blur: CustomEvent — Fired on open-blurSlotsCSS partswrapper — The outer input-wrapper div; label — The label element; control — The input element; error — The error message small element
<open-tabs>OpenTabsdsd-interactiveload

WAI-ARIA tabs pattern. The slotted [slot="tab"] and [slot="panel"] elements

@openelement/ui/open-tabs
AttributesEventsSlotstab — Tab label element (one per panel); panel — Panel shown while its tab is activeCSS parts
<open-theme-toggle>OpenThemeToggledsd-interactiveload

Theme toggle Reactive DSD component for Dark/Light mode switching.

@openelement/ui/open-theme-toggle
Attributestheme: string — theme attributeEventsopen:theme-change: CustomEvent<{ theme: unknown }> — Fired on open:theme-changeSlotsCSS partstoggle — The button element; icon-sun — The sun SVG icon; icon-moon — The moon SVG icon