six-degrees 0.6.0 → 0.7.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 (557) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +3 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +14 -14
  5. package/.next/standalone/.next/routes-manifest.json +18 -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 +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +26 -18
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +26 -18
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +25 -16
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js +2 -2
  20. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/admin-update/route.js +2 -2
  22. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/bridges/route.js +2 -2
  24. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/bulk-import/route.js +2 -2
  26. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +3 -3
  28. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/company-scores/route.js +3 -3
  30. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/connections/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/data/backup/route/app-paths-manifest.json +3 -0
  34. package/.next/standalone/.next/server/app/api/data/backup/route/build-manifest.json +12 -0
  35. package/.next/standalone/.next/server/app/api/data/backup/route/server-reference-manifest.json +4 -0
  36. package/.next/standalone/.next/server/app/api/data/backup/route.js +7 -0
  37. package/.next/standalone/.next/server/app/api/data/backup/route.js.map +5 -0
  38. package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -0
  39. package/.next/standalone/.next/server/app/api/data/backup/route_client-reference-manifest.js +3 -0
  40. package/.next/standalone/.next/server/app/api/data/csv/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/.next/server/app/api/data/csv/route/build-manifest.json +12 -0
  42. package/.next/standalone/.next/server/app/api/data/csv/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/.next/server/app/api/data/csv/route.js +8 -0
  44. package/.next/standalone/.next/server/app/api/data/csv/route.js.map +5 -0
  45. package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -0
  46. package/.next/standalone/.next/server/app/api/data/csv/route_client-reference-manifest.js +3 -0
  47. package/.next/standalone/.next/server/app/api/data/export/route.js +1 -1
  48. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/data/import/route.js +1 -1
  50. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/data/restart/route.js +1 -1
  52. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/data/restore/route/app-paths-manifest.json +3 -0
  54. package/.next/standalone/.next/server/app/api/data/restore/route/build-manifest.json +12 -0
  55. package/.next/standalone/.next/server/app/api/data/restore/route/server-reference-manifest.json +4 -0
  56. package/.next/standalone/.next/server/app/api/data/restore/route.js +7 -0
  57. package/.next/standalone/.next/server/app/api/data/restore/route.js.map +5 -0
  58. package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -0
  59. package/.next/standalone/.next/server/app/api/data/restore/route_client-reference-manifest.js +3 -0
  60. package/.next/standalone/.next/server/app/api/data/reveal/route.js +1 -1
  61. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/data/route.js +1 -1
  63. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/delete-cluster/route.js +2 -2
  65. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/ingest/route.js +2 -2
  67. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/network/route.js +2 -2
  69. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/notifications/route.js +2 -2
  71. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/outreach/route.js +2 -2
  73. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/queue/route.js +2 -2
  75. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/scraper/route.js +4 -2
  77. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/api/settings/route.js +3 -3
  79. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +3 -3
  81. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +3 -3
  83. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/setup-profile/route.js +2 -2
  85. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/social/crm/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/social/messages/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/social/route.js +2 -2
  91. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/unlock/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/update-images/route.js +2 -2
  96. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/users/route.js +2 -2
  98. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/avatars/[file]/route.js +1 -1
  100. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/import/page.js +1 -1
  102. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/import.html +1 -1
  105. package/.next/standalone/.next/server/app/import.rsc +32 -24
  106. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +32 -24
  107. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  108. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +23 -18
  109. package/.next/standalone/.next/server/app/index.html +1 -1
  110. package/.next/standalone/.next/server/app/index.rsc +29 -22
  111. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +20 -15
  112. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +29 -22
  113. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  115. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/launch.html +2 -2
  118. package/.next/standalone/.next/server/app/launch.rsc +32 -24
  119. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +32 -24
  120. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  121. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +23 -18
  122. package/.next/standalone/.next/server/app/page.js +1 -1
  123. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  126. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/paths.html +1 -1
  129. package/.next/standalone/.next/server/app/paths.rsc +32 -24
  130. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +32 -24
  131. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  132. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +21 -18
  133. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  134. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/profile.html +1 -1
  137. package/.next/standalone/.next/server/app/profile.rsc +32 -24
  138. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +32 -24
  139. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  140. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +23 -18
  141. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  142. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  143. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/queue.html +1 -1
  145. package/.next/standalone/.next/server/app/queue.rsc +32 -24
  146. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +32 -24
  147. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  148. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +20 -18
  149. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  150. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/scores.html +1 -1
  153. package/.next/standalone/.next/server/app/scores.rsc +32 -24
  154. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +32 -24
  155. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  156. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +23 -18
  157. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  158. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/settings.html +1 -1
  161. package/.next/standalone/.next/server/app/settings.rsc +32 -24
  162. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +32 -24
  163. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  164. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -18
  165. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  166. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/setup.html +1 -1
  169. package/.next/standalone/.next/server/app/setup.rsc +32 -24
  170. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +32 -24
  171. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  172. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +21 -18
  173. package/.next/standalone/.next/server/app/social/page.js +1 -1
  174. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/social.html +1 -1
  177. package/.next/standalone/.next/server/app/social.rsc +32 -24
  178. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +32 -24
  179. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  180. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +23 -18
  181. package/.next/standalone/.next/server/app-paths-manifest.json +3 -0
  182. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__15wc9e-._.js → [root-of-the-server]__063s0x7._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/[root-of-the-server]__066rab1._.js +7 -0
  186. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  187. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13dx4sd._.js → [root-of-the-server]__0_4y8z7._.js} +3 -3
  188. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  189. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fooke1._.js +7 -0
  191. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  192. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  193. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  194. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  195. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t6y79e._.js +7 -0
  196. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  197. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x29muh._.js +7 -0
  198. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  200. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a_6x37._.js +8 -0
  203. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an_8pa._.js +7 -0
  204. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ducpz2._.js +3 -0
  206. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  209. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +1 -1
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xhyinn._.js +3 -0
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/_02twlca._.js +1 -1
  214. package/.next/standalone/.next/server/chunks/_072jl0y._.js +1 -1
  215. package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/_0sqqpzb._.js +3 -0
  217. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  218. package/.next/standalone/.next/server/chunks/_1fn30_l._.js +1 -1
  219. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  220. package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
  221. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_backup_route_actions_0zoj04p.js +3 -0
  222. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_csv_route_actions_0l6m7lg.js +3 -0
  223. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restore_route_actions_0-b05bv.js +3 -0
  224. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +4 -0
  225. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +4 -0
  226. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +4 -0
  227. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +174 -0
  228. package/.next/standalone/.next/server/chunks/lib_linkedin-export_12imqxg.js +1 -1
  229. package/.next/standalone/.next/server/chunks/lib_rpc_005abye.js +3 -0
  230. package/.next/standalone/.next/server/chunks/lib_rpc_0b17r6v.js +3 -0
  231. package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
  232. package/.next/standalone/.next/server/chunks/lib_rpc_0doq0t-.js +3 -0
  233. package/.next/standalone/.next/server/chunks/lib_rpc_0fd2rlw.js +3 -0
  234. package/.next/standalone/.next/server/chunks/lib_rpc_0is4qoc.js +3 -0
  235. package/.next/standalone/.next/server/chunks/lib_rpc_0jnfp2e.js +3 -0
  236. package/.next/standalone/.next/server/chunks/lib_rpc_0nef_n7.js +3 -0
  237. package/.next/standalone/.next/server/chunks/lib_rpc_0plrzra.js +3 -0
  238. package/.next/standalone/.next/server/chunks/lib_rpc_13a4m0c.js +3 -0
  239. package/.next/standalone/.next/server/chunks/lib_rpc_1if17c-.js +3 -0
  240. package/.next/standalone/.next/server/chunks/lib_rpc_1j-zw7v.js +3 -0
  241. package/.next/standalone/.next/server/chunks/lib_rpc_1sngt-q.js +3 -0
  242. package/.next/standalone/.next/server/chunks/lib_rpc_1v2sgme.js +3 -0
  243. package/.next/standalone/.next/server/chunks/lib_rpc_1vh-tgx.js +3 -0
  244. package/.next/standalone/.next/server/chunks/lib_rpc_1zaubz7.js +3 -0
  245. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qd8pzm._.js +3 -0
  246. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qdeuyo._.js → [root-of-the-server]__1-012q1._.js} +2 -2
  247. package/.next/standalone/.next/server/chunks/ssr/_01o3i5y._.js +7 -0
  248. package/.next/standalone/.next/server/chunks/ssr/_02sband._.js +7 -0
  249. package/.next/standalone/.next/server/chunks/ssr/_06rgzfh._.js +3 -0
  250. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +3 -0
  251. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +3 -0
  252. package/.next/standalone/.next/server/chunks/ssr/_0gy11ar._.js +3 -0
  253. package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
  254. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
  255. package/.next/standalone/.next/server/chunks/ssr/_189g8lg._.js +3 -0
  256. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +1 -1
  257. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
  258. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
  259. package/.next/standalone/.next/server/chunks/ssr/_1k9qfsk._.js +3 -0
  260. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  261. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +1 -1
  262. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +25 -2
  263. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +25 -2
  264. package/.next/standalone/.next/server/chunks/ssr/app_components_CompanyScores_1g0mytz.js +1 -1
  265. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  266. package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +1 -1
  267. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +25 -13
  268. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  269. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  270. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +11 -11
  271. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  272. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +12 -13
  273. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  274. package/.next/standalone/.next/server/chunks/ssr/{lib_1c4ieuw._.js → lib_csv_1ttiu_h.js} +2 -2
  275. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  276. package/.next/standalone/.next/server/chunks/ssr/lib_separation_1305zsx.js +3 -0
  277. package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +1 -1
  278. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  279. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  280. package/.next/standalone/.next/server/pages/404.html +1 -1
  281. package/.next/standalone/.next/server/pages/500.html +1 -1
  282. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  283. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  284. package/.next/standalone/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  285. package/.next/standalone/.next/static/chunks/03-demj2iy-0p.js +44 -0
  286. package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  287. package/.next/standalone/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
  288. package/.next/standalone/.next/static/chunks/0e3g0sil79cus.js +21 -0
  289. package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  290. package/.next/standalone/.next/static/chunks/0p3g5tfostsep.js +7 -0
  291. package/.next/standalone/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
  292. package/.next/standalone/.next/static/chunks/163b-20vwa06i.js +34 -0
  293. package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  294. package/.next/standalone/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
  295. package/.next/standalone/.next/static/chunks/1qbjermbf68xj.js +1 -0
  296. package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  297. package/.next/standalone/.next/static/chunks/23_1z47al92nz.js +57 -0
  298. package/.next/standalone/.next/static/chunks/260bomtr214m8.js +34 -0
  299. package/.next/standalone/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
  300. package/.next/standalone/.next/static/chunks/2xk2ra4piiuod.js +34 -0
  301. package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  302. package/.next/standalone/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
  303. package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
  304. package/.next/standalone/.next/static/chunks/3b0-14cxqsprt.js +1 -0
  305. package/.next/standalone/.next/static/chunks/3jarus1_38s2z.js +1 -0
  306. package/.next/standalone/.next/static/chunks/3ssu341hav_sq.css +3 -0
  307. package/.next/standalone/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
  308. package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
  309. package/.next/standalone/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
  310. package/.next/standalone/CHANGELOG.md +143 -0
  311. package/.next/standalone/README.md +71 -49
  312. package/.next/standalone/SECURITY.md +17 -11
  313. package/.next/standalone/app/api/data/backup/route.js +25 -0
  314. package/.next/standalone/app/api/data/csv/route.js +74 -0
  315. package/.next/standalone/app/api/data/export/route.js +1 -1
  316. package/.next/standalone/app/api/data/restore/route.js +48 -0
  317. package/.next/standalone/app/api/data/reveal/route.js +19 -6
  318. package/.next/standalone/app/api/data/route.js +15 -4
  319. package/.next/standalone/app/api/ingest/route.js +1 -1
  320. package/.next/standalone/app/api/queue/route.js +1 -1
  321. package/.next/standalone/app/api/scraper/route.js +120 -32
  322. package/.next/standalone/app/api/social/crm/route.js +2 -1
  323. package/.next/standalone/app/components/AppHeader.js +20 -16
  324. package/.next/standalone/app/components/AppTabs.js +8 -8
  325. package/.next/standalone/app/components/AutoScanButton.js +2 -2
  326. package/.next/standalone/app/components/Avatar.js +1 -1
  327. package/.next/standalone/app/components/ChainView.js +184 -112
  328. package/.next/standalone/app/components/CirclePanel.js +16 -16
  329. package/.next/standalone/app/components/ClusterSpinner.js +64 -0
  330. package/.next/standalone/app/components/CompanyScores.js +20 -20
  331. package/.next/standalone/app/components/EmptyState.js +39 -18
  332. package/.next/standalone/app/components/FieldStep.js +15 -13
  333. package/.next/standalone/app/components/FilterPanel.js +17 -17
  334. package/.next/standalone/app/components/ForceGraph.js +49 -14
  335. package/.next/standalone/app/components/GalaxyLab.js +33 -33
  336. package/.next/standalone/app/components/GridView.js +18 -18
  337. package/.next/standalone/app/components/LegacyScoresCard.js +10 -11
  338. package/.next/standalone/app/components/LinkedInLimits.js +24 -19
  339. package/.next/standalone/app/components/LiquidGlass.js +99 -0
  340. package/.next/standalone/app/components/ListView.js +20 -20
  341. package/.next/standalone/app/components/MapControls.js +5 -5
  342. package/.next/standalone/app/components/MappingProgress.js +16 -16
  343. package/.next/standalone/app/components/NoteDetail.js +13 -13
  344. package/.next/standalone/app/components/OnboardingGate.js +4 -4
  345. package/.next/standalone/app/components/OutlinkQuest.js +25 -25
  346. package/.next/standalone/app/components/PathsAnalyzer.js +37 -36
  347. package/.next/standalone/app/components/PeopleMap.js +21 -21
  348. package/.next/standalone/app/components/RingsView.js +11 -11
  349. package/.next/standalone/app/components/ScanRadar.js +84 -39
  350. package/.next/standalone/app/components/ScanStatusBar.js +22 -18
  351. package/.next/standalone/app/components/ScanTrail.js +8 -5
  352. package/.next/standalone/app/components/SeparationView.js +168 -104
  353. package/.next/standalone/app/components/Sidebar.js +161 -161
  354. package/.next/standalone/app/components/StaleServerBanner.js +4 -4
  355. package/.next/standalone/app/components/TheirCircle.js +26 -26
  356. package/.next/standalone/app/components/ThemeDefs.js +42 -0
  357. package/.next/standalone/app/components/ThemeLoader.js +20 -1
  358. package/.next/standalone/app/components/UpdatePanel.js +22 -22
  359. package/.next/standalone/app/components/UserProvider.js +22 -15
  360. package/.next/standalone/app/components/settings/AppearanceSection.js +47 -24
  361. package/.next/standalone/app/components/settings/DataSection.js +276 -109
  362. package/.next/standalone/app/components/settings/NetworkHealthSection.js +13 -13
  363. package/.next/standalone/app/components/settings/SectorPicker.js +12 -12
  364. package/.next/standalone/app/components/settings/SectorSection.js +13 -14
  365. package/.next/standalone/app/components/settings/TierSection.js +9 -9
  366. package/.next/standalone/app/components/settings/TitleSection.js +11 -11
  367. package/.next/standalone/app/components/settings/UsageSection.js +313 -0
  368. package/.next/standalone/app/components/ui.js +8 -8
  369. package/.next/standalone/app/globals.css +159 -2
  370. package/.next/standalone/app/import/page.js +94 -38
  371. package/.next/standalone/app/launch/page.js +5 -5
  372. package/.next/standalone/app/layout.js +6 -2
  373. package/.next/standalone/app/page.js +53 -37
  374. package/.next/standalone/app/paths/page.js +63 -63
  375. package/.next/standalone/app/profile/page.js +58 -58
  376. package/.next/standalone/app/queue/page.js +54 -54
  377. package/.next/standalone/app/scores/page.js +2 -2
  378. package/.next/standalone/app/settings/page.js +16 -13
  379. package/.next/standalone/app/setup/page.js +221 -125
  380. package/.next/standalone/app/social/Crm.js +63 -62
  381. package/.next/standalone/app/social/SocialHub.js +22 -22
  382. package/.next/standalone/app/social/Thread.js +7 -7
  383. package/.next/standalone/app/social/page.js +2 -2
  384. package/.next/standalone/lib/backups.js +458 -0
  385. package/.next/standalone/lib/chain-layout.js +32 -0
  386. package/.next/standalone/lib/csv-store.js +131 -0
  387. package/.next/standalone/lib/csv.js +137 -39
  388. package/.next/standalone/lib/data-folder.js +19 -3
  389. package/.next/standalone/lib/data-import.js +5 -2
  390. package/.next/standalone/lib/db-client.js +78 -20
  391. package/.next/standalone/lib/demo.js +5 -4
  392. package/.next/standalone/lib/galaxy-export.js +9 -2
  393. package/.next/standalone/lib/galaxy-lab.js +19 -5
  394. package/.next/standalone/lib/galaxy-layouts.js +43 -0
  395. package/.next/standalone/lib/gate.js +10 -4
  396. package/.next/standalone/lib/ingest.js +1 -1
  397. package/.next/standalone/lib/linkedin-limits.js +212 -11
  398. package/.next/standalone/lib/liquid-glass.js +59 -0
  399. package/.next/standalone/lib/notifications.js +13 -0
  400. package/.next/standalone/lib/scan-pace.js +11 -0
  401. package/.next/standalone/lib/scan-progress.js +20 -0
  402. package/.next/standalone/lib/scan-risk.js +44 -0
  403. package/.next/standalone/lib/scanner-setup.js +97 -15
  404. package/.next/standalone/lib/scraper-client.js +17 -3
  405. package/.next/standalone/lib/search-risk.js +7 -3
  406. package/.next/standalone/lib/settings-client.js +5 -3
  407. package/.next/standalone/lib/settings.js +10 -0
  408. package/.next/standalone/lib/social-store.js +3 -2
  409. package/.next/standalone/lib/synced-setting.js +46 -0
  410. package/.next/standalone/lib/theme-store.js +42 -10
  411. package/.next/standalone/lib/themes.js +111 -21
  412. package/.next/standalone/lib/usage.js +195 -0
  413. package/.next/standalone/package-lock.json +2 -2
  414. package/.next/standalone/package.json +1 -1
  415. package/.next/standalone/scripts/scrape.py +26 -2
  416. package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  417. package/.next/static/chunks/03-demj2iy-0p.js +44 -0
  418. package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  419. package/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
  420. package/.next/static/chunks/0e3g0sil79cus.js +21 -0
  421. package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  422. package/.next/static/chunks/0p3g5tfostsep.js +7 -0
  423. package/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
  424. package/.next/static/chunks/163b-20vwa06i.js +34 -0
  425. package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  426. package/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
  427. package/.next/static/chunks/1qbjermbf68xj.js +1 -0
  428. package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  429. package/.next/static/chunks/23_1z47al92nz.js +57 -0
  430. package/.next/static/chunks/260bomtr214m8.js +34 -0
  431. package/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
  432. package/.next/static/chunks/2xk2ra4piiuod.js +34 -0
  433. package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  434. package/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
  435. package/.next/static/chunks/34g73qhayuevu.js +1 -0
  436. package/.next/static/chunks/3b0-14cxqsprt.js +1 -0
  437. package/.next/static/chunks/3jarus1_38s2z.js +1 -0
  438. package/.next/static/chunks/3ssu341hav_sq.css +3 -0
  439. package/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
  440. package/.next/static/chunks/43pg2sursiypz.js +1 -0
  441. package/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
  442. package/CHANGELOG.md +143 -0
  443. package/README.md +71 -49
  444. package/SECURITY.md +17 -11
  445. package/lib/backups.js +458 -0
  446. package/lib/chain-layout.js +32 -0
  447. package/lib/csv-store.js +131 -0
  448. package/lib/csv.js +137 -39
  449. package/lib/data-folder.js +19 -3
  450. package/lib/data-import.js +5 -2
  451. package/lib/db-client.js +78 -20
  452. package/lib/demo.js +5 -4
  453. package/lib/galaxy-export.js +9 -2
  454. package/lib/galaxy-lab.js +19 -5
  455. package/lib/galaxy-layouts.js +43 -0
  456. package/lib/gate.js +10 -4
  457. package/lib/ingest.js +1 -1
  458. package/lib/linkedin-limits.js +212 -11
  459. package/lib/liquid-glass.js +59 -0
  460. package/lib/notifications.js +13 -0
  461. package/lib/scan-pace.js +11 -0
  462. package/lib/scan-progress.js +20 -0
  463. package/lib/scan-risk.js +44 -0
  464. package/lib/scanner-setup.js +97 -15
  465. package/lib/scraper-client.js +17 -3
  466. package/lib/search-risk.js +7 -3
  467. package/lib/settings-client.js +5 -3
  468. package/lib/settings.js +10 -0
  469. package/lib/social-store.js +3 -2
  470. package/lib/synced-setting.js +46 -0
  471. package/lib/theme-store.js +42 -10
  472. package/lib/themes.js +111 -21
  473. package/lib/usage.js +195 -0
  474. package/package.json +1 -1
  475. package/scripts/scrape.py +26 -2
  476. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +0 -3
  477. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +0 -3
  478. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +0 -3
  479. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +0 -3
  480. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +0 -3
  481. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +0 -8
  482. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +0 -8
  483. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +0 -8
  484. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +0 -174
  485. package/.next/standalone/.next/server/chunks/lib_rpc_04s8mzr.js +0 -3
  486. package/.next/standalone/.next/server/chunks/lib_rpc_053z7as.js +0 -3
  487. package/.next/standalone/.next/server/chunks/lib_rpc_0b_-2te.js +0 -3
  488. package/.next/standalone/.next/server/chunks/lib_rpc_0dhbxdm.js +0 -3
  489. package/.next/standalone/.next/server/chunks/lib_rpc_0dxlk31.js +0 -3
  490. package/.next/standalone/.next/server/chunks/lib_rpc_0f8b-qc.js +0 -3
  491. package/.next/standalone/.next/server/chunks/lib_rpc_0pzie7_.js +0 -3
  492. package/.next/standalone/.next/server/chunks/lib_rpc_0r76fq_.js +0 -3
  493. package/.next/standalone/.next/server/chunks/lib_rpc_0ut7pjp.js +0 -3
  494. package/.next/standalone/.next/server/chunks/lib_rpc_15zyqaz.js +0 -3
  495. package/.next/standalone/.next/server/chunks/lib_rpc_18zpjtq.js +0 -3
  496. package/.next/standalone/.next/server/chunks/lib_rpc_1a8xkiz.js +0 -3
  497. package/.next/standalone/.next/server/chunks/lib_rpc_1e_55xo.js +0 -3
  498. package/.next/standalone/.next/server/chunks/lib_rpc_1oxfd1_.js +0 -3
  499. package/.next/standalone/.next/server/chunks/lib_rpc_1s0lod0.js +0 -3
  500. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +0 -3
  501. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +0 -3
  502. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +0 -3
  503. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +0 -3
  504. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +0 -3
  505. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +0 -3
  506. package/.next/standalone/.next/server/chunks/ssr/_1-658fq._.js +0 -3
  507. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +0 -3
  508. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
  509. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +0 -3
  510. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  511. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  512. package/.next/standalone/.next/static/chunks/0i02yxppzds1o.js +0 -1
  513. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  514. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +0 -1
  515. package/.next/standalone/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  516. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  517. package/.next/standalone/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  518. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +0 -34
  519. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  520. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  521. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  522. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +0 -45
  523. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  524. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +0 -11
  525. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  526. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  527. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  528. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  529. package/.next/standalone/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  530. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  531. package/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  532. package/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  533. package/.next/static/chunks/0i02yxppzds1o.js +0 -1
  534. package/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  535. package/.next/static/chunks/0oyslj62jkubd.js +0 -1
  536. package/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  537. package/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  538. package/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  539. package/.next/static/chunks/172e10mi-tpo_.js +0 -34
  540. package/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  541. package/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  542. package/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  543. package/.next/static/chunks/1m3017gp790pw.js +0 -45
  544. package/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  545. package/.next/static/chunks/2-ch9rm27eril.js +0 -11
  546. package/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  547. package/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  548. package/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  549. package/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  550. package/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  551. package/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  552. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
  553. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
  554. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
  555. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
  556. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
  557. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
