@elevasis/ui 2.40.1 → 2.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/app/index.d.ts +108 -0
  2. package/dist/app/index.js +6 -7
  3. package/dist/auth/index.js +3 -4
  4. package/dist/charts/index.js +3 -4
  5. package/dist/{chunk-7MTWRSUZ.js → chunk-56O7QQE7.js} +1 -2
  6. package/dist/{chunk-SJNIOGVX.js → chunk-A2XN6PR2.js} +2 -3
  7. package/dist/{chunk-K7GKKETO.js → chunk-FIMGOWOT.js} +1073 -586
  8. package/dist/{chunk-RX6RSKWC.js → chunk-JAN2ZXN5.js} +105 -23
  9. package/dist/{chunk-LJDYY3XB.js → chunk-JHVEA5NE.js} +1 -1
  10. package/dist/{chunk-X7D6SUKR.js → chunk-QVQMOQXB.js} +8 -2
  11. package/dist/{chunk-IUQAP4IO.js → chunk-S4R2ZQS7.js} +1 -1
  12. package/dist/{chunk-7PHY5ONQ.js → chunk-VAAU2Z3S.js} +1 -1
  13. package/dist/{chunk-6EV47QQW.js → chunk-YPWN2WQ3.js} +1 -1
  14. package/dist/components/index.js +8 -9
  15. package/dist/components/navigation/index.js +2 -3
  16. package/dist/features/auth/index.js +9 -10
  17. package/dist/features/clients/index.js +8 -9
  18. package/dist/features/crm/index.js +8 -9
  19. package/dist/features/dashboard/index.js +8 -9
  20. package/dist/features/delivery/index.js +8 -9
  21. package/dist/features/knowledge/index.js +2 -3
  22. package/dist/features/lead-gen/index.d.ts +81 -0
  23. package/dist/features/lead-gen/index.js +8 -9
  24. package/dist/features/monitoring/index.js +8 -9
  25. package/dist/features/monitoring/requests/index.d.ts +69 -7
  26. package/dist/features/monitoring/requests/index.js +136 -15
  27. package/dist/features/operations/index.d.ts +79 -0
  28. package/dist/features/operations/index.js +8 -9
  29. package/dist/features/settings/index.js +8 -9
  30. package/dist/hooks/access/index.js +2 -3
  31. package/dist/hooks/delivery/index.js +8 -9
  32. package/dist/hooks/index.d.ts +18 -6
  33. package/dist/hooks/index.js +8 -9
  34. package/dist/hooks/published.d.ts +18 -6
  35. package/dist/hooks/published.js +8 -9
  36. package/dist/index.d.ts +151 -7
  37. package/dist/index.js +8 -9
  38. package/dist/knowledge/index.d.ts +81 -0
  39. package/dist/knowledge/index.js +5 -5
  40. package/dist/layout/index.d.ts +18 -2
  41. package/dist/layout/index.js +3 -1
  42. package/dist/organization/index.js +8 -9
  43. package/dist/provider/index.d.ts +120 -1
  44. package/dist/provider/index.js +5 -6
  45. package/dist/provider/published.d.ts +121 -2
  46. package/dist/provider/published.js +4 -5
  47. package/package.json +4 -4
  48. package/dist/chunk-J3FLIZY4.js +0 -423
@@ -1,16 +1,16 @@
1
- export { AllTasksPage, Checklist, CreateDeliveryEntityModal, DELIVERY_COMMUNICATION_ITEMS, DELIVERY_PROJECT_ITEMS, DELIVERY_WORK_ITEMS, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage, calculateProgress, deliveryManifest, formatStatusLabel, milestoneStatusColors, noteTypeColors, projectStatusColors, taskStatusColors, taskTypeColors } from '../../chunk-RX6RSKWC.js';
1
+ export { AllTasksPage, Checklist, CreateDeliveryEntityModal, DELIVERY_COMMUNICATION_ITEMS, DELIVERY_PROJECT_ITEMS, DELIVERY_WORK_ITEMS, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage, calculateProgress, deliveryManifest, formatStatusLabel, milestoneStatusColors, noteTypeColors, projectStatusColors, taskStatusColors, taskTypeColors } from '../../chunk-JAN2ZXN5.js';
2
2
  import '../../chunk-B2DZLPDL.js';
3
3
  import '../../chunk-66U7JOWV.js';
4
4
  import '../../chunk-AUDNF2Q7.js';
5
5
  import '../../chunk-6M6OLGQY.js';
6
6
  import '../../chunk-BRXELOHC.js';
7
- import '../../chunk-7PHY5ONQ.js';
7
+ import '../../chunk-VAAU2Z3S.js';
8
8
  import '../../chunk-CXY7FMUM.js';
9
9
  import '../../chunk-4DRI3G36.js';
10
10
  import '../../chunk-SJHM4WDG.js';
11
11
  import '../../chunk-ZTWA5H77.js';
12
12
  import '../../chunk-5EYJ2GIN.js';
13
- import '../../chunk-X7D6SUKR.js';
13
+ import '../../chunk-QVQMOQXB.js';
14
14
  import '../../chunk-CLDCYJQT.js';
15
15
  import '../../chunk-TYRUKGGD.js';
16
16
  import '../../chunk-X4WBGKJQ.js';
