mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-11 09:51:40 +00:00
* feat: init * fix * fix * fix * feat * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: implement icons * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: update init command * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: dialog * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add registry:base item type * feat: rename frame to canva * fix * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fi * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add all colors * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add outfit font * fix * fix * fix * fix * fix * chore: changeset * fix * fix * fix * fix * fix * fix * fix * fix
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)
|
|
}
|