@robono/messaging-react-native 0.1.0 → 0.3.0

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 (101) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +160 -8
  3. package/SBOM.spdx.json +1985 -209
  4. package/dist/account.d.ts +15 -0
  5. package/dist/account.js +27 -0
  6. package/dist/call-message.js +7 -1
  7. package/dist/calling.js +5 -9
  8. package/dist/conversation-details.d.ts +24 -0
  9. package/dist/conversation-details.js +83 -0
  10. package/dist/emoji-text.d.ts +2 -0
  11. package/dist/emoji-text.js +8 -0
  12. package/dist/expo-download.d.ts +3 -0
  13. package/dist/expo-download.js +43 -0
  14. package/dist/expo-history.d.ts +3 -0
  15. package/dist/expo-history.js +59 -0
  16. package/dist/expo-media.d.ts +1 -0
  17. package/dist/expo-media.js +69 -43
  18. package/dist/expo-messenger.d.ts +35 -0
  19. package/dist/expo-messenger.js +39 -0
  20. package/dist/expo-notifications.d.ts +31 -0
  21. package/dist/expo-notifications.js +92 -0
  22. package/dist/expo-outbox.d.ts +13 -0
  23. package/dist/expo-outbox.js +82 -0
  24. package/dist/expo-privacy.d.ts +4 -0
  25. package/dist/expo-privacy.js +7 -0
  26. package/dist/expo-saved.d.ts +24 -0
  27. package/dist/expo-saved.js +76 -0
  28. package/dist/expo-screen.d.ts +42 -0
  29. package/dist/expo-screen.js +557 -0
  30. package/dist/expo-social.d.ts +3 -0
  31. package/dist/expo-social.js +21 -0
  32. package/dist/expo-thumbnails.d.ts +9 -0
  33. package/dist/expo-thumbnails.js +68 -0
  34. package/dist/expo.d.ts +2 -36
  35. package/dist/expo.js +2 -429
  36. package/dist/extras-lifecycle.d.ts +2 -0
  37. package/dist/extras-lifecycle.js +27 -0
  38. package/dist/extras.d.ts +49 -0
  39. package/dist/extras.js +49 -0
  40. package/dist/forward.d.ts +13 -0
  41. package/dist/forward.js +62 -0
  42. package/dist/group-editor.d.ts +18 -0
  43. package/dist/group-editor.js +98 -0
  44. package/dist/header-calls.d.ts +18 -0
  45. package/dist/header-calls.js +45 -0
  46. package/dist/icons.d.ts +1 -1
  47. package/dist/inbox-search.d.ts +11 -0
  48. package/dist/inbox-search.js +42 -0
  49. package/dist/inbox.d.ts +19 -0
  50. package/dist/inbox.js +52 -0
  51. package/dist/index.d.ts +76 -3
  52. package/dist/index.js +648 -167
  53. package/dist/media-controller.d.ts +21 -0
  54. package/dist/media-controller.js +157 -3
  55. package/dist/media-readiness.d.ts +1 -1
  56. package/dist/media-ui.d.ts +27 -5
  57. package/dist/media-ui.js +95 -29
  58. package/dist/message-links.d.ts +5 -0
  59. package/dist/message-links.js +30 -0
  60. package/dist/message-menu.d.ts +28 -0
  61. package/dist/message-menu.js +24 -0
  62. package/dist/message-order.d.ts +7 -0
  63. package/dist/message-order.js +27 -0
  64. package/dist/messenger-video-view.d.ts +8 -0
  65. package/dist/messenger-video-view.js +46 -0
  66. package/dist/native-outbox.d.ts +55 -0
  67. package/dist/native-outbox.js +53 -0
  68. package/dist/photo-gesture.d.ts +20 -0
  69. package/dist/photo-gesture.js +52 -0
  70. package/dist/pollVoteQueue.d.ts +3 -0
  71. package/dist/pollVoteQueue.js +29 -0
  72. package/dist/polls.d.ts +7 -2
  73. package/dist/polls.js +89 -20
  74. package/dist/popup.d.ts +51 -0
  75. package/dist/popup.js +73 -0
  76. package/dist/quick-send.d.ts +15 -0
  77. package/dist/quick-send.js +26 -0
  78. package/dist/recent-media.js +1 -0
  79. package/dist/safety.d.ts +10 -1
  80. package/dist/safety.js +29 -8
  81. package/dist/saved.d.ts +10 -0
  82. package/dist/saved.js +51 -0
  83. package/dist/search.d.ts +9 -0
  84. package/dist/search.js +59 -0
  85. package/dist/social.d.ts +25 -0
  86. package/dist/social.js +31 -0
  87. package/dist/translation-settings.d.ts +12 -0
  88. package/dist/translation-settings.js +16 -0
  89. package/dist/use-quote-gesture.d.ts +5 -1
  90. package/dist/use-quote-gesture.js +35 -17
  91. package/dist/visual/RobonoIcon.js +2 -1
  92. package/dist/visual/WeatherArtwork.d.ts +9 -0
  93. package/dist/visual/WeatherArtwork.js +43 -0
  94. package/dist/visual/weather-artwork.d.ts +17 -0
  95. package/dist/visual/weather-artwork.js +86 -0
  96. package/dist/visual/weather-conditions.d.ts +5 -0
  97. package/dist/visual/weather-conditions.js +2 -0
  98. package/dist/voice-composer.js +2 -2
  99. package/dist/voice-waveform.d.ts +2 -0
  100. package/dist/voice-waveform.js +21 -0
  101. package/package.json +41 -5
