@phonghq/go-chat 1.0.42 → 1.0.44

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.
Files changed (114) hide show
  1. package/dist/assets/icons/IconPlan.vue.d.ts +13 -1
  2. package/dist/assets/icons/call/IconPhoneCancel.vue.d.ts +13 -1
  3. package/dist/assets/icons/customer-detail/IconPhone.vue.d.ts +13 -1
  4. package/dist/chat/App.vue.d.ts +13 -2
  5. package/dist/chat/page/home/ChatList.vue.d.ts +10 -0
  6. package/dist/chat/page/home/ChatMessageItem.vue.d.ts +1 -0
  7. package/dist/chat/page/home/ChatMessageItem2.vue.d.ts +19 -0
  8. package/dist/chat/page/home/Home.vue.d.ts +2 -0
  9. package/dist/chat/page/home/InputChat.vue.d.ts +2 -0
  10. package/dist/components/chat/call/Calling.vue.d.ts +4 -2
  11. package/dist/components/chat/common/tabs/TabBase.vue.d.ts +18 -0
  12. package/dist/components/common/drawer/DrawerBaseCustom.vue.d.ts +1 -1
  13. package/dist/components/ui/select/Select.vue.d.ts +20 -0
  14. package/dist/components/ui/select/SelectContent.vue.d.ts +24 -0
  15. package/dist/components/ui/select/SelectGroup.vue.d.ts +10 -0
  16. package/dist/components/ui/select/SelectItem.vue.d.ts +18 -0
  17. package/dist/components/ui/select/SelectItemText.vue.d.ts +10 -0
  18. package/dist/components/ui/select/SelectLabel.vue.d.ts +14 -0
  19. package/dist/components/ui/select/SelectScrollDownButton.vue.d.ts +14 -0
  20. package/dist/components/ui/select/SelectScrollUpButton.vue.d.ts +14 -0
  21. package/dist/components/ui/select/SelectSeparator.vue.d.ts +7 -0
  22. package/dist/components/ui/select/SelectTrigger.vue.d.ts +17 -0
  23. package/dist/components/ui/select/SelectValue.vue.d.ts +10 -0
  24. package/dist/components/ui/select/index.d.ts +11 -0
  25. package/dist/components/ui/tabs/Tabs.vue.d.ts +20 -0
  26. package/dist/components/ui/tabs/TabsContent.vue.d.ts +14 -0
  27. package/dist/components/ui/tabs/TabsList.vue.d.ts +14 -0
  28. package/dist/components/ui/tabs/TabsTrigger.vue.d.ts +14 -0
  29. package/dist/components/ui/tabs/index.d.ts +4 -0
  30. package/dist/composable/useDigibot.d.ts +1 -1
  31. package/dist/composable/useInitData.d.ts +5 -2
  32. package/dist/composable/useListConversations.d.ts +4 -1
  33. package/dist/composable/useListentEvent.d.ts +5 -0
  34. package/dist/composable/usePlivo.d.ts +1 -0
  35. package/dist/constant/color.d.ts +2 -2
  36. package/dist/go-chat.es.js +14663 -14004
  37. package/dist/go-chat.umd.js +15 -15
  38. package/dist/style.css +1 -1
  39. package/dist/test/assets/icons/IconPlan.vue.js +23 -3
  40. package/dist/test/assets/icons/IconUser.vue.js +25 -0
  41. package/dist/test/assets/icons/call/IconPhone.vue.js +6 -19
  42. package/dist/test/assets/icons/call/IconPhoneCancel.vue.js +32 -21
  43. package/dist/test/assets/icons/customer-detail/IconPhone.vue.js +23 -3
  44. package/dist/test/chat/App.vue.js +303 -282
  45. package/dist/test/chat/page/customer-check-in/CustomerCheckIn.vue.js +3 -1
  46. package/dist/test/chat/page/customer-detail/CustomerDetail.vue.js +4 -4
  47. package/dist/test/chat/page/home/ChatList.vue.js +113 -43
  48. package/dist/test/chat/page/home/ChatMessage.vue.js +10 -1
  49. package/dist/test/chat/page/home/ChatMessageItem.vue.js +75 -83
  50. package/dist/test/chat/page/home/ChatMessageItem2.vue.js +351 -0
  51. package/dist/test/chat/page/home/Home.vue.js +29 -9
  52. package/dist/test/chat/page/home/HomeHeader.vue.js +8 -4
  53. package/dist/test/chat/page/home/InputChat.vue.js +58 -37
  54. package/dist/test/components/chat/call/Calling.vue.js +117 -71
  55. package/dist/test/components/chat/common/tab/TabBase.vue.js +1 -0
  56. package/dist/test/components/chat/common/tabs/TabBase.vue.js +92 -0
  57. package/dist/test/components/chat/customer/Avatar.vue.js +23 -4
  58. package/dist/test/components/chat/layout/mobile/Footer.vue.js +6 -1
  59. package/dist/test/components/common/drawer/DrawerBaseCustom.vue.js +1 -0
  60. package/dist/test/components/common/select/SelectBase.vue.js +139 -0
  61. package/dist/test/components/ui/select/Select.vue.js +49 -0
  62. package/dist/test/components/ui/select/SelectContent.vue.js +98 -0
  63. package/dist/test/components/ui/select/SelectGroup.vue.js +37 -0
  64. package/dist/test/components/ui/select/SelectItem.vue.js +86 -0
  65. package/dist/test/components/ui/select/SelectItemText.vue.js +37 -0
  66. package/dist/test/components/ui/select/SelectLabel.vue.js +40 -0
  67. package/dist/test/components/ui/select/SelectScrollDownButton.vue.js +58 -0
  68. package/dist/test/components/ui/select/SelectScrollUpButton.vue.js +58 -0
  69. package/dist/test/components/ui/select/SelectSeparator.vue.js +39 -0
  70. package/dist/test/components/ui/select/SelectTrigger.vue.js +76 -0
  71. package/dist/test/components/ui/select/SelectValue.vue.js +37 -0
  72. package/dist/test/components/ui/select/index.js +11 -0
  73. package/dist/test/components/ui/tabs/Tabs.vue.js +54 -0
  74. package/dist/test/components/ui/tabs/TabsContent.vue.js +44 -0
  75. package/dist/test/components/ui/tabs/TabsList.vue.js +44 -0
  76. package/dist/test/components/ui/tabs/TabsTrigger.vue.js +45 -0
  77. package/dist/test/components/ui/tabs/index.js +4 -0
  78. package/dist/test/composable/useDigibot.js +3 -3
  79. package/dist/test/composable/useInitData.js +23 -14
  80. package/dist/test/composable/useListConversations.js +51 -33
  81. package/dist/test/composable/useListentEvent.js +45 -0
  82. package/dist/test/composable/usePlivo.js +6 -1
  83. package/dist/test/constant/color.js +4 -2
  84. package/dist/test/plugins/axios-gci.js +1 -1
  85. package/dist/test/utils/chat/auth.js +1 -1
  86. package/dist/test/utils/chat/cache.js +63 -0
  87. package/dist/test/utils/chat/call.js +2 -3
  88. package/dist/test/utils/chat/conversation.js +9 -2
  89. package/dist/test/utils/chat/page-error.js +25 -0
  90. package/dist/test/utils/chat/user.js +7 -2
  91. package/dist/test/utils/string-helper.js +13 -0
  92. package/dist/test/views/NotTenantPhone.vue.js +99 -0
  93. package/dist/types/chat/global.d.ts +6 -5
  94. package/dist/types/conversation.d.ts +2 -0
  95. package/dist/utils/chat/auth.d.ts +1 -1
  96. package/dist/utils/chat/cache.d.ts +7 -0
  97. package/dist/utils/chat/conversation.d.ts +2 -0
  98. package/dist/utils/chat/page-error.d.ts +4 -0
  99. package/dist/utils/chat/user.d.ts +3 -0
  100. package/dist/utils/string-helper.d.ts +1 -0
  101. package/dist/views/NotTenantPhone.vue.d.ts +9 -0
  102. package/package.json +3 -2
  103. package/dist/components/layout/Blank.vue.d.ts +0 -9
  104. package/dist/components/layout/Default.vue.d.ts +0 -9
  105. package/dist/composable/useError.d.ts +0 -4
  106. package/dist/composable/useModalConfirm.d.ts +0 -5
  107. package/dist/test/components/ListenEvent.vue.js +0 -45
  108. package/dist/test/components/layout/Blank.vue.js +0 -19
  109. package/dist/test/components/layout/Default.vue.js +0 -21
  110. package/dist/test/components/modal/Confirm.vue.js +0 -164
  111. package/dist/test/composable/useError.js +0 -10
  112. package/dist/test/composable/useModalConfirm.js +0 -39
  113. /package/dist/{components/ListenEvent.vue.d.ts → assets/icons/IconUser.vue.d.ts} +0 -0
  114. /package/dist/components/{modal/Confirm.vue.d.ts → common/select/SelectBase.vue.d.ts} +0 -0