@@ -18,12 +18,12 @@ import '../../chunk-IIMU5YAJ.js';
18
18
  import '../../chunk-HENXLGVD.js';
19
19
  import '../../chunk-7FPLLSHN.js';
20
20
  import '../../chunk-RNP5R5I3.js';
21
- import '../../chunk-SJNIOGVX.js';
21
+ import '../../chunk-A2XN6PR2.js';
22
22
  import '../../chunk-5JYKCULK.js';
23
23
  import '../../chunk-6D4LCJ52.js';
24
24
  import '../../chunk-WF7CONXF.js';
25
25
  import '../../chunk-WLOQ4IBG.js';
26
- import '../../chunk-6EV47QQW.js';
26
+ import '../../chunk-YPWN2WQ3.js';
27
27
  import '../../chunk-CTJBPF3Z.js';
28
28
  import '../../chunk-3KMDHCAR.js';
29
29
  import '../../chunk-S3XR4II4.js';
@@ -35,11 +35,10 @@ import '../../chunk-2IFYDILW.js';
35
35
  import '../../chunk-Q7DJKLEN.js';
36
36
  import '../../chunk-RXH4D6TY.js';
37
37
  import '../../chunk-KRWALB24.js';
38
- import '../../chunk-LJDYY3XB.js';
39
- import '../../chunk-7MTWRSUZ.js';
40
- import '../../chunk-J3FLIZY4.js';
38
+ import '../../chunk-JHVEA5NE.js';
39
+ import '../../chunk-56O7QQE7.js';
41
40
  import '../../chunk-6DO4PE3O.js';
42
- import '../../chunk-K7GKKETO.js';
41
+ import '../../chunk-FIMGOWOT.js';
43
42
  import '../../chunk-DD3CCMCZ.js';
44
43
  import '../../chunk-W2SFTXMT.js';
45
44
  import '../../chunk-6ROXVZ3L.js';
@@ -1,12 +1,11 @@
1
- import { getSharedOrganizationGraph, KnowledgeSearchBar, KnowledgeTree, getKnowledgeIconToken, getKnowledgeNodeReadCommand } from '../../chunk-IUQAP4IO.js';
1
+ import { getSharedOrganizationGraph, KnowledgeSearchBar, KnowledgeTree, getKnowledgeIconToken, getKnowledgeNodeReadCommand } from '../../chunk-S4R2ZQS7.js';
2
2
  import { ORGANIZATION_GRAPH_NODE_KIND_LABELS } from '../../chunk-5EYJ2GIN.js';
3
3
  import '../../chunk-CLDCYJQT.js';
4
4
  import { SubshellSidebarSection } from '../../chunk-IIMU5YAJ.js';
5
5
  import '../../chunk-DT3QYZVU.js';
6
6
  import '../../chunk-2IFYDILW.js';
7
7
  import { useRouterContext } from '../../chunk-Q7DJKLEN.js';
8
- import { useElevasisSystems } from '../../chunk-J3FLIZY4.js';
9
- import { resolveOrganizationModel, SemanticIcon } from '../../chunk-K7GKKETO.js';
8
+ import { useElevasisSystems, resolveOrganizationModel, SemanticIcon } from '../../chunk-FIMGOWOT.js';
10
9
  import '../../chunk-RH5VWWSC.js';
11
10
  import '../../chunk-I2KLQ2HA.js';
12
11
  import { IconBrain, IconCircleCheckFilled, IconCircleDashed, IconCheck, IconCopy } from '@tabler/icons-react';
