@bcrumbs.net/inbox 0.0.32 → 0.0.37

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 (35) hide show
  1. package/assets/ar/inbox.json +226 -225
  2. package/assets/en/inbox.json +228 -227
  3. package/index.cjs.d.ts +1 -1
  4. package/index.cjs.js +1673 -1205
  5. package/index.esm.d.ts +1 -1
  6. package/index.esm.js +1675 -1207
  7. package/package.json +2 -2
  8. package/src/app/broadcast/components/BroadcastDateSection.d.ts +6 -0
  9. package/src/app/broadcast/components/BroadcastDetailsSection.d.ts +11 -0
  10. package/src/app/broadcast/components/BroadcastEstimitedCost.d.ts +6 -0
  11. package/src/app/broadcast/components/BroadcastInfoHeader.d.ts +10 -0
  12. package/src/app/broadcast/components/BroadcastList.d.ts +3 -0
  13. package/src/app/broadcast/components/BroadcastListTable.d.ts +14 -0
  14. package/src/app/broadcast/components/BroadcastOverview.d.ts +3 -0
  15. package/src/app/broadcast/components/BroadcastRecipientsSection.d.ts +13 -0
  16. package/src/app/broadcast/components/BroadcastSampleContacts.d.ts +8 -0
  17. package/src/app/broadcast/components/BroadcastSectionCard.d.ts +9 -0
  18. package/src/app/broadcast/components/EmptyBroadcastList.d.ts +11 -0
  19. package/src/app/broadcast/components/StatisticsCard.d.ts +9 -0
  20. package/src/app/broadcast/pages/BroadcastHistory.d.ts +8 -0
  21. package/src/app/broadcast/pages/BroadcastInfo.d.ts +2 -0
  22. package/src/app/broadcast/utils/helper.d.ts +1 -0
  23. package/src/app/contact/components/ContactFormFields.d.ts +2 -1
  24. package/src/app/contact/config/contactForm.d.ts +15 -1
  25. package/src/app/generic/hooks/usePaginatedQuery.d.ts +27 -7
  26. package/src/app/inbox/components/NewConvList/index.d.ts +3 -1
  27. package/src/app/inbox/hooks/useCanContribute.d.ts +1 -1
  28. package/src/app/inbox/utils/convs.d.ts +4 -2
  29. package/src/app/resources/config/broadcast.d.ts +1 -0
  30. package/src/app/subscriptions/components/SubscriptionSettings/SubscriptionHeader.d.ts +10 -0
  31. package/src/app/subscriptions/components/SubscriptionSettings/SubscriptionProfile.d.ts +7 -1
  32. package/src/app/subscriptions/pages/Subscriptions.d.ts +1 -1
  33. package/src/assets/locales/translations.d.ts +48 -0
  34. package/src/context/SidebarContext.d.ts +12 -0
  35. package/src/graphql.autogenerated.d.ts +560 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bcrumbs.net/inbox",
3
3
  "description": "Inbox widget for Bread Crumbs portals",
