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
@@ -7,10 +7,11 @@
7
7
  // files the scanner writes.
8
8
 
9
9
  import { useState } from 'react';
10
+ import Link from 'next/link';
10
11
  import { limitQuestion, limitNote, SAFE_LIMITS } from '../../lib/search-risk';
11
12
  import { TIER_COLORS as THEME_TIERS } from '../../lib/themes';
12
13
 
13
- const LINE = '1px solid rgba(255,255,255,0.1)';
14
+ const LINE = '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)';
14
15
  const TIER = THEME_TIERS; // the theme's dot colours (lib/themes.js)
15
16
  const DAILY = [25, 50, 100, 200, 500];
16
17
  const MONTHLY = [100, 250, 500, 1000, 0];
@@ -25,7 +26,7 @@ export function CooldownBanner({ cooldown, onLift, disabled }) {
25
26
  return (
26
27
  <div role="status" style={{
27
28
  padding: '12px 14px', borderRadius: 8, fontSize: 13, lineHeight: 1.6,
28
- background: 'rgba(255,80,80,0.08)', border: '1px solid rgba(255,80,80,0.35)', color: '#f3c9c9',
29
+ background: 'rgba(255,80,80,0.08)', border: '1px solid rgba(255,80,80,0.35)', color: 'var(--sd-fg-2, #f3c9c9)',
29
30
  }}>
30
31
  <b style={{ color: '#ff8080' }}>Scanning is paused until {when(cooldown.until)}.</b>{' '}
31
32
  {cooldown.reason}. Nothing that searches LinkedIn will run until then, so the account can recover.
@@ -49,7 +50,7 @@ const pct = (used, cap) => (cap ? Math.min(100, Math.round((used / cap) * 100))
49
50
  function Bar({ used, cap }) {
50
51
  const p = pct(used, cap);
51
52
  return (
52
- <div style={{ height: 5, borderRadius: 3, background: 'rgba(255,255,255,0.07)', overflow: 'hidden', marginTop: 4 }}>
53
+ <div style={{ height: 5, borderRadius: 3, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.07)', overflow: 'hidden', marginTop: 4 }}>
53
54
  <div style={{ height: '100%', width: `${p}%`, background: p >= 100 ? '#ff6b6b' : p >= 75 ? '#FFD700' : '#3498DB' }} />
54
55
  </div>
55
56
  );
@@ -69,18 +70,18 @@ export function BudgetBox({ li, onSetLimits, disabled }) {
69
70
  };
70
71
  const note = limitNote(limits);
71
72
  return (
72
- <div style={{ padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)', fontSize: 12.5, color: '#b8c4c4' }}>
73
+ <div style={{ padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)' }}>
73
74
  <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(210px, 1fr))', gap: 14 }}>
74
75
  <div>
75
- <div><b style={{ color: '#fff' }}>{today}</b> of {limits.daily || 'no limit'} searches in the last 24 hours</div>
76
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{today}</b> of {limits.daily || 'no limit'} searches in the last 24 hours</div>
76
77
  <Bar used={li.searchesToday || 0} cap={limits.daily} />
77
78
  </div>
78
79
  <div>
79
- <div><b style={{ color: '#fff' }}>{li.searchesMonth}</b> of {limits.monthly || 'no limit'} this month · resets {day(li.monthResets)}</div>
80
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{li.searchesMonth}</b> of {limits.monthly || 'no limit'} this month · resets {day(li.monthResets)}</div>
80
81
  <Bar used={li.searchesMonth} cap={limits.monthly} />
81
82
  </div>
82
83
  <div>
83
- <div><b style={{ color: '#fff' }}>{views}</b> of {limits.profiles} profile views today</div>
84
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{views}</b> of {limits.profiles} profile views in the last 24 hours</div>
84
85
  <Bar used={li.unreadable ? limits.profiles : li.profilesToday} cap={limits.profiles} />
85
86
  </div>
86
87
  </div>
@@ -96,26 +97,30 @@ export function BudgetBox({ li, onSetLimits, disabled }) {
96
97
  {PROFILES.map((n) => <option key={n} value={n}>{n} profile views a day</option>)}
97
98
  </select>
98
99
  </div>
99
- <div style={{ marginTop: 8, color: '#778', lineHeight: 1.6 }}>
100
+ <div style={{ marginTop: 8, color: 'var(--sd-fg-4, #778)', lineHeight: 1.6 }}>
100
101
  Every page of someone&rsquo;s connections is one search. LinkedIn limits a free account&rsquo;s people
101
102
  searches by the month (it doesn&rsquo;t say how many; reports put it around 250–350), resetting on the 1st.
102
103
  When a budget is used, a scan saves what it read and stops; the next one carries on from the same page.
103
104
  </div>
104
105
  {note && (
105
- <div style={{ marginTop: 8, display: 'flex', gap: 10, alignItems: 'center', flexWrap: 'wrap', color: '#FFD700', lineHeight: 1.6 }}>
106
+ <div style={{ marginTop: 8, display: 'flex', gap: 10, alignItems: 'center', flexWrap: 'wrap', color: 'var(--sd-gold, #FFD700)', lineHeight: 1.6 }}>
106
107
  <b style={{ flex: 1, minWidth: 200 }}>{note}</b>
107
108
  <button
108
109
  onClick={() => set(SAFE_LIMITS)}
109
110
  disabled={disabled}
110
- style={{ ...sel, cursor: disabled ? 'not-allowed' : 'pointer', color: '#FFD700', borderColor: 'rgba(255,215,0,0.4)' }}
111
+ style={{ ...sel, cursor: disabled ? 'not-allowed' : 'pointer', color: 'var(--sd-gold, #FFD700)', borderColor: 'rgba(255,215,0,0.4)' }}
111
112
  >Back to {SAFE_LIMITS.daily} a day, {SAFE_LIMITS.monthly} a month</button>
112
113
  </div>
113
114
  )}
114
- <div style={{ marginTop: 6, color: '#778', lineHeight: 1.6 }}>
115
+ <div style={{ marginTop: 6, color: 'var(--sd-fg-4, #778)', lineHeight: 1.6 }}>
115
116
  Each circle scan opens the person&rsquo;s profile once, which is one profile view. Profile views are what
116
117
  LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and
117
118
  once today&rsquo;s are used, a scan stops before the next profile and tries that person next time.
118
119
  </div>
120
+ {/* The whole picture (the last hour, the last 7 days, when the next one frees, the last pushback) is in Settings. */}
121
+ <Link href="/settings#usage" style={{ display: 'inline-block', marginTop: 8, color: 'var(--sd-blue, #3498DB)', textDecoration: 'none', fontWeight: 600 }}>
122
+ See all your LinkedIn usage &rarr;
123
+ </Link>
119
124
  </div>
120
125
  );
121
126
  }
@@ -126,25 +131,25 @@ export function PausedList({ paused = [], onResume, onResumeAll, disabled }) {
126
131
  const legacy = paused.filter((p) => p.legacy).length;
127
132
  const shown = showAll ? paused : paused.slice(0, 8);
128
133
  return (
129
- <div style={{ borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)' }}>
134
+ <div style={{ borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)' }}>
130
135
  <div style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '10px 14px', borderBottom: LINE, flexWrap: 'wrap' }}>
131
136
  <div style={{ flex: 1, minWidth: 200 }}>
132
- <b style={{ fontSize: 13.5 }}>Paused — {paused.length} {paused.length === 1 ? 'list' : 'lists'} with more to read</b>
133
- <div style={{ fontSize: 12, color: '#8b9a9a', marginTop: 2 }}>
137
+ <b style={{ fontSize: 13.5 }}>Paused: {paused.length} {paused.length === 1 ? 'list' : 'lists'} with more to read</b>
138
+ <div style={{ fontSize: 12, color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 2 }}>
134
139
  Each carries on from the page it stopped at{legacy ? `; ${legacy} were read to page 10 before whole lists were read` : ''}.
135
140
  </div>
136
141
  </div>
137
- <button onClick={onResumeAll} disabled={disabled} style={{ ...btn, opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', background: disabled ? 'rgba(255,255,255,0.06)' : 'linear-gradient(135deg, #3498DB, #9B59B6)' }}>
142
+ <button onClick={onResumeAll} disabled={disabled} style={{ ...btn, opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', background: disabled ? 'rgba(var(--sd-ink, 255, 255, 255), 0.06)' : 'linear-gradient(135deg, #3498DB, #9B59B6)' }}>
138
143
  Resume all
139
144
  </button>
140
145
  </div>
141
146
  <div>
142
147
  {shown.map((p) => (
143
- <div key={p.id} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '8px 14px', borderBottom: '1px solid rgba(255,255,255,0.04)' }}>
148
+ <div key={p.id} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '8px 14px', borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)' }}>
144
149
  <span style={{ width: 8, height: 8, borderRadius: '50%', background: TIER[p.tier] || '#667', flexShrink: 0 }} />
145
150
  <div style={{ flex: 1, minWidth: 0 }}>
146
151
  <div style={{ fontSize: 13, fontWeight: 600, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.name}</div>
147
- <div style={{ fontSize: 11.5, color: '#8b9a9a' }}>
152
+ <div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)' }}>
148
153
  Read to page {p.pagesRead} · carries on at {p.nextPage}
149
154
  {p.at ? ` · ${day(p.at)}` : ''}
150
155
  {p.unclear >= 2 ? ' · came back unclear twice, so it waits at the back of Resume all' : ''}
@@ -167,10 +172,10 @@ export function PausedList({ paused = [], onResume, onResumeAll, disabled }) {
167
172
 
168
173
  const btn = {
169
174
  padding: '8px 14px', borderRadius: 7, fontSize: 13, fontWeight: 700, cursor: 'pointer',
170
- border: LINE, background: 'rgba(255,255,255,0.08)', color: '#fff',
175
+ border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', color: 'var(--sd-fg-1, #fff)',
171
176
  };
172
177
  const linkBtn = { background: 'none', border: 'none', color: '#8fb8d6', cursor: 'pointer', fontSize: 12.5, fontWeight: 600, padding: 0 };
173
178
  const sel = {
174
179
  padding: '6px 8px', borderRadius: 6, fontSize: 12.5, fontWeight: 600,
175
- background: 'rgba(255,255,255,0.08)', color: '#fff', border: LINE,
180
+ background: 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', color: 'var(--sd-fg-1, #fff)', border: LINE,
176
181
  };
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+
3
+ // Lensing for the Glass look's panels (lib/liquid-glass.js): while a look draws
4
+ // its controls as glass (html[data-buttons="frosted"]), every [data-glass-panel]
5
+ // on the page gets an SVG filter made for its size, which its backdrop-filter
6
+ // runs after the blur (app/globals.css reads it from --lg-lens). Panels that
7
+ // open later are picked up, a panel that changes size gets a new map, and with
8
+ // Reduce Transparency on there's none at all. Renders nothing itself.
9
+
10
+ import { useEffect } from 'react';
11
+ import { lensMap } from '../../lib/liquid-glass';
12
+
13
+ const SVG_NS = 'http://www.w3.org/2000/svg';
14
+ // How much each kind of panel bends: a tall side panel a lot, the slim tab bar a little.
15
+ const KINDS = {
16
+ side: { r: 2, bezel: 26, scale: 56 },
17
+ bar: { r: 20, bezel: 12, scale: 22 },
18
+ };
19
+
20
+ export default function LiquidGlass() {
21
+ useEffect(() => {
22
+ const root = document.documentElement;
23
+ const reduce = window.matchMedia?.('(prefers-reduced-transparency: reduce)');
24
+ let defs = null;
25
+ const made = new Map(); // panel → { id, w, h }
26
+ let n = 0;
27
+ let timer = null;
28
+
29
+ const ensureDefs = () => {
30
+ if (defs) return defs;
31
+ const svg = document.createElementNS(SVG_NS, 'svg');
32
+ svg.setAttribute('width', '0');
33
+ svg.setAttribute('height', '0');
34
+ svg.setAttribute('aria-hidden', 'true');
35
+ svg.style.position = 'absolute';
36
+ svg.style.pointerEvents = 'none';
37
+ defs = document.createElementNS(SVG_NS, 'defs');
38
+ svg.appendChild(defs);
39
+ document.body.appendChild(svg);
40
+ return defs;
41
+ };
42
+
43
+ const update = () => {
44
+ const on = root.dataset.buttons === 'frosted' && !reduce?.matches;
45
+ const panels = on ? [...document.querySelectorAll('[data-glass-panel]')] : [];
46
+ for (const [el, f] of made) {
47
+ if (panels.includes(el)) continue;
48
+ el.style.removeProperty('--lg-lens');
49
+ document.getElementById(f.id)?.remove();
50
+ made.delete(el);
51
+ }
52
+ for (const el of panels) {
53
+ const w = Math.round(el.offsetWidth);
54
+ const h = Math.round(el.offsetHeight);
55
+ if (w < 20 || h < 20) continue;
56
+ const had = made.get(el);
57
+ if (had && had.w === w && had.h === h) continue;
58
+ const kind = KINDS[el.dataset.glassPanel] || KINDS.side;
59
+ const id = had?.id || `lg-lens-${++n}`;
60
+ document.getElementById(id)?.remove();
61
+ const filter = document.createElementNS(SVG_NS, 'filter');
62
+ filter.setAttribute('id', id);
63
+ for (const [k, v] of Object.entries({ x: '0', y: '0', width: '100%', height: '100%', 'color-interpolation-filters': 'sRGB' })) filter.setAttribute(k, v);
64
+ const image = document.createElementNS(SVG_NS, 'feImage');
65
+ for (const [k, v] of Object.entries({ x: '0', y: '0', width: String(w), height: String(h), preserveAspectRatio: 'none', result: 'map' })) image.setAttribute(k, v);
66
+ image.setAttribute('href', lensMap(w, h, Math.min(kind.r, Math.floor(Math.min(w, h) / 2)), kind.bezel));
67
+ const shift = document.createElementNS(SVG_NS, 'feDisplacementMap');
68
+ for (const [k, v] of Object.entries({ in: 'SourceGraphic', in2: 'map', scale: String(kind.scale), xChannelSelector: 'R', yChannelSelector: 'G' })) shift.setAttribute(k, v);
69
+ filter.append(image, shift);
70
+ ensureDefs().appendChild(filter);
71
+ el.style.setProperty('--lg-lens', `url(#${id})`);
72
+ made.set(el, { id, w, h });
73
+ }
74
+ };
75
+ const schedule = () => { clearTimeout(timer); timer = setTimeout(update, 150); };
76
+
77
+ update();
78
+ const ro = new ResizeObserver(schedule);
79
+ const watchSizes = () => { ro.disconnect(); document.querySelectorAll('[data-glass-panel]').forEach((el) => ro.observe(el)); };
80
+ watchSizes();
81
+ // Panels open and close; the look changes.
82
+ const mo = new MutationObserver((records) => {
83
+ if (records.some((r) => r.type === 'attributes' || [...r.addedNodes, ...r.removedNodes].some((x) => x.nodeType === 1 && (x.matches?.('[data-glass-panel]') || x.querySelector?.('[data-glass-panel]'))))) {
84
+ watchSizes();
85
+ schedule();
86
+ }
87
+ });
88
+ mo.observe(document.body, { childList: true, subtree: true });
89
+ mo.observe(root, { attributes: true, attributeFilter: ['data-buttons'] });
90
+ reduce?.addEventListener?.('change', schedule);
91
+ return () => {
92
+ clearTimeout(timer);
93
+ ro.disconnect();
94
+ mo.disconnect();
95
+ reduce?.removeEventListener?.('change', schedule);
96
+ };
97
+ }, []);
98
+ return null;
99
+ }
@@ -31,8 +31,8 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
31
31
  {/* Table header */}
32
32
  <div style={{
33
33
  display: 'grid', gridTemplateColumns: '40px 1fr 50px 50px 50px 80px',
34
- gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: '#555',
35
- borderBottom: '1px solid rgba(255,255,255,0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
34
+ gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: 'var(--sd-fg-5, #555)',
35
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
36
36
  }}>
37
37
  <span>#</span><span>Bridge</span><span>S</span><span>A</span><span>Total</span><span>Value</span>
38
38
  </div>
@@ -41,13 +41,13 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
41
41
  style={{
42
42
  display: 'grid', gridTemplateColumns: '40px 1fr 50px 50px 50px 80px',
43
43
  gap: 8, padding: '10px 12px', alignItems: 'center', cursor: 'pointer',
44
- borderBottom: '1px solid rgba(255,255,255,0.04)',
44
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)',
45
45
  transition: 'background 0.1s',
46
46
  }}
47
- onMouseEnter={e => e.currentTarget.style.background = 'rgba(255,255,255,0.04)'}
47
+ onMouseEnter={e => e.currentTarget.style.background = 'rgba(var(--sd-ink, 255, 255, 255), 0.04)'}
48
48
  onMouseLeave={e => e.currentTarget.style.background = 'transparent'}
49
49
  >
50
- <span style={{ fontSize: 12, fontWeight: 700, color: '#444' }}>{i + 1}</span>
50
+ <span style={{ fontSize: 12, fontWeight: 700, color: 'var(--sd-fg-5, #444)' }}>{i + 1}</span>
51
51
  <div style={{ display: 'flex', alignItems: 'center', gap: 8, minWidth: 0 }}>
52
52
  {localPhoto(cl.bridge.profile_image_url) ? (
53
53
  <img src={localPhoto(cl.bridge.profile_image_url)} alt="" style={{
@@ -62,17 +62,17 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
62
62
  }}>{cl.bridge.name?.charAt(0)}</div>
63
63
  )}
64
64
  <div style={{ minWidth: 0 }}>
65
- <div style={{ fontSize: 12, fontWeight: 600, color: '#fff', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
65
+ <div style={{ fontSize: 12, fontWeight: 600, color: 'var(--sd-fg-1, #fff)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
66
66
  {cl.bridge.name}
67
67
  </div>
68
68
  <div style={{ fontSize: 9, color: TIER_COLORS[cl.bridge.tier], fontWeight: 600 }}>{cl.bridge.tier}-Tier</div>
69
69
  </div>
70
70
  </div>
71
- <span style={{ fontSize: 13, fontWeight: 800, color: '#FFD700' }}>{cl.sCount}</span>
72
- <span style={{ fontSize: 13, fontWeight: 700, color: '#9B59B6' }}>{cl.aCount}</span>
73
- <span style={{ fontSize: 12, color: '#888' }}>{cl.total}</span>
71
+ <span style={{ fontSize: 13, fontWeight: 800, color: 'var(--sd-gold, #FFD700)' }}>{cl.sCount}</span>
72
+ <span style={{ fontSize: 13, fontWeight: 700, color: 'var(--sd-purple, #9B59B6)' }}>{cl.aCount}</span>
73
+ <span style={{ fontSize: 12, color: 'var(--sd-fg-3, #888)' }}>{cl.total}</span>
74
74
  <div>
75
- <div style={{ height: 6, background: 'rgba(255,255,255,0.06)', borderRadius: 3 }}>
75
+ <div style={{ height: 6, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', borderRadius: 3 }}>
76
76
  <div style={{
77
77
  height: '100%', borderRadius: 3,
78
78
  background: `linear-gradient(90deg, ${TIER_COLORS[cl.bridge.tier]}, #FF6B35)`,
@@ -97,8 +97,8 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
97
97
  {/* Table header */}
98
98
  <div style={{
99
99
  display: 'grid', gridTemplateColumns: '40px 36px 1fr 60px 120px',
100
- gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: '#555',
101
- borderBottom: '1px solid rgba(255,255,255,0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
100
+ gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: 'var(--sd-fg-5, #555)',
101
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
102
102
  }}>
103
103
  <span>#</span><span></span><span>Name</span><span>Score</span><span>Power</span>
104
104
  </div>
@@ -107,14 +107,14 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
107
107
  style={{
108
108
  display: 'grid', gridTemplateColumns: '40px 36px 1fr 60px 120px',
109
109
  gap: 8, padding: '8px 12px', alignItems: 'center', cursor: 'pointer',
110
- borderBottom: '1px solid rgba(255,255,255,0.04)',
110
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)',
111
111
  background: i < 3 ? `${TIER_COLORS[c.tier]}08` : 'transparent',
112
112
  transition: 'background 0.1s',
113
113
  }}
114
- onMouseEnter={e => e.currentTarget.style.background = 'rgba(255,255,255,0.04)'}
114
+ onMouseEnter={e => e.currentTarget.style.background = 'rgba(var(--sd-ink, 255, 255, 255), 0.04)'}
115
115
  onMouseLeave={e => e.currentTarget.style.background = i < 3 ? `${TIER_COLORS[c.tier]}08` : 'transparent'}
116
116
  >
117
- <span style={{ fontSize: 12, fontWeight: 700, color: i < 3 ? TIER_COLORS[c.tier] : '#444' }}>{i + 1}</span>
117
+ <span style={{ fontSize: 12, fontWeight: 700, color: i < 3 ? TIER_COLORS[c.tier] : 'var(--sd-fg-5, #444)' }}>{i + 1}</span>
118
118
  {localPhoto(c.profile_image_url) ? (
119
119
  <img src={localPhoto(c.profile_image_url)} alt="" style={{
120
120
  width: 28, height: 28, borderRadius: '50%', objectFit: 'cover',
@@ -123,19 +123,19 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
123
123
  ) : (
124
124
  <div style={{
125
125
  width: 28, height: 28, borderRadius: '50%', fontSize: 10, fontWeight: 700,
126
- background: TIER_COLORS[c.tier], color: c.tier === 'S' ? '#000' : '#fff',
126
+ background: TIER_COLORS[c.tier], color: c.tier === 'S' ? '#000' : 'var(--sd-fg-1, #fff)',
127
127
  display: 'flex', alignItems: 'center', justifyContent: 'center',
128
128
  }}>{c.name?.charAt(0)}</div>
129
129
  )}
130
130
  <div style={{ minWidth: 0 }}>
131
- <div style={{ fontSize: 12, fontWeight: 600, color: '#fff', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</div>
132
- <div style={{ fontSize: 9, color: '#666', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.headline?.substring(0, 45)}</div>
131
+ <div style={{ fontSize: 12, fontWeight: 600, color: 'var(--sd-fg-1, #fff)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</div>
132
+ <div style={{ fontSize: 9, color: 'var(--sd-fg-4, #666)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.headline?.substring(0, 45)}</div>
133
133
  </div>
134
134
  <div style={{ textAlign: 'center' }}>
135
135
  <span style={{ fontSize: 13, fontWeight: 800, color: TIER_COLORS[c.tier] }}>{parseFloat(c.power_score || 0).toFixed(1)}</span>
136
- <div style={{ fontSize: 8, color: '#555' }}>{c.tier}</div>
136
+ <div style={{ fontSize: 8, color: 'var(--sd-fg-5, #555)' }}>{c.tier}</div>
137
137
  </div>
138
- <div style={{ height: 6, background: 'rgba(255,255,255,0.06)', borderRadius: 3 }}>
138
+ <div style={{ height: 6, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', borderRadius: 3 }}>
139
139
  <div style={{
140
140
  height: '100%', borderRadius: 3,
141
141
  background: TIER_COLORS[c.tier],
@@ -14,7 +14,7 @@ import { Seg, panelHeading } from './PathsAnalyzer';
14
14
 
15
15
  export const PHYSICS_OFF = Object.freeze({ live: false, spread: 1, pull: 1, links: 1 });
16
16
 
17
- const hint = { fontSize: 10.5, color: '#667', lineHeight: 1.45, marginTop: 6 };
17
+ const hint = { fontSize: 10.5, color: 'var(--sd-fg-4, #667)', lineHeight: 1.45, marginTop: 6 };
18
18
  const SLIDERS = [
19
19
  { key: 'spread', label: 'Spread', min: 0.2, max: 4, step: 0.05, tip: 'How hard bubbles push each other apart.' },
20
20
  { key: 'pull', label: 'Pull to their group', min: 0, max: 4, step: 0.05, tip: 'How hard each bubble keeps to its sector. At 0 they find their own shape.' },
@@ -35,19 +35,19 @@ export function MapLook({ colourBy, onColourBy, physics, onPhysics, heatHint })
35
35
  <div style={{ marginTop: 8 }}>
36
36
  {SLIDERS.map((s) => (
37
37
  <label key={s.key} title={s.tip} style={{ display: 'block', marginBottom: 6 }}>
38
- <div style={{ display: 'flex', justifyContent: 'space-between', fontSize: 11, color: '#aab' }}>
38
+ <div style={{ display: 'flex', justifyContent: 'space-between', fontSize: 11, color: 'var(--sd-fg-3, #aab)' }}>
39
39
  <span>{s.label}</span>
40
- <span style={{ color: physics[s.key] === PHYSICS_OFF[s.key] ? '#556' : '#cfe6f7', fontVariantNumeric: 'tabular-nums' }}>{physics[s.key].toFixed(2)}×</span>
40
+ <span style={{ color: physics[s.key] === PHYSICS_OFF[s.key] ? 'var(--sd-fg-5, #556)' : 'var(--sd-fg-1, #cfe6f7)', fontVariantNumeric: 'tabular-nums' }}>{physics[s.key].toFixed(2)}×</span>
41
41
  </div>
42
42
  <input type="range" min={s.min} max={s.max} step={s.step} value={physics[s.key]}
43
43
  onChange={(e) => onPhysics({ ...physics, [s.key]: Number(e.target.value) })}
44
- style={{ width: '100%', accentColor: '#3498DB' }} />
44
+ style={{ width: '100%', accentColor: 'var(--sd-accent, #3498DB)' }} />
45
45
  </label>
46
46
  ))}
47
47
  <div style={hint}>Drag a bubble and the ones joined to it follow. Click still opens it.</div>
48
48
  <button type="button" onClick={() => onPhysics({ ...PHYSICS_OFF, live: true })} style={{
49
49
  marginTop: 6, padding: '4px 10px', borderRadius: 6, fontSize: 10.5, cursor: 'pointer',
50
- border: '1px solid rgba(255,255,255,0.1)', background: 'rgba(255,255,255,0.04)', color: '#aab',
50
+ border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.04)', color: 'var(--sd-fg-3, #aab)',
51
51
  }}>Reset the forces</button>
52
52
  </div>
53
53
  ) : (
@@ -62,36 +62,36 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
62
62
  return (
63
63
  <div style={CARD}>
64
64
  <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 10 }}>
65
- <h3 style={{ fontSize: 14, fontWeight: 700, margin: 0, color: '#3498DB' }}>
65
+ <h3 style={{ fontSize: 14, fontWeight: 700, margin: 0, color: 'var(--sd-blue, #3498DB)' }}>
66
66
  2nd-degree mapping
67
67
  </h3>
68
- <span style={{ fontSize: 12, color: done ? '#00ff88' : '#8b9a9a', fontWeight: 600 }}>
68
+ <span style={{ fontSize: 12, color: done ? 'var(--sd-green, #00ff88)' : 'var(--sd-fg-3, #8b9a9a)', fontWeight: 600 }}>
69
69
  {done ? 'Everything reachable is mapped' : `${m.percent}%`}
70
70
  </span>
71
71
  </div>
72
72
 
73
- <div style={{ ...BAR, display: 'flex', overflow: 'hidden', background: 'rgba(255,255,255,0.06)' }}>
73
+ <div style={{ ...BAR, display: 'flex', overflow: 'hidden', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)' }}>
74
74
  <div style={{ width: `${pct(m.mapped)}%`, background: '#00ff88' }} />
75
- <div style={{ width: `${pct(m.hidden)}%`, background: 'rgba(255,255,255,0.22)' }} />
75
+ <div style={{ width: `${pct(m.hidden)}%`, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.22)' }} />
76
76
  </div>
77
77
 
78
78
  <div style={{ display: 'flex', gap: 16, marginTop: 10, fontSize: 12, flexWrap: 'wrap' }}>
79
79
  <Key color="#00ff88" label="mapped" value={m.mapped} />
80
- <Key color="rgba(255,255,255,0.35)" label="hidden" value={m.hidden} />
81
- <Key color="rgba(255,255,255,0.12)" label="to go" value={m.todo} />
82
- <span style={{ color: '#667', marginLeft: 'auto' }}>of {m.total}</span>
80
+ <Key color="rgba(var(--sd-ink, 255, 255, 255), 0.35)" label="hidden" value={m.hidden} />
81
+ <Key color="rgba(var(--sd-ink, 255, 255, 255), 0.12)" label="to go" value={m.todo} />
82
+ <span style={{ color: 'var(--sd-fg-4, #667)', marginLeft: 'auto' }}>of {m.total}</span>
83
83
  </div>
84
84
 
85
85
  {m.hidden > 0 && (
86
- <p style={{ fontSize: 11.5, color: '#667', margin: '10px 0 0', lineHeight: 1.6 }}>
87
- Hidden means they keep their connections private — that will not change, and it
86
+ <p style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #667)', margin: '10px 0 0', lineHeight: 1.6 }}>
87
+ Hidden means they keep their connections private. That will not change, and it
88
88
  does not count against you.
89
89
  </p>
90
90
  )}
91
91
 
92
92
  {!done && (
93
- <p style={{ fontSize: 11.5, color: '#8b9a9a', margin: '10px 0 0', lineHeight: 1.6 }}>
94
- {m.todo} left — about <b>{m.batches} {m.batches === 1 ? 'batch' : 'batches'}</b> of {BATCH}.
93
+ <p style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)', margin: '10px 0 0', lineHeight: 1.6 }}>
94
+ {m.todo} left, about <b>{m.batches} {m.batches === 1 ? 'batch' : 'batches'}</b> of {BATCH}.
95
95
  Run one, leave it a while, run another. Long unbroken runs are what gets an
96
96
  account restricted.
97
97
  </p>
@@ -107,12 +107,12 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
107
107
  <span style={{ width: 14, color: TIER_COLORS[t], fontWeight: 700 }}>{t}</span>
108
108
  <div style={{
109
109
  flex: 1, height: 5, borderRadius: 3, display: 'flex',
110
- overflow: 'hidden', background: 'rgba(255,255,255,0.06)',
110
+ overflow: 'hidden', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)',
111
111
  }}>
112
112
  <div style={{ width: `${(row.mapped / row.total) * 100}%`, background: TIER_COLORS[t] }} />
113
- <div style={{ width: `${(row.hidden / row.total) * 100}%`, background: 'rgba(255,255,255,0.22)' }} />
113
+ <div style={{ width: `${(row.hidden / row.total) * 100}%`, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.22)' }} />
114
114
  </div>
115
- <span style={{ color: '#667', width: 62, textAlign: 'right' }}>
115
+ <span style={{ color: 'var(--sd-fg-4, #667)', width: 62, textAlign: 'right' }}>
116
116
  {row.mapped}/{row.total}
117
117
  </span>
118
118
  </div>
@@ -125,9 +125,9 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
125
125
 
126
126
  function Key({ color, label, value }) {
127
127
  return (
128
- <span style={{ display: 'flex', alignItems: 'center', gap: 6, color: '#8b9a9a' }}>
128
+ <span style={{ display: 'flex', alignItems: 'center', gap: 6, color: 'var(--sd-fg-3, #8b9a9a)' }}>
129
129
  <span style={{ width: 8, height: 8, borderRadius: 2, background: color }} />
130
- <b style={{ color: '#e2e8f0' }}>{value}</b> {label}
130
+ <b style={{ color: 'var(--sd-fg-1, #e2e8f0)' }}>{value}</b> {label}
131
131
  </span>
132
132
  );
133
133
  }
@@ -27,7 +27,7 @@ const ago = (when) => {
27
27
  };
28
28
  const btn = {
29
29
  padding: '8px 12px', borderRadius: 8, fontSize: 12, fontWeight: 700, cursor: 'pointer', textAlign: 'left',
30
- border: '1px solid rgba(255,255,255,0.12)', background: 'rgba(255,255,255,0.05)', color: '#ddd',
30
+ border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-1, #ddd)',
31
31
  };
32
32
 
33
33
  export default function NoteDetail({ note, connections = [], degree2 = [], onBack, onSelect, onOpenCircle, onShowInSeparation }) {
@@ -40,14 +40,14 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
40
40
 
41
41
  return (
42
42
  <div>
43
- <button type="button" onClick={onBack} style={{ background: 'none', border: 'none', color: '#aaa', cursor: 'pointer', fontSize: 12, padding: 0, marginBottom: 12 }}>
43
+ <button type="button" onClick={onBack} style={{ background: 'none', border: 'none', color: 'var(--sd-fg-3, #aaa)', cursor: 'pointer', fontSize: 12, padding: 0, marginBottom: 12 }}>
44
44
  ← Back
45
45
  </button>
46
46
  <div style={{ display: 'flex', gap: 10, alignItems: 'flex-start' }}>
47
47
  <span style={{ fontSize: 22 }}>{note?.icon || '📌'}</span>
48
48
  <div style={{ minWidth: 0 }}>
49
- <div style={{ fontSize: 15, fontWeight: 800, color: '#fff', lineHeight: 1.35 }}>{note?.title}</div>
50
- <div style={{ fontSize: 11, color: '#777', marginTop: 3 }}>{ago(note?.created_at)}</div>
49
+ <div style={{ fontSize: 15, fontWeight: 800, color: 'var(--sd-fg-1, #fff)', lineHeight: 1.35 }}>{note?.title}</div>
50
+ <div style={{ fontSize: 11, color: 'var(--sd-fg-4, #777)', marginTop: 3 }}>{ago(note?.created_at)}</div>
51
51
  </div>
52
52
  </div>
53
53
 
@@ -57,26 +57,26 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
57
57
  <Avatar person={person} size={44} />
58
58
  <div style={{ minWidth: 0 }}>
59
59
  <div style={{ fontSize: 15, fontWeight: 800 }}>{person.name}</div>
60
- <div style={{ fontSize: 11.5, color: '#aab', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{person.headline || person.company || ''}</div>
60
+ <div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #aab)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{person.headline || person.company || ''}</div>
61
61
  <div style={{ fontSize: 11.5, fontWeight: 800, color: TIER[tier] || '#aaa', marginTop: 2 }}>
62
62
  {tier ? `${tier}-tier` : 'Not scored yet'}{Number.isFinite(score) ? ` · ${score.toFixed(1)}` : ''}
63
63
  </div>
64
64
  </div>
65
65
  </div>
66
66
  {addedBack && (
67
- <div style={{ marginTop: 12, fontSize: 12.5, color: '#ddd', lineHeight: 1.5 }}>
67
+ <div style={{ marginTop: 12, fontSize: 12.5, color: 'var(--sd-fg-1, #ddd)', lineHeight: 1.5 }}>
68
68
  <b>{person.name.split(' ')[0]}</b> added you back
69
69
  {via ? <>. You met through <b style={{ color: TIER[via.tier] || '#fff' }}>{via.name}</b>.</> : '.'}
70
70
  </div>
71
71
  )}
72
72
  {!addedBack && via && (
73
- <div style={{ marginTop: 12, fontSize: 12.5, color: '#ddd' }}>
73
+ <div style={{ marginTop: 12, fontSize: 12.5, color: 'var(--sd-fg-1, #ddd)' }}>
74
74
  {person.degree === 2 ? 'In the circle of ' : 'You met through '}<b>{via.name}</b>.
75
75
  </div>
76
76
  )}
77
77
  {VALUE[tier] && <div style={{ marginTop: 8, fontSize: 12.5, fontWeight: 700, color: TIER[tier] }}>{VALUE[tier]}</div>}
78
78
  {prestige >= 8 && (
79
- <div style={{ marginTop: 6, fontSize: 12, color: '#cfd3e6' }}>Works at a top company{person.company ? `, ${person.company}` : ''} (its score: {prestige}).</div>
79
+ <div style={{ marginTop: 6, fontSize: 12, color: 'var(--sd-fg-2, #cfd3e6)' }}>Works at a top company{person.company ? `, ${person.company}` : ''} (its score: {prestige}).</div>
80
80
  )}
81
81
  <div style={{ display: 'flex', flexDirection: 'column', gap: 6, marginTop: 14 }}>
82
82
  <button type="button" style={btn} onClick={() => onSelect?.(person)}>Open {person.name.split(' ')[0]}’s card →</button>
@@ -94,13 +94,13 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
94
94
 
95
95
  {people.length > 1 && (
96
96
  <div style={{ marginTop: 16 }}>
97
- <div style={{ fontSize: 10, fontWeight: 800, letterSpacing: 1, color: '#6b7090', textTransform: 'uppercase', marginBottom: 8 }}>Who</div>
97
+ <div style={{ fontSize: 10, fontWeight: 800, letterSpacing: 1, color: 'var(--sd-fg-4, #6b7090)', textTransform: 'uppercase', marginBottom: 8 }}>Who</div>
98
98
  {people.slice(0, 12).map((p) => (
99
99
  <button key={p.id} type="button" onClick={() => onSelect?.(p)} style={{ ...btn, display: 'flex', gap: 10, alignItems: 'center', width: '100%', marginBottom: 6, fontWeight: 600 }}>
100
100
  <Avatar person={p} size={26} />
101
101
  <span style={{ minWidth: 0, flex: 1 }}>
102
- <span style={{ display: 'block', color: '#fff' }}>{p.name}</span>
103
- <span style={{ display: 'block', fontSize: 10.5, color: '#8a8fa8', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.company || p.headline || ''}</span>
102
+ <span style={{ display: 'block', color: 'var(--sd-fg-1, #fff)' }}>{p.name}</span>
103
+ <span style={{ display: 'block', fontSize: 10.5, color: 'var(--sd-fg-3, #8a8fa8)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.company || p.headline || ''}</span>
104
104
  </span>
105
105
  <span style={{ fontSize: 11, fontWeight: 800, color: TIER[p.tier] || '#aaa' }}>{p.tier}</span>
106
106
  </button>
@@ -109,10 +109,10 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
109
109
  )}
110
110
 
111
111
  {note?.message && (
112
- <div style={{ marginTop: 14, fontSize: 12, color: '#999', lineHeight: 1.55 }}>{note.message}</div>
112
+ <div style={{ marginTop: 14, fontSize: 12, color: 'var(--sd-fg-3, #999)', lineHeight: 1.55 }}>{note.message}</div>
113
113
  )}
114
114
  {!person && !people.length && (
115
- <div style={{ marginTop: 10, fontSize: 11.5, color: '#667' }}>Nothing more on file about this one.</div>
115
+ <div style={{ marginTop: 10, fontSize: 11.5, color: 'var(--sd-fg-4, #667)' }}>Nothing more on file about this one.</div>
116
116
  )}
117
117
  </div>
118
118
  );
@@ -16,7 +16,7 @@ export default function OnboardingGate({ children }) {
16
16
  return (
17
17
  <div style={{
18
18
  minHeight: '100vh', display: 'flex', alignItems: 'center', justifyContent: 'center',
19
- background: 'var(--sd-page)', color: '#fff', padding: 24, textAlign: 'center',
19
+ background: 'var(--sd-page)', color: 'var(--sd-fg-1, #fff)', padding: 24, textAlign: 'center',
20
20
  fontFamily: 'var(--sd-font)',
21
21
  }}>
22
22
  {!ready ? (
@@ -26,9 +26,9 @@ export default function OnboardingGate({ children }) {
26
26
  <div style={{ fontSize: 18, fontWeight: 700, marginBottom: 8 }}>
27
27
  Can’t reach Six Degrees’ local server
28
28
  </div>
29
- <div style={{ color: '#888', fontSize: 14, lineHeight: 1.6 }}>
30
- The page loaded but the app behind it is not answering. If you started it
31
- from a terminal, check that window for an error, then reload this page.
29
+ <div style={{ color: 'var(--sd-fg-3, #888)', fontSize: 14, lineHeight: 1.6 }}>
30
+ The page loaded, but the app behind it isn’t answering. Quit Six Degrees and
31
+ open it again.
32
32
  </div>
33
33
  </div>
34
34
  )}