npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

create-helix

v0.9.5

Published

Scaffold a new project with HELiX web components — TUI-powered CLI

Downloads

1,194

Readme

create-helix

npm version CI License: MIT Node 22+ TypeScript

Scaffold a HELiX design system project in seconds. TUI-powered CLI with a two-step starter-kit picker — first you tell it what the project builds (wc-storybook design system, react-next app, react-vite app, or drupal-theme), then it offers to bundle a shared design-system package alongside. 11 additional experimental frameworks are available behind --show-experimental.

New in v0.9.0 — SvelteKit joins the production-tier starter kits. The Q1 picker now offers five production-tier targets: wc-storybook, react-next, react-vite, astro, and svelte-kit. The SvelteKit starter ships a real SvelteKit 2 + Svelte 5 landing page on adapter-static (hero, features, showcase, browser-native View Transitions via onNavigate, theme toggle, two routed pages) and consumes the design system as <hx-*> web components natively — Svelte 5's compiler treats unknown lowercase-with-dash tags as DOM elements first-class, no isCustomElement config needed. Visual baselines ship under tests/e2e/screenshots/sveltekit/.

v0.8.0 — Astro joined the production tier with a real Astro 5 landing page (hero, features, view transitions, theme toggle, two routed pages) consuming the design system as <hx-*> web components natively. Baselines under tests/e2e/screenshots/astro/.

v0.7.0 introduced monorepo by default for app frameworks. When you pick react-next, react-vite, astro, or svelte-kit and keep the design system (the default Y at Q2), create-helix emits a turbo + pnpm-workspaces monorepo with apps/web/ + packages/{design-system,types,utils}/ — modeled on the shadcn apps/web + packages/ui precedent. Pass --no-design-system (or answer "n" at Q2) to keep the v0.6.x flat single-app shape. See Monorepo by default and MIGRATING.md.

The flagship wc-storybook template remains the default interactive selection and ships a brand-storytelling Storybook experience out of the box — Cover narrative, foundations IA (including a v0.6.0 Iconography page wired to @helixui/icons), per-component AAA conformance pages with auto-injected accessibility status cards, and a token-driven manager chrome that follows your brand. See WC-Storybook brand-storytelling experience below.

Quick Start

npx create-helix
# or
npm create helix

Follow the interactive prompts to choose your framework, component bundles, and features.

Drupal Theme Scaffolding

npx create-helix --drupal

Or pass a preset directly:

npx create-helix --drupal --preset healthcare

Supported Frameworks

The interactive prompt shows a curated slim list by default — the flagship wc-storybook factory plus the four production-tier app starters that have shipped beyond stub quality. The remaining 11 framework templates exist but are gated behind --show-experimental until they reach the same bar.

| Framework | Command Hint | Features | | ------------------------------ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- | | WC Storybook (factory) | default — design system factory | Lit 3, Storybook 10, brand-storytelling docs, AAA cards, Iconography page, auto-catalog ~99 hx-* entries | | React + Next.js 16 | recommended for new app projects | SSR, App Router, React wrappers | | React + Vite | best DX for SPAs | Hot reload, React wrappers, production landing page | | Astro 5 | islands + native web components | Landing page, view transitions, theme toggle, native <hx-*> consumption, Playwright visual baseline | | SvelteKit 2 (new v0.9.0) | static-site + native web components | Landing page, browser-native View Transitions API, theme toggle, native <hx-*> consumption, Playwright baseline |

Experimental templates

Run npx create-helix --show-experimental (or set HELIX_SHOW_EXPERIMENTAL=1) to surface these in the prompt, the list subcommand, and as valid --template <name> values:

remix, vue-nuxt, vue-vite, angular, lit-vite, solid-vite, qwik-vite, preact-vite, stencil, ember, vanilla

These templates compile and emit a project skeleton, but their docs / examples / DX polish lag behind the curated five. They'll graduate out of --show-experimental as they reach the same bar.

Monorepo by default (v0.7.0+)

When you pick an app framework (react-next, react-vite, astro, or svelte-kit as of v0.9.0) and keep the design system at the second prompt — the default Ycreate-helix emits a turbo + pnpm-workspaces monorepo:

