@cellarnode/ui 0.8.10 → 0.8.15

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.
Files changed (52) hide show
  1. package/dist/components/animated-select.d.ts +17 -0
  2. package/dist/components/animated-select.d.ts.map +1 -0
  3. package/dist/components/animated-select.js +95 -0
  4. package/dist/components/animated-select.js.map +1 -0
  5. package/dist/components/animated-select.stories.d.ts +14 -0
  6. package/dist/components/animated-select.stories.d.ts.map +1 -0
  7. package/dist/components/animated-select.stories.js +73 -0
  8. package/dist/components/animated-select.stories.js.map +1 -0
  9. package/dist/components/composition-editor.d.ts.map +1 -1
  10. package/dist/components/composition-editor.js +3 -1
  11. package/dist/components/composition-editor.js.map +1 -1
  12. package/dist/components/composition-editor.stories.d.ts.map +1 -1
  13. package/dist/components/composition-editor.stories.js +37 -4
  14. package/dist/components/composition-editor.stories.js.map +1 -1
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/org/index.d.ts +8 -0
  20. package/dist/org/index.d.ts.map +1 -1
  21. package/dist/org/index.js +4 -0
  22. package/dist/org/index.js.map +1 -1
  23. package/dist/org/invite-member-dialog.js +1 -1
  24. package/dist/org/invite-member-dialog.js.map +1 -1
  25. package/dist/org/team-hero-banner.d.ts +12 -0
  26. package/dist/org/team-hero-banner.d.ts.map +1 -0
  27. package/dist/org/team-hero-banner.js +29 -0
  28. package/dist/org/team-hero-banner.js.map +1 -0
  29. package/dist/org/team-management.d.ts +2 -1
  30. package/dist/org/team-management.d.ts.map +1 -1
  31. package/dist/org/team-management.js +31 -72
  32. package/dist/org/team-management.js.map +1 -1
  33. package/dist/org/team-management.stories.d.ts +28 -0
  34. package/dist/org/team-management.stories.d.ts.map +1 -0
  35. package/dist/org/team-management.stories.js +119 -0
  36. package/dist/org/team-management.stories.js.map +1 -0
  37. package/dist/org/team-member-menu.d.ts +8 -0
  38. package/dist/org/team-member-menu.d.ts.map +1 -0
  39. package/dist/org/team-member-menu.js +17 -0
  40. package/dist/org/team-member-menu.js.map +1 -0
  41. package/dist/org/team-member-row.d.ts +11 -0
  42. package/dist/org/team-member-row.d.ts.map +1 -0
  43. package/dist/org/team-member-row.js +33 -0
  44. package/dist/org/team-member-row.js.map +1 -0
  45. package/dist/org/team-pending-row.d.ts +9 -0
  46. package/dist/org/team-pending-row.d.ts.map +1 -0
  47. package/dist/org/team-pending-row.js +27 -0
  48. package/dist/org/team-pending-row.js.map +1 -0
  49. package/dist/profile/profile-hero.d.ts.map +1 -1
  50. package/dist/profile/profile-hero.js +5 -5
  51. package/dist/profile/profile-hero.js.map +1 -1
  52. package/package.json +1 -1
@@ -1,11 +1,17 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // ui/src/org/team-management.tsx
2
3
  import * as React from "react";
4
+ import { cn } from "../lib/utils";
3
5
  import { Badge } from "../components/badge";
4
6
  import { Button } from "../components/button";
7
+ import { AnimatedList } from "../components/animated-list";
5
8
  import { ConfirmationDialog } from "../components/confirmation-dialog";
9
+ import { TeamHeroBanner } from "./team-hero-banner";
10
+ import { TeamMemberRow } from "./team-member-row";
11
+ import { TeamPendingRow } from "./team-pending-row";
6
12
  import { InviteMemberDialog } from "./invite-member-dialog";
7
13
  // ---------------------------------------------------------------------------
8
- // Built-in SVG icons (no heroicons peer dep)
14
+ // Built-in SVG icons
9
15
  // ---------------------------------------------------------------------------