@@ -137,6 +137,7 @@ declare const ProspectingBuildTemplateSchema: z$1.ZodObject<{
137
137
  edit: "edit";
138
138
  view: "view";
139
139
  launch: "launch";
140
+ "message-plus": "message-plus";
140
141
  escalate: "escalate";
141
142
  promote: "promote";
142
143
  submit: "submit";
@@ -204,6 +205,7 @@ declare const ProspectingBuildTemplateSchema: z$1.ZodObject<{
204
205
  edit: "edit";
205
206
  view: "view";
206
207
  launch: "launch";
208
+ "message-plus": "message-plus";
207
209
  escalate: "escalate";
208
210
  promote: "promote";
209
211
  submit: "submit";
@@ -1052,6 +1054,84 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
1052
1054
  primary: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
1053
1055
  bottom: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<SidebarNode, unknown, z$1.core.$ZodTypeInternals<SidebarNode, unknown>>>>;
1054
1056
  }, z$1.core.$strip>>;
1057
+ topbar: z$1.ZodDefault<z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{
1058
+ id: z$1.ZodString;
1059
+ label: z$1.ZodString;
1060
+ tooltip: z$1.ZodOptional<z$1.ZodString>;
1061
+ icon: z$1.ZodOptional<z$1.ZodUnion<readonly [z$1.ZodEnum<{
1062
+ message: "message";
1063
+ error: "error";
1064
+ agent: "agent";
1065
+ workflow: "workflow";
1066
+ "google-sheets": "google-sheets";
1067
+ dashboard: "dashboard";
1068
+ calendar: "calendar";
1069
+ sales: "sales";
1070
+ crm: "crm";
1071
+ "lead-gen": "lead-gen";
1072
+ projects: "projects";
1073
+ clients: "clients";
1074
+ operations: "operations";
1075
+ monitoring: "monitoring";
1076
+ knowledge: "knowledge";
1077
+ settings: "settings";
1078
+ admin: "admin";
1079
+ archive: "archive";
1080
+ business: "business";
1081
+ finance: "finance";
1082
+ platform: "platform";
1083
+ seo: "seo";
1084
+ playbook: "playbook";
1085
+ strategy: "strategy";
1086
+ reference: "reference";
1087
+ integration: "integration";
1088
+ database: "database";
1089
+ user: "user";
1090
+ team: "team";
1091
+ gmail: "gmail";
1092
+ attio: "attio";
1093
+ overview: "overview";
1094
+ "command-view": "command-view";
1095
+ "command-queue": "command-queue";
1096
+ pipeline: "pipeline";
1097
+ lists: "lists";
1098
+ resources: "resources";
1099
+ approve: "approve";
1100
+ reject: "reject";
1101
+ retry: "retry";
1102
+ edit: "edit";
1103
+ view: "view";
1104
+ launch: "launch";
1105
+ "message-plus": "message-plus";
1106
+ escalate: "escalate";
1107
+ promote: "promote";
1108
+ submit: "submit";
1109
+ email: "email";
1110
+ success: "success";
1111
+ warning: "warning";
1112
+ info: "info";
1113
+ pending: "pending";
1114
+ bolt: "bolt";
1115
+ building: "building";
1116
+ briefcase: "briefcase";
1117
+ apps: "apps";
1118
+ graph: "graph";
1119
+ shield: "shield";
1120
+ users: "users";
1121
+ "chart-bar": "chart-bar";
1122
+ search: "search";
1123
+ }>, z$1.ZodString]>>;
1124
+ order: z$1.ZodOptional<z$1.ZodNumber>;
1125
+ enabled: z$1.ZodDefault<z$1.ZodBoolean>;
1126
+ devOnly: z$1.ZodOptional<z$1.ZodBoolean>;
1127
+ requiresAdmin: z$1.ZodOptional<z$1.ZodBoolean>;
1128
+ targets: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodObject<{
1129
+ systems: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
1130
+ entities: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
1131
+ resources: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
1132
+ actions: z$1.ZodOptional<z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>>;
1133
+ }, z$1.core.$strip>>>;
1134
+ }, z$1.core.$strip>>>;
1055
1135
  }, z$1.core.$strip>>;
