slice-machine-ui 1.26.1-beta.1 → 1.26.1-beta.11

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 (391) hide show
  1. package/.eslintrc.js +6 -1
  2. package/.storybook/preview.tsx +2 -1
  3. package/components/App/index.tsx +6 -7
  4. package/components/AppLayout/index.tsx +6 -8
  5. package/components/AuthInstructions/index.jsx +1 -1
  6. package/components/Button/index.tsx +1 -2
  7. package/components/Card/Default.jsx +2 -1
  8. package/components/Card/Preview.jsx +1 -1
  9. package/components/Card/WithTabs/components.jsx +1 -1
  10. package/components/Card/WithTabs/index.jsx +4 -3
  11. package/components/Card/index.tsx +1 -0
  12. package/components/Changelog/index.tsx +6 -7
  13. package/components/Changelog/navigation/VersionBadge.tsx +2 -1
  14. package/components/Changelog/navigation/VersionTag.tsx +1 -0
  15. package/components/Changelog/navigation/index.tsx +3 -4
  16. package/components/Changelog/versionDetails/ReleaseNotesDetails.tsx +1 -1
  17. package/components/Changelog/versionDetails/UpdateCommandBox.tsx +4 -5
  18. package/components/Changelog/versionDetails/VersionKindLabel.tsx +3 -4
  19. package/components/Changelog/versionDetails/index.tsx +4 -5
  20. package/components/ChangesEmptyState/AuthErrorPage.tsx +2 -3
  21. package/components/ChangesEmptyState/OfflinePage.tsx +1 -1
  22. package/components/ChangesEmptyState/index.ts +1 -1
  23. package/components/ChangesItems/ChangesItems.tsx +9 -10
  24. package/components/ChangesItems/DevCollaborationExperiment.tsx +2 -3
  25. package/components/ChangesItems/ErrorBanner.tsx +1 -1
  26. package/components/CodeBlock/index.tsx +3 -4
  27. package/components/ConfigErrors/index.jsx +1 -1
  28. package/components/CustomTypeTable/changesPage.tsx +6 -6
  29. package/components/DeleteCTModal/index.tsx +6 -7
  30. package/components/DeleteDocumentsDrawer/AssociatedDocumentsCard.tsx +2 -3
  31. package/components/DeleteDocumentsDrawer/HardDeleteDocumentsDrawer.tsx +8 -9
  32. package/components/DeleteDocumentsDrawer/SoftDeleteDocumentsDrawer.tsx +8 -8
  33. package/components/DeleteDocumentsDrawer/index.tsx +1 -1
  34. package/components/DeleteSliceModal/index.tsx +6 -7
  35. package/components/DeleteVariationModal/index.tsx +5 -6
  36. package/components/DropDownSelector/index.tsx +2 -4
  37. package/components/EmptyState/index.tsx +3 -4
  38. package/components/FormFields/Array.jsx +2 -4
  39. package/components/FormFields/Checkbox.jsx +1 -1
  40. package/components/FormFields/CheckboxControl.jsx +1 -1
  41. package/components/FormFields/Input.tsx +1 -1
  42. package/components/FormFields/SelectDefaultValue.jsx +1 -1
  43. package/components/Forms/CreateCustomTypeModal/CreateCustomTypeModal.tsx +15 -16
  44. package/components/Forms/CreateSliceModal/CreateSliceModal.tsx +9 -10
  45. package/components/Forms/RenameCustomTypeModal/RenameCustomTypeModal.tsx +11 -12
  46. package/components/Forms/RenameSliceModal/RenameSliceModal.tsx +6 -7
  47. package/components/Forms/RenameVariationModal/RenameVariationModal.module.css +5 -0
  48. package/components/Forms/RenameVariationModal/RenameVariationModal.tsx +6 -7
  49. package/components/Forms/components/InputBox.tsx +2 -2
  50. package/components/Forms/components/SelectRepeatable.tsx +3 -3
  51. package/components/Forms/formsValidator.ts +3 -2
  52. package/components/FullPage/index.tsx +1 -1
  53. package/components/InputDeleteIcon/index.jsx +1 -1
  54. package/components/ItemHeader/index.tsx +1 -1
  55. package/components/ListItem/Header.tsx +1 -1
  56. package/components/ListItem/index.tsx +7 -10
  57. package/components/LoadingPage/index.tsx +1 -0
  58. package/components/LoginModal/index.tsx +22 -23
  59. package/components/ModalFormCard/index.tsx +5 -5
  60. package/components/Navigation/ChangesItem.tsx +8 -9
  61. package/components/Navigation/Environment.tsx +7 -8
  62. package/components/Navigation/RunningVersion.tsx +1 -2
  63. package/components/Navigation/UpdateBox.tsx +3 -4
  64. package/components/Navigation/VideoItem.tsx +16 -16
  65. package/components/Navigation/index.module.css +3 -0
  66. package/components/Navigation/index.test.tsx +14 -12
  67. package/components/Navigation/index.tsx +18 -20
  68. package/components/ReviewModal/ReviewForm.tsx +12 -13
  69. package/components/ReviewModal/ReviewFormSelect.tsx +1 -1
  70. package/components/ReviewModal/ReviewModal.tsx +6 -7
  71. package/components/ScreenshotChangesModal/VariationDropZone.tsx +7 -8
  72. package/components/ScreenshotChangesModal/index.tsx +10 -14
  73. package/components/ScreenshotChangesModal/useCustomScreenshot.tsx +1 -2
  74. package/components/ScreenshotPreview/index.tsx +1 -1
  75. package/components/ScreenshotPreviewModal/index.tsx +4 -4
  76. package/components/Simulator/components/FailedConnect/index.tsx +3 -4
  77. package/components/Simulator/components/Header/VariationsPopover/index.tsx +3 -5
  78. package/components/Simulator/components/Header/index.tsx +4 -5
  79. package/components/Simulator/components/IframeRenderer/index.tsx +3 -5
  80. package/components/Simulator/components/Toolbar/index.tsx +2 -4
  81. package/components/Simulator/index.tsx +19 -26
  82. package/components/SliceMachineDrawer/index.tsx +2 -2
  83. package/components/SliceMachineIconButton/index.tsx +1 -1
  84. package/components/SliceMachineModal/index.tsx +1 -1
  85. package/components/ToasterContainer/index.tsx +3 -5
  86. package/components/Tooltip/TextWithTooltip.tsx +2 -3
  87. package/components/Tooltip/index.jsx +2 -3
  88. package/components/Warnings/index.jsx +1 -1
  89. package/lib/builders/CustomTypeBuilder/SliceZone/DeleteSliceZoneModal.tsx +2 -3
  90. package/lib/builders/CustomTypeBuilder/SliceZone/List.tsx +4 -5
  91. package/lib/builders/CustomTypeBuilder/SliceZone/SlicesTemplatesModal.tsx +8 -9
  92. package/lib/builders/CustomTypeBuilder/SliceZone/UpdateSliceZoneModal.tsx +2 -3
  93. package/lib/builders/CustomTypeBuilder/SliceZone/UpdateSliceZoneModalList.tsx +3 -3
  94. package/lib/builders/CustomTypeBuilder/SliceZone/index.tsx +21 -22
  95. package/lib/builders/CustomTypeBuilder/TabModal/InputBox.tsx +1 -1
  96. package/lib/builders/CustomTypeBuilder/TabModal/delete.tsx +1 -1
  97. package/lib/builders/CustomTypeBuilder/TabModal/update.tsx +1 -1
  98. package/lib/builders/CustomTypeBuilder/TabZone/index.tsx +20 -21
  99. package/lib/builders/CustomTypeBuilder/index.tsx +4 -5
  100. package/lib/builders/SliceBuilder/FieldZones/index.tsx +105 -41
  101. package/lib/builders/SliceBuilder/Sidebar/AddVariationModal.tsx +7 -8
  102. package/lib/builders/SliceBuilder/Sidebar/index.tsx +7 -8
  103. package/lib/builders/SliceBuilder/SimulatorButton/index.tsx +9 -12
  104. package/lib/builders/SliceBuilder/index.tsx +11 -8
  105. package/lib/builders/common/EditModal/Field.jsx +2 -5
  106. package/lib/builders/common/EditModal/Form.jsx +1 -1
  107. package/lib/builders/common/EditModal/index.jsx +11 -17
  108. package/lib/builders/common/SelectFieldTypeModal/index.jsx +3 -5
  109. package/lib/builders/common/Zone/Card/components/ErrorTooltip.tsx +2 -3
  110. package/lib/builders/common/Zone/Card/components/Hints/CodeBlock.tsx +4 -6
  111. package/lib/builders/common/Zone/Card/components/Hints/index.tsx +1 -1
  112. package/lib/builders/common/Zone/Card/components/NewField.tsx +13 -14
  113. package/lib/builders/common/Zone/Card/index.jsx +2 -3
  114. package/lib/builders/common/Zone/components/EmptyState/index.tsx +2 -2
  115. package/lib/builders/common/Zone/index.jsx +3 -4
  116. package/lib/forms/defaults.ts +1 -1
  117. package/lib/forms/fields.ts +1 -2
  118. package/lib/forms/index.ts +1 -0
  119. package/lib/models/common/ComponentUI.ts +1 -1
  120. package/lib/models/common/CustomType/index.ts +5 -4
  121. package/lib/models/common/CustomType/sliceZone.ts +2 -1
  122. package/lib/models/common/CustomType/tab.ts +4 -4
  123. package/lib/models/common/DeprecatedMockConfigMessage.tsx +2 -2
  124. package/lib/models/common/Environment.ts +2 -2
  125. package/lib/models/common/Fields.ts +1 -1
  126. package/lib/models/common/Group.ts +3 -2
  127. package/lib/models/common/Library.ts +2 -1
  128. package/lib/models/common/LibraryUI.ts +1 -1
  129. package/lib/models/common/ModelData.ts +1 -1
  130. package/lib/models/common/ModelStatus/compareCustomTypeModels.ts +2 -1
  131. package/lib/models/common/ModelStatus/compareSliceModels.ts +2 -1
  132. package/lib/models/common/ModelStatus/index.ts +10 -9
  133. package/lib/models/common/Slice.ts +2 -2
  134. package/lib/models/common/Slices.ts +2 -2
  135. package/lib/models/common/normalizers/customType.ts +1 -1
  136. package/lib/models/common/normalizers/slices.ts +3 -2
  137. package/lib/models/common/widgets/Boolean/index.ts +5 -7
  138. package/lib/models/common/widgets/Color/index.ts +2 -3
  139. package/lib/models/common/widgets/ContentRelationship/Form.tsx +7 -9
  140. package/lib/models/common/widgets/ContentRelationship/index.ts +7 -8
  141. package/lib/models/common/widgets/Date/index.ts +2 -2
  142. package/lib/models/common/widgets/Embed/index.ts +2 -2
  143. package/lib/models/common/widgets/GeoPoint/index.ts +2 -3
  144. package/lib/models/common/widgets/Group/Form.jsx +3 -4
  145. package/lib/models/common/widgets/Group/ListItem/index.jsx +13 -23
  146. package/lib/models/common/widgets/Group/index.ts +4 -3
  147. package/lib/models/common/widgets/Image/Form.tsx +8 -11
  148. package/lib/models/common/widgets/Image/components.tsx +5 -5
  149. package/lib/models/common/widgets/Image/index.ts +3 -5
  150. package/lib/models/common/widgets/Link/Form.jsx +3 -5
  151. package/lib/models/common/widgets/Link/index.ts +3 -3
  152. package/lib/models/common/widgets/LinkToMedia/Form.jsx +2 -4
  153. package/lib/models/common/widgets/LinkToMedia/index.ts +3 -4
  154. package/lib/models/common/widgets/Number/index.ts +2 -2
  155. package/lib/models/common/widgets/Select/FormFields.jsx +7 -8
  156. package/lib/models/common/widgets/Select/index.ts +3 -6
  157. package/lib/models/common/widgets/StructuredText/Form.tsx +10 -10
  158. package/lib/models/common/widgets/StructuredText/index.ts +3 -6
  159. package/lib/models/common/widgets/StructuredText/options.tsx +2 -2
  160. package/lib/models/common/widgets/Text/index.ts +5 -5
  161. package/lib/models/common/widgets/Timestamp/index.ts +4 -5
  162. package/lib/models/common/widgets/UID/index.ts +4 -5
  163. package/lib/models/common/widgets/Widget.ts +2 -1
  164. package/lib/models/common/widgets/index.ts +1 -1
  165. package/lib/models/common/widgets/withGroup.ts +1 -2
  166. package/lib/models/server/ServerState.ts +4 -3
  167. package/lib/utils/index.ts +4 -5
  168. package/out/404.html +1 -1
  169. package/out/_next/static/6WrgMw0SELcypoJCYNiKd/_buildManifest.js +1 -0
  170. package/out/_next/static/chunks/{25-792af14760d9df34.js → 25-607d5cfe6492f4e8.js} +1 -1
  171. package/out/_next/static/chunks/286-6ee80333008646b9.js +1 -0
  172. package/out/_next/static/chunks/318-c84322cba57be932.js +1 -0
  173. package/out/_next/static/chunks/382-8194eab141c7ea2f.js +1 -0
  174. package/out/_next/static/chunks/727-b53258380c1a11f1.js +1 -0
  175. package/out/_next/static/chunks/799-68887319f3169f78.js +1 -0
  176. package/out/_next/static/chunks/pages/{_app-756c037ed6c707e9.js → _app-6177e3581af44083.js} +1 -1
  177. package/out/_next/static/chunks/pages/changelog-2d061c06b2b82e28.js +1 -0
  178. package/out/_next/static/chunks/pages/changes-cde59d56dc849106.js +1 -0
  179. package/out/_next/static/chunks/pages/custom-types/{[customTypeId]-d1a4a07e6b600fa6.js → [customTypeId]-89ccb93ce7409ad0.js} +1 -1
  180. package/out/_next/static/chunks/pages/index-b5817351a77c6d40.js +1 -0
  181. package/out/_next/static/chunks/pages/labs-0fc7d01b8c9bfc2a.js +1 -0
  182. package/out/_next/static/chunks/pages/page-types/{[pageTypeId]-a724ff12ef322020.js → [pageTypeId]-dbf86fe3a94dc892.js} +1 -1
  183. package/out/_next/static/chunks/pages/settings-897ad13a08f73048.js +1 -0
  184. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/[variation]/simulator-ed3157875529f0f2.js +1 -0
  185. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/[variation]-69cf4b12bb354f9f.js +1 -0
  186. package/out/_next/static/chunks/pages/slices-391f6c4b30af0759.js +1 -0
  187. package/out/_next/static/css/{838fd8bb5a7c32b0.css → 0e0d6c4ec6bf7373.css} +1 -1
  188. package/out/_next/static/css/{21654235130d0806.css → 243a4d347efcfd53.css} +1 -1
  189. package/out/_next/static/css/{b22c0750c14cc089.css → 27f2b9b9c9f65885.css} +1 -1
  190. package/out/_next/static/css/{72465cc1225f28a2.css → 6e65ff596e3b465e.css} +1 -1
  191. package/out/_next/static/css/70e3649c6ba13fdc.css +1 -0
  192. package/out/changelog.html +1 -1
  193. package/out/changes.html +1 -1
  194. package/out/custom-types/[customTypeId].html +1 -1
  195. package/out/custom-types.html +1 -1
  196. package/out/index.html +1 -1
  197. package/out/labs.html +1 -1
  198. package/out/page-types/[pageTypeId].html +1 -1
  199. package/out/settings.html +1 -1
  200. package/out/slices/[lib]/[sliceName]/[variation]/simulator.html +1 -1
  201. package/out/slices/[lib]/[sliceName]/[variation].html +1 -1
  202. package/out/slices.html +1 -1
  203. package/package.json +5 -3
  204. package/pages/_app.tsx +6 -8
  205. package/pages/changelog.tsx +1 -2
  206. package/pages/changes.tsx +17 -15
  207. package/pages/custom-types.tsx +1 -2
  208. package/pages/index.tsx +1 -2
  209. package/pages/slices/[lib]/[sliceName]/[variation]/index.tsx +2 -3
  210. package/pages/slices/[lib]/[sliceName]/[variation]/simulator.tsx +2 -3
  211. package/pages/slices.tsx +22 -20
  212. package/sentry.client.config.ts +1 -1
  213. package/src/ErrorBoundary.tsx +1 -2
  214. package/src/apiClient.ts +7 -8
  215. package/src/components/BaseHoverCard/BaseHoverCard.stories.tsx +1 -1
  216. package/src/components/BaseHoverCard/BaseHoverCard.test.tsx +1 -1
  217. package/src/components/BaseHoverCard/BaseHoverCard.tsx +1 -1
  218. package/src/components/BlankSlate/BlankSlate.stories.tsx +1 -1
  219. package/src/components/BlankSlate/index.ts +1 -1
  220. package/src/components/Breadcrumb/Breadcrumb.module.css +11 -0
  221. package/src/components/Breadcrumb/Breadcrumb.module.css.d.ts +6 -0
  222. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +34 -0
  223. package/src/components/Breadcrumb/Breadcrumb.tsx +43 -25
  224. package/src/components/Breadcrumb/index.ts +1 -1
  225. package/src/components/Card/Card.stories.tsx +1 -2
  226. package/src/components/Card/Card.tsx +3 -2
  227. package/src/components/CodeBlock/CodeBlock.module.css +46 -0
  228. package/src/components/CodeBlock/CodeBlock.module.css.d.ts +10 -0
  229. package/src/components/CodeBlock/CodeBlock.tsx +7 -8
  230. package/src/components/ContentTabs/ContentTabs.module.css +60 -0
  231. package/src/components/ContentTabs/ContentTabs.module.css.d.ts +12 -0
  232. package/src/components/ContentTabs/ContentTabs.tsx +2 -2
  233. package/src/components/Count/Count.module.css +19 -0
  234. package/src/components/Count/Count.module.css.d.ts +6 -0
  235. package/src/components/{Counter/Counter.stories.tsx → Count/Count.stories.tsx} +3 -3
  236. package/src/components/{Counter/Counter.tsx → Count/Count.tsx} +3 -4
  237. package/src/components/Count/index.ts +1 -0
  238. package/src/components/Divider/Divider.stories.tsx +1 -1
  239. package/src/components/HoverCard/HoverCard.module.css +79 -0
  240. package/src/components/HoverCard/HoverCard.module.css.d.ts +13 -0
  241. package/src/components/HoverCard/HoverCard.stories.tsx +3 -2
  242. package/src/components/HoverCard/HoverCard.test.tsx +2 -2
  243. package/src/components/HoverCard/HoverCard.tsx +3 -4
  244. package/src/components/HoverCard/index.ts +3 -3
  245. package/src/components/SideNav/SideNav.stories.tsx +6 -7
  246. package/src/components/SideNav/SideNav.tsx +6 -6
  247. package/src/components/SideNav/SideNavEnvironmentSelector.tsx +3 -4
  248. package/src/components/Table/Table.stories.tsx +2 -2
  249. package/src/components/Table/Table.test.tsx +1 -2
  250. package/src/components/Table/Table.tsx +2 -2
  251. package/src/components/Table/index.ts +1 -1
  252. package/src/components/TextLink/TextLink.module.css +58 -0
  253. package/src/components/TextLink/TextLink.module.css.d.ts +11 -0
  254. package/src/components/TextLink/TextLink.stories.tsx +1 -1
  255. package/src/components/TextLink/TextLink.tsx +5 -5
  256. package/src/domain/__tests__/customType.test.ts +1 -2
  257. package/src/domain/__tests__/slice.test.ts +40 -0
  258. package/src/domain/customType.ts +1 -2
  259. package/src/domain/slice.ts +29 -5
  260. package/src/features/autoSave/AutoSaveStatusIndicator.tsx +1 -2
  261. package/src/features/changelog/useSliceMachineLatestNonBreakingVersion.ts +0 -1
  262. package/src/features/changelog/useSliceMachineReleaseNotes.ts +0 -1
  263. package/src/features/changelog/useSliceMachineVersions.ts +0 -1
  264. package/src/features/changes/BlankSlates/NoChangesBlankSlate.tsx +9 -13
  265. package/src/features/changes/PushChangesButton.tsx +5 -6
  266. package/src/features/changes/StatusBadge.tsx +2 -3
  267. package/src/features/customTypes/EditDropdown.tsx +6 -10
  268. package/src/features/customTypes/PageTypeOnboarding.tsx +4 -5
  269. package/src/features/customTypes/__tests__/CustomTypeBuilderPage.test.tsx +12 -15
  270. package/src/features/customTypes/__tests__/CustomTypesTablePage.test.tsx +7 -7
  271. package/src/features/customTypes/actions/convertCustomToPageType.ts +2 -3
  272. package/src/features/customTypes/actions/createCustomType.ts +2 -3
  273. package/src/features/customTypes/actions/deleteCustomType.ts +2 -3
  274. package/src/features/customTypes/actions/renameCustomType.ts +2 -3
  275. package/src/features/customTypes/customTypesBuilder/CustomTypeProvider.tsx +8 -9
  276. package/src/features/customTypes/customTypesBuilder/CustomTypesBuilderPage.tsx +22 -16
  277. package/src/features/customTypes/customTypesBuilder/PageSnippetDialog/PageSnippetDialog.tsx +4 -5
  278. package/src/features/customTypes/customTypesBuilder/SliceZoneBlankSlate.tsx +1 -2
  279. package/src/features/customTypes/customTypesBuilder/useCustomType.ts +0 -1
  280. package/src/features/customTypes/customTypesConfig.ts +1 -2
  281. package/src/features/customTypes/customTypesTable/CustomTypesTable.tsx +14 -15
  282. package/src/features/customTypes/customTypesTable/CustomTypesTablePage.tsx +21 -23
  283. package/src/features/customTypes/customTypesTable/useCustomTypes.ts +4 -5
  284. package/src/features/documentation/MarkdownRenderer/index.tsx +5 -7
  285. package/src/features/documentation/useDocumentation.ts +0 -1
  286. package/src/features/environments/actions/getActiveEnvironment.ts +0 -1
  287. package/src/features/environments/actions/setEnvironment.ts +1 -2
  288. package/src/features/inAppGuide/InAppGuideContext.tsx +2 -3
  289. package/src/features/inAppGuide/InAppGuideDialog.tsx +4 -5
  290. package/src/features/inAppGuide/inAppGuideContent.tsx +1 -2
  291. package/src/features/labs/labsList/LabsList.tsx +2 -2
  292. package/src/features/labs/labsList/LabsListItem.tsx +1 -1
  293. package/src/features/labs/labsList/LabsPage.tsx +7 -5
  294. package/src/features/labs/labsList/useLab.tsx +0 -1
  295. package/src/features/settings/SettingsPage.tsx +8 -6
  296. package/src/features/settings/git/ConnectGitRepository.tsx +2 -3
  297. package/src/features/settings/git/GitOwnerSelect.tsx +1 -2
  298. package/src/features/settings/git/GitProvider.ts +0 -1
  299. package/src/features/settings/git/GitProviderConnectButtons.tsx +1 -2
  300. package/src/features/settings/git/GitRepositoriesList.tsx +1 -2
  301. package/src/features/settings/git/GitRepositoriesSearch.tsx +1 -2
  302. package/src/features/settings/git/GitRepositoryConnectDialog.tsx +3 -4
  303. package/src/features/settings/git/useGitOwners.ts +0 -1
  304. package/src/features/settings/git/useGitRepos.ts +0 -1
  305. package/src/features/settings/git/useLinkedGitRepos.ts +0 -1
  306. package/src/features/settings/git/useWriteAPIToken.ts +0 -1
  307. package/src/features/slices/actions/addSlicesToSliceZone.ts +1 -2
  308. package/src/features/slices/actions/createSlice.ts +3 -4
  309. package/src/features/slices/actions/deleteSlice.ts +1 -2
  310. package/src/features/slices/actions/renameSlice.ts +3 -4
  311. package/src/features/slices/actions/uploadSliceScreenshot.ts +1 -2
  312. package/src/features/slices/convertLegacySlice/ConvertLegacySliceAsNewSliceDialog.tsx +9 -10
  313. package/src/features/slices/convertLegacySlice/ConvertLegacySliceAsNewVariationDialog.tsx +7 -8
  314. package/src/features/slices/convertLegacySlice/ConvertLegacySliceButton.module.css +14 -0
  315. package/src/features/slices/convertLegacySlice/ConvertLegacySliceButton.module.css.d.ts +6 -0
  316. package/src/features/slices/convertLegacySlice/ConvertLegacySliceButton.tsx +10 -11
  317. package/src/features/slices/convertLegacySlice/ConvertLegacySliceMergeWithIdenticalDialog.tsx +5 -8
  318. package/src/features/slices/convertLegacySlice/types.ts +1 -1
  319. package/src/features/slices/sliceBuilder/FloatingBackButton.tsx +3 -4
  320. package/src/features/slices/sliceBuilder/SliceBuilderProvider.tsx +9 -10
  321. package/src/features/slices/sliceBuilder/actions/deleteVariation.ts +2 -3
  322. package/src/features/slices/sliceBuilder/actions/renameVariation.ts +1 -2
  323. package/src/features/slices/sliceBuilder/useGroupsInSlicesExperiment.ts +8 -0
  324. package/src/features/slices/sliceCards/NonSharedSliceCard.tsx +2 -3
  325. package/src/features/slices/sliceCards/SharedSliceCard.tsx +4 -5
  326. package/src/features/slicesTemplates/actions/createSlicesTemplates.ts +2 -3
  327. package/src/features/sync/AutoSyncProvider.tsx +17 -18
  328. package/src/features/sync/actions/pushChanges.ts +1 -1
  329. package/src/features/sync/components/AutoSyncStatusIndicator.tsx +2 -3
  330. package/src/features/sync/fetchUnSyncChanges.ts +1 -1
  331. package/src/features/sync/getUnSyncChanges.ts +4 -4
  332. package/src/features/sync/useUnSyncChanges.ts +4 -5
  333. package/src/hooks/useActionQueue.tsx +5 -5
  334. package/src/hooks/useAdapterName.ts +0 -1
  335. package/src/hooks/useAuthStatus.ts +1 -2
  336. package/src/hooks/useCurrentSlice.tsx +2 -3
  337. package/src/hooks/useEditorContent.ts +3 -3
  338. package/src/hooks/useExperimentVariant.ts +0 -1
  339. package/src/hooks/useIsEmptyProject.ts +0 -1
  340. package/src/hooks/useRepositoryInformation.ts +2 -3
  341. package/src/hooks/useRouteChange.tsx +1 -1
  342. package/src/hooks/useSMTracker.ts +4 -5
  343. package/src/hooks/useScreenshotChangesModal.ts +3 -3
  344. package/src/hooks/useServerState.ts +4 -5
  345. package/src/hooks/useSliceMachineConfig.ts +1 -2
  346. package/src/hooks/useSliceMachineRunningVersion.ts +0 -1
  347. package/src/hooks/useThrottle.ts +1 -1
  348. package/src/hooks/useUpdateAvailable.ts +0 -1
  349. package/src/hooks/useWindowDimensions.ts +1 -1
  350. package/src/hooks/useWindowSize.ts +2 -1
  351. package/src/modules/availableCustomTypes/index.ts +13 -12
  352. package/src/modules/environment/index.ts +9 -8
  353. package/src/modules/loading/index.ts +3 -2
  354. package/src/modules/modal/index.ts +3 -2
  355. package/src/modules/slices/index.ts +4 -4
  356. package/src/modules/slices/types.ts +1 -1
  357. package/src/modules/useSliceMachineActions.ts +22 -21
  358. package/src/modules/userContext/index.ts +5 -4
  359. package/src/redux/reducer.ts +5 -5
  360. package/src/redux/store.ts +6 -5
  361. package/src/redux/type.ts +4 -4
  362. package/src/theme.ts +1 -2
  363. package/test/__setup__.ts +3 -0
  364. package/vite.config.ts +4 -3
  365. package/components/Forms/RenameVariationModal/RenameVariationModal.css.ts +0 -7
  366. package/components/Navigation/index.css.ts +0 -5
  367. package/out/_next/static/chunks/286-e0950c3083c672e8.js +0 -1
  368. package/out/_next/static/chunks/318-d6f1200138628ec3.js +0 -1
  369. package/out/_next/static/chunks/727-2c302be2def92786.js +0 -1
  370. package/out/_next/static/chunks/799-7b910b896ff60ebe.js +0 -1
  371. package/out/_next/static/chunks/904-c9221a5cb09524e8.js +0 -1
  372. package/out/_next/static/chunks/pages/changelog-5c9ac93faf0df06b.js +0 -1
  373. package/out/_next/static/chunks/pages/changes-3e4989e09fd412a8.js +0 -1
  374. package/out/_next/static/chunks/pages/index-cf93d16e9c63b6db.js +0 -1
  375. package/out/_next/static/chunks/pages/labs-6f5925cd6cdcee9e.js +0 -1
  376. package/out/_next/static/chunks/pages/settings-f0620e5b727cda03.js +0 -1
  377. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/[variation]/simulator-01d67e97cb901e46.js +0 -1
  378. package/out/_next/static/chunks/pages/slices/[lib]/[sliceName]/[variation]-8d7043e6638d65cd.js +0 -1
  379. package/out/_next/static/chunks/pages/slices-77cff50b1df13579.js +0 -1
  380. package/out/_next/static/css/be1f49e49a5aa7eb.css +0 -1
  381. package/out/_next/static/dLmvq3LL0BsWu15laiKoK/_buildManifest.js +0 -1
  382. package/src/components/Breadcrumb/Breadcrumb.css.ts +0 -5
  383. package/src/components/Breadcrumb/Breadcrumb.stories.ts +0 -32
  384. package/src/components/CodeBlock/CodeBlock.css.ts +0 -37
  385. package/src/components/ContentTabs/ContentTabs.css.ts +0 -49
  386. package/src/components/Counter/Counter.css.ts +0 -26
  387. package/src/components/Counter/index.ts +0 -1
  388. package/src/components/HoverCard/HoverCard.css.ts +0 -105
  389. package/src/components/TextLink/TextLink.css.ts +0 -65
  390. package/src/features/slices/convertLegacySlice/ConvertLegacySliceButton.css.ts +0 -15
  391. /package/out/_next/static/{dLmvq3LL0BsWu15laiKoK → 6WrgMw0SELcypoJCYNiKd}/_ssgManifest.js +0 -0
