Loading...
Loading...
Guide for adding a new theme family to turbo-themes. Use when implementing Nord, Solarized, Gruvbox, Tokyo Night, One Dark, Ayu, Kanagawa, Everforest, Radix, or any new theme.
npx skill4agent add lgtm-hq/ai-skills turbo-addsrc/themes/packs/src/themes/registry.tsstand-tscommitturbo-verifysrc/themes/packs/catppuccin.synced.tsscripts/sync-catppuccin.mjssrc/themes/packs/rose-pine.synced.tssrc/themes/packs/nord.tssrc/themes/packs/bulma.tssrc/themes/packs/dracula.tssrc/themes/registry.ts# Every file that mentions an existing variant — the new theme needs the
# same touchpoints (packs, token JSON, icons, site data, examples, tests)
rg -l 'rose-pine-moon' --hidden -g '!node_modules' -g '!dist'
# Family-level touchpoints (type unions, family maps, vendor metadata)
rg -l 'rose-pine' src/ packages/ apps/ scripts/theme:syncpackage.jsontest/integration/bundle-size.test.tsbuildtheme:syncscripts/sync-<theme>.mjs # Optional: sync from npm package
src/themes/packs/<theme>.synced.ts # Theme definitions (or <theme>.ts for manual)
schema/tokens/themes/<theme-id>.tokens.json # W3C Design Token file, one per variant
assets/img/<theme-id>.png # Theme icon, one per variantidnamehomepagelicensesourceflavorsbackgroundtextbrandstateborderaccenttypographycontenticonUrlVENDOR_ICON_MAPschema/tokens/themes/$value$type$schema../../turbo-themes.schema.json#/$defs/ThemeFilescripts/sync-catppuccin.mjssrc/themes/packs/packages/core/src/themes/packs/node_modules/<pkg>/package.jsonsource.version#theme:syncsrc/themes/registry.tsallFlavorspackages/theme-selector/src/types.tsThemeFamilypackages/theme-selector/src/constants.tsTHEME_FAMILIESpackages/theme-selector/src/theme-mapper.tsVENDOR_FAMILY_MAPVENDOR_ICON_MAP{light, dark}FLAVOR_DESCRIPTIONSapps/site/src/data/theme-meta.tsthemeGroupsthemeNamesthemeIconsvalidThemeIdsBaseLayout.astroThemeDropdown.astroapps/site/src/pages/themes.astrothemeNamesapps/site/src/pages/index.astroscripts/prepare-style-dictionary.mjsvendorMetatest/integration/bundle-size.test.tspackage.jsontheme:sync# Web examples with hardcoded theme arrays / dropdowns
rg -l 'VALID_THEMES|LIGHT_THEMES|lightThemes' examples/
rg -l 'THEMES' examples/stackblitz/react examples/stackblitz/vue
# Swift example touchpoints
rg -l 'ThemeId|ThemeDefinition' examples/swift-swiftui/<select>VALID_THEMESLIGHT_THEMESTHEMESThemeId.swiftThemeRegistry.swiftThemeDefinitionThemeRegistryTests.swift@lgtm-hq/turbo-themes-core/tokensrose-pine-moonlabel.tokens.jsonthemeNamesrose-pineuv run lintro chk # Lint
bun run build # Core build
bun run examples:build # Example projects
bun run test # Unit tests
bun run examples:test # Example E2E tests
cd apps/site && bun run build # Site build
cd apps/site && bun run dev # Visual checkturbo-testthemeGroupsthemeNamesthemeIconsapps/site/src/data/theme-meta.tsVENDOR_FAMILY_MAPdata-theme-idCannot find module './packs/<theme>.synced.js'theme:syncvendorMetabun run buildsrc/themes/types.tspackages/core/src/themes/types.tsmaintenance-generate-snapshots.yml