1056
1136
  identity: z$1.ZodDefault<z$1.ZodObject<{
1057
1137
  mission: z$1.ZodDefault<z$1.ZodString>;
@@ -1720,6 +1800,7 @@ declare const OrganizationModelSchema: z$1.ZodObject<{
1720
1800
  edit: "edit";
1721
1801
  view: "view";
1722
1802
  launch: "launch";
1803
+ "message-plus": "message-plus";
1723
1804
  escalate: "escalate";
1724
1805
  promote: "promote";
1725
1806
  submit: "submit";
@@ -1,16 +1,16 @@
1
- export { LEAD_GEN_ITEMS, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, ListBuilderIndexPage, ListBuilderPage, ORPHAN_STAGE_ORDER, companyKeys as acquisitionCompanyKeys, contactKeys as acquisitionContactKeys, companyKeys, contactKeys, deriveBusinessProgress, formatDate, getEnrichmentColor, getEnrichmentStatus, getLeadGenApiInterfaceReadiness, getLeadGenExportWorkflowId, getStateKeyColor, getStatusColor, getStepActionLabel, isLeadGenExportAction, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, leadGenManifest, resolveBuildPlanSteps, resolveBuildState, sortStageKeys, useArtifacts, useCompanies, useCompany, useCompanyFacets, useContact, useContacts, useCreateArtifact, useCreateCompany, useCreateContact, useDeleteCompanies, useDeleteContacts, useDeleteLists, useDeriveActions, useLeadGenConfig, useListMember, useListMembers, useListProgress, useTransitionListCompany, useTransitionListMember, useUpdateCompany, useUpdateContact, useUpdateListStatus } from '../../chunk-RX6RSKWC.js';
1
+ export { LEAD_GEN_ITEMS, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, ListBuilderIndexPage, ListBuilderPage, ORPHAN_STAGE_ORDER, companyKeys as acquisitionCompanyKeys, contactKeys as acquisitionContactKeys, companyKeys, contactKeys, deriveBusinessProgress, formatDate, getEnrichmentColor, getEnrichmentStatus, getLeadGenApiInterfaceReadiness, getLeadGenExportWorkflowId, getStateKeyColor, getStatusColor, getStepActionLabel, isLeadGenExportAction, leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, leadGenManifest, resolveBuildPlanSteps, resolveBuildState, sortStageKeys, useArtifacts, useCompanies, useCompany, useCompanyFacets, useContact, useContacts, useCreateArtifact, useCreateCompany, useCreateContact, useDeleteCompanies, useDeleteContacts, useDeleteLists, useDeriveActions, useLeadGenConfig, useListMember, useListMembers, useListProgress, useTransitionListCompany, useTransitionListMember, useUpdateCompany, useUpdateContact, useUpdateListStatus } from '../../chunk-JAN2ZXN5.js';
2
2
  import '../../chunk-B2DZLPDL.js';
3
3
  import '../../chunk-66U7JOWV.js';
4
4
  import '../../chunk-AUDNF2Q7.js';
5
5
  import '../../chunk-6M6OLGQY.js';
6
6
  import '../../chunk-BRXELOHC.js';
7
- import '../../chunk-7PHY5ONQ.js';
7
+ import '../../chunk-VAAU2Z3S.js';
8
8
  import '../../chunk-CXY7FMUM.js';
9
9
  import '../../chunk-4DRI3G36.js';
10
10
  import '../../chunk-SJHM4WDG.js';
11
11
  import '../../chunk-ZTWA5H77.js';
12
12
  import '../../chunk-5EYJ2GIN.js';
13
- import '../../chunk-X7D6SUKR.js';
13
+ import '../../chunk-QVQMOQXB.js';
14
14
  import '../../chunk-CLDCYJQT.js';
15
15
  import '../../chunk-TYRUKGGD.js';
16
16
  import '../../chunk-X4WBGKJQ.js';
@@ -18,12 +18,12 @@ import '../../chunk-IIMU5YAJ.js';
18
18
  import '../../chunk-HENXLGVD.js';
19
19
  import '../../chunk-7FPLLSHN.js';
20
20
  import '../../chunk-RNP5R5I3.js';
21
- import '../../chunk-SJNIOGVX.js';
21
+ import '../../chunk-A2XN6PR2.js';
22
22
  import '../../chunk-5JYKCULK.js';
23
23
  import '../../chunk-6D4LCJ52.js';
24
24
  import '../../chunk-WF7CONXF.js';
25
25
  import '../../chunk-WLOQ4IBG.js';
26
- export { EMPTY_LIST_ACTIONS, ListActionsProvider, findListActionByAction, getListActionWorkflowId, useListActions } from '../../chunk-6EV47QQW.js';
26
+ export { EMPTY_LIST_ACTIONS, ListActionsProvider, findListActionByAction, getListActionWorkflowId, useListActions } from '../../chunk-YPWN2WQ3.js';
27
27
  import '../../chunk-CTJBPF3Z.js';
28
28
  import '../../chunk-3KMDHCAR.js';
29
29
  import '../../chunk-S3XR4II4.js';
@@ -35,11 +35,10 @@ import '../../chunk-2IFYDILW.js';
35
35
  import '../../chunk-Q7DJKLEN.js';
36
36
  import '../../chunk-RXH4D6TY.js';
37
37
  import '../../chunk-KRWALB24.js';
38
- import '../../chunk-LJDYY3XB.js';
39
- import '../../chunk-7MTWRSUZ.js';
40
- import '../../chunk-J3FLIZY4.js';
38
+ import '../../chunk-JHVEA5NE.js';
39
+ import '../../chunk-56O7QQE7.js';
41
40
  import '../../chunk-6DO4PE3O.js';
42
- import '../../chunk-K7GKKETO.js';
41
+ import '../../chunk-FIMGOWOT.js';
43
42
  import '../../chunk-DD3CCMCZ.js';
44
43
  import '../../chunk-W2SFTXMT.js';
45
44
  import '../../chunk-6ROXVZ3L.js';
@@ -1,16 +1,16 @@
1
- export { ActivityFeed, ActivityLog, CostAnalytics, ErrorDetailsModal, ExecutionHealth, ExecutionLogsPage, NotificationCenter, monitoringManifest } from '../../chunk-RX6RSKWC.js';
1
+ export { ActivityFeed, ActivityLog, CostAnalytics, ErrorDetailsModal, ExecutionHealth, ExecutionLogsPage, NotificationCenter, monitoringManifest } from '../../chunk-JAN2ZXN5.js';
2
2
  import '../../chunk-B2DZLPDL.js';
3
3
  import '../../chunk-66U7JOWV.js';
4
4
  import '../../chunk-AUDNF2Q7.js';
5
5
  import '../../chunk-6M6OLGQY.js';
6
6
  import '../../chunk-BRXELOHC.js';
7
- import '../../chunk-7PHY5ONQ.js';
7
+ import '../../chunk-VAAU2Z3S.js';
8
8
  import '../../chunk-CXY7FMUM.js';
9
9
  import '../../chunk-4DRI3G36.js';
10
10
  import '../../chunk-SJHM4WDG.js';
11
11
  import '../../chunk-ZTWA5H77.js';
12
12
  import '../../chunk-5EYJ2GIN.js';
13
- import '../../chunk-X7D6SUKR.js';
13
+ import '../../chunk-QVQMOQXB.js';
14
14
  import '../../chunk-CLDCYJQT.js';
15
15
  import '../../chunk-TYRUKGGD.js';
16
16
  import '../../chunk-X4WBGKJQ.js';
@@ -18,12 +18,12 @@ import '../../chunk-IIMU5YAJ.js';
18
18
  import '../../chunk-HENXLGVD.js';
19
19
  import '../../chunk-7FPLLSHN.js';
20
20
  import '../../chunk-RNP5R5I3.js';
21
- import '../../chunk-SJNIOGVX.js';
21
+ import '../../chunk-A2XN6PR2.js';
22
22
  import '../../chunk-5JYKCULK.js';
23
23
  import '../../chunk-6D4LCJ52.js';
24
24
  import '../../chunk-WF7CONXF.js';
25
25
  import '../../chunk-WLOQ4IBG.js';
26
- import '../../chunk-6EV47QQW.js';
26
+ import '../../chunk-YPWN2WQ3.js';
27
27
  import '../../chunk-CTJBPF3Z.js';
28
28
  import '../../chunk-3KMDHCAR.js';
29
29
  import '../../chunk-S3XR4II4.js';
@@ -35,11 +35,10 @@ import '../../chunk-2IFYDILW.js';
35
35
  import '../../chunk-Q7DJKLEN.js';
36
36
  import '../../chunk-RXH4D6TY.js';
37
37
  import '../../chunk-KRWALB24.js';
38
- import '../../chunk-LJDYY3XB.js';
39
- import '../../chunk-7MTWRSUZ.js';
40
- import '../../chunk-J3FLIZY4.js';
38
+ import '../../chunk-JHVEA5NE.js';
39
+ import '../../chunk-56O7QQE7.js';
41
40
  import '../../chunk-6DO4PE3O.js';
42
- import '../../chunk-K7GKKETO.js';
41
+ import '../../chunk-FIMGOWOT.js';
43
42
  import '../../chunk-DD3CCMCZ.js';
44
43
  import '../../chunk-W2SFTXMT.js';
45
44
  import '../../chunk-6ROXVZ3L.js';
@@ -1,6 +1,10 @@
1
- import { ComponentType } from 'react';
1
+ import { ReactNode, ComponentType } from 'react';
2
+ import { IconBrain } from '@tabler/icons-react';
2
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
4
  import { z } from 'zod';
5
+ import { ButtonProps } from '@mantine/core';
6
+
7
+ type TablerIconComponent = typeof IconBrain;
4
8
 
5
9
  type SystemSidebarComponent = ComponentType;
6
10
  type SystemIconComponent = ComponentType<{
@@ -28,12 +32,46 @@ interface SystemModule {
28
32
  /** Operations-only bridge connecting this system to the organization graph node. */
29
33
  organizationGraph?: OrganizationGraphSystemBridge;
30
34
  }
35
+ /**
36
+ * A resolved topbar action — the OM node after gating/filtering, with icon resolved
37
+ * from the semantic icon registry. Passed to `TopbarActionModule.render`.
38
+ */
39
+ interface ResolvedTopbarAction {
40
+ id: string;
41
+ label: string;
42
+ tooltip?: string;
43
+ icon: TablerIconComponent;
44
+ order: number;
45
+ }
46
+ /**
47
+ * A topbar action module — binds a registry key to UI behavior (a render callback).
48
+ * The key must match `navigation.topbar[id]`. The OM supplies data + visibility;
49
+ * the module supplies behavior.
50
+ */
51
+ interface TopbarActionModule {
52
+ /** Stable key that matches the `id` of a `navigation.topbar` node. */
53
+ key: string;
54
+ /** Render the topbar action. Receives the resolved OM node (icon pre-resolved). */
55
+ render: (ctx: {
56
+ node: ResolvedTopbarAction;
57
+ }) => ReactNode;
58
+ }
31
59
  interface OrganizationGraphSystemBridge {
32
60
  systemId?: string;
33
61
  }
34
62
 
35
63
  declare const submittedRequestsManifest: SystemModule;
36
64
 
65
+ /**
66
+ * Topbar action manifest for the `request` entry point.
67
+ *
68
+ * The registry key `'request'` matches `navigation.topbar.request` authored
69
+ * in the Organization Model (Agent 3B). The OM node controls visibility and
70
+ * order; this module supplies the behavior (renders RequestActionIcon which
71
+ * owns its own icon, tooltip, and modal disclosure).
72
+ */
73
+ declare const requestTopbarActionManifest: TopbarActionModule;
74
+
37
75
  /**
38
76
  * Request Reporting API Schemas
39
77
  *
@@ -71,16 +109,18 @@ declare const RequestTypeEnum: z.ZodEnum<{
71
109
  type RequestSeverity = z.infer<typeof RequestSeverityEnum>;
72
110
  type RequestStatus = z.infer<typeof RequestStatusEnum>;
73
111
  type RequestSource = z.infer<typeof RequestSourceEnum>;
74
- type RequestType = z.infer<typeof RequestTypeEnum>;
112
+ type RequestType$1 = z.infer<typeof RequestTypeEnum>;
75
113
 
76
114
  interface RequestsListPageProps {
77
- type?: RequestType;
115
+ type?: RequestType$1;
78
116
  severity?: RequestSeverity;
79
117
  status?: RequestStatus;
80
118
  source?: RequestSource;
81
119
  onNavigateToRequest?: (id: string) => void;
120
+ /** Optional action placed in the page title row (e.g. a RequestButton trigger). */
121
+ rightSection?: ReactNode;
82
122
  }
83
- declare function RequestsListPage({ type: typeProp, severity: severityProp, status: statusProp, source: sourceProp, onNavigateToRequest }: RequestsListPageProps): react_jsx_runtime.JSX.Element;
123
+ declare function RequestsListPage({ type: typeProp, severity: severityProp, status: statusProp, source: sourceProp, onNavigateToRequest, rightSection }: RequestsListPageProps): react_jsx_runtime.JSX.Element;
84
124
 
85
125
  interface RequestsDetailPageProps {
86
126
  requestId: string;
@@ -89,7 +129,7 @@ interface RequestsDetailPageProps {
89
129
  declare function RequestsDetailPage({ requestId, onNavigateBack }: RequestsDetailPageProps): react_jsx_runtime.JSX.Element;
90
130
 
91
131
  interface RequestTypeBadgeProps {
92
- type: RequestType;
132
+ type: RequestType$1;
93
133
  }
94
134
  declare function RequestTypeBadge({ type }: RequestTypeBadgeProps): react_jsx_runtime.JSX.Element;
95
135
 
@@ -116,5 +156,27 @@ interface StatusTransitionMenuProps {
116
156
  */
117
157
  declare function StatusTransitionMenu({ currentStatus, onTransition }: StatusTransitionMenuProps): react_jsx_runtime.JSX.Element;
118
158
 
119
- export { RequestTypeBadge, RequestsDetailPage, RequestsListPage, SeverityBadge, StatusBadge, StatusTransitionMenu, submittedRequestsManifest };
120
- export type { StatusTransitionMenuProps };
159
+ type RequestType = 'feature' | 'bug' | 'question' | 'other';
160
+
161
+ interface RequestModalProps {
162
+ opened: boolean;
163
+ onClose: () => void;
164
+ defaultType?: RequestType;
165
+ affectedPage?: string;
166
+ }
167
+ declare function RequestModal({ opened, onClose, defaultType, affectedPage }: RequestModalProps): react_jsx_runtime.JSX.Element;
168
+
169
+ interface RequestButtonProps extends Omit<ButtonProps, 'onClick' | 'leftSection'> {
170
+ label?: string;
171
+ affectedPage?: string;
172
+ }
173
+ declare function RequestButton({ label, affectedPage, ...buttonProps }: RequestButtonProps): react_jsx_runtime.JSX.Element;
174
+
175
+ interface RequestActionIconProps {
176
+ tooltip?: string;
177
+ affectedPage?: string;
178
+ }
179
+ declare function RequestActionIcon({ tooltip, affectedPage }: RequestActionIconProps): react_jsx_runtime.JSX.Element;
180
+
181
+ export { RequestActionIcon, RequestButton, RequestModal, RequestTypeBadge, RequestsDetailPage, RequestsListPage, SeverityBadge, StatusBadge, StatusTransitionMenu, requestTopbarActionManifest, submittedRequestsManifest };
182
+ export type { RequestActionIconProps, RequestButtonProps, RequestModalProps, StatusTransitionMenuProps };
@@ -1,16 +1,16 @@
1
- import { ConfirmationModal, usePaginationState, useRequestsList, useUpdateRequestStatus, useDeleteRequest, useTableSelection, FilterBar, TableSelectionToolbar, CustomModal, useRequest } from '../../../chunk-RX6RSKWC.js';
1
+ import { useSubmitRequest, CustomModal, ConfirmationModal, usePaginationState, useRequestsList, useUpdateRequestStatus, useDeleteRequest, useTableSelection, FilterBar, TableSelectionToolbar, useRequest } from '../../../chunk-JAN2ZXN5.js';
2
2
  import '../../../chunk-B2DZLPDL.js';
3
3
  import '../../../chunk-66U7JOWV.js';
4
4
  import '../../../chunk-AUDNF2Q7.js';
5
5
  import '../../../chunk-6M6OLGQY.js';
6
6
  import '../../../chunk-BRXELOHC.js';
7
- import '../../../chunk-7PHY5ONQ.js';
7
+ import '../../../chunk-VAAU2Z3S.js';
8
8
  import '../../../chunk-CXY7FMUM.js';
9
9
  import '../../../chunk-4DRI3G36.js';
10
10
  import '../../../chunk-SJHM4WDG.js';
11
11
  import '../../../chunk-ZTWA5H77.js';
12
12
  import '../../../chunk-5EYJ2GIN.js';
13
- import '../../../chunk-X7D6SUKR.js';
13
+ import '../../../chunk-QVQMOQXB.js';
14
14
  import '../../../chunk-CLDCYJQT.js';
15
15
  import '../../../chunk-TYRUKGGD.js';
16
16
  import '../../../chunk-X4WBGKJQ.js';
@@ -18,12 +18,12 @@ import '../../../chunk-IIMU5YAJ.js';
18
18
  import '../../../chunk-HENXLGVD.js';
19
19
  import '../../../chunk-7FPLLSHN.js';
20
20
  import '../../../chunk-RNP5R5I3.js';
21
- import '../../../chunk-SJNIOGVX.js';
21
+ import '../../../chunk-A2XN6PR2.js';
22
22
  import '../../../chunk-5JYKCULK.js';
23
23
  import '../../../chunk-6D4LCJ52.js';
24
24
  import '../../../chunk-WF7CONXF.js';
25
25
  import '../../../chunk-WLOQ4IBG.js';
26
- import '../../../chunk-6EV47QQW.js';
26
+ import '../../../chunk-YPWN2WQ3.js';
27
27
  import { PageTitleCaption, ContextViewer, JsonViewer } from '../../../chunk-CTJBPF3Z.js';
28
28
  import '../../../chunk-3KMDHCAR.js';
29
29
  import { CardHeader } from '../../../chunk-S3XR4II4.js';
@@ -35,11 +35,10 @@ import '../../../chunk-2IFYDILW.js';
35
35
  import '../../../chunk-Q7DJKLEN.js';
36
36
  import { formatTimeAgo } from '../../../chunk-RXH4D6TY.js';
37
37
  import '../../../chunk-KRWALB24.js';
38
- import '../../../chunk-LJDYY3XB.js';
39
- import '../../../chunk-7MTWRSUZ.js';
40
- import '../../../chunk-J3FLIZY4.js';
38
+ import '../../../chunk-JHVEA5NE.js';
39
+ import '../../../chunk-56O7QQE7.js';
41
40
  import '../../../chunk-6DO4PE3O.js';
42
- import '../../../chunk-K7GKKETO.js';
41
+ import '../../../chunk-FIMGOWOT.js';
43
42
  import '../../../chunk-DD3CCMCZ.js';
44
43
  import '../../../chunk-W2SFTXMT.js';
45
44
  import '../../../chunk-6ROXVZ3L.js';
@@ -49,11 +48,13 @@ import '../../../chunk-MQZE7SUI.js';
49
48
  import '../../../chunk-TVTSASST.js';
50
49
  import '../../../chunk-BRJ3QZ4E.js';
51
50
  import '../../../chunk-I2KLQ2HA.js';
51
+ import { Stack, Title, Text, Select, TextInput, Textarea, Alert, Group, Button, Tooltip, ActionIcon, Badge, Menu, Paper, Center, Loader, Table, Checkbox, Pagination, Skeleton, SimpleGrid, CopyButton, SegmentedControl } from '@mantine/core';
52
+ import { useDisclosure } from '@mantine/hooks';
53
+ import { IconExclamationMark, IconMessagePlus, IconChevronDown, IconAlertTriangle, IconCheck, IconCopy, IconClipboardText, IconFileDescription, IconAlertCircle, IconInfoCircle, IconArrowLeft } from '@tabler/icons-react';
54
+ import { useForm } from '@mantine/form';
55
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
52
56
  import { useState } from 'react';
53
57
  import { useNavigate } from '@tanstack/react-router';
54
- import { Badge, Menu, Button, Stack, Paper, Select, Center, Loader, Text, Table, Checkbox, Group, Pagination, Title, Skeleton, SimpleGrid, CopyButton, Tooltip, ActionIcon, SegmentedControl } from '@mantine/core';
55
- import { IconChevronDown, IconAlertTriangle, IconCheck, IconCopy, IconClipboardText, IconFileDescription, IconAlertCircle, IconInfoCircle, IconArrowLeft } from '@tabler/icons-react';
56
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
57
58
  import { notifications } from '@mantine/notifications';
58
59
 
59
60
  // src/features/monitoring/requests/manifest.ts
@@ -61,6 +62,113 @@ var submittedRequestsManifest = {
61
62
  key: "submitted-requests",
62
63
  routePrefixes: ["/monitoring/requests"]
63
64
  };
65
+ var TYPE_OPTIONS = [
66
+ { value: "feature", label: "Feature request" },
67
+ { value: "bug", label: "Bug / issue" },
68
+ { value: "question", label: "Question" },
69
+ { value: "other", label: "Other" }
70
+ ];
71
+ function RequestModal({ opened, onClose, defaultType = "feature", affectedPage }) {
72
+ const submitRequest = useSubmitRequest();
73
+ const form = useForm({
74
+ initialValues: {
75
+ title: "",
76
+ description: "",
77
+ type: defaultType
78
+ },
79
+ validate: {
80
+ title: (value) => {
81
+ if (!value.trim()) return "A short title is required";
82
+ if (value.trim().length < 3) return "Title must be at least 3 characters";
83
+ if (value.trim().length > 200) return "Title must be less than 200 characters";
84
+ return null;
85
+ },
86
+ description: (value) => {
87
+ if (!value.trim()) return "A description is required";
88
+ if (value.trim().length < 10) return "Please add a bit more detail (at least 10 characters)";
89
+ return null;
90
+ }
91
+ }
92
+ });
93
+ const handleSubmit = async (values) => {
94
+ try {
95
+ await submitRequest.mutateAsync({
96
+ title: values.title.trim(),
97
+ description: values.description.trim(),
98
+ type: values.type,
99
+ affectedPage: affectedPage ?? (typeof window !== "undefined" ? window.location.pathname : void 0)
100
+ });
101
+ form.reset();
102
+ onClose();
103
+ } catch {
104
+ }
105
+ };
106
+ const handleClose = () => {
107
+ if (!submitRequest.isPending) {
108
+ form.reset();
109
+ submitRequest.reset();
110
+ onClose();
111
+ }
112
+ };
113
+ return /* @__PURE__ */ jsx(CustomModal, { opened, onClose: handleClose, size: "md", loading: submitRequest.isPending, children: /* @__PURE__ */ jsx("form", { onSubmit: form.onSubmit(handleSubmit), children: /* @__PURE__ */ jsxs(Stack, { p: "sm", children: [
114
+ /* @__PURE__ */ jsx(Title, { order: 3, children: "Request a feature or report an issue" }),
115
+ /* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "Tell us what you need or what's not working. We review every submission." }),
116
+ /* @__PURE__ */ jsx(
117
+ Select,
118
+ {
119
+ label: "Type",
120
+ data: TYPE_OPTIONS,
121
+ allowDeselect: false,
122
+ disabled: submitRequest.isPending,
123
+ ...form.getInputProps("type")
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsx(
127
+ TextInput,
128
+ {
129
+ label: "Title",
130
+ description: "A short summary",
131
+ placeholder: "e.g., Add CSV export, Login page shows blank screen",
132
+ withAsterisk: true,
133
+ disabled: submitRequest.isPending,
134
+ ...form.getInputProps("title")
135
+ }
136
+ ),
137
+ /* @__PURE__ */ jsx(
138
+ Textarea,
139
+ {
140
+ label: "Description",
141
+ description: "Include any relevant details, steps to reproduce, or expected behavior",
142
+ placeholder: "Describe the feature or issue\u2026",
143
+ autosize: true,
144
+ minRows: 3,
145
+ maxRows: 8,
146
+ withAsterisk: true,
147
+ disabled: submitRequest.isPending,
148
+ ...form.getInputProps("description")
149
+ }
150
+ ),
151
+ submitRequest.isError && /* @__PURE__ */ jsx(Alert, { icon: /* @__PURE__ */ jsx(IconExclamationMark, { size: 16 }), color: "red", children: submitRequest.error instanceof Error ? submitRequest.error.message : "Something went wrong. Please try again." }),
152
+ /* @__PURE__ */ jsxs(Group, { justify: "flex-end", gap: "sm", children: [
153
+ /* @__PURE__ */ jsx(Button, { variant: "subtle", onClick: handleClose, disabled: submitRequest.isPending, children: "Cancel" }),
154
+ /* @__PURE__ */ jsx(Button, { type: "submit", loading: submitRequest.isPending, leftSection: /* @__PURE__ */ jsx(IconMessagePlus, { size: 16 }), children: "Send request" })
155
+ ] })
156
+ ] }) }) });
157
+ }
158
+ function RequestActionIcon({
159
+ tooltip = "Request a feature or report an issue",
160
+ affectedPage
161
+ }) {
162
+ const [opened, { open, close }] = useDisclosure(false);
163
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
164
+ /* @__PURE__ */ jsx(Tooltip, { label: tooltip, children: /* @__PURE__ */ jsx(ActionIcon, { variant: "subtle", onClick: open, "aria-label": tooltip, children: /* @__PURE__ */ jsx(IconMessagePlus, { size: 18 }) }) }),
165
+ /* @__PURE__ */ jsx(RequestModal, { opened, onClose: close, affectedPage })
166
+ ] });
167
+ }
168
+ var requestTopbarActionManifest = {
169
+ key: "request",
170
+ render: () => /* @__PURE__ */ jsx(RequestActionIcon, {})
171
+ };
64
172
  var TYPE_COLORS = {
65
173
  bug: "red",
66
174
  feature: "blue",
@@ -165,13 +273,25 @@ function StatusTransitionMenu({ currentStatus, onTransition }) {
165
273
  )
166
274
  ] });
167
275
  }
276
+ function RequestButton({
277
+ label = "Request a feature or report an issue",
278
+ affectedPage,
279
+ ...buttonProps
280
+ }) {
281
+ const [opened, { open, close }] = useDisclosure(false);
282
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
283
+ /* @__PURE__ */ jsx(Button, { variant: "light", leftSection: /* @__PURE__ */ jsx(IconMessagePlus, { size: 16 }), onClick: open, ...buttonProps, children: label }),
284
+ /* @__PURE__ */ jsx(RequestModal, { opened, onClose: close, affectedPage })
285
+ ] });
286
+ }
168
287
  var PAGE_SIZE = 20;
