@burdenoff/microfe-conversations 2026.510.117
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/README.md +12 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoot.d.ts +19 -0
- package/dist/conversations/ConversationsAdminRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoot.js +104 -0
- package/dist/conversations/ConversationsAdminRoot.js.map +1 -0
- package/dist/conversations/ConversationsAdminRoutes.d.ts +18 -0
- package/dist/conversations/ConversationsAdminRoutes.d.ts.map +1 -0
- package/dist/conversations/ConversationsAdminRoutes.js +42 -0
- package/dist/conversations/ConversationsAdminRoutes.js.map +1 -0
- package/dist/conversations/ConversationsRoot.d.ts +33 -0
- package/dist/conversations/ConversationsRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsRoot.js +100 -0
- package/dist/conversations/ConversationsRoot.js.map +1 -0
- package/dist/conversations/ConversationsUserRoot.d.ts +17 -0
- package/dist/conversations/ConversationsUserRoot.d.ts.map +1 -0
- package/dist/conversations/ConversationsUserRoot.js +101 -0
- package/dist/conversations/ConversationsUserRoot.js.map +1 -0
- package/dist/conversations/ConversationsUserRoutes.d.ts +12 -0
- package/dist/conversations/ConversationsUserRoutes.d.ts.map +1 -0
- package/dist/conversations/ConversationsUserRoutes.js +45 -0
- package/dist/conversations/ConversationsUserRoutes.js.map +1 -0
- package/dist/conversations/components/ConversationCard.d.ts +14 -0
- package/dist/conversations/components/ConversationCard.d.ts.map +1 -0
- package/dist/conversations/components/ConversationCard.js +118 -0
- package/dist/conversations/components/ConversationCard.js.map +1 -0
- package/dist/conversations/components/LazyPageBoundary.d.ts +25 -0
- package/dist/conversations/components/LazyPageBoundary.d.ts.map +1 -0
- package/dist/conversations/components/LazyPageBoundary.js +144 -0
- package/dist/conversations/components/LazyPageBoundary.js.map +1 -0
- package/dist/conversations/components/MessageBubble.d.ts +21 -0
- package/dist/conversations/components/MessageBubble.d.ts.map +1 -0
- package/dist/conversations/components/MessageBubble.js +242 -0
- package/dist/conversations/components/MessageBubble.js.map +1 -0
- package/dist/conversations/components/PageLayout.d.ts +55 -0
- package/dist/conversations/components/PageLayout.d.ts.map +1 -0
- package/dist/conversations/components/PageLayout.js +93 -0
- package/dist/conversations/components/PageLayout.js.map +1 -0
- package/dist/conversations/components/PermissionGuard.d.ts +21 -0
- package/dist/conversations/components/PermissionGuard.d.ts.map +1 -0
- package/dist/conversations/components/PermissionGuard.js +25 -0
- package/dist/conversations/components/PermissionGuard.js.map +1 -0
- package/dist/conversations/constants/featureFlags.d.ts +8 -0
- package/dist/conversations/constants/featureFlags.d.ts.map +1 -0
- package/dist/conversations/constants/featureFlags.js +12 -0
- package/dist/conversations/constants/featureFlags.js.map +1 -0
- package/dist/conversations/constants/permissions.d.ts +174 -0
- package/dist/conversations/constants/permissions.d.ts.map +1 -0
- package/dist/conversations/constants/permissions.js +68 -0
- package/dist/conversations/constants/permissions.js.map +1 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.d.ts +8 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.d.ts.map +1 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.js +16 -0
- package/dist/conversations/hooks/useAdminFeatureFlags.js.map +1 -0
- package/dist/conversations/hooks/useConversationQueries.d.ts +83 -0
- package/dist/conversations/hooks/useConversationQueries.d.ts.map +1 -0
- package/dist/conversations/hooks/useConversationQueries.js +136 -0
- package/dist/conversations/hooks/useConversationQueries.js.map +1 -0
- package/dist/conversations/hooks/useExportConversation.d.ts +10 -0
- package/dist/conversations/hooks/useExportConversation.d.ts.map +1 -0
- package/dist/conversations/hooks/useExportConversation.js +41 -0
- package/dist/conversations/hooks/useExportConversation.js.map +1 -0
- package/dist/conversations/hooks/useMessageQueries.d.ts +84 -0
- package/dist/conversations/hooks/useMessageQueries.d.ts.map +1 -0
- package/dist/conversations/hooks/useMessageQueries.js +123 -0
- package/dist/conversations/hooks/useMessageQueries.js.map +1 -0
- package/dist/conversations/hooks/useMessageSubscriptions.d.ts +24 -0
- package/dist/conversations/hooks/useMessageSubscriptions.d.ts.map +1 -0
- package/dist/conversations/hooks/useMessageSubscriptions.js +90 -0
- package/dist/conversations/hooks/useMessageSubscriptions.js.map +1 -0
- package/dist/conversations/hooks/useUserFeatureFlags.d.ts +5 -0
- package/dist/conversations/hooks/useUserFeatureFlags.d.ts.map +1 -0
- package/dist/conversations/hooks/useUserFeatureFlags.js +10 -0
- package/dist/conversations/hooks/useUserFeatureFlags.js.map +1 -0
- package/dist/conversations/index.d.ts +31 -0
- package/dist/conversations/index.d.ts.map +1 -0
- package/dist/conversations/index.js +5 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.d.ts +9 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.d.ts.map +1 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.js +117 -0
- package/dist/conversations/pages/AdminConversationsLandingPage.js.map +1 -0
- package/dist/conversations/pages/ConversationAdminPages.d.ts +5 -0
- package/dist/conversations/pages/ConversationAdminPages.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationAdminPages.js +573 -0
- package/dist/conversations/pages/ConversationAdminPages.js.map +1 -0
- package/dist/conversations/pages/ConversationDetailPage.d.ts +2 -0
- package/dist/conversations/pages/ConversationDetailPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationDetailPage.js +439 -0
- package/dist/conversations/pages/ConversationDetailPage.js.map +1 -0
- package/dist/conversations/pages/ConversationListPage.d.ts +6 -0
- package/dist/conversations/pages/ConversationListPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationListPage.js +269 -0
- package/dist/conversations/pages/ConversationListPage.js.map +1 -0
- package/dist/conversations/pages/ConversationsLandingPage.d.ts +9 -0
- package/dist/conversations/pages/ConversationsLandingPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationsLandingPage.js +124 -0
- package/dist/conversations/pages/ConversationsLandingPage.js.map +1 -0
- package/dist/conversations/pages/ConversationsSettingsPage.d.ts +2 -0
- package/dist/conversations/pages/ConversationsSettingsPage.d.ts.map +1 -0
- package/dist/conversations/pages/ConversationsSettingsPage.js +215 -0
- package/dist/conversations/pages/ConversationsSettingsPage.js.map +1 -0
- package/dist/conversations/pages/NewConversationPage.d.ts +2 -0
- package/dist/conversations/pages/NewConversationPage.d.ts.map +1 -0
- package/dist/conversations/pages/NewConversationPage.js +287 -0
- package/dist/conversations/pages/NewConversationPage.js.map +1 -0
- package/dist/conversations/providers/ConversationsProvider.d.ts +13 -0
- package/dist/conversations/providers/ConversationsProvider.d.ts.map +1 -0
- package/dist/conversations/providers/ConversationsProvider.js +109 -0
- package/dist/conversations/providers/ConversationsProvider.js.map +1 -0
- package/dist/conversations/store/conversationsStore.d.ts +29 -0
- package/dist/conversations/store/conversationsStore.d.ts.map +1 -0
- package/dist/conversations/store/conversationsStore.js +56 -0
- package/dist/conversations/store/conversationsStore.js.map +1 -0
- package/dist/conversations/types/index.d.ts +352 -0
- package/dist/conversations/types/index.d.ts.map +1 -0
- package/dist/conversations/utils/cn.d.ts +8 -0
- package/dist/conversations/utils/cn.d.ts.map +1 -0
- package/dist/conversations/utils/cn.js +10 -0
- package/dist/conversations/utils/cn.js.map +1 -0
- package/dist/conversations/utils/i18n.d.ts +15 -0
- package/dist/conversations/utils/i18n.d.ts.map +1 -0
- package/dist/conversations/utils/i18n.js +14 -0
- package/dist/conversations/utils/i18n.js.map +1 -0
- package/dist/conversations/utils/mappers.d.ts +32 -0
- package/dist/conversations/utils/mappers.d.ts.map +1 -0
- package/dist/conversations/utils/mappers.js +164 -0
- package/dist/conversations/utils/mappers.js.map +1 -0
- package/dist/conversations/utils/navigation.d.ts +18 -0
- package/dist/conversations/utils/navigation.d.ts.map +1 -0
- package/dist/conversations/utils/navigation.js +8 -0
- package/dist/conversations/utils/navigation.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2008 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +997 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1674 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/utils/nativeBridge.d.ts +3 -0
- package/dist/utils/nativeBridge.d.ts.map +1 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/package.json +115 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ConversationAddedDocument as e, ConversationDeletedDocument as t, ConversationUpdatedDocument as n, GetMessagesDocument as r, MessageAddedDocument as i, MessageDeletedDocument as a, MessageUpdatedDocument as o, ParticipantChangedDocument as s } from "../../generated/wspace-operations.js";
|
|
2
|
+
import { useEffect as c } from "react";
|
|
3
|
+
import { useApolloClient as l, useSubscription as u } from "@apollo/client/react";
|
|
4
|
+
//#region src/conversations/hooks/useMessageSubscriptions.ts
|
|
5
|
+
function d(e, t, n) {
|
|
6
|
+
e.updateQuery({
|
|
7
|
+
query: r,
|
|
8
|
+
variables: {
|
|
9
|
+
conversationId: t,
|
|
10
|
+
first: 50
|
|
11
|
+
}
|
|
12
|
+
}, (e) => {
|
|
13
|
+
if (!e) return e;
|
|
14
|
+
let t = e.messages, r = t?.edges ?? [];
|
|
15
|
+
return r.some((e) => e?.node?.id === n.id) ? e : {
|
|
16
|
+
...e,
|
|
17
|
+
messages: {
|
|
18
|
+
...t ?? {},
|
|
19
|
+
edges: [...r, {
|
|
20
|
+
__typename: "MessageEdge",
|
|
21
|
+
cursor: n.id,
|
|
22
|
+
node: n
|
|
23
|
+
}],
|
|
24
|
+
totalCount: (t?.totalCount ?? r.length) + 1
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function f(e, t) {
|
|
30
|
+
e.evict({ id: e.identify({
|
|
31
|
+
__typename: "Message",
|
|
32
|
+
id: t
|
|
33
|
+
}) }), e.gc();
|
|
34
|
+
}
|
|
35
|
+
function p(e) {
|
|
36
|
+
let t = l();
|
|
37
|
+
u(i, {
|
|
38
|
+
variables: { conversationId: e ?? "" },
|
|
39
|
+
skip: !e,
|
|
40
|
+
onData: ({ data: n }) => {
|
|
41
|
+
let r = n.data?.messageAdded;
|
|
42
|
+
!r || !e || d(t.cache, e, r);
|
|
43
|
+
},
|
|
44
|
+
onError: (e) => console.warn("[useMessageStream] messageAdded error:", e)
|
|
45
|
+
}), u(o, {
|
|
46
|
+
variables: { conversationId: e ?? "" },
|
|
47
|
+
skip: !e,
|
|
48
|
+
onError: (e) => console.warn("[useMessageStream] messageUpdated error:", e)
|
|
49
|
+
}), u(a, {
|
|
50
|
+
variables: { conversationId: e ?? "" },
|
|
51
|
+
skip: !e,
|
|
52
|
+
onData: ({ data: e }) => {
|
|
53
|
+
let n = e.data?.messageDeleted?.messageId;
|
|
54
|
+
n && f(t.cache, n);
|
|
55
|
+
},
|
|
56
|
+
onError: (e) => console.warn("[useMessageStream] messageDeleted error:", e)
|
|
57
|
+
}), c(() => () => void 0, [e]);
|
|
58
|
+
}
|
|
59
|
+
function m(r) {
|
|
60
|
+
let i = l();
|
|
61
|
+
u(e, {
|
|
62
|
+
onData: ({ data: e }) => {
|
|
63
|
+
e.data?.conversationAdded && (i.cache.evict({ fieldName: "conversations" }), i.cache.gc());
|
|
64
|
+
},
|
|
65
|
+
onError: (e) => console.warn("[useConversationStream] conversationAdded error:", e)
|
|
66
|
+
}), u(t, {
|
|
67
|
+
variables: { conversationId: r ?? "" },
|
|
68
|
+
skip: !r,
|
|
69
|
+
onData: ({ data: e }) => {
|
|
70
|
+
let t = e.data?.conversationDeleted?.conversationId;
|
|
71
|
+
t && (i.cache.evict({ id: i.cache.identify({
|
|
72
|
+
__typename: "Conversation",
|
|
73
|
+
id: t
|
|
74
|
+
}) }), i.cache.gc());
|
|
75
|
+
},
|
|
76
|
+
onError: (e) => console.warn("[useConversationStream] conversationDeleted error:", e)
|
|
77
|
+
}), u(n, {
|
|
78
|
+
variables: { conversationId: r ?? "" },
|
|
79
|
+
skip: !r,
|
|
80
|
+
onError: (e) => console.warn("[useConversationStream] conversationUpdated error:", e)
|
|
81
|
+
}), u(s, {
|
|
82
|
+
variables: { conversationId: r ?? "" },
|
|
83
|
+
skip: !r,
|
|
84
|
+
onError: (e) => console.warn("[useConversationStream] participantChanged error:", e)
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { m as useConversationStream, p as useMessageStreamForConversation };
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=useMessageSubscriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMessageSubscriptions.js","names":[],"sources":["../../../src/conversations/hooks/useMessageSubscriptions.ts"],"sourcesContent":["/**\n * Real-time message subscription hooks.\n *\n * Wires the GraphQL subscriptions defined in\n * `src/operations/wspace/conversations/subscriptions/messageSubscriptions.graphql`\n * into Apollo cache updates so pages do not have to poll.\n *\n * Usage in a page:\n * useMessageStreamForConversation(conversationId);\n *\n * The hook ignores subscription errors (logs only) — the page UI continues to\n * work with whatever is already in the cache; the next refresh / refetch\n * recovers any missed events.\n *\n * NOTE: This file is the canonical replacement for `pollInterval` usage in\n * the conversation detail and list pages. Pages should remove their\n * `pollInterval: …` arguments when they switch to this hook.\n */\nimport { useEffect } from \"react\";\nimport { type ApolloCache, type FetchResult } from \"@apollo/client\";\nimport { useApolloClient } from \"@apollo/client/react\";\nimport { useSubscription } from \"@apollo/client/react\";\n\nimport {\n MessageAddedDocument,\n MessageUpdatedDocument,\n MessageDeletedDocument,\n MessageReactionChangedDocument,\n MessageReadReceiptAddedDocument,\n type MessageAddedSubscription,\n type MessageUpdatedSubscription,\n type MessageDeletedSubscription,\n type MessageReactionChangedSubscription,\n type MessageReadReceiptAddedSubscription,\n GetMessagesDocument,\n type GetMessagesQuery,\n type GetMessagesQueryVariables,\n} from \"../../generated/wspace-operations\";\n\ninterface MessageEdge {\n __typename?: \"MessageEdge\";\n cursor?: string | null;\n node?: { id: string; [key: string]: unknown } | null;\n}\n\ninterface MessagesConnection {\n __typename?: \"MessageConnection\";\n edges?: MessageEdge[] | null;\n pageInfo?: unknown;\n totalCount?: number | null;\n}\n\n/**\n * Append a new message to the cached `messages(conversationId: …)` connection\n * if it isn't already present.\n */\nfunction appendToCache(\n cache: ApolloCache,\n conversationId: string,\n newMessage: { id: string; [key: string]: unknown },\n): void {\n cache.updateQuery<GetMessagesQuery, GetMessagesQueryVariables>(\n {\n query: GetMessagesDocument,\n variables: { conversationId, first: 50 },\n },\n (existing: GetMessagesQuery | null) => {\n if (!existing) return existing;\n const conn = existing.messages as MessagesConnection | null | undefined;\n const edges = conn?.edges ?? [];\n if (edges.some((e) => e?.node?.id === newMessage.id)) return existing;\n\n return {\n ...existing,\n messages: {\n ...(conn ?? {}),\n edges: [\n ...edges,\n {\n __typename: \"MessageEdge\",\n cursor: newMessage.id,\n node: newMessage,\n },\n ],\n totalCount: (conn?.totalCount ?? edges.length) + 1,\n },\n } as GetMessagesQuery;\n },\n );\n}\n\n/**\n * Evict a deleted message from the cache.\n */\nfunction evictFromCache(cache: ApolloCache, messageId: string): void {\n cache.evict({ id: cache.identify({ __typename: \"Message\", id: messageId }) });\n cache.gc();\n}\n\nexport function useMessageStreamForConversation(\n conversationId: string | undefined,\n): void {\n const client = useApolloClient();\n\n // Inbound new messages\n useSubscription<MessageAddedSubscription>(MessageAddedDocument, {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onData: ({ data }: { data: FetchResult<MessageAddedSubscription> }) => {\n const msg = data.data?.messageAdded;\n if (!msg || !conversationId) return;\n appendToCache(client.cache, conversationId, msg as { id: string });\n },\n onError: (err) =>\n console.warn(\"[useMessageStream] messageAdded error:\", err),\n });\n\n // Edits\n useSubscription<MessageUpdatedSubscription>(MessageUpdatedDocument, {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onError: (err) =>\n console.warn(\"[useMessageStream] messageUpdated error:\", err),\n // Apollo merges by `id` automatically (cache normalisation) — no manual write needed.\n });\n\n // Deletes\n useSubscription<MessageDeletedSubscription>(MessageDeletedDocument, {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onData: ({ data }: { data: FetchResult<MessageDeletedSubscription> }) => {\n const messageId = data.data?.messageDeleted?.messageId;\n if (!messageId) return;\n evictFromCache(client.cache, messageId);\n },\n onError: (err) =>\n console.warn(\"[useMessageStream] messageDeleted error:\", err),\n });\n\n // Cleanup intentionally noop — Apollo unsubscribes on unmount via the hook lifecycle.\n useEffect(() => () => undefined, [conversationId]);\n}\n\n/**\n * Reactions stream: subscribe per-message. Useful for a focused message\n * preview (not the entire conversation).\n */\nexport function useReactionStreamForMessage(\n messageId: string | undefined,\n): void {\n useSubscription<MessageReactionChangedSubscription>(\n MessageReactionChangedDocument,\n {\n variables: { messageId: messageId ?? \"\" },\n skip: !messageId,\n onError: (err) => console.warn(\"[useReactionStream] error:\", err),\n },\n );\n}\n\n/**\n * Read-receipt stream for a single message — used by the read-by indicator.\n */\nexport function useReadReceiptStreamForMessage(\n messageId: string | undefined,\n): void {\n useSubscription<MessageReadReceiptAddedSubscription>(\n MessageReadReceiptAddedDocument,\n {\n variables: { messageId: messageId ?? \"\" },\n skip: !messageId,\n onError: (err) => console.warn(\"[useReadReceiptStream] error:\", err),\n },\n );\n}\n\n// ---------------------------------------------------------------------------\n// Conversation-level streams (used by the list and landing pages).\n// These imports resolve once codegen surfaces them from the new\n// subscriptions/conversationSubscriptions.graphql file.\n// ---------------------------------------------------------------------------\n\nimport {\n ConversationAddedDocument,\n ConversationUpdatedDocument,\n ConversationDeletedDocument,\n ParticipantChangedDocument,\n type ConversationAddedSubscription,\n type ConversationUpdatedSubscription,\n type ConversationDeletedSubscription,\n type ParticipantChangedSubscription,\n} from \"../../generated/wspace-operations\";\n\n/**\n * Subscribe to all conversation-level lifecycle events for the current actor.\n *\n * - `conversationAdded` — refresh the conversation list when one is created.\n * - `conversationDeleted` — evict from cache when one is removed.\n * - `conversationUpdated` — Apollo normalisation handles automatically; no\n * manual write required.\n * - `participantChanged` — refresh members panel.\n *\n * Use at the top of the list page / landing page once. Safe to call multiple\n * times across components — Apollo deduplicates.\n */\nexport function useConversationStream(\n conversationId?: string | undefined,\n): void {\n const client = useApolloClient();\n\n useSubscription<ConversationAddedSubscription>(ConversationAddedDocument, {\n onData: ({\n data,\n }: {\n data: FetchResult<ConversationAddedSubscription>;\n }) => {\n const conv = data.data?.conversationAdded;\n if (!conv) return;\n // Invalidate the list so the next render picks up the new conversation.\n // Cheaper than maintaining a manual append into every list variant.\n client.cache.evict({ fieldName: \"conversations\" });\n client.cache.gc();\n },\n onError: (err) =>\n console.warn(\"[useConversationStream] conversationAdded error:\", err),\n });\n\n useSubscription<ConversationDeletedSubscription>(\n ConversationDeletedDocument,\n {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onData: ({\n data,\n }: {\n data: FetchResult<ConversationDeletedSubscription>;\n }) => {\n const id = data.data?.conversationDeleted?.conversationId;\n if (!id) return;\n client.cache.evict({\n id: client.cache.identify({ __typename: \"Conversation\", id }),\n });\n client.cache.gc();\n },\n onError: (err) =>\n console.warn(\"[useConversationStream] conversationDeleted error:\", err),\n },\n );\n\n useSubscription<ConversationUpdatedSubscription>(\n ConversationUpdatedDocument,\n {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onError: (err) =>\n console.warn(\"[useConversationStream] conversationUpdated error:\", err),\n },\n );\n\n useSubscription<ParticipantChangedSubscription>(ParticipantChangedDocument, {\n variables: { conversationId: conversationId ?? \"\" },\n skip: !conversationId,\n onError: (err) =>\n console.warn(\"[useConversationStream] participantChanged error:\", err),\n });\n}\n"],"mappings":";;;;AAwDA,SAAS,EACP,GACA,GACA,GACM;AACN,GAAM,YACJ;EACE,OAAO;EACP,WAAW;GAAE;GAAgB,OAAO;GAAI;EACzC,GACA,MAAsC;AACrC,MAAI,CAAC,EAAU,QAAO;EACtB,IAAM,IAAO,EAAS,UAChB,IAAQ,GAAM,SAAS,EAAE;AAG/B,SAFI,EAAM,MAAM,MAAM,GAAG,MAAM,OAAO,EAAW,GAAG,GAAS,IAEtD;GACL,GAAG;GACH,UAAU;IACR,GAAI,KAAQ,EAAE;IACd,OAAO,CACL,GAAG,GACH;KACE,YAAY;KACZ,QAAQ,EAAW;KACnB,MAAM;KACP,CACF;IACD,aAAa,GAAM,cAAc,EAAM,UAAU;IAClD;GACF;GAEJ;;AAMH,SAAS,EAAe,GAAoB,GAAyB;AAEnE,CADA,EAAM,MAAM,EAAE,IAAI,EAAM,SAAS;EAAE,YAAY;EAAW,IAAI;EAAW,CAAC,EAAE,CAAC,EAC7E,EAAM,IAAI;;AAGZ,SAAgB,EACd,GACM;CACN,IAAM,IAAS,GAAiB;AAsChC,CAnCA,EAA0C,GAAsB;EAC9D,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,SAAS,EAAE,cAA4D;GACrE,IAAM,IAAM,EAAK,MAAM;AACnB,IAAC,KAAO,CAAC,KACb,EAAc,EAAO,OAAO,GAAgB,EAAsB;;EAEpE,UAAU,MACR,QAAQ,KAAK,0CAA0C,EAAI;EAC9D,CAAC,EAGF,EAA4C,GAAwB;EAClE,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,UAAU,MACR,QAAQ,KAAK,4CAA4C,EAAI;EAEhE,CAAC,EAGF,EAA4C,GAAwB;EAClE,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,SAAS,EAAE,cAA8D;GACvE,IAAM,IAAY,EAAK,MAAM,gBAAgB;AACxC,QACL,EAAe,EAAO,OAAO,EAAU;;EAEzC,UAAU,MACR,QAAQ,KAAK,4CAA4C,EAAI;EAChE,CAAC,EAGF,cAAsB,KAAA,GAAW,CAAC,EAAe,CAAC;;AAiEpD,SAAgB,EACd,GACM;CACN,IAAM,IAAS,GAAiB;AAmDhC,CAjDA,EAA+C,GAA2B;EACxE,SAAS,EACP,cAGI;AACS,KAAK,MAAM,sBAIxB,EAAO,MAAM,MAAM,EAAE,WAAW,iBAAiB,CAAC,EAClD,EAAO,MAAM,IAAI;;EAEnB,UAAU,MACR,QAAQ,KAAK,oDAAoD,EAAI;EACxE,CAAC,EAEF,EACE,GACA;EACE,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,SAAS,EACP,cAGI;GACJ,IAAM,IAAK,EAAK,MAAM,qBAAqB;AACtC,SACL,EAAO,MAAM,MAAM,EACjB,IAAI,EAAO,MAAM,SAAS;IAAE,YAAY;IAAgB;IAAI,CAAC,EAC9D,CAAC,EACF,EAAO,MAAM,IAAI;;EAEnB,UAAU,MACR,QAAQ,KAAK,sDAAsD,EAAI;EAC1E,CACF,EAED,EACE,GACA;EACE,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,UAAU,MACR,QAAQ,KAAK,sDAAsD,EAAI;EAC1E,CACF,EAED,EAAgD,GAA4B;EAC1E,WAAW,EAAE,gBAAgB,KAAkB,IAAI;EACnD,MAAM,CAAC;EACP,UAAU,MACR,QAAQ,KAAK,qDAAqD,EAAI;EACzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUserFeatureFlags.d.ts","sourceRoot":"","sources":["../../../src/conversations/hooks/useUserFeatureFlags.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,IAAI,gBAAgB,CAMtD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CONVERSATIONS_FLAGS as e } from "../constants/featureFlags.js";
|
|
2
|
+
import { useFeatureFlagDetails as t } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
3
|
+
//#region src/conversations/hooks/useUserFeatureFlags.ts
|
|
4
|
+
function n() {
|
|
5
|
+
return { archivedEnabled: t(e.ARCHIVED_VIEW)?.value === !0 };
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { n as useUserFeatureFlags };
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=useUserFeatureFlags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUserFeatureFlags.js","names":[],"sources":["../../../src/conversations/hooks/useUserFeatureFlags.ts"],"sourcesContent":["import { useFeatureFlagDetails } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { CONVERSATIONS_FLAGS } from \"../constants/featureFlags\";\n\nexport interface UserFeatureFlags {\n archivedEnabled: boolean;\n}\n\nexport function useUserFeatureFlags(): UserFeatureFlags {\n const archived = useFeatureFlagDetails(CONVERSATIONS_FLAGS.ARCHIVED_VIEW);\n\n return {\n archivedEnabled: archived?.value === true,\n };\n}\n"],"mappings":";;;AAOA,SAAgB,IAAwC;AAGtD,QAAO,EACL,iBAHe,EAAsB,EAAoB,cAAc,EAG5C,UAAU,IACtC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversations Microfrontend
|
|
3
|
+
*
|
|
4
|
+
* Provides a comprehensive messaging and conversation interface
|
|
5
|
+
* for direct messages, group chats, channels, and threaded discussions.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* import { ConversationsRoot, type ConversationsRootProps } from '@burdenoff/micro-fe/conversations';
|
|
10
|
+
*
|
|
11
|
+
* function App() {
|
|
12
|
+
* const props: ConversationsRootProps = {
|
|
13
|
+
* basePath: '/conversations',
|
|
14
|
+
* navigate: (path) => router.push(path),
|
|
15
|
+
* currentUser: { id: '1', email: 'user@example.com' },
|
|
16
|
+
* workspaceId: 'ws-123',
|
|
17
|
+
* apiGatewayUrl: 'https://api.example.com',
|
|
18
|
+
* authToken: 'token',
|
|
19
|
+
* };
|
|
20
|
+
*
|
|
21
|
+
* return <ConversationsRoot {...props} />;
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export { ConversationsRoot } from './ConversationsRoot';
|
|
26
|
+
export { ConversationsUserRoot } from './ConversationsUserRoot';
|
|
27
|
+
export { ConversationsAdminRoot } from './ConversationsAdminRoot';
|
|
28
|
+
export type { ConversationsRootProps, Conversation, Message, Participant, Reaction, Attachment, Mention, ConversationMembership, ConversationFilter, MessageFilter, ConversationType, ConversationState, ConversationVisibility, MessageType, MessageStatus, ParticipantRole, MembershipStatus, NotificationLevel, MentionType, PresenceStatus, ConversationsView, ConversationDisplayMode, } from './types';
|
|
29
|
+
export { useConversations } from './providers/ConversationsProvider';
|
|
30
|
+
export { useConversationsStore } from './store/conversationsStore';
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin-facing landing page for the Conversations microfrontend.
|
|
3
|
+
*
|
|
4
|
+
* Lightweight overview + section directory. Each card links to its canonical
|
|
5
|
+
* sub-route (`/moderation`, `/bulk`, `/audit`, `/apps`) for the API-backed
|
|
6
|
+
* admin surfaces.
|
|
7
|
+
*/
|
|
8
|
+
export declare function AdminConversationsLandingPage(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=AdminConversationsLandingPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminConversationsLandingPage.d.ts","sourceRoot":"","sources":["../../../src/conversations/pages/AdminConversationsLandingPage.tsx"],"names":[],"mappings":"AA2EA;;;;;;GAMG;AACH,wBAAgB,6BAA6B,4CAmE5C"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { useTr as e } from "../utils/i18n.js";
|
|
2
|
+
import { useMemo as t } from "react";
|
|
3
|
+
import { Activity as n, ChevronRight as r, ListChecks as i, MessageCircle as a, Package as o, ShieldCheck as s } from "lucide-react";
|
|
4
|
+
import { Link as c } from "react-router-dom";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
//#region src/conversations/pages/AdminConversationsLandingPage.tsx
|
|
7
|
+
var d = [
|
|
8
|
+
{
|
|
9
|
+
id: "moderation",
|
|
10
|
+
labelKey: "conversations.admin.moderation",
|
|
11
|
+
labelFallback: "Moderation",
|
|
12
|
+
descriptionKey: "conversations.admin.moderationDescription",
|
|
13
|
+
descriptionFallback: "Reported and flagged messages, moderation actions, and reviewer assignments.",
|
|
14
|
+
path: "moderation",
|
|
15
|
+
icon: /* @__PURE__ */ l(s, {
|
|
16
|
+
className: "h-5 w-5",
|
|
17
|
+
"aria-hidden": "true"
|
|
18
|
+
})
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "bulk",
|
|
22
|
+
labelKey: "conversations.admin.bulkOperations",
|
|
23
|
+
labelFallback: "Bulk Operations",
|
|
24
|
+
descriptionKey: "conversations.admin.bulkOperationsDescription",
|
|
25
|
+
descriptionFallback: "Bulk archive / unarchive, participant edits, and cross-conversation actions.",
|
|
26
|
+
path: "bulk",
|
|
27
|
+
icon: /* @__PURE__ */ l(i, {
|
|
28
|
+
className: "h-5 w-5",
|
|
29
|
+
"aria-hidden": "true"
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "audit",
|
|
34
|
+
labelKey: "conversations.admin.auditLog",
|
|
35
|
+
labelFallback: "Audit Log",
|
|
36
|
+
descriptionKey: "conversations.admin.auditLogDescription",
|
|
37
|
+
descriptionFallback: "Activity stream for admin / moderator actions on workspace conversations.",
|
|
38
|
+
path: "audit",
|
|
39
|
+
icon: /* @__PURE__ */ l(n, {
|
|
40
|
+
className: "h-5 w-5",
|
|
41
|
+
"aria-hidden": "true"
|
|
42
|
+
})
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: "apps",
|
|
46
|
+
labelKey: "conversations.admin.appInstallations",
|
|
47
|
+
labelFallback: "App Installations",
|
|
48
|
+
descriptionKey: "conversations.admin.appInstallationsDescription",
|
|
49
|
+
descriptionFallback: "Install, configure, and remove conversation apps and integrations.",
|
|
50
|
+
path: "apps",
|
|
51
|
+
icon: /* @__PURE__ */ l(o, {
|
|
52
|
+
className: "h-5 w-5",
|
|
53
|
+
"aria-hidden": "true"
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
];
|
|
57
|
+
function f() {
|
|
58
|
+
let n = e(), i = t(() => d.map((e) => ({
|
|
59
|
+
...e,
|
|
60
|
+
label: n(e.labelKey, e.labelFallback),
|
|
61
|
+
description: n(e.descriptionKey, e.descriptionFallback)
|
|
62
|
+
})), [n]);
|
|
63
|
+
return /* @__PURE__ */ u("div", {
|
|
64
|
+
className: "flex flex-col h-full",
|
|
65
|
+
children: [/* @__PURE__ */ l("div", {
|
|
66
|
+
className: "border-b border-border-subtle px-6 py-4",
|
|
67
|
+
children: /* @__PURE__ */ u("div", {
|
|
68
|
+
className: "flex items-center gap-3",
|
|
69
|
+
children: [/* @__PURE__ */ l("div", {
|
|
70
|
+
className: "p-2 rounded-md bg-muted",
|
|
71
|
+
children: /* @__PURE__ */ l(a, {
|
|
72
|
+
className: "h-5 w-5 text-muted-foreground",
|
|
73
|
+
"aria-hidden": "true"
|
|
74
|
+
})
|
|
75
|
+
}), /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h1", {
|
|
76
|
+
className: "text-lg font-semibold text-foreground",
|
|
77
|
+
children: n("conversations.admin.landingTitle", "Conversations admin")
|
|
78
|
+
}), /* @__PURE__ */ l("p", {
|
|
79
|
+
className: "text-sm text-muted-foreground",
|
|
80
|
+
children: n("conversations.admin.landingDescription", "Governance tools for workspace conversations. Select a section below to continue.")
|
|
81
|
+
})] })]
|
|
82
|
+
})
|
|
83
|
+
}), /* @__PURE__ */ l("div", {
|
|
84
|
+
className: "flex-1 min-h-0 overflow-auto p-6",
|
|
85
|
+
children: /* @__PURE__ */ l("div", {
|
|
86
|
+
className: "grid gap-3 sm:grid-cols-2 max-w-3xl",
|
|
87
|
+
children: i.map((e) => /* @__PURE__ */ u(c, {
|
|
88
|
+
to: e.path,
|
|
89
|
+
className: "group flex items-start gap-3 rounded-lg border border-border-subtle bg-card p-4 transition-colors hover:border-border hover:bg-accent",
|
|
90
|
+
children: [/* @__PURE__ */ l("div", {
|
|
91
|
+
className: "p-2 rounded-md bg-muted text-muted-foreground group-hover:text-foreground",
|
|
92
|
+
children: e.icon
|
|
93
|
+
}), /* @__PURE__ */ u("div", {
|
|
94
|
+
className: "flex-1 min-w-0",
|
|
95
|
+
children: [/* @__PURE__ */ u("div", {
|
|
96
|
+
className: "flex items-center justify-between gap-2",
|
|
97
|
+
children: [/* @__PURE__ */ l("span", {
|
|
98
|
+
className: "text-sm font-medium text-foreground",
|
|
99
|
+
children: e.label
|
|
100
|
+
}), /* @__PURE__ */ l(r, {
|
|
101
|
+
className: "h-4 w-4 text-muted-foreground",
|
|
102
|
+
"aria-hidden": "true"
|
|
103
|
+
})]
|
|
104
|
+
}), /* @__PURE__ */ l("p", {
|
|
105
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
106
|
+
children: e.description
|
|
107
|
+
})]
|
|
108
|
+
})]
|
|
109
|
+
}, e.id))
|
|
110
|
+
})
|
|
111
|
+
})]
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//#endregion
|
|
115
|
+
export { f as AdminConversationsLandingPage };
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=AdminConversationsLandingPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminConversationsLandingPage.js","names":[],"sources":["../../../src/conversations/pages/AdminConversationsLandingPage.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useMemo } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport {\n MessageCircle,\n ShieldCheck,\n ListChecks,\n Activity,\n Package,\n ChevronRight,\n} from \"lucide-react\";\nimport { useTr } from \"../utils/i18n\";\n\ninterface AdminSectionDefinition {\n id: string;\n /** i18n key used for the card label */\n labelKey: string;\n /** English fallback rendered when the i18n key is not resolved */\n labelFallback: string;\n /** i18n key used for the card description */\n descriptionKey: string;\n /** English fallback for the description */\n descriptionFallback: string;\n /** Route path relative to the admin basePath */\n path: string;\n icon: ReactNode;\n}\n\n// Module-scoped section catalogue. The icon JSX is stable (purely presentational,\n// no context or dynamic props) so constructing once at parse time avoids rebuilding\n// four lucide nodes on every render. If icons ever need to respond to context\n// (theme, RBAC), move the icon field into the useMemo mapper below.\nconst SECTION_DEFINITIONS: AdminSectionDefinition[] = [\n {\n id: \"moderation\",\n labelKey: \"conversations.admin.moderation\",\n labelFallback: \"Moderation\",\n descriptionKey: \"conversations.admin.moderationDescription\",\n descriptionFallback:\n \"Reported and flagged messages, moderation actions, and reviewer assignments.\",\n path: \"moderation\",\n icon: <ShieldCheck className=\"h-5 w-5\" aria-hidden=\"true\" />,\n },\n {\n id: \"bulk\",\n labelKey: \"conversations.admin.bulkOperations\",\n labelFallback: \"Bulk Operations\",\n descriptionKey: \"conversations.admin.bulkOperationsDescription\",\n descriptionFallback:\n \"Bulk archive / unarchive, participant edits, and cross-conversation actions.\",\n path: \"bulk\",\n icon: <ListChecks className=\"h-5 w-5\" aria-hidden=\"true\" />,\n },\n {\n id: \"audit\",\n labelKey: \"conversations.admin.auditLog\",\n labelFallback: \"Audit Log\",\n descriptionKey: \"conversations.admin.auditLogDescription\",\n descriptionFallback:\n \"Activity stream for admin / moderator actions on workspace conversations.\",\n path: \"audit\",\n icon: <Activity className=\"h-5 w-5\" aria-hidden=\"true\" />,\n },\n {\n id: \"apps\",\n labelKey: \"conversations.admin.appInstallations\",\n labelFallback: \"App Installations\",\n descriptionKey: \"conversations.admin.appInstallationsDescription\",\n descriptionFallback:\n \"Install, configure, and remove conversation apps and integrations.\",\n path: \"apps\",\n icon: <Package className=\"h-5 w-5\" aria-hidden=\"true\" />,\n },\n];\n\n/**\n * Admin-facing landing page for the Conversations microfrontend.\n *\n * Lightweight overview + section directory. Each card links to its canonical\n * sub-route (`/moderation`, `/bulk`, `/audit`, `/apps`) for the API-backed\n * admin surfaces.\n */\nexport function AdminConversationsLandingPage() {\n const tr = useTr();\n\n const sections = useMemo(\n () =>\n SECTION_DEFINITIONS.map((section) => ({\n ...section,\n label: tr(section.labelKey, section.labelFallback),\n description: tr(section.descriptionKey, section.descriptionFallback),\n })),\n [tr],\n );\n\n return (\n <div className=\"flex flex-col h-full\">\n <div className=\"border-b border-border-subtle px-6 py-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-md bg-muted\">\n <MessageCircle\n className=\"h-5 w-5 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n </div>\n <div>\n <h1 className=\"text-lg font-semibold text-foreground\">\n {tr(\"conversations.admin.landingTitle\", \"Conversations admin\")}\n </h1>\n <p className=\"text-sm text-muted-foreground\">\n {tr(\n \"conversations.admin.landingDescription\",\n \"Governance tools for workspace conversations. Select a section below to continue.\",\n )}\n </p>\n </div>\n </div>\n </div>\n <div className=\"flex-1 min-h-0 overflow-auto p-6\">\n <div className=\"grid gap-3 sm:grid-cols-2 max-w-3xl\">\n {sections.map((section) => (\n <Link\n key={section.id}\n to={section.path}\n className=\"group flex items-start gap-3 rounded-lg border border-border-subtle bg-card p-4 transition-colors hover:border-border hover:bg-accent\"\n >\n <div className=\"p-2 rounded-md bg-muted text-muted-foreground group-hover:text-foreground\">\n {section.icon}\n </div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {section.label}\n </span>\n <ChevronRight\n className=\"h-4 w-4 text-muted-foreground\"\n aria-hidden=\"true\"\n />\n </div>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {section.description}\n </p>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAgCA,IAAM,IAAgD;CACpD;EACE,IAAI;EACJ,UAAU;EACV,eAAe;EACf,gBAAgB;EAChB,qBACE;EACF,MAAM;EACN,MAAM,kBAAC,GAAD;GAAa,WAAU;GAAU,eAAY;GAAS,CAAA;EAC7D;CACD;EACE,IAAI;EACJ,UAAU;EACV,eAAe;EACf,gBAAgB;EAChB,qBACE;EACF,MAAM;EACN,MAAM,kBAAC,GAAD;GAAY,WAAU;GAAU,eAAY;GAAS,CAAA;EAC5D;CACD;EACE,IAAI;EACJ,UAAU;EACV,eAAe;EACf,gBAAgB;EAChB,qBACE;EACF,MAAM;EACN,MAAM,kBAAC,GAAD;GAAU,WAAU;GAAU,eAAY;GAAS,CAAA;EAC1D;CACD;EACE,IAAI;EACJ,UAAU;EACV,eAAe;EACf,gBAAgB;EAChB,qBACE;EACF,MAAM;EACN,MAAM,kBAAC,GAAD;GAAS,WAAU;GAAU,eAAY;GAAS,CAAA;EACzD;CACF;AASD,SAAgB,IAAgC;CAC9C,IAAM,IAAK,GAAO,EAEZ,IAAW,QAEb,EAAoB,KAAK,OAAa;EACpC,GAAG;EACH,OAAO,EAAG,EAAQ,UAAU,EAAQ,cAAc;EAClD,aAAa,EAAG,EAAQ,gBAAgB,EAAQ,oBAAoB;EACrE,EAAE,EACL,CAAC,EAAG,CACL;AAED,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MACE,WAAU;MACV,eAAY;MACZ,CAAA;KACE,CAAA,EACN,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eACX,EAAG,oCAAoC,sBAAsB;KAC3D,CAAA,EACL,kBAAC,KAAD;KAAG,WAAU;eACV,EACC,0CACA,oFACD;KACC,CAAA,CACA,EAAA,CAAA,CACF;;GACF,CAAA,EACN,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAS,KAAK,MACb,kBAAC,GAAD;KAEE,IAAI,EAAQ;KACZ,WAAU;eAHZ,CAKE,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAQ;MACL,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAQ;QACJ,CAAA,EACP,kBAAC,GAAD;QACE,WAAU;QACV,eAAY;QACZ,CAAA,CACE;UACN,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAQ;OACP,CAAA,CACA;QACD;OArBA,EAAQ,GAqBR,CACP;IACE,CAAA;GACF,CAAA,CACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function ModerationQueuePage(): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function BulkOperationsPage(): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function ConversationAuditLogPage(): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare function AppInstallationsPage(): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
//# sourceMappingURL=ConversationAdminPages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationAdminPages.d.ts","sourceRoot":"","sources":["../../../src/conversations/pages/ConversationAdminPages.tsx"],"names":[],"mappings":"AAyPA,wBAAgB,mBAAmB,4CAoGlC;AAED,wBAAgB,kBAAkB,4CA2GjC;AAED,wBAAgB,wBAAwB,4CA0DvC;AAED,wBAAgB,oBAAoB,4CAyLnC"}
|