slice-machine-ui 2.18.1-beta.7 → 2.18.1

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 (63) hide show
  1. package/out/404.html +1 -1
  2. package/out/_next/static/{Zy4opMpDS8I-mxQ1kA3m2 → JnNsFjiOtQSOKhLcOb3-p}/_buildManifest.js +1 -1
  3. package/out/_next/static/chunks/{248-43faecb386a16518.js → 248-a9c33f7fbe2da2f1.js} +1 -1
  4. package/out/_next/static/chunks/34-50c64778da33cff6.js +1 -0
  5. package/out/_next/static/chunks/429-aab52070cad2884b.js +3 -0
  6. package/out/_next/static/chunks/{489-234ed5471aa694b3.js → 489-a046ae0fa4f74435.js} +1 -1
  7. package/out/_next/static/chunks/{630-bb6e3db525588f16.js → 630-eae75e90b30f201a.js} +1 -1
  8. package/out/_next/static/chunks/pages/{_app-64feff311539f17b.js → _app-1b4541325b4a29ab.js} +40 -40
  9. package/out/_next/static/chunks/pages/{changelog-ba55ed247c20dc21.js → changelog-3901f2fc937d9648.js} +1 -1
  10. package/out/_next/static/chunks/pages/changes-c58a60af39167147.js +1 -0
  11. package/out/_next/static/chunks/pages/{labs-78ac01d97ab02cd7.js → labs-dd04033db23a58f3.js} +1 -1
  12. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/[variation]/{simulator-b127d948a17968d3.js → simulator-f237aaa755dc9a99.js} +1 -1
  13. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/{[variation]-da423aa0da7bc11e.js → [variation]-c8c3e7ffb898261c.js} +1 -1
  14. package/out/_next/static/chunks/pages/{slices-59b857edc9f72d5f.js → slices-0aaae79dcc7b8c55.js} +1 -1
  15. package/out/changelog.html +1 -1
  16. package/out/changes.html +1 -1
  17. package/out/custom-types/[customTypeId].html +1 -1
  18. package/out/custom-types.html +1 -1
  19. package/out/index.html +1 -1
  20. package/out/labs.html +1 -1
  21. package/out/page-types/[pageTypeId].html +1 -1
  22. package/out/slices/[lib]/[sliceName]/[variation]/simulator.html +1 -1
  23. package/out/slices/[lib]/[sliceName]/[variation].html +1 -1
  24. package/out/slices.html +1 -1
  25. package/package.json +4 -5
  26. package/src/features/auth/LogoutButton.tsx +42 -36
  27. package/src/features/builder/fields/contentRelationship/ContentRelationshipFieldPicker.tsx +3 -3
  28. package/src/features/changes/StatusBadge.tsx +1 -9
  29. package/src/features/customTypes/customTypesBuilder/PageSnippetDialog/PageSnippetDialog.tsx +3 -3
  30. package/src/features/customTypes/customTypesTable/CustomTypesTablePage.tsx +3 -3
  31. package/src/features/environments/actions/useSetEnvironment.ts +22 -0
  32. package/src/features/environments/useActiveEnvironment.ts +17 -9
  33. package/src/features/environments/useEnvironments.ts +11 -8
  34. package/src/features/errorBoundaries/AppStateErrorBoundary.tsx +108 -0
  35. package/src/{ErrorBoundary.tsx → features/errorBoundaries/DefaultErrorBoundary.tsx} +2 -2
  36. package/src/features/errorBoundaries/index.ts +2 -0
  37. package/src/features/labs/labsList/LabsPage.tsx +3 -3
  38. package/src/features/navigation/Navigation.tsx +7 -8
  39. package/src/features/slices/sliceBuilder/FloatingBackButton.tsx +3 -3
  40. package/src/features/sync/AutoSyncProvider.tsx +2 -2
  41. package/src/features/sync/getUnSyncChanges.ts +1 -3
  42. package/src/legacy/components/AppLayout/index.tsx +10 -85
  43. package/src/legacy/components/ChangesEmptyState/UnauthenticatedView.tsx +31 -0
  44. package/src/legacy/components/ChangesEmptyState/index.ts +1 -1
  45. package/src/legacy/components/ChangesItems/ChangesItems.tsx +3 -3
  46. package/src/legacy/components/LoginModal/index.tsx +14 -6
  47. package/src/legacy/components/Navigation/ChangesItem.tsx +2 -6
  48. package/src/legacy/components/Navigation/Environment.tsx +2 -7
  49. package/src/legacy/components/Navigation/SideNavEnvironmentSelector/SideNavEnvironmentSelector.tsx +3 -8
  50. package/src/legacy/components/Simulator/index.tsx +3 -3
  51. package/src/legacy/lib/builders/CustomTypeBuilder/TabZone/index.tsx +3 -3
  52. package/src/modules/userContext/index.ts +5 -5
  53. package/src/modules/userContext/types.ts +2 -3
  54. package/src/pages/_app.tsx +93 -95
  55. package/src/pages/changes.tsx +4 -5
  56. package/src/queryClient.tsx +24 -0
  57. package/test/__testutils__/index.tsx +13 -10
  58. package/out/_next/static/chunks/157-fa8b348c960c8283.js +0 -3
  59. package/out/_next/static/chunks/34-8d9d9b2944824750.js +0 -1
  60. package/out/_next/static/chunks/pages/changes-4c23263cdc8e59c6.js +0 -1
  61. package/src/features/environments/actions/setEnvironment.ts +0 -18
  62. package/src/legacy/components/ChangesEmptyState/AuthErrorPage.tsx +0 -44
  63. /package/out/_next/static/{Zy4opMpDS8I-mxQ1kA3m2 → JnNsFjiOtQSOKhLcOb3-p}/_ssgManifest.js +0 -0
