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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +3 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +14 -14
- package/.next/standalone/.next/routes-manifest.json +18 -0
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +26 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +26 -18
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +25 -16
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin-delete/route.js +2 -2
- package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin-update/route.js +2 -2
- package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bridges/route.js +2 -2
- package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bulk-import/route.js +2 -2
- package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +3 -3
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/company-scores/route.js +3 -3
- package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/connections/route.js +2 -2
- package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/backup/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/backup/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/backup/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/backup/route.js +7 -0
- package/.next/standalone/.next/server/app/api/data/backup/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/backup/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/csv/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/csv/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/csv/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/csv/route.js +8 -0
- package/.next/standalone/.next/server/app/api/data/csv/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/csv/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/export/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/import/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/restart/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/restore/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/data/restore/route/build-manifest.json +12 -0
- package/.next/standalone/.next/server/app/api/data/restore/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/data/restore/route.js +7 -0
- package/.next/standalone/.next/server/app/api/data/restore/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/data/restore/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/api/data/reveal/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/delete-cluster/route.js +2 -2
- package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/route.js +2 -2
- package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/route.js +2 -2
- package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js +2 -2
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/outreach/route.js +2 -2
- package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/queue/route.js +2 -2
- package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/scraper/route.js +4 -2
- package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js +3 -3
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +3 -3
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +3 -3
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/setup-profile/route.js +2 -2
- package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/crm/route.js +1 -1
- package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/messages/route.js +1 -1
- package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/route.js +2 -2
- package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/unlock/route.js +2 -2
- package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update-images/route.js +2 -2
- package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/users/route.js +2 -2
- package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/avatars/[file]/route.js +1 -1
- package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page.js +1 -1
- package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/import.html +1 -1
- package/.next/standalone/.next/server/app/import.rsc +32 -24
- package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +23 -18
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +29 -22
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +20 -15
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +29 -22
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/launch/page.js +1 -1
- package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/launch.html +2 -2
- package/.next/standalone/.next/server/app/launch.rsc +32 -24
- package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +23 -18
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths/page.js +1 -1
- package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths.html +1 -1
- package/.next/standalone/.next/server/app/paths.rsc +32 -24
- package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +21 -18
- package/.next/standalone/.next/server/app/profile/page.js +1 -1
- package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/profile.html +1 -1
- package/.next/standalone/.next/server/app/profile.rsc +32 -24
- package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +23 -18
- package/.next/standalone/.next/server/app/queue/page.js +1 -1
- package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/queue.html +1 -1
- package/.next/standalone/.next/server/app/queue.rsc +32 -24
- package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +20 -18
- package/.next/standalone/.next/server/app/scores/page.js +1 -1
- package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/scores.html +1 -1
- package/.next/standalone/.next/server/app/scores.rsc +32 -24
- package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +23 -18
- package/.next/standalone/.next/server/app/settings/page.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +32 -24
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -18
- package/.next/standalone/.next/server/app/setup/page.js +1 -1
- package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +1 -1
- package/.next/standalone/.next/server/app/setup.rsc +32 -24
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +21 -18
- package/.next/standalone/.next/server/app/social/page.js +1 -1
- package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/social.html +1 -1
- package/.next/standalone/.next/server/app/social.rsc +32 -24
- package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +32 -24
- package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +23 -18
- package/.next/standalone/.next/server/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__15wc9e-._.js → [root-of-the-server]__063s0x7._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__066rab1._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13dx4sd._.js → [root-of-the-server]__0_4y8z7._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fooke1._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t6y79e._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x29muh._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a_6x37._.js +8 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an_8pa._.js +7 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ducpz2._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xhyinn._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +1 -1
- package/.next/standalone/.next/server/chunks/_02twlca._.js +1 -1
- package/.next/standalone/.next/server/chunks/_072jl0y._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0sqqpzb._.js +3 -0
- package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
- package/.next/standalone/.next/server/chunks/_1fn30_l._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_backup_route_actions_0zoj04p.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_csv_route_actions_0l6m7lg.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restore_route_actions_0-b05bv.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +4 -0
- package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +4 -0
- package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +4 -0
- package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +174 -0
- package/.next/standalone/.next/server/chunks/lib_linkedin-export_12imqxg.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_rpc_005abye.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0b17r6v.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0doq0t-.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0fd2rlw.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0is4qoc.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0jnfp2e.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0nef_n7.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0plrzra.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_13a4m0c.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1if17c-.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1j-zw7v.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1sngt-q.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1v2sgme.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1vh-tgx.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1zaubz7.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qd8pzm._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qdeuyo._.js → [root-of-the-server]__1-012q1._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_01o3i5y._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_02sband._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_06rgzfh._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0gy11ar._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_189g8lg._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1k9qfsk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +25 -2
- package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +25 -2
- package/.next/standalone/.next/server/chunks/ssr/app_components_CompanyScores_1g0mytz.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +25 -13
- package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +11 -11
- package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +12 -13
- package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{lib_1c4ieuw._.js → lib_csv_1ttiu_h.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/lib_separation_1305zsx.js +3 -0
- package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/03-_esd2x_yk6.js +1 -0
- package/.next/standalone/.next/static/chunks/03-demj2iy-0p.js +44 -0
- package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
- package/.next/standalone/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
- package/.next/standalone/.next/static/chunks/0e3g0sil79cus.js +21 -0
- package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
- package/.next/standalone/.next/static/chunks/0p3g5tfostsep.js +7 -0
- package/.next/standalone/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
- package/.next/standalone/.next/static/chunks/163b-20vwa06i.js +34 -0
- package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
- package/.next/standalone/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
- package/.next/standalone/.next/static/chunks/1qbjermbf68xj.js +1 -0
- package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
- package/.next/standalone/.next/static/chunks/23_1z47al92nz.js +57 -0
- package/.next/standalone/.next/static/chunks/260bomtr214m8.js +34 -0
- package/.next/standalone/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
- package/.next/standalone/.next/static/chunks/2xk2ra4piiuod.js +34 -0
- package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
- package/.next/standalone/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
- package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
- package/.next/standalone/.next/static/chunks/3b0-14cxqsprt.js +1 -0
- package/.next/standalone/.next/static/chunks/3jarus1_38s2z.js +1 -0
- package/.next/standalone/.next/static/chunks/3ssu341hav_sq.css +3 -0
- package/.next/standalone/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
- package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
- package/.next/standalone/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
- package/.next/standalone/CHANGELOG.md +143 -0
- package/.next/standalone/README.md +71 -49
- package/.next/standalone/SECURITY.md +17 -11
- package/.next/standalone/app/api/data/backup/route.js +25 -0
- package/.next/standalone/app/api/data/csv/route.js +74 -0
- package/.next/standalone/app/api/data/export/route.js +1 -1
- package/.next/standalone/app/api/data/restore/route.js +48 -0
- package/.next/standalone/app/api/data/reveal/route.js +19 -6
- package/.next/standalone/app/api/data/route.js +15 -4
- package/.next/standalone/app/api/ingest/route.js +1 -1
- package/.next/standalone/app/api/queue/route.js +1 -1
- package/.next/standalone/app/api/scraper/route.js +120 -32
- package/.next/standalone/app/api/social/crm/route.js +2 -1
- package/.next/standalone/app/components/AppHeader.js +20 -16
- package/.next/standalone/app/components/AppTabs.js +8 -8
- package/.next/standalone/app/components/AutoScanButton.js +2 -2
- package/.next/standalone/app/components/Avatar.js +1 -1
- package/.next/standalone/app/components/ChainView.js +184 -112
- package/.next/standalone/app/components/CirclePanel.js +16 -16
- package/.next/standalone/app/components/ClusterSpinner.js +64 -0
- package/.next/standalone/app/components/CompanyScores.js +20 -20
- package/.next/standalone/app/components/EmptyState.js +39 -18
- package/.next/standalone/app/components/FieldStep.js +15 -13
- package/.next/standalone/app/components/FilterPanel.js +17 -17
- package/.next/standalone/app/components/ForceGraph.js +49 -14
- package/.next/standalone/app/components/GalaxyLab.js +33 -33
- package/.next/standalone/app/components/GridView.js +18 -18
- package/.next/standalone/app/components/LegacyScoresCard.js +10 -11
- package/.next/standalone/app/components/LinkedInLimits.js +24 -19
- package/.next/standalone/app/components/LiquidGlass.js +99 -0
- package/.next/standalone/app/components/ListView.js +20 -20
- package/.next/standalone/app/components/MapControls.js +5 -5
- package/.next/standalone/app/components/MappingProgress.js +16 -16
- package/.next/standalone/app/components/NoteDetail.js +13 -13
- package/.next/standalone/app/components/OnboardingGate.js +4 -4
- package/.next/standalone/app/components/OutlinkQuest.js +25 -25
- package/.next/standalone/app/components/PathsAnalyzer.js +37 -36
- package/.next/standalone/app/components/PeopleMap.js +21 -21
- package/.next/standalone/app/components/RingsView.js +11 -11
- package/.next/standalone/app/components/ScanRadar.js +84 -39
- package/.next/standalone/app/components/ScanStatusBar.js +22 -18
- package/.next/standalone/app/components/ScanTrail.js +8 -5
- package/.next/standalone/app/components/SeparationView.js +168 -104
- package/.next/standalone/app/components/Sidebar.js +161 -161
- package/.next/standalone/app/components/StaleServerBanner.js +4 -4
- package/.next/standalone/app/components/TheirCircle.js +26 -26
- package/.next/standalone/app/components/ThemeDefs.js +42 -0
- package/.next/standalone/app/components/ThemeLoader.js +20 -1
- package/.next/standalone/app/components/UpdatePanel.js +22 -22
- package/.next/standalone/app/components/UserProvider.js +22 -15
- package/.next/standalone/app/components/settings/AppearanceSection.js +47 -24
- package/.next/standalone/app/components/settings/DataSection.js +276 -109
- package/.next/standalone/app/components/settings/NetworkHealthSection.js +13 -13
- package/.next/standalone/app/components/settings/SectorPicker.js +12 -12
- package/.next/standalone/app/components/settings/SectorSection.js +13 -14
- package/.next/standalone/app/components/settings/TierSection.js +9 -9
- package/.next/standalone/app/components/settings/TitleSection.js +11 -11
- package/.next/standalone/app/components/settings/UsageSection.js +313 -0
- package/.next/standalone/app/components/ui.js +8 -8
- package/.next/standalone/app/globals.css +159 -2
- package/.next/standalone/app/import/page.js +94 -38
- package/.next/standalone/app/launch/page.js +5 -5
- package/.next/standalone/app/layout.js +6 -2
- package/.next/standalone/app/page.js +53 -37
- package/.next/standalone/app/paths/page.js +63 -63
- package/.next/standalone/app/profile/page.js +58 -58
- package/.next/standalone/app/queue/page.js +54 -54
- package/.next/standalone/app/scores/page.js +2 -2
- package/.next/standalone/app/settings/page.js +16 -13
- package/.next/standalone/app/setup/page.js +221 -125
- package/.next/standalone/app/social/Crm.js +63 -62
- package/.next/standalone/app/social/SocialHub.js +22 -22
- package/.next/standalone/app/social/Thread.js +7 -7
- package/.next/standalone/app/social/page.js +2 -2
- package/.next/standalone/lib/backups.js +458 -0
- package/.next/standalone/lib/chain-layout.js +32 -0
- package/.next/standalone/lib/csv-store.js +131 -0
- package/.next/standalone/lib/csv.js +137 -39
- package/.next/standalone/lib/data-folder.js +19 -3
- package/.next/standalone/lib/data-import.js +5 -2
- package/.next/standalone/lib/db-client.js +78 -20
- package/.next/standalone/lib/demo.js +5 -4
- package/.next/standalone/lib/galaxy-export.js +9 -2
- package/.next/standalone/lib/galaxy-lab.js +19 -5
- package/.next/standalone/lib/galaxy-layouts.js +43 -0
- package/.next/standalone/lib/gate.js +10 -4
- package/.next/standalone/lib/ingest.js +1 -1
- package/.next/standalone/lib/linkedin-limits.js +212 -11
- package/.next/standalone/lib/liquid-glass.js +59 -0
- package/.next/standalone/lib/notifications.js +13 -0
- package/.next/standalone/lib/scan-pace.js +11 -0
- package/.next/standalone/lib/scan-progress.js +20 -0
- package/.next/standalone/lib/scan-risk.js +44 -0
- package/.next/standalone/lib/scanner-setup.js +97 -15
- package/.next/standalone/lib/scraper-client.js +17 -3
- package/.next/standalone/lib/search-risk.js +7 -3
- package/.next/standalone/lib/settings-client.js +5 -3
- package/.next/standalone/lib/settings.js +10 -0
- package/.next/standalone/lib/social-store.js +3 -2
- package/.next/standalone/lib/synced-setting.js +46 -0
- package/.next/standalone/lib/theme-store.js +42 -10
- package/.next/standalone/lib/themes.js +111 -21
- package/.next/standalone/lib/usage.js +195 -0
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/scrape.py +26 -2
- package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
- package/.next/static/chunks/03-demj2iy-0p.js +44 -0
- package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
- package/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
- package/.next/static/chunks/0e3g0sil79cus.js +21 -0
- package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
- package/.next/static/chunks/0p3g5tfostsep.js +7 -0
- package/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
- package/.next/static/chunks/163b-20vwa06i.js +34 -0
- package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
- package/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
- package/.next/static/chunks/1qbjermbf68xj.js +1 -0
- package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
- package/.next/static/chunks/23_1z47al92nz.js +57 -0
- package/.next/static/chunks/260bomtr214m8.js +34 -0
- package/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
- package/.next/static/chunks/2xk2ra4piiuod.js +34 -0
- package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
- package/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
- package/.next/static/chunks/34g73qhayuevu.js +1 -0
- package/.next/static/chunks/3b0-14cxqsprt.js +1 -0
- package/.next/static/chunks/3jarus1_38s2z.js +1 -0
- package/.next/static/chunks/3ssu341hav_sq.css +3 -0
- package/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
- package/.next/static/chunks/43pg2sursiypz.js +1 -0
- package/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
- package/CHANGELOG.md +143 -0
- package/README.md +71 -49
- package/SECURITY.md +17 -11
- package/lib/backups.js +458 -0
- package/lib/chain-layout.js +32 -0
- package/lib/csv-store.js +131 -0
- package/lib/csv.js +137 -39
- package/lib/data-folder.js +19 -3
- package/lib/data-import.js +5 -2
- package/lib/db-client.js +78 -20
- package/lib/demo.js +5 -4
- package/lib/galaxy-export.js +9 -2
- package/lib/galaxy-lab.js +19 -5
- package/lib/galaxy-layouts.js +43 -0
- package/lib/gate.js +10 -4
- package/lib/ingest.js +1 -1
- package/lib/linkedin-limits.js +212 -11
- package/lib/liquid-glass.js +59 -0
- package/lib/notifications.js +13 -0
- package/lib/scan-pace.js +11 -0
- package/lib/scan-progress.js +20 -0
- package/lib/scan-risk.js +44 -0
- package/lib/scanner-setup.js +97 -15
- package/lib/scraper-client.js +17 -3
- package/lib/search-risk.js +7 -3
- package/lib/settings-client.js +5 -3
- package/lib/settings.js +10 -0
- package/lib/social-store.js +3 -2
- package/lib/synced-setting.js +46 -0
- package/lib/theme-store.js +42 -10
- package/lib/themes.js +111 -21
- package/lib/usage.js +195 -0
- package/package.json +1 -1
- package/scripts/scrape.py +26 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +0 -8
- package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +0 -8
- package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +0 -8
- package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +0 -174
- package/.next/standalone/.next/server/chunks/lib_rpc_04s8mzr.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_053z7as.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0b_-2te.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0dhbxdm.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0dxlk31.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0f8b-qc.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0pzie7_.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0r76fq_.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_0ut7pjp.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_15zyqaz.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_18zpjtq.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_1a8xkiz.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_1e_55xo.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_1oxfd1_.js +0 -3
- package/.next/standalone/.next/server/chunks/lib_rpc_1s0lod0.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1-658fq._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +0 -3
- package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +0 -22
- package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
- package/.next/standalone/.next/static/chunks/0i02yxppzds1o.js +0 -1
- package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
- package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +0 -1
- package/.next/standalone/.next/static/chunks/0vo-l8hxneba6.css +0 -3
- package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
- package/.next/standalone/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
- package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +0 -34
- package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
- package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
- package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
- package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +0 -45
- package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +0 -1
- package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +0 -11
- package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
- package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +0 -1
- package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
- package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +0 -1
- package/.next/standalone/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
- package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +0 -11
- package/.next/static/chunks/02pq76u7y4v9-.js +0 -22
- package/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
- package/.next/static/chunks/0i02yxppzds1o.js +0 -1
- package/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
- package/.next/static/chunks/0oyslj62jkubd.js +0 -1
- package/.next/static/chunks/0vo-l8hxneba6.css +0 -3
- package/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
- package/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
- package/.next/static/chunks/172e10mi-tpo_.js +0 -34
- package/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
- package/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
- package/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
- package/.next/static/chunks/1m3017gp790pw.js +0 -45
- package/.next/static/chunks/1t20e8u0st7ep.js +0 -1
- package/.next/static/chunks/2-ch9rm27eril.js +0 -11
- package/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
- package/.next/static/chunks/3bp284gjf7dyq.js +0 -1
- package/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
- package/.next/static/chunks/3l4t8je6iguzc.js +0 -1
- package/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
- package/.next/static/chunks/42m0bqr8pbovz.js +0 -11
- /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,85957,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(33821),o=e.i(99883),i=e.i(18566),l=e.i(40996),s=e.i(19821),a=e.i(64745),d=e.i(7837),c=e.i(2776);e.i(47716);var p=e.i(36534),h=e.i(77899),g=e.i(17983),u=e.i(43079),f=e.i(52048),x=e.i(47560),y=e.i(94657),m=e.i(7214),v=e.i(89154),b=e.i(82044),k=e.i(39160);let j=Object.freeze({live:!1,spread:1,pull:1,links:1}),S={fontSize:10.5,color:"var(--sd-fg-4, #667)",lineHeight:1.45,marginTop:6},w=[{key:"spread",label:"Spread",min:.2,max:4,step:.05,tip:"How hard bubbles push each other apart."},{key:"pull",label:"Pull to their group",min:0,max:4,step:.05,tip:"How hard each bubble keeps to its sector. At 0 they find their own shape."},{key:"links",label:"Pull along lines",min:0,max:6,step:.05,tip:"How hard two bubbles joined by a line pull together."}];function M({colourBy:e,onColourBy:n,physics:r,onPhysics:o,heatHint:i}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:G,children:"Colour"}),(0,t.jsx)(U,{value:e,onChange:n,options:[["sector","Sector"],["heat","Heat"]]}),"heat"===e&&(0,t.jsx)("div",{style:S,children:i}),(0,t.jsx)("div",{style:G,children:"Physics"}),(0,t.jsx)(U,{value:r.live?"on":"off",onChange:e=>o({...r,live:"on"===e}),options:[["off","Still"],["on","Live"]]}),r.live?(0,t.jsxs)("div",{style:{marginTop:8},children:[w.map(e=>(0,t.jsxs)("label",{title:e.tip,style:{display:"block",marginBottom:6},children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",fontSize:11,color:"var(--sd-fg-3, #aab)"},children:[(0,t.jsx)("span",{children:e.label}),(0,t.jsxs)("span",{style:{color:r[e.key]===j[e.key]?"var(--sd-fg-5, #556)":"var(--sd-fg-1, #cfe6f7)",fontVariantNumeric:"tabular-nums"},children:[r[e.key].toFixed(2),"×"]})]}),(0,t.jsx)("input",{type:"range",min:e.min,max:e.max,step:e.step,value:r[e.key],onChange:t=>o({...r,[e.key]:Number(t.target.value)}),style:{width:"100%",accentColor:"var(--sd-accent, #3498DB)"}})]},e.key)),(0,t.jsx)("div",{style:S,children:"Drag a bubble and the ones joined to it follow. Click still opens it."}),(0,t.jsx)("button",{type:"button",onClick:()=>o({...j,live:!0}),style:{marginTop:6,padding:"4px 10px",borderRadius:6,fontSize:10.5,cursor:"pointer",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)"},children:"Reset the forces"})]}):(0,t.jsx)("div",{style:S,children:"Live lets the bubbles move: drag them, and change the forces that lay the map out."})]})}function z(e,t){let[,r]=(0,n.useState)(0),o=(0,n.useRef)(null),i=(0,n.useRef)(!1);return(0,n.useEffect)(()=>{if(!t.live||!e.nodes.length)return;let n=0,i=(0,u.forceSimulation)(e.nodes).force("x",(0,f.forceX)(e=>e.ax).strength(.12*t.pull)).force("y",(0,x.forceY)(e=>e.ay).strength(.12*t.pull)).force("collide",(0,p.forceCollide)(e=>e.r+3).iterations(2)).force("charge",(0,g.forceManyBody)().strength(-25*t.spread)).force("link",(0,h.forceLink)(e.edges).id(e=>e.id).strength(e=>(e.k??.1)*t.links).distance(60*Math.sqrt(t.spread))).alpha(.15).on("tick",()=>{n||(n=requestAnimationFrame(()=>{n=0,r(e=>e+1)}))});return o.current=i,()=>{i.stop(),cancelAnimationFrame(n),o.current=null}},[e,t.live,t.spread,t.pull,t.links]),{drag:t.live?(e,t)=>{let n=o.current;if(!n)return;let r=e.currentTarget.ownerSVGElement,l=r?.getScreenCTM();if(!l)return;let s=l.inverse(),a=e=>{let t=r.createSVGPoint();return t.x=e.clientX,t.y=e.clientY,t.matrixTransform(s)},d={x:e.clientX,y:e.clientY};i.current=!1;let c=e=>{Math.hypot(e.clientX-d.x,e.clientY-d.y)>3&&(i.current=!0);let n=a(e);t.fx=n.x,t.fy=n.y},p=()=>{t.fx=null,t.fy=null,n.alphaTarget(0),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",p)},h=a(e);t.fx=h.x,t.fy=h.y,n.alphaTarget(.08).restart(),window.addEventListener("pointermove",c),window.addEventListener("pointerup",p)}:null,clicked:()=>!i.current||(i.current=!1,!1)}}function C({id:e}){return(0,t.jsx)("defs",{children:[0,1,2,3,4,5].map(n=>(0,t.jsxs)("radialGradient",{id:`${e}-${n}`,children:[(0,t.jsx)("stop",{offset:"0",stopColor:(0,k.heatColour)(n/5),stopOpacity:.16+.07*n}),(0,t.jsx)("stop",{offset:"1",stopColor:(0,k.heatColour)(n/5),stopOpacity:0})]},n))})}function B({id:e,nodes:n,heat:r}){return(0,t.jsx)("g",{style:{mixBlendMode:"screen",pointerEvents:"none"},children:n.filter(e=>r(e)>=.5).map(n=>(0,t.jsx)("circle",{cx:n.x,cy:n.y,r:1.9*n.r+18,fill:`url(#${e}-${Math.round(5*r(n))})`},n.id))})}var F=e.i(44902),$=e.i(54322);let R=$.TIER_COLORS,T=[...v.INDUSTRIES,v.UNKNOWN_INDUSTRY],I=e=>Number(e||0).toLocaleString("en-US"),W={value:{label:"Cluster value",of:e=>e.value,k:2},size:{label:"Cluster size",of:e=>e.size,k:2.6},s:{label:"S tier inside",of:e=>e.S,k:6}};function O({d1:e=[],d2:r=[],top:o=null,look:l=null,colourBy:s="sector",physics:a=j}){let d=(0,i.useRouter)(),[c,p]=(0,n.useState)("value"),[h,g]=(0,n.useState)("scanned"),[u,f]=(0,n.useState)(()=>(0,F.makeGrid)([1])),[x,y]=(0,n.useState)(()=>new Set),[k,S]=(0,n.useState)(""),[w,M]=(0,n.useState)(!0),[z,C]=(0,n.useState)("top"),B=(0,n.useMemo)(()=>(function(e=[],t=[],{maxLinks:n=400}={}){let r=new Set((e||[]).map(e=>e.id)),o=new Map,i=new Map;for(let e of t||[]){let t=e?.source_connection_id;if(null==t||!r.has(t))continue;let n=(0,m.keyFor)(e),l=o.get(t);l||o.set(t,l=new Map),l.has(n)||l.set(n,e);let s=i.get(n);s||i.set(n,s=new Set),s.add(t)}let l=(e||[]).map(e=>{let t=o.get(e.id),n=0,r=0,l=0;if(t)for(let[e,o]of t)"S"===o.tier?n++:"A"===o.tier&&r++,i.get(e)?.size===1&&l++;let s=t?t.size:0;return{person:e,id:e.id,key:(0,m.keyFor)(e),size:s,S:n,A:r,value:(({size:e=0,S:t=0,A:n=0}={})=>e+2*t+n)({size:s,S:n,A:r}),only:l,share:s?l/s:0}}),s=new Map;for(let e of i.values()){if(e.size<2||e.size>8)continue;let t=[...e].sort();for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=`${t[e]}\u0000${t[n]}`;s.set(r,(s.get(r)||0)+1)}}let a=[...s].map(([e,t])=>{let[n,r]=e.split("\0");return{a:n,b:r,shared:t}}).sort((e,t)=>t.shared-e.shared||(e.a<t.a?-1:1)).slice(0,n),d=l.filter(e=>e.size>0).map(e=>e.value).sort((e,t)=>e-t);return{people:l,links:a,rank:e=>{let t=l.find(t=>t.id===e);if(!t||!t.size||d.length<2)return null;let n=0;for(;n<d.length&&d[n]<t.value;)n++;return n/(d.length-1)}}})(e,r),[e,r]),$=(0,n.useMemo)(()=>(0,F.gridCounts)({1:B.people.filter(e=>"all"===h||e.size>0).map(e=>e.person)}),[B,h]),R=(0,n.useMemo)(()=>{let e=new Map;for(let t of B.people)e.set(t.id,(0,v.industryOf)((0,v.companyOf)(t.person),t.person.headline));return e},[B]),D=(0,n.useMemo)(()=>B.people.filter(e=>e.size>0).length,[B]),L=(0,n.useMemo)(()=>{let e=k.trim().toLowerCase();return B.people.filter(t=>("all"===h||t.size>0)&&(0,F.shows)(u,t.person.tier,1)&&!x.has(R.get(t.id).key)&&(!e||String(t.person.name||"").toLowerCase().includes(e))).sort((e,t)=>t.value-e.value||t.size-e.size)},[B,h,u,x,k,R]),N=(0,n.useMemo)(()=>{let e=new Map;for(let t of B.people){if("all"!==h&&!t.size)continue;let n=R.get(t.id).key;e.set(n,(e.get(n)||0)+1)}return T.filter(t=>e.get(t.key)).map(t=>({...t,count:e.get(t.key)})).sort((e,t)=>t.count-e.count)},[B,h,R]);return(0,t.jsxs)("div",{style:{flex:1,minHeight:0,display:"flex"},children:[(0,t.jsxs)(Y,{open:w,onToggle:()=>M(e=>!e),children:[o,(0,t.jsx)("div",{style:G,children:"Filter"}),(0,t.jsx)("input",{value:k,onChange:e=>S(e.target.value),placeholder:"Find a person",style:{width:"100%",boxSizing:"border-box",padding:"6px 10px",borderRadius:7,border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #fff)",fontSize:13,marginBottom:8}}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:(0,t.jsx)(U,{value:h,onChange:g,options:[["scanned",`Scanned (${I(D)})`],["all",`All (${I(B.people.length)})`]]})}),(0,t.jsx)("div",{style:{marginTop:12},children:(0,t.jsx)(b.TierGrid,{grid:u,counts:$,onChange:f,mode:"paths"})}),(0,t.jsx)("div",{style:G,children:"Sectors"}),(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:N.map(e=>{let n=x.has(e.key);return(0,t.jsxs)("button",{title:n?"Show on the map":"Hide from the map",onClick:()=>y(t=>{let n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),style:{display:"inline-flex",alignItems:"center",gap:6,padding:"3px 10px",borderRadius:14,cursor:"pointer",border:`1px solid ${e.color}55`,background:n?"transparent":`${e.color}14`,color:"var(--sd-fg-2, #cfd8d8)",fontSize:11.5,opacity:n?.4:1},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:e.color}}),e.label," ",(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:I(e.count)})]},e.key)})}),(0,t.jsx)("div",{style:{fontSize:10.5,color:"var(--sd-fg-4, #667)",marginTop:6},children:"Inferred from where each connection works."}),(0,t.jsx)("div",{style:G,children:"Read the map"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",marginBottom:4},children:"Bubble size"}),(0,t.jsx)(U,{value:c,onChange:p,options:Object.entries(W).map(([e,t])=>[e,t.label])}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",margin:"10px 0 4px"},children:"Names"}),(0,t.jsx)(U,{value:z,onChange:C,options:[["top","Biggest"],["all","All"],["none","None"]]}),l]}),(0,t.jsx)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",paddingTop:40,boxSizing:"border-box"},children:(0,t.jsx)(A,{people:L,links:B.links,sizeBy:W[c],sectorOf:R,rank:B.rank,names:z,colourBy:s,physics:a,onOpen:e=>d.push(`/?chain=${encodeURIComponent(e)}`)})})]})}function A({people:e,links:r,sizeBy:o,sectorOf:i,rank:l,onOpen:s,names:a="top",colourBy:d="sector",physics:c=j}){let y=(0,n.useRef)(null),{w:m,h:b}=H(y),[S,w]=(0,n.useState)(null),M=(0,n.useMemo)(()=>{let t=e.slice(0,400),n=new Set(t.map(e=>e.id)),l=[...new Set(t.map(e=>i.get(e.id).key))],s=new Map(l.map((e,t)=>{let n=t/Math.max(1,l.length)*Math.PI*2-Math.PI/2;return[e,{x:260*Math.cos(n),y:260*Math.sin(n)}]})),a=t.map(e=>{let t=s.get(i.get(e.id).key);return{id:e.id,p:e,sector:i.get(e.id),r:e.size?4+Math.sqrt(Math.max(0,o.of(e)))*o.k:3,x:t.x+(P(String(e.id))-.5)*40,y:t.y+(P(`${e.id}#`)-.5)*40,ax:t.x,ay:t.y}}),d=r.filter(e=>n.has(e.a)&&n.has(e.b)).map(e=>({source:e.a,target:e.b,weight:e.shared,k:Math.min(.25,.02*e.shared)})),c=(0,u.forceSimulation)(a).force("x",(0,f.forceX)(e=>s.get(e.sector.key).x).strength(.12)).force("y",(0,x.forceY)(e=>s.get(e.sector.key).y).strength(.12)).force("collide",(0,p.forceCollide)(e=>e.r+3)).force("charge",(0,g.forceManyBody)().strength(-25)).force("link",(0,h.forceLink)(d).id(e=>e.id).strength(e=>e.k).distance(60)).stop();for(let e=0;e<320;e++)c.tick();let y=a.flatMap(e=>[e.x-e.r,e.x+e.r]),m=a.flatMap(e=>[e.y-e.r,e.y+e.r]),b=a.length?{x:Math.min(...y)-60,y:Math.min(...m)-40,w:Math.max(...y)-Math.min(...y)+120,h:Math.max(...m)-Math.min(...m)+80}:{x:-300,y:-300,w:600,h:600},k=l.map(e=>{let t=a.filter(t=>t.sector.key===e),n=t.reduce((e,t)=>e+t.x,0)/t.length,r=t.reduce((e,t)=>e+t.y,0)/t.length,o=Math.hypot(n,r)||1,i=n/o,l=r/o,s=Math.max(...t.map(e=>(e.x-n)*i+(e.y-r)*l+e.r));return{key:e,x:n+i*(s+16),y:r+l*(s+16)+4,anchor:i>.35?"start":i<-.35?"end":"middle",ind:(0,v.industryByKey)(e)}});for(let e of k){let t=7.5*e.ind.label.length,n="start"===e.anchor?e.x:"end"===e.anchor?e.x-t:e.x-t/2,r=Math.max(b.x+b.w,n+t+10);b.x=Math.min(b.x,n-10),b.w=r-b.x;let o=Math.max(b.y+b.h,e.y+12);b.y=Math.min(b.y,e.y-18),b.h=o-b.y}return b.h+=Math.max(60,.1*b.h),{nodes:a,edges:d,box:b,labels:k,cut:Math.max(0,e.length-t.length)}},[e,r,o,i]),{drag:F,clicked:$}=z(M,c),T=(0,n.useMemo)(()=>(0,k.heatBy)(M.nodes,e=>(function({size:e=0,S:t=0,A:n=0}={}){return e?(3*t+2*n+Math.max(0,e-t-n))/e:-1})(e.p)),[M]),W="heat"===d,O=S?M.nodes.find(e=>e.id===S):null,L=(0,n.useMemo)(()=>{if(!S)return null;let e=new Set([S]);for(let t of M.edges)t.source.id===S&&e.add(t.target.id),t.target.id===S&&e.add(t.source.id);return e},[S,M]),N=(0,n.useMemo)(()=>new Set("none"===a?[]:M.nodes.filter(e=>e.p.size).slice(0,"all"===a?1/0:28).map(e=>e.id)),[M,a]),E=m&&b?Math.min(m/M.box.w,b/M.box.h):1,_=(m-M.box.w*E)/2,U=(b-M.box.h*E)/2;return(0,t.jsxs)("div",{ref:y,style:{flex:1,minHeight:360,position:"relative"},children:[m>0&&(0,t.jsxs)("svg",{width:m,height:b,viewBox:`${M.box.x} ${M.box.y} ${M.box.w} ${M.box.h}`,style:{display:"block",touchAction:F?"none":void 0},children:[W&&(0,t.jsx)(C,{id:"pplheat"}),W&&(0,t.jsx)(B,{id:"pplheat",nodes:M.nodes.filter(e=>e.p.size),heat:T}),(0,t.jsx)("g",{children:M.edges.map((e,n)=>{let r=S&&(e.source.id===S||e.target.id===S);return(0,t.jsx)("line",{x1:e.source.x,y1:e.source.y,x2:e.target.x,y2:e.target.y,stroke:r?"#FF6B35":"var(--sd-fg-3, #8fa6c0)",strokeOpacity:r?.8:S?.03:.09,strokeWidth:r?1+Math.log2(1+e.weight):.4+.4*Math.log2(1+e.weight)},n)})}),M.labels.map(e=>(0,t.jsx)("text",{x:e.x,y:e.y,textAnchor:e.anchor,fontSize:13,fontWeight:800,fill:e.ind.color,opacity:.85,children:e.ind.label},e.key)),M.nodes.map(e=>{let{p:n}=e,r=L&&!L.has(e.id);return(0,t.jsxs)("g",{transform:`translate(${e.x},${e.y})`,style:{cursor:F?"grab":n.size?"pointer":"default"},opacity:r?.18:1,onMouseEnter:()=>w(e.id),onMouseLeave:()=>w(null),onPointerDown:F?t=>F(t,e):void 0,onClick:()=>{$()&&n.size&&s(e.id)},children:[(0,t.jsx)("circle",{className:"sd-dot",r:e.r,fill:n.size?W?(0,k.heatColour)(T(e)):e.sector.color:"#3a3f55",fillOpacity:n.size?.92:.6,stroke:S===e.id?"var(--sd-fg-1, #fff)":n.S?R.S:"rgba(0,0,0,0.35)",strokeWidth:S===e.id?2.5:n.S?Math.min(4,1+n.S/40):.6}),n.size>0&&n.only>0&&(0,t.jsx)("circle",{r:e.r*Math.sqrt(n.share)*.85,fill:"var(--sd-fg-1, #fff)",fillOpacity:.3}),(N.has(e.id)||S===e.id)&&(0,t.jsx)("text",{y:e.r+11,textAnchor:"middle",fontSize:10,fill:"var(--sd-fg-1, #e6edf0)",style:{pointerEvents:"none"},paintOrder:"stroke",stroke:"rgba(var(--sd-shade, 0, 0, 0), 0.6)",strokeWidth:3,children:n.person.name})]},e.id)})]}),O&&(0,t.jsx)(D,{n:O,at:{x:_+(O.x-M.box.x)*E,y:U+(O.y-M.box.y)*E,r:O.r*E},w:m,rank:l(O.id)}),(0,t.jsxs)("div",{style:{position:"absolute",left:12,bottom:10,fontSize:11,color:"var(--sd-fg-4, #778)",lineHeight:1.6,pointerEvents:"none"},children:["Bubble = one of your connections, sized by ",o.label.toLowerCase()," (value: S tier counts 3, A tier 2, everyone else 1)",W?"; colour = how strong their cluster is, person for person, cold to white hot":"","; white centre = the share of their cluster only they can open; gold ring = S tier inside.",(0,t.jsx)("br",{}),"A line = two of your connections whose clusters share people. Grey = not scanned yet.",M.cut?` Showing the 400 largest of ${I(M.cut+400)}.`:""]})]})}function D({n:e,at:n,w:r,rank:o}){let{p:i}=e,l=n.x+n.r+14+280>r?Math.max(8,n.x-n.r-14-280):n.x+n.r+14,s=[i.person.role,(0,v.companyOf)(i.person)].filter(Boolean).join(" @ ")||i.person.headline||"";return(0,t.jsxs)("div",{style:{position:"absolute",left:l,top:Math.max(8,n.y-70),width:280,pointerEvents:"none",zIndex:5,padding:"12px 14px",borderRadius:12,background:"var(--sd-surface, rgba(8,10,22,0.96))",border:`1px solid ${e.sector.color}99`,boxShadow:"0 12px 40px rgba(0,0,0,0.6)",fontSize:12,lineHeight:1.45,color:"var(--sd-fg-1, #ddd)"},children:[(0,t.jsx)("div",{style:{fontSize:15,fontWeight:800,color:"var(--sd-fg-1, #fff)"},children:i.person.name}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #8a8fa8)"},children:[s,i.person.tier?` \xb7 ${i.person.tier}-tier`:""," · ",e.sector.label]}),i.size?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px 10px",margin:"10px 0 8px"},children:[(0,t.jsx)(L,{value:I(i.value),label:"cluster value",color:"#FFD700"}),(0,t.jsx)(L,{value:I(i.size),label:"people in their cluster"}),(0,t.jsx)(L,{value:`${I(i.S)} S \xb7 ${I(i.A)} A`,label:"the strongest among them",color:"#FFD700"}),(0,t.jsx)(L,{value:`${I(i.only)} (${Math.round(100*i.share)}%)`,label:"only through them",color:"#00E5FF"})]}),(0,t.jsxs)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #aab)"},children:[1===o?"The most valuable cluster you’ve scanned. ":null!=o?`Worth more than ${Math.round(100*o)}% of the clusters you’ve scanned. `:"","Click to open it in Bridge Chains."]})]}):(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #aab)",marginTop:8},children:"Their circle isn’t scanned yet, so there’s no cluster to size."})]})}function L({value:e,label:n,color:r="#fff"}){return(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{style:{fontSize:15,fontWeight:800,color:r},children:e}),(0,t.jsx)("div",{style:{fontSize:10.5,color:"var(--sd-fg-3, #8a8fa8)"},children:n})]})}let N=$.TIER_COLORS,E="1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",_=[...v.INDUSTRIES,v.UNKNOWN_INDUSTRY];function P(e){let t=0x811c9dc5;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),0x1000193);return(t>>>0)%1e3/1e3}function U({value:e,onChange:n,options:r}){return(0,t.jsx)("div",{style:{display:"flex",borderRadius:7,overflow:"hidden",border:E},children:r.map(([r,o])=>(0,t.jsx)("button",{onClick:()=>n(r),style:{padding:"5px 10px",fontSize:11.5,fontWeight:600,border:"none",cursor:"pointer",background:e===r?"rgba(52,152,219,0.25)":"transparent",color:e===r?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-3, #8b9a9a)"},children:o},r))})}function H(e){let[t,r]=(0,n.useState)({w:0,h:0});return(0,n.useEffect)(()=>{let t=e.current;if(!t)return;let n=()=>{let e=t.getBoundingClientRect();r(t=>t.w===Math.round(e.width)&&t.h===Math.round(e.height)?t:{w:Math.round(e.width),h:Math.round(e.height)})};n();let o=new ResizeObserver(n);return o.observe(t),()=>o.disconnect()},[e]),t}function Y({open:e,onToggle:n,children:r}){return e?(0,t.jsxs)("aside",{"data-glass-panel":"side",style:{width:300,flexShrink:0,height:"100%",overflowY:"auto",boxSizing:"border-box",padding:"16px 14px",borderRight:"1px solid rgba(52,152,219,0.15)",background:"var(--sd-panel)",fontSize:13,backdropFilter:"var(--sd-panel-blur)",WebkitBackdropFilter:"var(--sd-panel-blur)"},children:[(0,t.jsxs)("button",{type:"button",onClick:n,style:{display:"flex",alignItems:"center",gap:6,width:"100%",marginBottom:14,padding:"6px 12px",borderRadius:6,cursor:"pointer",background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",color:"var(--sd-fg-3, #aaa)",fontSize:12,fontWeight:600},children:[(0,t.jsx)("span",{style:{fontSize:16},children:"›"})," Close"]}),r]}):(0,t.jsxs)("button",{type:"button",onClick:n,style:{position:"fixed",left:16,top:140,zIndex:30,cursor:"pointer",height:36,borderRadius:18,padding:"0 14px 0 10px",display:"flex",alignItems:"center",gap:6,background:"rgba(52,152,219,0.15)",border:"2px solid rgba(52,152,219,0.5)",color:"var(--sd-blue, #3498DB)",fontWeight:700,boxShadow:"0 0 12px rgba(52,152,219,0.3)",backdropFilter:"blur(8px)"},children:[(0,t.jsx)("span",{style:{fontSize:18},children:"›"}),(0,t.jsx)("span",{style:{fontSize:11,fontWeight:600},children:"Filters"})]})}let G={fontSize:9,fontWeight:700,color:"var(--sd-fg-5, #555)",letterSpacing:1,margin:"14px 0 6px",textTransform:"uppercase"};function X(e,t){return(!t.grid||!!(0,F.shows)(t.grid,e.tier,Number(e.degree)||1))&&("senior"!==t.seniority||!!(0,v.isSenior)(e.headline))&&("csuite"!==t.seniority||!((0,v.getSeniority)(e.headline).level<6))}function q({show:e,onShow:n}){return(0,t.jsxs)("div",{style:{marginBottom:6},children:[(0,t.jsx)("div",{style:{...G,marginTop:0},children:"Bubbles are"}),(0,t.jsx)(U,{value:e,onChange:n,options:[["companies","Companies"],["people","People"]]})]})}function K({d1:e=[],d2:r=[],d3:o=[],initialShow:i="companies",onOpenCompany:l}){let[s,a]=(0,n.useState)(i),[d,c]=(0,n.useState)(()=>({seniority:"all",grid:(0,F.makeGrid)([1,2,3])})),[p,h]=(0,n.useState)("sector"),[g,u]=(0,n.useState)(j),[f,x]=(0,n.useState)(()=>new Set),[y,m]=(0,n.useState)(""),[b,k]=(0,n.useState)(null),[S,w]=(0,n.useState)(!0),[z,C]=(0,n.useState)("people"),[B,$]=(0,n.useState)("top"),R=(0,n.useMemo)(()=>[...e,...r,...o],[e,r,o]),T=(0,n.useMemo)(()=>(0,F.gridCounts)({1:e,2:r,3:o}),[e,r,o]),I=(0,n.useMemo)(()=>(0,v.buildCompanyIndex)(R),[R]),W=(0,n.useMemo)(()=>(0,v.companyLinks)(e,r),[e,r]),A=(0,n.useMemo)(()=>{let e=y.trim().toLowerCase(),t=[];for(let n of I.values()){if(f.has(n.industry.key)||e&&!n.name.toLowerCase().includes(e))continue;let r=n.people.filter(e=>X(e,d));r.length&&t.push({...n,shown:r})}return t.sort((e,t)=>t.shown.length-e.shown.length)},[I,d,f,y]),D=(0,n.useMemo)(()=>{let e=new Map(_.map(e=>[e.key,{...e,people:[],companies:new Map}])),t=new Set;for(let n of R){let r=n.profile_url||`id:${n.id}`;if(t.has(r)||(t.add(r),!X(n,d)))continue;let o=(0,v.companyOf)(n),i=o?I.get(o)?.industry||(0,v.industryOf)(o,n.headline):(0,v.industryOf)(null,n.headline),l=e.get(i.key);l.people.push(n),o&&l.companies.set(o,(l.companies.get(o)||0)+1)}return[...e.values()].filter(e=>e.people.length).sort((e,t)=>t.people.length-e.people.length)},[R,I,d]),L=b?.kind==="company"?I.get(b.key):b?.kind==="industry"?D.find(e=>e.key===b.key):null,N=e=>(0,t.jsx)(M,{colourBy:p,onColourBy:h,physics:g,onPhysics:u,heatHint:e});return"people"===s?(0,t.jsx)(O,{d1:e,d2:r,top:(0,t.jsx)(q,{show:s,onShow:a}),colourBy:p,physics:g,look:N("How strong each cluster is, person for person (S counts 3, A 2, the rest 1): the hotter, the stronger. Size is still how big it is.")}):(0,t.jsxs)("div",{style:{display:"flex",flex:1,minHeight:0},children:[(0,t.jsxs)(Y,{open:S,onToggle:()=>w(e=>!e),children:[(0,t.jsx)(q,{show:s,onShow:a}),(0,t.jsx)(V,{filters:d,setFilters:c,counts:T,query:y,setQuery:m,industries:D,hidden:f,setHidden:x,onIndustry:e=>k({kind:"industry",key:e})}),(0,t.jsx)("div",{style:G,children:"Read the map"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",marginBottom:4},children:"Bubble size"}),(0,t.jsx)(U,{value:z,onChange:C,options:[["people","Your people"],["sa","S & A there"],["known","You know"]]}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",margin:"10px 0 4px"},children:"Names"}),(0,t.jsx)(U,{value:B,onChange:$,options:[["top","Biggest"],["all","All"],["none","None"]]}),N("How strong your people at each company are: the average power score of the five strongest. The hotter, the stronger; size is still how many.")]}),(0,t.jsx)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",paddingTop:40,boxSizing:"border-box"},children:(0,t.jsx)(Q,{companies:A,links:W,focus:b,sizeBy:z,labels:B,colourBy:p,physics:g,onCompany:e=>k({kind:"company",key:e}),onIndustry:e=>k({kind:"industry",key:e}),onClear:()=>k(null)})}),L&&(0,t.jsx)(ee,{focus:b,data:L,index:I,links:W,d1:e,d2:r,filters:d,onClose:()=>k(null),onCompany:e=>k({kind:"company",key:e}),onIndustry:e=>k({kind:"industry",key:e}),onOpenCompany:l})]})}function V({filters:e,setFilters:n,counts:r,query:o,setQuery:i,industries:l,hidden:s,setHidden:a,onIndustry:d}){let c=(e,t)=>n(n=>({...n,[e]:t}));return(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[(0,t.jsx)("div",{style:G,children:"Filter"}),(0,t.jsx)("input",{value:o,onChange:e=>i(e.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:E,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #fff)",fontSize:13,width:"100%",boxSizing:"border-box"}}),(0,t.jsx)(b.TierGrid,{grid:e.grid,counts:r,onChange:e=>c("grid",e),mode:"paths"}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",marginTop:-10},children:"Level"}),(0,t.jsx)(U,{value:e.seniority,onChange:e=>c("seniority",e),options:[["all","Any level"],["senior","Director+"],["csuite","C-suite"]]}),(0,t.jsx)("div",{style:G,children:"Industries"}),(0,t.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:[l.map(e=>{let n=s.has(e.key);return(0,t.jsxs)("span",{style:{display:"inline-flex",borderRadius:14,border:`1px solid ${e.color}55`,overflow:"hidden",opacity:n?.4:1},children:[(0,t.jsx)("button",{title:n?"Show on the map":"Hide from the map",onClick:()=>a(t=>{let n=new Set(t);return n.has(e.key)?n.delete(e.key):n.add(e.key),n}),style:{padding:"3px 7px",border:"none",background:`${e.color}22`,cursor:"pointer",color:e.color,fontSize:11},children:"●"}),(0,t.jsxs)("button",{onClick:()=>d(e.key),title:"Analyse this industry",style:{padding:"3px 9px 3px 5px",border:"none",background:"transparent",cursor:"pointer",color:"var(--sd-fg-2, #cfd8d8)",fontSize:11.5},children:[e.label," ",(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:e.people.length})]})]},e.key)}),(0,t.jsx)("span",{style:{fontSize:11,color:"var(--sd-fg-4, #667)",alignSelf:"center"},children:"Inferred from companies and headlines. ● hides one; its name opens it."})]})]})}function Q({companies:e,links:r,focus:o,onCompany:i,onIndustry:l,onClear:s,sizeBy:a="people",labels:d="top",colourBy:c="sector",physics:y=j}){let b=(0,n.useRef)(null),{w:S,h:w}=H(b),[M,F]=(0,n.useState)(null),$=(0,n.useMemo)(()=>{let t=e.slice(0,140),n=new Set(t.map(e=>e.name)),o=[...new Set(t.map(e=>e.industry.key))],i=new Map(o.map((e,t)=>{let n=t/Math.max(1,o.length)*Math.PI*2-Math.PI/2;return[e,{x:260*Math.cos(n),y:260*Math.sin(n)}]})),l=t.map(e=>({id:e.name,co:e,r:4+Math.sqrt("sa"===a?e.shown.filter(e=>"S"===e.tier||"A"===e.tier).length:"known"===a?e.d1:e.shown.length)*("people"===a?3.4:5),x:i.get(e.industry.key).x+(P(e.name)-.5)*40,y:i.get(e.industry.key).y+(P(e.name+"#")-.5)*40,ax:i.get(e.industry.key).x,ay:i.get(e.industry.key).y})),s=r.filter(e=>n.has(e.a)&&n.has(e.b)).map(e=>({source:e.a,target:e.b,weight:e.weight,via:e.via.size,k:Math.min(.25,.03*e.weight)})),d=(0,u.forceSimulation)(l).force("x",(0,f.forceX)(e=>i.get(e.co.industry.key).x).strength(.12)).force("y",(0,x.forceY)(e=>i.get(e.co.industry.key).y).strength(.12)).force("collide",(0,p.forceCollide)(e=>e.r+3)).force("charge",(0,g.forceManyBody)().strength(-25)).force("link",(0,h.forceLink)(s).id(e=>e.id).strength(e=>e.k).distance(60)).stop();for(let e=0;e<320;e++)d.tick();let c=l.flatMap(e=>[e.x-e.r,e.x+e.r]),y=l.flatMap(e=>[e.y-e.r,e.y+e.r]),m=l.length?{x:Math.min(...c)-60,y:Math.min(...y)-40,w:Math.max(...c)-Math.min(...c)+120,h:Math.max(...y)-Math.min(...y)+80}:{x:-300,y:-300,w:600,h:600},b=o.map(e=>{let t=l.filter(t=>t.co.industry.key===e),n=t.reduce((e,t)=>e+t.x,0)/t.length,r=t.reduce((e,t)=>e+t.y,0)/t.length,o=Math.hypot(n,r)||1,i=n/o,s=r/o,a=Math.max(...t.map(e=>(e.x-n)*i+(e.y-r)*s+e.r));return{key:e,x:n+i*(a+16),y:r+s*(a+16)+4,anchor:i>.35?"start":i<-.35?"end":"middle",ind:(0,v.industryByKey)(e)}});for(let e of b){let t=7.5*e.ind.label.length,n="start"===e.anchor?e.x:"end"===e.anchor?e.x-t:e.x-t/2,r=Math.max(m.x+m.w,n+t+10);m.x=Math.min(m.x,n-10),m.w=r-m.x;let o=Math.max(m.y+m.h,e.y+12);m.y=Math.min(m.y,e.y-18),m.h=o-m.y}return m.h+=Math.max(60,.1*m.h),{nodes:l,edges:s,box:m,labels:b,cut:Math.max(0,e.length-t.length)}},[e,r,a]),{drag:R,clicked:T}=z($,y),I=(0,n.useMemo)(()=>{let e=new Map($.nodes.map(e=>[e.id,function(e=[]){let t=e.map(m.score).sort((e,t)=>t-e).slice(0,5);return t.length?t.reduce((e,t)=>e+t,0)/t.length:0}(e.co.shown)]));return(0,k.heatBy)($.nodes,t=>e.get(t.id))},[$]),W="heat"===c,O=M||(o?.kind==="company"?o.key:null),A=o?.kind==="industry"?o.key:null,D=(0,n.useMemo)(()=>{if(!O)return null;let e=new Set([O]);for(let t of $.edges)t.source.id===O&&e.add(t.target.id),t.target.id===O&&e.add(t.source.id);return e},[O,$]),L=(0,n.useMemo)(()=>new Set("none"===d?[]:("all"===d?$.nodes:[...$.nodes].sort((e,t)=>t.r-e.r).slice(0,28)).map(e=>e.id)),[$,d]);return(0,t.jsxs)("div",{ref:b,style:{flex:1,minHeight:360,position:"relative"},onClick:s,children:[S>0&&(0,t.jsxs)("svg",{width:S,height:w,viewBox:`${$.box.x} ${$.box.y} ${$.box.w} ${$.box.h}`,style:{display:"block",touchAction:R?"none":void 0},children:[W&&(0,t.jsx)(C,{id:"coheat"}),W&&(0,t.jsx)(B,{id:"coheat",nodes:$.nodes,heat:I}),(0,t.jsx)("g",{children:$.edges.map((e,n)=>{let r=O&&(e.source.id===O||e.target.id===O);return(0,t.jsx)("line",{x1:e.source.x,y1:e.source.y,x2:e.target.x,y2:e.target.y,stroke:r?"#FF6B35":"var(--sd-fg-3, #8fa6c0)",strokeOpacity:r?.8:O?.04:.14,strokeWidth:r?1+Math.log2(1+e.weight):.4+.5*Math.log2(1+e.weight)},n)})}),$.labels.map(e=>(0,t.jsx)("text",{x:e.x,y:e.y,textAnchor:e.anchor,fontSize:13,fontWeight:800,fill:e.ind.color,opacity:A&&A!==e.key?.25:.85,style:{cursor:"pointer"},onClick:t=>{t.stopPropagation(),l(e.key)},children:e.ind.label},e.key)),$.nodes.map(e=>{let n=D&&!D.has(e.id)||A&&e.co.industry.key!==A,r=o?.kind==="company"&&o.key===e.id;return(0,t.jsxs)("g",{transform:`translate(${e.x},${e.y})`,style:{cursor:R?"grab":"pointer"},opacity:n?.18:1,onMouseEnter:()=>F(e.id),onMouseLeave:()=>F(null),onPointerDown:R?t=>R(t,e):void 0,onClick:t=>{t.stopPropagation(),T()&&i(e.id)},children:[(0,t.jsx)("title",{children:`${e.co.name} \xb7 ${e.co.industry.label} (inferred)
|
|
2
|
+
${e.co.d1} you know \xb7 ${e.co.d2} reachable${e.co.d3?` \xb7 ${e.co.d3} further`:""}`}),(0,t.jsx)("circle",{className:"sd-dot",r:e.r,fill:W?(0,k.heatColour)(I(e)):e.co.industry.color,fillOpacity:W?.9:.75,stroke:r?"var(--sd-fg-1, #fff)":e.co.S?N.S:"rgba(0,0,0,0.35)",strokeWidth:r?2.5:e.co.S?1.5:.6}),e.co.d1>0&&(0,t.jsx)("circle",{r:e.r*Math.sqrt(e.co.d1/Math.max(1,e.co.people.length)),fill:"var(--sd-fg-1, #fff)",fillOpacity:.35}),(L.has(e.id)||e.id===O||r)&&(0,t.jsx)("text",{y:e.r+11,textAnchor:"middle",fontSize:10,fill:"var(--sd-fg-1, #e6edf0)",style:{pointerEvents:"none"},children:e.co.name})]},e.id)})]}),(0,t.jsxs)("div",{style:{position:"absolute",left:12,bottom:10,fontSize:11,color:"var(--sd-fg-4, #778)",lineHeight:1.6,pointerEvents:"none"},children:["Bubble = a company, sized by your people there; ",W?"colour = how strong they are, cold to white hot":"colour = its industry","; white centre = the share you already know; gold ring = an S-tier person inside.",(0,t.jsx)("br",{}),"A line = one of your connections at one company knows people at the other.",$.cut?` Showing the 140 largest; ${$.cut} smaller companies are in Companies.`:""]})]})}function Z({parts:e,total:n}){return(0,t.jsx)("div",{style:{display:"flex",height:6,borderRadius:3,overflow:"hidden",background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)"},children:e.map(([e,r],o)=>(0,t.jsx)("div",{style:{width:`${e/Math.max(1,n)*100}%`,background:r}},o))})}function J({p:e,note:n}){return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"5px 0",fontSize:12.5},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:N[e.tier]||"#667",flexShrink:0}}),(0,t.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,t.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #8b9a9a)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:n||e.headline})]})]})}function ee({focus:e,data:r,index:o,links:i,d1:l,d2:s,filters:a,onClose:d,onCompany:c,onIndustry:p,onOpenCompany:h}){let g,u,f,x="company"===e.kind,y=r.people.filter(e=>X(e,a)),m=(0,n.useMemo)(()=>{let e=new Map;for(let t of y){let n=(0,v.getSeniority)(t.headline);e.set(n.label,{n:(e.get(n.label)?.n||0)+1,level:n.level})}return[...e.entries()].sort((e,t)=>t[1].level-e[1].level)},[y]),b=(0,n.useMemo)(()=>x?(0,v.waysInto)(r.name,l,s):null,[x,r,l,s]),k=(0,n.useMemo)(()=>x?i.filter(e=>e.a===r.name||e.b===r.name).map(e=>({name:e.a===r.name?e.b:e.a,weight:e.weight})).sort((e,t)=>t.weight-e.weight).slice(0,8):[],[x,i,r]),j=[...y].sort((e,t)=>(Number(t.power_score)||0)-(Number(e.power_score)||0)).slice(0,6),S=x?r.industry:r,w=y.filter(e=>1===e.degree).length,M=y.filter(e=>2===e.degree).length,z=x?[]:[...r.companies.entries()].sort((e,t)=>t[1]-e[1]).slice(0,10);return(0,t.jsxs)("aside",{style:{width:360,flexShrink:0,borderLeft:E,overflow:"auto",padding:16,background:"rgba(var(--sd-ink, 255, 255, 255), 0.02)"},children:[(0,t.jsx)("button",{onClick:d,style:{background:"none",border:"none",color:"var(--sd-fg-3, #888)",cursor:"pointer",fontSize:12,padding:0},children:"✕ Close"}),(0,t.jsxs)("div",{style:{fontSize:10,letterSpacing:1,color:"var(--sd-fg-3, #8b9a9a)",marginTop:8},children:[x?"COMPANY":"INDUSTRY"," ANALYZER"]}),(0,t.jsx)("h2",{style:{margin:"4px 0 6px",fontSize:20},children:x?r.name:r.label}),x&&p?(0,t.jsxs)("button",{type:"button",onClick:()=>p(S.key),title:`Open ${S.label}: everyone there and its top companies`,style:{fontSize:11,padding:"2px 8px",borderRadius:10,border:"none",cursor:"pointer",background:`${S.color}22`,color:S.color},children:[S.label," · inferred →"]}):(0,t.jsxs)("span",{style:{fontSize:11,padding:"2px 8px",borderRadius:10,background:`${S.color}22`,color:S.color},children:[S.label,x?" · inferred":""]}),x&&(0,t.jsx)(en,{name:r.name}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:8,margin:"14px 0"},children:[[w,"you know","#00ff88"],[M,"reachable","#FF6B35"],[y.filter(e=>(0,v.isSenior)(e.headline)).length,"director+","#FFD700"]].map(([e,n,r])=>(0,t.jsxs)("div",{style:{padding:8,borderRadius:8,background:"rgba(var(--sd-ink, 255, 255, 255), 0.04)",textAlign:"center"},children:[(0,t.jsx)("div",{style:{fontSize:20,fontWeight:800,color:r},children:e}),(0,t.jsx)("div",{style:{fontSize:10.5,color:"var(--sd-fg-3, #8b9a9a)"},children:n})]},n))}),(0,t.jsx)(et,{title:"By level",children:m.map(([e,{n}])=>(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"110px 1fr 28px",gap:8,alignItems:"center",fontSize:11.5,marginBottom:4},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-2, #aab7b7)"},children:e}),(0,t.jsx)(Z,{total:y.length,parts:[[n,"#3498DB"]]}),(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)",textAlign:"right"},children:n})]},e))}),x&&b&&(0,t.jsxs)(et,{title:"Ways in",children:[b.direct.length>0&&(0,t.jsxs)("div",{style:{fontSize:11,color:"var(--sd-green, #00ff88)",margin:"2px 0"},children:["You already know ",b.direct.length," here"]}),(g=new Map(b.bridges.map(({bridge:e,n:t})=>[e.id,t])),u=[...b.direct].sort((e,t)=>(g.get(t.id)||0)-(g.get(e.id)||0)).slice(0,4),f=new Set(b.direct.map(e=>e.id)),(0,t.jsxs)(t.Fragment,{children:[u.map(e=>(0,t.jsx)(J,{p:e,note:g.get(e.id)?`works here \xb7 knows ${g.get(e.id)} here`:`works here \xb7 ${e.headline||""}`},e.id)),b.bridges.filter(({bridge:e})=>!f.has(e.id)).slice(0,5).map(({bridge:e,n})=>(0,t.jsx)(J,{p:e,note:`knows ${n} ${1===n?"person":"people"} here`},e.id))]})),!b.direct.length&&!b.bridges.length&&(0,t.jsx)("div",{style:{fontSize:12,color:"var(--sd-fg-4, #778)"},children:"No one you know links here yet."})]}),(0,t.jsx)(et,{title:x?"Most powerful people here":"Most powerful people in this industry",children:j.map(e=>(0,t.jsx)(J,{p:e,note:`${1===e.degree?"you know them":2===e.degree?"2nd degree":"3rd+"} \xb7 ${e.headline||""}`},e.id))}),x&&k.length>0&&(0,t.jsx)(et,{title:"Connected companies",children:(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},children:k.map(e=>(0,t.jsxs)("button",{onClick:()=>c(e.name),style:{padding:"3px 9px",borderRadius:10,border:E,background:`${o.get(e.name)?.industry.color||"#666"}22`,color:"var(--sd-fg-1, #dfe6e9)",fontSize:11.5,cursor:"pointer"},children:[e.name," ",(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:e.weight})]},e.name))})}),!x&&(0,t.jsx)(et,{title:"Companies",children:z.map(([e,n])=>(0,t.jsxs)("div",{onClick:()=>c(e),style:{display:"grid",gridTemplateColumns:"1fr 60px 24px",gap:8,alignItems:"center",fontSize:12,padding:"3px 0",cursor:"pointer"},children:[(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e}),(0,t.jsx)(Z,{total:z[0][1],parts:[[n,S.color]]}),(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)",textAlign:"right"},children:n})]},e))}),x&&h&&(0,t.jsxs)("button",{onClick:()=>h(r),style:{marginTop:14,width:"100%",padding:"10px",borderRadius:8,border:"none",cursor:"pointer",fontWeight:700,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000"},children:["Path to the top of ",r.name," →"]})]})}function et({title:e,children:n}){return(0,t.jsxs)("div",{style:{marginTop:14},children:[(0,t.jsx)("div",{style:{fontSize:10.5,letterSpacing:.8,color:"var(--sd-fg-3, #8b9a9a)",fontWeight:700,marginBottom:6},children:e.toUpperCase()}),n]})}function en({name:e}){let{companies:n,setScore:r}=(0,y.useCompanyScores)(),o=n?.find(t=>t.name===e);if(!o)return null;let i={yours:"your score",known:"known list",network:"estimated",default:"unknown company"}[o.source];return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:10,fontSize:12,color:"var(--sd-fg-2, #aab7b7)"},children:["Company score ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #fff)",fontSize:15},children:o.score}),"/10 · ",i,(0,t.jsx)("span",{style:{marginLeft:"auto"},children:(0,t.jsx)(y.ScorePicker,{company:o,onSet:r,compact:!0})})]})}var er=e.i(15812),eo=e.i(30215),ei=e.i(22016),el=e.i(36774);let es=[["map","Map"],["companies","Companies"]];function ea(){let{userId:e}=(0,er.useUser)(),[c,p]=(0,n.useState)([]),[h,g]=(0,n.useState)(null),[u,f]=(0,n.useState)([]),[x,y]=(0,n.useState)(!0),[m,b]=(0,n.useState)([]),[k,j]=(0,n.useState)([]),[S,w]=(0,n.useState)([]),M=(0,i.useSearchParams)().get("tab"),[z,C]=(0,n.useState)(()=>es.some(([e])=>e===M)?M:"map"),B=(0,i.useRouter)();(0,n.useEffect)(()=>{"scores"===M&&B.replace("/settings#companies")},[M,B]),(0,n.useEffect)(()=>h?void(0,o.setNotchTabs)(null):((0,o.setNotchTabs)({items:es.map(([e,t])=>({key:e,label:t})),current:z,onPick:C}),()=>(0,o.setNotchTabs)(null)),[z,h]);let[F,$]=(0,n.useState)(0),[R,T]=(0,n.useState)(!1);(0,n.useEffect)(()=>{!a.IS_DEMO&&e&&t();async function t(){let t=await (0,d.loadCsvNetwork)();T(!!t);let n=[],r=[],o=[];if(t)n=t.degree1,r=t.degree2||[];else{let t=await (0,s.loadNetwork)(e);n=t.degree1,r=t.degree2,o=t.degree3}b(n),j(r),w(o||[]);let i={},l=new Set;[...n,...r,...o].forEach(e=>{if(l.has(e.profile_url))return;l.add(e.profile_url);let t=(0,v.companyOf)(e);t&&(i[t]||(i[t]={name:t,d1:0,d2:0,d3:0,sCount:0,aCount:0,people:[]}),1===e.degree?i[t].d1++:2===e.degree?i[t].d2++:i[t].d3++,"S"===e.tier&&i[t].sCount++,"A"===e.tier&&i[t].aCount++,i[t].people.push(e))}),p(Object.values(i).filter(e=>e.d1+e.d2+e.d3>=3).sort((e,t)=>3*t.sCount+2*t.aCount+t.d1+t.d2+t.d3-(3*e.sCount+2*e.aCount+e.d1+e.d2+e.d3))),y(!1)}},[e,F]);let[I,W]=(0,n.useState)(!1),[O,A]=(0,n.useState)([]),D=(0,eo.default)(),L=!I&&D.running?(0,l.busyReason)(D):null;function N(e){let t=new Set(m.map(e=>e.profile_url)),n=new Set([...m,...k].map(e=>e.profile_url)),r=new Map,o=0;for(let n of e)t.has(n.profile_url||n.profileUrl)&&(o++,r.set(n.id,(r.get(n.id)||0)+1));return e.map(e=>({...e,connected:t.has(e.profile_url||e.profileUrl),known:n.has(e.profile_url||e.profileUrl),seniority:(0,v.getSeniority)(e.headline),mutualCount:o-(r.get(e.id)||0)}))}function E(e){g(e),f(N(e.people))}async function _(){if(a.IS_DEMO||R||!h)return;let e=!1;try{e="1"===localStorage.getItem("six-degrees-company-scan-ok")}catch{}if(!e){if(!window.confirm("Company scans are experimental: they have not been tested against live LinkedIn yet, so the results may be incomplete. Like any scan, it opens a Chrome window and counts toward the profile views LinkedIn watches.\n\nRun it anyway?"))return;try{localStorage.setItem("six-degrees-company-scan-ok","1")}catch{}}W(!0),A(["Checking the scanner..."]);let t=(0,l.notReadyMessage)(await (0,l.scraperStatus)().catch(()=>null));if(t){A([t]),W(!1);return}try{let e=await (0,l.runScrape)("company",{name:h.name,onLog:A});if(0===e.exitCode){A(e=>[...e,"Loading the new people..."]);let e=await fetch(`/api/connections?scanned_company=${encodeURIComponent(h.name)}&limit=500`),t=(await e.json()).connections||[];t.length?(f(N(t)),A(e=>[...e,`${t.length} people at ${h.name}.`])):A(e=>[...e,"Nothing new was found."])}}catch(e){A([e.message||"Failed to start the scan"])}finally{W(!1)}}let P=new Map;for(let e of m)P.has(e.id)||P.set(e.id,e);let U=new Set(m.map(e=>e.profile_url)),H={},Y=0;u.forEach(e=>{let t=e.seniority.key;H[t]||(H[t]={...e.seniority,people:[]}),e.connected&&Y++;let n=Math.min(90,12*e.mutualCount);e.seniority.level<=1?n+=20:e.seniority.level<=2?n+=10:e.seniority.level>=5&&(n-=10),n=Math.max(5,Math.min(95,n)),e.connected&&(n=100);let r=null;if(2===e.degree&&e.source_connection_id){let t=P.get(e.source_connection_id);t&&(r=t.name)}let o={0:5,1:10,2:20,3:35,4:50,5:75,6:100}[e.seniority.level]||10;H[t].people.push({...e,likelihood:n,bridgeName:r,xp:o})}),Object.values(H).forEach(e=>e.people.sort((e,t)=>t.likelihood-e.likelihood));let G=Object.values(H).sort((e,t)=>t.level-e.level);return a.IS_DEMO?(0,t.jsxs)("div",{style:{minHeight:"100vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,background:"var(--sd-page)",color:"rgba(var(--sd-ink, 255, 255, 255), 0.7)",fontFamily:"var(--sd-font)"},children:[(0,t.jsx)("h1",{style:{fontSize:20,fontWeight:700,margin:0,color:"var(--sd-fg-1, #fff)"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{fontSize:13,margin:0},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(ei.default,{href:"/",style:{fontSize:13,color:"var(--sd-fg-3, #888)",textDecoration:"none"},children:"← Back to the network"})]}):x?(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)"},children:"Loading..."}):(0,t.jsxs)("div",{style:{height:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:"var(--sd-font)",display:"flex",flexDirection:"column",overflow:"hidden"},children:[(0,t.jsx)(r.default,{active:"paths",csvMode:R}),h&&(0,t.jsx)("div",{style:{padding:"10px 24px",borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",flexShrink:0},children:(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",gap:12},children:h&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{onClick:()=>{g(null),f([])},style:{background:"none",border:"none",color:"var(--sd-fg-3, #888)",cursor:"pointer",fontSize:12},children:"← Companies"}),(0,t.jsx)("span",{style:{fontSize:13,fontWeight:600},children:h.name}),(0,t.jsxs)("span",{style:{fontSize:11,color:"var(--sd-fg-3, #888)"},children:[Y,"/",u.length," connected"]}),R?(0,t.jsx)("span",{style:{marginLeft:"auto",fontSize:11,color:"var(--sd-fg-3, #888)"},children:"Scanning needs your own network"}):(0,t.jsx)("button",{onClick:_,disabled:I||!!L,title:L?`${L}. One scan at a time.`:void 0,style:{marginLeft:"auto",padding:"5px 12px",borderRadius:6,border:"none",cursor:I||L?"not-allowed":"pointer",background:I||L?"#333":"rgba(0,255,136,0.15)",color:I||L?"var(--sd-fg-5, #555)":"var(--sd-green, #00ff88)",fontSize:11,fontWeight:600},children:I?"Scanning...":L?"Scanner busy":"+ Scan Full Company"}),(0,t.jsx)("span",{title:"Not yet tested against live LinkedIn. Results may be incomplete.",style:{fontSize:9.5,fontWeight:800,letterSpacing:.6,padding:"3px 7px",borderRadius:20,border:"1px solid rgba(255,215,0,0.45)",color:"var(--sd-gold, #FFD700)"},children:"EXPERIMENTAL"})]})})}),h||"companies"===z?(0,t.jsx)("div",{style:{flex:1,overflow:"auto",padding:"16px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:700,margin:"0 auto"},children:[!h&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("p",{style:{fontSize:13,color:"var(--sd-fg-3, #888)",marginBottom:16},children:["Pick a company to see your path to the top. Based on ",m.length+k.length," people in your network."]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:10},children:c.slice(0,60).map(e=>(0,t.jsxs)("button",{onClick:()=>E(e),style:{padding:"14px",borderRadius:10,border:"none",cursor:"pointer",textAlign:"left",background:"rgba(var(--sd-ink, 255, 255, 255), 0.04)",transition:"background 0.15s",borderLeft:`3px solid ${e.sCount>0?"#FFD700":e.aCount>0?"#9B59B6":"#3498DB"}`},onMouseEnter:e=>e.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.08)",onMouseLeave:e=>e.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)",children:[(0,t.jsx)("div",{style:{fontSize:14,fontWeight:700,color:"var(--sd-fg-1, #fff)",marginBottom:4},children:e.name}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,fontSize:10,color:"var(--sd-fg-3, #888)"},children:[(0,t.jsxs)("span",{style:{color:"var(--sd-green, #00ff88)"},children:[e.d1," connected"]}),(0,t.jsxs)("span",{children:[e.d2+e.d3," locked"]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:6,marginTop:4,fontSize:9},children:[e.sCount>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-gold, #FFD700)",fontWeight:600},children:[e.sCount,"S"]}),e.aCount>0&&(0,t.jsxs)("span",{style:{color:"var(--sd-purple, #9B59B6)",fontWeight:600},children:[e.aCount,"A"]}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-5, #555)"},children:[e.d1+e.d2," total"]})]}),(0,t.jsx)("div",{style:{height:3,background:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",borderRadius:2,marginTop:6},children:(0,t.jsx)("div",{style:{height:"100%",borderRadius:2,width:`${e.d1/Math.max(e.d1+e.d2+e.d3,1)*100}%`,background:e.sCount>0?"#FFD700":"#00ff88"}})})]},e.name))})]}),I&&(0,t.jsxs)("div",{style:{padding:"10px",borderRadius:8,background:"rgba(0,255,136,0.06)",border:"1px solid rgba(0,255,136,0.2)",marginBottom:12},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,t.jsx)("div",{style:{width:6,height:6,borderRadius:"50%",background:"#00ff88",animation:"pulse 1s infinite"}}),(0,t.jsx)("span",{style:{fontSize:10,fontWeight:600,color:"var(--sd-green, #00ff88)"},children:"Scanning LinkedIn..."})]}),(0,t.jsx)("div",{style:{fontFamily:"monospace",fontSize:9,color:"var(--sd-fg-4, #777)",maxHeight:60,overflow:"auto"},children:O.map((e,n)=>(0,t.jsx)("div",{children:e},n))})]}),h&&G.map(e=>(0,t.jsxs)("div",{style:{marginBottom:16},children:[(0,t.jsxs)("div",{style:{padding:"8px 12px",borderRadius:6,marginBottom:4,background:e.level>=5?"rgba(255,215,0,0.08)":e.level>=3?"rgba(155,89,182,0.08)":"rgba(52,152,219,0.08)",borderLeft:`3px solid ${e.level>=5?"#FFD700":e.level>=3?"#9B59B6":"#3498DB"}`,display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{style:{fontSize:12,fontWeight:700,color:e.level>=5?"var(--sd-gold, #FFD700)":e.level>=3?"var(--sd-purple, #9B59B6)":"var(--sd-blue, #3498DB)"},children:e.label}),e.level>=5&&(0,t.jsx)("span",{style:{fontSize:9,color:"var(--sd-orange, #FF6B35)",marginLeft:8,fontWeight:700},children:"TARGET"})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[(0,t.jsxs)("span",{style:{fontSize:9,color:"var(--sd-orange, #FF6B35)",fontWeight:600},children:["+",e.people.filter(e=>!e.connected).reduce((e,t)=>e+(t.xp||0),0)," XP"]}),(0,t.jsxs)("span",{style:{fontSize:10,color:"var(--sd-fg-4, #666)"},children:[e.people.filter(e=>e.connected).length,"/",e.people.length]})]})]}),e.people.map((n,r)=>(0,t.jsx)(ed,{p:n,level:e,companyPeople:u,d1Urls:U,selectedCompany:h},n.id||r))]},e.key))]})}):(0,t.jsx)(K,{d1:m,d2:k,d3:S,initialShow:"people"===M?"people":"companies",onOpenCompany:e=>E({...e,sCount:e.S,aCount:e.A})})]})}function ed({p:e,level:r,companyPeople:o,d1Urls:i,selectedCompany:l}){let[s,a]=(0,n.useState)(!1),d=[];if(s&&!e.connected){let t=o.filter(t=>t.seniority.level>e.seniority.level&&!i.has(t.profile_url||t.profileUrl)),n=o.filter(t=>t.seniority.level===e.seniority.level&&t.id!==e.id),r=t.length;r>0&&d.push({icon:"⬆️",text:`Adding them gives you a mutual with ${r} people above in the hierarchy`,color:"var(--sd-green, #00ff88)"});let l=n.filter(e=>i.has(e.profile_url||e.profileUrl)).length;l>0?d.push({icon:"🤝",text:`${l} people at their level already connected: high social proof`,color:"var(--sd-gold, #FFD700)"}):d.push({icon:"🎯",text:"First connection at this level: opens a new layer",color:"var(--sd-blue, #3498DB)"}),e.bridgeName&&d.push({icon:"🔗",text:`Reachable through ${e.bridgeName}: warm intro possible`,color:"var(--sd-orange, #FF6B35)"}),e.seniority.level>=5?d.push({icon:"👑",text:`${e.seniority.label}: decision maker, high strategic value but low accept rate`,color:"var(--sd-gold, #FFD700)"}):e.seniority.level>=3?d.push({icon:"📊",text:`${e.seniority.label}: middle management, good balance of access and accept rate`,color:"var(--sd-purple, #9B59B6)"}):d.push({icon:"✅",text:`${e.seniority.label}: highest accept rate, builds mutual foundation for people above`,color:"var(--sd-green, #00ff88)"}),e.likelihood>=60?d.push({icon:"🔥",text:`${e.likelihood}% likely to accept: strong mutual overlap + approachable role`,color:"var(--sd-green, #00ff88)"}):e.likelihood>=30?d.push({icon:"⚡",text:`${e.likelihood}% likely: moderate chance, add more people at their level first`,color:"var(--sd-gold, #FFD700)"}):d.push({icon:"🔒",text:`${e.likelihood}% likely: low chance right now, build more connections below them first`,color:"var(--sd-red, #ff5050)"})}return(0,t.jsxs)("div",{style:{borderBottom:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.03)"},children:[(0,t.jsxs)("div",{onClick:()=>a(!s),style:{display:"flex",alignItems:"center",gap:8,padding:"6px 8px",cursor:"pointer",opacity:e.connected?.7:1},onMouseEnter:e=>e.currentTarget.style.background="rgba(var(--sd-ink, 255, 255, 255), 0.04)",onMouseLeave:e=>e.currentTarget.style.background="transparent",children:[(0,t.jsx)("span",{style:{fontSize:8,color:"var(--sd-fg-5, #555)",flexShrink:0,width:10},children:s?"▾":"▸"}),(0,t.jsx)("div",{style:{width:18,height:18,borderRadius:"50%",flexShrink:0,fontSize:8,display:"flex",alignItems:"center",justifyContent:"center",background:e.connected?"rgba(0,255,136,0.2)":"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:e.connected?"var(--sd-green, #00ff88)":"var(--sd-fg-5, #555)",border:`1px solid ${e.connected?"rgba(0,255,136,0.3)":"rgba(var(--sd-ink, 255, 255, 255), 0.1)"}`},children:e.connected?"✓":"🔒"}),(0,el.localPhoto)(e.profile_image_url||e.imageUrl)?(0,t.jsx)("img",{src:(0,el.localPhoto)(e.profile_image_url||e.imageUrl),alt:"",style:{width:26,height:26,borderRadius:"50%",objectFit:"cover",flexShrink:0},onError:e=>e.target.style.display="none"}):(0,t.jsx)("div",{style:{width:26,height:26,borderRadius:"50%",flexShrink:0,fontSize:10,fontWeight:700,background:"#333",color:"var(--sd-fg-3, #888)",display:"flex",alignItems:"center",justifyContent:"center"},children:e.name?.charAt(0)}),(0,t.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("div",{style:{fontSize:8,color:"var(--sd-fg-4, #666)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.headline?.substring(0,45)})]}),!e.connected&&e.bridgeName&&(0,t.jsxs)("span",{style:{fontSize:8,color:"var(--sd-orange, #FF6B35)",flexShrink:0,maxWidth:55,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:["via ",e.bridgeName.split(" ")[0]]}),!e.connected&&(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,flexShrink:0},children:[(0,t.jsxs)("span",{style:{fontSize:8,fontWeight:700,color:"var(--sd-orange, #FF6B35)"},children:["+",e.xp]}),(0,t.jsxs)("div",{style:{fontSize:9,fontWeight:700,minWidth:30,textAlign:"right",color:e.likelihood>=60?"var(--sd-green, #00ff88)":e.likelihood>=30?"var(--sd-gold, #FFD700)":"var(--sd-red, #ff5050)"},children:[e.likelihood,"%"]})]}),!e.connected&&(0,t.jsx)("a",{href:e.profile_url||e.profileUrl,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),style:{padding:"3px 7px",borderRadius:4,fontSize:8,fontWeight:700,background:"#0077B5",color:"#fff",textDecoration:"none",flexShrink:0},children:"Add"})]}),s&&(0,t.jsxs)("div",{style:{padding:"8px 12px 10px 44px",background:"rgba(var(--sd-ink, 255, 255, 255), 0.02)",borderTop:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)"},children:[(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-3, #aaa)",marginBottom:8},children:e.headline||"No headline available"}),(0,t.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"center",marginBottom:8,flexWrap:"wrap"},children:[(0,t.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:600,background:e.seniority.level>=5?"rgba(255,215,0,0.1)":e.seniority.level>=3?"rgba(155,89,182,0.1)":"rgba(52,152,219,0.1)",color:e.seniority.level>=5?"var(--sd-gold, #FFD700)":e.seniority.level>=3?"var(--sd-purple, #9B59B6)":"var(--sd-blue, #3498DB)",border:`1px solid ${e.seniority.level>=5?"rgba(255,215,0,0.2)":e.seniority.level>=3?"rgba(155,89,182,0.2)":"rgba(52,152,219,0.2)"}`},children:[e.seniority.label," · Level ",e.seniority.level]}),!e.connected&&(0,t.jsxs)("div",{style:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:9,fontWeight:700,background:"rgba(255,107,53,0.1)",color:"var(--sd-orange, #FF6B35)",border:"1px solid rgba(255,107,53,0.2)"},children:["+",e.xp," XP"]})]}),!e.connected&&d.length>0&&(0,t.jsxs)("div",{style:{marginTop:4},children:[(0,t.jsx)("div",{style:{fontSize:9,fontWeight:700,color:"var(--sd-fg-3, #888)",letterSpacing:.5,marginBottom:4},children:"STRATEGIC VALUE"}),d.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",gap:6,alignItems:"flex-start",padding:"2px 0",fontSize:10,color:"var(--sd-fg-2, #bbb)"},children:[(0,t.jsx)("span",{style:{fontSize:11,lineHeight:1},children:e.icon}),(0,t.jsx)("span",{style:{color:e.color},children:e.text})]},n))]}),e.connected&&(0,t.jsxs)("div",{style:{fontSize:10,color:"var(--sd-green, #00ff88)",fontWeight:600},children:["✓ Already connected: contributes as mutual for others at ",l?.name]})]})]})}e.s(["default",0,function(){return(0,t.jsx)(c.default,{children:(0,t.jsx)(n.Suspense,{children:(0,t.jsx)(ea,{})})})}],85957)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,5445,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(22016),s=e.i(2776),r=e.i(8819);function a(){let[e,o]=(0,n.useState)(null);return((0,n.useEffect)(()=>{fetch("/api/update").then(e=>e.json()).then(o).catch(()=>{})},[]),e)?e.installed?(0,t.jsx)(c,{local:e}):(0,t.jsx)(l,{local:e}):null}async function i(e){let t=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));return{ok:t.ok,d:n}}function l({local:e}){let[o,s]=(0,n.useState)(null),[a,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(null),[u,p]=(0,n.useState)(null);async function g(e){d(e),h(null);try{let{ok:t,d:n}=await i({action:e});if(!t){h(n.error||"Something went wrong."),n.dirty&&s({dirty:n.dirty});return}"check"===e?s(n):(p(n),s(null))}catch(e){h(e.message)}finally{d(null)}}return(0,n.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&(document.getElementById("updates")?.scrollIntoView({block:"center"}),g("check"),window.history.replaceState(null,"",window.location.pathname))},[]),(0,t.jsxs)(r.Section,{id:"updates",title:"Updates",children:[u?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{children:["Updated to ",(0,t.jsx)(r.Mono,{children:u.sha}),": “",u.subject,"”."]}),(0,t.jsx)(r.Body,{style:{color:u.needsRestart?"var(--sd-gold, #FFD700)":void 0},children:u.needsRestart?"Stop the app in your terminal and start it again: this update changed how it starts.":"The page will pick up most changes on its own. Restart the app if anything looks odd."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{children:["You are on ",(0,t.jsx)(r.Mono,{children:e.sha}),": “",e.subject,"”."]}),o&&0===o.behind&&(0,t.jsx)(r.Status,{tone:"ok",children:"You’re up to date."}),o&&o.behind>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{style:{color:"var(--sd-green, #00ff88)"},children:[o.behind," update",1===o.behind?"":"s"," available."]}),(0,t.jsx)("pre",{style:y,children:o.commits.join("\n")})]}),o?.dirty?.length>0&&(0,t.jsxs)(r.Body,{children:["Changed files here:"," ",(0,t.jsx)(r.Mono,{children:o.dirty.join(", ")}),". Commit or discard them first: this will not throw away your work."]}),(0,t.jsxs)(f,{children:[(0,t.jsx)(r.Btn,{onClick:()=>g("check"),disabled:!!a,children:"check"===a?"Checking…":"Check for updates"}),o?.behind>0&&(0,t.jsx)(r.Btn,{onClick:()=>g("pull"),disabled:!!a,primary:!0,children:"pull"===a?"Updating…":`Install ${o.behind} update${1===o.behind?"":"s"}`})]})]}),c&&(0,t.jsx)(r.Body,{style:{color:"var(--sd-red, #ff7676)"},children:c}),(0,t.jsxs)(r.Body,{style:{fontSize:12,color:"var(--sd-fg-4, #667)",marginTop:12},children:["Nothing is checked automatically and nothing about you is sent: this runs the same ",(0,t.jsx)(r.Mono,{children:"git fetch"})," and ",(0,t.jsx)(r.Mono,{children:"git pull"})," you would type yourself."]})]})}let d=["checking","downloading","verifying","preparing","restarting"];function c({local:e}){let o="mac-app"===e.kind,[s,a]=(0,n.useState)(!1),[l,x]=(0,n.useState)(null),[m,b]=(0,n.useState)(null),[k,w]=(0,n.useState)(!1),[j,v]=(0,n.useState)(null),[S,T]=(0,n.useState)(e.job||null),[C,$]=(0,n.useState)(!1),[I,B]=(0,n.useState)(null),[F,D]=(0,n.useState)(null),[E,R]=(0,n.useState)(void 0),[A,L]=(0,n.useState)(0),[M,O]=(0,n.useState)(!1),N=!!(S&&d.includes(S.phase)),z=N&&("restarting"===S.phase||A>0);async function W(){a(!0),x(null),b(null),B(null),D(null),R(void 0),T(e=>e&&d.includes(e.phase)?e:null);try{let{ok:e,d:t}=await i({action:"check-release"});e?(x(t),v(new Date)):b(t.error||"Could not check.")}catch(e){b(e.message)}finally{a(!1)}}async function P(){$(!0),B(null),D(null),R(void 0),L(0),O(!1);try{let{ok:e,d:t}=await i({action:"install-release"});t.job&&T(t.job),!e&&(B(t.error||"The update could not start."),D(t.refusal||null),"fallback"in t&&R(t.fallback))}catch(e){B(e.message)}finally{$(!1)}}async function Y(){try{let{d:e}=await i({action:"cancel-install"});e.job&&T(e.job)}catch{}}async function _(){try{await navigator.clipboard.writeText(e.command),w(!0),setTimeout(()=>w(!1),1600)}catch{b("Could not copy. Select the line and copy it by hand.")}}(0,n.useEffect)(()=>{"#updates"===window.location.hash&&document.getElementById("updates")?.scrollIntoView({block:"start"}),"updates"!==new URLSearchParams(window.location.search).get("check")||(window.history.replaceState(null,"",window.location.pathname),e.job&&d.includes(e.job.phase)||(document.getElementById("updates")?.scrollIntoView({block:"center"}),W().then(()=>document.getElementById("updates")?.scrollIntoView({block:"end",behavior:"smooth"}))))},[e.job]),(0,n.useEffect)(()=>{if(!N)return;let e=!0,t=setTimeout(async()=>{try{if(z){let t=await fetch("/api/update",{cache:"no-store"}),n=await t.json();if(!e)return;if(!n.job||n.job.id!==S.id)return void window.location.reload();L(0),T(n.job)}else{let{ok:t,d:n}=await i({action:"update-status"});e&&t&&n.job&&T(n.job)}}catch{e&&L(e=>e+1)}},z?1500:600);return()=>{e=!1,clearTimeout(t)}},[S,A,N,z]),(0,n.useEffect)(()=>{if(!z)return;let e=setTimeout(()=>O(!0),6e4);return()=>clearTimeout(e)},[z]);let H=S?.phase==="failed",U=o&&l?.install?.possible,V=H&&"stale-check"===S.code||"not-checked"===F,K=void 0!==E?E:l?.fallback,G="windows-app"===e.kind||"linux-app"===e.kind,J=!G&&l?.newer&&(!o||K)&&(!U||H||I||e.lastUpdate?.tone==="bad"),q=function({mac:e,kind:t,canInstall:n,fallback:o}){if(!e)return"source"===t?"A copy built from the source code updates by fetching the code and building it again, which it can't do while it runs. Stop it (Ctrl-C), then run this in the six-degrees folder. Your network stays where it is.":"This copy runs inside the terminal that started it, so it can't replace itself while it runs. Stop it first (Ctrl-C), then run this to start the newest version. Your network stays where it is.";if(!o)return null;let s=o.dataDir?` It opens the new version on the usual data folder, not on ${o.dataDir}: to use that one, quit it and open it again with --data-dir, as you opened this one.`:"";return"replace"===o.mode?`${n?"Or paste this into Terminal.":"Paste this into Terminal instead."} It closes this app, puts the new version in its place and opens it. Your network stays where it is.${s}`:`${n?"Or copy":"Copy"} this line, quit Six Degrees, then paste it into Terminal. It installs the new version at ${o.installsTo}, not where this copy is, and opens it: use that one from then on. Your network stays where it is.${s}`}({mac:o,kind:e.kind,canInstall:U,fallback:K});return(0,t.jsxs)(r.Section,{id:"updates",title:"Updates",children:[e.lastUpdate&&!N&&(0,t.jsx)(p,{report:e.lastUpdate}),(0,t.jsxs)(r.Body,{children:["You have version ",(0,t.jsx)(r.Mono,{children:e.version}),"."]}),N?(0,t.jsx)(u,{job:S,restarting:z,slow:M,onCancel:Y}):(0,t.jsxs)(t.Fragment,{children:[H&&(0,t.jsxs)(r.Status,{tone:"bad",children:[(0,t.jsx)("strong",{children:"The update didn’t finish."})," ",S.error," Nothing was changed."]}),S?.phase==="cancelled"&&(0,t.jsx)(r.Status,{children:"Cancelled. Nothing was changed."}),I&&(0,t.jsx)(r.Status,{tone:"bad",children:I}),l&&!l.latest&&(0,t.jsx)(r.Status,{children:"No release has been published yet."}),l?.latest&&!l.newer&&(0,t.jsxs)(r.Status,{tone:"ok",children:["You’re up to date: ",l.latest.version," is the newest version.",j&&(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:[" Checked at ",j.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),"."]})]}),l?.newer&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{style:{color:"var(--sd-green, #00ff88)"},children:["Version ",l.latest.version," is available."]}),U&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{children:["It downloads ",l.install.size?`about ${h(l.install.size)} MB`:"the new version"," from GitHub, checks it, then closes, replaces itself and reopens. Your network isn’t touched, and a backup of it is made first."]}),(0,t.jsxs)(f,{children:[V?(0,t.jsx)(r.Btn,{onClick:W,disabled:s,primary:!0,children:s?"Checking…":"Check again"}):(0,t.jsx)(r.Btn,{onClick:P,disabled:C,primary:!0,children:C?"Starting…":H||I?"Try again":"Install and restart"}),(0,t.jsx)(g,{url:l.latest.url})]})]}),o&&!U&&l.install?.reason&&(0,t.jsx)(r.Body,{children:l.install.reason}),G&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{children:["windows-app"===e.kind?"Download its Setup.exe from the release page and run it: it closes this copy, puts the new version in its place and opens it.":"Download its .deb (or .tar.gz) from the release page and install it over this one, after quitting Six Degrees."," ","Your network stays where it is."]}),(0,t.jsx)(f,{children:(0,t.jsx)("a",{href:(l.download||l.latest).url,target:"_blank",rel:"noreferrer",style:{display:"inline-block",padding:"8px 16px",borderRadius:8,fontSize:13,fontWeight:700,textDecoration:"none",background:"linear-gradient(135deg, #9B59B6, #3498DB)",color:"#fff"},children:"Open the release page"})})]}),J&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Body,{children:q}),e.testReleases?(0,t.jsx)("pre",{style:y,children:"Not shown in test mode: it would install the real release from GitHub into Applications."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("pre",{style:y,children:e.command}),(0,t.jsxs)(f,{children:[(0,t.jsx)(r.Btn,{onClick:_,primary:!U,children:k?"Copied":"Copy"}),!U&&(0,t.jsx)(g,{url:l.latest.url})]})]})]}),!U&&!J&&!G&&(0,t.jsx)(f,{children:(0,t.jsx)(g,{url:l.latest.url})})]}),!l?.newer&&(0,t.jsx)(f,{children:(0,t.jsx)(r.Btn,{onClick:W,disabled:s,children:s?"Checking…":l?"Check again":"Check for updates"})})]}),m&&(0,t.jsx)(r.Body,{style:{color:"var(--sd-red, #ff7676)"},children:m}),(0,t.jsxs)(r.Body,{style:{fontSize:12,color:"var(--sd-fg-4, #667)",marginTop:12},children:["Nothing is checked automatically. The button asks GitHub for the newest version number, and nothing about you is sent.",o&&" Only a second click, Install and restart, downloads the new version."]}),e.testReleases&&(0,t.jsxs)(r.Body,{style:{fontSize:12,color:"var(--sd-gold, #FFD700)",marginTop:6},children:["Test mode: releases are read from ",(0,t.jsx)(r.Mono,{children:e.testReleases})," on this computer, not from GitHub."]})]})}let h=e=>Math.max(1,Math.round(e/1e6));function u({job:e,restarting:n,slow:o,onCancel:s}){let a=e.total?Math.min(100,Math.round(e.received/e.total*100)):null,i=n?"Restarting… Six Degrees closes and opens again in a moment.":"checking"===e.phase?"Asking GitHub for the newest version…":"downloading"===e.phase?`Downloading ${e.version}…${null!==a?` ${a}% (${h(e.received)} of ${h(e.total)} MB)`:""}`:"verifying"===e.phase?"Checking the download…":"Preparing the new version…";return(0,t.jsxs)("div",{role:"status","aria-live":"polite",style:{marginTop:12},children:[(0,t.jsx)(r.Body,{style:{color:"var(--sd-fg-1, #e8e8ee)"},children:i}),"downloading"===e.phase&&null!==a&&(0,t.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a,"aria-label":"Download",style:{height:6,borderRadius:3,background:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",marginTop:10,overflow:"hidden",maxWidth:420},children:(0,t.jsx)("div",{style:{width:`${a}%`,height:"100%",background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.4s ease"}})}),o&&(0,t.jsx)(r.Body,{children:"This is taking longer than it should. If Six Degrees doesn’t open again by itself, open it from your Applications folder."}),!n&&(0,t.jsx)(f,{children:(0,t.jsx)(r.Btn,{onClick:s,children:"Cancel"})})]})}function p({report:e}){let n=new Date(e.at).toLocaleString([],{dateStyle:"medium",timeStyle:"short"});return(0,t.jsxs)(r.Status,{tone:"ok"===e.tone?"ok":"bad",children:[e.text," ",(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:["(",n,")"]}),"ok"===e.tone&&e.previous&&(0,t.jsxs)("span",{style:{display:"block",fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:4},children:["A copy of the version you had is kept in ",(0,t.jsx)(r.Mono,{children:e.previous})," until the next update. To go back to it, open that file and drag the app it gives you into your Applications folder."]})]})}function g({url:e}){return e?(0,t.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",style:{color:"var(--sd-blue, #3498DB)",fontSize:13.5},children:"What changed →"}):null}function f({children:e}){return(0,t.jsx)("div",{style:{display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},children:e})}let y={background:"rgba(var(--sd-shade, 0, 0, 0), 0.45)",border:r.LINE,borderRadius:8,padding:12,margin:"8px 0 0",fontSize:12,lineHeight:1.7,color:"var(--sd-fg-2, #b9c6c6)",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"};function x(e){if(!e)return"0 KB";if(e<1048576)return`${Math.max(1,Math.round(e/1024))} KB`;let t=e/1048576;return`${t<10?t.toFixed(1):Math.round(t)} MB`}let m=e=>Number(e||0).toLocaleString("en-US"),b=(e,t,n=`${t}s`)=>`${m(e)} ${1===Number(e)?t:n}`;function k(e,t=!0){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:n.toLocaleString(void 0,t?{dateStyle:"medium",timeStyle:"short"}:{dateStyle:"medium"})}async function w(e,t){let n=await e.json().catch(()=>({}));if(!e.ok)throw Object.assign(Error(n.error||t),{data:n});return n}let j={display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},v={fontSize:12,color:"var(--sd-fg-4, #667)",marginTop:10},S={fontSize:14,fontWeight:650,margin:"26px 0 4px",color:"var(--sd-fg-1, #e8e8ee)"},T={display:"flex",gap:8,alignItems:"flex-start",marginTop:12,fontSize:13,color:"var(--sd-fg-2, #c8d0d0)",lineHeight:1.5,cursor:"pointer"};function C({label:e,children:n}){return(0,t.jsxs)("div",{style:{display:"flex",gap:12,justifyContent:"space-between",padding:"7px 0",borderTop:r.LINE,fontSize:13.5},children:[(0,t.jsx)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:e}),(0,t.jsx)("span",{style:{color:"var(--sd-fg-1, #e8e8ee)",textAlign:"right"},children:n})]})}function $({status:e}){let n=e?.last,o=e?.failed,s=o&&(!n||Date.parse(o.at)>Date.parse(n.at));return(0,t.jsxs)(t.Fragment,{children:[s&&(0,t.jsxs)(r.Status,{tone:"bad",children:["The last backup didn’t work (",k(o.at),"): ",o.message.replace(/\.$/,""),".",!n&&" There’s no backup yet."]}),n?n.verified?(0,t.jsxs)(r.Status,{tone:s?void 0:"ok",children:["Last backup: ",k(n.at),", verified",null!=n.people?` (${b(n.people,"person","people")})`:"","."]}):(0,t.jsxs)(r.Status,{tone:"bad",children:["Last backup: ",k(n.at),", but it didn’t pass its check, so it can’t be restored: ",n.problem," ","Click Back up now to make a new one."]}):!s&&(0,t.jsx)(r.Status,{children:"No backup yet. One is made each day Six Degrees is open with a network in it."})]})}function I({pending:e,info:n,busy:o,restarting:s,onRestart:a,onCancel:i}){let l=e.restoredFrom?(0,t.jsxs)(t.Fragment,{children:["The backup ",(0,t.jsx)(r.Mono,{children:e.restoredFrom})]}):(0,t.jsxs)(t.Fragment,{children:["The network in the copy",e.exportedAt?` saved ${k(e.exportedAt,!1)}`:""]});return(0,t.jsxs)(r.Status,{children:[(0,t.jsx)("div",{style:{fontWeight:650},children:e.restoredFrom?"A restore is waiting to finish.":"An import is waiting to finish."}),(0,t.jsxs)("div",{children:[l," ","(",b(e.people,"person","people"),e.photos?`, ${b(e.photos,"photo")}`:"",e.fromVersion?`, from Six Degrees ${e.fromVersion}`:"",")",e.replacedPeople>0?` replaces the ${b(e.replacedPeople,"person","people")} here the next time Six Degrees starts. A copy of what’s here now is kept in backups first, so it can be undone.`:" becomes the network here the next time Six Degrees starts."," ","Your LinkedIn search budget and any pause on scanning are kept."]}),e.error&&(0,t.jsxs)("div",{style:{color:"var(--sd-red, #ff7676)",marginTop:6},children:["The last try stopped: ",e.error.replace(/\.$/,""),". It tries again the next time Six Degrees starts."]}),s?(0,t.jsx)("div",{style:{marginTop:8},children:"Restarting… this page comes back in a few seconds."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{marginTop:8},children:n.restart.how}),n.restart.command&&(0,t.jsx)("div",{style:{marginTop:6},children:(0,t.jsx)(r.Mono,{children:n.restart.command})}),(0,t.jsxs)("div",{style:j,children:[n.restart.canRestart&&(0,t.jsx)(r.Btn,{primary:!0,onClick:a,disabled:!!o,children:"restart"===o?"Restarting…":"Restart now"}),!e.started&&(0,t.jsx)(r.Btn,{onClick:i,disabled:!!o,children:"cancel"===o?"Cancelling…":e.restoredFrom?"Cancel the restore":"Cancel the import"})]})]})]})}function B(){let[e,o]=(0,n.useState)(null),[s,a]=(0,n.useState)(null),[i,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(null),[h,u]=(0,n.useState)(null),[p,g]=(0,n.useState)(null),[f,y]=(0,n.useState)(null),[B,F]=(0,n.useState)(null),[D,E]=(0,n.useState)(null),[R,A]=(0,n.useState)(!0),[L,M]=(0,n.useState)(!0),[O,N]=(0,n.useState)(null),[z,W]=(0,n.useState)(!1),[P,Y]=(0,n.useState)(!1),_=(0,n.useRef)(null),H=(0,n.useRef)(!1),U=(0,n.useCallback)(()=>fetch("/api/data",{cache:"no-store"}).then(e=>w(e,"The data folder could not be read.")).then(e=>{let t=Date.parse(e.lastImport?.appliedAt||"");o({...e,importIsRecent:Number.isFinite(t)&&Date.now()-t<864e5}),a(null)}).catch(e=>a(e.message)),[]);async function V(){c(null);try{await navigator.clipboard.writeText(e.dataDir),c({tone:"ok",text:"Copied the folder’s path."})}catch{c({tone:"bad",text:"This window can’t copy. Select the path above and copy it instead."})}}async function K(){l("reveal"),c(null);try{await w(await fetch("/api/data/reveal",{method:"POST"}),"The folder could not be opened."),c({tone:"ok",text:"darwin"===e.platform?"Opened in Finder.":"Opened in your file browser."})}catch(e){c({tone:"bad",text:e.message})}finally{l(null)}}async function G(){l("backup"),u(null),g(null);try{let e,t=await w(await fetch("/api/data/backup",{method:"POST"}),"The backup could not be made.");await U();let n=t.backup;u({tone:"ok",text:`Backed up ${(e=n.people,b(e,"person","people"))}${n.photos?` and ${b(n.photos,"photo")}`:""} (${x(n.bytes)}), and checked it. This one stays until you delete it.`})}catch(e){await U(),u({tone:"bad",text:e.message})}finally{l(null)}}async function J(e){l(`reveal:${e}`),g(null);try{await w(await fetch("/api/data/reveal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({backup:e})}),"The backup could not be shown.")}catch(t){g({name:e,tone:"bad",text:t.message})}finally{l(null)}}async function q(t){l(`restore:${t}`),g(null),u(null);try{await w(await fetch("/api/data/restore",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t,replace:e.people})}),"The backup could not be restored."),y(null),await U()}catch(e){e.data?.needsConfirm&&await U(),g({name:t,tone:"bad",text:e.message})}finally{l(null)}}async function X(){l("export"),F(null);try{let e,t=await fetch("/api/data/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({photos:R,social:L})});t.ok||await w(t,"The backup file could not be made.");let n=await t.blob(),o=/filename="([^"]+)"/.exec(t.headers.get("content-disposition")||"")?.[1]||"Six Degrees backup.sixdegrees",s=URL.createObjectURL(n),r=document.createElement("a");r.href=s,r.download=o,r.style.position="fixed",r.style.left="-9999px",document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(s),6e4);let a=[(e=Number(t.headers.get("x-six-degrees-people")),b(e,"person","people"))];a.push(R?b(Number(t.headers.get("x-six-degrees-photos")),"photo"):"no photos"),F({tone:"ok",text:`Made “${o}” (${x(n.size)}: ${a.join(", ")}). Look for it in your Downloads folder, or wherever you chose to save it.`})}catch(e){F({tone:"bad",text:e.message})}finally{l(null)}}async function Q(){if(O){l("import"),E(null);try{let t={"Content-Type":"application/octet-stream","X-Six-Degrees-Size":String(O.size)};e.people>0&&(t["X-Six-Degrees-Replace"]=String(e.people)),await w(await fetch("/api/data/import",{method:"POST",headers:t,body:O}),"The file could not be restored."),N(null),W(!1),_.current&&(_.current.value=""),await U()}catch(e){e.data?.needsConfirm&&(W(!1),await U()),E({tone:"bad",text:e.message})}finally{l(null)}}}async function Z(){l("cancel"),E(null),u(null);let t=e.pending?.restoredFrom?u:E;try{await w(await fetch("/api/data/import",{method:"DELETE"}),"It could not be cancelled."),await U(),t({tone:"ok",text:"Cancelled. The network here stays as it is."})}catch(e){t({tone:"bad",text:e.message})}finally{l(null)}}async function ee(){l("restart"),E(null);try{await w(await fetch("/api/data/restart",{method:"POST"}),"Six Degrees could not restart."),Y(!0);let e=e=>new Promise(t=>setTimeout(t,e)),t=Date.now()+9e4;for(await e(2500);Date.now()<t;){try{if((await fetch("/api/data",{cache:"no-store"})).ok)return void window.location.reload()}catch{}await e(1e3)}Y(!1),E({tone:"bad",text:"Six Degrees didn’t come back. Quit it and open it again: it finishes as it starts."})}catch(e){E({tone:"bad",text:e.message})}finally{l(null)}}if((0,n.useEffect)(()=>{U()},[U]),(0,n.useEffect)(()=>{e&&!H.current&&(H.current=!0,"#data"===window.location.hash&&document.getElementById("data")?.scrollIntoView({block:"start"}))},[e]),!e)return(0,t.jsx)(r.Section,{id:"data",title:"Your data",children:s?(0,t.jsx)(r.Status,{tone:"bad",children:s}):(0,t.jsx)(r.Body,{children:"Loading…"})});let et=e.pending,en=e.photosInCopy||e.photos,eo=e.backups||[],es=eo.reduce((e,t)=>e+(t.bytes||0),0),er=e.backupStatus||{},ea=er.keep||{},ei=!!(O&&O.size>e.maxImportBytes),el=e.people>0,ed=e.lastImport,ec="darwin"===e.platform?"Show in Finder":"Show in folder",eh=et&&(0,t.jsx)(I,{pending:et,info:e,busy:i,restarting:P,onRestart:ee,onCancel:Z});return(0,t.jsxs)(r.Section,{id:"data",title:"Your data",intro:"Everything Six Degrees knows about your network is in one folder on this computer.",children:[(0,t.jsx)(r.Body,{children:(0,t.jsx)(r.Mono,{children:e.dataDir})}),(0,t.jsxs)("div",{style:j,children:[(0,t.jsx)(r.Btn,{onClick:V,children:"Copy the path"}),(0,t.jsx)(r.Btn,{onClick:K,disabled:"reveal"===i,children:"reveal"===i?"Opening…":"darwin"===e.platform?"Show in Finder":"Open the folder"})]}),d&&(0,t.jsx)(r.Status,{tone:d.tone,children:d.text}),(0,t.jsxs)("div",{style:{marginTop:16,borderBottom:r.LINE},children:[(0,t.jsxs)(C,{label:"Your network",children:[b(e.people,"person","people")," · ",x(e.databaseBytes)]}),(0,t.jsx)(C,{label:"Profile photos",children:e.photos.count?`${m(e.photos.count)} \xb7 ${x(e.photos.bytes)}`:"none saved yet"}),(0,t.jsx)(C,{label:"Backups",children:eo.length?`${b(eo.length,"copy","copies")} \xb7 ${x(es)}`:"none yet"}),(0,t.jsx)(C,{label:"LinkedIn sign-in for scanning",children:e.linkedinSignIn?"kept here, never put in a copy":"not signed in on this computer"})]}),(0,t.jsx)("h3",{style:S,children:"Backups"}),(0,t.jsx)($,{status:er}),(0,t.jsxs)("div",{style:j,children:[(0,t.jsx)(r.Btn,{onClick:G,disabled:!!i||P||0===e.people,children:"backup"===i?"Backing up…":"Back up now"}),0===e.people&&(0,t.jsx)("span",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"There’s no network here to back up yet."})]}),h&&(0,t.jsx)(r.Status,{tone:h.tone,children:h.text}),et?.restoredFrom&&eh,(0,t.jsxs)(r.Body,{style:v,children:["Each backup is your whole network with its photos, your settings and the scanner’s notes, checked as it’s made. Six Degrees makes one each day it’s open and before a new version first opens your data. It keeps the last ",ea.daily??7," daily backups, ",ea["before-update"]??3," from before new versions, and"," ",ea["before-import"]??3," from before an import or a restore (those for at least ",er.floorDays??30," days). Backups you make with Back up now stay until you delete them. The Social tab’s messages and notes are never in them, so deleting those there deletes them everywhere. Backups are on this computer only, so to keep one safe if the computer is lost, copy it somewhere else."]}),eo.length>0&&(0,t.jsxs)("details",{style:{marginTop:10,fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:[(0,t.jsxs)("summary",{style:{cursor:"pointer"},children:["The backups (",m(eo.length),")"]}),(0,t.jsx)("div",{style:{marginTop:6},children:eo.map(n=>{let o=f===n.name,s=p?.name===n.name?p:null;return(0,t.jsxs)("div",{style:{padding:"10px 0",borderTop:r.LINE},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:10,justifyContent:"space-between",flexWrap:"wrap"},children:[(0,t.jsxs)("span",{style:{color:"var(--sd-fg-1, #e8e8ee)",fontWeight:600},children:["daily"===n.kind?"Daily":"before-update"===n.kind?n.version?`Before version ${n.version}`:"Before a new version":"before-import"===n.kind?"Before an import or a restore":n.byHand?"Put here by hand":"Made by you"," ",(0,t.jsxs)("span",{style:{fontWeight:400,color:"var(--sd-fg-3, #8b9a9a)"},children:["· ",k(n.at)]})]}),(0,t.jsx)("span",{children:x(n.bytes)})]}),(0,t.jsxs)("div",{style:{fontSize:12,color:"var(--sd-fg-4, #667)",marginTop:2},children:[(0,t.jsxs)("span",{style:{wordBreak:"break-all"},children:[n.name,n.folder?"/":""]})," · ",n.restorable?"sixdegrees"===n.format?"network, photos and files":n.withFiles?"network, with its photos and files beside it":"before-update"===n.kind?"network only (made before backups had photos)":"before-import"===n.kind?"network only (it had no photos or files to keep)":"network only":"not a backup Six Degrees can restore"]}),o?(0,t.jsxs)(r.Status,{children:[el?`Replace the ${b(e.people,"person","people")} here with the network in this backup?`:"Restore the network in this backup?"," ","It’s checked first, and finishes when Six Degrees restarts. What’s here now is kept in backups first, so this can be undone. Your LinkedIn search budget and any pause on scanning are kept.","database"===n.format&&!n.withFiles&&" This backup holds the network only, so the photos and the scanner’s notes here now stay with it.",(0,t.jsxs)("div",{style:j,children:[(0,t.jsx)(r.Btn,{primary:!0,onClick:()=>q(n.name),disabled:!!i,children:i===`restore:${n.name}`?"Checking the backup…":"Restore it"}),(0,t.jsx)(r.Btn,{onClick:()=>{y(null),g(null)},disabled:i===`restore:${n.name}`,children:"Cancel"})]})]}):(0,t.jsxs)("div",{style:{...j,marginTop:8},children:[n.restorable&&(0,t.jsx)(r.Btn,{onClick:()=>{y(n.name),g(null)},disabled:!!i||P||!!et,children:"Restore"}),(0,t.jsx)(r.Btn,{onClick:()=>J(n.name),disabled:i===`reveal:${n.name}`,children:i===`reveal:${n.name}`?"Opening…":ec})]}),s&&(0,t.jsx)(r.Status,{tone:s.tone,children:s.text})]},n.name)})})]}),(0,t.jsx)(r.Body,{style:v,children:"The folder can’t be moved from here. A database that a sync service (iCloud Drive, Dropbox) copies while it’s open can be damaged, and this folder also holds your LinkedIn sign-in, which should never be synced. To use your network on another computer, export a backup file below and restore it there."}),(0,t.jsx)("h3",{style:S,children:"Move your network to another computer"}),(0,t.jsx)(r.Body,{children:"Export a backup file here, then on the new computer install Six Degrees, open Settings → Your data and restore from it. Sign in to LinkedIn again there before you scan: your sign-in never goes into a backup."}),(0,t.jsxs)("label",{style:T,children:[(0,t.jsx)("input",{type:"checkbox",checked:R,onChange:e=>A(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Include profile photos",en.count?` (${m(en.count)}, ${x(en.bytes)})`:"",". They can’t be downloaded again without a new scan."]})]}),(0,t.jsxs)("label",{style:T,children:[(0,t.jsx)("input",{type:"checkbox",checked:L,onChange:e=>M(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Include the Social tab: its findings, your CRM notes, stages and follow-ups, and any messages you keep there."})]}),(0,t.jsxs)("div",{style:j,children:[(0,t.jsx)(r.Btn,{primary:!0,onClick:X,disabled:!!i||P||0===e.people,children:"export"===i?"Saving…":"Export backup file…"}),0===e.people&&(0,t.jsx)("span",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"There’s no network here to save yet."})]}),B&&(0,t.jsx)(r.Status,{tone:B.tone,children:B.text}),(0,t.jsx)(r.Body,{style:v,children:"The file holds the names, headlines and photos of the people in your network. Keep it private: don’t post it or share it, and delete it once it has been restored. A LinkedIn CSV import kept on this computer goes into the file too, and opens on the new one. With the Social tab included, the file also holds your CRM notes and any messages you keep, so it’s as private as your inbox."}),(0,t.jsx)("h3",{style:S,children:"Bring in a network from another computer"}),et&&!et.restoredFrom?eh:et?(0,t.jsx)(r.Body,{children:"A restore is waiting to finish (under Backups, above). Restart, or cancel it, before restoring anything else."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.Body,{children:"Pick the backup file you exported on the other computer (a .sixdegrees file). It replaces the network here; the two networks are never merged. Your LinkedIn search budget and any pause on scanning are kept, with the other computer’s searches added."}),(0,t.jsx)("input",{ref:_,type:"file",accept:".sixdegrees",onChange:function(e){E(null),W(!1),N(e.target.files?.[0]||null)},style:{display:"none"}}),(0,t.jsxs)("div",{style:j,children:[(0,t.jsx)(r.Btn,{onClick:()=>_.current?.click(),disabled:!!i,children:"Restore from a file…"}),O&&(0,t.jsxs)("span",{style:{fontSize:13,color:"var(--sd-fg-2, #c8d0d0)",wordBreak:"break-all"},children:[O.name," · ",x(O.size)]})]}),ei&&(0,t.jsxs)(r.Status,{tone:"bad",children:["That file is ",x(O.size),". This copy can restore files up to ",x(e.maxImportBytes),"."]}),O&&el&&!ei&&(0,t.jsxs)("label",{style:T,children:[(0,t.jsx)("input",{type:"checkbox",checked:z,onChange:e=>W(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Replace the ",b(e.people,"person","people")," in this copy’s network with the network in this file. A copy of what’s here is kept in backups first. Your search budget and any pause on scanning are kept too."]})]}),O&&(0,t.jsx)("div",{style:j,children:(0,t.jsx)(r.Btn,{primary:!0,onClick:Q,disabled:ei||el&&!z||!!i,children:"import"===i?"Checking the file…":"Restore"})})]}),D&&(0,t.jsx)(r.Status,{tone:D.tone,children:D.text}),ed&&!et&&(e.importIsRecent?(0,t.jsxs)(r.Status,{tone:"ok",children:[ed.restoredFrom?"Restored":"Imported"," ",k(ed.appliedAt),": ",b(ed.people,"person","people"),ed.restoredFrom?(0,t.jsxs)(t.Fragment,{children:[" from the backup ",(0,t.jsx)(r.Mono,{children:ed.restoredFrom})]}):ed.exportedAt?` from the copy saved ${k(ed.exportedAt,!1)}`:"",".",ed.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" ","What was here before is kept in ",(0,t.jsx)(r.Mono,{children:ed.keptDatabase}),ed.keptFiles?", with its photos and files beside it":"",".",ed.keptAsIs&&" It couldn’t be read, so it was kept exactly as it was."," ","To go back to it, restore it from the backups above."]})]}):(0,t.jsxs)(r.Body,{style:v,children:["Last ",ed.restoredFrom?"restore":"import",": ",k(ed.appliedAt)," (",b(ed.people,"person","people"),").",ed.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" What was here before is kept in ",(0,t.jsx)(r.Mono,{children:ed.keptDatabase}),", under Backups above."]})]}))]})}var F=e.i(98197),D=e.i(44944),E=e.i(77170),R=e.i(69083),A=e.i(90179);e.i(46949);var L=e.i(828),M=e.i(7837),O=e.i(56899);let N={lean:"Lean",strong:"Strong"},z=["wheel","touchstart","keydown","pointerdown"],W={1:"1st",2:"2nd",3:"3rd"},P=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,Y=E.DIRECTORY.filter(e=>"function"===e.kind).map(e=>e.label);function _(e,t,n){let[o,s]=n?["moved","moved"]:["moves","move"];if(!e&&!t)return n?"No one changed tier.":"No one changes tier.";let r=e=>1===e?o:s;return e&&t?`${P(e,"person","people")} ${r(e)} up a tier and ${t.toLocaleString()} ${r(t)} down.`:e?`${P(e,"person","people")} ${r(e)} up a tier.`:`${P(t,"person","people")} ${r(t)} down a tier.`}function H({onSaved:e}={}){let[o,s]=(0,n.useState)(null),[a,i]=(0,n.useState)(null),[l,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(!1),[u,p]=(0,n.useState)(null),[g,f]=(0,n.useState)(null),[y,x]=(0,n.useState)({loading:!0}),[m,b]=(0,n.useState)(null),k=(0,n.useRef)(null),w=(0,n.useRef)(0),j=(0,n.useRef)(!1);function v(e){i(e),p(null),clearTimeout(k.current);let t=++w.current;if((0,D.sameFocus)(e,o))return void d(null);let n=(0,D.focusFingerprint)(e);d({key:n,loading:!0}),k.current=setTimeout(async()=>{try{let o=await fetch("/api/settings/sector-preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sectorFocus:e})}),s=await o.json();if(t!==w.current)return;d(o.ok?{key:n,...s}:{key:n,error:s.error||"Could not work out what would change."})}catch{t===w.current&&d({key:n,error:"Could not reach the app to work out what would change."})}},250)}async function S(){var t,n;let o;h(!0),p(null),clearTimeout(k.current),w.current++;let r=await (0,O.saveSettings)({sectorFocus:a});(h(!1),r.settings&&(s(r.settings.sectorFocus),i(r.settings.sectorFocus),d(null)),r.error)?p({tone:"bad",text:r.error}):(p({tone:"ok",text:(t=r.settings.sectorFocus,n=r.effects?.sectorFocus,o=t.sectors.length?`Saved: ${t.sectors.map(e=>(0,R.sectorByKey)(e).label).join(" · ")} (${N[t.strength].toLowerCase()}).`:"Saved: no sector.",n?n.scored?`${o} Rescored your network (${P(n.people??n.scored,"person","people")}). ${_(n.up,n.down,!0)}`:`${o} There's no scanned network yet; it will apply when you scan.`:o)}),e?.())}(0,n.useEffect)(()=>{let e=!1;return(0,M.csvNetworkSource)().then(t=>{e||b(t)}),fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your sector.")))).then(t=>{if(e)return;let n=t.settings?.sectorFocus||{sectors:[],strength:"lean"};s(n),i(n)}).catch(t=>{e||f(t.message)}),fetch("/api/settings/sector-suggestions").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load suggestions.")))).then(t=>{e||x({scored:t.scored,list:t.suggestions||[]})}).catch(t=>{e||x({error:t.message})}),()=>{e=!0,clearTimeout(k.current)}},[]),(0,n.useEffect)(()=>{if(j.current||!a&&!g)return;j.current=!0;let e=document.getElementById("sector");if("#sector"!==window.location.hash||!e)return;let t=()=>e.scrollIntoView({block:"start"});t();let n=new ResizeObserver(t);n.observe(document.body);let o=()=>{for(let e of(n.disconnect(),clearTimeout(s),z))window.removeEventListener(e,o,!0)},s=setTimeout(o,2e3);for(let e of z)window.addEventListener(e,o,{capture:!0,passive:!0});return o},[a,g]);let T=a&&o&&!(0,D.sameFocus)(a,o);return(0,t.jsxs)(r.Section,{id:"sector",title:"Your sector",intro:"Pick up to three sectors you work in. Companies in them count for more when your network is scored, so the people there rank higher.",children:[g&&(0,t.jsx)(r.Status,{tone:"bad",children:g}),!a&&!g&&(0,t.jsx)(r.Body,{children:"Loading…"}),a&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(F.default,{sectors:a.sectors,onChange:e=>v({...a,sectors:e}),disabled:c,suggest:y}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:8,marginTop:14},children:[(0,t.jsx)("span",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)"},children:"How much:"}),Object.keys(A.SECTOR_BONUS).map(e=>(0,t.jsxs)("button",{type:"button","aria-pressed":a.strength===e,disabled:c,onClick:()=>v({...a,strength:e}),style:{padding:"5px 12px",borderRadius:7,fontSize:12.5,fontWeight:600,cursor:"pointer",color:a.strength===e?"var(--sd-fg-1, #fff)":"var(--sd-fg-3, #8b9a9a)",background:a.strength===e?"rgba(52,152,219,0.25)":"transparent",border:r.LINE},children:[N[e]," · +",A.SECTOR_BONUS[e]]},e))]}),(0,t.jsx)(r.Body,{style:{fontSize:12.5},children:"Each company in your sectors gets +1 (lean) or +2 (strong) on its score out of 10, never above 10. A company in more than one of your picks still gets it once."}),(0,t.jsx)(U,{preview:T?l:null,draft:a}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:14},children:[(0,t.jsx)(r.Btn,{primary:!0,onClick:S,disabled:!T||c,children:c?"Saving and rescoring…":"Save"}),T&&!c&&(0,t.jsx)(r.Btn,{onClick:()=>v(o),children:"Cancel"}),!T&&a.sectors.length>0&&!c&&(0,t.jsx)(r.Btn,{onClick:()=>v({...a,sectors:[]}),children:"Turn off"})]}),u&&(0,t.jsx)(r.Status,{tone:u.tone,children:u.text}),(0,t.jsxs)("ul",{style:{margin:"16px 0 0",paddingLeft:18,fontSize:12.5,color:"var(--sd-fg-4, #778)",lineHeight:1.7},children:[(0,t.jsx)("li",{children:"Tiers rank how reachable someone is through your network, not the people themselves."}),(0,t.jsxs)("li",{children:["A company score you set on ",(0,t.jsx)("a",{href:"#companies",style:{color:"var(--sd-blue, #3498DB)"},children:"Company scores"}),", below, always wins. Your sector never changes it."]}),(0,t.jsx)("li",{children:"If you scan highest tier first, people in your sectors come up sooner. Scanning newest first, the default, doesn’t go by tier."}),(0,t.jsx)("li",{children:"An industry includes its sectors. It counts a company in any of its sectors (Healthcare & Biotech counts a practice that is only in Dental), and a company whose industry the app’s list of well-known companies or the company’s own name gives (Meridian Health). Not one known only from its people’s job titles: a recruiter at Acme Widgets doesn’t make Acme a consulting firm."}),(0,t.jsx)("li",{children:"A narrower sector counts a company when its name says so (Smith Family Dental), it’s a well-known company in that sector, or at least half of the people you know there say so in their headlines (dentist, DDS, orthodontist). The words are a fixed list that comes with the app, the same on every computer. Nothing is sent anywhere."}),(0,t.jsxs)("li",{children:["Some sectors are work every kind of company has: ",Y.length>1?`${Y.slice(0,-1).join(", ")} and ${Y.at(-1)}`:Y.join(""),". For those a job title doesn’t count, since a recruiter at Acme Widgets doesn’t make it a recruiting firm. The company’s name does (Acme Staffing, Smith CPA), and so does a kind of firm in a headline (staffing agency, law firm, SaaS)."]}),m&&(0,t.jsxs)("li",{style:{color:"var(--sd-gold, #FFD700)"},children:["sample"===m?"The sample network open in this window":"The CSV import you have open"," isn’t changed by this, and isn’t counted in the suggestions. Your sector applies to networks you’ve scanned."]})]})]})]})}function U({preview:e,draft:n}){if(!e||e.key!==(0,D.focusFingerprint)(n))return null;let o={marginTop:12,padding:"10px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,border:r.LINE,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",color:"var(--sd-fg-2, #cfd8d8)"};if(e.loading)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"Working out what would change…"});if(e.error)return(0,t.jsx)(r.Status,{tone:"bad",children:e.error});if(!e.scored)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"There’s no scanned network yet, so nothing changes now. Your choice applies once you scan."});let s=(e,t)=>`${P(e,"company","companies")} ${1===e?"scores":"score"} ${t}`,a=[e.companiesUp&&s(e.companiesUp,"higher"),e.companiesDown&&s(e.companiesDown,"lower")].filter(Boolean).join(" and ");return(0,t.jsxs)("div",{style:o,"aria-live":"polite",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #fff)"},children:"If you save:"})," ",a?`${a}.`:"No company changes score."," ",_(e.up,e.down,!1)]}),e.examples?.length>0&&(0,t.jsx)("div",{style:{marginTop:6,display:"flex",flexWrap:"wrap",gap:"4px 12px",fontSize:12.5},children:e.examples.map((e,n)=>(0,t.jsxs)("span",{title:e.company||void 0,children:[e.name,e.degree?(0,t.jsxs)("span",{style:{color:"var(--sd-fg-4, #667)"},children:[" (",W[e.degree]||`${e.degree}th`,")"]}):null," ",(0,t.jsx)("b",{style:{color:L.TIER_COLORS_CLASSIC[e.from]||"#889"},children:e.from||"–"})," → ",(0,t.jsx)("b",{style:{color:L.TIER_COLORS_CLASSIC[e.to]||"#889"},children:e.to})]},n))}),e.companyExamples?.length>0&&(0,t.jsx)("div",{style:{marginTop:4,fontSize:12,color:"var(--sd-fg-3, #8b9a9a)"},children:e.companyExamples.slice(0,3).map(e=>`${e.name} ${e.from} → ${e.to}`).join(" · ")})]})}let V=e=>`${Math.round(100*e)}%`,[K,G,J]=A.CURVE.map(([,e])=>e),q=[{key:"curve",label:"On your network's curve",note:`Your top ${V(K)} are S, the next ${V(G-K)} A and the next ${V(J-G)} B, so any network has a top, even one full of companies the app doesn't know. It only lifts: nobody drops a tier because their network is strong, and nobody under ${A.CURVE_FLOOR} is lifted into S or A.`},{key:"fixed",label:"On the fixed scale",note:"The same lines for everyone: S from 7.5, A from 5.5, B from 4, C from 2.5. Easy to compare from one network to another, but a network outside well-known companies has almost nobody in S or A."}];function X({onSaved:e}={}){let[o,s]=(0,n.useState)(null),[a,i]=(0,n.useState)(!1),[l,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(null),[u,p]=(0,n.useState)(null);async function g(t){if(a||t===o)return;i(!0),d(null);let{settings:n,effects:r,error:l}=await (0,O.saveSettings)({tierScale:t});if(n&&s(n.tierScale),l)d({tone:"bad",text:l});else{let t,n=r?.tierScale;d({tone:"ok",text:n?`Saved. ${t=n.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}i(!1)}return(0,n.useEffect)(()=>{let e=!1;return(0,M.csvNetworkSource)().then(t=>{e||p(t)}),fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load how tiers are graded.")))).then(t=>{e||s(t.settings?.tierScale||"curve")}).catch(t=>{e||h(t.message)}),()=>{e=!0}},[]),(0,t.jsxs)(r.Section,{id:"tiers",title:"Tiers",intro:"How the S to D rings are drawn. A tier says where someone sits in your network, not what they're worth.",children:[c&&(0,t.jsx)(r.Status,{tone:"bad",children:c}),o&&(0,t.jsx)("div",{role:"radiogroup","aria-label":"How tiers are graded",style:{display:"grid",gap:8},children:q.map(e=>{let n=o===e.key;return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":n,disabled:a,onClick:()=>g(e.key),style:{textAlign:"left",padding:"12px 14px",borderRadius:8,cursor:a?"wait":n?"default":"pointer",color:"var(--sd-fg-1, #fff)",background:n?"rgba(155,89,182,0.14)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)",border:n?"1px solid rgba(155,89,182,0.6)":r.LINE},children:[(0,t.jsxs)("div",{style:{fontSize:14,fontWeight:650},children:[n?"● ":"○ ",e.label,"curve"===e.key?" (recommended)":""]}),(0,t.jsx)(r.Body,{style:{marginTop:4},children:e.note})]},e.key)})}),u&&(0,t.jsxs)(r.Body,{style:{color:"var(--sd-gold, #FFD700)",marginTop:10},children:["sample"===u?"The sample network open in this window keeps its own tiers (they’re the same either way).":"The CSV import you have open is always graded on its own curve."," ","This applies to networks you’ve scanned."]}),l&&(0,t.jsx)(r.Status,{tone:l.tone,children:l.text})]})}let Q=["csuite","owner","vp","director","manager","senior","ic","unknown","intern","student"],Z=Object.freeze({points:Object.freeze({}),roles:Object.freeze([])});function ee(e=Z){let t=Object.keys(e.points||{}).sort().map(t=>`${t}=${e.points[t]}`).join(","),n=(e.roles||[]).map(e=>`${e.text}=${e.points}`).sort().join(",");return t||n?`${t}|${n}`:"none"}let et=[{key:"default",label:"As the app ranks them",ranking:Z,note:"C-suite and founders first, then VPs, directors, managers."},{key:"founders",label:"Founders first",note:"Owners and entrepreneurs count like CEOs, and anyone who says founder counts as much: for meeting founders, or selling to them.",ranking:{points:{owner:10},roles:[{text:"founder",points:10},{text:"co-founder",points:10}]}},{key:"investors",label:"Investors",note:"Anyone who invests for a living rises to the top: for raising money.",ranking:{points:{},roles:["investor","venture","angel","general partner","managing partner","principal at","vc"].map(e=>({text:e,points:10}))}},{key:"role",label:"A role I’m looking for",note:"For outbound or hiring: add the role below, and everyone in it rises, whatever their level.",ranking:null}],en=[10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,5,4.5,4,3,2,1,0],eo={padding:"5px 8px",borderRadius:6,fontSize:12.5,cursor:"pointer",border:r.LINE,background:"rgba(var(--sd-shade, 0, 0, 0), 0.3)",color:"var(--sd-fg-1, #fff)"};function es({onSaved:e}={}){let[o,s]=(0,n.useState)(null),[a,i]=(0,n.useState)(null),[l,d]=(0,n.useState)(""),[c,h]=(0,n.useState)(10),[u,p]=(0,n.useState)(!1),[g,f]=(0,n.useState)(null),[y,x]=(0,n.useState)(null),m=(0,n.useRef)(null);if((0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your title ranking.")))).then(t=>{if(!e){let e=t.settings?.titleRanking||Z;s(e),i(e)}}).catch(t=>{e||x(t.message)}),()=>{e=!0}},[]),!a)return y?(0,t.jsx)(r.Status,{tone:"bad",children:y}):null;let b=(e,t)=>{let n={...a.points};t===A.LEVELS[e].points?delete n[e]:n[e]=t,i({...a,points:n}),f(null)},k=et.find(e=>e.ranking&&ee(e.ranking)===ee(a))?.key??null,w=ee(a)!==ee(o);async function j(){p(!0),f(null);let{settings:t,effects:n,error:o}=await (0,O.saveSettings)({titleRanking:a});if(t&&(s(t.titleRanking),i(t.titleRanking)),o)f({tone:"bad",text:o});else{let t,o=n?.titleRanking;f({tone:"ok",text:o?`Saved. ${t=o.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}p(!1)}return(0,t.jsxs)(r.Section,{id:"titles",title:"Titles",intro:"How much each kind of title counts towards someone's power, out of 10. Change it if you value some people more than the app does: founders, investors, or a role you're looking for.",children:[(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:6},children:et.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>{f(null),e.ranking?i({points:{...e.ranking.points},roles:[...e.ranking.roles]}):m.current?.focus()},"aria-pressed":k===e.key,title:e.note,style:{padding:"6px 12px",borderRadius:16,fontSize:12.5,fontWeight:650,cursor:"pointer",border:k===e.key?"1px solid rgba(155,89,182,0.7)":r.LINE,background:k===e.key?"rgba(155,89,182,0.16)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)",color:k===e.key?"var(--sd-fg-1, #fff)":"var(--sd-fg-2, #bbb)"},children:e.label},e.key))}),(0,t.jsx)(r.Body,{style:{marginBottom:14},children:et.find(e=>e.key===k)?.note||"Your own ranking. Higher points rank higher; the company someone works at still weighs it."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr auto auto",gap:"6px 12px",alignItems:"center",maxWidth:520},children:Q.map(e=>{let n=a.points?.[e]!=null;return[(0,t.jsx)("div",{style:{fontSize:13,color:n?"var(--sd-fg-1, #fff)":"var(--sd-fg-2, #ccc)",fontWeight:n?700:500},children:A.LEVELS[e].label},`${e}-l`),(0,t.jsx)("select",{"aria-label":`Points for ${A.LEVELS[e].label}`,value:a.points?.[e]??A.LEVELS[e].points,onChange:t=>b(e,Number(t.target.value)),style:{...eo,borderColor:n?"rgba(155,89,182,0.7)":void 0},children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))},`${e}-s`),(0,t.jsx)("div",{style:{fontSize:11,color:"var(--sd-fg-4, #667)",minWidth:70},children:n?(0,t.jsxs)("button",{type:"button",onClick:()=>b(e,A.LEVELS[e].points),style:{background:"none",border:"none",color:"var(--sd-fg-3, #9b9bd0)",cursor:"pointer",fontSize:11,padding:0},children:["back to ",A.LEVELS[e].points]}):"as it comes"},`${e}-d`)]})}),(0,t.jsx)("div",{style:{marginTop:18,fontSize:13.5,fontWeight:700,color:"var(--sd-fg-1, #eee)"},children:"Roles you’re looking for"}),(0,t.jsx)(r.Body,{style:{margin:"4px 0 10px"},children:"Anyone whose title has these words counts what you give them, whatever their level: for outbound to one role, or hiring for it. “Account executive” at 10 puts every account executive you can reach near the top."}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),(()=>{let e=l.trim().toLowerCase().replace(/\s+/g," ");if(e.length<2)return;let t=[...a.roles.filter(t=>t.text!==e),{text:e,points:c}];i({...a,roles:t.slice(-20)}),d(""),f(null)})()},style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"},children:[(0,t.jsx)("input",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"e.g. head of growth, recruiter, founder",maxLength:60,style:{flex:"1 1 220px",padding:"7px 10px",borderRadius:6,fontSize:13,border:r.LINE,background:"rgba(var(--sd-shade, 0, 0, 0), 0.3)",color:"var(--sd-fg-1, #fff)"}}),(0,t.jsx)("select",{"aria-label":"Points for this role",value:c,onChange:e=>h(Number(e.target.value)),style:eo,children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(r.Btn,{type:"submit",disabled:l.trim().length<2||a.roles.length>=20,children:"Add"})]}),a.roles.length>0&&(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginTop:10},children:a.roles.map(e=>(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"4px 6px 4px 11px",borderRadius:14,fontSize:12.5,border:"1px solid rgba(155,89,182,0.5)",background:"rgba(155,89,182,0.12)",color:"var(--sd-fg-1, #eee)"},children:[e.text," ",(0,t.jsx)("b",{style:{color:"var(--sd-fg-2, #d2b4ff)"},children:e.points}),(0,t.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.text,void(i({...a,roles:a.roles.filter(e=>e.text!==t)}),f(null))},"aria-label":`Remove ${e.text}`,style:{background:"none",border:"none",color:"var(--sd-fg-3, #aaa)",cursor:"pointer",fontSize:13},children:"✕"})]},e.text))}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",marginTop:16},children:[(0,t.jsx)(r.Btn,{primary:!0,onClick:j,disabled:!w||u,children:u?"Rescoring…":"Save and rescore"}),w&&(0,t.jsx)("span",{style:{fontSize:12,color:"var(--sd-fg-3, #999)"},children:"Not saved yet. Saving rescores everyone."})]}),g&&(0,t.jsx)(r.Status,{tone:g.tone,children:g.text})]})}var er=e.i(54322),ea=e.i(58712);let ei={none:"Plain",stars:"Stars",grid:"Grid",glow:"Glow",horizon:"Horizon"},el={system:"System",rounded:"Rounded",mono:"Mono",serif:"Serif"},ed={S:"S tier",A:"A tier",B:"B tier",C:"C tier",D:"D tier"},ec={soft:"Soft",flat:"Flat",square:"Square",frosted:"Frosted glass",neon:"Neon",bold:"Bold outline"},eh={solid:"Solid",droplet:"Glass droplets",flat:"Flat, like Obsidian",glow:"Glowing",plain:"Plain, outlined"},eu={fontSize:11,fontWeight:700,color:"var(--sd-fg-4, #778)",letterSpacing:.6,textTransform:"uppercase",margin:"16px 0 8px"};function ep({theme:e,width:n=168,height:o=96}){let s=.58*n,r=o/2,a=`p-${e.id}-${e.customised?"c":"p"}-${e.dots}`,i=Math.min(1,Math.max(0,e.glass)),l=er.TIER_KEYS.map((e,t)=>{let n=-Math.PI/2+2*t*Math.PI/er.TIER_KEYS.length,o=22+3*t;return{k:e,x:s+Math.cos(n)*o,y:r+Math.sin(n)*o,a:n}}),d=t=>"one"===e.lines?e.line:e.tiers[t];return(0,t.jsxs)("svg",{width:n,height:o,viewBox:`0 0 ${n} ${o}`,"aria-hidden":"true",style:{display:"block",borderRadius:8},children:[(0,t.jsxs)("defs",{children:[(0,t.jsxs)("radialGradient",{id:`${a}-glow`,children:[(0,t.jsx)("stop",{offset:"0",stopColor:e.bg2,stopOpacity:"0.8"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.bg2,stopOpacity:"0"})]}),(0,t.jsxs)("radialGradient",{id:`${a}-glow2`,children:[(0,t.jsx)("stop",{offset:"0",stopColor:e.accent,stopOpacity:"0.55"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.accent,stopOpacity:"0"})]}),(0,t.jsxs)("linearGradient",{id:`${a}-sun`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0.45",stopColor:e.bg2,stopOpacity:"0"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.bg2,stopOpacity:"0.45"})]}),er.TIER_KEYS.map(n=>(0,t.jsxs)("radialGradient",{id:`${a}-drop-${n}`,fx:"34%",fy:"30%",children:[(0,t.jsx)("stop",{offset:"0",stopColor:"#fff",stopOpacity:"0.95"}),(0,t.jsx)("stop",{offset:"0.25",stopColor:e.tiers[n],stopOpacity:"0.9"}),(0,t.jsx)("stop",{offset:"0.75",stopColor:e.tiers[n],stopOpacity:"0.5"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.tiers[n],stopOpacity:"0.15"})]},n)),(0,t.jsxs)("filter",{id:`${a}-glow`,x:"-50%",y:"-50%",width:"200%",height:"200%",children:[(0,t.jsx)("feGaussianBlur",{stdDeviation:"1.6",result:"b"}),(0,t.jsxs)("feMerge",{children:[(0,t.jsx)("feMergeNode",{in:"b"}),(0,t.jsx)("feMergeNode",{in:"SourceGraphic"})]})]})]}),(0,t.jsx)("rect",{width:n,height:o,fill:e.bg}),"stars"===e.backdrop&&(0,t.jsxs)("g",{fill:"var(--sd-fg-1, #fff)",children:[(0,t.jsx)("circle",{cx:.8*n,cy:.2*o,r:28,fill:`url(#${a}-glow)`}),[[12,10],[40,70],[150,14],[128,80],[24,44],[96,8],[70,88],[158,52]].map(([e,n])=>(0,t.jsx)("circle",{cx:e,cy:n,r:.8,opacity:.85},`${e}-${n}`))]}),"grid"===e.backdrop&&(0,t.jsxs)("g",{stroke:e.bg2,strokeWidth:1,opacity:.9,children:[Array.from({length:9},(e,n)=>(0,t.jsx)("line",{x1:20*n,y1:0,x2:20*n,y2:o},`v${n}`)),Array.from({length:5},(e,o)=>(0,t.jsx)("line",{x1:0,y1:20*o,x2:n,y2:20*o},`h${o}`))]}),"glow"===e.backdrop&&(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:.2*n,cy:.25*o,r:40,fill:`url(#${a}-glow)`}),(0,t.jsx)("circle",{cx:.85*n,cy:.4*o,r:36,fill:`url(#${a}-glow2)`})]}),"horizon"===e.backdrop&&(0,t.jsxs)("g",{children:[(0,t.jsx)("rect",{width:n,height:o,fill:`url(#${a}-sun)`}),Array.from({length:9},(s,r)=>(0,t.jsx)("line",{x1:21*r,y1:.62*o,x2:(r-4)*40+n/2,y2:o,stroke:e.bg2,strokeOpacity:.35},r)),(0,t.jsx)("line",{x1:0,y1:.62*o,x2:n,y2:.62*o,stroke:e.bg2,strokeOpacity:.5})]}),(0,t.jsx)("rect",{x:0,y:0,width:.24*n,height:o,fill:e.panel,fillOpacity:.92-.82*i}),(0,t.jsx)("rect",{x:.24*n,y:0,width:.75,height:o,fill:"var(--sd-fg-1, #fff)",fillOpacity:.12}),[0,1,2,3,4].map(o=>(0,t.jsx)("rect",{x:6,y:12+14*o,width:.24*n-12,height:6,rx:3,fill:e.tiers[er.TIER_KEYS[o]],fillOpacity:.55},o)),l.map(e=>(0,t.jsx)("line",{x1:s,y1:r,x2:e.x,y2:e.y,stroke:d(e.k),strokeOpacity:.55,strokeWidth:.8},`l${e.k}`)),l.map(n=>[0,1,2].map(o=>{let s=n.a+(o-1)*.5,r=n.x+9*Math.cos(s),a=n.y+9*Math.sin(s);return(0,t.jsxs)("g",{children:[(0,t.jsx)("line",{x1:n.x,y1:n.y,x2:r,y2:a,stroke:d(n.k),strokeOpacity:.4,strokeWidth:.6}),(0,t.jsx)("circle",{cx:r,cy:a,r:1.6,fill:e.tiers[er.TIER_KEYS[(er.TIER_KEYS.indexOf(n.k)+o+1)%5]],fillOpacity:.8})]},`k${n.k}${o}`)})),(0,t.jsx)("g",{filter:"glow"===e.dots?`url(#${a}-glow)`:void 0,children:l.map(n=>(0,t.jsx)("circle",{cx:n.x,cy:n.y,r:"S"===n.k?4.5:3.6,fill:"droplet"===e.dots?`url(#${a}-drop-${n.k})`:e.tiers[n.k],stroke:"droplet"===e.dots?e.tiers[n.k]:"plain"===e.dots?"#2b2b2b":"none",strokeOpacity:"plain"===e.dots?.75:.5,strokeWidth:.6},`d${n.k}`))}),(0,t.jsx)("circle",{cx:s,cy:r,r:5.5,fill:e.you,stroke:e.accent,strokeWidth:1.2})]})}function eg({name:e,value:n,onChange:o,title:s}){return(0,t.jsxs)("label",{title:s||e,style:{display:"flex",alignItems:"center",gap:8,padding:"6px 10px 6px 6px",borderRadius:8,background:"rgba(var(--sd-ink, 255, 255, 255), 0.04)",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"color",value:n,onChange:e=>o(e.target.value),style:{width:28,height:28,padding:0,border:"none",borderRadius:6,background:"none",cursor:"pointer"}}),(0,t.jsx)("span",{style:{fontSize:12.5,color:"var(--sd-fg-2, #cdd)"},children:e})]})}function ef({options:e,value:n,onPick:o}){return(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.map(([e,s])=>(0,t.jsx)("button",{type:"button","aria-pressed":n===e,onClick:()=>o(e),style:{padding:"6px 12px",borderRadius:8,fontSize:12.5,fontWeight:600,cursor:"pointer",border:n===e?"1px solid var(--sd-accent)":"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",background:n===e?"color-mix(in srgb, var(--sd-accent) 18%, transparent)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)",color:n===e?"var(--sd-fg-1, #fff)":"var(--sd-fg-3, #99a)"},children:s},e))})}function ey(){let e=(0,n.useSyncExternalStore)(ea.watchTheme,ea.themeNow,ea.serverTheme),o=(0,er.resolveTheme)(e),[s,a]=(0,n.useState)(""),[i,l]=(0,n.useState)(null),d=t=>(0,ea.setTheme)({base:e.base,custom:{...e.custom,...t}}),c=async()=>{let t=(0,er.encodeTheme)(e);try{await navigator.clipboard.writeText(t),l("Copied. Paste it into anyone’s Settings → Appearance.")}catch{a(t),l("Select the code below and copy it.")}},h=()=>{let e=(0,er.decodeTheme)(s);e?((0,ea.setTheme)(e),a(""),l(`Using it: ${(0,er.presetOf)(e.base).name}${Object.keys(e.custom).length?", made someone’s own":""}.`)):l("That isn’t a theme code: it starts with sd-theme:")};return(0,t.jsxs)(r.Section,{id:"appearance",title:"Appearance",intro:"How the whole app looks: pick one of ours, then make it yours. It changes as you go, and stays in this browser.",children:[(0,t.jsx)("div",{style:eu,children:"Looks"}),(0,t.jsx)(r.Body,{style:{marginTop:-4,marginBottom:10,fontSize:12.5},children:"Daylight, Paper and Analyst are light; the rest are dark. Each has its own buttons and its own way of drawing the map’s dots."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:10},children:er.THEMES.map(n=>{let s=e.base===n.id,r=s?o:(0,er.resolveTheme)({base:n.id});return(0,t.jsxs)("button",{type:"button","aria-pressed":s,onClick:()=>(0,ea.setTheme)({base:n.id,custom:{}}),title:s&&o.customised?`${n.name}, with your changes. Click to go back to plain ${n.name}.`:n.blurb,style:{textAlign:"left",padding:8,borderRadius:12,cursor:"pointer",color:"var(--sd-fg-1, #fff)",border:s?"2px solid var(--sd-accent)":"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",background:s?"color-mix(in srgb, var(--sd-accent) 10%, transparent)":"rgba(var(--sd-ink, 255, 255, 255), 0.03)"},children:[(0,t.jsx)(ep,{theme:r,width:172,height:96}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:6,margin:"8px 2px 2px"},children:[(0,t.jsx)("span",{style:{fontSize:13.5,fontWeight:700},children:n.name}),s&&o.customised&&(0,t.jsx)("span",{style:{fontSize:10.5,fontWeight:700,color:"var(--sd-accent)"},children:"yours"})]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"var(--sd-fg-3, #889)",lineHeight:1.4,margin:"0 2px"},children:n.blurb})]},n.id)})}),(0,t.jsxs)("div",{style:{marginTop:22,padding:"4px 16px 16px",borderRadius:12,border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",background:"rgba(var(--sd-ink, 255, 255, 255), 0.02)"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,t.jsxs)("div",{style:{...eu,flex:1},children:["Make it yours",o.customised?"":`: starting from ${(0,er.presetOf)(e.base).name}`]}),o.customised&&(0,t.jsxs)("button",{type:"button",onClick:()=>(0,ea.setTheme)({base:e.base,custom:{}}),style:{padding:"4px 10px",borderRadius:8,fontSize:11.5,cursor:"pointer",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)",background:"none",color:"var(--sd-fg-3, #aab)"},children:["Back to plain ",(0,er.presetOf)(e.base).name]})]}),(0,t.jsx)("div",{style:eu,children:"Background"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginBottom:10},children:[(0,t.jsx)(eg,{name:(0,er.isLight)(o)?"Colour (light)":"Colour",value:o.bg,onChange:e=>d({bg:e}),title:"Behind everything. A light colour makes the whole look light: dark words, dark borders"}),(0,t.jsx)(eg,{name:"Second colour",value:o.bg2,onChange:e=>d({bg2:e}),title:"The backdrop's: the nebula, the grid, the glow or the sunset"}),(0,t.jsx)(eg,{name:"Accent",value:o.accent,onChange:e=>d({accent:e}),title:"What's picked, and the backdrop's glow"})]}),(0,t.jsx)(ef,{value:o.backdrop,options:er.BACKDROPS.map(e=>[e,ei[e]]),onPick:e=>d({backdrop:e})}),(0,t.jsx)("div",{style:eu,children:"Dots"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8},children:[er.TIER_KEYS.map(n=>(0,t.jsx)(eg,{name:ed[n],value:o.tiers[n],onChange:t=>d({tiers:{...e.custom.tiers||{},[n]:t}})},n)),(0,t.jsx)(eg,{name:"You",value:o.you,onChange:e=>d({you:e}),title:"Your own dot, in the middle of the map"})]}),(0,t.jsx)("div",{style:eu,children:"Lines"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},children:[(0,t.jsx)(ef,{value:o.lines,options:[["tier","As the person they lead to"],["one","One colour"]],onPick:e=>d({lines:e})}),"one"===o.lines&&(0,t.jsx)(eg,{name:"Line colour",value:o.line,onChange:e=>d({line:e})})]}),(0,t.jsx)("div",{style:eu,children:"Buttons"}),(0,t.jsx)(ef,{value:o.buttons,options:er.BUTTONS.map(e=>[e,ec[e]]),onPick:e=>d({buttons:e})}),(0,t.jsx)("div",{style:eu,children:"Dots on the map"}),(0,t.jsx)(ef,{value:o.dots,options:er.DOTS.map(e=>[e,eh[e]]),onPick:e=>d({dots:e})}),(0,t.jsx)("div",{style:eu,children:"Panels"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:14},children:[(0,t.jsx)(eg,{name:"Tint",value:o.panel,onChange:e=>d({panel:e}),title:"The side panels' colour"}),(0,t.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:10,fontSize:12.5,color:"var(--sd-fg-2, #cdd)"},children:["Glass",(0,t.jsx)("input",{type:"range",min:0,max:100,value:Math.round(100*o.glass),onChange:e=>d({glass:Number(e.target.value)/100}),style:{width:160,accentColor:"var(--sd-accent)"}}),(0,t.jsxs)("span",{style:{color:"var(--sd-fg-3, #889)",fontVariantNumeric:"tabular-nums",width:34},children:[Math.round(100*o.glass),"%"]})]})]}),(0,t.jsx)("div",{style:eu,children:"Font"}),(0,t.jsx)(ef,{value:o.font,options:Object.keys(er.FONTS).map(e=>[e,el[e]]),onPick:e=>d({font:e})}),(0,t.jsx)("div",{style:eu,children:"Share it"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,alignItems:"center"},children:[(0,t.jsx)("button",{type:"button",onClick:c,style:{padding:"7px 14px",borderRadius:8,fontSize:12.5,fontWeight:700,cursor:"pointer",border:"1px solid var(--sd-accent)",background:"color-mix(in srgb, var(--sd-accent) 16%, transparent)",color:"var(--sd-fg-1, #fff)"},children:"Copy theme code"}),(0,t.jsx)("input",{value:s,onChange:e=>a(e.target.value),placeholder:"Paste a theme code (sd-theme:…)",spellCheck:!1,onKeyDown:e=>{"Enter"===e.key&&h()},style:{flex:"1 1 220px",minWidth:0,padding:"7px 10px",borderRadius:8,fontSize:12,fontFamily:"ui-monospace, Menlo, monospace",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)",background:"rgba(var(--sd-shade, 0, 0, 0), 0.25)",color:"var(--sd-fg-1, #dde)"}}),(0,t.jsx)("button",{type:"button",onClick:h,disabled:!s.trim(),style:{padding:"7px 14px",borderRadius:8,fontSize:12.5,fontWeight:600,cursor:s.trim()?"pointer":"default",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)",background:"rgba(var(--sd-ink, 255, 255, 255), 0.04)",color:s.trim()?"var(--sd-fg-1, #dde)":"var(--sd-fg-4, #667)"},children:"Use it"})]}),i&&(0,t.jsx)(r.Body,{style:{fontSize:12,marginTop:8},children:i}),(0,t.jsx)(r.Body,{style:{fontSize:11.5,color:"var(--sd-fg-4, #667)",marginTop:8},children:"A code holds colours and choices only, nothing about your network."})]})]})}var ex=e.i(94657),em=e.i(29962);let eb=[9,18],ek=Math.ceil(.6*em.RESTRICTED_AT),ew={ok:{label:"Well within",color:"#00ff88"},"above-default":{label:"Above the default",color:"#FFD700"},risky:{label:"Risky",color:"#FF8C42"},danger:{label:"Too close",color:"#ff6b6b"},paused:{label:"Paused",color:"#ff6b6b"},unknown:{label:"Can’t tell",color:"#8b9a9a"}};function ej({cooldown:e,searchesDay:t,lastPushback:n,searchesSincePushback:o,now:s=Date.now()}={}){return e?"paused":Number.isFinite(t)?t>=ek||function({lastPushback:e,searchesSincePushback:t,now:n=Date.now()}={}){let o=e?.at;return Number.isFinite(o)&&n-o<864e5&&n>=o&&t>0}({lastPushback:n,searchesSincePushback:o,now:s})?"danger":t>em.RISKY_DAILY?"risky":t>em.SAFE_LIMITS.daily?"above-default":"ok":"unknown"}function ev(e,t=[]){return Math.max(Math.ceil(1.08*Math.max(0,...t.filter(Number.isFinite))),Math.ceil(1.05*(Number(e)||0)),1)}function eS(e){return new Date(e).toLocaleString(void 0,{weekday:"short",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).replace(/ /g," ")}function eT(e,t=Date.now()){if(!Number.isFinite(e))return"recently";let n=Math.round((t-e)/6e4);if(n<1)return"just now";if(n<60)return`${n} min ago`;let o=Math.round(n/60);return o<48?`${o} h ago`:`${Math.round(o/24)} days ago`}var eC=e.i(51798);let e$=e=>Number.isFinite(e)?e.toLocaleString("en-US"):"?",eI=(e,t,n=`${t}s`)=>`${e$(e)} ${1===e?t:n}`,eB={color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},eF={fontSize:12,color:"var(--sd-fg-4, #778)",lineHeight:1.6,marginTop:4};function eD({level:e}){let n=ew[e]||ew.unknown;return(0,t.jsxs)("span",{role:"status",style:{display:"inline-flex",alignItems:"center",gap:7,padding:"4px 11px",borderRadius:999,fontSize:12.5,fontWeight:700,color:n.color,background:`${n.color}1f`,border:`1px solid ${n.color}55`,whiteSpace:"nowrap"},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:n.color}}),n.label]})}let eE=(e,t)=>`${Math.max(0,Math.min(100,e/t*100))}%`;function eR({title:e,used:n,of:o,max:s,color:r,ticks:a=[],band:i,children:l}){return(0,t.jsxs)("div",{style:{marginTop:18},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,t.jsx)("span",{style:{fontSize:13.5,fontWeight:650,color:"var(--sd-fg-1, #e8e8ee)"},children:e}),(0,t.jsxs)("span",{style:{marginLeft:"auto",fontSize:13,color:"var(--sd-fg-3, #8b9a9a)",fontVariantNumeric:"tabular-nums"},children:[(0,t.jsx)("b",{style:{fontSize:17,color:"var(--sd-fg-1, #fff)"},children:e$(n)}),o?` ${o}`:""]})]}),(0,t.jsxs)("div",{style:{position:"relative",height:10,borderRadius:5,marginTop:7,background:"rgba(var(--sd-ink, 255, 255, 255), 0.07)"},children:[i&&(0,t.jsx)("div",{title:i.title,style:{position:"absolute",top:0,bottom:0,left:eE(i.from,s),width:`calc(${eE(i.to,s)} - ${eE(i.from,s)})`,background:"repeating-linear-gradient(135deg, rgba(255,215,0,0.28) 0 4px, rgba(255,215,0,0.08) 4px 8px)"}}),(0,t.jsx)("div",{style:{position:"absolute",top:0,bottom:0,left:0,width:Number.isFinite(n)?eE(n,s):0,borderRadius:5,background:r,transition:"width 0.4s ease"}}),a.map(e=>(0,t.jsx)("div",{title:e.title,style:{position:"absolute",top:-3,bottom:-3,left:eE(e.at,s),width:2,marginLeft:-1,borderRadius:1,background:e.color||"rgba(var(--sd-ink, 255, 255, 255), 0.55)"}},e.at))]}),(a.length>0||i)&&(0,t.jsx)("div",{"aria-hidden":"true",style:{position:"relative",height:16,marginTop:3,fontSize:10.5,color:"var(--sd-fg-4, #778)",fontVariantNumeric:"tabular-nums"},children:(i?[i.from,i.to]:[]).filter(e=>!a.some(t=>t.at===e)).map(e=>({at:e,label:String(e),color:"rgba(255,215,0,0.75)"})).concat(a).map(e=>{let n=e.at/s*100;return(0,t.jsx)("span",{style:{position:"absolute",left:`${Math.min(100,n)}%`,whiteSpace:"nowrap",color:e.color||void 0,transform:n>94?"translateX(-100%)":n<4?"none":"translateX(-50%)"},children:e.label},e.at)})}),(0,t.jsx)("div",{style:{fontSize:12.5,color:"var(--sd-fg-3, #8b9a9a)",lineHeight:1.6,marginTop:2},children:l})]})}function eA({label:e,children:n}){return(0,t.jsxs)("div",{style:{display:"flex",gap:"4px 16px",flexWrap:"wrap",padding:"10px 0",borderTop:r.LINE,fontSize:13},children:[(0,t.jsx)("span",{style:{flex:"0 0 150px",color:"var(--sd-fg-1, #e8e8ee)",fontWeight:600},children:e}),(0,t.jsx)("span",{style:{flex:"1 1 280px",color:"var(--sd-fg-3, #8b9a9a)",lineHeight:1.6},children:n})]})}let eL=(e,t)=>`${function(e,t=Date.now()){let n=e-t;if(!(n>0))return"now";if(n<6e4)return"in under a minute";let o=Math.round(n/6e4);if(o<60)return`in ${o} min`;let s=Math.floor(o/60);return s>=48?`in ${Math.round(s/24)} days`:`in ${s} h${o%60?` ${o%60} min`:""}`}(e,t)} (${eS(e)})`;function eM(){var e;let s,[a,i]=(0,n.useState)(null),[l,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(!1),u=(0,n.useCallback)(()=>fetch("/api/scraper?usage=1",{cache:"no-store"}).then(e=>e.json().then(t=>e.ok&&!t.error?t:Promise.reject(Error(t.error||"The usage could not be read.")))).then(e=>{i(e),d(null)}).catch(e=>d(e.message)),[]);(0,n.useEffect)(()=>{u();let e=setInterval(u,3e4);return()=>clearInterval(e)},[u]);let p=async()=>{h(!0);try{let e=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"set-limits",...em.SAFE_LIMITS})});if(!e.ok)throw Error((await e.json().catch(()=>({}))).error||"The budget could not be saved.");await u()}catch(e){d(e.message)}finally{h(!1)}};if(!a)return(0,t.jsx)(r.Section,{id:"usage",title:"LinkedIn usage",children:(0,t.jsx)(r.Body,{children:l?`${l}`:"Counting…"})});let g=a.now,{limits:f={}}=a,y=a.searchesToday,x=ej({cooldown:a.cooldown,searchesDay:y,lastPushback:a.lastPushback,searchesSincePushback:a.searchesSincePushback,now:g}),m=function(e,t={},n={}){let o=function(e,{searchesDay:t,cooldown:n,lastPushback:o,now:s=Date.now()}={}){if("paused"===e){let e=String(n?.reason||"LinkedIn pushed back");return`Scanning is paused${n?.until?` until ${eS(n.until)}`:""}. ${e.charAt(0).toUpperCase()}${e.slice(1)}. Nothing that searches LinkedIn runs until then, so the account can recover.`}return"danger"===e?t>=ek?`${t} searches in the last 24 hours. A real account was restricted after ${em.RESTRICTED_AT}. Stop scanning until this comes down: each search stops counting 24 hours after it was made.`:`LinkedIn pushed back ${eT(o?.at,s)}, and searching has carried on since. Carrying on after a warning is what LinkedIn says turns it into a restriction. Leave it at least a day.`:"risky"===e?`More than ${em.RISKY_DAILY} searches in the last 24 hours. That is past what Six Degrees asks you to confirm, and a free account's whole month may be 250 to 350.`:"above-default"===e?`More than the default ${em.SAFE_LIMITS.daily} searches in the last 24 hours. The default leaves room under limits LinkedIn doesn’t publish.`:"unknown"===e?"The record of searches on this computer couldn’t be read, so the scanner counts today’s budget as used until it can.":null}(e,t),s="danger"===e&&t.searchesDay>=ek;return[o,(0,em.limitNote)(n,{restriction:!s})].filter(Boolean)}(x,{searchesDay:y,cooldown:a.cooldown,lastPushback:a.lastPushback,now:g},f),b=f.daily>em.SAFE_LIMITS.daily||0===f.monthly||f.monthly>em.SAFE_LIMITS.monthly,k=function({leftDay:e,leftMonth:t,paused:n=!1}={}){let o=[e,t].filter(e=>Number.isFinite(e));if(!o.length)return null;let s=n?0:Math.max(0,Math.min(...o));return{searches:s,people:9*s,by:null!=e&&null!=t?e<=t?"day":"month":null!=e?"day":"month"}}({leftDay:a.leftToday,leftMonth:a.leftMonth,paused:!!a.cooldown}),w=(0,eC.paceOf)(f.pace),j=a.lastPushback,v=ej({searchesDay:y}),S=[{at:em.SAFE_LIMITS.daily,label:String(em.SAFE_LIMITS.daily),title:"The default budget"},{at:em.RISKY_DAILY,label:String(em.RISKY_DAILY),title:"Above this is risky",color:"#FF8C42"},{at:em.RESTRICTED_AT,label:String(em.RESTRICTED_AT),title:"A real account was restricted here",color:"#ff6b6b"}];f.daily&&!S.some(e=>e.at===f.daily)&&S.push({at:f.daily,label:`${f.daily} yours`,title:"Your daily budget",color:"var(--sd-blue, #3498DB)"});let T=ev(y,S.map(e=>e.at)),C=a.searchesMonth,$=f.monthly?[{at:f.monthly,label:`${f.monthly} yours`,title:"Your monthly budget",color:"var(--sd-blue, #3498DB)"}]:[],I=ev(C,[350,f.monthly||0]),B=f.monthly&&C>=f.monthly?"#ff6b6b":C>=250?"#FFD700":"#3498DB",F=a.searchesWeek,D=ev(F,[200]),E=a.profilesToday,R=Math.max(f.profiles||1,Number(E)||0);return(0,t.jsxs)(r.Section,{id:"usage",title:"LinkedIn usage",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap"},children:[(0,t.jsx)(eD,{level:x}),(0,t.jsx)("span",{style:{fontSize:13,color:"var(--sd-fg-3, #8b9a9a)",flex:"1 1 260px",lineHeight:1.5},children:"What Six Degrees has asked of your LinkedIn account from this computer, and how close that is to the line."})]}),m.length>0&&(0,t.jsxs)("div",{style:{marginTop:14,padding:"11px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,color:"var(--sd-fg-2, #e3d9c4)",background:`${(ew[x]||ew.unknown).color}14`,border:`1px solid ${(ew[x]||ew.unknown).color}55`},children:[m.map((e,n)=>(0,t.jsx)("div",{style:{marginTop:6*!!n},children:e},n)),b&&(0,t.jsx)("button",{onClick:p,disabled:c,style:{marginTop:9,padding:"6px 12px",borderRadius:7,fontSize:12.5,fontWeight:650,cursor:c?"not-allowed":"pointer",background:"rgba(255,215,0,0.08)",color:"var(--sd-gold, #FFD700)",border:"1px solid rgba(255,215,0,0.4)"},children:c?"Saving…":`Back to ${em.SAFE_LIMITS.daily} a day, ${em.SAFE_LIMITS.monthly} a month`})]}),l&&(0,t.jsx)(r.Body,{style:{color:"var(--sd-red, #ff7676)"},children:l}),(0,t.jsxs)(eR,{title:"Searches in the last 24 hours",used:y,of:f.daily?`of ${f.daily} a day`:"no daily cap",max:T,color:(ew[v]||ew.unknown).color,ticks:S,children:[a.unreadable?null:f.daily?a.dayFreesAt?(0,t.jsxs)(t.Fragment,{children:["Your ",f.daily," a day are used. The next one frees ",eL(a.dayFreesAt,g),"."]}):(0,t.jsxs)(t.Fragment,{children:[eI(a.leftToday,"search","searches")," left under your budget",a.cooldown?", once the pause ends":"","."]}):(0,t.jsx)(t.Fragment,{children:"No daily cap is set, so only the monthly one stops a scan."}),a.dayClearAt&&(0,t.jsxs)(t.Fragment,{children:[" All clear ",eL(a.dayClearAt,g),", when the newest of these turns 24 hours old."]}),(0,t.jsxs)("div",{style:eF,children:[em.SAFE_LIMITS.daily," is the default budget. Over ",em.RISKY_DAILY," is risky: the budget picker asks first."," ",em.RESTRICTED_AT," is where a real account was restricted, on Sep 28, 2026, with searches run back to back."," ",ek," (60% of that) or more shows as too close."]})]}),(0,t.jsxs)(eR,{title:"Searches this month",used:C,of:f.monthly?`of ${f.monthly} a month`:"no monthly cap",max:I,color:B,ticks:$,band:{from:250,to:350,title:"The range people report for a free account"},children:["LinkedIn’s month resets ",(e=a.monthResets,s=new Intl.DateTimeFormat("en-US",{timeZone:"America/Los_Angeles",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(e)),`${s.replace(/ /g," ")} Pacific`)," (",eS(a.monthResets)," here).",f.monthly?Number.isFinite(a.leftMonth)&&(0,t.jsxs)(t.Fragment,{children:[" ",eI(a.leftMonth,"search","searches")," left under your budget."]}):(0,t.jsx)(t.Fragment,{children:" No monthly cap is set (Premium)."}),(0,t.jsxs)("div",{style:eF,children:["The shaded ",250," to ",350," is the range people report for a free account’s monthly search limit. LinkedIn doesn’t publish one, so it’s a guide, not a fact. Every page of someone’s connections is one search."]})]}),(0,t.jsxs)(eR,{title:"Searches in the last 7 days",used:F,of:"against Auto scan's 200",max:D,color:F>=200?"#FFD700":"#3498DB",ticks:[{at:200,label:String(200),title:"Auto scan stops here"}],children:["Auto scan stops at ",200," in any 7 days. A scan you start yourself stops only at your daily and monthly budget."]}),(0,t.jsxs)(eR,{title:"Profile views in the last 24 hours",used:E,of:`of ${f.profiles} a day`,max:R,color:E>=f.profiles?"#ff6b6b":"#9B59B6",children:[a.profilesFreeAt?(0,t.jsxs)(t.Fragment,{children:["Your ",f.profiles," a day are used. The next one frees ",eL(a.profilesFreeAt,g),"."]}):Number.isFinite(E)&&(0,t.jsxs)(t.Fragment,{children:[eI(a.profilesLeftToday,"view","views")," left."]}),(0,t.jsxs)("div",{style:eF,children:["Each circle scan opens the person’s profile once. Profile views are what got an account restricted on Sep 9, 2026, after about 20 to 25 in an hour; at ",w.label," the scanner opens at most one every ",w.profileGap," seconds."]})]}),(0,t.jsxs)("div",{style:{marginTop:22},children:[(0,t.jsxs)(eA,{label:"Speed",children:[w.label,": about ",(0,eC.searchesPerHour)(f.pace)," searches an hour at most while a scan runs.",Number.isFinite(a.searchesLastHour)&&(0,t.jsxs)(t.Fragment,{children:[" In the last hour: ",eI(a.searchesLastHour,"search","searches"),"."]})," ",(0,t.jsx)(o.default,{href:"/setup",style:eB,children:"Change it on the Scan page"})]}),(0,t.jsx)(eA,{label:"Can still map",children:a.unreadable?(0,t.jsx)(t.Fragment,{children:"Can’t tell until the record of searches can be read."}):k?a.cooldown?(0,t.jsx)(t.Fragment,{children:"No one until the pause ends."}):0===k.searches?(0,t.jsxs)(t.Fragment,{children:["No one for now: your ","day"===k.by?"daily":"monthly"," budget is used."]}):(0,t.jsxs)(t.Fragment,{children:["About ",e$(k.people)," people: ",eI(k.searches,"search","searches")," left under your"," ","day"===k.by?"daily":"monthly"," budget, at about ",9," people a search.",(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #778)"},children:" An estimate: a page of results shows up to 10 people, and the last page of a list is usually short."})]}):(0,t.jsx)(t.Fragment,{children:"No cap is set, so there’s no count of what’s left."})}),(0,t.jsx)(eA,{label:"Last pushback",children:j?(0,t.jsxs)(t.Fragment,{children:[j.at?(0,t.jsxs)(t.Fragment,{children:[eS(j.at)," (",eT(j.at,g),"): "]}):null,j.reason,".",j.active&&(0,t.jsxs)(t.Fragment,{children:[" Scanning is paused until ",eS(j.pausedUntil),"."]}),j.liftedAt&&(0,t.jsxs)(t.Fragment,{children:[" You lifted the pause ",eS(j.liftedAt),"; it would have run until ",eS(j.pausedUntil),"."]}),!j.active&&!j.liftedAt&&j.pausedUntil&&(0,t.jsxs)(t.Fragment,{children:[" The pause ended ",eS(j.pausedUntil),"."]}),a.searchesSincePushback>0&&(0,t.jsxs)(t.Fragment,{children:[" ",eI(a.searchesSincePushback,"search","searches")," since."]})]}):(0,t.jsx)(t.Fragment,{children:"None on record on this computer."})}),(0,t.jsxs)(eA,{label:"Auto scan",children:["However high your budget is set, Auto scan keeps under its own limits: ",40," searches in any 24 hours,"," ",200," in any 7 days, only from ",function([e,t]=eb){let n=e=>`${e%12||12} ${e<12?"AM":"PM"}`;return`${n(e)} to ${n(t)}`}(eb)," on this computer’s clock,"," ","an hour’s rest"," after every ",8," searches,"," ","and ",2," days off after any check from LinkedIn."]})]}),(0,t.jsxs)("div",{style:{...eF,marginTop:14,paddingTop:12,borderTop:r.LINE},children:["Where these numbers come from: Six Degrees writes down every search and profile view it makes on your LinkedIn account, on this computer, and counts them here. Searches you make yourself on linkedin.com aren’t in it, and LinkedIn shows no count of its own. The ",em.RESTRICTED_AT," searches and the 20 to 25 profile views are what happened to one real account, not safe limits. Change the budget on the"," ",(0,t.jsx)(o.default,{href:"/setup",style:eB,children:"Scan page"}),", under Fine-tune the scanner. Nothing here is sent anywhere."," ","Counted ",eS(g),"."]})]})}var eO=e.i(64745);let eN={"mac-app":"the Mac app","windows-app":"the Windows app","linux-app":"the Linux app",npm:"the npm package (npx six-degrees)",source:"a copy built from the source code",git:"a git checkout of the source code"};function ez(){let[e,s]=(0,n.useState)(null),[i,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(0),h=()=>c(e=>e+1);if((0,n.useEffect)(()=>{fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load settings.")))).then(s).catch(e=>l(e.message))},[]),eO.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(var(--sd-ink, 255, 255, 255), 0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:r.FONT},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"var(--sd-fg-1, #fff)"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(o.default,{href:"/",style:{fontSize:12,color:"rgba(var(--sd-ink, 255, 255, 255), 0.5)",textDecoration:"none"},children:"← Back to the network"})]});let u=e?.about;return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",fontFamily:r.FONT},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:r.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(o.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"var(--sd-fg-3, #888)",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(var(--sd-ink, 255, 255, 255), 0.06)",border:r.LINE},children:"← Back to Map"}),(0,t.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Settings"})]}),(0,t.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[i&&(0,t.jsx)(r.Body,{style:{color:"var(--sd-red, #ff7676)",marginTop:16},children:i}),(0,t.jsx)(a,{}),(0,t.jsx)(eM,{}),(0,t.jsx)(ey,{}),(0,t.jsxs)(r.Section,{id:"scoring",title:"Scores",children:[(0,t.jsxs)(r.Body,{children:["How someone’s power score is worked out, and the four things you can change about it:"," ",(0,t.jsx)("a",{href:"#sector",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},children:"your field"}),","," ",(0,t.jsx)("a",{href:"#tiers",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},children:"how tiers are graded"}),","," ",(0,t.jsx)("a",{href:"#titles",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},children:"how titles rank"})," and"," ",(0,t.jsx)("a",{href:"#companies",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},children:"any company’s score"}),". A change here rescores everyone. How your network holds together is in"," ",(0,t.jsx)(o.default,{href:"/profile?view=insights",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none",fontWeight:600},children:"Profile → Insights"}),"."]}),(0,t.jsx)(H,{onSaved:h}),(0,t.jsx)(X,{onSaved:h}),(0,t.jsx)(es,{onSaved:h}),(0,t.jsx)("div",{id:"companies",style:{marginTop:28},children:(0,t.jsx)(ex.default,{version:d})})]}),(0,t.jsx)(B,{}),(0,t.jsx)(r.Section,{id:"about",title:"About this copy",children:u?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(r.Body,{children:["Version ",(0,t.jsx)(r.Mono,{children:u.version}),", running as ",eN[u.kind]||u.kind,"."]}),(0,t.jsxs)(r.Body,{children:["Your network is kept in ",(0,t.jsx)(r.Mono,{children:u.dataDir}),u.customDataDir?" (a folder you chose).":".",["mac-app","windows-app","linux-app"].includes(u.kind)&&" Help → Show the Data Folder opens it."]}),(0,t.jsx)(r.Body,{style:{fontSize:12,color:"var(--sd-fg-4, #667)",marginTop:10},children:"Settings are saved with your network, on this computer. Nothing here is sent anywhere."})]}):!i&&(0,t.jsx)(r.Body,{children:"Loading…"})})]})]})}e.s(["default",0,function(){return(0,t.jsx)(s.default,{children:(0,t.jsx)(ez,{})})}],5445)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function r(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let r=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(r)?null:r}let l=e=>(0,t.keyFor)({profile_url:e});function o(e=[]){let t=new Map;for(let n of e){let e=l(n["sender profile url"]),r=n["conversation id"];r&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(r))}let n=null;for(let[e,r]of t)(!n||r.size>t.get(n).size)&&(n=e);return n}let i=e=>{let t=m(e);return t?`name:${t}`:null},a=/sponsored/i,s=/in\s?mail/i,u=/linkedin\.com\/(company|showcase|school)\//i,f=e=>/^(yes|true|1)$/i.test(String(e||"").trim());function d(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}let m=e=>String(e||"").split(",")[0].normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9 ]+/g," ").replace(/\s+/g," ").trim();e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=o(e),d=new Map;for(let t of e)n&&l(t["sender profile url"])===n&&t.from&&d.set(t.from,(d.get(t.from)||0)+1);let c=m([...d].sort((e,t)=>t[1]-e[1])[0]?.[0]||""),g=e=>!!e&&(e===n||!!c&&e===`name:${c}`),p={},h=new Map,y=0,b=0;for(let n of e){let e=n["conversation id"],o=r(n.date);if(!e||null==o){b+=1;continue}if(f(n["is message draft"])){y+=1;continue}let d=l(n["sender profile url"])||i(n.from);d&&n.from&&!p[d]&&(p[d]=String(n.from).trim());let m=String(n["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(l),c=String(n.to||"").split(",").map(e=>e.trim()).filter(Boolean),w=m.length?m:c.map(i).filter(Boolean);m.length&&m.length===c.length&&m.forEach((e,t)=>{p[e]||(p[e]=c[t])}),m.length||c.forEach(e=>{let t=i(e);t&&!p[t]&&(p[t]=e)}),h.has(e)||h.set(e,{id:e,title:"",everyone:new Set,messages:[],kind:null,folder:"",newest:-1/0});let v=h.get(e);d&&v.everyone.add(d),w.forEach(e=>v.everyone.add(e)),v.kind=v.kind||function(e){let t=String(e.folder||""),n=String(e["conversation title"]||"");return a.test(t)||a.test(n)||u.test(String(e["sender profile url"]||""))?"sponsored":s.test(t)||s.test(n)?"inmail":null}(n),o>=v.newest&&(v.newest=o,v.folder=String(n.folder||"").trim().toLowerCase().slice(0,30));let S={t:o,fromMe:g(d)};t&&(S.text=[n.subject,n.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!v.title&&n["conversation title"]&&(v.title=String(n["conversation title"]).trim())),v.messages.push(S)}let w=[];for(let e of h.values()){let n=[...e.everyone].filter(e=>e&&!g(e)).sort();e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:n,group:n.length>1,kind:e.kind,folder:e.folder,messages:e.messages};t&&(r.title=e.title),w.push(r)}for(let e of Object.keys(p))g(e)&&delete p[e];return{self:n,conversations:w,names:p,drafts:y,skipped:b}},"buildInvitations",0,function(e=[],{keepText:t=!1}={}){let n=[];for(let o of e){let e=String(o.direction||"").toUpperCase();if("INCOMING"!==e&&"OUTGOING"!==e)continue;let a="INCOMING"===e?"in":"out",s=String(("in"===a?o.from:o.to)||"").trim(),u=l("in"===a?o.inviterprofileurl:o.inviteeprofileurl),f=(u&&/\/in\//.test(u)?u:null)||i(s);if(!f)continue;let d=r(o["sent at"]),m={id:`${a}|${f}|${d??""}`,dir:a,key:f,name:s.slice(0,120),t:d};t&&String(o.message||"").trim()&&(m.note=String(o.message).trim().slice(0,2e3)),n.push(m)}return n.sort((e,t)=>(t.t||0)-(e.t||0))},"careerChapters",0,function(e=[],t=[],n=Date.now()){let o=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:r(e["started on"]),to:r(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),i=t.map(e=>({url:l(e.url||e.profile_url),t:r(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return o.map(e=>{let t=e.to??n,r=i.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:r.length,people:r.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,kind:e.kind||null,folder:e.folder||"",last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length,mine:e.messages.filter(e=>e.fromMe).length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let r of e){let e=String(r.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=o(e),n=new Map;for(let t of e){let e=l(t["sender profile url"]),o=t["conversation id"];if(!o||!e)continue;let i=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(l),a=r(t.date);if(null==a)continue;n.has(o)||n.set(o,{people:new Set,msgs:[]});let s=n.get(o);s.people.add(e),i.forEach(e=>s.people.add(e)),s.msgs.push({from:e,t:a})}let i=0,a=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let r=n[0],l=a.get(r)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)l.total+=1,l.times.push(n.t),n.t>=l.last&&(l.last=n.t,l.lastFromThem=n.from!==t),n.t>i&&(i=n.t);a.set(r,l)}for(let e of a.values())e.recent=e.times.filter(e=>e>i-7776e6).length,delete e.times;return{self:t,asOf:i||null,people:a}},"nameKey",0,m,"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:r(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),l=t.map(e=>r(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!l.length)return{posts:[],usualWeek:0,afterPosts:0};let o=Math.max(6048e5,l[l.length-1]-l[0]),i=l.length/o*6048e5,a=n.map(e=>({...e,week:l.filter(t=>t>=e.t&&t<e.t+6048e5).length})),s=a.length?a.reduce((e,t)=>e+t.week,0)/a.length:0;return{posts:a,usualWeek:i,afterPosts:s}},"readTable",0,function(e,t){let r=(0,n.parseCsv)(String(e||"")),l=r.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(l<0)return[];let o=r[l].map(e=>e.trim().toLowerCase());return r.slice(l+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(o.map((t,n)=>[t,(e[n]??"").trim()])))},"warmthOf",0,d],84278);let c=["gravity","rings","push","pull","distance","orbit","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],g=e=>"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)&&1e3>=Math.abs(e)||"string"==typeof e&&/^[a-z]{1,20}$/i.test(e);function p(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e){let e="string"==typeof n?.name?n.name.trim().slice(0,40):"";if(!e||!n.settings||"object"!=typeof n.settings||Array.isArray(n.settings))continue;let r={};for(let e of c)Object.hasOwn(n.settings,e)&&g(n.settings[e])&&(r[e]=n.settings[e]);t.set(e,{name:e,settings:r})}return[...t.values()].slice(0,50)}var h=e.i(56899),y=e.i(40827);let b="six-degrees-galaxy-lab",w="six-degrees-galaxy-layouts",v=Object.freeze({on:!0,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",orbit:0,names:"key",branch:!1,colourBy:"tier",speed:15,loop:!1,labels:!0,v:2}),S=["gravity","rings","push","pull","distance"],M=Object.freeze({gravity:.8,rings:0,push:6,pull:6,distance:.15,sizeBy:"links"}),x=Object.freeze({rings:{lines:1},orbit:{lines:1},clusters:{lines:3}}),k=Object.freeze({gravity:0,rings:3,push:6,pull:4,distance:.22,sizeBy:"power"}),F=new Set,C=null;function I(){return C||(C=function(){try{let e=JSON.parse(localStorage.getItem(b)||"null");if(!e||"object"!=typeof e)return v;return{...v,...e,...e.v===v.v?{}:{branch:!1},v:v.v,on:!0}}catch{return v}}()),C}function O(e){C=null===e?{...v,labels:I().labels}:{...I(),...e,on:!0};try{localStorage.setItem(b,JSON.stringify(C))}catch{}F.forEach(e=>e())}let N=null,A=new Set;function B(){if(!N){try{N=JSON.parse(localStorage.getItem(w)||"[]")}catch{N=[]}Array.isArray(N)||(N=[])}return N}function L(e,{save:t=!0}={}){N=e;try{localStorage.setItem(w,JSON.stringify(e))}catch{}A.forEach(e=>e()),t&&(0,h.saveSettings)({galaxyLayouts:e})}let T=new Set,j={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,fit:0,social:void 0},E=null;function $(e){let t={...j,...e};Object.keys(e).every(e=>Object.is(t[e],j[e]))||(j=t,T.forEach(e=>e()))}function _(){cancelAnimationFrame(E),E=null,$({playing:!1})}let z=null;function D(e){let n=new Map;for(let[r,l]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:r}),{...l});for(let[r,l]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:r}),o=n.get(e)||{total:0,recent:0};l.last&&(!o.last||l.last>o.last)&&(o.last=l.last,"boolean"==typeof l.lastFromThem&&(o.lastFromThem=l.lastFromThem)),o.unread=l.unread,o.total=Math.max(o.total||0,1),n.set(e,o)}let r=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>r&&(r=e.last);return{merged:n,asOf:r,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let U={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},P=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],G={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},R="#4a5568",J=["#2b1b6b","#6a1b9a","#c2185b","#f4511e","#ffb300","#fff3b0"];function K(e){let t=Math.max(0,Math.min(1,Number(e)||0))*(J.length-1),n=Math.min(J.length-2,Math.floor(t)),r=t-n,l=J[n],o=J[n+1];return`#${[1,3,5].map(e=>Math.round(parseInt(l.slice(e,e+2),16)*(1-r)+parseInt(o.slice(e,e+2),16)*r).toString(16).padStart(2,"0")).join("")}`}function W(e=[],t=()=>0){let n=[...new Set(e.map(t))].sort((e,t)=>e-t),r=new Map(n.map((e,t)=>[e,n.length>1?t/(n.length-1):1]));return e=>r.get(t(e))??0}let Y=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,M,"FORCE_KEYS",0,S,"LAB_DEFAULTS",0,v,"LAYOUT_LOOKS",0,x,"ORBIT",0,k,"adoptSavedLayouts",0,function(e){let t=p(B()),{use:n,save:r,changed:l}=(0,y.reconcileSaved)({saved:null==e?null:p(e),cached:t,isDefault:e=>0===e.length,same:(e,t)=>JSON.stringify(e)===JSON.stringify(t)});r&&(0,h.saveSettings)({galaxyLayouts:t}),l&&L(n,{save:!1})},"applyLayout",0,function(e){let t=B().find(t=>t.name===e);t&&O(Object.fromEntries(c.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,l=(e,o=0)=>{if(r.has(e.id))return r.get(e.id);let i=-1/0,a=t.get(e.id);if(1===e.degree||null==a||o>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;i=Number.isNaN(t)?-1/0:t}return null!=a&&n.has(a)&&o<=6&&(i=Math.max(i,l(n.get(a),o+1))),r.set(e.id,i),i};return e.map(e=>l(e))},"chapterAt",0,function(e,t){let n=null;for(let r of e?.chapters||[])Number.isFinite(r.from)&&r.from<=t&&(!n||r.from>n.from)&&(n=r);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>j,"colourScheme",0,function(e,n,r,l){if("degree"===e)return{of:e=>U[Math.min(e.degree||1,3)],legend:[["1st",U[1]],["2nd",U[2]],["3rd+",U[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=Y(t.company);if(!n)continue;let r=e.get(n)||{name:String(t.company).trim(),n:0};r.n+=1,e.set(n,r)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,P.length),r=new Map(t.map(([e],t)=>[e,P[t]]));return{of:e=>r.get(Y(e.company))||R,legend:[...t.map(([,e],t)=>[e.name,P[t]]),["Other",R]]}}if("heat"===e){let e=function(e=[]){return W(e,t.score)}(n);return{of:t=>K(e(t)),heat:e,legend:[["Cold",K(.1)],["Warm",K(.45)],["Hot",K(.75)],["Hottest",K(1)]]}}return"warmth"===e&&l?{of:e=>1===(e.degree||1)?G[d(l.merged.get((0,t.keyFor)(e)),l.asOf)]:"#2d3748",legend:[["Warm",G.warm],["Cool",G.cool],["Dormant",G.dormant],["Never messaged",G.never]]}:{of:e=>r[e.tier]||"#666",legend:Object.entries(r)}},"effectiveLab",0,e=>e.on?e:e.labels===v.labels?v:{...v,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let r=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&r.add(t.id);return r},"forgetLayout",0,function(e){L(B().filter(t=>t.name!==e))},"heatBy",0,W,"heatColour",0,K,"labNow",0,I,"layoutOf",0,function(e){let t=t=>Object.entries(t).every(([t,n])=>e[t]===n);return S.every(t=>e[t]===v[t])?"rings":t(M)?"clusters":t(k)?"orbit":null},"layoutsNow",0,B,"loadSocial",0,function(){return z||(z=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{$({social:e.social?D(e.social):null})}).catch(()=>$({social:null}))),z},"mergeSocial",0,D,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,_,"play",0,function e(){if(null==j.min||null==j.max||j.max<=j.min)return;let t=j.max-j.min,n=1e3*Math.max(1,Number(I().speed)||15),r=null==j.at||j.at>=j.max?j.min:j.at,l=performance.now()-(r-j.min)/t*n;$({at:r,playing:!0});let o=r=>{let i=Math.min(j.max,j.min+(r-l)/n*t);if($({at:i}),i>=j.max){E=null,$({playing:!1}),I().loop&&setTimeout(()=>{E||j.at!==j.max||($({at:j.min}),e())},1200);return}E=requestAnimationFrame(o)};cancelAnimationFrame(E),E=requestAnimationFrame(o)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let r of e){let e=t.get(r.id);for(let r=0;null!=e&&r<7;r++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=I(),r=Object.fromEntries(c.map(e=>[e,n[e]]));L([...B().filter(e=>e.name!==t),{name:t,settings:r}])},"setClock",0,$,"setLab",0,O,"stopReplay",0,function(){_(),$({at:null})},"watchClock",0,function(e){return T.add(e),()=>T.delete(e)},"watchLab",0,function(e){F.add(e);let t=t=>{t.key===b&&(C=null,e())};return window.addEventListener("storage",t),()=>{F.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return A.add(e),()=>A.delete(e)}],39160)},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let l={S:0,A:1,B:2,C:3,D:4};function o(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function i(e){return Math.round(10*o(e))/10}function a(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function u(e,t){return(l[e.tier]??9)-(l[t.tier]??9)||o(t)-o(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function f(e,t){return e.bridge&&t.bridge?u(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function d(e,t){return t.score-e.score||t.waysIn-e.waysIn||f(e.routes[0]||m,t.routes[0]||m)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let m={id:null,bridge:null};function c(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function g(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,u,"comparePower",0,d,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:l=0}={}){let o=r?46:n?40:34,i=Math.round(t*(n?.44:.36)),a=Math.round(t*(n?.8:r?.6:.62)),s=[],u=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):u?u.count++:s.push(u={id:null,bridge:null,unresolved:!0,count:1});let f=Math.max(0,Math.floor(Number(l)||0)-(e?.waysIn||0)),d=Math.min(60,f),m=r?12:11,p=r?220:n?96:120,h=Math.max(1,Math.floor(p/m)+1),y=Math.ceil(d/h),b=d?40+y*m:0,w=Math.max(0,s.length-1)*o+b,v=Math.max(n?190:r?250:220,32+w+48),S=v/2,M=S-w/2,x=Math.max(4,Math.floor((i-10-42)/6)),k=s.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:i,y:M+t*o,r:6,primary:0===t&&!e.unresolved,label:n.length<=x?n:g(e.unresolved?n:c(n),x)}}),F={x:a,y:S,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=S-4)},C=k.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:F.x,y2:F.y})),I={x:20,y:S,r:14},O=k.map(e=>({id:e.id,x1:I.x,y1:I.y,x2:e.x,y2:e.y})),N=e?[{key:e.key,p:e,x:F.x,y:F.y,r:F.r,rings:F.rings,big:!0,label:""}]:[],A=M+Math.max(0,s.length-1)*o+40,B=r?i-236+8:i-p,L=Array.from({length:d},(e,t)=>({x:B+t%h*m,y:A+Math.floor(t/h)*m})),T=e?.waysIn?e.waysIn/(e.waysIn+f):1;return{width:t,height:v,you:I,target:F,people:N,bridges:k,links:C,spokes:O,ghosts:L,unscanned:f,ghostLabel:d?{x:B,y:A-13}:null,drawn:T}},"keyFor",0,a,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||d(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=a(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(a(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(f):[]},"score",0,o,"score1",0,i,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let l=new Map,o=new Map;for(let t of e||[]){let e=a(t);o.set(t.id,e);let n=l.get(e);n?function(e,t){let n=i(e)-i(t);if(n)return n>0;let l=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==l?l:0>s(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},l.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let u={people:l.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},m=new Set,c=new Set,g=new Set,p=[];for(let e of l.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(f);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?m:c).add(e.id);if(!r.length)for(let e of(u.peopleOnlyUnresolved++,t))g.add(e.id);let{person:l}=e,o=l.tier;void 0!==u.byTier[o]&&u.byTier[o]++,t.length>1&&u.multi++,p.push({key:e.key,person:l,score:i(l),tier:o,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[l.name,l.headline,l.company,l.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=m.size,u.unresolvedIds=c.size,u.onlyUnresolvedVia=g.size,p.sort(d),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],l=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=l?r.rank:t+1,l&&(n.tied=!0,r.tied=!0)}}(p),{people:p,rowToKey:o,summary:u}},"shortName",0,c,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let l=r?45:n?36:26,o=Math.round(.42*t),i=Math.round(.58*t),a=e.map((e,n)=>{var o;return{key:e.key,p:e,x:i,y:16+n*l,r:r?0:(o=e.waysIn)>=4?8.5:3===o?7:2===o?5.5:4,label:g(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-i-60)/6.2))}}),s=new Map,f="\0unresolved";for(let e of a)for(let t of e.p.routes){let n=t.bridge?t.id:f,r=s.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(n,r)),r.count++,r.ys.push(e.y)}let d=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));d.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?u(e.bridge,t.bridge):0));let m=a.length?a[a.length-1].y:16,p=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let l=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),o=l.length&&l[0]<n?n-l[0]:0;return l.map(e=>e+o)}(d.map(e=>e.bary),r?32:18,16),h=Math.max(4,Math.floor((o-10-42)/6));d.forEach((e,t)=>{if(e.x=o,e.y=p[t],e.r=5,e.unresolved)e.label=g(`can't be named (${e.count})`,h);else{let t=e.bridge.name||"";e.label=t.length<=h?t:g(c(t),h)}delete e.ys});let y=new Map(d.map(e=>[e.unresolved?f:e.id,e]));for(let e of d)e.onlyFor=0,e.bestFor=0;for(let e of a){let t=e.p.routes[0],n=t?y.get(t.bridge?t.id:f):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of a){let t=new Set;e.p.routes.forEach((n,r)=>{let l=n.bridge?n.id:f;if(t.has(l))return;t.add(l);let o=y.get(l);b.push({key:e.key,bridgeId:o.id,primary:0===r&&!o.unresolved,unresolved:o.unresolved,tier:o.bridge?.tier??null,x1:o.x,y1:o.y,x2:e.x,y2:e.y})})}let w=Math.max(m,d.length?d[d.length-1].y:0),v=a.length?Math.ceil(w+16):0,S={x:20,y:a.length?(16+Math.max(m,w))/2:16,r:14},M=d.map(e=>({id:e.id,x1:S.x,y1:S.y,x2:e.x,y2:e.y}));return{width:t,height:v,you:S,people:a,bridges:d,links:b,spokes:M}}],7214)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94657,e=>{"use strict";var r=e.i(43476),o=e.i(71645),n=e.i(7837);let t=e=>`${e.name} ${e.was} → ${e.estimated?"estimated":e.now}`,a=e=>({padding:"6px 12px",borderRadius:7,cursor:"pointer",fontSize:12,fontWeight:700,border:e?"none":"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.15)",background:e?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:e?"#000":"var(--sd-fg-2, #cfd8d8)"});function s({onAnswered:e}){var i;let l,c,[d,u]=(0,o.useState)(null),[p,g]=(0,o.useState)(!1),[f,h]=(0,o.useState)(()=>new Set),[y,m]=(0,o.useState)(!1),[b,x]=(0,o.useState)(null);if((0,o.useEffect)(()=>{let e=!1;return(0,n.csvNetworkSource)().then(r=>r||e?null:fetch("/api/company-scores/legacy").then(e=>e.json())).then(r=>{!e&&r?.offer?.companies?.length&&(u(r.offer),h(new Set(r.offer.companies.map(e=>e.name))))}).catch(()=>{}),()=>{e=!0}},[]),!d)return null;let w=async r=>{m(!0),x(null);try{let o=await fetch("/api/company-scores/legacy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keep:r})}),n=await o.json();if(!o.ok&&!n.kept)throw Error(n.error||"Could not save your answer.");u(null),e?.({kept:n.kept||[],scored:n.scored||0,error:o.ok?null:n.error})}catch(e){x(e.message)}finally{m(!1)}};return(0,r.jsxs)("section",{"aria-label":"Built-in scores changed",style:{marginBottom:14,padding:14,borderRadius:10,border:"1px solid rgba(255,215,0,0.35)",background:"rgba(255,215,0,0.06)",fontSize:12.5,color:"var(--sd-fg-2, #cfd8d8)",lineHeight:1.6},children:[(0,r.jsx)("b",{style:{color:"var(--sd-fg-1, #fff)"},children:"Built-in scores changed in this version:"})," ",(l=(i=d.companies).slice(0,3).map(t).join(", "),(c=i.length-3)>0?`${l} and ${c} more`:l),"."," ","Keep any of the old ones as your own?",(0,r.jsx)("div",{style:{marginTop:4,color:"var(--sd-fg-3, #8b9a9a)"},children:"The built-in list now holds only companies most professionals would recognise, scored the same for everyone; anything else is estimated from your network. A score you keep is yours, like one you set below, and Auto hands it back."}),p&&(0,r.jsx)("ul",{style:{listStyle:"none",padding:0,margin:"10px 0 0",display:"grid",gap:4},children:d.companies.map(e=>(0,r.jsx)("li",{children:(0,r.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"baseline",cursor:"pointer"},children:[(0,r.jsx)("input",{type:"checkbox",checked:f.has(e.name),disabled:y,onChange:()=>{let r;return r=e.name,h(e=>{let o=new Set(e);return o.has(r)?o.delete(r):o.add(r),o})}}),(0,r.jsxs)("span",{children:[(0,r.jsx)("b",{style:{color:"var(--sd-fg-1, #fff)"},children:e.name})," ",e.was," → ",e.estimated?`estimated (${e.now})`:e.now,(0,r.jsxs)("span",{style:{color:"var(--sd-fg-4, #778)"},children:[` \xb7 ${e.people} ${1===e.people?"person":"people"} there now`,e.names.length>1&&` \xb7 for ${e.names.join(", ")}`]})]})]})},e.name))}),(0,r.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10,flexWrap:"wrap"},children:[p?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("button",{disabled:y||!f.size,onClick:()=>w([...f]),style:{...a(!0),opacity:y||!f.size?.5:1},children:["Keep ",f.size," ",1===f.size?"score":"scores"]}),(0,r.jsx)("button",{disabled:y,onClick:()=>g(!1),style:a(!1),children:"Back"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{disabled:y,onClick:()=>w(d.companies.map(e=>e.name)),style:a(!0),children:"Keep all"}),(0,r.jsx)("button",{disabled:y,onClick:()=>g(!0),style:a(!1),children:"Choose…"})]}),(0,r.jsx)("button",{disabled:y,onClick:()=>w([]),style:a(!1),children:"No thanks"})]}),b&&(0,r.jsx)("div",{role:"alert",style:{marginTop:8,color:"#e74c3c"},children:b})]})}let i="1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)",l={yours:{label:"your score",color:"var(--sd-green, #00ff88)"},known:{label:"known list",color:"var(--sd-blue, #3498DB)"},data:{label:"public data",color:"#1abc9c"},network:{label:"estimated: many of your people",color:"var(--sd-orange, #FF6B35)"},default:{label:"unknown company",color:"var(--sd-fg-4, #778)"}};async function c(){let e=await fetch("/api/company-scores"),r=await e.json();if(!e.ok)throw Error(r.error||"Could not load company scores");return r.companies}function d(){let[e,r]=(0,o.useState)(null),[n,t]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let e=!1;return c().then(o=>{e||r(o)}).catch(r=>{e||t(r.message)}),()=>{e=!0}},[]),{companies:e,error:n,setScore:(0,o.useCallback)(async(e,o)=>{let n=await fetch("/api/company-scores",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,score:o})}),t=await n.json();if(!n.ok)throw Error(t.error||"Could not save");return r(await c()),t},[]),reload:(0,o.useCallback)(async()=>r(await c()),[])}}function u({company:e,onSet:n,compact:t}){let[a,s]=(0,o.useState)(!1),l=async r=>{s(!0);try{await n(e.name,"auto"===r?null:Number(r))}finally{s(!1)}};return(0,r.jsxs)("select",{disabled:a,value:"yours"===e.source?String(e.score):"auto",onChange:e=>l(e.target.value),title:"Set this company's score. Auto uses the known list or an estimate.",style:{padding:t?"2px 4px":"4px 6px",borderRadius:6,border:i,background:"var(--sd-card, #11131c)",color:"var(--sd-fg-1, #dfe6e9)",fontSize:12},children:[(0,r.jsxs)("option",{value:"auto",children:["Auto (","yours"===e.source?e.suggested??"est.":e.score,")"]}),[10,9,8,7,6,5,4,3,2,1].map(e=>(0,r.jsx)("option",{value:e,children:e},e))]})}e.s(["ScorePicker",0,u,"default",0,function({onRescored:e,version:n=0}){let{companies:t,error:a,setScore:c,reload:p}=d();(0,o.useEffect)(()=>{n&&p().catch(()=>{})},[n,p]);let[g,f]=(0,o.useState)(""),[h,y]=(0,o.useState)("all"),[m,b]=(0,o.useState)(150),[x,w]=(0,o.useState)(null),v=e=>{w(e),setTimeout(()=>w(null),3500)},k=async(r,o)=>{let n=await c(r,o);v(`${r}: ${null==o?"back to auto":`set to ${o}`} \xb7 rescored ${n.scored} people`),e?.()},j=async({kept:r,scored:o,error:n})=>{if(!r.length)return v("Keeping the new built-in scores.");v(n||`Kept ${r.length} old ${1===r.length?"score":"scores"} as your own \xb7 rescored ${o} people`),await p().catch(()=>{}),e?.()},S=(0,o.useMemo)(()=>{if(!t)return[];let e=g.trim().toLowerCase();return t.filter(r=>(!e||r.name.toLowerCase().includes(e))&&("all"===h||r.source===h))},[t,g,h]);if(a)return(0,r.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:a});if(!t)return(0,r.jsx)("div",{style:{padding:24,color:"var(--sd-fg-4, #778)"},children:"Loading companies…"});let C=e=>t.filter(r=>r.source===e).length;return(0,r.jsxs)("div",{style:{flex:1,overflow:"auto",padding:16},children:[(0,r.jsxs)("div",{style:{maxWidth:980,margin:"0 auto"},children:[(0,r.jsx)(s,{onAnswered:j}),(0,r.jsxs)("div",{style:{padding:14,borderRadius:10,border:i,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",fontSize:12.5,color:"var(--sd-fg-2, #cfd8d8)",lineHeight:1.6},children:[(0,r.jsx)("b",{style:{color:"var(--sd-fg-1, #fff)"},children:"How a power score works."})," power = ",(0,r.jsx)("b",{children:"title"})," × ",(0,r.jsx)("b",{children:"company weight"})," + bonus. The title (student 1 … founder or C-suite 10) comes from someone’s roles, with former roles at 70%; an audience of their own counts like a title (1M+ followers like a director). The company weight runs from 0.725 for a company we don’t know (or none found), the middle of the scale, to 1.0 (a company scored 10), so seniority counts for more at a bigger company. The bonus is at most +1.5, for investor, YC, an audience in the millions or the top award of any field, and counts half at an unknown company. A 1st-degree person whose circle is unusually strong gets up to +2 more: up to +1 for a high share of it at A or S, or +1 for every 25 people there. Tiers are graded on your network’s curve unless you choose the fixed scale (",(0,r.jsx)("a",{href:"#tiers",style:{color:"var(--sd-blue, #3498DB)"},children:"Tiers"}),", above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.",(0,r.jsxs)("div",{style:{marginTop:6,color:"var(--sd-fg-3, #8b9a9a)"},children:["So a VP at a 10 scores 9.0, a founder at an unknown company 7.3, a director at an unknown company 5.4, and an intern at a 10 scores 2.0. Set a company’s score below and everyone there is rescored. Companies in the sectors you pick (",(0,r.jsx)("a",{href:"#sector",style:{color:"var(--sd-blue, #3498DB)"},children:"Your sector"}),", above) get +1 or +2; a score you set is never changed."]})]}),(0,r.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",margin:"14px 0 10px"},children:[(0,r.jsx)("input",{value:g,onChange:e=>f(e.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:i,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #fff)",fontSize:13,minWidth:180}}),[["all",`All ${t.length}`],["known",`Known list ${C("known")}`],["data",`Public data ${C("data")}`],["yours",`Yours ${C("yours")}`],["network",`Estimated ${C("network")}`],["default",`Unknown ${C("default")}`]].map(([e,o])=>(0,r.jsx)("button",{onClick:()=>y(e),style:{padding:"5px 10px",borderRadius:7,border:i,cursor:"pointer",fontSize:11.5,fontWeight:600,background:h===e?"rgba(52,152,219,0.25)":"transparent",color:h===e?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-3, #8b9a9a)"},children:o},e))]}),(0,r.jsxs)("div",{style:{borderRadius:10,border:i,overflow:"hidden"},children:[(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"8px 12px",fontSize:10.5,letterSpacing:.6,color:"var(--sd-fg-3, #8b9a9a)",background:"rgba(var(--sd-ink, 255, 255, 255), 0.04)"},children:[(0,r.jsx)("span",{children:"COMPANY"}),(0,r.jsx)("span",{style:{textAlign:"right"},children:"PEOPLE"}),(0,r.jsx)("span",{style:{textAlign:"right"},children:"YOU KNOW"}),(0,r.jsx)("span",{style:{textAlign:"right"},children:"DIRECTOR+"}),(0,r.jsx)("span",{style:{textAlign:"right"},children:"SCORE"}),(0,r.jsx)("span",{children:"SOURCE"}),(0,r.jsx)("span",{children:"SET"})]}),S.slice(0,m).map(e=>(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"7px 12px",alignItems:"center",borderTop:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.05)",fontSize:12.5},children:[(0,r.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,r.jsx)("span",{title:`${e.industry.label} (inferred)`,style:{width:8,height:8,borderRadius:"50%",background:e.industry.color,flexShrink:0}}),(0,r.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,r.jsx)("span",{style:{textAlign:"right"},children:e.people}),(0,r.jsx)("span",{style:{textAlign:"right",color:e.d1?"var(--sd-green, #00ff88)":"var(--sd-fg-5, #556)"},children:e.d1}),(0,r.jsx)("span",{style:{textAlign:"right",color:e.senior?"var(--sd-gold, #FFD700)":"var(--sd-fg-5, #556)"},children:e.senior}),(0,r.jsx)("b",{style:{textAlign:"right",fontSize:15},children:e.score}),(0,r.jsxs)("span",{style:{fontSize:11,color:l[e.source]?.color},children:[l[e.source]?.label,e.sectorBonus>0&&(0,r.jsxs)("span",{style:{color:"var(--sd-green, #00ff88)"},children:[" + ",e.sectorBonus," your sector"]})]}),(0,r.jsx)(u,{company:e,onSet:k,compact:!0})]},e.name))]}),S.length>m&&(0,r.jsxs)("button",{onClick:()=>b(e=>e+300),style:{marginTop:10,padding:"7px 14px",borderRadius:8,border:i,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #dfe6e9)",cursor:"pointer",fontSize:12},children:["Show more (",S.length-m," left)"]})]}),x&&(0,r.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000",fontWeight:800,fontSize:13,zIndex:50},children:x})]})},"useCompanyScores",0,d],94657)},89154,e=>{"use strict";var r=e.i(90179);function o(e){let o=(0,r.readTitle)(e);return{key:o.key,label:o.label,level:o.level}}function n(e){return(0,r.currentCompany)(e)}let t=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],a={key:"unknown",label:"Unclear",color:"#555c66"},s=Object.fromEntries([...t,a].map(e=>[e.key,e])),i=e=>s[e]||a;function l(e,r){for(let o of[e,r]){if(!o)continue;let e=t.find(e=>e.words.test(o));if(e)return e}return a}let c=(e,r)=>l(e,r).key,d=e=>o(e).level>=4;e.s(["INDUSTRIES",0,t,"UNKNOWN_INDUSTRY",0,a,"buildCompanyIndex",0,function(e=[]){let o=new Map,n=e=>(o.has(e)||o.set(e,(0,r.rolesWithCompanies)(e)),o.get(e)),{industries:t}=(0,r.networkCompanies)(e,{industryOf:c,rolesOf:n}),a=new Map;for(let r of e){let e=r.profile_url||`id:${r.id}`,o=a.get(e);(!o||(r.degree||9)<(o.degree||9))&&a.set(e,r)}let s=new Map;for(let e of a.values()){let r=n(e).find(e=>!e.former)?.company;if(!r)continue;let o=s.get(r);o||(o={name:r,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},s.set(r,o)),o.people.push(e),1===e.degree?o.d1++:2===e.degree?o.d2++:o.d3++,"S"===e.tier&&o.S++,"A"===e.tier&&o.A++,d(e.headline)&&o.senior++}for(let e of s.values())e.industry=i(t.get(e.name));return s},"companyLinks",0,function(e=[],r=[]){let o=new Map;for(let r of e){let e=n(r);e&&o.set(r.id,e)}let t=new Map;for(let e of r){let r=o.get(e.source_connection_id),a=n(e);if(!r||!a||r===a)continue;let[s,i]=r<a?[r,a]:[a,r],l=`${s}\u0000${i}`,c=t.get(l);c||(c={a:s,b:i,weight:0,via:new Set},t.set(l,c)),c.weight++,c.via.add(e.source_connection_id)}return[...t.values()]},"companyOf",0,n,"getSeniority",0,o,"industryByKey",0,i,"industryOf",0,l,"isSenior",0,d,"waysInto",0,function(e,r=[],o=[]){let t=r.filter(r=>n(r)===e),a=new Map;for(let r of o)n(r)===e&&a.set(r.source_connection_id,(a.get(r.source_connection_id)||0)+1);let s=new Map(r.map(e=>[e.id,e]));return{direct:t,bridges:[...a.entries()].map(([e,r])=>({bridge:s.get(e),n:r})).filter(e=>e.bridge).sort((e,r)=>r.n-e.n||(Number(r.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,64666,e=>{"use strict";var t=e.i(7214);function n(e=[],r=[]){let o=new Set((r||[]).map(t.keyFor)),i=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(o.has(r))continue;let a=i.get(r);a||i.set(r,a=new Set),a.add(e)}let a=new Map;for(let e of i.values())for(let t of e){let n=a.get(t)||{reach:0,only:0,total:0};n.reach+=1/e.size,n.total+=1,1===e.size&&(n.only+=1),a.set(t,n)}return a}e.s(["bridgeOverlap",0,function(e=[],r=[]){let o=n(e,r),i=new Set((r||[]).map(t.keyFor)),a=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(i.has(r))continue;let o=a.get(r);o||a.set(r,o=new Set),o.add(e)}let l=new Map;for(let e of a.values()){if(e.size<2)continue;let t=[...e];for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=t[e]<t[n]?`${t[e]}|${t[n]}`:`${t[n]}|${t[e]}`;l.set(r,(l.get(r)||0)+1)}}let c=new Map;for(let[e,t]of l){let[n,r]=e.split("|"),i=o.get(n).total+o.get(r).total-t,a=i?t/i:0;for(let[e,o]of[[n,r],[r,n]]){let n=c.get(e);(!n||a>n.share)&&c.set(e,{with:o,share:a,shared:t})}}return c},"exclusiveReach",0,n,"redundancy",0,function(e=[],t=[]){let r=n(e,t),o=0,i=0;for(let e of r.values())o+=e.reach,i+=e.only;return o?1-i/o:0}])},70479,e=>{"use strict";let t=2*Math.PI;function n(e,n,r){if(e<=0)return 1;let o=r*e;return Math.max(1,r>=t-1e-9?Math.floor(o/n):Math.floor(o/n)+1)}function r(e,t,o,i,a=o){let l=[],c=0;for(let r=t;c<e;r+=Math.max(o,a))l.push(r),c+=n(r,o,i);return l}let o=(e,t,n,o,i)=>{let a=r(e,t,n,o,i);return a[a.length-1]};function i(e,{inner:a,outer:l,spacing:c,minSpacing:s=c/3,innerMin:u=a,start:f=-Math.PI/2,sweep:d=t,ringGap:h=0}={}){let g=Math.max(0,Math.floor(e)||0);if(!g)return{spacing:c,inner:a,rings:[],points:[]};let p=c,m=a;if(o(g,m,p,d,h)>l)if(o(g,u,p,d,h)<=l){let e=u,t=a;for(let n=0;n<24;n++){let n=(e+t)/2;o(g,n,p,d,h)<=l?e=n:t=n}m=e}else{let e=s,t=c;if(o(g,m=u,e,d,h)<=l)for(let n=0;n<24;n++){let n=(e+t)/2;o(g,m,n,d,h)<=l?e=n:t=n}p=e}let y=r(g,m,p,d,h),b=y.map(e=>n(e,p,d)),w=b.reduce((e,t)=>e+t,0),M=b.map(e=>Math.min(e,Math.floor(g*e/w))),v=g-M.reduce((e,t)=>e+t,0);for(;v>0;){let e=-1;for(let t=0;t<b.length;t++)M[t]<b[t]&&(e<0||b[t]-M[t]>b[e]-M[e])&&(e=t);M[e]++,v--}let k=d>=t-1e-9,x=[],S=[];return y.forEach((e,n)=>{let r=M[n];if(!r)return;S.push({radius:e,count:r});let o=k?t/r:r>1?d/(r-1):0,i=k?f+(n%2?o/2:0):r>1?f:f+d/2,a=k?null:function(e){let t=Math.floor((e-1)/2),n=t+1,r=[t--];for(;r.length<e;)n<e&&r.push(n++),r.length<e&&t>=0&&r.push(t--);return r}(r);for(let t=0;t<r;t++){let n=i+(a?a[t]:t)*o;x.push({x:e*Math.cos(n),y:e*Math.sin(n),angle:n,ring:S.length-1})}}),{spacing:p,inner:m,rings:S,points:x}}let a=["S","A","B","C","D"];e.s(["chainTree",0,function(e=[],{from:n=0,hop:r=60,spacing:o=46,toward:i=0,angles:a=[]}={}){let l=e.length,c=e.map((e,t)=>Number.isInteger(e)&&e>=0&&e<l&&e!==t?e:-1),s=Array(l).fill(0);for(let e=0;e<l;e++){let t=[],n=e;for(;n>=0&&!s[n]&&!t.includes(n);)t.push(n),n=c[n];n>=0&&!s[n]&&(c[t[t.length-1]]=-1,n=-1);let r=n>=0?s[n]+1:1;for(let e=t.length-1;e>=0;e--)s[t[e]]=r++}let u=Array(l),f=[];for(let e=1;e<=Math.max(0,...s);e++){let d=[];for(let t=0;t<l;t++)s[t]===e&&d.push(t);let h=n+(e-1)*r,g=function(e,n){let r=e.length;if(r<2)return e.slice();let o=e=>(e%t+t)%t,i=e.map((e,t)=>t).sort((t,n)=>o(e[t])-o(e[n])||t-n),a=0,l=-1;i.forEach((n,c)=>{let s=o(o(e[i[(c+1)%r]])-o(e[n]))||(r>1&&c===r-1?t:0);s>l&&(l=s,a=(c+1)%r)});let c=i.slice(a).concat(i.slice(0,a)),s=o(e[c[0]]),u=c.map(t=>s+o(o(e[t])-s)),f=[];u.forEach((e,t)=>{for(f.push({sum:e-t*n,count:1});f.length>1&&f[f.length-2].sum/f[f.length-2].count>f[f.length-1].sum/f[f.length-1].count;){let e=f.pop();f[f.length-1].sum+=e.sum,f[f.length-1].count+=e.count}});let d=f.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,t)=>e+t*n);if(d[r-1]-d[0]>t-n){let e=(d[0]+d[r-1])/2;d=d.map((n,o)=>e+t/r*(o-(r-1)/2))}let h=Array(r);return c.forEach((e,t)=>{h[e]=d[t]}),h}(d.map(e=>c[e]<0?Number.isFinite(a[e])?a[e]:i:u[c[e]].angle),Math.min(o/Math.max(1,h),t/d.length));d.forEach((t,n)=>{let r=g[n];u[t]={x:h*Math.cos(r),y:h*Math.sin(r),angle:r,radius:h,depth:e,parent:c[t]}}),f.push({radius:h,count:d.length,depth:e})}return{rings:f,points:u}},"circleActivity",0,function(e,{notes:t=[],ready:n=new Map,chained:r=new Map}={}){let o=new Map;for(let e of t){if(e?.circle==null)continue;let t=o.get(e.circle)||{notes:0,unread:0};t.notes+=1,e.seen||(t.unread+=1),o.set(e.circle,t)}let i=new Map;for(let t of e){let e=o.get(String(t.id))||{notes:0,unread:0},a=n.get(t.id)||0,l=r.get(t.id)||0;i.set(t.id,{score:e.notes+e.unread+a+l,notes:e.notes,unread:e.unread,ready:a,chains:l})}return i},"dotRadius",0,function(e,t){return Math.max(1.4,Math.min(7,.42*e*("S"===t?1:"A"===t?.86:"B"===t?.72:.6)))},"previewBand",0,function(e,t=[],n=34){let r=Math.max(0,...t.map(e=>e.radius)),o=Math.max(.66*e,r?r+n:0);return{inner:o,outer:Math.max(.8*e,o+.14*e)}},"ringLayout",0,i,"tierBandLayout",0,function(e,{inner:n,outer:r,spacing:o,minSpacing:l=o/3,gap:c=o,start:s=-Math.PI/2}){let u=a.map(e=>({tier:e,idx:[]}));e.forEach((e,t)=>{let n=a.indexOf(e?.tier);u[n<0?4:n].idx.push(t)});let f=u.filter(e=>e.idx.length),d=r=>{let a=Array(e.length),l=[],u=n;for(let e of f){let n=i(e.idx.length,{inner:u,outer:1/0,spacing:r,minSpacing:r,start:s});e.idx.forEach((e,r)=>{let o=n.points[r];a[e]={x:o.x,y:o.y,angle:o.angle,slot:t/n.rings[o.ring].count}});let f=Math.max(u,...n.rings.map(e=>e.radius));l.push({tier:e.tier,inner:u,outer:f}),u=f+r/o*c}return{spacing:r,points:a,bands:l,edge:l.length?l[l.length-1].outer:n}},h=d(o);if(h.edge<=r)return h;let g=l,p=o;if((h=d(g)).edge>r)return h;for(let e=0;e<20;e++){let e=(g+p)/2,t=d(e);t.edge<=r?(g=e,h=t):p=e}return h}])},89154,e=>{"use strict";var t=e.i(90179);function n(e){let n=(0,t.readTitle)(e);return{key:n.key,label:n.label,level:n.level}}function r(e){return(0,t.currentCompany)(e)}let o=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],i={key:"unknown",label:"Unclear",color:"#555c66"},a=Object.fromEntries([...o,i].map(e=>[e.key,e])),l=e=>a[e]||i;function c(e,t){for(let n of[e,t]){if(!n)continue;let e=o.find(e=>e.words.test(n));if(e)return e}return i}let s=(e,t)=>c(e,t).key,u=e=>n(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,i,"buildCompanyIndex",0,function(e=[]){let n=new Map,r=e=>(n.has(e)||n.set(e,(0,t.rolesWithCompanies)(e)),n.get(e)),{industries:o}=(0,t.networkCompanies)(e,{industryOf:s,rolesOf:r}),i=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=i.get(e);(!n||(t.degree||9)<(n.degree||9))&&i.set(e,t)}let a=new Map;for(let e of i.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=a.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},a.set(t,n)),n.people.push(e),1===e.degree?n.d1++:2===e.degree?n.d2++:n.d3++,"S"===e.tier&&n.S++,"A"===e.tier&&n.A++,u(e.headline)&&n.senior++}for(let e of a.values())e.industry=l(o.get(e.name));return a},"companyLinks",0,function(e=[],t=[]){let n=new Map;for(let t of e){let e=r(t);e&&n.set(t.id,e)}let o=new Map;for(let e of t){let t=n.get(e.source_connection_id),i=r(e);if(!t||!i||t===i)continue;let[a,l]=t<i?[t,i]:[i,t],c=`${a}\u0000${l}`,s=o.get(c);s||(s={a:a,b:l,weight:0,via:new Set},o.set(c,s)),s.weight++,s.via.add(e.source_connection_id)}return[...o.values()]},"companyOf",0,r,"getSeniority",0,n,"industryByKey",0,l,"industryOf",0,c,"isSenior",0,u,"waysInto",0,function(e,t=[],n=[]){let o=t.filter(t=>r(t)===e),i=new Map;for(let t of n)r(t)===e&&i.set(t.source_connection_id,(i.get(t.source_connection_id)||0)+1);let a=new Map(t.map(e=>[e.id,e]));return{direct:o,bridges:[...i.entries()].map(([e,t])=>({bridge:a.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])}]);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_2ae47f08-module__h69qWW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_2ae47f08-module__h69qWW__variable{--font-geist-sans:"Geist", "Geist Fallback"}
|
|
2
|
+
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0r6juujl39pe6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_eb58308d-module__w_p2Lq__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_eb58308d-module__w_p2Lq__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
|
|
3
|
+
*{box-sizing:border-box;margin:0;padding:0}:root{--sd-bg:#0a0a1a;--sd-bg2:#1a1440;--sd-accent:#3498db;--sd-panel:#0a0f1ea6;--sd-panel-blur:blur(24px) saturate(1.4);--sd-header:transparent;--sd-header-blur:none;--sd-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--sd-page:transparent}body{background:var(--sd-bg);color:var(--sd-fg-1,#fff);font-family:var(--sd-font)}button,input,select,textarea{font-family:inherit}html:not([data-backdrop=none]) body:before{content:"";z-index:-1;pointer-events:none;position:fixed;inset:0}html[data-backdrop=stars] body:before{background:radial-gradient(1px 1px at 12% 18%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 72% 34%, #fff 50%, transparent 51%), radial-gradient(1.5px 1.5px at 38% 78%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 88% 82%, #fffc 50%, transparent 51%), radial-gradient(1px 1px at 56% 8%, #ffffffb3 50%, transparent 51%), radial-gradient(1.2px 1.2px at 24% 52%, #ffffffd9 50%, transparent 51%), radial-gradient(60% 45% at 75% 20%, color-mix(in srgb, var(--sd-bg2) 55%, transparent), transparent 70%), radial-gradient(50% 40% at 15% 85%, color-mix(in srgb, var(--sd-accent) 18%, transparent), transparent 70%);background-size:180px 180px,230px 230px,310px 310px,270px 270px,150px 150px,200px 200px,100% 100%,100% 100%}html[data-backdrop=grid] body:before{background:linear-gradient(color-mix(in srgb, var(--sd-bg2) 90%, #fff 10%) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 90%, #fff 10%) 1px, transparent 1px), linear-gradient(color-mix(in srgb, var(--sd-bg2) 60%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 60%, transparent) 1px, transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px}html[data-backdrop=glow] body:before{background:radial-gradient(40% 50% at 18% 22%, color-mix(in srgb, var(--sd-bg2) 70%, transparent), transparent 70%), radial-gradient(35% 45% at 82% 30%, color-mix(in srgb, var(--sd-accent) 45%, transparent), transparent 70%), radial-gradient(45% 40% at 60% 88%, color-mix(in srgb, var(--sd-tier-a,#9b59b6) 40%, transparent), transparent 70%);filter:blur(30px)}html[data-backdrop=horizon] body:before{background:linear-gradient(transparent 62%, color-mix(in srgb, var(--sd-bg2) 22%, transparent) 62.2%, transparent 62.6%), repeating-linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 18%, transparent) 0 1px, transparent 1px 80px), radial-gradient(70% 38% at 50% 62%, color-mix(in srgb, var(--sd-bg2) 38%, transparent), transparent 72%);-webkit-mask-image:linear-gradient(#0000 30%,#000 60%);mask-image:linear-gradient(#0000 30%,#000 60%)}body:has(>div>[data-map]){overflow:hidden}html:has([data-field-question]){scroll-padding-bottom:80px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:rgba(var(--sd-ink,255, 255, 255), .15);border-radius:3px}:root{--scan-bar-top:94px}@media (max-width:767px){:root{--scan-bar-top:66px}}@keyframes notch-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:no-preference){.notch-pulse{animation:1.6s ease-in-out infinite notch-pulse}}.crm-grid{grid-template-columns:minmax(280px,400px) minmax(0,1fr);align-items:start;gap:10px;display:grid}.crm-grid>.crm-wide{grid-column:1/-1}.crm-board{grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px;padding:10px;display:grid;overflow-x:auto}@media (max-width:760px){.crm-grid,.crm-board{grid-template-columns:minmax(0,1fr)}}html[data-buttons=flat] :is(button,#main-tabs>a){box-shadow:none!important;text-shadow:none!important}html[data-buttons=flat] :is(button,#main-tabs>a):not(:disabled):hover{filter:brightness(1.12)}html[data-buttons=flat] :is(button,select,input[type=search],input[type=text],#main-tabs>a):not([style*="border-radius: 50%"]){border-radius:5px!important}html[data-buttons=square] :is(button,select,input[type=search],input[type=text],#main-tabs,#main-tabs>a):not([style*="border-radius: 50%"]){border-radius:2px!important}html[data-buttons=square] :is(button,#main-tabs>a){letter-spacing:.02em;box-shadow:none!important}html[data-buttons=square] :is(button,#main-tabs>a):not(:disabled):hover{outline:1px solid color-mix(in srgb, var(--sd-accent) 70%, transparent);outline-offset:-1px}html[data-buttons=frosted] [data-glass-panel]{isolation:isolate;position:relative;-webkit-backdrop-filter:var(--sd-panel-blur) var(--lg-lens, )!important;backdrop-filter:var(--sd-panel-blur) var(--lg-lens, )!important;background-image:linear-gradient(#ffffff17,#ffffff05 40%,#fff0)!important;box-shadow:inset 0 1px #ffffff3d,inset 0 -1px #ffffff0d,0 24px 60px #0000006b,0 1px 2px #00000040!important}html[data-buttons=frosted] [data-glass-panel=bar]{border-radius:999px!important}html[data-buttons=frosted] .glass-rim,html[data-buttons=frosted] [data-glass-panel]:before,html[data-buttons=frosted] :is(button,#main-tabs>a):not(.radar-go):not(#main-tabs *):before{content:"";border-radius:inherit;pointer-events:none;-webkit-mask-composite:xor;background:linear-gradient(135deg,#ffffff8c,#ffffff1a 30%,#fff0 55%,#ffffff38);padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}html[data-buttons=frosted] :is(button):not(.radar-go):not(#main-tabs *){isolation:isolate;-webkit-backdrop-filter:blur(4px)saturate(170%);backdrop-filter:blur(4px)saturate(170%);position:relative;box-shadow:inset 0 1px #ffffff4d,inset 0 0 0 .5px #ffffff24,0 4px 14px #0000003d!important}html[data-buttons=frosted] :is(button,select,input[type=search],input[type=text]):not([style*="border-radius: 50%"]):not(.radar-go):not(#main-tabs *){border-radius:14px!important}html[data-buttons=frosted] :is(button):not(:disabled):not(#main-tabs *):hover{filter:brightness(1.14)}@media (prefers-reduced-motion:no-preference){html[data-buttons=frosted] :is(button):not(#main-tabs *){transition:transform .25s cubic-bezier(.3,1.4,.5,1),filter .2s}html[data-buttons=frosted] :is(button):not(:disabled):not(#main-tabs *):active{transform:scale(1.04)}}html[data-buttons=frosted] #main-tabs>:is(a,button){border-radius:999px!important}html[data-buttons=frosted] #main-tabs>:is(a,button)[aria-current=page],html[data-buttons=frosted] #main-tabs>button[style*="background: rgb(255, 255, 255)"]{box-shadow:inset 0 1px #fff6,inset 0 0 0 .5px #ffffff40,0 2px 8px #00000040!important}@media (prefers-reduced-transparency:reduce){html[data-buttons=frosted] [data-glass-panel]{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#1c1c24f7!important}}@media (prefers-contrast:more){html[data-buttons=frosted] [data-glass-panel]{background-color:#0a0a0ed9!important}html[data-buttons=frosted] [data-glass-panel]:before{background:#fff9}}html[data-buttons=neon] :is(button,#main-tabs>a):not(:disabled){text-shadow:0 0 8px color-mix(in srgb, var(--sd-accent) 45%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--sd-accent) 55%, transparent), 0 0 12px color-mix(in srgb, var(--sd-accent) 26%, transparent)!important}html[data-buttons=neon] :is(button,#main-tabs>a):not(:disabled):hover{box-shadow:0 0 0 1px var(--sd-accent), 0 0 20px color-mix(in srgb, var(--sd-accent) 50%, transparent)!important}html[data-buttons=bold] :is(button,select,input[type=search],input[type=text],#main-tabs>a){outline:1.5px solid rgba(var(--sd-ink,255, 255, 255), .55);outline-offset:-1.5px;font-weight:700}html[data-buttons=bold] :is(button,a,select,input):focus-visible{outline-offset:2px;outline:3px solid var(--sd-accent)!important}@media (prefers-reduced-motion:no-preference){html:not([data-buttons=soft]) :is(button,#main-tabs>a){transition:box-shadow .15s,filter .15s,outline-color .15s}}html[data-theme=analyst] body{font-variant-numeric:tabular-nums}html[data-theme=analyst] [style*=box-shadow]{box-shadow:none!important}html[data-theme=analyst] [style*=text-shadow]{text-shadow:none!important}html[data-theme=analyst] header h1,html[data-theme=analyst] header :is(span,a)>h1,html[data-theme=analyst] [style*=-webkit-text-fill-color]{-webkit-text-fill-color:currentColor!important;color:var(--sd-fg-1,#111)!important;background:0 0!important}html[data-theme=analyst] :is(button,a)[style*=gradient]{background:var(--sd-accent)!important;color:#fff!important;border-color:#0000!important}html[data-theme=analyst] div[style*=radial-gradient],html[data-theme=analyst] div[style*=linear-gradient\(1]{background-image:none!important}html[data-theme=analyst] [style*=backdrop-filter]{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}html[data-theme=analyst] :is(.galaxy-ring-pulse,.cluster-hub,.seed){animation:none!important}html[data-dots=droplet] :is(.sd-dot,.pv-d3,.pv-d4){filter:url(#sd-droplet)}html[data-dots=glow] :is(.sd-dot,.pv-d3,.pv-d4){filter:url(#sd-glow)}html[data-dots=plain] .sd-dot:is(:not([stroke]),[stroke=none]){stroke:#2b2b2b;stroke-width:.8px;stroke-opacity:.75}html[data-dots=droplet] .sd-dot-html{background-image:radial-gradient(circle at 34% 30%,#fffffff2,#ffffff59 22%,#fff0 55%)!important;box-shadow:inset 0 0 0 .5px #ffffff8c,0 1px 3px #00000059!important}html[data-dots=glow] .sd-dot-html{filter:saturate(1.25)brightness(1.08)drop-shadow(0 0 3px #ffffff59)}html[data-dots=plain] .sd-dot-html{box-shadow:inset 0 0 0 1px #0009!important}html[data-theme=obsidian] [data-glass-panel]{box-shadow:none!important;border-color:#363636!important}html[data-theme=obsidian] [data-glass-panel=side]{border-left:1px solid #363636!important;border-right:1px solid #363636!important}html[data-theme=obsidian] #main-tabs{box-shadow:inset 0 0 0 1px #363636;background:#262626!important}html[data-theme=obsidian] .graph-tooltip{box-shadow:0 4px 14px #0006;color:#dcddde!important;background:#262626!important;border:1px solid #3f3f3f!important;border-radius:4px!important}html[data-theme=synthwave] [data-glass-panel]{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--sd-accent) 45%, transparent), 0 0 26px color-mix(in srgb, var(--sd-accent) 16%, transparent)!important}html[data-theme=synthwave] #main-tabs{box-shadow:0 0 0 1px color-mix(in srgb, var(--sd-accent) 55%, transparent), 0 0 18px color-mix(in srgb, var(--sd-accent) 22%, transparent)}html[data-theme=synthwave] .graph-tooltip{box-shadow:0 0 16px color-mix(in srgb, var(--sd-accent) 35%, transparent);border:1px solid var(--sd-accent)!important;color:#fff5ff!important;background:#24103ff0!important}html[data-theme=space] [data-glass-panel]{box-shadow:inset 0 1px #cddaff24,inset 0 0 0 1px #96aaff1a,0 18px 50px #00000080!important}html[data-theme=space] .graph-tooltip{color:#eef2ff!important;background:#080a1cf0!important;border:1px solid #96aaff47!important}html[data-theme=contrast] [data-glass-panel]{box-shadow:inset 0 0 0 1.5px #fff!important}html[data-theme=contrast] .graph-tooltip{color:#fff!important;background:#000!important;border:1.5px solid #fff!important}html[data-theme=daylight] [data-glass-panel]{box-shadow:0 0 0 1px #12162812,0 1px 2px #1216280f,0 10px 30px #12162814!important}html[data-theme=daylight] #main-tabs{background:#fff!important}html[data-theme=paper] [data-glass-panel]{box-shadow:inset 0 0 0 1px #d8cdb8!important}html[data-theme=paper] #main-tabs{background:#efe7d6!important}html[data-theme=analyst] [data-glass-panel]{box-shadow:inset 0 0 0 1px #d0d0d0!important}html[data-theme=analyst] #main-tabs{background:#ececec!important}html[data-mode=light] .graph-tooltip{box-shadow:0 6px 20px #12162824;color:#11141c!important;background:#fffffffa!important;border:1px solid #1216281f!important}html[data-theme=paper] .graph-tooltip{font-family:var(--sd-font);background:#fbf8f1!important;border-color:#d8cdb8!important}html[data-theme=analyst] .graph-tooltip{box-shadow:none;border-radius:2px!important}html[data-buttons=frosted] .graph-tooltip{-webkit-backdrop-filter:blur(16px)saturate(1.8);backdrop-filter:blur(16px)saturate(1.8);box-shadow:inset 0 1px #ffffff38,0 10px 30px #00000059;background:#12121e73!important;border:1px solid #ffffff2e!important;border-radius:12px!important}
|