formica-ui-lib 1.0.249 → 1.0.250

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 (27) 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/productjourney/ProductJourneyTemplateProps.d.ts +68 -0
  11. package/dist/componentProps/templates/admin/productlocalization/ProductLocalizationTemplateProps.d.ts +40 -6
  12. package/dist/componentProps/templates/admin/shared/AdminPageTemplateShellProps.d.ts +10 -0
  13. package/dist/componentProps/templates/admin/shared/AdminTemplateStatus.d.ts +8 -0
  14. package/dist/componentProps/templates/admin/users/AdminUsersTemplateProps.d.ts +78 -0
  15. package/dist/index.cjs +8 -8
  16. package/dist/index.d.ts +16 -7
  17. package/dist/index.js +2232 -1440
  18. package/dist/stories/templates/admin/authstatus/AdminAuthStatusTemplate.d.ts +4 -0
  19. package/dist/stories/templates/admin/dashboard/AdminDashboardTemplate.d.ts +4 -0
  20. package/dist/stories/templates/admin/productjourney/ProductJourneyTemplate.d.ts +4 -0
  21. package/dist/stories/templates/admin/shared/AdminPageTemplateShell.d.ts +4 -0
  22. package/dist/stories/templates/admin/shared/AdminTemplateStatusPanel.d.ts +7 -0
  23. package/dist/stories/templates/admin/users/AdminUsersTemplate.d.ts +4 -0
  24. package/dist/tailwind.css +1 -1
  25. package/package.json +7 -7
  26. package/dist/componentProps/templates/admin/skudashboard/AdminSkuDashboardTemplateProps.d.ts +0 -25
  27. 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,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
+ }
@@ -2,6 +2,7 @@ import type { DynamicFormFieldConfig, DynamicFormFieldValue } from "../../../org
2
2
  import type { LocalizationMarketItem } from "../../../organisms/collections/localizationmarketcollection/LocalizationMarketCollectionProps";
3
3
  import type { LocalizationStatusCardClickPayload } from "../../../molecules/cards/localizationstatuscard/LocalizationStatusCardProps";
4
4
  import type { CommerceSyncPanelProps } from "../../../organisms/sections/commercesyncpanel/CommerceSyncPanelProps";
5
+ import type { AdminSideNavProps } from "../../../organisms/navigation/AdminSideNavProps";
5
6
  export type ProductLocalizationTabId = string;
6
7
  export interface ProductLocalizationProduct {
7
8
  name: string;
@@ -26,11 +27,13 @@ export interface ProductLocalizationActiveRecord {
26
27
  heading: string;
27
28
  completionStatus: "complete" | "incomplete";
28
29
  completionStatusLabel: string;
29
- saveStatus: "saved" | "unsaved";
30
+ saveStatus: ProductLocalizationSaveStatus;
30
31
  saveStatusLabel: string;
31
- lastSavedLabel: string;
32
+ saveErrorMessage?: string;
33
+ lastSavedLabel?: string;
32
34
  missingRequiredFieldLabels: string[];
33
35
  }
36
+ export type ProductLocalizationSaveStatus = "saved" | "unsaved" | "saving" | "error";
34
37
  interface ProductLocalizationTabBase {
35
38
  id: ProductLocalizationTabId;
36
39
  label: string;
@@ -52,11 +55,20 @@ export interface ProductLocalizationCommerceSyncTab extends ProductLocalizationT
52
55
  export type ProductLocalizationTab = ProductLocalizationFormTab | ProductLocalizationInformationTab | ProductLocalizationCommerceSyncTab;
53
56
  export interface ProductLocalizationSaveControls {
54
57
  cancelLabel: string;
58
+ cancelDisabled?: boolean;
55
59
  saveLabel: string;
56
60
  saveDisabled: boolean;
57
61
  saveAndNextLabel: string;
58
62
  saveAndNextHelpText?: string;
59
63
  saveAndNextDisabled: boolean;
64
+ localizationSelectionDisabled?: boolean;
65
+ tabSelectionDisabled?: boolean;
66
+ }
67
+ export interface ProductLocalizationNotice {
68
+ tone: "info" | "warning" | "error" | "success";
69
+ title?: string;
70
+ message: string;
71
+ actionLabel?: string;
60
72
  }
61
73
  export interface ProductLocalizationTemplateData {
62
74
  pageTitle: string;
@@ -67,6 +79,7 @@ export interface ProductLocalizationTemplateData {
67
79
  tabs: ProductLocalizationTab[];
68
80
  activeTabId: ProductLocalizationTabId;
69
81
  saveControls: ProductLocalizationSaveControls;
82
+ notice?: ProductLocalizationNotice;
70
83
  }
71
84
  export interface ProductLocalizationFieldChangePayload {
72
85
  localizationId: string;
@@ -81,7 +94,12 @@ export interface ProductLocalizationTabSelectPayload {
81
94
  export interface ProductLocalizationActionPayload {
82
95
  localizationId: string;
83
96
  }
84
- export interface ProductLocalizationTemplateProps {
97
+ export interface ProductLocalizationSyncActionPayload {
98
+ localizationId: string;
99
+ sku: string;
100
+ }
101
+ interface ProductLocalizationTemplateCallbacks {
102
+ sideNavProps?: AdminSideNavProps;
85
103
  data: ProductLocalizationTemplateData;
86
104
  onLocalizationSelect?: (payload: LocalizationStatusCardClickPayload) => void;
87
105
  onTabSelect?: (payload: ProductLocalizationTabSelectPayload) => void;
@@ -89,8 +107,24 @@ export interface ProductLocalizationTemplateProps {
89
107
  onSave?: (payload: ProductLocalizationActionPayload) => void;
90
108
  onCancel?: (payload: ProductLocalizationActionPayload) => void;
91
109
  onSaveAndNext?: (payload: ProductLocalizationActionPayload) => void;
92
- onLxSyncClick?: () => void;
93
- onBigCommerceSyncClick?: () => void;
94
- onCommerceRefreshClick?: () => void;
110
+ onLxSyncClick?: (payload: ProductLocalizationSyncActionPayload) => void;
111
+ onBigCommerceSyncClick?: (payload: ProductLocalizationSyncActionPayload) => void;
112
+ onCommerceRefreshClick?: (payload: ProductLocalizationSyncActionPayload) => void;
113
+ onNoticeActionClick?: () => void;
95
114
  }
115
+ export type ProductLocalizationTemplateProps = (ProductLocalizationTemplateCallbacks & {
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
+ };
96
130
  export {};
@@ -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
+ }