six-degrees 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +14 -14
  4. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.rsc +20 -19
  14. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +20 -19
  15. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +16 -15
  16. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  17. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  18. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/update/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/import/page.js +1 -1
  50. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/import.html +1 -1
  53. package/.next/standalone/.next/server/app/import.rsc +24 -23
  54. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +24 -23
  55. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  56. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +18 -17
  57. package/.next/standalone/.next/server/app/index.html +1 -1
  58. package/.next/standalone/.next/server/app/index.rsc +22 -21
  59. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +18 -17
  60. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +22 -21
  61. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  63. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  65. package/.next/standalone/.next/server/app/launch.html +2 -2
  66. package/.next/standalone/.next/server/app/launch.rsc +24 -23
  67. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +24 -23
  68. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +18 -17
  70. package/.next/standalone/.next/server/app/page.js +1 -1
  71. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  74. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  75. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/paths.html +1 -1
  77. package/.next/standalone/.next/server/app/paths.rsc +24 -23
  78. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +24 -23
  79. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  80. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +18 -17
  81. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  82. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  83. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/profile.html +1 -1
  85. package/.next/standalone/.next/server/app/profile.rsc +24 -23
  86. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +24 -23
  87. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  88. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +18 -17
  89. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  90. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  91. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/queue.html +1 -1
  93. package/.next/standalone/.next/server/app/queue.rsc +24 -23
  94. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +24 -23
  95. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  96. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +18 -17
  97. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  98. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/scores.html +1 -1
  101. package/.next/standalone/.next/server/app/scores.rsc +24 -23
  102. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +24 -23
  103. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  104. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +18 -17
  105. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  106. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/settings.html +1 -1
  109. package/.next/standalone/.next/server/app/settings.rsc +24 -23
  110. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +24 -23
  111. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  112. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +18 -17
  113. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  114. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  115. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/setup.html +1 -1
  117. package/.next/standalone/.next/server/app/setup.rsc +24 -23
  118. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +24 -23
  119. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  120. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +18 -17
  121. package/.next/standalone/.next/server/app/social/page.js +1 -1
  122. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  123. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/social.html +1 -1
  125. package/.next/standalone/.next/server/app/social.rsc +24 -23
  126. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +24 -23
  127. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +18 -17
  129. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  136. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0um1uey._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +1 -1
  145. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15wc9e-._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +1 -1
  148. package/.next/standalone/.next/server/chunks/[root-of-the-server]__18bcnu4._.js +3 -0
  149. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  150. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +2 -2
  151. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +1 -1
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +2 -2
  157. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +2 -2
  159. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  160. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +2 -2
  161. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +5 -5
  162. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +5 -5
  163. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +5 -5
  164. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +9 -9
  165. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +3 -0
  166. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +1 -1
  167. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +3 -0
  168. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +3 -0
  169. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +3 -0
  171. package/.next/standalone/.next/server/chunks/ssr/{_0jdkqgi._.js → _1-658fq._.js} +2 -2
  172. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +3 -0
  173. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +3 -0
  174. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +9 -0
  175. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +9 -0
  176. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +3 -0
  177. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  178. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +3 -0
  179. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +13 -0
  180. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +13 -0
  181. package/.next/standalone/.next/server/chunks/ssr/{_0gtv9jb._.js → app_components_CompanyScores_1g0mytz.js} +2 -2
  182. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -12
  185. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  186. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  187. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +6 -6
  188. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  189. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
  190. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  191. package/.next/standalone/.next/server/chunks/ssr/{lib_0i8v-s3._.js → lib_1c4ieuw._.js} +2 -2
  192. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  193. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  194. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  195. package/.next/standalone/.next/server/pages/404.html +1 -1
  196. package/.next/standalone/.next/server/pages/500.html +1 -1
  197. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  199. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  200. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  201. package/.next/{static/chunks/2wgz9ietkqqe6.js → standalone/.next/static/chunks/0i02yxppzds1o.js} +1 -1
  202. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  203. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +1 -0
  204. package/.next/standalone/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  205. package/.next/{static/chunks/3sowbvbaj1s6n.js → standalone/.next/static/chunks/0ws7zy0w57ufi.js} +1 -1
  206. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  207. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +34 -0
  208. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  209. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  210. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  211. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +45 -0
  212. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  213. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +11 -0
  214. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  215. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  216. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  217. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  218. package/.next/standalone/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  219. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  220. package/.next/standalone/CHANGELOG.md +61 -0
  221. package/.next/standalone/README.md +22 -8
  222. package/.next/standalone/app/api/scraper/route.js +40 -3
  223. package/.next/standalone/app/api/update/route.js +12 -6
  224. package/.next/standalone/app/components/AppHeader.js +257 -0
  225. package/.next/standalone/app/components/Avatar.js +2 -1
  226. package/.next/standalone/app/components/ChainView.js +12 -12
  227. package/.next/standalone/app/components/FilterPanel.js +20 -12
  228. package/.next/standalone/app/components/ForceGraph.js +163 -25
  229. package/.next/standalone/app/components/GalaxyLab.js +43 -12
  230. package/.next/standalone/app/components/GridView.js +4 -4
  231. package/.next/standalone/app/components/LinkedInLimits.js +2 -1
  232. package/.next/standalone/app/components/ListView.js +3 -3
  233. package/.next/standalone/app/components/NoteDetail.js +2 -1
  234. package/.next/standalone/app/components/OnboardingGate.js +2 -2
  235. package/.next/standalone/app/components/OutlinkQuest.js +2 -1
  236. package/.next/standalone/app/components/PathsAnalyzer.js +3 -2
  237. package/.next/standalone/app/components/PeopleMap.js +2 -1
  238. package/.next/standalone/app/components/RingsView.js +3 -3
  239. package/.next/standalone/app/components/ScanTrail.js +85 -0
  240. package/.next/standalone/app/components/SeparationView.js +100 -77
  241. package/.next/standalone/app/components/Sidebar.js +4 -4
  242. package/.next/standalone/app/components/TheirCircle.js +2 -1
  243. package/.next/standalone/app/components/ThemeLoader.js +9 -0
  244. package/.next/standalone/app/components/UpdatePanel.js +20 -2
  245. package/.next/standalone/app/components/settings/AppearanceSection.js +226 -0
  246. package/.next/standalone/app/components/settings/NetworkHealthSection.js +2 -1
  247. package/.next/standalone/app/components/ui.js +2 -1
  248. package/.next/standalone/app/globals.css +70 -2
  249. package/.next/standalone/app/import/page.js +3 -3
  250. package/.next/standalone/app/layout.js +11 -2
  251. package/.next/standalone/app/page.js +69 -215
  252. package/.next/standalone/app/paths/page.js +8 -21
  253. package/.next/standalone/app/profile/page.js +11 -10
  254. package/.next/standalone/app/queue/page.js +8 -21
  255. package/.next/standalone/app/scores/page.js +1 -1
  256. package/.next/standalone/app/settings/page.js +7 -3
  257. package/.next/standalone/app/setup/page.js +83 -88
  258. package/.next/standalone/app/social/Crm.js +2 -1
  259. package/.next/standalone/app/social/SocialHub.js +2 -2
  260. package/.next/standalone/app/social/page.js +1 -1
  261. package/.next/standalone/lib/data-import.js +1 -0
  262. package/.next/standalone/lib/galaxy-export.js +2 -1
  263. package/.next/standalone/lib/galaxy-lab.js +24 -8
  264. package/.next/standalone/lib/level.js +51 -0
  265. package/.next/standalone/lib/release.js +13 -7
  266. package/.next/standalone/lib/scanner-python.js +38 -8
  267. package/.next/standalone/lib/scraper-client.js +2 -1
  268. package/.next/standalone/lib/separation.js +4 -2
  269. package/.next/standalone/lib/theme-store.js +61 -0
  270. package/.next/standalone/lib/themes.js +186 -0
  271. package/.next/standalone/lib/tiers.js +2 -8
  272. package/.next/standalone/package-lock.json +2 -2
  273. package/.next/standalone/package.json +4 -4
  274. package/.next/standalone/scripts/build-desktop.mjs +325 -0
  275. package/.next/standalone/scripts/build-site.mjs +85 -15
  276. package/.next/standalone/scripts/gen-test-network.mjs +93 -0
  277. package/.next/standalone/scripts/next.mjs +20 -0
  278. package/.next/standalone/scripts/readme_buttons.py +3 -0
  279. package/.next/standalone/scripts/requirements.txt +18 -1
  280. package/.next/standalone/scripts/site-news.mjs +54 -9
  281. package/.next/standalone/scripts/smoke-desktop.mjs +177 -0
  282. package/.next/standalone/scripts/windows/six-degrees.iss +100 -0
  283. package/.next/static/chunks/02pq76u7y4v9-.js +22 -0
  284. package/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
  285. package/.next/{standalone/.next/static/chunks/2wgz9ietkqqe6.js → static/chunks/0i02yxppzds1o.js} +1 -1
  286. package/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
  287. package/.next/static/chunks/0oyslj62jkubd.js +1 -0
  288. package/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
  289. package/.next/{standalone/.next/static/chunks/3sowbvbaj1s6n.js → static/chunks/0ws7zy0w57ufi.js} +1 -1
  290. package/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
  291. package/.next/static/chunks/172e10mi-tpo_.js +34 -0
  292. package/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
  293. package/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
  294. package/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
  295. package/.next/static/chunks/1m3017gp790pw.js +45 -0
  296. package/.next/static/chunks/1t20e8u0st7ep.js +1 -0
  297. package/.next/static/chunks/2-ch9rm27eril.js +11 -0
  298. package/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
  299. package/.next/static/chunks/3bp284gjf7dyq.js +1 -0
  300. package/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
  301. package/.next/static/chunks/3l4t8je6iguzc.js +1 -0
  302. package/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
  303. package/.next/static/chunks/42m0bqr8pbovz.js +11 -0
  304. package/CHANGELOG.md +61 -0
  305. package/README.md +22 -8
  306. package/lib/data-import.js +1 -0
  307. package/lib/galaxy-export.js +2 -1
  308. package/lib/galaxy-lab.js +24 -8
  309. package/lib/level.js +51 -0
  310. package/lib/release.js +13 -7
  311. package/lib/scanner-python.js +38 -8
  312. package/lib/scraper-client.js +2 -1
  313. package/lib/separation.js +4 -2
  314. package/lib/theme-store.js +61 -0
  315. package/lib/themes.js +186 -0
  316. package/lib/tiers.js +2 -8
  317. package/package.json +4 -4
  318. package/scripts/requirements.txt +18 -1
  319. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljcioj._.js +0 -3
  320. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16hs8kw._.js +0 -3
  321. package/.next/standalone/.next/server/chunks/ssr/_01kacen._.js +0 -3
  322. package/.next/standalone/.next/server/chunks/ssr/_0xi-fbs._.js +0 -3
  323. package/.next/standalone/.next/server/chunks/ssr/_0xmwmfv._.js +0 -3
  324. package/.next/standalone/.next/server/chunks/ssr/_1-b9hj7._.js +0 -9
  325. package/.next/standalone/.next/server/chunks/ssr/_112ewem._.js +0 -3
  326. package/.next/standalone/.next/server/chunks/ssr/_16ab63q._.js +0 -3
  327. package/.next/standalone/.next/server/chunks/ssr/_1fxm0-s._.js +0 -3
  328. package/.next/standalone/.next/server/chunks/ssr/_1ra1d3r._.js +0 -9
  329. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +0 -3
  330. package/.next/standalone/.next/server/chunks/ssr/lib_13rapwj._.js +0 -3
  331. package/.next/standalone/.next/static/chunks/03bziijw5srol.js +0 -1
  332. package/.next/standalone/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  333. package/.next/standalone/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  334. package/.next/standalone/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  335. package/.next/standalone/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  336. package/.next/standalone/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  337. package/.next/standalone/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  338. package/.next/standalone/.next/static/chunks/1i51yylxdzht1.js +0 -1
  339. package/.next/standalone/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  340. package/.next/standalone/.next/static/chunks/2dwtoszeq91us.js +0 -1
  341. package/.next/standalone/.next/static/chunks/2rqtpccruavf2.js +0 -1
  342. package/.next/standalone/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  343. package/.next/standalone/.next/static/chunks/355ryio1b7sm1.js +0 -1
  344. package/.next/standalone/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  345. package/.next/standalone/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  346. package/.next/static/chunks/03bziijw5srol.js +0 -1
  347. package/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
  348. package/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
  349. package/.next/static/chunks/0g_fy2034bp0x.js +0 -34
  350. package/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
  351. package/.next/static/chunks/0w-byiwb2zax8.js +0 -2
  352. package/.next/static/chunks/1g7jcovdejc9-.js +0 -1
  353. package/.next/static/chunks/1i51yylxdzht1.js +0 -1
  354. package/.next/static/chunks/1zf8swaasjf1e.js +0 -43
  355. package/.next/static/chunks/2dwtoszeq91us.js +0 -1
  356. package/.next/static/chunks/2rqtpccruavf2.js +0 -1
  357. package/.next/static/chunks/30x3oq_st7a5r.js +0 -1
  358. package/.next/static/chunks/355ryio1b7sm1.js +0 -1
  359. package/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
  360. package/.next/static/chunks/3fci6qi39-1n5.js +0 -1
  361. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  362. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  363. /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
  364. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
  365. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
  366. /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
