six-degrees 0.6.0 → 0.8.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 +4 -0
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +42 -14
- package/.next/standalone/.next/routes-manifest.json +24 -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 +3 -3
- 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 +5 -3
- 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/insights/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/insights/page/build-manifest.json +20 -0
- package/.next/standalone/.next/server/app/insights/page/next-font-manifest.json +11 -0
- package/.next/standalone/.next/server/app/insights/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/insights/page/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/insights/page.js +13 -0
- package/.next/standalone/.next/server/app/insights/page.js.map +5 -0
- package/.next/standalone/.next/server/app/insights/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/insights/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/insights.html +1 -0
- package/.next/standalone/.next/server/app/insights.meta +26 -0
- package/.next/standalone/.next/server/app/insights.rsc +35 -0
- package/.next/standalone/.next/server/app/insights.segments/_full.segment.rsc +35 -0
- package/.next/standalone/.next/server/app/insights.segments/_tree.segment.rsc +4 -0
- package/.next/standalone/.next/server/app/insights.segments/insights/__PAGE__.segment.rsc +33 -0
- 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 +21 -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 +4 -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]__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]__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]__15wc9e-._.js → [root-of-the-server]__0r-0t-9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ra6xyg._.js +15 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__20rwfdw._.js → [root-of-the-server]__0rcpjad._.js} +6 -3
- 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/_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_00nndai.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_03ibb-x.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_03ri3ji.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_078ce48.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0a69mgr.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0cej3t8.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0cmh4g6.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0nx2_pc.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0r79-w1.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0t552z6.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_0yx8ynd.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_12p-o9-.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1466dnb.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1sryxv6.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1trn-x5.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_rpc_1ygu_mv.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0egamyq._.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/_04am_h8._.js +3 -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/_0gds903._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0klqt9z._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_14jak5s._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1cj2yog._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1hdqw0-._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1r62six._.js +7 -0
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_insights_page_actions_0-0tf75.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_141w189._.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_components_settings_SectorPicker_1c-29qw.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_insights_page_1d_chja.js +3 -0
- 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 +26 -14
- 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/next-font-manifest.js +1 -1
- package/.next/standalone/.next/server/next-font-manifest.json +4 -0
- 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/prefetch-hints.json +14 -0
- 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/02wnf8dkxegxg.js +34 -0
- 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/0838_s6w-i_ik.js +1 -0
- package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
- package/.next/standalone/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
- package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
- package/.next/standalone/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
- package/.next/standalone/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
- package/.next/standalone/.next/static/chunks/112mv-com-mqa.js +21 -0
- package/.next/standalone/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
- package/.next/standalone/.next/static/chunks/1cmphb3kh2ers.css +3 -0
- package/.next/standalone/.next/static/chunks/1d8yv3k_atka7.js +1 -0
- package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
- package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
- package/.next/standalone/.next/static/chunks/23hc51oa4vkhc.js +5 -0
- package/.next/standalone/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
- package/.next/standalone/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
- package/.next/standalone/.next/static/chunks/2w-y83mjlpnse.js +1 -0
- package/.next/standalone/.next/static/chunks/2ws1xf293j-tm.js +5 -0
- package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
- package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
- package/.next/standalone/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
- package/.next/standalone/.next/static/chunks/3opgg1efrx8q6.js +1 -0
- package/.next/standalone/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
- package/.next/standalone/.next/static/chunks/3y40z6of3r9py.js +1 -0
- package/.next/standalone/.next/static/chunks/403dpflln8ah5.js +1 -0
- package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
- package/.next/standalone/CHANGELOG.md +203 -0
- package/.next/standalone/README.md +96 -50
- package/.next/standalone/SECURITY.md +25 -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/outreach/route.js +13 -73
- package/.next/standalone/app/api/queue/route.js +1 -1
- package/.next/standalone/app/api/scraper/route.js +217 -36
- package/.next/standalone/app/api/social/crm/route.js +2 -1
- package/.next/standalone/app/components/AppHeader.js +41 -21
- package/.next/standalone/app/components/AppTabs.js +12 -8
- package/.next/standalone/app/components/AutoConnect.js +286 -0
- 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 +258 -113
- 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 +25 -18
- 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 +57 -27
- 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 +56 -35
- 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 +40 -21
- package/.next/standalone/app/components/ScanTrail.js +21 -8
- package/.next/standalone/app/components/SeparationView.js +172 -124
- package/.next/standalone/app/components/Sidebar.js +308 -199
- 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/insights/Boards.js +275 -0
- package/.next/standalone/app/components/insights/PeopleView.js +266 -0
- package/.next/standalone/app/components/insights/Rail.js +156 -0
- package/.next/standalone/app/components/insights/Report.js +382 -0
- package/.next/standalone/app/components/insights/parts.js +239 -0
- 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 +360 -0
- package/.next/standalone/app/components/ui.js +8 -8
- package/.next/standalone/app/globals.css +161 -5
- package/.next/standalone/app/import/page.js +94 -38
- package/.next/standalone/app/insights/page.js +220 -0
- package/.next/standalone/app/launch/page.js +5 -5
- package/.next/standalone/app/layout.js +6 -2
- package/.next/standalone/app/page.js +53 -53
- 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 +84 -72
- 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 +236 -133
- 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/auto-connect.js +145 -0
- package/.next/standalone/lib/backups.js +458 -0
- package/.next/standalone/lib/chain-layout.js +32 -0
- package/.next/standalone/lib/companies.js +1 -1
- 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/in-progress.js +46 -0
- package/.next/standalone/lib/ingest.js +1 -1
- package/.next/standalone/lib/insights-board.js +613 -0
- package/.next/standalone/lib/linkedin-limits.js +240 -14
- package/.next/standalone/lib/liquid-glass.js +59 -0
- package/.next/standalone/lib/notifications.js +13 -0
- package/.next/standalone/lib/requests-client.js +10 -0
- package/.next/standalone/lib/requests.js +124 -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/scan-state.js +1 -0
- package/.next/standalone/lib/scanner-setup.js +97 -15
- package/.next/standalone/lib/scraper-client.js +35 -8
- package/.next/standalone/lib/search-risk.js +7 -3
- package/.next/standalone/lib/settings-client.js +5 -3
- package/.next/standalone/lib/settings.js +13 -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 +200 -0
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/scrape.py +595 -11
- package/.next/static/chunks/02wnf8dkxegxg.js +34 -0
- package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
- package/.next/static/chunks/03-demj2iy-0p.js +44 -0
- package/.next/static/chunks/0838_s6w-i_ik.js +1 -0
- package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
- package/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
- package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
- package/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
- package/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
- package/.next/static/chunks/112mv-com-mqa.js +21 -0
- package/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
- package/.next/static/chunks/1cmphb3kh2ers.css +3 -0
- package/.next/static/chunks/1d8yv3k_atka7.js +1 -0
- package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
- package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
- package/.next/static/chunks/23hc51oa4vkhc.js +5 -0
- package/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
- package/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
- package/.next/static/chunks/2w-y83mjlpnse.js +1 -0
- package/.next/static/chunks/2ws1xf293j-tm.js +5 -0
- package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
- package/.next/static/chunks/34g73qhayuevu.js +1 -0
- package/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
- package/.next/static/chunks/3opgg1efrx8q6.js +1 -0
- package/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
- package/.next/static/chunks/3y40z6of3r9py.js +1 -0
- package/.next/static/chunks/403dpflln8ah5.js +1 -0
- package/.next/static/chunks/43pg2sursiypz.js +1 -0
- package/CHANGELOG.md +203 -0
- package/README.md +96 -50
- package/SECURITY.md +25 -11
- package/lib/auto-connect.js +145 -0
- package/lib/backups.js +458 -0
- package/lib/chain-layout.js +32 -0
- package/lib/companies.js +1 -1
- 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/in-progress.js +46 -0
- package/lib/ingest.js +1 -1
- package/lib/insights-board.js +613 -0
- package/lib/linkedin-limits.js +240 -14
- package/lib/liquid-glass.js +59 -0
- package/lib/notifications.js +13 -0
- package/lib/requests-client.js +10 -0
- package/lib/requests.js +124 -0
- package/lib/scan-pace.js +11 -0
- package/lib/scan-progress.js +20 -0
- package/lib/scan-risk.js +44 -0
- package/lib/scan-state.js +1 -0
- package/lib/scanner-setup.js +97 -15
- package/lib/scraper-client.js +35 -8
- package/lib/search-risk.js +7 -3
- package/lib/settings-client.js +5 -3
- package/lib/settings.js +13 -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 +200 -0
- package/package.json +1 -1
- package/scripts/scrape.py +595 -11
- 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]__13dx4sd._.js +0 -8
- 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/_02twlca._.js +0 -10
- 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/_1f_n00p._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.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 → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
|
@@ -22,8 +22,8 @@ const first = (name) => String(name || '').trim().split(/\s+/)[0] || 'Their';
|
|
|
22
22
|
|
|
23
23
|
const rowStyle = {
|
|
24
24
|
display: 'flex', alignItems: 'center', gap: 9, width: '100%', padding: '7px 8px', borderRadius: 8, boxSizing: 'border-box',
|
|
25
|
-
background: 'rgba(255,255,255,0.03)', border: '1px solid rgba(255,255,255,0.06)',
|
|
26
|
-
color: '#fff', cursor: 'pointer', textAlign: 'left', font: 'inherit', textDecoration: 'none',
|
|
25
|
+
background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.06)',
|
|
26
|
+
color: 'var(--sd-fg-1, #fff)', cursor: 'pointer', textAlign: 'left', font: 'inherit', textDecoration: 'none',
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
/** One person: opens their card, or (with `href`) goes there instead. */
|
|
@@ -36,7 +36,7 @@ function Row({ person, tierColors, note, noteColor, onSelect, href, label }) {
|
|
|
36
36
|
{person.name}
|
|
37
37
|
<span style={{ fontSize: 10, color: tierColors[person.tier] || '#888', fontWeight: 800, marginLeft: 6 }}>{person.tier}</span>
|
|
38
38
|
</span>
|
|
39
|
-
<span style={{ display: 'block', fontSize: 10.5, color: '#888', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
|
|
39
|
+
<span style={{ display: 'block', fontSize: 10.5, color: 'var(--sd-fg-3, #888)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
|
|
40
40
|
{[person.title, person.company].filter(Boolean).join(' · ') || ' '}
|
|
41
41
|
</span>
|
|
42
42
|
</span>
|
|
@@ -74,7 +74,7 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
74
74
|
<div>
|
|
75
75
|
<button onClick={onToggle} style={{
|
|
76
76
|
display: 'flex', alignItems: 'center', gap: 6, background: 'none', border: 'none',
|
|
77
|
-
color: '#888', fontSize: 12, cursor: 'pointer', padding: '0 0 10px', fontWeight: 600,
|
|
77
|
+
color: 'var(--sd-fg-3, #888)', fontSize: 12, cursor: 'pointer', padding: '0 0 10px', fontWeight: 600,
|
|
78
78
|
}}>
|
|
79
79
|
<span style={{ fontSize: 16 }}>←</span> Close
|
|
80
80
|
</button>
|
|
@@ -82,11 +82,11 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
82
82
|
<div style={{ display: 'flex', alignItems: 'center', gap: 10, marginBottom: 4 }}>
|
|
83
83
|
<Avatar person={person} size={38} tierColors={tierColors} />
|
|
84
84
|
<div style={{ minWidth: 0 }}>
|
|
85
|
-
<div style={{ fontSize: 10, fontWeight: 700, letterSpacing: 1, color: '#888', textTransform: 'uppercase' }}>You’re in</div>
|
|
85
|
+
<div style={{ fontSize: 10, fontWeight: 700, letterSpacing: 1, color: 'var(--sd-fg-3, #888)', textTransform: 'uppercase' }}>You’re in</div>
|
|
86
86
|
<h3 style={{ fontSize: 16, fontWeight: 800, margin: 0, color }}>{first(person.name)}’s circle</h3>
|
|
87
87
|
</div>
|
|
88
88
|
</div>
|
|
89
|
-
<div style={{ fontSize: 11.5, color: '#999', marginBottom: 12 }}>
|
|
89
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #999)', marginBottom: 12 }}>
|
|
90
90
|
{[person.title, person.company].filter(Boolean).join(' · ')}
|
|
91
91
|
<button type="button" onClick={() => onSelect?.(person)} style={{
|
|
92
92
|
display: 'block', marginTop: 6, padding: 0, background: 'none', border: 'none', color: '#74B9FF',
|
|
@@ -96,7 +96,7 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
96
96
|
|
|
97
97
|
{/* The same count as the map: the people you added from here were in it too. */}
|
|
98
98
|
<div style={{ fontSize: 22, fontWeight: 800, lineHeight: 1 }}>{(members.length + added.length).toLocaleString('en-US')}</div>
|
|
99
|
-
<div style={{ fontSize: 11, color: '#888', marginBottom: 10 }}>
|
|
99
|
+
<div style={{ fontSize: 11, color: 'var(--sd-fg-3, #888)', marginBottom: 10 }}>
|
|
100
100
|
{members.length + added.length === 1 ? 'person' : 'people'} in their circle{added.length ? ` · you added ${added.length} of them` : ''}
|
|
101
101
|
</div>
|
|
102
102
|
|
|
@@ -107,11 +107,11 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
107
107
|
onClick={() => { setTier(tier === t ? null : t); setShown(PAGE); }}
|
|
108
108
|
style={{
|
|
109
109
|
padding: '4px 9px', borderRadius: 12, fontSize: 11, fontWeight: 700, cursor: counts[t] ? 'pointer' : 'default',
|
|
110
|
-
border: `1px solid ${tier === t ? tierColors[t] : 'rgba(255,255,255,0.1)'}`,
|
|
111
|
-
background: tier === t ? `${tierColors[t]}26` : 'rgba(255,255,255,0.03)',
|
|
112
|
-
color: counts[t] ? tierColors[t] : '#444',
|
|
110
|
+
border: `1px solid ${tier === t ? tierColors[t] : 'rgba(var(--sd-ink, 255, 255, 255), 0.1)'}`,
|
|
111
|
+
background: tier === t ? `${tierColors[t]}26` : 'rgba(var(--sd-ink, 255, 255, 255), 0.03)',
|
|
112
|
+
color: counts[t] ? tierColors[t] : 'var(--sd-fg-5, #444)',
|
|
113
113
|
}}>
|
|
114
|
-
{t} <span style={{ color: '#aaa', fontWeight: 600 }}>{counts[t]}</span>
|
|
114
|
+
{t} <span style={{ color: 'var(--sd-fg-3, #aaa)', fontWeight: 600 }}>{counts[t]}</span>
|
|
115
115
|
</button>
|
|
116
116
|
))}
|
|
117
117
|
</div>
|
|
@@ -120,12 +120,12 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
120
120
|
onChange={(e) => { setQuery(e.target.value); setShown(PAGE); }}
|
|
121
121
|
style={{
|
|
122
122
|
width: '100%', padding: '8px 12px', borderRadius: 8, fontSize: 12, marginBottom: 14, boxSizing: 'border-box',
|
|
123
|
-
border: '1px solid rgba(255,255,255,0.1)', background: 'rgba(255,255,255,0.05)', color: '#fff', outline: 'none',
|
|
123
|
+
border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-1, #fff)', outline: 'none',
|
|
124
124
|
}} />
|
|
125
125
|
|
|
126
126
|
{added.length > 0 && !tier && q.length < 2 && (
|
|
127
127
|
<div style={{ marginBottom: 14 }}>
|
|
128
|
-
<div style={{ fontSize: 10, fontWeight: 700, color: '#00ff88', letterSpacing: 1, marginBottom: 6, textTransform: 'uppercase' }}>
|
|
128
|
+
<div style={{ fontSize: 10, fontWeight: 700, color: 'var(--sd-green, #00ff88)', letterSpacing: 1, marginBottom: 6, textTransform: 'uppercase' }}>
|
|
129
129
|
You added from here ({added.length})
|
|
130
130
|
</div>
|
|
131
131
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 5 }}>
|
|
@@ -140,11 +140,11 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
140
140
|
</div>
|
|
141
141
|
)}
|
|
142
142
|
|
|
143
|
-
<div style={{ fontSize: 10, fontWeight: 700, color: '#888', letterSpacing: 1, marginBottom: 6, textTransform: 'uppercase' }}>
|
|
143
|
+
<div style={{ fontSize: 10, fontWeight: 700, color: 'var(--sd-fg-3, #888)', letterSpacing: 1, marginBottom: 6, textTransform: 'uppercase' }}>
|
|
144
144
|
{tier ? `${tier} tier in their circle` : added.length ? 'Everyone else in their circle' : 'Everyone in their circle'} ({list.length.toLocaleString('en-US')})
|
|
145
145
|
</div>
|
|
146
146
|
{list.length === 0 ? (
|
|
147
|
-
<div style={{ fontSize: 11.5, color: '#888', lineHeight: 1.5 }}>
|
|
147
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #888)', lineHeight: 1.5 }}>
|
|
148
148
|
{members.length === 0 ? 'Their circle isn’t scanned yet.' : 'No one here matches.'}
|
|
149
149
|
</div>
|
|
150
150
|
) : (
|
|
@@ -152,7 +152,7 @@ export default function CirclePanel({ person, connections = [], degree2 = [], sc
|
|
|
152
152
|
{list.slice(0, shown).map((m) => <Row key={m.id} person={m} tierColors={tierColors} onSelect={onSelect} />)}
|
|
153
153
|
{list.length > shown && (
|
|
154
154
|
<button type="button" onClick={() => setShown((n) => n + PAGE * 3)} style={{
|
|
155
|
-
background: 'none', border: 'none', color: '#888', fontSize: 11, fontWeight: 600, cursor: 'pointer', padding: '6px 0', textAlign: 'left',
|
|
155
|
+
background: 'none', border: 'none', color: 'var(--sd-fg-3, #888)', fontSize: 11, fontWeight: 600, cursor: 'pointer', padding: '6px 0', textAlign: 'left',
|
|
156
156
|
}}>Show more ({(list.length - shown).toLocaleString('en-US')} left)</button>
|
|
157
157
|
)}
|
|
158
158
|
</div>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
// The ↻ of Check for new, as a cluster forming (Blake, 2026-10-03: "use the
|
|
4
|
+
// bridge cluster animation … building dots clock wise and is satisfying. this
|
|
5
|
+
// will make it feel more alive"). A hub with a ring of dots round it, the way
|
|
6
|
+
// the map draws a connection's circle. At rest it's the ↻; hovering the button
|
|
7
|
+
// builds the ring once, clockwise from the top; while it checks, the ring keeps
|
|
8
|
+
// building, round and round. The dots take the look's gold, purple and blue,
|
|
9
|
+
// as every other cluster does (lib/themes.js). Still under Reduce Motion.
|
|
10
|
+
//
|
|
11
|
+
// Hover is the button's own: give it the class "cluster-host".
|
|
12
|
+
|
|
13
|
+
import { TIER_COLORS } from '../../lib/themes';
|
|
14
|
+
|
|
15
|
+
const N = 10;
|
|
16
|
+
const CSS = `
|
|
17
|
+
@keyframes csBuild { from { opacity: 0; transform: scale(0.2); } 70% { opacity: 1; transform: scale(1.25); } to { opacity: 1; transform: scale(1); } }
|
|
18
|
+
@keyframes csLoop {
|
|
19
|
+
0% { opacity: 0; transform: scale(0.2); }
|
|
20
|
+
8% { opacity: 1; transform: scale(1.3); }
|
|
21
|
+
14%, 72% { opacity: 1; transform: scale(1); }
|
|
22
|
+
88%, 100% { opacity: 0; transform: scale(0.6); }
|
|
23
|
+
}
|
|
24
|
+
.cs { position: relative; display: inline-block; flex-shrink: 0; }
|
|
25
|
+
.cs .cs-glyph { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; line-height: 1; transition: opacity .15s, transform .2s; }
|
|
26
|
+
.cs svg { position: absolute; inset: 0; overflow: visible; }
|
|
27
|
+
.cs .cs-dot { transform-box: fill-box; transform-origin: center; opacity: 0; }
|
|
28
|
+
.cs .cs-hub { opacity: 0; transition: opacity .15s; }
|
|
29
|
+
.cluster-host:hover .cs:not(.cs-live) .cs-glyph { opacity: 0; transform: scale(.6) rotate(90deg); }
|
|
30
|
+
.cluster-host:hover .cs:not(.cs-live) .cs-hub { opacity: 1; }
|
|
31
|
+
.cluster-host:hover .cs:not(.cs-live) .cs-dot { animation: csBuild .32s cubic-bezier(.2,.9,.3,1.3) both; animation-delay: calc(var(--i) * 34ms); }
|
|
32
|
+
.cs.cs-live .cs-glyph { opacity: 0; }
|
|
33
|
+
.cs.cs-live .cs-hub { opacity: 1; }
|
|
34
|
+
.cs.cs-live .cs-dot { animation: csLoop 1.5s ease-out infinite; animation-delay: calc(var(--i) * 95ms); }
|
|
35
|
+
@media (prefers-reduced-motion: reduce) {
|
|
36
|
+
.cluster-host:hover .cs:not(.cs-live) .cs-dot, .cs.cs-live .cs-dot { animation: none; opacity: 1; }
|
|
37
|
+
.cluster-host:hover .cs:not(.cs-live) .cs-glyph { transform: none; }
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
/** @param {{ size?: number, live?: boolean, glyph?: string }} props live: a check is running */
|
|
42
|
+
export default function ClusterSpinner({ size = 14, live = false, glyph = '↻' }) {
|
|
43
|
+
const c = size / 2;
|
|
44
|
+
const r = size * 0.42;
|
|
45
|
+
const dot = Math.max(1, size * 0.085);
|
|
46
|
+
const colours = [TIER_COLORS.S, TIER_COLORS.A, TIER_COLORS.B];
|
|
47
|
+
return (
|
|
48
|
+
<span className={`cs${live ? ' cs-live' : ''}`} aria-hidden="true" style={{ width: size, height: size }}>
|
|
49
|
+
<style>{CSS}</style>
|
|
50
|
+
<span className="cs-glyph" style={{ fontSize: size }}>{glyph}</span>
|
|
51
|
+
<svg width={size} height={size} viewBox={`0 0 ${size} ${size}`}>
|
|
52
|
+
<circle className="cs-hub" cx={c} cy={c} r={dot * 1.35} fill="currentColor" />
|
|
53
|
+
{Array.from({ length: N }, (_, i) => {
|
|
54
|
+
// Clockwise from twelve o'clock.
|
|
55
|
+
const a = -Math.PI / 2 + (i * 2 * Math.PI) / N;
|
|
56
|
+
return (
|
|
57
|
+
<circle key={i} className="cs-dot sd-dot" style={{ '--i': i }} cx={c + r * Math.cos(a)} cy={c + r * Math.sin(a)} r={dot}
|
|
58
|
+
fill={colours[i % colours.length]} />
|
|
59
|
+
);
|
|
60
|
+
})}
|
|
61
|
+
</svg>
|
|
62
|
+
</span>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
8
|
import LegacyScoresCard from './LegacyScoresCard';
|
|
9
9
|
|
|
10
|
-
const LINE = '1px solid rgba(255,255,255,0.1)';
|
|
10
|
+
const LINE = '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)';
|
|
11
11
|
const SOURCE = {
|
|
12
|
-
yours: { label: 'your score', color: '#00ff88' },
|
|
13
|
-
known: { label: 'known list', color: '#3498DB' },
|
|
12
|
+
yours: { label: 'your score', color: 'var(--sd-green, #00ff88)' },
|
|
13
|
+
known: { label: 'known list', color: 'var(--sd-blue, #3498DB)' },
|
|
14
14
|
data: { label: 'public data', color: '#1abc9c' },
|
|
15
|
-
network: { label: 'estimated: many of your people', color: '#FF6B35' },
|
|
16
|
-
default: { label: 'unknown company', color: '#778' },
|
|
15
|
+
network: { label: 'estimated: many of your people', color: 'var(--sd-orange, #FF6B35)' },
|
|
16
|
+
default: { label: 'unknown company', color: 'var(--sd-fg-4, #778)' },
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
async function fetchScores() {
|
|
@@ -52,7 +52,7 @@ export function ScorePicker({ company, onSet, compact }) {
|
|
|
52
52
|
return (
|
|
53
53
|
<select disabled={busy} value={company.source === 'yours' ? String(company.score) : 'auto'} onChange={(e) => pick(e.target.value)}
|
|
54
54
|
title="Set this company's score. Auto uses the known list or an estimate."
|
|
55
|
-
style={{ padding: compact ? '2px 4px' : '4px 6px', borderRadius: 6, border: LINE, background: '#11131c', color: '#dfe6e9', fontSize: 12 }}>
|
|
55
|
+
style={{ padding: compact ? '2px 4px' : '4px 6px', borderRadius: 6, border: LINE, background: 'var(--sd-card, #11131c)', color: 'var(--sd-fg-1, #dfe6e9)', fontSize: 12 }}>
|
|
56
56
|
<option value="auto">Auto ({company.source === 'yours' ? (company.suggested ?? 'est.') : company.score})</option>
|
|
57
57
|
{[10, 9, 8, 7, 6, 5, 4, 3, 2, 1].map((n) => <option key={n} value={n}>{n}</option>)}
|
|
58
58
|
</select>
|
|
@@ -99,7 +99,7 @@ export default function CompanyScores({ onRescored, version = 0 }) {
|
|
|
99
99
|
}, [companies, query, only]);
|
|
100
100
|
|
|
101
101
|
if (error) return <div style={{ padding: 24, color: '#e74c3c' }}>{error}</div>;
|
|
102
|
-
if (!companies) return <div style={{ padding: 24, color: '#778' }}>Loading companies…</div>;
|
|
102
|
+
if (!companies) return <div style={{ padding: 24, color: 'var(--sd-fg-4, #778)' }}>Loading companies…</div>;
|
|
103
103
|
|
|
104
104
|
const count = (src) => companies.filter((c) => c.source === src).length;
|
|
105
105
|
|
|
@@ -107,56 +107,56 @@ export default function CompanyScores({ onRescored, version = 0 }) {
|
|
|
107
107
|
<div style={{ flex: 1, overflow: 'auto', padding: 16 }}>
|
|
108
108
|
<div style={{ maxWidth: 980, margin: '0 auto' }}>
|
|
109
109
|
<LegacyScoresCard onAnswered={legacyAnswered} />
|
|
110
|
-
<div style={{ padding: 14, borderRadius: 10, border: LINE, background: 'rgba(255,255,255,0.03)', fontSize: 12.5, color: '#cfd8d8', lineHeight: 1.6 }}>
|
|
111
|
-
<b style={{ color: '#fff' }}>How a power score works.</b> power = <b>title</b> × <b>company weight</b> + bonus.
|
|
110
|
+
<div style={{ padding: 14, borderRadius: 10, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', fontSize: 12.5, color: 'var(--sd-fg-2, #cfd8d8)', lineHeight: 1.6 }}>
|
|
111
|
+
<b style={{ color: 'var(--sd-fg-1, #fff)' }}>How a power score works.</b> power = <b>title</b> × <b>company weight</b> + bonus.
|
|
112
112
|
The title (student 1 … founder or C-suite 10) comes from someone’s roles, with former roles at 70%; an audience of their own counts like a title (1M+ followers like a director).
|
|
113
113
|
The company weight runs from 0.725 for a company we don’t know (or none found), the middle of the scale, to 1.0 (a company scored 10), so seniority counts for more at a bigger company.
|
|
114
114
|
The bonus is at most +1.5, for investor, YC, an audience in the millions or the top award of any field, and counts half at an unknown company.
|
|
115
115
|
A 1st-degree person whose circle is unusually strong gets up to +2 more: up to +1 for a high share of it at A or S, or +1 for every 25 people there.
|
|
116
|
-
Tiers are graded on your network’s curve unless you choose the fixed scale (<a href="#tiers" style={{ color: '#3498DB' }}>Tiers</a>, above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.
|
|
117
|
-
<div style={{ marginTop: 6, color: '#8b9a9a' }}>
|
|
116
|
+
Tiers are graded on your network’s curve unless you choose the fixed scale (<a href="#tiers" style={{ color: 'var(--sd-blue, #3498DB)' }}>Tiers</a>, above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.
|
|
117
|
+
<div style={{ marginTop: 6, color: 'var(--sd-fg-3, #8b9a9a)' }}>
|
|
118
118
|
So a VP at a 10 scores 9.0, a founder at an unknown company 7.3, a director at an unknown company 5.4, and an intern at a 10 scores 2.0.
|
|
119
119
|
Set a company’s score below and everyone there is rescored.
|
|
120
|
-
Companies in the sectors you pick (<a href="#sector" style={{ color: '#3498DB' }}>Your sector</a>, above) get +1 or +2; a score you set is never changed.
|
|
120
|
+
Companies in the sectors you pick (<a href="#sector" style={{ color: 'var(--sd-blue, #3498DB)' }}>Your sector</a>, above) get +1 or +2; a score you set is never changed.
|
|
121
121
|
</div>
|
|
122
122
|
</div>
|
|
123
123
|
|
|
124
124
|
<div style={{ display: 'flex', gap: 8, alignItems: 'center', flexWrap: 'wrap', margin: '14px 0 10px' }}>
|
|
125
125
|
<input value={query} onChange={(e) => setQuery(e.target.value)} placeholder="Find a company"
|
|
126
|
-
style={{ padding: '6px 10px', borderRadius: 7, border: LINE, background: 'rgba(255,255,255,0.05)', color: '#fff', fontSize: 13, minWidth: 180 }} />
|
|
126
|
+
style={{ padding: '6px 10px', borderRadius: 7, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-1, #fff)', fontSize: 13, minWidth: 180 }} />
|
|
127
127
|
{[['all', `All ${companies.length}`], ['known', `Known list ${count('known')}`], ['data', `Public data ${count('data')}`], ['yours', `Yours ${count('yours')}`], ['network', `Estimated ${count('network')}`], ['default', `Unknown ${count('default')}`]].map(([k, l]) => (
|
|
128
128
|
<button key={k} onClick={() => setOnly(k)} style={{
|
|
129
129
|
padding: '5px 10px', borderRadius: 7, border: LINE, cursor: 'pointer', fontSize: 11.5, fontWeight: 600,
|
|
130
|
-
background: only === k ? 'rgba(52,152,219,0.25)' : 'transparent', color: only === k ? '#cfe6f7' : '#8b9a9a',
|
|
130
|
+
background: only === k ? 'rgba(52,152,219,0.25)' : 'transparent', color: only === k ? 'var(--sd-fg-1, #cfe6f7)' : 'var(--sd-fg-3, #8b9a9a)',
|
|
131
131
|
}}>{l}</button>
|
|
132
132
|
))}
|
|
133
133
|
</div>
|
|
134
134
|
|
|
135
135
|
<div style={{ borderRadius: 10, border: LINE, overflow: 'hidden' }}>
|
|
136
|
-
<div style={{ display: 'grid', gridTemplateColumns: '1fr 70px 70px 70px 60px 180px 110px', gap: 8, padding: '8px 12px', fontSize: 10.5, letterSpacing: 0.6, color: '#8b9a9a', background: 'rgba(255,255,255,0.04)' }}>
|
|
136
|
+
<div style={{ display: 'grid', gridTemplateColumns: '1fr 70px 70px 70px 60px 180px 110px', gap: 8, padding: '8px 12px', fontSize: 10.5, letterSpacing: 0.6, color: 'var(--sd-fg-3, #8b9a9a)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.04)' }}>
|
|
137
137
|
<span>COMPANY</span><span style={{ textAlign: 'right' }}>PEOPLE</span><span style={{ textAlign: 'right' }}>YOU KNOW</span><span style={{ textAlign: 'right' }}>DIRECTOR+</span>
|
|
138
138
|
<span style={{ textAlign: 'right' }}>SCORE</span><span>SOURCE</span><span>SET</span>
|
|
139
139
|
</div>
|
|
140
140
|
{shown.slice(0, limit).map((c) => (
|
|
141
|
-
<div key={c.name} style={{ display: 'grid', gridTemplateColumns: '1fr 70px 70px 70px 60px 180px 110px', gap: 8, padding: '7px 12px', alignItems: 'center', borderTop: '1px solid rgba(255,255,255,0.05)', fontSize: 12.5 }}>
|
|
141
|
+
<div key={c.name} style={{ display: 'grid', gridTemplateColumns: '1fr 70px 70px 70px 60px 180px 110px', gap: 8, padding: '7px 12px', alignItems: 'center', borderTop: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.05)', fontSize: 12.5 }}>
|
|
142
142
|
<span style={{ display: 'flex', alignItems: 'center', gap: 8, minWidth: 0 }}>
|
|
143
143
|
<span title={`${c.industry.label} (inferred)`} style={{ width: 8, height: 8, borderRadius: '50%', background: c.industry.color, flexShrink: 0 }} />
|
|
144
144
|
<span style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</span>
|
|
145
145
|
</span>
|
|
146
146
|
<span style={{ textAlign: 'right' }}>{c.people}</span>
|
|
147
|
-
<span style={{ textAlign: 'right', color: c.d1 ? '#00ff88' : '#556' }}>{c.d1}</span>
|
|
148
|
-
<span style={{ textAlign: 'right', color: c.senior ? '#FFD700' : '#556' }}>{c.senior}</span>
|
|
147
|
+
<span style={{ textAlign: 'right', color: c.d1 ? 'var(--sd-green, #00ff88)' : 'var(--sd-fg-5, #556)' }}>{c.d1}</span>
|
|
148
|
+
<span style={{ textAlign: 'right', color: c.senior ? 'var(--sd-gold, #FFD700)' : 'var(--sd-fg-5, #556)' }}>{c.senior}</span>
|
|
149
149
|
<b style={{ textAlign: 'right', fontSize: 15 }}>{c.score}</b>
|
|
150
150
|
<span style={{ fontSize: 11, color: SOURCE[c.source]?.color }}>
|
|
151
151
|
{SOURCE[c.source]?.label}
|
|
152
|
-
{c.sectorBonus > 0 && <span style={{ color: '#00ff88' }}> + {c.sectorBonus} your sector</span>}
|
|
152
|
+
{c.sectorBonus > 0 && <span style={{ color: 'var(--sd-green, #00ff88)' }}> + {c.sectorBonus} your sector</span>}
|
|
153
153
|
</span>
|
|
154
154
|
<ScorePicker company={c} onSet={set} compact />
|
|
155
155
|
</div>
|
|
156
156
|
))}
|
|
157
157
|
</div>
|
|
158
158
|
{shown.length > limit && (
|
|
159
|
-
<button onClick={() => setLimit((n) => n + 300)} style={{ marginTop: 10, padding: '7px 14px', borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.05)', color: '#dfe6e9', cursor: 'pointer', fontSize: 12 }}>
|
|
159
|
+
<button onClick={() => setLimit((n) => n + 300)} style={{ marginTop: 10, padding: '7px 14px', borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-1, #dfe6e9)', cursor: 'pointer', fontSize: 12 }}>
|
|
160
160
|
Show more ({shown.length - limit} left)
|
|
161
161
|
</button>
|
|
162
162
|
)}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { useState } from 'react';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
4
|
import { loadSampleIntoSession } from '../../lib/demo';
|
|
5
|
+
import { keptCsvProblem } from '../../lib/csv';
|
|
5
6
|
|
|
6
7
|
// The first thing a new install shows: there is no network yet, so pick a way in.
|
|
7
8
|
//
|
|
@@ -44,24 +45,22 @@ export default function EmptyState() {
|
|
|
44
45
|
}}>
|
|
45
46
|
Welcome to Six Degrees
|
|
46
47
|
</h2>
|
|
47
|
-
<p style={{ color: 'rgba(255,255,255,0.5)', fontSize: 14.5, lineHeight: 1.7, margin: '0 0 28px' }}>
|
|
48
|
+
<p style={{ color: 'rgba(var(--sd-ink, 255, 255, 255), 0.5)', fontSize: 14.5, lineHeight: 1.7, margin: '0 0 28px' }}>
|
|
48
49
|
Your network, drawn as a galaxy. Everything stays on this computer.
|
|
49
|
-
Pick how to bring it in
|
|
50
|
+
Pick how to bring it in. You can switch later.
|
|
50
51
|
</p>
|
|
51
52
|
|
|
53
|
+
{/* Chrome said up front: the scanner drives it, and step 1 waits for it. */}
|
|
52
54
|
<Choice
|
|
53
55
|
href="/setup"
|
|
54
56
|
primary
|
|
55
57
|
badge="Recommended"
|
|
56
58
|
title="Scan my LinkedIn"
|
|
57
|
-
body="A few guided steps: set up the scanner, sign into LinkedIn yourself, and watch your galaxy fill in. The only way to see who your connections know."
|
|
59
|
+
body="A few guided steps: set up the scanner, sign into LinkedIn yourself, and watch your galaxy fill in. The only way to see who your connections know. Needs Google Chrome."
|
|
60
|
+
note="It runs your own LinkedIn account automatically, and LinkedIn may restrict accounts that do this."
|
|
58
61
|
/>
|
|
59
62
|
|
|
60
|
-
<
|
|
61
|
-
href="/import"
|
|
62
|
-
title="Import my LinkedIn CSV"
|
|
63
|
-
body="LinkedIn’s official export, read in your browser. Takes about ten minutes to arrive by email. Shows the people you know, not who they know."
|
|
64
|
-
/>
|
|
63
|
+
<CsvChoice />
|
|
65
64
|
|
|
66
65
|
<Choice
|
|
67
66
|
onClick={loadSample}
|
|
@@ -71,13 +70,13 @@ export default function EmptyState() {
|
|
|
71
70
|
/>
|
|
72
71
|
|
|
73
72
|
{error && (
|
|
74
|
-
<div style={{ color: '#ff6b6b', fontSize: 13, marginTop: 18 }}>{error}</div>
|
|
73
|
+
<div style={{ color: 'var(--sd-red, #ff6b6b)', fontSize: 13, marginTop: 18 }}>{error}</div>
|
|
75
74
|
)}
|
|
76
75
|
|
|
77
76
|
{/* The new-computer case: a network saved on the old one is brought in from Settings. */}
|
|
78
|
-
<p style={{ color: 'rgba(255,255,255,0.45)', fontSize: 13, lineHeight: 1.6, margin: '18px 0 0' }}>
|
|
77
|
+
<p style={{ color: 'rgba(var(--sd-ink, 255, 255, 255), 0.45)', fontSize: 13, lineHeight: 1.6, margin: '18px 0 0' }}>
|
|
79
78
|
Moving from another computer?{' '}
|
|
80
|
-
<a href="/settings#data" style={{ color: 'rgba(255,255,255,0.75)' }}>
|
|
79
|
+
<a href="/settings#data" style={{ color: 'rgba(var(--sd-ink, 255, 255, 255), 0.75)' }}>
|
|
81
80
|
Import your saved copy in Settings → Your data.
|
|
82
81
|
</a>
|
|
83
82
|
</p>
|
|
@@ -86,16 +85,36 @@ export default function EmptyState() {
|
|
|
86
85
|
);
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
|
|
88
|
+
// The CSV card. It says where an import is kept, and when one is kept but
|
|
89
|
+
// can't be read, says that too, rather than look as if there were none
|
|
90
|
+
// (lib/csv.js keptCsvProblem; TRAPS §7).
|
|
91
|
+
function CsvChoice() {
|
|
92
|
+
const [problem, setProblem] = useState(null);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
let off = false;
|
|
95
|
+
keptCsvProblem().then((p) => { if (!off) setProblem(p); });
|
|
96
|
+
return () => { off = true; };
|
|
97
|
+
}, []);
|
|
98
|
+
return (
|
|
99
|
+
<Choice
|
|
100
|
+
href="/import"
|
|
101
|
+
title="Import my LinkedIn CSV"
|
|
102
|
+
body="LinkedIn’s official export. Takes about ten minutes to arrive by email. Kept on this computer, in your data folder, until you remove it. Shows the people you know, not who they know."
|
|
103
|
+
note={problem}
|
|
104
|
+
/>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function Choice({ href, onClick, disabled, primary, badge, title, body, note }) {
|
|
90
109
|
const style = {
|
|
91
110
|
display: 'block', width: '100%', boxSizing: 'border-box', textAlign: 'left',
|
|
92
111
|
padding: '16px 18px', borderRadius: 12, marginBottom: 12, textDecoration: 'none',
|
|
93
112
|
cursor: disabled ? 'default' : 'pointer', font: 'inherit',
|
|
94
|
-
border: primary ? '1px solid rgba(255,215,0,0.45)' : '1px solid rgba(255,255,255,0.12)',
|
|
113
|
+
border: primary ? '1px solid rgba(255,215,0,0.45)' : '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)',
|
|
95
114
|
background: primary
|
|
96
115
|
? 'linear-gradient(135deg, rgba(255,215,0,0.12), rgba(155,89,182,0.14))'
|
|
97
|
-
: 'rgba(255,255,255,0.03)',
|
|
98
|
-
color: '#fff',
|
|
116
|
+
: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)',
|
|
117
|
+
color: 'var(--sd-fg-1, #fff)',
|
|
99
118
|
};
|
|
100
119
|
const inner = (
|
|
101
120
|
<>
|
|
@@ -107,9 +126,11 @@ function Choice({ href, onClick, disabled, primary, badge, title, body }) {
|
|
|
107
126
|
padding: '3px 8px', borderRadius: 20, background: '#FFD700', color: '#0a0a1a',
|
|
108
127
|
}}>{badge}</span>
|
|
109
128
|
)}
|
|
110
|
-
<span style={{ marginLeft: 'auto', color: 'rgba(255,255,255,0.4)' }}>→</span>
|
|
129
|
+
<span style={{ marginLeft: 'auto', color: 'rgba(var(--sd-ink, 255, 255, 255), 0.4)' }}>→</span>
|
|
111
130
|
</div>
|
|
112
|
-
<div style={{ fontSize: 13, color: 'rgba(255,255,255,0.5)', lineHeight: 1.6 }}>{body}</div>
|
|
131
|
+
<div style={{ fontSize: 13, color: 'rgba(var(--sd-ink, 255, 255, 255), 0.5)', lineHeight: 1.6 }}>{body}</div>
|
|
132
|
+
{/* What it risks, said where it's recommended (lib/scan-risk.js asks again before the first scan). */}
|
|
133
|
+
{note && <div style={{ fontSize: 12.5, color: 'var(--sd-gold, #FFD700)', opacity: 0.85, lineHeight: 1.5, marginTop: 6 }}>{note}</div>}
|
|
113
134
|
</>
|
|
114
135
|
);
|
|
115
136
|
return href
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
// The Scan page's one question
|
|
4
|
-
// The same picks as Settings → Scores → Your field (SectorPicker),
|
|
5
|
-
// (lib/settings-client.js),
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
3
|
+
// The Scan page's one question, once your connections are in: what field
|
|
4
|
+
// you're in. The same picks as Settings → Scores → Your field (SectorPicker),
|
|
5
|
+
// saved the same way (lib/settings-client.js), which rescores everyone with
|
|
6
|
+
// them (lib/settings-effects.js) and every scan after. It used to be asked
|
|
7
|
+
// before the first scan, in the way of it; now it's asked under "Your galaxy
|
|
8
|
+
// is ready". Optional: Skip for now carries on without one. Either answer is
|
|
9
|
+
// kept (`fieldAsked`, lib/sector-focus.js), so it's asked once; when it's
|
|
10
|
+
// asked at all is lib/scanner-setup.js askForField.
|
|
9
11
|
|
|
10
12
|
import { useState } from 'react';
|
|
11
13
|
import Link from 'next/link';
|
|
@@ -14,7 +16,7 @@ import SectorPicker from './settings/SectorPicker';
|
|
|
14
16
|
import { sectorByKey } from '../../lib/sector-directory';
|
|
15
17
|
import { saveSettings } from '../../lib/settings-client';
|
|
16
18
|
|
|
17
|
-
const link = { color: '#3498DB' };
|
|
19
|
+
const link = { color: 'var(--sd-blue, #3498DB)' };
|
|
18
20
|
// The card's own colour (3% white on the page's #0a0a1a), made solid so the
|
|
19
21
|
// picks scroll behind the buttons rather than through them.
|
|
20
22
|
const FOOT = '#111121';
|
|
@@ -29,8 +31,8 @@ export default function FieldStep({ onDone }) {
|
|
|
29
31
|
setSaving('pick');
|
|
30
32
|
setError(null);
|
|
31
33
|
const d = await saveSettings({ sectorFocus: { sectors, strength: 'lean' }, fieldAsked: true });
|
|
32
|
-
// Saved even if the rescore it set off failed:
|
|
33
|
-
//
|
|
34
|
+
// Saved even if the rescore it set off failed: the map rescores a network
|
|
35
|
+
// scored with another focus when it next loads (lib/rpc.js rescoreIfStale).
|
|
34
36
|
if (d.settings) { onDone(d.settings.sectorFocus.sectors); return; }
|
|
35
37
|
setError(d.error);
|
|
36
38
|
setSaving(null);
|
|
@@ -47,9 +49,9 @@ export default function FieldStep({ onDone }) {
|
|
|
47
49
|
|
|
48
50
|
return (
|
|
49
51
|
<section aria-labelledby="field-question" data-field-question style={{
|
|
50
|
-
margin: '8px 0 0', padding: '20px 22px 0', borderRadius: 12, border: LINE, background: 'rgba(255,255,255,0.03)',
|
|
52
|
+
margin: '8px 0 0', padding: '20px 22px 0', borderRadius: 12, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)',
|
|
51
53
|
}}>
|
|
52
|
-
<div style={{ fontSize: 12, color: '#788', textTransform: 'uppercase', letterSpacing: 0.6 }}>
|
|
54
|
+
<div style={{ fontSize: 12, color: 'var(--sd-fg-3, #788)', textTransform: 'uppercase', letterSpacing: 0.6 }}>One question · optional</div>
|
|
53
55
|
<h2 id="field-question" style={{ fontSize: 18, fontWeight: 700, margin: '6px 0 4px' }}>What field are you in?</h2>
|
|
54
56
|
<Body style={{ marginTop: 0, marginBottom: 14 }}>
|
|
55
57
|
Pick up to three. Companies in your field count for more when your network is scored, so the people there rank
|
|
@@ -87,8 +89,8 @@ export function FieldAnswer({ sectors }) {
|
|
|
87
89
|
// The labels have commas of their own ("Tech, Software & AI"), so a dot separates them.
|
|
88
90
|
return (
|
|
89
91
|
<Status tone="ok">
|
|
90
|
-
Your field: {sectors.map((k) => sectorByKey(k).label).join(' · ')}. Your
|
|
91
|
-
anytime in <Link href="/settings#sector" style={link}>Settings</Link>.
|
|
92
|
+
Your field: {sectors.map((k) => sectorByKey(k).label).join(' · ')}. Your network is scored with it now, and
|
|
93
|
+
every scan after. Change it anytime in <Link href="/settings#sector" style={link}>Settings</Link>.
|
|
92
94
|
</Status>
|
|
93
95
|
);
|
|
94
96
|
}
|
|
@@ -34,13 +34,20 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
34
34
|
const what = (d) => DEGREE_IS[mode]?.[d];
|
|
35
35
|
// Separation: your connections are the ways in, and all of them stay, whatever their tier.
|
|
36
36
|
const waysIn = mode === 'separation';
|
|
37
|
+
// Degrees and Separation draw no one past the 2nd degree: the 3rd, the people
|
|
38
|
+
// company scans find, is on Network Circle. Its dot says so instead of "no one
|
|
39
|
+
// yet", which read as locked (Blake, 2026-10-03: "the 3rd one is locked even
|
|
40
|
+
// though … we have 3rd degrees unlocked by now").
|
|
41
|
+
const elsewhere = (d) => d === 3 && (mode === 'degrees' || mode === 'separation');
|
|
37
42
|
const emptyTitle = (d, t) => (waysIn && d === 1
|
|
38
43
|
? 'Every connection stays a way in here, whatever their tier: the tiers choose who is ranked'
|
|
39
|
-
:
|
|
44
|
+
: elsewhere(d)
|
|
45
|
+
? `${t ? `${t}-Tier at 3rd degree` : '3rd degree'}, the people company scans find, isn't drawn here. Network Circle shows ${t ? 'them' : 'it'}.`
|
|
46
|
+
: `No ${t ? `${t}-Tier ` : 'one '}at ${DEGREE_NAMES[d]} degree yet`);
|
|
40
47
|
return (
|
|
41
48
|
<div style={{ marginBottom: 18 }}>
|
|
42
49
|
<div style={{ display: 'flex', alignItems: 'center', marginBottom: 6 }}>
|
|
43
|
-
<div style={{ flex: 1, fontSize: 9, fontWeight: 700, color: '#555', letterSpacing: 1, textTransform: 'uppercase' }}>
|
|
50
|
+
<div style={{ flex: 1, fontSize: 9, fontWeight: 700, color: 'var(--sd-fg-5, #555)', letterSpacing: 1, textTransform: 'uppercase' }}>
|
|
44
51
|
Tiers
|
|
45
52
|
</div>
|
|
46
53
|
{/* A degree, for every tier at once */}
|
|
@@ -54,7 +61,7 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
54
61
|
onClick={() => onChange(toggleDegree(grid, d, counts))}
|
|
55
62
|
style={{
|
|
56
63
|
width: dot, height: 18, padding: 0, border: 'none', background: 'none', cursor: any ? 'pointer' : 'default',
|
|
57
|
-
fontSize: 10, fontWeight: 800, color: !any ? '#333' : on ? '#cfe6f7' : '#778',
|
|
64
|
+
fontSize: 10, fontWeight: 800, color: !any ? 'var(--sd-fg-5, #333)' : on ? 'var(--sd-fg-1, #cfe6f7)' : 'var(--sd-fg-4, #778)',
|
|
58
65
|
}}>
|
|
59
66
|
{d}
|
|
60
67
|
</button>
|
|
@@ -72,16 +79,16 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
72
79
|
return (
|
|
73
80
|
<div key={t} style={{
|
|
74
81
|
display: 'flex', alignItems: 'center', borderRadius: 8,
|
|
75
|
-
background: off ? 'rgba(255,255,255,0.02)' : `${color}14`,
|
|
82
|
+
background: off ? 'rgba(var(--sd-ink, 255, 255, 255), 0.02)' : `${color}14`,
|
|
76
83
|
borderLeft: `3px solid ${off ? 'transparent' : color}`,
|
|
77
84
|
}}>
|
|
78
85
|
<button type="button" aria-pressed={!off} title={off ? `Show ${t}-Tier` : `Hide ${t}-Tier`}
|
|
79
86
|
onClick={() => onChange(toggleTier(grid, t, counts))}
|
|
80
87
|
style={{
|
|
81
88
|
flex: 1, minWidth: 0, display: 'flex', alignItems: 'center', gap: 8, padding: '12px 6px 12px 10px',
|
|
82
|
-
border: 'none', background: 'none', cursor: 'pointer', color: off ? '#555' : color, textAlign: 'left',
|
|
89
|
+
border: 'none', background: 'none', cursor: 'pointer', color: off ? 'var(--sd-fg-5, #555)' : color, textAlign: 'left',
|
|
83
90
|
}}>
|
|
84
|
-
<span style={{ width: 11, height: 11, borderRadius: '50%', background: color, opacity: off ? 0.2 : 1, flexShrink: 0 }} />
|
|
91
|
+
<span className="sd-dot-html" style={{ width: 11, height: 11, borderRadius: '50%', background: color, opacity: off ? 0.2 : 1, flexShrink: 0 }} />
|
|
85
92
|
<span style={{ fontSize: 13.5, fontWeight: 700, whiteSpace: 'nowrap', textDecoration: off ? 'line-through' : 'none' }}>{t}-Tier</span>
|
|
86
93
|
</button>
|
|
87
94
|
<div style={{ display: 'flex', gap: 3 }}>
|
|
@@ -98,9 +105,9 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
98
105
|
style={{
|
|
99
106
|
width: dot, height: dot, padding: 0, borderRadius: '50%', boxSizing: 'border-box',
|
|
100
107
|
cursor: people ? 'pointer' : 'default', fontSize: 10, fontWeight: 800, lineHeight: 1,
|
|
101
|
-
border: waysIn && d === 1 ? `1px solid ${color}40` : !people ? '1px dashed rgba(255,255,255,0.1)' : on ? `1.5px solid ${color}` : `1.5px solid ${color}70`,
|
|
108
|
+
border: waysIn && d === 1 ? `1px solid ${color}40` : !people ? '1px dashed rgba(var(--sd-ink, 255, 255, 255), 0.1)' : on ? `1.5px solid ${color}` : `1.5px solid ${color}70`,
|
|
102
109
|
background: on ? color : waysIn && d === 1 ? `${color}1f` : 'transparent',
|
|
103
|
-
color: waysIn && d === 1 ? `${color}90` : !people ? 'rgba(255,255,255,0.12)' : on ? '#0a0a1a' : `${color}b0`,
|
|
110
|
+
color: waysIn && d === 1 ? `${color}90` : !people ? 'rgba(var(--sd-ink, 255, 255, 255), 0.12)' : on ? '#0a0a1a' : `${color}b0`,
|
|
104
111
|
opacity: off && people ? 0.45 : 1,
|
|
105
112
|
}}>
|
|
106
113
|
{d}
|
|
@@ -108,7 +115,7 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
108
115
|
);
|
|
109
116
|
})}
|
|
110
117
|
</div>
|
|
111
|
-
<div style={{ width: 44, textAlign: 'right', paddingRight: 8, fontSize: 10.5, color: off || !n ? '#445' : '#889', fontVariantNumeric: 'tabular-nums' }}>
|
|
118
|
+
<div style={{ width: 44, textAlign: 'right', paddingRight: 8, fontSize: 10.5, color: off || !n ? 'var(--sd-fg-5, #445)' : 'var(--sd-fg-3, #889)', fontVariantNumeric: 'tabular-nums' }}>
|
|
112
119
|
{n.toLocaleString('en-US')}
|
|
113
120
|
</div>
|
|
114
121
|
</div>
|
|
@@ -117,17 +124,17 @@ export function TierGrid({ grid, counts, onChange, mode, isMobile }) {
|
|
|
117
124
|
</div>
|
|
118
125
|
|
|
119
126
|
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginTop: 8 }}>
|
|
120
|
-
<div style={{ fontSize: 10, color: '#667', lineHeight: 1.4 }}>
|
|
127
|
+
<div style={{ fontSize: 10, color: 'var(--sd-fg-4, #667)', lineHeight: 1.4 }}>
|
|
121
128
|
{waysIn
|
|
122
129
|
? 'Tap a tier to leave it out of the ranking. Every connection stays a way in.'
|
|
123
130
|
: 'Tap a tier to hide it, or a dot to show that degree.'}
|
|
124
131
|
</div>
|
|
125
|
-
<div style={{ fontSize: 10.5, color: '#889', whiteSpace: 'nowrap', marginLeft: 8 }}>
|
|
132
|
+
<div style={{ fontSize: 10.5, color: 'var(--sd-fg-3, #889)', whiteSpace: 'nowrap', marginLeft: 8 }}>
|
|
126
133
|
{total.toLocaleString('en-US')} showing
|
|
127
134
|
{grid.hidden.length > 0 && (
|
|
128
135
|
<button type="button" onClick={() => onChange(showAllTiers(grid))} style={{
|
|
129
136
|
marginLeft: 8, padding: '2px 8px', borderRadius: 10, fontSize: 10, cursor: 'pointer',
|
|
130
|
-
border: '1px solid rgba(255,255,255,0.12)', background: 'rgba(255,255,255,0.05)', color: '#aab',
|
|
137
|
+
border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-3, #aab)',
|
|
131
138
|
}}>All tiers</button>
|
|
132
139
|
)}
|
|
133
140
|
</div>
|
|
@@ -149,7 +156,7 @@ export default function FilterPanel({ collapsed, onToggle, mode, visualMode, gri
|
|
|
149
156
|
display: 'flex', alignItems: 'center', gap: 0,
|
|
150
157
|
height: 36, borderRadius: 18,
|
|
151
158
|
background: 'rgba(52,152,219,0.15)', border: '2px solid rgba(52,152,219,0.5)',
|
|
152
|
-
color: '#3498DB', fontWeight: 700,
|
|
159
|
+
color: 'var(--sd-blue, #3498DB)', fontWeight: 700,
|
|
153
160
|
boxShadow: '0 0 12px rgba(52,152,219,0.3)',
|
|
154
161
|
backdropFilter: 'blur(8px)', WebkitBackdropFilter: 'blur(8px)',
|
|
155
162
|
overflow: 'hidden', transition: 'width 0.25s ease',
|
|
@@ -170,13 +177,13 @@ export default function FilterPanel({ collapsed, onToggle, mode, visualMode, gri
|
|
|
170
177
|
position: 'fixed', top: 0, left: 0, bottom: 0, zIndex: 100,
|
|
171
178
|
width: '100vw', pointerEvents: 'auto',
|
|
172
179
|
} : { flexShrink: 0, height: '100%' }}>
|
|
173
|
-
{isMobile && <div onClick={onToggle} style={{ position: 'absolute', inset: 0, background: 'rgba(0,0,0,0.5)' }} />}
|
|
174
|
-
<div style={{
|
|
180
|
+
{isMobile && <div onClick={onToggle} style={{ position: 'absolute', inset: 0, background: 'rgba(var(--sd-shade, 0, 0, 0), 0.5)' }} />}
|
|
181
|
+
<div data-glass-panel={isMobile ? undefined : 'side'} style={{
|
|
175
182
|
width: isMobile ? '80vw' : 320, minWidth: isMobile ? 0 : 320, maxWidth: isMobile ? 300 : 320, height: '100%',
|
|
176
183
|
borderRight: '1px solid rgba(52,152,219,0.15)',
|
|
177
184
|
padding: isMobile ? '12px 10px' : '16px 14px',
|
|
178
185
|
overflowY: 'auto', overflowX: 'hidden',
|
|
179
|
-
background: isMobile ? 'rgba(10,15,30,0.98)' : 'var(--sd-panel)', fontSize: 13,
|
|
186
|
+
background: isMobile ? 'var(--sd-surface, rgba(10,15,30,0.98))' : 'var(--sd-panel)', fontSize: 13,
|
|
180
187
|
backdropFilter: 'var(--sd-panel-blur)', WebkitBackdropFilter: 'var(--sd-panel-blur)',
|
|
181
188
|
boxShadow: 'inset 0 0 60px rgba(52,152,219,0.04), 4px 0 24px rgba(0,0,0,0.3)',
|
|
182
189
|
}}>
|
|
@@ -185,8 +192,8 @@ export default function FilterPanel({ collapsed, onToggle, mode, visualMode, gri
|
|
|
185
192
|
onClick={onToggle}
|
|
186
193
|
style={{
|
|
187
194
|
display: 'flex', alignItems: 'center', gap: 6,
|
|
188
|
-
background: 'rgba(255,255,255,0.06)', border: '1px solid rgba(255,255,255,0.1)',
|
|
189
|
-
borderRadius: 6, color: '#aaa', fontSize: 12, cursor: 'pointer',
|
|
195
|
+
background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)',
|
|
196
|
+
borderRadius: 6, color: 'var(--sd-fg-3, #aaa)', fontSize: 12, cursor: 'pointer',
|
|
190
197
|
padding: '6px 12px', marginBottom: 14, fontWeight: 600, width: '100%',
|
|
191
198
|
}}
|
|
192
199
|
>
|