@mobilon-dev/chotto 0.3.75 → 0.3.77

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 (29) hide show
  1. package/dist/chotto.css +1 -1
  2. package/dist/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.js +344 -295
  3. package/dist/components/2_blocks/CommunicationPanel/CommunicationPanelAttributeIndicator.vue.js +88 -0
  4. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.js +65 -32
  5. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationAttributes.js +84 -28
  6. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationChannels.js +8 -7
  7. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.js +16 -21
  8. package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.js +10 -9
  9. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelCheckIcon.vue.js +1 -1
  10. package/dist/components/2_blocks/CommunicationPanel/icons/CommunicationPanelConfirmSpinner.vue2.js +15 -0
  11. package/dist/hooks/validators/chats/chatValidator.js +13 -9
  12. package/dist/themes/dark.css +1 -1
  13. package/dist/themes/default.css +1 -1
  14. package/dist/themes/glass.css +1 -1
  15. package/dist/themes/green.css +1 -1
  16. package/dist/themes/mobilon1.css +1 -1
  17. package/dist/types/apps/data/chats.d.ts +10 -0
  18. package/dist/types/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.d.ts +7 -1
  19. package/dist/types/components/2_blocks/CommunicationPanel/CommunicationPanelAttributeIndicator.vue.d.ts +15 -0
  20. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.d.ts +5 -2
  21. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationAttributes.d.ts +41 -0
  22. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.d.ts +2 -7
  23. package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.d.ts +2 -1
  24. package/dist/types/components/2_blocks/CommunicationPanel/icons/CommunicationPanelConfirmSpinner.vue.d.ts +2 -0
  25. package/dist/types/components/2_blocks/CommunicationPanel/icons/index.d.ts +1 -0
  26. package/dist/types/components/2_blocks/CommunicationPanel/stories/CommunicationPanel.stories.d.ts +7 -1
  27. package/dist/types/components/2_blocks/CommunicationPanel/styles/types.d.ts +30 -0
  28. package/dist/types/hooks/validators/chats/types.d.ts +2 -0
  29. package/package.json +1 -1
