Skip to content

Krigsvold · Independent UI language

A grammar for the work.

Experimental grammar 0.3. Core 2.2.1 and Astro 1.2.1 below are experimental releases under the npm next tag. The installed package reference reports this website’s actual dependencies separately.

These are exact copies of the canonical core guidance at f567b51. Native source objects take priority; translations and new application patterns carry an explicit basis.

Framework support and maturity

ImplementationVersionGuidance snapshot status
core2.2.1experimental
Astro1.2.1experimental
React0.1.0experimental
Vue—not-implemented
Svelte—not-implemented
native—not-implemented

The source profile is opt-in. Existing palette/default contracts and Astro slots remain compatible. React event, state and focus APIs remain specific to React. See the separate publication and agent setup record for verified availability.

Pattern contracts and provenance

PatternBasisRules
reading-contentsapplication-extensionContents precedes body; Depth 2 parents and depth 3 children; Supporting information remains separate; Reflow according to available container width
grouped-footersource-translationHost supplies identity and destinations; Preserve independent family anatomy; Ownership and contact belong in base slot
collection-editorapplication-extensionReact specimen only; save, failure, draft protection and undo.
validated-formapplication-extensionField/group/region relationships; Retain values on failure; Summary links focus controls; Guard specimen reset; host navigation remains host-owned
query-resultsapplication-extensionSeparate draft and committed scope; Stable record identities; Current-page selection only; Cancel invalidates late completion; Keep all table columns in labelled scrolling region

ArticleLayout adds a separate contents slot and retains its supporting sidebar. TableOfContents provides index and inline variants with depth-2 parents and depth-3 children. SiteFooter adds variant="grouped", labelled groups, and host-owned identity/base slots. Its existing plain variant remains the default.

Candidate APIs, source profile and migration guide ↗. The original-site footer identity and destinations are supplied by the host, rather than embedded in the packages.

Host-owned menus follow source behavior: the desktop dropdown remains white on a dark header; below 992px the submenu becomes transparent and in-flow. Astro SiteHeader remains a wrapping link header; this candidate does not introduce a dropdown controller.

Krigsvold: a grammar of clear regions

Experimental grammar 0.3 · Core 2.2.0 candidate · Astro 1.2.0 candidate · React 0.1.0

Krigsvold makes complex work legible through purposeful regions, stable alignment, controlled contrast, and precise state. Its clarity must remain approachable when a person is uncertain or an operation fails. Its adopted charter supplies the criteria for these experimental application rules.

Source authority and current decisions

Existing origin objects are the baseline. Read the decisions MCP reference or the source-decision profile before choosing visual rules. Distinguish observed source roles, a contextual translation, and a new application extension. Do not add a global gold stripe, decorative monospace labels, arbitrary accent rules, or mechanically opposite family layouts. Keep new capabilities only with a stated task purpose. The October 23 audit is a fixed record; the reconciliation ledger records implemented decisions and remaining gaps. This remains an experimental grammar, not a declaration of stability.

Assign each region a job

Identify orientation, scope, work, supporting information, and commands. Align related information so that a person can compare it without reconstructing the layout. Use a boundary when purpose or context changes; use local proximity inside a working region. A border around every field does not explain the larger structure, and a large empty gap does not automatically make it clear.

The optional source profile exposes --krigsvold-field-gap, --krigsvold-group-gap, and --krigsvold-region-gap. This pattern maps local grouping to the existing 0.5rem scale step, groups to 1.5rem, and distinct regions to the existing 3rem scale step. These experimental application roles explain relationships rather than replacing the foundation’s reference scale. Regional space and compact local rows can coexist. Density is a region-level decision; keep readable text, visible focus, and usable targets.

Make hierarchy exact

Use Roboto for interface and body text, Roboto Slab for heading roles, and Roboto Mono where code or numerical comparison benefits. Establish common edges for related labels, values, and actions. Keep the existing navy, glacier, paper, and bronze vocabulary assigned through semantic roles. Contrast should identify importance and interaction state, not merely alternate decorative sections.

