@elevasis/ui 2.74.0 → 2.76.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 (105) hide show
  1. package/dist/api/index.js +3 -3
  2. package/dist/app/index.d.ts +277 -249
  3. package/dist/app/index.js +12 -11
  4. package/dist/auth/index.js +6 -7
  5. package/dist/charts/index.js +6 -7
  6. package/dist/{chunk-GO4XJ5D4.js → chunk-2GIHWU5O.js} +4 -3
  7. package/dist/chunk-2Y6AKWGU.js +42 -0
  8. package/dist/chunk-3QYRZSHP.js +854 -0
  9. package/dist/{chunk-CRA7WQZH.js → chunk-3RK2NNJX.js} +1 -1
  10. package/dist/{chunk-R6NMRXNO.js → chunk-4WLAVUPS.js} +1 -1
  11. package/dist/{chunk-GPQQGQGT.js → chunk-5R4I2PAN.js} +9 -43
  12. package/dist/{chunk-R5UGIFYU.js → chunk-5ZK7K7YP.js} +25 -1
  13. package/dist/chunk-6B4ZPBQJ.js +7 -0
  14. package/dist/{chunk-ARAFQBNI.js → chunk-73G3I5HJ.js} +160 -160
  15. package/dist/{chunk-ZWI62BQ6.js → chunk-BFLYDVEN.js} +32 -42
  16. package/dist/{chunk-W2QRBQQA.js → chunk-BG6PWDJ3.js} +381 -381
  17. package/dist/{chunk-7ARBBELS.js → chunk-BV2RNLPP.js} +1 -1
  18. package/dist/{chunk-FA7LMNQO.js → chunk-CTT4RDXE.js} +150 -151
  19. package/dist/chunk-E2LJ3FRA.js +237 -0
  20. package/dist/{chunk-E6YGA5WH.js → chunk-EFQLXRYT.js} +1 -2
  21. package/dist/{chunk-FZSG6M6W.js → chunk-EVNLJHDD.js} +3 -3
  22. package/dist/{chunk-ZYNVCWDZ.js → chunk-GDQQX5SL.js} +4 -42
  23. package/dist/{chunk-DCQKTDIG.js → chunk-GFSOQH3N.js} +1 -1
  24. package/dist/{chunk-3LOKYZJC.js → chunk-H5AEYSVX.js} +164 -3
  25. package/dist/{chunk-ZFISGKYW.js → chunk-IIEZXXDD.js} +1 -1
  26. package/dist/{chunk-3QHX4ZKV.js → chunk-INCEZAM3.js} +1 -1
  27. package/dist/{chunk-O32UQ26A.js → chunk-JZQNUQE4.js} +1 -1
  28. package/dist/{chunk-6JN2TLV2.js → chunk-K55TU6CC.js} +2023 -1700
  29. package/dist/chunk-KB5CAN5D.js +33 -0
  30. package/dist/{chunk-2MRRDF32.js → chunk-KMA4FOSV.js} +5682 -5675
  31. package/dist/{chunk-HYQOGRWG.js → chunk-KXNRTJAE.js} +1 -1
  32. package/dist/{chunk-7RJ7P6S6.js → chunk-MGAELVTZ.js} +12 -12
  33. package/dist/chunk-MKH2KOAO.js +39 -0
  34. package/dist/{chunk-4MXNHJTA.js → chunk-NAPXMYFW.js} +939 -1570
  35. package/dist/{chunk-CQPULKKL.js → chunk-OGG3QJYW.js} +14 -5
  36. package/dist/{chunk-4M2BSHVT.js → chunk-P6HHXMLJ.js} +1 -1
  37. package/dist/{chunk-WZU3MCKI.js → chunk-QAILYRC2.js} +1 -1
  38. package/dist/{chunk-RBGVNPA6.js → chunk-RXZ3XDBM.js} +1 -1
  39. package/dist/{chunk-BA3AZJUR.js → chunk-SPW6UA6B.js} +1 -1
  40. package/dist/{chunk-RFNJ2PTO.js → chunk-SVZR4GYA.js} +1 -1
  41. package/dist/{chunk-5A6KCFS5.js → chunk-UEY4AB3R.js} +789 -66
  42. package/dist/{chunk-LN4UW6S4.js → chunk-UL6MPMKY.js} +1 -1
  43. package/dist/{chunk-ZFA56VSR.js → chunk-WELN7DDV.js} +2 -2
  44. package/dist/{chunk-43LC6XAX.js → chunk-WJN2VVVJ.js} +1 -1
  45. package/dist/{chunk-BRTGCFBH.js → chunk-XODQUPFW.js} +11 -11
  46. package/dist/components/index.d.ts +181 -34
  47. package/dist/components/index.js +2249 -1804
  48. package/dist/components/navigation/index.js +7 -8
  49. package/dist/features/auth/index.d.ts +35 -3716
  50. package/dist/features/auth/index.js +9 -10
  51. package/dist/features/clients/index.js +18 -12
  52. package/dist/features/content/index.js +34 -31
  53. package/dist/features/crm/index.css +59 -59
  54. package/dist/features/crm/index.d.ts +18 -1
  55. package/dist/features/crm/index.js +13 -11
  56. package/dist/features/dashboard/index.css +59 -59
  57. package/dist/features/dashboard/index.js +8 -9
  58. package/dist/features/delivery/index.d.ts +3 -0
  59. package/dist/features/delivery/index.js +21 -20
  60. package/dist/features/knowledge/index.js +6 -7
  61. package/dist/features/lead-gen/index.css +59 -59
  62. package/dist/features/lead-gen/index.d.ts +3903 -2
  63. package/dist/features/lead-gen/index.js +15 -13
  64. package/dist/features/monitoring/index.js +10 -11
  65. package/dist/features/monitoring/requests/index.css +59 -59
  66. package/dist/features/monitoring/requests/index.js +8 -9
  67. package/dist/features/notes/index.js +4 -4
  68. package/dist/features/operations/index.css +59 -59
  69. package/dist/features/operations/index.js +13 -15
  70. package/dist/features/seo/index.css +659 -0
  71. package/dist/features/seo/index.d.ts +3962 -1
  72. package/dist/features/seo/index.js +31 -2
  73. package/dist/features/settings/index.css +59 -59
  74. package/dist/features/settings/index.d.ts +87 -3745
  75. package/dist/features/settings/index.js +10 -12
  76. package/dist/hooks/access/index.js +6 -7
  77. package/dist/hooks/delivery/index.css +59 -59
  78. package/dist/hooks/delivery/index.d.ts +13 -4
  79. package/dist/hooks/delivery/index.js +3 -3
  80. package/dist/hooks/published.d.ts +69 -27
  81. package/dist/hooks/published.js +19 -19
  82. package/dist/initialization/index.d.ts +35 -3716
  83. package/dist/knowledge/index.js +11 -11
  84. package/dist/layout/index.d.ts +55 -2
  85. package/dist/layout/index.js +10 -10
  86. package/dist/organization/index.css +59 -59
  87. package/dist/profile/index.d.ts +64 -3716
  88. package/dist/provider/index.d.ts +3 -0
  89. package/dist/provider/index.js +6 -7
  90. package/dist/provider/published.d.ts +3 -0
  91. package/dist/provider/published.js +6 -7
  92. package/dist/test-utils/index.js +3 -3
  93. package/dist/theme/index.js +3 -3
  94. package/dist/theme/presets/index.js +1 -1
  95. package/dist/types/index.d.ts +312 -251
  96. package/dist/utils/index.d.ts +1 -1
  97. package/dist/utils/index.js +1 -1
  98. package/package.json +9 -9
  99. package/src/hooks/README.md +22 -23
  100. package/dist/chunk-6ZAP3FOA.js +0 -93
  101. package/dist/chunk-AH52XQB7.js +0 -1
  102. package/dist/chunk-GDOR57D7.js +0 -165
  103. package/dist/chunk-MISHPEJX.js +0 -244
  104. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +0 -879
  105. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +0 -2
