From f8a8864bfd6eacc623d3e2c4143c6c9c6e2bec8a Mon Sep 17 00:00:00 2001 From: dawn <90008@gaze.systems> Date: Fri, 29 May 2026 22:12:54 +0000 Subject: [PATCH] add user profiles --- src/index.css | 6 ++++++ src/layout.tsx | 17 ++++++++++++++++- src/routes.tsx | 3 +++ src/components/repo.tsx | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------- src/pages/home.tsx | 30 ++++++++++++++++-------------- src/pages/profile.tsx | 1389 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/pages/search.tsx | 5 +++++ src/lib/api/graph.ts | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- src/lib/api/identity.ts | 35 +++++++++++++++++++++++++++++++++++ src/pages/repo/issues.tsx | 6 +++--- src/pages/repo/pulls.tsx | 2 +- 11 file(s) changed, 1751 insertion(s)(+), 50 deletion(s)(-) diff --git a/src/index.css b/src/index.css --- a/src/index.css +++ b/src/index.css @@ -3470,3 +3470,9 @@ color: rgb(244 114 182); } } + +.untangled-vouch-label { + display: grid; + grid-template-columns: auto 1fr auto; +} + diff --git a/src/layout.tsx b/src/layout.tsx --- a/src/layout.tsx +++ b/src/layout.tsx @@ -1,5 +1,5 @@ import clsx from 'clsx'; -import { Bell, LogOut, RotateCcw, Save, Search, Settings } from 'lucide-solid'; +import { Bell, LogOut, RotateCcw, Save, Search, Settings, UserRound } from 'lucide-solid'; import { A, useLocation, useNavigate } from '@solidjs/router'; import { createQuery, useQueryClient } from '@tanstack/solid-query'; import { For, Show, createEffect, createSignal, onCleanup, onMount, type Component, type JSX } from 'solid-js'; @@ -229,6 +229,21 @@
{viewerQuery.data?.handle ?? auth.currentDid()}
{auth.currentDid()}
+ + {(handle) => ( + { + const details = e.currentTarget.closest('details'); + if (details) details.open = false; + }} + > + + profile + + )} + + } + > + + + + + + + + + +
+ + +
+
{ + e.preventDefault(); + await props.onVouchSubmit(kind(), kind() === 'none' ? undefined : reason()); + popoverRef?.hidePopover(); + }} + class="flex flex-col gap-6 group" + > +
+

Vouch for {userIdent()}

+

+ + Vouching builds a web-of-trust across Tangled. Vouch for users you + have had positive interactions with.{' '} + + Read more + + + } + > + {(record) => ( + <> + You {record().value.kind === 'vouch' ? 'vouched' : 'denounced'} {userIdent()}{' '} + {formatRelativeTime(record().value.createdAt)}. + You can change your decision below. + + )} + +

+
+ +
+ setKind('vouch')} + class="peer/vouch hidden appearance-none" + /> + setKind('denounce')} + class="peer/denounce hidden appearance-none" + /> + setKind('none')} + class="peer/none hidden appearance-none" + /> + + + + + +