From 7ec5a28d1f6c3d698a51f4fdbb7f8e5ba3f5003e Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 22 Jun 2026 13:36:57 -0700 Subject: [PATCH] Add roles --- AGENTS.md | 3 + src/app.css | 4 +- src/app/components/ContentMinimal.svelte | 16 +- src/app/components/PrimaryNav.svelte | 2 +- src/app/components/Profile.svelte | 4 +- src/app/components/ProfileDetail.svelte | 20 +- src/app/components/ProfileInfo.svelte | 5 +- src/app/components/ReportMenu.svelte | 7 +- ...embersAdd.svelte => RoleAddMembers.svelte} | 43 +++-- src/app/components/RoleBadge.svelte | 17 ++ src/app/components/RoleCreate.svelte | 49 +++++ src/app/components/RoleEdit.svelte | 49 +++++ src/app/components/RoleForm.svelte | 86 +++++++++ src/app/components/RoleItem.svelte | 17 ++ src/app/components/SpaceBar.svelte | 2 +- src/app/components/SpaceDetail.svelte | 104 ---------- ...RelayStatus.svelte => SpaceDetails.svelte} | 62 +++++- src/app/components/SpaceEdit.svelte | 2 +- src/app/components/SpaceInvite.svelte | 63 +++++- src/app/components/SpaceMember.svelte | 162 ++++++++++++++++ src/app/components/SpaceMemberRoles.svelte | 114 +++++++++++ src/app/components/SpaceMembers.svelte | 181 ------------------ src/app/components/SpaceMembersBanned.svelte | 3 + src/app/components/SpaceMenu.svelte | 34 +--- src/app/components/SpaceRoles.svelte | 135 +++++++++++++ src/app/content.ts | 6 + src/app/members.ts | 167 ++++++++++++++++ src/app/sync.ts | 5 +- src/lib/components/SecondaryNav.svelte | 2 +- src/routes/spaces/+page.svelte | 2 +- src/routes/spaces/[relay]/about/+page.svelte | 163 ++++++++++++++++ .../spaces/[relay]/calendar/+page.svelte | 4 +- .../[relay]/calendar/[address]/+page.svelte | 2 +- .../spaces/[relay]/classifieds/+page.svelte | 2 +- .../classifieds/[address]/+page.svelte | 2 +- src/routes/spaces/[relay]/goals/+page.svelte | 2 +- .../spaces/[relay]/goals/[id]/+page.svelte | 2 +- src/routes/spaces/[relay]/polls/+page.svelte | 2 +- .../spaces/[relay]/polls/[id]/+page.svelte | 2 +- src/routes/spaces/[relay]/recent/+page.svelte | 2 +- .../spaces/[relay]/threads/+page.svelte | 2 +- src/routes/spaces/create/+page.svelte | 2 +- 42 files changed, 1169 insertions(+), 384 deletions(-) rename src/app/components/{SpaceMembersAdd.svelte => RoleAddMembers.svelte} (62%) create mode 100644 src/app/components/RoleBadge.svelte create mode 100644 src/app/components/RoleCreate.svelte create mode 100644 src/app/components/RoleEdit.svelte create mode 100644 src/app/components/RoleForm.svelte create mode 100644 src/app/components/RoleItem.svelte delete mode 100644 src/app/components/SpaceDetail.svelte rename src/app/components/{SpaceRelayStatus.svelte => SpaceDetails.svelte} (51%) create mode 100644 src/app/components/SpaceMember.svelte create mode 100644 src/app/components/SpaceMemberRoles.svelte delete mode 100644 src/app/components/SpaceMembers.svelte create mode 100644 src/app/components/SpaceRoles.svelte create mode 100644 src/routes/spaces/[relay]/about/+page.svelte diff --git a/AGENTS.md b/AGENTS.md index 0939c90b..614fc69f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -170,6 +170,9 @@ src/ - Do not define svelte event handlers inline, instead name them and put them in the script section of templates - Avoid using `as`, except where necessary. Instead, annotate function parameters, and ensure upstream values are typed correctly. - Instead of `getTag(tagName, event.tags)?.[1] || ""`, use `getTagValue(tagName, event.tags)` +- Do not render a profile's `about` directly (e.g. `profile.about`); use the `ProfileInfo` component instead. +- Use `type Props` instead of interface when defining props for svelte components. +- When a component's value/prop shape mirrors a subset of an existing type, derive it with `Pick`/`Partial` and `export` that type from the component's `