@teamvortexsoftware/vortex-react-native 1.0.0 → 1.0.1

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 (217) hide show
  1. package/dist/InviteFormCore-D4HkMMo0.d.mts +721 -0
  2. package/dist/InviteFormCore-D9oUCbu7.d.ts +721 -0
  3. package/dist/VortexClient.js +192 -0
  4. package/dist/VortexClient.js.map +1 -0
  5. package/dist/VortexDeferredLinks.js +127 -0
  6. package/dist/VortexDeferredLinks.js.map +1 -0
  7. package/dist/clientInfo.js +45 -0
  8. package/dist/clientInfo.js.map +1 -0
  9. package/dist/components/ContactsPickerModal.js +182 -0
  10. package/dist/components/ContactsPickerModal.js.map +1 -0
  11. package/dist/components/InviteFormCore.js +2141 -0
  12. package/dist/components/InviteFormCore.js.map +1 -0
  13. package/dist/components/InviteFormMobile.js +463 -0
  14. package/dist/components/InviteFormMobile.js.map +1 -0
  15. package/dist/components/InviteFormWeb.js +295 -0
  16. package/dist/components/InviteFormWeb.js.map +1 -0
  17. package/dist/components/PlacedItemToolbar.js +147 -0
  18. package/dist/components/PlacedItemToolbar.js.map +1 -0
  19. package/dist/components/ShareButtons.js +181 -0
  20. package/dist/components/ShareButtons.js.map +1 -0
  21. package/dist/components/VrtxContactsImport.js +234 -0
  22. package/dist/components/VrtxContactsImport.js.map +1 -0
  23. package/dist/components/VrtxEmailInvitations.js +341 -0
  24. package/dist/components/VrtxEmailInvitations.js.map +1 -0
  25. package/dist/components/VrtxFindFriends.js +400 -0
  26. package/dist/components/VrtxFindFriends.js.map +1 -0
  27. package/dist/components/VrtxHeading.js +58 -0
  28. package/dist/components/VrtxHeading.js.map +1 -0
  29. package/dist/components/VrtxIncomingInvitations.js +657 -0
  30. package/dist/components/VrtxIncomingInvitations.js.map +1 -0
  31. package/dist/components/VrtxInvitationSuggestions.js +506 -0
  32. package/dist/components/VrtxInvitationSuggestions.js.map +1 -0
  33. package/dist/components/VrtxInviteContacts.js +512 -0
  34. package/dist/components/VrtxInviteContacts.js.map +1 -0
  35. package/dist/components/VrtxOutgoingInvitations.js +572 -0
  36. package/dist/components/VrtxOutgoingInvitations.js.map +1 -0
  37. package/dist/components/VrtxSearchBox.js +487 -0
  38. package/dist/components/VrtxSearchBox.js.map +1 -0
  39. package/dist/components/VrtxSelect.js +27 -0
  40. package/dist/components/VrtxSelect.js.map +1 -0
  41. package/dist/components/VrtxShareOptions.js +435 -0
  42. package/dist/components/VrtxShareOptions.js.map +1 -0
  43. package/dist/components/VrtxSubmit.js +132 -0
  44. package/dist/components/VrtxSubmit.js.map +1 -0
  45. package/dist/components/VrtxText.js +146 -0
  46. package/dist/components/VrtxText.js.map +1 -0
  47. package/dist/constants/mockData.d.mts +7 -0
  48. package/dist/constants/mockData.d.ts +7 -0
  49. package/dist/constants/mockData.js +48 -0
  50. package/dist/constants/mockData.js.map +1 -0
  51. package/dist/constants/mockData.mjs +22 -0
  52. package/dist/constants/mockData.mjs.map +1 -0
  53. package/dist/context/VortexModulesContext.js +135 -0
  54. package/dist/context/VortexModulesContext.js.map +1 -0
  55. package/dist/hooks/useInvitationFormLogic.d.mts +2 -0
  56. package/dist/hooks/useInvitationFormLogic.d.ts +2 -0
  57. package/dist/hooks/useInvitationFormLogic.js +300 -0
  58. package/dist/hooks/useInvitationFormLogic.js.map +1 -0
  59. package/dist/hooks/useInvitationFormLogic.mjs +276 -0
  60. package/dist/hooks/useInvitationFormLogic.mjs.map +1 -0
  61. package/dist/hooks/usePrefetchWidgetConfiguration.js +117 -0
  62. package/dist/hooks/usePrefetchWidgetConfiguration.js.map +1 -0
  63. package/dist/hooks/useThemeStyles.js +41 -0
  64. package/dist/hooks/useThemeStyles.js.map +1 -0
  65. package/dist/hooks/useVortexInvite.js +732 -0
  66. package/dist/hooks/useVortexInvite.js.map +1 -0
  67. package/dist/index-web.d.mts +93 -0
  68. package/dist/index-web.d.ts +93 -0
  69. package/dist/index-web.js +7397 -0
  70. package/dist/index-web.js.map +1 -0
  71. package/dist/index-web.mjs +7445 -0
  72. package/dist/index-web.mjs.map +1 -0
  73. package/dist/index.d.mts +656 -0
  74. package/dist/index.d.ts +656 -0
  75. package/dist/index.js +10206 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/index.mjs +10244 -0
  78. package/dist/index.mjs.map +1 -0
  79. package/dist/types/VortexClient.d.ts +106 -0
  80. package/dist/types/VortexClient.d.ts.map +1 -0
  81. package/dist/types/VortexDeferredLinks.d.ts +73 -0
  82. package/dist/types/VortexDeferredLinks.d.ts.map +1 -0
  83. package/dist/types/clientInfo.d.ts +5 -0
  84. package/dist/types/clientInfo.d.ts.map +1 -0
  85. package/dist/types/components/ContactsPickerModal.d.ts +18 -0
  86. package/dist/types/components/ContactsPickerModal.d.ts.map +1 -0
  87. package/dist/types/components/InviteFormCore.d.ts +166 -0
  88. package/dist/types/components/InviteFormCore.d.ts.map +1 -0
  89. package/dist/types/components/InviteFormMobile.d.ts +42 -0
  90. package/dist/types/components/InviteFormMobile.d.ts.map +1 -0
  91. package/dist/types/components/InviteFormWeb.d.ts +87 -0
  92. package/dist/types/components/InviteFormWeb.d.ts.map +1 -0
  93. package/dist/types/components/PlacedItemToolbar.d.ts +16 -0
  94. package/dist/types/components/PlacedItemToolbar.d.ts.map +1 -0
  95. package/dist/types/components/ShareButtons.d.ts +29 -0
  96. package/dist/types/components/ShareButtons.d.ts.map +1 -0
  97. package/dist/types/components/VrtxContactsImport.d.ts +14 -0
  98. package/dist/types/components/VrtxContactsImport.d.ts.map +1 -0
  99. package/dist/types/components/VrtxEmailInvitations.d.ts +31 -0
  100. package/dist/types/components/VrtxEmailInvitations.d.ts.map +1 -0
  101. package/dist/types/components/VrtxFindFriends.d.ts +25 -0
  102. package/dist/types/components/VrtxFindFriends.d.ts.map +1 -0
  103. package/dist/types/components/VrtxHeading.d.ts +6 -0
  104. package/dist/types/components/VrtxHeading.d.ts.map +1 -0
  105. package/dist/types/components/VrtxIncomingInvitations.d.ts +27 -0
  106. package/dist/types/components/VrtxIncomingInvitations.d.ts.map +1 -0
  107. package/dist/types/components/VrtxInvitationSuggestions.d.ts +25 -0
  108. package/dist/types/components/VrtxInvitationSuggestions.d.ts.map +1 -0
  109. package/dist/types/components/VrtxInviteContacts.d.ts +24 -0
  110. package/dist/types/components/VrtxInviteContacts.d.ts.map +1 -0
  111. package/dist/types/components/VrtxOutgoingInvitations.d.ts +27 -0
  112. package/dist/types/components/VrtxOutgoingInvitations.d.ts.map +1 -0
  113. package/dist/types/components/VrtxSearchBox.d.ts +28 -0
  114. package/dist/types/components/VrtxSearchBox.d.ts.map +1 -0
  115. package/dist/types/components/VrtxSelect.d.ts +6 -0
  116. package/dist/types/components/VrtxSelect.d.ts.map +1 -0
  117. package/dist/types/components/VrtxShareOptions.d.ts +41 -0
  118. package/dist/types/components/VrtxShareOptions.d.ts.map +1 -0
  119. package/dist/types/components/VrtxSubmit.d.ts +18 -0
  120. package/dist/types/components/VrtxSubmit.d.ts.map +1 -0
  121. package/dist/types/components/VrtxText.d.ts +8 -0
  122. package/dist/types/components/VrtxText.d.ts.map +1 -0
  123. package/dist/types/constants/mockData.d.ts +4 -0
  124. package/dist/types/constants/mockData.d.ts.map +1 -0
  125. package/dist/types/context/VortexModulesContext.d.ts +238 -0
  126. package/dist/types/context/VortexModulesContext.d.ts.map +1 -0
  127. package/dist/types/findFriends.js +10 -0
  128. package/dist/types/findFriends.js.map +1 -0
  129. package/dist/types/hooks/useInvitationFormLogic.d.ts +55 -0
  130. package/dist/types/hooks/useInvitationFormLogic.d.ts.map +1 -0
  131. package/dist/types/hooks/usePrefetchWidgetConfiguration.d.ts +39 -0
  132. package/dist/types/hooks/usePrefetchWidgetConfiguration.d.ts.map +1 -0
  133. package/dist/types/hooks/useThemeStyles.d.ts +35 -0
  134. package/dist/types/hooks/useThemeStyles.d.ts.map +1 -0
  135. package/dist/types/hooks/useVortexInvite.d.ts +86 -0
  136. package/dist/types/hooks/useVortexInvite.d.ts.map +1 -0
  137. package/dist/types/index-web.d.ts +23 -0
  138. package/dist/types/index-web.d.ts.map +1 -0
  139. package/dist/types/index.d.ts +23 -0
  140. package/dist/types/index.d.ts.map +1 -0
  141. package/dist/types/invitations.js +13 -0
  142. package/dist/types/invitations.js.map +1 -0
  143. package/dist/types/inviteContacts.js +14 -0
  144. package/dist/types/inviteContacts.js.map +1 -0
  145. package/dist/types/platformOperations.js +3 -0
  146. package/dist/types/platformOperations.js.map +1 -0
  147. package/dist/types/searchBox.js +11 -0
  148. package/dist/types/searchBox.js.map +1 -0
  149. package/dist/types/types/findFriends.d.ts +101 -0
  150. package/dist/types/types/findFriends.d.ts.map +1 -0
  151. package/dist/types/types/invitations.d.ts +301 -0
  152. package/dist/types/types/invitations.d.ts.map +1 -0
  153. package/dist/types/types/inviteContacts.d.ts +86 -0
  154. package/dist/types/types/inviteContacts.d.ts.map +1 -0
  155. package/dist/types/types/platformOperations.d.ts +185 -0
  156. package/dist/types/types/platformOperations.d.ts.map +1 -0
  157. package/dist/types/types/searchBox.d.ts +69 -0
  158. package/dist/types/types/searchBox.d.ts.map +1 -0
  159. package/dist/types/types/unfurlConfig.d.ts +34 -0
  160. package/dist/types/types/unfurlConfig.d.ts.map +1 -0
  161. package/dist/types/unfurlConfig.js +21 -0
  162. package/dist/types/unfurlConfig.js.map +1 -0
  163. package/dist/types/utils/analytics.d.ts +54 -0
  164. package/dist/types/utils/analytics.d.ts.map +1 -0
  165. package/dist/types/utils/configCache.d.ts +34 -0
  166. package/dist/types/utils/configCache.d.ts.map +1 -0
  167. package/dist/types/utils/contactUtils.d.ts +9 -0
  168. package/dist/types/utils/contactUtils.d.ts.map +1 -0
  169. package/dist/types/utils/featureWarnings.d.ts +56 -0
  170. package/dist/types/utils/featureWarnings.d.ts.map +1 -0
  171. package/dist/types/utils/formUtils.d.ts +93 -0
  172. package/dist/types/utils/formUtils.d.ts.map +1 -0
  173. package/dist/types/utils/gradientUtils.d.ts +67 -0
  174. package/dist/types/utils/gradientUtils.d.ts.map +1 -0
  175. package/dist/types/utils/invitationEvents.d.ts +21 -0
  176. package/dist/types/utils/invitationEvents.d.ts.map +1 -0
  177. package/dist/types/utils/moduleLoaders.d.ts +115 -0
  178. package/dist/types/utils/moduleLoaders.d.ts.map +1 -0
  179. package/dist/types/utils/moduleLoaders.web.d.ts +73 -0
  180. package/dist/types/utils/moduleLoaders.web.d.ts.map +1 -0
  181. package/dist/types/utils/nameUtils.d.ts +15 -0
  182. package/dist/types/utils/nameUtils.d.ts.map +1 -0
  183. package/dist/types/utils/themeUtils.d.ts +38 -0
  184. package/dist/types/utils/themeUtils.d.ts.map +1 -0
  185. package/dist/types/vortexInvite.d.ts +165 -0
  186. package/dist/types/vortexInvite.d.ts.map +1 -0
  187. package/dist/useInvitationFormLogic-Ct73M19B.d.mts +242 -0
  188. package/dist/useInvitationFormLogic-Ct73M19B.d.ts +242 -0
  189. package/dist/utils/analytics.js +92 -0
  190. package/dist/utils/analytics.js.map +1 -0
  191. package/dist/utils/configCache.js +68 -0
  192. package/dist/utils/configCache.js.map +1 -0
  193. package/dist/utils/contactUtils.d.mts +12 -0
  194. package/dist/utils/contactUtils.d.ts +12 -0
  195. package/dist/utils/contactUtils.js +37 -0
  196. package/dist/utils/contactUtils.js.map +1 -0
  197. package/dist/utils/contactUtils.mjs +12 -0
  198. package/dist/utils/contactUtils.mjs.map +1 -0
  199. package/dist/utils/featureWarnings.js +214 -0
  200. package/dist/utils/featureWarnings.js.map +1 -0
  201. package/dist/utils/formUtils.js +284 -0
  202. package/dist/utils/formUtils.js.map +1 -0
  203. package/dist/utils/gradientUtils.js +120 -0
  204. package/dist/utils/gradientUtils.js.map +1 -0
  205. package/dist/utils/invitationEvents.js +45 -0
  206. package/dist/utils/invitationEvents.js.map +1 -0
  207. package/dist/utils/moduleLoaders.js +275 -0
  208. package/dist/utils/moduleLoaders.js.map +1 -0
  209. package/dist/utils/moduleLoaders.web.js +72 -0
  210. package/dist/utils/moduleLoaders.web.js.map +1 -0
  211. package/dist/utils/nameUtils.js +51 -0
  212. package/dist/utils/nameUtils.js.map +1 -0
  213. package/dist/utils/themeUtils.js +141 -0
  214. package/dist/utils/themeUtils.js.map +1 -0
  215. package/dist/vortexInvite.js +83 -0
  216. package/dist/vortexInvite.js.map +1 -0
  217. package/package.json +21 -56
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVortexInvite.js","sourceRoot":"","sources":["../../src/hooks/useVortexInvite.ts"],"names":[],"mappings":"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","sourcesContent":["import { WidgetConfiguration, UnsignedData } from '@teamvortexsoftware/vortex-types';\nimport { useEffect, useMemo, useState, useCallback, useRef } from 'react';\nimport { Animated, Share, Linking, Platform } from 'react-native';\nimport { extractFeatureFlags, extractThemeColors } from '../utils/themeUtils';\nimport { useThemeStyles } from './useThemeStyles';\nimport { Attributes, VortexActionResult, VortexActionType } from '../vortexInvite';\nimport uuid from 'react-native-uuid';\nimport {\n extractFormConfiguration,\n mergeThemeAndComponentStyles,\n getEmailPlaceholder,\n getSubmitButtonLabel,\n hasGridLayout,\n hasEmailAndShareInSeparateColumns,\n getRoleOptions,\n} from '../utils/formUtils';\nimport { VortexClient, getClientInfo, VortexWidgetError } from '@teamvortexsoftware/vortex-shared-ui';\nimport { configCache } from '../utils/configCache';\nimport { AnalyticsClient, IAnalyticsClient, EventNames, type EventName } from '@teamvortexsoftware/analytics-client';\nimport {\n VortexAnalyticsEvent,\n GroupDTO,\n DEFAULT_ANALYTICS_URL,\n getDeviceInfo,\n extractForeignUserId,\n} from '../utils/analytics';\n\nexport interface UseVortexInviteOptions {\n componentId?: string;\n vortexApiUrl: string;\n isLoading?: boolean;\n jwt?: string;\n user?: string | UnsignedData | undefined;\n onSuccess?: (result: VortexActionResult) => void;\n onError?: (error: Error, type: VortexActionType) => void;\n group?: {\n name: string;\n type: string;\n id?: string;\n groupId?: string;\n };\n groups?: GroupDTO[];\n scope?: string;\n scopeType?: string;\n widgetConfiguration?: WidgetConfiguration; // Accept prefetched configuration\n // Analytics options\n analyticsBaseURL?: string; // Defaults to production collector\n onEvent?: (event: VortexAnalyticsEvent) => void; // Callback for analytics events\n analyticsSegmentation?: Record<string, any>; // Segmentation data for analytics\n // Internationalization\n locale?: string; // Locale code for i18n (e.g., \"es\", \"fr\", \"zh-TW\")\n}\n\nexport function useVortexInvite({\n componentId,\n vortexApiUrl,\n isLoading = false,\n jwt,\n user,\n onSuccess,\n onError,\n group,\n groups,\n scope,\n scopeType,\n widgetConfiguration: initialWidgetConfiguration,\n analyticsBaseURL,\n onEvent,\n analyticsSegmentation,\n locale,\n}: UseVortexInviteOptions) {\n // Check FIRST, before any hooks are called\n if (!componentId) {\n throw Error('[Vortex Invite] componentId is required to fetch configuration');\n }\n\n // Create effective groups with fallback logic: group > scope+scopeType\n const effectiveGroup = useMemo(() => {\n if (group) return group;\n if (scope && scopeType) {\n return { type: scopeType, groupId: scope, name: scope };\n }\n return undefined;\n }, [group, scope, scopeType]);\n // If user is provided, construct the insecure JWT token\n const effectiveJwt = useMemo(() => {\n if (jwt) return jwt;\n if (user) {\n if (typeof user === 'string') {\n return user;\n }\n const payload = { ...user, componentId };\n const jsonString = JSON.stringify(payload);\n const base64Encoded = Buffer.from(jsonString).toString('base64');\n return `raw-data:${base64Encoded}`;\n }\n return undefined;\n }, [jwt, user, componentId]);\n const vortexClient = useMemo(() => {\n const clientInfo = getClientInfo();\n const sessionId = uuid.v4() as string;\n return new VortexClient(vortexApiUrl, clientInfo.name, clientInfo.version, sessionId);\n }, [vortexApiUrl]);\n\n // Initialize from cache first, then fall back to initialWidgetConfiguration prop\n const cachedConfig = configCache.get(componentId);\n const [widgetConfiguration, setWidgetConfiguration] = useState<WidgetConfiguration | undefined>(\n cachedConfig || initialWidgetConfiguration\n );\n const [error, setError] = useState<{ message: string; code?: string; userMessage?: string; developerMessage?: string } | null>(null);\n const [fetching, setFetching] = useState(isLoading);\n const [loading, setLoading] = useState(!cachedConfig && !initialWidgetConfiguration); // Start as false if we have cached or prefetched config\n const [email, setEmail] = useState('');\n const [shareableLink, setShareableLink] = useState<string>();\n const [role, setRole] = useState<string | undefined>(undefined);\n const [inviteLoading, setInviteLoading] = useState(false);\n const [showSuccessMessage, setShowSuccessMessage] = useState(false);\n const opacity = new Animated.Value(0.3);\n\n // Analytics state\n const [deploymentId, setDeploymentId] = useState<string | null>(null);\n const [sessionId] = useState(() => uuid.v4() as string);\n const [widgetRenderTracked, setWidgetRenderTracked] = useState(false);\n const [formRenderTime, setFormRenderTime] = useState<number | null>(null);\n // Track when config has been fetched through VortexClient (which sets sessionAttestation)\n const [configFetchedViaClient, setConfigFetchedViaClient] = useState(false);\n\n // Create analytics client (memoized to avoid recreation)\n const analyticsClient = useMemo<IAnalyticsClient | null>(() => {\n if (!effectiveJwt) return null;\n const analyticsUrl = analyticsBaseURL || DEFAULT_ANALYTICS_URL;\n const clientInfo = getClientInfo();\n return new AnalyticsClient(analyticsUrl, effectiveJwt, sessionId, clientInfo.name, clientInfo.version);\n }, [effectiveJwt, analyticsBaseURL, sessionId]);\n\n // Compute effective groups for analytics\n const effectiveGroups = useMemo<GroupDTO[] | undefined>(() => {\n if (groups && groups.length > 0) return groups;\n if (effectiveGroup) {\n return [{\n type: effectiveGroup.type,\n id: effectiveGroup.groupId || effectiveGroup.id || '',\n name: effectiveGroup.name,\n }];\n }\n return undefined;\n }, [groups, effectiveGroup]);\n\n // Core event tracking function\n const trackEvent = useCallback(\n async (name: EventName, payload?: Record<string, any>) => {\n const event: VortexAnalyticsEvent = {\n name,\n widgetConfigurationId: widgetConfiguration?.id || '',\n deploymentId: deploymentId || '',\n environmentId: '', // Not currently used (matches web SDK)\n platform: Platform.OS, // 'ios' or 'android'\n timestamp: Math.floor(Date.now() / 1000), // Unix seconds\n sessionId,\n useragent: getDeviceInfo(),\n foreignUserId: extractForeignUserId(effectiveJwt),\n segmentation: analyticsSegmentation,\n payload,\n groups: effectiveGroups,\n };\n\n // Call user's onEvent callback\n if (onEvent) {\n onEvent(event);\n }\n\n // Send to analytics backend (fire-and-forget, non-blocking)\n if (analyticsClient && deploymentId && widgetConfiguration) {\n analyticsClient.track(event).catch(() => {\n // Silently ignore errors - analytics should never impact user experience\n });\n }\n },\n [\n widgetConfiguration,\n deploymentId,\n sessionId,\n effectiveJwt,\n analyticsSegmentation,\n effectiveGroups,\n onEvent,\n analyticsClient,\n ]\n );\n\n // Track widget render once per hook instance (on initial render only)\n // The flag resets when component unmounts, so remounting fires a new event (expected behavior)\n const trackWidgetRender = useCallback(() => {\n if (widgetRenderTracked) return;\n \n setWidgetRenderTracked(true);\n setFormRenderTime(Date.now());\n trackEvent(EventNames.INVITE_FORM_RENDER_SUCCEEDED);\n }, [widgetRenderTracked, trackEvent]);\n\n // Track widget error\n const trackWidgetError = useCallback(\n (errorMessage: string) => {\n trackEvent(EventNames.INVITE_FORM_RENDER_FAILED, { error: errorMessage });\n },\n [trackEvent]\n );\n\n // Track share link clicks\n const trackShareLinkClick = useCallback(\n (clickName: string) => {\n trackEvent(EventNames.SHARING_DESTINATION_BUTTON_CLICKED, { clickName });\n },\n [trackEvent]\n );\n\n // Track email field focus\n const trackEmailFieldFocus = useCallback(() => {\n const timestamp = formRenderTime ? Date.now() - formRenderTime : 0;\n trackEvent(EventNames.EMAIL_FIELD_FOCUSSED, { timestamp });\n }, [formRenderTime, trackEvent]);\n\n // Track email field blur\n const trackEmailFieldBlur = useCallback(() => {\n const timestamp = formRenderTime ? Date.now() - formRenderTime : 0;\n trackEvent(EventNames.EMAIL_FIELD_BLURRED, { timestamp });\n }, [formRenderTime, trackEvent]);\n\n // Track email validation\n const trackEmailValidation = useCallback(\n (emailValue: string, isValid: boolean) => {\n trackEvent(EventNames.EMAIL_SUBMISSION_VALIDATED, { email: emailValue, isValid });\n },\n [trackEvent]\n );\n\n // Track form submission\n const trackEmailInvitationsSubmitted = useCallback(\n (formData: Record<string, any>) => {\n trackEvent(EventNames.EMAIL_FIELD_SUBMISSION_SUCCEEDED, { formData });\n },\n [trackEvent]\n );\n\n // Track email validation error (now uses WIDGET_EMAIL_VALIDATION with error payload)\n const trackEmailValidationError = useCallback(\n (formData: Record<string, any>) => {\n trackEvent(EventNames.EMAIL_SUBMISSION_VALIDATED, { formData, hasError: true });\n },\n [trackEvent]\n );\n\n // Track email submit error\n const trackEmailSubmitError = useCallback(\n (errorMessage: string) => {\n trackEvent(EventNames.EMAIL_FIELD_SUBMISSION_FAILED, { error: errorMessage });\n },\n [trackEvent]\n );\n\n // Extract theme colors and feature flags using utility functions\n const themeColors = useMemo(() => extractThemeColors(widgetConfiguration), [widgetConfiguration]);\n\n // Extract form configuration\n const formConfig = useMemo(\n () => extractFormConfiguration(widgetConfiguration),\n [widgetConfiguration]\n );\n\n // Get base theme styles\n const baseThemeStyles = useThemeStyles(themeColors);\n\n // Merge theme styles with component-specific styles from form configuration\n const themeStyles = useMemo(\n () => mergeThemeAndComponentStyles(baseThemeStyles, themeColors, formConfig),\n [baseThemeStyles, themeColors, formConfig]\n );\n\n const options = useMemo(() => {\n return widgetConfiguration?.configuration?.props || {};\n }, [widgetConfiguration]);\n\n // Extract form layout information\n const formLayout = useMemo(\n () => ({\n emailPlaceholder: getEmailPlaceholder(formConfig),\n submitButtonLabel: getSubmitButtonLabel(formConfig),\n isGridLayout: hasGridLayout(formConfig),\n hasSeparateColumns: hasEmailAndShareInSeparateColumns(formConfig),\n formConfig,\n }),\n [formConfig]\n );\n\n // Extract role options and initialize default role\n const roleOptions = useMemo(() => getRoleOptions(formConfig), [formConfig]);\n useEffect(() => {\n if (!role && roleOptions.length > 0) {\n setRole(roleOptions[0]?.value);\n }\n }, [role, roleOptions]);\n\n const has = useMemo(() => {\n const flags = extractFeatureFlags(widgetConfiguration);\n console.log('[Vortex] Invite has', flags);\n return flags;\n }, [widgetConfiguration]);\n\n // Log the host only once when the hook mounts\n useEffect(() => {\n if (vortexApiUrl.indexOf('localhost') > -1) {\n console.warn('[Vortex] Invite Using localhost as host');\n }\n }, [vortexApiUrl]);\n\n // Loading animation effect (skip if we have prefetched configuration)\n useEffect(() => {\n // If we already have configuration, no need for loading animation\n if (initialWidgetConfiguration) {\n return;\n }\n\n const animation = Animated.loop(\n Animated.sequence([\n Animated.timing(opacity, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(opacity, {\n toValue: 0.3,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n );\n animation.start();\n\n setTimeout(() => {\n setLoading(false);\n animation.stop();\n }, 2000);\n }, [opacity, initialWidgetConfiguration]);\n\n // Fetch widget configuration (always fetch to get latest, but don't show loading if we have prefetched data)\n useEffect(() => {\n if (!effectiveJwt) {\n console.log('[Vortex] Invite JWT is required');\n return;\n }\n\n const fetchData = async () => {\n // Only show loading state if we don't have ANY configuration yet\n const shouldShowLoading = !widgetConfiguration;\n\n if (shouldShowLoading) {\n console.log('[Vortex] Invite Fetching Data (first load)...');\n setFetching(true);\n setLoading(true);\n } else {\n console.log('[Vortex] Invite Refreshing configuration in background...');\n }\n \n setError(null);\n\n try {\n const result = await vortexClient.getWidgetConfiguration(componentId, effectiveJwt, undefined, locale);\n\n if (result?.data?.widgetConfiguration) {\n const freshConfig = result.data.widgetConfiguration as unknown as WidgetConfiguration;\n setWidgetConfiguration(freshConfig);\n configCache.set(componentId, freshConfig); // Update shared cache\n \n // Mark that config was fetched via VortexClient (sessionAttestation is now set)\n setConfigFetchedViaClient(true);\n \n // Extract deploymentId from API response (CRITICAL for analytics)\n if (result.data.deploymentId) {\n setDeploymentId(result.data.deploymentId);\n console.log('[Vortex] Invite deploymentId:', result.data.deploymentId);\n }\n \n console.log(\n '[Vortex] Invite Successfully fetched widgetConfiguration',\n JSON.stringify(freshConfig)\n );\n } else {\n const error = 'No configuration data found.';\n console.error(`[Vortex] Invite ${error}`);\n throw new Error(error);\n }\n } catch (err) {\n // Check if this is a VortexWidgetError with structured error information\n if (VortexWidgetError.isVortexWidgetError(err)) {\n console.error('[Vortex] Invite Widget Error:', {\n code: err.code,\n userMessage: err.userMessage,\n developerMessage: err.developerMessage,\n context: err.context,\n statusCode: err.statusCode,\n });\n setError({\n message: err.userMessage || err.message,\n code: err.code,\n userMessage: err.userMessage,\n developerMessage: err.developerMessage,\n });\n } else if (err instanceof Error) {\n const fetchError = err as any;\n console.error('[Vortex] Invite Error Details:', {\n message: fetchError.message,\n status: (fetchError as Record<string, unknown>).status || 'unknown',\n statusText: (fetchError as Record<string, unknown>).statusText,\n body: (fetchError as Record<string, unknown>).body,\n stack: fetchError.stack,\n });\n setError({\n message: (err as Error).message || 'Something went wrong!',\n });\n } else {\n console.error('[Vortex] Invite Error', err);\n setError({\n message: 'Something went wrong!',\n });\n }\n } finally {\n if (shouldShowLoading) {\n setFetching(false);\n setLoading(false);\n }\n }\n };\n\n fetchData();\n }, [componentId, effectiveJwt, vortexClient, locale]); // Removed widgetConfiguration from deps to allow refetch\n\n // Prefetch the shareable invitation link to avoid UI delays when user taps Copy Link or QR Code\n // IMPORTANT: Only prefetch after config has been fetched via VortexClient, which sets sessionAttestation\n useEffect(() => {\n if (widgetConfiguration?.id && effectiveJwt && vortexClient && !shareableLink && configFetchedViaClient) {\n console.log('[Vortex] Prefetching shareable invitation link...');\n getShareableInviteLink().catch((error) => {\n console.warn('[Vortex] Failed to prefetch shareable link:', error);\n // Silent fail - user can still trigger it manually later\n });\n }\n }, [widgetConfiguration?.id, effectiveJwt, vortexClient, shareableLink, configFetchedViaClient]);\n\n const handleInviteClick = async (contentTokens?: Attributes): Promise<void> => {\n try {\n setInviteLoading(true);\n setShowSuccessMessage(false);\n if (!widgetConfiguration?.id) {\n console.log('[Vortex Invite] Widget configuration ID is required');\n return;\n }\n // const url = `${host}/api/v1/no-auth/components/widget-configuration/${widgetConfigurationId}/invite`; // TODO should we use options.widgetHost?.value ?\n console.log('[Vortex] Invite Sending invitation', {\n email,\n componentId,\n });\n if (!effectiveJwt) {\n throw new Error('[Vortex Invite] JWT is required');\n }\n const payload: any = {\n ...contentTokens,\n email: {\n value: email,\n type: 'email',\n },\n };\n if (role) {\n payload.role = {\n value: role,\n type: 'string',\n };\n }\n\n // Use groups parameter instead of adding group to payload\n const groups = effectiveGroup ? [{ type: effectiveGroup.type, id: effectiveGroup.groupId || effectiveGroup.id, name: effectiveGroup.name }] : undefined;\n\n const body = await vortexClient.createInvite(effectiveJwt, widgetConfiguration?.id, payload, 'email', groups);\n console.log('[Vortex] Invite Response', body);\n if (onSuccess) {\n onSuccess({\n type: 'invite',\n data: 'Email invite sent',\n });\n }\n setShowSuccessMessage(true);\n\n // Auto-hide success message after 5 seconds\n setTimeout(() => {\n setShowSuccessMessage(false);\n }, 5000);\n return;\n } catch (error) {\n console.error('[Vortex]', error);\n if (onError) {\n onError(error instanceof Error ? error : new Error(String(error)), 'invite');\n }\n throw error; // Re-throw the error to be caught by the component\n } finally {\n setInviteLoading(false);\n }\n };\n\n const getShareableLink = () => {\n return vortexClient.getShareableLinkFormatted();\n };\n\n /**\n * Create an invitation with internal ID target type.\n * Used by Find Friends component when user taps Connect.\n * Matches iOS SDK payload structure: { type: 'internal', value: { value, name, avatarUrl? } }\n */\n const createUserIdInvitation = async (\n userId: string,\n name?: string,\n avatarUrl?: string,\n metadata?: Record<string, unknown>\n ): Promise<void> => {\n if (!effectiveJwt) {\n throw new Error('[Vortex Invite] JWT is required');\n }\n if (!widgetConfiguration?.id) {\n throw new Error('[Vortex Invite] Widget configuration is required');\n }\n\n console.log('[Vortex] Creating user ID invitation', { userId, name, avatarUrl });\n\n // Build the target value object matching iOS SDK structure\n const targetValue: Record<string, string> = {\n value: userId,\n };\n if (name) {\n targetValue.name = name;\n }\n if (avatarUrl) {\n targetValue.avatarUrl = avatarUrl;\n }\n\n const payload = {\n internalId: {\n type: 'internal',\n value: targetValue,\n },\n };\n\n const groups = effectiveGroup\n ? [{ type: effectiveGroup.type, id: effectiveGroup.groupId || effectiveGroup.id, name: effectiveGroup.name }]\n : undefined;\n\n await vortexClient.createInvite(effectiveJwt, widgetConfiguration.id, payload, 'other', groups, undefined, metadata || undefined);\n console.log('[Vortex] Internal ID invitation created successfully');\n };\n\n const handleSmsShare = async () => {\n try {\n const template =\n widgetConfiguration?.configuration?.props?.['vortex.components.share.template.body']?.value;\n if (!template) throw new Error('No template available');\n const shareableLink = await getShareableInviteLink();\n if (!shareableLink) throw new Error('No shareable link available');\n const body = encodeURIComponent(template.replace(/{{vortex_share_link}}/g, shareableLink));\n const smsUrl = `sms:?body=${body}`;\n await Linking.openURL(smsUrl);\n } catch (error) {\n console.error('[Vortex] Failed to open SMS app:', error);\n if (onError) onError(error instanceof Error ? error : new Error(String(error)), 'share');\n }\n };\n\n const handleEmailShare = async () => {\n try {\n const template =\n widgetConfiguration?.configuration?.props?.['vortex.components.share.template.body']?.value;\n if (!template) throw new Error('No template available');\n const subject =\n widgetConfiguration?.configuration?.props?.[\n 'vortex.components.share.template.subject'\n ]?.value?.trim() || \"You're Invited\";\n const shareableLink = await getShareableInviteLink();\n if (!shareableLink) throw new Error('No shareable link available');\n const body = encodeURIComponent(template.replace(/{{vortex_share_link}}/g, shareableLink));\n const mailtoUrl = `mailto:?subject=${encodeURIComponent(subject)}&body=${body}`;\n await Linking.openURL(mailtoUrl);\n } catch (error) {\n console.error('[Vortex] Failed to open Email app:', error);\n if (onError) onError(error instanceof Error ? error : new Error(String(error)), 'share');\n }\n };\n\n const handleWhatsAppShare = async () => {\n try {\n const template =\n widgetConfiguration?.configuration?.props?.['vortex.components.share.template.body']?.value;\n if (!template) throw new Error('No template available');\n const shareableLink = await getShareableInviteLink();\n if (!shareableLink) throw new Error('No shareable link available');\n const message = encodeURIComponent(template.replace(/{{vortex_share_link}}/g, shareableLink));\n const whatsappUrl = `whatsapp://send?text=${message}`;\n await Linking.openURL(whatsappUrl).catch(() => {\n console.warn('WhatsApp not installed');\n });\n } catch (error) {\n console.error('[Vortex] Failed to open WhatsApp:', error);\n if (onError) onError(error instanceof Error ? error : new Error(String(error)), 'share');\n }\n };\n\n const getShareableInviteLink = async (\n contentTokens?: Attributes\n ): Promise<string | undefined> => {\n // if (this.isLoading || !this.vortex) {\n // return;\n // }\n if (!effectiveJwt || !widgetConfiguration?.id || !vortexClient) {\n return;\n }\n if (shareableLink) {\n return shareableLink;\n }\n\n // Use groups parameter for shareable invite as well\n const groups = effectiveGroup ? [{ type: effectiveGroup.type, id: effectiveGroup.groupId || effectiveGroup.id, name: effectiveGroup.name }] : undefined;\n const invite = await vortexClient.createShareableInvite(effectiveJwt, widgetConfiguration.id, groups);\n\n if (\n !invite ||\n !invite.data ||\n !invite.data.invitation.id ||\n !invite.data.invitation.shortLink\n ) {\n console.error('No shareable link found');\n onError?.(new Error('No shareable link found'), 'share');\n // this.error = {\n // message: 'No sharable link found',\n // };\n // this.host.requestUpdate();\n return;\n }\n const link = invite.data.invitation.shortLink;\n setShareableLink(link);\n return link;\n };\n\n const handleShareLink = async () => {\n try {\n const link = await getShareableInviteLink();\n if (!link) {\n throw new Error('No shareable link available');\n }\n\n const template = widgetConfiguration?.configuration?.props?.[\n 'vortex.components.share.template.body'\n ]?.value as string | undefined;\n const subject = (\n widgetConfiguration?.configuration?.props?.['vortex.components.share.template.subject']?.value as\n | string\n | undefined\n )?.trim();\n\n // Compose message\n let message = '';\n if (typeof template === 'string' && template.length > 0) {\n if (template.includes('{{vortex_share_link}}')) {\n message = template.replace(/{{vortex_share_link}}/g, link);\n } else {\n message = `${template}${template.endsWith(' ') ? '' : ' '}${link}`;\n }\n } else {\n message = link;\n }\n\n // Informative log about iOS share sheet branding\n if (Platform.OS === 'ios') {\n console.log(\n '[Vortex] iOS share sheet branding note: The icon/name come from the host app bundle; link preview (if any) is pulled from the shared URL\\'s Open Graph/Twitter meta tags. Customizing the header/logo via RN Share is not supported.'\n );\n }\n\n const content: any = {\n message,\n url: link, // iOS will use this for rich link preview when available\n title: subject || 'Share Invite Link',\n // Some platforms read subject from content\n ...(subject ? { subject } : {}),\n };\n\n const options: any = Platform.select({\n android: {\n dialogTitle: subject || 'Share Invite Link',\n },\n ios: {\n // Older RN versions used options.subject; keep for compatibility\n ...(subject ? { subject } : {}),\n },\n default: {},\n });\n\n await Share.share(content, options);\n\n console.log('[Vortex] handleShareLink', 'The invite link has been shared.');\n onSuccess?.({ type: 'share', data: 'Sharable link used' });\n } catch (error) {\n console.error('[Vortex] Failed to share link:', error);\n onError?.(error instanceof Error ? error : new Error(String(error)), 'share');\n }\n };\n\n const handleCopyLink = async () => {\n try {\n const shareableLink = await getShareableInviteLink();\n if (!shareableLink) {\n throw new Error('No shareable link available');\n }\n \n // Try expo-clipboard first, then @react-native-clipboard/clipboard, then web clipboard\n let copied = false;\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const expoClipboard = require('expo-clipboard');\n await expoClipboard.setStringAsync(shareableLink);\n copied = true;\n } catch (e) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rnClipboard = require('@react-native-clipboard/clipboard');\n rnClipboard.default.setString(shareableLink);\n copied = true;\n } catch (e2) {\n // Fall back to web clipboard API\n if (typeof navigator !== 'undefined' && navigator.clipboard?.writeText) {\n await navigator.clipboard.writeText(shareableLink);\n copied = true;\n }\n }\n }\n \n if (!copied) {\n throw new Error('No clipboard implementation available');\n }\n \n console.log('[Vortex] handleCopyLink', 'The invite link has been copied.');\n if (onSuccess) {\n onSuccess({\n type: 'share',\n data: 'Sharable copied',\n });\n }\n } catch (error) {\n console.error('[Vortex] Failed to copy link:', error);\n if (onError) {\n onError(error instanceof Error ? error : new Error(String(error)), 'share');\n }\n }\n };\n\n // Contacts import: dynamically use expo-contacts when available (iOS & Android)\n const fetchContactsWithEmailsIOS = async (): Promise<Array<{ id: string; name: string; emails: string[]; imageUri?: string }>> => {\n try {\n let Contacts: any = null;\n try {\n // Dynamic require so the library does not hard depend on expo-contacts\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n Contacts = require('expo-contacts');\n } catch (e) {\n throw new Error('Contacts feature is not available. Please ensure expo-contacts is installed.');\n }\n\n // First check current permission status\n let currentStatus: string | undefined;\n try {\n const currentPerm = await (Contacts.getPermissionsAsync\n ? Contacts.getPermissionsAsync()\n : Contacts.getPermissionAsync?.());\n currentStatus = currentPerm?.status;\n } catch (permErr) {\n console.warn('[Vortex] Failed to check contacts permission:', permErr);\n }\n\n // If already denied, inform user they need to go to Settings\n if (currentStatus === 'denied') {\n throw new Error('Contacts access was denied. Please enable Contacts access in your device Settings to import contacts.');\n }\n\n // Request permission (either undetermined or checking again)\n let status: string | undefined;\n try {\n const perm = await (Contacts.requestPermissionsAsync\n ? Contacts.requestPermissionsAsync()\n : Contacts.requestPermissionAsync?.());\n status = perm?.status;\n } catch (permErr) {\n console.warn('[Vortex] Contacts permission request failed:', permErr);\n throw new Error('Failed to request contacts permission. Please try again.');\n }\n\n if (status === 'denied') {\n throw new Error('Contacts access was denied. Please enable Contacts access in your device Settings to import contacts.');\n }\n\n if (status !== 'granted') {\n throw new Error('Contacts access is required to import contacts.');\n }\n\n // Fetch contacts with emails and images\n const fields = Contacts.Fields\n ? [Contacts.Fields.Emails, Contacts.Fields.Image]\n : ['emails', 'image'];\n const args: any = { fields, pageSize: 500 };\n if (Contacts.SortTypes?.FirstName) {\n args.sort = Contacts.SortTypes.FirstName;\n }\n const result = await Contacts.getContactsAsync(args);\n const data: any[] = result?.data || [];\n if (!Array.isArray(data) || data.length === 0) {\n return [];\n }\n\n const normalizeEmail = (e: any) => e?.email || e?.address || (typeof e === 'string' ? e : undefined);\n const items: Array<{ id: string; name: string; emails: string[]; imageUri?: string }> = [];\n for (const c of data) {\n const emailsSrc = (c?.emails || c?.emailAddresses || []) as any[];\n const emails = emailsSrc.map(normalizeEmail).filter(Boolean) as string[];\n if (emails.length > 0) {\n const name = (c?.name || `${c?.firstName || ''} ${c?.lastName || ''}`)?.trim() || 'Unknown';\n const imageUri = c?.image?.uri || c?.imageAvailable ? c?.image?.uri : undefined;\n items.push({ id: String(c?.id ?? Math.random()), name, emails, imageUri });\n }\n }\n return items;\n } catch (err) {\n // Re-throw errors with messages so UI can display them properly\n if (err instanceof Error) {\n throw err;\n }\n console.error('[Vortex] Failed to fetch contacts:', err);\n throw new Error('An unexpected error occurred while accessing contacts.');\n }\n };\n\n return {\n widgetConfiguration,\n error,\n fetching,\n loading,\n email,\n setEmail,\n role,\n setRole,\n roleOptions,\n opacity,\n themeColors,\n themeStyles,\n has,\n options,\n inviteLoading,\n showSuccessMessage,\n handleInviteClick,\n handleShareLink,\n handleCopyLink,\n handleSmsShare,\n handleEmailShare,\n handleWhatsAppShare,\n getShareableLink,\n getShareableInviteLink,\n createUserIdInvitation,\n formLayout,\n fetchContactsWithEmailsIOS,\n // Analytics tracking functions\n trackWidgetRender,\n trackWidgetError,\n trackShareLinkClick,\n trackEmailFieldFocus,\n trackEmailFieldBlur,\n trackEmailValidation,\n trackEmailInvitationsSubmitted,\n trackEmailValidationError,\n trackEmailSubmitError,\n };\n}\n"]}
@@ -0,0 +1,93 @@
1
+ import react__default from 'react';
2
+ import { c as IconRendererProps } from './InviteFormCore-D4HkMMo0.mjs';
3
+ export { f as IconName, e as InvitationFormCoreProps, d as InviteFormCore } from './InviteFormCore-D4HkMMo0.mjs';
4
+ export { C as Contact, P as PlatformOperations, V as ViewType, u as useInvitationFormLogic } from './useInvitationFormLogic-Ct73M19B.mjs';
5
+ export { MOCK_CONTACTS, MOCK_GOOGLE_CONTACTS } from './constants/mockData.mjs';
6
+ export { filterContacts } from './utils/contactUtils.mjs';
7
+
8
+ /**
9
+ * InviteFormWeb - Web-compatible version of InviteFormMobile
10
+ *
11
+ * This component is designed for web preview environments where native dependencies
12
+ * like react-native-vector-icons are not available. It accepts a custom icon renderer
13
+ * that should use FontAwesome5-compatible icon libraries to match the mobile experience.
14
+ *
15
+ * The mobile InviteFormMobile uses FontAwesome5 icons. To ensure consistency between
16
+ * preview and mobile, use FontAwesome5 equivalents in your web icon library.
17
+ *
18
+ * @example
19
+ * // Using with React Icons (FontAwesome5)
20
+ * import { FaTimes, FaArrowLeft, FaLink, FaShareAlt, FaAddressBook, FaEnvelope, FaGoogle } from 'react-icons/fa';
21
+ *
22
+ * const iconComponents = {
23
+ * 'close': FaTimes,
24
+ * 'arrow-back': FaArrowLeft,
25
+ * 'link': FaLink,
26
+ * 'share': FaShareAlt,
27
+ * 'import-contacts': FaAddressBook,
28
+ * 'email': FaEnvelope,
29
+ * 'google': FaGoogle,
30
+ * };
31
+ *
32
+ * const renderIcon = ({ name, size, color }) => {
33
+ * const IconComponent = iconComponents[name];
34
+ * if (!IconComponent) return null;
35
+ * return <IconComponent style={{ fontSize: size, color }} />;
36
+ * };
37
+ *
38
+ * <InviteFormWeb renderIcon={renderIcon} />
39
+ */
40
+ interface ComponentInfo {
41
+ id: string;
42
+ type: string;
43
+ element: HTMLElement | null;
44
+ styles: react__default.CSSProperties;
45
+ content?: string;
46
+ }
47
+ interface InvitationFormPreviewProps {
48
+ /**
49
+ * Function to render icons - allows web-compatible icon libraries to be used
50
+ * Must handle all icon names and should use FontAwesome5 equivalents for consistency:
51
+ * 'close' (times), 'arrow-back' (arrow-left), 'link', 'share' (share-alt),
52
+ * 'import-contacts' (address-book), 'email' (envelope), 'google'
53
+ */
54
+ renderIcon: (props: IconRendererProps) => react__default.ReactNode;
55
+ /**
56
+ * Optional font family override
57
+ */
58
+ fontFamily?: string;
59
+ /**
60
+ * Widget configuration containing component settings
61
+ */
62
+ widgetConfiguration?: any;
63
+ /**
64
+ * Whether edit mode is enabled (for hover highlighting)
65
+ */
66
+ isEditMode?: boolean;
67
+ /**
68
+ * Whether a drag is currently active (to show drop zones)
69
+ */
70
+ isDragging?: boolean;
71
+ /**
72
+ * Callback when a component is selected in edit mode
73
+ */
74
+ onComponentSelect?: (componentInfo: ComponentInfo) => void;
75
+ /**
76
+ * Callback when a palette item is dropped onto a component
77
+ */
78
+ onDrop?: (componentInfo: ComponentInfo, droppedItem: any) => void;
79
+ /**
80
+ * Callbacks for setting/clearing drop targets (for Redux integration)
81
+ */
82
+ onSetDropTarget?: (target: {
83
+ elementId: string;
84
+ elementType: string;
85
+ position: string;
86
+ rowId?: string;
87
+ insertionIndex?: number;
88
+ }) => void;
89
+ onClearDropTarget?: () => void;
90
+ }
91
+ declare function InviteFormWeb({ renderIcon, fontFamily, widgetConfiguration, isEditMode, isDragging, onComponentSelect, onDrop, onSetDropTarget, onClearDropTarget, }: InvitationFormPreviewProps): react__default.JSX.Element;
92
+
93
+ export { type ComponentInfo, IconRendererProps, InviteFormWeb as InvitationFormPreview, type InvitationFormPreviewProps, InviteFormWeb };
@@ -0,0 +1,93 @@
1
+ import react__default from 'react';
2
+ import { c as IconRendererProps } from './InviteFormCore-D9oUCbu7.js';
3
+ export { f as IconName, e as InvitationFormCoreProps, d as InviteFormCore } from './InviteFormCore-D9oUCbu7.js';
4
+ export { C as Contact, P as PlatformOperations, V as ViewType, u as useInvitationFormLogic } from './useInvitationFormLogic-Ct73M19B.js';
5
+ export { MOCK_CONTACTS, MOCK_GOOGLE_CONTACTS } from './constants/mockData.js';
6
+ export { filterContacts } from './utils/contactUtils.js';
7
+
8
+ /**
9
+ * InviteFormWeb - Web-compatible version of InviteFormMobile
10
+ *
11
+ * This component is designed for web preview environments where native dependencies
12
+ * like react-native-vector-icons are not available. It accepts a custom icon renderer
13
+ * that should use FontAwesome5-compatible icon libraries to match the mobile experience.
14
+ *
15
+ * The mobile InviteFormMobile uses FontAwesome5 icons. To ensure consistency between
16
+ * preview and mobile, use FontAwesome5 equivalents in your web icon library.
17
+ *
18
+ * @example
19
+ * // Using with React Icons (FontAwesome5)
20
+ * import { FaTimes, FaArrowLeft, FaLink, FaShareAlt, FaAddressBook, FaEnvelope, FaGoogle } from 'react-icons/fa';
21
+ *
22
+ * const iconComponents = {
23
+ * 'close': FaTimes,
24
+ * 'arrow-back': FaArrowLeft,
25
+ * 'link': FaLink,
26
+ * 'share': FaShareAlt,
27
+ * 'import-contacts': FaAddressBook,
28
+ * 'email': FaEnvelope,
29
+ * 'google': FaGoogle,
30
+ * };
31
+ *
32
+ * const renderIcon = ({ name, size, color }) => {
33
+ * const IconComponent = iconComponents[name];
34
+ * if (!IconComponent) return null;
35
+ * return <IconComponent style={{ fontSize: size, color }} />;
36
+ * };
37
+ *
38
+ * <InviteFormWeb renderIcon={renderIcon} />
39
+ */
40
+ interface ComponentInfo {
41
+ id: string;
42
+ type: string;
43
+ element: HTMLElement | null;
44
+ styles: react__default.CSSProperties;
45
+ content?: string;
46
+ }
47
+ interface InvitationFormPreviewProps {
48
+ /**
49
+ * Function to render icons - allows web-compatible icon libraries to be used
50
+ * Must handle all icon names and should use FontAwesome5 equivalents for consistency:
51
+ * 'close' (times), 'arrow-back' (arrow-left), 'link', 'share' (share-alt),
52
+ * 'import-contacts' (address-book), 'email' (envelope), 'google'
53
+ */
54
+ renderIcon: (props: IconRendererProps) => react__default.ReactNode;
55
+ /**
56
+ * Optional font family override
57
+ */
58
+ fontFamily?: string;
59
+ /**
60
+ * Widget configuration containing component settings
61
+ */
62
+ widgetConfiguration?: any;
63
+ /**
64
+ * Whether edit mode is enabled (for hover highlighting)
65
+ */
66
+ isEditMode?: boolean;
67
+ /**
68
+ * Whether a drag is currently active (to show drop zones)
69
+ */
70
+ isDragging?: boolean;
71
+ /**
72
+ * Callback when a component is selected in edit mode
73
+ */
74
+ onComponentSelect?: (componentInfo: ComponentInfo) => void;
75
+ /**
76
+ * Callback when a palette item is dropped onto a component
77
+ */
78
+ onDrop?: (componentInfo: ComponentInfo, droppedItem: any) => void;
79
+ /**
80
+ * Callbacks for setting/clearing drop targets (for Redux integration)
81
+ */
82
+ onSetDropTarget?: (target: {
83
+ elementId: string;
84
+ elementType: string;
85
+ position: string;
86
+ rowId?: string;
87
+ insertionIndex?: number;
88
+ }) => void;
89
+ onClearDropTarget?: () => void;
90
+ }
91
+ declare function InviteFormWeb({ renderIcon, fontFamily, widgetConfiguration, isEditMode, isDragging, onComponentSelect, onDrop, onSetDropTarget, onClearDropTarget, }: InvitationFormPreviewProps): react__default.JSX.Element;
92
+
93
+ export { type ComponentInfo, IconRendererProps, InviteFormWeb as InvitationFormPreview, type InvitationFormPreviewProps, InviteFormWeb };