@meistrari/chat-nuxt 3.17.0-rc.7 → 3.17.0-rc.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -66,6 +66,7 @@ Declared in `src/runtime/embed/types.ts`; prop, feature-flag, and event payload
66
66
  | `features` | `Partial<ChatFeatureConfig>` | `{}` | Toggle `showUsageTab`, `showDebugOption`, `showCancelButton`, `showTtft`, and `chatOutboundQueue`; all released features default to `true` |
67
67
  | `loadingMessages` | `readonly string[] \| null` | Default chat messages | Override pending-response messages |
68
68
  | `loadingMessagesMode` | `'ordered' \| 'random' \| null` | `'ordered'` | Rotate custom messages in order or at random; only applies when `loadingMessages` has a non-empty message |
69
+ | `labels` | `Partial<ChatLabels>` | Portuguese defaults | Override conversation-search text; see [UI labels](docs/guides/embedding.md#ui-labels) for supported keys and surfaces |
69
70
  | `customComponents` | `Record<string, Component>` | `undefined` | Custom markdown renderers keyed by markdown node or tag name. Components receive `node` plus the parser lifecycle props `loading` and `autoClosed` |
70
71
  | `customHtmlTags` | `readonly string[]` | `undefined` | Extra HTML tags allowed by the markdown renderer |
71
72
  | `citations` | `ChatCitationsConfig \| null` | `undefined` | Enables `cite://` citations in assistant messages (see [Citations](docs/guides/citations.md)) |
@@ -107,7 +108,7 @@ Installing `@meistrari/chat-nuxt` installs the runtime packages used by the laye
107
108
  |---------|---------|---------|
108
109
  | `@meistrari/auth-nuxt` | `3.31.0` | Authentication (required) |
109
110
  | `@meistrari/logger` | `^2.1.3` | Structured logging for the server proxy routes |
110
- | `@meistrari/tela-build` | `^1.30.0` | UI component library (Nuxt layer) |
111
+ | `@meistrari/tela-build` | `^1.70.2` | UI component library (Nuxt layer), with no global i18n requirement |
111
112
  | `@sentry/nuxt` | `^10.0.0` | Client-side error capture used by chat composables |
112
113
  | `@iconify/vue` + `@iconify-json/ph` | `^5.0.0` / `^1.2.2` | Icon rendering support (Phosphor set) |
113
114
  | `@vueuse/core` | `^12.8.0` | Runtime composables used by chat UI |
@@ -121,10 +122,11 @@ Installing `@meistrari/chat-nuxt` installs the runtime packages used by the laye
121
122
  | `posthog-js` | `^1.364.2` | Optional PostHog feature-flag helper |
122
123
  | `stream-diffs` | `0.0.2` | Native markstream rich code and diff rendering |
123
124
  | `virtua` | `^0.42.0` | Virtualized list runtime expected by shared UI |
124
- | `vue-i18n` | `^11.0.0` | Internationalization runtime expected by shared UI |
125
125
  | `xlsx` | `^0.18.5` | Spreadsheet file previews |
126
126
  | `zod` | `^4.1.13` | Schema validation for API payloads |
127
127
 
128
+ The chat package does not declare or expect the host application to configure an i18n plugin. Hosts can override the supported conversation-search text through `labels`, using plain strings or their own translator. This is not a full-chat localization API; other UI text retains its existing defaults.
129
+
128
130
  Peer dependencies:
129
131
 
130
132
  | Package | Version | Purpose |
package/dist/module.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { ChatMessageStatus } from '../dist/runtime/messages/composables/chat-message-terminal.js';
2
- export { AvailableChatModels, ChatActionPayload, ChatActor, ChatEmbedSharedProps, ChatEmbedVariant, ChatEmbedVariantProps, ChatFeatureConfig, ChatMessageTerminalPayload, ChatSidebarConfig, ChatSuggestion, DefaultChatEmbedProps, MeistrariChatEmbedProps, MessageFeedbackConfig, MessageFeedbackPayload, MessageFeedbackRating, MessageFeedbackSubmitHandler, MessageFeedbackSubmitResult, MessageOverviewResponse, TelaAgentChatEmbedProps, TelaAgentExecutionInput } from '../dist/runtime/types/embed.js';
2
+ export { AvailableChatModels, ChatActionPayload, ChatActor, ChatEmbedSharedProps, ChatEmbedVariant, ChatEmbedVariantProps, ChatFeatureConfig, ChatLabels, ChatMessageTerminalPayload, ChatSidebarConfig, ChatSuggestion, DefaultChatEmbedProps, MeistrariChatEmbedProps, MessageFeedbackConfig, MessageFeedbackPayload, MessageFeedbackRating, MessageFeedbackSubmitHandler, MessageFeedbackSubmitResult, MessageOverviewResponse, TelaAgentChatEmbedProps, TelaAgentExecutionInput } from '../dist/runtime/types/embed.js';
3
3
 
4
4
  type ChatNuxtConfigValidationMode = false | 'warn' | 'error';
5
5
 
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meistrari/chat-nuxt",
3
3
  "configKey": "chatNuxt",
4
- "version": "3.17.0-rc.7",
4
+ "version": "3.17.0-rc.9",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "unknown"
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  placeholder?: string;
3
+ clearLabel?: string;
3
4
  };