@@ -9,8 +9,10 @@ import { addHandleMqttMessage, connectMqtt, publishMessage, removeHandleMqttMess
9
9
  import { TOPIC_DETAIL_CHAT, TOPIC_PLIVO_SMS } from '../../../constant/mqtt';
10
10
  import { MessageState } from '../../../constant/message';
11
11
  import { publicTopicConversationUpdate } from '../../../utils/chat/conversation';
12
+ import { getCache, removeOldestCache, setCache } from '../../../utils/chat/cache';
12
13
  const props = withDefaults(defineProps(), {});
13
14
  const emit = defineEmits();
15
+ const MESSAGE_STORAGE_KEY = 'chat-message-';
14
16
  const reversedList = computed(() => listMessage.value.slice().reverse());
15
17
  let page = 1;
16
18
  let pageCount = 1;
@@ -46,8 +48,9 @@ const handleDisconnectMqtt = async () => {
46
48
  removeHandleMqttMessage('chat-home-1');
47
49
  };
48
50
  const mqttMessageHandler = (topic, message) => {
49
- if ((infoUser.value?.id && message?.sender_id?.toString() == infoUser.value?.id?.toString())
50
- || (infoUser.value?.id && message?.receiver_id?.toString() == infoUser.value?.id?.toString())) {
51
+ // console.log(topic, message)
52
+ if ((infoUser.value?.id && message?.sender_id?.toString() == infoUser.value?.id?.toString()) ||
53
+ (infoUser.value?.id && message?.receiver_id?.toString() == infoUser.value?.id?.toString())) {
51
54
  const index = listMessage.value.findIndex((item) => item.id === message?.id);
52
55
  if (index < 0) {
53
56
  listMessage.value.unshift(message);
@@ -63,14 +66,23 @@ const handleGetMessage = async (option) => {
63
66
  try {
64
67
  const id = props.receiverId;
65
68
  const params = { page: option?.resetList ? 1 : page, receiver_id: props.receiverId };
69
+ if (params.page <= 1) {
70
+ const cache = getCache(MESSAGE_STORAGE_KEY + id);
71
+ if (cache.data) {
72
+ listMessage.value = cache.data ?? [];
73
+ chatMessageRef.value?.scrollBottom();
74
+ }
75
+ }
66
76
  let res = await getMessage(params);
67
77
  // res.items = res.items.reverse()
68
78
  page = res._meta?.currentPage || 1;
69
79
  pageCount = res._meta?.pageCount || 1;
70
80
  if (id == props.receiverId) {
71
- if (option?.resetList) {
81
+ if (page <= 1) {
72
82
  listMessage.value = res.items;
73
83
  chatMessageRef.value?.scrollBottom();
84
+ setCache(MESSAGE_STORAGE_KEY + id, res.items);
85
+ removeOldestCache(8, MESSAGE_STORAGE_KEY);
74
86
  }
75
87
  else {
76
88
  listMessage.value.push(...res.items);
@@ -165,13 +177,18 @@ const handleSendMessage = async (data) => {
165
177
  });
166
178
  updateMessageItem(data.id, { state: MessageState.Sent });
167
179
  chatMessageRef.value?.scrollBottom();
168
- publicTopicConversationUpdate({ message: data?.message ?? '', isSendImg: !!file_upload?.length, infoUser: infoUser.value });
180
+ publicTopicConversationUpdate({
181
+ message: data?.message ?? '',
182
+ isSendImg: !!file_upload?.length,
183
+ infoUser: infoUser.value,
184
+ is_unknown: props.conversation?.is_unknown ?? 0
185
+ });
169
186
  }
170
187
  catch (error) {
171
188
  console.log(error);
172
189
  updateMessageItem(data.id, {
173
190
  state: MessageState.Failed,
174
- error: typeof error?.message == 'string' ? error.message : ''
191
+ error: typeof error?.messages == 'string' ? error.messages : ''
175
192
  });
176
193
  }
177
194
  };
@@ -299,15 +316,17 @@ const __VLS_22 = __VLS_asFunctionalComponent(InputChat, new InputChat({
299
316
  ...{ 'onSendMessage': {} },
300
317
  ...{ 'onFocus': {} },
301
318
  data: (__VLS_ctx.infoUser),
319
+ responsive: (__VLS_ctx.responsive),
302
320
  ref: "inputChatRef",
303
- ...{ class: "p-6" },
321
+ ...{ class: "p-2 sm:p-6" },
304
322
  }));
305
323
  const __VLS_23 = __VLS_22({
306
324
  ...{ 'onSendMessage': {} },
307
325
  ...{ 'onFocus': {} },
308
326
  data: (__VLS_ctx.infoUser),
327
+ responsive: (__VLS_ctx.responsive),
309
328
  ref: "inputChatRef",
310
- ...{ class: "p-6" },
329
+ ...{ class: "p-2 sm:p-6" },
311
330
  }, ...__VLS_functionalComponentArgsRest(__VLS_22));
312
331
  let __VLS_25;
313
332
  let __VLS_26;
@@ -317,7 +336,7 @@ const __VLS_28 = ({ focus: {} },
317
336
  { onFocus: (...[$event]) => {
318
337
  __VLS_ctx.emit('inputFocus');
319
338
  // @ts-ignore
320
- [infoUser, emit, handleSendMessage,];
339
+ [infoUser, responsive, emit, handleSendMessage,];
321
340
  } });
322
341
  /** @type {typeof __VLS_ctx.inputChatRef} */ ;
323
342
  var __VLS_29 = {};
@@ -332,7 +351,8 @@ var __VLS_24;
332
351
  /** @type {__VLS_StyleScopedClasses['grow']} */ ;
333
352
  /** @type {__VLS_StyleScopedClasses['grow']} */ ;
334
353
  /** @type {__VLS_StyleScopedClasses['grow']} */ ;
335
- /** @type {__VLS_StyleScopedClasses['p-6']} */ ;
354
+ /** @type {__VLS_StyleScopedClasses['p-2']} */ ;
355
+ /** @type {__VLS_StyleScopedClasses['sm:p-6']} */ ;
336
356
  // @ts-ignore
337
357
  var __VLS_16 = __VLS_15, __VLS_30 = __VLS_29;
338
358
  const __VLS_export = (await import('vue')).defineComponent({
@@ -30,7 +30,7 @@ const handleActivePlivoSmsChange = async (is_active) => {
30
30
  loading.value = true;
31
31
  await activePlivoMode({ id: dataProfile.value?.id, is_sms: is_active ? 1 : 0 });
32
32
  if (dataProfile.value != null)
33
- dataProfile.value.is_sms_active = (is_active ? 1 : 0);
33
+ dataProfile.value.is_sms_active = is_active ? 1 : 0;
34
34
  activePlivoSms.value = is_active;
35
35
  }
36
36
  catch (e) {
@@ -52,10 +52,10 @@ let __VLS_elements;
52
52
  let __VLS_components;
53
53
  let __VLS_directives;
54
54
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
55
- ...{ class: "px-8 pb-4 border-b border-chat-gray-5" },
55
+ ...{ class: "px-8 py-4 h-[96px] layout-shadow border-b border-chat-gray-5 z-10" },
56
56
  });
57
57
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
58
- ...{ class: "flex items-center gap-2" },
58
+ ...{ class: "flex items-center gap-2 h-full" },
59
59
  });
60
60
  if (__VLS_ctx.responsive == 'mobile') {
61
61
  // @ts-ignore
@@ -187,12 +187,16 @@ if (__VLS_ctx.data?.id && __VLS_ctx.data?.id != __VLS_ctx.digibotId.toString() &
187
187
  const __VLS_23 = __VLS_22({}, ...__VLS_functionalComponentArgsRest(__VLS_22));
188
188
  }
189
189
  /** @type {__VLS_StyleScopedClasses['px-8']} */ ;
190
- /** @type {__VLS_StyleScopedClasses['pb-4']} */ ;
190
+ /** @type {__VLS_StyleScopedClasses['py-4']} */ ;
191
+ /** @type {__VLS_StyleScopedClasses['h-[96px]']} */ ;
192
+ /** @type {__VLS_StyleScopedClasses['layout-shadow']} */ ;
191
193
  /** @type {__VLS_StyleScopedClasses['border-b']} */ ;
192
194
  /** @type {__VLS_StyleScopedClasses['border-chat-gray-5']} */ ;
195
+ /** @type {__VLS_StyleScopedClasses['z-10']} */ ;
193
196
  /** @type {__VLS_StyleScopedClasses['flex']} */ ;
194
197
  /** @type {__VLS_StyleScopedClasses['items-center']} */ ;
195
198
  /** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
199
+ /** @type {__VLS_StyleScopedClasses['h-full']} */ ;
196
200
  /** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
197
201
  /** @type {__VLS_StyleScopedClasses['flex']} */ ;
198
202
  /** @type {__VLS_StyleScopedClasses['items-center']} */ ;
@@ -1,4 +1,4 @@
1
- import IconPlus from '../../../assets/icons/IconPlus.vue';
1
+ /// <reference types="C:/phonghq/go-chat-v2/node_modules/.vue-global-types/vue_3.5_0.d.ts" />
2
2
  import IconPlan from '../../../assets/icons/IconPlan.vue';
3
3
  import EmojiPicker from 'vue3-emoji-picker';
4
4
  import 'vue3-emoji-picker/css';
@@ -34,6 +34,7 @@ const handleSendMessage = async (type) => {
34
34
  return;
35
35
  messageContent = keyword.value;
36
36
  keyword.value = '';
37
+ setInputHeight(chatInputRef.value);
37
38
  }
38
39
  else if (type == 'file') {
39
40
  const file = uploadImage();
@@ -55,7 +56,7 @@ const handleSendMessage = async (type) => {
55
56
  sender_id: dataProfile.value?.id,
56
57
  status: 'read',
57
58
  attachments: attachments,
58
- is_sms: dataProfile.value?.is_sms_active,
59
+ is_sms: dataProfile.value?.is_sms_active
59
60
  };
60
61
  emit('sendMessage', data);
61
62
  };
@@ -89,7 +90,7 @@ const handleActivePlivoSmsChange = async (is_active) => {
89
90
  const setInputHeight = (e) => {
90
91
  const el = chatInputRef.value;
91
92
  el.style.height = 'auto';
92
- if (keyword.value?.replace(/\s+/g, "") == '') {
93
+ if (keyword.value?.replace(/\s+/g, '') == '') {
93
94
  el.style.height = 42 + 'px';
94
95
  keyword.value = '';
95
96
  }
@@ -101,6 +102,8 @@ const handleSetInputHeight = useDebounce((e) => {
101
102
  setInputHeight(e);
102
103
  }, 200);
103
104
  const handleInput = () => {
105
+ if (props.responsive == 'mobile') {
106
+ }
104
107
  emit('focus');
105
108
  };
106
109
  const clearInput = () => {
@@ -122,8 +125,7 @@ let __VLS_elements;
122
125
  let __VLS_components;
123
126
  let __VLS_directives;
124
127
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
125
- ...{ class: "z-10" },
126
- ...{ style: {} },
128
+ ...{ class: "z-10 layout-shadow border-t border-chat-gray-5" },
127
129
  });
128
130
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
129
131
  ...{ class: "flex gap-2 items-end h-max" },
@@ -147,7 +149,7 @@ __VLS_asFunctionalElement(__VLS_elements.textarea)({
147
149
  // @ts-ignore
148
150
  [setInputHeight,];
149
151
  } },
150
- ...{ class: "w-full min-h-11 overflow-hidden chat-input !rounded-xl pl-4 py-2 pr-[96px] border border-chat-haze-200" },
152
+ ...{ class: "text-[14px] sm:text-base w-full min-h-11 overflow-hidden chat-input !rounded-xl pl-4 py-2 pr-[96px] border border-chat-haze-200" },
151
153
  ref: "chatInputRef",
152
154
  rows: "1",
153
155
  placeholder: "Send Message",
@@ -157,7 +159,7 @@ __VLS_asFunctionalElement(__VLS_elements.textarea)({
157
159
  // @ts-ignore
158
160
  [keyword, chatInputRef,];
159
161
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
160
- ...{ class: "flex gap-2 absolute right-0 bottom-2" },
162
+ ...{ class: "flex gap-2 -translate-y-2" },
161
163
  });
162
164
  /** @type {[typeof PopoverBase, typeof PopoverBase, ]} */ ;
163
165
  // @ts-ignore
@@ -180,8 +182,11 @@ __VLS_asFunctionalElement(__VLS_elements.button, __VLS_elements.button)({
180
182
  // @ts-ignore
181
183
  [emojiOpen, emojiOpen,];
182
184
  } },
183
- ...{ class: "h-11 w-10" },
185
+ ...{ class: "h-11 w-8" },
184
186
  });
187
+ __VLS_asFunctionalDirective(__VLS_directives.vShow)(null, { ...__VLS_directiveBindingRestFields, value: (!(__VLS_ctx.keyword != '' && __VLS_ctx.responsive == 'mobile')) }, null, null);
188
+ // @ts-ignore
189
+ [keyword, responsive,];
185
190
  {
186
191
  const { content: __VLS_4 } = __VLS_2.slots;
187
192
  const __VLS_5 = {}.EmojiPicker;
@@ -229,21 +234,12 @@ const __VLS_15 = __VLS_14({
229
234
  offset: (2),
230
235
  hideSearch: true,
231
236
  }, ...__VLS_functionalComponentArgsRest(__VLS_14));
232
- __VLS_asFunctionalElement(__VLS_elements.button, __VLS_elements.button)({
233
- ...{ onClick: (...[$event]) => {
234
- __VLS_ctx.handleSendMessage('message');
235
- // @ts-ignore
236
- [handleSendMessage,];
237
- } },
238
- ...{ class: "h-11 w-10" },
239
- });
240
- /** @type {[typeof IconPlan, ]} */ ;
241
- // @ts-ignore
242
- const __VLS_18 = __VLS_asFunctionalComponent(IconPlan, new IconPlan({}));
243
- const __VLS_19 = __VLS_18({}, ...__VLS_functionalComponentArgsRest(__VLS_18));
244
237
  __VLS_asFunctionalElement(__VLS_elements.label, __VLS_elements.label)({
245
- ...{ class: "shrink-0 cursor-pointer relative -translate-y-1" },
238
+ ...{ class: "cursor-pointer relative" },
246
239
  });
240
+ __VLS_asFunctionalDirective(__VLS_directives.vShow)(null, { ...__VLS_directiveBindingRestFields, value: (!(__VLS_ctx.keyword != '' && __VLS_ctx.responsive == 'mobile')) }, null, null);
241
+ // @ts-ignore
242
+ [keyword, responsive,];
247
243
  __VLS_asFunctionalElement(__VLS_elements.input)({
248
244
  ...{ onChange: (__VLS_ctx.handleFileUpload) },
249
245
  type: "file",
@@ -255,23 +251,49 @@ __VLS_asFunctionalElement(__VLS_elements.input)({
255
251
  // @ts-ignore
256
252
  [handleFileUpload, refInputImage,];
257
253
  __VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
258
- ...{ class: "h-11 w-11 rounded-full flex-center bg-[#002E6B]" },
254
+ ...{ class: "h-11 w-8 flex-center" },
255
+ });
256
+ __VLS_asFunctionalElement(__VLS_elements.svg, __VLS_elements.svg)({
257
+ xmlns: "http://www.w3.org/2000/svg",
258
+ viewBox: "0 0 24 24",
259
+ fill: "none",
260
+ stroke: "currentColor",
261
+ 'stroke-width': "1.5",
262
+ 'stroke-linecap': "round",
263
+ 'stroke-linejoin': "round",
264
+ ...{ class: "w-5 h-5" },
259
265
  });
260
- /** @type {[typeof IconPlus, ]} */ ;
266
+ __VLS_asFunctionalElement(__VLS_elements.path)({
267
+ d: "M21.44 11.05l-8.49 8.49a5 5 0 01-7.07-7.07l8.49-8.49a3.5 3.5 0 014.95 4.95l-8.5 8.49a2 2 0 11-2.83-2.83l7.78-7.78",
268
+ });
269
+ __VLS_asFunctionalElement(__VLS_elements.button, __VLS_elements.button)({
270
+ ...{ onClick: (...[$event]) => {
271
+ __VLS_ctx.handleSendMessage('message');
272
+ // @ts-ignore
273
+ [handleSendMessage,];
274
+ } },
275
+ ...{ class: "h-11 w-11 rounded-full flex-center bg-[#002E6B] ml-2" },
276
+ });
277
+ /** @type {[typeof IconPlan, ]} */ ;
261
278
  // @ts-ignore
262
- const __VLS_22 = __VLS_asFunctionalComponent(IconPlus, new IconPlus({
263
- ...{ class: "text-white" },
279
+ const __VLS_18 = __VLS_asFunctionalComponent(IconPlan, new IconPlan({
280
+ color: "#fff",
264
281
  }));
265
- const __VLS_23 = __VLS_22({
266
- ...{ class: "text-white" },
267
- }, ...__VLS_functionalComponentArgsRest(__VLS_22));
282
+ const __VLS_19 = __VLS_18({
283
+ color: "#fff",
284
+ }, ...__VLS_functionalComponentArgsRest(__VLS_18));
268
285
  /** @type {__VLS_StyleScopedClasses['z-10']} */ ;
286
+ /** @type {__VLS_StyleScopedClasses['layout-shadow']} */ ;
287
+ /** @type {__VLS_StyleScopedClasses['border-t']} */ ;
288
+ /** @type {__VLS_StyleScopedClasses['border-chat-gray-5']} */ ;
269
289
  /** @type {__VLS_StyleScopedClasses['flex']} */ ;
270
290
  /** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
271
291
  /** @type {__VLS_StyleScopedClasses['items-end']} */ ;
272
292
  /** @type {__VLS_StyleScopedClasses['h-max']} */ ;
273
293
  /** @type {__VLS_StyleScopedClasses['relative']} */ ;
274
294
  /** @type {__VLS_StyleScopedClasses['grow']} */ ;
295
+ /** @type {__VLS_StyleScopedClasses['text-[14px]']} */ ;
296
+ /** @type {__VLS_StyleScopedClasses['sm:text-base']} */ ;
275
297
  /** @type {__VLS_StyleScopedClasses['w-full']} */ ;
276
298
  /** @type {__VLS_StyleScopedClasses['min-h-11']} */ ;
277
299
  /** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
@@ -284,28 +306,27 @@ const __VLS_23 = __VLS_22({
284
306
  /** @type {__VLS_StyleScopedClasses['border-chat-haze-200']} */ ;
285
307
  /** @type {__VLS_StyleScopedClasses['flex']} */ ;
286
308
  /** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
287
- /** @type {__VLS_StyleScopedClasses['absolute']} */ ;
288
- /** @type {__VLS_StyleScopedClasses['right-0']} */ ;
289
- /** @type {__VLS_StyleScopedClasses['bottom-2']} */ ;
309
+ /** @type {__VLS_StyleScopedClasses['-translate-y-2']} */ ;
290
310
  /** @type {__VLS_StyleScopedClasses['h-11']} */ ;
291
- /** @type {__VLS_StyleScopedClasses['w-10']} */ ;
311
+ /** @type {__VLS_StyleScopedClasses['w-8']} */ ;
292
312
  /** @type {__VLS_StyleScopedClasses['!w-[300px]']} */ ;
293
313
  /** @type {__VLS_StyleScopedClasses['opacity-0']} */ ;
294
314
  /** @type {__VLS_StyleScopedClasses['pointer-events-none']} */ ;
295
315
  /** @type {__VLS_StyleScopedClasses['absolute']} */ ;
296
- /** @type {__VLS_StyleScopedClasses['h-11']} */ ;
297
- /** @type {__VLS_StyleScopedClasses['w-10']} */ ;
298
- /** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
299
316
  /** @type {__VLS_StyleScopedClasses['cursor-pointer']} */ ;
300
317
  /** @type {__VLS_StyleScopedClasses['relative']} */ ;
301
- /** @type {__VLS_StyleScopedClasses['-translate-y-1']} */ ;
302
318
  /** @type {__VLS_StyleScopedClasses['hidden']} */ ;
303
319
  /** @type {__VLS_StyleScopedClasses['h-11']} */ ;
320
+ /** @type {__VLS_StyleScopedClasses['w-8']} */ ;
321
+ /** @type {__VLS_StyleScopedClasses['flex-center']} */ ;
322
+ /** @type {__VLS_StyleScopedClasses['w-5']} */ ;
323
+ /** @type {__VLS_StyleScopedClasses['h-5']} */ ;
324
+ /** @type {__VLS_StyleScopedClasses['h-11']} */ ;
304
325
  /** @type {__VLS_StyleScopedClasses['w-11']} */ ;
305
326
  /** @type {__VLS_StyleScopedClasses['rounded-full']} */ ;
306
327
  /** @type {__VLS_StyleScopedClasses['flex-center']} */ ;
307
328
  /** @type {__VLS_StyleScopedClasses['bg-[#002E6B]']} */ ;
308
- /** @type {__VLS_StyleScopedClasses['text-white']} */ ;
329
+ /** @type {__VLS_StyleScopedClasses['ml-2']} */ ;
309
330
  const __VLS_export = (await import('vue')).defineComponent({
310
331
  setup: () => (__VLS_exposed),
311
332
  __typeEmits: {},