Keep the desktop navigation popup white with ink text and source pointer/elevation, even inside a dark header. Below 992px its source mobile submenu becomes transparent and in-flow. Use other surface changes only to distinguish purpose or depth. A selected result needs a visible non-color cue as well as contrast. Metadata must remain subordinate without becoming illegible. Truncation is appropriate only when the complete information remains available at a predictable destination.

Make scope visible

Keep commands near the region they affect. Distinguish collection operations from object operations and persistent state from draft state. Show the current scope beside filtering and search. A result-row activation opens its record; a separate Edit action starts modification. Selection does not silently imply a destructive command or an edit.

Use explicit labels for what is pending, completed, unavailable, or failed. Put the recovery action where the failure occurred. Precision is assistance: explain a useful next step rather than displaying only a diagnostic code.

Keep change controlled

Retain context while results, details, and forms change. Prefer stable region boundaries during loading and filtering; preserve useful previous information when it remains valid. A save’s pending state prevents duplicate submission without hiding the work. A failed save keeps the changed data visible and recoverable. Move keyboard focus when a new task surface requires orientation, and announce state changes without unnecessary interruptions.

Before leaving a changed editor, offer an explicit choice and preserve the draft when that choice is cancelled. Use reversible operations and undo where the domain permits. Explain irreversible consequences before commitment. Transitions may clarify state, but the same information must remain understandable without animation.

Let the frame follow the work

A horizontal navbar, side rail, or focused workspace without primary navigation can each be Krigsvold. Choose based on destination count, frequency, available space, and the task’s need for persistent context. Vertical navigation is not a language rule. A reading page deserves the same coherent regional structure as an operations console.

At narrow widths, place regions in a meaningful reading order rather than compressing all of them into unusable columns. Keep the current object identifiable and supply a clear return route. Long labels, enlarged text, and translated content must not depend on fixed-width assumptions.

Choose a grouping, then a density

Assign orientation, query, work, supporting context and commands distinct jobs. Align comparable information within each job. Use a boundary when scope changes; do not repeat a border around every local relationship. A region can be compact internally while remaining clearly separated from the next region.

Use comfortable density for the current reference patterns. A compact mode remains proposed, with no new public density prop. Adjust related padding locally only while preserving readable text, usable targets, visible labels and the field/group/region hierarchy. Source page section spacing does not belong inside an editor. A source index or footer is an object-specific composition; it does not establish a universal application rail or surface.

Bind actions to committed scope

Put a field’s assistance beside that field, object commands beside the object, and collection commands beside a named collection. A pending query and its previous results are different scopes: identify both. Retain input and useful results after failure, with a recovery action that names the failed operation. Selection belongs to stable record identities in a declared result scope; clearing, retaining or extending it must follow a documented transition, not an accidental rerender.

The validated-form and query-results contracts add concrete state transitions, focus destinations and narrow-layout rules. They are application extensions. Shared native keyboard conventions do not make the languages interchangeable, and a shared grammar rule does not imply the same framework API. The coverage ledger distinguishes documented rules, checked reference behavior and open consumer evidence.

Use layers for their actual purpose

An inline disclosure stays in document flow. A non-modal popup anchors to its trigger and retains the source navigation surface. A modal interrupts the task, names its consequence and uses the native dialog top layer with a clear dismissal route. A backdrop belongs to the modal; it is not required for every overlay. Keep focus visible and return it to a meaningful trigger when a temporary surface closes. Motion never carries the only explanation of a state change.

Working pattern: collection and detail workspace

The Notes workspace specimen puts collection scope and search in a common command region. Results use aligned rows with title, collection, and preview. A clear selected edge identifies the opened record. The detail region remains beside results when width permits, so a person can move through records without losing the collection. Editing is explicit and stays within the detail region. Local working density supports scanning; stronger separation distinguishes the collection from the current note.

