用法
在ChatNot组件中使用ChatNotSubmit组件来提交提示。它自动处理不同的status值以控制聊天。
它扩展了Button组件,因此您可以传递任何属性,如color,variant,size等。
<template>
<UChatPrompt>
<UChatPromptSubmit />
</UChatPrompt>
</template>
ChatPrompt组件的footer插槽中使用。Ready
当其状态为ready时,使用color、variant和icon道具来自定义Button。
color="primary"variant="solid"icon="i-lucide-arrow-up"
<template>
<UChatPromptSubmit color="primary" variant="solid" icon="i-lucide-arrow-up" />
</template>已提交
当其状态为submitted时,使用submitted-color、submitted-variant和submitted-icon道具来自定义Button。
submittedColor="neutral"submittedVariant="subtle"submittedIcon="i-lucide-square"
stop事件在用户单击Button时发出。<template>
<UChatPromptSubmit
submitted-color="neutral"
submitted-variant="subtle"
submitted-icon="i-lucide-square"
status="submitted"
/>
</template>流媒体
当其状态为streaming时,使用streaming-color、streaming-variant和streaming-icon道具自定义Button. Button为:
streamingColor="neutral"streamingVariant="subtle"streamingIcon="i-lucide-square"
stop事件在用户单击Button时发出。<template>
<UChatPromptSubmit
streaming-color="neutral"
streaming-variant="subtle"
streaming-icon="i-lucide-square"
status="streaming"
/>
</template>Error
当其状态为error时,使用error-color、error-variant和error-icon道具来自定义Button。
errorColor="error"errorVariant="soft"errorIcon="i-lucide-rotate-ccw"
reload事件。<template>
<UChatPromptSubmit
error-color="error"
error-variant="soft"
error-icon="i-lucide-rotate-ccw"
status="error"
/>
</template>示例
API
Props
| Prop | Default | Type |
|---|---|---|
as | 'button' | anyThe element or component this component should render as when not a link. |
status | 'ready' | "error" | "ready" | "submitted" | "streaming" |
icon | appConfig.ui.icons.arrowUp | anyThe icon displayed in the button when the status is |
color | 'primary' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral"The color of the button when the status is |
variant | 'solid' | "link" | "outline" | "soft" | "subtle" | "ghost" | "solid"The variant of the button when the status is |
streamingIcon | appConfig.ui.icons.stop | anyThe icon displayed in the button when the status is |
streamingColor | 'neutral' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral"The color of the button when the status is |
streamingVariant | 'subtle' | "link" | "outline" | "soft" | "subtle" | "ghost" | "solid"The variant of the button when the status is |
submittedIcon | appConfig.ui.icons.stop | anyThe icon displayed in the button when the status is |
submittedColor | 'neutral' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral"The color of the button when the status is |
submittedVariant | 'subtle' | "link" | "outline" | "soft" | "subtle" | "ghost" | "solid"The variant of the button when the status is |
errorIcon | appConfig.ui.icons.reload | anyThe icon displayed in the button when the status is |
errorColor | 'error' | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral"The color of the button when the status is |
errorVariant | 'soft' | "link" | "outline" | "soft" | "subtle" | "ghost" | "solid"The variant of the button when the status is |
autofocus | false | true | "true" | "false" | |
avatar | AvatarPropsDisplay an avatar on the left side. | |
loading | boolean When | |
loadingIcon | appConfig.ui.icons.loading | anyThe icon when the |
disabled | boolean | |
name | string | |
label | string | |
size | 'md' | "xs" | "sm" | "md" | "lg" | "xl" |
leading | boolean When | |
leadingIcon | anyDisplay an icon on the left side. | |
trailing | boolean When | |
trailingIcon | anyDisplay an icon on the right side. | |
type | 'button' | "reset" | "submit" | "button"The type of the button when not a link. |
activeColor | "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral" | |
activeVariant | "link" | "outline" | "soft" | "subtle" | "ghost" | "solid" | |
square | boolean Render the button with equal padding on all sides. | |
block | boolean Render the button full width. | |
loadingAuto | boolean Set loading state automatically based on the | |
ui | { base?: SlotClass; } & { base?: SlotClass; label?: SlotClass; leadingIcon?: SlotClass; leadingAvatar?: SlotClass; leadingAvatarSize?: SlotClass; trailingIcon?: SlotClass; } |
Slots
| Slot | Type |
|---|---|
leading | { ui: object; } |
default | { ui: object; } |
trailing | { ui: object; } |
Emits
| Event | Type |
|---|---|
stop | [event: MouseEvent] |
reload | [event: MouseEvent] |
Theme
export default defineAppConfig({
ui: {
chatPromptSubmit: {
slots: {
base: ''
}
}
}
})import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'
export default defineConfig({
plugins: [
vue(),
ui({
ui: {
chatPromptSubmit: {
slots: {
base: ''
}
}
}
})
]
})