GenuiConfigProvider Component
GenuiConfigProvider provides theme capabilities for the renderer and scopes theme styles within a specific container.
When using only ConfigProvider, you can import it on demand from @opentiny/genui-sdk-vue/config-provider. See Quick Start - Subpath Imports.
Props
theme
- Type:
'dark' | 'lite' | 'light' | 'auto' - Required: No
- Default:
'light' - Description: Theme mode.
'dark': Dark theme'lite': Lite theme'light': Light theme'auto': Follow the browser preference automatically
<template>
<GenuiConfigProvider theme="dark">
<GenuiChat :url="url" />
</GenuiConfigProvider>
</template>
See GenuiConfigProvider - Theme Switching for detailed usage.
id
- Type:
string - Required: No
- Default:
'tiny-genui-config-provider' - Description: The container element id used for style scoping. When multiple
GenuiConfigProviderinstances exist on the page, set a different id for each.
<template>
<GenuiConfigProvider theme="dark" id="my-chat">
<GenuiChat :url="url" />
</GenuiConfigProvider>
</template>
See GenuiConfigProvider - Custom Theme for detailed usage.
locale
- Type:
string - Required: No
- Default:
'zh_CN' - Description: Sets the component locale. Supported language codes include
'zh_CN'(Simplified Chinese) and'en_US'(English).
<template>
<GenuiConfigProvider locale="en_US">
<GenuiChat :url="url" />
</GenuiConfigProvider>
</template>
i18n
- Type:
I18nMessages - Required: No
- Default:
undefined - Description: Custom internationalization message object. Used to override or extend default i18n text. Format:
{ [lang: string]: { [key: string]: string | I18nMessageObject } }.
<template>
<GenuiConfigProvider :locale="locale" :i18n="customI18n">
<GenuiChat :url="url" />
</GenuiConfigProvider>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { GenuiConfigProvider, GenuiChat } from '@opentiny/genui-sdk-vue';
import type { I18nMessages } from '@opentiny/genui-sdk-vue';
const locale = ref('en_US');
const customI18n: I18nMessages = {
zh_CN: {
placeholder: {
input: '请输入您的问题(自定义)',
},
},
en_US: {
placeholder: {
input: 'Please enter your question (custom)',
},
},
};
</script>
See GenuiConfigProvider - i18n Configuration for detailed usage.
Slots
GenuiConfigProvider uses the default slot to wrap child components.
Customizing theme for GenuiChat
<template>
<GenuiConfigProvider :theme="theme" id="my-chat">
<GenuiChat :url="url" />
</GenuiConfigProvider>
<button @click="toggleTheme">Toggle theme</button>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { GenuiConfigProvider, GenuiChat } from '@opentiny/genui-sdk-vue';
const theme = ref<'dark' | 'lite' | 'light' | 'auto'>('dark');
function toggleTheme() {
theme.value = theme.value === 'dark' ? 'lite' : 'dark';
}
</script>
Customizing theme for GenuiRenderer
<template>
<GenuiConfigProvider :theme="theme" id="my-schema-renderer">
<GenuiRenderer :content="content" :generating="generating" />
</GenuiConfigProvider>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { GenuiConfigProvider, GenuiRenderer } from '@opentiny/genui-sdk-vue';
const theme = ref<'dark' | 'lite' | 'light' | 'auto'>('dark');
const content = ref({});
const generating = ref(false);
</script>
Types
I18nMessages
type I18nMessages = {
[lang: string]: I18nMessageObject;
};
Internationalization message object. Keys are language codes (e.g. 'zh_CN', 'en_US'), and values are message objects for that language.
I18nMessageObject
type I18nMessageObject = {
[key: string]: string | I18nMessageObject;
};
Internationalization message object structure supporting nested objects. Keys are message keys; values are strings or nested message objects.