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
|
@@ -42,8 +42,8 @@ const VIEWS = [
|
|
|
42
42
|
];
|
|
43
43
|
|
|
44
44
|
const chip = (bg, color = '#dfe8e8') => ({ fontSize: 10.5, padding: '1px 6px', borderRadius: 4, background: bg, color, whiteSpace: 'nowrap' });
|
|
45
|
-
const btn = { background: 'rgba(255,255,255,0.06)', border: LINE, borderRadius: 6, color: '#cfe6f7', cursor: 'pointer', fontSize: 12, padding: '4px 10px' };
|
|
46
|
-
const field = { padding: '6px 10px', borderRadius: 6, border: LINE, background: 'rgba(0,0,0,0.3)', color: '#fff', fontSize: 13 };
|
|
45
|
+
const btn = { background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', border: LINE, borderRadius: 6, color: 'var(--sd-fg-1, #cfe6f7)', cursor: 'pointer', fontSize: 12, padding: '4px 10px' };
|
|
46
|
+
const field = { padding: '6px 10px', borderRadius: 6, border: LINE, background: 'rgba(var(--sd-shade, 0, 0, 0), 0.3)', color: 'var(--sd-fg-1, #fff)', fontSize: 13 };
|
|
47
47
|
|
|
48
48
|
/** A download made in this window, as the app's other exports are (lib/galaxy-export.js). */
|
|
49
49
|
function save(text, name) {
|
|
@@ -233,23 +233,24 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
const loading = !data || !crm || !net;
|
|
236
|
-
const box = { padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)', marginTop: 10 };
|
|
236
|
+
const box = { padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', marginTop: 10 };
|
|
237
237
|
const selectedGroup = picked?.type === 'group' ? groups.find((g) => g.id === picked.id) : null;
|
|
238
238
|
const selected = pickedKey ? contacts.get(pickedKey) : null;
|
|
239
239
|
|
|
240
240
|
return (
|
|
241
241
|
<>
|
|
242
242
|
<div style={box}>
|
|
243
|
-
<label style={{ display: 'flex', gap: 8, alignItems: 'center', fontSize: 13.5, color: '#fff', cursor: switching ? 'default' : 'pointer' }}>
|
|
243
|
+
<label style={{ display: 'flex', gap: 8, alignItems: 'center', fontSize: 13.5, color: 'var(--sd-fg-1, #fff)', cursor: switching ? 'default' : 'pointer' }}>
|
|
244
244
|
<input type="checkbox" checked={keep} disabled={switching} onChange={(e) => onKeep(e.target.checked)} />
|
|
245
245
|
<b>Keep my messages on this computer</b>
|
|
246
|
-
<span style={{ fontSize: 11.5, color: keep ? '#00ff88' : '#8b9a9a' }}>{keep ? 'on' : 'off'}</span>
|
|
246
|
+
<span style={{ fontSize: 11.5, color: keep ? 'var(--sd-green, #00ff88)' : 'var(--sd-fg-3, #8b9a9a)' }}>{keep ? 'on' : 'off'}</span>
|
|
247
247
|
</label>
|
|
248
248
|
<Body style={{ margin: '6px 0 0', fontSize: 12.5 }}>
|
|
249
249
|
Off unless you turn it on. When it’s on, the messages themselves, including what other people wrote to
|
|
250
250
|
you, and the notes sent with connection requests, are saved only in the app’s data folder on this
|
|
251
|
-
computer. They’re never sent anywhere
|
|
252
|
-
|
|
251
|
+
computer. They’re never sent anywhere or put in Six Degrees’ own backups, and an exported
|
|
252
|
+
backup file carries them only with its Social tab box ticked. <i>Forget it</i>, or switching this off,
|
|
253
|
+
deletes them. With it off, the CRM still shows who,
|
|
253
254
|
when and who wrote last. Your own stages, tags, notes and follow-ups are always kept, on this computer only.
|
|
254
255
|
</Body>
|
|
255
256
|
</div>
|
|
@@ -265,11 +266,11 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
265
266
|
onClick={() => { setView(id); setShown(LIST_PAGE); }}
|
|
266
267
|
style={{
|
|
267
268
|
...btn, padding: '4px 9px', fontSize: 12,
|
|
268
|
-
background: view === id ? 'rgba(52,152,219,0.28)' : 'rgba(255,255,255,0.04)',
|
|
269
|
-
color: view === id ? '#fff' : '#b8c4c4',
|
|
269
|
+
background: view === id ? 'rgba(52,152,219,0.28)' : 'rgba(var(--sd-ink, 255, 255, 255), 0.04)',
|
|
270
|
+
color: view === id ? 'var(--sd-fg-1, #fff)' : 'var(--sd-fg-2, #b8c4c4)',
|
|
270
271
|
}}
|
|
271
272
|
>
|
|
272
|
-
{label} <span style={{ color: view === id ? '#cfe6f7' : '#778' }}>{loading ? '' : counts[id].toLocaleString()}</span>
|
|
273
|
+
{label} <span style={{ color: view === id ? 'var(--sd-fg-1, #cfe6f7)' : 'var(--sd-fg-4, #778)' }}>{loading ? '' : counts[id].toLocaleString()}</span>
|
|
273
274
|
</button>
|
|
274
275
|
))}
|
|
275
276
|
</div>
|
|
@@ -285,7 +286,7 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
285
286
|
<button onClick={exportCsv} disabled={loading} style={btn} title="A spreadsheet of everyone here, with your stages, tags, follow-ups and notes">Export CSV</button>
|
|
286
287
|
</div>
|
|
287
288
|
{view === 'awaiting' && (
|
|
288
|
-
<div style={{ padding: '8px 12px', borderBottom: LINE, fontSize: 12.5, color: '#b8c4c4', display: 'flex', gap: 6, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
289
|
+
<div style={{ padding: '8px 12px', borderBottom: LINE, fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)', display: 'flex', gap: 6, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
289
290
|
You wrote last and nothing came back for
|
|
290
291
|
<input
|
|
291
292
|
type="number" min={1} max={365} value={awaitDays} aria-label="Days with no reply"
|
|
@@ -295,12 +296,12 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
295
296
|
days or more{asOf ? `, as of ${day(asOf)}` : ''}.
|
|
296
297
|
</div>
|
|
297
298
|
)}
|
|
298
|
-
{note && <div style={{ padding: '8px 12px', fontSize: 12.5, color: '#00ff88', borderBottom: LINE }}>{note}</div>}
|
|
299
|
+
{note && <div style={{ padding: '8px 12px', fontSize: 12.5, color: 'var(--sd-green, #00ff88)', borderBottom: LINE }}>{note}</div>}
|
|
299
300
|
|
|
300
|
-
{loading && <div style={{ padding: 12, fontSize: 13, color: '#8b9a9a' }}>Loading…</div>}
|
|
301
|
+
{loading && <div style={{ padding: 12, fontSize: 13, color: 'var(--sd-fg-3, #8b9a9a)' }}>Loading…</div>}
|
|
301
302
|
{!loading && view === 'pipeline' && <Board pipeline={pipeline} picked={pickedKey} onPick={(key) => pick({ type: 'person', key })} />}
|
|
302
303
|
{!loading && view !== 'pipeline' && rows.length === 0 && (
|
|
303
|
-
<div style={{ padding: 12, fontSize: 13, color: '#8b9a9a' }}>{words ? 'Nothing matches that.' : EMPTY[view]}</div>
|
|
304
|
+
<div style={{ padding: 12, fontSize: 13, color: 'var(--sd-fg-3, #8b9a9a)' }}>{words ? 'Nothing matches that.' : EMPTY[view]}</div>
|
|
304
305
|
)}
|
|
305
306
|
{!loading && view !== 'pipeline' && (
|
|
306
307
|
<div>
|
|
@@ -314,7 +315,7 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
314
315
|
/>
|
|
315
316
|
))}
|
|
316
317
|
{rows.length > shown && (
|
|
317
|
-
<button onClick={() => setShown(shown + LIST_PAGE)} style={{ width: '100%', padding: 10, background: 'none', border: 'none', color: '#3498DB', cursor: 'pointer', fontSize: 13 }}>
|
|
318
|
+
<button onClick={() => setShown(shown + LIST_PAGE)} style={{ width: '100%', padding: 10, background: 'none', border: 'none', color: 'var(--sd-blue, #3498DB)', cursor: 'pointer', fontSize: 13 }}>
|
|
318
319
|
Show {Math.min(LIST_PAGE, rows.length - shown).toLocaleString()} more of {rows.length.toLocaleString()}
|
|
319
320
|
</button>
|
|
320
321
|
)}
|
|
@@ -323,7 +324,7 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
323
324
|
</div>
|
|
324
325
|
|
|
325
326
|
<div ref={panel} className={view === 'pipeline' ? 'crm-wide' : undefined} style={{ ...box, marginTop: 0, minWidth: 0, scrollMarginTop: 80 }}>
|
|
326
|
-
{!picked && <div style={{ fontSize: 13, color: '#8b9a9a' }}>Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up.</div>}
|
|
327
|
+
{!picked && <div style={{ fontSize: 13, color: 'var(--sd-fg-3, #8b9a9a)' }}>Pick someone to see everything with them, and to add a stage, tags, notes or a follow-up.</div>}
|
|
327
328
|
{selected && (
|
|
328
329
|
<Person
|
|
329
330
|
key={selected.key}
|
|
@@ -342,14 +343,14 @@ export default function Crm({ net, asOf, keep, onKeep, switching, token, crmToke
|
|
|
342
343
|
)}
|
|
343
344
|
</div>
|
|
344
345
|
</div>
|
|
345
|
-
<div style={{ fontSize: 11.5, color: '#778', marginTop: 6 }}>
|
|
346
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #778)', marginTop: 6 }}>
|
|
346
347
|
Everyone from your export and the live sync, connections or not; groups are listed and marked. Sponsored
|
|
347
348
|
messages are marked and kept out of the Inbox. Awaiting reply and warmth are judged as of the newest thing
|
|
348
349
|
your data knows.
|
|
349
350
|
{Object.keys(crm?.people || {}).length > 0 && (
|
|
350
351
|
<>
|
|
351
|
-
{' '}Your notes are in the app’s data folder,
|
|
352
|
-
<button onClick={deleteNotes} style={{ background: 'none', border: 'none', color: '#ff9b9b', cursor: 'pointer', fontSize: 11.5, padding: 0 }}>Delete my CRM notes</button>
|
|
352
|
+
{' '}Your notes are in the app’s data folder, never in Six Degrees’ own backups; an exported backup file carries them only with its Social tab box ticked.{' '}
|
|
353
|
+
<button onClick={deleteNotes} style={{ background: 'none', border: 'none', color: 'var(--sd-fg-2, #ff9b9b)', cursor: 'pointer', fontSize: 11.5, padding: 0 }}>Delete my CRM notes</button>
|
|
353
354
|
</>
|
|
354
355
|
)}
|
|
355
356
|
</div>
|
|
@@ -374,9 +375,9 @@ function Badges({ c }) {
|
|
|
374
375
|
return (
|
|
375
376
|
<>
|
|
376
377
|
{c && !c.connection && <span style={chip('rgba(255,159,67,0.18)', '#ffc58a')}>{c.degree === 2 ? '2nd degree' : 'Not a connection'}</span>}
|
|
377
|
-
{c?.kind === 'sponsored' && <span style={chip('rgba(255,255,255,0.08)')}>Sponsored</span>}
|
|
378
|
+
{c?.kind === 'sponsored' && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.08)')}>Sponsored</span>}
|
|
378
379
|
{c?.kind === 'inmail' && <span style={chip('rgba(155,89,182,0.25)')}>InMail</span>}
|
|
379
|
-
{c?.crm?.stage && <span style={chip('rgba(255,255,255,0.06)', STAGE_COLOUR[c.crm.stage])}>{stageLabel(c.crm.stage)}</span>}
|
|
380
|
+
{c?.crm?.stage && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.06)', STAGE_COLOUR[c.crm.stage])}>{stageLabel(c.crm.stage)}</span>}
|
|
380
381
|
</>
|
|
381
382
|
);
|
|
382
383
|
}
|
|
@@ -397,7 +398,7 @@ function Row({ r, nameOf, active, onPick }) {
|
|
|
397
398
|
);
|
|
398
399
|
} else {
|
|
399
400
|
title = groupLabel(r.g, nameOf);
|
|
400
|
-
extra = <span style={chip('rgba(255,255,255,0.08)')}>{r.g.unknown ? 'To someone unnamed' : 'Group'}</span>;
|
|
401
|
+
extra = <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.08)')}>{r.g.unknown ? 'To someone unnamed' : 'Group'}</span>;
|
|
401
402
|
}
|
|
402
403
|
const company = r.type === 'person' ? (r.c?.row?.company || r.row?.company) : null;
|
|
403
404
|
return (
|
|
@@ -407,14 +408,14 @@ function Row({ r, nameOf, active, onPick }) {
|
|
|
407
408
|
aria-pressed={active}
|
|
408
409
|
onClick={onPick}
|
|
409
410
|
onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onPick(); } }}
|
|
410
|
-
style={{ padding: '8px 12px', borderBottom: '1px solid rgba(255,255,255,0.04)', cursor: 'pointer', background: active ? 'rgba(52,152,219,0.14)' : 'none' }}
|
|
411
|
+
style={{ padding: '8px 12px', borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)', cursor: 'pointer', background: active ? 'rgba(52,152,219,0.14)' : 'none' }}
|
|
411
412
|
>
|
|
412
413
|
<div style={{ display: 'flex', alignItems: 'center', gap: 6, fontSize: 13, minWidth: 0, flexWrap: 'wrap' }}>
|
|
413
414
|
<Dot tier={tier} />
|
|
414
415
|
<b style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', maxWidth: '100%' }}>{title}</b>
|
|
415
416
|
{extra}
|
|
416
417
|
</div>
|
|
417
|
-
<div style={{ fontSize: 11.5, color: '#8b9a9a', marginTop: 2, paddingLeft: 14, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
|
|
418
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 2, paddingLeft: 14, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
|
|
418
419
|
{[company, r.sub].filter(Boolean).join(' · ')}
|
|
419
420
|
</div>
|
|
420
421
|
</div>
|
|
@@ -435,9 +436,9 @@ function Board({ pipeline, picked, onPick }) {
|
|
|
435
436
|
<div key={s.id} style={{ minWidth: 0 }}>
|
|
436
437
|
<div style={{ fontSize: 12, fontWeight: 650, color: STAGE_COLOUR[s.id], margin: '0 0 6px', display: 'flex', justifyContent: 'space-between' }}>
|
|
437
438
|
<span>{s.label}</span>
|
|
438
|
-
<span style={{ color: '#778' }}>{pipeline[s.id].length.toLocaleString()}</span>
|
|
439
|
+
<span style={{ color: 'var(--sd-fg-4, #778)' }}>{pipeline[s.id].length.toLocaleString()}</span>
|
|
439
440
|
</div>
|
|
440
|
-
{pipeline[s.id].length === 0 && <div style={{ fontSize: 11.5, color: '#667', padding: '6px 0' }}>No one</div>}
|
|
441
|
+
{pipeline[s.id].length === 0 && <div style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #667)', padding: '6px 0' }}>No one</div>}
|
|
441
442
|
{pipeline[s.id].slice(0, 200).map((c) => (
|
|
442
443
|
<div
|
|
443
444
|
key={c.key}
|
|
@@ -447,23 +448,23 @@ function Board({ pipeline, picked, onPick }) {
|
|
|
447
448
|
onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onPick(c.key); } }}
|
|
448
449
|
style={{
|
|
449
450
|
padding: '7px 9px', marginBottom: 6, borderRadius: 6, border: LINE, cursor: 'pointer', fontSize: 12.5,
|
|
450
|
-
background: picked === c.key ? 'rgba(52,152,219,0.18)' : 'rgba(255,255,255,0.03)',
|
|
451
|
+
background: picked === c.key ? 'rgba(52,152,219,0.18)' : 'rgba(var(--sd-ink, 255, 255, 255), 0.03)',
|
|
451
452
|
}}
|
|
452
453
|
>
|
|
453
454
|
<div style={{ display: 'flex', gap: 6, alignItems: 'center' }}><Dot tier={c.row?.tier} /><b style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</b></div>
|
|
454
|
-
<div style={{ color: '#8b9a9a', fontSize: 11, marginTop: 2 }}>
|
|
455
|
+
<div style={{ color: 'var(--sd-fg-3, #8b9a9a)', fontSize: 11, marginTop: 2 }}>
|
|
455
456
|
{[c.row?.company, c.crm.followUp ? `Follow up ${ymd(c.crm.followUp)}` : null].filter(Boolean).join(' · ')}
|
|
456
457
|
</div>
|
|
457
458
|
</div>
|
|
458
459
|
))}
|
|
459
|
-
{pipeline[s.id].length > 200 && <div style={{ fontSize: 11, color: '#778' }}>and {(pipeline[s.id].length - 200).toLocaleString()} more (search to find them)</div>}
|
|
460
|
+
{pipeline[s.id].length > 200 && <div style={{ fontSize: 11, color: 'var(--sd-fg-4, #778)' }}>and {(pipeline[s.id].length - 200).toLocaleString()} more (search to find them)</div>}
|
|
460
461
|
</div>
|
|
461
462
|
))}
|
|
462
463
|
</div>
|
|
463
464
|
);
|
|
464
465
|
}
|
|
465
466
|
|
|
466
|
-
const h4 = { fontSize: 12, fontWeight: 650, color: '#b8c4c4', margin: '16px 0 6px', textTransform: 'uppercase', letterSpacing: 0.4 };
|
|
467
|
+
const h4 = { fontSize: 12, fontWeight: 650, color: 'var(--sd-fg-2, #b8c4c4)', margin: '16px 0 6px', textTransform: 'uppercase', letterSpacing: 0.4 };
|
|
467
468
|
|
|
468
469
|
function Person({ c, nameOf, groups, keep, token, inviteNotes, onChange, onPickGroup }) {
|
|
469
470
|
const row = c.row;
|
|
@@ -478,26 +479,26 @@ function Person({ c, nameOf, groups, keep, token, inviteNotes, onChange, onPickG
|
|
|
478
479
|
<div style={{ display: 'flex', gap: 8, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
479
480
|
<Dot tier={row?.tier} />
|
|
480
481
|
<h3 style={{ margin: 0, fontSize: 17 }}>{c.name}</h3>
|
|
481
|
-
{row?.tier && <span style={chip('rgba(255,255,255,0.06)', TIER[row.tier])}>{row.tier} tier</span>}
|
|
482
|
+
{row?.tier && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.06)', TIER[row.tier])}>{row.tier} tier</span>}
|
|
482
483
|
<Badges c={c} />
|
|
483
484
|
</div>
|
|
484
485
|
{(row?.headline || row?.company) && (
|
|
485
|
-
<div style={{ color: '#b8c4c4', marginTop: 4 }}>{row.headline || [row.role, row.company].filter(Boolean).join(' at ')}</div>
|
|
486
|
+
<div style={{ color: 'var(--sd-fg-2, #b8c4c4)', marginTop: 4 }}>{row.headline || [row.role, row.company].filter(Boolean).join(' at ')}</div>
|
|
486
487
|
)}
|
|
487
|
-
<div style={{ color: '#8b9a9a', marginTop: 4, fontSize: 12.5 }}>
|
|
488
|
+
<div style={{ color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 4, fontSize: 12.5 }}>
|
|
488
489
|
{how}
|
|
489
|
-
{c.introducers.length > 0 && <> Who can introduce you: <b style={{ color: '#dfe8e8' }}>{c.introducers.slice(0, 6).join(', ')}</b>{c.introducers.length > 6 ? ` and ${c.introducers.length - 6} more` : ''}.</>}
|
|
490
|
-
{row?.unlocked_from_name && c.connection && <> You met through <b style={{ color: '#dfe8e8' }}>{row.unlocked_from_name}</b>.</>}
|
|
490
|
+
{c.introducers.length > 0 && <> Who can introduce you: <b style={{ color: 'var(--sd-fg-1, #dfe8e8)' }}>{c.introducers.slice(0, 6).join(', ')}</b>{c.introducers.length > 6 ? ` and ${c.introducers.length - 6} more` : ''}.</>}
|
|
491
|
+
{row?.unlocked_from_name && c.connection && <> You met through <b style={{ color: 'var(--sd-fg-1, #dfe8e8)' }}>{row.unlocked_from_name}</b>.</>}
|
|
491
492
|
</div>
|
|
492
493
|
<div style={{ display: 'flex', gap: 12, marginTop: 6, flexWrap: 'wrap', fontSize: 12.5 }}>
|
|
493
|
-
{profile && <a href={profile} target="_blank" rel="noreferrer" style={{ color: '#3498DB', textDecoration: 'none' }}>Profile on LinkedIn ↗</a>}
|
|
494
|
-
{thread && <a href={thread} target="_blank" rel="noreferrer" style={{ color: '#3498DB', textDecoration: 'none' }}>Conversation on LinkedIn ↗</a>}
|
|
494
|
+
{profile && <a href={profile} target="_blank" rel="noreferrer" style={{ color: 'var(--sd-blue, #3498DB)', textDecoration: 'none' }}>Profile on LinkedIn ↗</a>}
|
|
495
|
+
{thread && <a href={thread} target="_blank" rel="noreferrer" style={{ color: 'var(--sd-blue, #3498DB)', textDecoration: 'none' }}>Conversation on LinkedIn ↗</a>}
|
|
495
496
|
</div>
|
|
496
497
|
|
|
497
498
|
<Yours c={c} onChange={onChange} />
|
|
498
499
|
|
|
499
500
|
<div style={h4}>Conversations</div>
|
|
500
|
-
{c.conversations.length === 0 && <div style={{ color: '#8b9a9a', fontSize: 12.5 }}>None one to one.</div>}
|
|
501
|
+
{c.conversations.length === 0 && <div style={{ color: 'var(--sd-fg-3, #8b9a9a)', fontSize: 12.5 }}>None one to one.</div>}
|
|
501
502
|
{c.conversations.map((conv) => (
|
|
502
503
|
<div key={conv.id} style={{ border: LINE, borderRadius: 6, marginBottom: 6, overflow: 'hidden' }}>
|
|
503
504
|
<div
|
|
@@ -506,29 +507,29 @@ function Person({ c, nameOf, groups, keep, token, inviteNotes, onChange, onPickG
|
|
|
506
507
|
aria-expanded={open === conv.id}
|
|
507
508
|
onClick={() => setOpen(open === conv.id ? null : conv.id)}
|
|
508
509
|
onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); setOpen(open === conv.id ? null : conv.id); } }}
|
|
509
|
-
style={{ display: 'flex', gap: 8, alignItems: 'center', flexWrap: 'wrap', padding: '7px 10px', cursor: 'pointer', fontSize: 12.5, background: open === conv.id ? 'rgba(255,255,255,0.04)' : 'none' }}
|
|
510
|
+
style={{ display: 'flex', gap: 8, alignItems: 'center', flexWrap: 'wrap', padding: '7px 10px', cursor: 'pointer', fontSize: 12.5, background: open === conv.id ? 'rgba(var(--sd-ink, 255, 255, 255), 0.04)' : 'none' }}
|
|
510
511
|
>
|
|
511
|
-
<span style={{ color: '#dfe8e8' }}>{day(conv.last) || 'No date'}</span>
|
|
512
|
-
{conv.lastFromThem != null && <span style={{ color: conv.lastFromThem ? '#ff9f43' : '#8b9a9a' }}>{conv.lastFromThem ? 'They wrote last' : 'You wrote last'}</span>}
|
|
513
|
-
{conv.count != null && <span style={{ color: '#8b9a9a' }}>{plural(conv.count, 'message')}</span>}
|
|
514
|
-
{conv.mine != null && conv.count != null && conv.mine === conv.count && <span style={chip('rgba(255,255,255,0.06)')}>Only you wrote</span>}
|
|
515
|
-
{conv.folder && conv.folder !== 'inbox' && <span style={chip('rgba(255,255,255,0.06)')}>{conv.folder}</span>}
|
|
512
|
+
<span style={{ color: 'var(--sd-fg-1, #dfe8e8)' }}>{day(conv.last) || 'No date'}</span>
|
|
513
|
+
{conv.lastFromThem != null && <span style={{ color: conv.lastFromThem ? '#ff9f43' : 'var(--sd-fg-3, #8b9a9a)' }}>{conv.lastFromThem ? 'They wrote last' : 'You wrote last'}</span>}
|
|
514
|
+
{conv.count != null && <span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}>{plural(conv.count, 'message')}</span>}
|
|
515
|
+
{conv.mine != null && conv.count != null && conv.mine === conv.count && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.06)')}>Only you wrote</span>}
|
|
516
|
+
{conv.folder && conv.folder !== 'inbox' && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.06)')}>{conv.folder}</span>}
|
|
516
517
|
{conv.kind === 'inmail' && <span style={chip('rgba(155,89,182,0.25)')}>InMail</span>}
|
|
517
|
-
{conv.kind === 'sponsored' && <span style={chip('rgba(255,255,255,0.08)')}>Sponsored</span>}
|
|
518
|
+
{conv.kind === 'sponsored' && <span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.08)')}>Sponsored</span>}
|
|
518
519
|
{conv.unread > 0 && <span style={chip('#3498DB', '#fff')}>{conv.unread} unread</span>}
|
|
519
520
|
</div>
|
|
520
521
|
{open === conv.id && <Thread key={`${conv.id}:${token}:${keep}`} id={conv.id} keep={keep} group={false} token={token} />}
|
|
521
522
|
</div>
|
|
522
523
|
))}
|
|
523
524
|
{c.groups.length > 0 && (
|
|
524
|
-
<div style={{ fontSize: 12.5, color: '#8b9a9a', marginTop: 4 }}>
|
|
525
|
+
<div style={{ fontSize: 12.5, color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 4 }}>
|
|
525
526
|
Also in {plural(c.groups.length, 'group')}:{' '}
|
|
526
527
|
{c.groups.slice(0, 8).map((id, i) => {
|
|
527
528
|
const g = groups.find((x) => x.id === id);
|
|
528
529
|
return (
|
|
529
530
|
<span key={id}>
|
|
530
531
|
{i > 0 ? ', ' : ''}
|
|
531
|
-
<button onClick={() => onPickGroup(id)} style={{ background: 'none', border: 'none', color: '#3498DB', cursor: 'pointer', padding: 0, fontSize: 12.5 }}>{g ? groupLabel(g, nameOf) : 'a group'}</button>
|
|
532
|
+
<button onClick={() => onPickGroup(id)} style={{ background: 'none', border: 'none', color: 'var(--sd-blue, #3498DB)', cursor: 'pointer', padding: 0, fontSize: 12.5 }}>{g ? groupLabel(g, nameOf) : 'a group'}</button>
|
|
532
533
|
</span>
|
|
533
534
|
);
|
|
534
535
|
})}
|
|
@@ -536,18 +537,18 @@ function Person({ c, nameOf, groups, keep, token, inviteNotes, onChange, onPickG
|
|
|
536
537
|
)}
|
|
537
538
|
|
|
538
539
|
<div style={h4}>Requests</div>
|
|
539
|
-
{c.invitesOut.length + c.invitesIn.length === 0 && !c.request && <div style={{ color: '#8b9a9a', fontSize: 12.5 }}>None on file.</div>}
|
|
540
|
+
{c.invitesOut.length + c.invitesIn.length === 0 && !c.request && <div style={{ color: 'var(--sd-fg-3, #8b9a9a)', fontSize: 12.5 }}>None on file.</div>}
|
|
540
541
|
{[...c.invitesOut, ...c.invitesIn].sort((a, b) => (b.t || 0) - (a.t || 0)).map((inv) => (
|
|
541
542
|
<div key={inv.id} style={{ fontSize: 12.5, marginBottom: 6 }}>
|
|
542
|
-
<span style={{ color: '#dfe8e8' }}>{inv.dir === 'out' ? 'You asked to connect' : 'They asked to connect'}</span>
|
|
543
|
-
<span style={{ color: '#8b9a9a' }}> · {day(inv.t) || 'no date'} · {c.connection ? 'accepted' : inv.dir === 'out' ? 'pending' : 'not accepted yet'}</span>
|
|
544
|
-
{keep && inviteNotes[inv.id] && <div style={{ marginTop: 3, padding: '6px 9px', borderRadius: 8, background: 'rgba(255,255,255,0.06)', whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }}>{inviteNotes[inv.id]}</div>}
|
|
543
|
+
<span style={{ color: 'var(--sd-fg-1, #dfe8e8)' }}>{inv.dir === 'out' ? 'You asked to connect' : 'They asked to connect'}</span>
|
|
544
|
+
<span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}> · {day(inv.t) || 'no date'} · {c.connection ? 'accepted' : inv.dir === 'out' ? 'pending' : 'not accepted yet'}</span>
|
|
545
|
+
{keep && inviteNotes[inv.id] && <div style={{ marginTop: 3, padding: '6px 9px', borderRadius: 8, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', whiteSpace: 'pre-wrap', overflowWrap: 'anywhere' }}>{inviteNotes[inv.id]}</div>}
|
|
545
546
|
</div>
|
|
546
547
|
))}
|
|
547
548
|
{c.request && (
|
|
548
549
|
<div style={{ fontSize: 12.5 }}>
|
|
549
|
-
<span style={{ color: '#dfe8e8' }}>Request tracked in the app</span>
|
|
550
|
-
<span style={{ color: '#8b9a9a' }}> · {c.request.status}</span>
|
|
550
|
+
<span style={{ color: 'var(--sd-fg-1, #dfe8e8)' }}>Request tracked in the app</span>
|
|
551
|
+
<span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}> · {c.request.status}</span>
|
|
551
552
|
</div>
|
|
552
553
|
)}
|
|
553
554
|
</div>
|
|
@@ -595,14 +596,14 @@ function Yours({ c, onChange }) {
|
|
|
595
596
|
return (
|
|
596
597
|
<div style={{ marginTop: 12, padding: '10px 12px', borderRadius: 8, background: 'rgba(52,152,219,0.06)', border: '1px solid rgba(52,152,219,0.18)' }}>
|
|
597
598
|
<div style={{ display: 'flex', gap: 12, flexWrap: 'wrap', alignItems: 'flex-end' }}>
|
|
598
|
-
<label style={{ fontSize: 11.5, color: '#8b9a9a', display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
599
|
+
<label style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)', display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
599
600
|
Stage
|
|
600
601
|
<select value={entry.stage || ''} onChange={(e) => put({ stage: e.target.value || null })} style={{ ...field, padding: '5px 8px' }}>
|
|
601
602
|
<option value="">Not set (looks like {stageLabel(suggested)})</option>
|
|
602
603
|
{STAGES.map((s) => <option key={s.id} value={s.id}>{s.label}</option>)}
|
|
603
604
|
</select>
|
|
604
605
|
</label>
|
|
605
|
-
<label style={{ fontSize: 11.5, color: '#8b9a9a', display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
606
|
+
<label style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)', display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
606
607
|
Next follow-up
|
|
607
608
|
<input type="date" value={entry.followUp || ''} onChange={(e) => put({ followUp: e.target.value || null })} style={{ ...field, padding: '4px 8px', colorScheme: 'dark' }} />
|
|
608
609
|
</label>
|
|
@@ -617,9 +618,9 @@ function Yours({ c, onChange }) {
|
|
|
617
618
|
)}
|
|
618
619
|
<div style={{ marginTop: 10, display: 'flex', gap: 6, flexWrap: 'wrap', alignItems: 'center' }}>
|
|
619
620
|
{tags.map((t) => (
|
|
620
|
-
<span key={t} style={{ ...chip('rgba(255,255,255,0.08)'), fontSize: 11.5, display: 'inline-flex', gap: 4, alignItems: 'center' }}>
|
|
621
|
+
<span key={t} style={{ ...chip('rgba(var(--sd-ink, 255, 255, 255), 0.08)'), fontSize: 11.5, display: 'inline-flex', gap: 4, alignItems: 'center' }}>
|
|
621
622
|
{t}
|
|
622
|
-
<button aria-label={`Remove ${t}`} onClick={() => put({ tags: tags.filter((x) => x !== t) })} style={{ background: 'none', border: 'none', color: '#8b9a9a', cursor: 'pointer', padding: 0, fontSize: 12 }}>×</button>
|
|
623
|
+
<button aria-label={`Remove ${t}`} onClick={() => put({ tags: tags.filter((x) => x !== t) })} style={{ background: 'none', border: 'none', color: 'var(--sd-fg-3, #8b9a9a)', cursor: 'pointer', padding: 0, fontSize: 12 }}>×</button>
|
|
623
624
|
</span>
|
|
624
625
|
))}
|
|
625
626
|
<input
|
|
@@ -641,7 +642,7 @@ function Yours({ c, onChange }) {
|
|
|
641
642
|
rows={4}
|
|
642
643
|
style={{ ...field, width: '100%', marginTop: 10, resize: 'vertical', fontFamily: 'inherit', lineHeight: 1.45, boxSizing: 'border-box' }}
|
|
643
644
|
/>
|
|
644
|
-
<div style={{ fontSize: 11, color: state && state !== 'Saved' && state !== 'Saving…' ? '#ff9b9b' : '#778', marginTop: 4, minHeight: 14 }}>{state || ''}</div>
|
|
645
|
+
<div style={{ fontSize: 11, color: state && state !== 'Saved' && state !== 'Saving…' ? 'var(--sd-fg-2, #ff9b9b)' : 'var(--sd-fg-4, #778)', marginTop: 4, minHeight: 14 }}>{state || ''}</div>
|
|
645
646
|
</div>
|
|
646
647
|
);
|
|
647
648
|
}
|
|
@@ -652,13 +653,13 @@ function Group({ g, contacts, nameOf, keep, token, onPick }) {
|
|
|
652
653
|
<div style={{ fontSize: 13 }}>
|
|
653
654
|
<div style={{ display: 'flex', gap: 8, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
654
655
|
<h3 style={{ margin: 0, fontSize: 17 }}>{groupLabel(g, nameOf)}</h3>
|
|
655
|
-
<span style={chip('rgba(255,255,255,0.08)')}>{g.unknown ? 'To someone unnamed' : 'Group'}</span>
|
|
656
|
+
<span style={chip('rgba(var(--sd-ink, 255, 255, 255), 0.08)')}>{g.unknown ? 'To someone unnamed' : 'Group'}</span>
|
|
656
657
|
{g.unread > 0 && <span style={chip('#3498DB', '#fff')}>{g.unread} unread</span>}
|
|
657
658
|
</div>
|
|
658
|
-
<div style={{ color: '#8b9a9a', marginTop: 4, fontSize: 12.5 }}>
|
|
659
|
+
<div style={{ color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 4, fontSize: 12.5 }}>
|
|
659
660
|
{[g.last ? `Last active ${day(g.last)}` : null, g.count != null ? plural(g.count, 'message') : null].filter(Boolean).join(' · ')}
|
|
660
661
|
</div>
|
|
661
|
-
{href && <a href={href} target="_blank" rel="noreferrer" style={{ color: '#3498DB', textDecoration: 'none', fontSize: 12.5, display: 'inline-block', marginTop: 6 }}>Conversation on LinkedIn ↗</a>}
|
|
662
|
+
{href && <a href={href} target="_blank" rel="noreferrer" style={{ color: 'var(--sd-blue, #3498DB)', textDecoration: 'none', fontSize: 12.5, display: 'inline-block', marginTop: 6 }}>Conversation on LinkedIn ↗</a>}
|
|
662
663
|
{g.people.length > 0 && (
|
|
663
664
|
<>
|
|
664
665
|
<div style={h4}>Who’s in it</div>
|
|
@@ -668,7 +669,7 @@ function Group({ g, contacts, nameOf, keep, token, onPick }) {
|
|
|
668
669
|
return (
|
|
669
670
|
<button key={k} onClick={() => onPick(k)} style={{ ...btn, display: 'inline-flex', gap: 6, alignItems: 'center' }}>
|
|
670
671
|
<Dot tier={p?.row?.tier} />{nameOf(k) || k.split('/').pop()}
|
|
671
|
-
{p && !p.connection && <span style={{ color: '#ffc58a', fontSize: 10.5 }}>not a connection</span>}
|
|
672
|
+
{p && !p.connection && <span style={{ color: 'var(--sd-fg-2, #ffc58a)', fontSize: 10.5 }}>not a connection</span>}
|
|
672
673
|
</button>
|
|
673
674
|
);
|
|
674
675
|
})}
|
|
@@ -237,17 +237,17 @@ export default function SocialHub({ embedded = false }) {
|
|
|
237
237
|
return counts;
|
|
238
238
|
}, [net, merged, asOf]);
|
|
239
239
|
|
|
240
|
-
if (IS_DEMO) return <div style={{ minHeight: '100vh', background: 'var(--sd-page)', color: '#aaa', padding: 40, fontFamily: FONT }}>Not part of the demo.</div>;
|
|
240
|
+
if (IS_DEMO) return <div style={{ minHeight: '100vh', background: 'var(--sd-page)', color: 'var(--sd-fg-3, #aaa)', padding: 40, fontFamily: FONT }}>Not part of the demo.</div>;
|
|
241
241
|
const running = job?.running;
|
|
242
|
-
const box = { padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)', marginTop: 10 };
|
|
242
|
+
const box = { padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', marginTop: 10 };
|
|
243
243
|
const h2 = { fontSize: 16, margin: '24px 0 6px' };
|
|
244
244
|
|
|
245
245
|
return (
|
|
246
|
-
<div style={embedded ? { color: '#fff', fontFamily: FONT } : { minHeight: '100vh', background: 'var(--sd-page)', color: '#fff', fontFamily: FONT }}>
|
|
246
|
+
<div style={embedded ? { color: 'var(--sd-fg-1, #fff)', fontFamily: FONT } : { minHeight: '100vh', background: 'var(--sd-page)', color: 'var(--sd-fg-1, #fff)', fontFamily: FONT }}>
|
|
247
247
|
{!embedded && (
|
|
248
248
|
<header style={{ padding: '16px 24px', borderBottom: LINE, display: 'flex', alignItems: 'center', gap: 16 }}>
|
|
249
|
-
<Link href="/" style={{ color: '#888', textDecoration: 'none', fontSize: 13, fontWeight: 600, padding: '6px 14px', borderRadius: 6, background: 'rgba(255,255,255,0.06)', border: LINE }}>← Back to Map</Link>
|
|
250
|
-
<h1 style={{ fontSize: 22, fontWeight: 700, margin: 0, color: '#FFD700' }}>Social <span style={{ fontSize: 12, color: '#8b9a9a', fontWeight: 600 }}>experimental</span></h1>
|
|
249
|
+
<Link href="/" style={{ color: 'var(--sd-fg-3, #888)', textDecoration: 'none', fontSize: 13, fontWeight: 600, padding: '6px 14px', borderRadius: 6, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', border: LINE }}>← Back to Map</Link>
|
|
250
|
+
<h1 style={{ fontSize: 22, fontWeight: 700, margin: 0, color: 'var(--sd-gold, #FFD700)' }}>Social <span style={{ fontSize: 12, color: 'var(--sd-fg-3, #8b9a9a)', fontWeight: 600 }}>experimental</span></h1>
|
|
251
251
|
</header>
|
|
252
252
|
)}
|
|
253
253
|
<main style={{ maxWidth: 1180, margin: '0 auto', padding: '8px 16px 64px' }}>
|
|
@@ -264,21 +264,21 @@ export default function SocialHub({ embedded = false }) {
|
|
|
264
264
|
On LinkedIn: <i>Settings → Data privacy → Get a copy of your data</i>, pick the larger archive, and unzip the
|
|
265
265
|
file it emails you. Then choose that folder here. It’s read in this window; nothing goes to LinkedIn.
|
|
266
266
|
</Body>
|
|
267
|
-
<label style={{ display: 'flex', gap: 8, alignItems: 'flex-start', fontSize: 12.5, color: '#b8c4c4', marginTop: 10 }}>
|
|
267
|
+
<label style={{ display: 'flex', gap: 8, alignItems: 'flex-start', fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)', marginTop: 10 }}>
|
|
268
268
|
<input type="checkbox" checked={keepEmails} onChange={(e) => setKeepEmails(e.target.checked)} style={{ marginTop: 3 }} />
|
|
269
269
|
<span>Also keep email addresses from it, on this computer only, for one-click email.</span>
|
|
270
270
|
</label>
|
|
271
271
|
<div style={{ marginTop: 10, display: 'flex', gap: 10, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
272
|
-
<label style={{ padding: '7px 14px', borderRadius: 8, background: 'rgba(52,152,219,0.18)', color: '#cfe6f7', cursor: busy ? 'default' : 'pointer', fontSize: 13 }}>
|
|
272
|
+
<label style={{ padding: '7px 14px', borderRadius: 8, background: 'rgba(52,152,219,0.18)', color: 'var(--sd-fg-1, #cfe6f7)', cursor: busy ? 'default' : 'pointer', fontSize: 13 }}>
|
|
273
273
|
{busy ? 'Reading…' : social ? 'Choose a newer export' : 'Choose the export folder'}
|
|
274
274
|
<input type="file" webkitdirectory="" directory="" multiple disabled={busy} style={{ display: 'none' }} onChange={(e) => importFolder(e.target.files)} />
|
|
275
275
|
</label>
|
|
276
|
-
{social && <span style={{ fontSize: 12, color: '#8b9a9a' }}>From an export up to {day(social.asOf)}{social.liveAt ? ` · messages synced ${day(Date.parse(social.liveAt))}` : ''}</span>}
|
|
277
|
-
{social && <button onClick={forget} style={{ background: 'none', border: 'none', color: '#ff9b9b', cursor: 'pointer', fontSize: 12 }}>Forget it</button>}
|
|
276
|
+
{social && <span style={{ fontSize: 12, color: 'var(--sd-fg-3, #8b9a9a)' }}>From an export up to {day(social.asOf)}{social.liveAt ? ` · messages synced ${day(Date.parse(social.liveAt))}` : ''}</span>}
|
|
277
|
+
{social && <button onClick={forget} style={{ background: 'none', border: 'none', color: 'var(--sd-fg-2, #ff9b9b)', cursor: 'pointer', fontSize: 12 }}>Forget it</button>}
|
|
278
278
|
</div>
|
|
279
279
|
</div>
|
|
280
280
|
|
|
281
|
-
<h2 style={h2}>Live messages sync <span style={{ fontSize: 11, color: '#FFD700' }}>experimental</span></h2>
|
|
281
|
+
<h2 style={h2}>Live messages sync <span style={{ fontSize: 11, color: 'var(--sd-gold, #FFD700)' }}>experimental</span></h2>
|
|
282
282
|
<div style={box}>
|
|
283
283
|
<Body style={{ margin: 0 }}>
|
|
284
284
|
Reads your messages list once, in your own Chrome: who each conversation is with, connections or not, when it
|
|
@@ -288,19 +288,19 @@ export default function SocialHub({ embedded = false }) {
|
|
|
288
288
|
(at most 60 scrolls, about 1,000 conversations), at the same slow, fixed pace, so it takes a few minutes.
|
|
289
289
|
</Body>
|
|
290
290
|
<div style={{ marginTop: 10, display: 'flex', gap: 12, alignItems: 'center', flexWrap: 'wrap' }}>
|
|
291
|
-
<button onClick={() => syncNow(false)} disabled={running} style={{ padding: '7px 14px', borderRadius: 8, border: 'none', background: running ? '#333' : 'rgba(0,255,136,0.15)', color: running ? '#777' : '#00ff88', cursor: running ? 'default' : 'pointer', fontSize: 13 }}>
|
|
291
|
+
<button onClick={() => syncNow(false)} disabled={running} style={{ padding: '7px 14px', borderRadius: 8, border: 'none', background: running ? '#333' : 'rgba(0,255,136,0.15)', color: running ? 'var(--sd-fg-4, #777)' : 'var(--sd-green, #00ff88)', cursor: running ? 'default' : 'pointer', fontSize: 13 }}>
|
|
292
292
|
{running ? 'The scanner is busy' : 'Sync messages now'}
|
|
293
293
|
</button>
|
|
294
|
-
<button onClick={() => syncNow(true)} disabled={running} style={{ padding: '7px 14px', borderRadius: 8, border: LINE, background: 'none', color: running ? '#777' : '#cfe6f7', cursor: running ? 'default' : 'pointer', fontSize: 13 }}>
|
|
294
|
+
<button onClick={() => syncNow(true)} disabled={running} style={{ padding: '7px 14px', borderRadius: 8, border: LINE, background: 'none', color: running ? 'var(--sd-fg-4, #777)' : 'var(--sd-fg-1, #cfe6f7)', cursor: running ? 'default' : 'pointer', fontSize: 13 }}>
|
|
295
295
|
Read my whole history
|
|
296
296
|
</button>
|
|
297
|
-
<label style={{ display: 'flex', gap: 6, alignItems: 'center', fontSize: 12.5, color: '#b8c4c4' }}>
|
|
297
|
+
<label style={{ display: 'flex', gap: 6, alignItems: 'center', fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)' }}>
|
|
298
298
|
<input type="checkbox" checked={social?.autoSync === true} onChange={(e) => setAuto(e.target.checked)} />
|
|
299
299
|
Once a day while the app is open (daytime only)
|
|
300
300
|
</label>
|
|
301
301
|
</div>
|
|
302
302
|
</div>
|
|
303
|
-
{note && <div style={{ marginTop: 10, fontSize: 13, color: note.good ? '#00ff88' : '#ff9b9b' }}>{note.text}</div>}
|
|
303
|
+
{note && <div style={{ marginTop: 10, fontSize: 13, color: note.good ? 'var(--sd-green, #00ff88)' : 'var(--sd-fg-2, #ff9b9b)' }}>{note.text}</div>}
|
|
304
304
|
|
|
305
305
|
<h2 style={h2}>People</h2>
|
|
306
306
|
<Crm net={net} asOf={social ? asOf : null} keep={keep} onKeep={setKeep} switching={switching || busy} token={listToken} crmToken={crmToken} />
|
|
@@ -312,11 +312,11 @@ export default function SocialHub({ embedded = false }) {
|
|
|
312
312
|
{Object.entries(WARMTH).map(([k, [label, color]]) => (
|
|
313
313
|
<div key={k} style={{ ...box, marginTop: 0 }}>
|
|
314
314
|
<div style={{ fontSize: 22, fontWeight: 700, color }}>{(warmth[k] || 0).toLocaleString()}</div>
|
|
315
|
-
<div style={{ fontSize: 12.5, color: '#b8c4c4' }}>{label}</div>
|
|
315
|
+
<div style={{ fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)' }}>{label}</div>
|
|
316
316
|
</div>
|
|
317
317
|
))}
|
|
318
318
|
</div>
|
|
319
|
-
<div style={{ fontSize: 11.5, color: '#778', marginTop: 6 }}>
|
|
319
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #778)', marginTop: 6 }}>
|
|
320
320
|
Of your connections. Warm: messaged in the last 30 days, or 3+ messages in 90. Cool: within a year. Dormant: longer ago.
|
|
321
321
|
</div>
|
|
322
322
|
|
|
@@ -327,9 +327,9 @@ export default function SocialHub({ embedded = false }) {
|
|
|
327
327
|
{social.chapters.map((c) => {
|
|
328
328
|
const warm = (c.people || []).filter((u) => ['warm', 'cool'].includes(warmthOf(merged.get(keyFor({ profile_url: u })), asOf))).length;
|
|
329
329
|
return (
|
|
330
|
-
<div key={`${c.company}-${c.from}`} style={{ display: 'flex', gap: 10, padding: '8px 14px', borderBottom: '1px solid rgba(255,255,255,0.04)', fontSize: 13, alignItems: 'baseline' }}>
|
|
331
|
-
<span style={{ flex: 1 }}><b>{c.company}</b> <span style={{ color: '#8b9a9a' }}>{c.title} · {new Date(c.from).getFullYear()}–{c.to ? new Date(c.to).getFullYear() : 'now'}</span></span>
|
|
332
|
-
<span style={{ color: '#b8c4c4' }}>{c.made.toLocaleString()} connections made</span>
|
|
330
|
+
<div key={`${c.company}-${c.from}`} style={{ display: 'flex', gap: 10, padding: '8px 14px', borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)', fontSize: 13, alignItems: 'baseline' }}>
|
|
331
|
+
<span style={{ flex: 1 }}><b>{c.company}</b> <span style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}>{c.title} · {new Date(c.from).getFullYear()}–{c.to ? new Date(c.to).getFullYear() : 'now'}</span></span>
|
|
332
|
+
<span style={{ color: 'var(--sd-fg-2, #b8c4c4)' }}>{c.made.toLocaleString()} connections made</span>
|
|
333
333
|
<span style={{ color: '#ff9f43', minWidth: 90, textAlign: 'right' }}>{c.made ? `${Math.round((100 * warm) / c.made)}% still in touch` : ''}</span>
|
|
334
334
|
</div>
|
|
335
335
|
);
|
|
@@ -345,10 +345,10 @@ export default function SocialHub({ embedded = false }) {
|
|
|
345
345
|
<div style={{ fontSize: 13 }}>
|
|
346
346
|
In the week after a post you made <b>{social.posts.afterPosts.toFixed(1)}</b> new connections on average; a usual week, <b>{social.posts.usualWeek.toFixed(1)}</b>.
|
|
347
347
|
</div>
|
|
348
|
-
<div style={{ fontSize: 11.5, color: '#778', marginTop: 4 }}>What came after a post, not proof it came from it.</div>
|
|
348
|
+
<div style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #778)', marginTop: 4 }}>What came after a post, not proof it came from it.</div>
|
|
349
349
|
{[...social.posts.posts].sort((a, b) => b.week - a.week).slice(0, 3).map((p) => (
|
|
350
|
-
<div key={p.t} style={{ fontSize: 12.5, color: '#b8c4c4', marginTop: 6 }}>
|
|
351
|
-
{day(p.t)}: {p.week} new connections that week {p.link ? <a href={p.link} target="_blank" rel="noreferrer" style={{ color: '#3498DB', textDecoration: 'none' }}>Post ↗</a> : null}
|
|
350
|
+
<div key={p.t} style={{ fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)', marginTop: 6 }}>
|
|
351
|
+
{day(p.t)}: {p.week} new connections that week {p.link ? <a href={p.link} target="_blank" rel="noreferrer" style={{ color: 'var(--sd-blue, #3498DB)', textDecoration: 'none' }}>Post ↗</a> : null}
|
|
352
352
|
</div>
|
|
353
353
|
))}
|
|
354
354
|
</div>
|
|
@@ -47,9 +47,9 @@ export default function Thread({ id, keep, group, token }) {
|
|
|
47
47
|
setT({ ...t, start: d.start, messages: [...d.messages, ...t.messages] });
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
const pad = { padding: '10px 14px 14px', fontSize: 12.5, color: '#8b9a9a' };
|
|
50
|
+
const pad = { padding: '10px 14px 14px', fontSize: 12.5, color: 'var(--sd-fg-3, #8b9a9a)' };
|
|
51
51
|
if (!keep) return <div style={pad}>Turn on <b>Keep my messages</b> to read them here.</div>;
|
|
52
|
-
if (err) return <div style={{ ...pad, color: '#ff9b9b' }}>{err}</div>;
|
|
52
|
+
if (err) return <div style={{ ...pad, color: 'var(--sd-fg-2, #ff9b9b)' }}>{err}</div>;
|
|
53
53
|
if (!t) return <div style={pad}>Opening…</div>;
|
|
54
54
|
if (!t.total) {
|
|
55
55
|
return (
|
|
@@ -60,10 +60,10 @@ export default function Thread({ id, keep, group, token }) {
|
|
|
60
60
|
);
|
|
61
61
|
}
|
|
62
62
|
return (
|
|
63
|
-
<div ref={scroller} style={{ maxHeight: 440, overflowY: 'auto', padding: '8px 14px 12px', background: 'rgba(0,0,0,0.2)' }}>
|
|
63
|
+
<div ref={scroller} style={{ maxHeight: 440, overflowY: 'auto', padding: '8px 14px 12px', background: 'rgba(var(--sd-shade, 0, 0, 0), 0.2)' }}>
|
|
64
64
|
{t.start > 0 && (
|
|
65
65
|
<div style={{ textAlign: 'center', margin: '4px 0 10px' }}>
|
|
66
|
-
<button onClick={earlier} style={{ background: 'rgba(255,255,255,0.06)', border: LINE, borderRadius: 6, color: '#cfe6f7', cursor: 'pointer', fontSize: 12, padding: '4px 12px' }}>
|
|
66
|
+
<button onClick={earlier} style={{ background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', border: LINE, borderRadius: 6, color: 'var(--sd-fg-1, #cfe6f7)', cursor: 'pointer', fontSize: 12, padding: '4px 12px' }}>
|
|
67
67
|
Show earlier ({t.start.toLocaleString()} more)
|
|
68
68
|
</button>
|
|
69
69
|
</div>
|
|
@@ -73,13 +73,13 @@ export default function Thread({ id, keep, group, token }) {
|
|
|
73
73
|
<div style={{ maxWidth: '72%' }}>
|
|
74
74
|
<div style={{
|
|
75
75
|
padding: '7px 11px', borderRadius: 12, fontSize: 13, lineHeight: 1.45, whiteSpace: 'pre-wrap', overflowWrap: 'anywhere',
|
|
76
|
-
background: m.fromMe ? 'rgba(52,152,219,0.35)' : 'rgba(255,255,255,0.08)', color: '#eef',
|
|
76
|
+
background: m.fromMe ? 'rgba(52,152,219,0.35)' : 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', color: 'var(--sd-fg-1, #eef)',
|
|
77
77
|
borderBottomRightRadius: m.fromMe ? 4 : 12, borderBottomLeftRadius: m.fromMe ? 12 : 4,
|
|
78
78
|
}}
|
|
79
79
|
>
|
|
80
|
-
{m.text || <i style={{ color: '#8b9a9a' }}>(no words: an attachment or a reaction)</i>}
|
|
80
|
+
{m.text || <i style={{ color: 'var(--sd-fg-3, #8b9a9a)' }}>(no words: an attachment or a reaction)</i>}
|
|
81
81
|
</div>
|
|
82
|
-
<div style={{ fontSize: 10.5, color: '#778', marginTop: 2, textAlign: m.fromMe ? 'right' : 'left' }}>
|
|
82
|
+
<div style={{ fontSize: 10.5, color: 'var(--sd-fg-4, #778)', marginTop: 2, textAlign: m.fromMe ? 'right' : 'left' }}>
|
|
83
83
|
{m.fromMe ? 'You' : group ? 'Someone in the group' : 'Them'} · {when(m.t)}
|
|
84
84
|
</div>
|
|
85
85
|
</div>
|
|
@@ -12,8 +12,8 @@ export default function SocialMoved() {
|
|
|
12
12
|
const router = useRouter();
|
|
13
13
|
useEffect(() => { router.replace('/queue?view=messages'); }, [router]);
|
|
14
14
|
return (
|
|
15
|
-
<div style={{ minHeight: '100vh', background: 'var(--sd-page)', color: '#aab', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 13 }}>
|
|
16
|
-
Social is part of <Link href="/queue?view=messages" style={{ color: '#FF6B35', marginLeft: 4 }}>Outlink</Link> now.
|
|
15
|
+
<div style={{ minHeight: '100vh', background: 'var(--sd-page)', color: 'var(--sd-fg-3, #aab)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 13 }}>
|
|
16
|
+
Social is part of <Link href="/queue?view=messages" style={{ color: 'var(--sd-orange, #FF6B35)', marginLeft: 4 }}>Outlink</Link> now.
|
|
17
17
|
</div>
|
|
18
18
|
);
|
|
19
19
|
}
|