diff --git a/web/src/app/app/contacts/segments/[id]/page.tsx b/web/src/app/app/contacts/segments/[id]/page.tsx
index 2e41856a..2f312085 100644
--- a/web/src/app/app/contacts/segments/[id]/page.tsx
+++ b/web/src/app/app/contacts/segments/[id]/page.tsx
@@ -127,7 +127,7 @@ function SegmentDetail() {
{(s.included_count > 0 || s.excluded_count > 0) && }
-
+ setEditorOpen(false)} segment={s} />
setCampaignOpen(false)} segment={s} />
@@ -190,6 +190,10 @@ function OverridesPanel({ segment }: { segment: Segment }) {
}
const list = overrides.data ?? [];
+ // The API caps one listing, so a segment a big import pinned into shows a
+ // slice of its overrides. Say so rather than implying this is all of them.
+ const pinned = segment.included_count + segment.excluded_count;
+ const truncated = pinned > list.length;
return (
diff --git a/web/src/components/app/contacts/ContactsTable.tsx b/web/src/components/app/contacts/ContactsTable.tsx
index bb35be32..0f85edc2 100644
--- a/web/src/components/app/contacts/ContactsTable.tsx
+++ b/web/src/components/app/contacts/ContactsTable.tsx
@@ -117,7 +117,7 @@ export default function ContactsTable({
}: {
current_campaign?: MiniCampaign;
// Scope the list to one segment's members (the segment detail page).
- segment?: { id: string; name: string };
+ segment?: { id: string; name: string; color?: string };
}) {
const confirm = useConfirm();
const segmentMembers = useSetSegmentMembers();
@@ -487,7 +487,7 @@ export default function ContactsTable({
? "Pick people from your contacts, import a file, or add one by hand. The linked segments could not be loaded."
: "Pick people from your contacts, link a segment, import a file, or add one by hand."
: segment
- ? "Nobody matches its conditions yet. Adjust them or pin contacts in."
+ ? "Nothing matches it yet. Pin people in from your contacts, import a file, or add one by hand."
: "Add or upload contacts to get started."
}
emptyCta={
@@ -532,6 +532,29 @@ export default function ContactsTable({
Import file
+ ) : segment ? (
+