Kosmesis

kosmesis

Changelog for kosmesis.

0.4.0

  • kosmesis init now prompts for an icon library (Lucide, backed by @morphos/icons' built-in LucideSource provider, or None), stores the choice as iconLibrary in components.json, installs @morphos/icons/lucide when Lucide is selected, and wires @IconProvider(LucideSource) onto the project's root component — the same "ensure" pattern already used for @Themed(...).
  • Every registry component that previously rendered an emoji or a hand-picked Unicode glyph as a pseudo-icon now renders a real <Icon> from @morphos/icons instead, in both style systems.

0.3.2

  • kosmesis init now wires the virtual:praxisjs/styles.css import into @praxisjs/css projects: it adds import "virtual:praxisjs/styles.css"; to the entry file (src/main.tsx) after wiring praxisjsCSS() into vite.config.ts, and declares the module in src/vite-env.d.ts so TypeScript doesn't error on it. Previously this step was missing, so the CSS the Vite plugin extracts at build time never reached the production bundle.

0.3.1

  • Bumped tsdown to 0.22.4, resolving a peer dependency mismatch with typescript.

0.3.0

  • kosmesis init now asks before touching pre-existing file content instead of silently keeping or discarding it:
    • If your global CSS file or @praxisjs/css theme module already has content, you're asked whether to erase it before Kosmesis adds its tokens.
    • For @praxisjs/css projects, the create-praxisjs template's default stylesheet (a separate file from the theme module) gets the same treatment, since it's otherwise never touched.
    • For @praxisjs/css projects, init also asks for your root component's path and automatically wires @Themed(KosmesisTokens, LightTheme, { persist: true, syncTabs: true }) above @Component() — previously this was left as a manual note.

0.2.0

  • Added a named-registry system: kosmesis registry add|remove|list manages a registries map in components.json, and kosmesis add @<namespace>/<component> resolves a component from its namespace's registry instead of the project default.
  • Added kosmesis registry init and kosmesis registry build to scaffold and build a custom registry — no more hand-writing a registry.json-to-inlined-JSON build script. See Custom Registry.
  • Registry entries can now declare devDependencies alongside dependencieskosmesis add installs each group separately, with devDependencies getting the package manager's -D/--save-dev flag.

0.1.2

  • Removed the unnecessary baseUrl assignment from ensureTsconfigAlias. This avoids the deprecated baseUrl compiler option, which is scheduled to stop working in TypeScript 7.0, while preserving the generated path alias configuration.

0.1.1

  • kosmesis init and kosmesis add now install missing runtime dependencies automatically with the detected package manager. If the install fails, the CLI still prints the command to run manually.

0.1.0

Initial release.

  • kosmesis init — writes components.json, prompts once for a style system (Tailwind CSS or @praxisjs/css), wires theme tokens and the matching Vite plugin into the project, adds the @/* import alias, and (Tailwind only) writes the cn() helper.
  • kosmesis add <component...> — resolves a component's registryDependencies closure in dependency-first order, writes every file into src/components/ui/, and reports any missing runtime dependencies.
  • A registry of 65 components ported from shadcn/ui, each shipped in two independent style systems with an identical public prop API — Tailwind CSS + class-variance-authority, and @praxisjs/css — built on Morphos instead of Radix UI.

On this page