my-project/
├── apps/
│   └── web/                # Next.js, Vite, Astro, or SvelteKit app
├── packages/
│   ├── design-system/      # Lit web components + Storybook
│   ├── types/              # Shared TS types + brand utilities
│   └── utils/              # Shared helpers (cn, isPresent, …)
├── pnpm-workspace.yaml
├── turbo.json
├── tsconfig.base.json
└── package.json

apps/web declares the workspace packages via workspace:* deps. The framework-specific wiring per starter kit:

  • Next.js carries transpilePackages + experimental.externalDir; the design system is consumed via generated React wrappers from packages/design-system/src/react.ts.
  • Vite carries optimizeDeps.exclude + server.fs.allow: ['..', '../..']; React wrappers as with Next.
  • Astro (v0.8.0) consumes the design system as <hx-*> web components natively — no React wrappers, no createComponent indirection — because Astro's island architecture is web-component-first.
  • SvelteKit (v0.9.0) also consumes the design system as <hx-*> web components natively — Svelte 5's compiler treats unknown lowercase-with-dash tags as DOM elements first-class (no isCustomElement config required). adapter-static output; browser-native View Transitions wired via onNavigate; apps/web/vite.config.ts carries the same optimizeDeps.exclude + server.fs.allow wiring.

Running pnpm dev at the root runs turbo run dev, which boots both apps/web and packages/design-system Storybook (port 6006) concurrently. Default app ports: Next.js 3000, Vite 5173, Astro 4321, SvelteKit 5173.

The shape mirrors the shadcn apps/web + packages/ui monorepo precedent — proven at scale, familiar to consumers.

Available starter-kit combinations

After Q1 (what does this project build?) and Q2 (include design system?), the supported combinations are:

  • Design system (wc-storybook, flat — always flat, it is the design system)
  • Next.js + design system (monorepo, default for Next pick)
  • Vite + design system (monorepo, default for Vite pick)
  • Astro + design system (v0.8.0) — monorepo, default for Astro pick
  • SvelteKit + design system (new v0.9.0) — monorepo, default for SvelteKit pick

Opting out

Three escape valves keep the v0.6.x flat single-app shape available:

  • Interactive — answer "n" at the "Include design-system package?" prompt.
  • CLI flag — pass --no-design-system (or --monorepo=false).
  • APIscaffold({ framework: 'react-next' | 'react-vite' | 'astro', monorepoMode: false }).

wc-storybook always scaffolds flat — it is itself the design system, so wrapping it in a monorepo would duplicate the layer.

The flat Astro path is deprecated as of v0.8.0 — still reachable via the API + --no-design-system for back-compat, but the monorepo is now the supported shipping target. New Astro investment lands in the monorepo emit. See MIGRATING.md v0.7 → v0.8 section.

Existing v0.5.x / v0.6.x / v0.7.x scaffolds are not broken. Their shape on disk is unchanged. A create-helix migrate-to-monorepo subcommand is deferred; see MIGRATING.md for the manual recipe (which covers Next/Vite/Astro alike — they share the same workspace shape).

Cross-kit feature parity (v0.9.1+)

The 4 production kits (react-next, react-vite, astro, svelte-kit) share a deliberately consistent consumer surface so a developer moving between them recognizes the shape:

| Feature | react-next | react-vite | astro | svelte-kit | | --------------------------------------------- | ------------------------------------ | ----------------------- | --------------------------- | ------------------- | | <h1> | "Build interfaces on web standards." | same | same | same | | <title> | {name} — built with create-helix | same | same | same | | Theme toggle | native <button> w/ aria-label | same | same | same | | localStorage key | helix-theme | same | same | same | | Pre-hydration boot script | inline <script> | /public/theme-boot.js | inline <script is:inline> | inline <script> | | Pre-hydration prefers-color-scheme fallback | yes | yes | yes | yes | | <main> landmark | per-page (exactly 1) | in App.tsx | in Layout | in +layout.svelte | | Hero CTAs | styled <a class="button"> | same | same | same | | <hx-*> consumption | @lit/react wrappers | @lit/react wrappers | native | native |