4
5
  type __VLS_ModelProps = {
5
6
  modelValue: string;
@@ -9,8 +10,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
9
10
  "update:modelValue": (value: string) => any;
10
11
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
11
12
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
12
- }>, {
13
- placeholder: string;
14
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
14
  declare const _default: typeof __VLS_export;
16
15
  export default _default;
@@ -1,7 +1,12 @@
1
1
  <script setup>
2
- defineProps({
3
- placeholder: { type: String, required: false, default: "Buscar conversas" }
2
+ import { useEmbedConfig } from "../../embed/composables/embed-config";
3
+ const props = defineProps({
4
+ placeholder: { type: String, required: false },
5
+ clearLabel: { type: String, required: false }
4
6
  });
7
+ const embedConfig = useEmbedConfig();
8
+ const placeholder = computed(() => props.placeholder ?? embedConfig?.labels.value?.conversationSearchPlaceholder ?? "Buscar conversas");
9
+ const clearLabel = computed(() => props.clearLabel ?? embedConfig?.labels.value?.conversationSearchClear ?? "Limpar");
5
10
  const searchQuery = defineModel({ type: String, ...{ required: true } });
6
11
  </script>
7
12
 
@@ -11,5 +16,7 @@ const searchQuery = defineModel({ type: String, ...{ required: true } });
11
16
  icon="i-ph-magnifying-glass-bold"
12
17
  :placeholder="placeholder"
13
18
  autocomplete="off"
19
+ show-clear-button
20
+ :clear-label="clearLabel"
14
21
  />
15
22
  </template>
@@ -1,5 +1,6 @@
1
1
  type __VLS_Props = {
2
2
  placeholder?: string;
3
+ clearLabel?: string;
3
4
  };
4
5
  type __VLS_ModelProps = {
5
6
  modelValue: string;
@@ -9,8 +10,6 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
9
10
  "update:modelValue": (value: string) => any;
10
11
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
11
12
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
12
- }>, {
13
- placeholder: string;
14
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
14
  declare const _default: typeof __VLS_export;
16
15
  export default _default;
@@ -26,6 +26,7 @@ const props = defineProps({
26
26
  suggestions: { type: [Array, null], required: false },
27
27
  loadingMessages: { type: [Array, null], required: false },
28
28
  loadingMessagesMode: { type: [String, null], required: false },
29
+ labels: { type: Object, required: false },
29
30
  customComponents: { type: Object, required: false },
30
31
  customHtmlTags: { type: Array, required: false },
31
32
  citations: { type: [Object, null], required: false },
@@ -67,6 +68,7 @@ provideEmbedConfig({
67
68
  hideSettings,
68
69
  loadingMessages: computed(() => props.loadingMessages),
69
70
  loadingMessagesMode: computed(() => props.loadingMessagesMode),
71
+ labels: computed(() => props.labels),
70
72
  customComponents: computed(() => props.customComponents),
71
73
  customHtmlTags: computed(() => props.customHtmlTags),
72
74
  citations: computed(() => props.citations),
@@ -19,6 +19,7 @@ const { hideSidebar = void 0, ...props } = defineProps({
19
19
  suggestions: { type: [Array, null], required: false },
20
20
  loadingMessages: { type: [Array, null], required: false },
21
21
  loadingMessagesMode: { type: [String, null], required: false },
22
+ labels: { type: Object, required: false },
22
23
  customComponents: { type: Object, required: false },
23
24
  customHtmlTags: { type: Array, required: false },
24
25
  citations: { type: [Object, null], required: false },
@@ -77,6 +78,7 @@ const sharedEmbedProps = computed(() => ({
77
78
  features: props.features,
78
79
  loadingMessages: props.loadingMessages,
79
80
  loadingMessagesMode: props.loadingMessagesMode,
81
+ labels: props.labels,
80
82
  customComponents: props.customComponents,
81
83
  customHtmlTags: props.customHtmlTags,
82
84
  citations: props.citations,
@@ -128,7 +130,7 @@ const widgetEmbedProps = computed(() => ({
128
130
  @close="setOpen(false)"
129
131
  >
130
132
  <template #history>
131
- <ChatWidgetHistoryList />
133
+ <ChatWidgetHistoryList :search-placeholder="props.labels?.conversationSearchPlaceholder" />
132
134
  </template>
133
135
  </TelaChatWidgetHeader>
134
136
  <div flex-1 min-h-0>
@@ -157,7 +159,7 @@ const widgetEmbedProps = computed(() => ({
157
159
  @select-conversation="handleWidgetConversationIdChange"
158
160
  >
159
161
  <template #history>
160
- <ChatWidgetHistoryList />
162
+ <ChatWidgetHistoryList :search-placeholder="props.labels?.conversationSearchPlaceholder" />
161
163
  </template>
162
164
  </TelaChatWidgetHeader>
163
165
  <div flex-1 min-h-0>
@@ -3,6 +3,7 @@ import type { ConversationCreatorFilter } from '../../types/schemas/chat/primiti
3
3
  import type { WorkspaceSettingsResponse as WorkspaceSettings } from '../../types/schemas/chat/workspace-settings.js';
4
4
  import type { TelaAgentExecutionInput } from '../../types/schemas/integrations/tela-agent-api.js';
5
5
  import type { ChatLoadingMessageMode } from '../loading-messages.js';
6
+ import type { ChatLabels } from '../types.js';
6
7
  import type { ChatCitationsConfig } from '../../citations/types.js';
7
8
  import type { MessageFeedbackConfig, MessageFeedbackRating } from '../../messages/composables/chat-feedback.js';
8
9
  import type { AvailableChatModels } from '../../messages/model-availability.js';
@@ -22,6 +23,7 @@ export type EmbedConfig = {
22
23
  hideSettings: Ref<boolean>;
23
24
  loadingMessages: Ref<readonly string[] | null | undefined>;
24
25
  loadingMessagesMode: Ref<ChatLoadingMessageMode | null | undefined>;
26
+ labels: Ref<Partial<ChatLabels> | undefined>;
25
27
  customComponents: Ref<Record<string, Component> | undefined>;
26
28
  customHtmlTags: Ref<readonly string[] | undefined>;
27
29
  citations: Ref<ChatCitationsConfig | null | undefined>;
@@ -42,6 +44,7 @@ type EmbedConfigInput = {
42
44
  hideSettings?: MaybeRefOrGetter<boolean | undefined>;
43
45
  loadingMessages?: MaybeRefOrGetter<readonly string[] | null | undefined>;
44
46
  loadingMessagesMode?: MaybeRefOrGetter<ChatLoadingMessageMode | null | undefined>;
47
+ labels?: MaybeRefOrGetter<Partial<ChatLabels> | undefined>;
45
48
  customComponents?: MaybeRefOrGetter<Record<string, Component> | undefined>;
46
49
  customHtmlTags?: MaybeRefOrGetter<readonly string[] | undefined>;
47
50
  citations?: MaybeRefOrGetter<ChatCitationsConfig | null | undefined>;
@@ -31,6 +31,7 @@ function useGlobalEmbedConfigState() {
31
31
  hideSettings: useState("chat-embed-config-hide-settings", () => void 0),
32
32
  loadingMessages: useState("chat-embed-config-loading-messages", () => void 0),
33
33
  loadingMessagesMode: useState("chat-embed-config-loading-messages-mode", () => void 0),
34
+ labels: useState("chat-embed-config-labels", () => void 0),
34
35
  customComponents: useGlobalCustomComponentsState(),
35
36
  customHtmlTags: useState("chat-embed-config-custom-html-tags", () => void 0),
36
37
  citations: useGlobalCitationsState(),
@@ -53,6 +54,7 @@ export function provideEmbedConfig(input, options = {}) {
53
54
  hideSettings: computed(() => toValue(input.hideSettings) ?? false),
54
55
  loadingMessages: computed(() => toValue(input.loadingMessages)),
55
56
  loadingMessagesMode: computed(() => toValue(input.loadingMessagesMode)),
57
+ labels: computed(() => toValue(input.labels)),
56
58
  customComponents: computed(() => toValue(input.customComponents)),
57
59
  customHtmlTags: computed(() => toValue(input.customHtmlTags)),
58
60
  citations: computed(() => toValue(input.citations)),
@@ -76,6 +78,7 @@ export function provideEmbedConfig(input, options = {}) {
76
78
  globalConfig.hideSettings.value = config.hideSettings.value;
77
79
  globalConfig.loadingMessages.value = config.loadingMessages.value;
78
80
  globalConfig.loadingMessagesMode.value = config.loadingMessagesMode.value;
81
+ globalConfig.labels.value = config.labels.value;
79
82
  globalConfig.customComponents.value = config.customComponents.value;
80
83
  globalConfig.customHtmlTags.value = config.customHtmlTags.value;
81
84
  globalConfig.citations.value = config.citations.value;
@@ -106,6 +109,7 @@ export function useEmbedConfig() {
106
109
  hideSettings: computed(() => globalConfig.hideSettings.value ?? false),
107
110
  loadingMessages: computed(() => globalConfig.loadingMessages.value),
108
111
  loadingMessagesMode: computed(() => globalConfig.loadingMessagesMode.value),
112
+ labels: computed(() => globalConfig.labels.value),
109
113
  customComponents: computed(() => globalConfig.customComponents.value),
110
114
  customHtmlTags: computed(() => globalConfig.customHtmlTags.value),
111
115
  citations: computed(() => globalConfig.citations.value),
@@ -10,6 +10,12 @@ import type { MessageFeedbackConfig, MessageFeedbackRating } from '../messages/c
10
10
  import type { AvailableChatModels } from '../messages/model-availability.js';
11
11
  export type { AvailableChatModels } from '../messages/model-availability.js';
12
12
  export type ChatEmbedVariant = 'page' | 'floating' | 'sidepanel';
13
+ export type ChatLabels = {
14
+ /** Search placeholder in the sidebar, mobile drawer and widget history. Defaults to `Buscar conversas`. */
15
+ conversationSearchPlaceholder: string;
16
+ /** Clear-button tooltip in the sidebar and mobile drawer search. Defaults to `Limpar`. */
17
+ conversationSearchClear: string;
18
+ };
13
19
  export type ChatSuggestion = {
14
20
  /** Short label rendered on the suggestion pill. */
15
21
  title: string;
@@ -100,6 +106,8 @@ export type ChatEmbedSharedProps = {
100
106
  * non-empty message.
101
107
  */
102
108
  loadingMessagesMode?: ChatLoadingMessageMode | null;
109
+ /** Override supported UI text. Omitted labels keep their Portuguese defaults; no i18n plugin is required. */
110
+ labels?: Partial<ChatLabels>;
103
111
  /** Custom markdown component renderers keyed by markdown node or tag name. */
104
112
  customComponents?: Record<string, Component>;
105
113
  /** Extra HTML tags allowed by the markdown renderer. */
@@ -194,7 +194,7 @@ const hasDetectedFiles = computed(() => contentSegments.value.some((s) => s.type
194
194
  v-if="message.content && (!isPending || streamActive)"
195
195
  max-w-prose
196
196
  :class="[
197
- isFailed ? 'flex gap-12px items-start bg-subtle border border-solid rounded-12px w-full' : 'rounded-12px'
197
+ isFailed ? 'flex gap-12px items-start px-12px py-10px bg-subtle border border-solid rounded-12px w-full' : 'rounded-12px'
198
198
  ]"
199
199
  >
200
200
  <template v-if="isFailed">
@@ -1,6 +1,6 @@
1
1
  export type { ChatCitationsConfig, CitationMeta, CitationRef, } from '../citations/types.js';
2
2
  export type { ChatFeatureConfig } from '../embed/feature-config.js';
3
- export type { AvailableChatModels, ChatActor, ChatEmbedSharedProps, ChatEmbedVariant, ChatEmbedVariantProps, ChatSidebarConfig, ChatSuggestion, DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps, } from '../embed/types.js';
3
+ export type { AvailableChatModels, ChatActor, ChatEmbedSharedProps, ChatEmbedVariant, ChatEmbedVariantProps, ChatLabels, ChatSidebarConfig, ChatSuggestion, DefaultChatEmbedProps, MeistrariChatEmbedProps, TelaAgentChatEmbedProps, } from '../embed/types.js';
4
4
  export type { ChatActionPayload } from '../messages/composables/chat-action.js';
5
5
  export type { MessageFeedbackConfig, MessageFeedbackPayload, MessageFeedbackRating, MessageFeedbackSubmitHandler, MessageFeedbackSubmitResult, } from '../messages/composables/chat-feedback.js';
6
6
  export { ChatMessageStatus } from '../messages/composables/chat-message-terminal.js';
package/dist/types.d.mts CHANGED
@@ -6,7 +6,7 @@ export type ModuleOptions = typeof Module extends NuxtModule<infer O> ? Partial<
6
6
 
7
7
  export { ChatMessageStatus } from '../dist/runtime/messages/composables/chat-message-terminal.js'
8
8
 
9
- export { type AvailableChatModels, type ChatActionPayload, type ChatActor, type ChatEmbedSharedProps, type ChatEmbedVariant, type ChatEmbedVariantProps, type ChatFeatureConfig, type ChatMessageTerminalPayload, type ChatSidebarConfig, type ChatSuggestion, type DefaultChatEmbedProps, type MeistrariChatEmbedProps, type MessageFeedbackConfig, type MessageFeedbackPayload, type MessageFeedbackRating, type MessageFeedbackSubmitHandler, type MessageFeedbackSubmitResult, type MessageOverviewResponse, type TelaAgentChatEmbedProps, type TelaAgentExecutionInput } from '../dist/runtime/types/embed.js'
9
+ export { type AvailableChatModels, type ChatActionPayload, type ChatActor, type ChatEmbedSharedProps, type ChatEmbedVariant, type ChatEmbedVariantProps, type ChatFeatureConfig, type ChatLabels, type ChatMessageTerminalPayload, type ChatSidebarConfig, type ChatSuggestion, type DefaultChatEmbedProps, type MeistrariChatEmbedProps, type MessageFeedbackConfig, type MessageFeedbackPayload, type MessageFeedbackRating, type MessageFeedbackSubmitHandler, type MessageFeedbackSubmitResult, type MessageOverviewResponse, type TelaAgentChatEmbedProps, type TelaAgentExecutionInput } from '../dist/runtime/types/embed.js'
10
10
 
11
11
  export { default } from './module.mjs'
12
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meistrari/chat-nuxt",
3
- "version": "3.17.0-rc.7",
3
+ "version": "3.17.0-rc.9",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -48,7 +48,7 @@
48
48
  "@iconify/vue": "^5.0.0",
49
49
  "@meistrari/auth-nuxt": "3.31.0",
50
50
  "@meistrari/logger": "^2.1.3",
51
- "@meistrari/tela-build": "^1.66.0",
51
+ "@meistrari/tela-build": "^1.70.2",
52
52
  "@sentry/nuxt": "^10.0.0",
53
53
  "@vueuse/components": "^12.8.0",
54
54
  "@vueuse/core": "^12.8.0",
@@ -64,7 +64,6 @@
64
64
  "stream-diffs": "0.0.2",
65
65
  "tldts": "^7.4.10",
66
66
  "virtua": "^0.42.0",
67
- "vue-i18n": "^11.0.0",
68
67
  "xlsx": "^0.18.5",
69
68
  "zod": "^4.1.13"
70
69
  },