import Button from "../../components/Button"; import Card from "../../components/Card"; import PageTitle from "../../components/PageTitle"; import StatusBadge from "../../components/StatusBadge"; import DataGrid, { type DataGridColumn } from "../../components/table/DataGrid"; const personalContacts = [ { name: "Ada Lovelace", email: "ada@example.local", source: "Personal", tags: "Used recently" }, { name: "Grace Hopper", email: "grace@example.local", source: "Personal", tags: "Favorite" } ]; const groupContacts = [ { name: "Project Office", email: "project-office@example.local", source: "Group", tags: "Shared" }, { name: "Finance Team", email: "finance@example.local", source: "Group", tags: "Shared list" } ]; const tenantContacts = [ { name: "Helpdesk", email: "helpdesk@example.local", source: "Tenant", tags: "Directory" }, { name: "Data Protection", email: "privacy@example.local", source: "Tenant", tags: "Directory" } ]; function contactColumns(): DataGridColumn<{ name: string; email: string; source: string; tags: string }>[] { return [ { id: "name", header: "Name", width: "minmax(180px, 1fr)", sortable: true, filterable: true, sticky: "start", render: (contact) => {contact.name}, value: (contact) => contact.name }, { id: "email", header: "Email", width: 240, sortable: true, filterable: true, value: (contact) => contact.email }, { id: "scope", header: "Scope", width: 140, sortable: true, filterable: true, columnType: "from-list", list: { options: [{ value: "Personal", label: "Personal" }, { value: "Group", label: "Group" }, { value: "Tenant", label: "Tenant" }] }, value: (contact) => contact.source }, { id: "tags", header: "Tags", width: 180, sortable: true, filterable: true, value: (contact) => contact.tags }, { id: "status", header: "Status", width: 130, sortable: true, filterable: true, columnType: "from-list", list: { options: [{ value: "mock", label: "Mock" }], display: "pill" }, render: () => , value: () => "mock" } ]; } export default function AddressBookPage() { const allContacts = [...personalContacts, ...groupContacts, ...tenantContacts]; return (
Address Book

Mock workspace for personal, group and tenant address books. These contacts can later feed recipient autocomplete and reusable address selections.

{personalContacts.length}

Private contacts and remembered addresses.

{groupContacts.length}

Shared group address books and lists.

{tenantContacts.length}

Tenant directory and approved shared contacts.

Mock

CardDAV/LDAP/import connectors can be added later.

Choose addresses from personal, group or tenant source Remember addresses used in campaigns after opt-in Share selected contacts with a group Use contacts in To, CC, BCC, sender and Reply-To fields
Manage sources}> contact.source + "-" + contact.email} emptyText="No contacts found." className="compact-table-wrap module-table" />
); } function AddressBookScope({ title, description, status }: { title: string; description: string; status: string }) { return (
{title}

{description}

); }