slice-machine-ui 1.14.2-dev-next-release.5 → 1.14.2-dev-next-release.8
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/components/Forms/CreateSliceModal/CreateSliceModal.tsx +9 -54
- package/lib/builders/CustomTypeBuilder/SliceZone/SlicesTemplatesModal.tsx +43 -4
- package/lib/builders/CustomTypeBuilder/SliceZone/UpdateSliceZoneModal.tsx +11 -3
- package/lib/builders/CustomTypeBuilder/SliceZone/index.tsx +81 -61
- package/lib/builders/CustomTypeBuilder/TabZone/index.tsx +0 -10
- package/lib/builders/common/EditModal/index.jsx +1 -1
- package/lib/models/common/CustomType/sliceZone.ts +0 -18
- package/out/404.html +1 -1
- package/out/[lib]/[sliceName]/[variation]/screenshot.html +1 -1
- package/out/[lib]/[sliceName]/[variation]/simulator.html +1 -1
- package/out/[lib]/[sliceName]/[variation].html +1 -1
- package/out/_next/static/{aWd6brnoafNP_fcVfTvaj → W5H36cBabsItHQduZS-Az}/_buildManifest.js +1 -1
- package/out/_next/static/chunks/323-3be57da824e46abc.js +1 -0
- package/out/_next/static/chunks/pages/{_app-98311155cf2a39cc.js → _app-62bb0daedfad0679.js} +2 -2
- package/out/_next/static/chunks/pages/custom-types/{[customTypeId]-b2bdae3a1fdcd601.js → [customTypeId]-4fe86acfed194773.js} +1 -1
- package/out/_next/static/chunks/pages/page-types/{[pageTypeId]-7958f7f68d8246b4.js → [pageTypeId]-87f5f9704f2c3f2d.js} +1 -1
- package/out/_next/static/chunks/pages/slices-950d2b9b372ba5ab.js +1 -0
- package/out/changelog.html +1 -1
- package/out/changes.html +1 -1
- package/out/custom-types/[customTypeId].html +1 -1
- package/out/custom-types.html +1 -1
- package/out/index.html +1 -1
- package/out/page-types/[pageTypeId].html +1 -1
- package/out/slices.html +1 -1
- package/package.json +4 -4
- package/pages/slices.tsx +21 -0
- package/src/features/customTypes/customTypesBuilder/SliceZoneBlankSlate.tsx +6 -6
- package/src/features/customTypes/customTypesMessages.ts +0 -4
- package/src/features/slices/actions/addSlicesToSliceZone.ts +53 -0
- package/src/features/slices/actions/createSlice.ts +0 -7
- package/src/modules/selectedCustomType/actions.ts +0 -5
- package/src/modules/selectedCustomType/reducer.ts +0 -13
- package/src/modules/useSliceMachineActions.ts +0 -7
- package/test/lib/models/common/CustomType/sliceZone.test.ts +0 -19
- package/test/src/modules/selectedCustomType/reducer.test.ts +0 -27
- package/out/_next/static/chunks/582-46d75a04f674a46c.js +0 -1
- package/out/_next/static/chunks/pages/slices-24d2714462334469.js +0 -1
- /package/out/_next/static/{aWd6brnoafNP_fcVfTvaj → W5H36cBabsItHQduZS-Az}/_ssgManifest.js +0 -0
|
@@ -1,41 +1,37 @@
|
|
|
1
1
|
import { Box, Label } from "theme-ui";
|
|
2
2
|
import { FC, useState } from "react";
|
|
3
3
|
import Select from "react-select";
|
|
4
|
-
import {
|
|
4
|
+
import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
|
|
5
5
|
|
|
6
|
-
import { CustomTypeSM, CustomTypes } from "@lib/models/common/CustomType";
|
|
7
6
|
import { SliceSM } from "@lib/models/common/Slice";
|
|
8
7
|
import { LibraryUI } from "@lib/models/common/LibraryUI";
|
|
9
8
|
import ModalFormCard from "@components/ModalFormCard";
|
|
10
9
|
import { createSlice } from "@src/features/slices/actions/createSlice";
|
|
11
10
|
import useSliceMachineActions from "@src/modules/useSliceMachineActions";
|
|
12
11
|
import { getState } from "@src/apiClient";
|
|
13
|
-
|
|
14
|
-
import { managerClient } from "@src/managerClient";
|
|
12
|
+
|
|
15
13
|
import { validateSliceModalValues } from "../formsValidator";
|
|
16
14
|
import { InputBox } from "../components/InputBox";
|
|
17
|
-
import { SLICES_CONFIG } from "@src/features/slices/slicesConfig";
|
|
18
15
|
|
|
19
16
|
type CreateSliceModalProps = {
|
|
20
17
|
onClose: () => void;
|
|
18
|
+
onSuccess: (
|
|
19
|
+
newSlice: SharedSlice,
|
|
20
|
+
libraryName: string
|
|
21
|
+
) => Promise<void> | void;
|
|
21
22
|
localLibraries: readonly LibraryUI[];
|
|
22
23
|
remoteSlices: ReadonlyArray<SliceSM>;
|
|
23
|
-
customType?: CustomTypeSM;
|
|
24
|
-
tabId?: string;
|
|
25
24
|
};
|
|
26
25
|
|
|
27
26
|
type FormValues = { sliceName: string; from: string };
|
|
28
27
|
|
|
29
28
|
export const CreateSliceModal: FC<CreateSliceModalProps> = ({
|
|
30
29
|
onClose,
|
|
30
|
+
onSuccess,
|
|
31
31
|
localLibraries,
|
|
32
32
|
remoteSlices,
|
|
33
|
-
customType,
|
|
34
|
-
tabId,
|
|
35
33
|
}) => {
|
|
36
|
-
const
|
|
37
|
-
const { createSliceSuccess, saveCustomTypeSuccess } =
|
|
38
|
-
useSliceMachineActions();
|
|
34
|
+
const { createSliceSuccess } = useSliceMachineActions();
|
|
39
35
|
const [isCreatingSlice, setIsCreatingSlice] = useState(false);
|
|
40
36
|
|
|
41
37
|
const onSubmit = async (values: FormValues) => {
|
|
@@ -53,42 +49,7 @@ export const CreateSliceModal: FC<CreateSliceModalProps> = ({
|
|
|
53
49
|
// Update Redux store
|
|
54
50
|
createSliceSuccess(serverState.libraries);
|
|
55
51
|
|
|
56
|
-
|
|
57
|
-
if (customType) {
|
|
58
|
-
const newCustomType = {
|
|
59
|
-
...customType,
|
|
60
|
-
tabs: customType.tabs.map((tab) =>
|
|
61
|
-
tab.key === tabId && tab.sliceZone
|
|
62
|
-
? {
|
|
63
|
-
...tab,
|
|
64
|
-
sliceZone: {
|
|
65
|
-
key: tab.sliceZone.key,
|
|
66
|
-
value: [
|
|
67
|
-
...tab.sliceZone.value,
|
|
68
|
-
{
|
|
69
|
-
key: newSlice.id,
|
|
70
|
-
value: newSlice,
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
},
|
|
74
|
-
}
|
|
75
|
-
: tab
|
|
76
|
-
),
|
|
77
|
-
};
|
|
78
|
-
await managerClient.customTypes.updateCustomType({
|
|
79
|
-
model: CustomTypes.fromSM(newCustomType),
|
|
80
|
-
});
|
|
81
|
-
saveCustomTypeSuccess(CustomTypes.fromSM(newCustomType));
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// Redirect to the slice page
|
|
85
|
-
const variationId = newSlice.variations[0].id;
|
|
86
|
-
const sliceLocation = SLICES_CONFIG.getBuilderPagePathname({
|
|
87
|
-
libraryName,
|
|
88
|
-
sliceName,
|
|
89
|
-
variationId,
|
|
90
|
-
});
|
|
91
|
-
void router.push(sliceLocation);
|
|
52
|
+
await onSuccess(newSlice, libraryName);
|
|
92
53
|
},
|
|
93
54
|
});
|
|
94
55
|
};
|
|
@@ -115,12 +76,6 @@ export const CreateSliceModal: FC<CreateSliceModalProps> = ({
|
|
|
115
76
|
content={{
|
|
116
77
|
title: "Create a new slice",
|
|
117
78
|
}}
|
|
118
|
-
actionMessage={
|
|
119
|
-
customType
|
|
120
|
-
? CUSTOM_TYPES_MESSAGES[customType.format]
|
|
121
|
-
.createSliceFromTypeActionMessage
|
|
122
|
-
: undefined
|
|
123
|
-
}
|
|
124
79
|
>
|
|
125
80
|
{({ touched, values, setFieldValue, errors }) => (
|
|
126
81
|
<Box>
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
2
|
import { Text } from "theme-ui";
|
|
3
|
+
import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
|
|
3
4
|
|
|
4
5
|
import { SliceTemplate } from "@src/features/slicesTemplates/useSlicesTemplates";
|
|
5
6
|
import { Slices } from "@lib/models/common/Slice";
|
|
6
7
|
import { ComponentUI } from "@lib/models/common/ComponentUI";
|
|
7
|
-
import
|
|
8
|
+
import { createSlicesTemplates } from "@src/features/slicesTemplates/actions/createSlicesTemplates";
|
|
9
|
+
import { LibraryUI } from "@lib/models/common/LibraryUI";
|
|
10
|
+
import { getState } from "@src/apiClient";
|
|
11
|
+
import useSliceMachineActions from "@src/modules/useSliceMachineActions";
|
|
12
|
+
import { managerClient } from "@src/managerClient";
|
|
13
|
+
|
|
8
14
|
import ModalFormCard from "../../../../components/ModalFormCard";
|
|
15
|
+
import UpdateSliceZoneModalList from "./UpdateSliceZoneModalList";
|
|
9
16
|
import { sliceTemplatesComingSoon } from "./sliceTemplatesComingSoon";
|
|
10
17
|
|
|
11
18
|
interface UpdateSliceModalProps {
|
|
12
19
|
isOpen: boolean;
|
|
13
20
|
formId: string;
|
|
14
21
|
close: () => void;
|
|
15
|
-
|
|
22
|
+
onSuccess: (slices: SharedSlice[]) => Promise<void>;
|
|
16
23
|
availableSlicesTemplates: SliceTemplate[];
|
|
24
|
+
localLibraries: readonly LibraryUI[];
|
|
17
25
|
}
|
|
18
26
|
|
|
19
27
|
export type SliceZoneFormValues = {
|
|
@@ -24,9 +32,12 @@ export const SlicesTemplatesModal: FC<UpdateSliceModalProps> = ({
|
|
|
24
32
|
isOpen,
|
|
25
33
|
formId,
|
|
26
34
|
close,
|
|
27
|
-
|
|
35
|
+
onSuccess,
|
|
28
36
|
availableSlicesTemplates,
|
|
37
|
+
localLibraries,
|
|
29
38
|
}) => {
|
|
39
|
+
const { createSliceSuccess } = useSliceMachineActions();
|
|
40
|
+
|
|
30
41
|
return (
|
|
31
42
|
<ModalFormCard
|
|
32
43
|
buttonLabel="Add"
|
|
@@ -34,7 +45,35 @@ export const SlicesTemplatesModal: FC<UpdateSliceModalProps> = ({
|
|
|
34
45
|
formId={formId}
|
|
35
46
|
close={close}
|
|
36
47
|
onSubmit={(values: SliceZoneFormValues) => {
|
|
37
|
-
|
|
48
|
+
const { sliceKeys } = values;
|
|
49
|
+
|
|
50
|
+
void createSlicesTemplates({
|
|
51
|
+
templateIDs: sliceKeys,
|
|
52
|
+
localLibrariesNames: localLibraries.map((library) => library.name),
|
|
53
|
+
onSuccess: async (slicesIds: string[]) => {
|
|
54
|
+
// TODO(DT-1453): Remove the need of the global getState
|
|
55
|
+
const serverState = await getState();
|
|
56
|
+
|
|
57
|
+
// Update Redux store
|
|
58
|
+
createSliceSuccess(serverState.libraries);
|
|
59
|
+
|
|
60
|
+
const slices: SharedSlice[] = await Promise.all(
|
|
61
|
+
slicesIds
|
|
62
|
+
.map(async (sliceId) => {
|
|
63
|
+
const slice = await managerClient.slices.readSlice({
|
|
64
|
+
libraryID: localLibraries[0].name,
|
|
65
|
+
sliceID: sliceId,
|
|
66
|
+
});
|
|
67
|
+
return slice.model;
|
|
68
|
+
})
|
|
69
|
+
.filter(
|
|
70
|
+
(slice) => slice !== undefined
|
|
71
|
+
) as Promise<SharedSlice>[]
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
await onSuccess(slices);
|
|
75
|
+
},
|
|
76
|
+
});
|
|
38
77
|
}}
|
|
39
78
|
initialValues={{
|
|
40
79
|
sliceKeys: [],
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Text } from "theme-ui";
|
|
2
|
+
import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
|
|
2
3
|
|
|
3
4
|
import { ComponentUI } from "@lib/models/common/ComponentUI";
|
|
5
|
+
|
|
4
6
|
import ModalFormCard from "../../../../components/ModalFormCard";
|
|
5
7
|
import UpdateSliceZoneModalList from "./UpdateSliceZoneModalList";
|
|
6
8
|
|
|
@@ -8,7 +10,7 @@ interface UpdateSliceModalProps {
|
|
|
8
10
|
isOpen: boolean;
|
|
9
11
|
formId: string;
|
|
10
12
|
close: () => void;
|
|
11
|
-
onSubmit: (
|
|
13
|
+
onSubmit: (slices: SharedSlice[]) => Promise<void>;
|
|
12
14
|
availableSlices: ReadonlyArray<ComponentUI>;
|
|
13
15
|
}
|
|
14
16
|
|
|
@@ -30,8 +32,14 @@ const UpdateSliceZoneModal: React.FC<UpdateSliceModalProps> = ({
|
|
|
30
32
|
formId={formId}
|
|
31
33
|
close={close}
|
|
32
34
|
onSubmit={(values: SliceZoneFormValues) => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
const { sliceKeys } = values;
|
|
36
|
+
const slices = sliceKeys
|
|
37
|
+
.map(
|
|
38
|
+
(sliceKey) =>
|
|
39
|
+
availableSlices.find((s) => s.model.id === sliceKey)?.model
|
|
40
|
+
)
|
|
41
|
+
.filter((slice) => slice !== undefined) as SharedSlice[];
|
|
42
|
+
void onSubmit(slices);
|
|
35
43
|
}}
|
|
36
44
|
initialValues={{
|
|
37
45
|
sliceKeys: [],
|
|
@@ -13,13 +13,12 @@ import { useEffect, useMemo, useState } from "react";
|
|
|
13
13
|
import { useSelector } from "react-redux";
|
|
14
14
|
import { BaseStyles } from "theme-ui";
|
|
15
15
|
import { useRouter } from "next/router";
|
|
16
|
+
import { toast } from "react-toastify";
|
|
17
|
+
import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
|
|
16
18
|
|
|
19
|
+
import { CustomTypeSM, CustomTypes } from "@lib/models/common/CustomType";
|
|
17
20
|
import { CreateSliceModal } from "@components/Forms/CreateSliceModal";
|
|
18
|
-
import type {
|
|
19
|
-
NonSharedSliceInSliceZone,
|
|
20
|
-
SliceZoneSlice,
|
|
21
|
-
} from "@lib/models/common/CustomType/sliceZone";
|
|
22
|
-
import type { CustomTypeSM } from "@lib/models/common/CustomType";
|
|
21
|
+
import type { SliceZoneSlice } from "@lib/models/common/CustomType/sliceZone";
|
|
23
22
|
import type { ComponentUI } from "@lib/models/common/ComponentUI";
|
|
24
23
|
import type { LibraryUI } from "@lib/models/common/LibraryUI";
|
|
25
24
|
import type { SlicesSM } from "@lib/models/common/Slices";
|
|
@@ -33,14 +32,14 @@ import {
|
|
|
33
32
|
} from "@src/modules/slices";
|
|
34
33
|
import type { SliceMachineStoreType } from "@src/redux/type";
|
|
35
34
|
import { useSlicesTemplates } from "@src/features/slicesTemplates/useSlicesTemplates";
|
|
36
|
-
import
|
|
35
|
+
import useSliceMachineActions from "@src/modules/useSliceMachineActions";
|
|
36
|
+
import { addSlicesToSliceZone } from "@src/features/slices/actions/addSlicesToSliceZone";
|
|
37
|
+
import { ToastMessageWithPath } from "@components/ToasterContainer";
|
|
37
38
|
|
|
38
39
|
import { DeleteSliceZoneModal } from "./DeleteSliceZoneModal";
|
|
39
|
-
import { SlicesList } from "./List";
|
|
40
40
|
import UpdateSliceZoneModal from "./UpdateSliceZoneModal";
|
|
41
41
|
import { SlicesTemplatesModal } from "./SlicesTemplatesModal";
|
|
42
|
-
import {
|
|
43
|
-
import useSliceMachineActions from "@src/modules/useSliceMachineActions";
|
|
42
|
+
import { SlicesList } from "./List";
|
|
44
43
|
|
|
45
44
|
const mapAvailableAndSharedSlices = (
|
|
46
45
|
sliceZone: SlicesSM,
|
|
@@ -101,8 +100,6 @@ interface SliceZoneProps {
|
|
|
101
100
|
onCreateSliceZone: () => void;
|
|
102
101
|
onDeleteSliceZone: () => void;
|
|
103
102
|
onRemoveSharedSlice: (sliceId: string) => void;
|
|
104
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
105
|
-
onSelectSharedSlices: Function;
|
|
106
103
|
sliceZone?: SlicesSM | null | undefined;
|
|
107
104
|
tabId: string;
|
|
108
105
|
}
|
|
@@ -112,7 +109,6 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
112
109
|
onCreateSliceZone,
|
|
113
110
|
onDeleteSliceZone,
|
|
114
111
|
onRemoveSharedSlice,
|
|
115
|
-
onSelectSharedSlices,
|
|
116
112
|
sliceZone,
|
|
117
113
|
tabId,
|
|
118
114
|
}) => {
|
|
@@ -130,7 +126,8 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
130
126
|
slices: getFrontendSlices(store),
|
|
131
127
|
})
|
|
132
128
|
);
|
|
133
|
-
const {
|
|
129
|
+
const { initCustomTypeStore, saveCustomTypeSuccess } =
|
|
130
|
+
useSliceMachineActions();
|
|
134
131
|
const localLibraries: readonly LibraryUI[] = libraries.filter(
|
|
135
132
|
(library) => library.isLocal
|
|
136
133
|
);
|
|
@@ -157,11 +154,6 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
157
154
|
.filter((e) => e.type === "SharedSlice")
|
|
158
155
|
.map((e) => e.payload) as ReadonlyArray<ComponentUI>;
|
|
159
156
|
|
|
160
|
-
/* Preserve these keys in SliceZone */
|
|
161
|
-
const nonSharedSlicesKeysInSliceZone = slicesInSliceZone
|
|
162
|
-
.filter((e) => e.type === "Slice")
|
|
163
|
-
.map((e) => (e.payload as NonSharedSliceInSliceZone).key);
|
|
164
|
-
|
|
165
157
|
const availableSlicesToAdd = availableSlices.filter(
|
|
166
158
|
(slice) =>
|
|
167
159
|
!sharedSlicesInSliceZone.some(
|
|
@@ -169,11 +161,11 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
169
161
|
)
|
|
170
162
|
);
|
|
171
163
|
|
|
172
|
-
const
|
|
164
|
+
const openUpdateSliceZoneModal = () => {
|
|
173
165
|
setIsUpdateSliceZoneModalOpen(true);
|
|
174
166
|
};
|
|
175
167
|
|
|
176
|
-
const
|
|
168
|
+
const openCreateSliceModal = () => {
|
|
177
169
|
setIsCreateSliceModalOpen(true);
|
|
178
170
|
};
|
|
179
171
|
|
|
@@ -197,6 +189,29 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
197
189
|
}
|
|
198
190
|
};
|
|
199
191
|
|
|
192
|
+
const closeUpdateSliceZoneModal = () => {
|
|
193
|
+
setIsUpdateSliceZoneModalOpen(false);
|
|
194
|
+
redirectToEditMode();
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
const closeCreateSliceModal = () => {
|
|
198
|
+
setIsCreateSliceModalOpen(false);
|
|
199
|
+
redirectToEditMode();
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
const closeSlicesTemplatesModal = () => {
|
|
203
|
+
setIsSlicesTemplatesModalOpen(false);
|
|
204
|
+
redirectToEditMode();
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
const onAddSlicesToSliceZone = (newCustomType: CustomTypeSM) => {
|
|
208
|
+
// Reset selected custom type store to update slice zone and saving status
|
|
209
|
+
initCustomTypeStore(newCustomType, newCustomType);
|
|
210
|
+
|
|
211
|
+
// Update available custom type store with new custom type
|
|
212
|
+
saveCustomTypeSuccess(CustomTypes.fromSM(newCustomType));
|
|
213
|
+
};
|
|
214
|
+
|
|
200
215
|
return (
|
|
201
216
|
<Box flexDirection="column" height="100%">
|
|
202
217
|
{query.newPageType === undefined ? (
|
|
@@ -214,7 +229,7 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
214
229
|
<DropdownMenuContent align="end">
|
|
215
230
|
<DropdownMenuItem
|
|
216
231
|
startIcon={<Icon name="add" size="large" />}
|
|
217
|
-
onSelect={
|
|
232
|
+
onSelect={openCreateSliceModal}
|
|
218
233
|
description="Start from scratch."
|
|
219
234
|
>
|
|
220
235
|
Create new
|
|
@@ -233,7 +248,7 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
233
248
|
|
|
234
249
|
{availableSlicesToAdd.length > 0 ? (
|
|
235
250
|
<DropdownMenuItem
|
|
236
|
-
onSelect={
|
|
251
|
+
onSelect={openUpdateSliceZoneModal}
|
|
237
252
|
startIcon={<Icon name="folder" size="large" />}
|
|
238
253
|
description="Select from your own slices."
|
|
239
254
|
>
|
|
@@ -274,8 +289,8 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
274
289
|
</BaseStyles>
|
|
275
290
|
) : (
|
|
276
291
|
<SliceZoneBlankSlate
|
|
277
|
-
|
|
278
|
-
|
|
292
|
+
openUpdateSliceZoneModal={openUpdateSliceZoneModal}
|
|
293
|
+
openCreateSliceModal={openCreateSliceModal}
|
|
279
294
|
openSlicesTemplatesModal={openSlicesTemplatesModal}
|
|
280
295
|
projectHasAvailableSlices={availableSlicesToAdd.length > 0}
|
|
281
296
|
isSlicesTemplatesSupported={availableSlicesTemplates.length > 0}
|
|
@@ -286,45 +301,39 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
286
301
|
isOpen={isUpdateSliceZoneModalOpen}
|
|
287
302
|
formId={`tab-slicezone-form-${tabId}`}
|
|
288
303
|
availableSlices={availableSlicesToAdd}
|
|
289
|
-
onSubmit={(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
);
|
|
295
|
-
|
|
304
|
+
onSubmit={async (slices: SharedSlice[]) => {
|
|
305
|
+
const newCustomType = await addSlicesToSliceZone({
|
|
306
|
+
customType,
|
|
307
|
+
tabId,
|
|
308
|
+
slices,
|
|
309
|
+
});
|
|
310
|
+
onAddSlicesToSliceZone(newCustomType);
|
|
311
|
+
closeUpdateSliceZoneModal();
|
|
312
|
+
toast.success("Slice(s) added to slice zone");
|
|
296
313
|
}}
|
|
297
|
-
close={
|
|
314
|
+
close={closeUpdateSliceZoneModal}
|
|
298
315
|
/>
|
|
299
316
|
<SlicesTemplatesModal
|
|
300
317
|
isOpen={isSlicesTemplatesModalOpen}
|
|
301
318
|
formId={`tab-slicezone-form-${tabId}`}
|
|
302
319
|
availableSlicesTemplates={availableSlicesTemplates}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
);
|
|
321
|
-
|
|
322
|
-
setIsSlicesTemplatesModalOpen(false);
|
|
323
|
-
redirectToEditMode();
|
|
324
|
-
},
|
|
325
|
-
})
|
|
326
|
-
}
|
|
327
|
-
close={() => setIsSlicesTemplatesModalOpen(false)}
|
|
320
|
+
localLibraries={localLibraries}
|
|
321
|
+
onSuccess={async (slices: SharedSlice[]) => {
|
|
322
|
+
const newCustomType = await addSlicesToSliceZone({
|
|
323
|
+
customType,
|
|
324
|
+
tabId,
|
|
325
|
+
slices,
|
|
326
|
+
});
|
|
327
|
+
onAddSlicesToSliceZone(newCustomType);
|
|
328
|
+
closeSlicesTemplatesModal();
|
|
329
|
+
toast.success(
|
|
330
|
+
<ToastMessageWithPath
|
|
331
|
+
message="Slice template(s) added to slice zone and created at: "
|
|
332
|
+
path={`${localLibraries[0].name}/`}
|
|
333
|
+
/>
|
|
334
|
+
);
|
|
335
|
+
}}
|
|
336
|
+
close={closeSlicesTemplatesModal}
|
|
328
337
|
/>
|
|
329
338
|
<DeleteSliceZoneModal
|
|
330
339
|
isDeleteSliceZoneModalOpen={isDeleteSliceZoneModalOpen}
|
|
@@ -338,13 +347,24 @@ const SliceZone: React.FC<SliceZoneProps> = ({
|
|
|
338
347
|
/>
|
|
339
348
|
{localLibraries?.length !== 0 && isCreateSliceModalOpen && (
|
|
340
349
|
<CreateSliceModal
|
|
341
|
-
|
|
342
|
-
|
|
350
|
+
onSuccess={async (newSlice: SharedSlice) => {
|
|
351
|
+
const newCustomType = await addSlicesToSliceZone({
|
|
352
|
+
customType,
|
|
353
|
+
tabId,
|
|
354
|
+
slices: [newSlice],
|
|
355
|
+
});
|
|
356
|
+
onAddSlicesToSliceZone(newCustomType);
|
|
357
|
+
closeCreateSliceModal();
|
|
358
|
+
toast.success(
|
|
359
|
+
<ToastMessageWithPath
|
|
360
|
+
message="New slice added to slice zone and created at: "
|
|
361
|
+
path={`${localLibraries[0].name}/${newSlice.name}/model.json`}
|
|
362
|
+
/>
|
|
363
|
+
);
|
|
343
364
|
}}
|
|
344
365
|
localLibraries={localLibraries}
|
|
345
366
|
remoteSlices={remoteSlices}
|
|
346
|
-
|
|
347
|
-
tabId={tabId}
|
|
367
|
+
onClose={closeCreateSliceModal}
|
|
348
368
|
/>
|
|
349
369
|
)}
|
|
350
370
|
</Box>
|
|
@@ -46,7 +46,6 @@ const TabZone: FC<TabZoneProps> = ({
|
|
|
46
46
|
createSliceZone,
|
|
47
47
|
deleteSliceZone,
|
|
48
48
|
deleteCustomTypeSharedSlice,
|
|
49
|
-
replaceCustomTypeSharedSlice,
|
|
50
49
|
} = useSliceMachineActions();
|
|
51
50
|
|
|
52
51
|
const { query } = useRouter();
|
|
@@ -128,14 +127,6 @@ const TabZone: FC<TabZoneProps> = ({
|
|
|
128
127
|
deleteSliceZone(tabId);
|
|
129
128
|
};
|
|
130
129
|
|
|
131
|
-
const onSelectSharedSlices = (keys: string[], preserve: string[] = []) => {
|
|
132
|
-
void telemetry.track({
|
|
133
|
-
event: "custom-type:slice-zone-updated",
|
|
134
|
-
customTypeId: customType.id,
|
|
135
|
-
});
|
|
136
|
-
replaceCustomTypeSharedSlice(tabId, keys, preserve);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
130
|
const onRemoveSharedSlice = (sliceId: string) => {
|
|
140
131
|
deleteCustomTypeSharedSlice(tabId, sliceId);
|
|
141
132
|
};
|
|
@@ -189,7 +180,6 @@ const TabZone: FC<TabZoneProps> = ({
|
|
|
189
180
|
onRemoveSharedSlice={onRemoveSharedSlice}
|
|
190
181
|
onCreateSliceZone={onCreateSliceZone}
|
|
191
182
|
onDeleteSliceZone={onDeleteSliceZone}
|
|
192
|
-
onSelectSharedSlices={onSelectSharedSlices}
|
|
193
183
|
/>
|
|
194
184
|
</Suspense>
|
|
195
185
|
</ErrorBoundary>
|
|
@@ -30,24 +30,6 @@ export const SliceZone = {
|
|
|
30
30
|
value,
|
|
31
31
|
};
|
|
32
32
|
},
|
|
33
|
-
replaceSharedSlice(
|
|
34
|
-
sz: SlicesSM,
|
|
35
|
-
keys: ReadonlyArray<string>,
|
|
36
|
-
preserve: ReadonlyArray<string> = []
|
|
37
|
-
): SlicesSM {
|
|
38
|
-
const value = sz.value
|
|
39
|
-
.filter(({ key }) => preserve.includes(key))
|
|
40
|
-
.concat(
|
|
41
|
-
keys.map((key) => ({
|
|
42
|
-
key,
|
|
43
|
-
value: { type: "SharedSlice" },
|
|
44
|
-
}))
|
|
45
|
-
);
|
|
46
|
-
return {
|
|
47
|
-
...sz,
|
|
48
|
-
value,
|
|
49
|
-
};
|
|
50
|
-
},
|
|
51
33
|
removeSharedSlice(sz: SlicesSM, key: string): SlicesSM {
|
|
52
34
|
const value = sz.value.filter(({ key: k }) => k !== key);
|
|
53
35
|
|
package/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Slice Machine</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/fe2a2a1cbf3b4092.css" as="style"/><link rel="stylesheet" href="/_next/static/css/fe2a2a1cbf3b4092.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-2f903acb0cccbf9e.js" defer=""></script><script src="/_next/static/chunks/framework-cdccea7a52cc6e81.js" defer=""></script><script src="/_next/static/chunks/main-5e6780279ca21cb9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Slice Machine</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/fe2a2a1cbf3b4092.css" as="style"/><link rel="stylesheet" href="/_next/static/css/fe2a2a1cbf3b4092.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-2f903acb0cccbf9e.js" defer=""></script><script src="/_next/static/chunks/framework-cdccea7a52cc6e81.js" defer=""></script><script src="/_next/static/chunks/main-5e6780279ca21cb9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-62bb0daedfad0679.js" defer=""></script><script src="/_next/static/chunks/pages/_error-69b4f498bafdd188.js" defer=""></script><script src="/_next/static/W5H36cBabsItHQduZS-Az/_buildManifest.js" defer=""></script><script src="/_next/static/W5H36cBabsItHQduZS-Az/_ssgManifest.js" defer=""></script></head><body><div id="__next"><style data-emotion="css-global 413pep">html{--theme-ui-colors-text:#25252D;--theme-ui-colors-textClear:#6F6E77;--theme-ui-colors-grayLight:#E8E8ED;--theme-ui-colors-hoverBackground:#f2f2f2;--theme-ui-colors-background:#FFF;--theme-ui-colors-backgroundClear:#FFF;--theme-ui-colors-primary:#5D40F7;--theme-ui-colors-purpleLight:#F6F1FC;--theme-ui-colors-purpleLight01:#6548FF1A;--theme-ui-colors-purple12:#F1EEFE;--theme-ui-colors-purpleStrong:#5842C3;--theme-ui-colors-whiteButtonText:#1A1523;--theme-ui-colors-codeBlockBackground:#32275F;--theme-ui-colors-failedConnectText:#86848D;--theme-ui-colors-changesWarning-background:#FFECC7;--theme-ui-colors-changesWarning-color:#5C0C17;--theme-ui-colors-greyIcon:#6F6E77;--theme-ui-colors-greyIconDisabled:#C9D0D8;--theme-ui-colors-missingScreenshotBanner-color:#5C0C17;--theme-ui-colors-missingScreenshotBanner-bg:#FFECC7;--theme-ui-colors-badge-new-bg:#DBEDDB;--theme-ui-colors-badge-new-color:#05644D;--theme-ui-colors-badge-modified-bg:#FFECC7;--theme-ui-colors-badge-modified-color:#5C0C17;--theme-ui-colors-badge-synced-bg:purple12;--theme-ui-colors-badge-synced-color:#5842C3;--theme-ui-colors-badge-deleted-bg:rgba(203, 36, 49, 0.1);--theme-ui-colors-badge-unknown-bg:#F3F5F7;--theme-ui-colors-badge-unknown-color:#9AA4AF;--theme-ui-colors-codeBlockBorder:#545454;--theme-ui-colors-secondary:#F9FAFB;--theme-ui-colors-danger:#CB2431;--theme-ui-colors-highlight:hsl(10, 40%, 90%);--theme-ui-colors-purple:#5B3DF5;--theme-ui-colors-purple08:#5842C3;--theme-ui-colors-muted:#F9F9FB;--theme-ui-colors-icons:#8091A5;--theme-ui-colors-gray:#F8F9FA;--theme-ui-colors-grey01:#F3F5F7;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-grey03:#F4F2F4;--theme-ui-colors-grey04:#9AA4AF;--theme-ui-colors-grey05:#667587;--theme-ui-colors-grey07:#F9F8F9;--theme-ui-colors-grey10:#86848D;--theme-ui-colors-grey12:#1A1523;--theme-ui-colors-greyTransparent:rgba(37, 37, 45, 0.4);--theme-ui-colors-borders:#E4E2E4;--theme-ui-colors-bordersFocused:#6E56CF;--theme-ui-colors-deep:#0E2150;--theme-ui-colors-deep1:#A0ADE7;--theme-ui-colors-lightGreen:#EBF8F1;--theme-ui-colors-lightOrange:#FDF4EC;--theme-ui-colors-darkOrange:#C17C10;--theme-ui-colors-error:#E55737;--theme-ui-colors-success:#3AB97A;--theme-ui-colors-headSection:#fff;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-warning02:#ED811C;--theme-ui-colors-sidebar:#F1F1F4;--theme-ui-colors-link:#6E56CF;--theme-ui-colors-choggleBox:#5163BA;--theme-ui-colors-darkBorder:#DCDBDD;--theme-ui-colors-code-border:#DFE1E5;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;color:var(--theme-ui-colors-text);background-color:var(--theme-ui-colors-background);}html.theme-ui-light,.theme-ui-light html{--theme-ui-colors-text:#25252D;--theme-ui-colors-textClear:#6F6E77;--theme-ui-colors-grayLight:#E8E8ED;--theme-ui-colors-hoverBackground:#f2f2f2;--theme-ui-colors-background:#FFF;--theme-ui-colors-backgroundClear:#FFF;--theme-ui-colors-primary:#5D40F7;--theme-ui-colors-purpleLight:#F6F1FC;--theme-ui-colors-purpleLight01:#6548FF1A;--theme-ui-colors-purple12:#F1EEFE;--theme-ui-colors-purpleStrong:#5842C3;--theme-ui-colors-whiteButtonText:#1A1523;--theme-ui-colors-codeBlockBackground:#32275F;--theme-ui-colors-failedConnectText:#86848D;--theme-ui-colors-changesWarning-background:#FFECC7;--theme-ui-colors-changesWarning-color:#5C0C17;--theme-ui-colors-greyIcon:#6F6E77;--theme-ui-colors-greyIconDisabled:#C9D0D8;--theme-ui-colors-missingScreenshotBanner-color:#5C0C17;--theme-ui-colors-missingScreenshotBanner-bg:#FFECC7;--theme-ui-colors-badge-new-bg:#DBEDDB;--theme-ui-colors-badge-new-color:#05644D;--theme-ui-colors-badge-modified-bg:#FFECC7;--theme-ui-colors-badge-modified-color:#5C0C17;--theme-ui-colors-badge-synced-bg:purple12;--theme-ui-colors-badge-synced-color:#5842C3;--theme-ui-colors-badge-deleted-bg:rgba(203, 36, 49, 0.1);--theme-ui-colors-badge-unknown-bg:#F3F5F7;--theme-ui-colors-badge-unknown-color:#9AA4AF;--theme-ui-colors-codeBlockBorder:#545454;--theme-ui-colors-secondary:#F9FAFB;--theme-ui-colors-danger:#CB2431;--theme-ui-colors-highlight:hsl(10, 40%, 90%);--theme-ui-colors-purple:#5B3DF5;--theme-ui-colors-purple08:#5842C3;--theme-ui-colors-muted:#F9F9FB;--theme-ui-colors-icons:#8091A5;--theme-ui-colors-gray:#F8F9FA;--theme-ui-colors-grey01:#F3F5F7;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-grey03:#F4F2F4;--theme-ui-colors-grey04:#9AA4AF;--theme-ui-colors-grey05:#667587;--theme-ui-colors-grey07:#F9F8F9;--theme-ui-colors-grey10:#86848D;--theme-ui-colors-grey12:#1A1523;--theme-ui-colors-greyTransparent:rgba(37, 37, 45, 0.4);--theme-ui-colors-borders:#E4E2E4;--theme-ui-colors-bordersFocused:#6E56CF;--theme-ui-colors-deep:#0E2150;--theme-ui-colors-deep1:#A0ADE7;--theme-ui-colors-lightGreen:#EBF8F1;--theme-ui-colors-lightOrange:#FDF4EC;--theme-ui-colors-darkOrange:#C17C10;--theme-ui-colors-error:#E55737;--theme-ui-colors-success:#3AB97A;--theme-ui-colors-headSection:#fff;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-warning02:#ED811C;--theme-ui-colors-sidebar:#F1F1F4;--theme-ui-colors-link:#6E56CF;--theme-ui-colors-choggleBox:#5163BA;--theme-ui-colors-darkBorder:#DCDBDD;--theme-ui-colors-code-border:#DFE1E5;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;}html.theme-ui-dark,.theme-ui-dark html{--theme-ui-colors-text:#fff;--theme-ui-colors-textClear:#6E707B;--theme-ui-colors-hoverBackground:#202020;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-background:#202022;--theme-ui-colors-backgroundClear:#28282C;--theme-ui-colors-primary:#4E54D7;--theme-ui-colors-secondary:#28282C;--theme-ui-colors-icons:#5D5D71;--theme-ui-colors-gray:#1D1D1F;--theme-ui-colors-borders:#3A3A46;--theme-ui-colors-deep:#28282C;--theme-ui-colors-headSection:#28282C;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-sidebar:#28282C;--theme-ui-colors-code-border:#5D5D6F;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;--theme-ui-colors-link:#A9A9C6;--theme-ui-colors-choggleBox:#fff;}</style><style data-emotion="css-global h19pgh">*{box-sizing:border-box;}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;line-height:1.5;font-weight:400;}body{margin:0;}</style><style data-emotion="css yvak7d">.css-yvak7d{box-sizing:border-box;margin:0;min-width:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:calc(100vh - 57px);width:100vw;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}</style><div class="css-yvak7d"><style data-emotion="css uqm8ih">.css-uqm8ih{box-sizing:border-box;margin:0;min-width:0;color:var(--theme-ui-colors-primary);overflow:visible;}</style><svg stroke-width="4" viewBox="0 0 32 32" width="48" height="48" fill="none" stroke="currentColor" role="img" id="spinner" class="css-uqm8ih"><title>Loading</title><circle stroke-width="4" r="12" cx="16" cy="16" fill="none" opacity="0.125"></circle><circle stroke-width="4" r="12" cx="16" cy="16" fill="none" stroke-dasharray="20 110"><animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 16 16" to="360 16 16" dur="750ms" repeatCount="indefinite"></animateTransform></circle></svg></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"W5H36cBabsItHQduZS-Az","runtimeConfig":{"sentryEnvironment":"alpha"},"nextExport":true,"isFallback":false,"gip":true,"appGip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Slice Machine</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/fe2a2a1cbf3b4092.css" as="style"/><link rel="stylesheet" href="/_next/static/css/fe2a2a1cbf3b4092.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-2f903acb0cccbf9e.js" defer=""></script><script src="/_next/static/chunks/framework-cdccea7a52cc6e81.js" defer=""></script><script src="/_next/static/chunks/main-5e6780279ca21cb9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-
|
|
1
|
+
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><title>Slice Machine</title><meta name="next-head-count" content="3"/><link rel="preload" href="/_next/static/css/fe2a2a1cbf3b4092.css" as="style"/><link rel="stylesheet" href="/_next/static/css/fe2a2a1cbf3b4092.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-2f903acb0cccbf9e.js" defer=""></script><script src="/_next/static/chunks/framework-cdccea7a52cc6e81.js" defer=""></script><script src="/_next/static/chunks/main-5e6780279ca21cb9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-62bb0daedfad0679.js" defer=""></script><script src="/_next/static/chunks/746-1d8d106d76d9a63e.js" defer=""></script><script src="/_next/static/chunks/pages/%5Blib%5D/%5BsliceName%5D/%5Bvariation%5D/screenshot-2750adc7cdad5005.js" defer=""></script><script src="/_next/static/W5H36cBabsItHQduZS-Az/_buildManifest.js" defer=""></script><script src="/_next/static/W5H36cBabsItHQduZS-Az/_ssgManifest.js" defer=""></script></head><body><div id="__next"><style data-emotion="css-global 413pep">html{--theme-ui-colors-text:#25252D;--theme-ui-colors-textClear:#6F6E77;--theme-ui-colors-grayLight:#E8E8ED;--theme-ui-colors-hoverBackground:#f2f2f2;--theme-ui-colors-background:#FFF;--theme-ui-colors-backgroundClear:#FFF;--theme-ui-colors-primary:#5D40F7;--theme-ui-colors-purpleLight:#F6F1FC;--theme-ui-colors-purpleLight01:#6548FF1A;--theme-ui-colors-purple12:#F1EEFE;--theme-ui-colors-purpleStrong:#5842C3;--theme-ui-colors-whiteButtonText:#1A1523;--theme-ui-colors-codeBlockBackground:#32275F;--theme-ui-colors-failedConnectText:#86848D;--theme-ui-colors-changesWarning-background:#FFECC7;--theme-ui-colors-changesWarning-color:#5C0C17;--theme-ui-colors-greyIcon:#6F6E77;--theme-ui-colors-greyIconDisabled:#C9D0D8;--theme-ui-colors-missingScreenshotBanner-color:#5C0C17;--theme-ui-colors-missingScreenshotBanner-bg:#FFECC7;--theme-ui-colors-badge-new-bg:#DBEDDB;--theme-ui-colors-badge-new-color:#05644D;--theme-ui-colors-badge-modified-bg:#FFECC7;--theme-ui-colors-badge-modified-color:#5C0C17;--theme-ui-colors-badge-synced-bg:purple12;--theme-ui-colors-badge-synced-color:#5842C3;--theme-ui-colors-badge-deleted-bg:rgba(203, 36, 49, 0.1);--theme-ui-colors-badge-unknown-bg:#F3F5F7;--theme-ui-colors-badge-unknown-color:#9AA4AF;--theme-ui-colors-codeBlockBorder:#545454;--theme-ui-colors-secondary:#F9FAFB;--theme-ui-colors-danger:#CB2431;--theme-ui-colors-highlight:hsl(10, 40%, 90%);--theme-ui-colors-purple:#5B3DF5;--theme-ui-colors-purple08:#5842C3;--theme-ui-colors-muted:#F9F9FB;--theme-ui-colors-icons:#8091A5;--theme-ui-colors-gray:#F8F9FA;--theme-ui-colors-grey01:#F3F5F7;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-grey03:#F4F2F4;--theme-ui-colors-grey04:#9AA4AF;--theme-ui-colors-grey05:#667587;--theme-ui-colors-grey07:#F9F8F9;--theme-ui-colors-grey10:#86848D;--theme-ui-colors-grey12:#1A1523;--theme-ui-colors-greyTransparent:rgba(37, 37, 45, 0.4);--theme-ui-colors-borders:#E4E2E4;--theme-ui-colors-bordersFocused:#6E56CF;--theme-ui-colors-deep:#0E2150;--theme-ui-colors-deep1:#A0ADE7;--theme-ui-colors-lightGreen:#EBF8F1;--theme-ui-colors-lightOrange:#FDF4EC;--theme-ui-colors-darkOrange:#C17C10;--theme-ui-colors-error:#E55737;--theme-ui-colors-success:#3AB97A;--theme-ui-colors-headSection:#fff;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-warning02:#ED811C;--theme-ui-colors-sidebar:#F1F1F4;--theme-ui-colors-link:#6E56CF;--theme-ui-colors-choggleBox:#5163BA;--theme-ui-colors-darkBorder:#DCDBDD;--theme-ui-colors-code-border:#DFE1E5;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;color:var(--theme-ui-colors-text);background-color:var(--theme-ui-colors-background);}html.theme-ui-light,.theme-ui-light html{--theme-ui-colors-text:#25252D;--theme-ui-colors-textClear:#6F6E77;--theme-ui-colors-grayLight:#E8E8ED;--theme-ui-colors-hoverBackground:#f2f2f2;--theme-ui-colors-background:#FFF;--theme-ui-colors-backgroundClear:#FFF;--theme-ui-colors-primary:#5D40F7;--theme-ui-colors-purpleLight:#F6F1FC;--theme-ui-colors-purpleLight01:#6548FF1A;--theme-ui-colors-purple12:#F1EEFE;--theme-ui-colors-purpleStrong:#5842C3;--theme-ui-colors-whiteButtonText:#1A1523;--theme-ui-colors-codeBlockBackground:#32275F;--theme-ui-colors-failedConnectText:#86848D;--theme-ui-colors-changesWarning-background:#FFECC7;--theme-ui-colors-changesWarning-color:#5C0C17;--theme-ui-colors-greyIcon:#6F6E77;--theme-ui-colors-greyIconDisabled:#C9D0D8;--theme-ui-colors-missingScreenshotBanner-color:#5C0C17;--theme-ui-colors-missingScreenshotBanner-bg:#FFECC7;--theme-ui-colors-badge-new-bg:#DBEDDB;--theme-ui-colors-badge-new-color:#05644D;--theme-ui-colors-badge-modified-bg:#FFECC7;--theme-ui-colors-badge-modified-color:#5C0C17;--theme-ui-colors-badge-synced-bg:purple12;--theme-ui-colors-badge-synced-color:#5842C3;--theme-ui-colors-badge-deleted-bg:rgba(203, 36, 49, 0.1);--theme-ui-colors-badge-unknown-bg:#F3F5F7;--theme-ui-colors-badge-unknown-color:#9AA4AF;--theme-ui-colors-codeBlockBorder:#545454;--theme-ui-colors-secondary:#F9FAFB;--theme-ui-colors-danger:#CB2431;--theme-ui-colors-highlight:hsl(10, 40%, 90%);--theme-ui-colors-purple:#5B3DF5;--theme-ui-colors-purple08:#5842C3;--theme-ui-colors-muted:#F9F9FB;--theme-ui-colors-icons:#8091A5;--theme-ui-colors-gray:#F8F9FA;--theme-ui-colors-grey01:#F3F5F7;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-grey03:#F4F2F4;--theme-ui-colors-grey04:#9AA4AF;--theme-ui-colors-grey05:#667587;--theme-ui-colors-grey07:#F9F8F9;--theme-ui-colors-grey10:#86848D;--theme-ui-colors-grey12:#1A1523;--theme-ui-colors-greyTransparent:rgba(37, 37, 45, 0.4);--theme-ui-colors-borders:#E4E2E4;--theme-ui-colors-bordersFocused:#6E56CF;--theme-ui-colors-deep:#0E2150;--theme-ui-colors-deep1:#A0ADE7;--theme-ui-colors-lightGreen:#EBF8F1;--theme-ui-colors-lightOrange:#FDF4EC;--theme-ui-colors-darkOrange:#C17C10;--theme-ui-colors-error:#E55737;--theme-ui-colors-success:#3AB97A;--theme-ui-colors-headSection:#fff;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-warning02:#ED811C;--theme-ui-colors-sidebar:#F1F1F4;--theme-ui-colors-link:#6E56CF;--theme-ui-colors-choggleBox:#5163BA;--theme-ui-colors-darkBorder:#DCDBDD;--theme-ui-colors-code-border:#DFE1E5;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;}html.theme-ui-dark,.theme-ui-dark html{--theme-ui-colors-text:#fff;--theme-ui-colors-textClear:#6E707B;--theme-ui-colors-hoverBackground:#202020;--theme-ui-colors-grey02:#E6E6EA;--theme-ui-colors-background:#202022;--theme-ui-colors-backgroundClear:#28282C;--theme-ui-colors-primary:#4E54D7;--theme-ui-colors-secondary:#28282C;--theme-ui-colors-icons:#5D5D71;--theme-ui-colors-gray:#1D1D1F;--theme-ui-colors-borders:#3A3A46;--theme-ui-colors-deep:#28282C;--theme-ui-colors-headSection:#28282C;--theme-ui-colors-warning:#E67E22;--theme-ui-colors-sidebar:#28282C;--theme-ui-colors-code-border:#5D5D6F;--theme-ui-colors-code-blue:#3B41BD;--theme-ui-colors-code-gray:#667587;--theme-ui-colors-code-orange:#EA6D46;--theme-ui-colors-code-green:#3AB97A;--theme-ui-colors-link:#A9A9C6;--theme-ui-colors-choggleBox:#fff;}</style><style data-emotion="css-global h19pgh">*{box-sizing:border-box;}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;line-height:1.5;font-weight:400;}body{margin:0;}</style><style data-emotion="css yvak7d">.css-yvak7d{box-sizing:border-box;margin:0;min-width:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:calc(100vh - 57px);width:100vw;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}</style><div class="css-yvak7d"><style data-emotion="css uqm8ih">.css-uqm8ih{box-sizing:border-box;margin:0;min-width:0;color:var(--theme-ui-colors-primary);overflow:visible;}</style><svg stroke-width="4" viewBox="0 0 32 32" width="48" height="48" fill="none" stroke="currentColor" role="img" id="spinner" class="css-uqm8ih"><title>Loading</title><circle stroke-width="4" r="12" cx="16" cy="16" fill="none" opacity="0.125"></circle><circle stroke-width="4" r="12" cx="16" cy="16" fill="none" stroke-dasharray="20 110"><animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0 16 16" to="360 16 16" dur="750ms" repeatCount="indefinite"></animateTransform></circle></svg></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/[lib]/[sliceName]/[variation]/screenshot","query":{},"buildId":"W5H36cBabsItHQduZS-Az","runtimeConfig":{"sentryEnvironment":"alpha"},"nextExport":true,"isFallback":false,"appGip":true,"scriptLoader":[]}</script></body></html>
|