@@ -553,7 +553,7 @@ declare const GC_TIME_LONG = 1800000;
553
553
  declare const REFETCH_INTERVAL_DASHBOARD = 60000;
554
554
  /** Near-real-time data polling for logs and activities (30s). */
555
555
  declare const REFETCH_INTERVAL_REALTIME = 30000;
556
- /** Active execution detail polling when status is 'running' (2s). */
556
+ /** Execution detail polling while the run has not reached a terminal status (2s). */
557
557
  declare const REFETCH_INTERVAL_RUNNING = 2000;
558
558
  /** Execution runner list polling when executions are active (1s). */
559
559
  declare const REFETCH_INTERVAL_RUNNING_FAST = 1000;
@@ -1,4 +1,4 @@
1
- export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getSystemReadinessServerErrorDetails, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-R5UGIFYU.js';
1
+ export { APIClientError, API_URL, DEBOUNCE_FILTER, DEBOUNCE_SLIDER, GC_TIME_LONG, GC_TIME_MEDIUM, GC_TIME_SHORT, LIMIT_ACTIVITY_FEED, OAUTH_FLOW_TIMEOUT, PAGE_SIZE_DEFAULT, STALE_TIME_ADMIN, STALE_TIME_DEFAULT, STALE_TIME_MONITORING, formatChartAxisDate, formatDate, formatDateTime, formatErrorMessage, formatRelativeTime, formatTimeAgo, getErrorInfo, getErrorTitle, getResourceColor, getResourceIcon, getSystemReadinessServerErrorDetails, isAPIClientError, restoreConsole, setupBrowserMocks, suppressKnownWarnings, validateEmail } from '../chunk-5ZK7K7YP.js';
2
2
  export { REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_REALTIME, REFETCH_INTERVAL_RUNNING, REFETCH_INTERVAL_RUNNING_FAST, SSE_CLOSE_GRACE_PERIOD, SSE_TOKEN_REFRESH_DELAY, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, debounce, getTimeRangeDates, getTimeRangeLabel } from '../chunk-Y6I3IC45.js';
