vuetifyjs / vuetifyjs/cli

[Feature Request] First-party registry (vuetify add) — Emerald open-code distribution

Open
#24 0 comments 0 reactions 1 assignee View on GitHub

@johnleider is already working on this.

Since Jul 8, 2026.

enhancement
Dominant language
TypeScript
Stars
8
Forks
1
Avg merge
1m
Merged PRs (30d)
1

Description

Summary

Build a Vue-native first-party registrynpx vuetify add <component> copies ownable, MIT-licensed Emerald component source into the user's project (shadcn-style "open code"), built on @vuetify/v0 + Paper. Design-system-scoped, with Emerald as the default DS.

Full design spec (private): https://bin.vuetifyjs.com/bins/el91kQ
Local spec: .claude/specs/2026-07-08-first-party-registry-design.md

Locked decisions

  • Unit: styled, ownable components (headline) + composable eject (wedge)
  • DS axis: DS-scoped registry; designSystem field load-bearing from day one; Emerald = default (only populated DS until a second lands)
  • Delivery: static registry, no gating (Emerald is MIT/free; only its Figma file is commercial)
  • Source of truth: co-located in packages/emerald (vuetifyjs/0); manifest emitted at build
  • Eject: own-the-source; copied source visibly imports v0 createX; no headless twins. Composable recipes = v1.1

v1 scope

  • vuetify init — installs deps, wires the emerald token layer (UnoCSS emeraldTheme + --emerald-* vars), writes vuetify.config
  • vuetify add <item…> — resolve item + transitive registryDependencies + npm deps, write source, print notes
  • vuetify add (no args) / vuetify list — interactive select
  • Static manifest on CDN; cross-family dependency resolution
  • Reconcile existing add (integrations-only today) → registry-first, eslint stays a reserved keyword

Out of v1: multi-DS population (schema ready), composable recipes, blocks/templates, DS-payload items.

Open items / risks

  1. Rides vuetifyjs/0 PR #167 (feat/emerald-paper-design-system) merging — machinery can be built in parallel against a fixture manifest
  2. Hosting URL / CI — registry.vuetifyjs.com vs 0.vuetifyjs.com/r/; who owns the publish step
  3. Post-eject token boundary — does @paper/emerald export emeraldTheme + --emerald-* for owners who copied source but didn't install the DS package?
  4. Confirm no consumer depends on add's current integration-only behavior beyond eslint

Next step

Turn the spec into an implementation plan.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.