From 043460ac218e2eaa23da3b92f63228cf822d7220 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 30 Mar 2026 23:48:35 -0700 Subject: [PATCH] style: tighten household settings layout --- .../src/components/manage/ManageHousehold.jsx | 209 +++++--- .../components/manage/ManageHousehold.css | 465 ++++++++++++------ 2 files changed, 464 insertions(+), 210 deletions(-) diff --git a/frontend/src/components/manage/ManageHousehold.jsx b/frontend/src/components/manage/ManageHousehold.jsx index ac035d6..8fff2f0 100644 --- a/frontend/src/components/manage/ManageHousehold.jsx +++ b/frontend/src/components/manage/ManageHousehold.jsx @@ -28,6 +28,20 @@ const JOIN_POLICY_OPTIONS = [ { label: "Manual", value: "APPROVAL_REQUIRED" }, ]; +const ROLE_METADATA = { + owner: { icon: "👑", label: "Owner" }, + admin: { icon: "🛠️", label: "Admin" }, + member: { icon: "🙂", label: "Member" }, + viewer: { icon: "👀", label: "Viewer" }, +}; + +const STATUS_METADATA = { + Active: { tone: "active", icon: "🟢" }, + Used: { tone: "used", icon: "⚪" }, + Revoked: { tone: "revoked", icon: "🔴" }, + Expired: { tone: "expired", icon: "🟠" }, +}; + export default function ManageHousehold() { const { userId } = useContext(AuthContext); const { activeHousehold, refreshHouseholds } = useContext(HouseholdContext); @@ -309,10 +323,21 @@ export default function ManageHousehold() { ); }; + const managerCount = members.filter((member) => ["owner", "admin"].includes(member.role)).length; + const memberCount = members.filter((member) => member.role === "member").length; + return (
-

Household Name

+
+
+

Household

+

Identity

+

+ Keep the household name crisp and easy to recognize across invites and shared lists. +

+
+
{editingName ? (
) : (
-

{activeHousehold.name}

+
+

{activeHousehold.name}

+
+ 🏠 {members.length} people + 🛡️ {managerCount} managers + 🛒 {memberCount} shoppers +
+
{isManager && ( - {showInviteCode && ( - - {activeHousehold.invite_code} - - - )} - +
+
+ Current code + {showInviteCode ? activeHousehold.invite_code : "••••••••"} +
+
+ + + +
+
)} {isManager && (
-

Join and Invites

+
+
+

Entry Rules

+

Join and Invites

+

+ Decide how new people can enter, then generate compact links that match your current policy. +

+
+
{inviteError &&

{inviteError}

}