@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":"InviteFormCore.js","sourceRoot":"","sources":["../../src/components/InviteFormCore.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactNode, useState, useEffect, useCallback } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TextInput,\n TouchableOpacity,\n ScrollView,\n ActivityIndicator,\n Linking,\n Platform,\n ViewStyle,\n Image,\n} from 'react-native';\nimport { useInvitationFormLogic } from '../hooks/useInvitationFormLogic';\nimport { PlatformOperations } from '../types/platformOperations';\nimport { FindFriendsConfig } from '../types/findFriends';\nimport {\n IncomingInvitationsConfig,\n OutgoingInvitationsConfig,\n InvitationSuggestionsConfig,\n} from '../types/invitations';\nimport { InviteContactsConfig } from '../types/inviteContacts';\nimport { SearchBoxConfig } from '../types/searchBox';\nimport { MOCK_GOOGLE_CONTACTS } from '../constants/mockData';\nimport { filterContacts } from '../utils/contactUtils';\nimport type { Contact } from '../hooks/useInvitationFormLogic';\nimport { VrtxShareOptions } from './VrtxShareOptions';\nimport { VrtxContactsImport } from './VrtxContactsImport';\nimport { VrtxEmailInvitations } from './VrtxEmailInvitations';\nimport { VrtxFindFriends } from './VrtxFindFriends';\nimport { VrtxIncomingInvitations } from './VrtxIncomingInvitations';\nimport { VrtxOutgoingInvitations } from './VrtxOutgoingInvitations';\nimport { VrtxInvitationSuggestions } from './VrtxInvitationSuggestions';\nimport { VrtxInviteContacts } from './VrtxInviteContacts';\nimport { VrtxHeading } from './VrtxHeading';\nimport { VrtxText } from './VrtxText';\nimport { VrtxSelect } from './VrtxSelect';\nimport { VrtxSubmit } from './VrtxSubmit';\nimport { VrtxSearchBox } from './VrtxSearchBox';\nimport { usePlacedItemToolbar } from './PlacedItemToolbar';\n\nconst isWeb = Platform.OS === 'web';\n\n// Parse CSS linear-gradient to extract first color for fallback\nfunction parseGradientFirstColor(gradientString: string): string | null {\n if (!gradientString || !gradientString.includes('linear-gradient')) {\n return null;\n }\n\n const stopsRegex = /(rgba?\\([^)]+\\)|#[0-9a-fA-F]{3,8}|[a-z]+)\\s+(\\d+)%/i;\n const match = stopsRegex.exec(gradientString);\n\n if (match) {\n return match[1].trim();\n }\n\n return null;\n}\n\n// Button wrapper component that handles gradients on web, solid color fallback on native\ninterface ButtonWrapperProps {\n children: React.ReactNode;\n style: ViewStyle | ViewStyle[];\n gradientString: string | null;\n onPress?: () => void;\n disabled?: boolean;\n wrapperStyle?: ViewStyle | ViewStyle[];\n}\n\nconst ButtonWrapper: React.FC<ButtonWrapperProps> = ({\n children,\n style,\n gradientString,\n onPress,\n disabled,\n wrapperStyle,\n}) => {\n const styleArray = Array.isArray(style) ? style : [style];\n\n // On web, use CSS gradients directly\n if (gradientString && isWeb) {\n return (\n <TouchableOpacity\n style={[wrapperStyle, ...styleArray, { background: gradientString } as any]}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n >\n {children}\n </TouchableOpacity>\n );\n }\n\n // On native, use first color from gradient as solid background\n const fallbackColor = gradientString ? parseGradientFirstColor(gradientString) : null;\n const finalStyle = fallbackColor\n ? [wrapperStyle, ...styleArray, { backgroundColor: fallbackColor }]\n : [wrapperStyle, ...styleArray];\n\n return (\n <TouchableOpacity style={finalStyle} onPress={onPress} disabled={disabled} activeOpacity={0.7}>\n {children}\n </TouchableOpacity>\n );\n};\n\nexport type IconName =\n | 'close'\n | 'arrow-back'\n | 'link'\n | 'share'\n | 'import-contacts'\n | 'email'\n | 'google'\n | 'x-twitter'\n | 'instagram'\n | 'sms'\n | 'whatsapp'\n | 'line'\n | 'qr-code'\n | 'telegram'\n | 'discord'\n | 'facebook-messenger'\n | 'search';\n\nexport interface IconRendererProps {\n name: IconName;\n size: number;\n color: string;\n opacity?: number;\n}\n\nexport interface ComponentInfo {\n id: string;\n type: string; // 'button', 'text', 'input', etc.\n element: HTMLElement | null;\n styles: React.CSSProperties;\n content?: string;\n droppedItem?: any; // Data about the dropped item, if applicable\n}\n\nexport interface InvitationFormCoreProps {\n /**\n * Function to render icons - allows different icon libraries to be used\n */\n renderIcon: (props: IconRendererProps) => ReactNode;\n\n /**\n * Function to render QR code - allows platform-specific QR libraries to be used\n * - Native: uses react-native-qrcode-svg\n * - Web: uses react-qr-code\n */\n renderQRCode?: (props: { value: string; size: number }) => ReactNode;\n\n /**\n * Platform-specific operations (clipboard, share, close)\n */\n platformOperations: PlatformOperations;\n\n /**\n * Font family to use for text\n */\n fontFamily?: string;\n\n /**\n * Container style overrides\n */\n containerStyle?: Record<string, any>;\n\n /**\n * Widget configuration containing component settings\n */\n widgetConfiguration?: any;\n\n /**\n * Whether edit mode is enabled (for hover highlighting and drag-drop)\n */\n isEditMode?: boolean;\n\n /**\n * Callback when a component is selected in edit mode\n */\n onComponentSelect?: (componentInfo: ComponentInfo) => void;\n\n /**\n * Callback when a palette item is dropped onto a component\n */\n onDrop?: (componentInfo: ComponentInfo, droppedItem: any) => void;\n\n /**\n * Callbacks for setting/clearing drop targets (for Redux integration)\n */\n onSetDropTarget?: (target: {\n elementId: string;\n elementType: string;\n position: string;\n rowId?: string;\n insertionIndex?: number;\n }) => void;\n onClearDropTarget?: () => void;\n\n /**\n * Function to fetch the shareable invitation link for QR code\n */\n getShareableInviteLink?: () => Promise<string | undefined>;\n\n /**\n * Whether a drag is currently active (to show drop zones)\n */\n isDragging?: boolean;\n\n /**\n * Callback when a component is deleted in edit mode\n */\n onComponentDelete?: (componentId: string, componentType: string) => void;\n\n // Analytics callbacks (optional - no-op for preview mode)\n /**\n * Track share link click events\n */\n onShareLinkClick?: (clickName: string) => void;\n\n /**\n * Track email field focus events\n */\n onEmailFieldFocus?: () => void;\n\n /**\n * Track email field blur events\n */\n onEmailFieldBlur?: () => void;\n\n /**\n * Track email validation events\n */\n onEmailValidation?: (email: string, isValid: boolean) => void;\n\n /**\n * Track email invitations submitted events\n */\n onEmailInvitationsSubmitted?: (formData: Record<string, any>) => void;\n\n /**\n * Track email validation error events\n */\n onEmailValidationError?: (formData: Record<string, any>) => void;\n\n /**\n * Track email submit error events\n */\n onEmailSubmitError?: (error: string) => void;\n\n /**\n * Configuration for the Find Friends feature.\n * When provided, enables the Find Friends component to display\n * contacts with Connect buttons.\n */\n findFriendsConfig?: FindFriendsConfig;\n\n /**\n * Function to create an invitation with internal ID target type.\n * Called when user taps Connect and the onConnect callback returns true.\n */\n createUserIdInvitation?: (userId: string, name?: string, avatarUrl?: string, metadata?: Record<string, unknown>) => Promise<void>;\n\n /**\n * Configuration for the Incoming Invitations feature.\n * When provided, enables the Incoming Invitations component to display\n * invitations the user has received with Accept/Delete buttons.\n */\n incomingInvitationsConfig?: IncomingInvitationsConfig;\n\n /**\n * Configuration for the Outgoing Invitations feature.\n * When provided, enables the Outgoing Invitations component to display\n * invitations the user has sent with a Cancel button.\n */\n outgoingInvitationsConfig?: OutgoingInvitationsConfig;\n\n /**\n * Configuration for the Invitation Suggestions feature.\n * When provided, enables the Invitation Suggestions component to display\n * \"People you may know\" with Invite and Dismiss buttons.\n */\n invitationSuggestionsConfig?: InvitationSuggestionsConfig;\n\n /**\n * Configuration for the Invite Contacts feature.\n * When provided, enables the Invite Contacts component to display\n * a list of contacts that can be invited via SMS.\n */\n inviteContactsConfig?: InviteContactsConfig;\n\n /**\n * Configuration for the Search Box feature.\n * When provided, enables the Search Box component with a search input,\n * search button, and results list with Connect buttons.\n */\n searchBoxConfig?: SearchBoxConfig;\n\n /**\n * API URL for server operations (e.g., fetching outgoing invitations)\n */\n apiUrl: string;\n\n /**\n * JWT token for authentication\n */\n jwt: string;\n\n}\n\nexport function InviteFormCore({\n renderIcon,\n renderQRCode,\n platformOperations,\n fontFamily = '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif',\n containerStyle = {},\n widgetConfiguration,\n isEditMode = false,\n isDragging = false,\n onComponentSelect,\n onDrop,\n onSetDropTarget,\n onClearDropTarget,\n onComponentDelete,\n getShareableInviteLink,\n // Analytics callbacks (optional - no-op for preview mode)\n onShareLinkClick,\n onEmailFieldFocus,\n onEmailFieldBlur,\n onEmailValidation,\n onEmailInvitationsSubmitted,\n onEmailValidationError,\n onEmailSubmitError,\n // Find Friends configuration\n findFriendsConfig,\n createUserIdInvitation,\n // Incoming/Outgoing Invitations configuration\n incomingInvitationsConfig,\n outgoingInvitationsConfig,\n // Invitation Suggestions configuration\n invitationSuggestionsConfig,\n // Invite Contacts configuration\n inviteContactsConfig,\n // Search Box configuration\n searchBoxConfig,\n // API configuration\n apiUrl,\n jwt,\n}: InvitationFormCoreProps) {\n // Get the form structure from widget configuration\n const getFormStructure = () => {\n try {\n const formData = widgetConfiguration?.configuration?.props?.['vortex.components.form']?.value;\n if (formData && typeof formData === 'object' && formData.root) {\n return formData.root;\n }\n } catch (err) {\n console.error('[InviteFormCore] Failed to parse form structure:', err);\n }\n return null;\n };\n\n const formStructure = getFormStructure();\n\n if (!formStructure) {\n console.error(\n '[InviteFormCore] No form structure found in widget configuration. ' +\n 'The widget may not have a form configured, or the configuration format is unexpected. ' +\n 'Expected path: configuration.props[\"vortex.components.form\"].value.root'\n );\n }\n\n // Extract form title from widget configuration (mobile-specific key takes priority)\n const resolvedTitle =\n formStructure?.settings?.customizations?.['mobile.formTitle']?.textContent ||\n formStructure?.settings?.customizations?.formTitle?.textContent ||\n null;\n\n // Extract title theme styles from root theme options\n const resolvedTitleStyle = (() => {\n const themeOptions = formStructure?.theme?.options;\n if (!Array.isArray(themeOptions)) return undefined;\n const getVal = (key: string) => themeOptions.find((o: any) => o.key === key)?.value || undefined;\n const color = getVal('--vrtx-form-title-color');\n const fontSize = getVal('--vrtx-form-title-font-size');\n const fontWeight = getVal('--vrtx-form-title-font-weight');\n const fontFamily = getVal('--vrtx-form-title-font-family');\n if (!color && !fontSize && !fontWeight && !fontFamily) return undefined;\n return {\n ...(color && { color }),\n ...(fontSize && { fontSize: parseFloat(fontSize) || undefined }),\n ...(fontWeight && { fontWeight }),\n ...(fontFamily && { fontFamily }),\n };\n })();\n\n // Helper function to find email invitations block in form structure\n const findEmailInvitationsBlock = (): any => {\n if (!formStructure) return null;\n\n const searchChildren = (children: any[]): any => {\n if (!Array.isArray(children)) return null;\n\n for (const child of children) {\n if (\n child.type === 'block' &&\n child.subtype === 'vrtx-email-invitations' &&\n child.hidden !== true\n ) {\n return child;\n }\n if (child.children) {\n const found = searchChildren(child.children);\n if (found) return found;\n }\n }\n return null;\n };\n\n if (formStructure.children) {\n return searchChildren(formStructure.children);\n }\n return null;\n };\n\n const emailInvitationsBlock = findEmailInvitationsBlock();\n\n // Helper function to find submit button block in form structure\n const findSubmitButtonBlock = (): any => {\n if (!formStructure) return null;\n\n const searchChildren = (children: any[]): any => {\n if (!Array.isArray(children)) return null;\n\n for (const child of children) {\n if (child.type === 'block' && child.subtype === 'vrtx-submit') {\n return child;\n }\n if (child.children) {\n const found = searchChildren(child.children);\n if (found) return found;\n }\n }\n return null;\n };\n\n if (formStructure.children) {\n return searchChildren(formStructure.children);\n }\n return null;\n };\n\n const submitButtonBlock = findSubmitButtonBlock();\n\n // Helper function to find contacts-import block in form structure\n const findContactsImportBlock = (): any => {\n if (!formStructure) return null;\n\n const searchChildren = (children: any[]): any => {\n if (!Array.isArray(children)) return null;\n\n for (const child of children) {\n if (child.type === 'block' && child.subtype === 'vrtx-contacts-import') {\n return child;\n }\n if (child.children) {\n const found = searchChildren(child.children);\n if (found) return found;\n }\n }\n return null;\n };\n\n if (formStructure.children) {\n return searchChildren(formStructure.children);\n }\n return null;\n };\n\n const contactsImportBlock = findContactsImportBlock();\n\n // Helper to get customization text from contacts-import block\n const getContactsCustomization = (key: string, defaultValue: string): string => {\n const textContent = contactsImportBlock?.settings?.customizations?.[key]?.textContent;\n if (textContent === null || textContent === undefined) {\n return defaultValue;\n }\n return textContent;\n };\n\n // Extract styles from email invitations block for \"Add by Email\" button\n const emailInvitationsStyle = emailInvitationsBlock?.style || {};\n\n // Extract gradient string and fallback color\n // On native, 'background' is a CSS property that doesn't work — convert solid colors to 'backgroundColor'\n const rawEmailBackground = emailInvitationsStyle.background || null;\n const isEmailGradient = rawEmailBackground?.includes('gradient');\n const emailInvitationsGradientString = isEmailGradient ? rawEmailBackground : null;\n const emailInvitationsFallbackColor = isEmailGradient\n ? parseGradientFirstColor(rawEmailBackground)\n : rawEmailBackground || emailInvitationsStyle.backgroundColor;\n\n const emailInvitationsTextColor = emailInvitationsStyle.color || '#333';\n\n // Helper function to check if native Contacts import is enabled\n const isNativeContactsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components']?.value) {\n return false;\n }\n\n const components = widgetConfiguration.configuration.props['vortex.components'].value;\n return (\n Array.isArray(components) &&\n components.includes('vortex.components.importcontacts.providers.importcontacts')\n );\n };\n\n // Helper function to check if Google Contacts import is enabled\n const isGoogleContactsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components']?.value) {\n return false;\n }\n\n const components = widgetConfiguration.configuration.props['vortex.components'].value;\n return (\n Array.isArray(components) &&\n components.includes('vortex.components.importcontacts.providers.google')\n );\n };\n\n // Helper function to check if Copy Link is enabled\n const isCopyLinkEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('copyLink');\n };\n\n // Helper function to check if Share (native share sheet) is enabled\n const isShareEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('nativeShareSheet');\n };\n\n // Helper function to check if Email Invitations is enabled\n // Check if the form structure contains a vrtx-email-invitations block\n const isEmailInvitationsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components']?.value) {\n return false;\n }\n\n const components = widgetConfiguration.configuration.props['vortex.components'].value;\n return Array.isArray(components) && components.includes('vortex.components.emailinvitations');\n };\n\n // Helper function to check if Email share is enabled\n const isEmailShareEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('email');\n };\n\n // Helper function to check if SMS is enabled\n const isSmsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('sms');\n };\n\n // Helper function to check if X/Twitter DMs is enabled\n const isTwitterDmsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('twitterDms');\n };\n\n // Helper function to check if Instagram DMs is enabled\n const isInstagramDmsEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('instagramDms');\n };\n\n // Helper function to check if WhatsApp is enabled\n const isWhatsAppEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('whatsApp');\n };\n\n // Helper function to check if Line is enabled\n const isLineEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('line');\n };\n\n // Helper function to check if Line LIFF is enabled\n const isLineLiffEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('lineLiff');\n };\n\n // Helper function to check if QR Code is enabled\n const isQrCodeEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('qrCode');\n };\n\n // Helper function to check if Facebook Messenger is enabled\n const isFacebookMessengerEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('facebookMessenger');\n };\n\n // Helper function to check if Telegram is enabled\n const isTelegramEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('telegram');\n };\n\n // Helper function to check if Discord is enabled\n const isDiscordEnabled = () => {\n if (!widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value) {\n return false;\n }\n const shareOptions =\n widgetConfiguration.configuration.props['vortex.components.share.options'].value;\n return Array.isArray(shareOptions) && shareOptions.includes('discord');\n };\n\n // Helper function to get share options order from configuration\n const getShareOptionsOrder = (): string[] => {\n const shareOptions =\n widgetConfiguration?.configuration?.props?.['vortex.components.share.options']?.value;\n return Array.isArray(shareOptions) ? shareOptions : [];\n };\n\n // State for fetched contacts\n const [contacts, setContacts] = useState<Contact[]>([]);\n const [loadingContacts, setLoadingContacts] = useState(false);\n const [contactsFetchAttempted, setContactsFetchAttempted] = useState(false);\n const [contactsError, setContactsError] = useState<Error | null>(null);\n\n // State for fetched Google contacts\n const [googleContacts, setGoogleContacts] = useState<Contact[]>([]);\n const [loadingGoogleContacts, setLoadingGoogleContacts] = useState(false);\n const [googleContactsFetchAttempted, setGoogleContactsFetchAttempted] = useState(false);\n const [googleContactsError, setGoogleContactsError] = useState<Error | null>(null);\n\n // State for hover tracking in edit mode\n const [hoveredComponentId, setHoveredComponentId] = useState<string | null>(null);\n const [selectedComponentId, setSelectedComponentId] = useState<string | null>(null);\n\n const logic = useInvitationFormLogic(\n platformOperations,\n contacts,\n googleContacts,\n getShareableInviteLink\n );\n\n // Destructure for easier access\n const {\n view,\n emailInput,\n emails,\n copySuccess,\n shareSuccess,\n sendSuccess,\n searchQuery,\n invitedContactIds,\n invitedGoogleContactIds,\n googleSearchQuery,\n setEmailInput,\n setSearchQuery,\n setGoogleSearchQuery,\n loadingContactIds,\n loadingGoogleContactIds,\n loadingEmailInvite,\n loadingCopy,\n loadingShare,\n loadingInvitationLink,\n lastInvalidEmail,\n handleClose,\n handleSendInvitation,\n handleCopyLink,\n handleShare,\n handleEmailSubmit,\n handleRemoveEmail,\n handleSelectFromGoogle,\n handleSelectFromContacts,\n handleAddByEmail,\n handleShowQrCode,\n handleBackToMain,\n handleInviteContact,\n handleInviteGoogleContact,\n } = logic;\n\n // Fetch contacts on-demand when the contacts view is opened\n useEffect(() => {\n // Reset fetch attempt when view changes away from contacts\n if (view !== 'contacts' && contactsFetchAttempted) {\n setContactsFetchAttempted(false);\n setContactsError(null);\n }\n\n if (view === 'contacts' && !contactsFetchAttempted && !loadingContacts) {\n setLoadingContacts(true);\n setContactsFetchAttempted(true);\n setContactsError(null); // Clear previous errors\n platformOperations\n .fetchContacts()\n .then((fetchedContacts) => {\n setContacts(fetchedContacts);\n setContactsError(null);\n })\n .catch((err) => {\n console.error('[Vortex] Failed to fetch contacts:', err);\n setContactsError(err instanceof Error ? err : new Error(String(err)));\n setContacts([]); // Clear contacts on error\n })\n .finally(() => setLoadingContacts(false));\n }\n }, [view, contactsFetchAttempted, loadingContacts]);\n\n // Fetch Google contacts on-demand when the googleContacts view is opened\n useEffect(() => {\n // Reset fetch attempt when view changes away from googleContacts\n if (view !== 'googleContacts' && googleContactsFetchAttempted) {\n setGoogleContactsFetchAttempted(false);\n setGoogleContactsError(null);\n }\n\n if (view === 'googleContacts' && !googleContactsFetchAttempted && !loadingGoogleContacts) {\n setLoadingGoogleContacts(true);\n setGoogleContactsFetchAttempted(true);\n setGoogleContactsError(null); // Clear previous errors\n platformOperations\n .fetchGoogleContacts()\n .then((fetchedContacts) => {\n setGoogleContacts(fetchedContacts);\n setGoogleContactsError(null);\n })\n .catch((err) => {\n console.error('[Vortex] Failed to fetch Google contacts:', err);\n setGoogleContactsError(err instanceof Error ? err : new Error(String(err)));\n setGoogleContacts([]); // Clear contacts on error\n })\n .finally(() => setLoadingGoogleContacts(false));\n }\n }, [view, googleContactsFetchAttempted, loadingGoogleContacts]);\n\n // Filter contacts using shared utility\n const filteredContacts = filterContacts(contacts, searchQuery);\n const filteredGoogleContacts = filterContacts(googleContacts, googleSearchQuery);\n\n // Wrapper functions with haptic feedback and analytics tracking\n const handleCopyLinkWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('copyLink');\n await handleCopyLink();\n };\n\n const handleShareWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaNativeShare');\n await handleShare();\n };\n\n const handleSelectFromContactsWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n handleSelectFromContacts();\n };\n\n const handleSelectFromGoogleWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n handleSelectFromGoogle();\n };\n\n const handleAddByEmailWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n handleAddByEmail();\n };\n\n const handleInviteContactWithHaptics = async (contactId: string) => {\n await platformOperations.triggerHaptic?.('light');\n await handleInviteContact(contactId);\n };\n\n const handleInviteGoogleContactWithHaptics = async (contactId: string) => {\n await platformOperations.triggerHaptic?.('light');\n await handleInviteGoogleContact(contactId);\n };\n\n const handleSendInvitationWithHaptics = async () => {\n await platformOperations.triggerHaptic?.('light');\n await handleSendInvitation();\n };\n\n const handleRetryContacts = async () => {\n await platformOperations.triggerHaptic?.('light');\n // Clear the error and reset fetch attempt to trigger a new fetch\n setContactsError(null);\n setContactsFetchAttempted(false);\n };\n\n const handleOpenSettings = async () => {\n await platformOperations.triggerHaptic?.('light');\n try {\n await Linking.openSettings();\n } catch (err) {\n console.warn('[Vortex] Failed to open settings:', err);\n }\n };\n\n const handleEmailShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaEmail');\n await platformOperations.shareViaEmail?.();\n };\n\n const handleSmsShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaSMS');\n await platformOperations.shareViaSms?.();\n };\n\n const handleTwitterShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaTwitter');\n await platformOperations.shareViaTwitter?.();\n };\n\n const handleInstagramShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaInstagram');\n await platformOperations.shareViaInstagram?.();\n };\n\n const handleWhatsAppShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaWhatsApp');\n await platformOperations.shareViaWhatsApp?.();\n };\n\n const handleLineShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaLine');\n await platformOperations.shareViaLine?.();\n };\n\n const handleLineLiffShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaLineLiff');\n await platformOperations.shareViaLineLiff?.();\n };\n\n const handleFacebookMessengerShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaFacebookMessenger');\n await platformOperations.shareViaFacebookMessenger?.();\n };\n\n const handleTelegramShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaTelegram');\n await platformOperations.shareViaTelegram?.();\n };\n\n const handleDiscordShare = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaDiscord');\n await platformOperations.shareViaDiscord?.();\n };\n\n const handleQrCode = async () => {\n await platformOperations.triggerHaptic?.('light');\n onShareLinkClick?.('shareViaQrCode');\n handleShowQrCode();\n };\n\n // Block renderer functions - render individual components based on block type\n const renderShareOptionsBlock = (block: any) => {\n return (\n <VrtxShareOptions\n block={block}\n renderIcon={renderIcon}\n isCopyLinkEnabled={isCopyLinkEnabled}\n isShareEnabled={isShareEnabled}\n isEmailShareEnabled={isEmailShareEnabled}\n isSmsEnabled={isSmsEnabled}\n isTwitterDmsEnabled={isTwitterDmsEnabled}\n isInstagramDmsEnabled={isInstagramDmsEnabled}\n isWhatsAppEnabled={isWhatsAppEnabled}\n isLineEnabled={isLineEnabled}\n isLineLiffEnabled={isLineLiffEnabled}\n isQrCodeEnabled={isQrCodeEnabled}\n isFacebookMessengerEnabled={isFacebookMessengerEnabled}\n isTelegramEnabled={isTelegramEnabled}\n isDiscordEnabled={isDiscordEnabled}\n handleCopyLink={handleCopyLink}\n handleShare={handleShare}\n handleEmailShare={handleEmailShare}\n handleSmsShare={handleSmsShare}\n handleTwitterShare={handleTwitterShare}\n handleInstagramShare={handleInstagramShare}\n handleWhatsAppShare={handleWhatsAppShare}\n handleLineShare={handleLineShare}\n handleLineLiffShare={handleLineLiffShare}\n handleQrCode={handleQrCode}\n handleFacebookMessengerShare={handleFacebookMessengerShare}\n handleTelegramShare={handleTelegramShare}\n handleDiscordShare={handleDiscordShare}\n triggerHaptic={platformOperations.triggerHaptic}\n loadingCopy={loadingCopy}\n loadingShare={loadingShare}\n copySuccess={copySuccess}\n shareSuccess={shareSuccess}\n isEditMode={isEditMode}\n shareOptionsOrder={getShareOptionsOrder()}\n />\n );\n };\n\n const renderContactsImportBlock = (block: any) => {\n return (\n <VrtxContactsImport\n block={block}\n renderIcon={renderIcon}\n isNativeContactsEnabled={isNativeContactsEnabled}\n isGoogleContactsEnabled={isGoogleContactsEnabled}\n handleSelectFromContacts={handleSelectFromContacts}\n handleSelectFromGoogle={handleSelectFromGoogle}\n triggerHaptic={platformOperations.triggerHaptic}\n isEditMode={isEditMode}\n />\n );\n };\n\n const renderEmailInvitationsBlock = (block: any) => {\n // Don't pass submitButtonBlock - we'll render it separately\n return (\n <VrtxEmailInvitations\n block={block}\n view={view}\n emails={emails}\n emailInput={emailInput}\n setEmailInput={setEmailInput}\n handleEmailSubmit={handleEmailSubmit}\n handleRemoveEmail={handleRemoveEmail}\n submitButtonBlock={undefined}\n handleSendInvitation={handleSendInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n loadingEmailInvite={loadingEmailInvite}\n sendSuccess={sendSuccess}\n lastInvalidEmail={lastInvalidEmail}\n EditableWrapper={EditableWrapper}\n onEmailFieldFocus={onEmailFieldFocus}\n onEmailFieldBlur={onEmailFieldBlur}\n handleAddByEmail={handleAddByEmail}\n renderIcon={renderIcon}\n isEditMode={isEditMode}\n />\n );\n };\n\n const renderHeadingBlock = (block: any) => {\n return <VrtxHeading block={block} />;\n };\n\n // Stable text update handler that doesn't depend on block\n const handleTextUpdate = useCallback((blockId: string, updates: any) => {\n // Dispatch a custom event that PageBuilderMobile can listen to\n const updateEvent = new CustomEvent('vortex-update-text', {\n detail: {\n blockId,\n textContent: updates.textContent,\n },\n bubbles: true,\n });\n\n // Dispatch from document if we're on web\n if (isWeb && document) {\n document.dispatchEvent(updateEvent);\n }\n }, []); // Empty deps - this handler never needs to change\n\n const renderTextBlock = (block: any) => {\n return <VrtxText block={block} isEditMode={isEditMode} onUpdate={handleTextUpdate} />;\n };\n\n const renderSelectBlock = (block: any) => {\n return <VrtxSelect block={block} />;\n };\n\n const renderSubmitBlock = (block: any) => {\n return (\n <VrtxSubmit\n block={block}\n view={view}\n handleSendInvitation={handleSendInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n loadingEmailInvite={loadingEmailInvite}\n sendSuccess={sendSuccess}\n emailCount={emails.length}\n emailBlockCustomizations={emailInvitationsBlock?.settings?.customizations}\n emailBlockStyle={emailInvitationsBlock?.style}\n />\n );\n };\n\n const renderFindFriendsBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions =\n widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const extractBorderColor = (borderValue: string | undefined): string | undefined => {\n if (!borderValue) return undefined;\n const parts = borderValue.trim().split(/\\s+/);\n if (parts.length === 3) return parts[2];\n return undefined;\n };\n\n const theme = {\n primaryBackground:\n getThemeValue('--vrtx-submit-primary-background') ||\n getThemeValue('--vrtx-button-primary-background') ||\n getThemeValue('--color-primary-background'),\n primaryForeground:\n getThemeValue('--vrtx-submit-primary-color') || getThemeValue('--color-primary-foreground'),\n secondaryBackground:\n getThemeValue('--vrtx-submit-secondary-background') ||\n getThemeValue('--vrtx-button-secondary-background') ||\n getThemeValue('--color-secondary-background'),\n secondaryForeground:\n getThemeValue('--vrtx-submit-secondary-color') ||\n getThemeValue('--vrtx-button-secondary-color') ||\n getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--vrtx-root-color') || getThemeValue('--color-foreground'),\n border:\n extractBorderColor(getThemeValue('--vrtx-root-border')) ||\n extractBorderColor(getThemeValue('--vrtx-input-border')) ||\n getThemeValue('--color-border'),\n };\n\n return (\n <VrtxFindFriends\n block={block}\n findFriendsConfig={findFriendsConfig}\n createUserIdInvitation={createUserIdInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n theme={theme}\n />\n );\n };\n\n const renderIncomingInvitationsBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions =\n widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const extractBorderColor = (borderValue: string | undefined): string | undefined => {\n if (!borderValue) return undefined;\n const parts = borderValue.trim().split(/\\s+/);\n if (parts.length === 3) return parts[2];\n return undefined;\n };\n\n const theme = {\n primaryBackground:\n getThemeValue('--vrtx-submit-primary-background') ||\n getThemeValue('--vrtx-button-primary-background') ||\n getThemeValue('--color-primary-background'),\n primaryForeground:\n getThemeValue('--vrtx-submit-primary-color') || getThemeValue('--color-primary-foreground'),\n secondaryBackground:\n getThemeValue('--vrtx-submit-secondary-background') ||\n getThemeValue('--vrtx-button-secondary-background') ||\n getThemeValue('--color-secondary-background'),\n secondaryForeground:\n getThemeValue('--vrtx-submit-secondary-color') ||\n getThemeValue('--vrtx-button-secondary-color') ||\n getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--vrtx-root-color') || getThemeValue('--color-foreground'),\n border:\n extractBorderColor(getThemeValue('--vrtx-root-border')) ||\n extractBorderColor(getThemeValue('--vrtx-input-border')) ||\n getThemeValue('--color-border'),\n };\n\n return (\n <VrtxIncomingInvitations\n block={block}\n incomingInvitationsConfig={incomingInvitationsConfig}\n apiUrl={apiUrl}\n jwt={jwt}\n triggerHaptic={platformOperations.triggerHaptic}\n theme={theme}\n />\n );\n };\n\n const renderOutgoingInvitationsBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions =\n widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const extractBorderColor = (borderValue: string | undefined): string | undefined => {\n if (!borderValue) return undefined;\n const parts = borderValue.trim().split(/\\s+/);\n if (parts.length === 3) return parts[2];\n return undefined;\n };\n\n const theme = {\n primaryBackground:\n getThemeValue('--vrtx-submit-primary-background') ||\n getThemeValue('--vrtx-button-primary-background') ||\n getThemeValue('--color-primary-background'),\n primaryForeground:\n getThemeValue('--vrtx-submit-primary-color') || getThemeValue('--color-primary-foreground'),\n secondaryBackground:\n getThemeValue('--vrtx-submit-secondary-background') ||\n getThemeValue('--vrtx-button-secondary-background') ||\n getThemeValue('--color-secondary-background'),\n secondaryForeground:\n getThemeValue('--vrtx-submit-secondary-color') ||\n getThemeValue('--vrtx-button-secondary-color') ||\n getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--vrtx-root-color') || getThemeValue('--color-foreground'),\n border:\n extractBorderColor(getThemeValue('--vrtx-root-border')) ||\n extractBorderColor(getThemeValue('--vrtx-input-border')) ||\n getThemeValue('--color-border'),\n };\n\n return (\n <VrtxOutgoingInvitations\n block={block}\n outgoingInvitationsConfig={outgoingInvitationsConfig}\n apiUrl={apiUrl}\n jwt={jwt}\n triggerHaptic={platformOperations.triggerHaptic}\n theme={theme}\n />\n );\n };\n\n const renderSearchBoxBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions = widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const theme = {\n primaryBackground: getThemeValue('--color-primary-background'),\n primaryForeground: getThemeValue('--color-primary-foreground'),\n secondaryBackground: getThemeValue('--color-secondary-background'),\n secondaryForeground: getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--color-foreground'),\n border: getThemeValue('--color-border'),\n };\n\n return (\n <VrtxSearchBox\n block={block}\n searchBoxConfig={searchBoxConfig}\n createUserIdInvitation={createUserIdInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n renderIcon={renderIcon}\n theme={theme}\n />\n );\n };\n\n const renderInvitationSuggestionsBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions =\n widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const extractBorderColor = (borderValue: string | undefined): string | undefined => {\n if (!borderValue) return undefined;\n const parts = borderValue.trim().split(/\\s+/);\n if (parts.length === 3) return parts[2];\n return undefined;\n };\n\n const theme = {\n primaryBackground:\n getThemeValue('--vrtx-submit-primary-background') ||\n getThemeValue('--vrtx-button-primary-background') ||\n getThemeValue('--color-primary-background'),\n primaryForeground:\n getThemeValue('--vrtx-submit-primary-color') || getThemeValue('--color-primary-foreground'),\n secondaryBackground:\n getThemeValue('--vrtx-submit-secondary-background') ||\n getThemeValue('--vrtx-button-secondary-background') ||\n getThemeValue('--color-secondary-background'),\n secondaryForeground:\n getThemeValue('--vrtx-submit-secondary-color') ||\n getThemeValue('--vrtx-button-secondary-color') ||\n getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--vrtx-root-color') || getThemeValue('--color-foreground'),\n border:\n extractBorderColor(getThemeValue('--vrtx-root-border')) ||\n extractBorderColor(getThemeValue('--vrtx-input-border')) ||\n getThemeValue('--color-border'),\n };\n\n return (\n <VrtxInvitationSuggestions\n block={block}\n invitationSuggestionsConfig={invitationSuggestionsConfig}\n createUserIdInvitation={createUserIdInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n theme={theme}\n />\n );\n };\n\n const renderInviteContactsBlock = (block: any) => {\n // Extract theme colors from widget configuration\n const themeOptions =\n widgetConfiguration?.configuration?.props?.['vortex.theme']?.value?.options;\n const getThemeValue = (key: string): string | undefined => {\n const option = themeOptions?.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n const extractBorderColor = (borderValue: string | undefined): string | undefined => {\n if (!borderValue) return undefined;\n const parts = borderValue.trim().split(/\\s+/);\n if (parts.length === 3) return parts[2];\n return undefined;\n };\n\n const theme = {\n primaryBackground:\n getThemeValue('--vrtx-submit-primary-background') ||\n getThemeValue('--vrtx-button-primary-background') ||\n getThemeValue('--color-primary-background'),\n primaryForeground:\n getThemeValue('--vrtx-submit-primary-color') || getThemeValue('--color-primary-foreground'),\n secondaryBackground:\n getThemeValue('--vrtx-submit-secondary-background') ||\n getThemeValue('--vrtx-button-secondary-background') ||\n getThemeValue('--color-secondary-background'),\n secondaryForeground:\n getThemeValue('--vrtx-submit-secondary-color') ||\n getThemeValue('--vrtx-button-secondary-color') ||\n getThemeValue('--color-secondary-foreground'),\n foreground: getThemeValue('--vrtx-root-color') || getThemeValue('--color-foreground'),\n border:\n extractBorderColor(getThemeValue('--vrtx-root-border')) ||\n extractBorderColor(getThemeValue('--vrtx-input-border')) ||\n getThemeValue('--color-border'),\n };\n\n // Get SMS message template from block settings\n const smsMessageTemplate = block?.settings?.customizations?.smsMessage?.textContent;\n\n // Create SMS invitation function that calls the API\n const createSmsInvitation = async (\n phoneNumber: string,\n contactName?: string\n ): Promise<string | null> => {\n try {\n if (platformOperations.createSmsInvitation) {\n return await platformOperations.createSmsInvitation(phoneNumber, contactName);\n }\n console.warn('[VrtxInviteContacts] No createSmsInvitation function provided');\n return null;\n } catch (err) {\n console.error('[VrtxInviteContacts] Failed to create SMS invitation:', err);\n return null;\n }\n };\n\n return (\n <VrtxInviteContacts\n block={block}\n inviteContactsConfig={inviteContactsConfig}\n createSmsInvitation={createSmsInvitation}\n triggerHaptic={platformOperations.triggerHaptic}\n theme={theme}\n smsMessageTemplate={smsMessageTemplate}\n />\n );\n };\n\n const renderBlock = (block: any) => {\n if (!block) return null;\n\n // Skip rendering if block is hidden\n if (block.hidden === true) {\n return null;\n }\n\n const content = (() => {\n switch (block.subtype) {\n case 'vrtx-share-options':\n return renderShareOptionsBlock(block);\n case 'vrtx-contacts-import':\n return renderContactsImportBlock(block);\n case 'vrtx-email-invitations':\n return renderEmailInvitationsBlock(block);\n case 'vrtx-find-friends':\n return renderFindFriendsBlock(block);\n case 'vrtx-incoming-invitations':\n return renderIncomingInvitationsBlock(block);\n case 'vrtx-outgoing-invitations':\n return renderOutgoingInvitationsBlock(block);\n case 'vrtx-invitation-suggestions':\n return renderInvitationSuggestionsBlock(block);\n case 'vrtx-invite-contacts':\n return renderInviteContactsBlock(block);\n case 'vrtx-search-box':\n return renderSearchBoxBlock(block);\n case 'vrtx-heading':\n return renderHeadingBlock(block);\n case 'vrtx-text':\n return renderTextBlock(block);\n case 'vrtx-select':\n return null; //renderSelectBlock(block);\n case 'vrtx-submit':\n return renderSubmitBlock(block);\n default:\n console.warn(`here [InvitationFormCore] Unknown block type: ${block.subtype}`);\n return null;\n }\n })();\n\n if (!content) return null;\n\n // Wrap in EditableWrapper for edit mode\n return (\n <EditableWrapper\n key={block.id}\n componentId={block.id}\n componentType={block.type}\n node={block}\n >\n {content}\n </EditableWrapper>\n );\n };\n\n const renderColumn = (column: any, filterGroup?: string, excludeGroups?: string[]) => {\n if (!column || !column.children) return null;\n\n // If filtering by include group, check if this column has any matching blocks\n if (filterGroup) {\n const hasMatchingBlocks = column.children.some((child: any) => {\n if (child.type === 'block') {\n const blockGroup = child.meta?.source?.group?.name;\n return blockGroup === filterGroup;\n }\n return false;\n });\n\n // Skip rendering this column if it has no matching blocks\n if (!hasMatchingBlocks) {\n return null;\n }\n }\n\n // If excluding groups, check if this column has any blocks NOT in excluded groups\n if (excludeGroups && excludeGroups.length > 0) {\n const hasNonExcludedBlocks = column.children.some((child: any) => {\n if (child.type === 'block') {\n const blockGroup = child.meta?.source?.group?.name;\n return !excludeGroups.includes(blockGroup);\n }\n return false;\n });\n\n // Skip rendering this column if all its blocks are excluded\n if (!hasNonExcludedBlocks) {\n return null;\n }\n }\n\n return (\n <EditableWrapper\n key={column.id}\n componentId={column.id}\n componentType={column.type}\n node={column}\n >\n <View style={{ flex: 1 }}>\n {column.children.map((child: any) => {\n if (child.type === 'block') {\n // Skip submit button blocks - they're rendered after email invitations\n if (child.subtype === 'vrtx-submit') {\n return null;\n }\n\n // If filterGroup is provided, only render blocks from that group\n if (filterGroup) {\n const blockGroup = child.meta?.source?.group?.name;\n if (blockGroup !== filterGroup) {\n return null;\n }\n }\n\n // If excludeGroups is provided, skip blocks from those groups\n if (excludeGroups && excludeGroups.length > 0) {\n const blockGroup = child.meta?.source?.group?.name;\n if (excludeGroups.includes(blockGroup)) {\n return null;\n }\n }\n\n // Special handling for email invitations block - render submit button separately\n if (child.subtype === 'vrtx-email-invitations' && submitButtonBlock) {\n return (\n <React.Fragment key={child.id}>\n {renderBlock(child)}\n {renderBlock(submitButtonBlock)}\n </React.Fragment>\n );\n }\n\n return renderBlock(child);\n }\n return null;\n })}\n </View>\n </EditableWrapper>\n );\n };\n\n const renderRow = (\n row: any,\n index: number,\n totalRows: number,\n filterGroup?: string,\n excludeGroups?: string[]\n ) => {\n if (!row) return null;\n\n // Check if row has any visible content (columns with blocks)\n const hasVisibleContent = row.children?.some((child: any) => {\n if (child.type === 'column' && child.children) {\n return child.children.some((blockChild: any) => blockChild.type === 'block');\n }\n return false;\n });\n\n // In non-edit mode, skip rows without children entirely\n if (!row.children && !isEditMode) return null;\n\n // If filtering by include group, check if this row has any columns with matching blocks\n if (filterGroup) {\n const hasMatchingContent = row.children?.some((child: any) => {\n if (child.type === 'column' && child.children) {\n return child.children.some((blockChild: any) => {\n if (blockChild.type === 'block') {\n const blockGroup = blockChild.meta?.source?.group?.name;\n return blockGroup === filterGroup;\n }\n return false;\n });\n }\n return false;\n });\n\n // Skip rendering this row if it has no matching content\n if (!hasMatchingContent) {\n return null;\n }\n }\n\n // If excluding groups, check if this row has any columns with non-excluded blocks\n if (excludeGroups && excludeGroups.length > 0) {\n const hasNonExcludedContent = row.children?.some((child: any) => {\n if (child.type === 'column' && child.children) {\n return child.children.some((blockChild: any) => {\n if (blockChild.type === 'block') {\n const blockGroup = blockChild.meta?.source?.group?.name;\n return !excludeGroups.includes(blockGroup);\n }\n return false;\n });\n }\n return false;\n });\n\n // Skip rendering this row if all its blocks are excluded\n // BUT in edit mode, allow empty rows through so they can be selected\n if (!hasNonExcludedContent && !(isEditMode && !hasVisibleContent)) {\n return null;\n }\n }\n\n // Determine if this is an empty row (no visible content)\n const isEmptyRow = !hasVisibleContent;\n\n return (\n <React.Fragment key={row.id}>\n {/* Drop zone before this row */}\n {isEditMode && isDragging && (\n <View\n // @ts-ignore\n data-drop-zone=\"between-rows\"\n data-insertion-index={index}\n style={{\n height: 40,\n // borderWidth: 2,\n // borderColor: '#4CAF50',\n // borderStyle: 'dashed',\n // borderRadius: 4,\n // backgroundColor: 'rgba(76, 175, 80, 0.1)',\n marginVertical: 8,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text style={{ color: '#4CAF50', fontSize: 12, fontWeight: '600' }}>\n {/* Drop here to insert at position {index} */}\n </Text>\n </View>\n )}\n\n {/* The actual row */}\n <EditableWrapper componentId={row.id} componentType={row.type} node={row}>\n <View\n style={[\n styles.section,\n // In edit mode, empty rows get a minimum height so they can be selected\n isEditMode && isEmptyRow && styles.emptyRowEditMode,\n ]}\n >\n {row.children?.map((child: any) => {\n if (child.type === 'column') {\n return renderColumn(child, filterGroup, excludeGroups);\n }\n return null;\n })}\n </View>\n </EditableWrapper>\n\n {/* Drop zone after last row */}\n {isEditMode && isDragging && index === totalRows - 1 && (\n <View\n // @ts-ignore\n data-drop-zone=\"between-rows\"\n data-insertion-index={totalRows}\n style={{\n height: 40,\n borderWidth: 2,\n borderColor: '#4CAF50',\n borderStyle: 'dashed',\n borderRadius: 4,\n backgroundColor: 'rgba(76, 175, 80, 0.1)',\n marginVertical: 8,\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Text style={{ color: '#4CAF50', fontSize: 12, fontWeight: '600' }}>\n Drop here to insert at position {totalRows}\n </Text>\n </View>\n )}\n </React.Fragment>\n );\n };\n\n // Helper function to get component label\n const getComponentLabel = (type: string): string => {\n const labelMap: Record<string, string> = {\n 'vrtx-share-options': 'Share Options',\n 'vrtx-contacts-import': 'Contacts Import',\n 'vrtx-email-invitations': 'Email Invitations',\n 'vrtx-find-friends': 'Find Friends',\n 'vrtx-incoming-invitations': 'Incoming Invitations',\n 'vrtx-outgoing-invitations': 'Outgoing Invitations',\n 'vrtx-invitation-suggestions': 'Invitation Suggestions',\n 'vrtx-heading': 'Heading',\n 'vrtx-text': 'Text',\n 'vrtx-select': 'Select',\n 'vrtx-submit': 'Submit',\n 'vrtx-form-label': 'Label',\n 'vrtx-row': 'Row',\n row: 'Row',\n column: 'Column',\n block: 'Block',\n };\n return labelMap[type] || type;\n };\n\n // EditableWrapper component for hover highlighting and drag-drop in edit mode\n // IMPORTANT: Memoized via useMemo to maintain stable component identity across re-renders.\n // Without this, every parent state change (e.g., typing in email input) would create a new\n // component type, causing React to unmount/remount all children — which blurs TextInputs.\n const EditableWrapper = React.useMemo(() => {\n const Wrapper = ({\n children,\n componentId,\n componentType,\n node,\n flex,\n }: {\n children: React.ReactNode;\n componentId: string;\n componentType: string;\n node?: any; // The actual node object from vortex.components.form\n flex?: boolean;\n }) => {\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const labelRef = React.useRef<HTMLDivElement | null>(null);\n const leftMarginRef = React.useRef<HTMLDivElement | null>(null);\n const rightMarginRef = React.useRef<HTMLDivElement | null>(null);\n const outlineRef = React.useRef<HTMLDivElement | null>(null);\n\n // For rows on web, allow margin-based hover/selection\n const isRow = componentType === 'row';\n const isColumn = componentType === 'column';\n const isBlock = !isRow && !isColumn;\n\n // State for row margin hover\n const [isRowMarginHovered, setIsRowMarginHovered] = React.useState(false);\n\n // Determine hover and selection states\n const isHovered = isBlock\n ? hoveredComponentId === componentId\n : isRow && isWeb\n ? isRowMarginHovered\n : false;\n const isSelected = isBlock\n ? selectedComponentId === componentId\n : isRow && isWeb\n ? selectedComponentId === componentId\n : false;\n const showLabel = isEditMode && (isHovered || isSelected);\n\n // Create margin detection boxes for rows on web\n React.useEffect(() => {\n if (!isWeb || !isRow || !isEditMode) {\n // Clean up margin detectors if they exist\n if (leftMarginRef.current && leftMarginRef.current.parentNode) {\n leftMarginRef.current.parentNode.removeChild(leftMarginRef.current);\n leftMarginRef.current = null;\n }\n if (rightMarginRef.current && rightMarginRef.current.parentNode) {\n rightMarginRef.current.parentNode.removeChild(rightMarginRef.current);\n rightMarginRef.current = null;\n }\n if (outlineRef.current && outlineRef.current.parentNode) {\n outlineRef.current.parentNode.removeChild(outlineRef.current);\n outlineRef.current = null;\n }\n return;\n }\n\n if (!wrapperRef.current) return;\n\n // Find the outermost container with padding - this creates the margin areas\n // Walk up the DOM tree until we find a container that's significantly wider than the row\n let scrollContainer: HTMLElement | null = wrapperRef.current.parentElement;\n const rowWidth = wrapperRef.current.getBoundingClientRect().width;\n\n let attempts = 0;\n while (scrollContainer && attempts < 15) {\n const containerWidth = scrollContainer.getBoundingClientRect().width;\n // If this container is significantly wider than the row (has margins/padding)\n if (containerWidth > rowWidth + 20) {\n break;\n }\n scrollContainer = scrollContainer.parentElement;\n attempts++;\n }\n\n // Fallback: use the widest ancestor we can find\n if (!scrollContainer || scrollContainer.getBoundingClientRect().width <= rowWidth) {\n scrollContainer = wrapperRef.current.parentElement;\n while (scrollContainer?.parentElement) {\n const parent = scrollContainer.parentElement;\n if (\n parent.getBoundingClientRect().width > scrollContainer.getBoundingClientRect().width\n ) {\n scrollContainer = parent;\n } else {\n break;\n }\n }\n }\n\n if (!scrollContainer) return;\n\n // Create margin detectors and outline if they don't exist\n if (!leftMarginRef.current) {\n leftMarginRef.current = document.createElement('div');\n document.body.appendChild(leftMarginRef.current);\n }\n if (!rightMarginRef.current) {\n rightMarginRef.current = document.createElement('div');\n document.body.appendChild(rightMarginRef.current);\n }\n if (!outlineRef.current) {\n outlineRef.current = document.createElement('div');\n document.body.appendChild(outlineRef.current);\n }\n\n const updateMarginDetectors = () => {\n if (!wrapperRef.current || !scrollContainer) return;\n\n const rowRect = wrapperRef.current.getBoundingClientRect();\n const containerRect = scrollContainer.getBoundingClientRect();\n\n // Update outline box (full width)\n if (outlineRef.current) {\n Object.assign(outlineRef.current.style, {\n position: 'fixed',\n top: `${rowRect.top}px`,\n left: `${containerRect.left}px`,\n width: `${containerRect.width}px`,\n height: `${rowRect.height}px`,\n outline:\n isRowMarginHovered || isSelected\n ? `3px solid ${isSelected ? '#1166c2' : '#72b3f3'}`\n : 'none',\n outlineOffset: '0px',\n borderRadius: '8px',\n pointerEvents: 'none',\n zIndex: '1199',\n });\n }\n\n // Update left margin detector\n if (leftMarginRef.current) {\n const leftWidth = rowRect.left - containerRect.left;\n Object.assign(leftMarginRef.current.style, {\n position: 'fixed',\n top: `${rowRect.top}px`,\n left: `${containerRect.left}px`,\n width: `${leftWidth}px`,\n height: `${rowRect.height}px`,\n cursor: 'pointer',\n pointerEvents: 'auto',\n zIndex: '1199',\n });\n }\n\n // Update right margin detector\n if (rightMarginRef.current) {\n const rightWidth = containerRect.right - rowRect.right;\n Object.assign(rightMarginRef.current.style, {\n position: 'fixed',\n top: `${rowRect.top}px`,\n left: `${rowRect.right}px`,\n width: `${rightWidth}px`,\n height: `${rowRect.height}px`,\n cursor: 'pointer',\n pointerEvents: 'auto',\n zIndex: '1199',\n });\n }\n };\n\n // Set up event handlers for margin detectors\n const handleMarginEnter = () => {\n setIsRowMarginHovered(true);\n };\n\n const handleMarginLeave = () => {\n setIsRowMarginHovered(false);\n };\n\n const handleMarginClick = (e: MouseEvent) => {\n e.stopPropagation();\n setSelectedComponentId(componentId);\n if (onComponentSelect) {\n onComponentSelect({\n id: componentId,\n type: componentType,\n element: node || null,\n styles: {},\n });\n }\n };\n\n leftMarginRef.current.addEventListener('mouseenter', handleMarginEnter);\n leftMarginRef.current.addEventListener('mouseleave', handleMarginLeave);\n leftMarginRef.current.addEventListener('click', handleMarginClick);\n\n rightMarginRef.current.addEventListener('mouseenter', handleMarginEnter);\n rightMarginRef.current.addEventListener('mouseleave', handleMarginLeave);\n rightMarginRef.current.addEventListener('click', handleMarginClick);\n\n updateMarginDetectors();\n\n window.addEventListener('scroll', updateMarginDetectors, true);\n window.addEventListener('resize', updateMarginDetectors);\n\n return () => {\n window.removeEventListener('scroll', updateMarginDetectors, true);\n window.removeEventListener('resize', updateMarginDetectors);\n\n if (leftMarginRef.current) {\n leftMarginRef.current.removeEventListener('mouseenter', handleMarginEnter);\n leftMarginRef.current.removeEventListener('mouseleave', handleMarginLeave);\n leftMarginRef.current.removeEventListener('click', handleMarginClick);\n if (leftMarginRef.current.parentNode) {\n leftMarginRef.current.parentNode.removeChild(leftMarginRef.current);\n }\n leftMarginRef.current = null;\n }\n if (rightMarginRef.current) {\n rightMarginRef.current.removeEventListener('mouseenter', handleMarginEnter);\n rightMarginRef.current.removeEventListener('mouseleave', handleMarginLeave);\n rightMarginRef.current.removeEventListener('click', handleMarginClick);\n if (rightMarginRef.current.parentNode) {\n rightMarginRef.current.parentNode.removeChild(rightMarginRef.current);\n }\n rightMarginRef.current = null;\n }\n if (outlineRef.current && outlineRef.current.parentNode) {\n outlineRef.current.parentNode.removeChild(outlineRef.current);\n outlineRef.current = null;\n }\n };\n }, [\n isWeb,\n isRow,\n isEditMode,\n isRowMarginHovered,\n isSelected,\n componentId,\n componentType,\n node,\n onComponentSelect,\n ]);\n\n // Create and manage a portal-like label element\n React.useEffect(() => {\n if (!isWeb || !showLabel) {\n // Clean up label if it exists\n if (labelRef.current && labelRef.current.parentNode) {\n labelRef.current.parentNode.removeChild(labelRef.current);\n labelRef.current = null;\n }\n return;\n }\n\n if (!wrapperRef.current) return;\n\n // Find the container using the same logic as margin detectors\n let scrollContainer: HTMLElement | null = null;\n if (isRow) {\n // For rows, find the outermost container with padding\n scrollContainer = wrapperRef.current.parentElement;\n const rowWidth = wrapperRef.current.getBoundingClientRect().width;\n let attempts = 0;\n while (scrollContainer && attempts < 15) {\n const containerWidth = scrollContainer.getBoundingClientRect().width;\n if (containerWidth > rowWidth + 20) {\n break;\n }\n scrollContainer = scrollContainer.parentElement;\n attempts++;\n }\n if (!scrollContainer || scrollContainer.getBoundingClientRect().width <= rowWidth) {\n scrollContainer = wrapperRef.current.parentElement;\n while (scrollContainer?.parentElement) {\n const parent = scrollContainer.parentElement;\n if (\n parent.getBoundingClientRect().width > scrollContainer.getBoundingClientRect().width\n ) {\n scrollContainer = parent;\n } else {\n break;\n }\n }\n }\n }\n\n // Create label element if it doesn't exist\n if (!labelRef.current) {\n labelRef.current = document.createElement('div');\n document.body.appendChild(labelRef.current);\n }\n\n const updateLabelPosition = () => {\n if (!wrapperRef.current || !labelRef.current) return;\n\n const rect = wrapperRef.current.getBoundingClientRect();\n const label = labelRef.current;\n\n // For rows on web, position at extreme left of container\n let leftPos = rect.left + 5;\n if (isRow && scrollContainer) {\n const containerRect = scrollContainer.getBoundingClientRect();\n leftPos = containerRect.left;\n }\n\n // Update styles\n Object.assign(label.style, {\n position: 'fixed',\n left: `${leftPos}px`,\n top: `${rect.top - 25}px`,\n height: '25px',\n display: 'flex',\n alignItems: 'center',\n backgroundColor: isSelected ? '#1166c2' : '#72b3f3',\n color: 'white',\n padding: '0 12px',\n fontSize: '11px',\n fontWeight: '600',\n borderRadius: '2px 2px 0 0',\n whiteSpace: 'nowrap',\n zIndex: '1200',\n pointerEvents: 'none',\n userSelect: 'none',\n boxShadow: '0 1px 3px 0 rgba(0, 0, 0, 0.3)',\n });\n\n label.textContent = getComponentLabel(node?.subtype || componentType);\n };\n\n updateLabelPosition();\n\n window.addEventListener('scroll', updateLabelPosition, true);\n window.addEventListener('resize', updateLabelPosition);\n\n return () => {\n window.removeEventListener('scroll', updateLabelPosition, true);\n window.removeEventListener('resize', updateLabelPosition);\n if (labelRef.current && labelRef.current.parentNode) {\n labelRef.current.parentNode.removeChild(labelRef.current);\n labelRef.current = null;\n }\n };\n }, [showLabel, isSelected, node, componentType, isWeb, isRow, isEditMode]);\n\n // Use the toolbar hook to manage the delete button\n usePlacedItemToolbar({\n wrapperRef,\n isSelected,\n componentId,\n componentType,\n isRow,\n nodeSubtype: node?.subtype,\n });\n\n if (!isEditMode) return <>{children}</>;\n\n // Helper function to check if element is inside a contentEditable element\n const isInsideContentEditable = (target: any): boolean => {\n if (!target) return false;\n let el = target;\n let depth = 0;\n while (el && depth < 20) {\n if (el.getAttribute?.('data-slate-editor') === 'true') {\n return true;\n }\n if (el.contentEditable === 'true' || el.getAttribute?.('contenteditable') === 'true') {\n return true;\n }\n el = el.parentElement;\n depth++;\n }\n return false;\n };\n\n const handleClick = (e: any) => {\n // Don't handle clicks on columns - let them pass through to child blocks\n // Rows are allowed so empty rows can be selected and deleted\n if (isColumn) {\n return;\n }\n\n const target = e?.target || e?.nativeEvent?.target;\n\n // Check if the click is inside a contentEditable element\n if (isInsideContentEditable(target)) {\n // If the component is already selected, allow the click to proceed for text editing\n if (isSelected) {\n console.log(\n '[EditableWrapper] Allowing click inside contentEditable element (already selected)'\n );\n e?.stopPropagation?.();\n return;\n }\n // If not selected, we'll select it first (don't return early)\n console.log('[EditableWrapper] Selecting component with contentEditable element');\n }\n\n if (target) {\n let el = target;\n let depth = 0;\n while (el && depth < 20) {\n // Check for circle button attribute\n if (el.getAttribute?.('data-circle-button') === 'true') {\n console.log('[EditableWrapper] Ignoring circle button click - found data attribute');\n return;\n }\n el = el.parentElement;\n depth++;\n }\n }\n\n // Ignore clicks from circle button (legacy flag check)\n if (e?._circleButtonClick || e?.nativeEvent?._circleButtonClick) {\n console.log('[EditableWrapper] Ignoring circle button click - found flag');\n return;\n }\n\n // Only handle once - prevent double firing from both capture and bubble\n if (e?._editable_handled) return;\n if (e) e._editable_handled = true;\n\n e?.stopPropagation?.();\n console.log(\n '[EditableWrapper] Clicked:',\n componentId,\n componentType,\n 'onComponentSelect exists:',\n !!onComponentSelect\n );\n setSelectedComponentId(componentId);\n if (onComponentSelect) {\n console.log('[EditableWrapper] Calling onComponentSelect with:', {\n id: componentId,\n type: componentType,\n element: node || null,\n });\n onComponentSelect({\n id: componentId,\n type: componentType,\n element: node || null,\n styles: {},\n });\n } else {\n console.warn('[EditableWrapper] onComponentSelect is not defined!');\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n data-component-id={componentId}\n data-component-type={componentType}\n style={{\n position: 'relative',\n ...(flex && { flex: 1 }),\n }}\n onMouseEnter={\n isColumn\n ? undefined\n : isColumn\n ? undefined\n : (e) => {\n if (!isInsideContentEditable(e.target)) {\n setHoveredComponentId(componentId);\n }\n }\n }\n onMouseLeave={\n isColumn\n ? undefined\n : isColumn\n ? undefined\n : (e) => {\n if (!isInsideContentEditable(e.target)) {\n setHoveredComponentId(null);\n }\n }\n }\n onClick={handleClick}\n >\n {children}\n {/* Selection border - only for blocks, not rows (rows use full-width outline) */}\n {showLabel && !isRow && (\n <>\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n border: `3px solid ${isSelected ? '#1166c2' : '#72b3f3'}`,\n borderRadius: '8px',\n pointerEvents: 'none',\n zIndex: 1,\n }}\n />\n </>\n )}\n </div>\n );\n };\n return Wrapper;\n }, [isEditMode, hoveredComponentId, selectedComponentId, onComponentSelect, onComponentDelete]);\n\n const styles = createStyles(fontFamily);\n\n const handleHeaderButtonPress = () => {\n if (view === 'main') {\n handleClose();\n } else {\n handleBackToMain();\n }\n };\n\n // Deselect when clicking on empty space (web only)\n React.useEffect(() => {\n if (!isEditMode || !isWeb) return;\n\n const handleDocumentClick = (e: MouseEvent) => {\n let el = e.target as HTMLElement | null;\n while (el) {\n // If the click is inside an editable element, do nothing\n if (el.getAttribute) {\n if (\n el.getAttribute('data-component-id') ||\n el.getAttribute('data-circle-button') === 'true'\n ) {\n return;\n }\n }\n el = el.parentElement;\n }\n // Click was on empty space, deselect\n setSelectedComponentId(null);\n };\n\n document.addEventListener('click', handleDocumentClick, true);\n return () => {\n document.removeEventListener('click', handleDocumentClick, true);\n };\n }, [isEditMode]);\n\n // Handle component deletion (web only)\n React.useEffect(() => {\n if (!isWeb || !isEditMode) return;\n\n const handleDeleteEvent = (e: Event) => {\n const customEvent = e as CustomEvent;\n const { id, type } = customEvent.detail;\n\n if (onComponentDelete) {\n onComponentDelete(id, type);\n }\n\n // Also deselect the component\n setSelectedComponentId(null);\n };\n\n document.addEventListener('vortex-delete-component', handleDeleteEvent, true);\n\n return () => {\n document.removeEventListener('vortex-delete-component', handleDeleteEvent, true);\n };\n }, [isEditMode, onComponentDelete]);\n\n // Extract root form styles from formStructure\n // Transform CSS properties to React Native equivalents (e.g., 'background' -> 'backgroundColor')\n const rawRootStyle = formStructure?.style || {};\n const rootFormStyle: Record<string, any> = {};\n for (const [key, value] of Object.entries(rawRootStyle)) {\n if (key === 'background' && typeof value === 'string' && !value.includes('gradient')) {\n // Convert CSS 'background' to RN 'backgroundColor' for solid colors\n rootFormStyle.backgroundColor = value;\n } else if (key !== 'background') {\n // Pass through other properties (skip gradients which need special handling)\n rootFormStyle[key] = value;\n }\n }\n\n return (\n <View style={{ ...styles.container, ...containerStyle, ...rootFormStyle }}>\n {/* Header with Close or Back button */}\n <View style={{ ...styles.header, ...rootFormStyle }}>\n <View\n style={[styles.headerButton, { minWidth: 44, minHeight: 44, justifyContent: 'center' }]}\n onStartShouldSetResponder={() => {\n return true;\n }}\n onResponderGrant={() => {\n // Handle responder grant\n }}\n onResponderRelease={() => {\n handleHeaderButtonPress();\n }}\n >\n {renderIcon({\n name: view === 'main' ? 'close' : 'arrow-back',\n size: 24,\n color: resolvedTitleStyle?.color || '#666',\n opacity: 0.75,\n })}\n </View>\n {resolvedTitle && (\n <Text\n style={[\n styles.headerTitle,\n resolvedTitleStyle && {\n ...(resolvedTitleStyle.color && { color: resolvedTitleStyle.color }),\n ...(resolvedTitleStyle.fontSize && { fontSize: resolvedTitleStyle.fontSize }),\n ...(resolvedTitleStyle.fontWeight && { fontWeight: resolvedTitleStyle.fontWeight as any }),\n ...(resolvedTitleStyle.fontFamily && { fontFamily: resolvedTitleStyle.fontFamily }),\n },\n ]}\n >\n {resolvedTitle}\n </Text>\n )}\n {/* Empty spacer to balance the header when title is present */}\n {resolvedTitle && <View style={[styles.headerButton, { minWidth: 44, minHeight: 44 }]} />}\n </View>\n\n <ScrollView\n style={{ ...styles.scrollContent, ...rootFormStyle }}\n contentContainerStyle={rootFormStyle}\n showsVerticalScrollIndicator={false}\n >\n {view === 'main' && formStructure && (\n <>\n {/* <EditableWrapper componentId=\"title-text\" componentType=\"text\">\n <Text style={styles.title}>Invite people to join your team</Text>\n </EditableWrapper> */}\n\n {/* Dynamic rendering from formStructure */}\n {formStructure.children?.map((child: any, index: number) => {\n if (child.type === 'row') {\n return renderRow(child, index, formStructure.children.length);\n }\n return null;\n })}\n </>\n )}\n\n {view === 'main' && !formStructure && (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20 }}>\n <Text style={{ fontSize: 50, marginBottom: 16 }}>⚠️</Text>\n <Text style={{ fontSize: 18, fontWeight: 'bold', color: '#d9534f', marginBottom: 8, fontFamily }}>\n Configuration Error\n </Text>\n <Text style={{ fontSize: 14, color: '#666', textAlign: 'center', fontFamily }}>\n Unable to load form structure from widget configuration. Please check your widget configuration and try again.\n </Text>\n </View>\n )}\n\n {view === 'email' && formStructure && (\n <>\n <View style={styles.section}>\n {/* Dynamic rendering from formStructure - only email-related blocks */}\n {formStructure.children?.map((child: any, index: number) => {\n if (child.type === 'row') {\n // Render all rows, but filter blocks inside to only show grp-email-invitations\n return renderRow(\n child,\n index,\n formStructure.children.length,\n 'grp-email-invitations'\n );\n }\n return null;\n })}\n </View>\n </>\n )}\n\n {view === 'email' && !formStructure && (\n <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20 }}>\n <Text style={{ fontSize: 50, marginBottom: 16 }}>⚠️</Text>\n <Text style={{ fontSize: 18, fontWeight: 'bold', color: '#d9534f', marginBottom: 8, fontFamily }}>\n Configuration Error\n </Text>\n <Text style={{ fontSize: 14, color: '#666', textAlign: 'center', fontFamily }}>\n Unable to load form structure from widget configuration. Please check your widget configuration and try again.\n </Text>\n </View>\n )}\n\n {view === 'contacts' && (\n <>\n <Text style={styles.title}>{getContactsCustomization('importContacts.title', 'Add from Contacts')}</Text>\n\n <View style={styles.section}>\n <TextInput\n style={styles.input}\n placeholder={getContactsCustomization('importContacts.searchPlaceholder', 'Search contacts...')}\n placeholderTextColor=\"#999\"\n value={searchQuery}\n onChangeText={setSearchQuery}\n autoCapitalize=\"none\"\n autoCorrect={false}\n returnKeyType=\"search\"\n />\n\n {loadingContacts ? (\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#6291d5\" />\n <Text style={styles.loadingText}>{getContactsCustomization('importContacts.loadingText', 'Loading contacts...')}</Text>\n </View>\n ) : contactsError ? (\n <View style={styles.errorContainer}>\n <Text style={styles.errorTitle}>{getContactsCustomization('importContacts.errorTitle', 'Unable to Access Contacts')}</Text>\n <Text style={styles.errorMessage}>{contactsError.message}</Text>\n {contactsError.message.includes('Settings') && (\n <>\n <Text style={styles.errorHint}>\n To grant access: Open Settings → Privacy & Security → Contacts → Enable for\n this app\n </Text>\n <View style={styles.errorActions}>\n <TouchableOpacity\n style={[styles.button, styles.secondaryButton, styles.halfButton]}\n onPress={handleOpenSettings}\n >\n <Text style={styles.secondaryButtonText}>{getContactsCustomization('importContacts.openSettingsButton', 'Open Settings')}</Text>\n </TouchableOpacity>\n <TouchableOpacity\n style={[styles.button, styles.secondaryButton, styles.halfButton]}\n onPress={handleRetryContacts}\n >\n <Text style={styles.secondaryButtonText}>{getContactsCustomization('importContacts.retryButton', 'Retry')}</Text>\n </TouchableOpacity>\n </View>\n </>\n )}\n {!contactsError.message.includes('Settings') && (\n <TouchableOpacity\n style={[styles.button, styles.secondaryButton, { marginTop: 16 }]}\n onPress={handleRetryContacts}\n >\n <Text style={styles.secondaryButtonText}>{getContactsCustomization('importContacts.tryAgainButton', 'Try Again')}</Text>\n </TouchableOpacity>\n )}\n <Text style={styles.errorDetails}>\n {contactsError.message || 'Unknown error occurred'}\n </Text>\n </View>\n ) : (\n <View style={styles.contactsList}>\n {filteredContacts.length === 0 ? (\n <Text style={styles.emptyText}>\n {searchQuery\n ? getContactsCustomization('importContacts.emptySearchState', 'No contacts match your search')\n : getContactsCustomization('importContacts.emptyState', 'No contacts with email addresses found')}\n </Text>\n ) : (\n filteredContacts.map((contact) => {\n const isInvited = invitedContactIds.has(contact.id);\n const isLoading = loadingContactIds.has(contact.id);\n const initials = contact.name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n return (\n <View key={contact.id} style={styles.contactItem}>\n {contact.imageUri ? (\n <Image source={{ uri: contact.imageUri }} style={styles.contactAvatar} />\n ) : (\n <View style={styles.contactAvatarPlaceholder}>\n <Text style={styles.contactAvatarInitials}>{initials}</Text>\n </View>\n )}\n <View style={styles.contactInfo}>\n <Text style={styles.contactName}>{contact.name}</Text>\n <Text style={styles.contactEmail}>{contact.email}</Text>\n </View>\n {isInvited ? (\n <Text style={styles.invitedText}>{getContactsCustomization('importContacts.invitedStatus', '✓ Invited!')}</Text>\n ) : (\n <TouchableOpacity\n style={styles.inviteButton}\n onPress={() => handleInviteContactWithHaptics(contact.id)}\n disabled={isLoading}\n >\n {isLoading ? (\n <ActivityIndicator size=\"small\" color=\"#333\" />\n ) : (\n <Text style={styles.inviteButtonText}>{getContactsCustomization('importContacts.inviteButton', 'Invite')}</Text>\n )}\n </TouchableOpacity>\n )}\n </View>\n );\n })\n )}\n </View>\n )}\n </View>\n </>\n )}\n\n {view === 'googleContacts' && (\n <>\n <Text style={styles.title}>{getContactsCustomization('google.title', 'Add from Google Contacts')}</Text>\n\n <View style={styles.section}>\n <TextInput\n style={styles.input}\n placeholder={getContactsCustomization('google.searchPlaceholder', 'Search contacts...')}\n placeholderTextColor=\"#999\"\n value={googleSearchQuery}\n onChangeText={setGoogleSearchQuery}\n autoCapitalize=\"none\"\n autoCorrect={false}\n returnKeyType=\"search\"\n />\n\n {loadingGoogleContacts ? (\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#6291d5\" />\n <Text style={styles.loadingText}>{getContactsCustomization('google.loadingText', 'Loading Google contacts...')}</Text>\n </View>\n ) : googleContactsError ? (\n <View style={styles.errorContainer}>\n <Text style={styles.errorTitle}>{getContactsCustomization('google.errorTitle', 'Unable to Access Google Contacts')}</Text>\n <Text style={styles.errorMessage}>{googleContactsError.message}</Text>\n <TouchableOpacity\n style={[styles.button, styles.secondaryButton, { marginTop: 16 }]}\n onPress={handleRetryContacts}\n >\n <Text style={styles.secondaryButtonText}>{getContactsCustomization('google.tryAgainButton', 'Try Again')}</Text>\n </TouchableOpacity>\n <Text style={styles.errorDetails}>\n {googleContactsError.message || 'Unknown error occurred'}\n </Text>\n </View>\n ) : (\n <View style={styles.contactsList}>\n {filteredGoogleContacts.length === 0 ? (\n <Text style={styles.emptyText}>\n {googleSearchQuery\n ? getContactsCustomization('google.emptySearchState', 'No contacts match your search')\n : getContactsCustomization('google.emptyState', 'No Google contacts with email addresses found')}\n </Text>\n ) : (\n filteredGoogleContacts.map((contact) => {\n const isInvited = invitedGoogleContactIds.has(contact.id);\n const isLoading = loadingGoogleContactIds.has(contact.id);\n const initials = contact.name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n return (\n <View key={contact.id} style={styles.contactItem}>\n {contact.imageUri ? (\n <Image source={{ uri: contact.imageUri }} style={styles.contactAvatar} />\n ) : (\n <View style={styles.contactAvatarPlaceholder}>\n <Text style={styles.contactAvatarInitials}>{initials}</Text>\n </View>\n )}\n <View style={styles.contactInfo}>\n <Text style={styles.contactName}>{contact.name}</Text>\n <Text style={styles.contactEmail}>{contact.email}</Text>\n </View>\n {isInvited ? (\n <Text style={styles.invitedText}>{getContactsCustomization('google.invitedStatus', '✓ Invited!')}</Text>\n ) : (\n <TouchableOpacity\n style={styles.inviteButton}\n onPress={() => handleInviteGoogleContactWithHaptics(contact.id)}\n disabled={isLoading}\n >\n {isLoading ? (\n <ActivityIndicator size=\"small\" color=\"#333\" />\n ) : (\n <Text style={styles.inviteButtonText}>{getContactsCustomization('google.inviteButton', 'Invite')}</Text>\n )}\n </TouchableOpacity>\n )}\n </View>\n );\n })\n )}\n </View>\n )}\n </View>\n </>\n )}\n\n {view === 'qrcode' && (\n <View style={styles.section}>\n <View style={styles.qrCodeViewContainer}>\n {Platform.OS === 'web' ? (\n // In web preview mode, show placeholder QR code immediately for demo\n renderQRCode ? (\n renderQRCode({\n value: logic.invitationLink,\n size: 250,\n })\n ) : (\n <Text style={styles.errorMessage}>QR Code rendering not available</Text>\n )\n ) : loadingInvitationLink ||\n logic.invitationLink === 'https://app.vortexsoftware.com/invite/abc123' ? (\n // In native mode, show loading while fetching real link\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#6291d5\" />\n <Text style={styles.loadingText}>Generating QR Code...</Text>\n </View>\n ) : renderQRCode ? (\n renderQRCode({\n value: logic.invitationLink,\n size: 250,\n })\n ) : (\n <Text style={styles.errorMessage}>QR Code rendering not available</Text>\n )}\n </View>\n </View>\n )}\n </ScrollView>\n </View>\n );\n}\n\nconst createStyles = (fontFamily: string) =>\n StyleSheet.create({\n container: {\n flex: 1,\n paddingTop: 8,\n backgroundColor: '#fff',\n },\n handle: {\n width: 40,\n height: 4,\n backgroundColor: '#ddd',\n borderRadius: 2,\n alignSelf: 'center',\n marginBottom: 2,\n },\n header: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 4,\n zIndex: 10,\n backgroundColor: '#fff',\n },\n headerButton: {\n padding: 4,\n },\n headerTitle: {\n fontFamily,\n fontSize: 17,\n fontWeight: '600',\n color: '#1a1a1a',\n textAlign: 'center',\n flex: 1,\n },\n sendButton: {\n paddingHorizontal: 8,\n paddingVertical: 8,\n },\n sendButtonText: {\n fontFamily,\n color: '#2196F3',\n fontSize: 16,\n fontWeight: '600',\n },\n scrollContent: {\n flex: 1,\n paddingHorizontal: 20,\n // backgroundColor: 'none',\n },\n title: {\n fontFamily,\n fontSize: 18,\n fontWeight: '700',\n color: '#1a1a1a',\n marginTop: 16,\n marginBottom: 20,\n textAlign: 'center',\n },\n subtitle: {\n fontFamily,\n fontSize: 13,\n color: '#666',\n marginBottom: 20,\n lineHeight: 18,\n },\n // Sections\n section: {\n marginBottom: 10,\n },\n emptyRowEditMode: {\n minHeight: 40,\n backgroundColor: 'rgba(200, 200, 200, 0.2)',\n borderWidth: 1,\n borderColor: 'rgba(150, 150, 150, 0.3)',\n borderStyle: 'dashed',\n borderRadius: 4,\n },\n sectionTitle: {\n fontFamily,\n fontSize: 16,\n fontWeight: '700',\n color: '#1a1a1a',\n marginBottom: 12,\n },\n // Email chips\n emailChipsContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n gap: 8,\n marginBottom: 12,\n },\n emailChip: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: '#e3f2fd',\n borderRadius: 16,\n paddingVertical: 6,\n paddingLeft: 12,\n paddingRight: 8,\n borderWidth: 1,\n borderColor: '#90caf9',\n },\n emailChipText: {\n fontFamily,\n fontSize: 13,\n color: '#1565c0',\n marginRight: 6,\n },\n emailChipRemove: {\n fontFamily,\n fontSize: 20,\n color: '#1565c0',\n fontWeight: '600',\n lineHeight: 20,\n },\n // Input\n input: {\n fontFamily,\n borderWidth: 1,\n borderColor: '#ddd',\n borderRadius: 8,\n paddingHorizontal: 14,\n paddingVertical: 10,\n fontSize: 15,\n color: '#1a1a1a',\n backgroundColor: '#fafafa',\n marginBottom: 12,\n },\n // Buttons\n button: {\n borderRadius: 8,\n paddingVertical: 12,\n paddingHorizontal: 16,\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n secondaryButton: {\n backgroundColor: '#f5f5f5',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n },\n secondaryButtonText: {\n fontFamily,\n color: '#333',\n fontSize: 14,\n fontWeight: '600',\n },\n tertiaryButton: {\n backgroundColor: '#f5f5f5',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n },\n tertiaryButtonText: {\n fontFamily,\n color: '#333',\n fontSize: 11,\n fontWeight: '600',\n },\n actionButtons: {\n flexDirection: 'row',\n gap: 10,\n },\n halfButton: {\n flex: 1,\n },\n shareButtonsContainer: {\n flexDirection: 'column',\n gap: 10,\n },\n contactButtonsContainer: {\n flexDirection: 'column',\n gap: 10,\n },\n fullButton: {\n width: '100%',\n },\n buttonIconContainer: {\n marginRight: 8,\n },\n // Contacts list\n contactsList: {\n gap: 0,\n },\n contactItem: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n },\n contactAvatar: {\n width: 44,\n height: 44,\n borderRadius: 22,\n },\n contactAvatarPlaceholder: {\n width: 44,\n height: 44,\n borderRadius: 22,\n backgroundColor: '#6291d5',\n alignItems: 'center',\n justifyContent: 'center',\n },\n contactAvatarInitials: {\n fontSize: 16,\n fontWeight: '600',\n color: '#ffffff',\n },\n contactInfo: {\n flex: 1,\n marginLeft: 12,\n marginRight: 12,\n },\n contactName: {\n fontFamily,\n fontSize: 15,\n fontWeight: '600',\n color: '#1a1a1a',\n marginBottom: 4,\n },\n contactEmail: {\n fontFamily,\n fontSize: 13,\n color: '#666',\n },\n inviteButton: {\n paddingVertical: 8,\n paddingHorizontal: 16,\n backgroundColor: '#f5f5f5',\n borderWidth: 1,\n borderColor: '#e0e0e0',\n borderRadius: 6,\n minWidth: 80,\n alignItems: 'center',\n },\n inviteButtonText: {\n fontFamily,\n fontSize: 13,\n fontWeight: '600',\n color: '#333',\n },\n invitedText: {\n fontFamily,\n fontSize: 13,\n fontWeight: '600',\n color: '#666',\n },\n successMessageContainer: {\n paddingVertical: 12,\n alignItems: 'center',\n },\n // Loading state\n loadingContainer: {\n paddingVertical: 40,\n alignItems: 'center',\n justifyContent: 'center',\n },\n loadingText: {\n fontFamily,\n fontSize: 14,\n color: '#666',\n marginTop: 12,\n },\n emptyText: {\n fontFamily,\n fontSize: 14,\n color: '#999',\n textAlign: 'center',\n paddingVertical: 20,\n },\n // Error state\n errorContainer: {\n paddingVertical: 40,\n paddingHorizontal: 20,\n alignItems: 'center',\n justifyContent: 'center',\n },\n errorTitle: {\n fontFamily,\n fontSize: 16,\n fontWeight: '600',\n color: '#d9534f',\n marginBottom: 12,\n textAlign: 'center',\n },\n errorMessage: {\n fontFamily,\n fontSize: 14,\n color: '#666',\n marginBottom: 16,\n textAlign: 'center',\n lineHeight: 20,\n },\n errorHint: {\n fontFamily,\n fontSize: 13,\n color: '#666',\n marginTop: 12,\n marginBottom: 8,\n textAlign: 'center',\n lineHeight: 18,\n backgroundColor: '#f0f8ff',\n padding: 12,\n borderRadius: 6,\n borderWidth: 1,\n borderColor: '#b3d9ff',\n },\n errorActions: {\n flexDirection: 'row',\n gap: 10,\n marginTop: 16,\n marginBottom: 8,\n width: '100%',\n },\n errorDetails: {\n fontFamily,\n fontSize: 12,\n color: '#999',\n textAlign: 'center',\n fontStyle: 'italic',\n },\n // QR Code view\n qrCodeViewContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 20,\n backgroundColor: '#fff',\n borderRadius: 10,\n marginVertical: 10,\n },\n // Edit mode circle button\n editModeCircleButton: {\n position: 'absolute',\n right: 8,\n top: '50%',\n transform: [{ translateY: -15 }],\n width: 30,\n height: 30,\n borderRadius: 15,\n backgroundColor: '#2196F3',\n justifyContent: 'center',\n alignItems: 'center',\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.25,\n shadowRadius: 3.84,\n elevation: 5,\n },\n editModeCircleButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n });\n"]}