When the available width is insufficient, results precede the detail region and opening a note moves focus to its heading. Closing returns focus to the collection heading. The layout changes while scope and task meanings persist.

This pattern does not require every Krigsvold application to use a split view. A sustained-reading task may use a dedicated page. The language’s regional, alignment, contrast, and state rules apply in either frame.

State and recovery rules

Search names its scope and reports the result count. No matches offer a clear reset; an empty collection offers creation. Changing folders is an explicit context change. Opening and editing remain separate actions. Save success returns the note to a committed reading state; failure keeps the editor and offers retry. A context change from a changed editor requires a keep-or-discard choice. Moving a saved note to trash preserves an undo route.

The specimen contains fictional, session-only data. Reload restores initial examples. Its failure-inspection control deliberately fails one save and is separate from ordinary product commands. It does not implement network retrieval, durable storage, collaboration, or rich text.

Review the grammar

Can someone identify the current region, command scope, selected record, and save state without relying on color? Does aligned information support comparison? Are boundaries meaningful rather than repetitive decoration? Does the regional structure remain understandable in a compact table, a form, and a reading experience? Test these questions across complete transitions, not only the populated initial view.

Expected keyboard behavior and accessible semantics need not differ from Martlet. Independence comes from coherent decisions that serve the task, not arbitrary opposites. Manual assistive-technology review, localization, RTL adaptation, and sustained consumer evidence remain open before stability.

Krigsvold grammar coverage review

Review 0.3 · October 24, 2026 · Experimental

The baseline grammar described intent and an experimental collection/editor. This review adds decision rules for grouping, density, action scope, layers, validated forms and queried results. Existing origin objects remain authoritative. New application patterns are justified extensions and are not retrospectively attributed to the origin site.

IDDomainDispositionRule or remaining workEvidence surface
G01Source authorityDocumentedOrigin objects, translations and extensions remain distinct.Source audit and source-decisions.md
G02Field / group / region spacingRule clarified + referenceUse relational roles; do not inherit page-section spacing inside forms.Validated-form reference
G03Density and targetsClaim corrected; compact openComfortable examples only; 44px is a design target, not blanket certification.Foundations; target-size checks
G04Typography and hierarchyObserved roles retainedKeep prose, UI, selective display and code roles; no decorative monospace.Source decisions; existing React/Astro checks
G05Surfaces and layersRule corrected + referenceModal, popup and inline disclosure have different interaction contracts.Native dialog in form/results
G06Action placement and scopeRule clarified + referenceCommands name and follow their field, object or collection scope.Validated-form and results references
G07Responsive compositionReference checksReflow fields/actions; scroll only genuine comparison surfaces; retain source order.Narrow/enlarged-text browser checks
G08Substantial formsNew experimental contractValidate, retain values, retry and guard specimen reset.docs/patterns/forms.md
G09Query / sort / pageNew experimental contractDraft query differs from applied results; changed query starts page 1.docs/patterns/query-results.md
G10SelectionNew bounded contractBinary current-page selection; scope changes reset on commit, failure retains it.Results reference; no mixed/select-all API
G11Pending / failed / empty statesReference coverage expandedKeep useful previous content and distinguish no matches from empty source data.Form/results/collection specimens
G12Focus and recoveryReference checks; manual openSummary links, modal dismissal, return trigger and late-response cancellation.Browser assertions; manual AT still open
G13Top / side / focused framesExisting support retainedFrame follows task; source navigation direction is not a family restriction.AppShell and existing browser checks
G14Reading / contents / footerExisting source contracts retainedContents, body, support and host identity remain separate.Astro candidate and source audit
G15Cross-framework agreementAvailability clarifiedRules cross frameworks; React state/focus props do not become Astro APIs.language.json; native-HTML guidance
G16Figure / footnote / maths / archive vocabularyOpenDo not infer shipped components from origin CSS.Source decisions; no new API claim
G17Localization / RTL / assistive technologyOpenLong-text checks are partial evidence; no manual or locale certification.Consumer and manual review required
G18Sustained use / dashboard breadthOpenFocused references do not establish production fitness or cover all application patterns.Future consumer evidence

