@microbit/ui-patterns
v0.2.1
Published
Higher-level UI patterns composed from @microbit/ui primitives. Ships as source; see README for the consumption setup.
Keywords
Readme
@microbit/ui-patterns
Higher-level UI patterns for micro:bit web apps, composed from
@microbit/ui primitives. Where @microbit/ui provides the
design-system building blocks (buttons, fields, overlays), this package holds
the larger assemblies apps share — recurring page furniture built from those
blocks.
What's here
LanguageDialog— the language settings dialog every app in the family carries: a grid of language cards (endonym over English name), split into fully/partially supported sections derived from per-language support checklists (a language with any unsupported product is partial), with a per-product support tooltip and toast, an optional preview footnote, an optional "Help translate" footer link, and a primary Close button. Selection applies immediately and the dialog closes; state stays with the app (props and callbacks only, no store). Endonyms carrylang/dirattributes — with the card's accessible name wired viaaria-labelledby— so assistive tech pronounces them correctly.languages— the family name-book: every language any micro:bit app lists, as{ id, name, enName }with canonical BCP 47 ids (which are also the family's Crowdin codes). Apps indicate support by id — theKnownLanguageIdunion makes a typo or mis-cased id a compile error.getDefaultLanguageId— first-run language selection: BCP 47 best-fit matching of a?l=URL hint and the browser/OS preferences against the ids the app allows to be auto-selected. The candidate set is the app's call — pass a narrowed set where landing a user in a language silently would be wrong (e.g. incomplete native-app translations).
(<html lang> needs nothing from this package: @microbit/ui's
SharedUIProvider keeps it in step with the locale automatically.)
Consumption
Like @microbit/ui, this package ships as source — TypeScript compiled
and style-extracted by the consuming app's build. Set up @microbit/ui first
(preset stack, styled-system alias, cascade layers — see its
README), then:
Install the package.
@microbit/uiis a peer dependency, so both must be installed; keep them upgraded together. The peer range is deliberately*: it is the one range npm accepts both for the published prerelease versions (a normal semver range refuses to match another package's prereleases) and for the in-repo workspace copy, which sits at0.0.0. Apps pin exact versions anyway.react-iconsandreact-intlare peers too, matching@microbit/ui's expectations.Add this package's sources to your Panda
include, alongside the@microbit/uiglob:include: [ "./src/**/*.{ts,tsx}", "./node_modules/@microbit/ui/src/**/*.{ts,tsx}", "./node_modules/@microbit/ui-patterns/src/**/*.{ts,tsx}", ],Miss the glob and the components render unstyled: Panda never sees their style calls, and there is no error.
Strings: compile
lang/ui.<locale>.jsoninto your per-locale catalogs exactly as you do@microbit/ui's (message ids are namespacedui-patterns.). English needs no catalog — components carry inlinedefaultMessages.
Development
Stories live in stories/ here but are rendered by the repo's Storybook
harness, apps/storybook, whose config globs this
package — one harness for the whole family. Run it from the repo root:
npm run storybooknpm run typecheck -w @microbit/ui-patterns generates this package's own
styled-system/ output (from the same base preset) and runs tsc;
npm run test -w @microbit/ui-patterns runs the vitest suite.
Releases
Create a GitHub release with a tag of the form ui-patterns-vX.Y.Z
(e.g. ui-patterns-v0.1.0-alpha.1). The build workflow routes the release to
this package by the tag prefix and publishes it. This package is versioned
independently of @microbit/ui.
License
MIT © Micro:bit Educational Foundation and contributors.
