@evenicanpm/admin-integrate 1.8.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/documents/ProcessTask/fragments.ts +4 -0
  2. package/documents/ProcessTemplate/fragments.ts +30 -0
  3. package/documents/ProcessTemplate/list.ts +29 -0
  4. package/package.json +2 -2
  5. package/src/api/process-config/mutation/process-config-import.mutation.ts +1 -1
  6. package/src/api/templates/queries/get-field-values.query.ts +48 -0
  7. package/src/api/templates/queries/get-field-values.server.ts +9 -0
  8. package/src/api/templates/queries/index.ts +4 -0
  9. package/src/api/templates/queries/types.ts +2 -2
  10. package/src/api/templates/queries/validate-field-on-check.query.ts +22 -0
  11. package/src/api/templates/queries/validate-field-on-check.server.ts +30 -0
  12. package/src/api/templates/queries/validate-field-on-submit.server.ts +18 -0
  13. package/src/components/data-table/table-row.tsx +1 -1
  14. package/src/components/icons/up-down.tsx +1 -0
  15. package/src/components/integration-view/integration-view.tsx +10 -15
  16. package/src/components/integration-view/nodes/task-node.tsx +1 -1
  17. package/src/components/integration-view/utils/mapping.ts +10 -11
  18. package/src/components/list-filter/list-filter.tsx +2 -0
  19. package/src/components/templatesV2/inputs/FormikPageBody.tsx +191 -0
  20. package/src/components/templatesV2/inputs/context/FormModeContext.tsx +31 -0
  21. package/src/components/templatesV2/inputs/context/TemplateContext.tsx +37 -0
  22. package/src/components/templatesV2/inputs/field-names.ts +8 -0
  23. package/src/components/templatesV2/inputs/form-type.ts +48 -0
  24. package/src/components/templatesV2/inputs/index.tsx +33 -0
  25. package/src/components/templatesV2/inputs/input-type.ts +23 -0
  26. package/src/components/templatesV2/inputs/primitives/CheckboxInput.tsx +45 -0
  27. package/src/components/templatesV2/inputs/primitives/NumberInput.tsx +58 -0
  28. package/src/components/templatesV2/inputs/primitives/SelectorInput.tsx +111 -0
  29. package/src/components/templatesV2/inputs/primitives/TextInput.tsx +55 -0
  30. package/src/components/templatesV2/inputs/primitives/TextWithQueryInput.tsx +292 -0
  31. package/src/components/templatesV2/inputs/primitives/index.ts +10 -0
  32. package/src/components/templatesV2/inputs/renderers/index.ts +2 -0
  33. package/src/components/templatesV2/inputs/renderers/renderFormControl.tsx +376 -0
  34. package/src/components/templatesV2/inputs/renderers/renderSearchInput.tsx +129 -0
  35. package/src/components/templatesV2/inputs/search/MultiTextSearchInput.tsx +87 -0
  36. package/src/components/templatesV2/inputs/search/SearchInputWrapper.tsx +113 -0
  37. package/src/components/templatesV2/inputs/search/TextSearchInput.tsx +309 -0
  38. package/src/components/templatesV2/inputs/search/index.ts +4 -0
  39. package/src/components/templatesV2/inputs/search/search-query-key.ts +23 -0
  40. package/src/components/templatesV2/inputs/search/useFieldValuesOptions.ts +58 -0
  41. package/src/components/templatesV2/inputs/search/useSearchInput.ts +74 -0
  42. package/src/components/templatesV2/inputs/table/InputTable.tsx +259 -0
  43. package/src/components/templatesV2/inputs/table/index.ts +1 -0
  44. package/src/components/templatesV2/inputs/utils/applyTemplateConfig.ts +28 -0
  45. package/src/components/templatesV2/inputs/utils/arrangeInputs.ts +51 -0
  46. package/src/components/templatesV2/inputs/utils/index.ts +6 -0
  47. package/src/components/templatesV2/inputs/utils/parseQueryName.ts +20 -0
  48. package/src/components/templatesV2/inputs/utils/renderReadOnlyText.tsx +26 -0
  49. package/src/components/templatesV2/inputs/utils/selectors.ts +69 -0
  50. package/src/components/templatesV2/inputs/utils/toStringArray.ts +23 -0
  51. package/src/components/templatesV2/pageForm.tsx +151 -0
  52. package/src/components/{templates → templatesV2}/templates-list/templates-list-row.tsx +2 -1
  53. package/src/components/{templates → templatesV2}/templates-list/templates-list-table.tsx +2 -2
  54. package/src/components/{templates → templatesV2}/templates-list/templates-list.tsx +19 -28
  55. package/src/components/{templates → templatesV2}/types.tsx +12 -12
  56. package/src/components/templatesV2/validation/buildZodSchema.ts +216 -0
  57. package/src/components/templatesV2/validation/zodFormikValidate.ts +17 -0
  58. package/src/components/templatesV2/wizard.tsx +744 -0
  59. package/src/pages/integration-create/integration-create-steps.ts +8 -0
  60. package/src/pages/integration-create/integration-create.tsx +61 -14
  61. package/src/pages/integration-create/select-step.tsx +3 -3
  62. package/src/pages/integration-create/template-list-step.tsx +28 -3
  63. package/src/pages/integration-create/template-options-step.tsx +119 -0
  64. package/src/pages/integration-create/wizard-step.tsx +5 -4
  65. package/src/pages/integration-details/task-drawer/add-task.tsx +4 -4
  66. package/src/pages/integration-details/task-drawer/edit-task.tsx +3 -3
  67. package/src/components/templates/inputs/index.tsx +0 -1392
  68. package/src/components/templates/wizard.tsx +0 -737
  69. /package/src/components/{templates → templatesV2}/index.ts +0 -0
  70. /package/src/components/{templates → templatesV2}/template-filter.ts +0 -0
  71. /package/src/components/{templates → templatesV2}/templates-list/index.ts +0 -0