10
16
  function UserGroupSvg(props) {
11
17
  return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z" }) }));
@@ -16,57 +22,18 @@ function EnvelopeSvg(props) {
16
22
  function UserPlusSvg(props) {
17
23
  return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0ZM3 19.235v-.11a6.375 6.375 0 0 1 12.75 0v.109A12.318 12.318 0 0 1 9.374 21c-2.331 0-4.512-.645-6.374-1.766Z" }) }));
18
24
  }
19
- function ShieldCheckSvg(props) {
20
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z" }) }));
21
- }
22
- function TrashSvg(props) {
23
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" }) }));
24
- }
25
- function ArrowsRightLeftSvg(props) {
26
- return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" }) }));
27
- }
28
25
  // ---------------------------------------------------------------------------
29
26
  // Helpers
30
27
  // ---------------------------------------------------------------------------
31
28
  const defaultT = (_key, fallback) => fallback ?? _key;
32
- function formatDate(dateString) {
33
- if (!dateString)
34
- return "";
35
- try {
36
- return new Date(dateString).toLocaleDateString(undefined, {
37
- year: "numeric",
38
- month: "short",
39
- day: "numeric",
40
- });
41
- }
42
- catch {
43
- return dateString;
44
- }
45
- }
46
- function prettifyTier(tier) {
47
- if (!tier)
48
- return "Unknown";
49
- return tier
50
- .replace("SUBSCRIPTION_TIER_", "")
51
- .toLowerCase()
52
- .replace(/^\w/, (c) => c.toUpperCase());
53
- }
54
- function tierBadgeColor(tier) {
55
- if (tier?.includes("ENTERPRISE"))
56
- return "purple";
57
- if (tier?.includes("STANDARD"))
58
- return "blue";
59
- if (tier?.includes("FREE"))
60
- return "green";
61
- return "zinc";
62
- }
63
29
  function getMemberDisplayName(member) {
64
30
  return member.name || member.email || member.userId || member.membershipId;
65
31
  }
66
32
  // ---------------------------------------------------------------------------
67
33
  // Component
68
34
  // ---------------------------------------------------------------------------
69
- export function TeamManagement({ members, pendingInvites, subscription, currentUserId, isOwner, isMembersLoading = false, isInvitesLoading = false, callbacks, t = defaultT, }) {
35
+ export function TeamManagement({ members, pendingInvites, subscription, currentUserId, isOwner, isMembersLoading = false, isInvitesLoading = false, callbacks, className, t = defaultT, }) {
36
+ const [activeTab, setActiveTab] = React.useState("members");
70
37
  const [inviteOpen, setInviteOpen] = React.useState(false);
71
38
  // Confirmation dialog state
72
39
  const [confirmState, setConfirmState] = React.useState(null);
@@ -108,35 +75,27 @@ export function TeamManagement({ members, pendingInvites, subscription, currentU
108
75
  : null;
109
76
  const seatsUsed = subscription?.seatsUsed ?? members.length;
110
77
  const maxSeats = subscription?.maxSeats ?? 0;
111
- const seatsRemaining = subscription?.seatsRemaining ?? Math.max(0, maxSeats - seatsUsed);
112
- const seatPct = maxSeats > 0 ? Math.min(100, Math.round((seatsUsed / maxSeats) * 100)) : 0;
113
- return (_jsxs("div", { className: "space-y-8", children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsx(StatCard, { icon: _jsx(UserGroupSvg, { className: "size-5" }), value: isMembersLoading ? "—" : members.length, label: t("team.activeMembers", "Active members"), tone: "emerald" }), _jsx(StatCard, { icon: _jsx(EnvelopeSvg, { className: "size-5" }), value: isInvitesLoading ? "—" : pendingInvites.length, label: t("team.pendingInvites", "Pending invites"), tone: "amber" })] }), subscription?.tier && (_jsxs("div", { className: "rounded-2xl border border-border/60 bg-card p-5", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(ShieldCheckSvg, { className: "size-5 text-muted-foreground" }), _jsx("span", { className: "text-sm font-semibold text-foreground", children: t("team.subscription", "Subscription") }), _jsx(Badge, { color: tierBadgeColor(subscription.tier), children: prettifyTier(subscription.tier) })] }), maxSeats > 0 && (_jsxs("div", { className: "mt-4", children: [_jsxs("div", { className: "flex items-baseline justify-between text-sm", children: [_jsx("span", { className: "text-muted-foreground", children: t("team.seatsUsed", `${seatsUsed} of ${maxSeats} seats used`, { used: seatsUsed, max: maxSeats }) }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [seatsRemaining, " ", t("team.remaining", "remaining")] })] }), _jsx("div", { className: "mt-2 h-2 overflow-hidden rounded-full bg-muted", children: _jsx("div", { className: "h-full rounded-full bg-primary transition-all", style: { width: `${seatPct}%` } }) })] }))] })), _jsxs("section", { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h2", { className: "text-sm/6 font-semibold text-foreground", children: t("team.activeMembers", "Active members") }), isOwner && (_jsxs(Button, { color: "brand", onClick: () => setInviteOpen(true), children: [_jsx(UserPlusSvg, { className: "size-4" }), t("team.invite", "Invite member")] }))] }), _jsx("div", { className: "mt-3 space-y-2", children: isMembersLoading ? (_jsx(_Fragment, { children: [1, 2].map((i) => (_jsx("div", { className: "h-[72px] animate-pulse rounded-xl border border-border/60 bg-card" }, i))) })) : members.length > 0 ? (members.map((m) => {
114
- const name = getMemberDisplayName(m);
115
- const isMe = m.userId === currentUserId;
116
- const isRoleOwner = m.role === "owner";
117
- const joined = formatDate(m.acceptedAt ?? m.createdAt);
118
- return (_jsxs("div", { className: "group flex items-center justify-between gap-4 rounded-xl border border-border/60 bg-card p-4 transition-colors hover:bg-accent/20", children: [_jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [_jsx("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-primary/10 text-sm font-semibold text-primary dark:bg-primary/20 dark:text-primary-foreground/90", children: (name[0] ?? "?").toUpperCase() }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("p", { className: "truncate text-sm/6 font-medium text-foreground", children: [name, isMe && (_jsxs("span", { className: "ml-1 text-xs text-muted-foreground", children: ["(", t("team.you", "you"), ")"] }))] }), _jsx(Badge, { color: isRoleOwner ? "amber" : "zinc", children: isRoleOwner ? t("team.owner", "Owner") : t("team.member", "Member") })] }), _jsxs("div", { className: "flex items-center gap-3 text-xs text-muted-foreground", children: [m.email && _jsx("span", { className: "truncate", children: m.email }), joined && _jsxs("span", { children: [t("team.joined", "Joined"), " ", joined] })] })] })] }), isOwner && !isMe && (_jsxs("div", { className: "flex shrink-0 items-center gap-1 opacity-0 transition-opacity group-hover:opacity-100", children: [_jsx(Button, { plain: true, onClick: () => setConfirmState({ type: "transfer", id: m.membershipId, name }), "aria-label": t("team.transferOwnership", "Transfer ownership"), children: _jsx(ArrowsRightLeftSvg, { className: "size-4" }) }), _jsx(Button, { plain: true, onClick: () => setConfirmState({ type: "remove", id: m.membershipId, name }), "aria-label": t("team.removeMember", "Remove member"), children: _jsx(TrashSvg, { className: "size-4 text-red-500" }) })] }))] }, m.membershipId));
119
- })) : (_jsx(EmptyRow, { text: t("team.noMembers", "No active members yet.") })) })] }), _jsxs("section", { children: [_jsx("h2", { className: "text-sm/6 font-semibold text-foreground", children: t("team.pendingInvites", "Pending invites") }), _jsx("div", { className: "mt-3 space-y-2", children: isInvitesLoading ? (_jsx("div", { className: "h-[72px] animate-pulse rounded-xl border border-dashed border-amber-300/50 bg-amber-50/20 dark:border-amber-500/15 dark:bg-amber-500/5" })) : pendingInvites.length > 0 ? (pendingInvites.map((inv) => {
120
- const email = inv.email ?? inv.membershipId;
121
- const sent = formatDate(inv.invitedAt ?? inv.createdAt);
122
- return (_jsxs("div", { className: "group flex items-center justify-between gap-4 rounded-xl border border-dashed border-amber-300/60 bg-amber-50/30 p-4 transition-colors hover:bg-amber-50/50 dark:border-amber-500/20 dark:bg-amber-500/5 dark:hover:bg-amber-500/10", children: [_jsxs("div", { className: "flex items-center gap-3 min-w-0", children: [_jsx("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-500/20", children: _jsx(EnvelopeSvg, { className: "size-5 text-amber-600 dark:text-amber-400" }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "truncate text-sm/6 font-medium text-foreground", children: email }), sent && (_jsxs("span", { className: "text-xs text-muted-foreground", children: [t("team.sent", "Sent:"), " ", sent] }))] })] }), isOwner && (_jsx(Button, { plain: true, onClick: () => setConfirmState({ type: "revoke", id: inv.membershipId, name: email }), className: "shrink-0 text-xs opacity-0 transition-opacity group-hover:opacity-100", children: t("team.revoke", "Revoke") }))] }, inv.membershipId));
123
- })) : (_jsx(EmptyRow, { text: t("team.noInvites", "No pending invites.") })) })] }), _jsx(InviteMemberDialog, { open: inviteOpen, onClose: () => setInviteOpen(false), onInvite: callbacks.onInvite, t: t }), confirmConfig && (_jsx(ConfirmationDialog, { open: !!confirmState, onClose: () => setConfirmState(null), onConfirm: handleConfirm, title: confirmConfig.title, description: confirmConfig.description, warning: confirmConfig.warning, tone: confirmConfig.tone, confirmLabel: confirmConfig.confirmLabel, cancelLabel: t("cancel", "Cancel") }))] }));
124
- }
125
- const toneCls = {
126
- emerald: {
127
- icon: "text-emerald-600 dark:text-emerald-400",
128
- iconBg: "bg-emerald-500/10 dark:bg-emerald-500/20",
129
- },
130
- amber: {
131
- icon: "text-amber-600 dark:text-amber-400",
132
- iconBg: "bg-amber-500/10 dark:bg-amber-500/20",
133
- },
134
- };
135
- function StatCard({ icon, value, label, tone }) {
136
- const c = toneCls[tone];
137
- return (_jsxs("div", { className: "flex h-full items-start justify-between rounded-2xl border border-border/60 bg-card p-5 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md", children: [_jsxs("div", { className: "grid gap-1.5", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: label }), _jsx("p", { className: "text-2xl font-bold tabular-nums tracking-tight text-foreground", children: value })] }), _jsx("div", { className: `shrink-0 rounded-xl p-2.5 ${c.icon} ${c.iconBg}`, children: icon })] }));
78
+ // AnimatedList items
79
+ const memberItems = members.map((m) => ({
80
+ id: m.membershipId,
81
+ content: (_jsx(TeamMemberRow, { member: m, isCurrentUser: m.userId === currentUserId, isOwner: isOwner, onTransfer: (id) => setConfirmState({ type: "transfer", id, name: getMemberDisplayName(m) }), onRemove: (id) => setConfirmState({ type: "remove", id, name: getMemberDisplayName(m) }), t: t })),
82
+ }));
83
+ const pendingItems = pendingInvites.map((inv) => ({
84
+ id: inv.membershipId,
85
+ content: (_jsx(TeamPendingRow, { invite: inv, isOwner: isOwner, onRevoke: (id) => setConfirmState({ type: "revoke", id, name: inv.email ?? inv.membershipId }), t: t })),
86
+ }));
87
+ const tabs = [
88
+ { key: "members", label: t("team.members", "Members"), count: members.length, color: "emerald" },
89
+ { key: "pending", label: t("team.pending", "Pending"), count: pendingInvites.length, color: "amber" },
90
+ ];
91
+ return (_jsxs("div", { className: cn("space-y-6", className), children: [_jsx(TeamHeroBanner, { activeCount: members.length, pendingCount: pendingInvites.length, seatsUsed: seatsUsed, maxSeats: maxSeats, isLoading: isMembersLoading && isInvitesLoading, t: t }), _jsxs("div", { className: "flex items-center justify-between border-b border-border/60", children: [_jsx("div", { className: "flex", children: tabs.map((tab) => (_jsxs("button", { type: "button", onClick: () => setActiveTab(tab.key), className: cn("relative px-4 py-2.5 text-sm/6 font-medium transition-colors", activeTab === tab.key
92
+ ? "text-foreground"
93
+ : "text-muted-foreground hover:text-foreground"), children: [_jsxs("span", { className: "flex items-center gap-2", children: [tab.label, _jsx(Badge, { color: tab.color, children: tab.count })] }), activeTab === tab.key && (_jsx("span", { className: "absolute inset-x-0 -bottom-px h-0.5 rounded-full bg-primary" }))] }, tab.key))) }), isOwner && activeTab === "members" && (_jsxs(Button, { color: "brand", onClick: () => setInviteOpen(true), children: [_jsx(UserPlusSvg, { className: "size-4" }), t("team.invite", "Invite member")] }))] }), activeTab === "members" && (_jsx(AnimatedList, { items: memberItems, isLoading: isMembersLoading, skeletonCount: 2, animationType: "slide", enterFrom: "bottom", staggerDelay: 50, duration: 0.3, emptyState: _jsx(EmptyState, { icon: _jsx(UserGroupSvg, { className: "size-8 text-muted-foreground/50" }), text: t("team.noMembers", "No active members yet."), action: isOwner ? (_jsxs(Button, { color: "brand", onClick: () => setInviteOpen(true), children: [_jsx(UserPlusSvg, { className: "size-4" }), t("team.invite", "Invite member")] })) : undefined }) })), activeTab === "pending" && (_jsx(AnimatedList, { items: pendingItems, isLoading: isInvitesLoading, skeletonCount: 2, animationType: "slide", enterFrom: "bottom", staggerDelay: 50, duration: 0.3, emptyState: _jsx(EmptyState, { icon: _jsx(EnvelopeSvg, { className: "size-8 text-muted-foreground/50" }), text: t("team.noInvites", "No pending invites.") }) })), _jsx(InviteMemberDialog, { open: inviteOpen, onClose: () => setInviteOpen(false), onInvite: callbacks.onInvite, t: t }), confirmConfig && (_jsx(ConfirmationDialog, { open: !!confirmState, onClose: () => setConfirmState(null), onConfirm: handleConfirm, title: confirmConfig.title, description: confirmConfig.description, warning: confirmConfig.warning, tone: confirmConfig.tone, confirmLabel: confirmConfig.confirmLabel, cancelLabel: t("cancel", "Cancel") }))] }));
138
94
  }