4
- "version": "0.0.32",
4
+ "version": "0.0.37",
5
5
  "keyword": [
6
6
  "bcrumbs",
7
7
  "bc-ui",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@bcrumbs.net/bc-shared": "^0.0.7",
28
- "@bcrumbs.net/bc-ui": "^0.0.7",
28
+ "@bcrumbs.net/bc-ui": "^0.0.8",
29
29
  "@bcrumbs.net/bc-api": "^0.0.43",
30
30
  "@azure/storage-blob": "^12.25.0"
31
31
  },
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface BroadcastDateSectionProps {
3
+ renderField: any;
4
+ }
5
+ declare const _default: React.MemoExoticComponent<({ renderField }: BroadcastDateSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
6
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ interface BroadcastDetailsSectionProps {
3
+ renderField: any;
4
+ renderDroplistField: any;
5
+ templatesData: any;
6
+ loadingTemplates: boolean;
7
+ integrationsData: any;
8
+ loadingIntegrations: boolean;
9
+ }
10
+ declare const _default: React.MemoExoticComponent<({ renderField, renderDroplistField, templatesData, loadingTemplates, integrationsData, loadingIntegrations, }: BroadcastDetailsSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
11
+ export default _default;
@@ -0,0 +1,6 @@
1
+ interface BroadcastEstimitedCostProps {
2
+ wabaTemplateCategory?: string;
3
+ clientsCount?: number;
4
+ }
5
+ declare const BroadcastEstimitedCost: ({ wabaTemplateCategory, clientsCount }: BroadcastEstimitedCostProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ export default BroadcastEstimitedCost;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface BroadcastInfoHeaderProps {
3
+ onCancel: () => void;
4
+ onSave: () => void;
5
+ loading: boolean;
6
+ disabledSave: boolean;
7
+ isEditMode: boolean;
8
+ }
9
+ declare const _default: React.MemoExoticComponent<({ onCancel, onSave, loading, disabledSave, isEditMode }: BroadcastInfoHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
10
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<() => import("@emotion/react/jsx-runtime").JSX.Element>;
3
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { Broadcast } from '../../../graphql.autogenerated';
2
+ interface BroadcastListTableProps {
3
+ broadcasts: Broadcast[];
4
+ onEdit?: (broadcast: Broadcast) => void;
5
+ loading?: boolean;
6
+ hasMore?: boolean;
7
+ onLoadMore?: () => void;
8
+ loadingMore?: boolean;
9
+ refetchAll: () => void;
10
+ removeItem: (id: string) => void;
11
+ updateItem: (id: string, updates: Partial<Broadcast>) => void;
12
+ }
13
+ declare const BroadcastListTable: ({ broadcasts, onEdit, loading, hasMore, onLoadMore, loadingMore, refetchAll, removeItem, updateItem, }: BroadcastListTableProps) => import("@emotion/react/jsx-runtime").JSX.Element;
14
+ export default BroadcastListTable;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const _default: React.MemoExoticComponent<() => import("@emotion/react/jsx-runtime").JSX.Element>;
3
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { Tag } from '../../../graphql.autogenerated';
3
+ interface BroadcastRecipientsSectionProps {
4
+ renderDroplistField: any;
5
+ clientStages: Tag[];
6
+ clientTags: Tag[];
7
+ loadingTags: boolean;
8
+ selectedTags: string[];
9
+ setSelectedTags: (tags: string[]) => void;
10
+ refetchTags: () => void;
11
+ }
12
+ declare const _default: React.MemoExoticComponent<({ renderDroplistField, clientStages, clientTags, loadingTags, selectedTags, setSelectedTags, refetchTags, }: BroadcastRecipientsSectionProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
13
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface BroadcastSampleContactsProps {
3
+ clients: any[];
4
+ clientsLoading: boolean;
5
+ clientsCount: number;
6
+ }
7
+ declare const _default: React.MemoExoticComponent<({ clients, clientsLoading, clientsCount }: BroadcastSampleContactsProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
8
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface BroadcastSectionCardProps {
3
+ title?: string;
4
+ subtitle?: string;
5
+ columns?: number;
6
+ children: React.ReactNode;
7
+ }
8
+ declare const _default: React.MemoExoticComponent<({ title, subtitle, columns, children }: BroadcastSectionCardProps) => import("@emotion/react/jsx-runtime").JSX.Element>;
9
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { SerializedStyles } from '@emotion/react';
2
+ interface EmptyBroadcastListProps {
3
+ handleNewBroadcastClick?: () => void;
4
+ hasFilters?: boolean;
5
+ emptyTitle?: string;
6
+ emptySubtitle?: string;
7
+ containerCss?: SerializedStyles;
8
+ imageCss?: SerializedStyles;
9
+ }
10
+ declare const EmptyBroadcastList: ({ handleNewBroadcastClick, hasFilters, emptyTitle, emptySubtitle, containerCss, imageCss, }: EmptyBroadcastListProps) => import("@emotion/react/jsx-runtime").JSX.Element;
11
+ export default EmptyBroadcastList;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ interface StatisticsCardProps {
3
+ label?: string;
4
+ value?: number;
5
+ icon?: React.ReactNode;
6
+ loading?: boolean;
7
+ }
8
+ declare const StatisticsCard: ({ label, value, icon, loading }: StatisticsCardProps) => import("@emotion/react/jsx-runtime").JSX.Element;
9
+ export default StatisticsCard;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export type BroadcastStatistics = {
3
+ label: string;
4
+ icon: React.ReactNode;
5
+ value: number;
6
+ };
7
+ declare const BroadcastHistory: () => import("@emotion/react/jsx-runtime").JSX.Element;
8
+ export default BroadcastHistory;
@@ -0,0 +1,2 @@
1
+ declare const BroadcastInfo: () => import("@emotion/react/jsx-runtime").JSX.Element;
2
+ export default BroadcastInfo;
@@ -0,0 +1 @@
1
+ export declare const fullDateTimeFormat: (date: string | null | undefined) => string;
@@ -1,6 +1,7 @@
1
1
  interface ContactFormFieldsProps {
2
2
  renderField: any;
3
3
  isEditMode?: boolean;
4
+ renderDroplistField?: any;
4
5
  }
5
- declare const ContactFormFields: ({ renderField, isEditMode }: ContactFormFieldsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ declare const ContactFormFields: ({ renderField, renderDroplistField, isEditMode, }: ContactFormFieldsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
7
  export default ContactFormFields;
@@ -4,7 +4,9 @@ export declare enum FormFields {
4
4
  surname = "surname",
5
5
  email = "email",
6
6
  externalClientId = "externalClientId",
7
- address = "address"
7
+ address = "address",
8
+ country = "country",
9
+ city = "city"
8
10
  }
9
11
  export declare const FORM_INIT: {
10
12
  name: {
@@ -37,4 +39,16 @@ export declare const FORM_INIT: {
37
39
  validationType: BCValidationTypes;
38
40
  }[];
39
41
  };
42
+ country: {
43
+ value: string;
44
+ validations: {
45
+ validationType: BCValidationTypes;
46
+ }[];
47
+ };
48
+ city: {
49
+ value: string;
50
+ validations: {
51
+ validationType: BCValidationTypes;
52
+ }[];
53
+ };
40
54
  };
@@ -1,20 +1,40 @@
1
- interface PaginationOptions {
1
+ import { ApolloClient, NormalizedCacheObject } from '@apollo/client';
2
+ export interface NormalQueryConfig {
3
+ reactHook: any;
4
+ queryName: string;
5
+ isPaginated?: boolean;
6
+ client?: ApolloClient<NormalizedCacheObject>;
7
+ }
8
+ export interface ResourceDefinitionConfig {
9
+ listQuery: {
10
+ reactHook: any;
11
+ queryName: string;
12
+ isPaginated?: boolean;
13
+ type?: 'query' | 'lazyQuery' | 'mutation';
14
+ fields?: any[];
15
+ };
16
+ client?: ApolloClient<NormalizedCacheObject>;
17
+ }
18
+ export type QueryConfig = NormalQueryConfig | ResourceDefinitionConfig;
19
+ export interface PaginationOptions {
2
20
  limit?: number;
3
- workspaceId?: string;
21
+ workspaceId?: number;
4
22
  additionalVariables?: Record<string, any>;
5
23
  searchQuery?: string;
6
- tags?: string[];
7
- stageId?: string;
24
+ count?: boolean;
8
25
  }
9
- interface UsePaginatedQueryResult<T> {
26
+ export interface UsePaginatedQueryResult<T> {
10
27
  items: T[];
11
28
  hasMore: boolean;
12
29
  loading: boolean;
13
30
  error: any;
14
31
  loadMoreItems?: () => void;
15
32
  refetch: () => void;
33
+ refetchAll: () => void;
16
34
  reset: () => void;
17
35
  loadingMore: boolean;
36
+ removeItem: (id: string) => void;
37
+ updateItem: (id: string, updates: Partial<T>) => void;
38
+ count: number;
18
39
  }
19
- export declare const usePaginatedQuery: <T = any>(resourceDef: any, options?: PaginationOptions) => UsePaginatedQueryResult<T>;
20
- export {};
40
+ export declare const usePaginatedQuery: <T = any>(config: QueryConfig, options?: PaginationOptions) => UsePaginatedQueryResult<T>;
@@ -1,3 +1,4 @@
1
+ import { RefObject } from 'react';
1
2
  import { ConvsFilters } from '../../utils/convs';
2
3
  import { Agent, Ai, Conversation, Tag } from '../../../../graphql.autogenerated';
3
4
  interface NewConvListProps {
@@ -12,6 +13,7 @@ interface NewConvListProps {
12
13
  onFiltersChange: (filters: ConvsFilters) => void;
13
14
  setShowStartConv: (show: boolean) => void;
14
15
  aiAgents: Ai[];
16
+ scrollContainerRef?: RefObject<HTMLDivElement>;
15
17
  }
16
- declare const NewConvList: ({ agents, convStages, convs, loading, selectedConvId, convClicked, onConvEnd, filters, onFiltersChange, setShowStartConv, aiAgents, }: NewConvListProps) => import("@emotion/react/jsx-runtime").JSX.Element;
18
+ declare const NewConvList: ({ agents, convStages, convs, loading, selectedConvId, convClicked, onConvEnd, filters, onFiltersChange, setShowStartConv, aiAgents, scrollContainerRef, }: NewConvListProps) => import("@emotion/react/jsx-runtime").JSX.Element;
17
19
  export default NewConvList;
@@ -4,5 +4,5 @@ interface Props {
4
4
  hasAdminOrOwnerRole?: boolean;
5
5
  selectedConv?: Conversation;
6
6
  }
7
- declare const useCanContribute: ({ agents, hasAdminOrOwnerRole, selectedConv, }: Props) => boolean;
7
+ declare const useCanContribute: ({ agents, hasAdminOrOwnerRole, selectedConv }: Props) => boolean;
8
8
  export default useCanContribute;
@@ -27,9 +27,11 @@ interface BuildLifeCycleMenuOptions {
27
27
  addSeparatorAtLast?: boolean;
28
28
  }
29
29
  export declare function getNumOfNewClientMessages(messages: Maybe<Message[]> | undefined): number;
30
- export declare function getLastMessage(messages: Maybe<Message[]> | undefined): Message;
30
+ export declare function getLastMessage(messages: Maybe<Message[]> | undefined, filterFn?: (m: Message) => boolean): Message | undefined;
31
+ export declare function hashStatuses(messages?: Maybe<Message[]> | null): string;
32
+ export declare function isOutside24HourWindow(messageCreatedAt: string | Date | null | undefined): boolean;
31
33
  export declare function formatSeconds(value: number): string;
32
- export declare const getMessageStatusIcon: (message: Message | null) => import("@emotion/react/jsx-runtime").JSX.Element | null;
34
+ export declare const getMessageStatusIcon: (message: Message | null | undefined) => import("@emotion/react/jsx-runtime").JSX.Element | null;
33
35
  export declare const getDisplayName: (clientData: ClientQuery['client'] | undefined) => string;
34
36
  export declare const buildAgentsMenu: ({ agents, myAgent, selectedAgentId, onAgentSelect, onCrumbySelect, t, includeAllOption, onAllSelect, addSeparatorAtLast, }: BuildAgentsMenuOptions) => ActionItem[];
35
37
  export declare const buildLifeCycleMenu: ({ convStages, selectedStageId, onStageSelect, t, addSeparatorAtLast, }: BuildLifeCycleMenuOptions) => ActionItem[];
@@ -2,4 +2,5 @@ import { Broadcast, BroadcastState } from '../../../graphql.autogenerated';
2
2
  import { ResourceDefinition } from './types';
3
3
  declare const broadcastDefinition: ResourceDefinition<Broadcast>;
4
4
  export declare const StateToColorMap: Record<BroadcastState | 'all', string>;
5
+ export declare const StateToBackgroundColorMap: Record<BroadcastState | 'all', string>;
5
6
  export default broadcastDefinition;
@@ -0,0 +1,10 @@
1
+ interface SubscriptionHeaderProps {
2
+ isEditing: boolean;
3
+ onEdit: () => void;
4
+ onSave: () => void;
5
+ loading: boolean;
6
+ onCancel: () => void;
7
+ disabledSave: boolean;
8
+ }
9
+ declare const SubscriptionHeader: ({ isEditing, onEdit, onSave, onCancel, loading, disabledSave, }: SubscriptionHeaderProps) => import("@emotion/react/jsx-runtime").JSX.Element;
10
+ export default SubscriptionHeader;
@@ -7,7 +7,13 @@ type SubscriptionProfileRouteProps = {
7
7
  onUpdate: () => any;
8
8
  updateCompany: (id: string, name: string) => any;
9
9
  config: any;
10
+ isEditing: boolean;
11
+ onSave?: (name: string) => Promise<void>;
12
+ name?: string;
13
+ onNameChange?: (name: string) => void;
14
+ handleUpdateCompany?: (name: string) => Promise<void>;
15
+ disabledSave: boolean;
10
16
  };
11
- export declare const SubscriptionProfile: (props: SubscriptionProfileRouteProps) => import("@emotion/react/jsx-runtime").JSX.Element;
17
+ export declare const SubscriptionProfile: ({ isEditing, disabledSave, ...props }: SubscriptionProfileRouteProps) => import("@emotion/react/jsx-runtime").JSX.Element;
12
18
  declare const _default: any;
13
19
  export default _default;
@@ -3,6 +3,6 @@ interface SubscriptionsProps {
3
3
  refetchCompanies: any;
4
4
  loadingCompanies: boolean;
5
5
  }
6
- export declare const Subscriptions: ({ companies, refetchCompanies, loadingCompanies, }: SubscriptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
6
+ export declare const Subscriptions: ({ companies, refetchCompanies, loadingCompanies }: SubscriptionsProps) => import("@emotion/react/jsx-runtime").JSX.Element;
7
7
  declare const _default: any;
8
8
  export default _default;
@@ -147,6 +147,12 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
147
147
  managerRole: string;
148
148
  agentRole: string;
149
149
  agentPlusRole: string;
150
+ Workspace: string;
151
+ WorkspaceDescription: string;
152
+ upgradePlan: string;
153
+ activePlan: string;
154
+ usage2: string;
155
+ userSearchPlaceholder: string;
150
156
  };
151
157
  pages: {
152
158
  yourPages: string;
@@ -259,6 +265,9 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
259
265
  addNewTag: string;
260
266
  addingNewTag: string;
261
267
  noBroadcasts: string;
268
+ noBroadcastsDescription: string;
269
+ noSearchResults: string;
270
+ noSearchResultsDescription: string;
262
271
  createBroadcast: string;
263
272
  broadcastState: {
264
273
  all: string;
@@ -273,6 +282,35 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
273
282
  broadcastDetails: string;
274
283
  clientsDetails: string;
275
284
  filterByState: string;
285
+ broadcastOverview: string;
286
+ broadcastList: string;
287
+ newBroadcast: string;
288
+ searchPlaceholder: string;
289
+ broadcastName: string;
290
+ templateName: string;
291
+ state: string;
292
+ scheduledAt: string;
293
+ recipients: string;
294
+ successful: string;
295
+ failed: string;
296
+ createdAt: string;
297
+ deleteBroadcastDescription: string;
298
+ deleteBroadcast: string;
299
+ edit: string;
300
+ schedule: string;
301
+ cancel: string;
302
+ loadingMore: string;
303
+ broadcastInfoDescription: string;
304
+ editBroadcast: string;
305
+ save: string;
306
+ selectClientStage: string;
307
+ clientStage: string;
308
+ sampleContacts: string;
309
+ sampleContactsCount: string;
310
+ noClientsFound: string;
311
+ noClientsFoundDescription: string;
312
+ scheduleAt: string;
313
+ estimatedCost: string;
276
314
  };
277
315
  resources: {
278
316
  loginToFB: string;
@@ -373,6 +411,7 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
373
411
  version: string;
374
412
  contactLifeCycle: string;
375
413
  contact: string;
414
+ select: string;
376
415
  };
377
416
  dashboard: {
378
417
  dashboardOverview: string;
@@ -448,6 +487,10 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
448
487
  home: string;
449
488
  backToHome: string;
450
489
  infoUnavailable: string;
490
+ edit: string;
491
+ name: string;
492
+ delete: string;
493
+ submit: string;
451
494
  pwa: {
452
495
  installApp: string;
453
496
  addAppToHomeScreen: string;
@@ -468,6 +511,8 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
468
511
  email: string;
469
512
  phone: string;
470
513
  address: string;
514
+ country: string;
515
+ city: string;
471
516
  createDate: string;
472
517
  tags: string;
473
518
  loadingMoreText: string;
@@ -480,10 +525,13 @@ export declare const convertLanguageJsonToObject: (json: any, objToConvertTo?: C
480
525
  namePlaceholder: string;
481
526
  surnamePlaceholder: string;
482
527
  emailPlaceholder: string;
528
+ countryPlaceholder: string;
529
+ cityPlaceholder: string;
483
530
  group: string;
484
531
  groupPlaceholder: string;
485
532
  cancel: string;
486
533
  save: string;
534
+ create: string;
487
535
  externalClientId: string;
488
536
  externalClientIdPlaceholder: string;
489
537
  stage: string;
@@ -0,0 +1,12 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface SidebarContextType {
3
+ sidebarContent: ReactNode | null;
4
+ setSidebarContent: (content: ReactNode | null) => void;
5
+ sidebarTitle: string | undefined;
6
+ setSidebarTitle: (title: string | undefined) => void;
7
+ }
8
+ export declare const SidebarProvider: React.FC<{
9
+ children: ReactNode;
10
+ }>;
11
+ export declare const useSidebarContext: () => SidebarContextType;
12
+ export {};