formica-ui-lib 1.0.249 → 1.0.251

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 (32) hide show
  1. package/dist/componentProps/molecules/cards/issuegroupreviewcard/IssueGroupReviewCardProps.d.ts +2 -0
  2. package/dist/componentProps/organisms/collections/localizationmarketcollection/LocalizationMarketCollectionProps.d.ts +1 -0
  3. package/dist/componentProps/organisms/forms/dynamicform/DynamicFormProps.d.ts +1 -0
  4. package/dist/componentProps/templates/admin/authstatus/AdminAuthStatusTemplateProps.d.ts +27 -0
  5. package/dist/componentProps/templates/admin/dashboard/AdminDashboardTemplateProps.d.ts +9 -0
  6. package/dist/componentProps/templates/admin/dataissues/AdminDataIssuesTemplateProps.d.ts +63 -0
  7. package/dist/componentProps/templates/admin/dataissuessource/AdminDataIssuesSourceTemplateProps.d.ts +19 -0
  8. package/dist/componentProps/templates/admin/datareport/AdminDataReportTemplateProps.d.ts +12 -0
  9. package/dist/componentProps/templates/admin/issuegroupreview/AdminIssueGroupReviewTemplateProps.d.ts +10 -0
  10. package/dist/componentProps/templates/admin/marketreadiness/MarketReadinessTemplateProps.d.ts +130 -0
  11. package/dist/componentProps/templates/admin/marketreadinesslanding/MarketReadinessLandingTemplateProps.d.ts +33 -0
  12. package/dist/componentProps/templates/admin/productjourney/ProductJourneyTemplateProps.d.ts +68 -0
  13. package/dist/componentProps/templates/admin/shared/AdminPageTemplateShellProps.d.ts +10 -0
  14. package/dist/componentProps/templates/admin/shared/AdminTemplateStatus.d.ts +8 -0
  15. package/dist/componentProps/templates/admin/users/AdminUsersTemplateProps.d.ts +78 -0
  16. package/dist/index.cjs +8 -8
  17. package/dist/index.d.ts +19 -8
  18. package/dist/index.js +2405 -1443
  19. package/dist/stories/templates/admin/authstatus/AdminAuthStatusTemplate.d.ts +4 -0
  20. package/dist/stories/templates/admin/dashboard/AdminDashboardTemplate.d.ts +4 -0
  21. package/dist/stories/templates/admin/marketreadiness/MarketReadinessTemplate.d.ts +4 -0
  22. package/dist/stories/templates/admin/marketreadinesslanding/MarketReadinessLandingTemplate.d.ts +4 -0
  23. package/dist/stories/templates/admin/productjourney/ProductJourneyTemplate.d.ts +4 -0
  24. package/dist/stories/templates/admin/shared/AdminPageTemplateShell.d.ts +4 -0
  25. package/dist/stories/templates/admin/shared/AdminTemplateStatusPanel.d.ts +7 -0
  26. package/dist/stories/templates/admin/users/AdminUsersTemplate.d.ts +4 -0
  27. package/dist/tailwind.css +1 -1
  28. package/package.json +7 -7
  29. package/dist/componentProps/templates/admin/productlocalization/ProductLocalizationTemplateProps.d.ts +0 -96
  30. package/dist/componentProps/templates/admin/skudashboard/AdminSkuDashboardTemplateProps.d.ts +0 -25
  31. package/dist/stories/templates/admin/productlocalization/ProductLocalizationTemplate.d.ts +0 -4
  32. package/dist/stories/templates/admin/skudashboard/AdminSkuDashboardTemplate.d.ts +0 -4