@@ -60,6 +60,7 @@ export declare const chats: ({
60
60
  type: string;
61
61
  data: string;
62
62
  value: string;
63
+ status: string;
63
64
  } | {
64
65
  id: string;
65
66
  type: string;
@@ -69,6 +70,7 @@ export declare const chats: ({
69
70
  phone: string;
70
71
  };
71
72
  value: string;
73
+ status: string;
72
74
  })[];
73
75
  tags: {
74
76
  _id: string;
@@ -98,6 +100,7 @@ export declare const chats: ({
98
100
  attributes: {
99
101
  id: string;
100
102
  value: string;
103
+ status: string;
101
104
  }[];
102
105
  tags?: undefined;
103
106
  };
@@ -211,6 +214,7 @@ export declare const chats: ({
211
214
  type: string;
212
215
  data: string;
213
216
  value: string;
217
+ status: string;
214
218
  } | {
215
219
  id: string;
216
220
  type: string;
@@ -220,6 +224,7 @@ export declare const chats: ({
220
224
  phone: string;
221
225
  };
222
226
  value: string;
227
+ status: string;
223
228
  })[];
224
229
  tags: {
225
230
  _id: string;
@@ -264,6 +269,7 @@ export declare const chats: ({
264
269
  type: string;
265
270
  data: string;
266
271
  value: string;
272
+ status: string;
267
273
  } | {
268
274
  id: string;
269
275
  type: string;
@@ -273,6 +279,7 @@ export declare const chats: ({
273
279
  phone: string;
274
280
  };
275
281
  value: string;
282
+ status: string;
276
283
  })[];
277
284
  tags: {
278
285
  _id: string;
@@ -341,6 +348,7 @@ export declare const chats: ({
341
348
  type: string;
342
349
  data: string;
343
350
  value: string;
351
+ status: string;
344
352
  } | {
345
353
  id: string;
346
354
  type: string;
@@ -350,6 +358,7 @@ export declare const chats: ({
350
358
  phone: string;
351
359
  };
352
360
  value: string;
361
+ status: string;
353
362
  } | {
354
363
  id: string;
355
364
  type: string;
@@ -359,6 +368,7 @@ export declare const chats: ({
359
368
  nickname?: undefined;
360
369
  };
361
370
  value: string;
371
+ status: string;
362
372
  })[];
363
373
  tags?: undefined;
364
374
  };
@@ -1,14 +1,17 @@
1
1
  declare const _default: import("vue").DefineComponent<{}, {
2
- $emit: (event: "select-attribute-channel" | "phone-call", ...args: any[]) => void;
2
+ $emit: (event: "select-attribute-channel" | "confirm-attribute" | "phone-call" | "reset-blocked-attributes", ...args: any[]) => void;
3
3
  channels: unknown[];
4
4
  messages: unknown[];
5
5
  selectedChat: Record<string, any>;
6
6
  channelTooltips: Record<string, any>;
7
7
  contactAttributes: unknown[];
8
+ confirmingAttributeId: string;
8
9
  isNewDialog: boolean;
9
10
  selectedDialog: Record<string, any>;
10
11
  emptyChannelsPlaceholder: Record<string, any>;
12
+ blockedAttributeIds: unknown[];
11
13
  attributeTooltips: Record<string, any>;
14
+ attributeIndicatorTooltips: Record<string, any>;
12
15
  showChannelIcons: boolean;
13
16
  $props: {
14
17
  readonly channels?: unknown[] | undefined;
@@ -16,10 +19,13 @@ declare const _default: import("vue").DefineComponent<{}, {
16
19
  readonly selectedChat?: Record<string, any> | undefined;
17
20
  readonly channelTooltips?: Record<string, any> | undefined;
18
21
  readonly contactAttributes?: unknown[] | undefined;
22
+ readonly confirmingAttributeId?: string | undefined;
19
23
  readonly isNewDialog?: boolean | undefined;
20
24
  readonly selectedDialog?: Record<string, any> | undefined;
21
25
  readonly emptyChannelsPlaceholder?: Record<string, any> | undefined;
26
+ readonly blockedAttributeIds?: unknown[] | undefined;
22
27
  readonly attributeTooltips?: Record<string, any> | undefined;
28
+ readonly attributeIndicatorTooltips?: Record<string, any> | undefined;
23
29
  readonly showChannelIcons?: boolean | undefined;
24
30
  };
25
31
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,15 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {
2
+ confirmingAttributeId: string;
3
+ attribute: Record<string, any>;
4
+ isSelected: boolean;
5
+ blockedAttributeIds: unknown[];
6
+ indicatorTooltips: Record<string, any>;
7
+ $props: {
8
+ readonly confirmingAttributeId?: string | undefined;
9
+ readonly attribute?: Record<string, any> | undefined;
10
+ readonly isSelected?: boolean | undefined;
11
+ readonly blockedAttributeIds?: unknown[] | undefined;
12
+ readonly indicatorTooltips?: Record<string, any> | undefined;
13
+ };
14
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
15
+ export default _default;
@@ -1,5 +1,5 @@
1
1
  import type { Ref, ComputedRef } from 'vue';
2
- import type { ContactAttribute } from './useCommunicationAttributes';
2
+ import type { ContactAttribute, ConfirmAttributePayload } from './useCommunicationAttributes';
3
3
  /**
4
4
  * Тип канала панели коммуникаций.
5
5
  */
@@ -16,6 +16,7 @@ interface CommunicationActionsEmit {
16
16
  attributeId: string;
17
17
  channelId: string;
18
18
  }): void;
19
+ (event: 'confirm-attribute', payload: ConfirmAttributePayload): void;
19
20
  (event: 'phone-call', payload: {
20
21
  attributeId: string;
21
22
  phoneNumber: unknown;
@@ -27,6 +28,8 @@ interface UseCommunicationActionsOptions {
27
28
  selectedChannel: Ref<Channel | Record<string, unknown>>;
28
29
  selectedChannelType: Ref<string | null>;
29
30
  hoveredAttribute: Ref<ContactAttribute | null>;
31
+ confirmingAttributeId: Ref<string | null>;
32
+ isAttributeBlocked: (attribute: ContactAttribute | null | undefined) => boolean;
30
33
  closeMenu: () => void;
31
34
  hasMultipleChannels: (channelType: string) => boolean;
32
35
  getSingleChannelForType: (channelType: string) => Channel | null;
@@ -40,7 +43,7 @@ interface UseCommunicationActionsOptions {
40
43
  /**
41
44
  * Инкапсулирует действия панели: звонок, выбор каналов, выбор атрибутов.
42
45
  */
43
- export declare function useCommunicationActions({ activeChannelType, channels, selectedChannel, selectedChannelType, hoveredAttribute, closeMenu, hasMultipleChannels, getSingleChannelForType, getAvailableChannels, isChannelEmpty, isNewDialog, showDefaultChannelTooltipWithTimer, clearDefaultChannelTooltip, emit, }: UseCommunicationActionsOptions): {
46
+ export declare function useCommunicationActions({ activeChannelType, channels, selectedChannel, selectedChannelType, hoveredAttribute, confirmingAttributeId, isAttributeBlocked, closeMenu, hasMultipleChannels, getSingleChannelForType, getAvailableChannels, isChannelEmpty, isNewDialog, showDefaultChannelTooltipWithTimer, clearDefaultChannelTooltip, emit, }: UseCommunicationActionsOptions): {
44
47
  handlePhoneCall: (attribute: ContactAttribute | null | undefined) => void;
45
48
  handleAttributeClick: (attribute: ContactAttribute) => void;
46
49
  selectSingleChannel: (attribute: ContactAttribute, channelId: string) => void;
@@ -1,4 +1,7 @@
1
1
  import { type Ref, type ComputedRef } from 'vue';
2
+ /** Допустимые статусы контактного атрибута */
3
+ export declare const CONTACT_ATTRIBUTE_STATUSES: readonly ["confirmed", "unconfirmed"];
4
+ export type ContactAttributeStatus = (typeof CONTACT_ATTRIBUTE_STATUSES)[number];
2
5
  /**
3
6
  * Тип контактного атрибута из панели коммуникаций.
4
7
  */
@@ -7,8 +10,46 @@ export type ContactAttribute = {
7
10
  type: string;
8
11
  value?: string;
9
12
  data?: unknown;
13
+ status?: ContactAttributeStatus;
10
14
  [key: string]: unknown;
11
15
  };
16
+ export declare function isContactAttributeStatus(value: unknown): value is ContactAttributeStatus;
17
+ /**
18
+ * CSS-класс для привязки UI к статусу атрибута (`status-confirmed` / `status-unconfirmed`).
19
+ */
20
+ export declare function getAttributeStatusClass(attribute: ContactAttribute | null | undefined): `status-${ContactAttributeStatus}` | null;
21
+ export declare function isAttributeConfirmed(attribute: ContactAttribute | null | undefined): boolean;
22
+ export declare function isAttributeUnconfirmed(attribute: ContactAttribute | null | undefined): boolean;
23
+ /** Нужно запросить подтверждение атрибута у родителя (запрос на сервер). */
24
+ export declare function needsAttributeConfirmation(attribute: ContactAttribute | null | undefined): boolean;
25
+ /** Payload события confirm-attribute */
26
+ export type ConfirmAttributePayload = {
27
+ attributeId: string;
28
+ channelId: string;
29
+ channelType: string;
30
+ attribute: ContactAttribute;
31
+ };
32
+ export declare function shouldShowAttributeCheckmark(attribute: ContactAttribute | null | undefined, isSelected: boolean): boolean;
33
+ export declare function getAttributeCheckIndicatorClass(attribute: ContactAttribute | null | undefined, isSelected: boolean): 'selected-indicator' | 'confirmed-indicator' | null;
34
+ export declare function isAttributeConfirming(attribute: ContactAttribute | null | undefined, confirmingAttributeId: string | null | undefined): boolean;
35
+ /** Атрибут заблокирован после неудачного подтверждения (до повторного входа в меню). */
36
+ export declare function isAttributeBlocked(attribute: ContactAttribute | null | undefined, blockedAttributeIds: readonly string[] | null | undefined): boolean;
37
+ /** Ключи подсказок для галочки / спиннера в слоте индикатора */
38
+ export type AttributeIndicatorTooltipKey = 'selected' | 'confirmed' | 'confirming' | 'blocked';
39
+ export type AttributeIndicatorTooltips = Partial<Record<AttributeIndicatorTooltipKey, string>>;
40
+ export type AttributeIndicatorTooltipContext = {
41
+ isSelected: boolean;
42
+ confirmingAttributeId: string | null | undefined;
43
+ blockedAttributeIds: readonly string[];
44
+ };
45
+ export declare function shouldShowAttributeIndicator(attribute: ContactAttribute | null | undefined, context: AttributeIndicatorTooltipContext): boolean;
46
+ /** Слот индикатора для заблокированного атрибута без галочки / спиннера (только тултип). */
47
+ export declare function shouldShowBlockedIndicatorSlot(attribute: ContactAttribute | null | undefined, context: AttributeIndicatorTooltipContext): boolean;
48
+ /**
49
+ * Определяет ключ подсказки индикатора по приоритету состояния.
50
+ */
51
+ export declare function getAttributeIndicatorTooltipKey(attribute: ContactAttribute | null | undefined, context: AttributeIndicatorTooltipContext): AttributeIndicatorTooltipKey | null;
52
+ export declare function getAttributeIndicatorTooltipText(attribute: ContactAttribute | null | undefined, tooltips: AttributeIndicatorTooltips | null | undefined, context: AttributeIndicatorTooltipContext): string;
12
53
  type MaybeRef<T> = T | Ref<T> | ComputedRef<T>;
13
54
  /**
14
55
  * Параметры composable для работы с контактными атрибутами.
@@ -5,24 +5,19 @@ import { type Ref } from 'vue';
5
5
  interface UseCommunicationMenuOptions {
6
6
  /** Ссылка на корневой контейнер панели */
7
7
  panelRef: Ref<HTMLElement | null>;
8
- /** Ссылка на панель с кнопками каналов */
9
- channelsPanelRef: Ref<HTMLElement | null>;
10
8
  /** Текущий выбранный тип канала */
11
9
  selectedChannelType: Ref<string | null>;
12
10
  /** Замороженный атрибут (для подсветки при наведении) */
13
11
  frozenAttribute: Ref<unknown>;
14
12
  }
15
13
  /**
16
- * Компонует состояние и методы открытия/закрытия меню каналов, обработки кликов
17
- * и вычисления ширины меню.
14
+ * Компонует состояние и методы открытия/закрытия меню каналов и обработки кликов.
18
15
  */
19
- export declare function useCommunicationMenu({ panelRef, channelsPanelRef, selectedChannelType, frozenAttribute, }: UseCommunicationMenuOptions): {
16
+ export declare function useCommunicationMenu({ panelRef, selectedChannelType, frozenAttribute, }: UseCommunicationMenuOptions): {
20
17
  activeChannelType: Ref<string | null, string | null>;
21
18
  hoveredChannel: Ref<string | null, string | null>;
22
19
  showMenu: Ref<boolean, boolean>;
23
20
  showSubMenu: Ref<boolean, boolean>;
24
- menuWidth: Ref<string, string>;
25
- updateMenuWidth: () => void;
26
21
  handleChannelClick: (channelType: string) => void;
27
22
  closeMenu: () => void;
28
23
  handleClickOutside: (event: Event) => void;
@@ -6,11 +6,12 @@ interface UseCommunicationSubMenuOptions {
6
6
  frozenAttribute: Ref<ContactAttribute | null>;
7
7
  hoveredAttribute: Ref<ContactAttribute | null>;
8
8
  hasMultipleChannels: (channelType: string) => boolean;
9
+ isAttributeBlocked: (attribute: ContactAttribute | null | undefined) => boolean;
9
10
  }
10
11
  /**
11
12
  * Управляет состоянием подменю выбора канала и hover-состояниями атрибутов.
12
13
  */
13
- export declare function useCommunicationSubMenu({ activeChannelType, showSubMenu, frozenAttribute, hoveredAttribute, hasMultipleChannels, }: UseCommunicationSubMenuOptions): {
14
+ export declare function useCommunicationSubMenu({ activeChannelType, showSubMenu, frozenAttribute, hoveredAttribute, hasMultipleChannels, isAttributeBlocked, }: UseCommunicationSubMenuOptions): {
14
15
  subMenuTop: Ref<number, number>;
15
16
  handleAttributeMouseEnter: (attribute: ContactAttribute, eventTarget: EventTarget | null) => EventTarget | null;
16
17
  handleAttributeMouseLeave: () => void;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,4 +1,5 @@
1
1
  export { default as CommunicationPanelCheckIcon } from './CommunicationPanelCheckIcon.vue';
2
+ export { default as CommunicationPanelConfirmSpinner } from './CommunicationPanelConfirmSpinner.vue';
2
3
  export { default as CommunicationPanelPhoneIcon } from './CommunicationPanelPhoneIcon.vue';
3
4
  export { default as CommunicationPanelWhatsAppIcon } from './CommunicationPanelWhatsAppIcon.vue';
4
5
  export { default as CommunicationPanelTelegramIcon } from './CommunicationPanelTelegramIcon.vue';
@@ -2,16 +2,19 @@ import type { StoryObj } from '@storybook/vue3-vite';
2
2
  declare const meta: {
3
3
  title: string;
4
4
  component: import("vue").DefineComponent<{}, {
5
- $emit: (event: "select-attribute-channel" | "phone-call", ...args: any[]) => void;
5
+ $emit: (event: "select-attribute-channel" | "confirm-attribute" | "phone-call" | "reset-blocked-attributes", ...args: any[]) => void;
6
6
  channels: unknown[];
7
7
  messages: unknown[];
8
8
  selectedChat: Record<string, any>;
9
9
  channelTooltips: Record<string, any>;
10
10
  contactAttributes: unknown[];
11
+ confirmingAttributeId: string;
11
12
  isNewDialog: boolean;
12
13
  selectedDialog: Record<string, any>;
13
14
  emptyChannelsPlaceholder: Record<string, any>;
15
+ blockedAttributeIds: unknown[];
14
16
  attributeTooltips: Record<string, any>;
17
+ attributeIndicatorTooltips: Record<string, any>;
15
18
  showChannelIcons: boolean;
16
19
  $props: {
17
20
  readonly channels?: unknown[] | undefined;
@@ -19,10 +22,13 @@ declare const meta: {
19
22
  readonly selectedChat?: Record<string, any> | undefined;
20
23
  readonly channelTooltips?: Record<string, any> | undefined;
21
24
  readonly contactAttributes?: unknown[] | undefined;
25
+ readonly confirmingAttributeId?: string | undefined;
22
26
  readonly isNewDialog?: boolean | undefined;
23
27
  readonly selectedDialog?: Record<string, any> | undefined;
24
28
  readonly emptyChannelsPlaceholder?: Record<string, any> | undefined;
29
+ readonly blockedAttributeIds?: unknown[] | undefined;
25
30
  readonly attributeTooltips?: Record<string, any> | undefined;
31
+ readonly attributeIndicatorTooltips?: Record<string, any> | undefined;
26
32
  readonly showChannelIcons?: boolean | undefined;
27
33
  };
28
34
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -168,8 +168,12 @@ export interface CommunicationPanelThemeCSSVariables {
168
168
  '--chotto-communicationpanel-menu-z-index': string;
169
169
  /** Максимальная высота меню атрибутов */
170
170
  '--chotto-communicationpanel-menu-max-height': string;
171
+ /** Ширина меню атрибутов (обычно max-content — по содержимому в пределах min/max) */
172
+ '--chotto-communicationpanel-menu-width': string;
171
173
  /** Минимальная ширина меню атрибутов */
172
174
  '--chotto-communicationpanel-menu-min-width': string;
175
+ /** Максимальная ширина меню атрибутов */
176
+ '--chotto-communicationpanel-menu-max-width': string;
173
177
  /** Промежуток между элементами меню атрибутов */
174
178
  '--chotto-communicationpanel-menu-gap': string;
175
179
  /** Прозрачность меню атрибутов */
@@ -420,6 +424,32 @@ export interface CommunicationPanelThemeCSSVariables {
420
424
  '--chotto-communicationpanel-selected-indicator-height': string;
421
425
  /** Цвет индикатора выбранного элемента */
422
426
  '--chotto-communicationpanel-selected-indicator-color': string;
427
+ /** Цвет индикатора подтверждённого (не выбранного) атрибута */
428
+ '--chotto-communicationpanel-confirmed-indicator-color': string;
429
+ /** Курсор атрибута в процессе подтверждения */
430
+ '--chotto-communicationpanel-attribute-confirming-cursor': string;
431
+ /** События указателя атрибута в процессе подтверждения */
432
+ '--chotto-communicationpanel-attribute-confirming-pointer-events': string;
433
+ /** Курсор над индикатором (спиннер + тултип) при подтверждении */
434
+ '--chotto-communicationpanel-attribute-confirming-indicator-cursor': string;
435
+ /** Цвет заблокированного атрибута (неудачное подтверждение) */
436
+ '--chotto-communicationpanel-attribute-blocked-color': string;
437
+ /** Курсор заблокированного атрибута */
438
+ '--chotto-communicationpanel-attribute-blocked-cursor': string;
439
+ /** События указателя заблокированного атрибута */
440
+ '--chotto-communicationpanel-attribute-blocked-pointer-events': string;
441
+ /** Курсор над индикатором (тултип) у заблокированного атрибута */
442
+ '--chotto-communicationpanel-attribute-blocked-indicator-cursor': string;
443
+ /** Прозрачность иконок заблокированного атрибута */
444
+ '--chotto-communicationpanel-attribute-blocked-icon-opacity': string;
445
+ /** Отображение маркера blocked в слоте индикатора */
446
+ '--chotto-communicationpanel-blocked-indicator-display': string;
447
+ /** Радиус маркера blocked */
448
+ '--chotto-communicationpanel-blocked-indicator-border-radius': string;
449
+ /** Прозрачность маркера blocked */
450
+ '--chotto-communicationpanel-blocked-indicator-opacity': string;
451
+ /** Цвет спиннера подтверждения атрибута */
452
+ '--chotto-communicationpanel-confirming-indicator-color': string;
423
453
  /** Размер шрифта индикатора выбранного элемента */
424
454
  '--chotto-communicationpanel-selected-indicator-font-size': string;
425
455
  /** Сжатие индикатора выбранного элемента */
@@ -6,6 +6,7 @@ export interface ChatAction {
6
6
  title: string;
7
7
  icon?: string;
8
8
  }
9
+ export type ContactAttributeStatus = 'confirmed' | 'unconfirmed';
9
10
  export interface ContactAttribute {
10
11
  id: string;
11
12
  type?: string;
@@ -15,6 +16,7 @@ export interface ContactAttribute {
15
16
  phone: string;
16
17
  };
17
18
  value: string;
19
+ status?: ContactAttributeStatus;
18
20
  }
19
21
  export interface Contact {
20
22
  attributes: ContactAttribute[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mobilon-dev/chotto",
3
- "version": "0.3.75",
3
+ "version": "0.3.77",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",