| Package | What it does | How your theme gets it |
|---|---|---|
@numueg/theme-cli | The numu-theme command: scaffold, dev server, check, lint, build, push, submit | Dev dependency |
@numueg/theme-plugin | The Vite plugin that builds dist/theme.js, the manifest and the import map | numuTheme() in vite.config.ts |
@numueg/theme-sdk | React hooks and components: useCart, useProduct, <Money>, <Link>, <RichText> and more | Provided by the storefront at runtime — never bundled |
@numueg/theme-kit | Small helpers with no React in them: settings readers, money formatting, image transforms | Bundled into your theme |
numu-theme init my-theme creates a working theme: pages, a hero section, a block, the settings schema and English and Arabic locales.numu-theme dev serves your theme with hot reload against sample data. Point your own test store at the dev server to preview it inside the real theme editor.numu-theme check validates theme.json, schemas and locales. numu-theme lint runs the static rules; --strict turns warnings into errors for CI.numu-theme push uploads the build to your developer sandbox — only you can see it. numu-theme install puts it on your test store so you can try it with real data.numu-theme submit sends a version to the NUMU team. We review it before it is listed.margin-inline-start, not margin-left) so they work in both directions.<Money> or formatMoney — never divide by 100 or hardcode a currency.<Link>, so navigation stays inside the storefront without a full page reload.<RichText>, which sanitises it.featured_collection lives in src/sections/featured_collection.tsx; a mismatch means it never renders.window or document at module load.