@@ -0,0 +1,8 @@
1
+ export const INTEGRATION_CREATE_STEPS = {
2
+ select: 0,
3
+ templateOptions: 1,
4
+ sourceTemplateList: 2,
5
+ targetTemplateList: 3,
6
+ wizard: 4,
7
+ preCreation: 5,
8
+ } as const;
@@ -11,16 +11,18 @@ import {
11
11
  IntegrateBreadcrumbs,
12
12
  } from "@evenicanpm/admin-integrate/components/breadcrumbs";
13
13
  import { IntegrationDetailsHeader } from "@evenicanpm/admin-integrate/components/header";
14
- import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templates/wizard";
14
+ import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templatesV2/wizard";
15
15
  import { slugify } from "@evenicanpm/admin-integrate/utils/slugify";
16
16
  import { Clear, SaveOutlined } from "@mui/icons-material";
17
17
  import { Box, Button, type Theme, useTheme } from "@mui/material";
18
18
  import { usePathname, useRouter, useSearchParams } from "next/navigation";
19
19
  import { useTranslations } from "next-intl";
20
20
  import { useEffect, useState } from "react";
21
+ import { INTEGRATION_CREATE_STEPS } from "./integration-create-steps";
21
22
  import PreCreationStep from "./pre-creation-step";
22
23
  import SelectStep from "./select-step";
23
- import TemplateListStep from "./template-list-step";
24
+ import TemplateListStep, { DirectionType } from "./template-list-step";
25
+ import TemplateOptionsStep from "./template-options-step";
24
26
  import WizardStep from "./wizard-step";
25
27
 
