Skip to main content
A design module is a regular Talos module whose <kebab>.yml declares type: "design". It carries your design system (React components, hooks, icons, fonts, styles, and front-end utilities) and is shared across applications. Unlike a normal module, a design module is not registered into AppModule or SharedModule; nothing imports it as a runtime feature. Its src/ is not scaffolded from a generator either. It comes from the upstream skeleton-design repository, so the layout below is fixed and canonical.

Layout

A design module lives under modules/<kebab-name>/. It keeps the base module files but drops the runtime <Pascal>Module.ts, and its src/ is organized by asset kind:

Module-level files

These live at the module root, the same as any module. See Module structure for the shared conventions. Unlike a normal module, there is no <Pascal>Module.ts (and no matching spec). A design module has no runtime entry class to register, so the scaffolded module file is removed: the src/ content comes from skeleton-design, not from local generation.

The src/ folders

Each folder under src/ holds one kind of asset. Stay within these conventions when adding to a design module.

The component-variant pattern

A component folder groups a primitive with its variants. The button/ folder, for example, holds the base Button.tsx alongside variants like ButtonSave.tsx:
When you need a specialized version of a component, add a sibling variant in the same folder and build it on the base primitive. This keeps every flavor of a control in one place and avoids re-implementing shared behavior.

Next steps