Acceptance and limits

Each pattern contract names its purpose, anatomy, scope, states, keyboard/focus behavior, responsive behavior and implementation availability. Automated results are recorded separately from documented requirements. A rule is not stable merely because a specimen passes. New form and results specimens use deterministic session state and simulated latency/failure. They do not add a new application or change the collection/editor into a production service.

The foundations no longer claim that every React target is 44 pixels, no longer require a backdrop for all overlays, and now acknowledge the optional core source-profile aliases. Modal focus behavior, native read-only/disabled distinctions, selection scope and draft-versus-applied query are explicit. Compatibility remains additive; existing package defaults and APIs are retained.

Framework boundaries

Core owns grammar, semantic roles and source profiles. React supplies interactive specimens using existing exports. Astro retains its documented component inventory and can use the same native HTML semantics; host scripts own form/query controllers. The main reference and agent snapshots identify this exact canonical revision. No framework receives an implementation claim from shared prose alone.

Reference method

The source audit, adopted charter and actual exported APIs govern these decisions. Carbon’s form, loading and filtering guidance informed the breadth of questions, not either language’s palette or composition. Our search controls retain visible labels under our own grammar. Target sizing follows the distinctions in W3C SC 2.5.8, without treating automated checks as overall WCAG certification.

Krigsvold: a validated form

Experimental pattern contract 0.3 · Application extension · React reference specimen

Purpose and composition

Use this pattern for a deliberate submission with multiple related fields and recoverable errors. The specimen is a publication request with title, summary, request type, response name/address and a notification preference. It is a controlled documentation example; it sends nothing and stores nothing beyond the mounted specimen.

Define a request region, a response region and a command region. Use shared edges within each region, and a restrained boundary only where the job changes. Short related fields may align in columns when space permits. Supporting guidance follows the work in source order and can sit beside it when each region retains useful width. The command row belongs to the form it commits.

Use the field relationship for label, control, hint and error; group spacing for sibling fields; and region spacing between different decisions. A native fieldset and legend identify a real group. Do not add a card per field. Keep the primary submit action after the editable groups. Secondary discard/reset actions describe their consequence and remain visually subordinate. The specimen uses comfortable density; it introduces no compact-density API.

Validation and state transitions

TriggerResultFocus and retained work
Submit invalid fieldsShow a summary and field-linked errors; mark only invalid controls.Focus the summary; its links focus the actual controls. Keep all input.
Edit after an errorRetain the error until revalidation on submission.Keep focus in the edited field. Do not announce validation on every keystroke.
Submit valid dataEnter pending state and prevent another submission.Keep the form visible; make inputs temporarily unavailable and announce saving.
Simulated save failureExplain that work is retained and offer retry.Focus the actionable failure summary; preserve every field and preference.
Retry successfullyCommit the submitted values to the local example state and announce success.Keep the same form and orientation; do not clear fields or move focus merely for success.
Reset a changed specimenOpen a native confirmation dialog with Keep editing and Discard changes.Escape and Keep editing preserve the draft and return focus to Reset specimen. Discard resets the specimen and returns focus to that trigger.
Reset an unchanged specimenReset immediately.Preserve orientation; no unnecessary dialog.

The pending operation is short and simulated. Unmounting invalidates its completion; a late timer cannot update another specimen. Reset is unavailable while saving. The draft guard covers the specimen’s Reset action; documentation navigation is outside that guard and unmounts the example. This is an explicit hosting boundary, not a claim of full application navigation protection.

Semantics and responsive behavior

