@estiva-app/ui 0.61.0 → 0.62.0
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/dist/MembersDialog.d.ts +10 -5
- package/dist/MembersDialog.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
- package/registry.json +2 -2
- package/src/MembersDialog.mdx +7 -4
- package/src/MembersDialog.stories.tsx +16 -5
- package/src/MembersDialog.test.tsx +16 -2
- package/src/MembersDialog.tsx +23 -8
package/dist/MembersDialog.d.ts
CHANGED
|
@@ -21,13 +21,16 @@ export interface MembersDialogProps {
|
|
|
21
21
|
/** The number in the title's chip. Defaults to how many rows there are. */
|
|
22
22
|
count?: number;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* no
|
|
24
|
+
* What the viewer can do: "Leave" on their own row when they are in, which
|
|
25
|
+
* is drawn first; a "Join" row on top when they are not. Absent while it is
|
|
26
|
+
* not known, or where they cannot change it — no button is better than a
|
|
27
|
+
* wrong one.
|
|
27
28
|
*/
|
|
28
29
|
self?: {
|
|
29
30
|
action: MembersDialogSelfAction;
|
|
30
31
|
onToggle: () => void | Promise<unknown>;
|
|
32
|
+
/** The viewer's id: the row in `members` that carries Leave and comes first. */
|
|
33
|
+
id: string;
|
|
31
34
|
};
|
|
32
35
|
/** Who "Add members" may offer. Members are left out by id. */
|
|
33
36
|
candidates?: MembersDialogCandidate[];
|
|
@@ -49,8 +52,10 @@ export interface MembersDialogProps {
|
|
|
49
52
|
*
|
|
50
53
|
* Moved from Peek's `MembersDialog` (2026-10-06; Katerina's design of 22 July,
|
|
51
54
|
* with the row and inset rulings of 15 September). Two layers in one dialog:
|
|
52
|
-
* the roster, with
|
|
53
|
-
* add layer, whose back arrow returns to the roster.
|
|
55
|
+
* the roster, with "Add members" (and Join, for a non-member) on top, and the
|
|
56
|
+
* add layer, whose back arrow returns to the roster. Leave is a small red
|
|
57
|
+
* button on the viewer's own row, which always comes first (Katerina, 8
|
|
58
|
+
* October: a Leave row on top looked like an invite, the same as Add members). Adding returns to the
|
|
54
59
|
* roster so the new people are visible at once.
|
|
55
60
|
*/
|
|
56
61
|
export declare function MembersDialog({ members, count, self, candidates, onAdd, note, initialView, onClose }: MembersDialogProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MembersDialog.d.ts","sourceRoot":"","sources":["../src/MembersDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKvD,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAO7D,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,oFAAoF;AACpF,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd
|
|
1
|
+
{"version":3,"file":"MembersDialog.d.ts","sourceRoot":"","sources":["../src/MembersDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKvD,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAO7D,0EAA0E;AAC1E,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,oFAAoF;AACpF,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,kBAAkB;IACjC,iGAAiG;IACjG,OAAO,EAAE,mBAAmB,EAAE,CAAA;IAC9B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,uBAAuB,CAAA;QAC/B,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;QACvC,gFAAgF;QAChF,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,+DAA+D;IAC/D,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACrC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAA;IACtF,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAe,EAAE,KAAK,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,EAAE,kBAAkB,+BA0HtI"}
|
package/dist/index.js
CHANGED
|
@@ -1731,6 +1731,9 @@ function MembersDialog({ members, count, self, candidates = [], onAdd, note, ini
|
|
|
1731
1731
|
setChosen([]);
|
|
1732
1732
|
setView("list");
|
|
1733
1733
|
};
|
|
1734
|
+
const ownRow = self?.action === "leave" ? members.find((m) => m.id === self.id) : void 0;
|
|
1735
|
+
const roster = ownRow ? [ownRow, ...members.filter((m) => m !== ownRow)] : members;
|
|
1736
|
+
const selfOnTop = self && !ownRow;
|
|
1734
1737
|
if (view === "add" && onAdd) {
|
|
1735
1738
|
return /* @__PURE__ */ jsx26(
|
|
1736
1739
|
DialogShell,
|
|
@@ -1774,8 +1777,8 @@ function MembersDialog({ members, count, self, candidates = [], onAdd, note, ini
|
|
|
1774
1777
|
bodyMaxHeight: "max-h-[400px]",
|
|
1775
1778
|
bodyClassName: "p-0 py-2",
|
|
1776
1779
|
children: [
|
|
1777
|
-
(
|
|
1778
|
-
|
|
1780
|
+
(selfOnTop || onAdd) && /* @__PURE__ */ jsxs17("div", { className: "flex flex-col px-2", children: [
|
|
1781
|
+
selfOnTop && /* @__PURE__ */ jsx26(
|
|
1779
1782
|
MenuItem,
|
|
1780
1783
|
{
|
|
1781
1784
|
size: "tall",
|
|
@@ -1797,12 +1800,13 @@ function MembersDialog({ members, count, self, candidates = [], onAdd, note, ini
|
|
|
1797
1800
|
}
|
|
1798
1801
|
)
|
|
1799
1802
|
] }),
|
|
1800
|
-
|
|
1803
|
+
roster.map((member) => /* @__PURE__ */ jsxs17("div", { className: "flex h-12 items-center gap-3 px-5", children: [
|
|
1801
1804
|
/* @__PURE__ */ jsx26(Avatar, { size: 32, name: member.name, src: member.picture }),
|
|
1802
1805
|
/* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-[2px]", children: [
|
|
1803
1806
|
/* @__PURE__ */ jsx26("div", { className: "truncate text-body-2 text-text-primary", children: member.name }),
|
|
1804
1807
|
member.caption && /* @__PURE__ */ jsx26("div", { className: "truncate text-caption text-text-secondary", children: member.caption })
|
|
1805
|
-
] })
|
|
1808
|
+
] }),
|
|
1809
|
+
member === ownRow && /* @__PURE__ */ jsx26(Button, { variant: "destructive", size: "small", disabled: toggling, onClick: () => void toggle(), children: "Leave" })
|
|
1806
1810
|
] }, member.id)),
|
|
1807
1811
|
note && /* @__PURE__ */ jsx26("div", { className: "px-5 pb-2 pt-3 text-caption text-text-secondary", children: note })
|
|
1808
1812
|
]
|