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