Use native form, label, input, select, textarea, checkbox, fieldset and button semantics. Required indicators appear in labels and requirements in hints. Read-only text remains inspectable and available to native form behavior; disabled controls are temporarily unavailable. Do not invent readOnly support for a native select or checkbox. Name the form, error summary and dialog, and expose meaningful pending/saved state without repeated announcements.

At narrow widths the groups and actions stack in source order. Long text and enlarged text wrap without clipping. The guidance region follows the fields; no visual reordering changes keyboard order. Reduced motion does not remove state text. For print, retain the current values and context; hide only documentation inspection controls.

Implementation and evidence boundaries

React composes Field, TextInput, Textarea, Select, Checkbox, Fieldset, Button, ErrorSummary and Dialog. These are existing exports; no new form-controller API is implied. Core supplies typography and spacing roles. Astro can express the same native HTML structure, but validation, transport, draft management and focus transitions remain host code; there is no Astro Form controller in this candidate.

The reference includes validation, pending, failed/retry, saved and discard-dialog examples. Browser assertions cover values, linked errors, focus restoration, reflow and automated accessibility. Real server errors, conflict resolution, authentication, uploads and manual assistive-technology review remain outside this specimen. New controls and full dark mode remain experimental.

Krigsvold: query, results and selection

Experimental pattern contract 0.3 · Application extension · React reference specimen

Purpose and composition

Use a results table when the task benefits from comparing several attributes across records. The reference uses the existing component catalogue as its dataset. Search, group filter, sorting, paging and selection are host logic composed from existing primitives. The preparation dialog makes no remote request or actual review decision.

Give query, committed results and selection commands separate jobs. Align names, groups and purposes within the table so comparisons share common edges. Keep the applied scope and pending request distinguishable. Selected-item commands operate on the visible result page and stay beside its count. These regional rules apply whether the query sits above or beside the work.

Visible search and filter labels name their scope. Enter or Apply query submits the draft query. Changing an unapplied input does not relabel old results. Show the committed query, result count and page independently of what is being typed. Put a table caption on the table and a keyboard-accessible name on its scrolling region. Do not make every row simultaneously mean selection, navigation and editing.

Query and result contract

EventRequired behavior
Apply a changed search, filter or sortStart at page 1. Retain old results with their applied-scope label while pending. Disable selection commands during the transition.
Pending result requestAnnounce loading, mark the result region busy, and retain useful content. Do not label previous results as matches for the new request.
Request failsExplain that the previous results are still shown; preserve the failed request for Retry. Keep its old selection, with commands unavailable until results are current.
Retry succeedsCommit the new result scope and announce its count. Clear the old page selection.
Change pageRequest the page within the committed query/filter/sort; clear selection when the new page commits.
Refresh unchanged resultsRetain selected identities that are still on the committed page. Do not restore selection by row index.
No matchesName the applied scope and offer Clear query; retain the dataset.
Empty source datasetExplain that no source records exist; do not present it as a failed query.

The reference simulates asynchronous completion and an optional one-shot failure. Each request carries a generation: an obsolete completion cannot replace newer state or update an unmounted specimen. The available sample data and sorting are deterministic. No remote retrieval, server pagination or durable selection is claimed.

Selection and dialog contract

Selection means the checked records on the currently committed result page. Native checkboxes name each record. There is no select-all control, cross-page selection, mixed checkbox state or implied edit permission in this contract. The count is textual; row color is supplementary. Query/filter/sort/page changes clear selection only when their new result set commits. A failed request retains previous selection and scope for recovery.

Review selection opens a native modal listing the exact selected component names. Prepare comparison is a simulated operation. Failure keeps the dialog and selection available for retry. Success closes the dialog, retains selection and announces completion. Cancel or Escape cancels an in-flight preparation, preserves selection and returns focus to Review selection. A late completion cannot announce success after dismissal. No action in this specimen promotes component maturity or records a real readiness review.

Native dialog semantics make the background inert and keep modal keyboard behavior conventional. Non-modal navigation popups and disclosures do not inherit that modal contract or require a backdrop.

