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,195 @@
|
|
|
1
|
+
// Settings → LinkedIn usage: how close this account is to the line, in one
|
|
2
|
+
// look, the way Claude's own usage page shows a plan's limits. No Node
|
|
3
|
+
// imports, so the page and the tests share it; the counting itself is in
|
|
4
|
+
// lib/linkedin-limits.js (linkedinUsage), from the files the scanner writes.
|
|
5
|
+
//
|
|
6
|
+
// Why it exists: on 2026-09-28 a real account was restricted after 373
|
|
7
|
+
// searches in 24 hours (TRAPS §16), and the only budget view was a box folded
|
|
8
|
+
// away on the Scan page. Every number here is either counted from the
|
|
9
|
+
// scanner's own record or is a rule with a stated source; nothing is a guess
|
|
10
|
+
// presented as a fact.
|
|
11
|
+
|
|
12
|
+
import { RESTRICTED_AT, RISKY_DAILY, SAFE_LIMITS, limitNote } from './search-risk.js';
|
|
13
|
+
|
|
14
|
+
const HOUR_MS = 3600 * 1000;
|
|
15
|
+
const DAY_MS = 24 * HOUR_MS;
|
|
16
|
+
|
|
17
|
+
// Auto scan's own ceilings (scripts/scrape.py AUTO_DAY_CAP, AUTO_WEEK_CAP,
|
|
18
|
+
// DRIP_HOURS, SESSION_PAGES, SESSION_REST, AUTO_PUSHBACK_REST). They hold
|
|
19
|
+
// however high the budget is set. tests/usage.test.mjs reads the scanner's
|
|
20
|
+
// numbers and checks these match, so the page can't describe rules the
|
|
21
|
+
// scanner doesn't keep.
|
|
22
|
+
export const AUTO = {
|
|
23
|
+
day: 40, // searches in any 24 hours
|
|
24
|
+
week: 200, // searches in any 7 days
|
|
25
|
+
hours: [9, 18], // searches only from 09:00 to 18:00, this computer's clock
|
|
26
|
+
sitting: 8, // searches in one sitting
|
|
27
|
+
sittingRest: 60 * 60, // seconds of rest after each sitting
|
|
28
|
+
pushbackRest: 2 * 24 * 3600, // seconds off after any check from LinkedIn (scrape.py AUTO_PUSHBACK_REST)
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// About how many people one search finds. A page of LinkedIn's people search
|
|
32
|
+
// shows up to 10 (scripts/scrape.py, "10 results per page"); 9 allows for the
|
|
33
|
+
// last page of each list, which is usually short. An estimate, and the page
|
|
34
|
+
// says so (neo's handoff, 2026-10-03).
|
|
35
|
+
export const PEOPLE_PER_SEARCH = 9;
|
|
36
|
+
|
|
37
|
+
// Searches in 24 hours that count as too close: 60% of the 373 that got an
|
|
38
|
+
// account restricted. A margin on a number seen once, not a known safe line.
|
|
39
|
+
export const DANGER_AT = Math.ceil(0.6 * RESTRICTED_AT);
|
|
40
|
+
|
|
41
|
+
// LinkedIn doesn't publish a free account's monthly limit. People report
|
|
42
|
+
// somewhere around 250 to 350 searches (TRAPS §35); shown as a range people
|
|
43
|
+
// report, never as LinkedIn's number.
|
|
44
|
+
export const REPORTED_MONTH = [250, 350];
|
|
45
|
+
|
|
46
|
+
// A search within this long after a pushback is the same search that met it,
|
|
47
|
+
// not a new one: the evidence file's name is only to the second.
|
|
48
|
+
const PUSHBACK_GRACE_MS = 60 * 1000;
|
|
49
|
+
|
|
50
|
+
export const LEVELS = {
|
|
51
|
+
ok: { label: 'Well within', color: '#00ff88' },
|
|
52
|
+
'above-default': { label: 'Above the default', color: '#FFD700' },
|
|
53
|
+
risky: { label: 'Risky', color: '#FF8C42' },
|
|
54
|
+
danger: { label: 'Too close', color: '#ff6b6b' },
|
|
55
|
+
paused: { label: 'Paused', color: '#ff6b6b' },
|
|
56
|
+
unknown: { label: 'Can’t tell', color: '#8b9a9a' },
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Where this account stands, worst first:
|
|
61
|
+
* paused a cooldown is on: nothing searches until it ends
|
|
62
|
+
* danger 60% of 373 or more in 24 hours, or searching again within
|
|
63
|
+
* a day of LinkedIn pushing back
|
|
64
|
+
* risky over 100 in 24 hours (what the budget picker asks about)
|
|
65
|
+
* above-default over the default 50 in 24 hours
|
|
66
|
+
* ok within the default
|
|
67
|
+
* unknown the record can't be read (the scanner then counts the day as used)
|
|
68
|
+
*/
|
|
69
|
+
export function usageLevel({ cooldown, searchesDay, lastPushback, searchesSincePushback, now = Date.now() } = {}) {
|
|
70
|
+
if (cooldown) return 'paused';
|
|
71
|
+
if (!Number.isFinite(searchesDay)) return 'unknown';
|
|
72
|
+
if (searchesDay >= DANGER_AT) return 'danger';
|
|
73
|
+
if (searchedAfterPushback({ lastPushback, searchesSincePushback, now })) return 'danger';
|
|
74
|
+
if (searchesDay > RISKY_DAILY) return 'risky';
|
|
75
|
+
if (searchesDay > SAFE_LIMITS.daily) return 'above-default';
|
|
76
|
+
return 'ok';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** LinkedIn pushed back less than a day ago and searching has carried on since. */
|
|
80
|
+
export function searchedAfterPushback({ lastPushback, searchesSincePushback, now = Date.now() } = {}) {
|
|
81
|
+
const at = lastPushback?.at;
|
|
82
|
+
return Number.isFinite(at) && now - at < DAY_MS && now >= at && searchesSincePushback > 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Searches made after a pushback, from the record's times (epoch seconds). */
|
|
86
|
+
export function countAfter(times, atMs) {
|
|
87
|
+
if (!Number.isFinite(atMs) || !Array.isArray(times)) return 0;
|
|
88
|
+
const from = (atMs + PUSHBACK_GRACE_MS) / 1000;
|
|
89
|
+
return times.filter((t) => t > from).length;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* What's left, as searches and about how many people they'd find: the daily
|
|
94
|
+
* or monthly budget, whichever runs out first (null for one with no cap).
|
|
95
|
+
* Nothing while scanning is paused. null when neither has a cap.
|
|
96
|
+
*/
|
|
97
|
+
export function estimate({ leftDay, leftMonth, paused = false } = {}) {
|
|
98
|
+
const lefts = [leftDay, leftMonth].filter((n) => Number.isFinite(n));
|
|
99
|
+
if (!lefts.length) return null;
|
|
100
|
+
const searches = paused ? 0 : Math.max(0, Math.min(...lefts));
|
|
101
|
+
const by = leftDay != null && leftMonth != null ? (leftDay <= leftMonth ? 'day' : 'month') : leftDay != null ? 'day' : 'month';
|
|
102
|
+
return { searches, people: searches * PEOPLE_PER_SEARCH, by };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** The plain-word warning for a level, or null when there's nothing to warn about. */
|
|
106
|
+
export function levelWarning(level, { searchesDay, cooldown, lastPushback, now = Date.now() } = {}) {
|
|
107
|
+
if (level === 'paused') {
|
|
108
|
+
// As the Scan page's banner says it (app/components/LinkedInLimits.js CooldownBanner).
|
|
109
|
+
const why = String(cooldown?.reason || 'LinkedIn pushed back');
|
|
110
|
+
return `Scanning is paused${cooldown?.until ? ` until ${whenText(cooldown.until)}` : ''}. `
|
|
111
|
+
+ `${why.charAt(0).toUpperCase()}${why.slice(1)}. Nothing that searches LinkedIn runs until then, so the account can recover.`;
|
|
112
|
+
}
|
|
113
|
+
if (level === 'danger') {
|
|
114
|
+
if (searchesDay >= DANGER_AT) {
|
|
115
|
+
return `${searchesDay} searches in the last 24 hours. A real account was restricted after ${RESTRICTED_AT}. `
|
|
116
|
+
+ 'Stop scanning until this comes down: each search stops counting 24 hours after it was made.';
|
|
117
|
+
}
|
|
118
|
+
return `LinkedIn pushed back ${agoText(lastPushback?.at, now)}, and searching has carried on since. `
|
|
119
|
+
+ 'Carrying on after a warning is what LinkedIn says turns it into a restriction. Leave it at least a day.';
|
|
120
|
+
}
|
|
121
|
+
if (level === 'risky') {
|
|
122
|
+
return `More than ${RISKY_DAILY} searches in the last 24 hours. That is past what Six Degrees asks you to confirm, `
|
|
123
|
+
+ `and a free account's whole month may be ${REPORTED_MONTH[0]} to ${REPORTED_MONTH[1]}.`;
|
|
124
|
+
}
|
|
125
|
+
if (level === 'above-default') {
|
|
126
|
+
return `More than the default ${SAFE_LIMITS.daily} searches in the last 24 hours. `
|
|
127
|
+
+ 'The default leaves room under limits LinkedIn doesn’t publish.';
|
|
128
|
+
}
|
|
129
|
+
if (level === 'unknown') {
|
|
130
|
+
return 'The record of searches on this computer couldn’t be read, so the scanner counts today’s budget as used until it can.';
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The warning box's paragraphs, in order: the level's warning, then the Scan
|
|
137
|
+
* page's note on a risky budget (lib/search-risk.js limitNote). The 373 is
|
|
138
|
+
* said once: when the level's warning names it, the note leaves its own 373
|
|
139
|
+
* sentence out. The Scan page's budget box still says the note whole.
|
|
140
|
+
*/
|
|
141
|
+
export function warningParts(level, facts = {}, limits = {}) {
|
|
142
|
+
const warning = levelWarning(level, facts);
|
|
143
|
+
const namesRestriction = level === 'danger' && facts.searchesDay >= DANGER_AT;
|
|
144
|
+
const note = limitNote(limits, { restriction: !namesRestriction });
|
|
145
|
+
return [warning, note].filter(Boolean);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** A bar's scale: past its last tick, and past what's been used. */
|
|
149
|
+
export function barMax(used, ticks = []) {
|
|
150
|
+
const top = Math.max(0, ...ticks.filter(Number.isFinite));
|
|
151
|
+
return Math.max(Math.ceil(top * 1.08), Math.ceil((Number(used) || 0) * 1.05), 1);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/** Midnight Pacific as LinkedIn's month turns over: "Nov 1, 12:00 AM Pacific". */
|
|
155
|
+
export function pacificText(ms) {
|
|
156
|
+
const s = new Intl.DateTimeFormat('en-US', {
|
|
157
|
+
timeZone: 'America/Los_Angeles', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit',
|
|
158
|
+
}).format(new Date(ms));
|
|
159
|
+
return `${s.replace(/ /g, ' ')} Pacific`;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** A time on this computer's clock: "Sat, Oct 3, 3:12 PM". */
|
|
163
|
+
export function whenText(ms) {
|
|
164
|
+
return new Date(ms).toLocaleString(undefined, { weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' })
|
|
165
|
+
.replace(/ /g, ' ');
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/** "in 3 h 12 min", "in 40 min", "in under a minute", or "now". */
|
|
169
|
+
export function untilText(ms, now = Date.now()) {
|
|
170
|
+
const left = ms - now;
|
|
171
|
+
if (!(left > 0)) return 'now';
|
|
172
|
+
if (left < 60 * 1000) return 'in under a minute';
|
|
173
|
+
const m = Math.round(left / 60000);
|
|
174
|
+
if (m < 60) return `in ${m} min`;
|
|
175
|
+
const h = Math.floor(m / 60);
|
|
176
|
+
if (h >= 48) return `in ${Math.round(h / 24)} days`;
|
|
177
|
+
return `in ${h} h${m % 60 ? ` ${m % 60} min` : ''}`;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/** "3 h ago", "40 min ago", "just now". */
|
|
181
|
+
export function agoText(ms, now = Date.now()) {
|
|
182
|
+
if (!Number.isFinite(ms)) return 'recently';
|
|
183
|
+
const m = Math.round((now - ms) / 60000);
|
|
184
|
+
if (m < 1) return 'just now';
|
|
185
|
+
if (m < 60) return `${m} min ago`;
|
|
186
|
+
const h = Math.round(m / 60);
|
|
187
|
+
if (h < 48) return `${h} h ago`;
|
|
188
|
+
return `${Math.round(h / 24)} days ago`;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** "9 AM to 6 PM" from AUTO.hours. */
|
|
192
|
+
export function hoursText([from, to] = AUTO.hours) {
|
|
193
|
+
const h = (n) => `${n % 12 || 12} ${n < 12 ? 'AM' : 'PM'}`;
|
|
194
|
+
return `${h(from)} to ${h(to)}`;
|
|
195
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "six-degrees",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "six-degrees",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.7.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"os": [
|
|
12
12
|
"darwin",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "six-degrees",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Map your professional network as a galaxy — leverage tiers, bridges into new circles, and the shortest path to anyone. Runs locally on your own data.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Blake Burford",
|
|
@@ -227,6 +227,19 @@ MAX_SCROLL_ROUNDS = 400 # ~10 people load per round
|
|
|
227
227
|
SCROLL_PAUSE_SECONDS = 0.9
|
|
228
228
|
SCROLL_STALL_LIMIT = 10 # rounds with no new names before stopping
|
|
229
229
|
LOGIN_POLL_SECONDS = 2
|
|
230
|
+
# The Scan page's "Signed in" (lib/scanner-setup.js SIGNED_IN_FILE, which a
|
|
231
|
+
# test keeps the same): true once the session is confirmed below, false while
|
|
232
|
+
# a sign-in is awaited. It went by Chrome's cookie file, which exists as soon
|
|
233
|
+
# as this window first opens, so closing it without signing in ticked the step.
|
|
234
|
+
SIGNED_IN_FILE = "signed-in.json"
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def _note_signed_in(ok):
|
|
238
|
+
"""Write down for the Scan page whether LinkedIn's session is confirmed. Only a note: never stops a run."""
|
|
239
|
+
try:
|
|
240
|
+
_write_json_atomic(_home() / SIGNED_IN_FILE, {"signedIn": bool(ok), "at": time.time()})
|
|
241
|
+
except Exception as exc:
|
|
242
|
+
print(f" (could not note the sign-in for the Scan page: {exc})")
|
|
230
243
|
|
|
231
244
|
|
|
232
245
|
def _has_session_cookie(target):
|
|
@@ -345,8 +358,10 @@ def ensure_logged_in(page, timeout_s=LOGIN_WAIT_SECONDS, log_fn=None, stop_on_ch
|
|
|
345
358
|
raise LinkedInPushedBack(0, reason)
|
|
346
359
|
|
|
347
360
|
if _has_session_cookie(context) and not _looks_logged_out(page) and not wall:
|
|
361
|
+
_note_signed_in(True)
|
|
348
362
|
return True
|
|
349
363
|
|
|
364
|
+
_note_signed_in(False)
|
|
350
365
|
say = log_fn or (lambda m: None)
|
|
351
366
|
if had_session and wall == "checkpoint":
|
|
352
367
|
print()
|
|
@@ -356,7 +371,10 @@ def ensure_logged_in(page, timeout_s=LOGIN_WAIT_SECONDS, log_fn=None, stop_on_ch
|
|
|
356
371
|
say("Waiting for you to finish LinkedIn's security check...")
|
|
357
372
|
else:
|
|
358
373
|
_print_sign_in_banner(say)
|
|
359
|
-
|
|
374
|
+
ok = _wait_for_sign_in(page, context, timeout_s, say)
|
|
375
|
+
if ok:
|
|
376
|
+
_note_signed_in(True)
|
|
377
|
+
return ok
|
|
360
378
|
|
|
361
379
|
|
|
362
380
|
def _print_sign_in_banner(say):
|
|
@@ -1411,6 +1429,8 @@ def note_unclear(profile_url, clear=False):
|
|
|
1411
1429
|
# scan-limits.json {"daily": 50, "monthly": 250, "profiles": 50}
|
|
1412
1430
|
# 0 = no cap on searches; profile views always have one
|
|
1413
1431
|
# linkedin-cooldown.json {"until": epoch s, "reason": "...", "set_at": ...}
|
|
1432
|
+
# lifted on the Scan page: "until" is when, plus
|
|
1433
|
+
# "lifted_at" and "was_until"; read here as ended
|
|
1414
1434
|
# ---------------------------------------------------------------------------
|
|
1415
1435
|
DEFAULT_DAILY_SEARCHES = 50
|
|
1416
1436
|
DEFAULT_MONTHLY_SEARCHES = 250
|
|
@@ -3376,7 +3396,11 @@ def scrape_bridge(bridge_name, headless=False, max_pages=LINKEDIN_MAX_PAGES, dee
|
|
|
3376
3396
|
raise SearchLimitReached(len(read))
|
|
3377
3397
|
if reach.get("pushed_back"):
|
|
3378
3398
|
why = reach.get("pushback_reason") or "a page that would not open"
|
|
3379
|
-
|
|
3399
|
+
# Auto scan rests two days after any check from LinkedIn, as the Scan
|
|
3400
|
+
# page promises and AUTO_PUSHBACK_REST says; a pushback partway through
|
|
3401
|
+
# a list used to rest it one day, like a scan you start yourself.
|
|
3402
|
+
set_cooldown(seconds=AUTO_PUSHBACK_REST if EXPERIMENT["on"] else DAY_SECONDS,
|
|
3403
|
+
reason=f"LinkedIn pushed back: {why}")
|
|
3380
3404
|
raise LinkedInPushedBack(len(read), why)
|
|
3381
3405
|
if reach.get("budget"):
|
|
3382
3406
|
raise BudgetReached(len(read), reach["budget"])
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11678,e=>{e.v(t=>Promise.all(["static/chunks/34g73qhayuevu.js"].map(t=>e.l(t))).then(()=>t(39160)))},28298,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return l}});let n=e.r(71645);function l(e,t,r){let[l,u]=(0,n.useState)(()=>({tree:e,cacheNode:t,stateKey:r,next:null}));if(l.tree===e)return l;let a={tree:e,cacheNode:t,stateKey:r,next:null},o=1,s=l,d=a;for(;null!==s&&o<1;){if(s.stateKey===r){d.next=s.next;break}{o++;let e={tree:s.tree,cacheNode:s.cacheNode,stateKey:s.stateKey,next:null};d.next=e,d=e}s=s.next}return u(a),a}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return d}});let n=e.r(43476),l=e.r(8372),u=e.r(71645),a=e.r(33906),o=e.r(61994),s=e.r(15783);function d({Component:e,serverProvidedParams:t}){let r,i;if(null!==t)r=t.searchParams,i=t.params;else{let e=(0,u.use)(l.LayoutRouterContext);i=null!==e?e.parentParams:{},r=(0,a.urlSearchParamsToParsedUrlQuery)((0,u.use)(o.SearchParamsContext))}let c=(0,s.createClientSearchParams)(r),f=(0,s.createClientParams)(i);return(0,n.jsx)(e,{params:f,searchParams:c})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92825,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return o}});let n=e.r(43476),l=e.r(8372),u=e.r(71645),a=e.r(15783);function o({Component:e,slots:t,serverProvidedParams:r}){let s;if(null!==r)s=r.params;else{let e=(0,u.use)(l.LayoutRouterContext);s=null!==e?e.parentParams:{}}let d=(0,a.createClientParams)(s);return(0,n.jsx)(e,{...t,params:d})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68017,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return i}});let n=e.r(90809),l=e.r(43476),u=n._(e.r(71645)),a=e.r(90373),o=e.r(54394),s=e.r(8372);class d extends u.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,o.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,o.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:u}=this.state,a={[o.HTTPAccessErrorStatus.NOT_FOUND]:e,[o.HTTPAccessErrorStatus.FORBIDDEN]:t,[o.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(u){let s=u===o.HTTPAccessErrorStatus.NOT_FOUND&&e,d=u===o.HTTPAccessErrorStatus.FORBIDDEN&&t,i=u===o.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return s||d||i?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("meta",{name:"robots",content:"noindex"}),!1,a[u]]}):n}return n}}function i({notFound:e,forbidden:t,unauthorized:r,children:n}){let o=(0,a.useUntrackedPathname)(),c=(0,u.useContext)(s.MissingSlotContext);return e||t||r?(0,l.jsx)(d,{pathname:o,notFound:e,forbidden:t,unauthorized:r,missingSlots:c,children:n}):(0,l.jsx)(l.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22976,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return u},PlaceValidationBoundaryBelowThisLevel:function(){return a},RenderValidationBoundaryAtThisLevel:function(){return o},SlotMarker:function(){return s}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=null,a=null,o=null,s=null;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return u.InstantValidationBoundaryContext},PlaceValidationBoundaryBelowThisLevel:function(){return u.PlaceValidationBoundaryBelowThisLevel},RenderValidationBoundaryAtThisLevel:function(){return u.RenderValidationBoundaryAtThisLevel},SlotMarker:function(){return u.SlotMarker}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(22976);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={LoadingBoundaryProvider:function(){return C},default:function(){return T}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(55682),a=e.r(90809),o=e.r(43476),s=a._(e.r(71645)),d=u._(e.r(74080)),i=e.r(8372),c=e.r(1244),f=e.r(72383),p=e.r(91915),y=e.r(58442),m=e.r(68017);e.r(77694);let b=e.r(70725),h=e.r(28298);e.r(74180);let _=e.r(61994),P=e.r(33906),v=e.r(95871);d.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function g(e,t,r){let n=e.getClientRects();if(0===n.length)return 0;let l=1/0;for(let e=0;e<n.length;e++){let t=n[e];t.top<l&&(l=t.top)}return l>=r()&&l<=t?1:2}s.default.Component;let j=function(e){let t=s.default.useRef(null);return(0,s.useLayoutEffect)(()=>{let{focusAndScrollRef:r,cacheNode:n}=e,l=r.forceScroll?r.scrollRef:n.scrollRef;if(null===l||!l.current)return;let u=null,a=r.hashFragment;if(a){var o;if(null===(u="top"===(o=a)?document.body:document.getElementById(o)??document.getElementsByName(o)[0]??null)){l.current=!1,r.onlyHashChange=!1,r.hashFragment=null;return}}else u=t.current;if(null===u)return;let s=!1;(0,p.disableSmoothScrollDuringRouteTransition)(()=>{let e=document.documentElement,t=null,r=null,n=null,o=()=>{var r,l;let u,a;return null===n&&(r=e,l=t,n=!Number.isFinite(a=Number.parseFloat(u=getComputedStyle(r).scrollPaddingTop))||a<0?0:u.endsWith("px")?a:u.endsWith("%")?a/100*l:0),n};(a||(t=e.clientHeight,0!==(r=g(u,t,o))))&&((s=!0,l.current=!1,a)?u.scrollIntoView():1!==r&&(e.scrollTop=0,2===g(u,t,o)&&u.scrollIntoView()))},{dontForceLayout:!0,onlyHashChange:r.onlyHashChange}),s&&(r.onlyHashChange=!1,r.hashFragment=null)},void 0),(0,o.jsx)(s.Fragment,{ref:t,children:e.children})};function O({children:e,cacheNode:t}){let r=(0,s.useContext)(i.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,o.jsx)(j,{focusAndScrollRef:r.focusAndScrollRef,cacheNode:t,children:e})}function x({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:l,url:u,isActive:a}){let d,f=(0,s.useContext)(i.GlobalLayoutRouterContext);if((0,s.useContext)(_.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,s.use)(c.unresolvedThenable),y=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,m=(0,s.useDeferredValue)(p.rsc,y);if((0,v.isDeferredRsc)(m)){let e=(0,s.use)(m);null===e&&(0,s.use)(c.unresolvedThenable),d=e}else null===m&&(0,s.use)(c.unresolvedThenable),d=m;let b=d;return(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:l,parentLoadingData:null,debugNameContext:r,url:u,isActive:a},children:b})}function C({loading:e,children:t}){let r=(0,s.use)(i.LayoutRouterContext);return null===r?t:(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{parentTree:r.parentTree,parentCacheNode:r.parentCacheNode,parentSegmentPath:r.parentSegmentPath,parentParams:r.parentParams,parentLoadingData:e,debugNameContext:r.debugNameContext,url:r.url,isActive:r.isActive},children:t})}function R({name:e,loading:t,children:r}){if(null!==t){let n=t[0],l=t[1],u=t[2];return(0,o.jsx)(s.Suspense,{name:e,fallback:(0,o.jsxs)(o.Fragment,{children:[l,u,n]}),children:r})}return(0,o.jsx)(o.Fragment,{children:r})}function T({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:l,templateScripts:u,template:a,notFound:d,forbidden:p,unauthorized:_,segmentViewBoundaries:v}){let g=(0,s.useContext)(i.LayoutRouterContext);if(!g)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:j,parentCacheNode:C,parentSegmentPath:S,parentParams:M,parentLoadingData:E,url:N,isActive:F,debugNameContext:A}=g,B=j[0],D=null===S?[e]:S.concat([B,e]),L=j[1][e],H=C.slots;(void 0===L||null===H)&&(0,s.use)(c.unresolvedThenable);let k=L[0],w=H[e]??null,U=(0,b.createRouterCacheKey)(k,!0),V=(0,h.useRouterBFCache)(L,w,U),I=[];do{let e=V.tree,s=V.cacheNode,c=V.stateKey,b=e[0],h=M;if(Array.isArray(b)){let e=b[0],t=b[1],r=b[2],n=(0,P.getParamValueFromCacheKey)(t,r);null!==n&&(h={...M,[e]:n})}let v=function(e){if("/"===e)return"/";if("string"==typeof e)if("(__SLOT__)"===e)return;else return e+"/";return e[1]+"/"}(b),g=v??A,j=void 0===v?void 0:A,C=(0,o.jsxs)(O,{cacheNode:s,children:[(0,o.jsx)(f.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,o.jsx)(R,{name:j,loading:E,children:(0,o.jsx)(m.HTTPAccessFallbackBoundary,{notFound:d,forbidden:p,unauthorized:_,children:(0,o.jsxs)(y.RedirectBoundary,{children:[(0,o.jsx)(x,{url:N,tree:e,params:h,cacheNode:s,segmentPath:D,debugNameContext:g,isActive:F&&c===U}),null]})})})}),null]}),T=(0,o.jsxs)(i.TemplateContext.Provider,{value:C,children:[l,u,a]},c);I.push(T),V=V.next}while(null!==V)return I}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let n=e.r(90809),l=e.r(43476),u=n._(e.r(71645)),a=e.r(8372);function o(){let e=(0,u.useContext)(a.TemplateContext);return(0,l.jsx)(l.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97689,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createClientParams:function(){return u.createRenderParamsFromClient},createClientSearchParams:function(){return a.createRenderSearchParamsFromClient}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(97689),a=e.r(66996);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},27201,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return l}});let n=e.r(43476),l=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let l=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=l}e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}})}]);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,10706,e=>{"use strict";var t=e.i(43476),i=e.i(71645),r=e.i(22016);function n(e={}){let t=(0,i.useRef)(null),[r,o]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{if(!t.current)return;let i=new IntersectionObserver(([e])=>{e.isIntersecting&&o(!0)},{threshold:.15,...e});return i.observe(t.current),()=>i.disconnect()},[]),[t,r]}let o={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},a="linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)";function l({end:e,duration:r=2e3,active:n}){let[o,a]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!n)return;let t=0,i=e/(r/16),o=setInterval(()=>{(t+=i)>=e?(a(e),clearInterval(o)):a(Math.floor(t))},16);return()=>clearInterval(o)},[n,e]),(0,t.jsx)("span",{children:o.toLocaleString()})}function s(){let e=(0,i.useRef)(null),[n,l]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t;setTimeout(()=>l(!0),300);let i=e.current;if(!i)return;let r=i.getContext("2d"),n=i.width=window.innerWidth,a=i.height=window.innerHeight,s=Array.from({length:120},()=>({x:Math.random()*n,y:Math.random()*a,vx:(Math.random()-.5)*.4,vy:(Math.random()-.5)*.4,r:2.5*Math.random()+1,color:[o.S,o.A,o.B,"#fff",o.S,o.A,o.B][Math.floor(7*Math.random())]}));!function e(){r.clearRect(0,0,n,a);for(let e=0;e<s.length;e++)for(let t=e+1;t<s.length;t++){let i=s[e].x-s[t].x,n=s[e].y-s[t].y,o=Math.sqrt(i*i+n*n);o<150&&(r.beginPath(),r.moveTo(s[e].x,s[e].y),r.lineTo(s[t].x,s[t].y),r.strokeStyle=`rgba(52,152,219,${.12*(1-o/150)})`,r.lineWidth=.5,r.stroke())}s.forEach(e=>{e.x+=e.vx,e.y+=e.vy,(e.x<0||e.x>n)&&(e.vx*=-1),(e.y<0||e.y>a)&&(e.vy*=-1),r.beginPath(),r.arc(e.x,e.y,e.r,0,2*Math.PI),r.fillStyle=e.color,r.globalAlpha=.6,r.fill(),r.globalAlpha=1}),t=requestAnimationFrame(e)}();let c=()=>{n=i.width=window.innerWidth,a=i.height=window.innerHeight};return window.addEventListener("resize",c),()=>{cancelAnimationFrame(t),window.removeEventListener("resize",c)}},[]),(0,t.jsxs)("section",{style:{position:"relative",height:"100vh",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:[(0,t.jsx)("canvas",{ref:e,style:{position:"absolute",inset:0,zIndex:0}}),(0,t.jsx)("div",{style:{position:"absolute",inset:0,background:"radial-gradient(circle at 50% 50%, transparent 30%, #0a0a1a 75%)",zIndex:1}}),(0,t.jsx)("div",{style:{position:"absolute",width:500,height:500,borderRadius:"50%",background:"radial-gradient(circle, rgba(52,152,219,0.08) 0%, transparent 70%)",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:1}}),(0,t.jsxs)("div",{style:{position:"relative",zIndex:2,textAlign:"center",maxWidth:900,padding:"0 24px"},children:[(0,t.jsxs)("div",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:"6px 16px",borderRadius:20,border:"1px solid rgba(52,152,219,0.3)",background:"rgba(52,152,219,0.08)",fontSize:13,color:"#3498DB",fontWeight:600,marginBottom:32,opacity:+!!n,transform:n?"translateY(0)":"translateY(20px)",transition:"all 0.8s cubic-bezier(0.16, 1, 0.3, 1)"},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:"#3498DB",animation:"pulse-dot 2s infinite"}}),"Research Project by Blake Burford"]}),(0,t.jsxs)("h1",{style:{fontSize:"clamp(48px, 8vw, 96px)",fontWeight:800,lineHeight:1.05,margin:0,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",opacity:+!!n,transform:n?"translateY(0) scale(1)":"translateY(40px) scale(0.95)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.15s",letterSpacing:"-0.03em"},children:["Six Degrees of",(0,t.jsx)("br",{}),"Separation"]}),(0,t.jsx)("p",{style:{fontSize:"clamp(16px, 2.5vw, 22px)",color:"rgba(255,255,255,0.55)",maxWidth:600,margin:"24px auto 0",lineHeight:1.6,fontWeight:400,opacity:+!!n,transform:n?"translateY(0)":"translateY(30px)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.35s"},children:"Visualizing the hidden architecture of professional networks. Every connection is a degree. Every bridge is a path to power."}),(0,t.jsxs)("div",{style:{display:"flex",gap:16,justifyContent:"center",marginTop:48,flexWrap:"wrap",opacity:+!!n,transform:n?"translateY(0)":"translateY(30px)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.55s"},children:[(0,t.jsx)(r.default,{href:"/",style:{padding:"14px 32px",borderRadius:12,border:"none",fontSize:16,fontWeight:700,background:a,color:"#000",cursor:"pointer",textDecoration:"none",boxShadow:"0 4px 24px rgba(255,215,0,0.3)"},children:"Open App"}),(0,t.jsx)("button",{onClick:()=>document.getElementById("features")?.scrollIntoView({behavior:"smooth"}),style:{padding:"14px 32px",borderRadius:12,border:"1px solid rgba(255,255,255,0.15)",fontSize:16,fontWeight:600,background:"rgba(255,255,255,0.05)",color:"#fff",cursor:"pointer",backdropFilter:"blur(12px)"},children:"See How It Works"})]}),(0,t.jsxs)("div",{style:{position:"absolute",bottom:-120,left:"50%",transform:"translateX(-50%)",display:"flex",flexDirection:"column",alignItems:"center",gap:8,opacity:.4*!!n,transition:"opacity 1.5s ease 1.2s"},children:[(0,t.jsx)("span",{style:{fontSize:11,color:"#555",letterSpacing:2,textTransform:"uppercase"},children:"Scroll"}),(0,t.jsx)("div",{style:{width:1,height:40,background:"linear-gradient(to bottom, rgba(255,255,255,0.3), transparent)",animation:"scroll-line 2s infinite"}})]})]})]})}function c(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"80px 24px",borderTop:"1px solid rgba(255,255,255,0.05)",borderBottom:"1px solid rgba(255,255,255,0.05)"},children:[(0,t.jsx)("div",{style:{maxWidth:1e3,margin:"0 auto",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:32},children:[{label:"Connections Mapped",value:873,color:"#3498DB"},{label:"Bridges Discovered",value:14,color:"#FFD700"},{label:"People Scored",value:748,color:"#9B59B6"},{label:"Companies",value:19,color:"#00ff88"}].map((e,r)=>(0,t.jsxs)("div",{style:{textAlign:"center",opacity:+!!i,transform:i?"translateY(0)":"translateY(30px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*r}s`},children:[(0,t.jsx)("div",{style:{fontSize:48,fontWeight:800,color:e.color,lineHeight:1},children:(0,t.jsx)(l,{end:e.value,active:i})}),(0,t.jsx)("div",{style:{fontSize:13,color:"#666",marginTop:8,fontWeight:500,letterSpacing:.5},children:e.label})]},r))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",margin:"32px auto 0",maxWidth:520},children:"Counted from the sample network that comes with the app. Every person in it is invented."})]})}function d(){let[e,i]=n(),r=[{tier:"S",color:o.S,r:55,count:10,label:"S-Tier",speed:60},{tier:"A",color:o.A,r:95,count:18,label:"A-Tier",speed:90},{tier:"B",color:o.B,r:135,count:30,label:"B-Tier",speed:120},{tier:"C",color:o.C,r:175,count:44,label:"C-Tier",speed:150},{tier:"D",color:o.D,r:210,count:56,label:"D-Tier",speed:180}];return(0,t.jsx)("section",{id:"features",ref:e,style:{padding:"100px 24px",position:"relative"},children:(0,t.jsxs)("div",{className:"galaxy-grid",style:{maxWidth:1100,margin:"0 auto",display:"grid",gridTemplateColumns:"1fr 1fr",gap:48,alignItems:"center"},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateX(0)":"translateX(-50px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:o.S,letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Network Circle"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15,margin:0,color:"#fff"},children:["Your Network,",(0,t.jsx)("br",{}),(0,t.jsx)("span",{style:{background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Visualized in Orbit"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.5)",lineHeight:1.7,marginTop:20,maxWidth:440},children:"Every connection orbits you by power tier. S-Tier innermost, D-Tier outermost. A living galaxy of influence. Zoom, filter, and explore your entire professional universe."}),(0,t.jsx)("div",{style:{display:"flex",gap:12,marginTop:32,flexWrap:"wrap"},children:Object.entries(o).map(([e,i])=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,background:`${i}15`,border:`1px solid ${i}30`},children:[(0,t.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",background:i}}),(0,t.jsxs)("span",{style:{fontSize:12,fontWeight:600,color:i},children:[e,"-Tier"]})]},e))})]}),(0,t.jsxs)("div",{className:"galaxy-rings",style:{position:"relative",width:440,height:440,margin:"0 auto",opacity:+!!i,transform:i?"scale(1)":"scale(0.8)",transition:"all 1.2s cubic-bezier(0.16,1,0.3,1) 0.2s"},children:[(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",width:"60%",height:"60%",borderRadius:"50%",background:"radial-gradient(circle, rgba(52,152,219,0.12) 0%, transparent 70%)",transform:"translate(-50%,-50%)"}}),(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",width:40,height:40,borderRadius:"50%",background:"#fff",boxShadow:"0 0 30px rgba(255,255,255,0.4), 0 0 60px rgba(52,152,219,0.2)",zIndex:10,display:"flex",alignItems:"center",justifyContent:"center",fontSize:9,fontWeight:800,color:"#0a0a1a"},children:"YOU"}),r.map((e,r)=>(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",width:2*e.r,height:2*e.r,borderRadius:"50%",border:`1px solid ${e.color}15`,transform:"translate(-50%,-50%)",animation:i?`spin-ring ${e.speed}s linear infinite`:"none"},children:Array.from({length:e.count}).map((i,n)=>{let o=n/e.count*Math.PI*2,a=Math.round((Math.cos(o)*e.r+e.r)*100)/100,l=Math.round((Math.sin(o)*e.r+e.r)*100)/100;return(0,t.jsx)("div",{style:{position:"absolute",left:a-3,top:l-3,width:6,height:6,borderRadius:"50%",background:e.color,opacity:Number((.6+.4*y(r,n,1)).toFixed(3)),animation:`breathe ${(2+2*y(r,n,2)).toFixed(2)}s ease-in-out infinite ${(2*y(r,n,3)).toFixed(2)}s`}},n)})},r))]})]})})}function p(){let[e,i]=n(),r=[{d:1,label:"Your Connections",desc:"Direct network, scored & tiered",color:"#3498DB",count:150},{d:2,label:"Bridge Connections",desc:"Friends of your bridges",color:"#9B59B6",count:723},{d:3,label:"Extended Reach",desc:"Bridged from promoted D2s",color:"#FFD700",count:null},{d:4,label:"Industry Layer",desc:"Company & sector intelligence",color:"#FF6B35",count:null},{d:5,label:"Market Layer",desc:"Cross-industry connections",color:"#00ff88",count:null},{d:6,label:"Global Reach",desc:"Anyone in the world",color:"#ff5050",count:null}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",position:"relative"},children:(0,t.jsxs)("div",{style:{maxWidth:1e3,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:80,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#FF6B35",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Bridge Chains"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15,margin:0},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Six Degrees."})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #FF6B35, #FFD700)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Infinite Reach."})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",marginTop:16,maxWidth:560,margin:"16px auto 0"},children:"Every person on Earth is at most 6 connections away. Our chain system maps the exact path from you to anyone."})]}),(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:0,flexWrap:"wrap"},children:r.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*n+.3}s`},children:[(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",width:120},children:[(0,t.jsxs)("div",{style:{width:64,height:64,borderRadius:"50%",background:`${e.color}20`,border:`2px solid ${e.color}`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:22,fontWeight:800,color:e.color,boxShadow:`0 0 24px ${e.color}30`,animation:i?`breathe 3s ease-in-out infinite ${.5*n}s`:"none",position:"relative"},children:["D",e.d,e.count&&(0,t.jsx)("span",{style:{position:"absolute",bottom:-8,fontSize:9,fontWeight:700,background:e.color,color:"#000",padding:"2px 6px",borderRadius:10},children:e.count.toLocaleString()})]}),(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:e.color,marginTop:16},children:e.label}),(0,t.jsx)("div",{style:{fontSize:10,color:"#555",marginTop:4,textAlign:"center"},children:e.desc})]}),n<5&&(0,t.jsx)("div",{style:{width:40,height:2,position:"relative",background:`linear-gradient(to right, ${e.color}60, ${r[n+1].color}60)`,opacity:+!!i,transition:`opacity 0.6s ease ${.1*n+.6}s`},children:(0,t.jsx)("div",{style:{position:"absolute",top:-2,width:6,height:6,borderRadius:"50%",background:e.color,animation:i?`travel-dot 2s ease-in-out infinite ${.3*n}s`:"none"}})})]},n))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",marginTop:40},children:"The counts are the sample network’s, whose people are all invented."})]})})}function g(){let[e,i]=n(),r=[{tier:"S",label:"Supreme",score:"7.5+",color:o.S,glow:"rgba(255,215,0,0.3)",people:"C-Suite, VPs, Founders",icon:"👑"},{tier:"A",label:"Ace",score:"5.5+",color:o.A,glow:"rgba(155,89,182,0.3)",people:"Directors, Senior Leaders",icon:"💎"},{tier:"B",label:"Builder",score:"4.0+",color:o.B,glow:"rgba(52,152,219,0.3)",people:"Managers, Senior ICs",icon:"🔷"},{tier:"C",label:"Connector",score:"2.5+",color:o.C,glow:"rgba(149,165,166,0.2)",people:"Associates, Specialists",icon:"🔸"},{tier:"D",label:"Developing",score:"<2.5",color:o.D,glow:"rgba(189,195,199,0.15)",people:"Entry Level, Students",icon:"🌱"}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",background:"linear-gradient(180deg, transparent, rgba(52,152,219,0.03), transparent)"},children:(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:64,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:o.A,letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Power Score"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Every Connection,"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #FFD700, #9B59B6)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Ranked by Power"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",marginTop:16,maxWidth:500,margin:"16px auto 0"},children:"Seniority, company prestige, and circle proximity combine into one score."})]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16},children:r.map((e,r)=>(0,t.jsxs)("div",{style:{padding:24,borderRadius:16,position:"relative",overflow:"hidden",background:"rgba(255,255,255,0.03)",border:`1px solid ${e.color}25`,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.08*r+.2}s`},children:[(0,t.jsx)("div",{style:{position:"absolute",top:-20,right:-20,width:100,height:100,borderRadius:"50%",background:`radial-gradient(circle, ${e.glow}, transparent)`,filter:"blur(20px)"}}),(0,t.jsx)("div",{style:{fontSize:28,marginBottom:8},children:e.icon}),(0,t.jsx)("div",{style:{fontSize:32,fontWeight:900,color:e.color,lineHeight:1,textShadow:`0 0 20px ${e.glow}`},children:e.tier}),(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff",marginTop:4},children:e.label}),(0,t.jsxs)("div",{style:{fontSize:11,color:"#555",marginTop:2},children:["Score: ",e.score]}),(0,t.jsx)("div",{style:{fontSize:10,color:"rgba(255,255,255,0.35)",marginTop:12,padding:"6px 10px",borderRadius:8,background:"rgba(255,255,255,0.04)"},children:e.people})]},r))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",marginTop:24},children:"These are the fixed scale’s lines. By default tiers are graded on your own network’s curve: your top 3% are S, the next 12% A."})]})})}function x(){let[e,i]=n(),r=[{title:"Paths",subtitle:"Company Intelligence",desc:"Scan any company on LinkedIn and see every person mapped, scored, and organized by seniority.",color:"#00ff88",icon:"🏢",stat:"19 companies in the sample"},{title:"Outlink",subtitle:"Strategic Action Queue",desc:"Your curated list of high-value D2 connections to request. Grouped by bridge, filtered by tier, with batch-open for efficient networking.",color:"#FF6B35",icon:"🚀",stat:"474 recommendations in the sample"},{title:"XP System",subtitle:"Gamified Networking",desc:"Earn XP for every outreach sent and connection accepted. Higher tier connections = more points. Level up your networking game.",color:"#FFD700",icon:"⚡",stat:"S-Tier = 25 XP"},{title:"Bridge Clusters",subtitle:"Deep Network Mining",desc:"Select any D1 connection as a bridge. Automatically discover and score all their connections: your D2 layer.",color:"#9B59B6",icon:"🔗",stat:"14 bridges in the sample"}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:64,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#00ff88",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Full Arsenal"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Tools That"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #00ff88, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Make Moves"})]})]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:20},children:r.map((e,r)=>(0,t.jsxs)("div",{style:{padding:28,borderRadius:20,position:"relative",overflow:"hidden",background:"rgba(255,255,255,0.02)",border:"1px solid rgba(255,255,255,0.06)",backdropFilter:"blur(12px)",opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*r+.2}s`},children:[(0,t.jsx)("div",{style:{position:"absolute",top:-30,left:-30,width:120,height:120,borderRadius:"50%",background:`radial-gradient(circle, ${e.color}10, transparent)`,filter:"blur(20px)"}}),(0,t.jsx)("div",{style:{fontSize:32,marginBottom:12},children:e.icon}),(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:e.color,letterSpacing:1,textTransform:"uppercase"},children:e.subtitle}),(0,t.jsx)("h3",{style:{fontSize:22,fontWeight:800,color:"#fff",margin:"6px 0 10px"},children:e.title}),(0,t.jsx)("p",{style:{fontSize:13,color:"rgba(255,255,255,0.4)",lineHeight:1.6,margin:0},children:e.desc}),(0,t.jsx)("div",{style:{marginTop:16,padding:"6px 12px",borderRadius:8,background:`${e.color}10`,display:"inline-block",fontSize:11,fontWeight:700,color:e.color},children:e.stat})]},r))})]})})}function h(){let[e,i]=n();return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",background:"linear-gradient(180deg, transparent, rgba(155,89,182,0.03), transparent)"},children:(0,t.jsxs)("div",{style:{maxWidth:800,margin:"0 auto",textAlign:"center"},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#555",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"The Algorithm"}),(0,t.jsx)("h2",{style:{fontSize:44,fontWeight:800},children:(0,t.jsx)("span",{style:{background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Power Score Formula"})})]}),(0,t.jsxs)("div",{style:{marginTop:48,padding:40,borderRadius:20,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.08)",backdropFilter:"blur(24px)",opacity:+!!i,transform:i?"translateY(0) scale(1)":"translateY(30px) scale(0.95)",transition:"all 1s cubic-bezier(0.16,1,0.3,1) 0.2s"},children:[(0,t.jsx)("div",{style:{fontFamily:'"Geist Mono", monospace',fontSize:20,fontWeight:700,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",marginBottom:32},children:"P = T × (0.45 + 0.055 × C) + R + B"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:24},children:[{sym:"T",label:"Title",desc:"C-suite 10, VP 9, Director 7.5, Manager 6.5",note:"Multiplied by the company",color:o.S},{sym:"C",label:"Company",desc:"Well-known 7–10, else estimated from your network",note:"Weight 0.5 to 1.0",color:o.A},{sym:"R + B",label:"Reach & bridge",desc:"Investor, YC, an audience in the millions; a strong circle",note:"Up to +1.5 and +2",color:o.B}].map((e,r)=>(0,t.jsxs)("div",{style:{padding:16,borderRadius:12,background:`${e.color}08`,opacity:+!!i,transform:i?"translateY(0)":"translateY(20px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.3+.1*r}s`},children:[(0,t.jsx)("div",{style:{fontSize:28,fontWeight:900,color:e.color},children:e.sym}),(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff",marginTop:4},children:e.label}),(0,t.jsx)("div",{style:{fontSize:10,color:"#555",marginTop:4},children:e.desc}),(0,t.jsx)("div",{style:{fontSize:10,color:e.color,fontWeight:700,marginTop:8},children:e.note})]},r))})]}),(0,t.jsx)("div",{style:{marginTop:32,display:"flex",justifyContent:"center",gap:8,flexWrap:"wrap",opacity:+!!i,transition:"opacity 1s ease 0.6s"},children:[{t:"S",min:7.5,color:o.S},{t:"A",min:5.5,color:o.A},{t:"B",min:4,color:o.B},{t:"C",min:2.5,color:o.C},{t:"D",min:0,color:o.D}].map((e,i)=>(0,t.jsxs)("div",{style:{padding:"8px 16px",borderRadius:10,background:`${e.color}12`,border:`1px solid ${e.color}30`,fontSize:12,fontWeight:700,color:e.color},children:[e.t,"-Tier: ",e.min,"+"]},i))})]})})}function f(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"100px 24px",position:"relative",overflow:"hidden"},children:[(0,t.jsx)("div",{style:{position:"absolute",inset:0,opacity:.15*!!i,transition:"opacity 2s ease"},children:Array.from({length:8}).map((e,i)=>(0,t.jsx)("div",{style:{position:"absolute",top:`${12+12*i}%`,left:0,right:0,height:1,background:`linear-gradient(to right, transparent, ${[o.S,o.A,o.B,"#fff"][i%4]}40, transparent)`,animation:`wave ${4+i}s ease-in-out infinite ${.3*i}s`}},i))}),(0,t.jsx)("div",{style:{maxWidth:700,margin:"0 auto",textAlign:"center",position:"relative",zIndex:2},children:(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#ff5050",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"The Theory"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Strings Connect"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #ff5050, #FFD700)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Everything"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",lineHeight:1.8,marginTop:24,maxWidth:560,margin:"24px auto 0"},children:"In string theory, fundamental particles are vibrating strings connected across dimensions. In social networks, people are nodes connected by invisible strings of trust, proximity, and shared experience."}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",lineHeight:1.8,marginTop:16,maxWidth:560,margin:"16px auto 0"},children:"Six degrees of separation isn’t just a theory. It’s the architecture of human connection. Every string vibrates with potential. Every bridge shortens the distance."}),(0,t.jsxs)("div",{style:{marginTop:48,padding:"24px 32px",borderRadius:16,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.06)",fontStyle:"italic",color:"rgba(255,255,255,0.3)",fontSize:15,opacity:+!!i,transition:"opacity 1.5s ease 0.5s"},children:["“Everyone is connected to everyone else by six degrees or fewer. The question isn’t ",(0,t.jsx)("em",{children:"if"}),", it’s ",(0,t.jsx)("em",{children:"through whom"}),".”"]})]})})]})}function u(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"100px 24px",textAlign:"center",position:"relative",overflow:"hidden"},children:[(0,t.jsx)("div",{style:{position:"absolute",inset:0,background:"radial-gradient(circle at 50% 80%, rgba(52,152,219,0.06) 0%, transparent 60%)"}}),(0,t.jsxs)("div",{style:{position:"relative",zIndex:2},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0) scale(1)":"translateY(40px) scale(0.95)",transition:"all 1.2s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("h2",{style:{fontSize:"clamp(36px, 6vw, 64px)",fontWeight:800,lineHeight:1.1,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Map Your Universe"}),(0,t.jsx)("p",{style:{fontSize:18,color:"rgba(255,255,255,0.4)",marginTop:16,maxWidth:480,margin:"16px auto 0"},children:"Your network is your most valuable asset. Start seeing it for what it really is."}),(0,t.jsx)(r.default,{href:"/",style:{display:"inline-block",marginTop:40,padding:"16px 48px",borderRadius:14,fontSize:18,fontWeight:800,background:a,color:"#000",textDecoration:"none",boxShadow:"0 4px 32px rgba(255,215,0,0.3), 0 0 60px rgba(52,152,219,0.15)",animation:i?"cta-glow 3s ease-in-out infinite":"none"},children:"Enter the Galaxy"})]}),(0,t.jsxs)("div",{style:{marginTop:80,paddingTop:40,borderTop:"1px solid rgba(255,255,255,0.05)",display:"flex",justifyContent:"center",gap:32,flexWrap:"wrap",opacity:.4*!!i,transition:"opacity 1.5s ease 0.5s"},children:[(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"Built by Blake Burford"}),(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"Open source · MIT"}),(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"2026"})]})]})]})}function y(e,t,i){let r=43758.5453*Math.sin((e+1)*12.9898+(t+1)*78.233+37.719*i);return r-Math.floor(r)}e.s(["default",0,function(){return(0,t.jsxs)("div",{style:{background:"#0a0a1a",color:"#fff",overflowX:"hidden"},children:[(0,t.jsx)("style",{children:`
|
|
2
|
+
@keyframes pulse-dot {
|
|
3
|
+
0%, 100% { opacity: 1; transform: scale(1); }
|
|
4
|
+
50% { opacity: 0.4; transform: scale(0.6); }
|
|
5
|
+
}
|
|
6
|
+
@keyframes scroll-line {
|
|
7
|
+
0% { opacity: 0.3; transform: scaleY(1); }
|
|
8
|
+
50% { opacity: 0.8; transform: scaleY(1.3); }
|
|
9
|
+
100% { opacity: 0.3; transform: scaleY(1); }
|
|
10
|
+
}
|
|
11
|
+
@keyframes breathe {
|
|
12
|
+
0%, 100% { transform: scale(1); opacity: 0.7; }
|
|
13
|
+
50% { transform: scale(1.15); opacity: 1; }
|
|
14
|
+
}
|
|
15
|
+
@keyframes spin-ring {
|
|
16
|
+
from { transform: translate(-50%,-50%) rotate(0deg); }
|
|
17
|
+
to { transform: translate(-50%,-50%) rotate(360deg); }
|
|
18
|
+
}
|
|
19
|
+
@keyframes travel-dot {
|
|
20
|
+
0% { left: 0; }
|
|
21
|
+
50% { left: calc(100% - 6px); }
|
|
22
|
+
100% { left: 0; }
|
|
23
|
+
}
|
|
24
|
+
@keyframes wave {
|
|
25
|
+
0%, 100% { transform: translateY(0) scaleY(1); }
|
|
26
|
+
50% { transform: translateY(8px) scaleY(2); }
|
|
27
|
+
}
|
|
28
|
+
@keyframes cta-glow {
|
|
29
|
+
0%, 100% { box-shadow: 0 4px 32px rgba(255,215,0,0.3), 0 0 60px rgba(52,152,219,0.15); }
|
|
30
|
+
50% { box-shadow: 0 4px 48px rgba(255,215,0,0.5), 0 0 80px rgba(52,152,219,0.25); }
|
|
31
|
+
}
|
|
32
|
+
html { scroll-behavior: smooth; }
|
|
33
|
+
body { overflow-x: hidden; overflow-y: auto !important; }
|
|
34
|
+
|
|
35
|
+
@media (max-width: 900px) {
|
|
36
|
+
.galaxy-grid { grid-template-columns: 1fr !important; text-align: center; }
|
|
37
|
+
.galaxy-rings { width: 340px !important; height: 340px !important; }
|
|
38
|
+
}
|
|
39
|
+
@media (max-width: 768px) {
|
|
40
|
+
section { padding: 64px 16px !important; }
|
|
41
|
+
h2 { font-size: 28px !important; }
|
|
42
|
+
.chain-row { flex-direction: column !important; }
|
|
43
|
+
}
|
|
44
|
+
`}),(0,t.jsx)(s,{}),(0,t.jsx)(c,{}),(0,t.jsx)(d,{}),(0,t.jsx)(p,{}),(0,t.jsx)(g,{}),(0,t.jsx)(x,{}),(0,t.jsx)(h,{}),(0,t.jsx)(f,{}),(0,t.jsx)(u,{})]})}],10706)}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68074,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(7837),i=e.i(65084),o=e.i(22016),s=e.i(54322);let l={background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",borderRadius:16,padding:24};function a({onRemoved:e}){let[i,o]=(0,n.useState)(!1),[s,d]=(0,n.useState)("");async function c(){if(!window.confirm(r.REMOVE_CSV_QUESTION))return;o(!0),d("");let t=await (0,r.closeCsvNetwork)("csv");o(!1),t.ok?e():d(t.error)}return(0,t.jsxs)("div",{style:{...l,padding:"14px 18px",marginBottom:16,display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,t.jsx)("span",{style:{flex:"1 1 260px",color:"rgba(var(--sd-ink, 255, 255, 255), 0.65)",fontSize:14,lineHeight:1.6},children:"Your map shows the network you scanned. A CSV import is still kept on this computer."}),(0,t.jsx)("button",{onClick:c,disabled:i,style:{padding:"8px 14px",borderRadius:8,cursor:i?"default":"pointer",font:"inherit",fontSize:13,fontWeight:700,border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.2)",background:"transparent",color:"var(--sd-fg-1, #fff)"},children:i?"Removing…":"Remove it"}),s&&(0,t.jsx)("div",{style:{width:"100%",color:"#ff8080",fontSize:13,lineHeight:1.6},children:s})]})}let d={minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",padding:"56px 24px",fontFamily:"var(--sd-font)",display:"flex",justifyContent:"center"},c={background:"rgba(var(--sd-ink, 255, 255, 255), 0.07)",padding:"2px 6px",borderRadius:5,fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},g={display:"block",textAlign:"center",padding:"15px 20px",borderRadius:12,background:"linear-gradient(135deg,#FFD700,#9B59B6)",color:"#0a0a1a",fontWeight:800,fontSize:15,textDecoration:"none"};e.s(["default",0,function(){let[e,h]=(0,n.useState)(!1),[f,p]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[y,v]=(0,n.useState)(!1),[m,S]=(0,n.useState)(null),k=(0,n.useRef)(null);async function j(e){v(!0),p("");try{let{connections:t,skipped:n}=(0,r.parseConnectionsCsv)(e),o=await (0,r.saveCsvNetwork)(t);if(!o.ok){p(o.error),v(!1);return}let s=await (0,r.keptBehindScan)();S(s),s||(0,i.setUser)(r.CSV_USER.id,r.CSV_USER.name);let l={};t.forEach(e=>{l[e.tier]=(l[e.tier]||0)+1}),x({count:t.length,skipped:n,tiers:l})}catch(e){p(e instanceof r.ConnectionsCsvError?e.message:"Could not read that file. Make sure it is Connections.csv from your LinkedIn export.")}v(!1)}function b(e){if(!e)return;let t=new FileReader;t.onload=e=>j(String(e.target.result||"")),t.onerror=()=>p("Could not read that file."),t.readAsText(e)}return((0,n.useEffect)(()=>{let e=!1;return(0,r.keptBehindScan)().then(t=>{e||S(t)}),()=>{e=!0}},[]),u)?(0,t.jsx)("div",{style:d,children:(0,t.jsxs)("div",{style:{maxWidth:560,width:"100%"},children:[(0,t.jsx)("div",{style:{fontSize:13,color:"#2ecc71",fontWeight:700,letterSpacing:2,marginBottom:10},children:"IMPORTED"}),(0,t.jsxs)("h1",{style:{fontSize:38,fontWeight:800,margin:"0 0 8px"},children:[u.count.toLocaleString()," connections mapped"]}),(0,t.jsxs)("p",{style:{color:"rgba(var(--sd-ink, 255, 255, 255), 0.45)",margin:"0 0 28px",lineHeight:1.6},children:["Scored on seniority and company, sorted into tiers.",u.skipped>0&&` ${u.skipped} row${1===u.skipped?"":"s"} skipped (blank or duplicate).`]}),(0,t.jsxs)("div",{style:{...l,marginBottom:20},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-fg-4, #666)",letterSpacing:2,marginBottom:14},children:"YOUR TIERS"}),["S","A","B","C","D"].map(e=>{let n=u.tiers[e]||0,r=u.count?n/u.count*100:0;return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:8},children:[(0,t.jsx)("span",{style:{width:16,color:s.TIER_COLORS[e],fontWeight:800},children:e}),(0,t.jsx)("div",{style:{flex:1,height:8,borderRadius:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${r}%`,height:"100%",background:s.TIER_COLORS[e],borderRadius:4}})}),(0,t.jsx)("span",{style:{width:46,textAlign:"right",color:"rgba(var(--sd-ink, 255, 255, 255), 0.6)",fontSize:13},children:n})]},e)})]}),m&&(0,t.jsx)(a,{onRemoved:()=>{S(null),x(null)}}),(0,t.jsx)(o.default,{href:"/",style:g,children:"See your galaxy →"}),!m&&(0,t.jsx)("p",{style:{color:"var(--sd-fg-5, #555)",fontSize:12,marginTop:18,lineHeight:1.6},children:"Kept on this computer, in your data folder, so it’s still here after you close the window. Nothing was sent anywhere. To remove it, click × next to Your CSV at the top of the map."})]})}):(0,t.jsx)("div",{style:d,children:(0,t.jsxs)("div",{style:{maxWidth:620,width:"100%"},children:[(0,t.jsxs)("h1",{style:{fontSize:40,fontWeight:800,margin:"0 0 10px",letterSpacing:-1},children:["Map ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg,#FFD700,#9B59B6,#3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"your"})," network"]}),(0,t.jsxs)("p",{style:{color:"rgba(var(--sd-ink, 255, 255, 255), 0.45)",margin:"0 0 30px",lineHeight:1.6,fontSize:16},children:["Drop LinkedIn’s official ",(0,t.jsx)("code",{style:c,children:"Connections.csv"})," below. It is read on this computer, scored, drawn as a galaxy, and kept in your data folder. No account, and nothing leaves this computer."]}),m&&(0,t.jsx)(a,{onRemoved:()=>S(null)}),(0,t.jsxs)("div",{onDragOver:e=>{e.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:e=>{e.preventDefault(),h(!1),b(e.dataTransfer.files?.[0])},onClick:()=>k.current?.click(),style:{...l,padding:"48px 24px",textAlign:"center",cursor:"pointer",marginBottom:16,borderStyle:"dashed",borderColor:e?"#FFD700":"rgba(var(--sd-ink, 255, 255, 255), 0.12)",background:e?"rgba(255,215,0,0.05)":l.background,transition:"all 0.15s ease"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:10},children:"📄"}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:17,marginBottom:6},children:y?"Reading…":"Drop Connections.csv here"}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-4, #666)",fontSize:13},children:"or click to choose the file"}),(0,t.jsx)("input",{ref:k,type:"file",accept:".csv,text/csv",style:{display:"none"},onChange:e=>b(e.target.files?.[0])})]}),f&&(0,t.jsx)("div",{style:{background:"rgba(255,59,59,0.08)",border:"1px solid rgba(255,59,59,0.25)",borderRadius:12,padding:16,color:"#ff8080",fontSize:14,lineHeight:1.6,marginBottom:16},children:f}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-fg-4, #666)",letterSpacing:2,marginBottom:14},children:"HOW TO GET THE FILE"}),(0,t.jsxs)("ol",{style:{margin:0,paddingLeft:20,color:"rgba(var(--sd-ink, 255, 255, 255), 0.6)",fontSize:14,lineHeight:2},children:[(0,t.jsxs)("li",{children:["LinkedIn → ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Settings & Privacy → Data privacy → Get a copy of your data"})]}),(0,t.jsxs)("li",{children:["Pick ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Connections"})," and request the archive"]}),(0,t.jsx)("li",{children:"LinkedIn emails a download link, usually within ~10 minutes"}),(0,t.jsxs)("li",{children:["Unzip it and drop ",(0,t.jsx)("code",{style:c,children:"Connections.csv"})," above"]})]})]}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#2ecc71",letterSpacing:2,marginBottom:10},children:"PRIVATE BY DESIGN"}),(0,t.jsxs)("p",{style:{margin:0,color:"rgba(var(--sd-ink, 255, 255, 255), 0.55)",fontSize:14,lineHeight:1.7},children:["Your file never leaves this computer. It is read here, and only what the map needs (names, positions, companies, profile links and when you connected) is kept, in your data folder, apart from any network you scan. The ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Email Address column is ignored entirely"}),"."]})]}),(0,t.jsxs)("div",{style:{...l,borderColor:"rgba(255,215,0,0.15)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-gold, #FFD700)",letterSpacing:2,marginBottom:10},children:"HONEST CAVEAT"}),(0,t.jsxs)("p",{style:{margin:"0 0 12px",color:"rgba(var(--sd-ink, 255, 255, 255), 0.55)",fontSize:14,lineHeight:1.7},children:["LinkedIn’s export contains no profile photos, so everyone renders as initials on a tier-colored circle. It also only covers people you are ",(0,t.jsx)("em",{children:"already"})," connected to, so ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Degrees"})," and the ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Outlink queue"})," stay empty, because those map the people you haven’t met yet."]}),(0,t.jsxs)("p",{style:{margin:0,color:"var(--sd-fg-4, #666)",fontSize:13,lineHeight:1.7},children:["Want those? Run the local scanner: it captures 2nd-degree circles and real photos."," ",(0,t.jsx)(o.default,{href:"/setup",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"See setup →"})]})]}),(0,t.jsx)("div",{style:{textAlign:"center",marginTop:26},children:(0,t.jsx)(o.default,{href:"/",style:{color:"var(--sd-fg-5, #555)",fontSize:13,textDecoration:"none"},children:"← Back"})})]})})}])}]);
|