139
- function EmptyRow({ text }) {
140
- return (_jsx("div", { className: "flex flex-col items-center gap-2 rounded-2xl border border-dashed border-border px-4 py-8 text-center", children: _jsx("p", { className: "text-sm font-medium text-muted-foreground", children: text }) }));
95
+ // ---------------------------------------------------------------------------
96
+ // Empty state
97
+ // ---------------------------------------------------------------------------
98
+ function EmptyState({ icon, text, action, }) {
99
+ return (_jsxs("div", { className: "flex flex-col items-center gap-3 rounded-2xl border border-dashed border-border px-4 py-12 text-center", children: [icon, _jsx("p", { className: "text-sm font-medium text-muted-foreground", children: text }), action] }));
141
100
  }
142
101
  //# sourceMappingURL=team-management.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"team-management.js","sourceRoot":"","sources":["../../src/org/team-management.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAS5D,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,SAAS,YAAY,CAAC,KAAoC;IACxD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,ggBAAggB,GAAG,GACpjB,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAoC;IACvD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,gQAAgQ,GAAG,GACpT,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAoC;IACvD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,yMAAyM,GAAG,GAC7P,CACP,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAoC;IAC1D,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,oNAAoN,GAAG,GACxQ,CACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAoC;IACpD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,+ZAA+Z,GAAG,GACnd,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoC;IAC9D,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,4EAA4E,GAAG,GAChI,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC;AAErE,SAAS,UAAU,CAAC,UAA8B;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACxD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAwB;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;SACjC,WAAW,EAAE;SACb,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,IAAwB;IAC9C,IAAI,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAkB;IAC9C,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7E,CAAC;AAkBD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,cAAc,EACd,YAAY,EACZ,aAAa,EACb,OAAO,EACP,gBAAgB,GAAG,KAAK,EACxB,gBAAgB,GAAG,KAAK,EACxB,SAAS,EACT,CAAC,GAAG,QAAQ,GACQ;IACpB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,4BAA4B;IAC5B,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAI5C,IAAI,CAAC,CAAC;IAEhB,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;YAC1B,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACnD,KAAK,UAAU;gBACb,OAAO,SAAS,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACxD,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC;YACE,MAAM,EAAE;gBACN,KAAK,EAAE,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBAC7C,WAAW,EAAE,CAAC,CAAC,iBAAiB,EAAE,UAAU,YAAY,CAAC,IAAI,yBAAyB,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpH,OAAO,EAAE,CAAC,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;gBACtE,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC;gBAC/C,IAAI,EAAE,QAAiB;aACxB;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;gBACpD,WAAW,EAAE,CAAC,CAAC,mBAAmB,EAAE,yBAAyB,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;gBAC/G,OAAO,EAAE,CAAC,CAAC,sBAAsB,EAAE,uDAAuD,CAAC;gBAC3F,YAAY,EAAE,CAAC,CAAC,eAAe,EAAE,oBAAoB,CAAC;gBACtD,IAAI,EAAE,QAAiB;aACxB;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC;gBAC7C,WAAW,EAAE,CAAC,CAAC,iBAAiB,EAAE,iCAAiC,YAAY,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;gBACrH,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC;gBACxC,IAAI,EAAE,SAAkB;aACzB;SACF,CAAC,YAAY,CAAC,IAAI,CAAC;QACtB,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,YAAY,EAAE,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAC5D,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,YAAY,EAAE,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aAExB,eAAK,SAAS,EAAC,2BAA2B,aACxC,KAAC,QAAQ,IACP,IAAI,EAAE,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,GAAG,EACzC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAC9C,KAAK,EAAE,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,EAChD,IAAI,EAAC,SAAS,GACd,EACF,KAAC,QAAQ,IACP,IAAI,EAAE,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG,EACxC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,EACrD,KAAK,EAAE,CAAC,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAClD,IAAI,EAAC,OAAO,GACZ,IACE,EAGL,YAAY,EAAE,IAAI,IAAI,CACrB,eAAK,SAAS,EAAC,iDAAiD,aAC9D,eAAK,SAAS,EAAC,yBAAyB,aACtC,KAAC,cAAc,IAAC,SAAS,EAAC,8BAA8B,GAAG,EAC3D,eAAM,SAAS,EAAC,uCAAuC,YACpD,CAAC,CAAC,mBAAmB,EAAE,cAAc,CAAC,GAClC,EACP,KAAC,KAAK,IAAC,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,YAC5C,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,GAC1B,IACJ,EACL,QAAQ,GAAG,CAAC,IAAI,CACf,eAAK,SAAS,EAAC,MAAM,aACnB,eAAK,SAAS,EAAC,6CAA6C,aAC1D,eAAM,SAAS,EAAC,uBAAuB,YACpC,CAAC,CAAC,gBAAgB,EAAE,GAAG,SAAS,OAAO,QAAQ,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAC7F,EACP,gBAAM,SAAS,EAAC,+BAA+B,aAC5C,cAAc,OAAG,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAC7C,IACH,EACN,cAAK,SAAS,EAAC,gDAAgD,YAC7D,cACE,SAAS,EAAC,+CAA+C,EACzD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAC/B,GACE,IACF,CACP,IACG,CACP,EAGD,8BACE,eAAK,SAAS,EAAC,mCAAmC,aAChD,aAAI,SAAS,EAAC,yCAAyC,YACpD,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,GACvC,EACJ,OAAO,IAAI,CACV,MAAC,MAAM,IAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aACtD,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG,EACjC,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,IAC3B,CACV,IACG,EACN,cAAK,SAAS,EAAC,gBAAgB,YAC5B,gBAAgB,CAAC,CAAC,CAAC,CAClB,4BACG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjB,cAAa,SAAS,EAAC,mEAAmE,IAAhF,CAAC,CAAkF,CAC9F,CAAC,GACD,CACJ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BAChB,MAAM,IAAI,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;4BACrC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC;4BACxC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;4BACvC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;4BAEvD,OAAO,CACL,eAEE,SAAS,EAAC,mIAAmI,aAE7I,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,oKAAoK,YAChL,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,GAC3B,EACN,eAAK,SAAS,EAAC,SAAS,aACtB,eAAK,SAAS,EAAC,yBAAyB,aACtC,aAAG,SAAS,EAAC,gDAAgD,aAC1D,IAAI,EACJ,IAAI,IAAI,CACP,gBAAM,SAAS,EAAC,oCAAoC,kBAChD,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,SACjB,CACR,IACC,EACJ,KAAC,KAAK,IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YACzC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,GAC9D,IACJ,EACN,eAAK,SAAS,EAAC,uDAAuD,aACnE,CAAC,CAAC,KAAK,IAAI,eAAM,SAAS,EAAC,UAAU,YAAE,CAAC,CAAC,KAAK,GAAQ,EACtD,MAAM,IAAI,2BAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAG,MAAM,IAAQ,IACzD,IACF,IACF,EAEL,OAAO,IAAI,CAAC,IAAI,IAAI,CACnB,eAAK,SAAS,EAAC,uFAAuF,aACpG,KAAC,MAAM,IACL,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,gBAClE,CAAC,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,YAE7D,KAAC,kBAAkB,IAAC,SAAS,EAAC,QAAQ,GAAG,GAClC,EACT,KAAC,MAAM,IACL,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,gBAChE,CAAC,CAAC,mBAAmB,EAAE,eAAe,CAAC,YAEnD,KAAC,QAAQ,IAAC,SAAS,EAAC,qBAAqB,GAAG,GACrC,IACL,CACP,KA7CI,CAAC,CAAC,YAAY,CA8Cf,CACP,CAAC;wBACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,GAAI,CAClE,GACG,IACE,EAGV,8BACE,aAAI,SAAS,EAAC,yCAAyC,YACpD,CAAC,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,GACzC,EACL,cAAK,SAAS,EAAC,gBAAgB,YAC5B,gBAAgB,CAAC,CAAC,CAAC,CAClB,cAAK,SAAS,EAAC,wIAAwI,GAAG,CAC3J,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9B,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;4BACzB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,CAAC;4BAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;4BAExD,OAAO,CACL,eAEE,SAAS,EAAC,qOAAqO,aAE/O,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,kGAAkG,YAC/G,KAAC,WAAW,IAAC,SAAS,EAAC,2CAA2C,GAAG,GACjE,EACN,eAAK,SAAS,EAAC,SAAS,aACtB,YAAG,SAAS,EAAC,gDAAgD,YAAE,KAAK,GAAK,EACxE,IAAI,IAAI,CACP,gBAAM,SAAS,EAAC,+BAA+B,aAC5C,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,OAAG,IAAI,IAC1B,CACR,IACG,IACF,EAEL,OAAO,IAAI,CACV,KAAC,MAAM,IACL,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,CACZ,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAExE,SAAS,EAAC,uEAAuE,YAEhF,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,GACpB,CACV,KA3BI,GAAG,CAAC,YAAY,CA4BjB,CACP,CAAC;wBACJ,CAAC,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,GAAI,CAC/D,GACG,IACE,EAGV,KAAC,kBAAkB,IACjB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAC5B,CAAC,EAAE,CAAC,GACJ,EAGD,aAAa,IAAI,CAChB,KAAC,kBAAkB,IACjB,IAAI,EAAE,CAAC,CAAC,YAAY,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EACpC,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,aAAa,CAAC,KAAK,EAC1B,WAAW,EAAE,aAAa,CAAC,WAAW,EACtC,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,IAAI,EAAE,aAAa,CAAC,IAAI,EACxB,YAAY,EAAE,aAAa,CAAC,YAAY,EACxC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAClC,CACH,IACG,CACP,CAAC;AACJ,CAAC;AAOD,MAAM,OAAO,GAAmD;IAC9D,OAAO,EAAE;QACP,IAAI,EAAE,wCAAwC;QAC9C,MAAM,EAAE,0CAA0C;KACnD;IACD,KAAK,EAAE;QACL,IAAI,EAAE,oCAAoC;QAC1C,MAAM,EAAE,sCAAsC;KAC/C;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAgF;IAC1H,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,OAAO,CACL,eAAK,SAAS,EAAC,4JAA4J,aACzK,eAAK,SAAS,EAAC,cAAc,aAC3B,YAAG,SAAS,EAAC,yEAAyE,YAAE,KAAK,GAAK,EAClG,YAAG,SAAS,EAAC,gEAAgE,YAAE,KAAK,GAAK,IACrF,EACN,cAAK,SAAS,EAAE,6BAA6B,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,YAAG,IAAI,GAAO,IAC3E,CACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAoB;IAC1C,OAAO,CACL,cAAK,SAAS,EAAC,uGAAuG,YACpH,YAAG,SAAS,EAAC,2CAA2C,YAAE,IAAI,GAAK,GAC/D,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"team-management.js","sourceRoot":"","sources":["../../src/org/team-management.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { StoryObj } from "@storybook/react-vite";
2
+ import { TeamManagement } from "./team-management";
3
+ import type { TeamMember, PendingInvite, SubscriptionInfo, TeamManagementCallbacks } from "./types";
4
+ declare const meta: {
5
+ title: string;
6
+ component: typeof TeamManagement;
7
+ tags: string[];
8
+ parameters: {
9
+ layout: string;
10
+ };
11
+ args: {
12
+ members: TeamMember[];
13
+ pendingInvites: PendingInvite[];
14
+ subscription: SubscriptionInfo;
15
+ currentUserId: string;
16
+ isOwner: true;
17
+ callbacks: TeamManagementCallbacks;
18
+ };
19
+ };
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+ export declare const Default: Story;
23
+ export declare const MemberView: Story;
24
+ export declare const Loading: Story;
25
+ export declare const Empty: Story;
26
+ export declare const NoSubscription: Story;
27
+ export declare const LargeTeam: Story;
28
+ //# sourceMappingURL=team-management.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-management.stories.d.ts","sourceRoot":"","sources":["../../src/org/team-management.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AA6DpG,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;CAe6B,CAAC;AAExC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAInC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,UAAU,EAAE,KAKxB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAMnB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAI5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAqBvB,CAAC"}
@@ -0,0 +1,119 @@
1
+ import { TeamManagement } from "./team-management";
2
+ // --- Mock data ---
3
+ const mockMembers = [
4
+ {
5
+ membershipId: "m1",
6
+ userId: "u-owner",
7
+ role: "owner",
8
+ name: "Marcusnagy",
9
+ email: "marcusnagy@icloud.com",
10
+ acceptedAt: "2026-04-01T10:00:00Z",
11
+ createdAt: "2026-04-01T10:00:00Z",
12
+ },
13
+ {
14
+ membershipId: "m2",
15
+ userId: "u-member",
16
+ role: "member",
17
+ name: "Carl Towne",
18
+ email: "carl_towne37@cellarnode.test",
19
+ acceptedAt: "2026-04-01T12:00:00Z",
20
+ createdAt: "2026-04-01T12:00:00Z",
21
+ },
22
+ ];
23
+ const mockPending = [
24
+ {
25
+ membershipId: "p1",
26
+ email: "reina.jerde@example-invite.test",
27
+ invitedAt: "2026-04-01T14:00:00Z",
28
+ expiresAt: "2026-05-01T14:00:00Z",
29
+ createdAt: "2026-04-01T14:00:00Z",
30
+ },
31
+ {
32
+ membershipId: "p2",
33
+ email: "minnie.auer@example-invite.test",
34
+ invitedAt: "2026-04-01T15:00:00Z",
35
+ expiresAt: "2026-05-01T15:00:00Z",
36
+ createdAt: "2026-04-01T15:00:00Z",
37
+ },
38
+ ];
39
+ const mockSubscription = {
40
+ tier: "SUBSCRIPTION_TIER_STANDARD",
41
+ seatsUsed: 2,
42
+ maxSeats: 5,
43
+ seatsRemaining: 3,
44
+ };
45
+ const noop = async () => { };
46
+ const noopInvite = async () => ({ message: "Invite sent!" });
47
+ const mockCallbacks = {
48
+ onInvite: noopInvite,
49
+ onRemoveMember: noop,
50
+ onTransferOwnership: noop,
51
+ onRevokeInvite: noop,
52
+ };
53
+ // --- Meta ---
54
+ const meta = {
55
+ title: "Org/TeamManagement",
56
+ component: TeamManagement,
57
+ tags: ["autodocs"],
58
+ parameters: {
59
+ layout: "padded",
60
+ },
61
+ args: {
62
+ members: mockMembers,
63
+ pendingInvites: mockPending,
64
+ subscription: mockSubscription,
65
+ currentUserId: "u-owner",
66
+ isOwner: true,
67
+ callbacks: mockCallbacks,
68
+ },
69
+ };
70
+ export default meta;
71
+ // --- Stories ---
72
+ export const Default = {};
73
+ export const MemberView = {
74
+ args: {
75
+ isOwner: false,
76
+ currentUserId: "u-member",
77
+ },
78
+ };
79
+ export const Loading = {
80
+ args: {
81
+ isMembersLoading: true,
82
+ isInvitesLoading: true,
83
+ },
84
+ };
85
+ export const Empty = {
86
+ args: {
87
+ members: [],
88
+ pendingInvites: [],
89
+ subscription: { ...mockSubscription, seatsUsed: 0 },
90
+ },
91
+ };
92
+ export const NoSubscription = {
93
+ args: {
94
+ subscription: undefined,
95
+ },
96
+ };
97
+ export const LargeTeam = {
98
+ args: {
99
+ members: [
100
+ ...mockMembers,
101
+ ...Array.from({ length: 8 }, (_, i) => ({
102
+ membershipId: `m${i + 3}`,
103
+ userId: `u-${i + 3}`,
104
+ role: "member",
105
+ name: `Team Member ${i + 3}`,
106
+ email: `member${i + 3}@cellarnode.test`,
107
+ acceptedAt: "2026-04-01T10:00:00Z",
108
+ createdAt: "2026-04-01T10:00:00Z",
109
+ })),
110
+ ],
111
+ subscription: {
112
+ tier: "SUBSCRIPTION_TIER_ENTERPRISE",
113
+ seatsUsed: 10,
114
+ maxSeats: 25,
115
+ seatsRemaining: 15,
116
+ },
117
+ },
118
+ };
119
+ //# sourceMappingURL=team-management.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-management.stories.js","sourceRoot":"","sources":["../../src/org/team-management.stories.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { TranslationFn } from "./types";
2
+ export interface TeamMemberMenuProps {
3
+ onTransfer: () => void;
4
+ onRemove: () => void;
5
+ t?: TranslationFn;
6
+ }
7
+ export declare function TeamMemberMenu({ onTransfer, onRemove, t }: TeamMemberMenuProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=team-member-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-member-menu.d.ts","sourceRoot":"","sources":["../../src/org/team-member-menu.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA4B7C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAY,EAAE,EAAE,mBAAmB,2CAqBzF"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dropdown, DropdownButton, DropdownMenu, DropdownItem, DropdownDivider, } from "../components/dropdown";
3
+ import { Button } from "../components/button";
4
+ const defaultT = (_key, fallback) => fallback ?? _key;
5
+ function EllipsisVerticalSvg(props) {
6
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z" }) }));
7
+ }
8
+ function ArrowsRightLeftSvg(props) {
9
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5" }) }));
10
+ }
11
+ function TrashSvg(props) {
12
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0" }) }));
13
+ }
14
+ export function TeamMemberMenu({ onTransfer, onRemove, t = defaultT }) {
15
+ return (_jsxs(Dropdown, { children: [_jsx(DropdownButton, { as: Button, plain: true, "aria-label": t("team.memberActions", "Member actions"), children: _jsx(EllipsisVerticalSvg, { className: "size-5" }) }), _jsxs(DropdownMenu, { anchor: "bottom end", children: [_jsxs(DropdownItem, { onClick: onTransfer, children: [_jsx(ArrowsRightLeftSvg, { className: "size-4", "data-slot": "icon" }), t("team.transferOwnership", "Transfer ownership")] }), _jsx(DropdownDivider, {}), _jsxs(DropdownItem, { onClick: onRemove, children: [_jsx(TrashSvg, { className: "size-4 text-red-500 dark:text-red-400", "data-slot": "icon" }), _jsx("span", { className: "text-red-600 dark:text-red-400", children: t("team.removeMember", "Remove member") })] })] })] }));
16
+ }
17
+ //# sourceMappingURL=team-member-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-member-menu.js","sourceRoot":"","sources":["../../src/org/team-member-menu.tsx"],"names":[],"mappings":";AAEA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC;AAErE,SAAS,mBAAmB,CAAC,KAAoC;IAC/D,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,8IAA8I,GAAG,GAClM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoC;IAC9D,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,4EAA4E,GAAG,GAChI,CACP,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAoC;IACpD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,+ZAA+Z,GAAG,GACnd,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,EAAuB;IACxF,OAAO,CACL,MAAC,QAAQ,eACP,KAAC,cAAc,IAAC,EAAE,EAAE,MAAM,EAAE,KAAK,sBAAa,CAAC,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,YACrF,KAAC,mBAAmB,IAAC,SAAS,EAAC,QAAQ,GAAG,GAC3B,EACjB,MAAC,YAAY,IAAC,MAAM,EAAC,YAAY,aAC/B,MAAC,YAAY,IAAC,OAAO,EAAE,UAAU,aAC/B,KAAC,kBAAkB,IAAC,SAAS,EAAC,QAAQ,eAAW,MAAM,GAAG,EACzD,CAAC,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,IACrC,EACf,KAAC,eAAe,KAAG,EACnB,MAAC,YAAY,IAAC,OAAO,EAAE,QAAQ,aAC7B,KAAC,QAAQ,IAAC,SAAS,EAAC,uCAAuC,eAAW,MAAM,GAAG,EAC/E,eAAM,SAAS,EAAC,gCAAgC,YAC7C,CAAC,CAAC,mBAAmB,EAAE,eAAe,CAAC,GACnC,IACM,IACF,IACN,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { TeamMember, TranslationFn } from "./types";
2
+ export interface TeamMemberRowProps {
3
+ member: TeamMember;
4
+ isCurrentUser: boolean;
5
+ isOwner: boolean;
6
+ onTransfer: (membershipId: string) => void;
7
+ onRemove: (membershipId: string) => void;
8
+ t?: TranslationFn;
9
+ }
10
+ export declare function TeamMemberRow({ member, isCurrentUser, isOwner, onTransfer, onRemove, t, }: TeamMemberRowProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=team-member-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-member-row.d.ts","sourceRoot":"","sources":["../../src/org/team-member-row.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIzD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAmBD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,CAAY,GACb,EAAE,kBAAkB,2CA2DpB"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge } from "../components/badge";
3
+ import { TeamMemberMenu } from "./team-member-menu";
4
+ const defaultT = (_key, fallback) => fallback ?? _key;
5
+ function formatDate(dateString) {
6
+ if (!dateString)
7
+ return "";
8
+ try {
9
+ return new Date(dateString).toLocaleDateString(undefined, {
10
+ year: "numeric",
11
+ month: "short",
12
+ day: "numeric",
13
+ });
14
+ }
15
+ catch {
16
+ return dateString;
17
+ }
18
+ }
19
+ function getDisplayName(member) {
20
+ return member.name || member.email || member.userId || member.membershipId;
21
+ }
22
+ export function TeamMemberRow({ member, isCurrentUser, isOwner, onTransfer, onRemove, t = defaultT, }) {
23
+ const name = getDisplayName(member);
24
+ const initial = (name[0] ?? "?").toUpperCase();
25
+ const isRoleOwner = member.role === "owner";
26
+ const joined = formatDate(member.acceptedAt ?? member.createdAt);
27
+ const showMenu = isOwner && !isCurrentUser;
28
+ const avatarGradient = isRoleOwner
29
+ ? "from-amber-500 to-amber-600 dark:from-amber-400 dark:to-amber-500"
30
+ : "from-primary to-primary/80";
31
+ return (_jsxs("div", { className: "group flex items-center justify-between gap-4 rounded-xl border border-border/40 bg-card/75 p-4 backdrop-blur-sm transition-all duration-200 hover:-translate-y-px hover:bg-accent/20 hover:shadow-sm", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [_jsx("div", { className: `flex size-10 shrink-0 items-center justify-center rounded-full bg-linear-to-br ${avatarGradient} text-sm/6 font-semibold text-white`, children: initial }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("p", { className: "truncate text-sm/6 font-medium text-foreground", children: [name, isCurrentUser && (_jsxs("span", { className: "ml-1 text-xs text-muted-foreground", children: ["(", t("team.you", "you"), ")"] }))] }), _jsx(Badge, { color: isRoleOwner ? "amber" : "zinc", children: isRoleOwner ? t("team.owner", "Owner") : t("team.member", "Member") })] }), _jsxs("div", { className: "flex items-center gap-3 text-xs text-muted-foreground", children: [member.email && _jsx("span", { className: "truncate", children: member.email }), joined && (_jsxs("span", { children: [t("team.joined", "Joined"), " ", joined] }))] })] })] }), showMenu && (_jsx("div", { className: "shrink-0", children: _jsx(TeamMemberMenu, { onTransfer: () => onTransfer(member.membershipId), onRemove: () => onRemove(member.membershipId), t: t }) }))] }));
32
+ }
33
+ //# sourceMappingURL=team-member-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-member-row.js","sourceRoot":"","sources":["../../src/org/team-member-row.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC;AAWrE,SAAS,UAAU,CAAC,UAA8B;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACxD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAkB;IACxC,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,CAAC,GAAG,QAAQ,GACO;IACnB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC;IAE3C,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC,mEAAmE;QACrE,CAAC,CAAC,4BAA4B,CAAC;IAEjC,OAAO,CACL,eAAK,SAAS,EAAC,uMAAuM,aACpN,eAAK,SAAS,EAAC,iCAAiC,aAE9C,cACE,SAAS,EAAE,kFAAkF,cAAc,qCAAqC,YAE/I,OAAO,GACJ,EAGN,eAAK,SAAS,EAAC,SAAS,aACtB,eAAK,SAAS,EAAC,yBAAyB,aACtC,aAAG,SAAS,EAAC,gDAAgD,aAC1D,IAAI,EACJ,aAAa,IAAI,CAChB,gBAAM,SAAS,EAAC,oCAAoC,kBAChD,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,SACjB,CACR,IACC,EACJ,KAAC,KAAK,IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,YACzC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,GAC9D,IACJ,EACN,eAAK,SAAS,EAAC,uDAAuD,aACnE,MAAM,CAAC,KAAK,IAAI,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,CAAC,KAAK,GAAQ,EAChE,MAAM,IAAI,CACT,2BACG,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAG,MAAM,IAC/B,CACR,IACG,IACF,IACF,EAGL,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,UAAU,YACvB,KAAC,cAAc,IACb,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EACjD,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAC7C,CAAC,EAAE,CAAC,GACJ,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { PendingInvite, TranslationFn } from "./types";
2
+ export interface TeamPendingRowProps {
3
+ invite: PendingInvite;
4
+ isOwner: boolean;
5
+ onRevoke: (membershipId: string) => void;
6
+ t?: TranslationFn;
7
+ }
8
+ export declare function TeamPendingRow({ invite, isOwner, onRevoke, t, }: TeamPendingRowProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=team-pending-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-pending-row.d.ts","sourceRoot":"","sources":["../../src/org/team-pending-row.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAyB5D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,CAAC,CAAC,EAAE,aAAa,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,QAAQ,EACR,CAAY,GACb,EAAE,mBAAmB,2CA2CrB"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from "../components/button";
3
+ const defaultT = (_key, fallback) => fallback ?? _key;
4
+ function EnvelopeSvg(props) {
5
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", "aria-hidden": "true", ...props, children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75" }) }));
6
+ }
7
+ function formatDate(dateString) {
8
+ if (!dateString)
9
+ return "";
10
+ try {
11
+ return new Date(dateString).toLocaleDateString(undefined, {
12
+ year: "numeric",
13
+ month: "short",
14
+ day: "numeric",
15
+ });
16
+ }
17
+ catch {
18
+ return dateString;
19
+ }
20
+ }
21
+ export function TeamPendingRow({ invite, isOwner, onRevoke, t = defaultT, }) {
22
+ const email = invite.email ?? invite.membershipId;
23
+ const sent = formatDate(invite.invitedAt ?? invite.createdAt);
24
+ const expires = formatDate(invite.expiresAt);
25
+ return (_jsxs("div", { className: "group flex items-center justify-between gap-4 rounded-xl border border-amber-200/40 bg-amber-50/20 p-4 transition-all duration-200 hover:-translate-y-px hover:bg-amber-50/40 hover:shadow-sm dark:border-amber-500/15 dark:bg-amber-500/5 dark:hover:bg-amber-500/10", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-3", children: [_jsx("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full bg-amber-100 dark:bg-amber-500/20", children: _jsx(EnvelopeSvg, { className: "size-5 text-amber-600 dark:text-amber-400" }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "truncate text-sm/6 font-medium text-foreground", children: email }), _jsxs("div", { className: "flex items-center gap-3 text-xs text-muted-foreground", children: [sent && (_jsxs("span", { children: [t("team.sent", "Sent:"), " ", sent] })), expires && (_jsxs("span", { className: "text-amber-600 dark:text-amber-400", children: [t("team.expires", "Expires:"), " ", expires] }))] })] })] }), isOwner && (_jsx(Button, { plain: true, onClick: () => onRevoke(invite.membershipId), className: "shrink-0 text-xs text-amber-600 dark:text-amber-400", children: t("team.revoke", "Revoke") }))] }));
26
+ }
27
+ //# sourceMappingURL=team-pending-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-pending-row.js","sourceRoot":"","sources":["../../src/org/team-pending-row.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,MAAM,QAAQ,GAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,IAAI,IAAI,CAAC;AAErE,SAAS,WAAW,CAAC,KAAoC;IACvD,OAAO,CACL,cAAK,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAC,cAAc,iBAAa,MAAM,KAAK,KAAK,YAC1I,eAAM,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAC,gQAAgQ,GAAG,GACpT,CACP,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,UAA8B;IAChD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACxD,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,OAAO;YACd,GAAG,EAAE,SAAS;SACf,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AASD,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,QAAQ,EACR,CAAC,GAAG,QAAQ,GACQ;IACpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO,CACL,eAAK,SAAS,EAAC,uQAAuQ,aACpR,eAAK,SAAS,EAAC,iCAAiC,aAE9C,cAAK,SAAS,EAAC,kGAAkG,YAC/G,KAAC,WAAW,IAAC,SAAS,EAAC,2CAA2C,GAAG,GACjE,EAGN,eAAK,SAAS,EAAC,SAAS,aACtB,YAAG,SAAS,EAAC,gDAAgD,YAAE,KAAK,GAAK,EACzE,eAAK,SAAS,EAAC,uDAAuD,aACnE,IAAI,IAAI,CACP,2BACG,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,OAAG,IAAI,IAC1B,CACR,EACA,OAAO,IAAI,CACV,gBAAM,SAAS,EAAC,oCAAoC,aACjD,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,OAAG,OAAO,IACnC,CACR,IACG,IACF,IACF,EAGL,OAAO,IAAI,CACV,KAAC,MAAM,IACL,KAAK,QACL,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAC5C,SAAS,EAAC,qDAAqD,YAE9D,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,GACpB,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"profile-hero.d.ts","sourceRoot":"","sources":["../../src/profile/profile-hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;CAChD;AAED,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,wFAAwF;IACxF,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAiBD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,gBAAgB,2CA0ElB"}
1
+ {"version":3,"file":"profile-hero.d.ts","sourceRoot":"","sources":["../../src/profile/profile-hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;CAChD;AAED,UAAU,gBAAgB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,wFAAwF;IACxF,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAiBD,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,gBAAgB,2CAwElB"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "../lib/utils";
3
- const badgeStyles = {
4
- recommended: "bg-amber-500/20 text-amber-100 border-amber-400/30",
5
- partner: "bg-emerald-500/20 text-emerald-100 border-emerald-400/30",
6
- default: "bg-white/15 text-white border-white/20",
3
+ const badgeDot = {
4
+ recommended: "bg-amber-300",
5
+ partner: "bg-emerald-300",
6
+ default: "bg-white/70",
7
7
  };
8
8
  function getInitials(name) {
9
9
  return name
@@ -14,6 +14,6 @@ function getInitials(name) {
14
14
  .toUpperCase();
15
15
  }
16
16
  export function ProfileHero({ bannerUrl, avatarUrl, name, subtitle, verified, badges, className, bannerAction, avatarAction, }) {
17
- return (_jsxs("div", { className: cn("relative", className), children: [_jsxs("div", { className: "relative h-[120px] overflow-hidden rounded-t-2xl sm:h-[160px] md:h-[200px]", children: [bannerUrl ? (_jsx("img", { src: bannerUrl, alt: "", className: "size-full object-cover" })) : (_jsx("div", { className: "size-full bg-linear-to-br from-primary/80 via-primary to-primary/60" })), badges && badges.length > 0 && (_jsx("div", { className: "absolute right-3 top-3 flex gap-2", children: badges.map((badge) => (_jsx("span", { className: cn("rounded-full border px-2.5 py-0.5 text-[11px] font-semibold backdrop-blur-xs", badgeStyles[badge.variant]), children: badge.label }, badge.label))) })), bannerAction] }), _jsx("div", { className: "pointer-events-none relative px-5 sm:px-6", children: _jsx("div", { className: "-mt-8 sm:-mt-10", children: _jsxs("div", { className: "pointer-events-auto relative inline-block size-16 shrink-0 sm:size-20", children: [_jsx("div", { className: "size-full overflow-hidden rounded-xl border-[3px] border-background bg-background shadow-xs", children: avatarUrl ? (_jsx("img", { src: avatarUrl, alt: name, className: "size-full object-cover" })) : (_jsx("div", { className: "flex size-full items-center justify-center bg-muted text-base font-bold text-muted-foreground sm:text-lg", children: getInitials(name) })) }), avatarAction] }) }) }), _jsxs("div", { className: "px-5 pb-2 pt-2 sm:px-6", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("h1", { className: "truncate text-xl font-bold font-display tracking-tight text-foreground sm:text-2xl", children: name }), verified && (_jsx("svg", { className: "size-5 shrink-0 text-blue-500 sm:size-6", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" }) }))] }), subtitle && (_jsx("p", { className: "truncate text-xs text-muted-foreground sm:text-sm/6", children: subtitle }))] })] }));
17
+ return (_jsxs("div", { className: cn("relative", className), children: [_jsxs("div", { className: "relative h-[120px] overflow-hidden rounded-t-2xl sm:h-[160px] md:h-[200px]", children: [bannerUrl ? (_jsx("img", { src: bannerUrl, alt: "", className: "size-full object-cover" })) : (_jsx("div", { className: "size-full bg-linear-to-br from-primary/80 via-primary to-primary/60" })), badges && badges.length > 0 && (_jsx("div", { className: "absolute right-3 top-3 flex gap-1.5", children: badges.map((badge) => (_jsxs("span", { className: "inline-flex items-center gap-1.5 rounded-full border border-white/15 bg-white/10 px-2.5 py-1 text-[11px]/none font-medium tracking-wide text-white/90 backdrop-blur-sm", children: [_jsx("span", { className: cn("size-1.5 rounded-full", badgeDot[badge.variant]) }), badge.label] }, badge.label))) })), bannerAction] }), _jsx("div", { className: "pointer-events-none relative px-5 sm:px-6", children: _jsx("div", { className: "-mt-8 sm:-mt-10", children: _jsxs("div", { className: "pointer-events-auto relative inline-block size-16 shrink-0 sm:size-20", children: [_jsx("div", { className: "size-full overflow-hidden rounded-xl border-[3px] border-background bg-background shadow-xs", children: avatarUrl ? (_jsx("img", { src: avatarUrl, alt: name, className: "size-full object-cover" })) : (_jsx("div", { className: "flex size-full items-center justify-center bg-muted text-base font-bold text-muted-foreground sm:text-lg", children: getInitials(name) })) }), avatarAction] }) }) }), _jsxs("div", { className: "px-5 pb-2 pt-2 sm:px-6", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("h1", { className: "truncate text-xl font-bold font-display tracking-tight text-foreground sm:text-2xl", children: name }), verified && (_jsx("svg", { className: "size-5 shrink-0 text-blue-500 sm:size-6", viewBox: "0 0 20 20", fill: "currentColor", children: _jsx("path", { fillRule: "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z", clipRule: "evenodd" }) }))] }), subtitle && (_jsx("p", { className: "truncate text-xs text-muted-foreground sm:text-sm/6", children: subtitle }))] })] }));
18
18
  }
19
19
  //# sourceMappingURL=profile-hero.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-hero.js","sourceRoot":"","sources":["../../src/profile/profile-hero.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAqBlC,MAAM,WAAW,GAAgD;IAC/D,WAAW,EAAE,oDAAoD;IACjE,OAAO,EAAE,0DAA0D;IACnE,OAAO,EAAE,wCAAwC;CAClD,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,KAAK,CAAC,KAAK,CAAC;SACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,IAAI,CAAC,EAAE,CAAC;SACR,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,YAAY,GACK;IACjB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,aAEvC,eAAK,SAAS,EAAC,4EAA4E,aACxF,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,wBAAwB,GAAG,CAClE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,qEAAqE,GAAG,CACxF,EACA,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,cAAK,SAAS,EAAC,mCAAmC,YAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,eAEE,SAAS,EAAE,EAAE,CACX,8EAA8E,EAC9E,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAC3B,YAEA,KAAK,CAAC,KAAK,IANP,KAAK,CAAC,KAAK,CAOX,CACR,CAAC,GACE,CACP,EACA,YAAY,IACT,EAGN,cAAK,SAAS,EAAC,2CAA2C,YACxD,cAAK,SAAS,EAAC,iBAAiB,YAC9B,eAAK,SAAS,EAAC,uEAAuE,aACpF,cAAK,SAAS,EAAC,6FAA6F,YACzG,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,wBAAwB,GAAG,CACtE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,0GAA0G,YACtH,WAAW,CAAC,IAAI,CAAC,GACd,CACP,GACG,EACL,YAAY,IACT,GACF,GACF,EAGN,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,2BAA2B,aACxC,aAAI,SAAS,EAAC,oFAAoF,YAC/F,IAAI,GACF,EACJ,QAAQ,IAAI,CACX,cACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,YAEnB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,wJAAwJ,EAC1J,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,IACG,EACL,QAAQ,IAAI,CACX,YAAG,SAAS,EAAC,qDAAqD,YAC/D,QAAQ,GACP,CACL,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"profile-hero.js","sourceRoot":"","sources":["../../src/profile/profile-hero.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAqBlC,MAAM,QAAQ,GAAgD;IAC5D,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,gBAAgB;IACzB,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,KAAK,CAAC,KAAK,CAAC;SACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChB,IAAI,CAAC,EAAE,CAAC;SACR,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,YAAY,GACK;IACjB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,aAEvC,eAAK,SAAS,EAAC,4EAA4E,aACxF,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAE,EAAC,SAAS,EAAC,wBAAwB,GAAG,CAClE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,qEAAqE,GAAG,CACxF,EACA,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B,cAAK,SAAS,EAAC,qCAAqC,YACjD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,gBAEE,SAAS,EAAC,wKAAwK,aAElL,eAAM,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAI,EACxE,KAAK,CAAC,KAAK,KAJP,KAAK,CAAC,KAAK,CAKX,CACR,CAAC,GACE,CACP,EACA,YAAY,IACT,EAGN,cAAK,SAAS,EAAC,2CAA2C,YACxD,cAAK,SAAS,EAAC,iBAAiB,YAC9B,eAAK,SAAS,EAAC,uEAAuE,aACpF,cAAK,SAAS,EAAC,6FAA6F,YACzG,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,wBAAwB,GAAG,CACtE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,0GAA0G,YACtH,WAAW,CAAC,IAAI,CAAC,GACd,CACP,GACG,EACL,YAAY,IACT,GACF,GACF,EAGN,eAAK,SAAS,EAAC,wBAAwB,aACrC,eAAK,SAAS,EAAC,2BAA2B,aACxC,aAAI,SAAS,EAAC,oFAAoF,YAC/F,IAAI,GACF,EACJ,QAAQ,IAAI,CACX,cACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,YAEnB,eACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,wJAAwJ,EAC1J,QAAQ,EAAC,SAAS,GAClB,GACE,CACP,IACG,EACL,QAAQ,IAAI,CACX,YAAG,SAAS,EAAC,qDAAqD,YAC/D,QAAQ,GACP,CACL,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cellarnode/ui",
3
- "version": "0.8.10",
3
+ "version": "0.8.15",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Shared UI components, theme tokens, and chat/offer primitives for CellarNode dashboards.",