package/dist/index.d.ts CHANGED
@@ -1,3 +1,13 @@
1
+ import { type MessagingAccount } from './account.js';
2
+ import { type MessagingCallActions } from './header-calls.js';
3
+ export type { MessagingAccount } from './account.js';
4
+ export type { MessagingCallActions } from './header-calls.js';
5
+ import { type TrackingMapProps, type PrivacyLayerProps } from './extras.js';
6
+ export { MessagingPrivacyLayer } from './extras.js';
7
+ export type { TrackingMapProps, PrivacyLayerProps } from './extras.js';
8
+ import { type SocialPlayerProps } from './social.js';
9
+ export type { SocialPlayerProps } from './social.js';
10
+ export { MessagingSearch } from './search.js';
1
11
  export { MessagingSafety } from './safety.js';
2
12
  export { PollMessage, PollComposer } from "./polls.js";
3
13
  import React, { type ComponentType, type ReactNode } from "react";
@@ -8,14 +18,25 @@ export type { VoiceComposerProps } from "./voice-composer.js";
8
18
  import { type VoiceBubbleProps } from "./media-ui.js";
9
19
  export { VoicePlayback, MediaViewer, MediaPlaybackControls, ZoomablePhoto } from "./media-ui.js";
10
20
  export type { VoiceBubbleProps } from "./media-ui.js";
11
- import { type MessageKind, type MessageMedia, type MessagingAppearance, type MessagingClient, type MessagingMessage, type MessagingState } from "@robono/messaging";
21
+ import { type MessagingExtrasClient, type MessagingExtrasState, type MessageKind, type MessageMedia, type MessagingAppearance, type MessagingClient, type MessagingMessage, type MessagingState, type MessageTransform, type SavedMessage } from "@robono/messaging";
12
22
  export interface VoiceAttachmentProps {
13
23
  media: MessageMedia;
14
24
  appearance: MessagingAppearance;
15
25
  disabled: boolean;
16
26
  onRemove: () => void;
17
27
  }