169
288
  function RequestsListPage({
170
289
  type: typeProp,
171
290
  severity: severityProp,
172
291
  status: statusProp,
173
292
  source: sourceProp,
174
- onNavigateToRequest
293
+ onNavigateToRequest,
294
+ rightSection
175
295
  }) {
176
296
  const navigate = useNavigate();
177
297
  const [typeFilter, setTypeFilter] = useState(typeProp);
@@ -234,7 +354,8 @@ function RequestsListPage({
234
354
  PageTitleCaption,
235
355
  {
236
356
  title: "Submitted Requests",
237
- caption: "Browse and triage user-submitted bug reports, feature requests, and questions"
357
+ caption: "Browse and triage user-submitted bug reports, feature requests, and questions",
358
+ rightSection
238
359
  }
239
360
  ),
240
361
  /* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsxs(Stack, { gap: 0, children: [
@@ -560,4 +681,4 @@ function RequestsDetailPage({ requestId, onNavigateBack }) {
560
681
  ] });
561
682
  }
562
683
 
563
- export { RequestTypeBadge, RequestsDetailPage, RequestsListPage, SeverityBadge, StatusBadge, StatusTransitionMenu, submittedRequestsManifest };
684
+ export { RequestActionIcon, RequestButton, RequestModal, RequestTypeBadge, RequestsDetailPage, RequestsListPage, SeverityBadge, StatusBadge, StatusTransitionMenu, requestTopbarActionManifest, submittedRequestsManifest };