- module.exports=[78386,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(41798),f=a.i(38246),g=a.i(75857),h=a.i(23310),i=a.i(76433),j=a.i(1328),k=a.i(90231),l=a.i(37732),m=a.i(16874),n=a.i(58834);let o=Object.freeze([{id:"new",label:"New"},{id:"contacted",label:"Contacted"},{id:"replied",label:"Replied"},{id:"meeting",label:"Meeting"},{id:"won",label:"Won/Partner"},{id:"not-now",label:"Not now"}]);o.map(a=>a.id);let p=a=>o.find(b=>b.id===a)?.label||"",q=a=>"string"==typeof a&&a.length>0&&a.length<300;function r(){return{version:1,settings:{awaitDays:7},people:{}}}function s(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}-${b(a.getMonth()+1)}-${b(a.getDate())}`}let t=/^https:\/\/(www\.)?linkedin\.com\/in\/[^/?#\s]+$/,u={S:0,A:1,B:2,C:3,D:4},v=(a,b)=>(a.degree??9)<(b.degree??9)||(a.degree??9)===(b.degree??9)&&(u[a.tier]??9)<(u[b.tier]??9),w=a=>"sponsored"===a.kind;function x(a,b,c=7){let d=[];for(let e of a){if(w(e)||!1!==e.lastFromThem||!e.last)continue;let a=Math.floor((b-e.last)/864e5);a>=c&&d.push({contact:e,waited:a})}return d.sort((a,b)=>a.waited-b.waited)}function y(a,b,c=null){let d=String(b||"").trim().toLowerCase();return!d||[a.name,a.row?.company,a.row?.role,a.row?.headline,...a.crm?.tags||[],a.crm?.notes].filter(Boolean).join("\n").toLowerCase().includes(d)||!!c&&a.conversations.some(a=>c.has(a.id))}function z(a){let b=null==a?"":String(a);return/^[=+\-@\t\r]/.test(b)&&(b=`'${b}`),/[",\r\n]/.test(b)?`"${b.replace(/"/g,'""')}"`:b}let A=a=>a?new Date(a).toISOString().slice(0,10):"",B=["Name","Company","Profile","Connection","Stage","Tags","Last contact","Who wrote last","Next follow-up","Notes"];function C({id:a,keep:d,group:e,token:f}){let[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),k=(0,c.useRef)(null),l=(0,c.useRef)(null);async function n(){let b=k.current,c=await fetch(`/api/social/messages?id=${encodeURIComponent(a)}&before=${g.start}&limit=200`).then(a=>a.json()).catch(()=>null);c&&!c.error&&(l.current=b?b.scrollHeight-b.scrollTop:null,h({...g,start:c.start,messages:[...c.messages,...g.messages]}))}(0,c.useEffect)(()=>{if(!d)return;let b=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(a)}&limit=100`).then(a=>a.json()).then(a=>{b&&(a.error?j(a.error):(l.current="bottom",h(a)))}).catch(()=>{b&&j("It couldn’t be read.")}),()=>{b=!1}},[a,d,f]),(0,c.useLayoutEffect)(()=>{let a=k.current;a&&l.current&&("bottom"===l.current?a.scrollTop=a.scrollHeight:a.scrollTop=a.scrollHeight-l.current,l.current=null)},[g]);let o={padding:"10px 14px 14px",fontSize:12.5,color:"#8b9a9a"};return d?i?(0,b.jsx)("div",{style:{...o,color:"#ff9b9b"},children:i}):g?g.total?(0,b.jsxs)("div",{ref:k,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(0,0,0,0.2)"},children:[g.start>0&&(0,b.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,b.jsxs)("button",{onClick:n,style:{background:"rgba(255,255,255,0.06)",border:m.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",g.start.toLocaleString()," more)"]})}),g.messages.map((a,c)=>{let d;return(0,b.jsx)("div",{style:{display:"flex",justifyContent:a.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,b.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,b.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:a.fromMe?"rgba(52,152,219,0.35)":"rgba(255,255,255,0.08)",color:"#eef",borderBottomRightRadius:a.fromMe?4:12,borderBottomLeftRadius:a.fromMe?12:4},children:a.text||(0,b.jsx)("i",{style:{color:"#8b9a9a"},children:"(no words: an attachment or a reaction)"})}),(0,b.jsxs)("div",{style:{fontSize:10.5,color:"#778",marginTop:2,textAlign:a.fromMe?"right":"left"},children:[a.fromMe?"You":e?"Someone in the group":"Them"," · ",(d=a.t)?new Date(d).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},g.start+c)})]}):(0,b.jsx)("div",{style:o,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,b.jsx)("div",{style:o,children:"Opening…"}):(0,b.jsxs)("div",{style:o,children:["Turn on ",(0,b.jsx)("b",{children:"Keep my messages"})," to read them here."]})}let D={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},E={new:"#8b9a9a",contacted:"#3498DB",replied:"#00d4aa",meeting:"#ff9f43",won:"#FFD700","not-now":"#667"},F=a=>a?new Date(a).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",G=a=>a?new Date(`${a}T12:00:00`).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",H=a=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(a||""))?a:null,I=(a,b,c=`${b}s`)=>`${a.toLocaleString()} ${1===a?b:c}`,J=[["inbox","Inbox"],["awaiting","Awaiting reply"],["due","Follow-ups due"],["pipeline","Pipeline"],["sent","Sent"],["received","Received"],["all","All"]],K=(a,b="#dfe8e8")=>({fontSize:10.5,padding:"1px 6px",borderRadius:4,background:a,color:b,whiteSpace:"nowrap"}),L={background:"rgba(255,255,255,0.06)",border:m.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 10px"},M={padding:"6px 10px",borderRadius:6,border:m.LINE,background:"rgba(0,0,0,0.3)",color:"#fff",fontSize:13};function N({net:a,asOf:d,keep:e,onKeep:f,switching:g,token:h,crmToken:j}){let[l,n]=(0,c.useState)(null),[u,C]=(0,c.useState)(null),[D,E]=(0,c.useState)("inbox"),[H,K]=(0,c.useState)(""),[P,Q]=(0,c.useState)(null),[S,U]=(0,c.useState)(null),[W,Y]=(0,c.useState)(100),[Z,$]=(0,c.useState)(null),_=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=!0;return fetch("/api/social/messages").then(a=>a.json()).then(b=>{a&&n(b)}).catch(()=>{a&&n({conversations:[],invitations:[],names:{},inviteNotes:{}})}),()=>{a=!1}},[h,e]),(0,c.useEffect)(()=>{let a=!0;return fetch("/api/social/crm").then(a=>a.json()).then(b=>{a&&C(b.crm||r())}).catch(()=>{a&&C(r())}),()=>{a=!1}},[j]),(0,c.useEffect)(()=>{let a=H.trim();if(!e||a.length<2)return;let b=!0,c=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(a)}`).then(a=>a.json()).then(c=>{b&&Q({q:a,ids:new Set(c.ids||[])})}).catch(()=>{})},250);return()=>{b=!1,clearTimeout(c)}},[H,e,h]);let aa=S?.type==="person"?S.key:null,{contacts:ab,groups:ac}=(0,c.useMemo)(()=>(function({conversations:a=[],invitations:b=[],network:c={},crm:d=r(),names:e={},also:f=[]}={}){let g=c.degree1||[],h=c.degree2||[],j=[...g,...h,...c.degree3||[]],l=new Map,m=new Map;for(let a of j){let b=(0,k.keyFor)(a),c=l.get(b);(!c||v(a,c))&&l.set(b,a)}for(let[a,b]of l){let c=(0,i.nameKey)(b.name);c&&m.set(c,m.has(c)&&m.get(c)!==a?null:a)}let n=new Set(g.map(k.keyFor)),o=(0,k.routeIndex)(h),p=new Map(g.map(a=>[a.id,a])),s=a=>a.startsWith("name:")&&m.get(a.slice(5))||a,u=new Map,w=a=>{var b,c,f;let g=s(a),h=u.get(g);if(h)return h;let i=l.get(g)||null;return h={key:g,name:(b=g,c=i,f=e,c?.name?c.name:f[b]?f[b]:b.startsWith("name:")?b.slice(5).replace(/\b\w/g,a=>a.toUpperCase()):String(b||"").replace(/\/+$/,"").split("/").pop()),row:i,connection:n.has(g),degree:i?.degree??null,profileUrl:t.test(g)?g:i?.profile_url&&t.test((0,k.keyFor)(i))?(0,k.keyFor)(i):null,introducers:i&&2===i.degree?[...new Set((0,k.routesFor)(i,o,p).map(a=>a.bridge?.name).filter(Boolean))]:[],conversations:[],groups:[],last:null,lastFromThem:null,unread:null,threadUrl:null,count:0,theyWrote:!1,kind:null,invitesIn:[],invitesOut:[],request:null,crm:d?.people?.[g]||null,lastContact:null},u.set(g,h),h},x=[];for(let b of a){if(!b||!Array.isArray(b.people))continue;if(b.group){x.push({...b,people:b.people.map(s)});continue}if(!b.people.length){x.push({...b,unknown:!0});continue}let a=w(b.people[0]);a.conversations.push(b),a.count+=b.count||0,(!0===b.lastFromThem||null!=b.count&&null!=b.mine&&b.count>b.mine)&&(a.theyWrote=!0),b.last&&(!a.last||b.last>=a.last)?(a.last=b.last,a.lastFromThem=b.lastFromThem,a.unread=b.unread,a.threadUrl=b.threadUrl||a.threadUrl):a.last||b.last||(a.threadUrl=b.threadUrl||a.threadUrl)}for(let a of u.values()){a.conversations.sort((a,b)=>(b.last||0)-(a.last||0));let b=new Set(a.conversations.map(a=>a.kind||null));a.kind=1===b.size?[...b][0]:null}for(let a of x)for(let b of a.people)u.get(b)?.groups.push(a.id);for(let a of b){if(!a?.key)continue;let b=w(a.key);!a.name||b.row||e[b.key]||(b.name=a.name),("in"===a.dir?b.invitesIn:b.invitesOut).push(a)}for(let a of j){if("sent"!==a.outreach_status&&"accepted"!==a.outreach_status&&"pending"!==a.unlock_status)continue;let b=w((0,k.keyFor)(a)),c=b.connection||"accepted"===a.outreach_status?"accepted":"pending";b.request&&"accepted"!==c||(b.request={status:c})}for(let a of Object.keys(d?.people||{}))w(a);for(let a of f)q(a)&&w(a);for(let a of u.values()){let b=[a.last,...a.invitesIn.map(a=>a.t),...a.invitesOut.map(a=>a.t)].filter(Boolean);a.lastContact=b.length?Math.max(...b):null}return{contacts:u,groups:x}})({conversations:l?.conversations||[],invitations:l?.invitations||[],network:a||{},crm:u||r(),names:l?.names||{},also:aa?[aa]:[]}),[l,a,u,aa]),ad=(0,c.useMemo)(()=>{let b=new Map;for(let c of[...a?.degree1||[],...a?.degree2||[]])b.has((0,k.keyFor)(c))||b.set((0,k.keyFor)(c),c);let c=l?.names||{};return a=>ab.get(a)?.name||b.get(a)?.name||c[a]||null},[ab,a,l]),ae=u?.settings?.awaitDays||7,[af]=(0,c.useState)(()=>Date.now()),ag=d||af,ah=s(new Date(af)),ai=(0,c.useMemo)(()=>[...ab.values()],[ab]),aj=(0,c.useMemo)(()=>{let a=(a,b)=>({type:"person",key:a.key,c:a,sub:b,t:a.lastContact||0}),b=a=>null==a.lastFromThem?"":a.lastFromThem?`They wrote ${F(a.last)}`:`You wrote ${F(a.last)}`,c=ai.filter(a=>a.lastContact||a.crm||a.request).map(c=>a(c,b(c)||(c.invitesOut[0]?`You asked to connect ${F(c.invitesOut[0].t)}`:"")||(c.invitesIn[0]?`Asked to connect ${F(c.invitesIn[0].t)}`:"")||(c.request?`Tracked request \xb7 ${c.request.status}`:"")||(c.crm?.stage?p(c.crm.stage):"")));for(let a of ac)c.push({type:"group",id:a.id,g:a,sub:a.last?`${a.lastFromThem?"Someone wrote":"You wrote"} ${F(a.last)}`:"",t:a.last||0});return c.sort((a,b)=>b.t-a.t),{inbox:[...ai].filter(a=>!w(a)&&(!0===a.lastFromThem||a.unread>0)).sort((a,b)=>(b.unread>0)-(a.unread>0)||(b.last||0)-(a.last||0)).map(c=>a(c,c.unread>0?`${c.unread} unread \xb7 ${b(c)}`:b(c))),awaiting:x(ai,ag,ae).map(b=>a(b.contact,`You wrote ${F(b.contact.last)}, no reply for ${I(b.waited,"day")}`)),due:(function(a,b=s()){return[...a].filter(a=>a.crm?.followUp&&a.crm.followUp<=b).sort((a,b)=>a.crm.followUp.localeCompare(b.crm.followUp))})(ai,ah).map(b=>a(b,b.crm.followUp===ah?"Follow up today":`Follow up was due ${G(b.crm.followUp)}`)),pipeline:function(a){let b=Object.fromEntries(o.map(a=>[a.id,[]]));for(let c of a)c.crm?.stage&&b[c.crm.stage].push(c);for(let a of Object.values(b))a.sort((a,b)=>(b.lastContact||0)-(a.lastContact||0));return b}(ai),sent:(function(a,b,c=7){let d=[...a],e=new Map(x(d,b,c).map(a=>[a.contact.key,a.waited])),f=[];for(let a of d){let b=[];for(let c of a.invitesOut)b.push({type:"invite",id:c.id,t:c.t,status:a.connection?"accepted":"pending"});a.request&&b.push({type:"request",status:a.request.status}),e.has(a.key)&&b.push({type:"awaiting",t:a.last,waited:e.get(a.key)}),b.length&&f.push({contact:a,items:b,t:Math.max(0,...b.map(a=>a.t||0))})}return f.sort((a,b)=>b.t-a.t)})(ai,ag,ae).map(b=>a(b.contact,b.items.map(a=>"invite"===a.type?`Request ${F(a.t)} \xb7 ${a.status}`:"request"===a.type?`Tracked request \xb7 ${a.status}`:`No reply for ${I(a.waited,"day")}`).join(" · "))),received:(function(a){let b=[];for(let c of a)!c.connection&&c.invitesIn.length&&b.push({contact:c,t:Math.max(0,...c.invitesIn.map(a=>a.t||0))});return b.sort((a,b)=>b.t-a.t)})(ai).map(b=>a(b.contact,`Asked to connect ${F(b.t)}`)),all:c}},[ai,ac,ag,ae,ah]),ak=e&&P?.q===H.trim()?P.ids:null,al=H.trim().toLowerCase(),am=(0,c.useMemo)(()=>{let b="pipeline"===D?[]:aj[D];if(!al)return b;let c=b.filter(a=>"person"===a.type?y(a.c,al,ak):String(a.g.title||"").toLowerCase().includes(al)||a.g.people.some(a=>String(ad(a)||"").toLowerCase().includes(al))||ak?.has(a.g.id));if("all"===D&&al.length>=2&&a){let b=new Set(c.map(a=>a.key)),d=new Set;for(let e of[...a.degree1||[],...a.degree2||[]]){let a=(0,k.keyFor)(e);if(!(b.has(a)||d.has(a))&&[e.name,e.company,e.role,e.headline].some(a=>String(a||"").toLowerCase().includes(al))&&(d.add(a),c.push({type:"person",key:a,c:null,row:e,sub:"Nothing on file yet",t:0}),d.size>=50))break}}return c},[aj,D,al,ak,a,ad]),an=(0,c.useMemo)(()=>{if("pipeline"!==D)return null;let a={};for(let[b,c]of Object.entries(aj.pipeline))a[b]=al?c.filter(a=>y(a,al,ak)):c;return a},[aj,D,al,ak]),ao={inbox:aj.inbox.length,awaiting:aj.awaiting.length,due:aj.due.length,pipeline:Object.values(aj.pipeline).reduce((a,b)=>a+b.length,0),sent:aj.sent.length,received:aj.received.length,all:aj.all.length};async function ap(a,b){let c=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,set:b})}),d=await c.json().catch(()=>({}));if(!c.ok)throw Error(d.error||"That couldn’t be saved.");C(b=>{let c={...b||r(),people:{...b?.people||{}}};return d.entry?c.people[a]=d.entry:delete c.people[a],c})}async function aq(a){let b=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{awaitDays:a}})}),c=await b.json().catch(()=>({}));b.ok&&C(a=>({...a||r(),settings:c.settings}))}async function ar(){window.confirm("Delete your CRM: every stage, tag, note and follow-up date you added? This can’t be undone.")&&(await fetch("/api/social/crm",{method:"DELETE"}),C(r()),$("Your CRM notes are deleted."))}let as=!l||!u||!a,at={padding:"12px 14px",borderRadius:8,border:m.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},au=S?.type==="group"?ac.find(a=>a.id===S.id):null,av=aa?ab.get(aa):null;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:at,children:[(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"#fff",cursor:g?"default":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:e,disabled:g,onChange:a=>f(a.target.checked)}),(0,b.jsx)("b",{children:"Keep my messages on this computer"}),(0,b.jsx)("span",{style:{fontSize:11.5,color:e?"#00ff88":"#8b9a9a"},children:e?"on":"off"})]}),(0,b.jsxs)(m.Body,{style:{margin:"6px 0 0",fontSize:12.5},children:["Off unless you turn it on. When it’s on, the messages themselves, including what other people wrote to you, and the notes sent with connection requests, are saved only in the app’s data folder on this computer. They’re never sent anywhere, and they aren’t in “Save a copy of my network”. ",(0,b.jsx)("i",{children:"Forget it"}),", or switching this off, deletes them. With it off, the CRM still shows who, when and who wrote last. Your own stages, tags, notes and follow-ups are always kept, on this computer only."]})]}),(0,b.jsxs)("div",{className:"crm-grid",style:{marginTop:10},children:[(0,b.jsxs)("div",{className:"pipeline"===D?"crm-wide":void 0,style:{...at,marginTop:0,padding:0,minWidth:0},children:[(0,b.jsx)("div",{role:"tablist","aria-label":"CRM views",style:{display:"flex",flexWrap:"wrap",gap:4,padding:"10px 10px 6px",borderBottom:m.LINE},children:J.map(([a,c])=>(0,b.jsxs)("button",{role:"tab","aria-selected":D===a,onClick:()=>{E(a),Y(100)},style:{...L,padding:"4px 9px",fontSize:12,background:D===a?"rgba(52,152,219,0.28)":"rgba(255,255,255,0.04)",color:D===a?"#fff":"#b8c4c4"},children:[c," ",(0,b.jsx)("span",{style:{color:D===a?"#cfe6f7":"#778"},children:as?"":ao[a].toLocaleString()})]},a))}),(0,b.jsxs)("div",{style:{padding:"8px 10px",borderBottom:m.LINE,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("input",{type:"search",value:H,onChange:a=>{K(a.target.value),Y(100)},placeholder:e?"Search names, companies, tags, notes, what was said":"Search names, companies, tags, notes","aria-label":"Search the CRM",style:{...M,flex:"1 1 180px",minWidth:0}}),(0,b.jsx)("button",{onClick:function(){var a;let b,c,d=ai.filter(a=>"sponsored"!==a.kind).sort((a,b)=>(b.lastContact||0)-(a.lastContact||0)),e=`Six Degrees CRM ${s()}.csv`;a=function(a){let b=[B.map(z).join(",")];for(let c of a)b.push([c.name,c.row?.company||"",c.profileUrl||"",c.connection?"Yes":"No",p(c.crm?.stage),(c.crm?.tags||[]).join("; "),A(c.lastContact),null==c.lastFromThem?"":c.lastFromThem?"Them":"You",c.crm?.followUp||"",c.crm?.notes||""].map(z).join(","));return`\uFEFF${b.join("\r\n")}\r
2
- `}(d),b=URL.createObjectURL(new Blob([a],{type:"text/csv;charset=utf-8"})),(c=document.createElement("a")).href=b,c.download=e,c.style.position="fixed",c.style.left="-9999px",document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(b),6e4),$(`Made “${e}” (${I(d.length,"person","people")}). Look for it in your Downloads folder, or wherever you chose to save it. It holds your notes: keep it private.`)},disabled:as,style:L,title:"A spreadsheet of everyone here, with your stages, tags, follow-ups and notes",children:"Export CSV"})]}),"awaiting"===D&&(0,b.jsxs)("div",{style:{padding:"8px 12px",borderBottom:m.LINE,fontSize:12.5,color:"#b8c4c4",display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:["You wrote last and nothing came back for",(0,b.jsx)("input",{type:"number",min:1,max:365,value:ae,"aria-label":"Days with no reply",onChange:a=>{let b=Number(a.target.value);b>=1&&b<=365&&aq(b)},style:{...M,width:64,padding:"3px 6px"}}),"days or more",d?`, as of ${F(d)}`:"","."]}),Z&&(0,b.jsx)("div",{style:{padding:"8px 12px",fontSize:12.5,color:"#00ff88",borderBottom:m.LINE},children:Z}),as&&(0,b.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"Loading…"}),!as&&"pipeline"===D&&(0,b.jsx)(T,{pipeline:an,picked:aa,onPick:a=>{U({type:"person",key:a})}}),!as&&"pipeline"!==D&&0===am.length&&(0,b.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:al?"Nothing matches that.":O[D]}),!as&&"pipeline"!==D&&(0,b.jsxs)("div",{children:[am.slice(0,W).map(a=>(0,b.jsx)(R,{r:a,nameOf:ad,active:"person"===a.type?aa===a.key:S?.id===a.id,onPick:()=>{U("person"===a.type?{type:"person",key:a.key}:{type:"group",id:a.id})}},"person"===a.type?`p:${a.key}`:`g:${a.id}`)),am.length>W&&(0,b.jsxs)("button",{onClick:()=>Y(W+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"#3498DB",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,am.length-W).toLocaleString()," more of ",am.length.toLocaleString()]})]})]}),(0,b.jsxs)("div",{ref:_,className:"pipeline"===D?"crm-wide":void 0,style:{...at,marginTop:0,minWidth:0,scrollMarginTop:80},children:[!S&&(0,b.jsx)("div",{style:{fontSize:13,color:"#8b9a9a"},children:"Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up."}),av&&(0,b.jsx)(V,{c:av,nameOf:ad,groups:ac,keep:e,token:h,inviteNotes:l?.inviteNotes||{},onChange:ap,onPickGroup:a=>{U({type:"group",id:a})}},av.key),au&&(0,b.jsx)(X,{g:au,contacts:ab,nameOf:ad,keep:e,token:h,onPick:a=>{U({type:"person",key:a})}})]})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:["Everyone from your export and the live sync, connections or not; groups are listed and marked. Sponsored messages are marked and kept out of the Inbox. Awaiting reply and warmth are judged as of the newest thing your data knows.",Object.keys(u?.people||{}).length>0&&(0,b.jsxs)(b.Fragment,{children:[" ","Your notes are in the app’s data folder, not in “Save a copy of my network”."," ",(0,b.jsx)("button",{onClick:ar,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:11.5,padding:0},children:"Delete my CRM notes"})]})]})]})}let O={inbox:"No one is waiting on a reply.",awaiting:"Nobody you wrote to is overdue a reply.",due:"No follow-ups are due. Set one on anyone, and it shows here on the day.",sent:"Nothing sent yet: choose your export folder above (its Invitations.csv), or mark requests sent in the app.",received:"No requests waiting on you, as far as your export shows.",all:"Nobody here yet. Choose your export folder above, or sync your messages."};function P({tier:a}){return(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:D[a]||"#556",flexShrink:0,display:"inline-block"}})}function Q({c:a}){return(0,b.jsxs)(b.Fragment,{children:[a&&!a.connection&&(0,b.jsx)("span",{style:K("rgba(255,159,67,0.18)","#ffc58a"),children:2===a.degree?"2nd degree":"Not a connection"}),a?.kind==="sponsored"&&(0,b.jsx)("span",{style:K("rgba(255,255,255,0.08)"),children:"Sponsored"}),a?.kind==="inmail"&&(0,b.jsx)("span",{style:K("rgba(155,89,182,0.25)"),children:"InMail"}),a?.crm?.stage&&(0,b.jsx)("span",{style:K("rgba(255,255,255,0.06)",E[a.crm.stage]),children:p(a.crm.stage)})]})}function R({r:a,nameOf:c,active:d,onPick:e}){let f,g=null,h=null;if("person"===a.type){let c=a.c;f=c?.name||a.row?.name||a.key,g=c?.row?.tier||a.row?.tier,h=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Q,{c:c||{connection:a.row?.degree===1,degree:a.row?.degree}}),c?.unread>0&&(0,b.jsxs)("span",{style:K("#3498DB","#fff"),children:[c.unread," unread"]})]})}else f=S(a.g,c),h=(0,b.jsx)("span",{style:K("rgba(255,255,255,0.08)"),children:a.g.unknown?"To someone unnamed":"Group"});let i="person"===a.type?a.c?.row?.company||a.row?.company:null;return(0,b.jsxs)("div",{role:"button",tabIndex:0,"aria-pressed":d,onClick:e,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),e())},style:{padding:"8px 12px",borderBottom:"1px solid rgba(255,255,255,0.04)",cursor:"pointer",background:d?"rgba(52,152,219,0.14)":"none"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:13,minWidth:0,flexWrap:"wrap"},children:[(0,b.jsx)(P,{tier:g}),(0,b.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100%"},children:f}),h]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:2,paddingLeft:14,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i,a.sub].filter(Boolean).join(" · ")})]})}function S(a,b){if(a.title)return a.title;if(a.unknown)return"A conversation only you wrote in";let c=a.people.map(b).filter(Boolean);return c.length?`${c.slice(0,3).join(", ")}${a.people.length>3?` +${a.people.length-3}`:""}`:`${a.people.length} people`}function T({pipeline:a,picked:c,onPick:d}){return(0,b.jsx)("div",{className:"crm-board",children:o.map(e=>(0,b.jsxs)("div",{style:{minWidth:0},children:[(0,b.jsxs)("div",{style:{fontSize:12,fontWeight:650,color:E[e.id],margin:"0 0 6px",display:"flex",justifyContent:"space-between"},children:[(0,b.jsx)("span",{children:e.label}),(0,b.jsx)("span",{style:{color:"#778"},children:a[e.id].length.toLocaleString()})]}),0===a[e.id].length&&(0,b.jsx)("div",{style:{fontSize:11.5,color:"#667",padding:"6px 0"},children:"No one"}),a[e.id].slice(0,200).map(a=>(0,b.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>d(a.key),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),d(a.key))},style:{padding:"7px 9px",marginBottom:6,borderRadius:6,border:m.LINE,cursor:"pointer",fontSize:12.5,background:c===a.key?"rgba(52,152,219,0.18)":"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[(0,b.jsx)(P,{tier:a.row?.tier}),(0,b.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name})]}),(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:11,marginTop:2},children:[a.row?.company,a.crm.followUp?`Follow up ${G(a.crm.followUp)}`:null].filter(Boolean).join(" · ")})]},a.key)),a[e.id].length>200&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#778"},children:["and ",(a[e.id].length-200).toLocaleString()," more (search to find them)"]})]},e.id))})}let U={fontSize:12,fontWeight:650,color:"#b8c4c4",margin:"16px 0 6px",textTransform:"uppercase",letterSpacing:.4};function V({c:a,nameOf:d,groups:e,keep:f,token:g,inviteNotes:h,onChange:i,onPickGroup:j}){let k=a.row,[l,n]=(0,c.useState)(a.conversations[0]?.id||null),o=H(a.profileUrl),p=H(a.threadUrl),q=a.connection?`A connection${k?.connected_date?` since ${F(Date.parse(k.connected_date))}`:""}.`:2===a.degree?"2nd degree: not a connection yet.":"Not a connection.";return(0,b.jsxs)("div",{style:{fontSize:13},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)(P,{tier:k?.tier}),(0,b.jsx)("h3",{style:{margin:0,fontSize:17},children:a.name}),k?.tier&&(0,b.jsxs)("span",{style:K("rgba(255,255,255,0.06)",D[k.tier]),children:[k.tier," tier"]}),(0,b.jsx)(Q,{c:a})]}),(k?.headline||k?.company)&&(0,b.jsx)("div",{style:{color:"#b8c4c4",marginTop:4},children:k.headline||[k.role,k.company].filter(Boolean).join(" at ")}),(0,b.jsxs)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[q,a.introducers.length>0&&(0,b.jsxs)(b.Fragment,{children:[" Who can introduce you: ",(0,b.jsx)("b",{style:{color:"#dfe8e8"},children:a.introducers.slice(0,6).join(", ")}),a.introducers.length>6?` and ${a.introducers.length-6} more`:"","."]}),k?.unlocked_from_name&&a.connection&&(0,b.jsxs)(b.Fragment,{children:[" You met through ",(0,b.jsx)("b",{style:{color:"#dfe8e8"},children:k.unlocked_from_name}),"."]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:12,marginTop:6,flexWrap:"wrap",fontSize:12.5},children:[o&&(0,b.jsx)("a",{href:o,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Profile on LinkedIn ↗"}),p&&(0,b.jsx)("a",{href:p,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Conversation on LinkedIn ↗"})]}),(0,b.jsx)(W,{c:a,onChange:i}),(0,b.jsx)("div",{style:U,children:"Conversations"}),0===a.conversations.length&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None one to one."}),a.conversations.map(a=>(0,b.jsxs)("div",{style:{border:m.LINE,borderRadius:6,marginBottom:6,overflow:"hidden"},children:[(0,b.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":l===a.id,onClick:()=>n(l===a.id?null:a.id),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),n(l===a.id?null:a.id))},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",padding:"7px 10px",cursor:"pointer",fontSize:12.5,background:l===a.id?"rgba(255,255,255,0.04)":"none"},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:F(a.last)||"No date"}),null!=a.lastFromThem&&(0,b.jsx)("span",{style:{color:a.lastFromThem?"#ff9f43":"#8b9a9a"},children:a.lastFromThem?"They wrote last":"You wrote last"}),null!=a.count&&(0,b.jsx)("span",{style:{color:"#8b9a9a"},children:I(a.count,"message")}),null!=a.mine&&null!=a.count&&a.mine===a.count&&(0,b.jsx)("span",{style:K("rgba(255,255,255,0.06)"),children:"Only you wrote"}),a.folder&&"inbox"!==a.folder&&(0,b.jsx)("span",{style:K("rgba(255,255,255,0.06)"),children:a.folder}),"inmail"===a.kind&&(0,b.jsx)("span",{style:K("rgba(155,89,182,0.25)"),children:"InMail"}),"sponsored"===a.kind&&(0,b.jsx)("span",{style:K("rgba(255,255,255,0.08)"),children:"Sponsored"}),a.unread>0&&(0,b.jsxs)("span",{style:K("#3498DB","#fff"),children:[a.unread," unread"]})]}),l===a.id&&(0,b.jsx)(C,{id:a.id,keep:f,group:!1,token:g},`${a.id}:${g}:${f}`)]},a.id)),a.groups.length>0&&(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:4},children:["Also in ",I(a.groups.length,"group"),":"," ",a.groups.slice(0,8).map((a,c)=>{let f=e.find(b=>b.id===a);return(0,b.jsxs)("span",{children:[c>0?", ":"",(0,b.jsx)("button",{onClick:()=>j(a),style:{background:"none",border:"none",color:"#3498DB",cursor:"pointer",padding:0,fontSize:12.5},children:f?S(f,d):"a group"})]},a)})]}),(0,b.jsx)("div",{style:U,children:"Requests"}),a.invitesOut.length+a.invitesIn.length===0&&!a.request&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None on file."}),[...a.invitesOut,...a.invitesIn].sort((a,b)=>(b.t||0)-(a.t||0)).map(c=>(0,b.jsxs)("div",{style:{fontSize:12.5,marginBottom:6},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:"out"===c.dir?"You asked to connect":"They asked to connect"}),(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",F(c.t)||"no date"," · ",a.connection?"accepted":"out"===c.dir?"pending":"not accepted yet"]}),f&&h[c.id]&&(0,b.jsx)("div",{style:{marginTop:3,padding:"6px 9px",borderRadius:8,background:"rgba(255,255,255,0.06)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:h[c.id]})]},c.id)),a.request&&(0,b.jsxs)("div",{style:{fontSize:12.5},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:"Request tracked in the app"}),(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",a.request.status]})]})]})}function W({c:a,onChange:d}){let e=a.crm||{},[f,g]=(0,c.useState)(e.notes||""),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(null),l=(0,c.useRef)(null),m=a.theyWrote?"replied":a.conversations.length||a.invitesOut.length||a.request?"contacted":"new";async function n(b){k("Saving…");try{await d(a.key,b),k("Saved")}catch(a){k(a.message)}}(0,c.useEffect)(()=>()=>clearTimeout(l.current),[]);let q=a=>s(new Date(Date.now()+864e5*a)),r=e.tags||[];function t(){let a=h.trim();a&&(i(""),n({tags:[...r,...a.split(",")]}))}return(0,b.jsxs)("div",{style:{marginTop:12,padding:"10px 12px",borderRadius:8,background:"rgba(52,152,219,0.06)",border:"1px solid rgba(52,152,219,0.18)"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"flex-end"},children:[(0,b.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Stage",(0,b.jsxs)("select",{value:e.stage||"",onChange:a=>n({stage:a.target.value||null}),style:{...M,padding:"5px 8px"},children:[(0,b.jsxs)("option",{value:"",children:["Not set (looks like ",p(m),")"]}),o.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Next follow-up",(0,b.jsx)("input",{type:"date",value:e.followUp||"",onChange:a=>n({followUp:a.target.value||null}),style:{...M,padding:"4px 8px",colorScheme:"dark"}})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[(0,b.jsx)("button",{onClick:()=>n({followUp:q(3)}),style:L,children:"In 3 days"}),(0,b.jsx)("button",{onClick:()=>n({followUp:q(7)}),style:L,children:"In a week"}),e.followUp&&(0,b.jsx)("button",{onClick:()=>n({followUp:null}),style:L,children:"Clear"})]})]}),null==e.stage&&"new"!==m&&(0,b.jsxs)("button",{onClick:()=>n({stage:m}),style:{...L,marginTop:8},children:["Set to ",p(m)]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"},children:[r.map(a=>(0,b.jsxs)("span",{style:{...K("rgba(255,255,255,0.08)"),fontSize:11.5,display:"inline-flex",gap:4,alignItems:"center"},children:[a,(0,b.jsx)("button",{"aria-label":`Remove ${a}`,onClick:()=>n({tags:r.filter(b=>b!==a)}),style:{background:"none",border:"none",color:"#8b9a9a",cursor:"pointer",padding:0,fontSize:12},children:"×"})]},a)),(0,b.jsx)("input",{value:h,onChange:a=>i(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),t())},onBlur:t,placeholder:"Add a tag","aria-label":"Add a tag",style:{...M,padding:"3px 8px",fontSize:12,width:120}})]}),(0,b.jsx)("textarea",{value:f,onChange:a=>{var b;g(b=a.target.value),clearTimeout(l.current),l.current=setTimeout(()=>n({notes:b}),800)},onBlur:function(){clearTimeout(l.current),f!==(e.notes||"")&&n({notes:f})},placeholder:"Your notes on them: kept on this computer only","aria-label":"Notes",rows:4,style:{...M,width:"100%",marginTop:10,resize:"vertical",fontFamily:"inherit",lineHeight:1.45,boxSizing:"border-box"}}),(0,b.jsx)("div",{style:{fontSize:11,color:j&&"Saved"!==j&&"Saving…"!==j?"#ff9b9b":"#778",marginTop:4,minHeight:14},children:j||""})]})}function X({g:a,contacts:c,nameOf:d,keep:e,token:f,onPick:g}){let h=H(a.threadUrl);return(0,b.jsxs)("div",{style:{fontSize:13},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("h3",{style:{margin:0,fontSize:17},children:S(a,d)}),(0,b.jsx)("span",{style:K("rgba(255,255,255,0.08)"),children:a.unknown?"To someone unnamed":"Group"}),a.unread>0&&(0,b.jsxs)("span",{style:K("#3498DB","#fff"),children:[a.unread," unread"]})]}),(0,b.jsx)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[a.last?`Last active ${F(a.last)}`:null,null!=a.count?I(a.count,"message"):null].filter(Boolean).join(" · ")}),h&&(0,b.jsx)("a",{href:h,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none",fontSize:12.5,display:"inline-block",marginTop:6},children:"Conversation on LinkedIn ↗"}),a.people.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{style:U,children:"Who’s in it"}),(0,b.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:a.people.map(a=>{let e=c.get(a);return(0,b.jsxs)("button",{onClick:()=>g(a),style:{...L,display:"inline-flex",gap:6,alignItems:"center"},children:[(0,b.jsx)(P,{tier:e?.row?.tier}),d(a)||a.split("/").pop(),e&&!e.connection&&(0,b.jsx)("span",{style:{color:"#ffc58a",fontSize:10.5},children:"not a connection"})]},a)})})]}),(0,b.jsx)("div",{style:U,children:"Messages"}),(0,b.jsx)("div",{style:{border:m.LINE,borderRadius:6,overflow:"hidden"},children:(0,b.jsx)(C,{id:a.id,keep:e,group:!0,token:f},`${a.id}:${f}:${e}`)})]})}let Y={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},Z={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},$=a=>a?new Date(a).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function _(a){let b=[],c={},d=0;for(let e of a)for(let a of e.messages){let f=JSON.stringify(a).length+2;d+f>25e5&&d>0&&(b.push(c),c={},d=0),c[e.id]||(c[e.id]={title:e.title||"",messages:[]},d+=e.id.length+(e.title||"").length+40),c[e.id].messages.push(a),d+=f}b.push(c);for(let a=0;a<b.length;a++){let c=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:a,parts:b.length,threads:b[a]})});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}async function aa(a){let b={};for(let c of a)c.note&&(b[c.id]=c.note);let c=await fetch("/api/social/messages",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({invites:b})});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||"The requests’ notes couldn’t be saved.")}function ab({embedded:a=!1}){let{userId:d}=(0,g.useUser)(),[e,o]=(0,c.useState)(void 0),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(()=>(0,l.scannerNow)()),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(0),[D,E]=(0,c.useState)(0),F=(0,c.useRef)(null),G=(0,c.useRef)(null),H=e?.keepMessages===!0,I=()=>fetch("/api/social").then(a=>a.json()).then(a=>o(a.social||null)).catch(()=>o(null)).finally(()=>C(a=>a+1));async function J(a){w(!0),u(null);try{let b={};for(let c of Array.from(a||[])){let a=c.name.toLowerCase();Z[a]&&!b[a]&&(b[a]=(0,i.readTable)(await c.text(),Z[a]))}if(!Object.keys(b).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let c=b["connections.csv"]||[],d=b["messages.csv"]?(0,i.messageStats)(b["messages.csv"]):{asOf:null,people:new Map},e=b["messages.csv"]?(0,i.buildConversations)(b["messages.csv"],{keepText:H}):null,f=b["invitations.csv"]?(0,i.buildInvitations)(b["invitations.csv"],{keepText:H}):null;F.current=b["messages.csv"]||null,G.current=b["invitations.csv"]||null;let g={};for(let[a,b]of d.people)g[a]={last:b.last,lastFromThem:b.lastFromThem,total:b.total,recent:b.recent};if(r)for(let a of c){let b=a["email address"];if(!b)continue;let c=(0,k.keyFor)({profile_url:a.url});g[c]={...g[c]||{},email:b}}let h=d.asOf||Date.now(),j={asOf:h,people:g,conversations:e?e.conversations.map(i.conversationSummary):[],chapters:(0,i.careerChapters)(b["positions.csv"]||[],c,h),posts:b["shares.csv"]?(0,i.postingEffect)(b["shares.csv"],c):null,invites:b["invitations.csv"]?(0,i.invitationSplit)(b["invitations.csv"]):null,invitations:(f||[]).map(({note:a,...b})=>b),names:e?e.names:{},emails:r},l=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j)});if(!l.ok)throw Error((await l.json().catch(()=>({}))).error||"It couldn’t be saved.");e&&H&&await _(e.conversations),f&&H&&await aa(f);let m=e?[e.drafts?`${e.drafts.toLocaleString()} unsent ${1===e.drafts?"draft":"drafts"} left out`:"",e.skipped?`${e.skipped.toLocaleString()} ${1===e.skipped?"row":"rows"} with no conversation or date left out`:""].filter(Boolean):[];u({good:!0,text:`Read ${Object.keys(b).length} of LinkedIn’s files: ${d.people.size.toLocaleString()} people you’ve messaged one to one`+(e?`, ${e.conversations.length.toLocaleString()} conversations${H?", their messages kept on this computer":""}`:"")+(f?`, ${f.length.toLocaleString()} connection requests`:"")+`.${m.length?` (${m.join("; ")}.)`:""}`}),await I()}catch(a){u({good:!1,text:a.message})}finally{w(!1)}}async function K(a=!1){u(null);try{let b=await (0,l.runScrape)(a?"messages-full":"messages");u(b?.exitCode===0?{good:!0,text:a?"Your whole messages history is read.":"Your messages list is read."}:{good:!1,text:"The sync stopped before it finished. The Scan page has the log."}),await I()}catch(a){u({good:!1,text:a.message})}}async function L(a){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:a})}),I()}async function M(a){if(a||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){A(!0),u(null);try{if(a||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:a})})).ok)throw Error("The switch couldn’t be saved.");a&&(F.current||G.current)?(F.current&&await _((0,i.buildConversations)(F.current,{keepText:!0}).conversations),G.current&&await aa((0,i.buildInvitations)(G.current,{keepText:!0})),u({good:!0,text:"Your messages are kept on this computer now."})):a?u({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):u({good:!0,text:"Off. The kept messages are deleted."})}catch(a){u({good:!1,text:a.message})}finally{A(!1),I()}}}async function O(){await fetch("/api/social",{method:"DELETE"}),F.current=null,G.current=null;let a="Forgotten. Nothing from your export or messages is kept here now, the messages themselves included.";window.confirm("Also delete your CRM: the stages, tags, notes and follow-up dates you added? This can’t be undone. Cancel keeps them.")?(await fetch("/api/social/crm",{method:"DELETE"}),E(a=>a+1),a+=" Your CRM notes are deleted too."):a+=" Your CRM notes are kept.",u({good:!0,text:a}),I()}(0,c.useEffect)(()=>{I()},[]),(0,c.useEffect)(()=>(0,l.watchScanner)(()=>y((0,l.scannerNow)())),[]),(0,c.useEffect)(()=>{if(!d)return;let a=!0;return(0,h.loadNetwork)(d).then(b=>{a&&q(b)}).catch(()=>{}),()=>{a=!1}},[d]);let{merged:P,asOf:Q}=(0,c.useMemo)(()=>(0,j.mergeSocial)(e),[e]),R=(0,c.useMemo)(()=>{let a={warm:0,cool:0,dormant:0,never:0};for(let b of p?.degree1||[])a[(0,i.warmthOf)(P.get((0,k.keyFor)(b)),Q)]+=1;return a},[p,P,Q]);if(n.IS_DEMO)return(0,b.jsx)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#aaa",padding:40,fontFamily:m.FONT},children:"Not part of the demo."});let S=x?.running,T={padding:"12px 14px",borderRadius:8,border:m.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},U={fontSize:16,margin:"24px 0 6px"};return(0,b.jsxs)("div",{style:a?{color:"#fff",fontFamily:m.FONT}:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:m.FONT},children:[!a&&(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:m.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(f.default,{href:"/",style:{color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:m.LINE},children:"← Back to Map"}),(0,b.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"#FFD700"},children:["Social ",(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a",fontWeight:600},children:"experimental"})]})]}),(0,b.jsxs)("main",{style:{maxWidth:1180,margin:"0 auto",padding:"8px 16px 64px"},children:[(0,b.jsxs)(m.Body,{style:{marginTop:16},children:["Everyone you’ve been in touch with on LinkedIn, connections or not: who’s waiting on you, who hasn’t answered, what you’ve sent and received, and your own notes and follow-ups on each, from your own LinkedIn data. Only dates, who wrote last, counts and names are kept on this computer, and what messages say only if you turn on ",(0,b.jsx)("i",{children:"Keep my messages"})," below."]}),(0,b.jsx)("h2",{style:U,children:"Your LinkedIn export"}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)(m.Body,{style:{margin:0},children:["On LinkedIn: ",(0,b.jsx)("i",{children:"Settings → Data privacy → Get a copy of your data"}),", pick the larger archive, and unzip the file it emails you. Then choose that folder here. It’s read in this window; nothing goes to LinkedIn."]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",marginTop:10},children:[(0,b.jsx)("input",{type:"checkbox",checked:r,onChange:a=>s(a.target.checked),style:{marginTop:3}}),(0,b.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"#cfe6f7",cursor:v?"default":"pointer",fontSize:13},children:[v?"Reading…":e?"Choose a newer export":"Choose the export folder",(0,b.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:v,style:{display:"none"},onChange:a=>J(a.target.files)})]}),e&&(0,b.jsxs)("span",{style:{fontSize:12,color:"#8b9a9a"},children:["From an export up to ",$(e.asOf),e.liveAt?` \xb7 messages synced ${$(Date.parse(e.liveAt))}`:""]}),e&&(0,b.jsx)("button",{onClick:O,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,b.jsxs)("h2",{style:U,children:["Live messages sync ",(0,b.jsx)("span",{style:{fontSize:11,color:"#FFD700"},children:"experimental"})]}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)(m.Body,{style:{margin:0},children:["Reads your messages list once, in your own Chrome: who each conversation is with, connections or not, when it was last active, whether it’s unread and who wrote last. It uses no search budget and opens no conversation. The newest message’s words are kept only if ",(0,b.jsx)("i",{children:"Keep my messages"})," is on. The daily sync reads the top of the list; ",(0,b.jsx)("i",{children:"Read my whole history"})," keeps scrolling until no more conversations load (at most 60 scrolls, about 1,000 conversations), at the same slow, fixed pace, so it takes a few minutes."]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("button",{onClick:()=>K(!1),disabled:S,style:{padding:"7px 14px",borderRadius:8,border:"none",background:S?"#333":"rgba(0,255,136,0.15)",color:S?"#777":"#00ff88",cursor:S?"default":"pointer",fontSize:13},children:S?"The scanner is busy":"Sync messages now"}),(0,b.jsx)("button",{onClick:()=>K(!0),disabled:S,style:{padding:"7px 14px",borderRadius:8,border:m.LINE,background:"none",color:S?"#777":"#cfe6f7",cursor:S?"default":"pointer",fontSize:13},children:"Read my whole history"}),(0,b.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"#b8c4c4"},children:[(0,b.jsx)("input",{type:"checkbox",checked:e?.autoSync===!0,onChange:a=>L(a.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),t&&(0,b.jsx)("div",{style:{marginTop:10,fontSize:13,color:t.good?"#00ff88":"#ff9b9b"},children:t.text}),(0,b.jsx)("h2",{style:U,children:"People"}),(0,b.jsx)(N,{net:p,asOf:e?Q:null,keep:H,onKeep:M,switching:z||v,token:B,crmToken:D}),e&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Warmth"}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(Y).map(([a,[c,d]])=>(0,b.jsxs)("div",{style:{...T,marginTop:0},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:d},children:(R[a]||0).toLocaleString()}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:c})]},a))}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:"Of your connections. Warm: messaged in the last 30 days, or 3+ messages in 90. Cool: within a year. Dormant: longer ago."}),e.chapters?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Career chapters"}),(0,b.jsx)("div",{style:{...T,padding:0},children:e.chapters.map(a=>{let c=(a.people||[]).filter(a=>["warm","cool"].includes((0,i.warmthOf)(P.get((0,k.keyFor)({profile_url:a})),Q))).length;return(0,b.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)",fontSize:13,alignItems:"baseline"},children:[(0,b.jsxs)("span",{style:{flex:1},children:[(0,b.jsx)("b",{children:a.company})," ",(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[a.title," · ",new Date(a.from).getFullYear(),"–",a.to?new Date(a.to).getFullYear():"now"]})]}),(0,b.jsxs)("span",{style:{color:"#b8c4c4"},children:[a.made.toLocaleString()," connections made"]}),(0,b.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:a.made?`${Math.round(100*c/a.made)}% still in touch`:""})]},`${a.company}-${a.from}`)})})]}),e.posts?.posts?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Does posting work?"}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,b.jsx)("b",{children:e.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,b.jsx)("b",{children:e.posts.usualWeek.toFixed(1)}),"."]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"What came after a post, not proof it came from it."}),[...e.posts.posts].sort((a,b)=>b.week-a.week).slice(0,3).map(a=>(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4",marginTop:6},children:[$(a.t),": ",a.week," new connections that week ",a.link?(0,b.jsx)("a",{href:a.link,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Post ↗"}):null]},a.t))]})]}),e.invites?.total>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Who reaches out"}),(0,b.jsx)("div",{style:T,children:(0,b.jsxs)("span",{style:{fontSize:13},children:[e.invites.incoming.toLocaleString()," requests came to you and you sent ",e.invites.outgoing.toLocaleString()," ","(",Math.round(100*e.invites.incoming/e.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}var ac=a.i(63033),ad=a.i(91443);let ae={S:25,A:15,B:10,C:5,D:2},af={S:100,A:60,B:35,C:15,D:5};var ag=a.i(76939),ah=a.i(56377);let ai={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},aj="1px solid rgba(255,255,255,0.1)";function ak({person:a,size:c=36,ring:d}){let e=ai[a?.tier]||"#667";return(0,b.jsxs)("div",{style:{position:"relative",width:c,height:c,flexShrink:0},children:[(0,b.jsx)("div",{style:{width:c,height:c,borderRadius:"50%",background:e,color:a?.tier==="S"?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:.34*c,fontWeight:800,border:`2px solid ${d||e}`},children:(0,ag.initialsFor)(a?.name||"?")}),(0,ah.localPhoto)(a?.profile_image_url)&&(0,b.jsx)("img",{src:(0,ah.localPhoto)(a.profile_image_url),alt:"",onError:a=>{a.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:c,height:c,borderRadius:"50%",objectFit:"cover",border:`2px solid ${d||e}`}})]})}function al({progress:a,size:c=86,color:d="#FF6B35",children:e}){let f=c/2-5,g=2*Math.PI*f;return(0,b.jsxs)("div",{style:{position:"relative",width:c,height:c},children:[(0,b.jsxs)("svg",{width:c,height:c,style:{position:"absolute",inset:0,transform:"rotate(-90deg)"},children:[(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:f,fill:"none",stroke:"rgba(255,255,255,0.08)",strokeWidth:5}),(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:f,fill:"none",stroke:d,strokeWidth:5,strokeLinecap:"round",strokeDasharray:`${g*Math.min(1,a)} ${g}`,style:{transition:"stroke-dasharray 0.5s ease"}})]}),(0,b.jsx)("div",{style:{position:"absolute",inset:9,display:"flex",alignItems:"center",justifyContent:"center"},children:e})]})}function am({recs:a,sentIds:d,added:e,mappedIds:g,reach:h,onSend:i,onUndo:j}){let k=(0,c.useMemo)(()=>(function({recs:a=[],sentIds:b=new Set,added:c=[],mappedIds:d=new Set,reach:e=null}){var f;let g,h,i,j=new Map,k=new Set;for(let b of[...a].sort((a,b)=>(b.priority||0)-(a.priority||0))){if(!b.bridge)continue;let a=`${b.bridge.id}|${b.profile_url||b.id}`;if(k.has(a))continue;k.add(a);let c=j.get(b.bridge.id);c||(c={bridge:b.bridge,people:[]},j.set(b.bridge.id,c)),c.people.push(b)}let l=new Map;for(let a of c){let b=a.unlocked_from_bridge_id;b&&l.set(b,[...l.get(b)||[],a])}let m=[],n=0,o=0;for(let{bridge:a,people:c}of j.values()){let d=c.filter(a=>b.has(a.id)),e=l.get(a.id)||[];o+=d.length,n+=d.reduce((a,b)=>a+(ae[b.tier]||2),0),n+=e.reduce((a,b)=>a+(af[b.tier]||5),0);let f=Math.ceil(c.length/5)||1,g=0;for(;g<f-1&&c.slice(5*g,(g+1)*5).every(a=>b.has(a.id));)g++;let h=c.slice(5*g,(g+1)*5),i=h.filter(a=>b.has(a.id)).length,j=i===h.length&&g===f-1;m.push({bridge:a,people:c,stage:g+1,stages:f,targets:h,done:i,progress:h.length?i/h.length:1,complete:j,sent:d.length,added:e,value:h.filter(a=>!b.has(a.id)).reduce((a,b)=>a+(b.priority||0),0),open:{S:h.filter(a=>"S"===a.tier&&!b.has(a.id)).length,A:h.filter(a=>"A"===a.tier&&!b.has(a.id)).length}})}m.sort((a,b)=>a.complete-b.complete||(b.progress>0&&b.progress<1)-(a.progress>0&&a.progress<1)||b.progress-a.progress||b.value-a.value);let p=m.filter(a=>!a.complete).flatMap(a=>a.targets.filter(a=>!b.has(a.id)).map(b=>({person:b,cluster:a,score:(b.priority||0)*(1+.6*a.progress)}))).sort((a,b)=>b.score-a.score),q=new Set,r=[];for(let a of p){let b=a.person.profile_url||a.person.id;if(!q.has(b)&&(q.add(b),r.push(a),3===r.length))break}let s=c.filter(a=>a.unlocked_from_bridge_id).length;return{clusters:m,nextMoves:r,points:n,level:(h=((g=Math.floor(Math.sqrt(Math.max(0,f=n)/40))+1)-1)**2*40,i=g**2*40,{level:g,floor:h,next:i,progress:(f-h)/(i-h)}),sentTotal:o,addedTotal:s,newDoors:c.filter(a=>a.unlocked_from_bridge_id&&"todo"===(0,ad.circleState)(a,e||{scanned:d,hidden:new Set})),clearedStages:m.reduce((a,b)=>a+(b.stage-1)+ +!!b.complete,0)}})({recs:a,sentIds:d,added:e,mappedIds:g,reach:h}),[a,d,e,g,h]),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),{level:p}=k;async function q(a,b){await i(a);let c=b.done+1,d=String(b.bridge.name||"").split(/[\s,]+/)[0];o(c>=b.targets.length?`+${ae[a.tier]||2} \xb7 Stage ${b.stage} of ${d}'s circle cleared — the next 5 are up`:`+${ae[a.tier]||2} \xb7 ${d}'s circle ${c}/${b.targets.length}`),setTimeout(()=>o(null),3500)}let r=k.clusters.find(a=>a.bridge.id===l);return(0,b.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto",padding:"16px 20px 60px"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:16,alignItems:"center",flexWrap:"wrap",padding:16,borderRadius:12,border:aj,background:"linear-gradient(135deg, rgba(255,107,53,0.10), rgba(155,89,182,0.08))"},children:[(0,b.jsxs)("div",{style:{width:64,height:64,borderRadius:16,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[(0,b.jsx)("div",{style:{fontSize:10,fontWeight:800},children:"LEVEL"}),(0,b.jsx)("div",{style:{fontSize:26,fontWeight:900,lineHeight:1},children:p.level})]}),(0,b.jsxs)("div",{style:{flex:1,minWidth:220},children:[(0,b.jsxs)("div",{style:{fontSize:13,color:"#dfe6e9"},children:[(0,b.jsx)("b",{children:k.points})," points · ",(0,b.jsx)("b",{children:p.next-k.points})," to level ",p.level+1]}),(0,b.jsx)("div",{style:{height:8,borderRadius:4,background:"rgba(255,255,255,0.08)",marginTop:6,overflow:"hidden"},children:(0,b.jsx)("div",{style:{height:"100%",width:`${Math.round(100*p.progress)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",transition:"width 0.5s"}})}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:6},children:"Points come from invites you send and people who accept — not from browsing."})]}),[[k.sentTotal,"invites sent"],[k.addedTotal,"people added"],[k.clearedStages,"stages cleared"]].map(([a,c])=>(0,b.jsxs)("div",{style:{textAlign:"center",minWidth:80},children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:900},children:a}),(0,b.jsx)("div",{style:{fontSize:11,color:"#8b9a9a"},children:c})]},c))]}),k.newDoors.length>0&&(0,b.jsxs)("div",{style:{marginTop:12,padding:"10px 14px",borderRadius:10,border:"1px solid rgba(0,255,136,0.3)",background:"rgba(0,255,136,0.06)",fontSize:13},children:["🚪 ",(0,b.jsxs)("b",{children:[k.newDoors.length," new ",1===k.newDoors.length?"door":"doors",":"]})," people you added through a circle, whose own circle isn’t mapped yet. That’s the next degree. ",(0,b.jsx)(f.default,{href:"/setup",style:{color:"#00ff88"},children:"Map them on the Scan page →"})]}),k.nextMoves.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h3",{style:{margin:"22px 0 10px",fontSize:15},children:"Next best moves"}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12},children:k.nextMoves.map(({person:a,cluster:c},d)=>(0,b.jsxs)("div",{style:{padding:14,borderRadius:12,border:`1px solid ${ai[a.tier]}55`,background:"rgba(255,255,255,0.03)",position:"relative"},children:[(0,b.jsxs)("div",{style:{position:"absolute",top:10,right:12,fontSize:11,fontWeight:800,color:"#FF6B35"},children:["#",d+1]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[(0,b.jsx)(ak,{person:a,size:44}),(0,b.jsxs)("div",{style:{minWidth:0},children:[(0,b.jsx)("div",{style:{fontWeight:700,fontSize:14},children:a.name}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:220},children:a.headline})]})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#aab7b7",margin:"10px 0"},children:["via ",(0,b.jsx)("b",{style:{color:ai[c.bridge.tier]},children:c.bridge.name})," · their circle ",c.done,"/",c.targets.length," this stage"]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8},children:[a.profile_url&&(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:ao,children:"Open on LinkedIn"}),(0,b.jsxs)("button",{onClick:()=>q(a,c),style:an,children:["I sent an invite · +",ae[a.tier]||2]})]})]},a.id))})]}),(0,b.jsx)("h3",{style:{margin:"26px 0 4px",fontSize:15},children:"Circles to work through"}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginBottom:12},children:["Each is one of your connections and the best people they know, ",5," at a time. Fill the ring to clear a stage."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:12},children:k.clusters.map(a=>{let c=l===a.bridge.id;return(0,b.jsxs)("button",{onClick:()=>m(c?null:a.bridge.id),style:{padding:12,borderRadius:12,cursor:"pointer",textAlign:"center",color:"#fff",border:c?"1px solid #FF6B35":aj,background:a.complete?"rgba(0,255,136,0.06)":"rgba(255,255,255,0.03)",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,b.jsx)(al,{progress:a.progress,color:a.complete?"#00ff88":"#FF6B35",children:(0,b.jsx)(ak,{person:a.bridge,size:60})}),(0,b.jsx)("div",{style:{fontWeight:700,fontSize:13,maxWidth:170,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.bridge.name}),(0,b.jsx)("div",{style:{fontSize:11,color:a.complete?"#00ff88":"#aab7b7"},children:a.complete?"Circle cleared":`Stage ${a.stage} of ${a.stages} \xb7 ${a.done}/${a.targets.length}`}),(0,b.jsx)("div",{style:{display:"flex",gap:4},children:a.targets.map(a=>(0,b.jsx)("span",{title:a.name,style:{width:12,height:12,borderRadius:"50%",border:`2px solid ${ai[a.tier]||"#667"}`,background:d.has(a.id)?ai[a.tier]||"#667":"transparent"}},a.id))}),(0,b.jsxs)("div",{style:{fontSize:10.5,color:"#778"},children:[a.open.S?`${a.open.S} S \xb7 `:"",a.open.A?`${a.open.A} A \xb7 `:"",a.people.length," worth adding",a.added.length?` \xb7 ★ ${a.added.length} added`:""]})]},a.bridge.id)})}),r&&(0,b.jsxs)("div",{style:{marginTop:14,padding:16,borderRadius:12,border:"1px solid rgba(255,107,53,0.4)",background:"rgba(255,107,53,0.05)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,b.jsx)(ak,{person:r.bridge,size:40}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{style:{fontWeight:800},children:[r.bridge.name,"’s circle · stage ",r.stage," of ",r.stages]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#aab7b7"},children:["Ask ",r.bridge.name?.split(" ")[0]," for an intro, or invite them directly. Mark each one when it’s sent."]})]})]}),r.targets.map(a=>{let c=d.has(a.id);return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 0",borderTop:"1px solid rgba(255,255,255,0.05)"},children:[(0,b.jsx)(ak,{person:a,size:34,ring:c?"#00ff88":void 0}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsxs)("div",{style:{fontWeight:600,fontSize:13},children:[a.name," ",(0,b.jsx)("span",{style:{color:ai[a.tier],fontSize:11},children:a.tier})]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline})]}),a.profile_url&&(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:ao,children:"LinkedIn"}),c?(0,b.jsx)("button",{onClick:()=>j(a),style:{...ao,color:"#00ff88"},children:"Sent ✓ (undo)"}):(0,b.jsxs)("button",{onClick:()=>q(a,r),style:an,children:["Sent · +",ae[a.tier]||2]})]},a.id)}),r.added.length>0&&(0,b.jsxs)("div",{style:{marginTop:10,fontSize:12,color:"#00ff88"},children:["★ Added from this circle: ",r.added.map(a=>a.name).join(", ")]})]}),n&&(0,b.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",fontWeight:800,fontSize:13,boxShadow:"0 8px 30px rgba(0,0,0,0.5)",zIndex:50},children:n})]})}let an={padding:"7px 12px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:800,fontSize:12,background:"linear-gradient(135deg, #FF6B35, #FFD700)",color:"#000"},ao={padding:"7px 12px",borderRadius:8,border:aj,cursor:"pointer",fontWeight:600,fontSize:12,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",textDecoration:"none"};var ap=a.i(36839),aq=a.i(30889),ar=a.i(76892),as=a.i(24475);let at={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},au=["quest","recs","pending","messages"];function av(){let{userId:a,userProfile:i}=(0,g.useUser)(),j=i?.sectors||[],[m,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)(new Set),v=(0,ar.default)(),[w,x]=(0,c.useState)([]),[y,z]=(0,c.useState)({}),A=(0,d.useSearchParams)().get("view"),[B,C]=(0,c.useState)(()=>au.includes(A)?A:"quest"),[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)(()=>new Set),[H,I]=(0,c.useState)(null),[J,K]=(0,c.useState)(null),[L,M]=(0,c.useState)(()=>"bridge");(0,c.useEffect)(()=>{},[]),(0,c.useEffect)(()=>{!n.IS_DEMO&&a&&b();async function b(){let[b,c,d]=await Promise.all([(0,h.loadNetwork)(a),fetch(`/api/outreach?userId=${a}`).then(a=>a.json()).catch(()=>({pending:[]})),(0,l.loadScanNotes)()]),e=b.degree1,f=b.degree2;E(e.filter(a=>a.unlocked_from_bridge_id)),G(new Set(f.map(a=>a.source_connection_id).filter(Boolean))),I((0,ad.reachIndex)(e,f,d));let g=new Set(e.map(a=>a.profile_url)),i={};e.forEach(a=>{i[a.id]=a}),x(c.pending||[]),z(i),o(f.filter(a=>("S"===a.tier||"A"===a.tier||"B"===a.tier)&&!g.has(a.profile_url)).map(a=>{let b,c,d=i[a.source_connection_id],e=(b=parseFloat(a.power_score)||0,c=(a.headline||"").toLowerCase(),(0,aq.rowCompanyScore)(a)>=aq.TOP_COMPANY&&(b+=1),(j||[]).forEach(a=>{c.includes(a.toLowerCase())&&(b+=.5)}),"S"===a.tier?b*=1.5:"A"===a.tier&&(b*=1.2),b),f="S"===a.tier?50:"A"===a.tier?25:10;return{...a,bridge:d,priority:e,xp:f}}).sort((a,b)=>b.priority-a.priority)),q(!1)}},[a]);let N=(0,c.useMemo)(()=>new Set([...w,...m].filter(a=>(0,as.hasRequest)(a,v)).map(a=>a.id)),[w,m,v]),O=(0,c.useMemo)(()=>{let a=new Set,b=[];for(let c of[...w,...m]){let d=(0,k.keyFor)(c);!a.has(d)&&(0,as.hasRequest)(c,v)&&(a.add(d),b.push({...c,bridge:y[c.source_connection_id]||c.bridge||null}))}return b},[w,m,v,y]);if((0,c.useEffect)(()=>((0,ac.setNotchTabs)({items:[{key:"quest",label:"Circles"},{key:"recs",label:`To add (${m.length})`},{key:"pending",label:`Pending (${O.length})`},{key:"messages",label:"Messages & follow-ups"}],current:B,onPick:C}),()=>(0,ac.setNotchTabs)(null)),[B,m.length,O.length]),n.IS_DEMO)return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"rgba(255,255,255,0.7)",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,textAlign:"center",padding:24},children:[(0,b.jsx)("h2",{style:{margin:0,fontSize:18,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("div",{style:{fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(f.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});let P="all"===r?m:m.filter(a=>a.tier===r);J&&(P=P.filter(a=>a.bridge?.id===J));let Q={S:0,A:0,B:0};m.forEach(a=>{void 0!==Q[a.tier]&&Q[a.tier]++});let R={};P.forEach(a=>{let b;R[b="bridge"===L?a.bridge?.id||"unknown":"company"===L?(a.company||"Unknown").trim()||"Unknown":a.tier]||(R[b]=[]),R[b].push(a)});let S={S:0,A:1,B:2},T=Object.entries(R).sort((a,b)=>{if("tier"===L)return(S[a[0]]||9)-(S[b[0]]||9);if("bridge"===L){let c=a[1][0]?.bridge,d=b[1][0]?.bridge,e=S[c?.tier]??9,f=S[d?.tier]??9;if(e!==f)return e-f}return b[1].length-a[1].length});function U(a){u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return p?(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff"},children:"Loading..."}):(0,b.jsxs)("div",{style:{height:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsx)("header",{style:{padding:"20px 30px",borderBottom:"1px solid rgba(255,255,255,0.1)",flexShrink:0},children:(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,b.jsx)(f.default,{href:"/",style:{textDecoration:"none"},children:(0,b.jsx)("h1",{style:{fontSize:28,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Six Degrees"})}),(0,b.jsx)(e.default,{active:"outlink"}),(0,b.jsx)(f.default,{href:"/settings",title:"Settings","aria-label":"Settings",style:{width:32,height:32,borderRadius:"50%",flexShrink:0,background:"rgba(255,255,255,0.06)",color:"#888",fontSize:16,textDecoration:"none",display:"flex",alignItems:"center",justifyContent:"center"},children:"⚙"})]})}),("recs"===B||"pending"===B)&&(0,b.jsxs)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(255,255,255,0.08)",flexShrink:0},children:[(0,b.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:10},children:(0,b.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:"recs"===B&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>M("tier"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"tier"===L?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"tier"===L?"#fff":"#666"},children:"By Tier"}),(0,b.jsx)("button",{onClick:()=>M("bridge"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"bridge"===L?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"bridge"===L?"#fff":"#666"},children:"By Bridge"}),(0,b.jsx)("button",{onClick:()=>M("company"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"company"===L?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"company"===L?"#fff":"#666"},children:"By Company"})]})})}),(0,b.jsx)("div",{style:{display:"flex",gap:6},children:[{k:"all",l:`All (${m.length})`},{k:"S",l:`S (${Q.S})`,c:at.S},{k:"A",l:`A (${Q.A})`,c:at.A},{k:"B",l:`B (${Q.B})`,c:at.B}].map(a=>(0,b.jsx)("button",{onClick:()=>s(a.k),style:{padding:"4px 12px",borderRadius:16,border:"none",fontSize:11,fontWeight:600,cursor:"pointer",background:r===a.k?a.c||"#fff":"rgba(255,255,255,0.06)",color:r===a.k?"#000":a.c||"#888"},children:a.l},a.k))})]}),"messages"===B&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"40px 8px 0"},children:(0,b.jsx)(ab,{embedded:!0})}),"recs"===B&&t.size>0&&(0,b.jsxs)("div",{style:{padding:"10px 24px",background:"rgba(255,215,0,0.08)",borderBottom:"1px solid rgba(255,215,0,0.2)",display:"flex",alignItems:"center",gap:12,flexShrink:0},children:[(0,b.jsxs)("span",{style:{fontSize:12,color:"#FFD700",fontWeight:600},children:[t.size," selected"]}),(0,b.jsxs)("button",{onClick:function(){let a=P.filter(a=>t.has(a.id));if(0===a.length)return;if(1===a.length)return void window.open(a[0].profile_url,"_blank");let b=new Blob([`<!DOCTYPE html><html><head><title>Outlink — ${a.length} profiles</title>
1
+ module.exports=[78386,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(31318),f=a.i(38246),g=a.i(75857),h=a.i(23310),i=a.i(76433),j=a.i(1328),k=a.i(90231),l=a.i(37732),m=a.i(16874),n=a.i(58834);let o=Object.freeze([{id:"new",label:"New"},{id:"contacted",label:"Contacted"},{id:"replied",label:"Replied"},{id:"meeting",label:"Meeting"},{id:"won",label:"Won/Partner"},{id:"not-now",label:"Not now"}]);o.map(a=>a.id);let p=a=>o.find(b=>b.id===a)?.label||"",q=a=>"string"==typeof a&&a.length>0&&a.length<300;function r(){return{version:1,settings:{awaitDays:7},people:{}}}function s(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}-${b(a.getMonth()+1)}-${b(a.getDate())}`}let t=/^https:\/\/(www\.)?linkedin\.com\/in\/[^/?#\s]+$/,u={S:0,A:1,B:2,C:3,D:4},v=(a,b)=>(a.degree??9)<(b.degree??9)||(a.degree??9)===(b.degree??9)&&(u[a.tier]??9)<(u[b.tier]??9),w=a=>"sponsored"===a.kind;function x(a,b,c=7){let d=[];for(let e of a){if(w(e)||!1!==e.lastFromThem||!e.last)continue;let a=Math.floor((b-e.last)/864e5);a>=c&&d.push({contact:e,waited:a})}return d.sort((a,b)=>a.waited-b.waited)}function y(a,b,c=null){let d=String(b||"").trim().toLowerCase();return!d||[a.name,a.row?.company,a.row?.role,a.row?.headline,...a.crm?.tags||[],a.crm?.notes].filter(Boolean).join("\n").toLowerCase().includes(d)||!!c&&a.conversations.some(a=>c.has(a.id))}function z(a){let b=null==a?"":String(a);return/^[=+\-@\t\r]/.test(b)&&(b=`'${b}`),/[",\r\n]/.test(b)?`"${b.replace(/"/g,'""')}"`:b}let A=a=>a?new Date(a).toISOString().slice(0,10):"",B=["Name","Company","Profile","Connection","Stage","Tags","Last contact","Who wrote last","Next follow-up","Notes"];function C({id:a,keep:d,group:e,token:f}){let[g,h]=(0,c.useState)(null),[i,j]=(0,c.useState)(null),k=(0,c.useRef)(null),l=(0,c.useRef)(null);async function n(){let b=k.current,c=await fetch(`/api/social/messages?id=${encodeURIComponent(a)}&before=${g.start}&limit=200`).then(a=>a.json()).catch(()=>null);c&&!c.error&&(l.current=b?b.scrollHeight-b.scrollTop:null,h({...g,start:c.start,messages:[...c.messages,...g.messages]}))}(0,c.useEffect)(()=>{if(!d)return;let b=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(a)}&limit=100`).then(a=>a.json()).then(a=>{b&&(a.error?j(a.error):(l.current="bottom",h(a)))}).catch(()=>{b&&j("It couldn’t be read.")}),()=>{b=!1}},[a,d,f]),(0,c.useLayoutEffect)(()=>{let a=k.current;a&&l.current&&("bottom"===l.current?a.scrollTop=a.scrollHeight:a.scrollTop=a.scrollHeight-l.current,l.current=null)},[g]);let o={padding:"10px 14px 14px",fontSize:12.5,color:"#8b9a9a"};return d?i?(0,b.jsx)("div",{style:{...o,color:"#ff9b9b"},children:i}):g?g.total?(0,b.jsxs)("div",{ref:k,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(0,0,0,0.2)"},children:[g.start>0&&(0,b.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,b.jsxs)("button",{onClick:n,style:{background:"rgba(255,255,255,0.06)",border:m.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",g.start.toLocaleString()," more)"]})}),g.messages.map((a,c)=>{let d;return(0,b.jsx)("div",{style:{display:"flex",justifyContent:a.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,b.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,b.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:a.fromMe?"rgba(52,152,219,0.35)":"rgba(255,255,255,0.08)",color:"#eef",borderBottomRightRadius:a.fromMe?4:12,borderBottomLeftRadius:a.fromMe?12:4},children:a.text||(0,b.jsx)("i",{style:{color:"#8b9a9a"},children:"(no words: an attachment or a reaction)"})}),(0,b.jsxs)("div",{style:{fontSize:10.5,color:"#778",marginTop:2,textAlign:a.fromMe?"right":"left"},children:[a.fromMe?"You":e?"Someone in the group":"Them"," · ",(d=a.t)?new Date(d).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},g.start+c)})]}):(0,b.jsx)("div",{style:o,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,b.jsx)("div",{style:o,children:"Opening…"}):(0,b.jsxs)("div",{style:o,children:["Turn on ",(0,b.jsx)("b",{children:"Keep my messages"})," to read them here."]})}var D=a.i(91621);let E=D.TIER_COLORS,F={new:"#8b9a9a",contacted:"#3498DB",replied:"#00d4aa",meeting:"#ff9f43",won:"#FFD700","not-now":"#667"},G=a=>a?new Date(a).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",H=a=>a?new Date(`${a}T12:00:00`).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",I=a=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(a||""))?a:null,J=(a,b,c=`${b}s`)=>`${a.toLocaleString()} ${1===a?b:c}`,K=[["inbox","Inbox"],["awaiting","Awaiting reply"],["due","Follow-ups due"],["pipeline","Pipeline"],["sent","Sent"],["received","Received"],["all","All"]],L=(a,b="#dfe8e8")=>({fontSize:10.5,padding:"1px 6px",borderRadius:4,background:a,color:b,whiteSpace:"nowrap"}),M={background:"rgba(255,255,255,0.06)",border:m.LINE,borderRadius:6,color:"#cfe6f7",cursor:"pointer",fontSize:12,padding:"4px 10px"},N={padding:"6px 10px",borderRadius:6,border:m.LINE,background:"rgba(0,0,0,0.3)",color:"#fff",fontSize:13};function O({net:a,asOf:d,keep:e,onKeep:f,switching:g,token:h,crmToken:j}){let[l,n]=(0,c.useState)(null),[u,C]=(0,c.useState)(null),[D,E]=(0,c.useState)("inbox"),[F,I]=(0,c.useState)(""),[L,Q]=(0,c.useState)(null),[R,T]=(0,c.useState)(null),[V,X]=(0,c.useState)(100),[Z,$]=(0,c.useState)(null),_=(0,c.useRef)(null);(0,c.useEffect)(()=>{let a=!0;return fetch("/api/social/messages").then(a=>a.json()).then(b=>{a&&n(b)}).catch(()=>{a&&n({conversations:[],invitations:[],names:{},inviteNotes:{}})}),()=>{a=!1}},[h,e]),(0,c.useEffect)(()=>{let a=!0;return fetch("/api/social/crm").then(a=>a.json()).then(b=>{a&&C(b.crm||r())}).catch(()=>{a&&C(r())}),()=>{a=!1}},[j]),(0,c.useEffect)(()=>{let a=F.trim();if(!e||a.length<2)return;let b=!0,c=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(a)}`).then(a=>a.json()).then(c=>{b&&Q({q:a,ids:new Set(c.ids||[])})}).catch(()=>{})},250);return()=>{b=!1,clearTimeout(c)}},[F,e,h]);let aa=R?.type==="person"?R.key:null,{contacts:ab,groups:ac}=(0,c.useMemo)(()=>(function({conversations:a=[],invitations:b=[],network:c={},crm:d=r(),names:e={},also:f=[]}={}){let g=c.degree1||[],h=c.degree2||[],j=[...g,...h,...c.degree3||[]],l=new Map,m=new Map;for(let a of j){let b=(0,k.keyFor)(a),c=l.get(b);(!c||v(a,c))&&l.set(b,a)}for(let[a,b]of l){let c=(0,i.nameKey)(b.name);c&&m.set(c,m.has(c)&&m.get(c)!==a?null:a)}let n=new Set(g.map(k.keyFor)),o=(0,k.routeIndex)(h),p=new Map(g.map(a=>[a.id,a])),s=a=>a.startsWith("name:")&&m.get(a.slice(5))||a,u=new Map,w=a=>{var b,c,f;let g=s(a),h=u.get(g);if(h)return h;let i=l.get(g)||null;return h={key:g,name:(b=g,c=i,f=e,c?.name?c.name:f[b]?f[b]:b.startsWith("name:")?b.slice(5).replace(/\b\w/g,a=>a.toUpperCase()):String(b||"").replace(/\/+$/,"").split("/").pop()),row:i,connection:n.has(g),degree:i?.degree??null,profileUrl:t.test(g)?g:i?.profile_url&&t.test((0,k.keyFor)(i))?(0,k.keyFor)(i):null,introducers:i&&2===i.degree?[...new Set((0,k.routesFor)(i,o,p).map(a=>a.bridge?.name).filter(Boolean))]:[],conversations:[],groups:[],last:null,lastFromThem:null,unread:null,threadUrl:null,count:0,theyWrote:!1,kind:null,invitesIn:[],invitesOut:[],request:null,crm:d?.people?.[g]||null,lastContact:null},u.set(g,h),h},x=[];for(let b of a){if(!b||!Array.isArray(b.people))continue;if(b.group){x.push({...b,people:b.people.map(s)});continue}if(!b.people.length){x.push({...b,unknown:!0});continue}let a=w(b.people[0]);a.conversations.push(b),a.count+=b.count||0,(!0===b.lastFromThem||null!=b.count&&null!=b.mine&&b.count>b.mine)&&(a.theyWrote=!0),b.last&&(!a.last||b.last>=a.last)?(a.last=b.last,a.lastFromThem=b.lastFromThem,a.unread=b.unread,a.threadUrl=b.threadUrl||a.threadUrl):a.last||b.last||(a.threadUrl=b.threadUrl||a.threadUrl)}for(let a of u.values()){a.conversations.sort((a,b)=>(b.last||0)-(a.last||0));let b=new Set(a.conversations.map(a=>a.kind||null));a.kind=1===b.size?[...b][0]:null}for(let a of x)for(let b of a.people)u.get(b)?.groups.push(a.id);for(let a of b){if(!a?.key)continue;let b=w(a.key);!a.name||b.row||e[b.key]||(b.name=a.name),("in"===a.dir?b.invitesIn:b.invitesOut).push(a)}for(let a of j){if("sent"!==a.outreach_status&&"accepted"!==a.outreach_status&&"pending"!==a.unlock_status)continue;let b=w((0,k.keyFor)(a)),c=b.connection||"accepted"===a.outreach_status?"accepted":"pending";b.request&&"accepted"!==c||(b.request={status:c})}for(let a of Object.keys(d?.people||{}))w(a);for(let a of f)q(a)&&w(a);for(let a of u.values()){let b=[a.last,...a.invitesIn.map(a=>a.t),...a.invitesOut.map(a=>a.t)].filter(Boolean);a.lastContact=b.length?Math.max(...b):null}return{contacts:u,groups:x}})({conversations:l?.conversations||[],invitations:l?.invitations||[],network:a||{},crm:u||r(),names:l?.names||{},also:aa?[aa]:[]}),[l,a,u,aa]),ad=(0,c.useMemo)(()=>{let b=new Map;for(let c of[...a?.degree1||[],...a?.degree2||[]])b.has((0,k.keyFor)(c))||b.set((0,k.keyFor)(c),c);let c=l?.names||{};return a=>ab.get(a)?.name||b.get(a)?.name||c[a]||null},[ab,a,l]),ae=u?.settings?.awaitDays||7,[af]=(0,c.useState)(()=>Date.now()),ag=d||af,ah=s(new Date(af)),ai=(0,c.useMemo)(()=>[...ab.values()],[ab]),aj=(0,c.useMemo)(()=>{let a=(a,b)=>({type:"person",key:a.key,c:a,sub:b,t:a.lastContact||0}),b=a=>null==a.lastFromThem?"":a.lastFromThem?`They wrote ${G(a.last)}`:`You wrote ${G(a.last)}`,c=ai.filter(a=>a.lastContact||a.crm||a.request).map(c=>a(c,b(c)||(c.invitesOut[0]?`You asked to connect ${G(c.invitesOut[0].t)}`:"")||(c.invitesIn[0]?`Asked to connect ${G(c.invitesIn[0].t)}`:"")||(c.request?`Tracked request \xb7 ${c.request.status}`:"")||(c.crm?.stage?p(c.crm.stage):"")));for(let a of ac)c.push({type:"group",id:a.id,g:a,sub:a.last?`${a.lastFromThem?"Someone wrote":"You wrote"} ${G(a.last)}`:"",t:a.last||0});return c.sort((a,b)=>b.t-a.t),{inbox:[...ai].filter(a=>!w(a)&&(!0===a.lastFromThem||a.unread>0)).sort((a,b)=>(b.unread>0)-(a.unread>0)||(b.last||0)-(a.last||0)).map(c=>a(c,c.unread>0?`${c.unread} unread \xb7 ${b(c)}`:b(c))),awaiting:x(ai,ag,ae).map(b=>a(b.contact,`You wrote ${G(b.contact.last)}, no reply for ${J(b.waited,"day")}`)),due:(function(a,b=s()){return[...a].filter(a=>a.crm?.followUp&&a.crm.followUp<=b).sort((a,b)=>a.crm.followUp.localeCompare(b.crm.followUp))})(ai,ah).map(b=>a(b,b.crm.followUp===ah?"Follow up today":`Follow up was due ${H(b.crm.followUp)}`)),pipeline:function(a){let b=Object.fromEntries(o.map(a=>[a.id,[]]));for(let c of a)c.crm?.stage&&b[c.crm.stage].push(c);for(let a of Object.values(b))a.sort((a,b)=>(b.lastContact||0)-(a.lastContact||0));return b}(ai),sent:(function(a,b,c=7){let d=[...a],e=new Map(x(d,b,c).map(a=>[a.contact.key,a.waited])),f=[];for(let a of d){let b=[];for(let c of a.invitesOut)b.push({type:"invite",id:c.id,t:c.t,status:a.connection?"accepted":"pending"});a.request&&b.push({type:"request",status:a.request.status}),e.has(a.key)&&b.push({type:"awaiting",t:a.last,waited:e.get(a.key)}),b.length&&f.push({contact:a,items:b,t:Math.max(0,...b.map(a=>a.t||0))})}return f.sort((a,b)=>b.t-a.t)})(ai,ag,ae).map(b=>a(b.contact,b.items.map(a=>"invite"===a.type?`Request ${G(a.t)} \xb7 ${a.status}`:"request"===a.type?`Tracked request \xb7 ${a.status}`:`No reply for ${J(a.waited,"day")}`).join(" · "))),received:(function(a){let b=[];for(let c of a)!c.connection&&c.invitesIn.length&&b.push({contact:c,t:Math.max(0,...c.invitesIn.map(a=>a.t||0))});return b.sort((a,b)=>b.t-a.t)})(ai).map(b=>a(b.contact,`Asked to connect ${G(b.t)}`)),all:c}},[ai,ac,ag,ae,ah]),ak=e&&L?.q===F.trim()?L.ids:null,al=F.trim().toLowerCase(),am=(0,c.useMemo)(()=>{let b="pipeline"===D?[]:aj[D];if(!al)return b;let c=b.filter(a=>"person"===a.type?y(a.c,al,ak):String(a.g.title||"").toLowerCase().includes(al)||a.g.people.some(a=>String(ad(a)||"").toLowerCase().includes(al))||ak?.has(a.g.id));if("all"===D&&al.length>=2&&a){let b=new Set(c.map(a=>a.key)),d=new Set;for(let e of[...a.degree1||[],...a.degree2||[]]){let a=(0,k.keyFor)(e);if(!(b.has(a)||d.has(a))&&[e.name,e.company,e.role,e.headline].some(a=>String(a||"").toLowerCase().includes(al))&&(d.add(a),c.push({type:"person",key:a,c:null,row:e,sub:"Nothing on file yet",t:0}),d.size>=50))break}}return c},[aj,D,al,ak,a,ad]),an=(0,c.useMemo)(()=>{if("pipeline"!==D)return null;let a={};for(let[b,c]of Object.entries(aj.pipeline))a[b]=al?c.filter(a=>y(a,al,ak)):c;return a},[aj,D,al,ak]),ao={inbox:aj.inbox.length,awaiting:aj.awaiting.length,due:aj.due.length,pipeline:Object.values(aj.pipeline).reduce((a,b)=>a+b.length,0),sent:aj.sent.length,received:aj.received.length,all:aj.all.length};async function ap(a,b){let c=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,set:b})}),d=await c.json().catch(()=>({}));if(!c.ok)throw Error(d.error||"That couldn’t be saved.");C(b=>{let c={...b||r(),people:{...b?.people||{}}};return d.entry?c.people[a]=d.entry:delete c.people[a],c})}async function aq(a){let b=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{awaitDays:a}})}),c=await b.json().catch(()=>({}));b.ok&&C(a=>({...a||r(),settings:c.settings}))}async function ar(){window.confirm("Delete your CRM: every stage, tag, note and follow-up date you added? This can’t be undone.")&&(await fetch("/api/social/crm",{method:"DELETE"}),C(r()),$("Your CRM notes are deleted."))}let as=!l||!u||!a,at={padding:"12px 14px",borderRadius:8,border:m.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},au=R?.type==="group"?ac.find(a=>a.id===R.id):null,av=aa?ab.get(aa):null;return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:at,children:[(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"#fff",cursor:g?"default":"pointer"},children:[(0,b.jsx)("input",{type:"checkbox",checked:e,disabled:g,onChange:a=>f(a.target.checked)}),(0,b.jsx)("b",{children:"Keep my messages on this computer"}),(0,b.jsx)("span",{style:{fontSize:11.5,color:e?"#00ff88":"#8b9a9a"},children:e?"on":"off"})]}),(0,b.jsxs)(m.Body,{style:{margin:"6px 0 0",fontSize:12.5},children:["Off unless you turn it on. When it’s on, the messages themselves, including what other people wrote to you, and the notes sent with connection requests, are saved only in the app’s data folder on this computer. They’re never sent anywhere, and they aren’t in “Save a copy of my network”. ",(0,b.jsx)("i",{children:"Forget it"}),", or switching this off, deletes them. With it off, the CRM still shows who, when and who wrote last. Your own stages, tags, notes and follow-ups are always kept, on this computer only."]})]}),(0,b.jsxs)("div",{className:"crm-grid",style:{marginTop:10},children:[(0,b.jsxs)("div",{className:"pipeline"===D?"crm-wide":void 0,style:{...at,marginTop:0,padding:0,minWidth:0},children:[(0,b.jsx)("div",{role:"tablist","aria-label":"CRM views",style:{display:"flex",flexWrap:"wrap",gap:4,padding:"10px 10px 6px",borderBottom:m.LINE},children:K.map(([a,c])=>(0,b.jsxs)("button",{role:"tab","aria-selected":D===a,onClick:()=>{E(a),X(100)},style:{...M,padding:"4px 9px",fontSize:12,background:D===a?"rgba(52,152,219,0.28)":"rgba(255,255,255,0.04)",color:D===a?"#fff":"#b8c4c4"},children:[c," ",(0,b.jsx)("span",{style:{color:D===a?"#cfe6f7":"#778"},children:as?"":ao[a].toLocaleString()})]},a))}),(0,b.jsxs)("div",{style:{padding:"8px 10px",borderBottom:m.LINE,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("input",{type:"search",value:F,onChange:a=>{I(a.target.value),X(100)},placeholder:e?"Search names, companies, tags, notes, what was said":"Search names, companies, tags, notes","aria-label":"Search the CRM",style:{...N,flex:"1 1 180px",minWidth:0}}),(0,b.jsx)("button",{onClick:function(){var a;let b,c,d=ai.filter(a=>"sponsored"!==a.kind).sort((a,b)=>(b.lastContact||0)-(a.lastContact||0)),e=`Six Degrees CRM ${s()}.csv`;a=function(a){let b=[B.map(z).join(",")];for(let c of a)b.push([c.name,c.row?.company||"",c.profileUrl||"",c.connection?"Yes":"No",p(c.crm?.stage),(c.crm?.tags||[]).join("; "),A(c.lastContact),null==c.lastFromThem?"":c.lastFromThem?"Them":"You",c.crm?.followUp||"",c.crm?.notes||""].map(z).join(","));return`\uFEFF${b.join("\r\n")}\r
2
+ `}(d),b=URL.createObjectURL(new Blob([a],{type:"text/csv;charset=utf-8"})),(c=document.createElement("a")).href=b,c.download=e,c.style.position="fixed",c.style.left="-9999px",document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(b),6e4),$(`Made “${e}” (${J(d.length,"person","people")}). Look for it in your Downloads folder, or wherever you chose to save it. It holds your notes: keep it private.`)},disabled:as,style:M,title:"A spreadsheet of everyone here, with your stages, tags, follow-ups and notes",children:"Export CSV"})]}),"awaiting"===D&&(0,b.jsxs)("div",{style:{padding:"8px 12px",borderBottom:m.LINE,fontSize:12.5,color:"#b8c4c4",display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:["You wrote last and nothing came back for",(0,b.jsx)("input",{type:"number",min:1,max:365,value:ae,"aria-label":"Days with no reply",onChange:a=>{let b=Number(a.target.value);b>=1&&b<=365&&aq(b)},style:{...N,width:64,padding:"3px 6px"}}),"days or more",d?`, as of ${G(d)}`:"","."]}),Z&&(0,b.jsx)("div",{style:{padding:"8px 12px",fontSize:12.5,color:"#00ff88",borderBottom:m.LINE},children:Z}),as&&(0,b.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:"Loading…"}),!as&&"pipeline"===D&&(0,b.jsx)(U,{pipeline:an,picked:aa,onPick:a=>{T({type:"person",key:a})}}),!as&&"pipeline"!==D&&0===am.length&&(0,b.jsx)("div",{style:{padding:12,fontSize:13,color:"#8b9a9a"},children:al?"Nothing matches that.":P[D]}),!as&&"pipeline"!==D&&(0,b.jsxs)("div",{children:[am.slice(0,V).map(a=>(0,b.jsx)(S,{r:a,nameOf:ad,active:"person"===a.type?aa===a.key:R?.id===a.id,onPick:()=>{T("person"===a.type?{type:"person",key:a.key}:{type:"group",id:a.id})}},"person"===a.type?`p:${a.key}`:`g:${a.id}`)),am.length>V&&(0,b.jsxs)("button",{onClick:()=>X(V+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"#3498DB",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,am.length-V).toLocaleString()," more of ",am.length.toLocaleString()]})]})]}),(0,b.jsxs)("div",{ref:_,className:"pipeline"===D?"crm-wide":void 0,style:{...at,marginTop:0,minWidth:0,scrollMarginTop:80},children:[!R&&(0,b.jsx)("div",{style:{fontSize:13,color:"#8b9a9a"},children:"Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up."}),av&&(0,b.jsx)(W,{c:av,nameOf:ad,groups:ac,keep:e,token:h,inviteNotes:l?.inviteNotes||{},onChange:ap,onPickGroup:a=>{T({type:"group",id:a})}},av.key),au&&(0,b.jsx)(Y,{g:au,contacts:ab,nameOf:ad,keep:e,token:h,onPick:a=>{T({type:"person",key:a})}})]})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:["Everyone from your export and the live sync, connections or not; groups are listed and marked. Sponsored messages are marked and kept out of the Inbox. Awaiting reply and warmth are judged as of the newest thing your data knows.",Object.keys(u?.people||{}).length>0&&(0,b.jsxs)(b.Fragment,{children:[" ","Your notes are in the app’s data folder, not in “Save a copy of my network”."," ",(0,b.jsx)("button",{onClick:ar,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:11.5,padding:0},children:"Delete my CRM notes"})]})]})]})}let P={inbox:"No one is waiting on a reply.",awaiting:"Nobody you wrote to is overdue a reply.",due:"No follow-ups are due. Set one on anyone, and it shows here on the day.",sent:"Nothing sent yet: choose your export folder above (its Invitations.csv), or mark requests sent in the app.",received:"No requests waiting on you, as far as your export shows.",all:"Nobody here yet. Choose your export folder above, or sync your messages."};function Q({tier:a}){return(0,b.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:E[a]||"#556",flexShrink:0,display:"inline-block"}})}function R({c:a}){return(0,b.jsxs)(b.Fragment,{children:[a&&!a.connection&&(0,b.jsx)("span",{style:L("rgba(255,159,67,0.18)","#ffc58a"),children:2===a.degree?"2nd degree":"Not a connection"}),a?.kind==="sponsored"&&(0,b.jsx)("span",{style:L("rgba(255,255,255,0.08)"),children:"Sponsored"}),a?.kind==="inmail"&&(0,b.jsx)("span",{style:L("rgba(155,89,182,0.25)"),children:"InMail"}),a?.crm?.stage&&(0,b.jsx)("span",{style:L("rgba(255,255,255,0.06)",F[a.crm.stage]),children:p(a.crm.stage)})]})}function S({r:a,nameOf:c,active:d,onPick:e}){let f,g=null,h=null;if("person"===a.type){let c=a.c;f=c?.name||a.row?.name||a.key,g=c?.row?.tier||a.row?.tier,h=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(R,{c:c||{connection:a.row?.degree===1,degree:a.row?.degree}}),c?.unread>0&&(0,b.jsxs)("span",{style:L("#3498DB","#fff"),children:[c.unread," unread"]})]})}else f=T(a.g,c),h=(0,b.jsx)("span",{style:L("rgba(255,255,255,0.08)"),children:a.g.unknown?"To someone unnamed":"Group"});let i="person"===a.type?a.c?.row?.company||a.row?.company:null;return(0,b.jsxs)("div",{role:"button",tabIndex:0,"aria-pressed":d,onClick:e,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),e())},style:{padding:"8px 12px",borderBottom:"1px solid rgba(255,255,255,0.04)",cursor:"pointer",background:d?"rgba(52,152,219,0.14)":"none"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:13,minWidth:0,flexWrap:"wrap"},children:[(0,b.jsx)(Q,{tier:g}),(0,b.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100%"},children:f}),h]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:2,paddingLeft:14,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[i,a.sub].filter(Boolean).join(" · ")})]})}function T(a,b){if(a.title)return a.title;if(a.unknown)return"A conversation only you wrote in";let c=a.people.map(b).filter(Boolean);return c.length?`${c.slice(0,3).join(", ")}${a.people.length>3?` +${a.people.length-3}`:""}`:`${a.people.length} people`}function U({pipeline:a,picked:c,onPick:d}){return(0,b.jsx)("div",{className:"crm-board",children:o.map(e=>(0,b.jsxs)("div",{style:{minWidth:0},children:[(0,b.jsxs)("div",{style:{fontSize:12,fontWeight:650,color:F[e.id],margin:"0 0 6px",display:"flex",justifyContent:"space-between"},children:[(0,b.jsx)("span",{children:e.label}),(0,b.jsx)("span",{style:{color:"#778"},children:a[e.id].length.toLocaleString()})]}),0===a[e.id].length&&(0,b.jsx)("div",{style:{fontSize:11.5,color:"#667",padding:"6px 0"},children:"No one"}),a[e.id].slice(0,200).map(a=>(0,b.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>d(a.key),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),d(a.key))},style:{padding:"7px 9px",marginBottom:6,borderRadius:6,border:m.LINE,cursor:"pointer",fontSize:12.5,background:c===a.key?"rgba(52,152,219,0.18)":"rgba(255,255,255,0.03)"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[(0,b.jsx)(Q,{tier:a.row?.tier}),(0,b.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name})]}),(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:11,marginTop:2},children:[a.row?.company,a.crm.followUp?`Follow up ${H(a.crm.followUp)}`:null].filter(Boolean).join(" · ")})]},a.key)),a[e.id].length>200&&(0,b.jsxs)("div",{style:{fontSize:11,color:"#778"},children:["and ",(a[e.id].length-200).toLocaleString()," more (search to find them)"]})]},e.id))})}let V={fontSize:12,fontWeight:650,color:"#b8c4c4",margin:"16px 0 6px",textTransform:"uppercase",letterSpacing:.4};function W({c:a,nameOf:d,groups:e,keep:f,token:g,inviteNotes:h,onChange:i,onPickGroup:j}){let k=a.row,[l,n]=(0,c.useState)(a.conversations[0]?.id||null),o=I(a.profileUrl),p=I(a.threadUrl),q=a.connection?`A connection${k?.connected_date?` since ${G(Date.parse(k.connected_date))}`:""}.`:2===a.degree?"2nd degree: not a connection yet.":"Not a connection.";return(0,b.jsxs)("div",{style:{fontSize:13},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)(Q,{tier:k?.tier}),(0,b.jsx)("h3",{style:{margin:0,fontSize:17},children:a.name}),k?.tier&&(0,b.jsxs)("span",{style:L("rgba(255,255,255,0.06)",E[k.tier]),children:[k.tier," tier"]}),(0,b.jsx)(R,{c:a})]}),(k?.headline||k?.company)&&(0,b.jsx)("div",{style:{color:"#b8c4c4",marginTop:4},children:k.headline||[k.role,k.company].filter(Boolean).join(" at ")}),(0,b.jsxs)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[q,a.introducers.length>0&&(0,b.jsxs)(b.Fragment,{children:[" Who can introduce you: ",(0,b.jsx)("b",{style:{color:"#dfe8e8"},children:a.introducers.slice(0,6).join(", ")}),a.introducers.length>6?` and ${a.introducers.length-6} more`:"","."]}),k?.unlocked_from_name&&a.connection&&(0,b.jsxs)(b.Fragment,{children:[" You met through ",(0,b.jsx)("b",{style:{color:"#dfe8e8"},children:k.unlocked_from_name}),"."]})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:12,marginTop:6,flexWrap:"wrap",fontSize:12.5},children:[o&&(0,b.jsx)("a",{href:o,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Profile on LinkedIn ↗"}),p&&(0,b.jsx)("a",{href:p,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Conversation on LinkedIn ↗"})]}),(0,b.jsx)(X,{c:a,onChange:i}),(0,b.jsx)("div",{style:V,children:"Conversations"}),0===a.conversations.length&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None one to one."}),a.conversations.map(a=>(0,b.jsxs)("div",{style:{border:m.LINE,borderRadius:6,marginBottom:6,overflow:"hidden"},children:[(0,b.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":l===a.id,onClick:()=>n(l===a.id?null:a.id),onKeyDown:b=>{("Enter"===b.key||" "===b.key)&&(b.preventDefault(),n(l===a.id?null:a.id))},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",padding:"7px 10px",cursor:"pointer",fontSize:12.5,background:l===a.id?"rgba(255,255,255,0.04)":"none"},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:G(a.last)||"No date"}),null!=a.lastFromThem&&(0,b.jsx)("span",{style:{color:a.lastFromThem?"#ff9f43":"#8b9a9a"},children:a.lastFromThem?"They wrote last":"You wrote last"}),null!=a.count&&(0,b.jsx)("span",{style:{color:"#8b9a9a"},children:J(a.count,"message")}),null!=a.mine&&null!=a.count&&a.mine===a.count&&(0,b.jsx)("span",{style:L("rgba(255,255,255,0.06)"),children:"Only you wrote"}),a.folder&&"inbox"!==a.folder&&(0,b.jsx)("span",{style:L("rgba(255,255,255,0.06)"),children:a.folder}),"inmail"===a.kind&&(0,b.jsx)("span",{style:L("rgba(155,89,182,0.25)"),children:"InMail"}),"sponsored"===a.kind&&(0,b.jsx)("span",{style:L("rgba(255,255,255,0.08)"),children:"Sponsored"}),a.unread>0&&(0,b.jsxs)("span",{style:L("#3498DB","#fff"),children:[a.unread," unread"]})]}),l===a.id&&(0,b.jsx)(C,{id:a.id,keep:f,group:!1,token:g},`${a.id}:${g}:${f}`)]},a.id)),a.groups.length>0&&(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:4},children:["Also in ",J(a.groups.length,"group"),":"," ",a.groups.slice(0,8).map((a,c)=>{let f=e.find(b=>b.id===a);return(0,b.jsxs)("span",{children:[c>0?", ":"",(0,b.jsx)("button",{onClick:()=>j(a),style:{background:"none",border:"none",color:"#3498DB",cursor:"pointer",padding:0,fontSize:12.5},children:f?T(f,d):"a group"})]},a)})]}),(0,b.jsx)("div",{style:V,children:"Requests"}),a.invitesOut.length+a.invitesIn.length===0&&!a.request&&(0,b.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5},children:"None on file."}),[...a.invitesOut,...a.invitesIn].sort((a,b)=>(b.t||0)-(a.t||0)).map(c=>(0,b.jsxs)("div",{style:{fontSize:12.5,marginBottom:6},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:"out"===c.dir?"You asked to connect":"They asked to connect"}),(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",G(c.t)||"no date"," · ",a.connection?"accepted":"out"===c.dir?"pending":"not accepted yet"]}),f&&h[c.id]&&(0,b.jsx)("div",{style:{marginTop:3,padding:"6px 9px",borderRadius:8,background:"rgba(255,255,255,0.06)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:h[c.id]})]},c.id)),a.request&&(0,b.jsxs)("div",{style:{fontSize:12.5},children:[(0,b.jsx)("span",{style:{color:"#dfe8e8"},children:"Request tracked in the app"}),(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[" · ",a.request.status]})]})]})}function X({c:a,onChange:d}){let e=a.crm||{},[f,g]=(0,c.useState)(e.notes||""),[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(null),l=(0,c.useRef)(null),m=a.theyWrote?"replied":a.conversations.length||a.invitesOut.length||a.request?"contacted":"new";async function n(b){k("Saving…");try{await d(a.key,b),k("Saved")}catch(a){k(a.message)}}(0,c.useEffect)(()=>()=>clearTimeout(l.current),[]);let q=a=>s(new Date(Date.now()+864e5*a)),r=e.tags||[];function t(){let a=h.trim();a&&(i(""),n({tags:[...r,...a.split(",")]}))}return(0,b.jsxs)("div",{style:{marginTop:12,padding:"10px 12px",borderRadius:8,background:"rgba(52,152,219,0.06)",border:"1px solid rgba(52,152,219,0.18)"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"flex-end"},children:[(0,b.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Stage",(0,b.jsxs)("select",{value:e.stage||"",onChange:a=>n({stage:a.target.value||null}),style:{...N,padding:"5px 8px"},children:[(0,b.jsxs)("option",{value:"",children:["Not set (looks like ",p(m),")"]}),o.map(a=>(0,b.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,b.jsxs)("label",{style:{fontSize:11.5,color:"#8b9a9a",display:"flex",flexDirection:"column",gap:3},children:["Next follow-up",(0,b.jsx)("input",{type:"date",value:e.followUp||"",onChange:a=>n({followUp:a.target.value||null}),style:{...N,padding:"4px 8px",colorScheme:"dark"}})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[(0,b.jsx)("button",{onClick:()=>n({followUp:q(3)}),style:M,children:"In 3 days"}),(0,b.jsx)("button",{onClick:()=>n({followUp:q(7)}),style:M,children:"In a week"}),e.followUp&&(0,b.jsx)("button",{onClick:()=>n({followUp:null}),style:M,children:"Clear"})]})]}),null==e.stage&&"new"!==m&&(0,b.jsxs)("button",{onClick:()=>n({stage:m}),style:{...M,marginTop:8},children:["Set to ",p(m)]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"},children:[r.map(a=>(0,b.jsxs)("span",{style:{...L("rgba(255,255,255,0.08)"),fontSize:11.5,display:"inline-flex",gap:4,alignItems:"center"},children:[a,(0,b.jsx)("button",{"aria-label":`Remove ${a}`,onClick:()=>n({tags:r.filter(b=>b!==a)}),style:{background:"none",border:"none",color:"#8b9a9a",cursor:"pointer",padding:0,fontSize:12},children:"×"})]},a)),(0,b.jsx)("input",{value:h,onChange:a=>i(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),t())},onBlur:t,placeholder:"Add a tag","aria-label":"Add a tag",style:{...N,padding:"3px 8px",fontSize:12,width:120}})]}),(0,b.jsx)("textarea",{value:f,onChange:a=>{var b;g(b=a.target.value),clearTimeout(l.current),l.current=setTimeout(()=>n({notes:b}),800)},onBlur:function(){clearTimeout(l.current),f!==(e.notes||"")&&n({notes:f})},placeholder:"Your notes on them: kept on this computer only","aria-label":"Notes",rows:4,style:{...N,width:"100%",marginTop:10,resize:"vertical",fontFamily:"inherit",lineHeight:1.45,boxSizing:"border-box"}}),(0,b.jsx)("div",{style:{fontSize:11,color:j&&"Saved"!==j&&"Saving…"!==j?"#ff9b9b":"#778",marginTop:4,minHeight:14},children:j||""})]})}function Y({g:a,contacts:c,nameOf:d,keep:e,token:f,onPick:g}){let h=I(a.threadUrl);return(0,b.jsxs)("div",{style:{fontSize:13},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("h3",{style:{margin:0,fontSize:17},children:T(a,d)}),(0,b.jsx)("span",{style:L("rgba(255,255,255,0.08)"),children:a.unknown?"To someone unnamed":"Group"}),a.unread>0&&(0,b.jsxs)("span",{style:L("#3498DB","#fff"),children:[a.unread," unread"]})]}),(0,b.jsx)("div",{style:{color:"#8b9a9a",marginTop:4,fontSize:12.5},children:[a.last?`Last active ${G(a.last)}`:null,null!=a.count?J(a.count,"message"):null].filter(Boolean).join(" · ")}),h&&(0,b.jsx)("a",{href:h,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none",fontSize:12.5,display:"inline-block",marginTop:6},children:"Conversation on LinkedIn ↗"}),a.people.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{style:V,children:"Who’s in it"}),(0,b.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:a.people.map(a=>{let e=c.get(a);return(0,b.jsxs)("button",{onClick:()=>g(a),style:{...M,display:"inline-flex",gap:6,alignItems:"center"},children:[(0,b.jsx)(Q,{tier:e?.row?.tier}),d(a)||a.split("/").pop(),e&&!e.connection&&(0,b.jsx)("span",{style:{color:"#ffc58a",fontSize:10.5},children:"not a connection"})]},a)})})]}),(0,b.jsx)("div",{style:V,children:"Messages"}),(0,b.jsx)("div",{style:{border:m.LINE,borderRadius:6,overflow:"hidden"},children:(0,b.jsx)(C,{id:a.id,keep:e,group:!0,token:f},`${a.id}:${f}:${e}`)})]})}let Z={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},$={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},_=a=>a?new Date(a).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function aa(a){let b=[],c={},d=0;for(let e of a)for(let a of e.messages){let f=JSON.stringify(a).length+2;d+f>25e5&&d>0&&(b.push(c),c={},d=0),c[e.id]||(c[e.id]={title:e.title||"",messages:[]},d+=e.id.length+(e.title||"").length+40),c[e.id].messages.push(a),d+=f}b.push(c);for(let a=0;a<b.length;a++){let c=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:a,parts:b.length,threads:b[a]})});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}async function ab(a){let b={};for(let c of a)c.note&&(b[c.id]=c.note);let c=await fetch("/api/social/messages",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({invites:b})});if(!c.ok)throw Error((await c.json().catch(()=>({}))).error||"The requests’ notes couldn’t be saved.")}function ac({embedded:a=!1}){let{userId:d}=(0,g.useUser)(),[e,o]=(0,c.useState)(void 0),[p,q]=(0,c.useState)(null),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(null),[v,w]=(0,c.useState)(!1),[x,y]=(0,c.useState)(()=>(0,l.scannerNow)()),[z,A]=(0,c.useState)(!1),[B,C]=(0,c.useState)(0),[D,E]=(0,c.useState)(0),F=(0,c.useRef)(null),G=(0,c.useRef)(null),H=e?.keepMessages===!0,I=()=>fetch("/api/social").then(a=>a.json()).then(a=>o(a.social||null)).catch(()=>o(null)).finally(()=>C(a=>a+1));async function J(a){w(!0),u(null);try{let b={};for(let c of Array.from(a||[])){let a=c.name.toLowerCase();$[a]&&!b[a]&&(b[a]=(0,i.readTable)(await c.text(),$[a]))}if(!Object.keys(b).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let c=b["connections.csv"]||[],d=b["messages.csv"]?(0,i.messageStats)(b["messages.csv"]):{asOf:null,people:new Map},e=b["messages.csv"]?(0,i.buildConversations)(b["messages.csv"],{keepText:H}):null,f=b["invitations.csv"]?(0,i.buildInvitations)(b["invitations.csv"],{keepText:H}):null;F.current=b["messages.csv"]||null,G.current=b["invitations.csv"]||null;let g={};for(let[a,b]of d.people)g[a]={last:b.last,lastFromThem:b.lastFromThem,total:b.total,recent:b.recent};if(r)for(let a of c){let b=a["email address"];if(!b)continue;let c=(0,k.keyFor)({profile_url:a.url});g[c]={...g[c]||{},email:b}}let h=d.asOf||Date.now(),j={asOf:h,people:g,conversations:e?e.conversations.map(i.conversationSummary):[],chapters:(0,i.careerChapters)(b["positions.csv"]||[],c,h),posts:b["shares.csv"]?(0,i.postingEffect)(b["shares.csv"],c):null,invites:b["invitations.csv"]?(0,i.invitationSplit)(b["invitations.csv"]):null,invitations:(f||[]).map(({note:a,...b})=>b),names:e?e.names:{},emails:r},l=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(j)});if(!l.ok)throw Error((await l.json().catch(()=>({}))).error||"It couldn’t be saved.");e&&H&&await aa(e.conversations),f&&H&&await ab(f);let m=e?[e.drafts?`${e.drafts.toLocaleString()} unsent ${1===e.drafts?"draft":"drafts"} left out`:"",e.skipped?`${e.skipped.toLocaleString()} ${1===e.skipped?"row":"rows"} with no conversation or date left out`:""].filter(Boolean):[];u({good:!0,text:`Read ${Object.keys(b).length} of LinkedIn’s files: ${d.people.size.toLocaleString()} people you’ve messaged one to one`+(e?`, ${e.conversations.length.toLocaleString()} conversations${H?", their messages kept on this computer":""}`:"")+(f?`, ${f.length.toLocaleString()} connection requests`:"")+`.${m.length?` (${m.join("; ")}.)`:""}`}),await I()}catch(a){u({good:!1,text:a.message})}finally{w(!1)}}async function K(a=!1){u(null);try{let b=await (0,l.runScrape)(a?"messages-full":"messages");u(b?.exitCode===0?{good:!0,text:a?"Your whole messages history is read.":"Your messages list is read."}:{good:!1,text:"The sync stopped before it finished. The Scan page has the log."}),await I()}catch(a){u({good:!1,text:a.message})}}async function L(a){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:a})}),I()}async function M(a){if(a||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){A(!0),u(null);try{if(a||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:a})})).ok)throw Error("The switch couldn’t be saved.");a&&(F.current||G.current)?(F.current&&await aa((0,i.buildConversations)(F.current,{keepText:!0}).conversations),G.current&&await ab((0,i.buildInvitations)(G.current,{keepText:!0})),u({good:!0,text:"Your messages are kept on this computer now."})):a?u({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):u({good:!0,text:"Off. The kept messages are deleted."})}catch(a){u({good:!1,text:a.message})}finally{A(!1),I()}}}async function N(){await fetch("/api/social",{method:"DELETE"}),F.current=null,G.current=null;let a="Forgotten. Nothing from your export or messages is kept here now, the messages themselves included.";window.confirm("Also delete your CRM: the stages, tags, notes and follow-up dates you added? This can’t be undone. Cancel keeps them.")?(await fetch("/api/social/crm",{method:"DELETE"}),E(a=>a+1),a+=" Your CRM notes are deleted too."):a+=" Your CRM notes are kept.",u({good:!0,text:a}),I()}(0,c.useEffect)(()=>{I()},[]),(0,c.useEffect)(()=>(0,l.watchScanner)(()=>y((0,l.scannerNow)())),[]),(0,c.useEffect)(()=>{if(!d)return;let a=!0;return(0,h.loadNetwork)(d).then(b=>{a&&q(b)}).catch(()=>{}),()=>{a=!1}},[d]);let{merged:P,asOf:Q}=(0,c.useMemo)(()=>(0,j.mergeSocial)(e),[e]),R=(0,c.useMemo)(()=>{let a={warm:0,cool:0,dormant:0,never:0};for(let b of p?.degree1||[])a[(0,i.warmthOf)(P.get((0,k.keyFor)(b)),Q)]+=1;return a},[p,P,Q]);if(n.IS_DEMO)return(0,b.jsx)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"#aaa",padding:40,fontFamily:m.FONT},children:"Not part of the demo."});let S=x?.running,T={padding:"12px 14px",borderRadius:8,border:m.LINE,background:"rgba(255,255,255,0.03)",marginTop:10},U={fontSize:16,margin:"24px 0 6px"};return(0,b.jsxs)("div",{style:a?{color:"#fff",fontFamily:m.FONT}:{minHeight:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:m.FONT},children:[!a&&(0,b.jsxs)("header",{style:{padding:"16px 24px",borderBottom:m.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,b.jsx)(f.default,{href:"/",style:{color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:m.LINE},children:"← Back to Map"}),(0,b.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"#FFD700"},children:["Social ",(0,b.jsx)("span",{style:{fontSize:12,color:"#8b9a9a",fontWeight:600},children:"experimental"})]})]}),(0,b.jsxs)("main",{style:{maxWidth:1180,margin:"0 auto",padding:"8px 16px 64px"},children:[(0,b.jsxs)(m.Body,{style:{marginTop:16},children:["Everyone you’ve been in touch with on LinkedIn, connections or not: who’s waiting on you, who hasn’t answered, what you’ve sent and received, and your own notes and follow-ups on each, from your own LinkedIn data. Only dates, who wrote last, counts and names are kept on this computer, and what messages say only if you turn on ",(0,b.jsx)("i",{children:"Keep my messages"})," below."]}),(0,b.jsx)("h2",{style:U,children:"Your LinkedIn export"}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)(m.Body,{style:{margin:0},children:["On LinkedIn: ",(0,b.jsx)("i",{children:"Settings → Data privacy → Get a copy of your data"}),", pick the larger archive, and unzip the file it emails you. Then choose that folder here. It’s read in this window; nothing goes to LinkedIn."]}),(0,b.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",marginTop:10},children:[(0,b.jsx)("input",{type:"checkbox",checked:r,onChange:a=>s(a.target.checked),style:{marginTop:3}}),(0,b.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"#cfe6f7",cursor:v?"default":"pointer",fontSize:13},children:[v?"Reading…":e?"Choose a newer export":"Choose the export folder",(0,b.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:v,style:{display:"none"},onChange:a=>J(a.target.files)})]}),e&&(0,b.jsxs)("span",{style:{fontSize:12,color:"#8b9a9a"},children:["From an export up to ",_(e.asOf),e.liveAt?` \xb7 messages synced ${_(Date.parse(e.liveAt))}`:""]}),e&&(0,b.jsx)("button",{onClick:N,style:{background:"none",border:"none",color:"#ff9b9b",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,b.jsxs)("h2",{style:U,children:["Live messages sync ",(0,b.jsx)("span",{style:{fontSize:11,color:"#FFD700"},children:"experimental"})]}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)(m.Body,{style:{margin:0},children:["Reads your messages list once, in your own Chrome: who each conversation is with, connections or not, when it was last active, whether it’s unread and who wrote last. It uses no search budget and opens no conversation. The newest message’s words are kept only if ",(0,b.jsx)("i",{children:"Keep my messages"})," is on. The daily sync reads the top of the list; ",(0,b.jsx)("i",{children:"Read my whole history"})," keeps scrolling until no more conversations load (at most 60 scrolls, about 1,000 conversations), at the same slow, fixed pace, so it takes a few minutes."]}),(0,b.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,b.jsx)("button",{onClick:()=>K(!1),disabled:S,style:{padding:"7px 14px",borderRadius:8,border:"none",background:S?"#333":"rgba(0,255,136,0.15)",color:S?"#777":"#00ff88",cursor:S?"default":"pointer",fontSize:13},children:S?"The scanner is busy":"Sync messages now"}),(0,b.jsx)("button",{onClick:()=>K(!0),disabled:S,style:{padding:"7px 14px",borderRadius:8,border:m.LINE,background:"none",color:S?"#777":"#cfe6f7",cursor:S?"default":"pointer",fontSize:13},children:"Read my whole history"}),(0,b.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"#b8c4c4"},children:[(0,b.jsx)("input",{type:"checkbox",checked:e?.autoSync===!0,onChange:a=>L(a.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),t&&(0,b.jsx)("div",{style:{marginTop:10,fontSize:13,color:t.good?"#00ff88":"#ff9b9b"},children:t.text}),(0,b.jsx)("h2",{style:U,children:"People"}),(0,b.jsx)(O,{net:p,asOf:e?Q:null,keep:H,onKeep:M,switching:z||v,token:B,crmToken:D}),e&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Warmth"}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(Z).map(([a,[c,d]])=>(0,b.jsxs)("div",{style:{...T,marginTop:0},children:[(0,b.jsx)("div",{style:{fontSize:22,fontWeight:700,color:d},children:(R[a]||0).toLocaleString()}),(0,b.jsx)("div",{style:{fontSize:12.5,color:"#b8c4c4"},children:c})]},a))}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:6},children:"Of your connections. Warm: messaged in the last 30 days, or 3+ messages in 90. Cool: within a year. Dormant: longer ago."}),e.chapters?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Career chapters"}),(0,b.jsx)("div",{style:{...T,padding:0},children:e.chapters.map(a=>{let c=(a.people||[]).filter(a=>["warm","cool"].includes((0,i.warmthOf)(P.get((0,k.keyFor)({profile_url:a})),Q))).length;return(0,b.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)",fontSize:13,alignItems:"baseline"},children:[(0,b.jsxs)("span",{style:{flex:1},children:[(0,b.jsx)("b",{children:a.company})," ",(0,b.jsxs)("span",{style:{color:"#8b9a9a"},children:[a.title," · ",new Date(a.from).getFullYear(),"–",a.to?new Date(a.to).getFullYear():"now"]})]}),(0,b.jsxs)("span",{style:{color:"#b8c4c4"},children:[a.made.toLocaleString()," connections made"]}),(0,b.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:a.made?`${Math.round(100*c/a.made)}% still in touch`:""})]},`${a.company}-${a.from}`)})})]}),e.posts?.posts?.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Does posting work?"}),(0,b.jsxs)("div",{style:T,children:[(0,b.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,b.jsx)("b",{children:e.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,b.jsx)("b",{children:e.posts.usualWeek.toFixed(1)}),"."]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#778",marginTop:4},children:"What came after a post, not proof it came from it."}),[...e.posts.posts].sort((a,b)=>b.week-a.week).slice(0,3).map(a=>(0,b.jsxs)("div",{style:{fontSize:12.5,color:"#b8c4c4",marginTop:6},children:[_(a.t),": ",a.week," new connections that week ",a.link?(0,b.jsx)("a",{href:a.link,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",textDecoration:"none"},children:"Post ↗"}):null]},a.t))]})]}),e.invites?.total>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h2",{style:U,children:"Who reaches out"}),(0,b.jsx)("div",{style:T,children:(0,b.jsxs)("span",{style:{fontSize:13},children:[e.invites.incoming.toLocaleString()," requests came to you and you sent ",e.invites.outgoing.toLocaleString()," ","(",Math.round(100*e.invites.incoming/e.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}var ad=a.i(63033),ae=a.i(91443);let af={S:25,A:15,B:10,C:5,D:2},ag={S:100,A:60,B:35,C:15,D:5};var ah=a.i(59943),ai=a.i(56377);let aj=D.TIER_COLORS,ak="1px solid rgba(255,255,255,0.1)";function al({person:a,size:c=36,ring:d}){let e=aj[a?.tier]||"#667";return(0,b.jsxs)("div",{style:{position:"relative",width:c,height:c,flexShrink:0},children:[(0,b.jsx)("div",{style:{width:c,height:c,borderRadius:"50%",background:e,color:a?.tier==="S"?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:.34*c,fontWeight:800,border:`2px solid ${d||e}`},children:(0,ah.initialsFor)(a?.name||"?")}),(0,ai.localPhoto)(a?.profile_image_url)&&(0,b.jsx)("img",{src:(0,ai.localPhoto)(a.profile_image_url),alt:"",onError:a=>{a.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:c,height:c,borderRadius:"50%",objectFit:"cover",border:`2px solid ${d||e}`}})]})}function am({progress:a,size:c=86,color:d="#FF6B35",children:e}){let f=c/2-5,g=2*Math.PI*f;return(0,b.jsxs)("div",{style:{position:"relative",width:c,height:c},children:[(0,b.jsxs)("svg",{width:c,height:c,style:{position:"absolute",inset:0,transform:"rotate(-90deg)"},children:[(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:f,fill:"none",stroke:"rgba(255,255,255,0.08)",strokeWidth:5}),(0,b.jsx)("circle",{cx:c/2,cy:c/2,r:f,fill:"none",stroke:d,strokeWidth:5,strokeLinecap:"round",strokeDasharray:`${g*Math.min(1,a)} ${g}`,style:{transition:"stroke-dasharray 0.5s ease"}})]}),(0,b.jsx)("div",{style:{position:"absolute",inset:9,display:"flex",alignItems:"center",justifyContent:"center"},children:e})]})}function an({recs:a,sentIds:d,added:e,mappedIds:g,reach:h,onSend:i,onUndo:j}){let k=(0,c.useMemo)(()=>(function({recs:a=[],sentIds:b=new Set,added:c=[],mappedIds:d=new Set,reach:e=null}){var f;let g,h,i,j=new Map,k=new Set;for(let b of[...a].sort((a,b)=>(b.priority||0)-(a.priority||0))){if(!b.bridge)continue;let a=`${b.bridge.id}|${b.profile_url||b.id}`;if(k.has(a))continue;k.add(a);let c=j.get(b.bridge.id);c||(c={bridge:b.bridge,people:[]},j.set(b.bridge.id,c)),c.people.push(b)}let l=new Map;for(let a of c){let b=a.unlocked_from_bridge_id;b&&l.set(b,[...l.get(b)||[],a])}let m=[],n=0,o=0;for(let{bridge:a,people:c}of j.values()){let d=c.filter(a=>b.has(a.id)),e=l.get(a.id)||[];o+=d.length,n+=d.reduce((a,b)=>a+(af[b.tier]||2),0),n+=e.reduce((a,b)=>a+(ag[b.tier]||5),0);let f=Math.ceil(c.length/5)||1,g=0;for(;g<f-1&&c.slice(5*g,(g+1)*5).every(a=>b.has(a.id));)g++;let h=c.slice(5*g,(g+1)*5),i=h.filter(a=>b.has(a.id)).length,j=i===h.length&&g===f-1;m.push({bridge:a,people:c,stage:g+1,stages:f,targets:h,done:i,progress:h.length?i/h.length:1,complete:j,sent:d.length,added:e,value:h.filter(a=>!b.has(a.id)).reduce((a,b)=>a+(b.priority||0),0),open:{S:h.filter(a=>"S"===a.tier&&!b.has(a.id)).length,A:h.filter(a=>"A"===a.tier&&!b.has(a.id)).length}})}m.sort((a,b)=>a.complete-b.complete||(b.progress>0&&b.progress<1)-(a.progress>0&&a.progress<1)||b.progress-a.progress||b.value-a.value);let p=m.filter(a=>!a.complete).flatMap(a=>a.targets.filter(a=>!b.has(a.id)).map(b=>({person:b,cluster:a,score:(b.priority||0)*(1+.6*a.progress)}))).sort((a,b)=>b.score-a.score),q=new Set,r=[];for(let a of p){let b=a.person.profile_url||a.person.id;if(!q.has(b)&&(q.add(b),r.push(a),3===r.length))break}let s=c.filter(a=>a.unlocked_from_bridge_id).length;return{clusters:m,nextMoves:r,points:n,level:(h=((g=Math.floor(Math.sqrt(Math.max(0,f=n)/40))+1)-1)**2*40,i=g**2*40,{level:g,floor:h,next:i,progress:(f-h)/(i-h)}),sentTotal:o,addedTotal:s,newDoors:c.filter(a=>a.unlocked_from_bridge_id&&"todo"===(0,ae.circleState)(a,e||{scanned:d,hidden:new Set})),clearedStages:m.reduce((a,b)=>a+(b.stage-1)+ +!!b.complete,0)}})({recs:a,sentIds:d,added:e,mappedIds:g,reach:h}),[a,d,e,g,h]),[l,m]=(0,c.useState)(null),[n,o]=(0,c.useState)(null),{level:p}=k;async function q(a,b){await i(a);let c=b.done+1,d=String(b.bridge.name||"").split(/[\s,]+/)[0];o(c>=b.targets.length?`+${af[a.tier]||2} \xb7 Stage ${b.stage} of ${d}'s circle cleared — the next 5 are up`:`+${af[a.tier]||2} \xb7 ${d}'s circle ${c}/${b.targets.length}`),setTimeout(()=>o(null),3500)}let r=k.clusters.find(a=>a.bridge.id===l);return(0,b.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto",padding:"16px 20px 60px"},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:16,alignItems:"center",flexWrap:"wrap",padding:16,borderRadius:12,border:ak,background:"linear-gradient(135deg, rgba(255,107,53,0.10), rgba(155,89,182,0.08))"},children:[(0,b.jsxs)("div",{style:{width:64,height:64,borderRadius:16,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[(0,b.jsx)("div",{style:{fontSize:10,fontWeight:800},children:"LEVEL"}),(0,b.jsx)("div",{style:{fontSize:26,fontWeight:900,lineHeight:1},children:p.level})]}),(0,b.jsxs)("div",{style:{flex:1,minWidth:220},children:[(0,b.jsxs)("div",{style:{fontSize:13,color:"#dfe6e9"},children:[(0,b.jsx)("b",{children:k.points})," points · ",(0,b.jsx)("b",{children:p.next-k.points})," to level ",p.level+1]}),(0,b.jsx)("div",{style:{height:8,borderRadius:4,background:"rgba(255,255,255,0.08)",marginTop:6,overflow:"hidden"},children:(0,b.jsx)("div",{style:{height:"100%",width:`${Math.round(100*p.progress)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",transition:"width 0.5s"}})}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",marginTop:6},children:"Points come from invites you send and people who accept — not from browsing."})]}),[[k.sentTotal,"invites sent"],[k.addedTotal,"people added"],[k.clearedStages,"stages cleared"]].map(([a,c])=>(0,b.jsxs)("div",{style:{textAlign:"center",minWidth:80},children:[(0,b.jsx)("div",{style:{fontSize:24,fontWeight:900},children:a}),(0,b.jsx)("div",{style:{fontSize:11,color:"#8b9a9a"},children:c})]},c))]}),k.newDoors.length>0&&(0,b.jsxs)("div",{style:{marginTop:12,padding:"10px 14px",borderRadius:10,border:"1px solid rgba(0,255,136,0.3)",background:"rgba(0,255,136,0.06)",fontSize:13},children:["🚪 ",(0,b.jsxs)("b",{children:[k.newDoors.length," new ",1===k.newDoors.length?"door":"doors",":"]})," people you added through a circle, whose own circle isn’t mapped yet. That’s the next degree. ",(0,b.jsx)(f.default,{href:"/setup",style:{color:"#00ff88"},children:"Map them on the Scan page →"})]}),k.nextMoves.length>0&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("h3",{style:{margin:"22px 0 10px",fontSize:15},children:"Next best moves"}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12},children:k.nextMoves.map(({person:a,cluster:c},d)=>(0,b.jsxs)("div",{style:{padding:14,borderRadius:12,border:`1px solid ${aj[a.tier]}55`,background:"rgba(255,255,255,0.03)",position:"relative"},children:[(0,b.jsxs)("div",{style:{position:"absolute",top:10,right:12,fontSize:11,fontWeight:800,color:"#FF6B35"},children:["#",d+1]}),(0,b.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[(0,b.jsx)(al,{person:a,size:44}),(0,b.jsxs)("div",{style:{minWidth:0},children:[(0,b.jsx)("div",{style:{fontWeight:700,fontSize:14},children:a.name}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:220},children:a.headline})]})]}),(0,b.jsxs)("div",{style:{fontSize:11.5,color:"#aab7b7",margin:"10px 0"},children:["via ",(0,b.jsx)("b",{style:{color:aj[c.bridge.tier]},children:c.bridge.name})," · their circle ",c.done,"/",c.targets.length," this stage"]}),(0,b.jsxs)("div",{style:{display:"flex",gap:8},children:[a.profile_url&&(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:ap,children:"Open on LinkedIn"}),(0,b.jsxs)("button",{onClick:()=>q(a,c),style:ao,children:["I sent an invite · +",af[a.tier]||2]})]})]},a.id))})]}),(0,b.jsx)("h3",{style:{margin:"26px 0 4px",fontSize:15},children:"Circles to work through"}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginBottom:12},children:["Each is one of your connections and the best people they know, ",5," at a time. Fill the ring to clear a stage."]}),(0,b.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:12},children:k.clusters.map(a=>{let c=l===a.bridge.id;return(0,b.jsxs)("button",{onClick:()=>m(c?null:a.bridge.id),style:{padding:12,borderRadius:12,cursor:"pointer",textAlign:"center",color:"#fff",border:c?"1px solid #FF6B35":ak,background:a.complete?"rgba(0,255,136,0.06)":"rgba(255,255,255,0.03)",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,b.jsx)(am,{progress:a.progress,color:a.complete?"#00ff88":"#FF6B35",children:(0,b.jsx)(al,{person:a.bridge,size:60})}),(0,b.jsx)("div",{style:{fontWeight:700,fontSize:13,maxWidth:170,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.bridge.name}),(0,b.jsx)("div",{style:{fontSize:11,color:a.complete?"#00ff88":"#aab7b7"},children:a.complete?"Circle cleared":`Stage ${a.stage} of ${a.stages} \xb7 ${a.done}/${a.targets.length}`}),(0,b.jsx)("div",{style:{display:"flex",gap:4},children:a.targets.map(a=>(0,b.jsx)("span",{title:a.name,style:{width:12,height:12,borderRadius:"50%",border:`2px solid ${aj[a.tier]||"#667"}`,background:d.has(a.id)?aj[a.tier]||"#667":"transparent"}},a.id))}),(0,b.jsxs)("div",{style:{fontSize:10.5,color:"#778"},children:[a.open.S?`${a.open.S} S \xb7 `:"",a.open.A?`${a.open.A} A \xb7 `:"",a.people.length," worth adding",a.added.length?` \xb7 ★ ${a.added.length} added`:""]})]},a.bridge.id)})}),r&&(0,b.jsxs)("div",{style:{marginTop:14,padding:16,borderRadius:12,border:"1px solid rgba(255,107,53,0.4)",background:"rgba(255,107,53,0.05)"},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,b.jsx)(al,{person:r.bridge,size:40}),(0,b.jsxs)("div",{children:[(0,b.jsxs)("div",{style:{fontWeight:800},children:[r.bridge.name,"’s circle · stage ",r.stage," of ",r.stages]}),(0,b.jsxs)("div",{style:{fontSize:12,color:"#aab7b7"},children:["Ask ",r.bridge.name?.split(" ")[0]," for an intro, or invite them directly. Mark each one when it’s sent."]})]})]}),r.targets.map(a=>{let c=d.has(a.id);return(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 0",borderTop:"1px solid rgba(255,255,255,0.05)"},children:[(0,b.jsx)(al,{person:a,size:34,ring:c?"#00ff88":void 0}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsxs)("div",{style:{fontWeight:600,fontSize:13},children:[a.name," ",(0,b.jsx)("span",{style:{color:aj[a.tier],fontSize:11},children:a.tier})]}),(0,b.jsx)("div",{style:{fontSize:11.5,color:"#8b9a9a",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline})]}),a.profile_url&&(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:ap,children:"LinkedIn"}),c?(0,b.jsx)("button",{onClick:()=>j(a),style:{...ap,color:"#00ff88"},children:"Sent ✓ (undo)"}):(0,b.jsxs)("button",{onClick:()=>q(a,r),style:ao,children:["Sent · +",af[a.tier]||2]})]},a.id)}),r.added.length>0&&(0,b.jsxs)("div",{style:{marginTop:10,fontSize:12,color:"#00ff88"},children:["★ Added from this circle: ",r.added.map(a=>a.name).join(", ")]})]}),n&&(0,b.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000",fontWeight:800,fontSize:13,boxShadow:"0 8px 30px rgba(0,0,0,0.5)",zIndex:50},children:n})]})}let ao={padding:"7px 12px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:800,fontSize:12,background:"linear-gradient(135deg, #FF6B35, #FFD700)",color:"#000"},ap={padding:"7px 12px",borderRadius:8,border:ak,cursor:"pointer",fontWeight:600,fontSize:12,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",textDecoration:"none"};var aq=a.i(36839),ar=a.i(30889),as=a.i(76892),at=a.i(24475);let au=["quest","recs","pending","messages"];function av(){let{userId:a,userProfile:i}=(0,g.useUser)(),j=i?.sectors||[],[m,o]=(0,c.useState)([]),[p,q]=(0,c.useState)(!0),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)(new Set),v=(0,as.default)(),[w,x]=(0,c.useState)([]),[y,z]=(0,c.useState)({}),A=(0,d.useSearchParams)().get("view"),[B,C]=(0,c.useState)(()=>au.includes(A)?A:"quest"),[E,F]=(0,c.useState)([]),[G,H]=(0,c.useState)(()=>new Set),[I,J]=(0,c.useState)(null),[K,L]=(0,c.useState)(null),[M,N]=(0,c.useState)(()=>"bridge");(0,c.useEffect)(()=>{},[]),(0,c.useEffect)(()=>{!n.IS_DEMO&&a&&b();async function b(){let[b,c,d]=await Promise.all([(0,h.loadNetwork)(a),fetch(`/api/outreach?userId=${a}`).then(a=>a.json()).catch(()=>({pending:[]})),(0,l.loadScanNotes)()]),e=b.degree1,f=b.degree2;F(e.filter(a=>a.unlocked_from_bridge_id)),H(new Set(f.map(a=>a.source_connection_id).filter(Boolean))),J((0,ae.reachIndex)(e,f,d));let g=new Set(e.map(a=>a.profile_url)),i={};e.forEach(a=>{i[a.id]=a}),x(c.pending||[]),z(i),o(f.filter(a=>("S"===a.tier||"A"===a.tier||"B"===a.tier)&&!g.has(a.profile_url)).map(a=>{let b,c,d=i[a.source_connection_id],e=(b=parseFloat(a.power_score)||0,c=(a.headline||"").toLowerCase(),(0,ar.rowCompanyScore)(a)>=ar.TOP_COMPANY&&(b+=1),(j||[]).forEach(a=>{c.includes(a.toLowerCase())&&(b+=.5)}),"S"===a.tier?b*=1.5:"A"===a.tier&&(b*=1.2),b),f="S"===a.tier?50:"A"===a.tier?25:10;return{...a,bridge:d,priority:e,xp:f}}).sort((a,b)=>b.priority-a.priority)),q(!1)}},[a]);let O=(0,c.useMemo)(()=>new Set([...w,...m].filter(a=>(0,at.hasRequest)(a,v)).map(a=>a.id)),[w,m,v]),P=(0,c.useMemo)(()=>{let a=new Set,b=[];for(let c of[...w,...m]){let d=(0,k.keyFor)(c);!a.has(d)&&(0,at.hasRequest)(c,v)&&(a.add(d),b.push({...c,bridge:y[c.source_connection_id]||c.bridge||null}))}return b},[w,m,v,y]);if((0,c.useEffect)(()=>((0,ad.setNotchTabs)({items:[{key:"quest",label:"Circles"},{key:"recs",label:`To add (${m.length})`},{key:"pending",label:`Pending (${P.length})`},{key:"messages",label:"Messages & follow-ups"}],current:B,onPick:C}),()=>(0,ad.setNotchTabs)(null)),[B,m.length,P.length]),n.IS_DEMO)return(0,b.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(255,255,255,0.7)",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,textAlign:"center",padding:24},children:[(0,b.jsx)("h2",{style:{margin:0,fontSize:18,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,b.jsx)("div",{style:{fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,b.jsx)(f.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});let Q="all"===r?m:m.filter(a=>a.tier===r);K&&(Q=Q.filter(a=>a.bridge?.id===K));let R={S:0,A:0,B:0};m.forEach(a=>{void 0!==R[a.tier]&&R[a.tier]++});let S={};Q.forEach(a=>{let b;S[b="bridge"===M?a.bridge?.id||"unknown":"company"===M?(a.company||"Unknown").trim()||"Unknown":a.tier]||(S[b]=[]),S[b].push(a)});let T={S:0,A:1,B:2},U=Object.entries(S).sort((a,b)=>{if("tier"===M)return(T[a[0]]||9)-(T[b[0]]||9);if("bridge"===M){let c=a[1][0]?.bridge,d=b[1][0]?.bridge,e=T[c?.tier]??9,f=T[d?.tier]??9;if(e!==f)return e-f}return b[1].length-a[1].length});function V(a){u(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})}return p?(0,b.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff"},children:"Loading..."}):(0,b.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,b.jsx)(e.default,{active:"outlink"}),("recs"===B||"pending"===B)&&(0,b.jsxs)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(255,255,255,0.08)",flexShrink:0},children:[(0,b.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:10},children:(0,b.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:"recs"===B&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("button",{onClick:()=>N("tier"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"tier"===M?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"tier"===M?"#fff":"#666"},children:"By Tier"}),(0,b.jsx)("button",{onClick:()=>N("bridge"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"bridge"===M?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"bridge"===M?"#fff":"#666"},children:"By Bridge"}),(0,b.jsx)("button",{onClick:()=>N("company"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"company"===M?"rgba(255,255,255,0.15)":"rgba(255,255,255,0.05)",color:"company"===M?"#fff":"#666"},children:"By Company"})]})})}),(0,b.jsx)("div",{style:{display:"flex",gap:6},children:[{k:"all",l:`All (${m.length})`},{k:"S",l:`S (${R.S})`,c:D.TIER_COLORS.S},{k:"A",l:`A (${R.A})`,c:D.TIER_COLORS.A},{k:"B",l:`B (${R.B})`,c:D.TIER_COLORS.B}].map(a=>(0,b.jsx)("button",{onClick:()=>s(a.k),style:{padding:"4px 12px",borderRadius:16,border:"none",fontSize:11,fontWeight:600,cursor:"pointer",background:r===a.k?a.c||"#fff":"rgba(255,255,255,0.06)",color:r===a.k?"#000":a.c||"#888"},children:a.l},a.k))})]}),"messages"===B&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"40px 8px 0"},children:(0,b.jsx)(ac,{embedded:!0})}),"recs"===B&&t.size>0&&(0,b.jsxs)("div",{style:{padding:"10px 24px",background:"rgba(255,215,0,0.08)",borderBottom:"1px solid rgba(255,215,0,0.2)",display:"flex",alignItems:"center",gap:12,flexShrink:0},children:[(0,b.jsxs)("span",{style:{fontSize:12,color:"#FFD700",fontWeight:600},children:[t.size," selected"]}),(0,b.jsxs)("button",{onClick:function(){let a=Q.filter(a=>t.has(a.id));if(0===a.length)return;if(1===a.length)return void window.open(a[0].profile_url,"_blank");let b=new Blob([`<!DOCTYPE html><html><head><title>Outlink — ${a.length} profiles</title>
3
3
  <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px;margin:0}
4
4
  h2{color:#FFD700;margin-bottom:4px}p{color:#888;font-size:13px;margin-bottom:16px}
5
5
  .btn{display:block;padding:12px 16px;margin-bottom:6px;background:rgba(255,255,255,0.06);
@@ -13,7 +13,7 @@ module.exports=[78386,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944
13
13
  <button class="open-all" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
14
14
  Open All (${a.length})</button>
15
15
  ${a.map(a=>{let b="S"===a.tier?"#FFD700":"A"===a.tier?"#9B59B6":"#3498DB";return'<a class="btn" href="'+a.profile_url+'" target="_blank"><span class="name">'+(a.name||"")+'</span><span class="tier" style="color:'+b+'">'+a.tier+" · "+parseFloat(a.power_score||0).toFixed(1)+'</span><br><span style="color:#666;font-size:11px">'+(a.headline||"").substring(0,60)+"</span></a>"}).join("")}
16
- </body></html>`],{type:"text/html"});window.open(URL.createObjectURL(b),"_blank")},style:{padding:"6px 16px",borderRadius:6,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontWeight:700,fontSize:12},children:["Open ",t.size," on LinkedIn"]}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#888"},children:["+",P.filter(a=>t.has(a.id)).reduce((a,b)=>a+b.xp,0)," XP potential"]}),(0,b.jsx)("button",{onClick:()=>u(new Set),style:{marginLeft:"auto",background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:11},children:"Clear"})]}),"quest"===B&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto"},children:(0,b.jsx)(am,{recs:m,sentIds:N,added:D,mappedIds:F,reach:H,onSend:a=>(0,as.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{}),onUndo:a=>(0,as.undoRequest)(a).catch(()=>{})})}),("recs"===B||"pending"===B)&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"12px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:["pending"===B&&(0,b.jsx)(b.Fragment,{children:0===O.length?(0,b.jsxs)("div",{style:{textAlign:"center",padding:40,color:"#555"},children:[(0,b.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"⏳"}),(0,b.jsx)("div",{style:{fontSize:14,fontWeight:600},children:"No pending requests"}),(0,b.jsx)("div",{style:{fontSize:11,color:"#444",marginTop:4},children:'Click "Add" on someone to track your outreach'})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{style:{fontSize:10,color:"#666",marginBottom:12},children:"Waiting for response. When they accept, their cluster unlocks for bridging."}),O.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 12px",marginBottom:4,background:"rgba(255,107,53,0.04)",borderRadius:8,border:"1px solid rgba(255,107,53,0.1)"},children:[(0,ah.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ah.localPhoto)(a.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`2px solid ${at[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",flexShrink:0,fontSize:14,fontWeight:700,background:at[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:600},children:a.name}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,55)}),a.bridge&&(0,b.jsxs)("div",{style:{fontSize:9,color:"#FF6B35",marginTop:2},children:["via ",a.bridge.name?.split(" ")[0]," · unlocks bridge cluster"]})]}),(0,b.jsxs)("div",{style:{textAlign:"center",flexShrink:0},children:[(0,b.jsx)("div",{style:{fontSize:10,fontWeight:800,color:at[a.tier],padding:"2px 8px",borderRadius:4,background:`${at[a.tier]||"#555"}15`},children:a.tier}),(0,b.jsx)("div",{style:{fontSize:8,color:"#FF6B35",marginTop:2,fontWeight:600},children:"PENDING"})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none"},children:"View"}),(0,b.jsx)("button",{onClick:()=>{(0,as.undoRequest)(a).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:"rgba(255,255,255,0.06)",color:"#666",border:"none",cursor:"pointer"},children:"Undo"})]})]},a.id))]})}),"recs"===B&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.size===P.length&&P.length>0,onChange:function(){t.size===P.length?u(new Set):u(new Set(P.map(a=>a.id)))},style:{cursor:"pointer"}}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#666"},children:["Select all (",P.length,")"]})]}),T.map(([a,c])=>(0,b.jsxs)("div",{style:{marginBottom:16},children:["bridge"===L?(()=>{let a=c[0]?.bridge;if(!a)return null;let d=c.filter(a=>"S"===a.tier).length,e=c.filter(a=>"A"===a.tier).length,f=c.filter(a=>"B"===a.tier).length,g=3*d+2*e+f;return(0,b.jsxs)("div",{style:{padding:"10px 12px",marginBottom:6,borderRadius:8,background:`${at[a.tier]||"#555"}08`,border:`1px solid ${at[a.tier]||"#555"}20`},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,ah.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ah.localPhoto)(a.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",border:`2px solid ${at[a.tier]}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",fontSize:14,fontWeight:700,background:at[a.tier],color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:9,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,50)})]}),(0,b.jsxs)("div",{style:{textAlign:"right",flexShrink:0},children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:800,color:at[a.tier]},children:a.tier}),(0,b.jsxs)("div",{style:{fontSize:8,color:"#666"},children:[c.length," to add"]})]})]}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:4,fontSize:9},children:[d>0&&(0,b.jsxs)("span",{style:{color:"#FFD700",fontWeight:700},children:[d,"S"]}),e>0&&(0,b.jsxs)("span",{style:{color:"#9B59B6",fontWeight:700},children:[e,"A"]}),f>0&&(0,b.jsxs)("span",{style:{color:"#3498DB",fontWeight:700},children:[f,"B"]})]}),(0,b.jsx)("div",{style:{flex:1,height:4,background:"rgba(255,255,255,0.06)",borderRadius:2},children:(0,b.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${Math.min(100,g/30*100)}%`,background:`linear-gradient(90deg, ${at[a.tier]}, #FF6B35)`}})}),(0,b.jsxs)("button",{onClick:()=>{let a=c.map(a=>a.profile_url);if(1===a.length)return void window.open(a[0],"_blank");let b=`<!DOCTYPE html><html><head><title>Top ${Math.min(10,a.length)}</title>
16
+ </body></html>`],{type:"text/html"});window.open(URL.createObjectURL(b),"_blank")},style:{padding:"6px 16px",borderRadius:6,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontWeight:700,fontSize:12},children:["Open ",t.size," on LinkedIn"]}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#888"},children:["+",Q.filter(a=>t.has(a.id)).reduce((a,b)=>a+b.xp,0)," XP potential"]}),(0,b.jsx)("button",{onClick:()=>u(new Set),style:{marginLeft:"auto",background:"none",border:"none",color:"#888",cursor:"pointer",fontSize:11},children:"Clear"})]}),"quest"===B&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto"},children:(0,b.jsx)(an,{recs:m,sentIds:O,added:E,mappedIds:G,reach:I,onSend:a=>(0,at.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{}),onUndo:a=>(0,at.undoRequest)(a).catch(()=>{})})}),("recs"===B||"pending"===B)&&(0,b.jsx)("div",{style:{flex:1,overflow:"auto",padding:"12px 24px"},children:(0,b.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:["pending"===B&&(0,b.jsx)(b.Fragment,{children:0===P.length?(0,b.jsxs)("div",{style:{textAlign:"center",padding:40,color:"#555"},children:[(0,b.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"⏳"}),(0,b.jsx)("div",{style:{fontSize:14,fontWeight:600},children:"No pending requests"}),(0,b.jsx)("div",{style:{fontSize:11,color:"#444",marginTop:4},children:'Click "Add" on someone to track your outreach'})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{style:{fontSize:10,color:"#666",marginBottom:12},children:"Waiting for response. When they accept, their cluster unlocks for bridging."}),P.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 12px",marginBottom:4,background:"rgba(255,107,53,0.04)",borderRadius:8,border:"1px solid rgba(255,107,53,0.1)"},children:[(0,ai.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ai.localPhoto)(a.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`2px solid ${D.TIER_COLORS[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",flexShrink:0,fontSize:14,fontWeight:700,background:D.TIER_COLORS[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:600},children:a.name}),(0,b.jsx)("div",{style:{fontSize:10,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,55)}),a.bridge&&(0,b.jsxs)("div",{style:{fontSize:9,color:"#FF6B35",marginTop:2},children:["via ",a.bridge.name?.split(" ")[0]," · unlocks bridge cluster"]})]}),(0,b.jsxs)("div",{style:{textAlign:"center",flexShrink:0},children:[(0,b.jsx)("div",{style:{fontSize:10,fontWeight:800,color:D.TIER_COLORS[a.tier],padding:"2px 8px",borderRadius:4,background:`${D.TIER_COLORS[a.tier]||"#555"}15`},children:a.tier}),(0,b.jsx)("div",{style:{fontSize:8,color:"#FF6B35",marginTop:2,fontWeight:600},children:"PENDING"})]}),(0,b.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none"},children:"View"}),(0,b.jsx)("button",{onClick:()=>{(0,at.undoRequest)(a).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:"rgba(255,255,255,0.06)",color:"#666",border:"none",cursor:"pointer"},children:"Undo"})]})]},a.id))]})}),"recs"===B&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.size===Q.length&&Q.length>0,onChange:function(){t.size===Q.length?u(new Set):u(new Set(Q.map(a=>a.id)))},style:{cursor:"pointer"}}),(0,b.jsxs)("span",{style:{fontSize:10,color:"#666"},children:["Select all (",Q.length,")"]})]}),U.map(([a,c])=>(0,b.jsxs)("div",{style:{marginBottom:16},children:["bridge"===M?(()=>{let a=c[0]?.bridge;if(!a)return null;let d=c.filter(a=>"S"===a.tier).length,e=c.filter(a=>"A"===a.tier).length,f=c.filter(a=>"B"===a.tier).length,g=3*d+2*e+f;return(0,b.jsxs)("div",{style:{padding:"10px 12px",marginBottom:6,borderRadius:8,background:`${D.TIER_COLORS[a.tier]||"#555"}08`,border:`1px solid ${D.TIER_COLORS[a.tier]||"#555"}20`},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,ai.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ai.localPhoto)(a.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",border:`2px solid ${D.TIER_COLORS[a.tier]}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",fontSize:14,fontWeight:700,background:D.TIER_COLORS[a.tier],color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,b.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:9,color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,50)})]}),(0,b.jsxs)("div",{style:{textAlign:"right",flexShrink:0},children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:800,color:D.TIER_COLORS[a.tier]},children:a.tier}),(0,b.jsxs)("div",{style:{fontSize:8,color:"#666"},children:[c.length," to add"]})]})]}),(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8},children:[(0,b.jsxs)("div",{style:{display:"flex",gap:4,fontSize:9},children:[d>0&&(0,b.jsxs)("span",{style:{color:"#FFD700",fontWeight:700},children:[d,"S"]}),e>0&&(0,b.jsxs)("span",{style:{color:"#9B59B6",fontWeight:700},children:[e,"A"]}),f>0&&(0,b.jsxs)("span",{style:{color:"#3498DB",fontWeight:700},children:[f,"B"]})]}),(0,b.jsx)("div",{style:{flex:1,height:4,background:"rgba(255,255,255,0.06)",borderRadius:2},children:(0,b.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${Math.min(100,g/30*100)}%`,background:`linear-gradient(90deg, ${D.TIER_COLORS[a.tier]}, #FF6B35)`}})}),(0,b.jsxs)("button",{onClick:()=>{let a=c.map(a=>a.profile_url);if(1===a.length)return void window.open(a[0],"_blank");let b=`<!DOCTYPE html><html><head><title>Top ${Math.min(10,a.length)}</title>
17
17
  <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px}
18
18
  .btn{display:block;padding:10px 14px;margin-bottom:4px;background:rgba(255,255,255,0.06);
19
19
  border:1px solid rgba(255,255,255,0.1);border-radius:6px;color:#fff;text-decoration:none;font-size:12px}
@@ -22,15 +22,15 @@ module.exports=[78386,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944
22
22
  font-weight:700;font-size:13px;cursor:pointer;border:none;margin-bottom:16px}</style></head>
23
23
  <body><h3 style="color:#FF6B35">Top ${Math.min(10,a.length)} to connect</h3>
24
24
  <button class="oa" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
25
- Open All</button>${a.slice(0,10).map(a=>'<a class="btn" href="'+a+'" target="_blank">'+a.split("/in/")[1]?.replace("/","")+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([b],{type:"text/html"})),"_blank")},style:{padding:"4px 10px",borderRadius:4,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:9,fontWeight:700,whiteSpace:"nowrap"},children:["Open Top ",Math.min(10,c.length)]})]})]})})():(0,b.jsxs)("div",{style:{padding:"6px 10px",marginBottom:4,background:"tier"===L?`${at[a]||"#555"}15`:"rgba(255,255,255,0.04)",borderLeft:`3px solid ${"tier"===L?at[a]||"#555":"#FF6B35"}`,borderRadius:4,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,b.jsx)("span",{style:{fontSize:11,fontWeight:700,color:"tier"===L?at[a]||"#888":"#FF6B35"},children:"tier"===L?`${a}-Tier`:a}),(0,b.jsx)("span",{style:{fontSize:10,color:"#666"},children:c.length})]}),"bridge"===L?["S","A","B"].map(a=>{let d=c.filter(b=>b.tier===a);return 0===d.length?null:(0,b.jsxs)("div",{style:{marginBottom:6},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 8px",marginBottom:2,borderLeft:`2px solid ${at[a]}`},children:[(0,b.jsx)("input",{type:"checkbox",checked:d.every(a=>t.has(a.id)),onChange:()=>{let a=d.every(a=>t.has(a.id));u(b=>{let c=new Set(b);return d.forEach(b=>{a?c.delete(b.id):c.add(b.id)}),c})},style:{cursor:"pointer",flexShrink:0}}),(0,b.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:at[a]}}),(0,b.jsxs)("span",{style:{fontSize:9,fontWeight:700,color:at[a]},children:[a,"-Tier"]}),(0,b.jsx)("span",{style:{fontSize:8,color:"#555"},children:d.length}),(0,b.jsxs)("button",{onClick:()=>{if(1===d.length)return void window.open(d[0].profile_url,"_blank");let b=`<!DOCTYPE html><html><head><title>${a}-Tier — ${d.length}</title>
25
+ Open All</button>${a.slice(0,10).map(a=>'<a class="btn" href="'+a+'" target="_blank">'+a.split("/in/")[1]?.replace("/","")+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([b],{type:"text/html"})),"_blank")},style:{padding:"4px 10px",borderRadius:4,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:9,fontWeight:700,whiteSpace:"nowrap"},children:["Open Top ",Math.min(10,c.length)]})]})]})})():(0,b.jsxs)("div",{style:{padding:"6px 10px",marginBottom:4,background:"tier"===M?`${D.TIER_COLORS[a]||"#555"}15`:"rgba(255,255,255,0.04)",borderLeft:`3px solid ${"tier"===M?D.TIER_COLORS[a]||"#555":"#FF6B35"}`,borderRadius:4,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,b.jsx)("span",{style:{fontSize:11,fontWeight:700,color:"tier"===M?D.TIER_COLORS[a]||"#888":"#FF6B35"},children:"tier"===M?`${a}-Tier`:a}),(0,b.jsx)("span",{style:{fontSize:10,color:"#666"},children:c.length})]}),"bridge"===M?["S","A","B"].map(a=>{let d=c.filter(b=>b.tier===a);return 0===d.length?null:(0,b.jsxs)("div",{style:{marginBottom:6},children:[(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 8px",marginBottom:2,borderLeft:`2px solid ${D.TIER_COLORS[a]}`},children:[(0,b.jsx)("input",{type:"checkbox",checked:d.every(a=>t.has(a.id)),onChange:()=>{let a=d.every(a=>t.has(a.id));u(b=>{let c=new Set(b);return d.forEach(b=>{a?c.delete(b.id):c.add(b.id)}),c})},style:{cursor:"pointer",flexShrink:0}}),(0,b.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:D.TIER_COLORS[a]}}),(0,b.jsxs)("span",{style:{fontSize:9,fontWeight:700,color:D.TIER_COLORS[a]},children:[a,"-Tier"]}),(0,b.jsx)("span",{style:{fontSize:8,color:"#555"},children:d.length}),(0,b.jsxs)("button",{onClick:()=>{if(1===d.length)return void window.open(d[0].profile_url,"_blank");let b=`<!DOCTYPE html><html><head><title>${a}-Tier — ${d.length}</title>
26
26
  <style>body{background:#0a0a1a;color:#fff;font-family:-apple-system,sans-serif;padding:24px}
27
27
  .btn{display:block;padding:10px 14px;margin-bottom:4px;background:rgba(255,255,255,0.06);
28
28
  border:1px solid rgba(255,255,255,0.1);border-radius:6px;color:#fff;text-decoration:none;font-size:12px}
29
29
  .btn:hover{background:rgba(0,119,181,0.2)}
30
30
  .oa{display:inline-block;padding:10px 20px;background:#0077B5;color:#fff;border-radius:6px;
31
31
  font-weight:700;font-size:13px;cursor:pointer;border:none;margin-bottom:16px}</style></head>
32
- <body><h3 style="color:${at[a]}">${a}-Tier (${d.length})</h3>
32
+ <body><h3 style="color:${D.TIER_COLORS[a]}">${a}-Tier (${d.length})</h3>
33
33
  <button class="oa" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
34
- Open All</button>${d.map(a=>'<a class="btn" href="'+a.profile_url+'" target="_blank">'+a.name+" · "+parseFloat(a.power_score||0).toFixed(1)+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([b],{type:"text/html"})),"_blank")},style:{marginLeft:"auto",padding:"2px 8px",borderRadius:3,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:8,fontWeight:700},children:["Open All ",a]})]}),d.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px 5px 16px",borderBottom:"1px solid rgba(255,255,255,0.02)",background:t.has(a.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:b=>{t.has(a.id)||(b.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:b=>{t.has(a.id)||(b.currentTarget.style.background="transparent")},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.has(a.id),onChange:()=>U(a.id),onClick:a=>a.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ah.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ah.localPhoto)(a.profile_image_url),alt:"",style:{width:28,height:28,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${at[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:28,height:28,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:at[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>U(a.id),children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:8,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,45)})]}),(0,b.jsx)("span",{style:{fontSize:9,fontWeight:700,color:at[a.tier],flexShrink:0},children:parseFloat(a.power_score||0).toFixed(1)}),N.has(a.id)?(0,b.jsx)("span",{style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"Sent"}):(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:b=>{b.stopPropagation(),(0,as.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{})},style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},a.id))]},a)}):c.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderBottom:"1px solid rgba(255,255,255,0.03)",background:t.has(a.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:b=>{t.has(a.id)||(b.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:b=>{t.has(a.id)||(b.currentTarget.style.background="transparent")},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.has(a.id),onChange:()=>U(a.id),onClick:a=>a.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ah.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ah.localPhoto)(a.profile_image_url),alt:"",style:{width:32,height:32,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${at[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none",a.target.nextSibling.style.display="flex"}}):null,(0,b.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",flexShrink:0,fontSize:12,fontWeight:700,background:at[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:(0,ah.localPhoto)(a.profile_image_url)?"none":"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>U(a.id),children:[(0,b.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:9,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,50)})]}),a.bridge&&(0,b.jsxs)("span",{style:{fontSize:8,color:"#555",flexShrink:0,maxWidth:60,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",a.bridge.name?.split(" ")[0]]}),(0,b.jsx)("div",{style:{textAlign:"right",flexShrink:0,minWidth:32},children:(0,b.jsx)("div",{style:{fontSize:10,fontWeight:700,color:at[a.tier]},children:parseFloat(a.power_score).toFixed(1)})}),N.has(a.id)?(0,b.jsx)("span",{style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"⏳ Sent"}):(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:b=>{b.stopPropagation(),(0,as.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},a.id))]},a))]})]})})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{fallback:null,children:(0,b.jsx)(ap.default,{children:(0,b.jsx)(av,{})})})}],78386)}];
34
+ Open All</button>${d.map(a=>'<a class="btn" href="'+a.profile_url+'" target="_blank">'+a.name+" · "+parseFloat(a.power_score||0).toFixed(1)+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([b],{type:"text/html"})),"_blank")},style:{marginLeft:"auto",padding:"2px 8px",borderRadius:3,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontSize:8,fontWeight:700},children:["Open All ",a]})]}),d.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px 5px 16px",borderBottom:"1px solid rgba(255,255,255,0.02)",background:t.has(a.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:b=>{t.has(a.id)||(b.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:b=>{t.has(a.id)||(b.currentTarget.style.background="transparent")},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.has(a.id),onChange:()=>V(a.id),onClick:a=>a.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ai.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ai.localPhoto)(a.profile_image_url),alt:"",style:{width:28,height:28,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${D.TIER_COLORS[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none"}}):(0,b.jsx)("div",{style:{width:28,height:28,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:D.TIER_COLORS[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>V(a.id),children:[(0,b.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:8,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,45)})]}),(0,b.jsx)("span",{style:{fontSize:9,fontWeight:700,color:D.TIER_COLORS[a.tier],flexShrink:0},children:parseFloat(a.power_score||0).toFixed(1)}),O.has(a.id)?(0,b.jsx)("span",{style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"Sent"}):(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:b=>{b.stopPropagation(),(0,at.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{})},style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},a.id))]},a)}):c.map(a=>(0,b.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderBottom:"1px solid rgba(255,255,255,0.03)",background:t.has(a.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:b=>{t.has(a.id)||(b.currentTarget.style.background="rgba(255,255,255,0.04)")},onMouseLeave:b=>{t.has(a.id)||(b.currentTarget.style.background="transparent")},children:[(0,b.jsx)("input",{type:"checkbox",checked:t.has(a.id),onChange:()=>V(a.id),onClick:a=>a.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,ai.localPhoto)(a.profile_image_url)?(0,b.jsx)("img",{src:(0,ai.localPhoto)(a.profile_image_url),alt:"",style:{width:32,height:32,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${D.TIER_COLORS[a.tier]||"#555"}`},onError:a=>{a.target.style.display="none",a.target.nextSibling.style.display="flex"}}):null,(0,b.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",flexShrink:0,fontSize:12,fontWeight:700,background:D.TIER_COLORS[a.tier]||"#555",color:"S"===a.tier?"#000":"#fff",display:(0,ai.localPhoto)(a.profile_image_url)?"none":"flex",alignItems:"center",justifyContent:"center"},children:a.name?.charAt(0)}),(0,b.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>V(a.id),children:[(0,b.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.name}),(0,b.jsx)("div",{style:{fontSize:9,color:"#666",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a.headline?.substring(0,50)})]}),a.bridge&&(0,b.jsxs)("span",{style:{fontSize:8,color:"#555",flexShrink:0,maxWidth:60,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",a.bridge.name?.split(" ")[0]]}),(0,b.jsx)("div",{style:{textAlign:"right",flexShrink:0,minWidth:32},children:(0,b.jsx)("div",{style:{fontSize:10,fontWeight:700,color:D.TIER_COLORS[a.tier]},children:parseFloat(a.power_score).toFixed(1)})}),O.has(a.id)?(0,b.jsx)("span",{style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"#FF6B35",flexShrink:0},children:"⏳ Sent"}):(0,b.jsx)("a",{href:a.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:b=>{b.stopPropagation(),(0,at.markRequested)(a,{bridgeId:a.source_connection_id}).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},a.id))]},a))]})]})})]})}a.s(["default",0,function(){return(0,b.jsx)(c.Suspense,{fallback:null,children:(0,b.jsx)(aq.default,{children:(0,b.jsx)(av,{})})})}],78386)}];
35
35
 
36
36
  //# sourceMappingURL=app_queue_page_0c6znd6.js.map