Responsive behavior and implementation

Query controls wrap into one coherent sequence; status and commands wrap without clipping. A genuinely comparative table may scroll within its labelled region at narrow widths. Keep its caption, row-selection labels and all columns. Do not hide data or turn each row into a different task simply to remove horizontal scrolling. Surrounding prose and controls must still reflow.

React uses Field, TextInput, Select, Checkbox, DataTable, Pagination, Button and Dialog. A host owns querying, sorting, paging, selection and request cancellation. Core owns the existing family styles. Astro native HTML guidance shares these semantics, but an interactive results controller is not supplied by the Astro package. Both languages permit a table or a list when the task supports it; neither is compulsory for one family.

Tests exercise changed/unapplied scope, pending and failed retrieval, retry, no matches, paging, selection reset, modal failure/cancel/success, focus restoration, long text, narrow reflow and automated accessibility. Manual screen-reader review, localization/RTL, large datasets and real network races remain open consumer work.

Krigsvold source decisions

Origin reconciliation 0.2 · Consolidation candidate · Original palette and existing defaults retained

Use krigsvold.org as the authority for existing objects. This profile distinguishes restored source roles from application extensions. The full grammar remains experimental. Original source commit: a3cf072c516c59ed35814e0fa153028cc91ceecd, repository basuhoward/krigsvold.org. Review src/styles/site.css, src/components/SiteHeader.astro, SiteFooter.astro, src/layouts/Page.astro and active Material Kit styles. The audit and reconciliation ledger record evidence and remaining limits.

Existing source objects

RoleDecisionSource / reason
Canvas/typePaper #fbfaf7, ink #17202a, Roboto 1rem/1.65. Editorial prose 1.06rem/1.65.Host overrides and live origin.
HeadingsRoboto Slab, weight 700, source scale/leading/tracking.Source global/editorial/masthead roles. Medium-weight alternate docs headings were removed.
UI labelsRoboto; .76rem/.16em uppercase blue eyebrow where the source uses it.Source eyebrow and navbar. Roboto Mono is for code and useful numerical work, not ordinary status/folder labels.
ReadingBounded 760px editorial measure with source hierarchy. Supporting facts can have their own region.Page layout and editorial CSS. An accent rail/mono label is not mandatory article anatomy.
Desktop navbarNavy rgba(6,19,37,.84), .4rem radius, white 20% border, 14px blur, source navbar shadow.Source site-navbar. Docs retains a contained in-flow variant because there is no photographic masthead.
Desktop popupWhite surface, ink text, ice hover; 15rem min width; .55rem padding; .3rem radius; source rule and 0 18px 44px rgba(6,19,37,.18) shadow; white 12px pointer.Source dropdown and live observation. The light surface is independent of the dark parent and full-page mode.
Popup item.9rem/1.65 Roboto; .62rem/.7rem padding; small item radius.Source dropdown-item. Use source SVG chevron.
Mobile navigationCollapsed Menu below 992px; submenu static/indented/transparent on navy; no popup pointer, border or shadow.Source mobile overrides. Do not impose desktop popup styling here.
Navigation behaviorNative details retains click/Enter/Space and exclusive groups; Escape restores summary, blur closes; mobile Menu Escape restores trigger.Explicit implementation translation of source dropdown capability. Hover is visual feedback, not the only access route.
SearchSource field material, label and underline retained. Docs uses an explicitly labelled live component filter rather than site-wide GET search.Source site-search visual role; task-specific documentation extension.
Primary actionNavy with blue hover in light mode; .75rem bold uppercase UI type, .035em tracking, .625rem/1.5rem padding.Observed source navy button and foundation dimensions. Dark mode uses semantic contrast roles.
InputNative control and own small radius, theme/source padding; keep visible labels.Source control vocabulary; site-search is not the default general form geometry.
Table.95rem UI type, .85rem/.7rem cells, top alignment, source rule; no arbitrary compact-family default.Editorial source table. Explicit compact density remains future task-specific work.
Quote4px blue leading rule, Slab quotation text.Editorial blockquote.
FooterNavy identity column spanning two tracks, four link groups, and a separate ownership/contact base line; 5rem/1.5rem vertical padding, 48px desktop gap.SiteFooter/site.css. The adopting host owns identities, organizations and destinations.

