Skip to content

主题定制

Starry UI 使用 @starry-ui/theme 作为主题系统,支持运行时动态切换主题。

配置主题变量

使用 DesignTokenProvider 组件包裹应用根节点,通过 token 属性配置主题变量:

vue
<!-- App.vue -->
<template>
  <DesignTokenProvider :token="{ colorPrimary: 'red' }">
    <RouterView />
  </DesignTokenProvider>
</template>

<script setup>
import { DesignTokenProvider } from '@starry-ui/core'
</script>

动态切换

支持响应式的 Token 和预设算法参数,示例:

vue
<!-- App.vue -->
<template>
  <DesignTokenProvider :token="token" :algorithm="algorithm">
    <RouterView />
  </DesignTokenProvider>
</template>

<script setup>
import { Algorithm, AliasToken, DesignTokenProvider, themes } from '@starry-ui/core'

const token = ref<Partial<AliasToken>>({ colorPrimary: 'red' })

const algorithm = ref<Algorithm[]>()

function setPrimaryColor(color: string) {
  token.value = { ...token.value, colorPrimary: color }
}

// 紧凑模式
function setCompact() {
  algorithm.value = [themes.default, themes.compact]
}

// 关怀模式
function setLoose() {
  algorithm.value = [themes.default, themes.loosen]
}
</script>