@elevasis/ui 2.75.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-CRPH5AAB.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-L3NBMLRN.js → chunk-3RK2NNJX.js} +1 -1
  10. package/dist/{chunk-R6NMRXNO.js → chunk-4WLAVUPS.js} +1 -1
  11. package/dist/{chunk-DTEGVSJ6.js → chunk-5R4I2PAN.js} +9 -43
  12. package/dist/chunk-6B4ZPBQJ.js +7 -0
  13. package/dist/{chunk-QFS2GZMV.js → chunk-73G3I5HJ.js} +160 -160
  14. package/dist/{chunk-7OOFMEX6.js → chunk-BFLYDVEN.js} +28 -41
  15. package/dist/{chunk-VWGCURZF.js → chunk-BG6PWDJ3.js} +381 -381
  16. package/dist/{chunk-5VF5LPYS.js → chunk-BV2RNLPP.js} +1 -1
  17. package/dist/{chunk-NMHQAYZU.js → chunk-CTT4RDXE.js} +150 -151
  18. package/dist/chunk-E2LJ3FRA.js +237 -0
  19. package/dist/{chunk-5RH6NYZH.js → chunk-EFQLXRYT.js} +1 -2
  20. package/dist/{chunk-M6VAZAQW.js → chunk-EVNLJHDD.js} +3 -3
  21. package/dist/{chunk-NYIIRZSA.js → chunk-GDQQX5SL.js} +4 -42
  22. package/dist/{chunk-IYATYH5I.js → chunk-GFSOQH3N.js} +1 -1
  23. package/dist/{chunk-G7O4CBMC.js → chunk-H5AEYSVX.js} +164 -3
  24. package/dist/{chunk-ZFISGKYW.js → chunk-IIEZXXDD.js} +1 -1
  25. package/dist/{chunk-5SLRGUC4.js → chunk-INCEZAM3.js} +1 -1
  26. package/dist/{chunk-ZG6YJUT4.js → chunk-JZQNUQE4.js} +1 -1
  27. package/dist/{chunk-SB3IHM5Y.js → chunk-K55TU6CC.js} +2023 -1700
  28. package/dist/chunk-KB5CAN5D.js +33 -0
  29. package/dist/{chunk-OGHTJKBV.js → chunk-KMA4FOSV.js} +5682 -5675
  30. package/dist/{chunk-ICHDIVQO.js → chunk-KXNRTJAE.js} +1 -1
  31. package/dist/{chunk-MLHZUN2X.js → chunk-MGAELVTZ.js} +12 -12
  32. package/dist/chunk-MKH2KOAO.js +39 -0
  33. package/dist/{chunk-6BJ5HMMC.js → chunk-NAPXMYFW.js} +35 -362
  34. package/dist/{chunk-GDTK33QT.js → chunk-OGG3QJYW.js} +14 -5
  35. package/dist/{chunk-SN7X5N2A.js → chunk-P6HHXMLJ.js} +1 -1
  36. package/dist/{chunk-SEYOVNS5.js → chunk-QAILYRC2.js} +1 -1
  37. package/dist/{chunk-RBGVNPA6.js → chunk-RXZ3XDBM.js} +1 -1
  38. package/dist/{chunk-2ZRY3ARL.js → chunk-SPW6UA6B.js} +1 -1
  39. package/dist/{chunk-3H5DIJN7.js → chunk-SVZR4GYA.js} +1 -1
  40. package/dist/{chunk-47YJVIZE.js → chunk-UEY4AB3R.js} +789 -66
  41. package/dist/{chunk-LFLM723H.js → chunk-UL6MPMKY.js} +1 -1
  42. package/dist/{chunk-TX3UHDL5.js → chunk-WELN7DDV.js} +2 -2
  43. package/dist/{chunk-D3XXPCCK.js → chunk-WJN2VVVJ.js} +1 -1
  44. package/dist/{chunk-DMSTDZCJ.js → chunk-XODQUPFW.js} +11 -11
  45. package/dist/components/index.d.ts +135 -25
  46. package/dist/components/index.js +2165 -1996
  47. package/dist/components/navigation/index.js +7 -8
  48. package/dist/features/auth/index.d.ts +35 -3716
  49. package/dist/features/auth/index.js +9 -10
  50. package/dist/features/clients/index.js +18 -12
  51. package/dist/features/content/index.js +27 -27
  52. package/dist/features/crm/index.css +59 -59
  53. package/dist/features/crm/index.d.ts +18 -1
  54. package/dist/features/crm/index.js +13 -11
  55. package/dist/features/dashboard/index.css +59 -59
  56. package/dist/features/dashboard/index.js +8 -9
  57. package/dist/features/delivery/index.d.ts +3 -0
  58. package/dist/features/delivery/index.js +21 -20
  59. package/dist/features/knowledge/index.js +6 -7
  60. package/dist/features/lead-gen/index.css +59 -59
  61. package/dist/features/lead-gen/index.d.ts +3903 -2
  62. package/dist/features/lead-gen/index.js +15 -13
  63. package/dist/features/monitoring/index.js +10 -11
  64. package/dist/features/monitoring/requests/index.css +59 -59
  65. package/dist/features/monitoring/requests/index.js +8 -9
  66. package/dist/features/notes/index.js +4 -4
  67. package/dist/features/operations/index.css +59 -59
  68. package/dist/features/operations/index.js +13 -15
  69. package/dist/features/seo/index.css +659 -0
  70. package/dist/features/seo/index.d.ts +3962 -1
  71. package/dist/features/seo/index.js +31 -2
  72. package/dist/features/settings/index.css +59 -59
  73. package/dist/features/settings/index.d.ts +79 -3742
  74. package/dist/features/settings/index.js +10 -12
  75. package/dist/hooks/access/index.js +6 -7
  76. package/dist/hooks/delivery/index.css +59 -59
  77. package/dist/hooks/delivery/index.d.ts +13 -4
  78. package/dist/hooks/delivery/index.js +3 -3
  79. package/dist/hooks/published.d.ts +63 -25
  80. package/dist/hooks/published.js +19 -19
  81. package/dist/initialization/index.d.ts +35 -3716
  82. package/dist/knowledge/index.js +11 -11
  83. package/dist/layout/index.d.ts +55 -2
  84. package/dist/layout/index.js +10 -10
  85. package/dist/organization/index.css +59 -59
  86. package/dist/profile/index.d.ts +64 -3716
  87. package/dist/provider/index.d.ts +3 -0
  88. package/dist/provider/index.js +6 -7
  89. package/dist/provider/published.d.ts +3 -0
  90. package/dist/provider/published.js +6 -7
  91. package/dist/test-utils/index.js +3 -3
  92. package/dist/theme/index.js +3 -3
  93. package/dist/theme/presets/index.js +1 -1
  94. package/dist/types/index.d.ts +298 -251
  95. package/dist/utils/index.d.ts +1 -1
  96. package/dist/utils/index.js +1 -1
  97. package/package.json +5 -9
  98. package/src/hooks/README.md +22 -23
  99. package/dist/chunk-6ZAP3FOA.js +0 -93
  100. package/dist/chunk-AH52XQB7.js +0 -1
  101. package/dist/chunk-DVAOCHIF.js +0 -165
  102. package/dist/chunk-MISHPEJX.js +0 -244
  103. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +0 -879
  104. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +0 -2
  105. /package/dist/{chunk-A2SB32YV.js → chunk-5ZK7K7YP.js} +0 -0
@@ -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-A2SB32YV.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.75.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"
@@ -282,11 +278,11 @@
282
278
  "typescript": "5.9.2",
283
279
  "vite": "^7.0.0",
284
280
  "vitest": "^3.2.4",
285
- "@elevasis/sdk": "1.50.0",
286
- "@repo/elevasis-core": "1.0.0",
287
- "@repo/core": "0.67.0",
281
+ "@elevasis/sdk": "1.51.0",
282
+ "@repo/eslint-config": "0.0.0",
288
283
  "@repo/typescript-config": "0.0.0",
289
- "@repo/eslint-config": "0.0.0"
284
+ "@repo/elevasis-core": "1.0.0",
285
+ "@repo/core": "0.68.0"
290
286
  },
291
287
  "dependencies": {
292
288
  "@dagrejs/dagre": "^1.1.4",
@@ -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-NYIIRZSA.js';
2
- import { acquisitionListKeys } from './chunk-SB3IHM5Y.js';
3
- import { showApiErrorNotification, showSuccessNotification } from './chunk-ICHDIVQO.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 };