Explicitly added @oxc-parser/binding-linux-x64-gnu and @rolldown/binding-linux-x64-gnu as devDependencies. This bypasses issues where pnpm occasionally skips optional native platform bindings during installation, which previously caused CriticalPresetLoadError when loading StencilJS plugins.
LUNA Charts
LUNA Charts is a reusable, developer-friendly charting library designed to make accessible, WCAG-oriented data visualization the default rather than an afterthought.
Project status: Groundwork phase. Core architecture and tooling are in place; production-ready chart components (starting with
BarChart) are still in development. See the Roadmap for details.
Why LUNA Charts
Most charting libraries treat accessibility as an add-on. LUNA Charts builds it in from the start:
- Accessible by default — components are designed and tested against WCAG guidance from day one, not patched in afterward
- Framework-agnostic — built as standard Web Components (Stencil), usable in React, Vue, Angular, Svelte, or plain HTML
- SVG-based rendering — inspectable, stylable, and screen-reader-friendly output instead of an opaque canvas
Tech Stack
| Area | Technology |
|---|---|
| Component framework | Stencil (compiles to standard Web Components) |
| Language | TypeScript |
| Package manager | pnpm (monorepo workspaces) |
| Unit & component testing | Vitest, with Playwright as the browser provider |
| Accessibility testing | axe-core |
| Documentation | Starlight |
| Component explorer | Storybook |
| Linting & formatting | ESLint, Prettier |
| Release management | Changesets |
The full set of architecture decisions behind these choices is documented in docs/.../architecture/adr and the broader Architecture Development Method (ADM) documentation.
Project Structure
luna-charts/
│
├── packages/
│ └── luna-charts/ # The library itself (Stencil components, Storybook)
│
├── docs/ # Architecture docs, ADRs, guides (Starlight)
│
├── examples/ # Usage examples (framework integrations)
│
├── .changeset/ # Release/versioning configuration
│
└── .github/ # Community health files (Code of Conduct, etc.)
Getting Started
Prerequisites
- Node.js
>= 22.0.0 - pnpm
11.11.0(seedevEnginesinpackage.json; pnpm will be downloaded automatically via Corepack if missing) - Docker (required for running component/browser tests locally, see below)
Installation
git clone <this-repository>
cd luna-charts
pnpm install
Common commands
| Command | Description |
|---|---|
pnpm lint |
Run ESLint across the repository |
pnpm format |
Format all files with Prettier |
pnpm test:unit |
Run unit tests for the luna-charts package |
pnpm test:component |
Run component/browser tests inside the containerized Playwright environment |
pnpm test |
Run the full test suite (unit + component) |
pnpm changeset |
Record a changeset for your change (required for any user-facing change) |
Component and browser tests run inside Docker (docker-compose.test.yaml) to guarantee a reproducible browser environment across all contributors and CI — you don't need Playwright browsers installed locally.
Documentation
- Architecture documentation: see
docs/— includes the full Architecture Development Method (ADM) documentation (vision, business architecture, technology architecture, governance, migration planning) and all Architecture Decision Records (ADRs) - Contributing: see CONTRIBUTING.md
- Code of Conduct: see .github/CODE_OF_CONDUCT.md
License
LUNA Charts is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).