@@ -14,6 +14,8 @@ export interface IssueGroupReviewCardProps {
14
14
  resolveLabel?: string;
15
15
  selectLabel?: string;
16
16
  selectedLabel?: string;
17
+ resolveDisabled?: boolean;
18
+ statusMessage?: string;
17
19
  ariaLabel?: string;
18
20
  onRecordSelect?: (payload: IssueRecordCandidateSelectPayload) => void;
19
21
  onResolveClick?: (payload: IssueGroupResolvePayload) => void;
@@ -16,6 +16,7 @@ export interface LocalizationMarketCollectionProps {
16
16
  saveAndNextLabel?: string;
17
17
  saveAndNextHelpText?: string;
18
18
  saveAndNextDisabled?: boolean;
19
+ localizationSelectionDisabled?: boolean;
19
20
  onLocalizationSelect?: (payload: LocalizationStatusCardClickPayload) => void;
20
21
  onSaveAndNext?: () => void;
21
22
  }
@@ -54,6 +54,7 @@ export interface DynamicFormProps {
54
54
  severityDisplay?: DynamicFormSeverityDisplay;
55
55
  submitLabel?: string;
56
56
  cancelLabel?: string;
57
+ cancelDisabled?: boolean;
57
58
  submitDisabled?: boolean;
58
59
  showActions?: boolean;
59
60
  validationSummary?: React.ReactNode;
@@ -0,0 +1,27 @@
1
+ export type AdminAuthStatusTone = "loading" | "info" | "warning" | "error";
2
+ export interface AdminAuthStatusAction {
3
+ id: string;
4
+ label: string;
5
+ iconName?: string;
6
+ disabled?: boolean;
7
+ loading?: boolean;
8
+ }
9
+ export interface AdminAuthStatusInformationGroup {
10
+ id: string;
11
+ title: string;
12
+ items: string[];
13
+ }
14
+ export interface AdminAuthStatusActionPayload {
15
+ actionId: string;
16
+ }
17
+ export interface AdminAuthStatusTemplateProps {
18
+ eyebrow?: string;
19
+ title: string;
20
+ description: string;
21
+ detail?: string;
22
+ tone: AdminAuthStatusTone;
23
+ primaryAction?: AdminAuthStatusAction;
24
+ secondaryAction?: AdminAuthStatusAction;
25
+ informationGroups?: AdminAuthStatusInformationGroup[];
26
+ onActionClick?: (payload: AdminAuthStatusActionPayload) => void;
27
+ }
@@ -0,0 +1,9 @@
1
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
+ export interface AdminDashboardTemplateProps {
3
+ pageTitle: string;
4
+ welcomeTitle: string;
5
+ welcomeMessage: string;
6
+ aboutTitle: string;
7
+ aboutDescription: string;
8
+ sideNavProps: AdminSideNavProps;
9
+ }
@@ -4,6 +4,7 @@ import type { DataIssueActionCardActionPayload, DataIssueActionCardProps } from
4
4
  import type { DataIssueMetricCardProps } from "../../../molecules/cards/dataissuemetriccard/DataIssueMetricCardProps";
5
5
  import type { IssueTypeBreakdownCardProps } from "../../../molecules/cards/issuetypebreakdowncard/IssueTypeBreakdownCardProps";
6
6
  import type { RecommendedNextStepCardProps } from "../../../molecules/cards/recommendednextstepcard/RecommendedNextStepCardProps";
7
+ import type { AdminTemplateStatus } from "../shared/AdminTemplateStatus";
7
8
  export type AdminDataIssuesDataSourceType = "salsify-export" | "salsify-api";
8
9
  export interface AdminDataIssuesDataSource {
9
10
  id: string;
@@ -81,21 +82,83 @@ export interface AdminDataIssuesResponse {
81
82
  report?: AdminDataIssuesLatestReport;
82
83
  dataSource?: AdminDataIssuesDataSource | null;
83
84
  }
85
+ export type AdminDataIssuesOperationStatus = "idle" | "pending" | "success" | "error";
86
+ export interface AdminDataIssuesCacheActions {
87
+ status: AdminDataIssuesOperationStatus;
88
+ title: string;
89
+ description: string;
90
+ statusMessage?: string;
91
+ updateLabel: string;
92
+ updateDisabled?: boolean;
93
+ rebuildLabel: string;
94
+ rebuildDisabled?: boolean;
95
+ }
96
+ export interface AdminDataIssuesRebuildConfirmation {
97
+ open: boolean;
98
+ title: string;
99
+ message: string;
100
+ warning?: string;
101
+ cancelLabel: string;
102
+ confirmLabel: string;
103
+ pending?: boolean;
104
+ }
105
+ export type AdminDataIssuesResolveDialog = {
106
+ open: false;
107
+ } | {
108
+ open: true;
109
+ mode: "confirm";
110
+ title: string;
111
+ previewStatus: "loading" | "ready" | "error";
112
+ message?: string;
113
+ errorMessage?: string;
114
+ cancelLabel: string;
115
+ confirmLabel: string;
116
+ confirmDisabled?: boolean;
117
+ confirming?: boolean;
118
+ } | {
119
+ open: true;
120
+ mode: "progress";
121
+ title: string;
122
+ statusLabel: string;
123
+ message: string;
124
+ percentComplete: number;
125
+ completedLabel?: string;
126
+ failedLabel?: string;
127
+ errorMessages?: string[];
128
+ pollingWarning?: string;
129
+ retryLabel?: string;
130
+ retryDisabled?: boolean;
131
+ closeLabel: string;
132
+ };
84
133
  export interface AdminDataIssuesTemplateProps {
85
134
  pageTitle: string;
86
135
  pageDescription?: string;
87
136
  lastScanLabel?: string;
88
137
  updateCacheLabel?: string;
89
138
  deleteAndRebuildLabel?: string;
139
+ changeProductDataLabel?: string;
90
140
  sideNavProps: AdminSideNavProps;
141
+ status?: AdminTemplateStatus;
142
+ /** @deprecated Map report data to the card props in Data Forge instead. */
91
143
  dataIssuesResponse?: AdminDataIssuesResponse | null;
92
144
  dataHealthSummaryCardProps?: DataHealthSummaryCardProps;
93
145
  metricCardProps?: DataIssueMetricCardProps[];
94
146
  issueTypeBreakdownCardProps?: IssueTypeBreakdownCardProps;
95
147
  recommendedNextStepCardProps?: RecommendedNextStepCardProps;
96
148
  issueActionCardProps?: DataIssueActionCardProps[];
149
+ cacheActions?: AdminDataIssuesCacheActions;
150
+ rebuildConfirmation?: AdminDataIssuesRebuildConfirmation;
151
+ resolveDialog?: AdminDataIssuesResolveDialog;
152
+ onRetryClick?: () => void;
153
+ onRecalculateClick?: () => void;
154
+ onChangeProductDataClick?: () => void;
97
155
  onUpdateCacheClick?: () => void;
98
156
  onDeleteAndRebuildClick?: () => void;
157
+ onRebuildConfirm?: () => void;
158
+ onRebuildCancel?: () => void;
159
+ onResolveConfirm?: () => void;
160
+ onResolveClose?: () => void;
161
+ onResolveRetry?: () => void;
99
162
  onIssuePrimaryActionClick?: (payload: DataIssueActionCardActionPayload) => void;
100
163
  onIssueSecondaryActionClick?: (payload: DataIssueActionCardActionPayload) => void;
101
164
  }
@@ -1,6 +1,12 @@
1
1
  import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
2
  import type { DropdownOption } from "../../../atoms/dropdown/DropdownProps";
3
3
  import type { AdminDataIssuesDataSourceType } from "../dataissues/AdminDataIssuesTemplateProps";
4
+ import type { AdminTemplateStatus } from "../shared/AdminTemplateStatus";
5
+ export type AdminDataIssuesActionStatus = "idle" | "pending" | "success" | "error";
6
+ export interface AdminDataIssuesSelectedFile {
7
+ name: string;
8
+ sizeLabel?: string;
9
+ }
4
10
  export interface AdminDataIssuesDataSourceSummary {
5
11
  id: string;
6
12
  source: {
@@ -26,6 +32,7 @@ export interface AdminDataIssuesSourceTemplateProps {
26
32
  pageTitle: string;
27
33
  pageDescription?: string;
28
34
  sideNavProps: AdminSideNavProps;
35
+ status?: AdminTemplateStatus;
29
36
  dataSource?: AdminDataIssuesDataSourceSummary | null;
30
37
  existingDataTitle?: string;
31
38
  existingDataEmptyTitle?: string;
@@ -36,6 +43,12 @@ export interface AdminDataIssuesSourceTemplateProps {
36
43
  uploadDropLabel?: string;
37
44
  uploadBrowseLabel?: string;
38
45
  uploadHelpText?: string;
46
+ selectedFile?: AdminDataIssuesSelectedFile;
47
+ uploadStatus?: AdminDataIssuesActionStatus;
48
+ uploadStatusMessage?: string;
49
+ uploadLabel?: string;
50
+ uploadDisabled?: boolean;
51
+ clearFileLabel?: string;
39
52
  directDownloadTitle?: string;
40
53
  directDownloadDescription?: string;
41
54
  rangeLabel?: string;
@@ -43,8 +56,14 @@ export interface AdminDataIssuesSourceTemplateProps {
43
56
  rangeOptions: DropdownOption[];
44
57
  selectedRangeValue?: string;
45
58
  directDownloadLabel?: string;
59
+ downloadStatus?: AdminDataIssuesActionStatus;
60
+ downloadStatusMessage?: string;
61
+ downloadDisabled?: boolean;
46
62
  onUseExistingDataClick?: () => void;
47
63
  onReportFileSelect?: (payload: AdminDataIssuesFileSelectPayload) => void;
64
+ onUploadClick?: () => void;
65
+ onClearSelectedFileClick?: () => void;
48
66
  onRangeChange?: (payload: AdminDataIssuesRangeChangePayload) => void;
49
67
  onDirectDownloadClick?: () => void;
68
+ onRetryClick?: () => void;
50
69
  }
@@ -1,10 +1,22 @@
1
1
  import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
2
  import type { DataReportCollectionProps } from "../../../organisms/collections/datareportcollection/DataReportCollectionProps";
3
+ import type { AdminTemplateStatus } from "../shared/AdminTemplateStatus";
4
+ export interface AdminDataReportPagination {
5
+ previousLabel: string;
6
+ nextLabel: string;
7
+ previousDisabled: boolean;
8
+ nextDisabled: boolean;
9
+ }
3
10
  export interface AdminDataReportTemplateProps {
4
11
  pageTitle: string;
5
12
  pageDescription?: string;
6
13
  backLabel?: string;
7
14
  sideNavProps: AdminSideNavProps;
8
15
  report: DataReportCollectionProps;
16
+ status?: AdminTemplateStatus;
17
+ pagination?: AdminDataReportPagination;
9
18
  onBackClick?: () => void;
19
+ onRetryClick?: () => void;
20
+ onPreviousPageClick?: () => void;
21
+ onNextPageClick?: () => void;
10
22
  }
@@ -1,6 +1,7 @@
1
1
  import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
2
  import type { IssueRecordCandidateSelectPayload } from "../../../molecules/cards/issuerecordcandidatecard/IssueRecordCandidateCardProps";
3
3
  import type { IssueGroupResolvePayload } from "../../../molecules/cards/issuegroupreviewcard/IssueGroupReviewCardProps";
4
+ import type { AdminTemplateStatus } from "../shared/AdminTemplateStatus";
4
5
  export interface AdminIssueGroupReviewRecord {
5
6
  hierarchyLevel?: string;
6
7
  itemPartNumber?: string;
@@ -39,9 +40,18 @@ export interface AdminIssueGroupReviewTemplateProps {
39
40
  sideNavProps: AdminSideNavProps;
40
41
  issueGroupResponse: AdminIssueGroupReviewResponse;
41
42
  selectedRecordIds?: Record<string, string>;
43
+ status?: AdminTemplateStatus;
44
+ groupActionStates?: AdminIssueGroupActionState[];
42
45
  onBackClick?: () => void;
43
46
  onPreviousPageClick?: () => void;
44
47
  onNextPageClick?: () => void;
45
48
  onRecordSelect?: (payload: IssueRecordCandidateSelectPayload) => void;
46
49
  onResolveGroupClick?: (payload: IssueGroupResolvePayload) => void;
50
+ onRetryClick?: () => void;
51
+ }
52
+ export interface AdminIssueGroupActionState {
53
+ groupId: string;
54
+ resolveLabel?: string;
55
+ resolveDisabled?: boolean;
56
+ statusMessage?: string;
47
57
  }
@@ -0,0 +1,130 @@
1
+ import type { DynamicFormFieldConfig, DynamicFormFieldValue } from "../../../organisms/forms/dynamicform/DynamicFormProps";
2
+ import type { LocalizationMarketItem } from "../../../organisms/collections/localizationmarketcollection/LocalizationMarketCollectionProps";
3
+ import type { LocalizationStatusCardClickPayload } from "../../../molecules/cards/localizationstatuscard/LocalizationStatusCardProps";
4
+ import type { CommerceSyncPanelProps } from "../../../organisms/sections/commercesyncpanel/CommerceSyncPanelProps";
5
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
6
+ export type MarketReadinessTabId = string;
7
+ export interface MarketReadinessProduct {
8
+ name: string;
9
+ sku: string;
10
+ partNumber: string;
11
+ imageUrl: string;
12
+ imageAlt: string;
13
+ statusLabel: string;
14
+ completedLocalizationCount: number;
15
+ requiredLocalizationCount: number;
16
+ requiredMarketsLabel: string;
17
+ hierarchy?: MarketReadinessHierarchy;
18
+ }
19
+ export interface MarketReadinessHierarchy {
20
+ parentId: string;
21
+ levelLabel: string;
22
+ status: "valid" | "missing";
23
+ statusLabel: string;
24
+ }
25
+ export interface MarketReadinessActiveRecord {
26
+ id: string;
27
+ heading: string;
28
+ completionStatus: "complete" | "incomplete";
29
+ completionStatusLabel: string;
30
+ saveStatus: MarketReadinessSaveStatus;
31
+ saveStatusLabel: string;
32
+ saveErrorMessage?: string;
33
+ lastSavedLabel?: string;
34
+ missingRequiredFieldLabels: string[];
35
+ }
36
+ export type MarketReadinessSaveStatus = "saved" | "unsaved" | "saving" | "error";
37
+ interface MarketReadinessTabBase {
38
+ id: MarketReadinessTabId;
39
+ label: string;
40
+ heading?: string;
41
+ description?: string;
42
+ }
43
+ export interface MarketReadinessFormTab extends MarketReadinessTabBase {
44
+ type: "form";
45
+ fields: DynamicFormFieldConfig[];
46
+ }
47
+ export interface MarketReadinessInformationTab extends MarketReadinessTabBase {
48
+ type: "information";
49
+ fields: DynamicFormFieldConfig[];
50
+ }
51
+ export interface MarketReadinessCommerceSyncTab extends MarketReadinessTabBase {
52
+ type: "commerceSync";
53
+ panel: Omit<CommerceSyncPanelProps, "onLxSyncClick" | "onBigCommerceSyncClick" | "onRefreshClick">;
54
+ }
55
+ export type MarketReadinessTab = MarketReadinessFormTab | MarketReadinessInformationTab | MarketReadinessCommerceSyncTab;
56
+ export interface MarketReadinessSaveControls {
57
+ cancelLabel: string;
58
+ cancelDisabled?: boolean;
59
+ saveLabel: string;
60
+ saveDisabled: boolean;
61
+ saveAndNextLabel: string;
62
+ saveAndNextHelpText?: string;
63
+ saveAndNextDisabled: boolean;
64
+ localizationSelectionDisabled?: boolean;
65
+ tabSelectionDisabled?: boolean;
66
+ }
67
+ export interface MarketReadinessNotice {
68
+ tone: "info" | "warning" | "error" | "success";
69
+ title?: string;
70
+ message: string;
71
+ actionLabel?: string;
72
+ }
73
+ export interface MarketReadinessTemplateData {
74
+ pageTitle: string;
75
+ pageDescription?: string;
76
+ product: MarketReadinessProduct;
77
+ localization: MarketReadinessActiveRecord;
78
+ markets: LocalizationMarketItem[];
79
+ tabs: MarketReadinessTab[];
80
+ activeTabId: MarketReadinessTabId;
81
+ saveControls: MarketReadinessSaveControls;
82
+ notice?: MarketReadinessNotice;
83
+ }
84
+ export interface MarketReadinessFieldChangePayload {
85
+ localizationId: string;
86
+ tabId: MarketReadinessTabId;
87
+ fieldId: string;
88
+ value: DynamicFormFieldValue;
89
+ }
90
+ export interface MarketReadinessTabSelectPayload {
91
+ tabId: MarketReadinessTabId;
92
+ label: string;
93
+ }
94
+ export interface MarketReadinessActionPayload {
95
+ localizationId: string;
96
+ }
97
+ export interface MarketReadinessSyncActionPayload {
98
+ localizationId: string;
99
+ sku: string;
100
+ }
101
+ interface MarketReadinessTemplateCallbacks {
102
+ sideNavProps?: AdminSideNavProps;
103
+ data: MarketReadinessTemplateData;
104
+ onLocalizationSelect?: (payload: LocalizationStatusCardClickPayload) => void;
105
+ onTabSelect?: (payload: MarketReadinessTabSelectPayload) => void;
106
+ onFieldChange?: (payload: MarketReadinessFieldChangePayload) => void;
107
+ onSave?: (payload: MarketReadinessActionPayload) => void;
108
+ onCancel?: (payload: MarketReadinessActionPayload) => void;
109
+ onSaveAndNext?: (payload: MarketReadinessActionPayload) => void;
110
+ onLxSyncClick?: (payload: MarketReadinessSyncActionPayload) => void;
111
+ onBigCommerceSyncClick?: (payload: MarketReadinessSyncActionPayload) => void;
112
+ onCommerceRefreshClick?: (payload: MarketReadinessSyncActionPayload) => void;
113
+ onNoticeActionClick?: () => void;
114
+ }
115
+ export type MarketReadinessTemplateProps = (MarketReadinessTemplateCallbacks & {
116
+ state?: "ready";
117
+ }) | {
118
+ state: "loading";
119
+ sideNavProps: AdminSideNavProps;
120
+ pageTitle: string;
121
+ message?: string;
122
+ } | {
123
+ state: "error" | "notFound" | "empty";
124
+ sideNavProps: AdminSideNavProps;
125
+ pageTitle: string;
126
+ message: string;
127
+ actionLabel?: string;
128
+ onActionClick?: () => void;
129
+ };
130
+ export {};
@@ -0,0 +1,33 @@
1
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
+ export type MarketReadinessLandingStatus = "idle" | "checking" | "error";
3
+ export interface MarketReadinessSkuChangePayload {
4
+ value: string;
5
+ }
6
+ export interface MarketReadinessSkuActionPayload {
7
+ sku: string;
8
+ }
9
+ export interface MarketReadinessLandingTemplateProps {
10
+ pageTitle: string;
11
+ pageDescription?: string;
12
+ sideNavProps: AdminSideNavProps;
13
+ getStartedTitle?: string;
14
+ getStartedDescription?: string;
15
+ skuValue: string;
16
+ skuLabel?: string;
17
+ skuPlaceholder?: string;
18
+ skuHelpText?: string;
19
+ status: MarketReadinessLandingStatus;
20
+ statusMessage?: string;
21
+ openExistingLabel?: string;
22
+ openExistingDisabled?: boolean;
23
+ createNewPrompt?: string;
24
+ createNewDescription?: string;
25
+ createNewLabel?: string;
26
+ createNewHelpText?: string;
27
+ createNewDisabled?: boolean;
28
+ retryLabel?: string;
29
+ onSkuChange: (payload: MarketReadinessSkuChangePayload) => void;
30
+ onOpenExistingClick: (payload: MarketReadinessSkuActionPayload) => void;
31
+ onCreateNewClick: (payload: MarketReadinessSkuActionPayload) => void;
32
+ onRetryClick?: () => void;
33
+ }
@@ -0,0 +1,68 @@
1
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
+ import type { DynamicFormProps } from "../../../organisms/forms/dynamicform/DynamicFormProps";
3
+ import type { DynamicFormFieldChangePayload, DynamicFormFieldValue } from "../../../organisms/forms/dynamicform/DynamicFormProps";
4
+ import type { MessageListCardProps } from "../../../molecules/cards/messagelistcard/MessageListCardProps";
5
+ import type { SearchComboboxOption, SearchComboboxSelectPayload } from "../../../molecules/searchcombobox/SearchComboboxProps";
6
+ import type { StatusFlowConnectorProps } from "../../../molecules/statusflowconnector/StatusFlowConnectorProps";
7
+ import type { StatusSummaryCardProps } from "../../../molecules/cards/statussummarycard/StatusSummaryCardProps";
8
+ import type { StatusFlowGroupProps } from "../../../organisms/sections/statusflowgroup/StatusFlowGroupProps";
9
+ import type { StatusFlowPanelProps } from "../../../organisms/sections/statusflowpanel/StatusFlowPanelProps";
10
+ export interface ProductJourneySearchPayload {
11
+ value: string;
12
+ }
13
+ export interface ProductJourneyCheckpoint {
14
+ type: "checkpoint";
15
+ id: string;
16
+ cardProps: Omit<StatusSummaryCardProps, "id" | "variant" | "onCardClick">;
17
+ }
18
+ export interface ProductJourneyConnector {
19
+ type: "connector";
20
+ id: string;
21
+ connectorProps: Omit<StatusFlowConnectorProps, "variant">;
22
+ }
23
+ export interface ProductJourneyCheckpointGroup {
24
+ type: "group";
25
+ id: string;
26
+ groupProps: Omit<StatusFlowGroupProps, "children" | "variant">;
27
+ items: ProductJourneyFlowItem[];
28
+ }
29
+ export type ProductJourneyFlowItem = ProductJourneyCheckpoint | ProductJourneyConnector | ProductJourneyCheckpointGroup;
30
+ export interface ProductJourneyCheckpointSelectPayload {
31
+ checkpointId: string;
32
+ title: string;
33
+ description?: string;
34
+ status: StatusSummaryCardProps["status"];
35
+ statusLabel: string;
36
+ }
37
+ export interface ProductJourneyCheckpointFieldChangePayload extends DynamicFormFieldChangePayload {
38
+ checkpointId: string;
39
+ value: DynamicFormFieldValue;
40
+ }
41
+ export interface ProductJourneyCheckpointModalChangePayload {
42
+ open: boolean;
43
+ checkpointId: string | null;
44
+ }
45
+ export interface ProductJourneyTemplateProps {
46
+ pageTitle: string;
47
+ searchPlaceholder?: string;
48
+ searchValue: string;
49
+ searchOptions?: SearchComboboxOption[];
50
+ checkButtonLabel?: string;
51
+ sideNavProps: AdminSideNavProps;
52
+ state: NonNullable<StatusFlowPanelProps["state"]>;
53
+ statusFlowPanelProps: Omit<StatusFlowPanelProps, "state" | "diagram" | "legend" | "actions">;
54
+ flowItems: ProductJourneyFlowItem[];
55
+ messageListCardProps: MessageListCardProps;
56
+ selectedCheckpointId: string | null;
57
+ checkpointModalOpen: boolean;
58
+ checkpointFormPropsById: Partial<Record<string, DynamicFormProps>>;
59
+ productDataModalTitle?: string;
60
+ productDataModalDescription?: string;
61
+ onSearchChange?: (payload: ProductJourneySearchPayload) => void;
62
+ onSearchClear?: (payload: ProductJourneySearchPayload) => void;
63
+ onSearchOptionSelect?: (payload: SearchComboboxSelectPayload) => void;
64
+ onCheckClick?: (payload: ProductJourneySearchPayload) => void;
65
+ onCheckpointSelect?: (payload: ProductJourneyCheckpointSelectPayload) => void;
66
+ onCheckpointModalChange?: (payload: ProductJourneyCheckpointModalChangePayload) => void;
67
+ onCheckpointFieldChange?: (payload: ProductJourneyCheckpointFieldChangePayload) => void;
68
+ }
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
3
+ export interface AdminPageTemplateShellProps {
4
+ pageTitle: string;
5
+ pageDescription?: string;
6
+ sideNavProps: AdminSideNavProps;
7
+ headerLeading?: ReactNode;
8
+ headerActions?: ReactNode;
9
+ children: ReactNode;
10
+ }
@@ -0,0 +1,8 @@
1
+ export type AdminTemplateState = "loading" | "ready" | "empty" | "error";
2
+ export interface AdminTemplateStatus {
3
+ state: AdminTemplateState;
4
+ title?: string;
5
+ message?: string;
6
+ detail?: string;
7
+ retryLabel?: string;
8
+ }
@@ -0,0 +1,78 @@
1
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
2
+ import type { DataReportRowUpdatePayload } from "../../../organisms/collections/datareportcollection/DataReportCollectionProps";
3
+ export type AdminUsersTemplateState = "loading" | "error" | "ready";
4
+ export type AdminUsersRole = "user" | "admin";
5
+ export interface AdminUsersRoleOption {
6
+ label: string;
7
+ value: AdminUsersRole;
8
+ }
9
+ export interface AdminUsersCreateDraft {
10
+ email: string;
11
+ role: AdminUsersRole;
12
+ active: boolean;
13
+ }
14
+ export interface AdminUsersTemplateUser {
15
+ email: string;
16
+ role: AdminUsersRole;
17
+ active: boolean;
18
+ isCurrentUser?: boolean;
19
+ activeToggleDisabled?: boolean;
20
+ removeDisabled?: boolean;
21
+ }
22
+ export interface AdminUsersEmailChangePayload {
23
+ value: string;
24
+ }
25
+ export interface AdminUsersRoleChangePayload {
26
+ role: AdminUsersRole;
27
+ }
28
+ export interface AdminUsersActiveChangePayload {
29
+ active: boolean;
30
+ }
31
+ export interface AdminUsersCreatePayload {
32
+ user: AdminUsersCreateDraft;
33
+ }
34
+ export interface AdminUsersUserActionPayload {
35
+ user: AdminUsersTemplateUser;
36
+ }
37
+ export interface AdminUsersDeleteConfirmPayload {
38
+ email: string;
39
+ }
40
+ export interface AdminUsersTemplateProps {
41
+ pageTitle: string;
42
+ pageDescription?: string;
43
+ sideNavProps: AdminSideNavProps;
44
+ hasAdminAccess: boolean;
45
+ accessRequiredTitle?: string;
46
+ accessRequiredMessage?: string;
47
+ state: AdminUsersTemplateState;
48
+ loadingMessage?: string;
49
+ errorMessage?: string;
50
+ createUserDraft: AdminUsersCreateDraft;
51
+ roleOptions: AdminUsersRoleOption[];
52
+ users: AdminUsersTemplateUser[];
53
+ createMessage?: string;
54
+ updateMessage?: string;
55
+ deleteMessage?: string;
56
+ createPending?: boolean;
57
+ updatePending?: boolean;
58
+ deletePending?: boolean;
59
+ deleteUserEmail: string | null;
60
+ addUserLabel?: string;
61
+ addingUserLabel?: string;
62
+ updateLabel?: string;
63
+ updatingLabel?: string;
64
+ activateLabel?: string;
65
+ suspendLabel?: string;
66
+ removeLabel?: string;
67
+ removingLabel?: string;
68
+ cancelLabel?: string;
69
+ onNewUserEmailChange?: (payload: AdminUsersEmailChangePayload) => void;
70
+ onNewUserRoleChange?: (payload: AdminUsersRoleChangePayload) => void;
71
+ onNewUserActiveChange?: (payload: AdminUsersActiveChangePayload) => void;
72
+ onCreateUser?: (payload: AdminUsersCreatePayload) => void;
73
+ onRowUpdate?: (payload: DataReportRowUpdatePayload) => void;
74
+ onUserActiveToggle?: (payload: AdminUsersUserActionPayload) => void;
75
+ onDeleteUserRequest?: (payload: AdminUsersUserActionPayload) => void;
76
+ onDeleteModalClose?: () => void;
77
+ onDeleteUserConfirm?: (payload: AdminUsersDeleteConfirmPayload) => void;
78
+ }