@aglyn/plugins-inbox 1.0.0-beta.199 → 1.0.0-beta.201

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aglyn/plugins-inbox",
3
- "version": "1.0.0-beta.199",
3
+ "version": "1.0.0-beta.201",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://aglyn.com",
6
6
  "repository": {
@@ -25,15 +25,15 @@
25
25
  "./package.json": "./package.json"
26
26
  },
27
27
  "dependencies": {
28
- "@aglyn/aglyn": "1.0.0-beta.199",
29
- "@aglyn/shared-data-mdi": "1.0.0-beta.199",
30
- "@aglyn/shared-ui-jsx": "1.0.0-beta.199",
31
- "@aglyn/shared-ui-next": "1.0.0-beta.199",
32
- "@aglyn/shared-ui-snackstack": "1.0.0-beta.199",
33
- "@aglyn/shared-util-email": "1.0.0-beta.199",
34
- "@aglyn/shared-util-http": "1.0.0-beta.199",
35
- "@aglyn/tenant-data-admin": "1.0.0-beta.199",
36
- "@aglyn/tenant-feature-instance": "1.0.0-beta.199",
28
+ "@aglyn/aglyn": "1.0.0-beta.201",
29
+ "@aglyn/shared-data-mdi": "1.0.0-beta.201",
30
+ "@aglyn/shared-ui-jsx": "1.0.0-beta.201",
31
+ "@aglyn/shared-ui-next": "1.0.0-beta.201",
32
+ "@aglyn/shared-ui-snackstack": "1.0.0-beta.201",
33
+ "@aglyn/shared-util-email": "1.0.0-beta.201",
34
+ "@aglyn/shared-util-http": "1.0.0-beta.201",
35
+ "@aglyn/tenant-data-admin": "1.0.0-beta.201",
36
+ "@aglyn/tenant-feature-instance": "1.0.0-beta.201",
37
37
  "@swc/helpers": "0.5.23"
38
38
  },
39
39
  "peerDependencies": {
@@ -1,17 +1,28 @@
1
1
  import { type ConsolePluginOrgMount } from '@aglyn/aglyn';
2
+ /** Which of the two collections the card lists. */
3
+ export type ContactsView = 'members' | 'leads';
2
4
  /**
3
- * The Members & leads section of the Inbox (AGL-109): everybody a site
4
- * collected, in one list.
5
+ * The Members & leads section of the Inbox (AGL-109): the people a site
6
+ * collected — its members, who signed up to it, and its leads, whom a form,
7
+ * a booking or a teammate captured.
5
8
  *
6
- * Its own component since AGL-2501, when the Inbox's tabs became routes. The
7
- * split is what makes "mount only the section being read" structural: hooks
8
- * cannot be conditional, so a page holding every section's reads pays for all
9
- * of them whichever one the URL names.
9
+ * ## Two lists, one table (AGL-3321)
10
+ *
11
+ * Members and leads are two collections, and the table shows one at a time,
12
+ * chosen by the toggle above it. Each is its own Firestore query, every
13
+ * filter and search word on it, paged by the server — so a page is a page of
14
+ * the answer, and a site with thousands of either reaches all of them.
15
+ *
16
+ * It used to read the two hundred newest of each and interleave them, hiding
17
+ * a lead whose address matched a member. That dedupe is only correct while
18
+ * both reads are whole, which is exactly what a paged query is not, so it is
19
+ * gone: a person who left their address and later signed up is a lead in one
20
+ * list and a member in the other, which is what they are in each collection.
10
21
  *
11
22
  * On the organization's Inbox (`hostId: null`, AGL-3303) it lists the
12
23
  * organization's leads with the sites each was captured by. A member signs up
13
- * to ONE site and lives under it, so members are listed once a site is
14
- * picked, which is the page handing this card that site.
24
+ * to ONE site and lives under it, so Members waits for a site to be picked,
25
+ * which is the page handing this card that site.
15
26
  */
16
27
  export declare function ContactsCard({ hostId, orgMount, }: {
17
28
  hostId: string | null;