slice-machine-ui 1.23.1-beta.4 → 1.23.1-beta.6
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/ChangesItems/ChangesItems.tsx +117 -103
- package/components/ChangesItems/DevCollaborationExperiment.tsx +109 -0
- package/components/ChangesSectionHeader/ChangesSectionHeader.tsx +1 -0
- package/lib/models/common/widgets/Group/Form.jsx +70 -0
- package/lib/models/common/widgets/Group/index.ts +5 -3
- package/out/404.html +1 -1
- package/out/_next/static/{N2MQkjqkeMvE9gtxiUiFA → akCjk1pN7Am7MahoLgKug}/_buildManifest.js +1 -1
- package/out/_next/static/chunks/{318-541db69860d31138.js → 318-ce7e74f18f2d5b22.js} +1 -1
- package/out/_next/static/chunks/{727-2016e98f80ea6a62.js → 727-3a3bc32518778317.js} +1 -1
- package/out/_next/static/chunks/{904-4c4d0a2183ae9a27.js → 904-9a4c1264727ae89a.js} +1 -1
- package/out/_next/static/chunks/pages/{_app-6fc45ce12a6c566a.js → _app-358df5effd039a09.js} +1 -1
- package/out/_next/static/chunks/pages/changes-2a976f9efeb719aa.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/labs.html +1 -1
- package/out/page-types/[pageTypeId].html +1 -1
- package/out/slices/[lib]/[sliceName]/[variation]/simulator.html +1 -1
- package/out/slices/[lib]/[sliceName]/[variation].html +1 -1
- package/out/slices.html +1 -1
- package/package.json +3 -3
- package/src/features/autoSave/useAutoSave.tsx +2 -2
- package/src/features/customTypes/customTypesTable/CustomTypesTable.tsx +42 -44
- package/src/hooks/useExperimentVariant.ts +17 -0
- package/out/_next/static/chunks/pages/changes-898f58035cfafe03.js +0 -1
- /package/out/_next/static/{N2MQkjqkeMvE9gtxiUiFA → akCjk1pN7Am7MahoLgKug}/_ssgManifest.js +0 -0
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { Box, Button, Text } from "theme-ui";
|
|
1
|
+
import React, { Suspense } from "react";
|
|
3
2
|
import { AiFillCamera, AiOutlineExclamationCircle } from "react-icons/ai";
|
|
3
|
+
import { Box, Button, ErrorBoundary, Text } from "@prismicio/editor-ui";
|
|
4
4
|
|
|
5
5
|
import { ChangesSectionHeader } from "@components/ChangesSectionHeader";
|
|
6
6
|
import { CustomTypeTable } from "@components/CustomTypeTable/changesPage";
|
|
7
|
-
|
|
8
7
|
import Grid from "@components/Grid";
|
|
9
8
|
import { ComponentUI } from "@lib/models/common/ComponentUI";
|
|
10
9
|
import { ModelStatusInformation } from "@src/hooks/useModelStatus";
|
|
11
|
-
|
|
12
10
|
import ScreenshotChangesModal from "@components/ScreenshotChangesModal";
|
|
13
11
|
import { countMissingScreenshots } from "@src/domain/slice";
|
|
14
12
|
import { useScreenshotChangesModal } from "@src/hooks/useScreenshotChangesModal";
|
|
@@ -16,6 +14,8 @@ import { ModelStatus } from "@lib/models/common/ModelStatus";
|
|
|
16
14
|
import { LocalOrRemoteCustomType } from "@lib/models/common/ModelData";
|
|
17
15
|
import { SharedSliceCard } from "@src/features/slices/sliceCards/SharedSliceCard";
|
|
18
16
|
|
|
17
|
+
import { DevCollaborationExperiment } from "./DevCollaborationExperiment";
|
|
18
|
+
|
|
19
19
|
interface ChangesItemsProps extends ModelStatusInformation {
|
|
20
20
|
unSyncedCustomTypes: LocalOrRemoteCustomType[];
|
|
21
21
|
unSyncedSlices: ComponentUI[];
|
|
@@ -38,109 +38,123 @@ export const ChangesItems: React.FC<ChangesItemsProps> = ({
|
|
|
38
38
|
|
|
39
39
|
return (
|
|
40
40
|
<>
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<Box>
|
|
45
|
-
<
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
<Box gap={16} alignItems="flex-start">
|
|
42
|
+
<Box flexDirection="column" flexGrow={1}>
|
|
43
|
+
{unSyncedCustomTypes.length > 0 && (
|
|
44
|
+
<Box flexDirection="column">
|
|
45
|
+
<ChangesSectionHeader>
|
|
46
|
+
<Box>
|
|
47
|
+
<Text variant="h5">Types</Text>
|
|
48
|
+
<Text variant="h5" sx={{ marginLeft: 8 }}>
|
|
49
|
+
{unSyncedCustomTypes.length}
|
|
50
|
+
</Text>
|
|
51
|
+
</Box>
|
|
52
|
+
</ChangesSectionHeader>
|
|
53
|
+
<CustomTypeTable
|
|
54
|
+
customTypes={unSyncedCustomTypes}
|
|
55
|
+
modelsStatuses={modelsStatuses}
|
|
56
|
+
authStatus={authStatus}
|
|
57
|
+
isOnline={isOnline}
|
|
58
|
+
/>
|
|
49
59
|
</Box>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
)}
|
|
61
|
+
{unSyncedSlices.length > 0 && (
|
|
62
|
+
<>
|
|
63
|
+
<Box padding={{ bottom: 8 }}>
|
|
64
|
+
<ChangesSectionHeader>
|
|
65
|
+
<Box>
|
|
66
|
+
<Text variant="h5">Slices</Text>
|
|
67
|
+
<Text variant="h5" sx={{ marginLeft: 8 }}>
|
|
68
|
+
{unSyncedSlices.length}
|
|
69
|
+
</Text>
|
|
70
|
+
</Box>
|
|
71
|
+
<Box>
|
|
72
|
+
{unSyncedSlices.some(
|
|
73
|
+
(slice) =>
|
|
74
|
+
countMissingScreenshots(slice) > 0 &&
|
|
75
|
+
modelsStatuses.slices[slice.model.id] !==
|
|
76
|
+
ModelStatus.Deleted,
|
|
77
|
+
) && (
|
|
78
|
+
<Text
|
|
79
|
+
color="amber11"
|
|
80
|
+
sx={{
|
|
81
|
+
marginRight: 8,
|
|
82
|
+
alignSelf: "center",
|
|
83
|
+
}}
|
|
84
|
+
>
|
|
85
|
+
<AiOutlineExclamationCircle
|
|
86
|
+
size={16}
|
|
87
|
+
style={{
|
|
88
|
+
marginRight: "4px",
|
|
89
|
+
position: "relative",
|
|
90
|
+
top: "3px",
|
|
91
|
+
}}
|
|
92
|
+
/>
|
|
93
|
+
Missing Screenshots
|
|
94
|
+
</Text>
|
|
95
|
+
)}
|
|
96
|
+
<Button
|
|
97
|
+
color="dark"
|
|
98
|
+
onClick={() => onOpenModal({ sliceFilterFn: (s) => s })}
|
|
99
|
+
>
|
|
100
|
+
<AiFillCamera
|
|
101
|
+
style={{
|
|
102
|
+
color: "#FFF",
|
|
103
|
+
fontSize: "15px",
|
|
104
|
+
position: "relative",
|
|
105
|
+
top: "3px",
|
|
106
|
+
marginRight: "4px",
|
|
107
|
+
}}
|
|
108
|
+
/>{" "}
|
|
109
|
+
Update all screenshots
|
|
110
|
+
</Button>
|
|
111
|
+
</Box>
|
|
112
|
+
</ChangesSectionHeader>
|
|
68
113
|
</Box>
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
114
|
+
<Grid
|
|
115
|
+
gridGap="32px 16px"
|
|
116
|
+
elems={unSyncedSlices}
|
|
117
|
+
gridTemplateMinPx="305px"
|
|
118
|
+
defineElementKey={(slice) => slice.model.name}
|
|
119
|
+
renderElem={(slice) => {
|
|
120
|
+
const modelStatus = modelsStatuses.slices[slice.model.id];
|
|
121
|
+
return (
|
|
122
|
+
<SharedSliceCard
|
|
123
|
+
action={{
|
|
124
|
+
type: "status",
|
|
125
|
+
authStatus,
|
|
126
|
+
isOnline,
|
|
127
|
+
modelStatus,
|
|
128
|
+
}}
|
|
129
|
+
isDeleted={modelStatus === ModelStatus.Deleted}
|
|
130
|
+
mode="navigation"
|
|
131
|
+
onUpdateScreenshot={() => {
|
|
132
|
+
onOpenModal({
|
|
133
|
+
sliceFilterFn: (s) =>
|
|
134
|
+
s.filter((e) => e.model.id === slice.model.id),
|
|
135
|
+
});
|
|
91
136
|
}}
|
|
137
|
+
slice={slice}
|
|
138
|
+
variant="solid"
|
|
92
139
|
/>
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
</Box>
|
|
112
|
-
</ChangesSectionHeader>
|
|
113
|
-
</Box>
|
|
114
|
-
<Grid
|
|
115
|
-
gridGap="32px 16px"
|
|
116
|
-
elems={unSyncedSlices}
|
|
117
|
-
gridTemplateMinPx="305px"
|
|
118
|
-
defineElementKey={(slice) => slice.model.name}
|
|
119
|
-
renderElem={(slice) => {
|
|
120
|
-
const modelStatus = modelsStatuses.slices[slice.model.id];
|
|
121
|
-
return (
|
|
122
|
-
<SharedSliceCard
|
|
123
|
-
action={{ type: "status", authStatus, isOnline, modelStatus }}
|
|
124
|
-
isDeleted={modelStatus === ModelStatus.Deleted}
|
|
125
|
-
mode="navigation"
|
|
126
|
-
onUpdateScreenshot={() => {
|
|
127
|
-
onOpenModal({
|
|
128
|
-
sliceFilterFn: (s) =>
|
|
129
|
-
s.filter((e) => e.model.id === slice.model.id),
|
|
130
|
-
});
|
|
131
|
-
}}
|
|
132
|
-
slice={slice}
|
|
133
|
-
variant="solid"
|
|
134
|
-
/>
|
|
135
|
-
);
|
|
136
|
-
}}
|
|
137
|
-
/>
|
|
138
|
-
<ScreenshotChangesModal
|
|
139
|
-
slices={sliceFilterFn(screenshotChangesSlices)}
|
|
140
|
-
defaultVariationSelector={defaultVariationSelector}
|
|
141
|
-
/>
|
|
142
|
-
</>
|
|
143
|
-
)}
|
|
140
|
+
);
|
|
141
|
+
}}
|
|
142
|
+
/>
|
|
143
|
+
|
|
144
|
+
<ScreenshotChangesModal
|
|
145
|
+
slices={sliceFilterFn(screenshotChangesSlices)}
|
|
146
|
+
defaultVariationSelector={defaultVariationSelector}
|
|
147
|
+
/>
|
|
148
|
+
</>
|
|
149
|
+
)}
|
|
150
|
+
</Box>
|
|
151
|
+
|
|
152
|
+
<ErrorBoundary>
|
|
153
|
+
<Suspense>
|
|
154
|
+
<DevCollaborationExperiment />
|
|
155
|
+
</Suspense>
|
|
156
|
+
</ErrorBoundary>
|
|
157
|
+
</Box>
|
|
144
158
|
</>
|
|
145
159
|
);
|
|
146
160
|
};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Button,
|
|
5
|
+
Dialog,
|
|
6
|
+
DialogActions,
|
|
7
|
+
DialogContent,
|
|
8
|
+
DialogHeader,
|
|
9
|
+
Text,
|
|
10
|
+
} from "@prismicio/editor-ui";
|
|
11
|
+
|
|
12
|
+
import { useExperimentVariant } from "@src/hooks/useExperimentVariant";
|
|
13
|
+
import { telemetry } from "@src/apiClient";
|
|
14
|
+
|
|
15
|
+
type DevCollaborationExperimentPayload = {
|
|
16
|
+
cardButtonLabel: string;
|
|
17
|
+
cardDescription: string;
|
|
18
|
+
cardTitle: string;
|
|
19
|
+
dialogButtonLabel: string;
|
|
20
|
+
dialogButtonLink: string;
|
|
21
|
+
dialogDescription: string;
|
|
22
|
+
dialogTitle: string;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export function DevCollaborationExperiment() {
|
|
26
|
+
const devCollaborationExperiment = useExperimentVariant(
|
|
27
|
+
"slicemachine-dev-collaboration",
|
|
28
|
+
);
|
|
29
|
+
const [isExperimentDialogOpen, setIsExperimentDialogOpen] = useState(false);
|
|
30
|
+
const payload = devCollaborationExperiment?.payload as
|
|
31
|
+
| DevCollaborationExperimentPayload
|
|
32
|
+
| undefined;
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (devCollaborationExperiment?.value === "on" && payload !== undefined) {
|
|
36
|
+
void telemetry.track({ event: "dev-collab:workflow-stub-displayed" });
|
|
37
|
+
}
|
|
38
|
+
}, [devCollaborationExperiment, payload]);
|
|
39
|
+
|
|
40
|
+
if (devCollaborationExperiment?.value !== "on" || payload === undefined) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<>
|
|
46
|
+
<Box
|
|
47
|
+
alignItems="flex-start"
|
|
48
|
+
border={{ bottom: true, left: true, right: true, top: true }}
|
|
49
|
+
borderRadius={6}
|
|
50
|
+
borderStyle="dashed"
|
|
51
|
+
flexDirection="column"
|
|
52
|
+
flexShrink={0}
|
|
53
|
+
gap={8}
|
|
54
|
+
padding={16}
|
|
55
|
+
width={320}
|
|
56
|
+
>
|
|
57
|
+
<Box flexDirection="column" gap={2}>
|
|
58
|
+
<Text variant="smallBold">{payload.cardTitle}</Text>
|
|
59
|
+
<Text color="grey11" variant="small">
|
|
60
|
+
{payload.cardDescription}
|
|
61
|
+
</Text>
|
|
62
|
+
</Box>
|
|
63
|
+
<Button
|
|
64
|
+
color="grey"
|
|
65
|
+
onClick={() => {
|
|
66
|
+
void telemetry.track({
|
|
67
|
+
event: "dev-collab:set-up-workflow-opened",
|
|
68
|
+
});
|
|
69
|
+
setIsExperimentDialogOpen(true);
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
{payload.cardButtonLabel}
|
|
73
|
+
</Button>
|
|
74
|
+
</Box>
|
|
75
|
+
<Dialog
|
|
76
|
+
onOpenChange={(open) => {
|
|
77
|
+
if (!open) {
|
|
78
|
+
setIsExperimentDialogOpen(false);
|
|
79
|
+
}
|
|
80
|
+
}}
|
|
81
|
+
open={isExperimentDialogOpen}
|
|
82
|
+
size={{ height: "auto", width: 448 }}
|
|
83
|
+
>
|
|
84
|
+
<DialogHeader title={payload.dialogTitle} />
|
|
85
|
+
<DialogContent>
|
|
86
|
+
<Box flexDirection="column">
|
|
87
|
+
<Box flexDirection="column" padding={16}>
|
|
88
|
+
<Text>{payload.dialogDescription}</Text>
|
|
89
|
+
</Box>
|
|
90
|
+
<DialogActions
|
|
91
|
+
cancel={{ text: "Cancel" }}
|
|
92
|
+
ok={{
|
|
93
|
+
text: payload.dialogButtonLabel,
|
|
94
|
+
onClick: () => {
|
|
95
|
+
void telemetry.track({
|
|
96
|
+
event: "dev-collab:join-beta-clicked",
|
|
97
|
+
});
|
|
98
|
+
window.open(payload.dialogButtonLink, "_blank");
|
|
99
|
+
setIsExperimentDialogOpen(false);
|
|
100
|
+
},
|
|
101
|
+
}}
|
|
102
|
+
size="medium"
|
|
103
|
+
/>
|
|
104
|
+
</Box>
|
|
105
|
+
</DialogContent>
|
|
106
|
+
</Dialog>
|
|
107
|
+
</>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Checkbox, Label, Box } from "theme-ui";
|
|
2
|
+
|
|
3
|
+
import { Col, Flex as FlexGrid } from "@components/Flex";
|
|
4
|
+
import { DefaultFields } from "@lib/forms/defaults";
|
|
5
|
+
import WidgetFormField from "@lib/builders/common/EditModal/Field";
|
|
6
|
+
import { CheckBox } from "@lib/forms/fields";
|
|
7
|
+
import { createFieldNameFromKey } from "@lib/forms";
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
10
|
+
const FormFields = {
|
|
11
|
+
...DefaultFields,
|
|
12
|
+
repeat: CheckBox("Repeatable", false, true),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const Form = (props) => {
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
17
|
+
const { initialValues, fields, values, setFieldValue } = props;
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
20
|
+
const {
|
|
21
|
+
config: { repeat },
|
|
22
|
+
} = values;
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<FlexGrid>
|
|
26
|
+
{
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
28
|
+
Object.entries(FormFields)
|
|
29
|
+
.filter(([key]) => key !== "repeat")
|
|
30
|
+
.map(([key, field]) => (
|
|
31
|
+
<Col key={key}>
|
|
32
|
+
<WidgetFormField
|
|
33
|
+
fieldName={createFieldNameFromKey(key)}
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
35
|
+
formField={field}
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
37
|
+
fields={fields}
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
39
|
+
initialValues={initialValues}
|
|
40
|
+
/>
|
|
41
|
+
</Col>
|
|
42
|
+
))
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
<Col>
|
|
46
|
+
<Box
|
|
47
|
+
sx={{
|
|
48
|
+
mt: 2,
|
|
49
|
+
alignItems: "center",
|
|
50
|
+
display: "flex",
|
|
51
|
+
height: "130%",
|
|
52
|
+
}}
|
|
53
|
+
>
|
|
54
|
+
<Label variant="label.border" sx={{ mb: 0 }}>
|
|
55
|
+
<Checkbox
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
57
|
+
checked={repeat}
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/strict-boolean-expressions
|
|
59
|
+
onChange={() => setFieldValue("config.repeat", !repeat)}
|
|
60
|
+
/>
|
|
61
|
+
Repeatable
|
|
62
|
+
</Label>
|
|
63
|
+
</Box>
|
|
64
|
+
</Col>
|
|
65
|
+
</FlexGrid>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { FormFields };
|
|
70
|
+
export default Form;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as yup from "yup";
|
|
2
|
-
import { DefaultFields } from "@lib/forms/defaults";
|
|
3
2
|
import { MdPlaylistAdd } from "react-icons/md";
|
|
4
3
|
import { Widget } from "../Widget";
|
|
5
4
|
import CustomListItem from "./ListItem";
|
|
6
5
|
import { GroupSM } from "@lib/models/common/Group";
|
|
6
|
+
import Form, { FormFields } from "./Form";
|
|
7
7
|
|
|
8
8
|
const Meta = {
|
|
9
9
|
icon: MdPlaylistAdd,
|
|
@@ -20,18 +20,20 @@ const schema = yup.object().shape({
|
|
|
20
20
|
fields: yup.array(),
|
|
21
21
|
label: yup.string(),
|
|
22
22
|
placeholder: yup.string(),
|
|
23
|
+
repeat: yup.boolean().optional(),
|
|
23
24
|
}),
|
|
24
25
|
});
|
|
25
26
|
|
|
26
27
|
export const GroupWidget: Widget<GroupSM, typeof schema> = {
|
|
27
28
|
Meta,
|
|
28
|
-
|
|
29
|
-
FormFields
|
|
29
|
+
Form,
|
|
30
|
+
FormFields,
|
|
30
31
|
schema,
|
|
31
32
|
create: (label: string) => ({
|
|
32
33
|
type: "Group",
|
|
33
34
|
config: {
|
|
34
35
|
label,
|
|
36
|
+
repeat: true,
|
|
35
37
|
fields: [],
|
|
36
38
|
},
|
|
37
39
|
}),
|
package/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/200244e3e0463c39.css" as="style"/><link rel="stylesheet" href="/_next/static/css/200244e3e0463c39.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"/><meta name="next-head-count" content="2"/><link rel="preload" href="/_next/static/css/200244e3e0463c39.css" as="style"/><link rel="stylesheet" href="/_next/static/css/200244e3e0463c39.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-358df5effd039a09.js" defer=""></script><script src="/_next/static/chunks/pages/_error-69b4f498bafdd188.js" defer=""></script><script src="/_next/static/akCjk1pN7Am7MahoLgKug/_buildManifest.js" defer=""></script><script src="/_next/static/akCjk1pN7Am7MahoLgKug/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"akCjk1pN7Am7MahoLgKug","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__BUILD_MANIFEST=function(s,c,a,e,t,i,f,b,n,u,d,h,l,k,j,p,g,o,r){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[a,j,p,"static/chunks/pages/index-64cfb8b0948ba8ef.js"],"/_error":["static/chunks/pages/_error-69b4f498bafdd188.js"],"/changelog":[s,e,"static/chunks/870-0c7a8a9622de78b7.js","static/chunks/pages/changelog-afd18276fe018b24.js"],"/changes":[s,t,"static/chunks/8eec4907-b712959d9f984b68.js",i,"static/chunks/918-5bb55fb464e34768.js",c,b,"static/css/37153180c3b0dd66.css","static/chunks/pages/changes-
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,c,a,e,t,i,f,b,n,u,d,h,l,k,j,p,g,o,r){return{__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":[a,j,p,"static/chunks/pages/index-64cfb8b0948ba8ef.js"],"/_error":["static/chunks/pages/_error-69b4f498bafdd188.js"],"/changelog":[s,e,"static/chunks/870-0c7a8a9622de78b7.js","static/chunks/pages/changelog-afd18276fe018b24.js"],"/changes":[s,t,"static/chunks/8eec4907-b712959d9f984b68.js",i,"static/chunks/918-5bb55fb464e34768.js",c,b,"static/css/37153180c3b0dd66.css","static/chunks/pages/changes-2a976f9efeb719aa.js"],"/custom-types":[a,j,p,"static/chunks/pages/custom-types-94b8f8dbf7727412.js"],"/custom-types/[customTypeId]":[s,n,u,d,h,e,f,i,l,g,c,a,k,o,r,"static/chunks/pages/custom-types/[customTypeId]-3f862ad6111a1fc0.js"],"/labs":["static/chunks/pages/labs-ee206005948f8e87.js"],"/page-types/[pageTypeId]":[s,n,u,d,h,e,f,i,l,g,c,a,k,o,r,"static/chunks/pages/page-types/[pageTypeId]-d1ffca11c42f2603.js"],"/slices":[s,t,f,c,b,"static/css/f8eb526e10bc2441.css","static/chunks/pages/slices-e9c70c082ca3e3f9.js"],"/slices/[lib]/[sliceName]/[variation]":[s,t,n,u,d,h,e,f,i,l,c,k,b,"static/css/b22c0750c14cc089.css","static/chunks/pages/slices/[lib]/[sliceName]/[variation]-b2a9d773ce5d7739.js"],"/slices/[lib]/[sliceName]/[variation]/simulator":[t,"static/chunks/72585f70-28b4d7d5384b3703.js","static/chunks/18539003-5cc559566b738915.js","static/chunks/376-7e784d6069e01654.js","static/chunks/pages/slices/[lib]/[sliceName]/[variation]/simulator-897ca93c114a1435.js"],sortedPages:["/","/_app","/_error","/changelog","/changes","/custom-types","/custom-types/[customTypeId]","/labs","/page-types/[pageTypeId]","/slices","/slices/[lib]/[sliceName]/[variation]","/slices/[lib]/[sliceName]/[variation]/simulator"]}}("static/chunks/59b4e022-7a3b5554b806349f.js","static/chunks/25-37d6fa7f064be04b.js","static/chunks/731-501990ebe6a71b32.js","static/chunks/183-4feb6bb3eddbc768.js","static/chunks/c8eae200-966ce352f7b5d2b9.js","static/chunks/543-f8766685f7f451e2.js","static/chunks/50-cfc2514205b86001.js","static/chunks/286-ed90373e9a469944.js","static/chunks/f36c6662-03bb5e9d9aa0b0aa.js","static/chunks/4c744e84-e3161d754618373f.js","static/chunks/065a3ddb-9a38ca0d60f0bf2f.js","static/chunks/1cc2734a-2c5b6c0367fcde86.js","static/chunks/696-b12edad30a3617e5.js","static/chunks/318-ce7e74f18f2d5b22.js","static/chunks/727-3a3bc32518778317.js","static/css/be1f49e49a5aa7eb.css","static/chunks/474-5a072e6fac61f703.js","static/chunks/904-9a4c1264727ae89a.js","static/css/72465cc1225f28a2.css"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|