Explicit application extensions

AppShell is an application frame, not the entire origin website. Both languages support top, side and none. The existing Krigsvold default side frame is retained for compatibility with the workbench; it is not a grammar requirement. The hard-coded rail colophon is removed.

No origin object establishes a universal Krigsvold TOC. The experimental index/inline extension uses native fragment navigation, unnumbered depth-aware hierarchy and reading order before body. A persistent rail appears only when the available width supports it. No invented accent top rule or mono eyebrow is required. DefinitionList supports rows, stack and grid in either family; source fellow facts already demonstrate stacking.

Task dialogs, validation summaries, notices, badges, switches, tabs, file controls and controlled result paging are explicit new application objects. They preserve native semantics, visible focus, clear labels and recoverable operations. ErrorSummary uses a leading severity rule, consistent with its task rather than a forced opposite Martlet treatment. Tabs use a selected underline, not an invented filled institutional badge. Invalid styling means aria-invalid="true", never mere attribute presence.

Field/group/region roles are .5/1.5/3rem source-scale values with experimental relational assignments. Local density serves comparison; generous source page section spacing remains a different role. A 3px selection edge explains the current note, while nonnumeric status/folder labels use Roboto. The results/detail composition is a task choice, not compulsory Krigsvold anatomy.

Dark mode keeps the source object hierarchy and existing semantic contrast roles. The source desktop navbar popup remains light; mobile remains transparent on navy. New status/error/switch surfaces are application extensions and need state/contrast evidence. Code keeps theme roles pending a matched origin code specimen review.

Boundary and evidence

The theme-site crystal is the existing system mark used by documentation. It does not replace an adopting application’s own identity or the origin institution’s snowflake badge. Docs preview, finder, copy/download controls, simulated failure and session-only notes are host tooling.

Polar imagery, title/arms, award content, legal policy and analytics remain host responsibilities. Origin masthead, evidence/fellow/card/figure/FAQ variants outside the current 22 exports remain named vocabulary gaps, not silently shipped components. Full accessibility, RTL/localization and sustained-use evidence remain open. Read this profile with the grammar/API references; catalogue hashes do not ratify design choices.

Framework consolidation

Core 2.2.0 and Astro 1.2.0 are unreleased candidates. The source profile is an opt-in import and class; existing core defaults and existing Astro slots remain compatible. New TableOfContents and grouped SiteFooter anatomy are available in the paired candidate packages. React 0.1.0 retains its existing theme 2.1.0 dependency and React-specific events and focus contracts. Framework support is recorded in language.json. These additions do not make the grammar stable.

Grammar review 0.3

Validated forms and queried results add explicit application contracts for grouping, action scope, committed versus draft queries, current-page selection and modal recovery. These are experimental extensions, with separate family composition choices and shared native behavior. No original palette, mark, header direction or existing component default changes. Read docs/coverage.md and docs/patterns/ for the bounded evidence and remaining vocabulary.

Framework scope

The source website header observations describe the origin object and its reference-host translation. Astro SiteHeader retains a generic wrapping-link header; it does not claim the source masthead, responsive menu controller or React print behavior. Inspect the target platform API and complete composition rather than transferring another renderer’s props or defaults.

Remaining evidence

  • Manual assistive-technology review
  • Localization and RTL
  • Sustained consumer use
  • Broader form and data workflow evidence
  • Matched origin code specimen

Machine-readable package and language specification. Source hashes establish provenance; they do not certify design quality or accessibility.

When you make a choice, this site remembers it in a first-party preference cookie for up to a year. About cookies and storage.