26
28
  export default function IntegrationCreate() {
@@ -50,20 +52,28 @@ export default function IntegrationCreate() {
50
52
  ];
51
53
 
52
54
  const [name, setName] = useState<string>("");
53
- const [step, setStep] = useState<number>(0);
55
+ const [step, setStep] = useState<number>(INTEGRATION_CREATE_STEPS.select);
54
56
  const [processConfig, setProcessConfig] = useState<any | null>(null);
57
+ const [dualSourceThenTarget, setDualSourceThenTarget] = useState(false);
55
58
 
56
59
  useEffect(() => {
57
60
  if (searchParams.get("group")) {
58
- setStep(2);
61
+ setStep(INTEGRATION_CREATE_STEPS.wizard);
59
62
  }
60
63
  }, [searchParams]);
61
64
 
65
+ useEffect(() => {
66
+ if (step === INTEGRATION_CREATE_STEPS.templateOptions) {
67
+ setDualSourceThenTarget(false);
68
+ }
69
+ }, [step]);
70
+
62
71
  const handleCancel = () => {
63
- if (step > 0) {
72
+ if (step > INTEGRATION_CREATE_STEPS.select) {
64
73
  const confirmClose = confirm(t("Common.unsavedChanges"));
65
74
  if (!confirmClose) return;
66
- setStep(0);
75
+ setStep(INTEGRATION_CREATE_STEPS.select);
76
+ setDualSourceThenTarget(false);
67
77
  router.replace(pathname);
68
78
  } else {
69
79
  router.push("/e4integrate/integrations");
@@ -80,7 +90,7 @@ export default function IntegrationCreate() {
80
90
 
81
91
  console.log("configMergeInput", configMergeInput);
82
92
 
83
- let sourceName = configMergeInput?.input?.config?.find(
93
+ const sourceName = configMergeInput?.input?.config?.find(
84
94
  (item: any) => (item?.source as string)?.toLowerCase() === "source",
85
95
  )?.uniqueIdentifier;
86
96
 
@@ -149,7 +159,7 @@ export default function IntegrationCreate() {
149
159
  }, [name]);
150
160
 
151
161
  useEffect(() => {
152
- if (step === 3 && !processConfig) {
162
+ if (step === INTEGRATION_CREATE_STEPS.preCreation && !processConfig) {
153
163
  const blankConfig: ConfigExport = {
154
164
  Processes: [
155
165
  {
@@ -170,7 +180,11 @@ export default function IntegrationCreate() {
170
180
  <IntegrationDetailsHeader
171
181
  name={name || t("Templates.defaultNewName")}
172
182
  setName={setName}
173
- toolbar={step === 3 ? "disabled" : "hidden"}
183
+ toolbar={
184
+ step === INTEGRATION_CREATE_STEPS.preCreation
185
+ ? "disabled"
186
+ : "hidden"
187
+ }
174
188
  draft
175
189
  untitled={name === ""}
176
190
  >
@@ -187,21 +201,54 @@ export default function IntegrationCreate() {
187
201
  variant="contained"
188
202
  startIcon={<SaveOutlined />}
189
203
  onClick={handleProcessConfigImport}
190
- disabled={step !== 3}
204
+ disabled={step !== INTEGRATION_CREATE_STEPS.preCreation}
191
205
  >
192
206
  {t("Templates.create")}
193
207
  </Button>
194
208
  </IntegrationDetailsHeader>
195
209
  </Box>
196
- {step === 0 && <SelectStep setStep={setStep} />}
197
- {step === 1 && <TemplateListStep />}
198
- {step === 2 && (
210
+ {step === INTEGRATION_CREATE_STEPS.select && (
211
+ <SelectStep setStep={setStep} />
212
+ )}
213
+ {step === INTEGRATION_CREATE_STEPS.templateOptions && (
214
+ <TemplateOptionsStep
215
+ setStep={setStep}
216
+ onSourceAndTarget={() => setDualSourceThenTarget(true)}
217
+ />
218
+ )}
219
+ {/* {step === INTEGRATION_CREATE_STEPS.templateList && <TemplateListStep />} */}
220
+ {step === INTEGRATION_CREATE_STEPS.wizard && (
199
221
  <WizardStep
200
222
  setStep={setStep}
201
223
  setProcessConfigMerge={handleProcessConfigMerge}
202
224
  />
203
225
  )}
204
- {step === 3 && <PreCreationStep processConfig={processConfig} />}
226
+ {step === INTEGRATION_CREATE_STEPS.preCreation && (
227
+ <PreCreationStep processConfig={processConfig} />
228
+ )}
229
+ {step === INTEGRATION_CREATE_STEPS.sourceTemplateList && (
230
+ <TemplateListStep
231
+ listStepTitle={t("Templates.SelectSource")}
232
+ directionType={DirectionType.Incoming}
233
+ onSelectTemplate={
234
+ dualSourceThenTarget
235
+ ? (id) => {
236
+ const p = new URLSearchParams(searchParams.toString());
237
+ p.set(`${t("Templates.sourceGroup")}`, id);
238
+ p.delete(`${t("Templates.group")}`);
239
+ router.replace(`${pathname}?${p}`);
240
+ setStep(INTEGRATION_CREATE_STEPS.targetTemplateList);
241
+ }
242
+ : undefined
243
+ }
244
+ />
245
+ )}
246
+ {step === INTEGRATION_CREATE_STEPS.targetTemplateList && (
247
+ <TemplateListStep
248
+ listStepTitle={t("Templates.SelectTarget")}
249
+ directionType={DirectionType.Outgoing}
250
+ />
251
+ )}
205
252
  {/* </Card> */}
206
253
  </>
207
254
  );
@@ -15,6 +15,7 @@ import {
15
15
  } from "@mui/material";
16
16
  import { useTranslations } from "next-intl";
17
17
  import type React from "react";
18
+ import { INTEGRATION_CREATE_STEPS } from "./integration-create-steps";
18
19
 
19
20
  interface Props {
20
21
  setStep: React.Dispatch<React.SetStateAction<number>>;
@@ -22,16 +23,15 @@ interface Props {
22
23
 
23
24
  export default function SelectStep(props: Readonly<Props>) {
24
25
  const t = useTranslations("Integrate.Templates");
25
-
26
26
  const theme = useTheme();
27
27
  const styles = getStyles(theme);
28
28
 
29
29
  const handleClickBlank = () => {
30
- props.setStep(3);
30
+ props.setStep(INTEGRATION_CREATE_STEPS.preCreation);
31
31
  };
32
32
 
33
33
  const handleClickTemplate = () => {
34
- props.setStep(1);
34
+ props.setStep(INTEGRATION_CREATE_STEPS.templateOptions);
35
35
  };
36
36
 
37
37
  return (
@@ -4,13 +4,25 @@ import type {
4
4
  } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
5
5
  import { getProcessTemplateGroups } from "@evenicanpm/admin-integrate/api/templates/queries";
6
6
  import type { Head } from "@evenicanpm/admin-integrate/components/data-table/table-header";
7
- import TemplatesList from "@evenicanpm/admin-integrate/components/templates/templates-list";
7
+ import TemplatesList from "@evenicanpm/admin-integrate/components/templatesV2/templates-list";
8
8
  import { Box, Typography, useTheme } from "@mui/material";
9
9
  import { usePathname, useRouter, useSearchParams } from "next/navigation";
10
10
  import { useTranslations } from "next-intl";
11
11
  import { useState } from "react";
12
12
 
13
- export default function TemplateListStep() {
13
+ export enum DirectionType {
14
+ Incoming = "Incoming",
15
+ Outgoing = "Outgoing",
16
+ }
17
+
18
+ interface Props {
19
+ listStepTitle?: string;
20
+ directionType?: DirectionType;
21
+ /** When set, skips default `group` URL handoff (e.g. source pick in dual flow). */
22
+ onSelectTemplate?: (id: string) => void;
23
+ }
24
+
25
+ export default function TemplateListStep(props?: Props) {
14
26
  const t = useTranslations("Integrate.Templates");
15
27
 
16
28
  const router = useRouter();
@@ -18,6 +30,8 @@ export default function TemplateListStep() {
18
30
  const searchParams = useSearchParams();
19
31
  const theme = useTheme();
20
32
 
33
+ const title = props?.listStepTitle ?? t("listStepTitle");
34
+
21
35
  const heading: Head[] = [
22
36
  {
23
37
  id: "name",
@@ -26,6 +40,12 @@ export default function TemplateListStep() {
26
40
  width: "95%",
27
41
  sortable: true,
28
42
  },
43
+ // {
44
+ // id: "createdBy",
45
+ // label: t("ListHeader.createdBy"),
46
+ // align: "right",
47
+ // width: "20%",
48
+ // },
29
49
  {
30
50
  id: "view",
31
51
  label: t("ListHeader.actions"),
@@ -47,6 +67,10 @@ export default function TemplateListStep() {
47
67
  });
48
68
 
49
69
  const handleRedirect = (id: string) => {
70
+ if (props?.onSelectTemplate) {
71
+ props.onSelectTemplate(id);
72
+ return;
73
+ }
50
74
  const currentParams = new URLSearchParams(searchParams.toString());
51
75
  currentParams.set("group", id);
52
76
  router.replace(`${pathname}?${currentParams.toString()}`);
@@ -61,12 +85,13 @@ export default function TemplateListStep() {
61
85
  }}
62
86
  >
63
87
  <Box sx={{ margin: theme.spacing(2, 0) }}>
64
- <Typography variant="h6">{t("listStepTitle")}</Typography>
88
+ <Typography variant="h6">{title}</Typography>
65
89
  </Box>
66
90
  <TemplatesList
67
91
  heading={heading}
68
92
  data={data as GetProcessTemplateGroupsQuery}
69
93
  loading={isLoading}
94
+ // input={{ ...input, directionType: props?.directionType }}
70
95
  input={input}
71
96
  setInput={setInput}
72
97
  handleRedirect={handleRedirect}
@@ -0,0 +1,119 @@
1
+ import LinkCard from "@evenicanpm/admin-integrate/components/link-cards";
2
+ import DownloadOutlinedIcon from "@mui/icons-material/DownloadOutlined";
3
+ import MobiledataOffIcon from "@mui/icons-material/MobiledataOff";
4
+ import UploadOutlinedIcon from "@mui/icons-material/UploadOutlined";
5
+ import {
6
+ Box,
7
+ Grid2 as Grid,
8
+ type Theme,
9
+ Typography,
10
+ useTheme,
11
+ } from "@mui/material";
12
+ import { useTranslations } from "next-intl";
13
+ import type React from "react";
14
+ import { INTEGRATION_CREATE_STEPS } from "./integration-create-steps";
15
+
16
+ interface Props {
17
+ setStep: React.Dispatch<React.SetStateAction<number>>;
18
+ /** Source + Target: go to source list first (parent enables dual flow). */
19
+ onSourceAndTarget?: () => void;
20
+ }
21
+
22
+ export default function TemplateOptionsStep(props: Props) {
23
+ const t = useTranslations("Integrate.Templates");
24
+ const theme = useTheme();
25
+ const styles = getStyles(theme);
26
+
27
+ const handleClickOption1 = () => {
28
+ props.onSourceAndTarget?.();
29
+ props.setStep(INTEGRATION_CREATE_STEPS.sourceTemplateList);
30
+ };
31
+ const handleClickOption2 = () =>
32
+ props.setStep(INTEGRATION_CREATE_STEPS.sourceTemplateList);
33
+ const handleClickOption3 = () =>
34
+ props.setStep(INTEGRATION_CREATE_STEPS.targetTemplateList);
35
+
36
+ return (
37
+ <Box sx={styles.main}>
38
+ <Grid container spacing={1} maxWidth={theme.spacing(110)}>
39
+ <Grid size={{ xs: 12 }}>
40
+ <Typography variant="h6" align="center">
41
+ {t("templateOptionsTitle")}
42
+ </Typography>
43
+ </Grid>
44
+ <Grid size={{ xs: 12, md: 4 }}>
45
+ <LinkCard
46
+ title={t("templateOption1")}
47
+ description={t("templateOption1Description")}
48
+ onClick={handleClickOption1}
49
+ >
50
+ <Box
51
+ sx={{
52
+ ...styles.iconSquare,
53
+ color: "black.600",
54
+ backgroundColor: "#BE7374",
55
+ }}
56
+ >
57
+ <MobiledataOffIcon sx={styles.icon} />
58
+ </Box>
59
+ </LinkCard>
60
+ </Grid>
61
+ <Grid size={{ xs: 12, md: 4 }}>
62
+ <LinkCard
63
+ title={t("templateOption2")}
64
+ description={t("templateOption2Description")}
65
+ onClick={handleClickOption2}
66
+ >
67
+ <Box
68
+ sx={{
69
+ ...styles.iconSquare,
70
+ color: "black.600",
71
+ backgroundColor: "bluish.500",
72
+ }}
73
+ >
74
+ <UploadOutlinedIcon sx={styles.icon} />
75
+ </Box>
76
+ </LinkCard>
77
+ </Grid>
78
+ <Grid size={{ xs: 12, md: 4 }}>
79
+ <LinkCard
80
+ title={t("templateOption3")}
81
+ description={t("templateOption3Description")}
82
+ onClick={handleClickOption3}
83
+ >
84
+ <Box
85
+ sx={{
86
+ ...styles.iconSquare,
87
+ color: "black.600",
88
+ backgroundColor: "orange.500",
89
+ }}
90
+ >
91
+ <DownloadOutlinedIcon sx={styles.icon} />
92
+ </Box>
93
+ </LinkCard>
94
+ </Grid>
95
+ </Grid>
96
+ </Box>
97
+ );
98
+ }
99
+
100
+ const getStyles = (theme: Theme) => ({
101
+ main: {
102
+ backgroundColor: theme.palette.grey[50],
103
+ padding: theme.spacing(2),
104
+ border: `1px solid ${theme.palette.grey[300]}`,
105
+ minHeight: `min(${theme.spacing(80)}, 60vh)`,
106
+ display: "flex",
107
+ alignItems: "center",
108
+ justifyContent: "center",
109
+ },
110
+ iconSquare: {
111
+ padding: theme.spacing(1),
112
+ paddingBottom: theme.spacing(0.5),
113
+ marginBottom: theme.spacing(1),
114
+ borderRadius: 1,
115
+ },
116
+ icon: {
117
+ fontSize: "h4.fontSize",
118
+ },
119
+ });
@@ -1,11 +1,12 @@
1
1
  // Custom components
2
- import { Wizard } from "@evenicanpm/admin-integrate/components/templates";
2
+ import { Wizard } from "@evenicanpm/admin-integrate/components/templatesV2";
3
3
  // Types
4
- import type { ProcessConfigMerge } from "@evenicanpm/admin-integrate/components/templates/types";
4
+ import type { ProcessConfigMerge } from "@evenicanpm/admin-integrate/components/templatesV2/types";
5
5
  // Mui
6
6
  import { Box } from "@mui/material";
7
7
  // Util
8
8
  import { usePathname, useRouter, useSearchParams } from "next/navigation";
9
+ import { INTEGRATION_CREATE_STEPS } from "./integration-create-steps";
9
10
 
10
11
  const metadata = {
11
12
  name: "",
@@ -27,12 +28,12 @@ export default function WizardStep(props: Readonly<Props>) {
27
28
  const searchParams = useSearchParams();
28
29
 
29
30
  const handleBack = () => {
30
- props.setStep(1);
31
+ props.setStep(INTEGRATION_CREATE_STEPS.templateOptions);
31
32
  router.replace(pathname);
32
33
  };
33
34
 
34
35
  const handleFinish = () => {
35
- props.setStep(3);
36
+ props.setStep(INTEGRATION_CREATE_STEPS.preCreation);
36
37
  router.replace(pathname);
37
38
  };
38
39
 
@@ -8,13 +8,13 @@ import type {
8
8
  import { processConfigMerge } from "@evenicanpm/admin-integrate/api/process-config/mutation";
9
9
  import { getProcessTemplates } from "@evenicanpm/admin-integrate/api/templates/queries";
10
10
  import type { Head } from "@evenicanpm/admin-integrate/components/data-table/table-header";
11
- import { Wizard } from "@evenicanpm/admin-integrate/components/templates";
12
- import TemplatesList from "@evenicanpm/admin-integrate/components/templates/templates-list";
11
+ import { Wizard } from "@evenicanpm/admin-integrate/components/templatesV2";
12
+ import TemplatesList from "@evenicanpm/admin-integrate/components/templatesV2/templates-list";
13
13
  import type {
14
14
  Metadata,
15
15
  ProcessConfigMerge,
16
- } from "@evenicanpm/admin-integrate/components/templates/types";
17
- import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templates/wizard";
16
+ } from "@evenicanpm/admin-integrate/components/templatesV2/types";
17
+ import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templatesV2/wizard";
18
18
  import { Box, Typography, useTheme } from "@mui/material";
19
19
  import { useTranslations } from "next-intl";
20
20
  import { useEffect, useState } from "react";
@@ -5,12 +5,12 @@ import type {
5
5
  } from "@evenicanpm/admin-core/api/e4/graphqlRequestSdk";
6
6
  import { processConfigMerge } from "@evenicanpm/admin-integrate/api/process-config/mutation";
7
7
  import { TitleEdit } from "@evenicanpm/admin-integrate/components/core";
8
- import { Wizard } from "@evenicanpm/admin-integrate/components/templates";
8
+ import { Wizard } from "@evenicanpm/admin-integrate/components/templatesV2";
9
9
  import type {
10
10
  Metadata,
11
11
  ProcessConfigMerge,
12
- } from "@evenicanpm/admin-integrate/components/templates/types";
13
- import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templates/wizard";
12
+ } from "@evenicanpm/admin-integrate/components/templatesV2/types";
13
+ import { removeTemplateConfig } from "@evenicanpm/admin-integrate/components/templatesV2/wizard";
14
14
  import ReportProblemIcon from "@mui/icons-material/ReportProblem";
15
15
  import {
16
16
  Box,