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.
Files changed (28) hide show
  1. package/components/ChangesItems/ChangesItems.tsx +117 -103
  2. package/components/ChangesItems/DevCollaborationExperiment.tsx +109 -0
  3. package/components/ChangesSectionHeader/ChangesSectionHeader.tsx +1 -0
  4. package/lib/models/common/widgets/Group/Form.jsx +70 -0
  5. package/lib/models/common/widgets/Group/index.ts +5 -3
  6. package/out/404.html +1 -1
  7. package/out/_next/static/{N2MQkjqkeMvE9gtxiUiFA → akCjk1pN7Am7MahoLgKug}/_buildManifest.js +1 -1
  8. package/out/_next/static/chunks/{318-541db69860d31138.js → 318-ce7e74f18f2d5b22.js} +1 -1
  9. package/out/_next/static/chunks/{727-2016e98f80ea6a62.js → 727-3a3bc32518778317.js} +1 -1
  10. package/out/_next/static/chunks/{904-4c4d0a2183ae9a27.js → 904-9a4c1264727ae89a.js} +1 -1
  11. package/out/_next/static/chunks/pages/{_app-6fc45ce12a6c566a.js → _app-358df5effd039a09.js} +1 -1
  12. package/out/_next/static/chunks/pages/changes-2a976f9efeb719aa.js +1 -0
  13. package/out/changelog.html +1 -1
  14. package/out/changes.html +1 -1
  15. package/out/custom-types/[customTypeId].html +1 -1
  16. package/out/custom-types.html +1 -1
  17. package/out/index.html +1 -1
  18. package/out/labs.html +1 -1
  19. package/out/page-types/[pageTypeId].html +1 -1
  20. package/out/slices/[lib]/[sliceName]/[variation]/simulator.html +1 -1
  21. package/out/slices/[lib]/[sliceName]/[variation].html +1 -1
  22. package/out/slices.html +1 -1
  23. package/package.json +3 -3
  24. package/src/features/autoSave/useAutoSave.tsx +2 -2
  25. package/src/features/customTypes/customTypesTable/CustomTypesTable.tsx +42 -44
  26. package/src/hooks/useExperimentVariant.ts +17 -0
  27. package/out/_next/static/chunks/pages/changes-898f58035cfafe03.js +0 -1
  28. /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
- {unSyncedCustomTypes.length > 0 && (
42
- <>
43
- <ChangesSectionHeader>
44
- <Box>
45
- <Text variant="heading">Types</Text>
46
- <Text variant="grey" sx={{ ml: "8px" }}>
47
- {unSyncedCustomTypes.length}
48
- </Text>
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
- </ChangesSectionHeader>
51
- <CustomTypeTable
52
- customTypes={unSyncedCustomTypes}
53
- modelsStatuses={modelsStatuses}
54
- authStatus={authStatus}
55
- isOnline={isOnline}
56
- />
57
- </>
58
- )}
59
- {unSyncedSlices.length > 0 && (
60
- <>
61
- <Box sx={{ mb: "8px" }}>
62
- <ChangesSectionHeader>
63
- <Box>
64
- <Text variant="heading">Slices</Text>
65
- <Text variant="grey" sx={{ ml: "8px" }}>
66
- {unSyncedSlices.length}
67
- </Text>
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
- <Box>
70
- {unSyncedSlices.some(
71
- (slice) =>
72
- countMissingScreenshots(slice) > 0 &&
73
- modelsStatuses.slices[slice.model.id] !==
74
- ModelStatus.Deleted,
75
- ) && (
76
- <Text
77
- sx={{
78
- mr: 3,
79
- color: "warning02",
80
- fontSize: "12px",
81
- lineHeight: "16px",
82
- fontWeight: 600,
83
- }}
84
- >
85
- <AiOutlineExclamationCircle
86
- size={16}
87
- style={{
88
- marginRight: "4px",
89
- position: "relative",
90
- top: "3px",
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
- Missing Screenshots
94
- </Text>
95
- )}
96
- <Button
97
- variant="darkSmall"
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>
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
+ }
@@ -15,6 +15,7 @@ export const ChangesSectionHeader: FC<Props> = ({ children }) => {
15
15
  bg: "grey02",
16
16
  borderRadius: 4,
17
17
  padding: "12px 16px",
18
+ width: "100%",
18
19
  }}
19
20
  >
20
21
  {children}
@@ -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
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
29
- FormFields: DefaultFields,
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-6fc45ce12a6c566a.js" defer=""></script><script src="/_next/static/chunks/pages/_error-69b4f498bafdd188.js" defer=""></script><script src="/_next/static/N2MQkjqkeMvE9gtxiUiFA/_buildManifest.js" defer=""></script><script src="/_next/static/N2MQkjqkeMvE9gtxiUiFA/_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":"N2MQkjqkeMvE9gtxiUiFA","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
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-898f58035cfafe03.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-541db69860d31138.js","static/chunks/727-2016e98f80ea6a62.js","static/css/be1f49e49a5aa7eb.css","static/chunks/474-5a072e6fac61f703.js","static/chunks/904-4c4d0a2183ae9a27.js","static/css/72465cc1225f28a2.css"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
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();