@teamvortexsoftware/vortex-react-native 0.0.13 → 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 (228) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1227 -11
  3. package/dist/InviteFormCore-D4HkMMo0.d.mts +721 -0
  4. package/dist/InviteFormCore-D9oUCbu7.d.ts +721 -0
  5. package/dist/VortexClient.js +192 -0
  6. package/dist/VortexClient.js.map +1 -0
  7. package/dist/VortexDeferredLinks.js +127 -0
  8. package/dist/VortexDeferredLinks.js.map +1 -0
  9. package/dist/clientInfo.js +45 -0
  10. package/dist/clientInfo.js.map +1 -0
  11. package/dist/components/ContactsPickerModal.js +182 -0
  12. package/dist/components/ContactsPickerModal.js.map +1 -0
  13. package/dist/components/InviteFormCore.js +2141 -0
  14. package/dist/components/InviteFormCore.js.map +1 -0
  15. package/dist/components/InviteFormMobile.js +463 -0
  16. package/dist/components/InviteFormMobile.js.map +1 -0
  17. package/dist/components/InviteFormWeb.js +295 -0
  18. package/dist/components/InviteFormWeb.js.map +1 -0
  19. package/dist/components/PlacedItemToolbar.js +147 -0
  20. package/dist/components/PlacedItemToolbar.js.map +1 -0
  21. package/dist/components/ShareButtons.js +1 -0
  22. package/dist/components/ShareButtons.js.map +1 -0
  23. package/dist/components/VrtxContactsImport.js +234 -0
  24. package/dist/components/VrtxContactsImport.js.map +1 -0
  25. package/dist/components/VrtxEmailInvitations.js +341 -0
  26. package/dist/components/VrtxEmailInvitations.js.map +1 -0
  27. package/dist/components/VrtxFindFriends.js +400 -0
  28. package/dist/components/VrtxFindFriends.js.map +1 -0
  29. package/dist/components/VrtxHeading.js +58 -0
  30. package/dist/components/VrtxHeading.js.map +1 -0
  31. package/dist/components/VrtxIncomingInvitations.js +657 -0
  32. package/dist/components/VrtxIncomingInvitations.js.map +1 -0
  33. package/dist/components/VrtxInvitationSuggestions.js +506 -0
  34. package/dist/components/VrtxInvitationSuggestions.js.map +1 -0
  35. package/dist/components/VrtxInviteContacts.js +512 -0
  36. package/dist/components/VrtxInviteContacts.js.map +1 -0
  37. package/dist/components/VrtxOutgoingInvitations.js +572 -0
  38. package/dist/components/VrtxOutgoingInvitations.js.map +1 -0
  39. package/dist/components/VrtxSearchBox.js +487 -0
  40. package/dist/components/VrtxSearchBox.js.map +1 -0
  41. package/dist/components/VrtxSelect.js +27 -0
  42. package/dist/components/VrtxSelect.js.map +1 -0
  43. package/dist/components/VrtxShareOptions.js +435 -0
  44. package/dist/components/VrtxShareOptions.js.map +1 -0
  45. package/dist/components/VrtxSubmit.js +132 -0
  46. package/dist/components/VrtxSubmit.js.map +1 -0
  47. package/dist/components/VrtxText.js +146 -0
  48. package/dist/components/VrtxText.js.map +1 -0
  49. package/dist/constants/mockData.d.mts +7 -0
  50. package/dist/constants/mockData.d.ts +7 -0
  51. package/dist/constants/mockData.js +48 -0
  52. package/dist/constants/mockData.js.map +1 -0
  53. package/dist/constants/mockData.mjs +22 -0
  54. package/dist/constants/mockData.mjs.map +1 -0
  55. package/dist/context/VortexModulesContext.js +135 -0
  56. package/dist/context/VortexModulesContext.js.map +1 -0
  57. package/dist/hooks/useInvitationFormLogic.d.mts +2 -0
  58. package/dist/hooks/useInvitationFormLogic.d.ts +2 -0
  59. package/dist/hooks/useInvitationFormLogic.js +300 -0
  60. package/dist/hooks/useInvitationFormLogic.js.map +1 -0
  61. package/dist/hooks/useInvitationFormLogic.mjs +276 -0
  62. package/dist/hooks/useInvitationFormLogic.mjs.map +1 -0
  63. package/dist/hooks/usePrefetchWidgetConfiguration.js +117 -0
  64. package/dist/hooks/usePrefetchWidgetConfiguration.js.map +1 -0
  65. package/dist/hooks/useThemeStyles.js +2 -0
  66. package/dist/hooks/useThemeStyles.js.map +1 -0
  67. package/dist/hooks/useVortexInvite.js +467 -56
  68. package/dist/hooks/useVortexInvite.js.map +1 -0
  69. package/dist/index-web.d.mts +93 -0
  70. package/dist/index-web.d.ts +93 -0
  71. package/dist/index-web.js +7397 -0
  72. package/dist/index-web.js.map +1 -0
  73. package/dist/index-web.mjs +7445 -0
  74. package/dist/index-web.mjs.map +1 -0
  75. package/dist/index.d.mts +656 -0
  76. package/dist/index.d.ts +656 -0
  77. package/dist/index.js +10205 -4
  78. package/dist/index.js.map +1 -0
  79. package/dist/index.mjs +10244 -0
  80. package/dist/index.mjs.map +1 -0
  81. package/dist/types/VortexClient.d.ts +106 -0
  82. package/dist/types/VortexClient.d.ts.map +1 -0
  83. package/dist/types/VortexDeferredLinks.d.ts +73 -0
  84. package/dist/types/VortexDeferredLinks.d.ts.map +1 -0
  85. package/dist/types/clientInfo.d.ts +5 -0
  86. package/dist/types/clientInfo.d.ts.map +1 -0
  87. package/dist/types/components/ContactsPickerModal.d.ts +18 -0
  88. package/dist/types/components/ContactsPickerModal.d.ts.map +1 -0
  89. package/dist/types/components/InviteFormCore.d.ts +166 -0
  90. package/dist/types/components/InviteFormCore.d.ts.map +1 -0
  91. package/dist/types/components/InviteFormMobile.d.ts +42 -0
  92. package/dist/types/components/InviteFormMobile.d.ts.map +1 -0
  93. package/dist/types/components/InviteFormWeb.d.ts +87 -0
  94. package/dist/types/components/InviteFormWeb.d.ts.map +1 -0
  95. package/dist/types/components/PlacedItemToolbar.d.ts +16 -0
  96. package/dist/types/components/PlacedItemToolbar.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 +1 -0
  134. package/dist/types/hooks/useThemeStyles.d.ts.map +1 -1
  135. package/dist/types/hooks/useVortexInvite.d.ts +48 -6
  136. package/dist/types/hooks/useVortexInvite.d.ts.map +1 -1
  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 +21 -0
  140. package/dist/types/index.d.ts.map +1 -1
  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/{shared/InvitationResult.js → types/platformOperations.js} +1 -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 +11 -3
  172. package/dist/types/utils/formUtils.d.ts.map +1 -1
  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 +3 -1
  184. package/dist/types/utils/themeUtils.d.ts.map +1 -1
  185. package/dist/types/vortexInvite.d.ts +145 -5
  186. package/dist/types/vortexInvite.d.ts.map +1 -1
  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 +161 -51
  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 +117 -32
  214. package/dist/utils/themeUtils.js.map +1 -0
  215. package/dist/vortexInvite.js +78 -167
  216. package/dist/vortexInvite.js.map +1 -0
  217. package/package.json +69 -31
  218. package/dist/components/Clipboard.js +0 -64
  219. package/dist/shared/api.js +0 -90
  220. package/dist/tests/TestVortexInvite.js +0 -134
  221. package/dist/types/components/Clipboard.d.ts +0 -16
  222. package/dist/types/components/Clipboard.d.ts.map +0 -1
  223. package/dist/types/shared/InvitationResult.d.ts +0 -24
  224. package/dist/types/shared/InvitationResult.d.ts.map +0 -1
  225. package/dist/types/shared/api.d.ts +0 -14
  226. package/dist/types/shared/api.d.ts.map +0 -1
  227. package/dist/types/tests/TestVortexInvite.d.ts +0 -4
  228. package/dist/types/tests/TestVortexInvite.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VrtxInviteContacts.js","sourceRoot":"","sources":["../../src/components/VrtxInviteContacts.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useMemo } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n ActivityIndicator,\n Image,\n TextInput,\n Platform,\n Linking,\n ViewStyle,\n} from 'react-native';\nimport { InviteContactsConfig, InviteContactsContact } from '../types/inviteContacts';\nimport { useVortexModules } from '../context/VortexModulesContext';\n\nconst isWeb = Platform.OS === 'web';\n\n// Parse CSS linear-gradient to extract first color for fallback on native\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, native gradient libraries, or solid color fallback\ninterface ButtonWrapperProps {\n children: React.ReactNode;\n style: ViewStyle | ViewStyle[];\n gradientString: string | null;\n onPress?: () => void;\n disabled?: boolean;\n}\n\nfunction ButtonWrapper({\n children,\n style,\n gradientString,\n onPress,\n disabled,\n}: ButtonWrapperProps) {\n const { gradientModule, loaders } = useVortexModules();\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={[...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, try to use gradient library if specified\n if (gradientString && gradientModule && loaders) {\n const GradientComponent = loaders.loadGradientComponent(gradientModule);\n const parsed = loaders.parseCSSLinearGradient(gradientString);\n\n if (GradientComponent && parsed) {\n const points = loaders.angleToGradientPoints(parsed.angle);\n\n return (\n <TouchableOpacity\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n >\n <GradientComponent\n colors={parsed.colors}\n locations={parsed.locations}\n start={points.start}\n end={points.end}\n style={styleArray}\n >\n {children}\n </GradientComponent>\n </TouchableOpacity>\n );\n }\n }\n\n // Fallback: solid color from first gradient stop\n const fallbackColor = gradientString && loaders ? loaders.parseGradientFirstColor(gradientString) : null;\n const finalStyle = fallbackColor ? [...styleArray, { backgroundColor: fallbackColor }] : styleArray;\n\n return (\n <TouchableOpacity\n style={finalStyle}\n onPress={onPress}\n disabled={disabled}\n activeOpacity={0.7}\n >\n {children}\n </TouchableOpacity>\n );\n}\n\nexport interface VrtxInviteContactsProps {\n block: any;\n /** Invite Contacts configuration with contacts list */\n inviteContactsConfig?: InviteContactsConfig;\n /** Function to create SMS invitation and get short link */\n createSmsInvitation?: (phoneNumber: string, contactName?: string) => Promise<string | null>;\n /** Trigger haptic feedback */\n triggerHaptic?: (style: 'light' | 'medium' | 'heavy') => Promise<void>;\n /** Theme colors from widget configuration */\n theme?: {\n primaryBackground?: string;\n primaryForeground?: string;\n secondaryBackground?: string;\n secondaryForeground?: string;\n foreground?: string;\n border?: string;\n };\n /** SMS message template with {{link}} placeholder */\n smsMessageTemplate?: string;\n}\n\n// Helper function to sort contacts alphabetically by name\nfunction sortContacts(contacts: InviteContactsContact[]): InviteContactsContact[] {\n return [...contacts].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function VrtxInviteContacts({\n block,\n inviteContactsConfig,\n createSmsInvitation,\n triggerHaptic,\n theme,\n smsMessageTemplate,\n}: VrtxInviteContactsProps) {\n const [showContactsList, setShowContactsList] = useState(false);\n const [actionInProgress, setActionInProgress] = useState<string | null>(null);\n const [searchQuery, setSearchQuery] = useState('');\n const [invitedContacts, setInvitedContacts] = useState<Set<string>>(new Set());\n\n // Get contacts from config\n const contacts = useMemo(() => {\n if (!inviteContactsConfig?.contacts || inviteContactsConfig.contacts.length === 0) {\n return [];\n }\n return sortContacts(inviteContactsConfig.contacts);\n }, [inviteContactsConfig?.contacts]);\n\n // Filter contacts based on search query\n const filteredContacts = useMemo(() => {\n if (!searchQuery.trim()) {\n return contacts;\n }\n const query = searchQuery.toLowerCase().trim();\n return contacts.filter(\n (contact) =>\n contact.name.toLowerCase().includes(query) ||\n contact.phoneNumber.includes(query)\n );\n }, [contacts, searchQuery]);\n\n // Extract customization from block settings (editor) or config props, with defaults\n const blockCustomizations = block?.settings?.customizations;\n const inviteYourContactsText =\n blockCustomizations?.inviteYourContactsText?.textContent ??\n inviteContactsConfig?.inviteYourContactsText ??\n 'Invite your contacts';\n const inviteButtonText =\n blockCustomizations?.inviteButton?.textContent ??\n inviteContactsConfig?.inviteButtonText ??\n 'Invite';\n const emptyStateMessage =\n blockCustomizations?.emptyStateMessage?.textContent ??\n inviteContactsConfig?.emptyStateMessage ??\n 'No contacts to invite';\n const smsMessage =\n blockCustomizations?.smsMessage?.textContent ??\n smsMessageTemplate ??\n 'Check this out! {{link}}';\n\n // Helper to get theme option value from block.theme.options\n const getBlockThemeValue = (key: string): string | undefined => {\n const options = block?.theme?.options;\n if (!options || !Array.isArray(options)) return undefined;\n const option = options.find((opt: any) => opt.key === key);\n return option?.value || undefined;\n };\n\n // Theme colors with defaults\n const colors = {\n primaryBackground: theme?.primaryBackground ?? '#6291d5',\n primaryForeground: theme?.primaryForeground ?? '#ffffff',\n secondaryBackground: theme?.secondaryBackground ?? '#ffffff',\n secondaryForeground: theme?.secondaryForeground ?? '#353e5c',\n foreground: theme?.foreground ?? '#334153',\n border: theme?.border ?? '#cccccc',\n };\n\n // Button styles from block.theme.options (microTheme)\n const inviteButtonStyles = {\n background: getBlockThemeValue('--vrtx-invite-contacts-invite-button-background') || colors.primaryBackground,\n color: getBlockThemeValue('--vrtx-invite-contacts-invite-button-color') || colors.primaryForeground,\n borderRadius: getBlockThemeValue('--vrtx-invite-contacts-invite-button-border-radius'),\n border: getBlockThemeValue('--vrtx-invite-contacts-invite-button-border'),\n padding: getBlockThemeValue('--vrtx-invite-contacts-invite-button-padding'),\n fontSize: getBlockThemeValue('--vrtx-invite-contacts-invite-button-font-size'),\n fontWeight: getBlockThemeValue('--vrtx-invite-contacts-invite-button-font-weight'),\n };\n\n // Avatar/initials styles from block.theme.options (microTheme)\n const avatarStyles = {\n background: getBlockThemeValue('--vrtx-invite-contacts-avatar-background') || colors.primaryBackground,\n color: getBlockThemeValue('--vrtx-invite-contacts-avatar-color') || colors.primaryForeground,\n };\n\n // Contact name styles from block.theme.options (microTheme)\n const contactNameStyles = {\n color: getBlockThemeValue('--vrtx-invite-contacts-name-color') || colors.foreground,\n fontFamily: getBlockThemeValue('--vrtx-invite-contacts-name-font-family'),\n fontSize: getBlockThemeValue('--vrtx-invite-contacts-name-font-size'),\n fontWeight: getBlockThemeValue('--vrtx-invite-contacts-name-font-weight'),\n };\n\n // Contact phone/subtitle styles from block.theme.options (microTheme)\n const contactPhoneStyles = {\n color: getBlockThemeValue('--vrtx-invite-contacts-subtitle-color') || colors.secondaryForeground,\n fontFamily: getBlockThemeValue('--vrtx-invite-contacts-subtitle-font-family'),\n fontSize: getBlockThemeValue('--vrtx-invite-contacts-subtitle-font-size'),\n };\n\n // Title styles from block.theme.options (microTheme) - for \"Invite your contacts\" text\n const titleStyles = {\n color: getBlockThemeValue('--vrtx-invite-contacts-title-color') || colors.foreground,\n fontFamily: getBlockThemeValue('--vrtx-invite-contacts-title-font-family'),\n fontSize: getBlockThemeValue('--vrtx-invite-contacts-title-font-size'),\n fontWeight: getBlockThemeValue('--vrtx-invite-contacts-title-font-weight'),\n };\n\n // Handle navigation to contacts list\n const handleNavigateToContacts = useCallback(async () => {\n await triggerHaptic?.('light');\n setShowContactsList(true);\n inviteContactsConfig?.onNavigateToContacts?.();\n }, [triggerHaptic, inviteContactsConfig]);\n\n // Handle navigation back from contacts list\n const handleNavigateBack = useCallback(async () => {\n await triggerHaptic?.('light');\n setShowContactsList(false);\n setSearchQuery('');\n inviteContactsConfig?.onNavigateBack?.();\n }, [triggerHaptic, inviteContactsConfig]);\n\n // Handle Invite button press\n const handleInvite = useCallback(\n async (contact: InviteContactsContact) => {\n setActionInProgress(contact.id);\n await triggerHaptic?.('light');\n\n try {\n // Create SMS invitation and get short link\n let shortLink: string | null = null;\n if (createSmsInvitation) {\n shortLink = await createSmsInvitation(contact.phoneNumber, contact.name);\n }\n\n if (shortLink) {\n // Replace {{link}} placeholder with actual link\n const message = smsMessage.replace('{{link}}', shortLink);\n\n // Open SMS app with pre-filled message\n const smsUrl = Platform.select({\n ios: `sms:${contact.phoneNumber}&body=${encodeURIComponent(message)}`,\n android: `sms:${contact.phoneNumber}?body=${encodeURIComponent(message)}`,\n default: `sms:${contact.phoneNumber}?body=${encodeURIComponent(message)}`,\n });\n\n await Linking.openURL(smsUrl);\n\n // Mark contact as invited\n setInvitedContacts((prev) => new Set(prev).add(contact.id));\n\n // Call optional callback for custom handling\n await inviteContactsConfig?.onInvite?.(contact, shortLink);\n\n // Notify other components that an invitation was created (for refresh)\n inviteContactsConfig?.onInvitationCreated?.(contact, shortLink);\n } else {\n console.warn('[VrtxInviteContacts] Failed to create SMS invitation - no short link returned');\n }\n } catch (err) {\n console.error('[VrtxInviteContacts] Invite failed:', err);\n } finally {\n setActionInProgress(null);\n }\n },\n [createSmsInvitation, triggerHaptic, inviteContactsConfig, smsMessage]\n );\n\n // Render avatar or initials\n const renderAvatar = (contact: InviteContactsContact) => {\n if (contact.avatarUrl) {\n return <Image source={{ uri: contact.avatarUrl }} style={styles.avatar} />;\n }\n\n // Generate initials from name\n const initials = contact.name\n .split(' ')\n .map((part) => part[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n\n // Handle avatar background with gradient support\n const avatarBackground = avatarStyles.background;\n const isAvatarGradient = avatarBackground?.includes('linear-gradient');\n const avatarBgStyle: any = {};\n\n if (isWeb && avatarBackground) {\n avatarBgStyle.background = avatarBackground;\n } else if (isAvatarGradient && avatarBackground) {\n const fallbackColor = parseGradientFirstColor(avatarBackground);\n avatarBgStyle.backgroundColor = fallbackColor || colors.primaryBackground;\n } else {\n avatarBgStyle.backgroundColor = avatarBackground || colors.primaryBackground;\n }\n\n return (\n <View style={[styles.avatarPlaceholder, avatarBgStyle]}>\n <Text style={[styles.avatarInitials, { color: avatarStyles.color }]}>{initials}</Text>\n </View>\n );\n };\n\n // Helper to parse CSS padding string to React Native padding object\n const parsePadding = (paddingStr: string | undefined) => {\n if (!paddingStr) return {};\n const parts = paddingStr.trim().split(/\\s+/);\n if (parts.length === 1) {\n const val = parseInt(parts[0], 10);\n return isNaN(val) ? {} : { paddingVertical: val, paddingHorizontal: val };\n }\n if (parts.length === 2) {\n const vertical = parseInt(parts[0], 10);\n const horizontal = parseInt(parts[1], 10);\n return {\n ...(isNaN(vertical) ? {} : { paddingVertical: vertical }),\n ...(isNaN(horizontal) ? {} : { paddingHorizontal: horizontal }),\n };\n }\n return {};\n };\n\n // Helper to parse border string (e.g., \"1px solid #ccc\")\n const parseBorder = (borderStr: string | undefined) => {\n if (!borderStr) return {};\n const match = borderStr.match(/^(\\d+)px\\s+(\\w+)\\s+(.+)$/);\n if (match) {\n return {\n borderWidth: parseInt(match[1], 10),\n borderColor: match[3],\n };\n }\n return {};\n };\n\n // Render a single contact item\n const renderContactItem = ({ item }: { item: InviteContactsContact }) => {\n const isLoading = actionInProgress === item.id;\n const isInvited = invitedContacts.has(item.id);\n\n // Build dynamic button style\n const backgroundValue = inviteButtonStyles.background;\n const isGradient = backgroundValue?.includes('linear-gradient');\n\n const dynamicButtonStyle: any = {\n ...(inviteButtonStyles.borderRadius ? { borderRadius: parseInt(inviteButtonStyles.borderRadius, 10) } : {}),\n ...parsePadding(inviteButtonStyles.padding),\n ...parseBorder(inviteButtonStyles.border),\n };\n\n if (isWeb && backgroundValue) {\n dynamicButtonStyle.background = backgroundValue;\n } else if (isGradient && backgroundValue) {\n const fallbackColor = parseGradientFirstColor(backgroundValue);\n dynamicButtonStyle.backgroundColor = fallbackColor || colors.primaryBackground;\n } else {\n dynamicButtonStyle.backgroundColor = backgroundValue || colors.primaryBackground;\n }\n\n // Build dynamic text style\n const dynamicTextStyle: any = {\n color: inviteButtonStyles.color,\n ...(inviteButtonStyles.fontSize ? { fontSize: parseInt(inviteButtonStyles.fontSize, 10) } : {}),\n ...(inviteButtonStyles.fontWeight ? { fontWeight: inviteButtonStyles.fontWeight } : {}),\n };\n\n // Build dynamic contact name style\n const dynamicNameStyle: any = {\n color: contactNameStyles.color,\n ...(contactNameStyles.fontFamily ? { fontFamily: contactNameStyles.fontFamily } : {}),\n ...(contactNameStyles.fontSize ? { fontSize: parseInt(contactNameStyles.fontSize, 10) } : {}),\n ...(contactNameStyles.fontWeight ? { fontWeight: contactNameStyles.fontWeight } : {}),\n };\n\n // Build dynamic contact phone style\n const dynamicPhoneStyle: any = {\n color: contactPhoneStyles.color,\n ...(contactPhoneStyles.fontFamily ? { fontFamily: contactPhoneStyles.fontFamily } : {}),\n ...(contactPhoneStyles.fontSize ? { fontSize: parseInt(contactPhoneStyles.fontSize, 10) } : {}),\n };\n\n return (\n <View style={styles.contactItem}>\n {renderAvatar(item)}\n <View style={styles.contactInfo}>\n <Text style={[styles.contactName, dynamicNameStyle]} numberOfLines={1}>\n {item.name}\n </Text>\n <Text style={[styles.contactPhone, dynamicPhoneStyle]} numberOfLines={1}>\n {item.phoneNumber}\n </Text>\n </View>\n <ButtonWrapper\n style={[\n styles.actionButton,\n dynamicButtonStyle,\n isInvited && styles.actionButtonInvited,\n ]}\n gradientString={inviteButtonStyles.background?.includes('gradient') ? inviteButtonStyles.background : null}\n onPress={() => handleInvite(item)}\n disabled={isLoading}\n >\n {isLoading ? (\n <ActivityIndicator size=\"small\" color={inviteButtonStyles.color} />\n ) : (\n <Text style={[styles.actionButtonText, dynamicTextStyle]}>\n {isInvited ? '✓' : inviteButtonText}\n </Text>\n )}\n </ButtonWrapper>\n </View>\n );\n };\n\n // Render the \"Invite your contacts\" entry row\n const renderInviteContactsEntry = () => {\n // Build dynamic title style\n const dynamicTitleStyle: any = {\n color: titleStyles.color,\n ...(titleStyles.fontFamily ? { fontFamily: titleStyles.fontFamily } : {}),\n ...(titleStyles.fontSize ? { fontSize: parseInt(titleStyles.fontSize, 10) } : {}),\n ...(titleStyles.fontWeight ? { fontWeight: titleStyles.fontWeight } : {}),\n };\n\n return (\n <TouchableOpacity\n style={styles.inviteContactsEntry}\n onPress={handleNavigateToContacts}\n activeOpacity={0.7}\n >\n <View style={styles.inviteContactsEntryContent}>\n <Text style={[styles.inviteContactsEntryText, dynamicTitleStyle]}>\n {inviteYourContactsText}\n </Text>\n </View>\n <Text style={[styles.chevronIcon, dynamicTitleStyle]}>›</Text>\n </TouchableOpacity>\n );\n };\n\n // Render the back header for contacts list\n const renderContactsHeader = () => {\n return (\n <View>\n <TouchableOpacity\n style={styles.backHeader}\n onPress={handleNavigateBack}\n activeOpacity={0.7}\n >\n <Text style={[styles.backChevron, { color: colors.secondaryForeground }]}>‹</Text>\n <Text style={[styles.backText, { color: colors.foreground }]}>Back</Text>\n </TouchableOpacity>\n <View style={[styles.searchContainer, { borderColor: colors.border }]}>\n <TextInput\n style={[styles.searchInput, { color: colors.foreground }]}\n placeholder=\"Search contacts...\"\n placeholderTextColor={colors.secondaryForeground}\n value={searchQuery}\n onChangeText={setSearchQuery}\n autoCapitalize=\"none\"\n autoCorrect={false}\n />\n </View>\n </View>\n );\n };\n\n // If no contacts provided or empty list, render nothing (no height)\n if (!inviteContactsConfig || contacts.length === 0) {\n return null;\n }\n\n // Contacts list view\n // Note: Using View + map instead of FlatList to avoid \"VirtualizedLists should never be nested\" warning\n // when this component is rendered inside a ScrollView (which InviteFormCore uses)\n if (showContactsList) {\n return (\n <View style={styles.listContainer}>\n {renderContactsHeader()}\n <View style={styles.listContent}>\n {filteredContacts.length === 0 ? (\n <View style={styles.emptyContainer}>\n <Text style={[styles.emptyText, { color: colors.secondaryForeground }]}>\n {searchQuery ? 'No contacts match your search' : emptyStateMessage}\n </Text>\n </View>\n ) : (\n filteredContacts.map((item) => (\n <View key={item.id}>\n {renderContactItem({ item })}\n </View>\n ))\n )}\n </View>\n </View>\n );\n }\n\n // Main view: \"Invite your contacts\" entry\n return (\n <View style={styles.entryContainer}>\n {renderInviteContactsEntry()}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n entryContainer: {\n // No padding - let the entry take minimal space\n },\n listContainer: {\n flex: 1,\n },\n emptyContainer: {\n padding: 16,\n alignItems: 'center',\n justifyContent: 'center',\n },\n emptyText: {\n fontSize: 14,\n textAlign: 'center',\n },\n listContent: {\n paddingBottom: 16,\n },\n contactItem: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n },\n avatar: {\n width: 44,\n height: 44,\n borderRadius: 22,\n },\n avatarPlaceholder: {\n width: 44,\n height: 44,\n borderRadius: 22,\n alignItems: 'center',\n justifyContent: 'center',\n },\n avatarInitials: {\n fontSize: 16,\n fontWeight: '600',\n },\n contactInfo: {\n flex: 1,\n marginLeft: 12,\n marginRight: 12,\n },\n contactName: {\n fontSize: 16,\n fontWeight: '500',\n },\n contactPhone: {\n fontSize: 13,\n marginTop: 2,\n },\n actionButton: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n borderRadius: 8,\n minWidth: 80,\n alignItems: 'center',\n justifyContent: 'center',\n },\n actionButtonInvited: {\n opacity: 0.7,\n },\n actionButtonText: {\n fontSize: 14,\n fontWeight: '600',\n },\n // \"Invite your contacts\" entry styles\n inviteContactsEntry: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingVertical: 16,\n },\n inviteContactsEntryContent: {\n flexDirection: 'row',\n alignItems: 'center',\n flex: 1,\n },\n inviteContactsEntryText: {\n fontSize: 16,\n fontWeight: '500',\n },\n inviteContactsEntryCount: {\n fontSize: 14,\n marginLeft: 8,\n opacity: 0.7,\n },\n inviteContactsEntryCountSpacing: {\n marginLeft: 8,\n },\n chevronIcon: {\n fontSize: 24,\n fontWeight: '300',\n marginLeft: 8,\n opacity: 0.75,\n },\n // Back header styles\n backHeader: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingVertical: 12,\n marginBottom: 8,\n },\n backChevron: {\n fontSize: 24,\n fontWeight: '300',\n marginRight: 4,\n },\n backText: {\n fontSize: 16,\n fontWeight: '500',\n },\n // Search box styles\n searchContainer: {\n borderWidth: 1,\n borderRadius: 8,\n marginBottom: 12,\n },\n searchInput: {\n paddingHorizontal: 12,\n paddingVertical: 10,\n fontSize: 16,\n },\n});\n"]}