Helix – Roadmap
Angular 22 UI ecosystem: vanilla components (@gravionlabs/helix-ui), an application shell with NgRx Signal Store state, Zod forms and AG Grid helpers. Until October 2026 the components were a vendored fork of PrimeNG 21.1.9 (@gravionlabs/helix-core, retired by ADR 0002); the shell was scaffolded from sakai-ng.
✅ Phase 1 – Workspace & Library Setup
- [x] Angular workspace
helix(Angular 21 initially, upgraded to 22 in epic #233) - [x] Library
@gravionlabs/helix-core(vendored PrimeNG fork,h-selectors; retired, see Phase 7) - [x] Demo app
apps/helix-demo - [x] Dependencies:
@ngrx/signals,@primeuix/*,tailwindcss@^4 - [x] GitHub Actions CI/CD workflow (build + test; publish via manual
workflow_dispatch) - [x] Public npm registry publishing under the
@gravionlabsscope (moved off GitHub Packages, which has no anonymous read;@gravionlabsmatches the repo owner so GitHub Packages would also work, but npmjs is the target so installs don't need an authenticated.npmrc)
✅ Phase 2 – Layout Components
NgRx Signal Store-backed layout, in @gravionlabs/helix-shell. All components use separate .ts / .html / .scss files, no .component postfix.
Store
- [x]
layout.models.ts–LayoutConfig,LayoutState,MenuMode - [x]
layout.store.ts–LayoutStorewithsignalStore() - [x] Dark mode via
withHooks().onIniteffect (View Transitions API) - [x]
[menu]input binding for the nav model
Components
- [x]
HelixAppLayout– Application shell with topbar, nav-rail, footer, router outlet - [x]
HelixTopbar– Navigation bar with breadcrumbs and action buttons - [x]
HelixNavRail– Collapsible side-navigation rail with brand icon - [x]
HelixNavRailItem– Recursive item renderer for nav rail - [x]
HelixFooter– Footer bar - [x]
HelixConfigurator– Theme configurator (preset, primary, surface, dark mode) - [x]
HelixFloatingConfigurator– Floating theme toggle button - [x]
HelixStatusBar– Status bar with environment badge
✅ Phase 3 – Pages
Generic, reusable page templates in @gravionlabs/helix-shell.
Auth Pages
- [x]
HelixLogin,HelixError,HelixAccess,authRoutes
Utility Pages
- [x]
HelixNotfound,HelixEmpty
Landing Page
- [x]
HelixLanding,HelixHeroWidget,HelixFeaturesWidget,HelixHighlightsWidget,HelixPricingWidget,HelixFooterWidget,HelixTopbarWidget
Demo stays (not in the library)
dashboard/– Demo-specific charts and fake datauikit/– Helix component showcasecrud/– Demo CRUD tableservice/– Fake data servicesdocumentation/– Project-specific developer documentation
✅ Phase 4 – Enhancements
- [x]
@Input()customization for all page components (titles, logos, links) - [x] Unit tests for
LayoutStore - [ ] Secondary entry points beyond the existing per-component ones (e.g. a combined
@gravionlabs/helix-core/pagesbarrel) - [ ] Storybook integration
- [ ]
CHANGELOG.md+ semantic versioning via GitVersion
🚧 Phase 5 – Cleanup & Rebrand (epic #358, in progress)
Post-merge cleanup ahead of the first real (re-)publish. All GitHub releases/tags before this epic were deleted, so every API break here was free — no external consumers existed yet.
- [x] #359 – Finish the signal migration (remaining manual
@Input/@Output/@HostListenerdecorators converted toinput()/output()/host bindings) - [x] #374 – Rename remaining
Prime*symbols toHelix*(PrimeTemplate→HelixTemplate,PrimeIcons→HelixIcons,providePrimeNG→provideHelix, …) - [x] #378 – Move framework-only form utilities (
Validators,FirstErrorPipe,HelixFormArrayWithFactory,helixFormErrorMap) from@gravionlabs/helix-shellinto@gravionlabs/helix-core - [x] #381 – Package restructure:
core/shell/zod/ag-gridnaming, release cleanup. The npm scope moved twice — first to@helix-ui/*(#384), then back to@gravionlabs/*withhelix-prefixed names (#418) once@helix-uiturned out to be unclaimable on npmjs (parent issue still open pending closeout) - [ ] #385 – Documentation refresh: committed component-docs generator (
scripts/generate-component-docs.mjs) + regenerateddocs/components/*, manual docs swept for stale symbol names / import paths
🚧 Phase 6 – Visual identity & styling foundation (epics #519, #523)
Decided 2026-10-07 in ADR 0001: Helix's own look as design tokens on the vendored fork now, a vanilla Angular library replacing PrimeNG as the long-term target.
- [x] #520 – ADR 0001;
helixPreset(themes/helix, extends Aura, values pending the mockups);pnpm tokens:export→dist/tokens/<preset>.{css,json}(static--h-*variables, light + dark) - [ ] #521 – Design mockups in Claude Design; Helix look for docs site, demo and components. Done: mockup rounds 1–2 (hybrid chosen: muted indigo primary; surfaces then settled on the sibling sites' VitePress neutrals, #532), type settled on Inter (as on the sibling Gravion Labs sites) after a comparison of six pairings,
helixPresetvalues, shell font stacks, demo and shell default tohelixPreset. VitePress theme on the same tokens (apps/site/.vitepress/theme), theming guide (docs/THEMING.md) - [x] #522 – Design System sync:
pnpm design-system:build(tokens.json, brand book, 12 component previews, cover, Inter font, Helix mark), published as the "Helix Design System" artifact;docs/CONTRIBUTING-design-system.md - [x] #523 –
@gravionlabs/helix-ui: vanilla library on the Helix tokens (52 components);helix-shell,helix-zod, the demo and the docs migrated.hx-paginatorandhx-data-table(sorting, paging, selection, filters, row expansion) followed; AG Grid stays the choice for large grids
✅ Phase 7 – helix-core retired (epics #584, #585)
- [x] #584 – every consumer (shell, zod, ag-grid, demo, docs, Design System) runs on
helix-ui - [x] #585 –
projects/coreremoved from the workspace, CI and publishing without it, ADR 0002;npm deprecateof@gravionlabs/helix-coreis a manual step
Architecture
helix/
├── projects/
│ ├── ui/ # @gravionlabs/helix-ui — vanilla components on the Helix tokens
│ ├── tokens/ # token data (private; resolved to tokens.css)
│ ├── shell/ # @gravionlabs/helix-shell — app shell, auth/landing pages, layout store
│ ├── zod/ # @gravionlabs/helix-zod — Zod v4 reactive-forms adapter
│ └── ag-grid/ # @gravionlabs/helix-ag-grid — AG Grid helpers
├── apps/
│ └── helix-demo/ # Showcase app (dashboard, uikit, crud, docs)
└── docs/
├── adr/ # Architecture decision records
├── ROADMAP.md
├── COMPONENTS.md
├── HELIX-SHELL.md
└── components/ # One page per @gravionlabs/helix-ui componentPublished to
The public npm registry, under the @gravionlabs scope (@gravionlabs/helix-ui, @gravionlabs/helix-shell, @gravionlabs/helix-zod, @gravionlabs/helix-ag-grid). Publishing is currently manual (workflow_dispatch with force-publish) until #381's rename has settled — see .github/workflows/ci.yml.