@@ -1,7 +1,5 @@
1
1
  // @vitest-environment jsdom
2
2
 
3
- import { describe, test, vi } from "vitest";
4
-
5
3
  import {
6
4
  Table,
7
5
  TableBody,
@@ -10,6 +8,7 @@ import {
10
8
  TableRow,
11
9
  } from "@src/components/Table";
12
10
  import { render, screen } from "test/__testutils__";
11
+ import { describe, test, vi } from "vitest";
13
12
 
14
13
  // eslint-disable-next-line @typescript-eslint/no-unsafe-return
15
14
  vi.mock("next/router", () => require("next-router-mock"));
@@ -1,12 +1,12 @@
1
1
  import { findFocusableAncestor } from "@prismicio/editor-support/DOM";
2
+ import { clsx } from "clsx";
2
3
  import {
4
+ createContext,
3
5
  type FC,
4
6
  type MouseEventHandler,
5
7
  type PropsWithChildren,
6
- createContext,
7
8
  useContext,
8
9
  } from "react";
9
- import { clsx } from "clsx";
10
10
 
11
11
  import * as styles from "./Table.css";
12
12
 
@@ -1 +1 @@
1
- export { Table, TableHead, TableBody, TableRow, TableCell } from "./Table";
1
+ export { Table, TableBody, TableCell, TableHead, TableRow } from "./Table";
@@ -0,0 +1,58 @@
1
+ .root {
2
+ all: unset;
3
+ cursor: pointer;
4
+ display: flex;
5
+ align-items: center;
6
+
7
+ &:focus-visible {
8
+ outline: none;
9
+ text-decoration-line: underline;
10
+ }
11
+ }
12
+
13
+ .color-primary {
14
+ color: var(--purple9);
15
+
16
+ &:hover {
17
+ color: var(--purple8);
18
+ }
19
+
20
+ &:active {
21
+ color: var(--purple9);
22
+ }
23
+ }
24
+
25
+ .color-secondary {
26
+ color: var(--indigo11);
27
+
28
+ &:hover {
29
+ color: var(--indigo10);
30
+ }
31
+
32
+ &:active {
33
+ color: var(--indigo11);
34
+ }
35
+ }
36
+
37
+ .endIcon {
38
+ padding-left: 4px;
39
+ }
40
+
41
+ .icon-normal {
42
+ font-size: 1.2rem;
43
+ width: 18px;
44
+ height: 18px;
45
+ }
46
+
47
+ .icon-smallBold {
48
+ font-size: 1rem;
49
+ width: 16px;
50
+ height: 16px;
51
+ }
52
+
53
+ .icon-inherit {
54
+ font-family: inherit;
55
+ font-size: inherit;
56
+ width: inherit;
57
+ height: inherit;
58
+ }
@@ -0,0 +1,11 @@
1
+ declare const styles: {
2
+ readonly "color-primary": string;
3
+ readonly "color-secondary": string;
4
+ readonly "endIcon": string;
5
+ readonly "icon-inherit": string;
6
+ readonly "icon-normal": string;
7
+ readonly "icon-smallBold": string;
8
+ readonly "root": string;
9
+ };
10
+ export = styles;
11
+
@@ -1,7 +1,7 @@
1
+ import { Icon } from "@prismicio/editor-ui";
1
2
  import type { Meta, StoryObj } from "@storybook/react";
2
3
 
3
4
  import { TextLink } from "./TextLink";
4
- import { Icon } from "@prismicio/editor-ui";
5
5
 
6
6
  type Story = StoryObj<typeof meta>;
7
7
 
@@ -1,8 +1,8 @@
1
1
  import { Text } from "@prismicio/editor-ui";
2
2
  import { clsx } from "clsx";
3
- import { type FC, type ReactNode, cloneElement, isValidElement } from "react";
3
+ import { cloneElement, type FC, isValidElement, type ReactNode } from "react";
4
4
 
5
- import * as styles from "./TextLink.css";
5
+ import styles from "./TextLink.module.css";
6
6
 
7
7
  type IconProps = Readonly<{
8
8
  className?: string;
@@ -10,7 +10,7 @@ type IconProps = Readonly<{
10
10
 
11
11
  interface TextLinkProps {
12
12
  children: string;
13
- color?: keyof typeof styles.colorVariant;
13
+ color?: "primary" | "secondary";
14
14
  endIcon?: ReactNode;
15
15
  href: string;
16
16
  textVariant?: "normal" | "smallBold" | "inherit";
@@ -32,7 +32,7 @@ export const TextLink: FC<TextLinkProps> = (props) => {
32
32
  target="_blank"
33
33
  rel="noreferrer"
34
34
  {...otherProps}
35
- className={clsx(styles.root, styles.colorVariant[color])}
35
+ className={clsx(styles.root, styles[`color-${color}`])}
36
36
  >
37
37
  <Text component="span" color="inherit" variant={textVariant}>
38
38
  {children}
@@ -42,7 +42,7 @@ export const TextLink: FC<TextLinkProps> = (props) => {
42
42
  className: clsx(
43
43
  endIcon.props.className,
44
44
  styles.endIcon,
45
- styles.iconVariant[textVariant],
45
+ styles[`icon-${textVariant}`],
46
46
  ),
47
47
  })
48
48
  : null}
@@ -1,10 +1,9 @@
1
- import { describe, expect } from "vitest";
2
-
3
1
  import {
4
2
  CustomType,
5
3
  DynamicSection,
6
4
  Group,
7
5
  } from "@prismicio/types-internal/lib/customtypes";
6
+ import { describe, expect } from "vitest";
8
7
 
9
8
  import * as CustomTypeModel from "../customType";
10
9
 
@@ -0,0 +1,40 @@
1
+ import { ComponentUI } from "@lib/models/common/ComponentUI";
2
+ import { Slices } from "@lib/models/common/Slice";
3
+ import { SharedSlice } from "@prismicio/types-internal/lib/customtypes";
4
+ import { describe, expect, it } from "vitest";
5
+
6
+ import { deleteRepeatableZone } from "../slice";
7
+
8
+ describe("deleteRepeatableZone", () => {
9
+ it("removes the `items` property from a specific variation within a slice", (ctx) => {
10
+ const variation = ctx.createMock.model.sharedSliceVariation({
11
+ itemsFields: { foo: ctx.createMock.model.boolean() },
12
+ });
13
+ const model = ctx.createMock.model.sharedSlice({ variations: [variation] });
14
+ const slice = buildMockSliceComponentUI(model);
15
+
16
+ const res = deleteRepeatableZone({ slice, variationId: variation.id });
17
+ expect(res.model.variations[0].items).toBeUndefined();
18
+ });
19
+
20
+ it("does nothing if the variation does not exist", (ctx) => {
21
+ const model = ctx.createMock.model.sharedSlice();
22
+ const slice = buildMockSliceComponentUI(model);
23
+
24
+ const res = deleteRepeatableZone({ slice, variationId: "non-existent" });
25
+ expect(res).toStrictEqual(slice);
26
+ });
27
+ });
28
+
29
+ function buildMockSliceComponentUI(model: SharedSlice): ComponentUI {
30
+ return {
31
+ model: Slices.toSM(model),
32
+ extension: "extension",
33
+ fileName: "fileName",
34
+ from: "from",
35
+ href: "href",
36
+ mocks: [],
37
+ pathToSlice: "pathToSlice",
38
+ screenshots: {},
39
+ };
40
+ }
@@ -1,3 +1,4 @@
1
+ import { removeKey } from "@prismicio/editor-support/Object";
1
2
  import {
2
3
  CustomType,
3
4
  DynamicSection,
@@ -9,8 +10,6 @@ import {
9
10
  SlicesFieldType,
10
11
  UID,
11
12
  } from "@prismicio/types-internal/lib/customtypes";
12
- import { removeKey } from "@prismicio/editor-support/Object";
13
-
14
13
  import { CustomTypeFormat } from "@slicemachine/manager";
15
14
 
16
15
  type DeleteSliceZoneSliceArgs = {
@@ -1,13 +1,12 @@
1
+ import type { ComponentUI } from "@lib/models/common/ComponentUI";
2
+ import type { VariationSM, WidgetsArea } from "@lib/models/common/Slice";
3
+ import { pascalize, snakelize } from "@lib/utils/str";
4
+ import { NestableWidget } from "@prismicio/types-internal/lib/customtypes";
1
5
  import type {
2
6
  CompositeSlice,
3
7
  LegacySlice,
4
8
  SharedSlice,
5
9
  } from "@prismicio/types-internal/lib/customtypes/widgets/slices";
6
- import { NestableWidget } from "@prismicio/types-internal/lib/customtypes";
7
-
8
- import type { ComponentUI } from "@lib/models/common/ComponentUI";
9
- import type { VariationSM, WidgetsArea } from "@lib/models/common/Slice";
10
- import { pascalize, snakelize } from "@lib/utils/str";
11
10
 
12
11
  type CopySliceVariationArgs = {
13
12
  copiedVariation: VariationSM;
@@ -48,6 +47,11 @@ type ReorderFieldArgs = {
48
47
  destinationIndex: number;
49
48
  };
50
49
 
50
+ type DeleteRepeatableZoneArgs = {
51
+ slice: ComponentUI;
52
+ variationId: string;
53
+ };
54
+
51
55
  const DEFAULT_VARIATION_ID = "default";
52
56
 
53
57
  export function countMissingScreenshots(slice: ComponentUI): number {
@@ -281,3 +285,23 @@ export function rename(slice: ComponentUI, newSliceName: string): ComponentUI {
281
285
  },
282
286
  };
283
287
  }
288
+
289
+ export function deleteRepeatableZone(args: DeleteRepeatableZoneArgs) {
290
+ const { slice, variationId } = args;
291
+
292
+ return {
293
+ ...slice,
294
+ model: {
295
+ ...slice.model,
296
+ variations: slice.model.variations.map((v) => {
297
+ if (v.id === variationId) {
298
+ const newVariation = { ...v };
299
+ delete newVariation.items;
300
+
301
+ return newVariation;
302
+ }
303
+ return v;
304
+ }),
305
+ },
306
+ };
307
+ }
@@ -1,7 +1,6 @@
1
- import { FC } from "react";
2
1
  import { Box, Icon, ProgressCircle, Text } from "@prismicio/editor-ui";
3
-
4
2
  import { ActionQueueStatus } from "@src/hooks/useActionQueue";
3
+ import { FC } from "react";
5
4
 
6
5
  type AutoSaveStatusIndicatorProps = {
7
6
  status: ActionQueueStatus;
@@ -1,5 +1,4 @@
1
1
  import { useRequest } from "@prismicio/editor-support/Suspense";
2
-
3
2
  import { managerClient } from "@src/managerClient";
4
3
 
5
4
  async function getSliceMachineLatestNonBreakingVersion() {
@@ -1,5 +1,4 @@
1
1
  import { useRequest } from "@prismicio/editor-support/Suspense";
2
-
3
2
  import { managerClient } from "@src/managerClient";
4
3
 
5
4
  async function getSliceMachineReleaseNotes(version: string) {
@@ -1,5 +1,4 @@
1
1
  import { useRequest } from "@prismicio/editor-support/Suspense";
2
-
3
2
  import type { Version } from "@slicemachine/manager";
4
3
  import { managerClient } from "@src/managerClient";
5
4
 
@@ -1,23 +1,19 @@
1
- import router from "next/router";
2
-
1
+ import { createDocumentsListEndpointFromRepoName } from "@lib/utils/repo";
2
+ import { Button, Image, tokens } from "@prismicio/editor-ui";
3
3
  import {
4
4
  BlankSlate,
5
- BlankSlateImage,
6
- BlankSlateTitle,
7
- BlankSlateDescription,
8
5
  BlankSlateActions,
9
6
  BlankSlateContent,
7
+ BlankSlateDescription,
8
+ BlankSlateImage,
9
+ BlankSlateTitle,
10
10
  } from "@src/components/BlankSlate";
11
-
12
- import { Button, Image, tokens } from "@prismicio/editor-ui";
13
-
14
- import { FiExternalLink } from "react-icons/fi";
15
11
  import { TextLink } from "@src/components/TextLink";
16
- import { useSelector } from "react-redux";
17
- import { SliceMachineStoreType } from "@src/redux/type";
18
12
  import { getRepoName } from "@src/modules/environment";
19
-
20
- import { createDocumentsListEndpointFromRepoName } from "@lib/utils/repo";
13
+ import { SliceMachineStoreType } from "@src/redux/type";
14
+ import router from "next/router";
15
+ import { FiExternalLink } from "react-icons/fi";
16
+ import { useSelector } from "react-redux";
21
17
 
22
18
  export const NoChangesBlankSlate = () => {
23
19
  const { repoName } = useSelector((state: SliceMachineStoreType) => ({
@@ -1,18 +1,17 @@
1
1
  import { Button, Skeleton, Tooltip } from "@prismicio/editor-ui";
2
+ import { ErrorBoundary } from "@src/ErrorBoundary";
3
+ import { gitProviderToConfig } from "@src/features/settings/git/GitProvider";
4
+ import { useGitIntegrationExperiment } from "@src/features/settings/git/useGitIntegrationExperiment";
5
+ import { useLinkedGitRepos } from "@src/features/settings/git/useLinkedGitRepos";
2
6
  import {
3
7
  type ComponentPropsWithoutRef,
4
8
  type ElementRef,
5
9
  type FC,
10
+ forwardRef,
6
11
  type ReactNode,
7
12
  Suspense,
8
- forwardRef,
9
13
  } from "react";
10
14
 
11
- import { gitProviderToConfig } from "@src/features/settings/git/GitProvider";
12
- import { useGitIntegrationExperiment } from "@src/features/settings/git/useGitIntegrationExperiment";
13
- import { useLinkedGitRepos } from "@src/features/settings/git/useLinkedGitRepos";
14
- import { ErrorBoundary } from "@src/ErrorBoundary";
15
-
16
15
  type PushChangesButtonProps = Required<BarePushChangesButtonProps>;
17
16
 
18
17
  export const PushChangesButton: FC<PushChangesButtonProps> = (props) => (
@@ -1,8 +1,7 @@
1
- import { Badge, Tooltip } from "@prismicio/editor-ui";
2
- import type { ComponentPropsWithoutRef, FC } from "react";
3
-
4
1
  import { ModelStatus } from "@lib/models/common/ModelStatus";
2
+ import { Badge, Tooltip } from "@prismicio/editor-ui";
5
3
  import { AuthStatus } from "@src/modules/userContext/types";
4
+ import type { ComponentPropsWithoutRef, FC } from "react";
6
5
 
7
6
  export type StatusBadgeProps = GetStatusBadgeContentArgs;
8
7
 
@@ -1,4 +1,5 @@
1
- import { type FC, useState } from "react";
1
+ import { DeleteCustomTypeModal } from "@components/DeleteCTModal";
2
+ import { RenameCustomTypeModal } from "@components/Forms/RenameCustomTypeModal";
2
3
  import {
3
4
  DropdownMenu,
4
5
  DropdownMenuContent,
@@ -7,20 +8,15 @@ import {
7
8
  Icon,
8
9
  IconButton,
9
10
  } from "@prismicio/editor-ui";
10
- import { useRouter } from "next/router";
11
-
12
- import useSliceMachineActions from "@src/modules/useSliceMachineActions";
13
-
14
11
  import { type CustomType } from "@prismicio/types-internal/lib/customtypes";
12
+ import { CustomTypeFormat } from "@slicemachine/manager";
13
+ import useSliceMachineActions from "@src/modules/useSliceMachineActions";
14
+ import { useRouter } from "next/router";
15
+ import { type FC, useState } from "react";
15
16
 
16
17
  import { convertCustomToPageType } from "./actions/convertCustomToPageType";
17
-
18
18
  import { CUSTOM_TYPES_CONFIG } from "./customTypesConfig";
19
19
 
20
- import { RenameCustomTypeModal } from "@components/Forms/RenameCustomTypeModal";
21
- import { DeleteCustomTypeModal } from "@components/DeleteCTModal";
22
- import { CustomTypeFormat } from "@slicemachine/manager";
23
-
24
20
  type EditDropdownProps = {
25
21
  isChangesLocal: boolean;
26
22
  format: CustomTypeFormat;
@@ -1,10 +1,9 @@
1
- import { useState } from "react";
2
- import { Box, Button, Text } from "@prismicio/editor-ui";
3
- import { cache } from "@prismicio/editor-support/Suspense";
4
-
5
1
  import { CreateCustomTypeModal } from "@components/Forms/CreateCustomTypeModal";
6
- import { BlankPageIcon } from "@src/icons/BlankPageIcon";
2
+ import { cache } from "@prismicio/editor-support/Suspense";
3
+ import { Box, Button, Text } from "@prismicio/editor-ui";
7
4
  import { getIsEmptyProject } from "@src/hooks/useIsEmptyProject";
5
+ import { BlankPageIcon } from "@src/icons/BlankPageIcon";
6
+ import { useState } from "react";
8
7
 
9
8
  export function PageTypeOnboarding() {
10
9
  const [isCreatingCustomType, setIsCreatingCustomType] = useState(false);
@@ -1,22 +1,20 @@
1
1
  // @vitest-environment jsdom
2
- import { describe, vi, test, TestContext } from "vitest";
2
+ import { CustomTypes } from "@lib/models/common/CustomType";
3
3
  import { CustomType } from "@prismicio/types-internal/lib/customtypes";
4
-
5
- import mockRouter from "next-router-mock";
6
-
7
4
  import {
8
- CustomTypeFormat,
9
5
  createSliceMachineManager,
6
+ CustomTypeFormat,
10
7
  } from "@slicemachine/manager";
11
8
  import { createSliceMachineManagerMSWHandler } from "@slicemachine/manager/test";
12
- import { CustomTypes } from "@lib/models/common/CustomType";
9
+ import mockRouter from "next-router-mock";
10
+ import { createDynamicRouteParser } from "next-router-mock/dynamic-routes";
13
11
  import { render, screen, within } from "test/__testutils__";
14
12
  import { createTestPlugin } from "test/__testutils__/createTestPlugin";
15
13
  import { createTestProject } from "test/__testutils__/createTestProject";
16
- import { CustomTypesBuilderPage } from "../customTypesBuilder/CustomTypesBuilderPage";
17
- import pkg from "../../../../package.json";
14
+ import { describe, test, TestContext, vi } from "vitest";
18
15
 
19
- import { createDynamicRouteParser } from "next-router-mock/dynamic-routes";
16
+ import pkg from "../../../../package.json";
17
+ import { CustomTypesBuilderPage } from "../customTypesBuilder/CustomTypesBuilderPage";
20
18
 
21
19
  mockRouter.useParser(
22
20
  createDynamicRouteParser([
@@ -89,10 +87,9 @@ describe.each(formats)(
89
87
  // Submit the form
90
88
  await user.click(screen.getByRole("button", { name: "Rename" }));
91
89
 
92
- const folder =
93
- customType.format === "page" ? "Page types" : "Custom types";
90
+ const breadcrumb = screen.getByLabelText("Breadcrumb");
94
91
  expect(
95
- screen.getByTestId(`breadcrumb-${folder}-${renamedCustomType}`),
92
+ await within(breadcrumb).findByText(renamedCustomType),
96
93
  ).toBeVisible();
97
94
  });
98
95
  },
@@ -178,10 +175,10 @@ async function renderCustomTypesBuilderPage({
178
175
  const renderResults = render(<CustomTypesBuilderPage />, customTypeMockStore);
179
176
 
180
177
  const folder = customType.format === "page" ? "Page types" : "Custom types";
181
- const breadcrumb = await screen.findByTestId(
182
- `breadcrumb-${folder}-${customType.label as string}`,
178
+ const breadcrumb = await screen.findByLabelText("Breadcrumb");
179
+ expect(breadcrumb).toHaveTextContent(
180
+ `${folder}/${customType.label as string}`,
183
181
  );
184
- expect(breadcrumb).toBeVisible();
185
182
 
186
183
  return renderResults;
187
184
  }
@@ -1,21 +1,21 @@
1
1
  // @vitest-environment jsdom
2
- import { describe, vi, test, TestContext } from "vitest";
3
- import mockRouter from "next-router-mock";
2
+ import { CustomTypes } from "@lib/models/common/CustomType";
4
3
  import { CustomType } from "@prismicio/types-internal/lib/customtypes";
5
-
6
4
  import {
7
- CustomTypeFormat,
8
5
  createSliceMachineManager,
6
+ CustomTypeFormat,
9
7
  } from "@slicemachine/manager";
10
8
  import { createSliceMachineManagerMSWHandler } from "@slicemachine/manager/test";
11
9
  import { CustomTypeReadHookData } from "@slicemachine/plugin-kit";
12
- import { CustomTypes } from "@lib/models/common/CustomType";
10
+ import mockRouter from "next-router-mock";
13
11
  import { render, screen, waitFor, within } from "test/__testutils__";
14
12
  import { createTestPlugin } from "test/__testutils__/createTestPlugin";
15
13
  import { createTestProject } from "test/__testutils__/createTestProject";
16
- import { CustomTypesTablePage } from "../customTypesTable/CustomTypesTablePage";
17
- import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
14
+ import { describe, test, TestContext, vi } from "vitest";
15
+
18
16
  import pkg from "../../../../package.json";
17
+ import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
18
+ import { CustomTypesTablePage } from "../customTypesTable/CustomTypesTablePage";
19
19
 
20
20
  const formats = [
21
21
  {
@@ -1,9 +1,8 @@
1
- import { toast } from "react-toastify";
2
1
  import { CustomType } from "@prismicio/types-internal/lib/customtypes";
3
-
4
2
  import { CustomTypeFormat } from "@slicemachine/manager";
5
- import { convertToPageType } from "@src/domain/customType";
6
3
  import { updateCustomType } from "@src/apiClient";
4
+ import { convertToPageType } from "@src/domain/customType";
5
+ import { toast } from "react-toastify";
7
6
 
8
7
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
9
8
 
@@ -1,10 +1,9 @@
1
- import { toast } from "react-toastify";
2
- import { CustomType } from "@prismicio/types-internal/lib/customtypes";
3
-
4
1
  import { ToastMessageWithPath } from "@components/ToasterContainer";
2
+ import { CustomType } from "@prismicio/types-internal/lib/customtypes";
5
3
  import { CustomTypeFormat } from "@slicemachine/manager";
6
4
  import { telemetry, updateCustomType } from "@src/apiClient";
7
5
  import { create } from "@src/domain/customType";
6
+ import { toast } from "react-toastify";
8
7
 
9
8
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
10
9
 
@@ -1,8 +1,7 @@
1
- import { toast } from "react-toastify";
2
1
  import { CustomType } from "@prismicio/types-internal/lib/customtypes";
3
-
4
- import { managerClient } from "@src/managerClient";
5
2
  import { CustomTypeFormat } from "@slicemachine/manager";
3
+ import { managerClient } from "@src/managerClient";
4
+ import { toast } from "react-toastify";
6
5
 
7
6
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
8
7
 
@@ -1,8 +1,7 @@
1
- import { toast } from "react-toastify";
2
1
  import { CustomType } from "@prismicio/types-internal/lib/customtypes";
3
-
4
- import { managerClient } from "@src/managerClient";
5
2
  import { CustomTypeFormat } from "@slicemachine/manager";
3
+ import { managerClient } from "@src/managerClient";
4
+ import { toast } from "react-toastify";
6
5
 
7
6
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
8
7
 
@@ -1,19 +1,18 @@
1
+ import { useStableCallback } from "@prismicio/editor-support/React";
2
+ import { CustomType } from "@prismicio/types-internal/lib/customtypes";
3
+ import { updateCustomType } from "@src/apiClient";
4
+ import { getFormat } from "@src/domain/customType";
5
+ import { useAutoSync } from "@src/features/sync/AutoSyncProvider";
6
+ import { ActionQueueStatus, useActionQueue } from "@src/hooks/useActionQueue";
7
+ import useSliceMachineActions from "@src/modules/useSliceMachineActions";
1
8
  import {
2
- ReactNode,
3
9
  createContext,
10
+ ReactNode,
4
11
  useCallback,
5
12
  useContext,
6
13
  useMemo,
7
14
  useState,
8
15
  } from "react";
9
- import { CustomType } from "@prismicio/types-internal/lib/customtypes";
10
- import { useStableCallback } from "@prismicio/editor-support/React";
11
-
12
- import useSliceMachineActions from "@src/modules/useSliceMachineActions";
13
- import { useAutoSync } from "@src/features/sync/AutoSyncProvider";
14
- import { getFormat } from "@src/domain/customType";
15
- import { updateCustomType } from "@src/apiClient";
16
- import { ActionQueueStatus, useActionQueue } from "@src/hooks/useActionQueue";
17
16
 
18
17
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
19
18
 
@@ -1,9 +1,3 @@
1
- import { Box } from "@prismicio/editor-ui";
2
- import Head from "next/head";
3
- import { useRouter } from "next/router";
4
- import { type FC, useEffect } from "react";
5
- import { useSelector } from "react-redux";
6
-
7
1
  import {
8
2
  AppLayout,
9
3
  AppLayoutActions,
@@ -13,19 +7,27 @@ import {
13
7
  AppLayoutHeader,
14
8
  } from "@components/AppLayout";
15
9
  import { CustomTypeBuilder } from "@lib/builders/CustomTypeBuilder";
16
- import { CustomTypeSM, CustomTypes } from "@lib/models/common/CustomType";
10
+ import { CustomTypes, CustomTypeSM } from "@lib/models/common/CustomType";
17
11
  import { hasLocal } from "@lib/models/common/ModelData";
18
- import { readBuilderPageDynamicSegment } from "@src/features/customTypes/customTypesConfig";
19
- import { selectCustomTypeById } from "@src/modules/availableCustomTypes";
20
- import type { SliceMachineStoreType } from "@src/redux/type";
12
+ import { Box } from "@prismicio/editor-ui";
13
+ import { BreadcrumbItem } from "@src/components/Breadcrumb";
21
14
  import { getFormat } from "@src/domain/customType";
22
15
  import { AutoSaveStatusIndicator } from "@src/features/autoSave/AutoSaveStatusIndicator";
16
+ import {
17
+ CUSTOM_TYPES_CONFIG,
18
+ readBuilderPageDynamicSegment,
19
+ } from "@src/features/customTypes/customTypesConfig";
20
+ import { selectCustomTypeById } from "@src/modules/availableCustomTypes";
21
+ import type { SliceMachineStoreType } from "@src/redux/type";
22
+ import Head from "next/head";
23
+ import { useRouter } from "next/router";
24
+ import { type FC, useEffect } from "react";
25
+ import { useSelector } from "react-redux";
23
26
 
24
- import { CUSTOM_TYPES_CONFIG } from "../customTypesConfig";
25
27
  import { CUSTOM_TYPES_MESSAGES } from "../customTypesMessages";
26
28
  import { EditDropdown } from "../EditDropdown";
27
- import { PageSnippetDialog } from "./PageSnippetDialog";
28
29
  import { CustomTypeProvider } from "./CustomTypeProvider";
30
+ import { PageSnippetDialog } from "./PageSnippetDialog";
29
31
 
30
32
  export const CustomTypesBuilderPage: FC = () => {
31
33
  const router = useRouter();
@@ -87,10 +89,14 @@ const CustomTypesBuilderPageWithProvider: React.FC<
87
89
  <>
88
90
  <AppLayoutHeader>
89
91
  <AppLayoutBackButton url={config.tablePagePathname} />
90
- <AppLayoutBreadcrumb
91
- folder={messages.name({ start: true, plural: true })}
92
- page={customType.label ?? customType.id}
93
- />
92
+ <AppLayoutBreadcrumb>
93
+ <BreadcrumbItem>
94
+ {messages.name({ start: true, plural: true })}
95
+ </BreadcrumbItem>
96
+ <BreadcrumbItem active>
97
+ {customType.label ?? customType.id}
98
+ </BreadcrumbItem>
99
+ </AppLayoutBreadcrumb>
94
100
  <AppLayoutActions>
95
101
  <AutoSaveStatusIndicator status={actionQueueStatus} />
96
102
  {customType.format === "page" ? (