@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
package/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# microfe-conversations
|
|
2
|
+
|
|
3
|
+
Part of the [Burdenoff](https://burdenoff.com) platform by
|
|
4
|
+
[AlgoShred](https://github.com/algoshred).
|
|
5
|
+
|
|
6
|
+
## Getting Started
|
|
7
|
+
|
|
8
|
+
See `AGENTS.md` for development commands and architecture details.
|
|
9
|
+
|
|
10
|
+
## License
|
|
11
|
+
|
|
12
|
+
Proprietary — Copyright Burdenoff Consultancy Services Pvt. Ltd.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ConversationsRootProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Admin-facing Root component for the Conversations microfrontend.
|
|
6
|
+
*
|
|
7
|
+
* Mounted by `admin-app` under its `AdminGuard`. Registers the
|
|
8
|
+
* governance nav tree (Overview, Moderation, Bulk Operations,
|
|
9
|
+
* Audit Log, App Installations), sets the provider variant to
|
|
10
|
+
* `"admin"` internally (host-passed `variant` values are ignored),
|
|
11
|
+
* and renders `ConversationsAdminRoutes`.
|
|
12
|
+
*
|
|
13
|
+
* This Root currently ships with placeholder pages; real admin
|
|
14
|
+
* governance implementations land in follow-up tickets.
|
|
15
|
+
*
|
|
16
|
+
* Must NOT be mounted by user-facing app-shells.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ConversationsAdminRoot: FC<ConversationsRootProps>;
|
|
19
|
+
//# sourceMappingURL=ConversationsAdminRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsAdminRoot.d.ts","sourceRoot":"","sources":["../../src/conversations/ConversationsAdminRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAYhC,OAAO,KAAK,EAAW,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAM/D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,sBAAsB,CAkJ7D,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ConversationsProvider as e } from "./providers/ConversationsProvider.js";
|
|
2
|
+
import { joinPath as t } from "./utils/navigation.js";
|
|
3
|
+
import { useTr as n } from "./utils/i18n.js";
|
|
4
|
+
import { useAdminFeatureFlags as r } from "./hooks/useAdminFeatureFlags.js";
|
|
5
|
+
import { ConversationsAdminRoutes as i } from "./ConversationsAdminRoutes.js";
|
|
6
|
+
import { useEffect as a } from "react";
|
|
7
|
+
import { ErrorBoundary as o } from "@burdenoff/fe-libs/shared/components";
|
|
8
|
+
import { FeatureFlagProvider as s } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
9
|
+
import { Activity as c, ListChecks as l, MessageCircle as u, Package as d, ShieldCheck as f } from "lucide-react";
|
|
10
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
11
|
+
//#region src/conversations/ConversationsAdminRoot.tsx
|
|
12
|
+
var m = (m) => {
|
|
13
|
+
let { registerNavItems: h, registerFooterItems: g, basePath: _ = "/", workspaceId: v } = m, y = n(), { moderationEnabled: b, bulkEnabled: x, auditEnabled: S, appsEnabled: C } = r();
|
|
14
|
+
return a(() => {
|
|
15
|
+
if (h) return h({
|
|
16
|
+
id: "conversations",
|
|
17
|
+
label: y("conversations.title", "Conversations"),
|
|
18
|
+
path: _,
|
|
19
|
+
icon: /* @__PURE__ */ p(u, { size: 20 }),
|
|
20
|
+
order: 10,
|
|
21
|
+
group: "conversations",
|
|
22
|
+
children: [
|
|
23
|
+
{
|
|
24
|
+
id: "conversations-admin-overview",
|
|
25
|
+
label: y("conversations.admin.overview", "Overview"),
|
|
26
|
+
path: _,
|
|
27
|
+
icon: /* @__PURE__ */ p(u, { size: 16 }),
|
|
28
|
+
order: 10
|
|
29
|
+
},
|
|
30
|
+
...b ? [{
|
|
31
|
+
id: "conversations-admin-moderation",
|
|
32
|
+
label: y("conversations.admin.moderation", "Moderation"),
|
|
33
|
+
path: t(_, "moderation"),
|
|
34
|
+
icon: /* @__PURE__ */ p(f, { size: 16 }),
|
|
35
|
+
order: 20
|
|
36
|
+
}] : [],
|
|
37
|
+
...x ? [{
|
|
38
|
+
id: "conversations-admin-bulk",
|
|
39
|
+
label: y("conversations.admin.bulkOperations", "Bulk Operations"),
|
|
40
|
+
path: t(_, "bulk"),
|
|
41
|
+
icon: /* @__PURE__ */ p(l, { size: 16 }),
|
|
42
|
+
order: 30
|
|
43
|
+
}] : [],
|
|
44
|
+
...S ? [{
|
|
45
|
+
id: "conversations-admin-audit",
|
|
46
|
+
label: y("conversations.admin.auditLog", "Audit Log"),
|
|
47
|
+
path: t(_, "audit"),
|
|
48
|
+
icon: /* @__PURE__ */ p(c, { size: 16 }),
|
|
49
|
+
order: 40
|
|
50
|
+
}] : [],
|
|
51
|
+
...C ? [{
|
|
52
|
+
id: "conversations-admin-apps",
|
|
53
|
+
label: y("conversations.admin.appInstallations", "App Installations"),
|
|
54
|
+
path: t(_, "apps"),
|
|
55
|
+
icon: /* @__PURE__ */ p(d, { size: 16 }),
|
|
56
|
+
order: 50
|
|
57
|
+
}] : []
|
|
58
|
+
]
|
|
59
|
+
});
|
|
60
|
+
}, [
|
|
61
|
+
h,
|
|
62
|
+
_,
|
|
63
|
+
y,
|
|
64
|
+
b,
|
|
65
|
+
x,
|
|
66
|
+
S,
|
|
67
|
+
C
|
|
68
|
+
]), a(() => {
|
|
69
|
+
if (g) return g([{
|
|
70
|
+
id: "conversations-status",
|
|
71
|
+
label: y("conversations.admin.statusReady", "Conversations Admin"),
|
|
72
|
+
type: "status",
|
|
73
|
+
order: 10,
|
|
74
|
+
section: "left"
|
|
75
|
+
}]);
|
|
76
|
+
}, [g, y]), /* @__PURE__ */ p(o, {
|
|
77
|
+
fallback: /* @__PURE__ */ p("div", {
|
|
78
|
+
className: "p-6 text-center text-text-secondary",
|
|
79
|
+
role: "alert",
|
|
80
|
+
children: y("conversations.moduleLoadError", "Something went wrong loading this module. Please refresh the page.")
|
|
81
|
+
}),
|
|
82
|
+
onError: (e, t) => {
|
|
83
|
+
console.error("[microfe-conversations:admin-root] error boundary caught", {
|
|
84
|
+
message: e.message,
|
|
85
|
+
stack: e.stack,
|
|
86
|
+
componentStack: t.componentStack
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
children: /* @__PURE__ */ p(s, {
|
|
90
|
+
workspaceId: v ?? null,
|
|
91
|
+
gateway: "global",
|
|
92
|
+
defaultEnabled: !0,
|
|
93
|
+
children: /* @__PURE__ */ p(e, {
|
|
94
|
+
...m,
|
|
95
|
+
variant: "admin",
|
|
96
|
+
children: /* @__PURE__ */ p(i, {})
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
};
|
|
101
|
+
//#endregion
|
|
102
|
+
export { m as ConversationsAdminRoot };
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=ConversationsAdminRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsAdminRoot.js","names":[],"sources":["../../src/conversations/ConversationsAdminRoot.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { ErrorBoundary } from \"@burdenoff/fe-libs/shared/components\";\nimport { FeatureFlagProvider } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport {\n MessageCircle,\n ShieldCheck,\n ListChecks,\n Activity,\n Package,\n} from \"lucide-react\";\nimport { ConversationsProvider } from \"./providers/ConversationsProvider\";\nimport type { NavItem, ConversationsRootProps } from \"./types\";\nimport { joinPath } from \"./utils/navigation\";\nimport { useTr } from \"./utils/i18n\";\nimport { useAdminFeatureFlags } from \"./hooks/useAdminFeatureFlags\";\nimport { ConversationsAdminRoutes } from \"./ConversationsAdminRoutes\";\n\n/**\n * Admin-facing Root component for the Conversations microfrontend.\n *\n * Mounted by `admin-app` under its `AdminGuard`. Registers the\n * governance nav tree (Overview, Moderation, Bulk Operations,\n * Audit Log, App Installations), sets the provider variant to\n * `\"admin\"` internally (host-passed `variant` values are ignored),\n * and renders `ConversationsAdminRoutes`.\n *\n * This Root currently ships with placeholder pages; real admin\n * governance implementations land in follow-up tickets.\n *\n * Must NOT be mounted by user-facing app-shells.\n */\nexport const ConversationsAdminRoot: FC<ConversationsRootProps> = (props) => {\n const {\n registerNavItems,\n registerFooterItems,\n basePath = \"/\",\n workspaceId,\n } = props;\n const tr = useTr();\n const { moderationEnabled, bulkEnabled, auditEnabled, appsEnabled } =\n useAdminFeatureFlags();\n\n useEffect(() => {\n if (!registerNavItems) return;\n\n const conversationsNavItem: NavItem = {\n id: \"conversations\",\n label: tr(\"conversations.title\", \"Conversations\"),\n path: basePath,\n icon: <MessageCircle size={20} />,\n order: 10,\n group: \"conversations\",\n children: [\n {\n id: \"conversations-admin-overview\",\n label: tr(\"conversations.admin.overview\", \"Overview\"),\n path: basePath,\n icon: <MessageCircle size={16} />,\n order: 10,\n },\n ...(moderationEnabled\n ? [\n {\n id: \"conversations-admin-moderation\",\n label: tr(\"conversations.admin.moderation\", \"Moderation\"),\n path: joinPath(basePath, \"moderation\"),\n icon: <ShieldCheck size={16} />,\n order: 20,\n },\n ]\n : []),\n ...(bulkEnabled\n ? [\n {\n id: \"conversations-admin-bulk\",\n label: tr(\n \"conversations.admin.bulkOperations\",\n \"Bulk Operations\",\n ),\n path: joinPath(basePath, \"bulk\"),\n icon: <ListChecks size={16} />,\n order: 30,\n },\n ]\n : []),\n ...(auditEnabled\n ? [\n {\n id: \"conversations-admin-audit\",\n label: tr(\"conversations.admin.auditLog\", \"Audit Log\"),\n path: joinPath(basePath, \"audit\"),\n icon: <Activity size={16} />,\n order: 40,\n },\n ]\n : []),\n ...(appsEnabled\n ? [\n {\n id: \"conversations-admin-apps\",\n label: tr(\n \"conversations.admin.appInstallations\",\n \"App Installations\",\n ),\n path: joinPath(basePath, \"apps\"),\n icon: <Package size={16} />,\n order: 50,\n },\n ]\n : []),\n ],\n };\n\n const cleanup = registerNavItems(conversationsNavItem);\n return cleanup;\n }, [\n registerNavItems,\n basePath,\n tr,\n moderationEnabled,\n bulkEnabled,\n auditEnabled,\n appsEnabled,\n ]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: \"conversations-status\",\n label: tr(\"conversations.admin.statusReady\", \"Conversations Admin\"),\n type: \"status\" as const,\n order: 10,\n section: \"left\" as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, tr]);\n\n return (\n <ErrorBoundary\n fallback={\n <div className=\"p-6 text-center text-text-secondary\" role=\"alert\">\n {tr(\n \"conversations.moduleLoadError\",\n \"Something went wrong loading this module. Please refresh the page.\",\n )}\n </div>\n }\n onError={(error, errorInfo) => {\n // SRE forwarding — see ConversationsUserRoot for the migration target\n // (replace with bus.emit('conversations.error', …) once fe-libs\n // exposes the event in BurdenoffEventName).\n console.error(\n \"[microfe-conversations:admin-root] error boundary caught\",\n {\n message: error.message,\n stack: error.stack,\n componentStack: errorInfo.componentStack,\n },\n );\n }}\n >\n <FeatureFlagProvider\n workspaceId={workspaceId ?? null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <ConversationsProvider {...props} variant=\"admin\">\n <ConversationsAdminRoutes />\n </ConversationsProvider>\n </FeatureFlagProvider>\n </ErrorBoundary>\n );\n};\n"],"mappings":";;;;;;;;;;;AAgCA,IAAa,KAAsD,MAAU;CAC3E,IAAM,EACJ,qBACA,wBACA,cAAW,KACX,mBACE,GACE,IAAK,GAAO,EACZ,EAAE,sBAAmB,gBAAa,iBAAc,mBACpD,GAAsB;AAsGxB,QApGA,QAAgB;AACT,QAuEL,QADgB,EApEsB;GACpC,IAAI;GACJ,OAAO,EAAG,uBAAuB,gBAAgB;GACjD,MAAM;GACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;GACjC,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAG,gCAAgC,WAAW;KACrD,MAAM;KACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD,GAAI,IACA,CACE;KACE,IAAI;KACJ,OAAO,EAAG,kCAAkC,aAAa;KACzD,MAAM,EAAS,GAAU,aAAa;KACtC,MAAM,kBAAC,GAAD,EAAa,MAAM,IAAM,CAAA;KAC/B,OAAO;KACR,CACF,GACD,EAAE;IACN,GAAI,IACA,CACE;KACE,IAAI;KACJ,OAAO,EACL,sCACA,kBACD;KACD,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAY,MAAM,IAAM,CAAA;KAC9B,OAAO;KACR,CACF,GACD,EAAE;IACN,GAAI,IACA,CACE;KACE,IAAI;KACJ,OAAO,EAAG,gCAAgC,YAAY;KACtD,MAAM,EAAS,GAAU,QAAQ;KACjC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR,CACF,GACD,EAAE;IACN,GAAI,IACA,CACE;KACE,IAAI;KACJ,OAAO,EACL,wCACA,oBACD;KACD,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAS,MAAM,IAAM,CAAA;KAC3B,OAAO;KACR,CACF,GACD,EAAE;IACP;GACF,CAEqD;IAErD;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEF,QAAgB;AACT,QAaL,QADgB,EAVI,CAClB;GACE,IAAI;GACJ,OAAO,EAAG,mCAAmC,sBAAsB;GACnE,MAAM;GACN,OAAO;GACP,SAAS;GACV,CACF,CAE+C;IAE/C,CAAC,GAAqB,EAAG,CAAC,EAG3B,kBAAC,GAAD;EACE,UACE,kBAAC,OAAD;GAAK,WAAU;GAAsC,MAAK;aACvD,EACC,iCACA,qEACD;GACG,CAAA;EAER,UAAU,GAAO,MAAc;AAI7B,WAAQ,MACN,4DACA;IACE,SAAS,EAAM;IACf,OAAO,EAAM;IACb,gBAAgB,EAAU;IAC3B,CACF;;YAGH,kBAAC,GAAD;GACE,aAAa,KAAe;GAC5B,SAAQ;GACR,gBAAgB;aAEhB,kBAAC,GAAD;IAAuB,GAAI;IAAO,SAAQ;cACxC,kBAAC,GAAD,EAA4B,CAAA;IACN,CAAA;GACJ,CAAA;EACR,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin-facing routes for the Conversations microfrontend.
|
|
3
|
+
*
|
|
4
|
+
* All imports in this file are eager — when real admin pages are added
|
|
5
|
+
* and become `React.lazy()`, wrap the `<Routes>` below in
|
|
6
|
+
* `<LazyPageBoundary source="admin">` (from ./components/LazyPageBoundary)
|
|
7
|
+
* to get the shared retry / spinner UI.
|
|
8
|
+
*
|
|
9
|
+
* Routes (relative to basePath, e.g., /conversations):
|
|
10
|
+
* - / -> AdminConversationsLandingPage (overview + section directory)
|
|
11
|
+
* - /moderation -> Moderation queue
|
|
12
|
+
* - /bulk -> Bulk operations
|
|
13
|
+
* - /audit -> Audit log viewer
|
|
14
|
+
* - /apps -> App installations
|
|
15
|
+
* - * -> redirect to landing
|
|
16
|
+
*/
|
|
17
|
+
export declare function ConversationsAdminRoutes(): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ConversationsAdminRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsAdminRoutes.d.ts","sourceRoot":"","sources":["../../src/conversations/ConversationsAdminRoutes.tsx"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,4CAkBvC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useAdminFeatureFlags as e } from "./hooks/useAdminFeatureFlags.js";
|
|
2
|
+
import { AdminConversationsLandingPage as t } from "./pages/AdminConversationsLandingPage.js";
|
|
3
|
+
import { AppInstallationsPage as n, BulkOperationsPage as r, ConversationAuditLogPage as i, ModerationQueuePage as a } from "./pages/ConversationAdminPages.js";
|
|
4
|
+
import { Navigate as o, Route as s, Routes as c } from "react-router-dom";
|
|
5
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
6
|
+
//#region src/conversations/ConversationsAdminRoutes.tsx
|
|
7
|
+
function d() {
|
|
8
|
+
let { moderationEnabled: d, bulkEnabled: f, auditEnabled: p, appsEnabled: m } = e();
|
|
9
|
+
return /* @__PURE__ */ u(c, { children: [
|
|
10
|
+
/* @__PURE__ */ l(s, {
|
|
11
|
+
index: !0,
|
|
12
|
+
element: /* @__PURE__ */ l(t, {})
|
|
13
|
+
}),
|
|
14
|
+
d && /* @__PURE__ */ l(s, {
|
|
15
|
+
path: "moderation",
|
|
16
|
+
element: /* @__PURE__ */ l(a, {})
|
|
17
|
+
}),
|
|
18
|
+
f && /* @__PURE__ */ l(s, {
|
|
19
|
+
path: "bulk",
|
|
20
|
+
element: /* @__PURE__ */ l(r, {})
|
|
21
|
+
}),
|
|
22
|
+
p && /* @__PURE__ */ l(s, {
|
|
23
|
+
path: "audit",
|
|
24
|
+
element: /* @__PURE__ */ l(i, {})
|
|
25
|
+
}),
|
|
26
|
+
m && /* @__PURE__ */ l(s, {
|
|
27
|
+
path: "apps",
|
|
28
|
+
element: /* @__PURE__ */ l(n, {})
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ l(s, {
|
|
31
|
+
path: "*",
|
|
32
|
+
element: /* @__PURE__ */ l(o, {
|
|
33
|
+
to: ".",
|
|
34
|
+
replace: !0
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { d as ConversationsAdminRoutes };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=ConversationsAdminRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsAdminRoutes.js","names":[],"sources":["../../src/conversations/ConversationsAdminRoutes.tsx"],"sourcesContent":["import { Navigate, Route, Routes } from \"react-router-dom\";\n\nimport { AdminConversationsLandingPage } from \"./pages/AdminConversationsLandingPage\";\nimport {\n AppInstallationsPage,\n BulkOperationsPage,\n ConversationAuditLogPage,\n ModerationQueuePage,\n} from \"./pages/ConversationAdminPages\";\nimport { useAdminFeatureFlags } from \"./hooks/useAdminFeatureFlags\";\n\n/**\n * Admin-facing routes for the Conversations microfrontend.\n *\n * All imports in this file are eager — when real admin pages are added\n * and become `React.lazy()`, wrap the `<Routes>` below in\n * `<LazyPageBoundary source=\"admin\">` (from ./components/LazyPageBoundary)\n * to get the shared retry / spinner UI.\n *\n * Routes (relative to basePath, e.g., /conversations):\n * - / -> AdminConversationsLandingPage (overview + section directory)\n * - /moderation -> Moderation queue\n * - /bulk -> Bulk operations\n * - /audit -> Audit log viewer\n * - /apps -> App installations\n * - * -> redirect to landing\n */\nexport function ConversationsAdminRoutes() {\n const { moderationEnabled, bulkEnabled, auditEnabled, appsEnabled } =\n useAdminFeatureFlags();\n\n return (\n <Routes>\n <Route index element={<AdminConversationsLandingPage />} />\n {moderationEnabled && (\n <Route path=\"moderation\" element={<ModerationQueuePage />} />\n )}\n {bulkEnabled && <Route path=\"bulk\" element={<BulkOperationsPage />} />}\n {auditEnabled && (\n <Route path=\"audit\" element={<ConversationAuditLogPage />} />\n )}\n {appsEnabled && <Route path=\"apps\" element={<AppInstallationsPage />} />}\n <Route path=\"*\" element={<Navigate to=\".\" replace />} />\n </Routes>\n );\n}\n"],"mappings":";;;;;;AA2BA,SAAgB,IAA2B;CACzC,IAAM,EAAE,sBAAmB,gBAAa,iBAAc,mBACpD,GAAsB;AAExB,QACE,kBAAC,GAAD,EAAA,UAAA;EACE,kBAAC,GAAD;GAAO,OAAA;GAAM,SAAS,kBAAC,GAAD,EAAiC,CAAA;GAAI,CAAA;EAC1D,KACC,kBAAC,GAAD;GAAO,MAAK;GAAa,SAAS,kBAAC,GAAD,EAAuB,CAAA;GAAI,CAAA;EAE9D,KAAe,kBAAC,GAAD;GAAO,MAAK;GAAO,SAAS,kBAAC,GAAD,EAAsB,CAAA;GAAI,CAAA;EACrE,KACC,kBAAC,GAAD;GAAO,MAAK;GAAQ,SAAS,kBAAC,GAAD,EAA4B,CAAA;GAAI,CAAA;EAE9D,KAAe,kBAAC,GAAD;GAAO,MAAK;GAAO,SAAS,kBAAC,GAAD,EAAwB,CAAA;GAAI,CAAA;EACxE,kBAAC,GAAD;GAAO,MAAK;GAAI,SAAS,kBAAC,GAAD;IAAU,IAAG;IAAI,SAAA;IAAU,CAAA;GAAI,CAAA;EACjD,EAAA,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ConversationsRootProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Root component for the Conversations microfrontend.
|
|
6
|
+
*
|
|
7
|
+
* This is the main entry point that host applications import and render.
|
|
8
|
+
* It sets up the necessary providers and renders the internal routing.
|
|
9
|
+
* Automatically registers navigation items with the shell if registration functions are provided.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* import { ConversationsRoot, type ConversationsRootProps } from '@burdenoff/micro-fe/conversations';
|
|
14
|
+
*
|
|
15
|
+
* function App() {
|
|
16
|
+
* const props: ConversationsRootProps = {
|
|
17
|
+
* basePath: '/conversations',
|
|
18
|
+
* navigate: (path) => router.push(path),
|
|
19
|
+
* currentUser: { id: '1', email: 'user@example.com', firstName: 'John', lastName: 'Doe' },
|
|
20
|
+
* workspaceId: 'ws-123',
|
|
21
|
+
* apiGatewayUrl: 'https://api.example.com',
|
|
22
|
+
* authToken: 'token',
|
|
23
|
+
* defaultView: 'inbox',
|
|
24
|
+
* onConversationSelect: (conversation) => console.log('Conversation selected:', conversation),
|
|
25
|
+
* registerNavItems: (items) => { return () => {}; },
|
|
26
|
+
* };
|
|
27
|
+
*
|
|
28
|
+
* return <ConversationsRoot {...props} />;
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const ConversationsRoot: FC<ConversationsRootProps>;
|
|
33
|
+
//# sourceMappingURL=ConversationsRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsRoot.d.ts","sourceRoot":"","sources":["../../src/conversations/ConversationsRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMhC,OAAO,KAAK,EAAW,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAK/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAkHxD,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { ConversationsProvider as e } from "./providers/ConversationsProvider.js";
|
|
2
|
+
import { joinPath as t } from "./utils/navigation.js";
|
|
3
|
+
import { useTr as n } from "./utils/i18n.js";
|
|
4
|
+
import { ConversationsUserRoutes as r } from "./ConversationsUserRoutes.js";
|
|
5
|
+
import { useEffect as i } from "react";
|
|
6
|
+
import { ErrorBoundary as a } from "@burdenoff/fe-libs/shared/components";
|
|
7
|
+
import { FeatureFlagProvider as o } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
8
|
+
import { MessageCircle as s, Plus as c, Settings as l } from "lucide-react";
|
|
9
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
10
|
+
//#region src/conversations/ConversationsRoot.tsx
|
|
11
|
+
var d = (d) => {
|
|
12
|
+
let { registerNavItems: f, registerFooterItems: p, basePath: m = "/", workspaceId: h } = d, g = n();
|
|
13
|
+
return i(() => {
|
|
14
|
+
if (!f) return;
|
|
15
|
+
let e = `${t(m, "list")}?filter=archived`;
|
|
16
|
+
return f({
|
|
17
|
+
id: "conversations",
|
|
18
|
+
label: g("conversations.title", "Conversations"),
|
|
19
|
+
path: m,
|
|
20
|
+
icon: /* @__PURE__ */ u(s, { size: 20 }),
|
|
21
|
+
order: 10,
|
|
22
|
+
group: "conversations",
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
id: "conversations-inbox",
|
|
26
|
+
label: g("conversations.inbox", "Inbox"),
|
|
27
|
+
path: m,
|
|
28
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
29
|
+
order: 10
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "conversations-list",
|
|
33
|
+
label: g("conversations.allConversations", "All conversations"),
|
|
34
|
+
path: t(m, "list"),
|
|
35
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
36
|
+
order: 20
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "conversations-new",
|
|
40
|
+
label: g("conversations.newConversation", "New conversation"),
|
|
41
|
+
path: t(m, "new"),
|
|
42
|
+
icon: /* @__PURE__ */ u(c, { size: 16 }),
|
|
43
|
+
order: 30
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "conversations-archived",
|
|
47
|
+
label: g("conversations.archived", "Archived"),
|
|
48
|
+
path: e,
|
|
49
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
50
|
+
order: 40
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "conversations-settings",
|
|
54
|
+
label: g("conversations.settings", "Settings"),
|
|
55
|
+
path: t(m, "settings"),
|
|
56
|
+
icon: /* @__PURE__ */ u(l, { size: 16 }),
|
|
57
|
+
order: 50
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
}, [
|
|
62
|
+
f,
|
|
63
|
+
m,
|
|
64
|
+
g
|
|
65
|
+
]), i(() => {
|
|
66
|
+
if (p) return p([{
|
|
67
|
+
id: "conversations-status",
|
|
68
|
+
label: g("conversations.conversationsReady", "Conversations Ready"),
|
|
69
|
+
type: "status",
|
|
70
|
+
order: 10,
|
|
71
|
+
section: "left"
|
|
72
|
+
}]);
|
|
73
|
+
}, [p, g]), /* @__PURE__ */ u(a, {
|
|
74
|
+
fallback: /* @__PURE__ */ u("div", {
|
|
75
|
+
className: "p-6 text-center text-text-secondary",
|
|
76
|
+
role: "alert",
|
|
77
|
+
children: g("conversations.moduleLoadError", "Something went wrong loading this module. Please refresh the page.")
|
|
78
|
+
}),
|
|
79
|
+
onError: (e, t) => {
|
|
80
|
+
console.error("[microfe-conversations:legacy-root] error boundary caught", {
|
|
81
|
+
message: e.message,
|
|
82
|
+
stack: e.stack,
|
|
83
|
+
componentStack: t.componentStack
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
children: /* @__PURE__ */ u(o, {
|
|
87
|
+
workspaceId: h ?? null,
|
|
88
|
+
gateway: "global",
|
|
89
|
+
defaultEnabled: !0,
|
|
90
|
+
children: /* @__PURE__ */ u(e, {
|
|
91
|
+
...d,
|
|
92
|
+
children: /* @__PURE__ */ u(r, {})
|
|
93
|
+
})
|
|
94
|
+
})
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
//#endregion
|
|
98
|
+
export { d as ConversationsRoot };
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=ConversationsRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsRoot.js","names":[],"sources":["../../src/conversations/ConversationsRoot.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { ErrorBoundary } from \"@burdenoff/fe-libs/shared/components\";\nimport { FeatureFlagProvider } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { MessageCircle, Plus, Settings } from \"lucide-react\";\nimport { ConversationsProvider } from \"./providers/ConversationsProvider\";\nimport type { NavItem, ConversationsRootProps } from \"./types\";\nimport { joinPath } from \"./utils/navigation\";\nimport { useTr } from \"./utils/i18n\";\nimport { ConversationsUserRoutes } from \"./ConversationsUserRoutes\";\n\n/**\n * Root component for the Conversations microfrontend.\n *\n * This is the main entry point that host applications import and render.\n * It sets up the necessary providers and renders the internal routing.\n * Automatically registers navigation items with the shell if registration functions are provided.\n *\n * @example\n * ```tsx\n * import { ConversationsRoot, type ConversationsRootProps } from '@burdenoff/micro-fe/conversations';\n *\n * function App() {\n * const props: ConversationsRootProps = {\n * basePath: '/conversations',\n * navigate: (path) => router.push(path),\n * currentUser: { id: '1', email: 'user@example.com', firstName: 'John', lastName: 'Doe' },\n * workspaceId: 'ws-123',\n * apiGatewayUrl: 'https://api.example.com',\n * authToken: 'token',\n * defaultView: 'inbox',\n * onConversationSelect: (conversation) => console.log('Conversation selected:', conversation),\n * registerNavItems: (items) => { return () => {}; },\n * };\n *\n * return <ConversationsRoot {...props} />;\n * }\n * ```\n */\nexport const ConversationsRoot: FC<ConversationsRootProps> = (props) => {\n const {\n registerNavItems,\n registerFooterItems,\n basePath = \"/\",\n workspaceId,\n } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n\n const archivedPath = `${joinPath(basePath, \"list\")}?filter=archived`;\n\n const conversationsNavItem: NavItem = {\n id: \"conversations\",\n label: tr(\"conversations.title\", \"Conversations\"),\n path: basePath,\n icon: <MessageCircle size={20} />,\n order: 10,\n group: \"conversations\",\n children: [\n {\n id: \"conversations-inbox\",\n label: tr(\"conversations.inbox\", \"Inbox\"),\n path: basePath,\n icon: <MessageCircle size={16} />,\n order: 10,\n },\n {\n id: \"conversations-list\",\n label: tr(\"conversations.allConversations\", \"All conversations\"),\n path: joinPath(basePath, \"list\"),\n icon: <MessageCircle size={16} />,\n order: 20,\n },\n {\n id: \"conversations-new\",\n label: tr(\"conversations.newConversation\", \"New conversation\"),\n path: joinPath(basePath, \"new\"),\n icon: <Plus size={16} />,\n order: 30,\n },\n {\n id: \"conversations-archived\",\n label: tr(\"conversations.archived\", \"Archived\"),\n path: archivedPath,\n icon: <MessageCircle size={16} />,\n order: 40,\n },\n {\n id: \"conversations-settings\",\n label: tr(\"conversations.settings\", \"Settings\"),\n path: joinPath(basePath, \"settings\"),\n icon: <Settings size={16} />,\n order: 50,\n },\n ],\n };\n\n const cleanup = registerNavItems(conversationsNavItem);\n return cleanup;\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: \"conversations-status\",\n label: tr(\"conversations.conversationsReady\", \"Conversations Ready\"),\n type: \"status\" as const,\n order: 10,\n section: \"left\" as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, tr]);\n\n return (\n <ErrorBoundary\n fallback={\n <div className=\"p-6 text-center text-text-secondary\" role=\"alert\">\n {tr(\n \"conversations.moduleLoadError\",\n \"Something went wrong loading this module. Please refresh the page.\",\n )}\n </div>\n }\n onError={(error, errorInfo) => {\n // SRE forwarding — see ConversationsUserRoot for the migration target.\n console.error(\n \"[microfe-conversations:legacy-root] error boundary caught\",\n {\n message: error.message,\n stack: error.stack,\n componentStack: errorInfo.componentStack,\n },\n );\n }}\n >\n <FeatureFlagProvider\n workspaceId={workspaceId ?? null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <ConversationsProvider {...props}>\n <ConversationsUserRoutes />\n </ConversationsProvider>\n </FeatureFlagProvider>\n </ErrorBoundary>\n );\n};\n"],"mappings":";;;;;;;;;;AAuCA,IAAa,KAAiD,MAAU;CACtE,IAAM,EACJ,qBACA,wBACA,cAAW,KACX,mBACE,GACE,IAAK,GAAO;AA0ElB,QAxEA,QAAgB;AACd,MAAI,CAAC,EAAkB;EAEvB,IAAM,IAAe,GAAG,EAAS,GAAU,OAAO,CAAC;AAiDnD,SADgB,EA9CsB;GACpC,IAAI;GACJ,OAAO,EAAG,uBAAuB,gBAAgB;GACjD,MAAM;GACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;GACjC,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAG,uBAAuB,QAAQ;KACzC,MAAM;KACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,kCAAkC,oBAAoB;KAChE,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,iCAAiC,mBAAmB;KAC9D,MAAM,EAAS,GAAU,MAAM;KAC/B,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,0BAA0B,WAAW;KAC/C,MAAM;KACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,0BAA0B,WAAW;KAC/C,MAAM,EAAS,GAAU,WAAW;KACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACF;GACF,CAEqD;IAErD;EAAC;EAAkB;EAAU;EAAG,CAAC,EAEpC,QAAgB;AACT,QAaL,QADgB,EAVI,CAClB;GACE,IAAI;GACJ,OAAO,EAAG,oCAAoC,sBAAsB;GACpE,MAAM;GACN,OAAO;GACP,SAAS;GACV,CACF,CAE+C;IAE/C,CAAC,GAAqB,EAAG,CAAC,EAG3B,kBAAC,GAAD;EACE,UACE,kBAAC,OAAD;GAAK,WAAU;GAAsC,MAAK;aACvD,EACC,iCACA,qEACD;GACG,CAAA;EAER,UAAU,GAAO,MAAc;AAE7B,WAAQ,MACN,6DACA;IACE,SAAS,EAAM;IACf,OAAO,EAAM;IACb,gBAAgB,EAAU;IAC3B,CACF;;YAGH,kBAAC,GAAD;GACE,aAAa,KAAe;GAC5B,SAAQ;GACR,gBAAgB;aAEhB,kBAAC,GAAD;IAAuB,GAAI;cACzB,kBAAC,GAAD,EAA2B,CAAA;IACL,CAAA;GACJ,CAAA;EACR,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ConversationsRootProps } from './types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* User-facing Root component for the Conversations microfrontend.
|
|
6
|
+
*
|
|
7
|
+
* Mounted by user app-shells (vibecontrols-app, bigconsole-app,
|
|
8
|
+
* workspaces-app, …). Registers the user nav tree (Inbox, All
|
|
9
|
+
* conversations, New conversation, Archived, Settings), sets the
|
|
10
|
+
* provider variant to `"user"` internally (host-passed `variant`
|
|
11
|
+
* values are ignored), and renders `ConversationsUserRoutes`.
|
|
12
|
+
*
|
|
13
|
+
* Admin governance surfaces live in `ConversationsAdminRoot` and
|
|
14
|
+
* must not be reached through this Root.
|
|
15
|
+
*/
|
|
16
|
+
export declare const ConversationsUserRoot: FC<ConversationsRootProps>;
|
|
17
|
+
//# sourceMappingURL=ConversationsUserRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsUserRoot.d.ts","sourceRoot":"","sources":["../../src/conversations/ConversationsUserRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMhC,OAAO,KAAK,EAAW,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAK/D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,sBAAsB,CAoH5D,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { ConversationsProvider as e } from "./providers/ConversationsProvider.js";
|
|
2
|
+
import { joinPath as t } from "./utils/navigation.js";
|
|
3
|
+
import { useTr as n } from "./utils/i18n.js";
|
|
4
|
+
import { ConversationsUserRoutes as r } from "./ConversationsUserRoutes.js";
|
|
5
|
+
import { useEffect as i } from "react";
|
|
6
|
+
import { ErrorBoundary as a } from "@burdenoff/fe-libs/shared/components";
|
|
7
|
+
import { FeatureFlagProvider as o } from "@burdenoff/fe-libs/shared/feature-flags";
|
|
8
|
+
import { MessageCircle as s, Plus as c, Settings as l } from "lucide-react";
|
|
9
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
10
|
+
//#region src/conversations/ConversationsUserRoot.tsx
|
|
11
|
+
var d = (d) => {
|
|
12
|
+
let { registerNavItems: f, registerFooterItems: p, basePath: m = "/", workspaceId: h } = d, g = n();
|
|
13
|
+
return i(() => {
|
|
14
|
+
if (!f) return;
|
|
15
|
+
let e = `${t(m, "list")}?filter=archived`;
|
|
16
|
+
return f({
|
|
17
|
+
id: "conversations",
|
|
18
|
+
label: g("conversations.title", "Conversations"),
|
|
19
|
+
path: m,
|
|
20
|
+
icon: /* @__PURE__ */ u(s, { size: 20 }),
|
|
21
|
+
order: 10,
|
|
22
|
+
group: "conversations",
|
|
23
|
+
children: [
|
|
24
|
+
{
|
|
25
|
+
id: "conversations-inbox",
|
|
26
|
+
label: g("conversations.inbox", "Inbox"),
|
|
27
|
+
path: m,
|
|
28
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
29
|
+
order: 10
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: "conversations-list",
|
|
33
|
+
label: g("conversations.allConversations", "All conversations"),
|
|
34
|
+
path: t(m, "list"),
|
|
35
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
36
|
+
order: 20
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "conversations-new",
|
|
40
|
+
label: g("conversations.newConversation", "New conversation"),
|
|
41
|
+
path: t(m, "new"),
|
|
42
|
+
icon: /* @__PURE__ */ u(c, { size: 16 }),
|
|
43
|
+
order: 30
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "conversations-archived",
|
|
47
|
+
label: g("conversations.archived", "Archived"),
|
|
48
|
+
path: e,
|
|
49
|
+
icon: /* @__PURE__ */ u(s, { size: 16 }),
|
|
50
|
+
order: 40
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
id: "conversations-settings",
|
|
54
|
+
label: g("conversations.settings", "Settings"),
|
|
55
|
+
path: t(m, "settings"),
|
|
56
|
+
icon: /* @__PURE__ */ u(l, { size: 16 }),
|
|
57
|
+
order: 50
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
}, [
|
|
62
|
+
f,
|
|
63
|
+
m,
|
|
64
|
+
g
|
|
65
|
+
]), i(() => {
|
|
66
|
+
if (p) return p([{
|
|
67
|
+
id: "conversations-status",
|
|
68
|
+
label: g("conversations.conversationsReady", "Conversations Ready"),
|
|
69
|
+
type: "status",
|
|
70
|
+
order: 10,
|
|
71
|
+
section: "left"
|
|
72
|
+
}]);
|
|
73
|
+
}, [p, g]), /* @__PURE__ */ u(a, {
|
|
74
|
+
fallback: /* @__PURE__ */ u("div", {
|
|
75
|
+
className: "p-6 text-center text-text-secondary",
|
|
76
|
+
role: "alert",
|
|
77
|
+
children: g("conversations.moduleLoadError", "Something went wrong loading this module. Please refresh the page.")
|
|
78
|
+
}),
|
|
79
|
+
onError: (e, t) => {
|
|
80
|
+
console.error("[microfe-conversations] error boundary caught", {
|
|
81
|
+
message: e.message,
|
|
82
|
+
stack: e.stack,
|
|
83
|
+
componentStack: t.componentStack
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
children: /* @__PURE__ */ u(o, {
|
|
87
|
+
workspaceId: h ?? null,
|
|
88
|
+
gateway: "global",
|
|
89
|
+
defaultEnabled: !0,
|
|
90
|
+
children: /* @__PURE__ */ u(e, {
|
|
91
|
+
...d,
|
|
92
|
+
variant: "user",
|
|
93
|
+
children: /* @__PURE__ */ u(r, {})
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
//#endregion
|
|
99
|
+
export { d as ConversationsUserRoot };
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=ConversationsUserRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsUserRoot.js","names":[],"sources":["../../src/conversations/ConversationsUserRoot.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { ErrorBoundary } from \"@burdenoff/fe-libs/shared/components\";\nimport { FeatureFlagProvider } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { MessageCircle, Plus, Settings } from \"lucide-react\";\nimport { ConversationsProvider } from \"./providers/ConversationsProvider\";\nimport type { NavItem, ConversationsRootProps } from \"./types\";\nimport { joinPath } from \"./utils/navigation\";\nimport { useTr } from \"./utils/i18n\";\nimport { ConversationsUserRoutes } from \"./ConversationsUserRoutes\";\n\n/**\n * User-facing Root component for the Conversations microfrontend.\n *\n * Mounted by user app-shells (vibecontrols-app, bigconsole-app,\n * workspaces-app, …). Registers the user nav tree (Inbox, All\n * conversations, New conversation, Archived, Settings), sets the\n * provider variant to `\"user\"` internally (host-passed `variant`\n * values are ignored), and renders `ConversationsUserRoutes`.\n *\n * Admin governance surfaces live in `ConversationsAdminRoot` and\n * must not be reached through this Root.\n */\nexport const ConversationsUserRoot: FC<ConversationsRootProps> = (props) => {\n const {\n registerNavItems,\n registerFooterItems,\n basePath = \"/\",\n workspaceId,\n } = props;\n const tr = useTr();\n\n useEffect(() => {\n if (!registerNavItems) return;\n\n const archivedPath = `${joinPath(basePath, \"list\")}?filter=archived`;\n\n const conversationsNavItem: NavItem = {\n id: \"conversations\",\n label: tr(\"conversations.title\", \"Conversations\"),\n path: basePath,\n icon: <MessageCircle size={20} />,\n order: 10,\n group: \"conversations\",\n children: [\n {\n id: \"conversations-inbox\",\n label: tr(\"conversations.inbox\", \"Inbox\"),\n path: basePath,\n icon: <MessageCircle size={16} />,\n order: 10,\n },\n {\n id: \"conversations-list\",\n label: tr(\"conversations.allConversations\", \"All conversations\"),\n path: joinPath(basePath, \"list\"),\n icon: <MessageCircle size={16} />,\n order: 20,\n },\n {\n id: \"conversations-new\",\n label: tr(\"conversations.newConversation\", \"New conversation\"),\n path: joinPath(basePath, \"new\"),\n icon: <Plus size={16} />,\n order: 30,\n },\n {\n id: \"conversations-archived\",\n label: tr(\"conversations.archived\", \"Archived\"),\n path: archivedPath,\n icon: <MessageCircle size={16} />,\n order: 40,\n },\n {\n id: \"conversations-settings\",\n label: tr(\"conversations.settings\", \"Settings\"),\n path: joinPath(basePath, \"settings\"),\n icon: <Settings size={16} />,\n order: 50,\n },\n ],\n };\n\n const cleanup = registerNavItems(conversationsNavItem);\n return cleanup;\n }, [registerNavItems, basePath, tr]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: \"conversations-status\",\n label: tr(\"conversations.conversationsReady\", \"Conversations Ready\"),\n type: \"status\" as const,\n order: 10,\n section: \"left\" as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, tr]);\n\n return (\n <ErrorBoundary\n fallback={\n <div className=\"p-6 text-center text-text-secondary\" role=\"alert\">\n {tr(\n \"conversations.moduleLoadError\",\n \"Something went wrong loading this module. Please refresh the page.\",\n )}\n </div>\n }\n onError={(error, errorInfo) => {\n // SRE forwarding: log to the host's structured logger.\n // Per spec 47 the MFE does NOT call Rybbit / OTel directly — once the\n // shell event bus exposes a `conversations.error` event name in the\n // BurdenoffEventName union, swap the console.error here to\n // `bus.emit('conversations.error', { ... })`.\n // Tracker: ~/products/dev/stability/vibecontrols-conversations-stability.md Phase 3.7.\n console.error(\"[microfe-conversations] error boundary caught\", {\n message: error.message,\n stack: error.stack,\n componentStack: errorInfo.componentStack,\n });\n }}\n >\n <FeatureFlagProvider\n workspaceId={workspaceId ?? null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <ConversationsProvider {...props} variant=\"user\">\n <ConversationsUserRoutes />\n </ConversationsProvider>\n </FeatureFlagProvider>\n </ErrorBoundary>\n );\n};\n"],"mappings":";;;;;;;;;;AAuBA,IAAa,KAAqD,MAAU;CAC1E,IAAM,EACJ,qBACA,wBACA,cAAW,KACX,mBACE,GACE,IAAK,GAAO;AA0ElB,QAxEA,QAAgB;AACd,MAAI,CAAC,EAAkB;EAEvB,IAAM,IAAe,GAAG,EAAS,GAAU,OAAO,CAAC;AAiDnD,SADgB,EA9CsB;GACpC,IAAI;GACJ,OAAO,EAAG,uBAAuB,gBAAgB;GACjD,MAAM;GACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;GACjC,OAAO;GACP,OAAO;GACP,UAAU;IACR;KACE,IAAI;KACJ,OAAO,EAAG,uBAAuB,QAAQ;KACzC,MAAM;KACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,kCAAkC,oBAAoB;KAChE,MAAM,EAAS,GAAU,OAAO;KAChC,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,iCAAiC,mBAAmB;KAC9D,MAAM,EAAS,GAAU,MAAM;KAC/B,MAAM,kBAAC,GAAD,EAAM,MAAM,IAAM,CAAA;KACxB,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,0BAA0B,WAAW;KAC/C,MAAM;KACN,MAAM,kBAAC,GAAD,EAAe,MAAM,IAAM,CAAA;KACjC,OAAO;KACR;IACD;KACE,IAAI;KACJ,OAAO,EAAG,0BAA0B,WAAW;KAC/C,MAAM,EAAS,GAAU,WAAW;KACpC,MAAM,kBAAC,GAAD,EAAU,MAAM,IAAM,CAAA;KAC5B,OAAO;KACR;IACF;GACF,CAEqD;IAErD;EAAC;EAAkB;EAAU;EAAG,CAAC,EAEpC,QAAgB;AACT,QAaL,QADgB,EAVI,CAClB;GACE,IAAI;GACJ,OAAO,EAAG,oCAAoC,sBAAsB;GACpE,MAAM;GACN,OAAO;GACP,SAAS;GACV,CACF,CAE+C;IAE/C,CAAC,GAAqB,EAAG,CAAC,EAG3B,kBAAC,GAAD;EACE,UACE,kBAAC,OAAD;GAAK,WAAU;GAAsC,MAAK;aACvD,EACC,iCACA,qEACD;GACG,CAAA;EAER,UAAU,GAAO,MAAc;AAO7B,WAAQ,MAAM,iDAAiD;IAC7D,SAAS,EAAM;IACf,OAAO,EAAM;IACb,gBAAgB,EAAU;IAC3B,CAAC;;YAGJ,kBAAC,GAAD;GACE,aAAa,KAAe;GAC5B,SAAQ;GACR,gBAAgB;aAEhB,kBAAC,GAAD;IAAuB,GAAI;IAAO,SAAQ;cACxC,kBAAC,GAAD,EAA2B,CAAA;IACL,CAAA;GACJ,CAAA;EACR,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-facing routes for the Conversations microfrontend.
|
|
3
|
+
*
|
|
4
|
+
* Routes (relative to basePath, e.g., /conversations):
|
|
5
|
+
* - / -> Conversation list page (inbox tabs)
|
|
6
|
+
* - /list -> Conversation list page
|
|
7
|
+
* - /new -> Create new conversation
|
|
8
|
+
* - /:conversationId -> Conversation detail (chat view)
|
|
9
|
+
* - /settings -> Personal notification settings
|
|
10
|
+
*/
|
|
11
|
+
export declare function ConversationsUserRoutes(): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=ConversationsUserRoutes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsUserRoutes.d.ts","sourceRoot":"","sources":["../../src/conversations/ConversationsUserRoutes.tsx"],"names":[],"mappings":"AAsBA;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,4CAatC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LazyPageBoundary as e, lazyRetry as t } from "./components/LazyPageBoundary.js";
|
|
2
|
+
import { ConversationListPage as n } from "./pages/ConversationListPage.js";
|
|
3
|
+
import { ConversationsLandingPage as r } from "./pages/ConversationsLandingPage.js";
|
|
4
|
+
import { Navigate as i, Route as a, Routes as o } from "react-router-dom";
|
|
5
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
|
+
//#region src/conversations/ConversationsUserRoutes.tsx
|
|
7
|
+
var l = t(() => import("./pages/ConversationDetailPage.js").then((e) => ({ default: e.ConversationDetailPage }))), u = t(() => import("./pages/NewConversationPage.js").then((e) => ({ default: e.NewConversationPage }))), d = t(() => import("./pages/ConversationsSettingsPage.js").then((e) => ({ default: e.ConversationsSettingsPage })));
|
|
8
|
+
function f() {
|
|
9
|
+
return /* @__PURE__ */ s(e, {
|
|
10
|
+
source: "user",
|
|
11
|
+
children: /* @__PURE__ */ c(o, { children: [
|
|
12
|
+
/* @__PURE__ */ s(a, {
|
|
13
|
+
index: !0,
|
|
14
|
+
element: /* @__PURE__ */ s(r, {})
|
|
15
|
+
}),
|
|
16
|
+
/* @__PURE__ */ s(a, {
|
|
17
|
+
path: "list",
|
|
18
|
+
element: /* @__PURE__ */ s(n, {})
|
|
19
|
+
}),
|
|
20
|
+
/* @__PURE__ */ s(a, {
|
|
21
|
+
path: "new",
|
|
22
|
+
element: /* @__PURE__ */ s(u, {})
|
|
23
|
+
}),
|
|
24
|
+
/* @__PURE__ */ s(a, {
|
|
25
|
+
path: "settings",
|
|
26
|
+
element: /* @__PURE__ */ s(d, {})
|
|
27
|
+
}),
|
|
28
|
+
/* @__PURE__ */ s(a, {
|
|
29
|
+
path: ":conversationId",
|
|
30
|
+
element: /* @__PURE__ */ s(l, {})
|
|
31
|
+
}),
|
|
32
|
+
/* @__PURE__ */ s(a, {
|
|
33
|
+
path: "*",
|
|
34
|
+
element: /* @__PURE__ */ s(i, {
|
|
35
|
+
to: ".",
|
|
36
|
+
replace: !0
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
] })
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { f as ConversationsUserRoutes };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=ConversationsUserRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationsUserRoutes.js","names":[],"sources":["../../src/conversations/ConversationsUserRoutes.tsx"],"sourcesContent":["import { Navigate, Route, Routes } from \"react-router-dom\";\n\nimport { LazyPageBoundary, lazyRetry } from \"./components/LazyPageBoundary\";\nimport { ConversationListPage } from \"./pages/ConversationListPage\";\nimport { ConversationsLandingPage } from \"./pages/ConversationsLandingPage\";\n\nconst ConversationDetailPage = lazyRetry(() =>\n import(\"./pages/ConversationDetailPage\").then((m) => ({\n default: m.ConversationDetailPage,\n })),\n);\nconst NewConversationPage = lazyRetry(() =>\n import(\"./pages/NewConversationPage\").then((m) => ({\n default: m.NewConversationPage,\n })),\n);\nconst ConversationsSettingsPage = lazyRetry(() =>\n import(\"./pages/ConversationsSettingsPage\").then((m) => ({\n default: m.ConversationsSettingsPage,\n })),\n);\n\n/**\n * User-facing routes for the Conversations microfrontend.\n *\n * Routes (relative to basePath, e.g., /conversations):\n * - / -> Conversation list page (inbox tabs)\n * - /list -> Conversation list page\n * - /new -> Create new conversation\n * - /:conversationId -> Conversation detail (chat view)\n * - /settings -> Personal notification settings\n */\nexport function ConversationsUserRoutes() {\n return (\n <LazyPageBoundary source=\"user\">\n <Routes>\n <Route index element={<ConversationsLandingPage />} />\n <Route path=\"list\" element={<ConversationListPage />} />\n <Route path=\"new\" element={<NewConversationPage />} />\n <Route path=\"settings\" element={<ConversationsSettingsPage />} />\n <Route path=\":conversationId\" element={<ConversationDetailPage />} />\n <Route path=\"*\" element={<Navigate to=\".\" replace />} />\n </Routes>\n </LazyPageBoundary>\n );\n}\n"],"mappings":";;;;;;AAMA,IAAM,IAAyB,QAC7B,OAAO,qCAAkC,MAAM,OAAO,EACpD,SAAS,EAAE,wBACZ,EAAE,CACJ,EACK,IAAsB,QAC1B,OAAO,kCAA+B,MAAM,OAAO,EACjD,SAAS,EAAE,qBACZ,EAAE,CACJ,EACK,IAA4B,QAChC,OAAO,wCAAqC,MAAM,OAAO,EACvD,SAAS,EAAE,2BACZ,EAAE,CACJ;AAYD,SAAgB,IAA0B;AACxC,QACE,kBAAC,GAAD;EAAkB,QAAO;YACvB,kBAAC,GAAD,EAAA,UAAA;GACE,kBAAC,GAAD;IAAO,OAAA;IAAM,SAAS,kBAAC,GAAD,EAA4B,CAAA;IAAI,CAAA;GACtD,kBAAC,GAAD;IAAO,MAAK;IAAO,SAAS,kBAAC,GAAD,EAAwB,CAAA;IAAI,CAAA;GACxD,kBAAC,GAAD;IAAO,MAAK;IAAM,SAAS,kBAAC,GAAD,EAAuB,CAAA;IAAI,CAAA;GACtD,kBAAC,GAAD;IAAO,MAAK;IAAW,SAAS,kBAAC,GAAD,EAA6B,CAAA;IAAI,CAAA;GACjE,kBAAC,GAAD;IAAO,MAAK;IAAkB,SAAS,kBAAC,GAAD,EAA0B,CAAA;IAAI,CAAA;GACrE,kBAAC,GAAD;IAAO,MAAK;IAAI,SAAS,kBAAC,GAAD;KAAU,IAAG;KAAI,SAAA;KAAU,CAAA;IAAI,CAAA;GACjD,EAAA,CAAA;EACQ,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Conversation } from '../types';
|
|
2
|
+
|
|
3
|
+
interface ConversationCardProps {
|
|
4
|
+
conversation: Conversation;
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
onClick?: (conversation: Conversation) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* ConversationCard - Displays a conversation in the list view.
|
|
10
|
+
* Shows avatar, title, last message preview, unread count, and metadata.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ConversationCard: import('react').NamedExoticComponent<ConversationCardProps>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=ConversationCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConversationCard.d.ts","sourceRoot":"","sources":["../../../src/conversations/components/ConversationCard.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,UAAU,qBAAqB;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,CAAC;CAChD;AAkED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,6DA8J3B,CAAC"}
|