@@ -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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/56f2a6684a524374.css" as="style"/><link rel="stylesheet" href="/_next/static/css/56f2a6684a524374.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-64feff311539f17b.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/f36c6662-1f3a854183168b10.js" defer=""></script><script src="/_next/static/chunks/4c744e84-480e426e4b1cfef3.js" defer=""></script><script src="/_next/static/chunks/065a3ddb-9a38ca0d60f0bf2f.js" defer=""></script><script src="/_next/static/chunks/1cc2734a-09fb3b997ad1eb70.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/183-4ea255b867ff171b.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/256-07f768a2b19b0a0e.js" defer=""></script><script src="/_next/static/chunks/422-c9192a1dbdd2ae0e.js" defer=""></script><script src="/_next/static/chunks/34-8d9d9b2944824750.js" defer=""></script><script src="/_next/static/chunks/647-4379a741c8d85d9e.js" defer=""></script><script src="/_next/static/chunks/630-bb6e3db525588f16.js" defer=""></script><script src="/_next/static/chunks/907-445266211c48b1a5.js" defer=""></script><script src="/_next/static/chunks/489-234ed5471aa694b3.js" defer=""></script><script src="/_next/static/chunks/pages/page-types/%5BpageTypeId%5D-a24665e91b882169.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_buildManifest.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/page-types/[pageTypeId]","query":{},"buildId":"Zy4opMpDS8I-mxQ1kA3m2","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"autoExport":true,"isFallback":false,"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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/56f2a6684a524374.css" as="style"/><link rel="stylesheet" href="/_next/static/css/56f2a6684a524374.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1b4541325b4a29ab.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/f36c6662-1f3a854183168b10.js" defer=""></script><script src="/_next/static/chunks/4c744e84-480e426e4b1cfef3.js" defer=""></script><script src="/_next/static/chunks/065a3ddb-9a38ca0d60f0bf2f.js" defer=""></script><script src="/_next/static/chunks/1cc2734a-09fb3b997ad1eb70.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/183-4ea255b867ff171b.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/256-07f768a2b19b0a0e.js" defer=""></script><script src="/_next/static/chunks/422-c9192a1dbdd2ae0e.js" defer=""></script><script src="/_next/static/chunks/34-50c64778da33cff6.js" defer=""></script><script src="/_next/static/chunks/647-4379a741c8d85d9e.js" defer=""></script><script src="/_next/static/chunks/630-eae75e90b30f201a.js" defer=""></script><script src="/_next/static/chunks/907-445266211c48b1a5.js" defer=""></script><script src="/_next/static/chunks/489-a046ae0fa4f74435.js" defer=""></script><script src="/_next/static/chunks/pages/page-types/%5BpageTypeId%5D-a24665e91b882169.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_buildManifest.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/page-types/[pageTypeId]","query":{},"buildId":"JnNsFjiOtQSOKhLcOb3-p","runtimeConfig":{"sentryEnvironment":"production"},"nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-64feff311539f17b.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/72585f70-28b4d7d5384b3703.js" defer=""></script><script src="/_next/static/chunks/157-fa8b348c960c8283.js" defer=""></script><script src="/_next/static/chunks/pages/slices/%5Blib%5D/%5BsliceName%5D/%5Bvariation%5D/simulator-b127d948a17968d3.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_buildManifest.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices/[lib]/[sliceName]/[variation]/simulator","query":{},"buildId":"Zy4opMpDS8I-mxQ1kA3m2","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"autoExport":true,"isFallback":false,"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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1b4541325b4a29ab.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/72585f70-28b4d7d5384b3703.js" defer=""></script><script src="/_next/static/chunks/429-aab52070cad2884b.js" defer=""></script><script src="/_next/static/chunks/pages/slices/%5Blib%5D/%5BsliceName%5D/%5Bvariation%5D/simulator-f237aaa755dc9a99.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_buildManifest.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices/[lib]/[sliceName]/[variation]/simulator","query":{},"buildId":"JnNsFjiOtQSOKhLcOb3-p","runtimeConfig":{"sentryEnvironment":"production"},"nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/e8e03c0d4003d1eb.css" as="style"/><link rel="stylesheet" href="/_next/static/css/e8e03c0d4003d1eb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-64feff311539f17b.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/f36c6662-1f3a854183168b10.js" defer=""></script><script src="/_next/static/chunks/4c744e84-480e426e4b1cfef3.js" defer=""></script><script src="/_next/static/chunks/065a3ddb-9a38ca0d60f0bf2f.js" defer=""></script><script src="/_next/static/chunks/1cc2734a-09fb3b997ad1eb70.js" defer=""></script><script src="/_next/static/chunks/52d4c156-89c6ec6efca0a0bb.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/183-4ea255b867ff171b.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/256-07f768a2b19b0a0e.js" defer=""></script><script src="/_next/static/chunks/500-d3989390f5e8da53.js" defer=""></script><script src="/_next/static/chunks/484-3e011e79c41f0342.js" defer=""></script><script src="/_next/static/chunks/34-8d9d9b2944824750.js" defer=""></script><script src="/_next/static/chunks/630-bb6e3db525588f16.js" defer=""></script><script src="/_next/static/chunks/658-8231c0b729e0124a.js" defer=""></script><script src="/_next/static/chunks/pages/slices/%5Blib%5D/%5BsliceName%5D/%5Bvariation%5D-da423aa0da7bc11e.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_buildManifest.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices/[lib]/[sliceName]/[variation]","query":{},"buildId":"Zy4opMpDS8I-mxQ1kA3m2","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"autoExport":true,"isFallback":false,"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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/e8e03c0d4003d1eb.css" as="style"/><link rel="stylesheet" href="/_next/static/css/e8e03c0d4003d1eb.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1b4541325b4a29ab.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/f36c6662-1f3a854183168b10.js" defer=""></script><script src="/_next/static/chunks/4c744e84-480e426e4b1cfef3.js" defer=""></script><script src="/_next/static/chunks/065a3ddb-9a38ca0d60f0bf2f.js" defer=""></script><script src="/_next/static/chunks/1cc2734a-09fb3b997ad1eb70.js" defer=""></script><script src="/_next/static/chunks/52d4c156-89c6ec6efca0a0bb.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/183-4ea255b867ff171b.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/256-07f768a2b19b0a0e.js" defer=""></script><script src="/_next/static/chunks/500-d3989390f5e8da53.js" defer=""></script><script src="/_next/static/chunks/484-3e011e79c41f0342.js" defer=""></script><script src="/_next/static/chunks/34-50c64778da33cff6.js" defer=""></script><script src="/_next/static/chunks/630-eae75e90b30f201a.js" defer=""></script><script src="/_next/static/chunks/658-8231c0b729e0124a.js" defer=""></script><script src="/_next/static/chunks/pages/slices/%5Blib%5D/%5BsliceName%5D/%5Bvariation%5D-c8c3e7ffb898261c.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_buildManifest.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices/[lib]/[sliceName]/[variation]","query":{},"buildId":"JnNsFjiOtQSOKhLcOb3-p","runtimeConfig":{"sentryEnvironment":"production"},"nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
package/out/slices.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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/efa5152b7c0f35c0.css" as="style"/><link rel="stylesheet" href="/_next/static/css/efa5152b7c0f35c0.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-64feff311539f17b.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/52d4c156-89c6ec6efca0a0bb.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/500-d3989390f5e8da53.js" defer=""></script><script src="/_next/static/chunks/34-8d9d9b2944824750.js" defer=""></script><script src="/_next/static/chunks/658-8231c0b729e0124a.js" defer=""></script><script src="/_next/static/chunks/907-445266211c48b1a5.js" defer=""></script><script src="/_next/static/chunks/pages/slices-59b857edc9f72d5f.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_buildManifest.js" defer=""></script><script src="/_next/static/Zy4opMpDS8I-mxQ1kA3m2/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices","query":{},"buildId":"Zy4opMpDS8I-mxQ1kA3m2","runtimeConfig":{"sentryEnvironment":"beta"},"nextExport":true,"autoExport":true,"isFallback":false,"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/bc89f2cd4e4781f5.css" as="style"/><link rel="stylesheet" href="/_next/static/css/bc89f2cd4e4781f5.css" data-n-g=""/><link rel="preload" href="/_next/static/css/efa5152b7c0f35c0.css" as="style"/><link rel="stylesheet" href="/_next/static/css/efa5152b7c0f35c0.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-e0c07a2fe4908d81.js" defer=""></script><script src="/_next/static/chunks/framework-ab7ddb551c23d05a.js" defer=""></script><script src="/_next/static/chunks/main-c46f4dcf6e3174bd.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1b4541325b4a29ab.js" defer=""></script><script src="/_next/static/chunks/59b4e022-ef680789f7cc9b11.js" defer=""></script><script src="/_next/static/chunks/c8eae200-966ce352f7b5d2b9.js" defer=""></script><script src="/_next/static/chunks/52d4c156-89c6ec6efca0a0bb.js" defer=""></script><script src="/_next/static/chunks/397-e6c340070a3bcb41.js" defer=""></script><script src="/_next/static/chunks/344-fdb3008f4bb3b0c1.js" defer=""></script><script src="/_next/static/chunks/500-d3989390f5e8da53.js" defer=""></script><script src="/_next/static/chunks/34-50c64778da33cff6.js" defer=""></script><script src="/_next/static/chunks/658-8231c0b729e0124a.js" defer=""></script><script src="/_next/static/chunks/907-445266211c48b1a5.js" defer=""></script><script src="/_next/static/chunks/pages/slices-0aaae79dcc7b8c55.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_buildManifest.js" defer=""></script><script src="/_next/static/JnNsFjiOtQSOKhLcOb3-p/_ssgManifest.js" defer=""></script></head><body><div id="__next"></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/slices","query":{},"buildId":"JnNsFjiOtQSOKhLcOb3-p","runtimeConfig":{"sentryEnvironment":"production"},"nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slice-machine-ui",
3
- "version": "2.18.1-beta.7",
3
+ "version": "2.18.1",
4
4
  "license": "MIT",
