From 4dffa8ea61824a912421840c669a4207bd83ef6b Mon Sep 17 00:00:00 2001 From: Maxime Pauvert Date: Tue, 28 Apr 2026 14:58:36 +0200 Subject: [PATCH 1/4] feat(chatMessage): add color props and header slot --- .../nuxt/app/composables/useNavigation.ts | 1 + .../app/pages/components/chat-message.vue | 22 ++++++ src/runtime/components/ChatMessage.vue | 14 +++- src/theme/chat-message.ts | 76 +++++++++++++++---- 4 files changed, 95 insertions(+), 18 deletions(-) create mode 100644 playgrounds/nuxt/app/pages/components/chat-message.vue diff --git a/playgrounds/nuxt/app/composables/useNavigation.ts b/playgrounds/nuxt/app/composables/useNavigation.ts index e427a0ee72..295a2b51c4 100644 --- a/playgrounds/nuxt/app/composables/useNavigation.ts +++ b/playgrounds/nuxt/app/composables/useNavigation.ts @@ -13,6 +13,7 @@ const components = [ 'calendar', 'card', 'carousel', + 'chat-message', 'chat-reasoning', 'chat-shimmer', 'chat-tool', diff --git a/playgrounds/nuxt/app/pages/components/chat-message.vue b/playgrounds/nuxt/app/pages/components/chat-message.vue new file mode 100644 index 0000000000..13d225b313 --- /dev/null +++ b/playgrounds/nuxt/app/pages/components/chat-message.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/runtime/components/ChatMessage.vue b/src/runtime/components/ChatMessage.vue index 39c82519e1..44c8b4e078 100644 --- a/src/runtime/components/ChatMessage.vue +++ b/src/runtime/components/ChatMessage.vue @@ -23,6 +23,10 @@ export interface ChatMessageProps { + header?(props: UIMessage): VNode[] leading?(props: UIMessage & { avatar: ChatMessageProps['avatar'], ui: ChatMessage['ui'] }): VNode[] files?(props: Omit, 'parts'> & { parts: FileUIPart[] }): VNode[] content?(props: UIMessage & { content?: string }): VNode[] @@ -83,6 +88,7 @@ const messageProps = computed(() => omit(props, ['as', 'icon', 'avatar', 'varian const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.chatMessage || {}) })({ variant: props.variant, + color: props.color, side: props.side, leading: !!props.icon || !!props.avatar || !!slots.leading, actions: !!props.actions || !!slots.actions, @@ -92,8 +98,12 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.chatMessage