What's intentionally platform-specific:

  • App structure — App Router multi-route (Next), SPA (Vite), static + ClientRouter (Astro), file-based routing (SvelteKit).
  • View transitions — Astro's <ClientRouter /> and SvelteKit's onNavigate + browser-native View Transitions API. React kits don't get these for free.
  • Build artifacts.next/, dist/, dist/ (astro), build/ + .svelte-kit/.

What's deferred to upstream:

  • <hx-select> placeholder color contrast (#94a3b8 on white = 2.56:1) — single remaining axe-core violation across all 8 default page-visits. Tracked in the BST Helix Bug Reports.md vault doc.

WC-Storybook brand-storytelling experience

npx create-helix → choose WC Storybook (factory) to scaffold a Lit 3 design system with a fully-staged Storybook out of the box. Three brand prompts shape the experience:

  • Design system codename (--ds-name) — drives element prefix ({ds}-button) and CSS token namespace ({prefix}-*).
  • Brand tagline (--brand-tagline) — surfaces in Cover.mdx and Brand.mdx. Falls back to a neutral default.
  • Brand verticals (--brand-verticals "fintech,wellness") — populates the brand toolbar dropdown. Empty = single-brand mode.

The scaffolded Storybook ships:

  • Cover.mdx with brand tagline + vertical chips + quick-start commands.
  • Overview.mdx explaining the three-tier token cascade (primitive → semantic → component).
  • Foundations — 8 MDX pages: Tokens, Color, Typography, Spacing, Layout, Brand, Accessibility, Iconography (new in v0.6.0 — renders the full @helixui/icons catalog plus a curated showcase, wired to setBasePath('/icons') and the @helixui/icons/dist static dir). All live-bound to the consumer's var({prefix}-*) tokens.
  • Token deep-dives — dedicated Foundations/Tokens/Borders and Foundations/Tokens/Shadows pages with live swatches, plus a Foundations/Tokens/Playground story for interactive token inspection.
  • Per-component AAA conformance pages — 8 hand-authored MDXes (button, card, checkbox, dialog, form, select, tabs, text-input) parameterized by {dsName} so <aurora-card>, <aurora-form> etc. render the consumer's tags. Each ships hero scenarios + auto-injected A11yStatusCard reading from CEM helixMeta.aaa.* + APG pattern card + consumer obligations.
  • Accessibility narrative — top-level Accessibility/* namespace with 8 pages: Dashboard, AAA Story Template, Keyboard Contracts, Success Criteria, Consumer Obligations, Focus Management, Contrast Deep-Dive, Forced Colors. Editorial content modeled on HELiX's own Storybook depth.
  • Scene stories — 3 cross-domain-neutral pattern playgrounds (Account Setup, Team Dashboard, Settings) demonstrating composition of multiple components in real flows.
  • React helper componentsTokenSwatchGrid, ContrastMatrix, RatioCard, CodeBlock, CodeTabs, plus useResolvedToken hook and APCA contrast util. Available under src/stories/_components/ for consumers to compose their own MDXes.
  • InlineAuditPanel opt-in pattern — ships as a no-op stub by default. Consumers wire their own markdown prop to surface per-component AAA-AUDIT content (the audit source lives inside the HELiX monorepo and isn't published; see docs/FOLLOW-UP-shared-storybook-kit.md for the trigger conditions that would make this live).
  • Token-driven manager chrome — light / dark / high-contrast modes via @helixui/tokens. FOUC-prevention sync scripts so dark/HC pages don't flash white on reload.
  • Brand toolbar + persistence via localStorage["helix:storybook:globals"].
  • 8 Storybook addons — a11y, docs, themes, vitest, designs, links, pseudo-states, chromatic-com.
  • helix.storybook.config.ts at the consumer root — opt out of components / docs pages / brand verticals / AAA / narrative pages without diving into .storybook/.
  • Auto-catalog on install (v0.6.0) — when scaffolding with --install-deps (default), pnpm cem:catalog runs immediately after pnpm install so the ~99-entry hx-* catalog sidebar (atoms / molecules / organisms) is populated on first pnpm storybook boot. If you used --no-install, the Next-steps banner explicitly lists pnpm install && pnpm cem:catalog so the catalog populates before first boot.

Drupal Presets

| Preset | Description | SDC Count | | ------------ | --------------------------------------------------- | --------- | | standard | Core Drupal SDCs for general-purpose themes | 7 | | blog | Standard + blog-specific content components | 12 | | healthcare | Blog + healthcare-specific components (HIPAA-aware) | 16 | | intranet | Standard + employee portal components | 11 |

Each preset generates a complete Drupal theme directory with:

  • Theme info and libraries YAML files
  • Single Directory Components (SDCs) with Twig templates
  • HELiX component CDN integration via helixui.libraries.yml
  • Drupal behaviors using the once() pattern
  • composer.json and package.json

See docs/drupal-presets.md for full details.

Component Bundles

When scaffolding a framework project, you can select which component bundles to include:

| Bundle | Components | Description | | ----------------------- | ---------- | ------------------------------------------------------------ | | All Components | 98 | The full HELiX library | | Core UI | 14 | button, card, badge, text, icon, avatar, divider, chip | | Form Components | 16 | text-input, select, checkbox, radio, switch, textarea, field | | Navigation | 12 | nav, sidebar, tabs, breadcrumb, pagination, menu | | Data Display | 10 | data-table, stat, progress, meter, counter, structured-list | | Feedback & Overlays | 8 | alert, toast, dialog, drawer, banner, skeleton | | Layout | 11 | grid, stack, split-panel, accordion, carousel |

Additional Features

  • TypeScript -- strict mode configuration
  • ESLint + Prettier -- code quality and formatting
  • HELiX Design Tokens -- CSS custom properties for theming
  • Dark Mode Support -- automatic dark mode via prefers-color-scheme
  • Example Pages -- forms, dashboard, and settings page examples

Roadmap & Migration

  • Migrating from v0.6.x → v0.7.0 — see MIGRATING.md. Existing flat scaffolds keep working; the new monorepo shape is opt-in via the second prompt (or --monorepo). A manual flat → monorepo recipe is included for early adopters who want to convert.
  • create-helix migrate-to-monorepo subcommand — deferred to v0.7.1. Will automate the manual recipe in MIGRATING.md.
  • Publishable design-system package — deferred. v0.7.0 emits packages/design-system as a workspace-internal package only; publishing it standalone to npm needs additional wiring (build pipeline, narrowed peer deps).
  • npm / yarn workspace support — not on the v0.7.x roadmap. v0.7.0 is pnpm-only (pnpm-workspace.yaml + workspace:*).
  • @helixui/storybook-kit shared package extraction — deferred. See docs/FOLLOW-UP-shared-storybook-kit.md for trigger conditions and scope sketch. Today's wc-storybook factory ports helix's Storybook depth at scaffold time; a future iteration may consume a shared kit instead.

Requirements

  • Node.js >= 22.0.0

Development

git clone https://github.com/bookedsolidtech/create-helix-app.git
cd create-helix-app
npm install
npm run build

Scripts

| Script | Description | | ---------------------- | -------------------------------- | | npm run build | Compile TypeScript | | npm run dev | Watch mode | | npm start | Run the CLI | | npm run type-check | TypeScript strict check | | npm run lint | ESLint | | npm run format | Prettier auto-fix | | npm run format:check | Prettier check | | npm test | Run tests | | npm run verify | lint + format:check + type-check | | npm run preflight | verify + test |

Contributing

  1. Fork the repo and create a feature branch
  2. Make your changes
  3. Run npm run verify before pushing (enforced by pre-push hook)
  4. Run npm test to ensure all tests pass
  5. Open a pull request against dev

Secret Scanning

This repo uses gitleaks to prevent secrets from being committed. Install it locally to enable pre-commit scanning:

# macOS
brew install gitleaks

# Linux
GITLEAKS_VERSION="8.21.2"
curl -sSfL \
  "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" \
  | tar -xz -C ~/.local/bin gitleaks

# Windows (via scoop)
scoop install gitleaks

If gitleaks is not installed, the pre-commit hook will warn but will not block your commit. CI always runs the full scan. Configuration is in .gitleaks.toml.

License

MIT -- Copyright 2026 BookedSolid Tech