mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-10-30 18:22:59 +00:00
Squash merge of shadcn-ui/ui main branch into hanzo/ui, bringing in: - [email protected] through [email protected] releases - New apps/v4 directory structure - Registry system improvements and MCP server - Framework support (Vue, Svelte, React Native) - New templates (vite-app, monorepo-next, laravel) - Zod 4 compatibility (scoped override for zod@>4) - Test fixture corrections for alias resolution All 867 merge conflicts resolved preserving Hanzo customizations. 1020/1020 shadcn tests pass.
33 lines
881 B
TypeScript
33 lines
881 B
TypeScript
import { registryItemSchema, type RegistryItem } from "shadcn/schema"
|
|
|
|
import { BASE_COLORS, THEMES } from "@/registry/config"
|
|
|
|
export function buildTheme(baseColorName: string, themeName: string) {
|
|
const baseColor = BASE_COLORS.find((c) => c.name === baseColorName)
|
|
const theme = THEMES.find((t) => t.name === themeName)
|
|
|
|
if (!baseColor || !theme) {
|
|
throw new Error(
|
|
`Base color "${baseColorName}" or theme "${themeName}" not found`
|
|
)
|
|
}
|
|
|
|
const mergedTheme: RegistryItem = {
|
|
name: `${baseColor.name}-${theme.name}`,
|
|
title: `${baseColor.title} ${theme.title}`,
|
|
type: "registry:theme",
|
|
cssVars: {
|
|
light: {
|
|
...baseColor.cssVars?.light,
|
|
...theme.cssVars?.light,
|
|
},
|
|
dark: {
|
|
...baseColor.cssVars?.dark,
|
|
...theme.cssVars?.dark,
|
|
},
|
|
},
|
|
}
|
|
|
|
return registryItemSchema.parse(mergedTheme)
|
|
}
|