@@ -35,16 +35,16 @@ export default function StaleServerBanner() {
35
35
  >
36
36
  <span>
37
37
  You have newer code on disk ({info.sha}) than this server is running ({info.bootSha}).
38
- Restart it to see the changes — <code style={{
39
- background: 'rgba(0,0,0,0.16)', padding: '1px 6px', borderRadius: 4,
38
+ Restart it to see the changes: <code style={{
39
+ background: 'rgba(var(--sd-shade, 0, 0, 0), 0.16)', padding: '1px 6px', borderRadius: 4,
40
40
  }}>Ctrl-C</code> in the terminal, then <code style={{
41
- background: 'rgba(0,0,0,0.16)', padding: '1px 6px', borderRadius: 4,
41
+ background: 'rgba(var(--sd-shade, 0, 0, 0), 0.16)', padding: '1px 6px', borderRadius: 4,
42
42
  }}>npm run dev</code>.
43
43
  </span>
44
44
  <button
45
45
  onClick={() => setInfo(null)}
46
46
  style={{
47
- border: 'none', background: 'rgba(0,0,0,0.18)', color: '#1a1200',
47
+ border: 'none', background: 'rgba(var(--sd-shade, 0, 0, 0), 0.18)', color: '#1a1200',
48
48
  borderRadius: 6, padding: '3px 10px', fontWeight: 700, cursor: 'pointer',
49
49
  }}
50
50
  >Dismiss</button>
@@ -60,27 +60,27 @@ export default function TheirCircle({ person, connections = [], degree2 = [], ti
60
60
  <Label>Their circle</Label>
61
61
  {guess ? (
62
62
  <>
63
- <div style={{ fontSize: 11.5, color: '#d8ccb0', lineHeight: 1.5, marginBottom: canScan ? 9 : 0 }}>
64
- <b style={{ color: '#FFD700' }}>Their score is a guess.</b> {guess.reason}
63
+ <div style={{ fontSize: 11.5, color: 'var(--sd-fg-2, #d8ccb0)', lineHeight: 1.5, marginBottom: canScan ? 9 : 0 }}>
64
+ <b style={{ color: 'var(--sd-gold, #FFD700)' }}>Their score is a guess.</b> {guess.reason}
65
65
  {canScan && <> Scanning {first}&apos;s circle shows who you can reach through them, and a strong
66
66
  circle adds up to +2 to their score.</>}
67
67
  </div>
68
68
  {canScan && (
69
69
  <button type="button" onClick={toScanBox} style={{
70
70
  width: '100%', padding: '8px 10px', borderRadius: 8, cursor: 'pointer', fontSize: 12, fontWeight: 700,
71
- border: '1px solid rgba(255,215,0,0.4)', background: 'rgba(255,215,0,0.08)', color: '#FFD700',
71
+ border: '1px solid rgba(255,215,0,0.4)', background: 'rgba(255,215,0,0.08)', color: 'var(--sd-gold, #FFD700)',
72
72
  }}>
73
73
  Scan their circle ↓
74
74
  </button>
75
75
  )}
76
76
  </>
77
77
  ) : canScan ? (
78
- <div style={{ fontSize: 11, color: '#999', lineHeight: 1.5 }}>
78
+ <div style={{ fontSize: 11, color: 'var(--sd-fg-3, #999)', lineHeight: 1.5 }}>
79
79
  Not scanned yet. Scan {first}&apos;s circle below to see who they know, and
80
80
  everyone you reach through them after that.
81
81
  </div>
82
82
  ) : (
83
- <div style={{ fontSize: 11, color: '#999', lineHeight: 1.5 }}>Not scanned.</div>
83
+ <div style={{ fontSize: 11, color: 'var(--sd-fg-3, #999)', lineHeight: 1.5 }}>Not scanned.</div>
84
84
  )}
85
85
  </div>
86
86
  );
@@ -99,7 +99,7 @@ export default function TheirCircle({ person, connections = [], degree2 = [], ti
99
99
  />
100
100
  );
101
101
  const note = (
102
- <div style={{ fontSize: 9.5, color: '#777', lineHeight: 1.45, marginTop: 6 }}>
102
+ <div style={{ fontSize: 9.5, color: 'var(--sd-fg-4, #777)', lineHeight: 1.45, marginTop: 6 }}>
103
103
  Rarity is how many mutual connections lead to someone. It never changes a score.{' '}
104
104
  {fromLinkedIn
105
105
  ? 'LinkedIn’s own count where a scan saved it; otherwise the ways in from your scans.'
@@ -146,7 +146,7 @@ function RingMap({ person, rings, facts, filter, tierColors, size, labels = fals
146
146
  role="img" aria-label={`${person.name}'s circle, ${rings.length} ${rings.length === 1 ? 'ring' : 'rings'}`}>
147
147
  {layout.rings.map((ring) => (
148
148
  <g key={ring.degree}>
149
- <circle cx={c.x} cy={c.y} r={ring.radius} fill="none" stroke="rgba(255,255,255,0.07)" strokeWidth={0.6 * k} />
149
+ <circle cx={c.x} cy={c.y} r={ring.radius} fill="none" stroke="rgba(var(--sd-ink, 255, 255, 255), 0.07)" strokeWidth={0.6 * k} />
150
150
  <text x={c.x} y={c.y - ring.radius - ring.dotR - 3 * k} textAnchor="middle" fontSize={6.5 * k} fill="#666" fontWeight={700}>
151
151
  D{ring.degree}
152
152
  </text>
@@ -173,19 +173,19 @@ function RingMap({ person, rings, facts, filter, tierColors, size, labels = fals
173
173
  <circle cx={it.x} cy={it.y} r={r * 1.25} fill="none" stroke={color} strokeWidth={Math.max(0.5, r * 0.45)}
174
174
  strokeDasharray={`${Math.max(0.6, r * 0.55)} ${Math.max(0.5, r * 0.45)}`} />
175
175
  ) : (
176
- <circle cx={it.x} cy={it.y} r={r} fill={color}
176
+ <circle className="sd-dot" cx={it.x} cy={it.y} r={r} fill={color}
177
177
  stroke={it.state === 'connected' ? GREEN : 'none'} strokeWidth={Math.max(0.6, r * 0.3)} />
178
178
  )}
179
179
  {labels && it.state === 'connected' && (
180
- <text x={it.x} y={it.y - r - 3} textAnchor="middle" fontSize={9} fill={GREEN} fontWeight={700}>
180
+ <text x={it.x} y={it.y - r - 3} textAnchor="middle" fontSize={9} fill="var(--sd-green, #00ff88)" fontWeight={700}>
181
181
  {String(it.row.name || '').split(' ')[0]}
182
182
  </text>
183
183
  )}
184
184
  </g>
185
185
  );
186
186
  }))}
187
- <circle cx={c.x} cy={c.y} r={7 * k} fill={tierColors[person.tier] || '#888'} stroke="#fff" strokeWidth={0.8 * k} />
188
- <text x={c.x} y={c.y + 2.4 * k} textAnchor="middle" fontSize={6.5 * k} fontWeight={800} fill={person.tier === 'S' ? '#000' : '#fff'}>
187
+ <circle className="sd-dot" cx={c.x} cy={c.y} r={7 * k} fill={tierColors[person.tier] || 'var(--sd-fg-3, #888)'} stroke="#fff" strokeWidth={0.8 * k} />
188
+ <text x={c.x} y={c.y + 2.4 * k} textAnchor="middle" fontSize={6.5 * k} fontWeight={800} fill={person.tier === 'S' ? '#000' : 'var(--sd-fg-1, #fff)'}>
189
189
  {String(person.name || '?').charAt(0)}
190
190
  </text>
191
191
  </svg>
@@ -194,11 +194,11 @@ function RingMap({ person, rings, facts, filter, tierColors, size, labels = fals
194
194
 
195
195
  function RingCounts({ rings, totals, shown }) {
196
196
  return (
197
- <div style={{ fontSize: 10.5, color: '#aaa', marginTop: 6, lineHeight: 1.5 }}>
197
+ <div style={{ fontSize: 10.5, color: 'var(--sd-fg-3, #aaa)', marginTop: 6, lineHeight: 1.5 }}>
198
198
  {rings.map((r) => `D${r.degree} ${r.people.length.toLocaleString('en-US')}`).join(' · ')}
199
199
  {totals.connected > 0 && <span style={{ color: GREEN }}> · you added {totals.connected}</span>}
200
- {totals.requested > 0 && <span style={{ color: '#FFD700' }}> · {totals.requested} {totals.requested === 1 ? 'request' : 'requests'} out</span>}
201
- {shown != null && <span style={{ color: '#fff' }}> · {shown.toLocaleString('en-US')} shown</span>}
200
+ {totals.requested > 0 && <span style={{ color: 'var(--sd-gold, #FFD700)' }}> · {totals.requested} {totals.requested === 1 ? 'request' : 'requests'} out</span>}
201
+ {shown != null && <span style={{ color: 'var(--sd-fg-1, #fff)' }}> · {shown.toLocaleString('en-US')} shown</span>}
202
202
  </div>
203
203
  );
204
204
  }
@@ -206,8 +206,8 @@ function RingCounts({ rings, totals, shown }) {
206
206
  function Filters({ tierColors, byTier, byRarity, tiers, rarities, onTier, onRarity, onClear }) {
207
207
  const chip = (on, color) => ({
208
208
  height: 22, padding: '0 7px', borderRadius: 11, cursor: 'pointer', fontSize: 10, fontWeight: 700,
209
- whiteSpace: 'nowrap', border: `1px solid ${on ? color : 'rgba(255,255,255,0.1)'}`,
210
- background: on ? `${color}22` : 'rgba(255,255,255,0.03)', color: on ? color : '#999',
209
+ whiteSpace: 'nowrap', border: `1px solid ${on ? color : 'rgba(var(--sd-ink, 255, 255, 255), 0.1)'}`,
210
+ background: on ? `${color}22` : 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', color: on ? color : 'var(--sd-fg-3, #999)',
211
211
  });
212
212
  return (
213
213
  <div style={{ marginTop: 8, display: 'flex', flexDirection: 'column', gap: 5 }}>
@@ -240,8 +240,8 @@ function Legend() {
240
240
  <span style={{ display: 'inline-flex', alignItems: 'center', gap: 5, marginRight: 12, whiteSpace: 'nowrap' }}>{swatch}{text}</span>
241
241
  );
242
242
  return (
243
- <div style={{ fontSize: 10.5, color: '#999', marginTop: 8, lineHeight: 1.8 }}>
244
- {item(<svg width="10" height="10"><circle cx="5" cy="5" r="4" fill="#FFD700" /></svg>, 'colour = tier')}
243
+ <div style={{ fontSize: 10.5, color: 'var(--sd-fg-3, #999)', marginTop: 8, lineHeight: 1.8 }}>
244
+ {item(<svg width="10" height="10"><circle cx="5" cy="5" r="4" fill="var(--sd-fg-2, #FFD700)" /></svg>, 'colour = tier')}
245
245
  {item(<svg width="12" height="12"><circle cx="6" cy="6" r="4" fill="#9B59B6" stroke={GREEN} strokeWidth="1.5" /></svg>, 'you added them')}
246
246
  {item(<svg width="12" height="12"><circle cx="6" cy="6" r="4.2" fill="none" stroke="#3498DB" strokeWidth="1.4" strokeDasharray="2 1.6" /></svg>, 'request sent')}
247
247
  </div>
@@ -260,18 +260,18 @@ function Enlarged({ title, onClose, children }) {
260
260
  }, [onClose]);
261
261
  return createPortal(
262
262
  <div role="dialog" aria-modal="true" aria-label={title} onClick={onClose} style={{
263
- position: 'fixed', inset: 0, zIndex: 300, background: 'rgba(0,0,0,0.78)',
263
+ position: 'fixed', inset: 0, zIndex: 300, background: 'rgba(var(--sd-shade, 0, 0, 0), 0.78)',
264
264
  display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 16,
265
265
  }}>
266
266
  <div onClick={(e) => e.stopPropagation()} style={{
267
267
  width: 'min(720px, 100%)', maxHeight: '100%', overflowY: 'auto', boxSizing: 'border-box',
268
- background: '#0f0c05', border: '1px solid rgba(255,215,0,0.18)', borderRadius: 14, padding: 16,
268
+ background: 'var(--sd-surface, #0f0c05)', border: '1px solid rgba(255,215,0,0.18)', borderRadius: 14, padding: 16,
269
269
  }}>
270
270
  <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 8 }}>
271
- <div style={{ fontSize: 14, fontWeight: 800, color: '#fff' }}>{title}</div>
271
+ <div style={{ fontSize: 14, fontWeight: 800, color: 'var(--sd-fg-1, #fff)' }}>{title}</div>
272
272
  <button type="button" onClick={onClose} style={{ ...linkButton, fontSize: 12 }}>Close ✕</button>
273
273
  </div>
274
- <div style={{ fontSize: 10.5, color: '#888', marginBottom: 8 }}>Click a dot to open that person.</div>
274
+ <div style={{ fontSize: 10.5, color: 'var(--sd-fg-3, #888)', marginBottom: 8 }}>Click a dot to open that person.</div>
275
275
  {children}
276
276
  </div>
277
277
  </div>,
@@ -290,12 +290,12 @@ function toScanBox() {
290
290
  }
291
291
 
292
292
  function Label({ children }) {
293
- return <div style={{ fontSize: 10, fontWeight: 700, color: '#FF6B35', letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>{children}</div>;
293
+ return <div style={{ fontSize: 10, fontWeight: 700, color: 'var(--sd-orange, #FF6B35)', letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>{children}</div>;
294
294
  }
295
295
 
296
296
  const box = {
297
- background: 'rgba(255,255,255,0.03)', border: '1px solid rgba(255,255,255,0.07)',
297
+ background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.07)',
298
298
  borderRadius: 10, padding: 10, marginBottom: 16,
299
299
  };
300
- const rowLabel = { fontSize: 9, color: '#666', textTransform: 'uppercase', letterSpacing: 0.5, width: 38, flexShrink: 0 };
301
- const linkButton = { background: 'none', border: 'none', color: '#888', fontSize: 10.5, fontWeight: 600, cursor: 'pointer', padding: 0 };
300
+ const rowLabel = { fontSize: 9, color: 'var(--sd-fg-4, #666)', textTransform: 'uppercase', letterSpacing: 0.5, width: 38, flexShrink: 0 };
301
+ const linkButton = { background: 'none', border: 'none', color: 'var(--sd-fg-3, #888)', fontSize: 10.5, fontWeight: 600, cursor: 'pointer', padding: 0 };
@@ -0,0 +1,42 @@
1
+ // The SVG filters a look's dots use on every map but the Galaxy (which paints
2
+ // its own, for thousands of dots): app/globals.css applies them to `.sd-dot`
3
+ // under html[data-dots]. Any colour works, since they light the dot's own shape.
4
+ //
5
+ // #sd-droplet a drop of glass: lit from the top left (a specular highlight
6
+ // on the dot's own shape), a little see-through, with a bright rim
7
+ // #sd-glow a soft light round the dot in its own colour
8
+ //
9
+ // Rendered once, in the layout, as a hidden <svg>.
10
+
11
+ export default function ThemeDefs() {
12
+ return (
13
+ <svg width="0" height="0" aria-hidden="true" focusable="false" style={{ position: 'absolute', width: 0, height: 0, pointerEvents: 'none' }}>
14
+ <defs>
15
+ <filter id="sd-droplet" x="-30%" y="-30%" width="160%" height="160%" colorInterpolationFilters="sRGB">
16
+ <feGaussianBlur in="SourceAlpha" stdDeviation="1.4" result="soft" />
17
+ <feSpecularLighting in="soft" surfaceScale="4" specularConstant="1.15" specularExponent="24" lightingColor="#ffffff" result="light">
18
+ <feDistantLight azimuth="225" elevation="52" />
19
+ </feSpecularLighting>
20
+ <feComposite in="light" in2="SourceAlpha" operator="in" result="shine" />
21
+ <feComponentTransfer in="SourceGraphic" result="clear"><feFuncA type="linear" slope="0.72" /></feComponentTransfer>
22
+ <feMorphology in="SourceAlpha" operator="erode" radius="0.8" result="inner" />
23
+ <feComposite in="SourceAlpha" in2="inner" operator="out" result="edge" />
24
+ <feFlood floodColor="#ffffff" floodOpacity="0.55" />
25
+ <feComposite in2="edge" operator="in" result="rim" />
26
+ <feMerge>
27
+ <feMergeNode in="clear" />
28
+ <feMergeNode in="shine" />
29
+ <feMergeNode in="rim" />
30
+ </feMerge>
31
+ </filter>
32
+ <filter id="sd-glow" x="-80%" y="-80%" width="260%" height="260%" colorInterpolationFilters="sRGB">
33
+ <feGaussianBlur in="SourceGraphic" stdDeviation="2.4" result="b" />
34
+ <feMerge>
35
+ <feMergeNode in="b" />
36
+ <feMergeNode in="SourceGraphic" />
37
+ </feMerge>
38
+ </filter>
39
+ </defs>
40
+ </svg>
41
+ );
42
+ }
@@ -2,8 +2,27 @@
2
2
 
3
3
  // Loads the theme store on every page (lib/theme-store.js), which applies the
4
4
  // theme in use before anything draws. It renders nothing.
5
- import '../../lib/theme-store';
5
+ //
6
+ // Then it asks the server once for the choices kept with the network (the
7
+ // look, the Galaxy's saved layouts: lib/settings.js), which win over this
8
+ // browser's copy of them: a restore or an import brings its own
9
+ // (lib/synced-setting.js). The layouts' code loads only then.
10
+ import { useEffect } from 'react';
11
+ import { adoptSavedTheme } from '../../lib/theme-store';
6
12
 
7
13
  export default function ThemeLoader() {
14
+ useEffect(() => {
15
+ let live = true;
16
+ fetch('/api/settings', { cache: 'no-store' })
17
+ .then((r) => (r.ok ? r.json() : null))
18
+ .then(async (d) => {
19
+ if (!live || !d?.settings) return;
20
+ adoptSavedTheme(d.settings.theme);
21
+ const { adoptSavedLayouts } = await import('../../lib/galaxy-lab');
22
+ if (live) adoptSavedLayouts(d.settings.galaxyLayouts);
23
+ })
24
+ .catch(() => { /* no server (the sample, a static page): this browser's copy stands */ });
25
+ return () => { live = false; };
26
+ }, []);
8
27
  return null;
9
28
  }
@@ -75,25 +75,25 @@ function GitUpdates({ local }) {
75
75
  {done ? (
76
76
  <>
77
77
  <Body>
78
- Updated to <Mono>{done.sha}</Mono> — “{done.subject}”.
78
+ Updated to <Mono>{done.sha}</Mono>: “{done.subject}”.
79
79
  </Body>
80
- <Body style={{ color: done.needsRestart ? '#FFD700' : undefined }}>
80
+ <Body style={{ color: done.needsRestart ? 'var(--sd-gold, #FFD700)' : undefined }}>
81
81
  {done.needsRestart
82
- ? 'Stop the app in your terminal and start it again — this update changed how it starts.'
82
+ ? 'Stop the app in your terminal and start it again: this update changed how it starts.'
83
83
  : 'The page will pick up most changes on its own. Restart the app if anything looks odd.'}
84
84
  </Body>
85
85
  </>
86
86
  ) : (
87
87
  <>
88
88
  <Body>
89
- You are on <Mono>{local.sha}</Mono> — “{local.subject}”.
89
+ You are on <Mono>{local.sha}</Mono>: “{local.subject}”.
90
90
  </Body>
91
91
 
92
92
  {result && result.behind === 0 && <Status tone="ok">You&rsquo;re up to date.</Status>}
93
93
 
94
94
  {result && result.behind > 0 && (
95
95
  <>
96
- <Body style={{ color: '#00ff88' }}>
96
+ <Body style={{ color: 'var(--sd-green, #00ff88)' }}>
97
97
  {result.behind} update{result.behind === 1 ? '' : 's'} available.
98
98
  </Body>
99
99
  <pre style={pre}>{result.commits.join('\n')}</pre>
@@ -103,7 +103,7 @@ function GitUpdates({ local }) {
103
103
  {result?.dirty?.length > 0 && (
104
104
  <Body>
105
105
  Changed files here:{' '}
106
- <Mono>{result.dirty.join(', ')}</Mono>. Commit or discard them first — this
106
+ <Mono>{result.dirty.join(', ')}</Mono>. Commit or discard them first: this
107
107
  will not throw away your work.
108
108
  </Body>
109
109
  )}
@@ -121,10 +121,10 @@ function GitUpdates({ local }) {
121
121
  </>
122
122
  )}
123
123
 
124
- {error && <Body style={{ color: '#ff7676' }}>{error}</Body>}
124
+ {error && <Body style={{ color: 'var(--sd-red, #ff7676)' }}>{error}</Body>}
125
125
 
126
- <Body style={{ fontSize: 12, color: '#667', marginTop: 12 }}>
127
- Nothing is checked automatically and nothing about you is sent — this runs the
126
+ <Body style={{ fontSize: 12, color: 'var(--sd-fg-4, #667)', marginTop: 12 }}>
127
+ Nothing is checked automatically and nothing about you is sent: this runs the
128
128
  same <Mono>git fetch</Mono> and <Mono>git pull</Mono> you would type yourself.
129
129
  </Body>
130
130
  </Section>
@@ -262,7 +262,7 @@ function InstalledUpdates({ local }) {
262
262
  setCopied(true);
263
263
  setTimeout(() => setCopied(false), 1600);
264
264
  } catch {
265
- setError('Could not copy — select the line and copy it by hand.');
265
+ setError('Could not copy. Select the line and copy it by hand.');
266
266
  }
267
267
  }
268
268
 
@@ -303,13 +303,13 @@ function InstalledUpdates({ local }) {
303
303
  {result?.latest && !result.newer && (
304
304
  <Status tone="ok">
305
305
  You&rsquo;re up to date: {result.latest.version} is the newest version.
306
- {checkedAt && <span style={{ color: '#8b9a9a' }}> Checked at {checkedAt.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}.</span>}
306
+ {checkedAt && <span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}> Checked at {checkedAt.toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}.</span>}
307
307
  </Status>
308
308
  )}
309
309
 
310
310
  {result?.newer && (
311
311
  <>
312
- <Body style={{ color: '#00ff88' }}>Version {result.latest.version} is available.</Body>
312
+ <Body style={{ color: 'var(--sd-green, #00ff88)' }}>Version {result.latest.version} is available.</Body>
313
313
  {canInstall && (
314
314
  <>
315
315
  <Body>
@@ -376,15 +376,15 @@ function InstalledUpdates({ local }) {
376
376
  </>
377
377
  )}
378
378
 
379
- {error && <Body style={{ color: '#ff7676' }}>{error}</Body>}
379
+ {error && <Body style={{ color: 'var(--sd-red, #ff7676)' }}>{error}</Body>}
380
380
 
381
- <Body style={{ fontSize: 12, color: '#667', marginTop: 12 }}>
381
+ <Body style={{ fontSize: 12, color: 'var(--sd-fg-4, #667)', marginTop: 12 }}>
382
382
  Nothing is checked automatically. The button asks GitHub for the newest version
383
383
  number, and nothing about you is sent.
384
384
  {mac && ' Only a second click, Install and restart, downloads the new version.'}
385
385
  </Body>
386
386
  {local.testReleases && (
387
- <Body style={{ fontSize: 12, color: '#FFD700', marginTop: 6 }}>
387
+ <Body style={{ fontSize: 12, color: 'var(--sd-gold, #FFD700)', marginTop: 6 }}>
388
388
  Test mode: releases are read from <Mono>{local.testReleases}</Mono> on this computer, not from GitHub.
389
389
  </Body>
390
390
  )}
@@ -424,10 +424,10 @@ function Progress({ job, restarting, slow, onCancel }) {
424
424
  : 'Preparing the new version…';
425
425
  return (
426
426
  <div role="status" aria-live="polite" style={{ marginTop: 12 }}>
427
- <Body style={{ color: '#e8e8ee' }}>{text}</Body>
427
+ <Body style={{ color: 'var(--sd-fg-1, #e8e8ee)' }}>{text}</Body>
428
428
  {job.phase === 'downloading' && pct !== null && (
429
429
  <div role="progressbar" aria-valuemin={0} aria-valuemax={100} aria-valuenow={pct} aria-label="Download"
430
- style={{ height: 6, borderRadius: 3, background: 'rgba(255,255,255,0.08)', marginTop: 10, overflow: 'hidden', maxWidth: 420 }}>
430
+ style={{ height: 6, borderRadius: 3, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', marginTop: 10, overflow: 'hidden', maxWidth: 420 }}>
431
431
  <div style={{ width: `${pct}%`, height: '100%', background: 'linear-gradient(90deg, #9B59B6, #3498DB)', transition: 'width 0.4s ease' }} />
432
432
  </div>
433
433
  )}
@@ -448,9 +448,9 @@ function LastUpdate({ report }) {
448
448
  const when = new Date(report.at).toLocaleString([], { dateStyle: 'medium', timeStyle: 'short' });
449
449
  return (
450
450
  <Status tone={report.tone === 'ok' ? 'ok' : 'bad'}>
451
- {report.text} <span style={{ color: '#8b9a9a' }}>({when})</span>
451
+ {report.text} <span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}>({when})</span>
452
452
  {report.tone === 'ok' && report.previous && (
453
- <span style={{ display: 'block', fontSize: 12.5, color: '#8b9a9a', marginTop: 4 }}>
453
+ <span style={{ display: 'block', fontSize: 12.5, color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 4 }}>
454
454
  A copy of the version you had is kept in <Mono>{report.previous}</Mono> until the next update.
455
455
  To go back to it, open that file and drag the app it gives you into your Applications folder.
456
456
  </span>
@@ -462,7 +462,7 @@ function LastUpdate({ report }) {
462
462
  function WhatChanged({ url }) {
463
463
  if (!url) return null;
464
464
  return (
465
- <a href={url} target="_blank" rel="noreferrer" style={{ color: '#3498DB', fontSize: 13.5 }}>
465
+ <a href={url} target="_blank" rel="noreferrer" style={{ color: 'var(--sd-blue, #3498DB)', fontSize: 13.5 }}>
466
466
  What changed →
467
467
  </a>
468
468
  );
@@ -475,8 +475,8 @@ function Row({ children }) {
475
475
  }
476
476
 
477
477
  const pre = {
478
- background: 'rgba(0,0,0,0.45)', border: LINE, borderRadius: 8, padding: 12,
479
- margin: '8px 0 0', fontSize: 12, lineHeight: 1.7, color: '#b9c6c6',
478
+ background: 'rgba(var(--sd-shade, 0, 0, 0), 0.45)', border: LINE, borderRadius: 8, padding: 12,
479
+ margin: '8px 0 0', fontSize: 12, lineHeight: 1.7, color: 'var(--sd-fg-2, #b9c6c6)',
480
480
  fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',
481
481
  whiteSpace: 'pre-wrap', maxHeight: 180, overflow: 'auto',
482
482
  };
@@ -3,7 +3,7 @@
3
3
  import { createContext, useContext, useState, useEffect } from 'react';
4
4
  import { getUserId, getUserName, setUser, hasUser } from '../../lib/user';
5
5
  import { IS_DEMO, DEMO_USER } from '../../lib/demo';
6
- import { hasCsvNetwork, CSV_USER } from '../../lib/csv';
6
+ import { csvNetworkSource, CSV_USER } from '../../lib/csv';
7
7
 
8
8
  const UserContext = createContext({
9
9
  userId: null, userName: null, userProfile: null, ready: false,
@@ -33,18 +33,6 @@ export default function UserProvider({ children }) {
33
33
  setReady(true);
34
34
  return;
35
35
  }
36
- // An imported CSV is a local, account-free session: adopt a local identity
37
- // so the app opens straight into their network with no /api/users call.
38
- if (hasCsvNetwork()) {
39
- setUserId(CSV_USER.id);
40
- setUserName(CSV_USER.name);
41
- setUserProfile({
42
- name: CSV_USER.name, headline: 'Imported from your LinkedIn CSV',
43
- role: '', company: '', industry: '', sectors: [], goals: [], linkedin_url: '',
44
- });
45
- setReady(true);
46
- return;
47
- }
48
36
  // Who "you" are is decided by the server, from the data: the profile that
49
37
  // owns the network, or a new one on a fresh install (lib/profile.js).
50
38
  //
@@ -64,8 +52,7 @@ export default function UserProvider({ children }) {
64
52
  goals: u.goals || [],
65
53
  linkedin_url: u.linkedin_url || '',
66
54
  });
67
-
68
- fetch('/api/users?me=1')
55
+ const ownProfile = () => fetch('/api/users?me=1')
69
56
  .then((r) => r.json())
70
57
  .then((data) => {
71
58
  const me = data.user;
@@ -83,6 +70,26 @@ export default function UserProvider({ children }) {
83
70
  }
84
71
  })
85
72
  .finally(() => setReady(true));
73
+
74
+ // A CSV import (kept in the data folder) or the sample open in this window
75
+ // is account-free: adopt a local identity so the app opens straight into
76
+ // it, with no /api/users call and no profile made for it.
77
+ let off = false;
78
+ csvNetworkSource().then((source) => {
79
+ if (off) return;
80
+ if (!source) {
81
+ ownProfile();
82
+ return;
83
+ }
84
+ setUserId(CSV_USER.id);
85
+ setUserName(CSV_USER.name);
86
+ setUserProfile({
87
+ name: CSV_USER.name, headline: 'Imported from your LinkedIn CSV',
88
+ role: '', company: '', industry: '', sectors: [], goals: [], linkedin_url: '',
89
+ });
90
+ setReady(true);
91
+ });
92
+ return () => { off = true; };
86
93
  }, []);
87
94
 
88
95
  const login = (id, name) => {