5
5
  "description": "A visual builder for your Slice Models with all the tools you need to generate data models and mock CMS content locally.",
6
6
  "repository": {
@@ -35,8 +35,8 @@
35
35
  "start-slicemachine": "./bin/start-slicemachine.cjs"
36
36
  },
37
37
  "dependencies": {
38
- "@slicemachine/manager": "0.25.3-beta.7",
39
- "start-slicemachine": "0.12.61-beta.7"
38
+ "@slicemachine/manager": "0.25.3",
39
+ "start-slicemachine": "0.12.61"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@emotion/react": "11.11.1",
@@ -133,6 +133,5 @@
133
133
  "vitest": "0.32.0",
134
134
  "yup": "0.32.11",
135
135
  "zod": "3.23.8"
136
- },
137
- "stableVersion": "2.18.0"
136
+ }
138
137
  }
@@ -1,52 +1,34 @@
1
1
  import { Button, Icon, IconButton, Tooltip } from "@prismicio/editor-ui";
2
2
  import { SX } from "@prismicio/editor-ui/dist/theme";
3
3
  import * as Sentry from "@sentry/nextjs";
4
- import { ReactNode } from "react";
4
+ import { useQueryClient } from "@tanstack/react-query";
5
+ import { useRouter } from "next/router";
6
+ import { toast } from "react-toastify";
5
7
 
