@elevasis/ui 2.73.0 → 2.74.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/api/index.js +3 -3
- package/dist/app/index.d.ts +58 -0
- package/dist/app/index.js +9 -10
- package/dist/auth/index.js +5 -6
- package/dist/charts/index.js +5 -6
- package/dist/chunk-2GIJBHZT.js +60 -0
- package/dist/{chunk-ETN3TTRT.js → chunk-2MRRDF32.js} +115 -8
- package/dist/chunk-3LOKYZJC.js +231 -0
- package/dist/chunk-3QHX4ZKV.js +224 -0
- package/dist/chunk-43LC6XAX.js +69 -0
- package/dist/chunk-4M2BSHVT.js +116 -0
- package/dist/{chunk-SWKAH2YM.js → chunk-4MXNHJTA.js} +63 -30
- package/dist/{chunk-LZT2H2MA.js → chunk-5A6KCFS5.js} +36 -43
- package/dist/{chunk-OCVSPAKM.js → chunk-6JN2TLV2.js} +1150 -4346
- package/dist/{chunk-JYBJMVNY.js → chunk-7ARBBELS.js} +1 -1
- package/dist/{chunk-AJOVWB47.js → chunk-7RJ7P6S6.js} +6 -3
- package/dist/chunk-ARAFQBNI.js +515 -0
- package/dist/{chunk-Z4ICFQXG.js → chunk-BA3AZJUR.js} +1 -1
- package/dist/chunk-BRTGCFBH.js +305 -0
- package/dist/{chunk-IGBPWD6S.js → chunk-CQPULKKL.js} +5 -3
- package/dist/chunk-CRA7WQZH.js +49 -0
- package/dist/{chunk-U2H3TIHD.js → chunk-DCQKTDIG.js} +2 -52
- package/dist/{chunk-3TS5U5BL.js → chunk-E6YGA5WH.js} +1 -1
- package/dist/chunk-FA7LMNQO.js +439 -0
- package/dist/chunk-FZSG6M6W.js +45 -0
- package/dist/chunk-GDOR57D7.js +165 -0
- package/dist/{chunk-CJ2232PQ.js → chunk-GO4XJ5D4.js} +1 -1
- package/dist/chunk-GPQQGQGT.js +645 -0
- package/dist/chunk-HYQOGRWG.js +54 -0
- package/dist/{chunk-LEPYXLJ2.js → chunk-LN4UW6S4.js} +1 -1
- package/dist/chunk-N6K2Q5BM.js +393 -0
- package/dist/{chunk-NHNTX6ZL.js → chunk-O32UQ26A.js} +3 -2
- package/dist/{chunk-M7WWRZ5Z.js → chunk-QFGNRKIE.js} +1 -78
- package/dist/{chunk-IBCEAVB2.js → chunk-R5UGIFYU.js} +41 -5
- package/dist/{chunk-5B2ZFO44.js → chunk-RFNJ2PTO.js} +1 -1
- package/dist/chunk-VM2OWOXL.js +24 -0
- package/dist/{chunk-ZDKPHFTH.js → chunk-W2QRBQQA.js} +5 -3
- package/dist/chunk-WDBNW44Z.js +49 -0
- package/dist/{chunk-4CW2C5BD.js → chunk-WZU3MCKI.js} +1 -1
- package/dist/chunk-YQQ5GRUR.js +21 -0
- package/dist/{chunk-PQ4B62HH.js → chunk-ZFA56VSR.js} +2 -2
- package/dist/{chunk-NI37YNRP.js → chunk-ZWI62BQ6.js} +7 -4
- package/dist/chunk-ZYNVCWDZ.js +286 -0
- package/dist/components/index.d.ts +187 -2
- package/dist/components/index.js +44 -34
- package/dist/components/navigation/index.js +6 -7
- package/dist/features/auth/index.d.ts +78 -2
- package/dist/features/auth/index.js +18 -9
- package/dist/features/clients/index.js +7 -7
- package/dist/features/content/index.d.ts +226 -5
- package/dist/features/content/index.js +263 -15
- package/dist/features/crm/index.d.ts +58 -0
- package/dist/features/crm/index.js +10 -8
- package/dist/features/dashboard/index.js +9 -8
- package/dist/features/delivery/index.d.ts +58 -0
- package/dist/features/delivery/index.js +23 -7
- package/dist/features/knowledge/index.js +5 -6
- package/dist/features/lead-gen/index.d.ts +9 -15
- package/dist/features/lead-gen/index.js +12 -8
- package/dist/features/monitoring/index.js +11 -9
- package/dist/features/monitoring/requests/index.js +8 -7
- package/dist/features/operations/index.js +15 -11
- package/dist/features/public-agent-chat/index.js +3 -1
- package/dist/features/settings/index.d.ts +58 -0
- package/dist/features/settings/index.js +9 -8
- package/dist/hooks/access/index.js +5 -6
- package/dist/hooks/delivery/index.d.ts +58 -0
- package/dist/hooks/delivery/index.js +3 -2
- package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +1 -1
- package/dist/hooks/published.d.ts +175 -3
- package/dist/hooks/published.js +22 -6
- package/dist/initialization/index.d.ts +58 -0
- package/dist/knowledge/index.js +167 -11
- package/dist/{knowledge-search-index-RZLIVWPJ.js → knowledge-search-index-6GQK55IQ.js} +1 -1
- package/dist/layout/index.js +8 -9
- package/dist/profile/index.d.ts +58 -0
- package/dist/provider/index.d.ts +77 -1
- package/dist/provider/index.js +5 -6
- package/dist/provider/published.d.ts +105 -1
- package/dist/provider/published.js +5 -6
- package/dist/test-utils/index.d.ts +16 -5
- package/dist/test-utils/index.js +17 -18
- package/dist/types/index.d.ts +59 -1
- package/dist/utils/index.d.ts +83 -3
- package/dist/utils/index.js +1 -1
- package/package.json +6 -5
- package/dist/chunk-6M6OLGQY.js +0 -36
- package/dist/chunk-MKH2KOAO.js +0 -39
- package/dist/hooks/index.css +0 -659
- package/dist/hooks/index.d.ts +0 -14073
- package/dist/hooks/index.js +0 -27
- package/dist/supabase/index.d.ts +0 -7118
- package/dist/supabase/index.js +0 -3
- package/dist/typeform/index.d.ts +0 -462
- package/dist/typeform/index.js +0 -2051
- package/dist/typeform/schemas.d.ts +0 -67
- package/dist/typeform/schemas.js +0 -2
package/dist/components/index.js
CHANGED
|
@@ -1,46 +1,63 @@
|
|
|
1
|
-
export { AppErrorBoundary, CrashErrorFallback, ErrorReportCard, buildErrorReport } from '../chunk-
|
|
2
|
-
import { useBreadcrumbs } from '../chunk-
|
|
1
|
+
export { AppErrorBoundary, CrashErrorFallback, ErrorReportCard, buildErrorReport } from '../chunk-LN4UW6S4.js';
|
|
2
|
+
import { useBreadcrumbs } from '../chunk-7ARBBELS.js';
|
|
3
3
|
import '../chunk-AH52XQB7.js';
|
|
4
|
-
import { showAuthError } from '../chunk-
|
|
5
|
-
export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, ProvisioningStateBadge, WebhookUrlDisplayModal, showAuthError } from '../chunk-
|
|
4
|
+
import { showAuthError } from '../chunk-4MXNHJTA.js';
|
|
5
|
+
export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, ProvisioningStateBadge, WebhookUrlDisplayModal, showAuthError } from '../chunk-4MXNHJTA.js';
|
|
6
6
|
import '../chunk-ZFISGKYW.js';
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import { setDealReferrer, compareDealsByPriority } from '../chunk-
|
|
9
|
-
export { ActivityFeedWidget, CompanyDetailPage, ContactDetailPage, CrmOverview, CrmSidebar, CrmSidebarTop, DealDetailPage, DealsListPage, MetricsStrip, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../chunk-
|
|
10
|
-
export { AllTasksPage, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage } from '../chunk-
|
|
11
|
-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
|
|
7
|
+
import '../chunk-GO4XJ5D4.js';
|
|
8
|
+
import { setDealReferrer, compareDealsByPriority } from '../chunk-ZWI62BQ6.js';
|
|
9
|
+
export { ActivityFeedWidget, CompanyDetailPage, ContactDetailPage, CrmOverview, CrmSidebar, CrmSidebarTop, DealDetailPage, DealsListPage, MetricsStrip, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../chunk-ZWI62BQ6.js';
|
|
10
|
+
export { AllTasksPage, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage } from '../chunk-7RJ7P6S6.js';
|
|
11
|
+
import { useCreateOrgRole, useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments, useTransitionItem } from '../chunk-GPQQGQGT.js';
|
|
12
|
+
import '../chunk-DCQKTDIG.js';
|
|
13
|
+
import { usePermissionCatalog } from '../chunk-ARAFQBNI.js';
|
|
14
|
+
import '../chunk-FZSG6M6W.js';
|
|
15
|
+
export { LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarTop, StepConfigForm, TabSection, getEnrichmentColor, getStatusColor, useDeleteLists } from '../chunk-5A6KCFS5.js';
|
|
16
|
+
import '../chunk-ZFA56VSR.js';
|
|
17
|
+
import '../chunk-GDOR57D7.js';
|
|
18
|
+
import '../chunk-3LOKYZJC.js';
|
|
19
|
+
import '../chunk-ZYNVCWDZ.js';
|
|
20
|
+
export { ActionModal, AgentDefinitionDisplay, AgentExecutionLogs, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, CommandQueueTaskRow, ConfigCard, ContentSections, ContextUsageBadge, ContractDisplay, ExecutionErrorSection, LogEntry, LogGroup, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceNotFoundState, SessionMemory, ToolsListDisplay, WorkflowDefinitionDisplay, WorkflowExecutionLogs, getExecutionStatusConfig, getIcon, getLogLevelConfig, iconMap } from '../chunk-2MRRDF32.js';
|
|
14
21
|
import '../chunk-6ZAP3FOA.js';
|
|
15
|
-
import '../chunk-
|
|
16
|
-
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, CollapsibleJsonSection, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, RunResourceButton, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-
|
|
22
|
+
import '../chunk-BA3AZJUR.js';
|
|
23
|
+
export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, CollapsibleJsonSection, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, RunResourceButton, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-W2QRBQQA.js';
|
|
24
|
+
import '../chunk-FA7LMNQO.js';
|
|
25
|
+
import { useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule } from '../chunk-N6K2Q5BM.js';
|
|
26
|
+
import '../chunk-CRA7WQZH.js';
|
|
17
27
|
export { ZodFormRenderer } from '../chunk-3MEXPLWT.js';
|
|
18
28
|
import '../chunk-SNZDFCOQ.js';
|
|
19
|
-
import
|
|
20
|
-
|
|
21
|
-
export {
|
|
29
|
+
import '../chunk-QFGNRKIE.js';
|
|
30
|
+
import { NotificationList } from '../chunk-CQPULKKL.js';
|
|
31
|
+
export { ActivityCard, ActivityFilters as ActivityFiltersBar, ActivityTable, BusinessImpactCard, CostBreakdownCard, CostByModelTable, CostMetricsCard, ErrorAnalysisCard, ErrorBreakdownTable, ExecutionBreakdownTable, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, NotificationItem, NotificationList } from '../chunk-CQPULKKL.js';
|
|
32
|
+
import { useMarkAllAsRead, useNotifications } from '../chunk-BRTGCFBH.js';
|
|
33
|
+
export { ResourceHealthPanel } from '../chunk-WZU3MCKI.js';
|
|
22
34
|
export { ResourceHealthChart, getHealthColor } from '../chunk-LGKLC5MG.js';
|
|
35
|
+
import '../chunk-YQQ5GRUR.js';
|
|
36
|
+
import '../chunk-VM2OWOXL.js';
|
|
37
|
+
import '../chunk-43LC6XAX.js';
|
|
38
|
+
import '../chunk-WDBNW44Z.js';
|
|
23
39
|
export { Graph_module_css_default as graphStyles } from '../chunk-HENXLGVD.js';
|
|
24
|
-
import { AppShellLoader } from '../chunk-
|
|
40
|
+
import { AppShellLoader } from '../chunk-E6YGA5WH.js';
|
|
25
41
|
export { calculateProgress, formatStatusLabel, milestoneStatusColors, noteTypeColors, projectStatusColors, taskStatusColors, taskTypeColors } from '../chunk-DLR4SDZW.js';
|
|
42
|
+
import '../chunk-4M2BSHVT.js';
|
|
43
|
+
import { useCloudStorageFolder, useCloudStorageThumbnails } from '../chunk-3QHX4ZKV.js';
|
|
26
44
|
import '../chunk-BZZCNLT6.js';
|
|
27
45
|
export { SortableHeader, TableSelectionToolbar } from '../chunk-TUMSNGTX.js';
|
|
28
46
|
import { FilterBar } from '../chunk-PDHTXPSF.js';
|
|
29
47
|
export { FilterBar } from '../chunk-PDHTXPSF.js';
|
|
30
|
-
import {
|
|
31
|
-
export { APIErrorAlert, ActivityTimeline, CenteredErrorState, CheckpointGroup, CollapsibleSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, ConfirmationInputModal, ConfirmationModal, ContextViewer, CrmSidebarMiddle, CustomModal, CustomSelector, DetailCardSkeleton, ElevasisLoader, EmptyState, FeatureUnavailableState, GlowDot, JsonViewer, LeadGenSidebarMiddle, ListSkeleton, MyTasksPanel, NavigationButton, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationModelDriftActionIcon, PageNotFound, PageTitleCaption, QuickCreateActions, ResourceCard, SAVED_VIEW_PRESETS, SavedViewsPanel, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, TabCountBadge, TimeRangeSelector, TrendIndicator, crmManifest, deliveryManifest, leadGenManifest, monitoringManifest, operationsManifest, settingsManifest } from '../chunk-
|
|
48
|
+
import { CustomModal, ListSkeleton, EmptyState, PageTitleCaption, StatCard, usePaginationState, useResources, CenteredErrorState, useDeals, dealKeys, SubshellContentContainer } from '../chunk-6JN2TLV2.js';
|
|
49
|
+
export { APIErrorAlert, ActivityTimeline, CenteredErrorState, CheckpointGroup, CollapsibleSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, ConfirmationInputModal, ConfirmationModal, ContextViewer, CrmSidebarMiddle, CustomModal, CustomSelector, DetailCardSkeleton, ElevasisLoader, EmptyState, FeatureUnavailableState, GlowDot, JsonViewer, LeadGenSidebarMiddle, ListSkeleton, MyTasksPanel, NavigationButton, NoAccessState, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationModelDriftActionIcon, PageNotFound, PageTitleCaption, QuickCreateActions, ResourceCard, SAVED_VIEW_PRESETS, SavedViewsPanel, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, SystemReadinessAlert, SystemUnavailableState, TabCountBadge, TimeRangeSelector, TrendIndicator, crmManifest, deliveryManifest, leadGenManifest, monitoringManifest, operationsManifest, settingsManifest } from '../chunk-6JN2TLV2.js';
|
|
32
50
|
import '../chunk-R6NMRXNO.js';
|
|
33
51
|
import '../chunk-RBGVNPA6.js';
|
|
34
|
-
import '../chunk-
|
|
35
|
-
import '../chunk-NHNTX6ZL.js';
|
|
52
|
+
import '../chunk-O32UQ26A.js';
|
|
36
53
|
import '../chunk-L7BZZ4SI.js';
|
|
37
|
-
import { showSuccessNotification, showErrorNotification, showApiErrorNotification } from '../chunk-
|
|
38
|
-
export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-
|
|
54
|
+
import { showSuccessNotification, showErrorNotification, showApiErrorNotification } from '../chunk-HYQOGRWG.js';
|
|
55
|
+
export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-HYQOGRWG.js';
|
|
39
56
|
export { SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, seoManifest } from '../chunk-MISHPEJX.js';
|
|
40
57
|
import { CardHeader } from '../chunk-62GVNH5U.js';
|
|
41
58
|
export { CardHeader } from '../chunk-62GVNH5U.js';
|
|
42
59
|
import { useInitialization } from '../chunk-P45GQ3ZW.js';
|
|
43
|
-
import '../chunk-
|
|
60
|
+
import '../chunk-2GIJBHZT.js';
|
|
44
61
|
export { StyledMarkdown } from '../chunk-3KMDHCAR.js';
|
|
45
62
|
import '../chunk-2IFYDILW.js';
|
|
46
63
|
export { CONTAINER_CONSTANTS, SHARED_VIZ_CONSTANTS } from '../chunk-BLXJEIQS.js';
|
|
@@ -48,7 +65,7 @@ export { RoleBadge } from '../chunk-UD657ICS.js';
|
|
|
48
65
|
import '../chunk-DD3CCMCZ.js';
|
|
49
66
|
import '../chunk-RNP5R5I3.js';
|
|
50
67
|
import '../chunk-RT4KRGZT.js';
|
|
51
|
-
import { formatDateTime, PAGE_SIZE_DEFAULT, formatTimeAgo } from '../chunk-
|
|
68
|
+
import { formatDateTime, PAGE_SIZE_DEFAULT, formatTimeAgo } from '../chunk-R5UGIFYU.js';
|
|
52
69
|
import '../chunk-Y6I3IC45.js';
|
|
53
70
|
import '../chunk-6SSQGWK7.js';
|
|
54
71
|
import { useElevasisServices } from '../chunk-BI5VDO2K.js';
|
|
@@ -57,7 +74,7 @@ import '../chunk-TVTSASST.js';
|
|
|
57
74
|
import '../chunk-BRJ3QZ4E.js';
|
|
58
75
|
import { useRouterContext } from '../chunk-Q7DJKLEN.js';
|
|
59
76
|
import '../chunk-I2KLQ2HA.js';
|
|
60
|
-
import { Stack, Card, Title, Checkbox, Group, Text, Tooltip,
|
|
77
|
+
import { Stack, Card, Title, Checkbox, Group, Text, Tooltip, TextInput, Textarea, Loader, Alert, Button, Box, Divider, ScrollArea, Popover, Indicator, ActionIcon, Table, Paper, Code, CopyButton, SimpleGrid, Badge, Pagination, SegmentedControl, Switch, Select, Menu, Timeline, ThemeIcon, Tabs, Breadcrumbs as Breadcrumbs$1, Center, UnstyledButton, Image, Flex } from '@mantine/core';
|
|
61
78
|
import { IconLock, IconBell, IconPencil, IconAlertCircle, IconKey, IconCalendar, IconClock, IconTrash, IconAlertTriangle, IconExclamationMark, IconShieldLock, IconCheck, IconCopy, IconPlus, IconRocket, IconRefresh, IconPower, IconPlayerPlay, IconCircleCheck, IconTag, IconCalendarRepeat, IconCalendarEvent, IconCalendarTime, IconRobot, IconGitBranch, IconSettings, IconExternalLink, IconDotsVertical, IconPlayerPause, IconPlayerStop, IconCalendarDue, IconCalendarStats, IconCalendarOff, IconListCheck, IconFolder, IconPhoto, IconCloudOff } from '@tabler/icons-react';
|
|
62
79
|
import * as runtime from 'react/jsx-runtime';
|
|
63
80
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -136,13 +153,6 @@ function PermissionMatrix({ catalog, selectedKeys, onChange, systemLocked }) {
|
|
|
136
153
|
}) })
|
|
137
154
|
] }, domain)) });
|
|
138
155
|
}
|
|
139
|
-
function NoAccessState() {
|
|
140
|
-
return /* @__PURE__ */ jsx(Center, { style: { flex: 1, minHeight: "100%", width: "100%", padding: 24 }, children: /* @__PURE__ */ jsxs(Stack, { align: "center", gap: "xs", style: { maxWidth: 480, textAlign: "center" }, children: [
|
|
141
|
-
/* @__PURE__ */ jsx(IconLock, { size: 44, stroke: 1.8, color: "var(--color-text-subtle)" }),
|
|
142
|
-
/* @__PURE__ */ jsx(Title, { order: 3, children: "Access restricted" }),
|
|
143
|
-
/* @__PURE__ */ jsx(Text, { size: "sm", c: "dimmed", children: "You don't have permission to view this page. Contact an org admin if you need access." })
|
|
144
|
-
] }) });
|
|
145
|
-
}
|
|
146
156
|
var CreateRoleFormSchema = z.object({
|
|
147
157
|
name: z.string().trim().min(2).max(50),
|
|
148
158
|
slug: z.string().regex(/^[a-z0-9-]+$/, "lowercase, numbers, dashes only").min(2).max(50),
|
|
@@ -3075,4 +3085,4 @@ function CloudStorageBrowser({
|
|
|
3075
3085
|
] }) });
|
|
3076
3086
|
}
|
|
3077
3087
|
|
|
3078
|
-
export { AbsoluteScheduleForm, ApiKeyDisplayModal, ApiKeyList, ApiKeySettings, Breadcrumbs, CloudStorageBrowser, CloudStorageFileCard, CloudStorageFileGrid, CloudStorageFolderTree, CreateApiKeyModal, CreateRoleModal, CreateScheduleModal, DEAL_STAGES, DEFAULT_KANBAN_CONFIG, DealKanbanCard, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentSettings, DeploymentStatusBadge, EditApiKeyModal, KanbanBoard, MdxRenderer,
|
|
3088
|
+
export { AbsoluteScheduleForm, ApiKeyDisplayModal, ApiKeyList, ApiKeySettings, Breadcrumbs, CloudStorageBrowser, CloudStorageFileCard, CloudStorageFileGrid, CloudStorageFolderTree, CreateApiKeyModal, CreateRoleModal, CreateScheduleModal, DEAL_STAGES, DEFAULT_KANBAN_CONFIG, DealKanbanCard, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentSettings, DeploymentStatusBadge, EditApiKeyModal, KanbanBoard, MdxRenderer, NotificationBell, NotificationPanel, PermissionMatrix, RecurringScheduleForm, RelativeScheduleForm, RichTextEditor, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, TaskScheduler, mdxComponents };
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
export { useBreadcrumbs } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { useBreadcrumbs } from '../../chunk-7ARBBELS.js';
|
|
2
|
+
import '../../chunk-6JN2TLV2.js';
|
|
3
3
|
import '../../chunk-R6NMRXNO.js';
|
|
4
4
|
import '../../chunk-RBGVNPA6.js';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-NHNTX6ZL.js';
|
|
5
|
+
import '../../chunk-O32UQ26A.js';
|
|
7
6
|
import '../../chunk-L7BZZ4SI.js';
|
|
8
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-HYQOGRWG.js';
|
|
9
8
|
import '../../chunk-MISHPEJX.js';
|
|
10
9
|
import '../../chunk-62GVNH5U.js';
|
|
11
10
|
import '../../chunk-P45GQ3ZW.js';
|
|
12
|
-
import '../../chunk-
|
|
11
|
+
import '../../chunk-2GIJBHZT.js';
|
|
13
12
|
import '../../chunk-3KMDHCAR.js';
|
|
14
13
|
import '../../chunk-2IFYDILW.js';
|
|
15
14
|
import '../../chunk-BLXJEIQS.js';
|
|
@@ -17,7 +16,7 @@ import '../../chunk-UD657ICS.js';
|
|
|
17
16
|
import '../../chunk-DD3CCMCZ.js';
|
|
18
17
|
import '../../chunk-RNP5R5I3.js';
|
|
19
18
|
import '../../chunk-RT4KRGZT.js';
|
|
20
|
-
import '../../chunk-
|
|
19
|
+
import '../../chunk-R5UGIFYU.js';
|
|
21
20
|
import '../../chunk-Y6I3IC45.js';
|
|
22
21
|
import '../../chunk-6SSQGWK7.js';
|
|
23
22
|
import '../../chunk-BI5VDO2K.js';
|
|
@@ -1456,6 +1456,64 @@ type Database = {
|
|
|
1456
1456
|
}
|
|
1457
1457
|
];
|
|
1458
1458
|
};
|
|
1459
|
+
content_distribution_metrics: {
|
|
1460
|
+
Row: {
|
|
1461
|
+
captured_at: string;
|
|
1462
|
+
created_at: string;
|
|
1463
|
+
distribution_id: string;
|
|
1464
|
+
id: string;
|
|
1465
|
+
metrics: Json;
|
|
1466
|
+
organization_id: string;
|
|
1467
|
+
raw: Json;
|
|
1468
|
+
source: string;
|
|
1469
|
+
source_execution_id: string | null;
|
|
1470
|
+
};
|
|
1471
|
+
Insert: {
|
|
1472
|
+
captured_at?: string;
|
|
1473
|
+
created_at?: string;
|
|
1474
|
+
distribution_id: string;
|
|
1475
|
+
id?: string;
|
|
1476
|
+
metrics?: Json;
|
|
1477
|
+
organization_id: string;
|
|
1478
|
+
raw?: Json;
|
|
1479
|
+
source: string;
|
|
1480
|
+
source_execution_id?: string | null;
|
|
1481
|
+
};
|
|
1482
|
+
Update: {
|
|
1483
|
+
captured_at?: string;
|
|
1484
|
+
created_at?: string;
|
|
1485
|
+
distribution_id?: string;
|
|
1486
|
+
id?: string;
|
|
1487
|
+
metrics?: Json;
|
|
1488
|
+
organization_id?: string;
|
|
1489
|
+
raw?: Json;
|
|
1490
|
+
source?: string;
|
|
1491
|
+
source_execution_id?: string | null;
|
|
1492
|
+
};
|
|
1493
|
+
Relationships: [
|
|
1494
|
+
{
|
|
1495
|
+
foreignKeyName: "content_distribution_metrics_distribution_fkey";
|
|
1496
|
+
columns: ["distribution_id", "organization_id"];
|
|
1497
|
+
isOneToOne: false;
|
|
1498
|
+
referencedRelation: "content_distributions";
|
|
1499
|
+
referencedColumns: ["id", "organization_id"];
|
|
1500
|
+
},
|
|
1501
|
+
{
|
|
1502
|
+
foreignKeyName: "content_distribution_metrics_organization_id_fkey";
|
|
1503
|
+
columns: ["organization_id"];
|
|
1504
|
+
isOneToOne: false;
|
|
1505
|
+
referencedRelation: "organizations";
|
|
1506
|
+
referencedColumns: ["id"];
|
|
1507
|
+
},
|
|
1508
|
+
{
|
|
1509
|
+
foreignKeyName: "content_distribution_metrics_source_execution_id_fkey";
|
|
1510
|
+
columns: ["source_execution_id"];
|
|
1511
|
+
isOneToOne: false;
|
|
1512
|
+
referencedRelation: "execution_logs";
|
|
1513
|
+
referencedColumns: ["execution_id"];
|
|
1514
|
+
}
|
|
1515
|
+
];
|
|
1516
|
+
};
|
|
1459
1517
|
content_distributions: {
|
|
1460
1518
|
Row: {
|
|
1461
1519
|
adapted_body: string | null;
|
|
@@ -3769,6 +3827,24 @@ interface AccessGuardProps {
|
|
|
3769
3827
|
*/
|
|
3770
3828
|
declare function AccessGuard({ accessKey, children, fallback, loadingFallback, redirectTo }: AccessGuardProps): react_jsx_runtime.JSX.Element;
|
|
3771
3829
|
|
|
3830
|
+
interface ProtectedSystemRouteProps {
|
|
3831
|
+
/** The System path (or `{ systemPath, action }`) this route requires access to. */
|
|
3832
|
+
accessKey: AccessKeyInput;
|
|
3833
|
+
children: ReactNode;
|
|
3834
|
+
}
|
|
3835
|
+
/**
|
|
3836
|
+
* Route-guard helper for a System's top-level route file. Collapses the
|
|
3837
|
+
* `ProtectedRoute` + `AccessGuard` boilerplate every System route repeats
|
|
3838
|
+
* (see `external/_template/ui/src/routes/crm.tsx` and its siblings) into a
|
|
3839
|
+
* single call, and supplies {@link SystemUnavailableState} as the guard's
|
|
3840
|
+
* `fallback` so a denial renders the specific reason `checkAccess` already
|
|
3841
|
+
* computed instead of the guard's own blank `fallback = null` default.
|
|
3842
|
+
*
|
|
3843
|
+
* `createFileRoute` stays in the route file -- TanStack's file-based routing
|
|
3844
|
+
* requires it there; this component only replaces the route's layout body.
|
|
3845
|
+
*/
|
|
3846
|
+
declare function ProtectedSystemRoute({ accessKey, children }: ProtectedSystemRouteProps): react_jsx_runtime.JSX.Element;
|
|
3847
|
+
|
|
3772
3848
|
type ApiRequestFn = <T>(endpoint: string, options?: RequestInit) => Promise<T>;
|
|
3773
3849
|
interface UseUserProfileOptions {
|
|
3774
3850
|
/**
|
|
@@ -3890,5 +3966,5 @@ interface LoginScreenProps {
|
|
|
3890
3966
|
*/
|
|
3891
3967
|
declare function LoginScreen({ lightModeLogo, darkModeLogo, appName, appConfig }: LoginScreenProps): react_jsx_runtime.JSX.Element;
|
|
3892
3968
|
|
|
3893
|
-
export { AccessGuard, AuthRedirectLoadingScreen, LoginScreen, ProtectedRoute, USER_PROFILE_QUERY_KEY, useUserProfile, validateLoginSearch };
|
|
3894
|
-
export type { AccessGuardProps, AuthMode, AuthRedirectLoadingScreenProps, LoginScreenAppConfig, LoginScreenProps, LoginSearchParams, ProtectedRouteProps, UseUserProfileReturn };
|
|
3969
|
+
export { AccessGuard, AuthRedirectLoadingScreen, LoginScreen, ProtectedRoute, ProtectedSystemRoute, USER_PROFILE_QUERY_KEY, useUserProfile, validateLoginSearch };
|
|
3970
|
+
export type { AccessGuardProps, AuthMode, AuthRedirectLoadingScreenProps, LoginScreenAppConfig, LoginScreenProps, LoginSearchParams, ProtectedRouteProps, ProtectedSystemRouteProps, UseUserProfileReturn };
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { AppShellError } from '../../chunk-
|
|
2
|
-
import { computeProtectedRouteGate, DEFAULT_WAIT_FOR_ORGANIZATION, ProtectedRoute, AppearanceContext, useAppearance } from '../../chunk-
|
|
3
|
-
export { AccessGuard } from '../../chunk-
|
|
1
|
+
import { AppShellError } from '../../chunk-E6YGA5WH.js';
|
|
2
|
+
import { computeProtectedRouteGate, DEFAULT_WAIT_FOR_ORGANIZATION, ProtectedRoute, AppearanceContext, AccessGuard, SystemUnavailableState, useAppearance } from '../../chunk-6JN2TLV2.js';
|
|
3
|
+
export { AccessGuard } from '../../chunk-6JN2TLV2.js';
|
|
4
4
|
import '../../chunk-R6NMRXNO.js';
|
|
5
5
|
import '../../chunk-RBGVNPA6.js';
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-NHNTX6ZL.js';
|
|
6
|
+
import '../../chunk-O32UQ26A.js';
|
|
8
7
|
import '../../chunk-L7BZZ4SI.js';
|
|
9
|
-
import '../../chunk-
|
|
8
|
+
import '../../chunk-HYQOGRWG.js';
|
|
10
9
|
import '../../chunk-MISHPEJX.js';
|
|
11
10
|
import '../../chunk-62GVNH5U.js';
|
|
12
11
|
import { useInitialization } from '../../chunk-P45GQ3ZW.js';
|
|
13
|
-
import '../../chunk-
|
|
12
|
+
import '../../chunk-2GIJBHZT.js';
|
|
14
13
|
import '../../chunk-3KMDHCAR.js';
|
|
15
14
|
import '../../chunk-2IFYDILW.js';
|
|
16
15
|
import '../../chunk-BLXJEIQS.js';
|
|
@@ -18,7 +17,7 @@ import '../../chunk-UD657ICS.js';
|
|
|
18
17
|
import '../../chunk-DD3CCMCZ.js';
|
|
19
18
|
import '../../chunk-RNP5R5I3.js';
|
|
20
19
|
export { USER_PROFILE_QUERY_KEY, useUserProfile } from '../../chunk-RT4KRGZT.js';
|
|
21
|
-
import '../../chunk-
|
|
20
|
+
import '../../chunk-R5UGIFYU.js';
|
|
22
21
|
import '../../chunk-Y6I3IC45.js';
|
|
23
22
|
import '../../chunk-6SSQGWK7.js';
|
|
24
23
|
import '../../chunk-BI5VDO2K.js';
|
|
@@ -146,6 +145,16 @@ function AuthRedirectLoadingScreen({
|
|
|
146
145
|
}
|
|
147
146
|
);
|
|
148
147
|
}
|
|
148
|
+
function ProtectedSystemRoute({ accessKey, children }) {
|
|
149
|
+
return /* @__PURE__ */ jsx(ProtectedRoute2, { children: /* @__PURE__ */ jsx(
|
|
150
|
+
AccessGuard,
|
|
151
|
+
{
|
|
152
|
+
accessKey,
|
|
153
|
+
fallback: (answer) => /* @__PURE__ */ jsx(SystemUnavailableState, { accessKey, reason: answer.reason }),
|
|
154
|
+
children
|
|
155
|
+
}
|
|
156
|
+
) });
|
|
157
|
+
}
|
|
149
158
|
function getStringSearchParam(value) {
|
|
150
159
|
return typeof value === "string" ? value : void 0;
|
|
151
160
|
}
|
|
@@ -279,4 +288,4 @@ function LoginScreen({ lightModeLogo, darkModeLogo, appName, appConfig }) {
|
|
|
279
288
|
);
|
|
280
289
|
}
|
|
281
290
|
|
|
282
|
-
export { AuthRedirectLoadingScreen, LoginScreen, ProtectedRoute2 as ProtectedRoute, validateLoginSearch };
|
|
291
|
+
export { AuthRedirectLoadingScreen, LoginScreen, ProtectedRoute2 as ProtectedRoute, ProtectedSystemRoute, validateLoginSearch };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import '../../chunk-DLR4SDZW.js';
|
|
2
|
+
import { useClientStatus, useCreateClient, useUpdateClient, useDeleteClient, useClients, useClient } from '../../chunk-4M2BSHVT.js';
|
|
2
3
|
import { PageContainer } from '../../chunk-BZZCNLT6.js';
|
|
3
4
|
import '../../chunk-TUMSNGTX.js';
|
|
4
5
|
import { FilterBar } from '../../chunk-PDHTXPSF.js';
|
|
5
|
-
import {
|
|
6
|
-
export { clientsManifest } from '../../chunk-
|
|
6
|
+
import { StatCard, EmptyState, CustomModal, usePaginationState, SubshellContentContainer, PageTitleCaption, CenteredErrorState } from '../../chunk-6JN2TLV2.js';
|
|
7
|
+
export { clientsManifest } from '../../chunk-6JN2TLV2.js';
|
|
7
8
|
import '../../chunk-R6NMRXNO.js';
|
|
8
9
|
import '../../chunk-RBGVNPA6.js';
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-NHNTX6ZL.js';
|
|
10
|
+
import '../../chunk-O32UQ26A.js';
|
|
11
11
|
import '../../chunk-L7BZZ4SI.js';
|
|
12
|
-
import { showApiErrorNotification } from '../../chunk-
|
|
12
|
+
import { showApiErrorNotification } from '../../chunk-HYQOGRWG.js';
|
|
13
13
|
import '../../chunk-MISHPEJX.js';
|
|
14
14
|
import { CardHeader } from '../../chunk-62GVNH5U.js';
|
|
15
15
|
import '../../chunk-P45GQ3ZW.js';
|
|
16
|
-
import '../../chunk-
|
|
16
|
+
import '../../chunk-2GIJBHZT.js';
|
|
17
17
|
import '../../chunk-3KMDHCAR.js';
|
|
18
18
|
import '../../chunk-2IFYDILW.js';
|
|
19
19
|
import '../../chunk-BLXJEIQS.js';
|
|
@@ -21,7 +21,7 @@ import '../../chunk-UD657ICS.js';
|
|
|
21
21
|
import '../../chunk-DD3CCMCZ.js';
|
|
22
22
|
import '../../chunk-RNP5R5I3.js';
|
|
23
23
|
import '../../chunk-RT4KRGZT.js';
|
|
24
|
-
import { PAGE_SIZE_DEFAULT, formatTimeAgo } from '../../chunk-
|
|
24
|
+
import { PAGE_SIZE_DEFAULT, formatTimeAgo } from '../../chunk-R5UGIFYU.js';
|
|
25
25
|
import '../../chunk-Y6I3IC45.js';
|
|
26
26
|
import '../../chunk-6SSQGWK7.js';
|
|
27
27
|
import '../../chunk-BI5VDO2K.js';
|
|
@@ -200,10 +200,25 @@ interface SidebarGroupNode {
|
|
|
200
200
|
}
|
|
201
201
|
type SidebarNode = SidebarSurfaceNode | SidebarGroupNode;
|
|
202
202
|
|
|
203
|
-
/**
|
|
203
|
+
/**
|
|
204
|
+
* D5: who/what executes a content pipeline step.
|
|
205
|
+
*
|
|
206
|
+
* `'human'` was added on 2026-08-21, when the workspace shell started rendering its
|
|
207
|
+
* stepper from `steps[]`. Before that a step meant "a pass that writes a
|
|
208
|
+
* `content_item_attempts` row", so the stages a person walks -- picking files,
|
|
209
|
+
* framing them, sending the post -- were declared nowhere and lived as integer
|
|
210
|
+
* constants in one tenant's page. A catalog that describes only the automated half
|
|
211
|
+
* of a pipeline cannot be the thing a workspace renders, so the vocabulary widened
|
|
212
|
+
* to cover the whole sequence rather than the shell inventing a second one.
|
|
213
|
+
*
|
|
214
|
+
* A `'human'` step writes no attempt. That is expected, not a gap: `reviewMode`
|
|
215
|
+
* still says whether a decision gates it, and the surfaces that group by
|
|
216
|
+
* `stepKey` simply find no rows against it.
|
|
217
|
+
*/
|
|
204
218
|
declare const ContentPipelineStepActorSchema: z.ZodEnum<{
|
|
205
219
|
agent: "agent";
|
|
206
220
|
workflow: "workflow";
|
|
221
|
+
human: "human";
|
|
207
222
|
vendor: "vendor";
|
|
208
223
|
}>;
|
|
209
224
|
type ContentPipelineStepActor = z.infer<typeof ContentPipelineStepActorSchema>;
|
|
@@ -1416,9 +1431,50 @@ declare const ContentSourceAssetResponseSchema: z.ZodObject<{
|
|
|
1416
1431
|
createdAt: z.ZodString;
|
|
1417
1432
|
updatedAt: z.ZodString;
|
|
1418
1433
|
}, z.core.$strip>;
|
|
1434
|
+
declare const ContentDistributionResponseSchema: z.ZodObject<{
|
|
1435
|
+
id: z.ZodString;
|
|
1436
|
+
organizationId: z.ZodString;
|
|
1437
|
+
contentItemId: z.ZodString;
|
|
1438
|
+
platform: z.ZodString;
|
|
1439
|
+
format: z.ZodString;
|
|
1440
|
+
status: z.ZodString;
|
|
1441
|
+
adaptedBody: z.ZodNullable<z.ZodString>;
|
|
1442
|
+
platformContent: z.ZodNullable<z.ZodUnknown>;
|
|
1443
|
+
checklist: z.ZodNullable<z.ZodUnknown>;
|
|
1444
|
+
mediaUrls: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
1445
|
+
kind: z.ZodLiteral<"storage">;
|
|
1446
|
+
bucket: z.ZodString;
|
|
1447
|
+
path: z.ZodString;
|
|
1448
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
1449
|
+
kind: z.ZodLiteral<"url">;
|
|
1450
|
+
url: z.ZodString;
|
|
1451
|
+
}, z.core.$strict>], "kind">>;
|
|
1452
|
+
processingState: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1453
|
+
status: z.ZodEnum<{
|
|
1454
|
+
error: "error";
|
|
1455
|
+
success: "success";
|
|
1456
|
+
running: "running";
|
|
1457
|
+
no_result: "no_result";
|
|
1458
|
+
skipped: "skipped";
|
|
1459
|
+
}>;
|
|
1460
|
+
attemptId: z.ZodString;
|
|
1461
|
+
executionId: z.ZodNullable<z.ZodString>;
|
|
1462
|
+
attemptedAt: z.ZodString;
|
|
1463
|
+
data: z.ZodOptional<z.ZodUnknown>;
|
|
1464
|
+
}, z.core.$loose>>;
|
|
1465
|
+
publishMethod: z.ZodNullable<z.ZodString>;
|
|
1466
|
+
publishedAt: z.ZodNullable<z.ZodString>;
|
|
1467
|
+
platformPostId: z.ZodNullable<z.ZodString>;
|
|
1468
|
+
platformUrl: z.ZodNullable<z.ZodString>;
|
|
1469
|
+
metrics: z.ZodUnknown;
|
|
1470
|
+
metricsUpdatedAt: z.ZodNullable<z.ZodString>;
|
|
1471
|
+
createdAt: z.ZodString;
|
|
1472
|
+
updatedAt: z.ZodString;
|
|
1473
|
+
}, z.core.$strip>;
|
|
1419
1474
|
type ContentAssetCrop = z.infer<typeof ContentAssetCropSchema>;
|
|
1420
1475
|
type ContentItemResponse = z.infer<typeof ContentItemResponseSchema>;
|
|
1421
1476
|
type ContentSourceAssetResponse = z.infer<typeof ContentSourceAssetResponseSchema>;
|
|
1477
|
+
type ContentDistributionResponse = z.infer<typeof ContentDistributionResponseSchema>;
|
|
1422
1478
|
|
|
1423
1479
|
/**
|
|
1424
1480
|
* `deriveContentBoard` -- a pure function of `(items, pipeline, now)`. No React, no
|
|
@@ -2438,7 +2494,7 @@ interface ContentSidebarProps {
|
|
|
2438
2494
|
declare const ContentSidebar: ({ workspaceItems, createItems, children }?: ContentSidebarProps) => react_jsx_runtime.JSX.Element;
|
|
2439
2495
|
|
|
2440
2496
|
/**
|
|
2441
|
-
* Static
|
|
2497
|
+
* Static three-entry default, built from {@link DEFAULT_CONTENT_VOCABULARY}. Exists for
|
|
2442
2498
|
* consumers that spread it at module load time (see `extend-content.md`), where a
|
|
2443
2499
|
* tenant's declared vocabulary isn't available. `ContentSidebarMiddle` itself renders
|
|
2444
2500
|
* the live, vocabulary-aware version instead of this constant.
|
|
@@ -2463,7 +2519,7 @@ interface ContentSidebarMiddleProps {
|
|
|
2463
2519
|
* that section now holds review too.
|
|
2464
2520
|
*/
|
|
2465
2521
|
createItems?: NavItem[];
|
|
2466
|
-
/** Override the pipeline nav items. Defaults to the
|
|
2522
|
+
/** Override the pipeline nav items. Defaults to the three-entry nav built from the tenant's declared vocabulary. */
|
|
2467
2523
|
items?: NavItem[];
|
|
2468
2524
|
}
|
|
2469
2525
|
/**
|
|
@@ -2511,5 +2567,170 @@ interface MyReviewQueuePanelProps {
|
|
|
2511
2567
|
*/
|
|
2512
2568
|
declare function MyReviewQueuePanel({ onItemClick, onSeeAll, showSectionLabel }: MyReviewQueuePanelProps): react_jsx_runtime.JSX.Element;
|
|
2513
2569
|
|
|
2514
|
-
|
|
2515
|
-
|
|
2570
|
+
/**
|
|
2571
|
+
* What every step panel is handed, and the only thing the workspace shell owns.
|
|
2572
|
+
*
|
|
2573
|
+
* The shell fixes four things and nothing else: it remembers the work in progress,
|
|
2574
|
+
* it moves between steps, it draws the stepper from the tenant's own step list, and
|
|
2575
|
+
* it renders the panel that tenant's map names for the active step. Step count, step
|
|
2576
|
+
* order, labels, actors, review modes, statuses, platforms and every screen a step
|
|
2577
|
+
* puts up come from the model and from the composing app.
|
|
2578
|
+
*
|
|
2579
|
+
* `TDraft` is whatever the composing app's panels share and the shell has no opinion
|
|
2580
|
+
* about -- a cloud-storage selection, per-slide crops, a chosen platform. It is
|
|
2581
|
+
* carried, never read.
|
|
2582
|
+
*/
|
|
2583
|
+
interface ContentWorkspaceState<TDraft> {
|
|
2584
|
+
/** The pipeline being walked, resolved from the organization model. */
|
|
2585
|
+
pipeline: ContentPipelineTemplate;
|
|
2586
|
+
/** Its steps, in declared order. Never assume a length or a particular member. */
|
|
2587
|
+
steps: ContentPipelineStepEntry[];
|
|
2588
|
+
/** The step on screen. */
|
|
2589
|
+
step: ContentPipelineStepEntry;
|
|
2590
|
+
/** Its index within {@link steps}. */
|
|
2591
|
+
stepIndex: number;
|
|
2592
|
+
/**
|
|
2593
|
+
* The item, once something has written one. `null` before that.
|
|
2594
|
+
*
|
|
2595
|
+
* Kept live rather than held as the create response: a caption promoted by a panel
|
|
2596
|
+
* changes `body`, and a preview reading the create snapshot would show the old one.
|
|
2597
|
+
*/
|
|
2598
|
+
item: ContentItemResponse | null;
|
|
2599
|
+
/** Adopt a written item -- after creating one, or on resuming an existing one. */
|
|
2600
|
+
setItem: (item: ContentItemResponse | null) => void;
|
|
2601
|
+
/**
|
|
2602
|
+
* The item's body as it stands: the unsaved draft when a panel has reported one,
|
|
2603
|
+
* the saved body otherwise.
|
|
2604
|
+
*
|
|
2605
|
+
* This is shell state rather than tenant draft state because every pipeline that
|
|
2606
|
+
* writes a body has an in-progress one, and more than one step reads it -- the step
|
|
2607
|
+
* that writes it, the preview beside it, and the step that sends it out. Leaving it
|
|
2608
|
+
* to each app is how the two disagree.
|
|
2609
|
+
*/
|
|
2610
|
+
body: string;
|
|
2611
|
+
/** The unsaved body, or `null` when no panel has reported one. */
|
|
2612
|
+
bodyDraft: string | null;
|
|
2613
|
+
setBodyDraft: (draft: string | null) => void;
|
|
2614
|
+
/**
|
|
2615
|
+
* The distribution row for this item, or `null`. First row only -- a second
|
|
2616
|
+
* platform is a second distribution and nothing here creates one yet.
|
|
2617
|
+
*/
|
|
2618
|
+
distribution: ContentDistributionResponse | null;
|
|
2619
|
+
/** Re-read the distributions after a panel has written one. */
|
|
2620
|
+
refetchDistributions: () => void;
|
|
2621
|
+
/** Whatever the composing app's own panels share. */
|
|
2622
|
+
draft: TDraft;
|
|
2623
|
+
/** Merge a patch, or replace via an updater. */
|
|
2624
|
+
setDraft: (update: Partial<TDraft> | ((current: TDraft) => TDraft)) => void;
|
|
2625
|
+
/** Move to a step by key. Ignored when the key names no step in this pipeline. */
|
|
2626
|
+
goToStep: (stepKey: string) => void;
|
|
2627
|
+
goToNextStep: () => void;
|
|
2628
|
+
goToPreviousStep: () => void;
|
|
2629
|
+
/** Whether a step can be opened right now, per the composing app's own rule. */
|
|
2630
|
+
canOpenStep: (step: ContentPipelineStepEntry) => boolean;
|
|
2631
|
+
/**
|
|
2632
|
+
* Install a guard the shell awaits before leaving the active step, or clear it
|
|
2633
|
+
* with `null`.
|
|
2634
|
+
*
|
|
2635
|
+
* This exists because some steps have work that only makes sense to finish on the
|
|
2636
|
+
* way out -- rendering a crop, flushing an edit -- and the panel is the only thing
|
|
2637
|
+
* that knows what that work is. Install it from an effect and clear it on unmount.
|
|
2638
|
+
*/
|
|
2639
|
+
registerLeaveGuard: (guard: ((to: ContentPipelineStepEntry) => Promise<void> | void) | null) => void;
|
|
2640
|
+
/** Drop everything and return to the start. */
|
|
2641
|
+
restart: () => void;
|
|
2642
|
+
}
|
|
2643
|
+
/** A component registered to render one step. */
|
|
2644
|
+
type ContentStepPanel<TDraft> = ComponentType<ContentWorkspaceState<TDraft>>;
|
|
2645
|
+
/**
|
|
2646
|
+
* Which panel renders which step, keyed by step key.
|
|
2647
|
+
*
|
|
2648
|
+
* An explicit map rather than a convention on the step key: a tenant that renames a
|
|
2649
|
+
* step would otherwise silently lose its panel with nothing on screen to say so,
|
|
2650
|
+
* whereas a missing entry here is reported. It also takes any component, so a tenant
|
|
2651
|
+
* can use published panels for some steps and its own for the rest.
|
|
2652
|
+
*/
|
|
2653
|
+
type ContentStepPanelMap<TDraft> = Record<string, ContentStepPanel<TDraft>>;
|
|
2654
|
+
/** What the opening screen can do, when the composing app renders one. */
|
|
2655
|
+
interface ContentWorkspaceStartControls {
|
|
2656
|
+
/** Begin a new item at the first step. */
|
|
2657
|
+
onStartNew: () => void;
|
|
2658
|
+
/** Pick up an existing item. The shell adopts it and opens `resumeAtStepKey`. */
|
|
2659
|
+
onResume: (item: ContentItemResponse, resumeAtStepKey?: string) => void;
|
|
2660
|
+
}
|
|
2661
|
+
interface ContentWorkspaceShellProps<TDraft> {
|
|
2662
|
+
/**
|
|
2663
|
+
* Which pipeline to walk. Defaults to the content System's own
|
|
2664
|
+
* `config.defaultPipelineId` when omitted.
|
|
2665
|
+
*/
|
|
2666
|
+
pipelineId?: string;
|
|
2667
|
+
/** See {@link ContentStepPanelMap}. */
|
|
2668
|
+
panels: ContentStepPanelMap<TDraft>;
|
|
2669
|
+
/** The starting value of the app's own shared draft. Also what `restart` returns to. */
|
|
2670
|
+
initialDraft: TDraft;
|
|
2671
|
+
title: string;
|
|
2672
|
+
caption?: string;
|
|
2673
|
+
/** Rendered at the right of the page title -- a credential badge, a mode switch. */
|
|
2674
|
+
headerRight?: ReactNode;
|
|
2675
|
+
/**
|
|
2676
|
+
* The opening screen, before any step is shown: a resume picker, a template
|
|
2677
|
+
* chooser, or nothing. Omit it and the shell opens on the first step.
|
|
2678
|
+
*/
|
|
2679
|
+
renderStart?: (controls: ContentWorkspaceStartControls) => ReactNode;
|
|
2680
|
+
/**
|
|
2681
|
+
* Rendered on every step whatever panel is active, between the stepper and the
|
|
2682
|
+
* panel. For the banner naming the work in progress, and for cross-step effects
|
|
2683
|
+
* that must outlive the panel that started them.
|
|
2684
|
+
*/
|
|
2685
|
+
renderPersistent?: (state: ContentWorkspaceState<TDraft>) => ReactNode;
|
|
2686
|
+
/**
|
|
2687
|
+
* The column beside the active panel -- typically the thing being built. Return
|
|
2688
|
+
* `null` for a step that wants the full width, and the shell drops the column
|
|
2689
|
+
* rather than rendering an empty one.
|
|
2690
|
+
*/
|
|
2691
|
+
renderAside?: (state: ContentWorkspaceState<TDraft>) => ReactNode;
|
|
2692
|
+
/**
|
|
2693
|
+
* Whether a step is openable. Defaults to "any step at or before the furthest one
|
|
2694
|
+
* reached", which is what makes going back free and going forward deliberate.
|
|
2695
|
+
*/
|
|
2696
|
+
canOpenStep?: (step: ContentPipelineStepEntry, state: ContentWorkspaceState<TDraft>) => boolean;
|
|
2697
|
+
/** Test id on the page root, so a composing app's tests can find its own workspace. */
|
|
2698
|
+
testId?: string;
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
/**
|
|
2702
|
+
* The frame a tenant's content pipeline is walked in.
|
|
2703
|
+
*
|
|
2704
|
+
* **It draws the stepper from the model, not from itself.** One `Stepper.Step` per
|
|
2705
|
+
* entry in `ContentPipelineTemplate.steps`, using that entry's own label and order,
|
|
2706
|
+
* its description below the row once the step is active, and the panel the composing
|
|
2707
|
+
* app registered for its key. A pipeline with
|
|
2708
|
+
* three steps renders three; one with seven renders seven; one that puts the caption
|
|
2709
|
+
* second renders it second. Nothing here knows what a crop or a carousel is.
|
|
2710
|
+
*
|
|
2711
|
+
* **It owns only what every step shares** -- the item, its unsaved body, the
|
|
2712
|
+
* distribution row, and where in the sequence you are. Everything else is the
|
|
2713
|
+
* composing app's, carried through `draft` untouched. The panels are stateless and
|
|
2714
|
+
* take this object; the app decides what they are.
|
|
2715
|
+
*
|
|
2716
|
+
* The reason the frame owns that much rather than less: those are exactly the values
|
|
2717
|
+
* more than one step reads, and the two live defects in the page this replaced were
|
|
2718
|
+
* both cross-step state bugs. Pushing them into each app reproduces those bugs once
|
|
2719
|
+
* per tenant.
|
|
2720
|
+
*/
|
|
2721
|
+
declare function ContentWorkspaceShell<TDraft>({ pipelineId, panels, initialDraft, title, caption, headerRight, renderStart, renderPersistent, renderAside, canOpenStep, testId }: ContentWorkspaceShellProps<TDraft>): react_jsx_runtime.JSX.Element;
|
|
2722
|
+
|
|
2723
|
+
/**
|
|
2724
|
+
* The analysis step, ready to register.
|
|
2725
|
+
*
|
|
2726
|
+
* `SlideAnalysisPanel` was already universal -- it takes an item id and nothing else
|
|
2727
|
+
* -- so what was missing was only the shape the shell calls it with. That is all this
|
|
2728
|
+
* is: the panel, plus the two moves either side of it.
|
|
2729
|
+
*
|
|
2730
|
+
* Registers under whatever key the tenant's own step catalog uses; nothing here reads
|
|
2731
|
+
* a step key.
|
|
2732
|
+
*/
|
|
2733
|
+
declare function ContentAnalysisStepPanel<TDraft>(state: ContentWorkspaceState<TDraft>): react_jsx_runtime.JSX.Element;
|
|
2734
|
+
|
|
2735
|
+
export { AlternatesPanel, AssetCropEditor, CAPTION_STEP_KEY, CAPTION_WORKFLOW_ID, CONTENT_DERIVATIVES_BUCKET, CONTENT_ITEMS, CROP_ASPECT_OPTIONS, CaptionPanel, ContentAnalysisStepPanel, ContentDistributionDetailPage, ContentDistributionsPage, ContentItemReviewPage, ContentItemsPage, ContentOverviewPage, ContentPipelineBoardPage, ContentPipelineBoardPage as ContentPipelineWorkspacePage, ContentPipelinesPage, ContentReviewCard, ContentSidebar, ContentSidebarMiddle, ContentWorkspaceShell, DEFAULT_CONTENT_VOCABULARY, DERIVATIVE_JPEG_QUALITY, DERIVATIVE_MAX_WIDTH, IMAGE_ANALYSIS_WORKFLOW_ID, MyReviewQueuePanel, PayloadBody, PostPreview, ProcessingStateStrip, ReviewActionBar, SelectedAssetStrip, SlideAnalysisPanel, SourceAssetsPanel, contentManifest, cropStyle, derivativeObjectKey, deriveContentBoard, firstLine, formatElapsed, getContentItemIdentity, isDerivativeStale, lastLine, readStoredAnalysis, renderCropToJpeg, resolveContentStepResource, resolveContentVocabulary, swapFirstLine, swapLastLine, useContentConfig };
|
|
2736
|
+
export type { AlternatesPanelProps, AssetCropEditorProps, CaptionPanelProps, ContentAlternateOption, ContentBoard, ContentBoardCard, ContentBoardColumn, ContentBoardGate, ContentConfig, ContentDistributionDetailPageSlots, ContentDistributionsPageSlots, ContentFidelityCheck, ContentItemReviewPageSlots, ContentItemsPageSlots, ContentNoun, ContentOverviewPageSlots, ContentPayloadField, ContentPipelineBoardPageSlots, ContentPipelineBoardPageSlots as ContentPipelineWorkspacePageSlots, ContentPipelinesPageSlots, ContentProcessingStatus, ContentProcessingStep, ContentReviewAction, ContentReviewCardProps, ContentSidebarMiddleProps, ContentSidebarProps, ContentStepPanel, ContentStepPanelMap, ContentStepResourceBinding, ContentVocabulary, ContentWorkspaceShellProps, ContentWorkspaceStartControls, ContentWorkspaceState, CropAspectOption, MyReviewQueuePanelProps, PayloadBodyProps, PostPreviewProps, PostPreviewSlide, ProcessingStateStripProps, RenderCropOptions, ReviewActionBarProps, ReviewMode, SelectedAssetStripProps, SlideAnalysisPanelProps, SourceAssetsPanelProps, StoredSlideAnalysis };
|