28
+ export interface TranslationVoiceProps {
29
+ transform: MessageTransform;
30
+ ink: string;
31
+ accent: string;
32
+ showWaveform?: boolean;
33
+ autoPlay?: boolean;
34
+ }
18
35
  export interface MessagingComponents {
36
+ TrackingMap?: ComponentType<TrackingMapProps>;
37
+ PrivacyLayer?: ComponentType<PrivacyLayerProps>;
38
+ SocialPlayer?: ComponentType<SocialPlayerProps>;
39
+ TranslationVoice?: ComponentType<TranslationVoiceProps>;
19
40
  VoiceAttachment?: ComponentType<VoiceAttachmentProps>;
20
41
  Header?: ComponentType;
21
42
  Message?: ComponentType<{
@@ -36,18 +57,30 @@ export interface AttachmentChoice {
36
57
  durationMs?: number;
37
58
  }
38
59
  export interface MessagingScreenProps {
60
+ companyName?: string;
61
+ account?: MessagingAccount;
62
+ callActions?: MessagingCallActions;
63
+ /** Authenticated weather, tracking, privacy and call-history controller. */
64
+ extras?: MessagingExtrasClient;
65
+ onCallHistory?: (kind: "voice" | "video") => void;
39
66
  client: MessagingClient;
67
+ /** Browser adapter supplies the hosting origin; native embeds use Robono's domain. */
68
+ socialOrigin?: string;
69
+ /** Optional self-hosted copy of messaging-embed.html, for strict website policies. */
70
+ socialEmbedPageUrl?: string;
40
71
  /** Target language for this viewer; defaults to the device locale. */
41
72
  language?: string;
42
73
  userId: string;
43
74
  contact: {
44
75
  name: string;
45
76
  avatarUrl?: string;
77
+ language?: string;
46
78
  };
47
79
  /** Resolve group member names through your app's authorized contact directory. */
48
80
  participants?: Record<string, {
49
81
  name: string;
50
82
  avatarUrl?: string;
83
+ language?: string;
51
84
  }>;
52
85
  appearance?: MessagingAppearance;
53
86
  components?: MessagingComponents;
@@ -58,19 +91,31 @@ export interface MessagingScreenProps {
58
91
  /** Optional override for the supplied contact safety menu; use your existing safety flow. */
59
92
  onContactOptions?: () => void;
60
93
  onMessageOptions?: (message: MessagingMessage) => void;
94
+ /** Used by the media preview to open the same message actions. */
95
+ requestedMessageAction?: {
96
+ kind: 'forward' | 'delete';
97
+ messageId: string;
98
+ sequence: number;
99
+ };
100
+ /** Native clipboard adapter. Supplied by ExpoMessagingScreen. Web uses its clipboard. */
101
+ copyText?: (text: string) => Promise<void>;
61
102
  /** Optional recent media shown beneath the attachment buttons. */
62
103
  attachmentChoices?: AttachmentChoice[];
63
104
  /** Pick, capture or record, then upload to your private store. Return an opaque asset reference. */
64
105
  pickAttachment?: (kind: Exclude<MessageKind, "text" | "poll">, options: {
106
+ maxCount?: number;
65
107
  maxDurationMs?: number;
66
108
  maxFileBytes?: number;
67
109
  allowedMimeTypes?: string[];
68
110
  source?: "camera" | "call-video";
69
111
  attachmentId?: string;
70
112
  intent?: "send" | "preview" | "attach";
71
- }) => Promise<MessageMedia | null>;
113
+ }) => Promise<MessageMedia | MessageMedia[] | null>;
72
114
  /** Release local draft resources after removal or submission; keep uploaded assets needed by retries. */
73
115
  releaseAttachment?: (media: MessageMedia) => void | Promise<void>;
116
+ /** Upload a locally selected attachment after its outgoing bubble is visible. */
117
+ prepareAttachment?: (kind: Exclude<MessageKind, 'text' | 'poll'>, media: MessageMedia) => Promise<MessageMedia>;
118
+ retainDraftAttachments?: boolean;
74
119
  /** Resolve an authorized thumbnail and/or normalized waveform. Never put signed URLs in message data. */
75
120
  attachmentPreview?: (message: MessagingMessage) => Promise<{
76
121
  uri?: string;
@@ -78,24 +123,52 @@ export interface MessagingScreenProps {
78
123
  }>;
79
124
  /** Authorize the asset and open it using your app's media player/viewer. */
80
125
  openAttachment?: (message: MessagingMessage) => Promise<void>;
126
+ openSavedAttachment?: (record: SavedMessage) => Promise<void>;
81
127
  }
82
128
  interface MessagingContext extends MessagingScreenProps {
83
129
  state: MessagingState;
130
+ discussionPreview?: boolean;
131
+ discussionRoot?: string;
132
+ openDiscussion: (threadRoot?: string) => void;
133
+ extrasState: MessagingExtrasState | null;
84
134
  design: MessagingAppearance;
85
135
  reply: MessagingMessage | null;
136
+ editing: MessagingMessage | null;
137
+ setEditing: (message: MessagingMessage | null) => void;
138
+ setForwarding: (messages: MessagingMessage[]) => void;
139
+ setDeleting: (messages: MessagingMessage[]) => void;
140
+ selection: MessagingMessage[];
141
+ setSelection: (messages: MessagingMessage[]) => void;
142
+ saved: SavedMessage[];
143
+ saving: boolean;
144
+ toggleSaved: (message: MessagingMessage) => Promise<void>;
145
+ setSavedOpen: (open: boolean) => void;
86
146
  setReply: (message: MessagingMessage | null) => void;
87
147
  }
88
148
  export declare function useMessagingUI(): MessagingContext;
89
149
  export declare function MessagingProvider({ children, ...props }: MessagingScreenProps & {
90
150
  children: ReactNode;
91
151
  }): React.JSX.Element;
152
+ export declare function messagingHeaderColors(design: MessagingAppearance, group: boolean): {
153
+ background: string;
154
+ foreground: string;
155
+ };
92
156
  export declare function MessagingHeader({ children }?: {
93
157
  children?: ReactNode;
94
158
  }): React.JSX.Element;
95
- export declare function MessagingBubble({ message }: {
159
+ export declare function MessagingBubble({ message, pendingStatus, previousMessage, nextMessage }: {
96
160
  message: MessagingMessage;
161
+ pendingStatus?: 'sending' | 'failed';
162
+ previousMessage?: MessagingMessage;
163
+ nextMessage?: MessagingMessage;
97
164
  }): React.JSX.Element;
98
165
  export declare function MessagingList(): React.JSX.Element;
99
166
  export declare function MessagingComposer(): React.JSX.Element;
167
+ /** Account navigation. Mount in the inbox/app toolbar, never in a contact menu. */
168
+ export declare function MessagingAccountMenu({ onNewGroup }?: {
169
+ onNewGroup?: () => void;
170
+ }): React.JSX.Element;
171
+ export declare function MessagingConversation(): React.JSX.Element;
100
172
  /** Embed inside your app's safe area and navigation. No engine, push or global audio side effects. */
101
173
  export declare function MessagingScreen(props: MessagingScreenProps): React.JSX.Element;
174
+ export { MessagingInbox, type MessagingInboxProps } from './inbox.js';