@elevasis/ui 2.29.0 → 2.30.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.
- package/dist/app/index.d.ts +54 -0
- package/dist/app/index.js +8 -8
- package/dist/auth/index.js +4 -4
- package/dist/charts/index.d.ts +2 -1
- package/dist/charts/index.js +6 -6
- package/dist/{chunk-SZWXQHKO.js → chunk-2DIYILF7.js} +7 -6
- package/dist/{chunk-XTVZFT7U.js → chunk-2Q2JQSQO.js} +1 -1
- package/dist/{chunk-65RQE3XF.js → chunk-3GV5NHSS.js} +1051 -208
- package/dist/{chunk-3DUOPXOJ.js → chunk-3MDNBHVB.js} +4 -4
- package/dist/{chunk-QNL7UI5G.js → chunk-4FZYEEPK.js} +4 -4
- package/dist/{chunk-Y3YJKKEB.js → chunk-4SY6BTVZ.js} +1 -1
- package/dist/{chunk-HLFFKKT3.js → chunk-4VQ2PXMI.js} +14 -14
- package/dist/{chunk-WKJ47GIW.js → chunk-533DUEQY.js} +1 -1
- package/dist/{chunk-HNFQCOD2.js → chunk-6EFVZV6X.js} +392 -309
- package/dist/{chunk-V3HUIZJX.js → chunk-6IXOKUBC.js} +1 -1
- package/dist/{chunk-VKMNWHTL.js → chunk-6YT4IKJ7.js} +3 -3
- package/dist/{chunk-AK5E6ILJ.js → chunk-A7B7HLDF.js} +8 -8
- package/dist/{chunk-OWESKPTJ.js → chunk-AKOD52HS.js} +26 -8
- package/dist/{chunk-ROSMICXG.js → chunk-CXY7FMUM.js} +35 -20
- package/dist/{chunk-HOIT677G.js → chunk-HUJCU55S.js} +1 -1
- package/dist/{chunk-A7R2URMV.js → chunk-HYLERWRO.js} +41 -7
- package/dist/{chunk-XBMCDGHA.js → chunk-IKQ42WHU.js} +1 -1
- package/dist/{chunk-GESXCQWY.js → chunk-JA5ECJJB.js} +1 -1
- package/dist/{chunk-KU7ZDWQ7.js → chunk-JBWJ6WHZ.js} +1 -1
- package/dist/{chunk-FGDUK74A.js → chunk-JKTPRYGV.js} +3 -3
- package/dist/{chunk-5WWZXCS5.js → chunk-KJ3QUBNU.js} +9 -2
- package/dist/{chunk-OHGNCWJP.js → chunk-LRZFLK2F.js} +1 -1
- package/dist/{chunk-FFDAE2QI.js → chunk-NITGGYH2.js} +172 -26
- package/dist/{chunk-VMJVQAFZ.js → chunk-OAVTMITG.js} +1 -1
- package/dist/{chunk-6NHCE7JM.js → chunk-P5WYW2GI.js} +12 -12
- package/dist/{chunk-5CW2HXQA.js → chunk-SBCIB5TZ.js} +4 -25
- package/dist/{chunk-OIMPGKDB.js → chunk-SKXXT3E2.js} +3 -3
- package/dist/{chunk-CEHUFNAL.js → chunk-T2PAD63Y.js} +11 -11
- package/dist/{chunk-LH4GPYDX.js → chunk-T5Z7G2J2.js} +19 -3
- package/dist/{chunk-WFTNY755.js → chunk-VKIZUUPM.js} +1 -1
- package/dist/{chunk-S66IQSSR.js → chunk-WF227UBV.js} +1 -1
- package/dist/components/chat/index.d.ts +2 -1
- package/dist/components/chat/index.js +1 -1
- package/dist/components/index.js +37 -37
- package/dist/components/navigation/index.js +8 -8
- package/dist/features/auth/index.js +5 -5
- package/dist/features/crm/index.js +18 -18
- package/dist/features/dashboard/index.js +19 -19
- package/dist/features/delivery/index.js +18 -18
- package/dist/features/knowledge/index.js +19 -19
- package/dist/features/lead-gen/index.d.ts +99 -1
- package/dist/features/lead-gen/index.js +19 -19
- package/dist/features/monitoring/index.js +20 -20
- package/dist/features/monitoring/requests/index.js +17 -17
- package/dist/features/operations/index.js +24 -24
- package/dist/features/settings/index.js +19 -19
- package/dist/hooks/delivery/index.js +2 -2
- package/dist/hooks/index.d.ts +263 -4
- package/dist/hooks/index.js +17 -17
- package/dist/hooks/published.d.ts +263 -4
- package/dist/hooks/published.js +17 -17
- package/dist/index.d.ts +378 -8
- package/dist/index.js +18 -18
- package/dist/initialization/index.js +4 -4
- package/dist/knowledge/index.d.ts +54 -0
- package/dist/organization/index.js +4 -4
- package/dist/profile/index.js +2 -2
- package/dist/provider/ElevasisServiceContext.d.ts +11 -5
- package/dist/provider/ElevasisServiceContext.js +1 -1
- package/dist/provider/index.d.ts +119 -5
- package/dist/provider/index.js +14 -14
- package/dist/provider/published.d.ts +119 -5
- package/dist/provider/published.js +10 -10
- package/dist/test-utils/index.d.ts +3 -0
- package/dist/test-utils/index.js +28 -4
- package/dist/theme/index.js +3 -3
- package/dist/theme/presets/index.js +1 -1
- package/package.json +5 -5
|
@@ -1,20 +1,49 @@
|
|
|
1
|
-
import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-
|
|
1
|
+
import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-AKOD52HS.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
|
|
5
5
|
id: ModelIdSchema,
|
|
6
|
-
order: z.number().
|
|
6
|
+
order: z.number().min(0)
|
|
7
|
+
});
|
|
8
|
+
var RecordColumnConfigSchema = z.object({
|
|
9
|
+
key: ModelIdSchema,
|
|
10
|
+
label: z.string().trim().min(1).max(120),
|
|
11
|
+
path: z.string().trim().min(1).max(500),
|
|
12
|
+
width: z.union([z.number().positive(), z.string().trim().min(1).max(100)]).optional(),
|
|
13
|
+
renderType: z.enum(["text", "badge", "datetime", "count", "json"]).optional(),
|
|
14
|
+
badgeColor: z.string().trim().min(1).max(40).optional()
|
|
15
|
+
});
|
|
16
|
+
var RecordColumnsConfigSchema = z.object({
|
|
17
|
+
company: z.array(RecordColumnConfigSchema).optional(),
|
|
18
|
+
contact: z.array(RecordColumnConfigSchema).optional()
|
|
19
|
+
}).refine((columns) => Boolean(columns.company?.length || columns.contact?.length), {
|
|
20
|
+
message: "recordColumns must include at least one entity column set"
|
|
21
|
+
});
|
|
22
|
+
var CredentialRequirementSchema = z.object({
|
|
23
|
+
key: ModelIdSchema,
|
|
24
|
+
provider: ModelIdSchema,
|
|
25
|
+
credentialType: z.enum(["api-key", "api-key-secret", "oauth", "webhook-secret"]),
|
|
26
|
+
label: z.string().trim().min(1).max(120),
|
|
27
|
+
required: z.boolean(),
|
|
28
|
+
selectionMode: z.enum(["single", "multiple"]).optional(),
|
|
29
|
+
inputPath: z.string().trim().min(1).max(500),
|
|
30
|
+
verifyOnRun: z.boolean().optional()
|
|
7
31
|
});
|
|
8
32
|
var ProspectingBuildTemplateStepSchema = DisplayMetadataSchema.extend({
|
|
9
33
|
id: ModelIdSchema,
|
|
10
34
|
primaryEntity: z.enum(["company", "contact"]),
|
|
11
35
|
outputs: z.array(z.enum(["company", "contact", "export"])).min(1),
|
|
12
36
|
stageKey: ModelIdSchema,
|
|
37
|
+
recordEntity: z.enum(["company", "contact"]).optional(),
|
|
38
|
+
recordsStageKey: ModelIdSchema.optional(),
|
|
39
|
+
recordSourceStageKey: ModelIdSchema.optional(),
|
|
13
40
|
dependsOn: z.array(ModelIdSchema).optional(),
|
|
14
41
|
dependencyMode: z.literal("per-record-eligibility"),
|
|
15
42
|
capabilityKey: ModelIdSchema,
|
|
16
43
|
defaultBatchSize: z.number().int().positive(),
|
|
17
|
-
maxBatchSize: z.number().int().positive()
|
|
44
|
+
maxBatchSize: z.number().int().positive(),
|
|
45
|
+
recordColumns: RecordColumnsConfigSchema.optional(),
|
|
46
|
+
credentialRequirements: z.array(CredentialRequirementSchema).optional()
|
|
18
47
|
}).refine((step) => step.defaultBatchSize <= step.maxBatchSize, {
|
|
19
48
|
message: "defaultBatchSize must be less than or equal to maxBatchSize",
|
|
20
49
|
path: ["defaultBatchSize"]
|
|
@@ -23,6 +52,62 @@ var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
|
|
|
23
52
|
id: ModelIdSchema,
|
|
24
53
|
steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
|
|
25
54
|
});
|
|
55
|
+
var DTC_RECORD_COLUMNS = {
|
|
56
|
+
populated: {
|
|
57
|
+
company: [
|
|
58
|
+
{ key: "name", label: "Company", path: "company.name" },
|
|
59
|
+
{ key: "domain", label: "Domain", path: "company.domain" },
|
|
60
|
+
{ key: "employee-count", label: "Employees", path: "company.numEmployees", renderType: "count" },
|
|
61
|
+
{ key: "apollo-industry", label: "Apollo industry", path: "company.category" },
|
|
62
|
+
{ key: "location", label: "Location", path: "company.locationState" }
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
crawled: {
|
|
66
|
+
company: [
|
|
67
|
+
{ key: "name", label: "Company", path: "company.name" },
|
|
68
|
+
{ key: "domain", label: "Domain", path: "company.domain" },
|
|
69
|
+
{ key: "page-count", label: "Pages", path: "company.enrichmentData.websiteCrawl.pageCount", renderType: "count" },
|
|
70
|
+
{ key: "crawl-status", label: "Crawl status", path: "processingState.crawled.status", renderType: "badge" }
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
extracted: {
|
|
74
|
+
company: [
|
|
75
|
+
{ key: "name", label: "Company", path: "company.name" },
|
|
76
|
+
{ key: "domain", label: "Domain", path: "company.domain" },
|
|
77
|
+
{ key: "description", label: "Description", path: "company.enrichmentData.websiteCrawl.companyDescription" },
|
|
78
|
+
{ key: "services", label: "Services", path: "company.enrichmentData.websiteCrawl.services", renderType: "json" },
|
|
79
|
+
{ key: "automation-gaps", label: "Automation gaps", path: "company.enrichmentData.websiteCrawl.automationGaps", renderType: "json" },
|
|
80
|
+
{ key: "contact-count", label: "Contacts", path: "company.enrichmentData.websiteCrawl.emailCount", renderType: "count" }
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
qualified: {
|
|
84
|
+
company: [
|
|
85
|
+
{ key: "name", label: "Company", path: "company.name" },
|
|
86
|
+
{ key: "domain", label: "Domain", path: "company.domain" },
|
|
87
|
+
{ key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
|
|
88
|
+
{ key: "signals", label: "Signals", path: "company.qualificationSignals", renderType: "json" },
|
|
89
|
+
{ key: "disqualified-reason", label: "Disqualified reason", path: "processingState.qualified.data.disqualifiedReason" }
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
decisionMakers: {
|
|
93
|
+
contact: [
|
|
94
|
+
{ key: "name", label: "Name", path: "contact.name" },
|
|
95
|
+
{ key: "title", label: "Title", path: "contact.title" },
|
|
96
|
+
{ key: "email", label: "Email", path: "contact.email" },
|
|
97
|
+
{ key: "linkedin", label: "LinkedIn", path: "contact.linkedinUrl" },
|
|
98
|
+
{ key: "priority-score", label: "Priority", path: "contact.enrichmentData.apollo.priorityScore", renderType: "badge" }
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
uploaded: {
|
|
102
|
+
company: [
|
|
103
|
+
{ key: "name", label: "Company", path: "company.name" },
|
|
104
|
+
{ key: "domain", label: "Domain", path: "company.domain" },
|
|
105
|
+
{ key: "contacts", label: "Contacts", path: "company.enrichmentData.approvedLeadListExport.contacts", renderType: "json" },
|
|
106
|
+
{ key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
|
|
107
|
+
{ key: "approval", label: "Approval", path: "company.enrichmentData.approvedLeadListExport.approvalStatus", renderType: "badge" }
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
};
|
|
26
111
|
z.object({
|
|
27
112
|
id: ModelIdSchema,
|
|
28
113
|
label: z.string(),
|
|
@@ -54,6 +139,12 @@ var CAPABILITY_REGISTRY = [
|
|
|
54
139
|
description: "Check email deliverability before outreach.",
|
|
55
140
|
resourceId: "lgn-05-email-verification-workflow"
|
|
56
141
|
},
|
|
142
|
+
{
|
|
143
|
+
id: "lead-gen.company.apify-crawl",
|
|
144
|
+
label: "Crawl websites",
|
|
145
|
+
description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis.",
|
|
146
|
+
resourceId: "lgn-02a-apify-website-crawl-workflow"
|
|
147
|
+
},
|
|
57
148
|
{
|
|
58
149
|
id: "lead-gen.company.website-extract",
|
|
59
150
|
label: "Extract website signals",
|
|
@@ -200,7 +291,45 @@ var PROSPECTING_STEPS = {
|
|
|
200
291
|
dependencyMode: "per-record-eligibility",
|
|
201
292
|
capabilityKey: "lead-gen.company.apollo-import",
|
|
202
293
|
defaultBatchSize: 250,
|
|
203
|
-
maxBatchSize: 1e3
|
|
294
|
+
maxBatchSize: 1e3,
|
|
295
|
+
recordColumns: DTC_RECORD_COLUMNS.populated,
|
|
296
|
+
credentialRequirements: [
|
|
297
|
+
{
|
|
298
|
+
key: "apollo",
|
|
299
|
+
provider: "apollo",
|
|
300
|
+
credentialType: "api-key-secret",
|
|
301
|
+
label: "Apollo API key",
|
|
302
|
+
required: true,
|
|
303
|
+
selectionMode: "single",
|
|
304
|
+
inputPath: "credential"
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
apifyCrawl: {
|
|
309
|
+
id: "apify-crawl",
|
|
310
|
+
label: "Websites crawled",
|
|
311
|
+
description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis. Overwrites the synthetic seed Apollo Import wrote with real page content.",
|
|
312
|
+
primaryEntity: "company",
|
|
313
|
+
outputs: ["company"],
|
|
314
|
+
stageKey: "crawled",
|
|
315
|
+
dependsOn: ["import-apollo-search"],
|
|
316
|
+
dependencyMode: "per-record-eligibility",
|
|
317
|
+
capabilityKey: "lead-gen.company.apify-crawl",
|
|
318
|
+
defaultBatchSize: 50,
|
|
319
|
+
maxBatchSize: 100,
|
|
320
|
+
recordColumns: DTC_RECORD_COLUMNS.crawled,
|
|
321
|
+
credentialRequirements: [
|
|
322
|
+
{
|
|
323
|
+
key: "apify",
|
|
324
|
+
provider: "apify",
|
|
325
|
+
credentialType: "api-key-secret",
|
|
326
|
+
label: "Apify API token",
|
|
327
|
+
required: true,
|
|
328
|
+
selectionMode: "single",
|
|
329
|
+
inputPath: "credential",
|
|
330
|
+
verifyOnRun: true
|
|
331
|
+
}
|
|
332
|
+
]
|
|
204
333
|
},
|
|
205
334
|
analyzeWebsites: {
|
|
206
335
|
id: "analyze-websites",
|
|
@@ -209,11 +338,12 @@ var PROSPECTING_STEPS = {
|
|
|
209
338
|
primaryEntity: "company",
|
|
210
339
|
outputs: ["company"],
|
|
211
340
|
stageKey: "extracted",
|
|
212
|
-
dependsOn: ["
|
|
341
|
+
dependsOn: ["apify-crawl"],
|
|
213
342
|
dependencyMode: "per-record-eligibility",
|
|
214
343
|
capabilityKey: "lead-gen.company.website-extract",
|
|
215
344
|
defaultBatchSize: 50,
|
|
216
|
-
maxBatchSize: 100
|
|
345
|
+
maxBatchSize: 100,
|
|
346
|
+
recordColumns: DTC_RECORD_COLUMNS.extracted
|
|
217
347
|
},
|
|
218
348
|
scoreDtcFit: {
|
|
219
349
|
id: "score-dtc-fit",
|
|
@@ -226,7 +356,8 @@ var PROSPECTING_STEPS = {
|
|
|
226
356
|
dependencyMode: "per-record-eligibility",
|
|
227
357
|
capabilityKey: "lead-gen.company.dtc-subscription-qualify",
|
|
228
358
|
defaultBatchSize: 100,
|
|
229
|
-
maxBatchSize: 250
|
|
359
|
+
maxBatchSize: 250,
|
|
360
|
+
recordColumns: DTC_RECORD_COLUMNS.qualified
|
|
230
361
|
},
|
|
231
362
|
enrichDecisionMakers: {
|
|
232
363
|
id: "enrich-decision-makers",
|
|
@@ -235,37 +366,52 @@ var PROSPECTING_STEPS = {
|
|
|
235
366
|
primaryEntity: "company",
|
|
236
367
|
outputs: ["contact"],
|
|
237
368
|
stageKey: "decision-makers-enriched",
|
|
369
|
+
recordEntity: "contact",
|
|
238
370
|
dependsOn: ["score-dtc-fit"],
|
|
239
371
|
dependencyMode: "per-record-eligibility",
|
|
240
372
|
capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
|
|
241
373
|
defaultBatchSize: 100,
|
|
242
|
-
maxBatchSize: 250
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
maxBatchSize: 500
|
|
374
|
+
maxBatchSize: 250,
|
|
375
|
+
recordColumns: DTC_RECORD_COLUMNS.decisionMakers,
|
|
376
|
+
credentialRequirements: [
|
|
377
|
+
{
|
|
378
|
+
key: "apollo",
|
|
379
|
+
provider: "apollo",
|
|
380
|
+
credentialType: "api-key-secret",
|
|
381
|
+
label: "Apollo API key",
|
|
382
|
+
required: true,
|
|
383
|
+
selectionMode: "single",
|
|
384
|
+
inputPath: "credential"
|
|
385
|
+
}
|
|
386
|
+
]
|
|
256
387
|
},
|
|
257
388
|
reviewAndExport: {
|
|
258
389
|
id: "review-and-export",
|
|
259
390
|
label: "Reviewed and exported",
|
|
260
|
-
description: "Operator QC approves or rejects
|
|
391
|
+
description: "Operator QC approves or rejects qualified companies, then approved records are exported as a lead list with unverified emails.",
|
|
261
392
|
primaryEntity: "company",
|
|
262
393
|
outputs: ["export"],
|
|
263
394
|
stageKey: "uploaded",
|
|
264
|
-
|
|
395
|
+
recordsStageKey: "uploaded",
|
|
396
|
+
recordSourceStageKey: "qualified",
|
|
397
|
+
dependsOn: ["enrich-decision-makers"],
|
|
265
398
|
dependencyMode: "per-record-eligibility",
|
|
266
399
|
capabilityKey: "lead-gen.export.list",
|
|
267
400
|
defaultBatchSize: 100,
|
|
268
|
-
maxBatchSize: 250
|
|
401
|
+
maxBatchSize: 250,
|
|
402
|
+
recordColumns: DTC_RECORD_COLUMNS.uploaded,
|
|
403
|
+
credentialRequirements: [
|
|
404
|
+
{
|
|
405
|
+
key: "clickup",
|
|
406
|
+
provider: "clickup",
|
|
407
|
+
credentialType: "api-key-secret",
|
|
408
|
+
label: "ClickUp API token",
|
|
409
|
+
required: true,
|
|
410
|
+
selectionMode: "single",
|
|
411
|
+
inputPath: "clickupCredential",
|
|
412
|
+
verifyOnRun: true
|
|
413
|
+
}
|
|
414
|
+
]
|
|
269
415
|
}
|
|
270
416
|
}
|
|
271
417
|
};
|
|
@@ -287,7 +433,7 @@ function toProspectingLifecycleStage(stage) {
|
|
|
287
433
|
};
|
|
288
434
|
}
|
|
289
435
|
function leadGenStagesForEntity(entity) {
|
|
290
|
-
return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
|
|
436
|
+
return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity || stage.additionalEntities?.includes(entity)).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
|
|
291
437
|
}
|
|
292
438
|
var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
|
|
293
439
|
listEntityId: "leadgen.list",
|
|
@@ -317,10 +463,10 @@ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
|
|
|
317
463
|
description: "Prospecting pipeline for DTC subscription or subscription-ready brands where Apollo is the source and contact-enrichment layer, Elevasis handles company research and fit scoring, and approved leads export as an approved lead list.",
|
|
318
464
|
steps: [
|
|
319
465
|
PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
|
|
466
|
+
PROSPECTING_STEPS.dtcApolloClickup.apifyCrawl,
|
|
320
467
|
PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
|
|
321
468
|
PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
|
|
322
469
|
PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
|
|
323
|
-
PROSPECTING_STEPS.dtcApolloClickup.verifyEmails,
|
|
324
470
|
PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
|
|
325
471
|
]
|
|
326
472
|
}
|
|
@@ -4,14 +4,14 @@ import { SubshellNavItem } from './chunk-X4WBGKJQ.js';
|
|
|
4
4
|
import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
|
|
5
5
|
import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
6
6
|
import { CustomModal } from './chunk-KVJ3LFH2.js';
|
|
7
|
-
import { useDealTasksDue, useDealsLookup, useCreateDealTask, useDealsSummary, useDeleteDeal, usePaginationState, useDeals, useTableSort, sortData, useTableSelection, useDealDetail, useCompany, dealKeys, useExecuteAction } from './chunk-
|
|
8
|
-
import { showApiErrorNotification, showSuccessNotification } from './chunk-
|
|
7
|
+
import { useDealTasksDue, useDealsLookup, useCreateDealTask, useDealsSummary, useDeleteDeal, usePaginationState, useDeals, useTableSort, sortData, useTableSelection, useDealDetail, useCompany, dealKeys, useExecuteAction } from './chunk-6EFVZV6X.js';
|
|
8
|
+
import { showApiErrorNotification, showSuccessNotification } from './chunk-T2PAD63Y.js';
|
|
9
9
|
import { CenteredErrorState, CardHeader, StatCard, PageTitleCaption, EmptyState, ActivityTimeline } from './chunk-6WXDE5LZ.js';
|
|
10
|
-
import { CRM_PIPELINE_DEFINITION, useCrmActions, DEFAULT_CRM_PRIORITY_RULE_CONFIG, deriveActions, CRM_PRIORITY_BUCKETS } from './chunk-
|
|
10
|
+
import { CRM_PIPELINE_DEFINITION, useCrmActions, DEFAULT_CRM_PRIORITY_RULE_CONFIG, deriveActions, CRM_PRIORITY_BUCKETS } from './chunk-AKOD52HS.js';
|
|
11
11
|
import { SubshellContentContainer } from './chunk-TKAYX2SP.js';
|
|
12
12
|
import { useRouterContext } from './chunk-Q7DJKLEN.js';
|
|
13
13
|
import { PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-HXZQWMKE.js';
|
|
14
|
-
import { useElevasisServices } from './chunk-
|
|
14
|
+
import { useElevasisServices } from './chunk-KJ3QUBNU.js';
|
|
15
15
|
import { Box, Stack, Group, Text, Badge, Center, Loader, UnstyledButton, Button, Modal, Title, Select, TextInput, Textarea, Paper, Alert, Table, SimpleGrid, Tabs, Checkbox, Tooltip, Pagination, Code, Card, Switch, NumberInput, ColorSwatch, Popover, ActionIcon, CopyButton, Divider } from '@mantine/core';
|
|
16
16
|
import { IconLayoutGrid, IconColumns, IconFileInvoice, IconAddressBook, IconTrophy, IconClockExclamation, IconUser, IconPlus, IconChecklist, IconHistory, IconAlertCircle, IconCurrencyDollar, IconChartBar, IconBriefcase, IconSearch, IconTargetArrow, IconAlertTriangle, IconMessages, IconArrowLeft, IconFileText, IconInbox, IconBolt, IconBuilding, IconSettings, IconRestore, IconInfoCircle, IconMailForward, IconCheckbox, IconCalendar, IconMail, IconPhone, IconArrowRight, IconNote, IconCheck, IconCopy } from '@tabler/icons-react';
|
|
17
17
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -478,10 +478,10 @@ function useCrmQuickMetrics() {
|
|
|
478
478
|
return { data, isLoading, error };
|
|
479
479
|
}
|
|
480
480
|
function useRecentCrmActivity(opts) {
|
|
481
|
-
const { apiRequest, isReady,
|
|
481
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
482
482
|
const limit = opts?.limit ?? 20;
|
|
483
483
|
const query = useQuery({
|
|
484
|
-
queryKey: ["recent-crm-activity",
|
|
484
|
+
queryKey: ["recent-crm-activity", workOSOrganizationId, limit],
|
|
485
485
|
queryFn: () => apiRequest(`/crm/recent-activity?limit=${limit}`),
|
|
486
486
|
enabled: isReady
|
|
487
487
|
});
|
|
@@ -1711,15 +1711,15 @@ var crmPrioritySettingsKeys = {
|
|
|
1711
1711
|
detail: (organizationId) => [...crmPrioritySettingsKeys.all, organizationId]
|
|
1712
1712
|
};
|
|
1713
1713
|
function useCrmPrioritySettings() {
|
|
1714
|
-
const { apiRequest, isReady,
|
|
1714
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
1715
1715
|
return useQuery({
|
|
1716
|
-
queryKey: crmPrioritySettingsKeys.detail(
|
|
1716
|
+
queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId),
|
|
1717
1717
|
queryFn: () => apiRequest("/crm/settings/priority"),
|
|
1718
1718
|
enabled: isReady
|
|
1719
1719
|
});
|
|
1720
1720
|
}
|
|
1721
1721
|
function useUpdateCrmPrioritySettings() {
|
|
1722
|
-
const { apiRequest,
|
|
1722
|
+
const { apiRequest, workOSOrganizationId } = useElevasisServices();
|
|
1723
1723
|
const queryClient = useQueryClient();
|
|
1724
1724
|
return useMutation({
|
|
1725
1725
|
mutationFn: (override) => apiRequest("/crm/settings/priority", {
|
|
@@ -1727,7 +1727,7 @@ function useUpdateCrmPrioritySettings() {
|
|
|
1727
1727
|
body: JSON.stringify(override)
|
|
1728
1728
|
}),
|
|
1729
1729
|
onSuccess: () => {
|
|
1730
|
-
queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(
|
|
1730
|
+
queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId) });
|
|
1731
1731
|
queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
|
|
1732
1732
|
queryClient.invalidateQueries({ queryKey: dealKeys.details() });
|
|
1733
1733
|
showSuccessNotification("CRM priority settings saved.");
|
|
@@ -1738,14 +1738,14 @@ function useUpdateCrmPrioritySettings() {
|
|
|
1738
1738
|
});
|
|
1739
1739
|
}
|
|
1740
1740
|
function useResetCrmPrioritySettings() {
|
|
1741
|
-
const { apiRequest,
|
|
1741
|
+
const { apiRequest, workOSOrganizationId } = useElevasisServices();
|
|
1742
1742
|
const queryClient = useQueryClient();
|
|
1743
1743
|
return useMutation({
|
|
1744
1744
|
mutationFn: () => apiRequest("/crm/settings/priority", {
|
|
1745
1745
|
method: "DELETE"
|
|
1746
1746
|
}),
|
|
1747
1747
|
onSuccess: () => {
|
|
1748
|
-
queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(
|
|
1748
|
+
queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId) });
|
|
1749
1749
|
queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
|
|
1750
1750
|
queryClient.invalidateQueries({ queryKey: dealKeys.details() });
|
|
1751
1751
|
showSuccessNotification("CRM priority settings reset to Org-OS defaults.");
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { CostTrendChart, ActivityTrendChart } from './chunk-
|
|
1
|
+
import { CostTrendChart, ActivityTrendChart } from './chunk-2DIYILF7.js';
|
|
2
2
|
import { CyberAreaChart } from './chunk-CW3UNAF2.js';
|
|
3
3
|
import { AppShellLoader } from './chunk-RYTEQBAO.js';
|
|
4
4
|
import { FilterBar } from './chunk-PDHTXPSF.js';
|
|
5
5
|
import { CustomModal } from './chunk-KVJ3LFH2.js';
|
|
6
6
|
import { formatDuration } from './chunk-E4WQGJNS.js';
|
|
7
|
-
import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead
|
|
7
|
+
import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead } from './chunk-6EFVZV6X.js';
|
|
8
8
|
import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-6WXDE5LZ.js';
|
|
9
9
|
import { useRouterContext } from './chunk-Q7DJKLEN.js';
|
|
10
10
|
import { formatBucketTime, PAGE_SIZE_DEFAULT, getTimeRangeDates } from './chunk-HXZQWMKE.js';
|
|
11
11
|
import { useState, useMemo, useCallback } from 'react';
|
|
12
12
|
import { Table, Text, Badge, Tooltip, Card, Group, Select, SegmentedControl, Button, TextInput, Stack, Paper, Center, Loader, ActionIcon, NumberFormatter, Box, Alert, Switch, Pagination, UnstyledButton, Title, Divider, Code, CopyButton, Accordion } from '@mantine/core';
|
|
13
|
-
import { IconActivity, IconFilterOff, IconCircleCheck, IconThumbDown, IconThumbUp, IconClock, IconCircleX, IconSearch, IconArrowUpRight, IconAlertTriangle, IconAlertCircle, IconExternalLink, IconChartPie, IconHeartbeat, IconDownload, IconCpu, IconTrendingUp, IconChartBar, IconCash, IconInfoCircle, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconCheck, IconCopy, IconCircleDashed,
|
|
13
|
+
import { IconActivity, IconFilterOff, IconCircleCheck, IconThumbDown, IconThumbUp, IconClock, IconCircleX, IconSearch, IconArrowUpRight, IconAlertTriangle, IconAlertCircle, IconExternalLink, IconChartPie, IconHeartbeat, IconDownload, IconCpu, IconTrendingUp, IconChartBar, IconCash, IconInfoCircle, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconCheck, IconCopy, IconCircleDashed, IconArrowUp, IconArrowDown, IconFileOff, IconRobot, IconKey, IconUser } from '@tabler/icons-react';
|
|
14
14
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
15
15
|
import { formatDistanceToNow } from 'date-fns';
|
|
16
16
|
|
|
@@ -1760,33 +1760,12 @@ function NotificationCenter({ pageSize = 20 }) {
|
|
|
1760
1760
|
const { data, isLoading } = useNotifications({ limit: pageSize, offset });
|
|
1761
1761
|
const notifications = data?.notifications ?? [];
|
|
1762
1762
|
const markAllAsRead = useMarkAllAsRead();
|
|
1763
|
-
const testNotification = useTestNotification();
|
|
1764
1763
|
const hasUnread = notifications.some((n) => !n.read);
|
|
1765
1764
|
const handleMarkAllAsRead = async () => {
|
|
1766
1765
|
await markAllAsRead.mutateAsync();
|
|
1767
1766
|
};
|
|
1768
|
-
const handleCreateTest = async () => {
|
|
1769
|
-
await testNotification.mutateAsync();
|
|
1770
|
-
};
|
|
1771
|
-
const isDevelopment = process.env.NODE_ENV === "development";
|
|
1772
1767
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1773
|
-
/* @__PURE__ */
|
|
1774
|
-
/* @__PURE__ */ jsx(Title, { order: 1, children: "Notifications" }),
|
|
1775
|
-
/* @__PURE__ */ jsxs(Group, { gap: "sm", children: [
|
|
1776
|
-
isDevelopment && /* @__PURE__ */ jsx(
|
|
1777
|
-
Button,
|
|
1778
|
-
{
|
|
1779
|
-
variant: "light",
|
|
1780
|
-
size: "sm",
|
|
1781
|
-
leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 16 }),
|
|
1782
|
-
onClick: handleCreateTest,
|
|
1783
|
-
loading: testNotification.isPending,
|
|
1784
|
-
children: "Create Test Notification"
|
|
1785
|
-
}
|
|
1786
|
-
),
|
|
1787
|
-
hasUnread && /* @__PURE__ */ jsx(Button, { variant: "light", size: "sm", onClick: handleMarkAllAsRead, loading: markAllAsRead.isPending, children: "Mark all as read" })
|
|
1788
|
-
] })
|
|
1789
|
-
] }),
|
|
1768
|
+
hasUnread && /* @__PURE__ */ jsx(Group, { justify: "flex-end", children: /* @__PURE__ */ jsx(Button, { variant: "light", size: "sm", onClick: handleMarkAllAsRead, loading: markAllAsRead.isPending, children: "Mark all as read" }) }),
|
|
1790
1769
|
/* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsx(NotificationList, { notifications, isLoading }) }),
|
|
1791
1770
|
totalPages(data?.total ?? 0) > 1 && /* @__PURE__ */ jsx(Group, { justify: "flex-start", children: /* @__PURE__ */ jsx(Pagination, { value: page, onChange: setPage, total: totalPages(data?.total ?? 0), size: "sm", boundaries: 1 }) })
|
|
1792
1771
|
] });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-
|
|
2
|
-
import { PRESETS, getPreset, generateShades } from './chunk-
|
|
1
|
+
import { mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-T5Z7G2J2.js';
|
|
2
|
+
import { PRESETS, getPreset, generateShades } from './chunk-4VQ2PXMI.js';
|
|
3
3
|
import { AppBackground } from './chunk-WLOQ4IBG.js';
|
|
4
|
-
import { ElevasisCoreProvider } from './chunk-
|
|
4
|
+
import { ElevasisCoreProvider } from './chunk-AKOD52HS.js';
|
|
5
5
|
import { ElevasisLoader } from './chunk-SZHARWKU.js';
|
|
6
6
|
import { AppearanceProvider } from './chunk-E565XMTQ.js';
|
|
7
7
|
import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-HXZQWMKE.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-HXZQWMKE.js';
|
|
2
|
-
import { useElevasisServices } from './chunk-
|
|
2
|
+
import { useElevasisServices } from './chunk-KJ3QUBNU.js';
|
|
3
3
|
import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
|
|
4
4
|
import { notifications } from '@mantine/notifications';
|
|
5
5
|
|
|
@@ -60,9 +60,9 @@ var milestoneKeys = {
|
|
|
60
60
|
detail: (id) => [...milestoneKeys.all, "detail", id]
|
|
61
61
|
};
|
|
62
62
|
function useMilestones(filters = {}) {
|
|
63
|
-
const { apiRequest, isReady,
|
|
63
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
64
64
|
return useQuery({
|
|
65
|
-
queryKey: milestoneKeys.list(
|
|
65
|
+
queryKey: milestoneKeys.list(workOSOrganizationId, filters),
|
|
66
66
|
queryFn: async () => {
|
|
67
67
|
const res = await apiRequest(`/projects/${filters.projectId}/milestones`);
|
|
68
68
|
return res.milestones;
|
|
@@ -141,9 +141,9 @@ var taskKeys = {
|
|
|
141
141
|
detail: (id) => [...taskKeys.all, "detail", id]
|
|
142
142
|
};
|
|
143
143
|
function useTasks(filters = {}) {
|
|
144
|
-
const { apiRequest, isReady,
|
|
144
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
145
145
|
return useQuery({
|
|
146
|
-
queryKey: taskKeys.list(
|
|
146
|
+
queryKey: taskKeys.list(workOSOrganizationId, filters),
|
|
147
147
|
queryFn: async () => {
|
|
148
148
|
const params = new URLSearchParams();
|
|
149
149
|
if (filters.status) params.set("status", filters.status);
|
|
@@ -226,9 +226,9 @@ var noteKeys = {
|
|
|
226
226
|
detail: (id) => [...noteKeys.all, "detail", id]
|
|
227
227
|
};
|
|
228
228
|
function useProjectNotes(filters = {}) {
|
|
229
|
-
const { apiRequest, isReady,
|
|
229
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
230
230
|
return useQuery({
|
|
231
|
-
queryKey: noteKeys.list(
|
|
231
|
+
queryKey: noteKeys.list(workOSOrganizationId, filters),
|
|
232
232
|
queryFn: async () => {
|
|
233
233
|
const res = await apiRequest(`/projects/${filters.projectId}/notes`);
|
|
234
234
|
return res.notes;
|
|
@@ -269,9 +269,9 @@ var projectKeys = {
|
|
|
269
269
|
tasks: (id) => [...projectKeys.all, id, "tasks"]
|
|
270
270
|
};
|
|
271
271
|
function useProjects(filters = {}) {
|
|
272
|
-
const { apiRequest, isReady,
|
|
272
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
273
273
|
return useQuery({
|
|
274
|
-
queryKey: projectKeys.list(
|
|
274
|
+
queryKey: projectKeys.list(workOSOrganizationId, filters),
|
|
275
275
|
queryFn: async () => {
|
|
276
276
|
const params = new URLSearchParams();
|
|
277
277
|
if (filters.kind) params.set("kind", filters.kind);
|
|
@@ -284,9 +284,9 @@ function useProjects(filters = {}) {
|
|
|
284
284
|
});
|
|
285
285
|
}
|
|
286
286
|
function useProject(id) {
|
|
287
|
-
const { apiRequest, isReady,
|
|
287
|
+
const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
|
|
288
288
|
return useQuery({
|
|
289
|
-
queryKey: [...projectKeys.detail(id),
|
|
289
|
+
queryKey: [...projectKeys.detail(id), workOSOrganizationId],
|
|
290
290
|
queryFn: async () => {
|
|
291
291
|
try {
|
|
292
292
|
const res = await apiRequest(`/projects/${id}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PRESETS, getPreset, generateShades } from './chunk-
|
|
1
|
+
import { PRESETS, getPreset, generateShades } from './chunk-4VQ2PXMI.js';
|
|
2
2
|
import { Tooltip, Tree, Text, TagsInput, Tabs, Table, Stack, SimpleGrid, Select, Combobox, SegmentedControl, ScrollArea, Paper, Popover, Notification, MultiSelect, Modal, Menu, Input, HoverCard, Group, Grid, Flex, Drawer, Code, Divider, Card, Button, Accordion, createTheme } from '@mantine/core';
|
|
3
3
|
import { createContext, useContext } from 'react';
|
|
4
4
|
|
|
@@ -54,6 +54,10 @@ var FRAMEWORK_BRIDGE = {
|
|
|
54
54
|
"--input-value-background": "var(--surface-primary-strong)",
|
|
55
55
|
"--input-value-border": "1px solid var(--border-primary-muted)"
|
|
56
56
|
};
|
|
57
|
+
var RIGHT_PANEL_BACKGROUND = {
|
|
58
|
+
light: "color-mix(in srgb, var(--color-elevated) 88%, var(--color-background))",
|
|
59
|
+
dark: "color-mix(in srgb, color-mix(in srgb, var(--color-elevated) 82%, var(--glass-background)) 78%, rgba(8, 9, 11, 0.96))"
|
|
60
|
+
};
|
|
57
61
|
function shadesToVars(shades) {
|
|
58
62
|
const vars = {};
|
|
59
63
|
for (let i = 0; i < shades.length; i++) {
|
|
@@ -91,8 +95,20 @@ function createCssVariablesResolver(tokens, preset, presetsMap) {
|
|
|
91
95
|
const darkShades = shadesToVars(generateShades(darkPrimary));
|
|
92
96
|
return () => ({
|
|
93
97
|
variables: { ...FRAMEWORK_BRIDGE },
|
|
94
|
-
light: {
|
|
95
|
-
|
|
98
|
+
light: {
|
|
99
|
+
...lightShades,
|
|
100
|
+
...lightDefaults,
|
|
101
|
+
...flat,
|
|
102
|
+
...light,
|
|
103
|
+
"--right-panel-background": RIGHT_PANEL_BACKGROUND.light
|
|
104
|
+
},
|
|
105
|
+
dark: {
|
|
106
|
+
...darkShades,
|
|
107
|
+
...darkDefaults,
|
|
108
|
+
...flat,
|
|
109
|
+
...dark,
|
|
110
|
+
"--right-panel-background": RIGHT_PANEL_BACKGROUND.dark
|
|
111
|
+
}
|
|
96
112
|
});
|
|
97
113
|
}
|
|
98
114
|
var DEFAULT_SIZE = "sm";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useInitialization } from './chunk-
|
|
1
|
+
import { useInitialization } from './chunk-533DUEQY.js';
|
|
2
2
|
import { useAuthContext } from './chunk-BRJ3QZ4E.js';
|
|
3
3
|
import { useRef, useCallback, useEffect } from 'react';
|
|
4
4
|
import { useQueryClient } from '@tanstack/react-query';
|
|
@@ -173,13 +173,14 @@ interface ChatInterfaceProps {
|
|
|
173
173
|
emptyStateText?: string;
|
|
174
174
|
emptyStateSubtext?: string;
|
|
175
175
|
placeholder?: string;
|
|
176
|
+
messageAreaVariant?: 'grid' | 'plain';
|
|
176
177
|
}
|
|
177
178
|
/**
|
|
178
179
|
* Shared chat interface component
|
|
179
180
|
* Used across ai studio sessions and production agent chat
|
|
180
181
|
* Handles message display, auto-scroll, and input area
|
|
181
182
|
*/
|
|
182
|
-
declare function ChatInterface({ messages, input, onInputChange, onSendMessage, isProcessing, isConnected, error, onClearError, emptyStateText, emptyStateSubtext, placeholder }: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
|
|
183
|
+
declare function ChatInterface({ messages, input, onInputChange, onSendMessage, isProcessing, isConnected, error, onClearError, emptyStateText, emptyStateSubtext, placeholder, messageAreaVariant }: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
|
|
183
184
|
|
|
184
185
|
interface MessageBubbleProps {
|
|
185
186
|
message: ChatMessage;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { ChatHeader, ChatInputArea, ChatInterface, ChatSidebar, MessageBubble, ProcessingIndicator } from '../../chunk-
|
|
1
|
+
export { ChatHeader, ChatInputArea, ChatInterface, ChatSidebar, MessageBubble, ProcessingIndicator } from '../../chunk-CXY7FMUM.js';
|
|
2
2
|
import '../../chunk-3KMDHCAR.js';
|
|
3
3
|
import '../../chunk-I2KLQ2HA.js';
|