3
3
  export { ResourceStatusColors } from '../chunk-6SSQGWK7.js';
4
4
  import '../chunk-TVTSASST.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/ui",
3
- "version": "2.74.0",
3
+ "version": "2.76.0",
4
4
  "description": "UI components and platform-aware hooks for building custom frontends on the Elevasis platform",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -208,10 +208,6 @@
208
208
  "types": "./dist/hooks/delivery/index.d.ts",
209
209
  "import": "./dist/hooks/delivery/index.js"
210
210
  },
211
- "./hooks/operations/command-view/utils/transformCommandViewData": {
212
- "types": "./dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts",
213
- "import": "./dist/hooks/operations/command-view/utils/transformCommandViewData.js"
214
- },
215
211
  "./test-utils": {
216
212
  "types": "./dist/test-utils/index.d.ts",
217
213
  "import": "./dist/test-utils/index.js"
@@ -242,6 +238,7 @@
242
238
  "@mantine/charts": "8.2.7",
243
239
  "@mantine/notifications": "8.2.7",
244
240
  "@mantine/form": "8.2.7",
241
+ "@mantine/modals": "8.2.7",
245
242
  "@mantine/tiptap": "8.2.7",
246
243
  "@tiptap/extension-link": "^2.11.7",
247
244
  "@tiptap/extension-placeholder": "^2.11.7",
@@ -281,11 +278,11 @@
281
278
  "typescript": "5.9.2",
282
279
  "vite": "^7.0.0",
283
280
  "vitest": "^3.2.4",
284
- "@repo/core": "0.65.0",
285
- "@elevasis/sdk": "1.49.0",
286
- "@repo/elevasis-core": "1.0.0",
281
+ "@elevasis/sdk": "1.51.0",
282
+ "@repo/eslint-config": "0.0.0",
287
283
  "@repo/typescript-config": "0.0.0",
288
- "@repo/eslint-config": "0.0.0"
284
+ "@repo/elevasis-core": "1.0.0",
285
+ "@repo/core": "0.68.0"
289
286
  },