6
- import { clearAuth as managerLogout, getState } from "@/apiClient";
7
- import { invalidateActiveEnvironmentData } from "@/features/environments/useActiveEnvironment";
8
- import { invalidateEnvironmentsData } from "@/features/environments/useEnvironments";
8
+ import { clearAuth, getState } from "@/apiClient";
9
+ import { GetActiveEnvironmentQueryKey } from "@/features/environments/useActiveEnvironment";
10
+ import { GetEnvironmentsQueryKey } from "@/features/environments/useEnvironments";
9
11
  import useSliceMachineActions from "@/modules/useSliceMachineActions";
10
12
 
11
- interface LogoutButtonProps {
12
- children?: ReactNode;
13
- onLogoutSuccess?: () => void;
14
- isLoading?: boolean;
15
- sx?: SX;
16
- }
17
-
18
- export function LogoutButton(props: LogoutButtonProps) {
19
- const { children, onLogoutSuccess, isLoading, sx } = props;
20
-
13
+ export function EnvironmentLogoutButton() {
21
14
  const { refreshState } = useSliceMachineActions();
15
+ const queryClient = useQueryClient();
22
16
 
23
17
  async function onClick() {
24
- await managerLogout();
18
+ await clearAuth();
25
19
 
26
20
  const serverState = await getState();
27
21
  refreshState(serverState);
28
-
29
22
  Sentry.setUser({ id: serverState.env.shortId });
30
23
 
31
- // refresh queries to update the UI
32
- invalidateEnvironmentsData();
33
- invalidateActiveEnvironmentData();
24
+ await Promise.all([
25
+ queryClient.invalidateQueries({ queryKey: GetEnvironmentsQueryKey }),
26
+ queryClient.invalidateQueries({
27
+ queryKey: GetActiveEnvironmentQueryKey,
28
+ }),
29
+ ]);
34
30
 
35
- onLogoutSuccess?.();
36
- }
37
-
38
- if (children !== undefined) {
39
- return (
40
- <Button
41
- onClick={() => void onClick()}
42
- renderEndIcon={() => <Icon name="logout" size="extraSmall" />}
43
- color="grey"
44
- loading={isLoading}
45
- sx={sx}
46
- >
47
- {children}
48
- </Button>
49
- );
31
+ toast.success("Logged out");
50
32
  }
51
33
 
52
34
  return (
@@ -55,9 +37,33 @@ export function LogoutButton(props: LogoutButtonProps) {
55
37
  icon="logout"
56
38
  onClick={() => void onClick()}
57
39
  hiddenLabel="Log out"
58
- loading={isLoading}
59
- sx={sx}
60
40
  />
61
41
  </Tooltip>
62
42
  );
63
43
  }
44
+
45
+ interface ReloadLogoutButtonProps {
46
+ sx?: SX;
47
+ }
48
+
49
+ export function ReloadLogoutButton(props: ReloadLogoutButtonProps) {
50
+ const { sx } = props;
51
+ const router = useRouter();
52
+
53
+ async function onClick() {
54
+ await clearAuth();
55
+ Sentry.setUser({ id: undefined });
56
+ router.reload();
57
+ }
58
+
59
+ return (
60
+ <Button
61
+ onClick={() => void onClick()}
62
+ renderEndIcon={() => <Icon name="logout" size="extraSmall" />}
63
+ color="grey"
64
+ sx={sx}
65
+ >
66
+ Log out
67
+ </Button>
68
+ );
69
+ }
@@ -30,11 +30,11 @@ import {
30
30
  } from "@prismicio/types-internal/lib/customtypes";
31
31
  import { useEffect } from "react";
32
32
 
33
- import { ErrorBoundary } from "@/ErrorBoundary";
34
33
  import {
35
34
  revalidateGetCustomTypes,
36
35
  useCustomTypes as useCustomTypesRequest,
37
36
  } from "@/features/customTypes/useCustomTypes";
37
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
38
38
  import { isValidObject } from "@/utils/isValidObject";
39
39
 
40
40
  type NonReadonly<T> = { -readonly [P in keyof T]: T[P] };
@@ -226,7 +226,7 @@ export function ContentRelationshipFieldPicker(
226
226
  props: ContentRelationshipFieldPickerProps,
227
227
  ) {
228
228
  return (
229
- <ErrorBoundary
229
+ <DefaultErrorBoundary
230
230
  renderError={() => (
231
231
  <Box alignItems="center" gap={8}>
232
232
  <Icon name="alert" size="small" color="tomato10" />
@@ -254,7 +254,7 @@ export function ContentRelationshipFieldPicker(
254
254
  >
255
255
  <ContentRelationshipFieldPickerContent {...props} />
256
256
  </AnimatedSuspense>
257
- </ErrorBoundary>
257
+ </DefaultErrorBoundary>
258
258
  );
259
259
  }
260
260
 
@@ -73,7 +73,7 @@ function getStatusBadgeContent(
73
73
  "Data from the remote repository could not be fetched (no internet connection).",
74
74
  };
75
75
  }
76
- if (args.authStatus === AuthStatus.UNAUTHORIZED) {
76
+ if (args.authStatus === AuthStatus.UNAUTHENTICATED) {
77
77
  return {
78
78
  badgeColor: "grey",
79
79
  badgeTitle: "Unknown",
@@ -81,14 +81,6 @@ function getStatusBadgeContent(
81
81
  "Data from the remote repository could not be fetched (not connected to Prismic).",
82
82
  };
83
83
  }
84
- if (args.authStatus === AuthStatus.FORBIDDEN) {
85
- return {
86
- badgeColor: "grey",
87
- badgeTitle: "Unknown",
88
- tooltipContent:
89
- "Data from the remote repository could not be fetched (you don't have access to the repository).",
90
- };
91
- }
92
84
  }
93
85
  default: {
94
86
  return {
@@ -4,9 +4,9 @@ import { FC, Suspense } from "react";
4
4
 
5
5
  import { telemetry } from "@/apiClient";
6
6
  import { ContentTabs } from "@/components/ContentTabs";
7
- import { ErrorBoundary } from "@/ErrorBoundary";
8
7
  import { MarkdownRenderer } from "@/features/documentation/MarkdownRenderer";
9
8
  import { useDocumentation } from "@/features/documentation/useDocumentation";
9
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
10
10
  import { useOnboarding } from "@/features/onboarding/useOnboarding";
11
11
  import { useAdapterName } from "@/hooks/useAdapterName";
12
12
 
@@ -68,7 +68,7 @@ type PageSnippetDialogProps = { model: CustomType };
68
68
  export const PageSnippetDialog: FC<PageSnippetDialogProps> = ({ model }) => {
69
69
  return (
70
70
  <div>
71
- <ErrorBoundary>
71
+ <DefaultErrorBoundary>
72
72
  <Suspense
73
73
  fallback={
74
74
  <Button color="grey" startIcon="code">
@@ -78,7 +78,7 @@ export const PageSnippetDialog: FC<PageSnippetDialogProps> = ({ model }) => {
78
78
  >
79
79
  <PageSnippetContent model={model} />
80
80
  </Suspense>
81
- </ErrorBoundary>
81
+ </DefaultErrorBoundary>
82
82
  </div>
83
83
  );
84
84
  };
@@ -9,8 +9,8 @@ import Head from "next/head";
9
9
  import { type FC, Suspense, useState } from "react";
10
10
 
11
11
  import { BreadcrumbItem } from "@/components/Breadcrumb";
12
- import { ErrorBoundary } from "@/ErrorBoundary";
13
12
  import { CUSTOM_TYPES_MESSAGES } from "@/features/customTypes/customTypesMessages";
13
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
14
14
  import {
15
15
  AppLayout,
16
16
  AppLayoutActions,
@@ -42,7 +42,7 @@ export const CustomTypesTablePage: FC<CustomTypesTablePageProps> = ({
42
42
  Machine
43
43
  </title>
44
44
  </Head>
45
- <ErrorBoundary
45
+ <DefaultErrorBoundary
46
46
  renderError={() => (
47
47
  <AppLayout>
48
48
  <AppLayoutContent>
@@ -119,7 +119,7 @@ export const CustomTypesTablePage: FC<CustomTypesTablePageProps> = ({
119
119
  </AppLayoutContent>
120
120
  </AppLayout>
121
121
  </Suspense>
122
- </ErrorBoundary>
122
+ </DefaultErrorBoundary>
123
123
  </>
124
124
  );
125
125
  };
@@ -0,0 +1,22 @@
1
+ import { revalidateData } from "@prismicio/editor-support/Suspense";
2
+ import { Environment } from "@slicemachine/manager/client";
3
+ import { useQueryClient } from "@tanstack/react-query";
4
+
5
+ import { getState } from "@/apiClient";
6
+ import { GetActiveEnvironmentQueryKey } from "@/features/environments/useActiveEnvironment";
7
+ import { managerClient } from "@/managerClient";
8
+
9
+ export function useSetEnvironment() {
10
+ const queryClient = useQueryClient();
11
+
12
+ return async (environment: Pick<Environment, "domain">) => {
13
+ await managerClient.project.updateEnvironment({
14
+ environment: environment.domain,
15
+ });
16
+
17
+ void Promise.all([
18
+ queryClient.invalidateQueries({ queryKey: GetActiveEnvironmentQueryKey }),
19
+ revalidateData(getState, []),
20
+ ]);
21
+ };
22
+ }
@@ -1,14 +1,22 @@
1
- import {
2
- invalidateFetcherData,
3
- useRequest,
4
- } from "@prismicio/editor-support/Suspense";
1
+ import { useQuery, useSuspenseQuery } from "@tanstack/react-query";
5
2
 
6
3
  import { getActiveEnvironment } from "./actions/getActiveEnvironment";
7
4
 
8
- export function invalidateActiveEnvironmentData() {
9
- invalidateFetcherData(getActiveEnvironment);
10
- }
5
+ export const GetActiveEnvironmentQueryKey = ["getActiveEnvironment"];
6
+
7
+ export function useActiveEnvironment(options?: { suspense?: boolean }) {
8
+ const { suspense } = options ?? {};
9
+
10
+ const hook = suspense === true ? useSuspenseQuery : useQuery;
11
+
12
+ const { data, error, ...rest } = hook({
13
+ queryKey: GetActiveEnvironmentQueryKey,
14
+ queryFn: () => getActiveEnvironment(),
15
+ });
11
16
 
12
- export function useActiveEnvironment() {
13
- return useRequest(getActiveEnvironment, []);
17
+ return {
18
+ activeEnvironment: data?.activeEnvironment,
19
+ error: data?.error ?? error ?? undefined,
20
+ ...rest,
21
+ };
14
22
  }
@@ -1,14 +1,17 @@
1
- import {
2
- invalidateFetcherData,
3
- useRequest,
4
- } from "@prismicio/editor-support/Suspense";
1
+ import { useQuery } from "@tanstack/react-query";
5
2
 
6
3
  import { getEnvironments } from "./actions/getEnvironments";
7
4
 
8
- export function invalidateEnvironmentsData() {
9
- invalidateFetcherData(getEnvironments);
10
- }
5
+ export const GetEnvironmentsQueryKey = ["getEnvironments"];
11
6
 
12
7
  export function useEnvironments() {
13
- return useRequest(getEnvironments, []);
8
+ const { data, error, ...rest } = useQuery({
9
+ queryKey: GetEnvironmentsQueryKey,
10
+ queryFn: () => getEnvironments(),
11
+ });
12
+ return {
13
+ environments: data?.environments,
14
+ error: data?.error ?? error ?? undefined,
15
+ ...rest,
16
+ };
14
17
  }
@@ -0,0 +1,108 @@
1
+ import {
2
+ BlankSlate,
3
+ BlankSlateDescription,
4
+ BlankSlateIcon,
5
+ BlankSlateTitle,
6
+ Box,
7
+ ErrorBoundary as EditorUiErrorBoundary,
8
+ Text,
9
+ } from "@prismicio/editor-ui";
10
+ import {
11
+ isInvalidActiveEnvironmentError,
12
+ isUnauthorizedError,
13
+ } from "@slicemachine/manager/client";
14
+ import Link from "next/link";
15
+ import { PropsWithChildren } from "react";
16
+
17
+ import { ReloadLogoutButton } from "@/features/auth/LogoutButton";
18
+
19
+ export function AppStateErrorBoundary(props: PropsWithChildren) {
20
+ return (
21
+ <EditorUiErrorBoundary
22
+ renderError={(error) => {
23
+ return (
24
+ <Box
25
+ position="absolute"
26
+ top={64}
27
+ width="100%"
28
+ justifyContent="center"
29
+ flexDirection="column"
30
+ >
31
+ <BlankSlate>
32
+ <BlankSlateIcon
33
+ lineColor="tomato11"
34
+ backgroundColor="tomato3"
35
+ name="alert"
36
+ />
37
+ <BlankSlateTitle>Failed to load Slice Machine</BlankSlateTitle>
38
+ <RenderErrorDescription error={error} />
39
+ </BlankSlate>
40
+ </Box>
41
+ );
42
+ }}
43
+ >
44
+ {props.children}
45
+ </EditorUiErrorBoundary>
46
+ );
47
+ }
48
+
49
+ function RenderErrorDescription(args: { error: unknown }) {
50
+ const { error } = args;
51
+
52
+ if (isUnauthorizedError(error)) {
53
+ return (
54
+ <CommonErrorBox>
55
+ <Box flexDirection="column" gap={8} alignItems="center">
56
+ <Text variant="h3" align="center">
57
+ You don't have access to this repository.
58
+ </Text>
59
+ <Text align="center">
60
+ Check that the repository name is correct, then contact your
61
+ repository administrator.
62
+ </Text>
63
+ </Box>
64
+ <ReloadLogoutButton sx={{ alignSelf: "center" }} />
65
+ </CommonErrorBox>
66
+ );
67
+ }
68
+
69
+ if (isInvalidActiveEnvironmentError(error)) {
70
+ return (
71
+ <CommonErrorBox>
72
+ <Box flexDirection="column" gap={8} alignItems="center">
73
+ <Text variant="h3" align="center">
74
+ Your current environment is invalid.
75
+ </Text>
76
+ <Text align="center">
77
+ Check with your repository administrator that you have permissions
78
+ and correctly configured your environment for the current
79
+ repository. For more details, consult the{" "}
80
+ <Link href="https://prismic.io/docs/environments" target="_blank">
81
+ documentation
82
+ </Link>
83
+ .
84
+ </Text>
85
+ </Box>
86
+ <ReloadLogoutButton sx={{ alignSelf: "center" }} />
87
+ </CommonErrorBox>
88
+ );
89
+ }
90
+
91
+ return <BlankSlateDescription>{JSON.stringify(error)}</BlankSlateDescription>;
92
+ }
93
+
94
+ function CommonErrorBox(args: { children: React.ReactNode }) {
95
+ const { children } = args;
96
+
97
+ return (
98
+ <Box
99
+ flexDirection="column"
100
+ alignItems="center"
101
+ gap={16}
102
+ margin={{ top: 8 }}
103
+ maxWidth={768}
104
+ >
105
+ {children}
106
+ </Box>
107
+ );
108
+ }
@@ -12,13 +12,13 @@ import {
12
12
 
13
13
  import { useAuthStatus } from "@/hooks/useAuthStatus";
14
14
 
15
- type ErrorBoundaryProps = Pick<
15
+ type DefaultErrorBoundaryProps = Pick<
16
16
  // TODO(DT-1979): Export the `ErrorBoundaryProps` type from `@prismicio/editor-ui`.
17
17
  ComponentPropsWithoutRef<typeof EditorUiErrorBoundary>,
18
18
  "children" | "renderError"
19
19
  >;
20
20
 
21
- export const ErrorBoundary: FC<ErrorBoundaryProps> = (props) => {
21
+ export const DefaultErrorBoundary: FC<DefaultErrorBoundaryProps> = (props) => {
22
22
  const errorRef = useRef<unknown>();
23
23
  const authStatus = useAuthStatus();
24
24
  return (
@@ -0,0 +1,2 @@
1
+ export { AppStateErrorBoundary } from "./AppStateErrorBoundary";
2
+ export { DefaultErrorBoundary } from "./DefaultErrorBoundary";
@@ -3,7 +3,7 @@ import Head from "next/head";
3
3
  import { type FC, ReactNode, Suspense } from "react";
4
4
 
5
5
  import { BreadcrumbItem } from "@/components/Breadcrumb";
6
- import { ErrorBoundary } from "@/ErrorBoundary";
6
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
7
7
  import {
8
8
  AppLayout,
9
9
  AppLayoutBreadcrumb,
@@ -19,7 +19,7 @@ export const LabsPage: FC = () => {
19
19
  <Head>
20
20
  <title>Labs - Slice Machine</title>
21
21
  </Head>
22
- <ErrorBoundary
22
+ <DefaultErrorBoundary
23
23
  renderError={() => (
24
24
  <LabsPageLayout>
25
25
  <Box alignItems="center" justifyContent="center">
@@ -42,7 +42,7 @@ export const LabsPage: FC = () => {
42
42
  <LabsList />
43
43
  </LabsPageLayout>
44
44
  </Suspense>
45
- </ErrorBoundary>
45
+ </DefaultErrorBoundary>
46
46
  </>
47
47
  );
48
48
  };
@@ -9,9 +9,9 @@ import { useRouter } from "next/router";
9
9
  import { Suspense } from "react";
10
10
 
11
11
  import { telemetry } from "@/apiClient";
12
- import { ErrorBoundary } from "@/ErrorBoundary";
13
12
  import { CUSTOM_TYPES_CONFIG } from "@/features/customTypes/customTypesConfig";
14
13
  import { CUSTOM_TYPES_MESSAGES } from "@/features/customTypes/customTypesMessages";
14
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
15
15
  import { RepositoryInfo } from "@/features/navigation/RepositoryInfo";
16
16
  import { OnboardingGuide } from "@/features/onboarding";
17
17
  import { useAdapterName } from "@/hooks/useAdapterName";
@@ -86,21 +86,20 @@ export function Navigation() {
86
86
  />
87
87
  </ActionList>
88
88
 
89
- <ErrorBoundary>
89
+ <DefaultErrorBoundary>
90
90
  <Suspense>
91
91
  <UpdateInfo />
92
92
  </Suspense>
93
- </ErrorBoundary>
93
+ </DefaultErrorBoundary>
94
94
  </Box>
95
95
 
96
96
  <Box flexDirection="column">
97
97
  <ActionList variant="compact">
98
- <ErrorBoundary>
98
+ <DefaultErrorBoundary>
99
99
  <Suspense>
100
100
  <OnboardingGuide />
101
101
  </Suspense>
102
- </ErrorBoundary>
103
-
102
+ </DefaultErrorBoundary>
104
103
  <NavigationItem
105
104
  title="Documentation"
106
105
  href={documentationLink}
@@ -136,11 +135,11 @@ export function Navigation() {
136
135
  Icon={LightningIcon}
137
136
  active={router.asPath.startsWith("/changelog")}
138
137
  RightElement={
139
- <ErrorBoundary>
138
+ <DefaultErrorBoundary>
140
139
  <Suspense fallback={<Skeleton height={16} />}>
141
140
  <SliceMachineVersion />
142
141
  </Suspense>
143
- </ErrorBoundary>
142
+ </DefaultErrorBoundary>
144
143
  }
145
144
  />
146
145
  </ActionList>
@@ -2,13 +2,13 @@ import { Box, Button, ButtonGroup } from "@prismicio/editor-ui";
2
2
  import { useRouter } from "next/router";
3
3
  import { type FC, Suspense, useState } from "react";
4
4
 
5
- import { ErrorBoundary } from "@/ErrorBoundary";
6
5
  import { useCustomType } from "@/features/customTypes/customTypesBuilder/useCustomType";
7
6
  import {
8
7
  CUSTOM_TYPES_CONFIG,
9
8
  matchesBuilderPagePathname,
10
9
  readBuilderPageDynamicSegment,
11
10
  } from "@/features/customTypes/customTypesConfig";
11
+ import { DefaultErrorBoundary } from "@/features/errorBoundaries";
12
12
  import { type Route, useRouteChange } from "@/hooks/useRouteChange";
13
13
  import { CloseIcon } from "@/icons/CloseIcon";
14
14
  import { UndoIcon } from "@/icons/UndoIcon";
@@ -17,7 +17,7 @@ export const FloatingBackButton: FC = () => {
17
17
  const { source } = useRouteChange();
18
18
  const sourceCustomTypeId = getSourceCustomTypeId(source);
19
19
  return sourceCustomTypeId !== undefined ? (
20
- <ErrorBoundary>
20
+ <DefaultErrorBoundary>
21
21
  <Suspense>
22
22
  <Box
23
23
  bottom={32}
@@ -29,7 +29,7 @@ export const FloatingBackButton: FC = () => {
29
29
  <BackButton sourceCustomTypeId={sourceCustomTypeId} />
30
30
  </Box>
31
31
  </Suspense>
32
- </ErrorBoundary>
32
+ </DefaultErrorBoundary>
33
33
  ) : null;
34
34
  };
35
35