six-degrees 0.7.0 → 1.0.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 (360) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +32 -4
  5. package/.next/standalone/.next/routes-manifest.json +6 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.rsc +16 -16
  15. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -14
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/api/admin-delete/route.js +1 -1
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/admin-update/route.js +1 -1
  21. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/bridges/route.js +1 -1
  23. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/bulk-import/route.js +1 -1
  25. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/connections/route.js +1 -1
  29. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/delete-cluster/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/ingest/route.js +1 -1
  41. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/network/route.js +1 -1
  43. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/outreach/route.js +3 -3
  47. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/queue/route.js +1 -1
  49. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/scraper/route.js +4 -4
  51. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/setup-profile/route.js +1 -1
  56. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/social/route.js +1 -1
  60. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/unlock/route.js +1 -1
  62. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/update-images/route.js +1 -1
  65. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/users/route.js +1 -1
  67. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/import.html +1 -1
  72. package/.next/standalone/.next/server/app/import.rsc +18 -18
  73. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +18 -18
  74. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  75. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +16 -16
  76. package/.next/standalone/.next/server/app/index.html +1 -1
  77. package/.next/standalone/.next/server/app/index.rsc +19 -19
  78. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +16 -16
  79. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +19 -19
  80. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  81. package/.next/standalone/.next/server/app/insights/page/app-paths-manifest.json +3 -0
  82. package/.next/standalone/.next/server/app/insights/page/build-manifest.json +20 -0
  83. package/.next/standalone/.next/server/app/insights/page/next-font-manifest.json +11 -0
  84. package/.next/standalone/.next/server/app/insights/page/react-loadable-manifest.json +1 -0
  85. package/.next/standalone/.next/server/app/insights/page/server-reference-manifest.json +4 -0
  86. package/.next/standalone/.next/server/app/insights/page.js +13 -0
  87. package/.next/standalone/.next/server/app/insights/page.js.map +5 -0
  88. package/.next/standalone/.next/server/app/insights/page.js.nft.json +1 -0
  89. package/.next/standalone/.next/server/app/insights/page_client-reference-manifest.js +3 -0
  90. package/.next/standalone/.next/server/app/insights.html +1 -0
  91. package/.next/standalone/.next/server/app/insights.meta +26 -0
  92. package/.next/standalone/.next/server/app/insights.rsc +35 -0
  93. package/.next/standalone/.next/server/app/insights.segments/_full.segment.rsc +35 -0
  94. package/.next/standalone/.next/server/app/insights.segments/_tree.segment.rsc +4 -0
  95. package/.next/standalone/.next/server/app/insights.segments/insights/__PAGE__.segment.rsc +33 -0
  96. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/launch.html +2 -2
  99. package/.next/standalone/.next/server/app/launch.rsc +18 -18
  100. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +18 -18
  101. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  102. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +16 -16
  103. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/paths.html +1 -1
  108. package/.next/standalone/.next/server/app/paths.rsc +19 -19
  109. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +19 -19
  110. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  111. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +16 -16
  112. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/profile.html +1 -1
  115. package/.next/standalone/.next/server/app/profile.rsc +19 -19
  116. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +19 -19
  117. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  118. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +16 -16
  119. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/queue.html +1 -1
  122. package/.next/standalone/.next/server/app/queue.rsc +19 -19
  123. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +19 -19
  124. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  125. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +21 -20
  126. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/scores.html +1 -1
  129. package/.next/standalone/.next/server/app/scores.rsc +18 -18
  130. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +18 -18
  131. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  132. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +16 -16
  133. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/settings.html +1 -1
  136. package/.next/standalone/.next/server/app/settings.rsc +19 -19
  137. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  138. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  139. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +16 -16
  140. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/setup.html +1 -1
  143. package/.next/standalone/.next/server/app/setup.rsc +19 -19
  144. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +19 -19
  145. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  146. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +16 -16
  147. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/social.html +1 -1
  150. package/.next/standalone/.next/server/app/social.rsc +18 -18
  151. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +18 -18
  152. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  153. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +16 -16
  154. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  155. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__063s0x7._.js → [root-of-the-server]__0r-0t-9._.js} +1 -1
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ra6xyg._.js +15 -0
  157. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__20rwfdw._.js → [root-of-the-server]__0rcpjad._.js} +5 -2
  158. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  159. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +2 -2
  161. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +2 -2
  162. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +2 -2
  163. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +9 -9
  164. package/.next/standalone/.next/server/chunks/{lib_rpc_0jnfp2e.js → lib_rpc_00nndai.js} +1 -1
  165. package/.next/standalone/.next/server/chunks/{lib_rpc_0b17r6v.js → lib_rpc_03ibb-x.js} +1 -1
  166. package/.next/standalone/.next/server/chunks/{lib_rpc_0doq0t-.js → lib_rpc_03ri3ji.js} +1 -1
  167. package/.next/standalone/.next/server/chunks/{lib_rpc_0fd2rlw.js → lib_rpc_078ce48.js} +1 -1
  168. package/.next/standalone/.next/server/chunks/lib_rpc_0a69mgr.js +3 -0
  169. package/.next/standalone/.next/server/chunks/{lib_rpc_005abye.js → lib_rpc_0cej3t8.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/lib_rpc_0cmh4g6.js +3 -0
  171. package/.next/standalone/.next/server/chunks/lib_rpc_0nx2_pc.js +3 -0
  172. package/.next/standalone/.next/server/chunks/lib_rpc_0r79-w1.js +3 -0
  173. package/.next/standalone/.next/server/chunks/lib_rpc_0yx8ynd.js +3 -0
  174. package/.next/standalone/.next/server/chunks/lib_rpc_12p-o9-.js +3 -0
  175. package/.next/standalone/.next/server/chunks/lib_rpc_1466dnb.js +3 -0
  176. package/.next/standalone/.next/server/chunks/{lib_rpc_0is4qoc.js → lib_rpc_1hjjjr4.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/lib_rpc_1sryxv6.js +3 -0
  178. package/.next/standalone/.next/server/chunks/lib_rpc_1trn-x5.js +3 -0
  179. package/.next/standalone/.next/server/chunks/lib_rpc_1ygu_mv.js +3 -0
  180. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0egamyq._.js +3 -0
  181. package/.next/standalone/.next/server/chunks/ssr/_04am_h8._.js +3 -0
  182. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/_0gds903._.js +3 -0
  185. package/.next/standalone/.next/server/chunks/ssr/_0klqt9z._.js +3 -0
  186. package/.next/standalone/.next/server/chunks/ssr/{_1k9qfsk._.js → _14jak5s._.js} +6 -2
  187. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/_1cj2yog._.js +3 -0
  189. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/_1hdqw0-._.js +7 -0
  191. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/{_0gy11ar._.js → _1r62six._.js} +6 -2
  193. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_insights_page_actions_0-0tf75.js +3 -0
  194. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +2 -2
  195. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +2 -2
  196. package/.next/standalone/.next/server/chunks/ssr/{_01o3i5y._.js → app_components_settings_SectorPicker_1c-29qw.js} +2 -6
  197. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
  198. package/.next/standalone/.next/server/chunks/ssr/app_insights_page_1d_chja.js +3 -0
  199. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -14
  200. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +3 -3
  201. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  202. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
  203. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  204. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  205. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  206. package/.next/standalone/.next/server/next-font-manifest.json +4 -0
  207. package/.next/standalone/.next/server/pages/404.html +1 -1
  208. package/.next/standalone/.next/server/pages/500.html +1 -1
  209. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  210. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  212. package/.next/standalone/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  213. package/.next/standalone/.next/static/chunks/0hggugbh84m4t.js +21 -0
  214. package/.next/{static/chunks/2eo9pqq9gay3r.js → standalone/.next/static/chunks/0ka4prpk3w9wn.js} +4 -4
  215. package/.next/standalone/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  216. package/.next/standalone/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  217. package/.next/{static/chunks/44yn0tcd9dfk3.js → standalone/.next/static/chunks/1bkt_hhjzvbh8.js} +1 -1
  218. package/.next/standalone/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  219. package/.next/{static/chunks/1qbjermbf68xj.js → standalone/.next/static/chunks/1d8yv3k_atka7.js} +1 -1
  220. package/.next/standalone/.next/static/chunks/1ods5h86raivz.js +1 -0
  221. package/.next/standalone/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  222. package/.next/standalone/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  223. package/.next/standalone/.next/static/chunks/{0p3g5tfostsep.js → 2q9i7pcxcnph1.js} +2 -2
  224. package/.next/{static/chunks/2zf4jmz9l3li2.js → standalone/.next/static/chunks/2w-y83mjlpnse.js} +1 -1
  225. package/.next/standalone/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  226. package/.next/standalone/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  227. package/.next/standalone/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  228. package/.next/standalone/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  229. package/.next/{static/chunks/0an_b6zi1r_qq.js → standalone/.next/static/chunks/3y40z6of3r9py.js} +1 -5
  230. package/.next/standalone/.next/static/chunks/403dpflln8ah5.js +1 -0
  231. package/.next/standalone/CHANGELOG.md +83 -0
  232. package/.next/standalone/README.md +40 -14
  233. package/.next/standalone/SECURITY.md +17 -4
  234. package/.next/standalone/app/api/outreach/route.js +13 -73
  235. package/.next/standalone/app/api/scraper/route.js +106 -5
  236. package/.next/standalone/app/components/AppHeader.js +22 -6
  237. package/.next/standalone/app/components/AppTabs.js +4 -0
  238. package/.next/standalone/app/components/AutoConnect.js +286 -0
  239. package/.next/standalone/app/components/ChainView.js +75 -2
  240. package/.next/standalone/app/components/FilterPanel.js +8 -1
  241. package/.next/standalone/app/components/LinkedInLimits.js +38 -13
  242. package/.next/standalone/app/components/OutlinkQuest.js +32 -11
  243. package/.next/standalone/app/components/ScanStatusBar.js +18 -3
  244. package/.next/standalone/app/components/ScanTrail.js +13 -3
  245. package/.next/standalone/app/components/SeparationView.js +6 -22
  246. package/.next/standalone/app/components/Sidebar.js +147 -38
  247. package/.next/standalone/app/components/insights/Boards.js +275 -0
  248. package/.next/standalone/app/components/insights/PeopleView.js +266 -0
  249. package/.next/standalone/app/components/insights/Rail.js +156 -0
  250. package/.next/standalone/app/components/insights/Report.js +382 -0
  251. package/.next/standalone/app/components/insights/parts.js +239 -0
  252. package/.next/standalone/app/components/settings/UsageSection.js +50 -3
  253. package/.next/standalone/app/globals.css +2 -3
  254. package/.next/standalone/app/insights/page.js +220 -0
  255. package/.next/standalone/app/page.js +1 -17
  256. package/.next/standalone/app/queue/page.js +30 -18
  257. package/.next/standalone/app/setup/page.js +71 -13
  258. package/.next/standalone/install.sh +7 -6
  259. package/.next/standalone/lib/auto-connect.js +145 -0
  260. package/.next/standalone/lib/companies.js +1 -1
  261. package/.next/standalone/lib/in-progress.js +46 -0
  262. package/.next/standalone/lib/insights-board.js +613 -0
  263. package/.next/standalone/lib/linkedin-limits.js +36 -11
  264. package/.next/standalone/lib/requests-client.js +10 -0
  265. package/.next/standalone/lib/requests.js +124 -0
  266. package/.next/standalone/lib/scan-state.js +1 -0
  267. package/.next/standalone/lib/scanner-setup.js +82 -3
  268. package/.next/standalone/lib/scraper-client.js +18 -5
  269. package/.next/standalone/lib/settings.js +6 -0
  270. package/.next/standalone/lib/usage.js +5 -0
  271. package/.next/standalone/package-lock.json +2 -2
  272. package/.next/standalone/package.json +1 -1
  273. package/.next/standalone/scripts/build-app.mjs +167 -11
  274. package/.next/standalone/scripts/build-desktop.mjs +3 -2
  275. package/.next/standalone/scripts/ci-mac-signing.sh +128 -0
  276. package/.next/standalone/scripts/entitlements/electron.plist +23 -0
  277. package/.next/standalone/scripts/entitlements/node.plist +27 -0
  278. package/.next/standalone/scripts/mac-sign.mjs +563 -0
  279. package/.next/standalone/scripts/make-dmg-background.mjs +2 -1
  280. package/.next/standalone/scripts/scrape.py +569 -9
  281. package/.next/standalone/scripts/set-signing-secrets.sh +96 -0
  282. package/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  283. package/.next/static/chunks/0hggugbh84m4t.js +21 -0
  284. package/.next/{standalone/.next/static/chunks/2eo9pqq9gay3r.js → static/chunks/0ka4prpk3w9wn.js} +4 -4
  285. package/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  286. package/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  287. package/.next/{standalone/.next/static/chunks/44yn0tcd9dfk3.js → static/chunks/1bkt_hhjzvbh8.js} +1 -1
  288. package/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  289. package/.next/{standalone/.next/static/chunks/1qbjermbf68xj.js → static/chunks/1d8yv3k_atka7.js} +1 -1
  290. package/.next/static/chunks/1ods5h86raivz.js +1 -0
  291. package/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  292. package/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  293. package/.next/static/chunks/{0p3g5tfostsep.js → 2q9i7pcxcnph1.js} +2 -2
  294. package/.next/{standalone/.next/static/chunks/2zf4jmz9l3li2.js → static/chunks/2w-y83mjlpnse.js} +1 -1
  295. package/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  296. package/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  297. package/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  298. package/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  299. package/.next/{standalone/.next/static/chunks/0an_b6zi1r_qq.js → static/chunks/3y40z6of3r9py.js} +1 -5
  300. package/.next/static/chunks/403dpflln8ah5.js +1 -0
  301. package/CHANGELOG.md +83 -0
  302. package/README.md +40 -14
  303. package/SECURITY.md +17 -4
  304. package/lib/auto-connect.js +145 -0
  305. package/lib/companies.js +1 -1
  306. package/lib/in-progress.js +46 -0
  307. package/lib/insights-board.js +613 -0
  308. package/lib/linkedin-limits.js +36 -11
  309. package/lib/requests-client.js +10 -0
  310. package/lib/requests.js +124 -0
  311. package/lib/scan-state.js +1 -0
  312. package/lib/scanner-setup.js +82 -3
  313. package/lib/scraper-client.js +18 -5
  314. package/lib/settings.js +6 -0
  315. package/lib/usage.js +5 -0
  316. package/package.json +1 -1
  317. package/scripts/scrape.py +569 -9
  318. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_4y8z7._.js +0 -8
  319. package/.next/standalone/.next/server/chunks/_02twlca._.js +0 -10
  320. package/.next/standalone/.next/server/chunks/lib_rpc_0nef_n7.js +0 -3
  321. package/.next/standalone/.next/server/chunks/lib_rpc_0plrzra.js +0 -3
  322. package/.next/standalone/.next/server/chunks/lib_rpc_13a4m0c.js +0 -3
  323. package/.next/standalone/.next/server/chunks/lib_rpc_1if17c-.js +0 -3
  324. package/.next/standalone/.next/server/chunks/lib_rpc_1j-zw7v.js +0 -3
  325. package/.next/standalone/.next/server/chunks/lib_rpc_1sngt-q.js +0 -3
  326. package/.next/standalone/.next/server/chunks/lib_rpc_1v2sgme.js +0 -3
  327. package/.next/standalone/.next/server/chunks/lib_rpc_1vh-tgx.js +0 -3
  328. package/.next/standalone/.next/server/chunks/lib_rpc_1zaubz7.js +0 -3
  329. package/.next/standalone/.next/server/chunks/ssr/_02sband._.js +0 -7
  330. package/.next/standalone/.next/server/chunks/ssr/_189g8lg._.js +0 -3
  331. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +0 -3
  332. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +0 -3
  333. package/.next/standalone/.next/static/chunks/0e3g0sil79cus.js +0 -21
  334. package/.next/standalone/.next/static/chunks/0zd0t7e60bn4z.js +0 -1
  335. package/.next/standalone/.next/static/chunks/163b-20vwa06i.js +0 -34
  336. package/.next/standalone/.next/static/chunks/1pa-2v1ajvrko.js +0 -1
  337. package/.next/standalone/.next/static/chunks/23_1z47al92nz.js +0 -57
  338. package/.next/standalone/.next/static/chunks/260bomtr214m8.js +0 -34
  339. package/.next/standalone/.next/static/chunks/2xk2ra4piiuod.js +0 -34
  340. package/.next/standalone/.next/static/chunks/3b0-14cxqsprt.js +0 -1
  341. package/.next/standalone/.next/static/chunks/3jarus1_38s2z.js +0 -1
  342. package/.next/standalone/.next/static/chunks/3ssu341hav_sq.css +0 -3
  343. package/.next/standalone/.next/static/chunks/3v1qd3sqhqn0d.js +0 -1
  344. package/.next/static/chunks/0e3g0sil79cus.js +0 -21
  345. package/.next/static/chunks/0zd0t7e60bn4z.js +0 -1
  346. package/.next/static/chunks/163b-20vwa06i.js +0 -34
  347. package/.next/static/chunks/1pa-2v1ajvrko.js +0 -1
  348. package/.next/static/chunks/23_1z47al92nz.js +0 -57
  349. package/.next/static/chunks/260bomtr214m8.js +0 -34
  350. package/.next/static/chunks/2xk2ra4piiuod.js +0 -34
  351. package/.next/static/chunks/3b0-14cxqsprt.js +0 -1
  352. package/.next/static/chunks/3jarus1_38s2z.js +0 -1
  353. package/.next/static/chunks/3ssu341hav_sq.css +0 -3
  354. package/.next/static/chunks/3v1qd3sqhqn0d.js +0 -1
  355. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_buildManifest.js +0 -0
  356. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_clientMiddlewareManifest.js +0 -0
  357. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_ssgManifest.js +0 -0
  358. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_buildManifest.js +0 -0
  359. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_clientMiddlewareManifest.js +0 -0
  360. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77305,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(18566),o=e.i(33821),i=e.i(22016),s=e.i(15812),a=e.i(19821),l=e.i(84278),d=e.i(39160),c=e.i(7214),p=e.i(40996),g=e.i(8819),h=e.i(64745);let f=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"}]);f.map(e=>e.id);let u=e=>f.find(t=>t.id===e)?.label||"",x=e=>"string"==typeof e&&e.length>0&&e.length<300;function m(){return{version:1,settings:{awaitDays:7},people:{}}}function y(e=new Date){let t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}let b=/^https:\/\/(www\.)?linkedin\.com\/in\/[^/?#\s]+$/,v={S:0,A:1,B:2,C:3,D:4},w=(e,t)=>(e.degree??9)<(t.degree??9)||(e.degree??9)===(t.degree??9)&&(v[e.tier]??9)<(v[t.tier]??9),k=e=>"sponsored"===e.kind;function j(e,t,n=7){let r=[];for(let o of e){if(k(o)||!1!==o.lastFromThem||!o.last)continue;let e=Math.floor((t-o.last)/864e5);e>=n&&r.push({contact:o,waited:e})}return r.sort((e,t)=>e.waited-t.waited)}function S(e,t,n=null){let r=String(t||"").trim().toLowerCase();return!r||[e.name,e.row?.company,e.row?.role,e.row?.headline,...e.crm?.tags||[],e.crm?.notes].filter(Boolean).join("\n").toLowerCase().includes(r)||!!n&&e.conversations.some(e=>n.has(e.id))}function T(e){let t=null==e?"":String(e);return/^[=+\-@\t\r]/.test(t)&&(t=`'${t}`),/[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}let C=e=>e?new Date(e).toISOString().slice(0,10):"",z=["Name","Company","Profile","Connection","Stage","Tags","Last contact","Who wrote last","Next follow-up","Notes"];function R({id:e,keep:r,group:o,token:i}){let[s,a]=(0,n.useState)(null),[l,d]=(0,n.useState)(null),c=(0,n.useRef)(null),p=(0,n.useRef)(null);async function h(){let t=c.current,n=await fetch(`/api/social/messages?id=${encodeURIComponent(e)}&before=${s.start}&limit=200`).then(e=>e.json()).catch(()=>null);n&&!n.error&&(p.current=t?t.scrollHeight-t.scrollTop:null,a({...s,start:n.start,messages:[...n.messages,...s.messages]}))}(0,n.useEffect)(()=>{if(!r)return;let t=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(e)}&limit=100`).then(e=>e.json()).then(e=>{t&&(e.error?d(e.error):(p.current="bottom",a(e)))}).catch(()=>{t&&d("It couldn’t be read.")}),()=>{t=!1}},[e,r,i]),(0,n.useLayoutEffect)(()=>{let e=c.current;e&&p.current&&("bottom"===p.current?e.scrollTop=e.scrollHeight:e.scrollTop=e.scrollHeight-p.current,p.current=null)},[s]);let f={padding:"10px 14px 14px",fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)"};return r?l?(0,t.jsx)("div",{style:{...f,color:"var(--sd-fg-2, #ff9b9b)"},children:l}):s?s.total?(0,t.jsxs)("div",{ref:c,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(var(--sd-shade, 0, 0, 0), 0.2)"},children:[s.start>0&&(0,t.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,t.jsxs)("button",{onClick:h,style:{background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE,borderRadius:6,color:"var(--sd-fg-1, #cfe6f7)",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",s.start.toLocaleString()," more)"]})}),s.messages.map((e,n)=>{let r;return(0,t.jsx)("div",{style:{display:"flex",justifyContent:e.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,t.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,t.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:e.fromMe?"rgba(52,152,219,0.35)":"rgba(var(--sd-ink, 255, 255, 255), 0.08)",color:"var(--sd-fg-1, #eef)",borderBottomRightRadius:e.fromMe?4:12,borderBottomLeftRadius:e.fromMe?12:4},children:e.text||(0,t.jsx)("i",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:"(no words: an attachment or a reaction)"})}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"var(--sd-fg-4, #778)",marginTop:2,textAlign:e.fromMe?"right":"left"},children:[e.fromMe?"You":o?"Someone in the group":"Them"," · ",(r=e.t)?new Date(r).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},s.start+n)})]}):(0,t.jsx)("div",{style:f,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,t.jsx)("div",{style:f,children:"Opening…"}):(0,t.jsxs)("div",{style:f,children:["Turn on ",(0,t.jsx)("b",{children:"Keep my messages"})," to read them here."]})}var I=e.i(54322);let O=I.TIER_COLORS,F={new:"#8b9a9a",contacted:"#3498DB",replied:"#00d4aa",meeting:"#ff9f43",won:"#FFD700","not-now":"#667"},_=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",$=e=>e?new Date(`${e}T12:00:00`).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",L=e=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(e||""))?e:null,B=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,W=[["inbox","Inbox"],["awaiting","Awaiting reply"],["due","Follow-ups due"],["pipeline","Pipeline"],["sent","Sent"],["received","Received"],["all","All"]],E=(e,t="#dfe8e8")=>({fontSize:10.5,padding:"1px 6px",borderRadius:4,background:e,color:t,whiteSpace:"nowrap"}),D={background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE,borderRadius:6,color:"var(--sd-fg-1, #cfe6f7)",cursor:"pointer",fontSize:12,padding:"4px 10px"},M={padding:"6px 10px",borderRadius:6,border:g.LINE,background:"rgba(var(--sd-shade, 0, 0, 0), 0.3)",color:"var(--sd-fg-1, #fff)",fontSize:13};function N({net:e,asOf:r,keep:o,onKeep:i,switching:s,token:a,crmToken:d}){let[p,h]=(0,n.useState)(null),[v,R]=(0,n.useState)(null),[I,O]=(0,n.useState)("inbox"),[F,L]=(0,n.useState)(""),[E,P]=(0,n.useState)(null),[U,Y]=(0,n.useState)(null),[K,G]=(0,n.useState)(100),[X,Q]=(0,n.useState)(null),Z=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/messages").then(e=>e.json()).then(t=>{e&&h(t)}).catch(()=>{e&&h({conversations:[],invitations:[],names:{},inviteNotes:{}})}),()=>{e=!1}},[a,o]),(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/crm").then(e=>e.json()).then(t=>{e&&R(t.crm||m())}).catch(()=>{e&&R(m())}),()=>{e=!1}},[d]),(0,n.useEffect)(()=>{let e=F.trim();if(!o||e.length<2)return;let t=!0,n=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(e)}`).then(e=>e.json()).then(n=>{t&&P({q:e,ids:new Set(n.ids||[])})}).catch(()=>{})},250);return()=>{t=!1,clearTimeout(n)}},[F,o,a]);let ee=U?.type==="person"?U.key:null,{contacts:et,groups:en}=(0,n.useMemo)(()=>(function({conversations:e=[],invitations:t=[],network:n={},crm:r=m(),names:o={},also:i=[]}={}){let s=n.degree1||[],a=n.degree2||[],d=[...s,...a,...n.degree3||[]],p=new Map,g=new Map;for(let e of d){let t=(0,c.keyFor)(e),n=p.get(t);(!n||w(e,n))&&p.set(t,e)}for(let[e,t]of p){let n=(0,l.nameKey)(t.name);n&&g.set(n,g.has(n)&&g.get(n)!==e?null:e)}let h=new Set(s.map(c.keyFor)),f=(0,c.routeIndex)(a),u=new Map(s.map(e=>[e.id,e])),y=e=>e.startsWith("name:")&&g.get(e.slice(5))||e,v=new Map,k=e=>{var t,n,i;let s=y(e),a=v.get(s);if(a)return a;let l=p.get(s)||null;return a={key:s,name:(t=s,n=l,i=o,n?.name?n.name:i[t]?i[t]:t.startsWith("name:")?t.slice(5).replace(/\b\w/g,e=>e.toUpperCase()):String(t||"").replace(/\/+$/,"").split("/").pop()),row:l,connection:h.has(s),degree:l?.degree??null,profileUrl:b.test(s)?s:l?.profile_url&&b.test((0,c.keyFor)(l))?(0,c.keyFor)(l):null,introducers:l&&2===l.degree?[...new Set((0,c.routesFor)(l,f,u).map(e=>e.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:r?.people?.[s]||null,lastContact:null},v.set(s,a),a},j=[];for(let t of e){if(!t||!Array.isArray(t.people))continue;if(t.group){j.push({...t,people:t.people.map(y)});continue}if(!t.people.length){j.push({...t,unknown:!0});continue}let e=k(t.people[0]);e.conversations.push(t),e.count+=t.count||0,(!0===t.lastFromThem||null!=t.count&&null!=t.mine&&t.count>t.mine)&&(e.theyWrote=!0),t.last&&(!e.last||t.last>=e.last)?(e.last=t.last,e.lastFromThem=t.lastFromThem,e.unread=t.unread,e.threadUrl=t.threadUrl||e.threadUrl):e.last||t.last||(e.threadUrl=t.threadUrl||e.threadUrl)}for(let e of v.values()){e.conversations.sort((e,t)=>(t.last||0)-(e.last||0));let t=new Set(e.conversations.map(e=>e.kind||null));e.kind=1===t.size?[...t][0]:null}for(let e of j)for(let t of e.people)v.get(t)?.groups.push(e.id);for(let e of t){if(!e?.key)continue;let t=k(e.key);!e.name||t.row||o[t.key]||(t.name=e.name),("in"===e.dir?t.invitesIn:t.invitesOut).push(e)}for(let e of d){if("sent"!==e.outreach_status&&"accepted"!==e.outreach_status&&"pending"!==e.unlock_status)continue;let t=k((0,c.keyFor)(e)),n=t.connection||"accepted"===e.outreach_status?"accepted":"pending";t.request&&"accepted"!==n||(t.request={status:n})}for(let e of Object.keys(r?.people||{}))k(e);for(let e of i)x(e)&&k(e);for(let e of v.values()){let t=[e.last,...e.invitesIn.map(e=>e.t),...e.invitesOut.map(e=>e.t)].filter(Boolean);e.lastContact=t.length?Math.max(...t):null}return{contacts:v,groups:j}})({conversations:p?.conversations||[],invitations:p?.invitations||[],network:e||{},crm:v||m(),names:p?.names||{},also:ee?[ee]:[]}),[p,e,v,ee]),er=(0,n.useMemo)(()=>{let t=new Map;for(let n of[...e?.degree1||[],...e?.degree2||[]])t.has((0,c.keyFor)(n))||t.set((0,c.keyFor)(n),n);let n=p?.names||{};return e=>et.get(e)?.name||t.get(e)?.name||n[e]||null},[et,e,p]),eo=v?.settings?.awaitDays||7,[ei]=(0,n.useState)(()=>Date.now()),es=r||ei,ea=y(new Date(ei)),el=(0,n.useMemo)(()=>[...et.values()],[et]),ed=(0,n.useMemo)(()=>{let e=(e,t)=>({type:"person",key:e.key,c:e,sub:t,t:e.lastContact||0}),t=e=>null==e.lastFromThem?"":e.lastFromThem?`They wrote ${_(e.last)}`:`You wrote ${_(e.last)}`,n=el.filter(e=>e.lastContact||e.crm||e.request).map(n=>e(n,t(n)||(n.invitesOut[0]?`You asked to connect ${_(n.invitesOut[0].t)}`:"")||(n.invitesIn[0]?`Asked to connect ${_(n.invitesIn[0].t)}`:"")||(n.request?`Tracked request \xb7 ${n.request.status}`:"")||(n.crm?.stage?u(n.crm.stage):"")));for(let e of en)n.push({type:"group",id:e.id,g:e,sub:e.last?`${e.lastFromThem?"Someone wrote":"You wrote"} ${_(e.last)}`:"",t:e.last||0});return n.sort((e,t)=>t.t-e.t),{inbox:[...el].filter(e=>!k(e)&&(!0===e.lastFromThem||e.unread>0)).sort((e,t)=>(t.unread>0)-(e.unread>0)||(t.last||0)-(e.last||0)).map(n=>e(n,n.unread>0?`${n.unread} unread \xb7 ${t(n)}`:t(n))),awaiting:j(el,es,eo).map(t=>e(t.contact,`You wrote ${_(t.contact.last)}, no reply for ${B(t.waited,"day")}`)),due:(function(e,t=y()){return[...e].filter(e=>e.crm?.followUp&&e.crm.followUp<=t).sort((e,t)=>e.crm.followUp.localeCompare(t.crm.followUp))})(el,ea).map(t=>e(t,t.crm.followUp===ea?"Follow up today":`Follow up was due ${$(t.crm.followUp)}`)),pipeline:function(e){let t=Object.fromEntries(f.map(e=>[e.id,[]]));for(let n of e)n.crm?.stage&&t[n.crm.stage].push(n);for(let e of Object.values(t))e.sort((e,t)=>(t.lastContact||0)-(e.lastContact||0));return t}(el),sent:(function(e,t,n=7){let r=[...e],o=new Map(j(r,t,n).map(e=>[e.contact.key,e.waited])),i=[];for(let e of r){let t=[];for(let n of e.invitesOut)t.push({type:"invite",id:n.id,t:n.t,status:e.connection?"accepted":"pending"});e.request&&t.push({type:"request",status:e.request.status}),o.has(e.key)&&t.push({type:"awaiting",t:e.last,waited:o.get(e.key)}),t.length&&i.push({contact:e,items:t,t:Math.max(0,...t.map(e=>e.t||0))})}return i.sort((e,t)=>t.t-e.t)})(el,es,eo).map(t=>e(t.contact,t.items.map(e=>"invite"===e.type?`Request ${_(e.t)} \xb7 ${e.status}`:"request"===e.type?`Tracked request \xb7 ${e.status}`:`No reply for ${B(e.waited,"day")}`).join(" · "))),received:(function(e){let t=[];for(let n of e)!n.connection&&n.invitesIn.length&&t.push({contact:n,t:Math.max(0,...n.invitesIn.map(e=>e.t||0))});return t.sort((e,t)=>t.t-e.t)})(el).map(t=>e(t.contact,`Asked to connect ${_(t.t)}`)),all:n}},[el,en,es,eo,ea]),ec=o&&E?.q===F.trim()?E.ids:null,ep=F.trim().toLowerCase(),eg=(0,n.useMemo)(()=>{let t="pipeline"===I?[]:ed[I];if(!ep)return t;let n=t.filter(e=>"person"===e.type?S(e.c,ep,ec):String(e.g.title||"").toLowerCase().includes(ep)||e.g.people.some(e=>String(er(e)||"").toLowerCase().includes(ep))||ec?.has(e.g.id));if("all"===I&&ep.length>=2&&e){let t=new Set(n.map(e=>e.key)),r=new Set;for(let o of[...e.degree1||[],...e.degree2||[]]){let e=(0,c.keyFor)(o);if(!(t.has(e)||r.has(e))&&[o.name,o.company,o.role,o.headline].some(e=>String(e||"").toLowerCase().includes(ep))&&(r.add(e),n.push({type:"person",key:e,c:null,row:o,sub:"Nothing on file yet",t:0}),r.size>=50))break}}return n},[ed,I,ep,ec,e,er]),eh=(0,n.useMemo)(()=>{if("pipeline"!==I)return null;let e={};for(let[t,n]of Object.entries(ed.pipeline))e[t]=ep?n.filter(e=>S(e,ep,ec)):n;return e},[ed,I,ep,ec]),ef={inbox:ed.inbox.length,awaiting:ed.awaiting.length,due:ed.due.length,pipeline:Object.values(ed.pipeline).reduce((e,t)=>e+t.length,0),sent:ed.sent.length,received:ed.received.length,all:ed.all.length};function eu(e){Y(e),window.matchMedia?.("(max-width: 760px)").matches&&setTimeout(()=>Z.current?.scrollIntoView({behavior:"smooth",block:"start"}),50)}async function ex(e,t){let n=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,set:t})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error||"That couldn’t be saved.");R(t=>{let n={...t||m(),people:{...t?.people||{}}};return r.entry?n.people[e]=r.entry:delete n.people[e],n})}async function em(e){let t=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{awaitDays:e}})}),n=await t.json().catch(()=>({}));t.ok&&R(e=>({...e||m(),settings:n.settings}))}async function ey(){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"}),R(m()),Q("Your CRM notes are deleted."))}let eb=!p||!v||!e,ev={padding:"12px 14px",borderRadius:8,border:g.LINE,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",marginTop:10},ew=U?.type==="group"?en.find(e=>e.id===U.id):null,ek=ee?et.get(ee):null;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:ev,children:[(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"var(--sd-fg-1, #fff)",cursor:s?"default":"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:o,disabled:s,onChange:e=>i(e.target.checked)}),(0,t.jsx)("b",{children:"Keep my messages on this computer"}),(0,t.jsx)("span",{style:{fontSize:11.5,color:o?"var(--sd-green, #00ff88)":"var(--sd-fg-3, #8b9a9a)"},children:o?"on":"off"})]}),(0,t.jsxs)(g.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 or put in Six Degrees’ own backups, and an exported backup file carries them only with its Social tab box ticked. ",(0,t.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,t.jsxs)("div",{className:"crm-grid",style:{marginTop:10},children:[(0,t.jsxs)("div",{className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,padding:0,minWidth:0},children:[(0,t.jsx)("div",{role:"tablist","aria-label":"CRM views",style:{display:"flex",flexWrap:"wrap",gap:4,padding:"10px 10px 6px",borderBottom:g.LINE},children:W.map(([e,n])=>(0,t.jsxs)("button",{role:"tab","aria-selected":I===e,onClick:()=>{O(e),G(100)},style:{...D,padding:"4px 9px",fontSize:12,background:I===e?"rgba(52,152,219,0.28)":"rgba(var(--sd-ink, 255, 255, 255), 0.04)",color:I===e?"var(--sd-fg-1, #fff)":"var(--sd-fg-2, #b8c4c4)"},children:[n," ",(0,t.jsx)("span",{style:{color:I===e?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-4, #778)"},children:eb?"":ef[e].toLocaleString()})]},e))}),(0,t.jsxs)("div",{style:{padding:"8px 10px",borderBottom:g.LINE,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("input",{type:"search",value:F,onChange:e=>{L(e.target.value),G(100)},placeholder:o?"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,t.jsx)("button",{onClick:function(){var e;let t,n,r=el.filter(e=>"sponsored"!==e.kind).sort((e,t)=>(t.lastContact||0)-(e.lastContact||0)),o=`Six Degrees CRM ${y()}.csv`;e=function(e){let t=[z.map(T).join(",")];for(let n of e)t.push([n.name,n.row?.company||"",n.profileUrl||"",n.connection?"Yes":"No",u(n.crm?.stage),(n.crm?.tags||[]).join("; "),C(n.lastContact),null==n.lastFromThem?"":n.lastFromThem?"Them":"You",n.crm?.followUp||"",n.crm?.notes||""].map(T).join(","));return`\uFEFF${t.join("\r\n")}\r
2
- `}(r),t=URL.createObjectURL(new Blob([e],{type:"text/csv;charset=utf-8"})),(n=document.createElement("a")).href=t,n.download=o,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),6e4),Q(`Made “${o}” (${B(r.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:eb,style:D,title:"A spreadsheet of everyone here, with your stages, tags, follow-ups and notes",children:"Export CSV"})]}),"awaiting"===I&&(0,t.jsxs)("div",{style:{padding:"8px 12px",borderBottom:g.LINE,fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:["You wrote last and nothing came back for",(0,t.jsx)("input",{type:"number",min:1,max:365,value:eo,"aria-label":"Days with no reply",onChange:e=>{let t=Number(e.target.value);t>=1&&t<=365&&em(t)},style:{...M,width:64,padding:"3px 6px"}}),"days or more",r?`, as of ${_(r)}`:"","."]}),X&&(0,t.jsx)("div",{style:{padding:"8px 12px",fontSize:12.5,color:"var(--sd-green, #00ff88)",borderBottom:g.LINE},children:X}),eb&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"Loading…"}),!eb&&"pipeline"===I&&(0,t.jsx)(H,{pipeline:eh,picked:ee,onPick:e=>eu({type:"person",key:e})}),!eb&&"pipeline"!==I&&0===eg.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:ep?"Nothing matches that.":A[I]}),!eb&&"pipeline"!==I&&(0,t.jsxs)("div",{children:[eg.slice(0,K).map(e=>(0,t.jsx)(q,{r:e,nameOf:er,active:"person"===e.type?ee===e.key:U?.id===e.id,onPick:()=>eu("person"===e.type?{type:"person",key:e.key}:{type:"group",id:e.id})},"person"===e.type?`p:${e.key}`:`g:${e.id}`)),eg.length>K&&(0,t.jsxs)("button",{onClick:()=>G(K+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"var(--sd-blue, #3498DB)",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,eg.length-K).toLocaleString()," more of ",eg.length.toLocaleString()]})]})]}),(0,t.jsxs)("div",{ref:Z,className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,minWidth:0,scrollMarginTop:80},children:[!U&&(0,t.jsx)("div",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up."}),ek&&(0,t.jsx)(J,{c:ek,nameOf:er,groups:en,keep:o,token:a,inviteNotes:p?.inviteNotes||{},onChange:ex,onPickGroup:e=>eu({type:"group",id:e})},ek.key),ew&&(0,t.jsx)(V,{g:ew,contacts:et,nameOf:er,keep:o,token:a,onPick:e=>eu({type:"person",key:e})})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #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(v?.people||{}).length>0&&(0,t.jsxs)(t.Fragment,{children:[" ","Your notes are in the app’s data folder, never in Six Degrees’ own backups; an exported backup file carries them only with its Social tab box ticked."," ",(0,t.jsx)("button",{onClick:ey,style:{background:"none",border:"none",color:"var(--sd-fg-2, #ff9b9b)",cursor:"pointer",fontSize:11.5,padding:0},children:"Delete my CRM notes"})]})]})]})}let A={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:e}){return(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:O[e]||"#556",flexShrink:0,display:"inline-block"}})}function U({c:e}){return(0,t.jsxs)(t.Fragment,{children:[e&&!e.connection&&(0,t.jsx)("span",{style:E("rgba(255,159,67,0.18)","#ffc58a"),children:2===e.degree?"2nd degree":"Not a connection"}),e?.kind==="sponsored"&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:"Sponsored"}),e?.kind==="inmail"&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),e?.crm?.stage&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)",F[e.crm.stage]),children:u(e.crm.stage)})]})}function q({r:e,nameOf:n,active:r,onPick:o}){let i,s=null,a=null;if("person"===e.type){let n=e.c;i=n?.name||e.row?.name||e.key,s=n?.row?.tier||e.row?.tier,a=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(U,{c:n||{connection:e.row?.degree===1,degree:e.row?.degree}}),n?.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[n.unread," unread"]})]})}else i=Y(e.g,n),a=(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:e.g.unknown?"To someone unnamed":"Group"});let l="person"===e.type?e.c?.row?.company||e.row?.company:null;return(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-pressed":r,onClick:o,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())},style:{padding:"8px 12px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)",cursor:"pointer",background:r?"rgba(52,152,219,0.14)":"none"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:13,minWidth:0,flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:s}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100%"},children:i}),a]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:2,paddingLeft:14,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[l,e.sub].filter(Boolean).join(" · ")})]})}function Y(e,t){if(e.title)return e.title;if(e.unknown)return"A conversation only you wrote in";let n=e.people.map(t).filter(Boolean);return n.length?`${n.slice(0,3).join(", ")}${e.people.length>3?` +${e.people.length-3}`:""}`:`${e.people.length} people`}function H({pipeline:e,picked:n,onPick:r}){return(0,t.jsx)("div",{className:"crm-board",children:f.map(o=>(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsxs)("div",{style:{fontSize:12,fontWeight:650,color:F[o.id],margin:"0 0 6px",display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:o.label}),(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:e[o.id].length.toLocaleString()})]}),0===e[o.id].length&&(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #667)",padding:"6px 0"},children:"No one"}),e[o.id].slice(0,200).map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>r(e.key),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),r(e.key))},style:{padding:"7px 9px",marginBottom:6,borderRadius:6,border:g.LINE,cursor:"pointer",fontSize:12.5,background:n===e.key?"rgba(52,152,219,0.18)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:e.row?.tier}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:11,marginTop:2},children:[e.row?.company,e.crm.followUp?`Follow up ${$(e.crm.followUp)}`:null].filter(Boolean).join(" · ")})]},e.key)),e[o.id].length>200&&(0,t.jsxs)("div",{style:{fontSize:11,color:"var(--sd-fg-4, #778)"},children:["and ",(e[o.id].length-200).toLocaleString()," more (search to find them)"]})]},o.id))})}let K={fontSize:12,fontWeight:650,color:"var(--sd-fg-2, #b8c4c4)",margin:"16px 0 6px",textTransform:"uppercase",letterSpacing:.4};function J({c:e,nameOf:r,groups:o,keep:i,token:s,inviteNotes:a,onChange:l,onPickGroup:d}){let c=e.row,[p,h]=(0,n.useState)(e.conversations[0]?.id||null),f=L(e.profileUrl),u=L(e.threadUrl),x=e.connection?`A connection${c?.connected_date?` since ${_(Date.parse(c.connected_date))}`:""}.`:2===e.degree?"2nd degree: not a connection yet.":"Not a connection.";return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:c?.tier}),(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:e.name}),c?.tier&&(0,t.jsxs)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)",O[c.tier]),children:[c.tier," tier"]}),(0,t.jsx)(U,{c:e})]}),(c?.headline||c?.company)&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-2, #b8c4c4)",marginTop:4},children:c.headline||[c.role,c.company].filter(Boolean).join(" at ")}),(0,t.jsxs)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",marginTop:4,fontSize:12.5},children:[x,e.introducers.length>0&&(0,t.jsxs)(t.Fragment,{children:[" Who can introduce you: ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:e.introducers.slice(0,6).join(", ")}),e.introducers.length>6?` and ${e.introducers.length-6} more`:"","."]}),c?.unlocked_from_name&&e.connection&&(0,t.jsxs)(t.Fragment,{children:[" You met through ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:c.unlocked_from_name}),"."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:12,marginTop:6,flexWrap:"wrap",fontSize:12.5},children:[f&&(0,t.jsx)("a",{href:f,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Profile on LinkedIn ↗"}),u&&(0,t.jsx)("a",{href:u,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Conversation on LinkedIn ↗"})]}),(0,t.jsx)(G,{c:e,onChange:l}),(0,t.jsx)("div",{style:K,children:"Conversations"}),0===e.conversations.length&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:12.5},children:"None one to one."}),e.conversations.map(e=>(0,t.jsxs)("div",{style:{border:g.LINE,borderRadius:6,marginBottom:6,overflow:"hidden"},children:[(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":p===e.id,onClick:()=>h(p===e.id?null:e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),h(p===e.id?null:e.id))},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",padding:"7px 10px",cursor:"pointer",fontSize:12.5,background:p===e.id?"rgba(var(--sd-ink, 255, 255, 255), 0.04)":"none"},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:_(e.last)||"No date"}),null!=e.lastFromThem&&(0,t.jsx)("span",{style:{color:e.lastFromThem?"#ff9f43":"var(--sd-fg-3, #8b9a9a)"},children:e.lastFromThem?"They wrote last":"You wrote last"}),null!=e.count&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:B(e.count,"message")}),null!=e.mine&&null!=e.count&&e.mine===e.count&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)"),children:"Only you wrote"}),e.folder&&"inbox"!==e.folder&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)"),children:e.folder}),"inmail"===e.kind&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),"sponsored"===e.kind&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:"Sponsored"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),p===e.id&&(0,t.jsx)(R,{id:e.id,keep:i,group:!1,token:s},`${e.id}:${s}:${i}`)]},e.id)),e.groups.length>0&&(0,t.jsxs)("div",{style:{fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:4},children:["Also in ",B(e.groups.length,"group"),":"," ",e.groups.slice(0,8).map((e,n)=>{let i=o.find(t=>t.id===e);return(0,t.jsxs)("span",{children:[n>0?", ":"",(0,t.jsx)("button",{onClick:()=>d(e),style:{background:"none",border:"none",color:"var(--sd-blue, #3498DB)",cursor:"pointer",padding:0,fontSize:12.5},children:i?Y(i,r):"a group"})]},e)})]}),(0,t.jsx)("div",{style:K,children:"Requests"}),e.invitesOut.length+e.invitesIn.length===0&&!e.request&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:12.5},children:"None on file."}),[...e.invitesOut,...e.invitesIn].sort((e,t)=>(t.t||0)-(e.t||0)).map(n=>(0,t.jsxs)("div",{style:{fontSize:12.5,marginBottom:6},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:"out"===n.dir?"You asked to connect":"They asked to connect"}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[" · ",_(n.t)||"no date"," · ",e.connection?"accepted":"out"===n.dir?"pending":"not accepted yet"]}),i&&a[n.id]&&(0,t.jsx)("div",{style:{marginTop:3,padding:"6px 9px",borderRadius:8,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:a[n.id]})]},n.id)),e.request&&(0,t.jsxs)("div",{style:{fontSize:12.5},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:"Request tracked in the app"}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[" · ",e.request.status]})]})]})}function G({c:e,onChange:r}){let o=e.crm||{},[i,s]=(0,n.useState)(o.notes||""),[a,l]=(0,n.useState)(""),[d,c]=(0,n.useState)(null),p=(0,n.useRef)(null),g=e.theyWrote?"replied":e.conversations.length||e.invitesOut.length||e.request?"contacted":"new";async function h(t){c("Saving…");try{await r(e.key,t),c("Saved")}catch(e){c(e.message)}}(0,n.useEffect)(()=>()=>clearTimeout(p.current),[]);let x=e=>y(new Date(Date.now()+864e5*e)),m=o.tags||[];function b(){let e=a.trim();e&&(l(""),h({tags:[...m,...e.split(",")]}))}return(0,t.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,t.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"flex-end"},children:[(0,t.jsxs)("label",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",display:"flex",flexDirection:"column",gap:3},children:["Stage",(0,t.jsxs)("select",{value:o.stage||"",onChange:e=>h({stage:e.target.value||null}),style:{...M,padding:"5px 8px"},children:[(0,t.jsxs)("option",{value:"",children:["Not set (looks like ",u(g),")"]}),f.map(e=>(0,t.jsx)("option",{value:e.id,children:e.label},e.id))]})]}),(0,t.jsxs)("label",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",display:"flex",flexDirection:"column",gap:3},children:["Next follow-up",(0,t.jsx)("input",{type:"date",value:o.followUp||"",onChange:e=>h({followUp:e.target.value||null}),style:{...M,padding:"4px 8px",colorScheme:"dark"}})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>h({followUp:x(3)}),style:D,children:"In 3 days"}),(0,t.jsx)("button",{onClick:()=>h({followUp:x(7)}),style:D,children:"In a week"}),o.followUp&&(0,t.jsx)("button",{onClick:()=>h({followUp:null}),style:D,children:"Clear"})]})]}),null==o.stage&&"new"!==g&&(0,t.jsxs)("button",{onClick:()=>h({stage:g}),style:{...D,marginTop:8},children:["Set to ",u(g)]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"},children:[m.map(e=>(0,t.jsxs)("span",{style:{...E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),fontSize:11.5,display:"inline-flex",gap:4,alignItems:"center"},children:[e,(0,t.jsx)("button",{"aria-label":`Remove ${e}`,onClick:()=>h({tags:m.filter(t=>t!==e)}),style:{background:"none",border:"none",color:"var(--sd-fg-3, #8b9a9a)",cursor:"pointer",padding:0,fontSize:12},children:"×"})]},e)),(0,t.jsx)("input",{value:a,onChange:e=>l(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),b())},onBlur:b,placeholder:"Add a tag","aria-label":"Add a tag",style:{...M,padding:"3px 8px",fontSize:12,width:120}})]}),(0,t.jsx)("textarea",{value:i,onChange:e=>{var t;s(t=e.target.value),clearTimeout(p.current),p.current=setTimeout(()=>h({notes:t}),800)},onBlur:function(){clearTimeout(p.current),i!==(o.notes||"")&&h({notes:i})},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,t.jsx)("div",{style:{fontSize:11,color:d&&"Saved"!==d&&"Saving…"!==d?"var(--sd-fg-2, #ff9b9b)":"var(--sd-fg-4, #778)",marginTop:4,minHeight:14},children:d||""})]})}function V({g:e,contacts:n,nameOf:r,keep:o,token:i,onPick:s}){let a=L(e.threadUrl);return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:Y(e,r)}),(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:e.unknown?"To someone unnamed":"Group"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",marginTop:4,fontSize:12.5},children:[e.last?`Last active ${_(e.last)}`:null,null!=e.count?B(e.count,"message"):null].filter(Boolean).join(" · ")}),a&&(0,t.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontSize:12.5,display:"inline-block",marginTop:6},children:"Conversation on LinkedIn ↗"}),e.people.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:K,children:"Who’s in it"}),(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.people.map(e=>{let o=n.get(e);return(0,t.jsxs)("button",{onClick:()=>s(e),style:{...D,display:"inline-flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:o?.row?.tier}),r(e)||e.split("/").pop(),o&&!o.connection&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-2, #ffc58a)",fontSize:10.5},children:"not a connection"})]},e)})})]}),(0,t.jsx)("div",{style:K,children:"Messages"}),(0,t.jsx)("div",{style:{border:g.LINE,borderRadius:6,overflow:"hidden"},children:(0,t.jsx)(R,{id:e.id,keep:o,group:!0,token:i},`${e.id}:${i}:${o}`)})]})}let X={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},Q={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},Z=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function ee(e){let t=[],n={},r=0;for(let o of e)for(let e of o.messages){let i=JSON.stringify(e).length+2;r+i>25e5&&r>0&&(t.push(n),n={},r=0),n[o.id]||(n[o.id]={title:o.title||"",messages:[]},r+=o.id.length+(o.title||"").length+40),n[o.id].messages.push(e),r+=i}t.push(n);for(let e=0;e<t.length;e++){let n=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:e,parts:t.length,threads:t[e]})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}async function et(e){let t={};for(let n of e)n.note&&(t[n.id]=n.note);let n=await fetch("/api/social/messages",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({invites:t})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The requests’ notes couldn’t be saved.")}function en({embedded:e=!1}){let{userId:r}=(0,s.useUser)(),[o,f]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null),[m,y]=(0,n.useState)(!1),[b,v]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[j,S]=(0,n.useState)(()=>(0,p.scannerNow)()),[T,C]=(0,n.useState)(!1),[z,R]=(0,n.useState)(0),[I,O]=(0,n.useState)(0),F=(0,n.useRef)(null),_=(0,n.useRef)(null),$=o?.keepMessages===!0,L=()=>fetch("/api/social").then(e=>e.json()).then(e=>f(e.social||null)).catch(()=>f(null)).finally(()=>R(e=>e+1));async function B(e){k(!0),v(null);try{let t={};for(let n of Array.from(e||[])){let e=n.name.toLowerCase();Q[e]&&!t[e]&&(t[e]=(0,l.readTable)(await n.text(),Q[e]))}if(!Object.keys(t).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let n=t["connections.csv"]||[],r=t["messages.csv"]?(0,l.messageStats)(t["messages.csv"]):{asOf:null,people:new Map},o=t["messages.csv"]?(0,l.buildConversations)(t["messages.csv"],{keepText:$}):null,i=t["invitations.csv"]?(0,l.buildInvitations)(t["invitations.csv"],{keepText:$}):null;F.current=t["messages.csv"]||null,_.current=t["invitations.csv"]||null;let s={};for(let[e,t]of r.people)s[e]={last:t.last,lastFromThem:t.lastFromThem,total:t.total,recent:t.recent};if(m)for(let e of n){let t=e["email address"];if(!t)continue;let n=(0,c.keyFor)({profile_url:e.url});s[n]={...s[n]||{},email:t}}let a=r.asOf||Date.now(),d={asOf:a,people:s,conversations:o?o.conversations.map(l.conversationSummary):[],chapters:(0,l.careerChapters)(t["positions.csv"]||[],n,a),posts:t["shares.csv"]?(0,l.postingEffect)(t["shares.csv"],n):null,invites:t["invitations.csv"]?(0,l.invitationSplit)(t["invitations.csv"]):null,invitations:(i||[]).map(({note:e,...t})=>t),names:o?o.names:{},emails:m},p=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!p.ok)throw Error((await p.json().catch(()=>({}))).error||"It couldn’t be saved.");o&&$&&await ee(o.conversations),i&&$&&await et(i);let g=o?[o.drafts?`${o.drafts.toLocaleString()} unsent ${1===o.drafts?"draft":"drafts"} left out`:"",o.skipped?`${o.skipped.toLocaleString()} ${1===o.skipped?"row":"rows"} with no conversation or date left out`:""].filter(Boolean):[];v({good:!0,text:`Read ${Object.keys(t).length} of LinkedIn’s files: ${r.people.size.toLocaleString()} people you’ve messaged one to one`+(o?`, ${o.conversations.length.toLocaleString()} conversations${$?", their messages kept on this computer":""}`:"")+(i?`, ${i.length.toLocaleString()} connection requests`:"")+`.${g.length?` (${g.join("; ")}.)`:""}`}),await L()}catch(e){v({good:!1,text:e.message})}finally{k(!1)}}async function W(e=!1){v(null);try{let t=await (0,p.runScrape)(e?"messages-full":"messages");v(t?.exitCode===0?{good:!0,text:e?"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 L()}catch(e){v({good:!1,text:e.message})}}async function E(e){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:e})}),L()}async function D(e){if(e||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){C(!0),v(null);try{if(e||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:e})})).ok)throw Error("The switch couldn’t be saved.");e&&(F.current||_.current)?(F.current&&await ee((0,l.buildConversations)(F.current,{keepText:!0}).conversations),_.current&&await et((0,l.buildInvitations)(_.current,{keepText:!0})),v({good:!0,text:"Your messages are kept on this computer now."})):e?v({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):v({good:!0,text:"Off. The kept messages are deleted."})}catch(e){v({good:!1,text:e.message})}finally{C(!1),L()}}}async function M(){await fetch("/api/social",{method:"DELETE"}),F.current=null,_.current=null;let e="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"}),O(e=>e+1),e+=" Your CRM notes are deleted too."):e+=" Your CRM notes are kept.",v({good:!0,text:e}),L()}(0,n.useEffect)(()=>{L()},[]),(0,n.useEffect)(()=>(0,p.watchScanner)(()=>S((0,p.scannerNow)())),[]),(0,n.useEffect)(()=>{if(!r)return;let e=!0;return(0,a.loadNetwork)(r).then(t=>{e&&x(t)}).catch(()=>{}),()=>{e=!1}},[r]);let{merged:A,asOf:P}=(0,n.useMemo)(()=>(0,d.mergeSocial)(o),[o]),U=(0,n.useMemo)(()=>{let e={warm:0,cool:0,dormant:0,never:0};for(let t of u?.degree1||[])e[(0,l.warmthOf)(A.get((0,c.keyFor)(t)),P)]+=1;return e},[u,A,P]);if(h.IS_DEMO)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-3, #aaa)",padding:40,fontFamily:g.FONT},children:"Not part of the demo."});let q=j?.running,Y={padding:"12px 14px",borderRadius:8,border:g.LINE,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",marginTop:10},H={fontSize:16,margin:"24px 0 6px"};return(0,t.jsxs)("div",{style:e?{color:"var(--sd-fg-1, #fff)",fontFamily:g.FONT}:{minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:g.FONT},children:[!e&&(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:g.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(i.default,{href:"/",style:{color:"var(--sd-fg-3, #888)",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE},children:"← Back to Map"}),(0,t.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"var(--sd-gold, #FFD700)"},children:["Social ",(0,t.jsx)("span",{style:{fontSize:12,color:"var(--sd-fg-3, #8b9a9a)",fontWeight:600},children:"experimental"})]})]}),(0,t.jsxs)("main",{style:{maxWidth:1180,margin:"0 auto",padding:"8px 16px 64px"},children:[(0,t.jsxs)(g.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,t.jsx)("i",{children:"Keep my messages"})," below."]}),(0,t.jsx)("h2",{style:H,children:"Your LinkedIn export"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(g.Body,{style:{margin:0},children:["On LinkedIn: ",(0,t.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,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",marginTop:10},children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>y(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"var(--sd-fg-1, #cfe6f7)",cursor:w?"default":"pointer",fontSize:13},children:[w?"Reading…":o?"Choose a newer export":"Choose the export folder",(0,t.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:w,style:{display:"none"},onChange:e=>B(e.target.files)})]}),o&&(0,t.jsxs)("span",{style:{fontSize:12,color:"var(--sd-fg-3, #8b9a9a)"},children:["From an export up to ",Z(o.asOf),o.liveAt?` \xb7 messages synced ${Z(Date.parse(o.liveAt))}`:""]}),o&&(0,t.jsx)("button",{onClick:M,style:{background:"none",border:"none",color:"var(--sd-fg-2, #ff9b9b)",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,t.jsxs)("h2",{style:H,children:["Live messages sync ",(0,t.jsx)("span",{style:{fontSize:11,color:"var(--sd-gold, #FFD700)"},children:"experimental"})]}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(g.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,t.jsx)("i",{children:"Keep my messages"})," is on. The daily sync reads the top of the list; ",(0,t.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,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>W(!1),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:"none",background:q?"#333":"rgba(0,255,136,0.15)",color:q?"var(--sd-fg-4, #777)":"var(--sd-green, #00ff88)",cursor:q?"default":"pointer",fontSize:13},children:q?"The scanner is busy":"Sync messages now"}),(0,t.jsx)("button",{onClick:()=>W(!0),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:g.LINE,background:"none",color:q?"var(--sd-fg-4, #777)":"var(--sd-fg-1, #cfe6f7)",cursor:q?"default":"pointer",fontSize:13},children:"Read my whole history"}),(0,t.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)"},children:[(0,t.jsx)("input",{type:"checkbox",checked:o?.autoSync===!0,onChange:e=>E(e.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),b&&(0,t.jsx)("div",{style:{marginTop:10,fontSize:13,color:b.good?"var(--sd-green, #00ff88)":"var(--sd-fg-2, #ff9b9b)"},children:b.text}),(0,t.jsx)("h2",{style:H,children:"People"}),(0,t.jsx)(N,{net:u,asOf:o?P:null,keep:$,onKeep:D,switching:T||w,token:z,crmToken:I}),o&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Warmth"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(X).map(([e,[n,r]])=>(0,t.jsxs)("div",{style:{...Y,marginTop:0},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:r},children:(U[e]||0).toLocaleString()}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)"},children:n})]},e))}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #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."}),o.chapters?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Career chapters"}),(0,t.jsx)("div",{style:{...Y,padding:0},children:o.chapters.map(e=>{let n=(e.people||[]).filter(e=>["warm","cool"].includes((0,l.warmthOf)(A.get((0,c.keyFor)({profile_url:e})),P))).length;return(0,t.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)",fontSize:13,alignItems:"baseline"},children:[(0,t.jsxs)("span",{style:{flex:1},children:[(0,t.jsx)("b",{children:e.company})," ",(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[e.title," · ",new Date(e.from).getFullYear(),"–",e.to?new Date(e.to).getFullYear():"now"]})]}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-2, #b8c4c4)"},children:[e.made.toLocaleString()," connections made"]}),(0,t.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:e.made?`${Math.round(100*n/e.made)}% still in touch`:""})]},`${e.company}-${e.from}`)})})]}),o.posts?.posts?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Does posting work?"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,t.jsx)("b",{children:o.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,t.jsx)("b",{children:o.posts.usualWeek.toFixed(1)}),"."]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #778)",marginTop:4},children:"What came after a post, not proof it came from it."}),[...o.posts.posts].sort((e,t)=>t.week-e.week).slice(0,3).map(e=>(0,t.jsxs)("div",{style:{fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",marginTop:6},children:[Z(e.t),": ",e.week," new connections that week ",e.link?(0,t.jsx)("a",{href:e.link,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Post ↗"}):null]},e.t))]})]}),o.invites?.total>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Who reaches out"}),(0,t.jsx)("div",{style:Y,children:(0,t.jsxs)("span",{style:{fontSize:13},children:[o.invites.incoming.toLocaleString()," requests came to you and you sent ",o.invites.outgoing.toLocaleString()," ","(",Math.round(100*o.invites.incoming/o.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}var er=e.i(99883),eo=e.i(48235);let ei={S:25,A:15,B:10,C:5,D:2},es={S:100,A:60,B:35,C:15,D:5};var ea=e.i(46949),el=e.i(36774);let ed=I.TIER_COLORS,ec="1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)";function ep({person:e,size:n=36,ring:r}){let o=ed[e?.tier]||"#667";return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n,flexShrink:0},children:[(0,t.jsx)("div",{style:{width:n,height:n,borderRadius:"50%",background:o,color:e?.tier==="S"?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:.34*n,fontWeight:800,border:`2px solid ${r||o}`},children:(0,ea.initialsFor)(e?.name||"?")}),(0,el.localPhoto)(e?.profile_image_url)&&(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",onError:e=>{e.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:n,height:n,borderRadius:"50%",objectFit:"cover",border:`2px solid ${r||o}`}})]})}function eg({progress:e,size:n=86,color:r="#FF6B35",children:o}){let i=n/2-5,s=2*Math.PI*i;return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n},children:[(0,t.jsxs)("svg",{width:n,height:n,style:{position:"absolute",inset:0,transform:"rotate(-90deg)"},children:[(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",strokeWidth:5}),(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:r,strokeWidth:5,strokeLinecap:"round",strokeDasharray:`${s*Math.min(1,e)} ${s}`,style:{transition:"stroke-dasharray 0.5s ease"}})]}),(0,t.jsx)("div",{style:{position:"absolute",inset:9,display:"flex",alignItems:"center",justifyContent:"center"},children:o})]})}function eh({recs:e,sentIds:r,added:o,mappedIds:s,reach:a,onSend:l,onUndo:d}){let c=(0,n.useMemo)(()=>(function({recs:e=[],sentIds:t=new Set,added:n=[],mappedIds:r=new Set,reach:o=null}){var i;let s,a,l,d=new Map,c=new Set;for(let t of[...e].sort((e,t)=>(t.priority||0)-(e.priority||0))){if(!t.bridge)continue;let e=`${t.bridge.id}|${t.profile_url||t.id}`;if(c.has(e))continue;c.add(e);let n=d.get(t.bridge.id);n||(n={bridge:t.bridge,people:[]},d.set(t.bridge.id,n)),n.people.push(t)}let p=new Map;for(let e of n){let t=e.unlocked_from_bridge_id;t&&p.set(t,[...p.get(t)||[],e])}let g=[],h=0,f=0;for(let{bridge:e,people:n}of d.values()){let r=n.filter(e=>t.has(e.id)),o=p.get(e.id)||[];f+=r.length,h+=r.reduce((e,t)=>e+(ei[t.tier]||2),0),h+=o.reduce((e,t)=>e+(es[t.tier]||5),0);let i=Math.ceil(n.length/5)||1,s=0;for(;s<i-1&&n.slice(5*s,(s+1)*5).every(e=>t.has(e.id));)s++;let a=n.slice(5*s,(s+1)*5),l=a.filter(e=>t.has(e.id)).length,d=l===a.length&&s===i-1;g.push({bridge:e,people:n,stage:s+1,stages:i,targets:a,done:l,progress:a.length?l/a.length:1,complete:d,sent:r.length,added:o,value:a.filter(e=>!t.has(e.id)).reduce((e,t)=>e+(t.priority||0),0),open:{S:a.filter(e=>"S"===e.tier&&!t.has(e.id)).length,A:a.filter(e=>"A"===e.tier&&!t.has(e.id)).length}})}g.sort((e,t)=>e.complete-t.complete||(t.progress>0&&t.progress<1)-(e.progress>0&&e.progress<1)||t.progress-e.progress||t.value-e.value);let u=g.filter(e=>!e.complete).flatMap(e=>e.targets.filter(e=>!t.has(e.id)).map(t=>({person:t,cluster:e,score:(t.priority||0)*(1+.6*e.progress)}))).sort((e,t)=>t.score-e.score),x=new Set,m=[];for(let e of u){let t=e.person.profile_url||e.person.id;if(!x.has(t)&&(x.add(t),m.push(e),3===m.length))break}let y=n.filter(e=>e.unlocked_from_bridge_id).length;return{clusters:g,nextMoves:m,points:h,level:(a=((s=Math.floor(Math.sqrt(Math.max(0,i=h)/40))+1)-1)**2*40,l=s**2*40,{level:s,floor:a,next:l,progress:(i-a)/(l-a)}),sentTotal:f,addedTotal:y,newDoors:n.filter(e=>e.unlocked_from_bridge_id&&"todo"===(0,eo.circleState)(e,o||{scanned:r,hidden:new Set})),clearedStages:g.reduce((e,t)=>e+(t.stage-1)+ +!!t.complete,0)}})({recs:e,sentIds:r,added:o,mappedIds:s,reach:a}),[e,r,o,s,a]),[p,g]=(0,n.useState)(null),[h,f]=(0,n.useState)(null),{level:u}=c;async function x(e,t){await l(e);let n=t.done+1,r=String(t.bridge.name||"").split(/[\s,]+/)[0];f(n>=t.targets.length?`+${ei[e.tier]||2} \xb7 Stage ${t.stage} of ${r}'s circle cleared. The next 5 are up`:`+${ei[e.tier]||2} \xb7 ${r}'s circle ${n}/${t.targets.length}`),setTimeout(()=>f(null),3500)}let m=c.clusters.find(e=>e.bridge.id===p);return(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto",padding:"16px 20px 60px"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:16,alignItems:"center",flexWrap:"wrap",padding:16,borderRadius:12,border:ec,background:"linear-gradient(135deg, rgba(255,107,53,0.10), rgba(155,89,182,0.08))"},children:[(0,t.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,t.jsx)("div",{style:{fontSize:10,fontWeight:800},children:"LEVEL"}),(0,t.jsx)("div",{style:{fontSize:26,fontWeight:900,lineHeight:1},children:u.level})]}),(0,t.jsxs)("div",{style:{flex:1,minWidth:220},children:[(0,t.jsxs)("div",{style:{fontSize:13,color:"var(--sd-fg-1, #dfe6e9)"},children:[(0,t.jsx)("b",{children:c.points})," points · ",(0,t.jsx)("b",{children:u.next-c.points})," to level ",u.level+1]}),(0,t.jsx)("div",{style:{height:8,borderRadius:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",marginTop:6,overflow:"hidden"},children:(0,t.jsx)("div",{style:{height:"100%",width:`${Math.round(100*u.progress)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",transition:"width 0.5s"}})}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:6},children:"Points come from invites you send and people who accept, not from browsing."})]}),[[c.sentTotal,"invites sent"],[c.addedTotal,"people added"],[c.clearedStages,"stages cleared"]].map(([e,n])=>(0,t.jsxs)("div",{style:{textAlign:"center",minWidth:80},children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:900},children:e}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)"},children:n})]},n))]}),c.newDoors.length>0&&(0,t.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,t.jsxs)("b",{children:[c.newDoors.length," new ",1===c.newDoors.length?"door":"doors",":"]})," people you added through a circle, whose own circle isn’t mapped yet. That’s the next degree. ",(0,t.jsx)(i.default,{href:"/setup",style:{color:"var(--sd-green, #00ff88)"},children:"Map them on the Scan page →"})]}),c.nextMoves.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h3",{style:{margin:"22px 0 10px",fontSize:15},children:"Next best moves"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12},children:c.nextMoves.map(({person:e,cluster:n},r)=>(0,t.jsxs)("div",{style:{padding:14,borderRadius:12,border:`1px solid ${ed[e.tier]}55`,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",position:"relative"},children:[(0,t.jsxs)("div",{style:{position:"absolute",top:10,right:12,fontSize:11,fontWeight:800,color:"var(--sd-orange, #FF6B35)"},children:["#",r+1]}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[(0,t.jsx)(ep,{person:e,size:44}),(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsx)("div",{style:{fontWeight:700,fontSize:14},children:e.name}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:220},children:e.headline})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-2, #aab7b7)",margin:"10px 0"},children:["via ",(0,t.jsx)("b",{style:{color:ed[n.bridge.tier]},children:n.bridge.name})," · their circle ",n.done,"/",n.targets.length," this stage"]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8},children:[e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:eu,children:"Open on LinkedIn"}),(0,t.jsxs)("button",{onClick:()=>x(e,n),style:ef,children:["I sent an invite · +",ei[e.tier]||2]})]})]},e.id))})]}),(0,t.jsx)("h3",{style:{margin:"26px 0 4px",fontSize:15},children:"Circles to work through"}),(0,t.jsxs)("div",{style:{fontSize:12,color:"var(--sd-fg-3, #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,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:12},children:c.clusters.map(e=>{let n=p===e.bridge.id;return(0,t.jsxs)("button",{onClick:()=>g(n?null:e.bridge.id),style:{padding:12,borderRadius:12,cursor:"pointer",textAlign:"center",color:"var(--sd-fg-1, #fff)",border:n?"1px solid #FF6B35":ec,background:e.complete?"rgba(0,255,136,0.06)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,t.jsx)(eg,{progress:e.progress,color:e.complete?"#00ff88":"#FF6B35",children:(0,t.jsx)(ep,{person:e.bridge,size:60})}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:13,maxWidth:170,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.bridge.name}),(0,t.jsx)("div",{style:{fontSize:11,color:e.complete?"var(--sd-green, #00ff88)":"var(--sd-fg-2, #aab7b7)"},children:e.complete?"Circle cleared":`Stage ${e.stage} of ${e.stages} \xb7 ${e.done}/${e.targets.length}`}),(0,t.jsx)("div",{style:{display:"flex",gap:4},children:e.targets.map(e=>(0,t.jsx)("span",{title:e.name,style:{width:12,height:12,borderRadius:"50%",border:`2px solid ${ed[e.tier]||"#667"}`,background:r.has(e.id)?ed[e.tier]||"#667":"transparent"}},e.id))}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"var(--sd-fg-4, #778)"},children:[e.open.S?`${e.open.S} S \xb7 `:"",e.open.A?`${e.open.A} A \xb7 `:"",e.people.length," worth adding",e.added.length?` \xb7 ★ ${e.added.length} added`:""]})]},e.bridge.id)})}),m&&(0,t.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,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,t.jsx)(ep,{person:m.bridge,size:40}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontWeight:800},children:[m.bridge.name,"’s circle · stage ",m.stage," of ",m.stages]}),(0,t.jsxs)("div",{style:{fontSize:12,color:"var(--sd-fg-2, #aab7b7)"},children:["Ask ",m.bridge.name?.split(" ")[0]," for an intro, or invite them directly. Mark each one when it’s sent."]})]})]}),m.targets.map(e=>{let n=r.has(e.id);return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 0",borderTop:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.05)"},children:[(0,t.jsx)(ep,{person:e,size:34,ring:n?"#00ff88":void 0}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsxs)("div",{style:{fontWeight:600,fontSize:13},children:[e.name," ",(0,t.jsx)("span",{style:{color:ed[e.tier],fontSize:11},children:e.tier})]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline})]}),e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:eu,children:"LinkedIn"}),n?(0,t.jsx)("button",{onClick:()=>d(e),style:{...eu,color:"var(--sd-green, #00ff88)"},children:"Sent ✓ (undo)"}):(0,t.jsxs)("button",{onClick:()=>x(e,m),style:ef,children:["Sent · +",ei[e.tier]||2]})]},e.id)}),m.added.length>0&&(0,t.jsxs)("div",{style:{marginTop:10,fontSize:12,color:"var(--sd-green, #00ff88)"},children:["★ Added from this circle: ",m.added.map(e=>e.name).join(", ")]})]}),h&&(0,t.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:h})]})}let ef={padding:"7px 12px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:800,fontSize:12,background:"linear-gradient(135deg, #FF6B35, #FFD700)",color:"#000"},eu={padding:"7px 12px",borderRadius:8,border:ec,cursor:"pointer",fontWeight:600,fontSize:12,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #dfe6e9)",textDecoration:"none"};var ex=e.i(2776),em=e.i(90179),ey=e.i(28867),eb=e.i(86106);let ev=["quest","recs","pending","messages"];function ew(){let{userId:e,userProfile:l}=(0,s.useUser)(),d=l?.sectors||[],[g,f]=(0,n.useState)([]),[u,x]=(0,n.useState)(!0),[m,y]=(0,n.useState)("all"),[b,v]=(0,n.useState)(new Set),w=(0,ey.default)(),[k,j]=(0,n.useState)([]),[S,T]=(0,n.useState)({}),C=(0,r.useSearchParams)().get("view"),[z,R]=(0,n.useState)(()=>ev.includes(C)?C:"quest"),[O,F]=(0,n.useState)([]),[_,$]=(0,n.useState)(()=>new Set),[L,B]=(0,n.useState)(null),[W,E]=(0,n.useState)(null),[D,M]=(0,n.useState)(()=>{{let e=new URLSearchParams(window.location.search);if(e.get("groupBy"))return e.get("groupBy")}return"bridge"});(0,n.useEffect)(()=>{{let e=new URLSearchParams(window.location.search).get("bridge");e&&E(e)}},[]),(0,n.useEffect)(()=>{!h.IS_DEMO&&e&&t();async function t(){let[t,n,r]=await Promise.all([(0,a.loadNetwork)(e),fetch(`/api/outreach?userId=${e}`).then(e=>e.json()).catch(()=>({pending:[]})),(0,p.loadScanNotes)()]),o=t.degree1,i=t.degree2;F(o.filter(e=>e.unlocked_from_bridge_id)),$(new Set(i.map(e=>e.source_connection_id).filter(Boolean))),B((0,eo.reachIndex)(o,i,r));let s=new Set(o.map(e=>e.profile_url)),l={};o.forEach(e=>{l[e.id]=e}),j(n.pending||[]),T(l),f(i.filter(e=>("S"===e.tier||"A"===e.tier||"B"===e.tier)&&!s.has(e.profile_url)).map(e=>{let t,n,r=l[e.source_connection_id],o=(t=parseFloat(e.power_score)||0,n=(e.headline||"").toLowerCase(),(0,em.rowCompanyScore)(e)>=em.TOP_COMPANY&&(t+=1),(d||[]).forEach(e=>{n.includes(e.toLowerCase())&&(t+=.5)}),"S"===e.tier?t*=1.5:"A"===e.tier&&(t*=1.2),t),i="S"===e.tier?50:"A"===e.tier?25:10;return{...e,bridge:r,priority:o,xp:i}}).sort((e,t)=>t.priority-e.priority)),x(!1)}},[e]);let N=(0,n.useMemo)(()=>new Set([...k,...g].filter(e=>(0,eb.hasRequest)(e,w)).map(e=>e.id)),[k,g,w]),A=(0,n.useMemo)(()=>{let e=new Set,t=[];for(let n of[...k,...g]){let r=(0,c.keyFor)(n);!e.has(r)&&(0,eb.hasRequest)(n,w)&&(e.add(r),t.push({...n,bridge:S[n.source_connection_id]||n.bridge||null}))}return t},[k,g,w,S]);if((0,n.useEffect)(()=>((0,er.setNotchTabs)({items:[{key:"quest",label:"Circles"},{key:"recs",label:`To add (${g.length})`},{key:"pending",label:`Pending (${A.length})`},{key:"messages",label:"Messages & follow-ups"}],current:z,onPick:R}),()=>(0,er.setNotchTabs)(null)),[z,g.length,A.length]),h.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(var(--sd-ink, 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,t.jsx)("h2",{style:{margin:0,fontSize:18,fontWeight:700,color:"var(--sd-fg-1, #fff)"},children:"Not part of the demo"}),(0,t.jsx)("div",{style:{fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(i.default,{href:"/",style:{fontSize:12,color:"rgba(var(--sd-ink, 255, 255, 255), 0.5)",textDecoration:"none"},children:"← Back to the network"})]});let P="all"===m?g:g.filter(e=>e.tier===m);W&&(P=P.filter(e=>e.bridge?.id===W));let U={S:0,A:0,B:0};g.forEach(e=>{void 0!==U[e.tier]&&U[e.tier]++});let q={};P.forEach(e=>{let t;q[t="bridge"===D?e.bridge?.id||"unknown":"company"===D?(e.company||"Unknown").trim()||"Unknown":e.tier]||(q[t]=[]),q[t].push(e)});let Y={S:0,A:1,B:2},H=Object.entries(q).sort((e,t)=>{if("tier"===D)return(Y[e[0]]||9)-(Y[t[0]]||9);if("bridge"===D){let n=e[1][0]?.bridge,r=t[1][0]?.bridge,o=Y[n?.tier]??9,i=Y[r?.tier]??9;if(o!==i)return o-i}return t[1].length-e[1].length});function K(e){v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return u?(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)"},children:"Loading..."}):(0,t.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsx)(o.default,{active:"outlink"}),("recs"===z||"pending"===z)&&(0,t.jsxs)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",flexShrink:0},children:[(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:10},children:(0,t.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>M("tier"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"tier"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"tier"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Tier"}),(0,t.jsx)("button",{onClick:()=>M("bridge"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"bridge"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"bridge"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Bridge"}),(0,t.jsx)("button",{onClick:()=>M("company"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"company"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"company"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Company"})]})})}),(0,t.jsx)("div",{style:{display:"flex",gap:6},children:[{k:"all",l:`All (${g.length})`},{k:"S",l:`S (${U.S})`,c:I.TIER_COLORS.S},{k:"A",l:`A (${U.A})`,c:I.TIER_COLORS.A},{k:"B",l:`B (${U.B})`,c:I.TIER_COLORS.B}].map(e=>(0,t.jsx)("button",{onClick:()=>y(e.k),style:{padding:"4px 12px",borderRadius:16,border:"none",fontSize:11,fontWeight:600,cursor:"pointer",background:m===e.k?e.c||"#fff":"rgba(var(--sd-ink, 255, 255, 255), 0.06)",color:m===e.k?"#000":e.c||"var(--sd-fg-3, #888)"},children:e.l},e.k))})]}),"messages"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"40px 8px 0"},children:(0,t.jsx)(en,{embedded:!0})}),"recs"===z&&b.size>0&&(0,t.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,t.jsxs)("span",{style:{fontSize:12,color:"var(--sd-gold, #FFD700)",fontWeight:600},children:[b.size," selected"]}),(0,t.jsxs)("button",{onClick:function(){let e=P.filter(e=>b.has(e.id));if(0===e.length)return;if(1===e.length)return void window.open(e[0].profile_url,"_blank");let t=new Blob([`<!DOCTYPE html><html><head><title>Outlink \xb7 ${e.length} profiles</title>
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77305,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(18566),o=e.i(33821),i=e.i(22016),s=e.i(15812),a=e.i(19821),l=e.i(84278),d=e.i(39160),c=e.i(7214),p=e.i(40996),g=e.i(8819),h=e.i(64745);let f=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"}]);f.map(e=>e.id);let u=e=>f.find(t=>t.id===e)?.label||"",x=e=>"string"==typeof e&&e.length>0&&e.length<300;function m(){return{version:1,settings:{awaitDays:7},people:{}}}function y(e=new Date){let t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}let b=/^https:\/\/(www\.)?linkedin\.com\/in\/[^/?#\s]+$/,v={S:0,A:1,B:2,C:3,D:4},w=(e,t)=>(e.degree??9)<(t.degree??9)||(e.degree??9)===(t.degree??9)&&(v[e.tier]??9)<(v[t.tier]??9),k=e=>"sponsored"===e.kind;function j(e,t,n=7){let r=[];for(let o of e){if(k(o)||!1!==o.lastFromThem||!o.last)continue;let e=Math.floor((t-o.last)/864e5);e>=n&&r.push({contact:o,waited:e})}return r.sort((e,t)=>e.waited-t.waited)}function S(e,t,n=null){let r=String(t||"").trim().toLowerCase();return!r||[e.name,e.row?.company,e.row?.role,e.row?.headline,...e.crm?.tags||[],e.crm?.notes].filter(Boolean).join("\n").toLowerCase().includes(r)||!!n&&e.conversations.some(e=>n.has(e.id))}function T(e){let t=null==e?"":String(e);return/^[=+\-@\t\r]/.test(t)&&(t=`'${t}`),/[",\r\n]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}let C=e=>e?new Date(e).toISOString().slice(0,10):"",z=["Name","Company","Profile","Connection","Stage","Tags","Last contact","Who wrote last","Next follow-up","Notes"];function R({id:e,keep:r,group:o,token:i}){let[s,a]=(0,n.useState)(null),[l,d]=(0,n.useState)(null),c=(0,n.useRef)(null),p=(0,n.useRef)(null);async function h(){let t=c.current,n=await fetch(`/api/social/messages?id=${encodeURIComponent(e)}&before=${s.start}&limit=200`).then(e=>e.json()).catch(()=>null);n&&!n.error&&(p.current=t?t.scrollHeight-t.scrollTop:null,a({...s,start:n.start,messages:[...n.messages,...s.messages]}))}(0,n.useEffect)(()=>{if(!r)return;let t=!0;return fetch(`/api/social/messages?id=${encodeURIComponent(e)}&limit=100`).then(e=>e.json()).then(e=>{t&&(e.error?d(e.error):(p.current="bottom",a(e)))}).catch(()=>{t&&d("It couldn’t be read.")}),()=>{t=!1}},[e,r,i]),(0,n.useLayoutEffect)(()=>{let e=c.current;e&&p.current&&("bottom"===p.current?e.scrollTop=e.scrollHeight:e.scrollTop=e.scrollHeight-p.current,p.current=null)},[s]);let f={padding:"10px 14px 14px",fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)"};return r?l?(0,t.jsx)("div",{style:{...f,color:"var(--sd-fg-2, #ff9b9b)"},children:l}):s?s.total?(0,t.jsxs)("div",{ref:c,style:{maxHeight:440,overflowY:"auto",padding:"8px 14px 12px",background:"rgba(var(--sd-shade, 0, 0, 0), 0.2)"},children:[s.start>0&&(0,t.jsx)("div",{style:{textAlign:"center",margin:"4px 0 10px"},children:(0,t.jsxs)("button",{onClick:h,style:{background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE,borderRadius:6,color:"var(--sd-fg-1, #cfe6f7)",cursor:"pointer",fontSize:12,padding:"4px 12px"},children:["Show earlier (",s.start.toLocaleString()," more)"]})}),s.messages.map((e,n)=>{let r;return(0,t.jsx)("div",{style:{display:"flex",justifyContent:e.fromMe?"flex-end":"flex-start",margin:"6px 0"},children:(0,t.jsxs)("div",{style:{maxWidth:"72%"},children:[(0,t.jsx)("div",{style:{padding:"7px 11px",borderRadius:12,fontSize:13,lineHeight:1.45,whiteSpace:"pre-wrap",overflowWrap:"anywhere",background:e.fromMe?"rgba(52,152,219,0.35)":"rgba(var(--sd-ink, 255, 255, 255), 0.08)",color:"var(--sd-fg-1, #eef)",borderBottomRightRadius:e.fromMe?4:12,borderBottomLeftRadius:e.fromMe?12:4},children:e.text||(0,t.jsx)("i",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:"(no words: an attachment or a reaction)"})}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"var(--sd-fg-4, #778)",marginTop:2,textAlign:e.fromMe?"right":"left"},children:[e.fromMe?"You":o?"Someone in the group":"Them"," · ",(r=e.t)?new Date(r).toLocaleString(void 0,{day:"numeric",month:"short",year:"numeric",hour:"numeric",minute:"2-digit"}):""]})]})},s.start+n)})]}):(0,t.jsx)("div",{style:f,children:"No messages are kept for this conversation yet. Choose your export folder again, or sync your messages, to bring them in."}):(0,t.jsx)("div",{style:f,children:"Opening…"}):(0,t.jsxs)("div",{style:f,children:["Turn on ",(0,t.jsx)("b",{children:"Keep my messages"})," to read them here."]})}var I=e.i(54322);let O=I.TIER_COLORS,F={new:"#8b9a9a",contacted:"#3498DB",replied:"#00d4aa",meeting:"#ff9f43",won:"#FFD700","not-now":"#667"},_=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",$=e=>e?new Date(`${e}T12:00:00`).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",L=e=>/^https:\/\/(www\.)?linkedin\.com\//.test(String(e||""))?e:null,B=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,W=[["inbox","Inbox"],["awaiting","Awaiting reply"],["due","Follow-ups due"],["pipeline","Pipeline"],["sent","Sent"],["received","Received"],["all","All"]],E=(e,t="#dfe8e8")=>({fontSize:10.5,padding:"1px 6px",borderRadius:4,background:e,color:t,whiteSpace:"nowrap"}),D={background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE,borderRadius:6,color:"var(--sd-fg-1, #cfe6f7)",cursor:"pointer",fontSize:12,padding:"4px 10px"},M={padding:"6px 10px",borderRadius:6,border:g.LINE,background:"rgba(var(--sd-shade, 0, 0, 0), 0.3)",color:"var(--sd-fg-1, #fff)",fontSize:13};function A({net:e,asOf:r,keep:o,onKeep:i,switching:s,token:a,crmToken:d}){let[p,h]=(0,n.useState)(null),[v,R]=(0,n.useState)(null),[I,O]=(0,n.useState)("inbox"),[F,L]=(0,n.useState)(""),[E,P]=(0,n.useState)(null),[U,Y]=(0,n.useState)(null),[K,G]=(0,n.useState)(100),[X,Q]=(0,n.useState)(null),Z=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/messages").then(e=>e.json()).then(t=>{e&&h(t)}).catch(()=>{e&&h({conversations:[],invitations:[],names:{},inviteNotes:{}})}),()=>{e=!1}},[a,o]),(0,n.useEffect)(()=>{let e=!0;return fetch("/api/social/crm").then(e=>e.json()).then(t=>{e&&R(t.crm||m())}).catch(()=>{e&&R(m())}),()=>{e=!1}},[d]),(0,n.useEffect)(()=>{let e=F.trim();if(!o||e.length<2)return;let t=!0,n=setTimeout(()=>{fetch(`/api/social/messages?q=${encodeURIComponent(e)}`).then(e=>e.json()).then(n=>{t&&P({q:e,ids:new Set(n.ids||[])})}).catch(()=>{})},250);return()=>{t=!1,clearTimeout(n)}},[F,o,a]);let ee=U?.type==="person"?U.key:null,{contacts:et,groups:en}=(0,n.useMemo)(()=>(function({conversations:e=[],invitations:t=[],network:n={},crm:r=m(),names:o={},also:i=[]}={}){let s=n.degree1||[],a=n.degree2||[],d=[...s,...a,...n.degree3||[]],p=new Map,g=new Map;for(let e of d){let t=(0,c.keyFor)(e),n=p.get(t);(!n||w(e,n))&&p.set(t,e)}for(let[e,t]of p){let n=(0,l.nameKey)(t.name);n&&g.set(n,g.has(n)&&g.get(n)!==e?null:e)}let h=new Set(s.map(c.keyFor)),f=(0,c.routeIndex)(a),u=new Map(s.map(e=>[e.id,e])),y=e=>e.startsWith("name:")&&g.get(e.slice(5))||e,v=new Map,k=e=>{var t,n,i;let s=y(e),a=v.get(s);if(a)return a;let l=p.get(s)||null;return a={key:s,name:(t=s,n=l,i=o,n?.name?n.name:i[t]?i[t]:t.startsWith("name:")?t.slice(5).replace(/\b\w/g,e=>e.toUpperCase()):String(t||"").replace(/\/+$/,"").split("/").pop()),row:l,connection:h.has(s),degree:l?.degree??null,profileUrl:b.test(s)?s:l?.profile_url&&b.test((0,c.keyFor)(l))?(0,c.keyFor)(l):null,introducers:l&&2===l.degree?[...new Set((0,c.routesFor)(l,f,u).map(e=>e.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:r?.people?.[s]||null,lastContact:null},v.set(s,a),a},j=[];for(let t of e){if(!t||!Array.isArray(t.people))continue;if(t.group){j.push({...t,people:t.people.map(y)});continue}if(!t.people.length){j.push({...t,unknown:!0});continue}let e=k(t.people[0]);e.conversations.push(t),e.count+=t.count||0,(!0===t.lastFromThem||null!=t.count&&null!=t.mine&&t.count>t.mine)&&(e.theyWrote=!0),t.last&&(!e.last||t.last>=e.last)?(e.last=t.last,e.lastFromThem=t.lastFromThem,e.unread=t.unread,e.threadUrl=t.threadUrl||e.threadUrl):e.last||t.last||(e.threadUrl=t.threadUrl||e.threadUrl)}for(let e of v.values()){e.conversations.sort((e,t)=>(t.last||0)-(e.last||0));let t=new Set(e.conversations.map(e=>e.kind||null));e.kind=1===t.size?[...t][0]:null}for(let e of j)for(let t of e.people)v.get(t)?.groups.push(e.id);for(let e of t){if(!e?.key)continue;let t=k(e.key);!e.name||t.row||o[t.key]||(t.name=e.name),("in"===e.dir?t.invitesIn:t.invitesOut).push(e)}for(let e of d){if("sent"!==e.outreach_status&&"accepted"!==e.outreach_status&&"pending"!==e.unlock_status)continue;let t=k((0,c.keyFor)(e)),n=t.connection||"accepted"===e.outreach_status?"accepted":"pending";t.request&&"accepted"!==n||(t.request={status:n})}for(let e of Object.keys(r?.people||{}))k(e);for(let e of i)x(e)&&k(e);for(let e of v.values()){let t=[e.last,...e.invitesIn.map(e=>e.t),...e.invitesOut.map(e=>e.t)].filter(Boolean);e.lastContact=t.length?Math.max(...t):null}return{contacts:v,groups:j}})({conversations:p?.conversations||[],invitations:p?.invitations||[],network:e||{},crm:v||m(),names:p?.names||{},also:ee?[ee]:[]}),[p,e,v,ee]),er=(0,n.useMemo)(()=>{let t=new Map;for(let n of[...e?.degree1||[],...e?.degree2||[]])t.has((0,c.keyFor)(n))||t.set((0,c.keyFor)(n),n);let n=p?.names||{};return e=>et.get(e)?.name||t.get(e)?.name||n[e]||null},[et,e,p]),eo=v?.settings?.awaitDays||7,[ei]=(0,n.useState)(()=>Date.now()),es=r||ei,ea=y(new Date(ei)),el=(0,n.useMemo)(()=>[...et.values()],[et]),ed=(0,n.useMemo)(()=>{let e=(e,t)=>({type:"person",key:e.key,c:e,sub:t,t:e.lastContact||0}),t=e=>null==e.lastFromThem?"":e.lastFromThem?`They wrote ${_(e.last)}`:`You wrote ${_(e.last)}`,n=el.filter(e=>e.lastContact||e.crm||e.request).map(n=>e(n,t(n)||(n.invitesOut[0]?`You asked to connect ${_(n.invitesOut[0].t)}`:"")||(n.invitesIn[0]?`Asked to connect ${_(n.invitesIn[0].t)}`:"")||(n.request?`Tracked request \xb7 ${n.request.status}`:"")||(n.crm?.stage?u(n.crm.stage):"")));for(let e of en)n.push({type:"group",id:e.id,g:e,sub:e.last?`${e.lastFromThem?"Someone wrote":"You wrote"} ${_(e.last)}`:"",t:e.last||0});return n.sort((e,t)=>t.t-e.t),{inbox:[...el].filter(e=>!k(e)&&(!0===e.lastFromThem||e.unread>0)).sort((e,t)=>(t.unread>0)-(e.unread>0)||(t.last||0)-(e.last||0)).map(n=>e(n,n.unread>0?`${n.unread} unread \xb7 ${t(n)}`:t(n))),awaiting:j(el,es,eo).map(t=>e(t.contact,`You wrote ${_(t.contact.last)}, no reply for ${B(t.waited,"day")}`)),due:(function(e,t=y()){return[...e].filter(e=>e.crm?.followUp&&e.crm.followUp<=t).sort((e,t)=>e.crm.followUp.localeCompare(t.crm.followUp))})(el,ea).map(t=>e(t,t.crm.followUp===ea?"Follow up today":`Follow up was due ${$(t.crm.followUp)}`)),pipeline:function(e){let t=Object.fromEntries(f.map(e=>[e.id,[]]));for(let n of e)n.crm?.stage&&t[n.crm.stage].push(n);for(let e of Object.values(t))e.sort((e,t)=>(t.lastContact||0)-(e.lastContact||0));return t}(el),sent:(function(e,t,n=7){let r=[...e],o=new Map(j(r,t,n).map(e=>[e.contact.key,e.waited])),i=[];for(let e of r){let t=[];for(let n of e.invitesOut)t.push({type:"invite",id:n.id,t:n.t,status:e.connection?"accepted":"pending"});e.request&&t.push({type:"request",status:e.request.status}),o.has(e.key)&&t.push({type:"awaiting",t:e.last,waited:o.get(e.key)}),t.length&&i.push({contact:e,items:t,t:Math.max(0,...t.map(e=>e.t||0))})}return i.sort((e,t)=>t.t-e.t)})(el,es,eo).map(t=>e(t.contact,t.items.map(e=>"invite"===e.type?`Request ${_(e.t)} \xb7 ${e.status}`:"request"===e.type?`Tracked request \xb7 ${e.status}`:`No reply for ${B(e.waited,"day")}`).join(" · "))),received:(function(e){let t=[];for(let n of e)!n.connection&&n.invitesIn.length&&t.push({contact:n,t:Math.max(0,...n.invitesIn.map(e=>e.t||0))});return t.sort((e,t)=>t.t-e.t)})(el).map(t=>e(t.contact,`Asked to connect ${_(t.t)}`)),all:n}},[el,en,es,eo,ea]),ec=o&&E?.q===F.trim()?E.ids:null,ep=F.trim().toLowerCase(),eg=(0,n.useMemo)(()=>{let t="pipeline"===I?[]:ed[I];if(!ep)return t;let n=t.filter(e=>"person"===e.type?S(e.c,ep,ec):String(e.g.title||"").toLowerCase().includes(ep)||e.g.people.some(e=>String(er(e)||"").toLowerCase().includes(ep))||ec?.has(e.g.id));if("all"===I&&ep.length>=2&&e){let t=new Set(n.map(e=>e.key)),r=new Set;for(let o of[...e.degree1||[],...e.degree2||[]]){let e=(0,c.keyFor)(o);if(!(t.has(e)||r.has(e))&&[o.name,o.company,o.role,o.headline].some(e=>String(e||"").toLowerCase().includes(ep))&&(r.add(e),n.push({type:"person",key:e,c:null,row:o,sub:"Nothing on file yet",t:0}),r.size>=50))break}}return n},[ed,I,ep,ec,e,er]),eh=(0,n.useMemo)(()=>{if("pipeline"!==I)return null;let e={};for(let[t,n]of Object.entries(ed.pipeline))e[t]=ep?n.filter(e=>S(e,ep,ec)):n;return e},[ed,I,ep,ec]),ef={inbox:ed.inbox.length,awaiting:ed.awaiting.length,due:ed.due.length,pipeline:Object.values(ed.pipeline).reduce((e,t)=>e+t.length,0),sent:ed.sent.length,received:ed.received.length,all:ed.all.length};function eu(e){Y(e),window.matchMedia?.("(max-width: 760px)").matches&&setTimeout(()=>Z.current?.scrollIntoView({behavior:"smooth",block:"start"}),50)}async function ex(e,t){let n=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,set:t})}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error||"That couldn’t be saved.");R(t=>{let n={...t||m(),people:{...t?.people||{}}};return r.entry?n.people[e]=r.entry:delete n.people[e],n})}async function em(e){let t=await fetch("/api/social/crm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{awaitDays:e}})}),n=await t.json().catch(()=>({}));t.ok&&R(e=>({...e||m(),settings:n.settings}))}async function ey(){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"}),R(m()),Q("Your CRM notes are deleted."))}let eb=!p||!v||!e,ev={padding:"12px 14px",borderRadius:8,border:g.LINE,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",marginTop:10},ew=U?.type==="group"?en.find(e=>e.id===U.id):null,ek=ee?et.get(ee):null;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:ev,children:[(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:13.5,color:"var(--sd-fg-1, #fff)",cursor:s?"default":"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:o,disabled:s,onChange:e=>i(e.target.checked)}),(0,t.jsx)("b",{children:"Keep my messages on this computer"}),(0,t.jsx)("span",{style:{fontSize:11.5,color:o?"var(--sd-green, #00ff88)":"var(--sd-fg-3, #8b9a9a)"},children:o?"on":"off"})]}),(0,t.jsxs)(g.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 or put in Six Degrees’ own backups, and an exported backup file carries them only with its Social tab box ticked. ",(0,t.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,t.jsxs)("div",{className:"crm-grid",style:{marginTop:10},children:[(0,t.jsxs)("div",{className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,padding:0,minWidth:0},children:[(0,t.jsx)("div",{role:"tablist","aria-label":"CRM views",style:{display:"flex",flexWrap:"wrap",gap:4,padding:"10px 10px 6px",borderBottom:g.LINE},children:W.map(([e,n])=>(0,t.jsxs)("button",{role:"tab","aria-selected":I===e,onClick:()=>{O(e),G(100)},style:{...D,padding:"4px 9px",fontSize:12,background:I===e?"rgba(52,152,219,0.28)":"rgba(var(--sd-ink, 255, 255, 255), 0.04)",color:I===e?"var(--sd-fg-1, #fff)":"var(--sd-fg-2, #b8c4c4)"},children:[n," ",(0,t.jsx)("span",{style:{color:I===e?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-4, #778)"},children:eb?"":ef[e].toLocaleString()})]},e))}),(0,t.jsxs)("div",{style:{padding:"8px 10px",borderBottom:g.LINE,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("input",{type:"search",value:F,onChange:e=>{L(e.target.value),G(100)},placeholder:o?"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,t.jsx)("button",{onClick:function(){var e;let t,n,r=el.filter(e=>"sponsored"!==e.kind).sort((e,t)=>(t.lastContact||0)-(e.lastContact||0)),o=`Six Degrees CRM ${y()}.csv`;e=function(e){let t=[z.map(T).join(",")];for(let n of e)t.push([n.name,n.row?.company||"",n.profileUrl||"",n.connection?"Yes":"No",u(n.crm?.stage),(n.crm?.tags||[]).join("; "),C(n.lastContact),null==n.lastFromThem?"":n.lastFromThem?"Them":"You",n.crm?.followUp||"",n.crm?.notes||""].map(T).join(","));return`\uFEFF${t.join("\r\n")}\r
2
+ `}(r),t=URL.createObjectURL(new Blob([e],{type:"text/csv;charset=utf-8"})),(n=document.createElement("a")).href=t,n.download=o,n.style.position="fixed",n.style.left="-9999px",document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),6e4),Q(`Made “${o}” (${B(r.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:eb,style:D,title:"A spreadsheet of everyone here, with your stages, tags, follow-ups and notes",children:"Export CSV"})]}),"awaiting"===I&&(0,t.jsxs)("div",{style:{padding:"8px 12px",borderBottom:g.LINE,fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:["You wrote last and nothing came back for",(0,t.jsx)("input",{type:"number",min:1,max:365,value:eo,"aria-label":"Days with no reply",onChange:e=>{let t=Number(e.target.value);t>=1&&t<=365&&em(t)},style:{...M,width:64,padding:"3px 6px"}}),"days or more",r?`, as of ${_(r)}`:"","."]}),X&&(0,t.jsx)("div",{style:{padding:"8px 12px",fontSize:12.5,color:"var(--sd-green, #00ff88)",borderBottom:g.LINE},children:X}),eb&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"Loading…"}),!eb&&"pipeline"===I&&(0,t.jsx)(H,{pipeline:eh,picked:ee,onPick:e=>eu({type:"person",key:e})}),!eb&&"pipeline"!==I&&0===eg.length&&(0,t.jsx)("div",{style:{padding:12,fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:ep?"Nothing matches that.":N[I]}),!eb&&"pipeline"!==I&&(0,t.jsxs)("div",{children:[eg.slice(0,K).map(e=>(0,t.jsx)(q,{r:e,nameOf:er,active:"person"===e.type?ee===e.key:U?.id===e.id,onPick:()=>eu("person"===e.type?{type:"person",key:e.key}:{type:"group",id:e.id})},"person"===e.type?`p:${e.key}`:`g:${e.id}`)),eg.length>K&&(0,t.jsxs)("button",{onClick:()=>G(K+100),style:{width:"100%",padding:10,background:"none",border:"none",color:"var(--sd-blue, #3498DB)",cursor:"pointer",fontSize:13},children:["Show ",Math.min(100,eg.length-K).toLocaleString()," more of ",eg.length.toLocaleString()]})]})]}),(0,t.jsxs)("div",{ref:Z,className:"pipeline"===I?"crm-wide":void 0,style:{...ev,marginTop:0,minWidth:0,scrollMarginTop:80},children:[!U&&(0,t.jsx)("div",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up."}),ek&&(0,t.jsx)(J,{c:ek,nameOf:er,groups:en,keep:o,token:a,inviteNotes:p?.inviteNotes||{},onChange:ex,onPickGroup:e=>eu({type:"group",id:e})},ek.key),ew&&(0,t.jsx)(V,{g:ew,contacts:et,nameOf:er,keep:o,token:a,onPick:e=>eu({type:"person",key:e})})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #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(v?.people||{}).length>0&&(0,t.jsxs)(t.Fragment,{children:[" ","Your notes are in the app’s data folder, never in Six Degrees’ own backups; an exported backup file carries them only with its Social tab box ticked."," ",(0,t.jsx)("button",{onClick:ey,style:{background:"none",border:"none",color:"var(--sd-fg-2, #ff9b9b)",cursor:"pointer",fontSize:11.5,padding:0},children:"Delete my CRM notes"})]})]})]})}let N={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:e}){return(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:O[e]||"#556",flexShrink:0,display:"inline-block"}})}function U({c:e}){return(0,t.jsxs)(t.Fragment,{children:[e&&!e.connection&&(0,t.jsx)("span",{style:E("rgba(255,159,67,0.18)","#ffc58a"),children:2===e.degree?"2nd degree":"Not a connection"}),e?.kind==="sponsored"&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:"Sponsored"}),e?.kind==="inmail"&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),e?.crm?.stage&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)",F[e.crm.stage]),children:u(e.crm.stage)})]})}function q({r:e,nameOf:n,active:r,onPick:o}){let i,s=null,a=null;if("person"===e.type){let n=e.c;i=n?.name||e.row?.name||e.key,s=n?.row?.tier||e.row?.tier,a=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(U,{c:n||{connection:e.row?.degree===1,degree:e.row?.degree}}),n?.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[n.unread," unread"]})]})}else i=Y(e.g,n),a=(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:e.g.unknown?"To someone unnamed":"Group"});let l="person"===e.type?e.c?.row?.company||e.row?.company:null;return(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-pressed":r,onClick:o,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())},style:{padding:"8px 12px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)",cursor:"pointer",background:r?"rgba(52,152,219,0.14)":"none"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:13,minWidth:0,flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:s}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"100%"},children:i}),a]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:2,paddingLeft:14,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[l,e.sub].filter(Boolean).join(" · ")})]})}function Y(e,t){if(e.title)return e.title;if(e.unknown)return"A conversation only you wrote in";let n=e.people.map(t).filter(Boolean);return n.length?`${n.slice(0,3).join(", ")}${e.people.length>3?` +${e.people.length-3}`:""}`:`${e.people.length} people`}function H({pipeline:e,picked:n,onPick:r}){return(0,t.jsx)("div",{className:"crm-board",children:f.map(o=>(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsxs)("div",{style:{fontSize:12,fontWeight:650,color:F[o.id],margin:"0 0 6px",display:"flex",justifyContent:"space-between"},children:[(0,t.jsx)("span",{children:o.label}),(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:e[o.id].length.toLocaleString()})]}),0===e[o.id].length&&(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #667)",padding:"6px 0"},children:"No one"}),e[o.id].slice(0,200).map(e=>(0,t.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>r(e.key),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),r(e.key))},style:{padding:"7px 9px",marginBottom:6,borderRadius:6,border:g.LINE,cursor:"pointer",fontSize:12.5,background:n===e.key?"rgba(52,152,219,0.18)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:e.row?.tier}),(0,t.jsx)("b",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:11,marginTop:2},children:[e.row?.company,e.crm.followUp?`Follow up ${$(e.crm.followUp)}`:null].filter(Boolean).join(" · ")})]},e.key)),e[o.id].length>200&&(0,t.jsxs)("div",{style:{fontSize:11,color:"var(--sd-fg-4, #778)"},children:["and ",(e[o.id].length-200).toLocaleString()," more (search to find them)"]})]},o.id))})}let K={fontSize:12,fontWeight:650,color:"var(--sd-fg-2, #b8c4c4)",margin:"16px 0 6px",textTransform:"uppercase",letterSpacing:.4};function J({c:e,nameOf:r,groups:o,keep:i,token:s,inviteNotes:a,onChange:l,onPickGroup:d}){let c=e.row,[p,h]=(0,n.useState)(e.conversations[0]?.id||null),f=L(e.profileUrl),u=L(e.threadUrl),x=e.connection?`A connection${c?.connected_date?` since ${_(Date.parse(c.connected_date))}`:""}.`:2===e.degree?"2nd degree: not a connection yet.":"Not a connection.";return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)(P,{tier:c?.tier}),(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:e.name}),c?.tier&&(0,t.jsxs)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)",O[c.tier]),children:[c.tier," tier"]}),(0,t.jsx)(U,{c:e})]}),(c?.headline||c?.company)&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-2, #b8c4c4)",marginTop:4},children:c.headline||[c.role,c.company].filter(Boolean).join(" at ")}),(0,t.jsxs)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",marginTop:4,fontSize:12.5},children:[x,e.introducers.length>0&&(0,t.jsxs)(t.Fragment,{children:[" Who can introduce you: ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:e.introducers.slice(0,6).join(", ")}),e.introducers.length>6?` and ${e.introducers.length-6} more`:"","."]}),c?.unlocked_from_name&&e.connection&&(0,t.jsxs)(t.Fragment,{children:[" You met through ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:c.unlocked_from_name}),"."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:12,marginTop:6,flexWrap:"wrap",fontSize:12.5},children:[f&&(0,t.jsx)("a",{href:f,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Profile on LinkedIn ↗"}),u&&(0,t.jsx)("a",{href:u,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Conversation on LinkedIn ↗"})]}),(0,t.jsx)(G,{c:e,onChange:l}),(0,t.jsx)("div",{style:K,children:"Conversations"}),0===e.conversations.length&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:12.5},children:"None one to one."}),e.conversations.map(e=>(0,t.jsxs)("div",{style:{border:g.LINE,borderRadius:6,marginBottom:6,overflow:"hidden"},children:[(0,t.jsxs)("div",{role:"button",tabIndex:0,"aria-expanded":p===e.id,onClick:()=>h(p===e.id?null:e.id),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&(t.preventDefault(),h(p===e.id?null:e.id))},style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",padding:"7px 10px",cursor:"pointer",fontSize:12.5,background:p===e.id?"rgba(var(--sd-ink, 255, 255, 255), 0.04)":"none"},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:_(e.last)||"No date"}),null!=e.lastFromThem&&(0,t.jsx)("span",{style:{color:e.lastFromThem?"#ff9f43":"var(--sd-fg-3, #8b9a9a)"},children:e.lastFromThem?"They wrote last":"You wrote last"}),null!=e.count&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:B(e.count,"message")}),null!=e.mine&&null!=e.count&&e.mine===e.count&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)"),children:"Only you wrote"}),e.folder&&"inbox"!==e.folder&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.06)"),children:e.folder}),"inmail"===e.kind&&(0,t.jsx)("span",{style:E("rgba(155,89,182,0.25)"),children:"InMail"}),"sponsored"===e.kind&&(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:"Sponsored"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),p===e.id&&(0,t.jsx)(R,{id:e.id,keep:i,group:!1,token:s},`${e.id}:${s}:${i}`)]},e.id)),e.groups.length>0&&(0,t.jsxs)("div",{style:{fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:4},children:["Also in ",B(e.groups.length,"group"),":"," ",e.groups.slice(0,8).map((e,n)=>{let i=o.find(t=>t.id===e);return(0,t.jsxs)("span",{children:[n>0?", ":"",(0,t.jsx)("button",{onClick:()=>d(e),style:{background:"none",border:"none",color:"var(--sd-blue, #3498DB)",cursor:"pointer",padding:0,fontSize:12.5},children:i?Y(i,r):"a group"})]},e)})]}),(0,t.jsx)("div",{style:K,children:"Requests"}),e.invitesOut.length+e.invitesIn.length===0&&!e.request&&(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",fontSize:12.5},children:"None on file."}),[...e.invitesOut,...e.invitesIn].sort((e,t)=>(t.t||0)-(e.t||0)).map(n=>(0,t.jsxs)("div",{style:{fontSize:12.5,marginBottom:6},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:"out"===n.dir?"You asked to connect":"They asked to connect"}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[" · ",_(n.t)||"no date"," · ",e.connection?"accepted":"out"===n.dir?"pending":"not accepted yet"]}),i&&a[n.id]&&(0,t.jsx)("div",{style:{marginTop:3,padding:"6px 9px",borderRadius:8,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:a[n.id]})]},n.id)),e.request&&(0,t.jsxs)("div",{style:{fontSize:12.5},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #dfe8e8)"},children:"Request tracked in the app"}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[" · ",e.request.status]})]})]})}function G({c:e,onChange:r}){let o=e.crm||{},[i,s]=(0,n.useState)(o.notes||""),[a,l]=(0,n.useState)(""),[d,c]=(0,n.useState)(null),p=(0,n.useRef)(null),g=e.theyWrote?"replied":e.conversations.length||e.invitesOut.length||e.request?"contacted":"new";async function h(t){c("Saving…");try{await r(e.key,t),c("Saved")}catch(e){c(e.message)}}(0,n.useEffect)(()=>()=>clearTimeout(p.current),[]);let x=e=>y(new Date(Date.now()+864e5*e)),m=o.tags||[];function b(){let e=a.trim();e&&(l(""),h({tags:[...m,...e.split(",")]}))}return(0,t.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,t.jsxs)("div",{style:{display:"flex",gap:12,flexWrap:"wrap",alignItems:"flex-end"},children:[(0,t.jsxs)("label",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",display:"flex",flexDirection:"column",gap:3},children:["Stage",(0,t.jsxs)("select",{value:o.stage||"",onChange:e=>h({stage:e.target.value||null}),style:{...M,padding:"5px 8px"},children:[(0,t.jsxs)("option",{value:"",children:["Not set (looks like ",u(g),")"]}),f.map(e=>(0,t.jsx)("option",{value:e.id,children:e.label},e.id))]})]}),(0,t.jsxs)("label",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",display:"flex",flexDirection:"column",gap:3},children:["Next follow-up",(0,t.jsx)("input",{type:"date",value:o.followUp||"",onChange:e=>h({followUp:e.target.value||null}),style:{...M,padding:"4px 8px",colorScheme:"dark"}})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>h({followUp:x(3)}),style:D,children:"In 3 days"}),(0,t.jsx)("button",{onClick:()=>h({followUp:x(7)}),style:D,children:"In a week"}),o.followUp&&(0,t.jsx)("button",{onClick:()=>h({followUp:null}),style:D,children:"Clear"})]})]}),null==o.stage&&"new"!==g&&(0,t.jsxs)("button",{onClick:()=>h({stage:g}),style:{...D,marginTop:8},children:["Set to ",u(g)]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:6,flexWrap:"wrap",alignItems:"center"},children:[m.map(e=>(0,t.jsxs)("span",{style:{...E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),fontSize:11.5,display:"inline-flex",gap:4,alignItems:"center"},children:[e,(0,t.jsx)("button",{"aria-label":`Remove ${e}`,onClick:()=>h({tags:m.filter(t=>t!==e)}),style:{background:"none",border:"none",color:"var(--sd-fg-3, #8b9a9a)",cursor:"pointer",padding:0,fontSize:12},children:"×"})]},e)),(0,t.jsx)("input",{value:a,onChange:e=>l(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),b())},onBlur:b,placeholder:"Add a tag","aria-label":"Add a tag",style:{...M,padding:"3px 8px",fontSize:12,width:120}})]}),(0,t.jsx)("textarea",{value:i,onChange:e=>{var t;s(t=e.target.value),clearTimeout(p.current),p.current=setTimeout(()=>h({notes:t}),800)},onBlur:function(){clearTimeout(p.current),i!==(o.notes||"")&&h({notes:i})},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,t.jsx)("div",{style:{fontSize:11,color:d&&"Saved"!==d&&"Saving…"!==d?"var(--sd-fg-2, #ff9b9b)":"var(--sd-fg-4, #778)",marginTop:4,minHeight:14},children:d||""})]})}function V({g:e,contacts:n,nameOf:r,keep:o,token:i,onPick:s}){let a=L(e.threadUrl);return(0,t.jsxs)("div",{style:{fontSize:13},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("h3",{style:{margin:0,fontSize:17},children:Y(e,r)}),(0,t.jsx)("span",{style:E("rgba(var(--sd-ink, 255, 255, 255), 0.08)"),children:e.unknown?"To someone unnamed":"Group"}),e.unread>0&&(0,t.jsxs)("span",{style:E("#3498DB","#fff"),children:[e.unread," unread"]})]}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-3, #8b9a9a)",marginTop:4,fontSize:12.5},children:[e.last?`Last active ${_(e.last)}`:null,null!=e.count?B(e.count,"message"):null].filter(Boolean).join(" · ")}),a&&(0,t.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontSize:12.5,display:"inline-block",marginTop:6},children:"Conversation on LinkedIn ↗"}),e.people.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:K,children:"Who’s in it"}),(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.people.map(e=>{let o=n.get(e);return(0,t.jsxs)("button",{onClick:()=>s(e),style:{...D,display:"inline-flex",gap:6,alignItems:"center"},children:[(0,t.jsx)(P,{tier:o?.row?.tier}),r(e)||e.split("/").pop(),o&&!o.connection&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-2, #ffc58a)",fontSize:10.5},children:"not a connection"})]},e)})})]}),(0,t.jsx)("div",{style:K,children:"Messages"}),(0,t.jsx)("div",{style:{border:g.LINE,borderRadius:6,overflow:"hidden"},children:(0,t.jsx)(R,{id:e.id,keep:o,group:!0,token:i},`${e.id}:${i}:${o}`)})]})}let X={warm:["Warm","#ff9f43"],cool:["Cool","#3498DB"],dormant:["Dormant","#8899aa"],never:["Never messaged","#556"]},Q={"connections.csv":"first name","messages.csv":"conversation id","invitations.csv":"direction","positions.csv":"company name","shares.csv":"date"},Z=e=>e?new Date(e).toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";async function ee(e){let t=[],n={},r=0;for(let o of e)for(let e of o.messages){let i=JSON.stringify(e).length+2;r+i>25e5&&r>0&&(t.push(n),n={},r=0),n[o.id]||(n[o.id]={title:o.title||"",messages:[]},r+=o.id.length+(o.title||"").length+40),n[o.id].messages.push(e),r+=i}t.push(n);for(let e=0;e<t.length;e++){let n=await fetch("/api/social/messages",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({part:e,parts:t.length,threads:t[e]})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The messages couldn’t be saved.")}}async function et(e){let t={};for(let n of e)n.note&&(t[n.id]=n.note);let n=await fetch("/api/social/messages",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({invites:t})});if(!n.ok)throw Error((await n.json().catch(()=>({}))).error||"The requests’ notes couldn’t be saved.")}function en({embedded:e=!1}){let{userId:r}=(0,s.useUser)(),[o,f]=(0,n.useState)(void 0),[u,x]=(0,n.useState)(null),[m,y]=(0,n.useState)(!1),[b,v]=(0,n.useState)(null),[w,k]=(0,n.useState)(!1),[j,S]=(0,n.useState)(()=>(0,p.scannerNow)()),[T,C]=(0,n.useState)(!1),[z,R]=(0,n.useState)(0),[I,O]=(0,n.useState)(0),F=(0,n.useRef)(null),_=(0,n.useRef)(null),$=o?.keepMessages===!0,L=()=>fetch("/api/social").then(e=>e.json()).then(e=>f(e.social||null)).catch(()=>f(null)).finally(()=>R(e=>e+1));async function B(e){k(!0),v(null);try{let t={};for(let n of Array.from(e||[])){let e=n.name.toLowerCase();Q[e]&&!t[e]&&(t[e]=(0,l.readTable)(await n.text(),Q[e]))}if(!Object.keys(t).length)throw Error("That folder doesn’t have LinkedIn’s export files in it (Connections.csv, messages.csv and so on).");let n=t["connections.csv"]||[],r=t["messages.csv"]?(0,l.messageStats)(t["messages.csv"]):{asOf:null,people:new Map},o=t["messages.csv"]?(0,l.buildConversations)(t["messages.csv"],{keepText:$}):null,i=t["invitations.csv"]?(0,l.buildInvitations)(t["invitations.csv"],{keepText:$}):null;F.current=t["messages.csv"]||null,_.current=t["invitations.csv"]||null;let s={};for(let[e,t]of r.people)s[e]={last:t.last,lastFromThem:t.lastFromThem,total:t.total,recent:t.recent};if(m)for(let e of n){let t=e["email address"];if(!t)continue;let n=(0,c.keyFor)({profile_url:e.url});s[n]={...s[n]||{},email:t}}let a=r.asOf||Date.now(),d={asOf:a,people:s,conversations:o?o.conversations.map(l.conversationSummary):[],chapters:(0,l.careerChapters)(t["positions.csv"]||[],n,a),posts:t["shares.csv"]?(0,l.postingEffect)(t["shares.csv"],n):null,invites:t["invitations.csv"]?(0,l.invitationSplit)(t["invitations.csv"]):null,invitations:(i||[]).map(({note:e,...t})=>t),names:o?o.names:{},emails:m},p=await fetch("/api/social",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(d)});if(!p.ok)throw Error((await p.json().catch(()=>({}))).error||"It couldn’t be saved.");o&&$&&await ee(o.conversations),i&&$&&await et(i);let g=o?[o.drafts?`${o.drafts.toLocaleString()} unsent ${1===o.drafts?"draft":"drafts"} left out`:"",o.skipped?`${o.skipped.toLocaleString()} ${1===o.skipped?"row":"rows"} with no conversation or date left out`:""].filter(Boolean):[];v({good:!0,text:`Read ${Object.keys(t).length} of LinkedIn’s files: ${r.people.size.toLocaleString()} people you’ve messaged one to one`+(o?`, ${o.conversations.length.toLocaleString()} conversations${$?", their messages kept on this computer":""}`:"")+(i?`, ${i.length.toLocaleString()} connection requests`:"")+`.${g.length?` (${g.join("; ")}.)`:""}`}),await L()}catch(e){v({good:!1,text:e.message})}finally{k(!1)}}async function W(e=!1){v(null);try{let t=await (0,p.runScrape)(e?"messages-full":"messages");v(t?.exitCode===0?{good:!0,text:e?"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 L()}catch(e){v({good:!1,text:e.message})}}async function E(e){await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({autoSync:e})}),L()}async function D(e){if(e||window.confirm("Delete the messages kept on this computer? The list of conversations stays; the messages themselves are deleted.")){C(!0),v(null);try{if(e||await fetch("/api/social/messages",{method:"DELETE"}),!(await fetch("/api/social",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({keepMessages:e})})).ok)throw Error("The switch couldn’t be saved.");e&&(F.current||_.current)?(F.current&&await ee((0,l.buildConversations)(F.current,{keepText:!0}).conversations),_.current&&await et((0,l.buildInvitations)(_.current,{keepText:!0})),v({good:!0,text:"Your messages are kept on this computer now."})):e?v({good:!0,text:"On. Choose your export folder again, or sync your messages, to bring the messages in."}):v({good:!0,text:"Off. The kept messages are deleted."})}catch(e){v({good:!1,text:e.message})}finally{C(!1),L()}}}async function M(){await fetch("/api/social",{method:"DELETE"}),F.current=null,_.current=null;let e="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"}),O(e=>e+1),e+=" Your CRM notes are deleted too."):e+=" Your CRM notes are kept.",v({good:!0,text:e}),L()}(0,n.useEffect)(()=>{L()},[]),(0,n.useEffect)(()=>(0,p.watchScanner)(()=>S((0,p.scannerNow)())),[]),(0,n.useEffect)(()=>{if(!r)return;let e=!0;return(0,a.loadNetwork)(r).then(t=>{e&&x(t)}).catch(()=>{}),()=>{e=!1}},[r]);let{merged:N,asOf:P}=(0,n.useMemo)(()=>(0,d.mergeSocial)(o),[o]),U=(0,n.useMemo)(()=>{let e={warm:0,cool:0,dormant:0,never:0};for(let t of u?.degree1||[])e[(0,l.warmthOf)(N.get((0,c.keyFor)(t)),P)]+=1;return e},[u,N,P]);if(h.IS_DEMO)return(0,t.jsx)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-3, #aaa)",padding:40,fontFamily:g.FONT},children:"Not part of the demo."});let q=j?.running,Y={padding:"12px 14px",borderRadius:8,border:g.LINE,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",marginTop:10},H={fontSize:16,margin:"24px 0 6px"};return(0,t.jsxs)("div",{style:e?{color:"var(--sd-fg-1, #fff)",fontFamily:g.FONT}:{minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:g.FONT},children:[!e&&(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:g.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(i.default,{href:"/",style:{color:"var(--sd-fg-3, #888)",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:g.LINE},children:"← Back to Map"}),(0,t.jsxs)("h1",{style:{fontSize:22,fontWeight:700,margin:0,color:"var(--sd-gold, #FFD700)"},children:["Social ",(0,t.jsx)("span",{style:{fontSize:12,color:"var(--sd-fg-3, #8b9a9a)",fontWeight:600},children:"experimental"})]})]}),(0,t.jsxs)("main",{style:{maxWidth:1180,margin:"0 auto",padding:"8px 16px 64px"},children:[(0,t.jsxs)(g.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,t.jsx)("i",{children:"Keep my messages"})," below."]}),(0,t.jsx)("h2",{style:H,children:"Your LinkedIn export"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(g.Body,{style:{margin:0},children:["On LinkedIn: ",(0,t.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,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",marginTop:10},children:[(0,t.jsx)("input",{type:"checkbox",checked:m,onChange:e=>y(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Also keep email addresses from it, on this computer only, for one-click email."})]}),(0,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsxs)("label",{style:{padding:"7px 14px",borderRadius:8,background:"rgba(52,152,219,0.18)",color:"var(--sd-fg-1, #cfe6f7)",cursor:w?"default":"pointer",fontSize:13},children:[w?"Reading…":o?"Choose a newer export":"Choose the export folder",(0,t.jsx)("input",{type:"file",webkitdirectory:"",directory:"",multiple:!0,disabled:w,style:{display:"none"},onChange:e=>B(e.target.files)})]}),o&&(0,t.jsxs)("span",{style:{fontSize:12,color:"var(--sd-fg-3, #8b9a9a)"},children:["From an export up to ",Z(o.asOf),o.liveAt?` \xb7 messages synced ${Z(Date.parse(o.liveAt))}`:""]}),o&&(0,t.jsx)("button",{onClick:M,style:{background:"none",border:"none",color:"var(--sd-fg-2, #ff9b9b)",cursor:"pointer",fontSize:12},children:"Forget it"})]})]}),(0,t.jsxs)("h2",{style:H,children:["Live messages sync ",(0,t.jsx)("span",{style:{fontSize:11,color:"var(--sd-gold, #FFD700)"},children:"experimental"})]}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)(g.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,t.jsx)("i",{children:"Keep my messages"})," is on. The daily sync reads the top of the list; ",(0,t.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,t.jsxs)("div",{style:{marginTop:10,display:"flex",gap:12,alignItems:"center",flexWrap:"wrap"},children:[(0,t.jsx)("button",{onClick:()=>W(!1),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:"none",background:q?"#333":"rgba(0,255,136,0.15)",color:q?"var(--sd-fg-4, #777)":"var(--sd-green, #00ff88)",cursor:q?"default":"pointer",fontSize:13},children:q?"The scanner is busy":"Sync messages now"}),(0,t.jsx)("button",{onClick:()=>W(!0),disabled:q,style:{padding:"7px 14px",borderRadius:8,border:g.LINE,background:"none",color:q?"var(--sd-fg-4, #777)":"var(--sd-fg-1, #cfe6f7)",cursor:q?"default":"pointer",fontSize:13},children:"Read my whole history"}),(0,t.jsxs)("label",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)"},children:[(0,t.jsx)("input",{type:"checkbox",checked:o?.autoSync===!0,onChange:e=>E(e.target.checked)}),"Once a day while the app is open (daytime only)"]})]})]}),b&&(0,t.jsx)("div",{style:{marginTop:10,fontSize:13,color:b.good?"var(--sd-green, #00ff88)":"var(--sd-fg-2, #ff9b9b)"},children:b.text}),(0,t.jsx)("h2",{style:H,children:"People"}),(0,t.jsx)(A,{net:u,asOf:o?P:null,keep:$,onKeep:D,switching:T||w,token:z,crmToken:I}),o&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Warmth"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(160px, 1fr))",gap:10},children:Object.entries(X).map(([e,[n,r]])=>(0,t.jsxs)("div",{style:{...Y,marginTop:0},children:[(0,t.jsx)("div",{style:{fontSize:22,fontWeight:700,color:r},children:(U[e]||0).toLocaleString()}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)"},children:n})]},e))}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #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."}),o.chapters?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Career chapters"}),(0,t.jsx)("div",{style:{...Y,padding:0},children:o.chapters.map(e=>{let n=(e.people||[]).filter(e=>["warm","cool"].includes((0,l.warmthOf)(N.get((0,c.keyFor)({profile_url:e})),P))).length;return(0,t.jsxs)("div",{style:{display:"flex",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)",fontSize:13,alignItems:"baseline"},children:[(0,t.jsxs)("span",{style:{flex:1},children:[(0,t.jsx)("b",{children:e.company})," ",(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[e.title," · ",new Date(e.from).getFullYear(),"–",e.to?new Date(e.to).getFullYear():"now"]})]}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-2, #b8c4c4)"},children:[e.made.toLocaleString()," connections made"]}),(0,t.jsx)("span",{style:{color:"#ff9f43",minWidth:90,textAlign:"right"},children:e.made?`${Math.round(100*n/e.made)}% still in touch`:""})]},`${e.company}-${e.from}`)})})]}),o.posts?.posts?.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Does posting work?"}),(0,t.jsxs)("div",{style:Y,children:[(0,t.jsxs)("div",{style:{fontSize:13},children:["In the week after a post you made ",(0,t.jsx)("b",{children:o.posts.afterPosts.toFixed(1)})," new connections on average; a usual week, ",(0,t.jsx)("b",{children:o.posts.usualWeek.toFixed(1)}),"."]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-4, #778)",marginTop:4},children:"What came after a post, not proof it came from it."}),[...o.posts.posts].sort((e,t)=>t.week-e.week).slice(0,3).map(e=>(0,t.jsxs)("div",{style:{fontSize:12.5,color:"var(--sd-fg-2, #b8c4c4)",marginTop:6},children:[Z(e.t),": ",e.week," new connections that week ",e.link?(0,t.jsx)("a",{href:e.link,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Post ↗"}):null]},e.t))]})]}),o.invites?.total>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h2",{style:H,children:"Who reaches out"}),(0,t.jsx)("div",{style:Y,children:(0,t.jsxs)("span",{style:{fontSize:13},children:[o.invites.incoming.toLocaleString()," requests came to you and you sent ",o.invites.outgoing.toLocaleString()," ","(",Math.round(100*o.invites.incoming/o.invites.total),"% came to you), as far as your export shows."]})})]})]})]})]})}var er=e.i(99883),eo=e.i(48235);let ei={S:25,A:15,B:10,C:5,D:2},es={S:100,A:60,B:35,C:15,D:5};var ea=e.i(46949),el=e.i(36774),ed=e.i(46090);let ec=I.TIER_COLORS,ep="1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)";function eg({person:e,size:n=36,ring:r}){let o=ec[e?.tier]||"#667";return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n,flexShrink:0},children:[(0,t.jsx)("div",{style:{width:n,height:n,borderRadius:"50%",background:o,color:e?.tier==="S"?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:.34*n,fontWeight:800,border:`2px solid ${r||o}`},children:(0,ea.initialsFor)(e?.name||"?")}),(0,el.localPhoto)(e?.profile_image_url)&&(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",onError:e=>{e.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:n,height:n,borderRadius:"50%",objectFit:"cover",border:`2px solid ${r||o}`}})]})}function eh({progress:e,size:n=86,color:r="#FF6B35",children:o}){let i=n/2-5,s=2*Math.PI*i;return(0,t.jsxs)("div",{style:{position:"relative",width:n,height:n},children:[(0,t.jsxs)("svg",{width:n,height:n,style:{position:"absolute",inset:0,transform:"rotate(-90deg)"},children:[(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",strokeWidth:5}),(0,t.jsx)("circle",{cx:n/2,cy:n/2,r:i,fill:"none",stroke:r,strokeWidth:5,strokeLinecap:"round",strokeDasharray:`${s*Math.min(1,e)} ${s}`,style:{transition:"stroke-dasharray 0.5s ease"}})]}),(0,t.jsx)("div",{style:{position:"absolute",inset:9,display:"flex",alignItems:"center",justifyContent:"center"},children:o})]})}function ef({recs:e,sentIds:r,added:o,mappedIds:s,reach:a,onSend:l,onUndo:d,canAuto:c=!1}){let p=(0,n.useMemo)(()=>(function({recs:e=[],sentIds:t=new Set,added:n=[],mappedIds:r=new Set,reach:o=null}){var i;let s,a,l,d=new Map,c=new Set;for(let t of[...e].sort((e,t)=>(t.priority||0)-(e.priority||0))){if(!t.bridge)continue;let e=`${t.bridge.id}|${t.profile_url||t.id}`;if(c.has(e))continue;c.add(e);let n=d.get(t.bridge.id);n||(n={bridge:t.bridge,people:[]},d.set(t.bridge.id,n)),n.people.push(t)}let p=new Map;for(let e of n){let t=e.unlocked_from_bridge_id;t&&p.set(t,[...p.get(t)||[],e])}let g=[],h=0,f=0;for(let{bridge:e,people:n}of d.values()){let r=n.filter(e=>t.has(e.id)),o=p.get(e.id)||[];f+=r.length,h+=r.reduce((e,t)=>e+(ei[t.tier]||2),0),h+=o.reduce((e,t)=>e+(es[t.tier]||5),0);let i=Math.ceil(n.length/5)||1,s=0;for(;s<i-1&&n.slice(5*s,(s+1)*5).every(e=>t.has(e.id));)s++;let a=n.slice(5*s,(s+1)*5),l=a.filter(e=>t.has(e.id)).length,d=l===a.length&&s===i-1;g.push({bridge:e,people:n,stage:s+1,stages:i,targets:a,done:l,progress:a.length?l/a.length:1,complete:d,sent:r.length,added:o,value:a.filter(e=>!t.has(e.id)).reduce((e,t)=>e+(t.priority||0),0),open:{S:a.filter(e=>"S"===e.tier&&!t.has(e.id)).length,A:a.filter(e=>"A"===e.tier&&!t.has(e.id)).length}})}g.sort((e,t)=>e.complete-t.complete||(t.progress>0&&t.progress<1)-(e.progress>0&&e.progress<1)||t.progress-e.progress||t.value-e.value);let u=g.filter(e=>!e.complete).flatMap(e=>e.targets.filter(e=>!t.has(e.id)).map(t=>({person:t,cluster:e,score:(t.priority||0)*(1+.6*e.progress)}))).sort((e,t)=>t.score-e.score),x=new Set,m=[];for(let e of u){let t=e.person.profile_url||e.person.id;if(!x.has(t)&&(x.add(t),m.push(e),3===m.length))break}let y=n.filter(e=>e.unlocked_from_bridge_id).length;return{clusters:g,nextMoves:m,points:h,level:(a=((s=Math.floor(Math.sqrt(Math.max(0,i=h)/40))+1)-1)**2*40,l=s**2*40,{level:s,floor:a,next:l,progress:(i-a)/(l-a)}),sentTotal:f,addedTotal:y,newDoors:n.filter(e=>e.unlocked_from_bridge_id&&"todo"===(0,eo.circleState)(e,o||{scanned:r,hidden:new Set})),clearedStages:g.reduce((e,t)=>e+(t.stage-1)+ +!!t.complete,0)}})({recs:e,sentIds:r,added:o,mappedIds:s,reach:a}),[e,r,o,s,a]),[g,h]=(0,n.useState)(null),[f,u]=(0,n.useState)(null),{level:x}=p;async function m(e,t){await l(e),y(e,t)}function y(e,t){let n=t.done+1,r=String(t.bridge.name||"").split(/[\s,]+/)[0];u(n>=t.targets.length?`+${ei[e.tier]||2} \xb7 Stage ${t.stage} of ${r}'s circle cleared. The next 5 are up`:`+${ei[e.tier]||2} \xb7 ${r}'s circle ${n}/${t.targets.length}`),setTimeout(()=>u(null),3500)}let b=p.clusters.find(e=>e.bridge.id===g);return(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto",padding:"16px 20px 60px"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:16,alignItems:"center",flexWrap:"wrap",padding:16,borderRadius:12,border:ep,background:"linear-gradient(135deg, rgba(255,107,53,0.10), rgba(155,89,182,0.08))"},children:[(0,t.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,t.jsx)("div",{style:{fontSize:10,fontWeight:800},children:"LEVEL"}),(0,t.jsx)("div",{style:{fontSize:26,fontWeight:900,lineHeight:1},children:x.level})]}),(0,t.jsxs)("div",{style:{flex:1,minWidth:220},children:[(0,t.jsxs)("div",{style:{fontSize:13,color:"var(--sd-fg-1, #dfe6e9)"},children:[(0,t.jsx)("b",{children:p.points})," points · ",(0,t.jsx)("b",{children:x.next-p.points})," to level ",x.level+1]}),(0,t.jsx)("div",{style:{height:8,borderRadius:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",marginTop:6,overflow:"hidden"},children:(0,t.jsx)("div",{style:{height:"100%",width:`${Math.round(100*x.progress)}%`,background:"linear-gradient(90deg, #FFD700, #FF6B35)",transition:"width 0.5s"}})}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:6},children:"Points come from invites you send and people who accept, not from browsing."})]}),[[p.sentTotal,"invites sent"],[p.addedTotal,"people added"],[p.clearedStages,"stages cleared"]].map(([e,n])=>(0,t.jsxs)("div",{style:{textAlign:"center",minWidth:80},children:[(0,t.jsx)("div",{style:{fontSize:24,fontWeight:900},children:e}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)"},children:n})]},n))]}),p.newDoors.length>0&&(0,t.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,t.jsxs)("b",{children:[p.newDoors.length," new ",1===p.newDoors.length?"door":"doors",":"]})," people you added through a circle, whose own circle isn’t mapped yet. That’s the next degree. ",(0,t.jsx)(i.default,{href:"/setup",style:{color:"var(--sd-green, #00ff88)"},children:"Map them on the Scan page →"})]}),p.nextMoves.length>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("h3",{style:{margin:"22px 0 10px",fontSize:15},children:"Next best moves"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(300px, 1fr))",gap:12},children:p.nextMoves.map(({person:e,cluster:n},r)=>(0,t.jsxs)("div",{style:{padding:14,borderRadius:12,border:`1px solid ${ec[e.tier]}55`,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",position:"relative"},children:[(0,t.jsxs)("div",{style:{position:"absolute",top:10,right:12,fontSize:11,fontWeight:800,color:"var(--sd-orange, #FF6B35)"},children:["#",r+1]}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[(0,t.jsx)(eg,{person:e,size:44}),(0,t.jsxs)("div",{style:{minWidth:0},children:[(0,t.jsx)("div",{style:{fontWeight:700,fontSize:14},children:e.name}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:220},children:e.headline})]})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-2, #aab7b7)",margin:"10px 0"},children:["via ",(0,t.jsx)("b",{style:{color:ec[n.bridge.tier]},children:n.bridge.name})," · their circle ",n.done,"/",n.targets.length," this stage"]}),(0,t.jsx)(ed.default,{person:e,canAuto:c,size:"quest",onSent:e=>y(e,n),connect:r=>{let o=(0,t.jsxs)(t.Fragment,{children:[e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:ex,children:"Open on LinkedIn"}),(0,t.jsxs)("button",{onClick:()=>m(e,n),style:r?ex:eu,children:["I sent an invite · +",ei[e.tier]||2]})]});return r?o:(0,t.jsx)("div",{style:{display:"flex",gap:8},children:o})}})]},e.id))})]}),(0,t.jsx)("h3",{style:{margin:"26px 0 4px",fontSize:15},children:"Circles to work through"}),(0,t.jsxs)("div",{style:{fontSize:12,color:"var(--sd-fg-3, #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,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:12},children:p.clusters.map(e=>{let n=g===e.bridge.id;return(0,t.jsxs)("button",{onClick:()=>h(n?null:e.bridge.id),style:{padding:12,borderRadius:12,cursor:"pointer",textAlign:"center",color:"var(--sd-fg-1, #fff)",border:n?"1px solid #FF6B35":ep,background:e.complete?"rgba(0,255,136,0.06)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)",display:"flex",flexDirection:"column",alignItems:"center",gap:6},children:[(0,t.jsx)(eh,{progress:e.progress,color:e.complete?"#00ff88":"#FF6B35",children:(0,t.jsx)(eg,{person:e.bridge,size:60})}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:13,maxWidth:170,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.bridge.name}),(0,t.jsx)("div",{style:{fontSize:11,color:e.complete?"var(--sd-green, #00ff88)":"var(--sd-fg-2, #aab7b7)"},children:e.complete?"Circle cleared":`Stage ${e.stage} of ${e.stages} \xb7 ${e.done}/${e.targets.length}`}),(0,t.jsx)("div",{style:{display:"flex",gap:4},children:e.targets.map(e=>(0,t.jsx)("span",{title:e.name,style:{width:12,height:12,borderRadius:"50%",border:`2px solid ${ec[e.tier]||"#667"}`,background:r.has(e.id)?ec[e.tier]||"#667":"transparent"}},e.id))}),(0,t.jsxs)("div",{style:{fontSize:10.5,color:"var(--sd-fg-4, #778)"},children:[e.open.S?`${e.open.S} S \xb7 `:"",e.open.A?`${e.open.A} A \xb7 `:"",e.people.length," worth adding",e.added.length?` \xb7 ★ ${e.added.length} added`:""]})]},e.bridge.id)})}),b&&(0,t.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,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,t.jsx)(eg,{person:b.bridge,size:40}),(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{style:{fontWeight:800},children:[b.bridge.name,"’s circle · stage ",b.stage," of ",b.stages]}),(0,t.jsxs)("div",{style:{fontSize:12,color:"var(--sd-fg-2, #aab7b7)"},children:["Ask ",b.bridge.name?.split(" ")[0]," for an intro, or invite them directly. Mark each one when it’s sent."]})]})]}),b.targets.map(e=>{let n=r.has(e.id);return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 0",borderTop:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.05)"},children:[(0,t.jsx)(eg,{person:e,size:34,ring:n?"#00ff88":void 0}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsxs)("div",{style:{fontWeight:600,fontSize:13},children:[e.name," ",(0,t.jsx)("span",{style:{color:ec[e.tier],fontSize:11},children:e.tier})]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8b9a9a)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline})]}),n?(0,t.jsxs)(t.Fragment,{children:[e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:ex,children:"LinkedIn"}),(0,t.jsx)("button",{onClick:()=>d(e),style:{...ex,color:"var(--sd-green, #00ff88)"},children:"Sent ✓ (undo)"})]}):(0,t.jsx)(ed.default,{person:e,canAuto:c,size:"quest",onSent:e=>y(e,b),connect:n=>(0,t.jsxs)(t.Fragment,{children:[e.profile_url&&(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",style:ex,children:"LinkedIn"}),(0,t.jsxs)("button",{onClick:()=>m(e,b),style:n?ex:eu,children:["Sent · +",ei[e.tier]||2]})]})})]},e.id)}),b.added.length>0&&(0,t.jsxs)("div",{style:{marginTop:10,fontSize:12,color:"var(--sd-green, #00ff88)"},children:["★ Added from this circle: ",b.added.map(e=>e.name).join(", ")]})]}),f&&(0,t.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:f})]})}let eu={padding:"7px 12px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:800,fontSize:12,background:"linear-gradient(135deg, #FF6B35, #FFD700)",color:"#000"},ex={padding:"7px 12px",borderRadius:8,border:ep,cursor:"pointer",fontWeight:600,fontSize:12,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #dfe6e9)",textDecoration:"none"};var em=e.i(2776),ey=e.i(90179),eb=e.i(28867),ev=e.i(86106);let ew={color:"#5aa9e6",line:"rgba(0,119,181,0.75)"},ek=["quest","recs","pending","messages"];function ej(){let{userId:e,userProfile:l}=(0,s.useUser)(),d=l?.sectors||[],[g,f]=(0,n.useState)([]),[u,x]=(0,n.useState)(!0),[m,y]=(0,n.useState)("all"),[b,v]=(0,n.useState)(new Set),w=(0,eb.default)(),[k,j]=(0,n.useState)([]),[S,T]=(0,n.useState)({}),C=(0,r.useSearchParams)().get("view"),[z,R]=(0,n.useState)(()=>ek.includes(C)?C:"quest"),[O,F]=(0,n.useState)([]),[_,$]=(0,n.useState)(()=>new Set),[L,B]=(0,n.useState)(null),[W,E]=(0,n.useState)(null),[D,M]=(0,n.useState)(()=>{{let e=new URLSearchParams(window.location.search);if(e.get("groupBy"))return e.get("groupBy")}return"bridge"});(0,n.useEffect)(()=>{{let e=new URLSearchParams(window.location.search).get("bridge");e&&E(e)}},[]),(0,n.useEffect)(()=>{!h.IS_DEMO&&e&&t();async function t(){let[t,n,r]=await Promise.all([(0,a.loadNetwork)(e),fetch(`/api/outreach?userId=${e}`).then(e=>e.json()).catch(()=>({pending:[]})),(0,p.loadScanNotes)()]),o=t.degree1,i=t.degree2;F(o.filter(e=>e.unlocked_from_bridge_id)),$(new Set(i.map(e=>e.source_connection_id).filter(Boolean))),B((0,eo.reachIndex)(o,i,r));let s=new Set(o.map(e=>e.profile_url)),l={};o.forEach(e=>{l[e.id]=e}),j(n.pending||[]),T(l),f(i.filter(e=>("S"===e.tier||"A"===e.tier||"B"===e.tier)&&!s.has(e.profile_url)).map(e=>{let t,n,r=l[e.source_connection_id],o=(t=parseFloat(e.power_score)||0,n=(e.headline||"").toLowerCase(),(0,ey.rowCompanyScore)(e)>=ey.TOP_COMPANY&&(t+=1),(d||[]).forEach(e=>{n.includes(e.toLowerCase())&&(t+=.5)}),"S"===e.tier?t*=1.5:"A"===e.tier&&(t*=1.2),t),i="S"===e.tier?50:"A"===e.tier?25:10;return{...e,bridge:r,priority:o,xp:i}}).sort((e,t)=>t.priority-e.priority)),x(!1)}},[e]);let A=(0,n.useMemo)(()=>new Set([...k,...g].filter(e=>(0,ev.hasRequest)(e,w)).map(e=>e.id)),[k,g,w]),N=(0,n.useMemo)(()=>{let e=new Set,t=[];for(let n of[...k,...g]){let r=(0,c.keyFor)(n);!e.has(r)&&(0,ev.hasRequest)(n,w)&&(e.add(r),t.push({...n,bridge:S[n.source_connection_id]||n.bridge||null}))}return t},[k,g,w,S]);if((0,n.useEffect)(()=>((0,er.setNotchTabs)({items:[{key:"quest",label:"Circles"},{key:"recs",label:`To add (${g.length})`},{key:"pending",label:`Pending (${N.length})`},{key:"messages",label:"Messages & follow-ups"}],current:z,onPick:R}),()=>(0,er.setNotchTabs)(null)),[z,g.length,N.length]),h.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(var(--sd-ink, 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,t.jsx)("h2",{style:{margin:0,fontSize:18,fontWeight:700,color:"var(--sd-fg-1, #fff)"},children:"Not part of the demo"}),(0,t.jsx)("div",{style:{fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(i.default,{href:"/",style:{fontSize:12,color:"rgba(var(--sd-ink, 255, 255, 255), 0.5)",textDecoration:"none"},children:"← Back to the network"})]});let P="all"===m?g:g.filter(e=>e.tier===m);W&&(P=P.filter(e=>e.bridge?.id===W));let U={S:0,A:0,B:0};g.forEach(e=>{void 0!==U[e.tier]&&U[e.tier]++});let q={};P.forEach(e=>{let t;q[t="bridge"===D?e.bridge?.id||"unknown":"company"===D?(e.company||"Unknown").trim()||"Unknown":e.tier]||(q[t]=[]),q[t].push(e)});let Y={S:0,A:1,B:2},H=Object.entries(q).sort((e,t)=>{if("tier"===D)return(Y[e[0]]||9)-(Y[t[0]]||9);if("bridge"===D){let n=e[1][0]?.bridge,r=t[1][0]?.bridge,o=Y[n?.tier]??9,i=Y[r?.tier]??9;if(o!==i)return o-i}return t[1].length-e[1].length});function K(e){v(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}return u?(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)"},children:"Loading..."}):(0,t.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsx)(o.default,{active:"outlink"}),("recs"===z||"pending"===z)&&(0,t.jsxs)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",flexShrink:0},children:[(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:10},children:(0,t.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:6},children:"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>M("tier"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"tier"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"tier"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Tier"}),(0,t.jsx)("button",{onClick:()=>M("bridge"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"bridge"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"bridge"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Bridge"}),(0,t.jsx)("button",{onClick:()=>M("company"),style:{padding:"4px 10px",borderRadius:4,border:"none",fontSize:10,fontWeight:600,cursor:"pointer",background:"company"===D?"rgba(var(--sd-ink, 255, 255, 255), 0.15)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"company"===D?"var(--sd-fg-1, #fff)":"var(--sd-fg-4, #666)"},children:"By Company"})]})})}),(0,t.jsx)("div",{style:{display:"flex",gap:6},children:[{k:"all",l:`All (${g.length})`},{k:"S",l:`S (${U.S})`,c:I.TIER_COLORS.S},{k:"A",l:`A (${U.A})`,c:I.TIER_COLORS.A},{k:"B",l:`B (${U.B})`,c:I.TIER_COLORS.B}].map(e=>(0,t.jsx)("button",{onClick:()=>y(e.k),style:{padding:"4px 12px",borderRadius:16,border:"none",fontSize:11,fontWeight:600,cursor:"pointer",background:m===e.k?e.c||"#fff":"rgba(var(--sd-ink, 255, 255, 255), 0.06)",color:m===e.k?"#000":e.c||"var(--sd-fg-3, #888)"},children:e.l},e.k))})]}),"messages"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"40px 8px 0"},children:(0,t.jsx)(en,{embedded:!0})}),"recs"===z&&b.size>0&&(0,t.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,t.jsxs)("span",{style:{fontSize:12,color:"var(--sd-gold, #FFD700)",fontWeight:600},children:[b.size," selected"]}),(0,t.jsxs)("button",{onClick:function(){let e=P.filter(e=>b.has(e.id));if(0===e.length)return;if(1===e.length)return void window.open(e[0].profile_url,"_blank");let t=new Blob([`<!DOCTYPE html><html><head><title>Outlink \xb7 ${e.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(var(--sd-ink, 255, 255, 255), 0.06);
@@ -13,7 +13,7 @@
13
13
  <button class="open-all" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
14
14
  Open All (${e.length})</button>
15
15
  ${e.map(e=>{let t="S"===e.tier?"#FFD700":"A"===e.tier?"#9B59B6":"#3498DB";return'<a class="btn" href="'+e.profile_url+'" target="_blank"><span class="name">'+(e.name||"")+'</span><span class="tier" style="color:'+t+'">'+e.tier+" · "+parseFloat(e.power_score||0).toFixed(1)+'</span><br><span style="color:#666;font-size:11px">'+(e.headline||"").substring(0,60)+"</span></a>"}).join("")}
16
- </body></html>`],{type:"text/html"});window.open(URL.createObjectURL(t),"_blank")},style:{padding:"6px 16px",borderRadius:6,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontWeight:700,fontSize:12},children:["Open ",b.size," on LinkedIn"]}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--sd-fg-3, #888)"},children:["+",P.filter(e=>b.has(e.id)).reduce((e,t)=>e+t.xp,0)," XP potential"]}),(0,t.jsx)("button",{onClick:()=>v(new Set),style:{marginLeft:"auto",background:"none",border:"none",color:"var(--sd-fg-3, #888)",cursor:"pointer",fontSize:11},children:"Clear"})]}),"quest"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto"},children:(0,t.jsx)(eh,{recs:g,sentIds:N,added:O,mappedIds:_,reach:L,onSend:e=>(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{}),onUndo:e=>(0,eb.undoRequest)(e).catch(()=>{})})}),("recs"===z||"pending"===z)&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"12px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:["pending"===z&&(0,t.jsx)(t.Fragment,{children:0===A.length?(0,t.jsxs)("div",{style:{textAlign:"center",padding:40,color:"var(--sd-fg-5, #555)"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"⏳"}),(0,t.jsx)("div",{style:{fontSize:14,fontWeight:600},children:"No pending requests"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-5, #444)",marginTop:4},children:'Click "Add" on someone to track your outreach'})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{fontSize:10,color:"var(--sd-fg-4, #666)",marginBottom:12},children:"Waiting for response. When they accept, their cluster unlocks for bridging."}),A.map(e=>(0,t.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,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`2px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",flexShrink:0,fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:600},children:e.name}),(0,t.jsx)("div",{style:{fontSize:10,color:"var(--sd-fg-3, #888)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,55)}),e.bridge&&(0,t.jsxs)("div",{style:{fontSize:9,color:"var(--sd-orange, #FF6B35)",marginTop:2},children:["via ",e.bridge.name?.split(" ")[0]," · unlocks bridge cluster"]})]}),(0,t.jsxs)("div",{style:{textAlign:"center",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:10,fontWeight:800,color:I.TIER_COLORS[e.tier],padding:"2px 8px",borderRadius:4,background:`${I.TIER_COLORS[e.tier]||"#555"}15`},children:e.tier}),(0,t.jsx)("div",{style:{fontSize:8,color:"var(--sd-orange, #FF6B35)",marginTop:2,fontWeight:600},children:"PENDING"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,t.jsx)("a",{href:e.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,t.jsx)("button",{onClick:()=>{(0,eb.undoRequest)(e).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",color:"var(--sd-fg-4, #666)",border:"none",cursor:"pointer"},children:"Undo"})]})]},e.id))]})}),"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.size===P.length&&P.length>0,onChange:function(){b.size===P.length?v(new Set):v(new Set(P.map(e=>e.id)))},style:{cursor:"pointer"}}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--sd-fg-4, #666)"},children:["Select all (",P.length,")"]})]}),H.map(([e,n])=>(0,t.jsxs)("div",{style:{marginBottom:16},children:["bridge"===D?(()=>{let e=n[0]?.bridge;if(!e)return null;let r=n.filter(e=>"S"===e.tier).length,o=n.filter(e=>"A"===e.tier).length,i=n.filter(e=>"B"===e.tier).length,s=3*r+2*o+i;return(0,t.jsxs)("div",{style:{padding:"10px 12px",marginBottom:6,borderRadius:8,background:`${I.TIER_COLORS[e.tier]||"#555"}08`,border:`1px solid ${I.TIER_COLORS[e.tier]||"#555"}20`},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",border:`2px solid ${I.TIER_COLORS[e.tier]}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier],color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--sd-fg-1, #fff)"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"var(--sd-fg-3, #888)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),(0,t.jsxs)("div",{style:{textAlign:"right",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:800,color:I.TIER_COLORS[e.tier]},children:e.tier}),(0,t.jsxs)("div",{style:{fontSize:8,color:"var(--sd-fg-4, #666)"},children:[n.length," to add"]})]})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:4,fontSize:9},children:[r>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-gold, #FFD700)",fontWeight:700},children:[r,"S"]}),o>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-purple, #9B59B6)",fontWeight:700},children:[o,"A"]}),i>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-blue, #3498DB)",fontWeight:700},children:[i,"B"]})]}),(0,t.jsx)("div",{style:{flex:1,height:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",borderRadius:2},children:(0,t.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${Math.min(100,s/30*100)}%`,background:`linear-gradient(90deg, ${I.TIER_COLORS[e.tier]}, #FF6B35)`}})}),(0,t.jsxs)("button",{onClick:()=>{let e=n.map(e=>e.profile_url);if(1===e.length)return void window.open(e[0],"_blank");let t=`<!DOCTYPE html><html><head><title>Top ${Math.min(10,e.length)}</title>
16
+ </body></html>`],{type:"text/html"});window.open(URL.createObjectURL(t),"_blank")},style:{padding:"6px 16px",borderRadius:6,border:"none",cursor:"pointer",background:"#0077B5",color:"#fff",fontWeight:700,fontSize:12},children:["Open ",b.size," on LinkedIn"]}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--sd-fg-3, #888)"},children:["+",P.filter(e=>b.has(e.id)).reduce((e,t)=>e+t.xp,0)," XP potential"]}),(0,t.jsx)("button",{onClick:()=>v(new Set),style:{marginLeft:"auto",background:"none",border:"none",color:"var(--sd-fg-3, #888)",cursor:"pointer",fontSize:11},children:"Clear"})]}),"quest"===z&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto"},children:(0,t.jsx)(ef,{recs:g,sentIds:A,added:O,mappedIds:_,reach:L,onSend:e=>(0,ev.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{}),onUndo:e=>(0,ev.undoRequest)(e).catch(()=>{}),canAuto:!h.IS_DEMO})}),("recs"===z||"pending"===z)&&(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"12px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:["pending"===z&&(0,t.jsx)(t.Fragment,{children:0===N.length?(0,t.jsxs)("div",{style:{textAlign:"center",padding:40,color:"var(--sd-fg-5, #555)"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:8},children:"⏳"}),(0,t.jsx)("div",{style:{fontSize:14,fontWeight:600},children:"No pending requests"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-5, #444)",marginTop:4},children:'Click "Add" on someone to track your outreach'})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{fontSize:10,color:"var(--sd-fg-4, #666)",marginBottom:12},children:"Waiting for response. When they accept, their cluster unlocks for bridging."}),N.map(e=>(0,t.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,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`2px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",flexShrink:0,fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:600},children:e.name}),(0,t.jsx)("div",{style:{fontSize:10,color:"var(--sd-fg-3, #888)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,55)}),e.bridge&&(0,t.jsxs)("div",{style:{fontSize:9,color:"var(--sd-orange, #FF6B35)",marginTop:2},children:["via ",e.bridge.name?.split(" ")[0]," · unlocks bridge cluster"]})]}),(0,t.jsxs)("div",{style:{textAlign:"center",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:10,fontWeight:800,color:I.TIER_COLORS[e.tier],padding:"2px 8px",borderRadius:4,background:`${I.TIER_COLORS[e.tier]||"#555"}15`},children:e.tier}),(0,t.jsx)("div",{style:{fontSize:8,color:"var(--sd-orange, #FF6B35)",marginTop:2,fontWeight:600},children:"PENDING"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:4,flexShrink:0},children:[(0,t.jsx)("a",{href:e.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,t.jsx)("button",{onClick:()=>{(0,ev.undoRequest)(e).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",color:"var(--sd-fg-4, #666)",border:"none",cursor:"pointer"},children:"Undo"})]})]},e.id))]})}),"recs"===z&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:8},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.size===P.length&&P.length>0,onChange:function(){b.size===P.length?v(new Set):v(new Set(P.map(e=>e.id)))},style:{cursor:"pointer"}}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--sd-fg-4, #666)"},children:["Select all (",P.length,")"]})]}),H.map(([e,n])=>(0,t.jsxs)("div",{style:{marginBottom:16},children:["bridge"===D?(()=>{let e=n[0]?.bridge;if(!e)return null;let r=n.filter(e=>"S"===e.tier).length,o=n.filter(e=>"A"===e.tier).length,i=n.filter(e=>"B"===e.tier).length,s=3*r+2*o+i;return(0,t.jsxs)("div",{style:{padding:"10px 12px",marginBottom:6,borderRadius:8,background:`${I.TIER_COLORS[e.tier]||"#555"}08`,border:`1px solid ${I.TIER_COLORS[e.tier]||"#555"}20`},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:36,height:36,borderRadius:"50%",objectFit:"cover",border:`2px solid ${I.TIER_COLORS[e.tier]}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:36,height:36,borderRadius:"50%",fontSize:14,fontWeight:700,background:I.TIER_COLORS[e.tier],color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"var(--sd-fg-1, #fff)"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"var(--sd-fg-3, #888)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),(0,t.jsxs)("div",{style:{textAlign:"right",flexShrink:0},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:800,color:I.TIER_COLORS[e.tier]},children:e.tier}),(0,t.jsxs)("div",{style:{fontSize:8,color:"var(--sd-fg-4, #666)"},children:[n.length," to add"]})]})]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:8},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:4,fontSize:9},children:[r>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-gold, #FFD700)",fontWeight:700},children:[r,"S"]}),o>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-purple, #9B59B6)",fontWeight:700},children:[o,"A"]}),i>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-blue, #3498DB)",fontWeight:700},children:[i,"B"]})]}),(0,t.jsx)("div",{style:{flex:1,height:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",borderRadius:2},children:(0,t.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${Math.min(100,s/30*100)}%`,background:`linear-gradient(90deg, ${I.TIER_COLORS[e.tier]}, #FF6B35)`}})}),(0,t.jsxs)("button",{onClick:()=>{let e=n.map(e=>e.profile_url);if(1===e.length)return void window.open(e[0],"_blank");let t=`<!DOCTYPE html><html><head><title>Top ${Math.min(10,e.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(var(--sd-ink, 255, 255, 255), 0.06);
19
19
  border:1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1);border-radius:6px;color:#fff;text-decoration:none;font-size:12px}
@@ -31,4 +31,4 @@
31
31
  font-weight:700;font-size:13px;cursor:pointer;border:none;margin-bottom:16px}</style></head>
32
32
  <body><h3 style="color:${I.TIER_COLORS[e]}">${e}-Tier (${r.length})</h3>
33
33
  <button class="oa" onclick="document.querySelectorAll('.btn').forEach((a,i)=>setTimeout(()=>a.click(),i*300))">
34
- Open All</button>${r.map(e=>'<a class="btn" href="'+e.profile_url+'" target="_blank">'+e.name+" · "+parseFloat(e.power_score||0).toFixed(1)+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([t],{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 ",e]})]}),r.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px 5px 16px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.02)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:28,height:28,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:28,height:28,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:8,color:"var(--sd-fg-4, #666)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,45)})]}),(0,t.jsx)("span",{style:{fontSize:9,fontWeight:700,color:I.TIER_COLORS[e.tier],flexShrink:0},children:parseFloat(e.power_score||0).toFixed(1)}),N.has(e.id)?(0,t.jsx)("span",{style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"var(--sd-orange, #FF6B35)",flexShrink:0},children:"Sent"}):(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},e.id))]},e)}):n.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.03)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:32,height:32,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none",e.target.nextSibling.style.display="flex"}}):null,(0,t.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",flexShrink:0,fontSize:12,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:(0,el.localPhoto)(e.profile_image_url)?"none":"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"var(--sd-fg-4, #666)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),e.bridge&&(0,t.jsxs)("span",{style:{fontSize:8,color:"var(--sd-fg-5, #555)",flexShrink:0,maxWidth:60,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",e.bridge.name?.split(" ")[0]]}),(0,t.jsx)("div",{style:{textAlign:"right",flexShrink:0,minWidth:32},children:(0,t.jsx)("div",{style:{fontSize:10,fontWeight:700,color:I.TIER_COLORS[e.tier]},children:parseFloat(e.power_score).toFixed(1)})}),N.has(e.id)?(0,t.jsx)("span",{style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"var(--sd-orange, #FF6B35)",flexShrink:0},children:"⏳ Sent"}):(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,eb.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]},e.id))]},e))]})]})})]})}e.s(["default",0,function(){return(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(ex.default,{children:(0,t.jsx)(ew,{})})})}],77305)}]);
34
+ Open All</button>${r.map(e=>'<a class="btn" href="'+e.profile_url+'" target="_blank">'+e.name+" · "+parseFloat(e.power_score||0).toFixed(1)+"</a>").join("")}</body></html>`;window.open(URL.createObjectURL(new Blob([t],{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 ",e]})]}),r.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 8px 5px 16px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.02)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:28,height:28,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("div",{style:{width:28,height:28,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:8,color:"var(--sd-fg-4, #666)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,45)})]}),(0,t.jsx)("span",{style:{fontSize:9,fontWeight:700,color:I.TIER_COLORS[e.tier],flexShrink:0},children:parseFloat(e.power_score||0).toFixed(1)}),A.has(e.id)?(0,t.jsx)("span",{style:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"var(--sd-orange, #FF6B35)",flexShrink:0},children:"Sent"}):(0,t.jsx)(ed.default,{person:e,canAuto:!h.IS_DEMO,size:"row",connect:n=>(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,ev.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:n?{...(0,ed.secondaryLook)("row",ew),padding:"3px 6px",fontSize:8}:{padding:"3px 6px",borderRadius:3,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})})]},e.id))]},e)}):n.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.03)",background:b.has(e.id)?"rgba(255,215,0,0.05)":"transparent",cursor:"pointer"},onMouseEnter:t=>{b.has(e.id)||(t.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)")},onMouseLeave:t=>{b.has(e.id)||(t.currentTarget.style.background="transparent")},children:[(0,t.jsx)("input",{type:"checkbox",checked:b.has(e.id),onChange:()=>K(e.id),onClick:e=>e.stopPropagation(),style:{cursor:"pointer",flexShrink:0}}),(0,el.localPhoto)(e.profile_image_url)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url),alt:"",style:{width:32,height:32,borderRadius:"50%",objectFit:"cover",flexShrink:0,border:`1.5px solid ${I.TIER_COLORS[e.tier]||"#555"}`},onError:e=>{e.target.style.display="none",e.target.nextSibling.style.display="flex"}}):null,(0,t.jsx)("div",{style:{width:32,height:32,borderRadius:"50%",flexShrink:0,fontSize:12,fontWeight:700,background:I.TIER_COLORS[e.tier]||"#555",color:"S"===e.tier?"#000":"var(--sd-fg-1, #fff)",display:(0,el.localPhoto)(e.profile_image_url)?"none":"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},onClick:()=>K(e.id),children:[(0,t.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:9,color:"var(--sd-fg-4, #666)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,50)})]}),e.bridge&&(0,t.jsxs)("span",{style:{fontSize:8,color:"var(--sd-fg-5, #555)",flexShrink:0,maxWidth:60,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",e.bridge.name?.split(" ")[0]]}),(0,t.jsx)("div",{style:{textAlign:"right",flexShrink:0,minWidth:32},children:(0,t.jsx)("div",{style:{fontSize:10,fontWeight:700,color:I.TIER_COLORS[e.tier]},children:parseFloat(e.power_score).toFixed(1)})}),A.has(e.id)?(0,t.jsx)("span",{style:{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.15)",color:"var(--sd-orange, #FF6B35)",flexShrink:0},children:"⏳ Sent"}):(0,t.jsx)(ed.default,{person:e,canAuto:!h.IS_DEMO,size:"row",connect:n=>(0,t.jsx)("a",{href:e.profile_url,target:"_blank",rel:"noopener noreferrer",onClick:t=>{t.stopPropagation(),(0,ev.markRequested)(e,{bridgeId:e.source_connection_id}).catch(()=>{})},style:n?(0,ed.secondaryLook)("row",ew):{padding:"4px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})})]},e.id))]},e))]})]})})]})}e.s(["default",0,function(){return(0,t.jsx)(n.Suspense,{fallback:null,children:(0,t.jsx)(em.default,{children:(0,t.jsx)(ej,{})})})}],77305)}]);