290
287
  "dependencies": {
291
288
  "@dagrejs/dagre": "^1.1.4",
@@ -312,6 +309,9 @@
312
309
  "@mantine/form": {
313
310
  "optional": true
314
311
  },
312
+ "@mantine/modals": {
313
+ "optional": true
314
+ },
315
315
  "@tabler/icons-react": {
316
316
  "optional": true
317
317
  },
@@ -1,23 +1,22 @@
1
- # Hooks
2
-
3
- The hooks barrel is the published headless hook surface for the UI package.
4
-
5
- ## Grouped Areas
6
-
7
- - Execution and workflow hooks
8
- - Scheduling hooks
9
- - Monitoring, observability, and notification hooks
10
- - Session and SSE hooks
11
- - Operations hooks, including command-view helpers
12
- - Feature access, table state, and service helpers
13
- - Acquisition and delivery hooks
14
-
15
- ## Published Subpaths
16
-
17
- - `./hooks`
18
- - `./hooks/delivery`
19
- - `./hooks/operations/command-view/utils/transformCommandViewData`
20
-
21
- ## Notes
22
-
23
- - This barrel is intentionally headless. It should not pull in the visual component layer.
1
+ # Hooks
2
+
3
+ The hooks barrel is the published headless hook surface for the UI package.
4
+
5
+ ## Grouped Areas
6
+
7
+ - Execution and workflow hooks
8
+ - Scheduling hooks
9
+ - Monitoring, observability, and notification hooks
10
+ - Session and SSE hooks
11
+ - Operations hooks, including command-view helpers
12
+ - Feature access, table state, and service helpers
13
+ - Acquisition and delivery hooks
14
+
15
+ ## Published Subpaths
16
+
17
+ - `./hooks`
18
+ - `./hooks/delivery`
19
+
20
+ ## Notes
21
+
22
+ - This barrel is intentionally headless. It should not pull in the visual component layer.
@@ -1,93 +0,0 @@
1
- // src/hooks/operations/command-view/utils/transformCommandViewData.ts
2
- function transformCommandViewData(data) {
3
- const nodes = [
4
- // Map triggers (resourceId -> id)
5
- ...data.triggers.map((trigger) => ({
6
- id: trigger.resourceId,
7
- type: "trigger",
8
- name: trigger.name,
9
- description: trigger.description,
10
- status: trigger.status,
11
- triggerType: trigger.triggerType,
12
- webhookPath: trigger.webhookPath,
13
- schedule: trigger.schedule
14
- })),
15
- // Map agents (resourceId -> id)
16
- ...data.agents.map((agent) => {
17
- const agentWithStats = agent;
18
- return {
19
- id: agent.resourceId,
20
- type: "agent",
21
- name: agent.name,
22
- description: agent.description,
23
- status: agent.status,
24
- modelProvider: agent.modelProvider,
25
- modelId: agent.modelId,
26
- toolCount: agent.toolCount,
27
- hasMemory: agent.hasMemory,
28
- stats: agentWithStats.stats || null
29
- // Preserve stats if present
30
- };
31
- }),
32
- // Map workflows (resourceId -> id)
33
- ...data.workflows.map((workflow) => {
34
- const workflowWithStats = workflow;
35
- return {
36
- id: workflow.resourceId,
37
- type: "workflow",
38
- name: workflow.name,
39
- description: workflow.description,
40
- status: workflow.status,
41
- stepCount: workflow.stepCount,
42
- entryPoint: workflow.entryPoint,
43
- stats: workflowWithStats.stats || null
44
- // Preserve stats if present
45
- };
46
- }),
47
- // Map integrations (resourceId -> id)
48
- ...data.integrations.map((integration) => ({
49
- id: integration.resourceId,
50
- type: "integration",
51
- name: integration.name,
52
- description: integration.description,
53
- status: integration.status,
54
- provider: integration.provider,
55
- connectionStatus: "connected",
56
- // Default - runtime status not yet available
57
- credentialName: integration.credentialName
58
- })),
59
- // Map external resources (resourceId -> id)
60
- ...(data.externalResources ?? []).map((external) => ({
61
- id: external.resourceId,
62
- type: "external",
63
- name: external.name,
64
- description: external.description,
65
- status: external.status,
66
- platform: external.platform,
67
- platformUrl: external.platformUrl,
68
- externalId: external.externalId
69
- })),
70
- // Map human checkpoints to human nodes (resourceId -> id)
71
- ...(data.humanCheckpoints ?? []).map((humanCheckpoint) => {
72
- const checkpointWithStats = humanCheckpoint;
73
- return {
74
- id: humanCheckpoint.resourceId,
75
- type: "human",
76
- name: humanCheckpoint.name,
77
- description: humanCheckpoint.description ?? "",
78
- status: humanCheckpoint.status,
79
- stats: checkpointWithStats.stats || null
80
- // Preserve stats if present
81
- };
82
- })
83
- ];
84
- const edges = data.edges.map((edge, index) => ({
85
- id: edge.id || `edge-${index}`,
86
- source: edge.source,
87
- target: edge.target,
88
- relationship: edge.relationship
89
- }));
90
- return { nodes, edges };
91
- }
92
-
93
- export { transformCommandViewData };
@@ -1 +0,0 @@
1
-
@@ -1,165 +0,0 @@
1
- import { deriveActions } from './chunk-ZYNVCWDZ.js';
2
- import { acquisitionListKeys } from './chunk-6JN2TLV2.js';
3
- import { showApiErrorNotification, showSuccessNotification } from './chunk-HYQOGRWG.js';
4
- import { useElevasisServices } from './chunk-BI5VDO2K.js';
5
- import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
6
- import { useMemo } from 'react';
7
-
8
- var leadGenArtifactKeys = {
9
- all: ["lead-gen-artifacts"],
10
- // ownerId is nullable/undefined here to match CreateArtifactRequest -- an
11
- // 'organization'-owned artifact has no single owning entity row. See
12
- // CreateArtifactRequestSchema (business/acquisition/api-schemas.ts).
13
- list: (organizationId, ownerKind, ownerId) => [...leadGenArtifactKeys.all, organizationId, ownerKind, ownerId]
14
- };
15
- function useArtifacts({ ownerKind, ownerId }) {
16
- const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
17
- return useQuery({
18
- queryKey: leadGenArtifactKeys.list(workOSOrganizationId, ownerKind, ownerId),
19
- queryFn: () => apiRequest(
20
- `/acquisition/artifacts?ownerKind=${encodeURIComponent(ownerKind)}&ownerId=${encodeURIComponent(ownerId)}`
21
- ),
22
- enabled: isReady && !!ownerId
23
- });
24
- }
25
- function useCreateArtifact() {
26
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
27
- const queryClient = useQueryClient();
28
- return useMutation({
29
- mutationFn: (body) => apiRequest("/acquisition/artifacts", {
30
- method: "POST",
31
- body: JSON.stringify(body)
32
- }),
33
- onSuccess: (_, variables) => {
34
- queryClient.invalidateQueries({
35
- queryKey: leadGenArtifactKeys.list(workOSOrganizationId, variables.ownerKind, variables.ownerId)
36
- });
37
- showSuccessNotification("Artifact created");
38
- },
39
- onError: (error) => {
40
- showApiErrorNotification(error);
41
- }
42
- });
43
- }
44
- var leadGenListMemberKeys = {
45
- all: ["lead-gen-list-members"],
46
- list: (organizationId, listId) => [...leadGenListMemberKeys.all, organizationId, "list", listId],
47
- detail: (organizationId, memberId) => [...leadGenListMemberKeys.all, organizationId, "detail", memberId]
48
- };
49
- function useListMembers({ listId }) {
50
- const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
51
- return useQuery({
52
- queryKey: leadGenListMemberKeys.list(workOSOrganizationId, listId),
53
- queryFn: () => apiRequest(`/acquisition/lists/${listId}/members`),
54
- enabled: isReady && !!listId
55
- });
56
- }
57
- function useListMember(memberId) {
58
- const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
59
- return useQuery({
60
- queryKey: leadGenListMemberKeys.detail(workOSOrganizationId, memberId),
61
- queryFn: () => apiRequest(`/acquisition/list-members/${memberId}`),
62
- enabled: isReady && !!memberId
63
- });
64
- }
65
- function useTransitionListMember() {
66
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
67
- const queryClient = useQueryClient();
68
- return useMutation({
69
- mutationFn: async (input) => {
70
- const { memberId, pipelineKey, stageKey, stateKey, reason, expectedUpdatedAt } = input;
71
- await apiRequest(`/acquisition/list-members/${memberId}/transition`, {
72
- method: "PATCH",
73
- body: JSON.stringify({
74
- pipelineKey,
75
- stageKey,
76
- ...stateKey !== void 0 ? { stateKey } : {},
77
- ...reason !== void 0 ? { reason } : {},
78
- ...expectedUpdatedAt !== void 0 ? { expectedUpdatedAt } : {}
79
- })
80
- });
81
- },
82
- onSuccess: (_, variables) => {
83
- queryClient.invalidateQueries({
84
- queryKey: leadGenListMemberKeys.detail(workOSOrganizationId, variables.memberId)
85
- });
86
- if (variables.listId) {
87
- queryClient.invalidateQueries({ queryKey: leadGenListMemberKeys.list(workOSOrganizationId, variables.listId) });
88
- }
89
- },
90
- onError: (error) => {
91
- queryClient.invalidateQueries({ queryKey: leadGenListMemberKeys.all });
92
- showApiErrorNotification(error);
93
- }
94
- });
95
- }
96
- function useDeriveActions(item) {
97
- return useMemo(() => {
98
- if (!item) return [];
99
- if (item.pipeline_key !== "lead-gen") {
100
- return deriveActions(item);
101
- }
102
- return [];
103
- }, [item]);
104
- }
105
- function useUpdateListStatus() {
106
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
107
- const queryClient = useQueryClient();
108
- return useMutation({
109
- mutationFn: async (input) => {
110
- await apiRequest(`/acquisition/lists/${input.listId}/status`, {
111
- method: "PATCH",
112
- body: JSON.stringify({ status: input.status })
113
- });
114
- },
115
- onSuccess: (_, variables) => {
116
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.list(workOSOrganizationId) });
117
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.detail(workOSOrganizationId, variables.listId) });
118
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.telemetry(workOSOrganizationId) });
119
- },
120
- onError: (error) => {
121
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
122
- showApiErrorNotification(error);
123
- }
124
- });
125
- }
126
-
127
- // src/hooks/lead-gen/useTransitionListCompany.ts
128
- var leadGenListCompanyKeys = {
129
- all: ["lead-gen-list-companies"],
130
- detail: (organizationId, listCompanyId) => [...leadGenListCompanyKeys.all, organizationId, "detail", listCompanyId]
131
- };
132
- function useTransitionListCompany() {
133
- const { apiRequest, workOSOrganizationId } = useElevasisServices();
134
- const queryClient = useQueryClient();
135
- return useMutation({
136
- mutationFn: async (input) => {
137
- const { listCompanyId, pipelineKey, stageKey, stateKey, reason, expectedUpdatedAt } = input;
138
- await apiRequest(`/acquisition/list-companies/${listCompanyId}/transition`, {
139
- method: "PATCH",
140
- body: JSON.stringify({
141
- pipelineKey,
142
- stageKey,
143
- ...stateKey !== void 0 ? { stateKey } : {},
144
- ...reason !== void 0 ? { reason } : {},
145
- ...expectedUpdatedAt !== void 0 ? { expectedUpdatedAt } : {}
146
- })
147
- });
148
- },
149
- onSuccess: (_, variables) => {
150
- queryClient.invalidateQueries({
151
- queryKey: leadGenListCompanyKeys.detail(workOSOrganizationId, variables.listCompanyId)
152
- });
153
- if (variables.listId) {
154
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.telemetry(workOSOrganizationId) });
155
- queryClient.invalidateQueries({ queryKey: acquisitionListKeys.detail(workOSOrganizationId, variables.listId) });
156
- }
157
- },
158
- onError: (error) => {
159
- queryClient.invalidateQueries({ queryKey: leadGenListCompanyKeys.all });
160
- showApiErrorNotification(error);
161
- }
162
- });
163
- }
164
-
165
- export { leadGenArtifactKeys, leadGenListCompanyKeys, leadGenListMemberKeys, useArtifacts, useCreateArtifact, useDeriveActions, useListMember, useListMembers, useTransitionListCompany, useTransitionListMember, useUpdateListStatus };
@@ -1,244 +0,0 @@
1
- import { useRouterContext } from './chunk-Q7DJKLEN.js';
2
- import { UnstyledButton, Box, Group, ThemeIcon, Stack, Text } from '@mantine/core';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
4
- import { IconSearch, IconChartBar, IconTrendingUp } from '@tabler/icons-react';
5
-
6
- // src/components/layout/constants.ts
7
- var sidebarWidth = 240;
8
- var sidebarCollapsedWidth = 72;
9
- var sidebarTransitionDuration = 200;
10
- var sidebarHoverDelay = 100;
11
- var topbarHeight = 54;
12
- var sidebarBottomSectionHeight = 71;
13
- var sidebarBottomSectionCollapsedHeight = 59;
14
- var sidebarItemHeight = 42;
15
- var sidebarItemPadding = 10;
16
- var sidebarItemGap = 4;
17
- var sidebarSectionPadding = "var(--mantine-spacing-sm)";
18
- var sidebarSubLinkIndent = 44;
19
- var sidebarIconSize = 24;
20
- var sidebarIconStroke = 1.6;
21
- var sidebarIconInnerSize = 20;
22
- var sidebarToggleIconSize = 20;
23
- var sidebarSubLinkPaddingY = 6;
24
- var sidebarSubLinkPaddingX = 10;
25
- var sidebarGroupChevronSize = 14;
26
- var subshellNavItemIconSize = 14;
27
- var activeColor = "var(--color-primary)";
28
- var defaultColor = "var(--color-text-subtle)";
29
- var hoverColor = "var(--color-text)";
30
- var activeBg = `color-mix(in srgb, ${activeColor} 10%, transparent)`;
31
- var SubshellNavItem = ({
32
- icon: Icon,
33
- label,
34
- isActive = false,
35
- onClick,
36
- description,
37
- badge,
38
- disabled = false,
39
- href
40
- }) => {
41
- const handleAnchorClick = disabled ? void 0 : (event) => {
42
- if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0) {
43
- return;
44
- }
45
- event.preventDefault();
46
- onClick();
47
- };
48
- const sharedStyle = {
49
- width: "100%",
50
- padding: "var(--mantine-spacing-xs)",
51
- backgroundColor: isActive ? activeBg : "transparent",
52
- borderRadius: "var(--mantine-radius-default)",
53
- transition: `all var(--duration-fast) var(--easing)`,
54
- cursor: disabled ? "not-allowed" : "pointer",
55
- opacity: disabled ? 0.5 : 1,
56
- color: "inherit",
57
- textDecoration: "none",
58
- display: "block"
59
- };
60
- const handleMouseEnter = (e) => {
61
- if (!isActive && !disabled) {
62
- e.currentTarget.style.backgroundColor = "var(--color-surface-hover)";
63
- const textElements = e.currentTarget.querySelectorAll("[data-text-element]");
64
- textElements.forEach((el) => {
65
- el.style.color = hoverColor;
66
- });
67
- }
68
- };
69
- const handleMouseLeave = (e) => {
70
- if (!isActive && !disabled) {
71
- e.currentTarget.style.backgroundColor = "transparent";
72
- const textElements = e.currentTarget.querySelectorAll("[data-text-element]");
73
- textElements.forEach((el) => {
74
- el.style.color = defaultColor;
75
- });
76
- }
77
- };
78
- const inner = /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
79
- /* @__PURE__ */ jsxs(Group, { gap: "xs", wrap: "nowrap", children: [
80
- /* @__PURE__ */ jsx(
81
- Icon,
82
- {
83
- size: subshellNavItemIconSize,
84
- style: {
85
- flexShrink: 0,
86
- opacity: isActive ? 1 : 0.6,
87
- color: isActive ? activeColor : defaultColor
88
- }
89
- }
90
- ),
91
- /* @__PURE__ */ jsx(
92
- Text,
93
- {
94
- size: "sm",
95
- fw: isActive ? 600 : 400,
96
- style: {
97
- overflow: "hidden",
98
- textOverflow: "ellipsis",
99
- whiteSpace: "nowrap",
100
- flex: 1,
101
- fontFamily: "var(--elevasis-font-family-subtitle)",
102
- color: isActive ? activeColor : defaultColor,
103
- transition: `color var(--duration-fast) var(--easing)`
104
- },
105
- "data-text-element": true,
106
- children: label
107
- }
108
- ),
109
- badge && /* @__PURE__ */ jsx("div", { style: { flexShrink: 0 }, children: badge })
110
- ] }),
111
- description && /* @__PURE__ */ jsx(
112
- Text,
113
- {
114
- size: "xs",
115
- c: "dimmed",
116
- style: {
117
- paddingLeft: "22px",
118
- lineHeight: 1.2,
119
- color: isActive ? activeColor : defaultColor,
120
- opacity: isActive ? 0.8 : 0.6,
121
- transition: `all var(--duration-fast) var(--easing)`,
122
- display: "-webkit-box",
123
- WebkitLineClamp: 2,
124
- WebkitBoxOrient: "vertical",
125
- overflow: "hidden",
126
- textOverflow: "ellipsis"
127
- },
128
- "data-text-element": true,
129
- children: description
130
- }
131
- )
132
- ] });
133
- if (href) {
134
- return /* @__PURE__ */ jsx(
135
- UnstyledButton,
136
- {
137
- component: "a",
138
- href,
139
- onClick: handleAnchorClick,
140
- style: sharedStyle,
141
- onMouseEnter: handleMouseEnter,
142
- onMouseLeave: handleMouseLeave,
143
- children: inner
144
- }
145
- );
146
- }
147
- return /* @__PURE__ */ jsx(
148
- UnstyledButton,
149
- {
150
- onClick: disabled ? void 0 : onClick,
151
- disabled,
152
- style: sharedStyle,
153
- onMouseEnter: handleMouseEnter,
154
- onMouseLeave: handleMouseLeave,
155
- children: inner
156
- }
157
- );
158
- };
159
- var SubshellSidebarSection = ({
160
- icon: Icon,
161
- label,
162
- rightSection,
163
- withTopBorder = false
164
- }) => {
165
- return /* @__PURE__ */ jsx(
166
- Box,
167
- {
168
- p: "sm",
169
- style: {
170
- borderTop: withTopBorder ? "1px solid var(--color-border)" : void 0,
171
- borderBottom: "1px solid var(--color-border)"
172
- },
173
- children: /* @__PURE__ */ jsxs(Group, { gap: "xs", children: [
174
- /* @__PURE__ */ jsx(
175
- ThemeIcon,
176
- {
177
- variant: "light",
178
- size: sidebarIconSize,
179
- style: {
180
- backgroundColor: "var(--color-surface)",
181
- color: "var(--color-primary)",
182
- flexShrink: 0
183
- },
184
- children: /* @__PURE__ */ jsx(Icon, { size: sidebarIconInnerSize, stroke: sidebarIconStroke })
185
- }
186
- ),
187
- /* @__PURE__ */ jsx(
188
- Box,
189
- {
190
- c: "var(--color-text)",
191
- style: {
192
- fontFamily: "var(--elevasis-font-family-subtitle)",
193
- flex: 1,
194
- fontSize: "var(--mantine-font-size-md)",
195
- fontWeight: 500,
196
- lineHeight: 1.2
197
- },
198
- children: label
199
- }
200
- ),
201
- rightSection
202
- ] })
203
- }
204
- );
205
- };
206
- var SEOSidebarTop = () => {
207
- return /* @__PURE__ */ jsx(SubshellSidebarSection, { icon: IconSearch, label: "SEO" });
208
- };
209
- var NAV_ITEMS = [
210
- { label: "SEO Pages", to: "/seo", icon: IconChartBar, exact: true },
211
- { label: "Metrics", to: "/seo/metrics", icon: IconTrendingUp, exact: false }
212
- ];
213
- var SEOSidebarMiddle = () => {
214
- const { currentPath, navigate } = useRouterContext();
215
- return /* @__PURE__ */ jsx(Stack, { gap: "xs", p: "sm", style: { flex: 1, overflowY: "auto" }, children: NAV_ITEMS.map((item) => {
216
- const isActive = item.exact ? currentPath === item.to || currentPath === `${item.to}/` : currentPath.startsWith(item.to);
217
- return /* @__PURE__ */ jsx(
218
- SubshellNavItem,
219
- {
220
- icon: item.icon,
221
- label: item.label,
222
- isActive,
223
- href: item.to,
224
- onClick: () => navigate(item.to)
225
- },
226
- item.to
227
- );
228
- }) });
229
- };
230
- var SEOSidebar = () => {
231
- return /* @__PURE__ */ jsxs(Stack, { gap: 0, style: { height: "100%", display: "flex", flexDirection: "column" }, children: [
232
- /* @__PURE__ */ jsx(SEOSidebarTop, {}),
233
- /* @__PURE__ */ jsx(SEOSidebarMiddle, {})
234
- ] });
235
- };
236
-
237
- // src/features/seo/manifest.ts
238
- var seoManifest = {
239
- key: "seo",
240
- systemId: "seo",
241
- sidebar: SEOSidebar
242
- };
243
-
244
- export { SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, SubshellNavItem, SubshellSidebarSection, seoManifest, sidebarBottomSectionCollapsedHeight, sidebarBottomSectionHeight, sidebarCollapsedWidth, sidebarGroupChevronSize, sidebarHoverDelay, sidebarIconInnerSize, sidebarIconSize, sidebarIconStroke, sidebarItemGap, sidebarItemHeight, sidebarItemPadding, sidebarSectionPadding, sidebarSubLinkIndent, sidebarSubLinkPaddingX, sidebarSubLinkPaddingY, sidebarToggleIconSize, sidebarTransitionDuration, sidebarWidth, subshellNavItemIconSize, topbarHeight };