The SPARXSTAR 3iAtlas Multilingual Keyboard is an integrated typing solution designed for under-resourced and West African languages. It lets users seamlessly switch between a standard layout equipped with a specialized character toolbar and an advanced Keyman engine for complex linguistic scripts.
# 3iAtlas Multilingual Input
`@starisian/3iatlas-multilingual-input` is a standalone, client-side TypeScript
package for multilingual text input across 3iAtlas products. It runs in
browsers, including Android and iOS web apps. It is not a WordPress plugin, and
it contains no PHP, no server, and no database. Node is used only for
development, testing, building, and publishing.
Read `TECHNICAL_SPEC.md` first — it governs this package.
## Availability and AiWA validation are separate
Two independent states, deliberately not conflated:
- **Available** — a licensed, version-pinned keyboard loads and passes input
tests. The profile can be selected and typed with. Gate: `isKeyboardAvailable`.
- **AiWA linguistically validated** — AiWA reviewed the exact language,
orthography, script, and regional variant. Gate: `isLinguisticallyValidated`.
A keyboard may be **available without being validated**. That is what lets
product and engineering work proceed without making false linguistic claims.
**No profile is AiWA-validated yet.** Mandinka, Wolof, and Fula are all
available; none is certified. Render `describeValidationStatus( profile )`
verbatim rather than inventing wording — CI fails the build if that string
would claim validation for an unvalidated profile. See
`docs/PROFILE-REVIEW.md`.
## Example application
`examples/integration` proves the package against five host surfaces: a native
input, a textarea, a contenteditable surface, a controlled React input, and the
WordPad adapter boundary.
```bash
pnpm run build
pnpm --filter @starisian/3iatlas-multilingual-input-example run dev
```
## Packages
| Package | Purpose |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `…-core` …