@pantheon-systems/puck-css 0.8.0 → 0.10.0

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 (484) hide show
  1. package/README.md +87 -0
  2. package/dist/agent/useAgentEdit.d.ts.map +1 -1
  3. package/dist/agent/useAgentEdit.js.map +1 -1
  4. package/dist/agent/useAgentTrigger.d.ts.map +1 -1
  5. package/dist/agent/useAgentTrigger.js.map +1 -1
  6. package/dist/auth/AuthGate.d.ts +1 -1
  7. package/dist/auth/AuthGate.d.ts.map +1 -1
  8. package/dist/auth/P1AuthProvider.d.ts.map +1 -1
  9. package/dist/auth/P1AuthProvider.js +52 -1
  10. package/dist/auth/P1AuthProvider.js.map +1 -1
  11. package/dist/collaboration/components/CollaboratorAvatars.d.ts.map +1 -1
  12. package/dist/collaboration/components/CollaboratorAvatars.js +1 -1
  13. package/dist/collaboration/components/CollaboratorAvatars.js.map +1 -1
  14. package/dist/collaboration/utils/avatarColor.d.ts +2 -8
  15. package/dist/collaboration/utils/avatarColor.d.ts.map +1 -1
  16. package/dist/collaboration/utils/avatarColor.js +4 -31
  17. package/dist/collaboration/utils/avatarColor.js.map +1 -1
  18. package/dist/collaboration/utils/focusHighlightConfig.d.ts.map +1 -1
  19. package/dist/collaboration/utils/focusHighlightConfig.js.map +1 -1
  20. package/dist/collaboration/utils/initials.d.ts +2 -0
  21. package/dist/collaboration/utils/initials.d.ts.map +1 -0
  22. package/dist/collaboration/utils/initials.js +27 -0
  23. package/dist/collaboration/utils/initials.js.map +1 -0
  24. package/dist/collaboration/utils/presenceIdentity.d.ts +29 -0
  25. package/dist/collaboration/utils/presenceIdentity.d.ts.map +1 -0
  26. package/dist/collaboration/utils/presenceIdentity.js +42 -0
  27. package/dist/collaboration/utils/presenceIdentity.js.map +1 -0
  28. package/dist/core/PuckConfigContext.d.ts +7 -0
  29. package/dist/core/PuckConfigContext.d.ts.map +1 -0
  30. package/dist/core/PuckConfigContext.js +11 -0
  31. package/dist/core/PuckConfigContext.js.map +1 -0
  32. package/dist/core/config.d.ts +1 -1
  33. package/dist/core/config.d.ts.map +1 -1
  34. package/dist/core/config.js.map +1 -1
  35. package/dist/core/index.d.ts +1 -0
  36. package/dist/core/index.d.ts.map +1 -1
  37. package/dist/core/index.js +1 -0
  38. package/dist/core/index.js.map +1 -1
  39. package/dist/core/types.d.ts +36 -3
  40. package/dist/core/types.d.ts.map +1 -1
  41. package/dist/data/collection-operators.d.ts +19 -0
  42. package/dist/data/collection-operators.d.ts.map +1 -0
  43. package/dist/data/collection-operators.js +97 -0
  44. package/dist/data/collection-operators.js.map +1 -0
  45. package/dist/data/css-queries/css-query-registry.d.ts +11 -0
  46. package/dist/data/css-queries/css-query-registry.d.ts.map +1 -0
  47. package/dist/data/css-queries/css-query-registry.js +30 -0
  48. package/dist/data/css-queries/css-query-registry.js.map +1 -0
  49. package/dist/data/dal/index.d.ts +1 -1
  50. package/dist/data/dal/index.d.ts.map +1 -1
  51. package/dist/data/dal/init.d.ts +5 -0
  52. package/dist/data/dal/init.d.ts.map +1 -1
  53. package/dist/data/dal/init.js +31 -4
  54. package/dist/data/dal/init.js.map +1 -1
  55. package/dist/data/dal/p1-store.d.ts +23 -0
  56. package/dist/data/dal/p1-store.d.ts.map +1 -1
  57. package/dist/data/dal/p1-store.js.map +1 -1
  58. package/dist/data/data-list-block/DataListFieldsGrouper.d.ts +7 -0
  59. package/dist/data/data-list-block/DataListFieldsGrouper.d.ts.map +1 -0
  60. package/dist/data/data-list-block/DataListFieldsGrouper.js +72 -0
  61. package/dist/data/data-list-block/DataListFieldsGrouper.js.map +1 -0
  62. package/dist/data/data-list-block/builtin-components/cards.d.ts +8 -0
  63. package/dist/data/data-list-block/builtin-components/cards.d.ts.map +1 -0
  64. package/dist/data/data-list-block/builtin-components/cards.js +35 -0
  65. package/dist/data/data-list-block/builtin-components/cards.js.map +1 -0
  66. package/dist/data/data-list-block/builtin-components/listing.d.ts +8 -0
  67. package/dist/data/data-list-block/builtin-components/listing.d.ts.map +1 -0
  68. package/dist/data/data-list-block/builtin-components/listing.js +11 -0
  69. package/dist/data/data-list-block/builtin-components/listing.js.map +1 -0
  70. package/dist/data/data-list-block/builtin-components/rows.d.ts +8 -0
  71. package/dist/data/data-list-block/builtin-components/rows.d.ts.map +1 -0
  72. package/dist/data/data-list-block/builtin-components/rows.js +9 -0
  73. package/dist/data/data-list-block/builtin-components/rows.js.map +1 -0
  74. package/dist/data/data-list-block/builtin-modes.d.ts +3 -0
  75. package/dist/data/data-list-block/builtin-modes.d.ts.map +1 -0
  76. package/dist/data/data-list-block/builtin-modes.js +53 -0
  77. package/dist/data/data-list-block/builtin-modes.js.map +1 -0
  78. package/dist/data/data-list-block/create-data-list-block.d.ts +3 -0
  79. package/dist/data/data-list-block/create-data-list-block.d.ts.map +1 -0
  80. package/dist/data/data-list-block/create-data-list-block.js +305 -0
  81. package/dist/data/data-list-block/create-data-list-block.js.map +1 -0
  82. package/dist/data/data-list-block/field-groups.d.ts +4 -0
  83. package/dist/data/data-list-block/field-groups.d.ts.map +1 -0
  84. package/dist/data/data-list-block/field-groups.js +28 -0
  85. package/dist/data/data-list-block/field-groups.js.map +1 -0
  86. package/dist/data/data-list-block/index.d.ts +8 -0
  87. package/dist/data/data-list-block/index.d.ts.map +1 -0
  88. package/dist/data/data-list-block/index.js +7 -0
  89. package/dist/data/data-list-block/index.js.map +1 -0
  90. package/dist/data/data-list-block/types.d.ts +53 -0
  91. package/dist/data/data-list-block/types.d.ts.map +1 -0
  92. package/dist/data/data-list-block/types.js +2 -0
  93. package/dist/data/data-list-block/types.js.map +1 -0
  94. package/dist/data/data-list-block/utils.d.ts +14 -0
  95. package/dist/data/data-list-block/utils.d.ts.map +1 -0
  96. package/dist/data/data-list-block/utils.js +65 -0
  97. package/dist/data/data-list-block/utils.js.map +1 -0
  98. package/dist/data/fields/datasource-select-field.d.ts +29 -0
  99. package/dist/data/fields/datasource-select-field.d.ts.map +1 -0
  100. package/dist/data/fields/datasource-select-field.js +40 -0
  101. package/dist/data/fields/datasource-select-field.js.map +1 -0
  102. package/dist/data/fields/field-section.d.ts +11 -0
  103. package/dist/data/fields/field-section.d.ts.map +1 -0
  104. package/dist/data/fields/field-section.js +6 -0
  105. package/dist/data/fields/field-section.js.map +1 -0
  106. package/dist/data/fields/image-position-field.d.ts +28 -0
  107. package/dist/data/fields/image-position-field.d.ts.map +1 -0
  108. package/dist/data/fields/image-position-field.js +69 -0
  109. package/dist/data/fields/image-position-field.js.map +1 -0
  110. package/dist/data/fields/pds-field-helpers.d.ts +34 -0
  111. package/dist/data/fields/pds-field-helpers.d.ts.map +1 -0
  112. package/dist/data/fields/pds-field-helpers.js +55 -0
  113. package/dist/data/fields/pds-field-helpers.js.map +1 -0
  114. package/dist/data/fields/schema-select-field.d.ts +32 -0
  115. package/dist/data/fields/schema-select-field.d.ts.map +1 -0
  116. package/dist/data/fields/schema-select-field.js +134 -0
  117. package/dist/data/fields/schema-select-field.js.map +1 -0
  118. package/dist/data/fields/template-select-field.d.ts +16 -0
  119. package/dist/data/fields/template-select-field.d.ts.map +1 -0
  120. package/dist/data/fields/template-select-field.js +31 -0
  121. package/dist/data/fields/template-select-field.js.map +1 -0
  122. package/dist/data/fields/view-mode-field.d.ts +21 -0
  123. package/dist/data/fields/view-mode-field.d.ts.map +1 -0
  124. package/dist/data/fields/view-mode-field.js +14 -0
  125. package/dist/data/fields/view-mode-field.js.map +1 -0
  126. package/dist/data/fields.d.ts +12 -0
  127. package/dist/data/fields.d.ts.map +1 -1
  128. package/dist/data/fields.js +10 -0
  129. package/dist/data/fields.js.map +1 -1
  130. package/dist/data/page-editor-meta.d.ts.map +1 -1
  131. package/dist/data/page-editor-meta.js +0 -1
  132. package/dist/data/page-editor-meta.js.map +1 -1
  133. package/dist/data/query-provider.d.ts +1 -1
  134. package/dist/data/query-provider.d.ts.map +1 -1
  135. package/dist/data/remote-datasources/fetch-http-json.d.ts.map +1 -1
  136. package/dist/data/remote-datasources/fetch-http-json.js.map +1 -1
  137. package/dist/data/remote-datasources/loader.d.ts.map +1 -1
  138. package/dist/data/remote-datasources/loader.js +3 -1
  139. package/dist/data/remote-datasources/loader.js.map +1 -1
  140. package/dist/data/resolve-data-templates.d.ts.map +1 -1
  141. package/dist/data/resolve-data-templates.js +31 -4
  142. package/dist/data/resolve-data-templates.js.map +1 -1
  143. package/dist/data/schema-heuristics.d.ts +5 -0
  144. package/dist/data/schema-heuristics.d.ts.map +1 -0
  145. package/dist/data/schema-heuristics.js +46 -0
  146. package/dist/data/schema-heuristics.js.map +1 -0
  147. package/dist/editor/P1App.d.ts.map +1 -1
  148. package/dist/editor/P1App.js +1 -1
  149. package/dist/editor/P1App.js.map +1 -1
  150. package/dist/editor/P1PuckProvider.d.ts.map +1 -1
  151. package/dist/editor/P1PuckProvider.js +170 -41
  152. package/dist/editor/P1PuckProvider.js.map +1 -1
  153. package/dist/editor/aiPanelStore.d.ts +15 -0
  154. package/dist/editor/aiPanelStore.d.ts.map +1 -0
  155. package/dist/editor/aiPanelStore.js +43 -0
  156. package/dist/editor/aiPanelStore.js.map +1 -0
  157. package/dist/editor/components/CollapsibleFieldSection.d.ts +10 -0
  158. package/dist/editor/components/CollapsibleFieldSection.d.ts.map +1 -0
  159. package/dist/editor/components/CollapsibleFieldSection.js +9 -0
  160. package/dist/editor/components/CollapsibleFieldSection.js.map +1 -0
  161. package/dist/editor/components/CollapsibleSection.module.css +70 -0
  162. package/dist/editor/components/CollapsibleSectionHeader.d.ts +20 -0
  163. package/dist/editor/components/CollapsibleSectionHeader.d.ts.map +1 -0
  164. package/dist/editor/components/CollapsibleSectionHeader.js +10 -0
  165. package/dist/editor/components/CollapsibleSectionHeader.js.map +1 -0
  166. package/dist/editor/components/DraggableRow.d.ts +13 -0
  167. package/dist/editor/components/DraggableRow.d.ts.map +1 -0
  168. package/dist/editor/components/DraggableRow.js +20 -0
  169. package/dist/editor/components/DraggableRow.js.map +1 -0
  170. package/dist/editor/components/FieldHelpText.d.ts +6 -0
  171. package/dist/editor/components/FieldHelpText.d.ts.map +1 -0
  172. package/dist/editor/components/FieldHelpText.js +6 -0
  173. package/dist/editor/components/FieldHelpText.js.map +1 -0
  174. package/dist/editor/components/FieldHelpText.module.css +13 -0
  175. package/dist/editor/components/InspectorTabHeader.js +1 -1
  176. package/dist/editor/components/InspectorTabHeader.js.map +1 -1
  177. package/dist/editor/components/OutlinePanel.d.ts +10 -0
  178. package/dist/editor/components/OutlinePanel.d.ts.map +1 -0
  179. package/dist/editor/components/OutlinePanel.js +64 -0
  180. package/dist/editor/components/OutlinePanel.js.map +1 -0
  181. package/dist/editor/components/OutlinePanel.module.css +111 -0
  182. package/dist/editor/components/P1InspectorFields.d.ts.map +1 -1
  183. package/dist/editor/components/P1InspectorFields.js +24 -5
  184. package/dist/editor/components/P1InspectorFields.js.map +1 -1
  185. package/dist/editor/components/PanelHeader.d.ts +25 -0
  186. package/dist/editor/components/PanelHeader.d.ts.map +1 -0
  187. package/dist/editor/components/PanelHeader.js +12 -0
  188. package/dist/editor/components/PanelHeader.js.map +1 -0
  189. package/dist/editor/components/PanelHeader.module.css +34 -0
  190. package/dist/editor/components/PanelShell.d.ts +10 -0
  191. package/dist/editor/components/PanelShell.d.ts.map +1 -0
  192. package/dist/editor/components/PanelShell.js +7 -0
  193. package/dist/editor/components/PanelShell.js.map +1 -0
  194. package/dist/editor/components/PanelShell.module.css +15 -0
  195. package/dist/editor/components/PreviewPanelOverlay.d.ts +12 -0
  196. package/dist/editor/components/PreviewPanelOverlay.d.ts.map +1 -0
  197. package/dist/editor/components/PreviewPanelOverlay.js +7 -0
  198. package/dist/editor/components/PreviewPanelOverlay.js.map +1 -0
  199. package/dist/editor/components/PublishedStatusBadge.d.ts +1 -1
  200. package/dist/editor/components/PublishedStatusBadge.d.ts.map +1 -1
  201. package/dist/editor/components/VersionBannerOverride.d.ts +5 -1
  202. package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
  203. package/dist/editor/components/VersionBannerOverride.js +54 -5
  204. package/dist/editor/components/VersionBannerOverride.js.map +1 -1
  205. package/dist/editor/components/VersionTimeline.d.ts +20 -0
  206. package/dist/editor/components/VersionTimeline.d.ts.map +1 -0
  207. package/dist/editor/components/VersionTimeline.js +42 -0
  208. package/dist/editor/components/VersionTimeline.js.map +1 -0
  209. package/dist/editor/components/collapsibleSectionContext.d.ts +17 -0
  210. package/dist/editor/components/collapsibleSectionContext.d.ts.map +1 -0
  211. package/dist/editor/components/collapsibleSectionContext.js +13 -0
  212. package/dist/editor/components/collapsibleSectionContext.js.map +1 -0
  213. package/dist/editor/components/componentIconName.d.ts +15 -0
  214. package/dist/editor/components/componentIconName.d.ts.map +1 -0
  215. package/dist/editor/components/componentIconName.js +68 -0
  216. package/dist/editor/components/componentIconName.js.map +1 -0
  217. package/dist/editor/components/connectable.d.ts +1 -1
  218. package/dist/editor/components/connectable.d.ts.map +1 -1
  219. package/dist/editor/components/merge-preview/MergePreviewPanel.d.ts.map +1 -1
  220. package/dist/editor/components/merge-preview/MergePreviewPanel.js.map +1 -1
  221. package/dist/editor/components/merge-preview/MergePreviewRenderer.js +3 -15
  222. package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
  223. package/dist/editor/components/outlineTree.d.ts +68 -0
  224. package/dist/editor/components/outlineTree.d.ts.map +1 -0
  225. package/dist/editor/components/outlineTree.js +72 -0
  226. package/dist/editor/components/outlineTree.js.map +1 -0
  227. package/dist/editor/components/useDragReorder.d.ts +16 -0
  228. package/dist/editor/components/useDragReorder.d.ts.map +1 -0
  229. package/dist/editor/components/useDragReorder.js +35 -0
  230. package/dist/editor/components/useDragReorder.js.map +1 -0
  231. package/dist/editor/index.d.ts +13 -0
  232. package/dist/editor/index.d.ts.map +1 -1
  233. package/dist/editor/index.js +8 -0
  234. package/dist/editor/index.js.map +1 -1
  235. package/dist/editor/plugin/P1Plugin.d.ts +19 -3
  236. package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
  237. package/dist/editor/plugin/P1Plugin.js +121 -98
  238. package/dist/editor/plugin/P1Plugin.js.map +1 -1
  239. package/dist/editor/plugin/context-sync-key.d.ts.map +1 -1
  240. package/dist/editor/plugin/context-sync-key.js +5 -5
  241. package/dist/editor/plugin/context-sync-key.js.map +1 -1
  242. package/dist/editor/plugin/createP1Overrides.d.ts +31 -43
  243. package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
  244. package/dist/editor/plugin/createP1Overrides.js +47 -43
  245. package/dist/editor/plugin/createP1Overrides.js.map +1 -1
  246. package/dist/editor/plugin/document-sync-plugin.d.ts +23 -5
  247. package/dist/editor/plugin/document-sync-plugin.d.ts.map +1 -1
  248. package/dist/editor/plugin/document-sync-plugin.js +13 -6
  249. package/dist/editor/plugin/document-sync-plugin.js.map +1 -1
  250. package/dist/editor/plugin/fieldGuidance.d.ts +45 -0
  251. package/dist/editor/plugin/fieldGuidance.d.ts.map +1 -0
  252. package/dist/editor/plugin/fieldGuidance.js +24 -0
  253. package/dist/editor/plugin/fieldGuidance.js.map +1 -0
  254. package/dist/editor/plugin/mergePreviewPlugin.d.ts.map +1 -1
  255. package/dist/editor/plugin/mergePreviewPlugin.js.map +1 -1
  256. package/dist/editor/plugin/selectHeaderCollaborators.d.ts +12 -0
  257. package/dist/editor/plugin/selectHeaderCollaborators.d.ts.map +1 -0
  258. package/dist/editor/plugin/selectHeaderCollaborators.js +15 -0
  259. package/dist/editor/plugin/selectHeaderCollaborators.js.map +1 -0
  260. package/dist/editor/thumbnails/LiveThumbnail.d.ts +47 -0
  261. package/dist/editor/thumbnails/LiveThumbnail.d.ts.map +1 -0
  262. package/dist/editor/thumbnails/LiveThumbnail.js +120 -0
  263. package/dist/editor/thumbnails/LiveThumbnail.js.map +1 -0
  264. package/dist/editor/thumbnails/ThumbnailCard.d.ts +37 -0
  265. package/dist/editor/thumbnails/ThumbnailCard.d.ts.map +1 -0
  266. package/dist/editor/thumbnails/ThumbnailCard.js +91 -0
  267. package/dist/editor/thumbnails/ThumbnailCard.js.map +1 -0
  268. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts +33 -0
  269. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts.map +1 -0
  270. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js +79 -0
  271. package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js.map +1 -0
  272. package/dist/editor/thumbnails/humanizeComponentName.d.ts +18 -0
  273. package/dist/editor/thumbnails/humanizeComponentName.d.ts.map +1 -0
  274. package/dist/editor/thumbnails/humanizeComponentName.js +32 -0
  275. package/dist/editor/thumbnails/humanizeComponentName.js.map +1 -0
  276. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts +15 -0
  277. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts.map +1 -0
  278. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js +19 -0
  279. package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js.map +1 -0
  280. package/dist/editor/thumbnails/thumbnailCache.d.ts +39 -0
  281. package/dist/editor/thumbnails/thumbnailCache.d.ts.map +1 -0
  282. package/dist/editor/thumbnails/thumbnailCache.js +97 -0
  283. package/dist/editor/thumbnails/thumbnailCache.js.map +1 -0
  284. package/dist/editor/useP1Editor.d.ts +14 -4
  285. package/dist/editor/useP1Editor.d.ts.map +1 -1
  286. package/dist/editor/useP1Editor.js +81 -37
  287. package/dist/editor/useP1Editor.js.map +1 -1
  288. package/dist/editor/useP1Overrides.d.ts +1 -1
  289. package/dist/editor/useP1Overrides.d.ts.map +1 -1
  290. package/dist/editor/useP1Overrides.js.map +1 -1
  291. package/dist/editor/useP1Plugin.d.ts +15 -3
  292. package/dist/editor/useP1Plugin.d.ts.map +1 -1
  293. package/dist/editor/useP1Plugin.js +4 -0
  294. package/dist/editor/useP1Plugin.js.map +1 -1
  295. package/dist/editor/useRealtime.d.ts +2 -2
  296. package/dist/editor/useRealtime.d.ts.map +1 -1
  297. package/dist/editor/useRealtime.js.map +1 -1
  298. package/dist/editor/useResponsivePanels.d.ts +29 -0
  299. package/dist/editor/useResponsivePanels.d.ts.map +1 -0
  300. package/dist/editor/useResponsivePanels.js +175 -0
  301. package/dist/editor/useResponsivePanels.js.map +1 -0
  302. package/dist/editor/useSidebarScrollPreservation.d.ts +10 -0
  303. package/dist/editor/useSidebarScrollPreservation.d.ts.map +1 -0
  304. package/dist/editor/useSidebarScrollPreservation.js +39 -0
  305. package/dist/editor/useSidebarScrollPreservation.js.map +1 -0
  306. package/dist/editor/utils/componentRegistry.d.ts +4 -4
  307. package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
  308. package/dist/editor/utils/componentRegistry.js +0 -1
  309. package/dist/editor/utils/componentRegistry.js.map +1 -1
  310. package/dist/editor/utils/restoreDocumentVersion.d.ts +18 -0
  311. package/dist/editor/utils/restoreDocumentVersion.d.ts.map +1 -0
  312. package/dist/editor/utils/restoreDocumentVersion.js +49 -0
  313. package/dist/editor/utils/restoreDocumentVersion.js.map +1 -0
  314. package/dist/editor/utils/sanitizeRichtextDefaults.d.ts +22 -0
  315. package/dist/editor/utils/sanitizeRichtextDefaults.d.ts.map +1 -0
  316. package/dist/editor/utils/sanitizeRichtextDefaults.js +98 -0
  317. package/dist/editor/utils/sanitizeRichtextDefaults.js.map +1 -0
  318. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts +1 -3
  319. package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -1
  320. package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
  321. package/dist/features/content-type-templates/stores/template-store-api.d.ts.map +1 -1
  322. package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts.map +1 -1
  323. package/dist/features/content-type-templates/ui/ActionBarPinButton.js +1 -1
  324. package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -1
  325. package/dist/index.d.ts +14 -1
  326. package/dist/index.d.ts.map +1 -1
  327. package/dist/index.js +13 -1
  328. package/dist/index.js.map +1 -1
  329. package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +1 -3
  330. package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
  331. package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js +2 -2
  332. package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js.map +1 -1
  333. package/dist/p1/editor/client.d.ts +1 -5
  334. package/dist/p1/editor/client.d.ts.map +1 -1
  335. package/dist/p1/editor/client.js +11 -12
  336. package/dist/p1/editor/client.js.map +1 -1
  337. package/dist/p1/editor/connect/connect-field-modal.d.ts +1 -1
  338. package/dist/p1/editor/connect/connect-field-modal.d.ts.map +1 -1
  339. package/dist/p1/editor/connect/connect-field-modal.js +1 -1
  340. package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
  341. package/dist/p1/editor/connect/connect-preview-config.d.ts +1 -1
  342. package/dist/p1/editor/connect/connect-preview-config.d.ts.map +1 -1
  343. package/dist/p1/editor/connect/field-connect-plugin.js +1 -1
  344. package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
  345. package/dist/p1/editor/editor-preview-resolve.d.ts +15 -4
  346. package/dist/p1/editor/editor-preview-resolve.d.ts.map +1 -1
  347. package/dist/p1/editor/editor-preview-resolve.js +30 -8
  348. package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
  349. package/dist/p1/editor/hooks/api-hooks.d.ts +4 -4
  350. package/dist/p1/editor/hooks/api-hooks.d.ts.map +1 -1
  351. package/dist/p1/editor/hooks/api-hooks.js +57 -30
  352. package/dist/p1/editor/hooks/api-hooks.js.map +1 -1
  353. package/dist/p1/editor/hooks/index.d.ts +1 -0
  354. package/dist/p1/editor/hooks/index.d.ts.map +1 -1
  355. package/dist/p1/editor/hooks/index.js +1 -0
  356. package/dist/p1/editor/hooks/index.js.map +1 -1
  357. package/dist/p1/editor/hooks/useEditorContext.d.ts +1 -1
  358. package/dist/p1/editor/hooks/useEditorContext.d.ts.map +1 -1
  359. package/dist/p1/editor/hooks/useEditorContext.js +12 -3
  360. package/dist/p1/editor/hooks/useEditorContext.js.map +1 -1
  361. package/dist/p1/editor/hooks/useLiveRemoteDatasources.d.ts +31 -0
  362. package/dist/p1/editor/hooks/useLiveRemoteDatasources.d.ts.map +1 -0
  363. package/dist/p1/editor/hooks/useLiveRemoteDatasources.js +45 -0
  364. package/dist/p1/editor/hooks/useLiveRemoteDatasources.js.map +1 -0
  365. package/dist/p1/editor/hooks/useP1Plugins.d.ts.map +1 -1
  366. package/dist/p1/editor/hooks/useP1Plugins.js +6 -12
  367. package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -1
  368. package/dist/p1/editor/icons/button-block-icon.d.ts +1 -1
  369. package/dist/p1/editor/icons/button-block-icon.d.ts.map +1 -1
  370. package/dist/p1/editor/icons/data-list-block-icon.d.ts +2 -0
  371. package/dist/p1/editor/icons/data-list-block-icon.d.ts.map +1 -0
  372. package/dist/p1/editor/icons/data-list-block-icon.js +5 -0
  373. package/dist/p1/editor/icons/data-list-block-icon.js.map +1 -0
  374. package/dist/p1/editor/icons/default-block-icon.d.ts +1 -1
  375. package/dist/p1/editor/icons/default-block-icon.d.ts.map +1 -1
  376. package/dist/p1/editor/icons/divider-block-icon.d.ts +1 -1
  377. package/dist/p1/editor/icons/divider-block-icon.d.ts.map +1 -1
  378. package/dist/p1/editor/icons/grid-block-icon.d.ts +1 -1
  379. package/dist/p1/editor/icons/grid-block-icon.d.ts.map +1 -1
  380. package/dist/p1/editor/icons/heading-block-icon.d.ts +1 -1
  381. package/dist/p1/editor/icons/heading-block-icon.d.ts.map +1 -1
  382. package/dist/p1/editor/icons/image-block-icon.d.ts +1 -1
  383. package/dist/p1/editor/icons/image-block-icon.d.ts.map +1 -1
  384. package/dist/p1/editor/icons/list-block-icon.d.ts +1 -1
  385. package/dist/p1/editor/icons/list-block-icon.d.ts.map +1 -1
  386. package/dist/p1/editor/icons/paragraph-block-icon.d.ts +1 -1
  387. package/dist/p1/editor/icons/paragraph-block-icon.d.ts.map +1 -1
  388. package/dist/p1/editor/icons/quote-block-icon.d.ts +1 -1
  389. package/dist/p1/editor/icons/quote-block-icon.d.ts.map +1 -1
  390. package/dist/p1/editor/icons/spacer-block-icon.d.ts +1 -1
  391. package/dist/p1/editor/icons/spacer-block-icon.d.ts.map +1 -1
  392. package/dist/p1/editor/index.d.ts +1 -1
  393. package/dist/p1/editor/index.d.ts.map +1 -1
  394. package/dist/p1/editor/index.js +1 -1
  395. package/dist/p1/editor/index.js.map +1 -1
  396. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.d.ts +6 -7
  397. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.d.ts.map +1 -1
  398. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +77 -73
  399. package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
  400. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts +4 -4
  401. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts.map +1 -1
  402. package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.js.map +1 -1
  403. package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts +1 -1
  404. package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts.map +1 -1
  405. package/dist/p1/editor/remote-datasources/remote-datasource-manager.js +1 -1
  406. package/dist/p1/editor/remote-datasources/remote-datasource-manager.js.map +1 -1
  407. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts +1 -1
  408. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts.map +1 -1
  409. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js +1 -1
  410. package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js.map +1 -1
  411. package/dist/p1/editor/template-autocomplete-layer.d.ts +2 -2
  412. package/dist/p1/editor/template-autocomplete-layer.d.ts.map +1 -1
  413. package/dist/p1/editor/template-autocomplete-layer.js +23 -3
  414. package/dist/p1/editor/template-autocomplete-layer.js.map +1 -1
  415. package/dist/p1/pages/render-client.d.ts +1 -1
  416. package/dist/p1/pages/render-client.d.ts.map +1 -1
  417. package/dist/p1/pages/render-client.js +2 -1
  418. package/dist/p1/pages/render-client.js.map +1 -1
  419. package/dist/pds/components/AgentChip.d.ts.map +1 -1
  420. package/dist/pds/components/AgentChip.js +1 -2
  421. package/dist/pds/components/AgentChip.js.map +1 -1
  422. package/dist/pds/components/CreatePageModal.d.ts +10 -1
  423. package/dist/pds/components/CreatePageModal.d.ts.map +1 -1
  424. package/dist/pds/components/CreatePageModal.js +29 -9
  425. package/dist/pds/components/CreatePageModal.js.map +1 -1
  426. package/dist/pds/components/CreatePageModal.module.css +34 -0
  427. package/dist/pds/components/DocStateBadge.d.ts +1 -1
  428. package/dist/pds/components/DocStateBadge.d.ts.map +1 -1
  429. package/dist/pds/components/DocStateBadge.js +1 -1
  430. package/dist/pds/components/DocStateBadge.js.map +1 -1
  431. package/dist/pds/components/NavIcon.js +1 -1
  432. package/dist/pds/components/NavIcon.js.map +1 -1
  433. package/dist/pds/components/P1EditorHeader.d.ts +10 -2
  434. package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
  435. package/dist/pds/components/P1EditorHeader.js +16 -7
  436. package/dist/pds/components/P1EditorHeader.js.map +1 -1
  437. package/dist/pds/components/P1EditorHeader.module.css +113 -35
  438. package/dist/pds/components/P1EditorSubheader.d.ts +1 -4
  439. package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
  440. package/dist/pds/components/P1EditorSubheader.js +10 -21
  441. package/dist/pds/components/P1EditorSubheader.js.map +1 -1
  442. package/dist/pds/components/P1EditorSubheader.module.css +7 -5
  443. package/dist/pds/components/PageNavigator.d.ts.map +1 -1
  444. package/dist/pds/components/PageNavigator.js.map +1 -1
  445. package/dist/pds/components/PresenceStack.d.ts +6 -5
  446. package/dist/pds/components/PresenceStack.d.ts.map +1 -1
  447. package/dist/pds/components/PresenceStack.js +43 -4
  448. package/dist/pds/components/PresenceStack.js.map +1 -1
  449. package/dist/pds/components/PresenceStack.module.css +52 -7
  450. package/dist/pds/components/PublishControl.js +2 -2
  451. package/dist/pds/components/PublishControl.js.map +1 -1
  452. package/dist/pds/components/WorkstreamSwitcher.d.ts +7 -2
  453. package/dist/pds/components/WorkstreamSwitcher.d.ts.map +1 -1
  454. package/dist/pds/components/WorkstreamSwitcher.js +5 -3
  455. package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
  456. package/dist/server.d.ts +3 -1
  457. package/dist/server.d.ts.map +1 -1
  458. package/dist/server.js +4 -1
  459. package/dist/server.js.map +1 -1
  460. package/dist/versioning/components/HistoricalVersionBanner.d.ts +19 -21
  461. package/dist/versioning/components/HistoricalVersionBanner.d.ts.map +1 -1
  462. package/dist/versioning/components/HistoricalVersionBanner.js +9 -21
  463. package/dist/versioning/components/HistoricalVersionBanner.js.map +1 -1
  464. package/dist/versioning/components/HistoricalVersionBanner.module.css +174 -0
  465. package/dist/versioning/components/VersionBannerActions.d.ts +15 -0
  466. package/dist/versioning/components/VersionBannerActions.d.ts.map +1 -0
  467. package/dist/versioning/components/VersionBannerActions.js +38 -0
  468. package/dist/versioning/components/VersionBannerActions.js.map +1 -0
  469. package/dist/versioning/components/VersionPublishedBadge.d.ts +1 -1
  470. package/dist/versioning/components/VersionPublishedBadge.d.ts.map +1 -1
  471. package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts +2 -2
  472. package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts.map +1 -1
  473. package/dist/versioning/utils/formatVersionDate.d.ts +15 -0
  474. package/dist/versioning/utils/formatVersionDate.d.ts.map +1 -0
  475. package/dist/versioning/utils/formatVersionDate.js +41 -0
  476. package/dist/versioning/utils/formatVersionDate.js.map +1 -0
  477. package/dist/versioning/utils/versionKind.d.ts +19 -0
  478. package/dist/versioning/utils/versionKind.d.ts.map +1 -0
  479. package/dist/versioning/utils/versionKind.js +30 -0
  480. package/dist/versioning/utils/versionKind.js.map +1 -0
  481. package/package.json +11 -7
  482. package/src/pds/theme/PuckEditorTheme.css +81 -0
  483. package/src/pds/theme/PuckEditorTheme.test.ts +50 -1
  484. package/src/styles.css +609 -84
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * OutlinePanel
4
+ *
5
+ * The page's block structure, replacing Puck's stock LayerTree at the `outline`
6
+ * override key.
7
+ *
8
+ */
9
+ import React from 'react';
10
+ import { createUsePuck } from '@puckeditor/core';
11
+ import { Icon } from '@pantheon-systems/pds-toolkit-react';
12
+ import { useP1PuckOptional } from '../../core/P1PuckContext.js';
13
+ import { GripHandleIcon } from '../icons/index.js';
14
+ import { DraggableRow } from './DraggableRow.js';
15
+ import { PanelShell } from './PanelShell.js';
16
+ import { PreviewPanelOverlay } from './PreviewPanelOverlay.js';
17
+ import { flattenOutline, resolveDrop, ROOT_ZONE } from './outlineTree.js';
18
+ import { getIconForComponent } from './componentIconName.js';
19
+ import { useDragReorder } from './useDragReorder.js';
20
+ import styles from './OutlinePanel.module.css';
21
+ const usePuckOutline = createUsePuck();
22
+ export function OutlinePanel() {
23
+ const p1Puck = useP1PuckOptional();
24
+ const isViewingHistoricalVersion = p1Puck?.isViewingHistoricalVersion ?? false;
25
+ const viewingVersion = p1Puck?.viewingVersion ?? null;
26
+ const returnToLatest = p1Puck?.returnToLatest ?? (() => { });
27
+ const content = usePuckOutline((s) => s.appState.data.content);
28
+ const config = usePuckOutline((s) => s.config);
29
+ const itemSelector = usePuckOutline((s) => s.appState.ui.itemSelector);
30
+ const dispatch = usePuckOutline((s) => s.dispatch);
31
+ const rows = React.useMemo(() => flattenOutline(content, config), [content, config]);
32
+ const isSelected = (row) => !!itemSelector &&
33
+ itemSelector.index === row.index &&
34
+ (itemSelector.zone ?? ROOT_ZONE) === row.zone;
35
+ const select = (row) => {
36
+ dispatch({ type: 'setUi', ui: { itemSelector: { index: row.index, zone: row.zone } } });
37
+ };
38
+ const remove = (row) => {
39
+ dispatch({ type: 'remove', index: row.index, zone: row.zone });
40
+ };
41
+ const { dropTargetId, getDragHandlers } = useDragReorder({
42
+ getId: (row) => row.id,
43
+ onReorder: (source, target) => {
44
+ const move = resolveDrop(source, target);
45
+ if (move) {
46
+ dispatch({
47
+ type: 'reorder',
48
+ sourceIndex: move.sourceIndex,
49
+ destinationIndex: move.destinationIndex,
50
+ destinationZone: move.zone,
51
+ });
52
+ }
53
+ },
54
+ });
55
+ return (_jsx(PreviewPanelOverlay, { isViewingHistoricalVersion: isViewingHistoricalVersion, versionNumber: viewingVersion?.versionNumber ?? undefined, onExitPreview: returnToLatest, children: _jsx(PanelShell, { title: "Outline", children: rows.length === 0 ? (_jsx("div", { className: styles.empty, children: "No blocks yet. Add one from the Blocks panel." })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.eyebrow, children: "Page structure" }), rows.map((row) => (_jsxs(DraggableRow, { depth: row.depth, isSelected: isSelected(row), isDropTarget: dropTargetId === row.id, onSelect: () => select(row), dragHandlers: getDragHandlers(row), children: [_jsx("span", { className: styles.grip, "aria-hidden": "true", children: _jsx(GripHandleIcon, {}) }), _jsx("span", { className: styles.icon, "aria-hidden": "true", children: _jsx(Icon, { iconName: getIconForComponent(row.type, row.label), size: "s" }) }), _jsx("span", { className: styles.label, children: row.label }), _jsx("button", { type: "button", className: styles.delete, "aria-label": `Delete ${row.label}`,
56
+ // stopPropagation on both onClick and onKeyDown: the row div's
57
+ // onKeyDown fires on Space/Enter bubbling up from this button,
58
+ // which would call select(row) for a block being deleted.
59
+ onClick: (e) => {
60
+ e.stopPropagation();
61
+ remove(row);
62
+ }, onKeyDown: (e) => e.stopPropagation(), children: _jsx(Icon, { iconName: "trash", size: "s" }) })] }, row.id)))] })) }) }));
63
+ }
64
+ //# sourceMappingURL=OutlinePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutlinePanel.js","sourceRoot":"","sources":["../../../src/editor/components/OutlinePanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Outline panel
3
+ */
4
+
5
+ .eyebrow {
6
+ padding: 4px 6px 10px;
7
+ font-size: var(--pds-typography-size-xs, 0.75rem);
8
+ font-weight: var(--pds-typography-fw-semibold, 600);
9
+ letter-spacing: 0.12em;
10
+ text-transform: uppercase;
11
+ color: var(--pds-color-foreground-default-secondary, var(--puck-css-text-secondary));
12
+ }
13
+
14
+ .row {
15
+ display: flex;
16
+ align-items: center;
17
+ gap: var(--pds-spacing-xs, 0.5rem);
18
+ width: 100%;
19
+ margin-bottom: 2px;
20
+ padding: var(--pds-spacing-xs, 0.5rem) var(--pds-spacing-s, 0.75rem);
21
+ border: 1px solid transparent;
22
+ border-radius: 9px;
23
+ background: transparent;
24
+ font: inherit;
25
+ text-align: left;
26
+ cursor: pointer;
27
+ }
28
+
29
+ .row:hover {
30
+ background: var(--pds-color-interactive-background-hover, var(--puck-css-bg-secondary));
31
+ }
32
+
33
+ .row:focus-visible {
34
+ outline: 2px solid var(--pds-color-interactive-focus, var(--puck-css-primary));
35
+ outline-offset: 2px;
36
+ }
37
+
38
+ .rowSelected,
39
+ .rowSelected:hover {
40
+ background: var(--pds-color-interactive-background-selected, var(--puck-css-bg-secondary));
41
+ border-color: var(--pds-color-border-hover, var(--puck-css-border));
42
+ }
43
+
44
+ .rowDropTarget {
45
+ background: var(--pds-color-panel-sunken-background, var(--puck-css-bg-secondary));
46
+ }
47
+
48
+ .label {
49
+ flex: 1;
50
+ min-width: 0;
51
+ overflow: hidden;
52
+ white-space: nowrap;
53
+ text-overflow: ellipsis;
54
+ font-family: var(--pds-typography-ff-compact, 'Inter Tight', 'Inter', sans-serif);
55
+ font-size: var(--pds-typography-size-s, 0.875rem);
56
+ font-weight: var(--pds-typography-fw-semibold, 600);
57
+ color: var(--pds-color-foreground-default, var(--puck-css-text));
58
+ }
59
+
60
+ .icon {
61
+ display: inline-flex;
62
+ flex-shrink: 0;
63
+ color: var(--pds-color-foreground-default-secondary, var(--puck-css-text-secondary));
64
+ }
65
+
66
+ .rowSelected .icon {
67
+ color: var(--pds-color-interactive-focus, var(--puck-css-primary));
68
+ }
69
+
70
+ .grip {
71
+ display: inline-flex;
72
+ flex-shrink: 0;
73
+ cursor: grab;
74
+ color: var(--pds-color-foreground-default-secondary, var(--puck-css-text-secondary));
75
+ }
76
+
77
+ /* Hidden until the row is hovered or something inside it has focus — so the
78
+ affordance stays reachable by keyboard, not just by pointer. */
79
+ .delete {
80
+ display: inline-flex;
81
+ flex-shrink: 0;
82
+ padding: 2px;
83
+ border: none;
84
+ border-radius: 4px;
85
+ background: none;
86
+ cursor: pointer;
87
+ opacity: 0;
88
+ color: var(--pds-color-foreground-default-secondary, var(--puck-css-text-secondary));
89
+ }
90
+
91
+ .row:hover .delete,
92
+ .row:focus-within .delete,
93
+ .delete:focus-visible {
94
+ opacity: 1;
95
+ }
96
+
97
+ .delete:hover {
98
+ color: var(--pds-color-status-critical-foreground);
99
+ }
100
+
101
+ .delete:focus-visible {
102
+ outline: 2px solid var(--pds-color-interactive-focus, var(--puck-css-primary));
103
+ outline-offset: 1px;
104
+ }
105
+
106
+ .empty {
107
+ padding: 40px var(--pds-spacing-l, 1.5rem);
108
+ text-align: center;
109
+ font-size: var(--pds-typography-size-s, 0.875rem);
110
+ color: var(--pds-color-foreground-default-secondary, var(--puck-css-text-secondary));
111
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"P1InspectorFields.d.ts","sourceRoot":"","sources":["../../../src/editor/components/P1InspectorFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CA8FrB"}
1
+ {"version":3,"file":"P1InspectorFields.d.ts","sourceRoot":"","sources":["../../../src/editor/components/P1InspectorFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAkB1B,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,GAAG,KAAK,CAAC,YAAY,CA6HrB"}
@@ -2,11 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createUsePuck, usePuck } from '@puckeditor/core';
3
3
  import { IconButton } from '@pantheon-systems/pds-toolkit-react';
4
4
  import { useP1PuckOptional } from '../../core/P1PuckContext.js';
5
+ import { useSidebarScrollPreservation } from '../useSidebarScrollPreservation.js';
5
6
  import { templateFromRegistryPath } from '../utils/templatePath.js';
6
- import { P1TemplateFields } from './P1TemplateFields.js';
7
- import { InspectorTabHeader } from './InspectorTabHeader.js';
8
7
  import { ReadOnlyFieldsGuard } from '../../versioning/components/ReadOnlyFieldsGuard.js';
9
8
  import { VersionReadOnlyBanner } from '../../versioning/components/VersionReadOnlyBanner.js';
9
+ import { DataListFieldsGrouper } from '../../data/data-list-block/DataListFieldsGrouper.js';
10
+ import { P1TemplateFields } from './P1TemplateFields.js';
11
+ import { InspectorTabHeader } from './InspectorTabHeader.js';
10
12
  // Selectors are at module level so the hook identity is stable across renders.
11
13
  const useInspectorPuck = createUsePuck();
12
14
  const useInspectorSelectedType = createUsePuck();
@@ -16,6 +18,7 @@ export function P1InspectorFields({ children, }) {
16
18
  const css = useP1PuckOptional();
17
19
  const itemSelector = useInspectorPuck((s) => s.appState?.ui
18
20
  ?.itemSelector ?? null);
21
+ useSidebarScrollPreservation(itemSelector);
19
22
  const selectedBlockType = useInspectorSelectedType((s) => s.selectedItem?.type ?? null);
20
23
  const contentLength = useInspectorContentLength((s) => s.appState?.data?.content
21
24
  ?.length ?? 0);
@@ -33,7 +36,12 @@ export function P1InspectorFields({ children, }) {
33
36
  dispatch({ type: 'setUi', ui: { itemSelector: null } });
34
37
  }
35
38
  if (tab === 'block' && !itemSelector && contentLength > 0) {
36
- dispatch({ type: 'setUi', ui: { itemSelector: { zone: 'default-zone', index: 0 } } });
39
+ // Puck indexes the root zone as `rootDroppableId` (`root:default-zone`);
40
+ // the bare zone name resolves to no zone, so getItem() selects nothing.
41
+ dispatch({
42
+ type: 'setUi',
43
+ ui: { itemSelector: { zone: 'root:default-zone', index: 0 } },
44
+ });
37
45
  }
38
46
  };
39
47
  const handleCollapse = () => {
@@ -47,8 +55,19 @@ export function P1InspectorFields({ children, }) {
47
55
  }
48
56
  const template = templateFromRegistryPath(css?.currentDocument?.path, css?.templates);
49
57
  if (template && !itemSelector && css?.updateTemplate) {
50
- return _jsx(P1TemplateFields, { children: children });
58
+ // Guarded like the main return — without this, template fields stay editable
59
+ // while viewing a read-only historical version.
60
+ return (_jsx(ReadOnlyFieldsGuard, { isReadOnly: isReadOnly, children: _jsx(P1TemplateFields, { children: children }) }));
51
61
  }
52
- return (_jsxs("div", { className: "p1-inspector-fields", children: [_jsx(InspectorTabHeader, { activeTab: activeTab, onTabChange: handleTabChange, isReadOnly: isReadOnly, rightSideBarVisible: rightSideBarVisible, onCollapse: handleCollapse }), isReadOnly && versionNumber !== null && (_jsx(VersionReadOnlyBanner, { versionNumber: versionNumber })), activeTab === 'block' && selectedBlockLabel && (_jsxs("div", { className: "p1-inspector-breadcrumb", "aria-label": "Selected block location", children: [_jsx("span", { className: "p1-inspector-breadcrumb__sep", "aria-hidden": "true", children: "Page" }), _jsx("span", { className: "p1-inspector-breadcrumb__sep", "aria-hidden": "true", children: "\u203A" }), _jsx("span", { className: "p1-inspector-breadcrumb__block", children: selectedBlockLabel })] })), _jsx(ReadOnlyFieldsGuard, { isReadOnly: isReadOnly, children: children })] }));
62
+ const templateLabel = !itemSelector
63
+ ? css?.currentTemplate
64
+ ?.root?.props?._template?.label
65
+ ?? css?.templates?.find((t) => t.id === css?.currentDocument?.templateId)?.label
66
+ ?? null
67
+ : null;
68
+ return (_jsxs("div", { className: `p1-inspector-fields${isReadOnly ? ' p1-inspector-fields--readonly' : ''}`, children: [_jsx(InspectorTabHeader, { activeTab: activeTab, onTabChange: handleTabChange, isReadOnly: isReadOnly, rightSideBarVisible: rightSideBarVisible, onCollapse: handleCollapse }), isReadOnly && versionNumber !== null && (_jsx(VersionReadOnlyBanner, { versionNumber: versionNumber })), activeTab === 'block' && selectedBlockLabel && (_jsxs("div", { className: "p1-inspector-breadcrumb", "aria-label": "Selected block location", children: [_jsx("span", { className: "p1-inspector-breadcrumb__sep", "aria-hidden": "true", children: "Page" }), _jsx("span", { className: "p1-inspector-breadcrumb__sep", "aria-hidden": "true", children: "\u203A" }), _jsx("span", { className: "p1-inspector-breadcrumb__block", children: selectedBlockLabel })] })), _jsxs(ReadOnlyFieldsGuard, { isReadOnly: isReadOnly, children: [selectedBlockType &&
69
+ config.components[selectedBlockType]?._fieldGroups
70
+ ? _jsx(DataListFieldsGrouper, { children: children })
71
+ : children, templateLabel && (_jsxs("div", { className: "p1-inspector-template-badge", children: [_jsx("span", { className: "p1-inspector-template-badge__label", children: "Template" }), _jsx("span", { className: "p1-inspector-template-badge__name", children: templateLabel })] }))] })] }));
53
72
  }
54
73
  //# sourceMappingURL=P1InspectorFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"P1InspectorFields.js","sourceRoot":"","sources":["../../../src/editor/components/P1InspectorFields.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"P1InspectorFields.js","sourceRoot":"","sources":["../../../src/editor/components/P1InspectorFields.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * PanelHeader
3
+ *
4
+ * The heading every left-rail panel wears: title, an optional actions slot, a
5
+ * collapse button, and the rule beneath. Blocks, Outline, Version history and
6
+ * Data sources all render it, so their headings stay identical by construction
7
+ * instead of by three hand-rolled copies drifting apart — which is exactly what
8
+ * had happened (styles.css defined .css-plugin-panel-header twice, with
9
+ * different padding).
10
+ *
11
+ * Collapsing is built in rather than a required prop: all four panels want the
12
+ * same dispatch, and every one of them renders inside Puck's context. Pass
13
+ * `onCollapse` only for work that must happen *in addition*.
14
+ */
15
+ import React from 'react';
16
+ export interface PanelHeaderProps {
17
+ /** Panel name, rendered as the heading. */
18
+ title: string;
19
+ /** Extra work to run after collapsing. The collapse itself is built in. */
20
+ onCollapse?: () => void;
21
+ /** Optional controls rendered between the title and the collapse button. */
22
+ actions?: React.ReactNode;
23
+ }
24
+ export declare function PanelHeader({ title, onCollapse, actions, }: PanelHeaderProps): React.ReactElement;
25
+ //# sourceMappingURL=PanelHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelHeader.d.ts","sourceRoot":"","sources":["../../../src/editor/components/PanelHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,OAAO,GACR,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAoBvC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { IconButton } from '@pantheon-systems/pds-toolkit-react';
3
+ import { usePuck } from '@puckeditor/core';
4
+ import styles from './PanelHeader.module.css';
5
+ export function PanelHeader({ title, onCollapse, actions, }) {
6
+ const { dispatch } = usePuck();
7
+ return (_jsxs("div", { className: styles.header, children: [_jsx("span", { className: styles.title, children: title }), actions, _jsx(IconButton, { ariaLabel: "Collapse panel", iconName: "anglesLeft", size: "s", hasTooltip: true, hasBorder: false, onClick: () => {
8
+ dispatch({ type: 'setUi', ui: { leftSideBarVisible: false } });
9
+ onCollapse?.();
10
+ } })] }));
11
+ }
12
+ //# sourceMappingURL=PanelHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelHeader.js","sourceRoot":"","sources":["../../../src/editor/components/PanelHeader.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAW9C,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,OAAO,GACU;IACjB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAE/B,OAAO,CACL,eAAK,SAAS,EAAE,MAAM,CAAC,MAAM,aAC3B,eAAM,SAAS,EAAE,MAAM,CAAC,KAAK,YAAG,KAAK,GAAQ,EAC5C,OAAO,EACR,KAAC,UAAU,IACT,SAAS,EAAC,gBAAgB,EAC1B,QAAQ,EAAC,YAAY,EACrB,IAAI,EAAC,GAAG,EACR,UAAU,EAAE,IAAI,EAChB,SAAS,EAAE,KAAK,EAChB,OAAO,EAAE,GAAG,EAAE;oBACZ,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC/D,UAAU,EAAE,EAAE,CAAC;gBACjB,CAAC,GACD,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Panel heading
3
+ *
4
+ * One heading for every left-rail panel: Blocks, Outline, Version history,
5
+ * Data sources. Geometry mirrors the prototype's `.panel-header`
6
+ * (p1-responsive/editor/editor.css:230).
7
+ */
8
+
9
+ .header {
10
+ display: flex;
11
+ align-items: center;
12
+ gap: 8px;
13
+ padding: 10px 12px;
14
+ border-bottom: 1px solid var(--pds-color-border-default, var(--puck-css-border));
15
+ flex: none;
16
+ }
17
+
18
+ .title {
19
+ flex: 1;
20
+ min-width: 0;
21
+ overflow: hidden;
22
+ white-space: nowrap;
23
+ text-overflow: ellipsis;
24
+ font-family: var(--pds-typography-ff-compact, 'Inter Tight', 'Inter', sans-serif);
25
+ font-size: 14px;
26
+ font-weight: 700;
27
+ line-height: 1.2;
28
+ color: var(--pds-color-foreground-default, var(--puck-css-text));
29
+ }
30
+
31
+ /* Trailing controls never shrink when the title is long. */
32
+ .header > *:not(.title) {
33
+ flex-shrink: 0;
34
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface PanelShellProps {
3
+ title: string;
4
+ onCollapse?: () => void;
5
+ actions?: React.ReactNode;
6
+ children: React.ReactNode;
7
+ testId?: string;
8
+ }
9
+ export declare function PanelShell({ title, onCollapse, actions, children, testId, }: PanelShellProps): React.ReactElement;
10
+ //# sourceMappingURL=PanelShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelShell.d.ts","sourceRoot":"","sources":["../../../src/editor/components/PanelShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,GACP,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAOtC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { PanelHeader } from './PanelHeader.js';
3
+ import styles from './PanelShell.module.css';
4
+ export function PanelShell({ title, onCollapse, actions, children, testId, }) {
5
+ return (_jsxs("div", { className: styles.shell, "data-testid": testId, children: [_jsx(PanelHeader, { title: title, onCollapse: onCollapse, actions: actions }), _jsx("div", { className: styles.body, children: children })] }));
6
+ }
7
+ //# sourceMappingURL=PanelShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PanelShell.js","sourceRoot":"","sources":["../../../src/editor/components/PanelShell.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAU7C,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,GACU;IAChB,OAAO,CACL,eAAK,SAAS,EAAE,MAAM,CAAC,KAAK,iBAAe,MAAM,aAC/C,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAI,EACvE,cAAK,SAAS,EAAE,MAAM,CAAC,IAAI,YAAG,QAAQ,GAAO,IACzC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ .shell {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100%;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .body {
9
+ flex: 1;
10
+ overflow-y: auto;
11
+ overflow-x: hidden;
12
+ padding: 12px;
13
+ font-size: 13px;
14
+ color: var(--pds-color-foreground-default, var(--puck-css-text));
15
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ export interface PreviewPanelOverlayProps {
3
+ children: React.ReactNode;
4
+ /** Whether a historical version is currently being previewed. */
5
+ isViewingHistoricalVersion?: boolean;
6
+ /** Version number being previewed — shown in the overlay label. */
7
+ versionNumber?: number;
8
+ /** Called when the user clicks "Back to current version". */
9
+ onExitPreview?: () => void;
10
+ }
11
+ export declare function PreviewPanelOverlay({ children, isViewingHistoricalVersion, versionNumber, onExitPreview, }: PreviewPanelOverlayProps): React.ReactElement;
12
+ //# sourceMappingURL=PreviewPanelOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreviewPanelOverlay.d.ts","sourceRoot":"","sources":["../../../src/editor/components/PreviewPanelOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iEAAiE;IACjE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,0BAAkC,EAClC,aAAa,EACb,aAAa,GACd,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAkC/C"}
@@ -0,0 +1,7 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ export function PreviewPanelOverlay({ children, isViewingHistoricalVersion = false, versionNumber, onExitPreview, }) {
3
+ return (_jsxs("div", { className: `css-preview-panel-overlay__wrapper${isViewingHistoricalVersion ? ' css-preview-panel-overlay__wrapper--readonly' : ''}`, children: [isViewingHistoricalVersion && (_jsxs("div", { className: "css-preview-panel-overlay", "aria-live": "polite", children: [_jsx("div", { className: "css-preview-panel-overlay__label-wrap", children: _jsxs("p", { className: "css-preview-panel-overlay__label", children: ["You're viewing", versionNumber != null ? ` v${versionNumber}` : ' a historical version', "."] }) }), _jsx("div", { className: "css-preview-panel-overlay__btn-wrap", children: _jsx("button", { type: "button", className: "css-preview-panel-overlay__btn", onClick: onExitPreview, disabled: !onExitPreview, children: "Back to current version" }) })] })), _jsx("div", { className: isViewingHistoricalVersion
4
+ ? 'css-preview-panel-overlay__content css-preview-panel-overlay__content--dimmed'
5
+ : 'css-preview-panel-overlay__content', "aria-hidden": isViewingHistoricalVersion ? true : undefined, children: children })] }));
6
+ }
7
+ //# sourceMappingURL=PreviewPanelOverlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreviewPanelOverlay.js","sourceRoot":"","sources":["../../../src/editor/components/PreviewPanelOverlay.tsx"],"names":[],"mappings":";AAYA,MAAM,UAAU,mBAAmB,CAAC,EAClC,QAAQ,EACR,0BAA0B,GAAG,KAAK,EAClC,aAAa,EACb,aAAa,GACY;IACzB,OAAO,CACL,eAAK,SAAS,EAAE,qCAAqC,0BAA0B,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,EAAE,EAAE,aACrI,0BAA0B,IAAI,CAC7B,eAAK,SAAS,EAAC,2BAA2B,eAAW,QAAQ,aAC3D,cAAK,SAAS,EAAC,uCAAuC,YACpD,aAAG,SAAS,EAAC,kCAAkC,+BACzB,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC,CAAC,CAAC,uBAAuB,SACxF,GACA,EACN,cAAK,SAAS,EAAC,qCAAqC,YAClD,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,gCAAgC,EAC1C,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,CAAC,aAAa,wCAGjB,GACL,IACF,CACP,EACD,cACE,SAAS,EACP,0BAA0B;oBACxB,CAAC,CAAC,+EAA+E;oBACjF,CAAC,CAAC,oCAAoC,iBAE7B,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,YAEzD,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -2,5 +2,5 @@ export interface PublishedStatusBadgeProps {
2
2
  status: "published" | "unpublished-changes" | "draft";
3
3
  className?: string;
4
4
  }
5
- export declare function PublishedStatusBadge({ status, className, }: PublishedStatusBadgeProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function PublishedStatusBadge({ status, className, }: PublishedStatusBadgeProps): import("react").JSX.Element;
6
6
  //# sourceMappingURL=PublishedStatusBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PublishedStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/editor/components/PublishedStatusBadge.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,WAAW,GAAG,qBAAqB,GAAG,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,2CAmB3B"}
1
+ {"version":3,"file":"PublishedStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/editor/components/PublishedStatusBadge.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,WAAW,GAAG,qBAAqB,GAAG,OAAO,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,SAAS,GACV,EAAE,yBAAyB,+BAmB3B"}
@@ -5,6 +5,10 @@ export interface VersionBannerOverrideProps {
5
5
  versions: DocumentVersion[];
6
6
  selectedVersionId?: string;
7
7
  onVersionSelect?: (version: DocumentVersion) => void;
8
+ onRestoreVersion?: (version: DocumentVersion) => Promise<void>;
9
+ canRevert?: boolean;
10
+ /** The currently filtered version list (from the panel filter). Steppers navigate within this list. */
11
+ filteredVersions?: DocumentVersion[];
8
12
  }
9
- export declare function VersionBannerOverride({ children, versions, selectedVersionId, onVersionSelect, }: VersionBannerOverrideProps): React.ReactElement;
13
+ export declare function VersionBannerOverride({ children, versions, selectedVersionId, onVersionSelect, onRestoreVersion, canRevert, filteredVersions, }: VersionBannerOverrideProps): React.ReactElement;
10
14
  //# sourceMappingURL=VersionBannerOverride.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionBannerOverride.d.ts","sourceRoot":"","sources":["../../../src/editor/components/VersionBannerOverride.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAIpE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,eAAe,GAChB,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CA0EjD"}
1
+ {"version":3,"file":"VersionBannerOverride.d.ts","sourceRoot":"","sources":["../../../src/editor/components/VersionBannerOverride.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAG9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAsCpE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;CACtC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,SAAiB,EACjB,gBAAgB,GACjB,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAqFjD"}
@@ -1,15 +1,64 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useLayoutEffect, useRef, useState } from 'react';
3
+ import { createPortal } from 'react-dom';
2
4
  import { Icon } from '@pantheon-systems/pds-toolkit-react';
3
5
  import { useP1Puck } from '../../core/P1PuckContext.js';
4
- import { WarningTriangleIcon } from '../icons/WarningTriangleIcon.js';
5
- export function VersionBannerOverride({ children, versions, selectedVersionId, onVersionSelect, }) {
6
+ import { HistoricalVersionBanner } from '../../versioning/components/HistoricalVersionBanner.js';
7
+ import bannerStyles from '../../versioning/components/HistoricalVersionBanner.module.css';
8
+ /**
9
+ * The slot is a sibling of the frame inside the canvas grid area, which is
10
+ * outside the transform, so the banner sizes to the real canvas width.
11
+ * Returns null when Puck's DOM does not match, letting the caller fall back to
12
+ * rendering in place rather than dropping the banner entirely.
13
+ */
14
+ function useCanvasChromeSlot(active, anchor) {
15
+ const [slot, setSlot] = useState(null);
16
+ useLayoutEffect(() => {
17
+ if (!active) {
18
+ setSlot(null);
19
+ return;
20
+ }
21
+ const root = anchor.current?.closest('#puck-canvas-root');
22
+ const frame = root?.parentElement; // PuckCanvas-inner
23
+ const canvas = frame?.parentElement; // PuckCanvas — the `editor` grid area
24
+ if (!frame || !canvas)
25
+ return;
26
+ const el = document.createElement('div');
27
+ el.className = bannerStyles.slot ?? '';
28
+ canvas.insertBefore(el, frame);
29
+ setSlot(el);
30
+ return () => {
31
+ el.remove();
32
+ setSlot(null);
33
+ };
34
+ }, [active, anchor]);
35
+ return slot;
36
+ }
37
+ export function VersionBannerOverride({ children, versions, selectedVersionId, onVersionSelect, onRestoreVersion, canRevert = false, filteredVersions, }) {
6
38
  const p1Context = useP1Puck();
39
+ // versions are newest-first from the API; index 0 is always the current (latest) version.
7
40
  const isViewingOld = !!selectedVersionId && versions.length > 0 && selectedVersionId !== versions[0]?.id;
41
+ const viewingVersion = versions.find(v => v.id === selectedVersionId);
8
42
  // While a switch is loading the next document, currentDocument is null but
9
43
  // the empty state must not flash over the still-visible previous canvas.
10
44
  const hasOrIsLoadingDocument = p1Context.currentDocument !== null || p1Context.documentLoading;
11
45
  const isReturning = p1Context.isReturningToLatest;
12
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [isViewingOld && (_jsxs("div", { className: "pds-section-message pds-section-message--warning", role: "status", style: { borderRadius: 0, flexShrink: 0 }, children: [_jsxs("div", { className: "pds-section-message__content", children: [_jsx("div", { className: "pds-section-message__icon", children: _jsx(WarningTriangleIcon, {}) }), _jsx("div", { className: "pds-section-message__text", children: _jsx("div", { className: "pds-section-message__message", children: _jsx("p", { children: "Viewing a previous version" }) }) })] }), _jsx("div", { className: "pds-section-message__actions", children: _jsx("button", { type: "button", className: "pds-button pds-button--sm pds-button--secondary pds-section-message__cta", onClick: () => versions[0] && onVersionSelect?.(versions[0]), disabled: isReturning, "aria-busy": isReturning, children: isReturning ? 'Returning…' : 'Return to current' }) })] })), _jsxs("div", { style: { flex: 1, minHeight: 0, position: 'relative' }, children: [_jsx("div", { style: {
46
+ // Stepper: navigate within the filtered list (falls back to full list if not provided).
47
+ // Newest-first: lower index = newer, higher index = older.
48
+ const stepList = filteredVersions ?? versions;
49
+ const currentIdx = selectedVersionId ? stepList.findIndex(v => v.id === selectedVersionId) : -1;
50
+ const hasPrevious = currentIdx !== -1 && currentIdx < stepList.length - 1;
51
+ const hasNext = currentIdx > 0;
52
+ // Always provide callbacks when previewing so buttons render (disabled state controls usability).
53
+ const handlePrevious = useCallback(() => { const t = stepList[currentIdx + 1]; if (hasPrevious && t)
54
+ onVersionSelect?.(t); }, [stepList, currentIdx, hasPrevious, onVersionSelect]);
55
+ const handleNext = useCallback(() => { const t = stepList[currentIdx - 1]; if (hasNext && t)
56
+ onVersionSelect?.(t); }, [stepList, currentIdx, hasNext, onVersionSelect]);
57
+ const anchorRef = useRef(null);
58
+ const slot = useCanvasChromeSlot(isViewingOld, anchorRef);
59
+ const banner = isViewingOld ? (_jsx(HistoricalVersionBanner, { version: viewingVersion, onReturnToLatest: () => { if (versions[0])
60
+ onVersionSelect?.(versions[0]); }, onRestoreVersion: onRestoreVersion, canRevert: canRevert, isReturning: isReturning, onPrevious: handlePrevious, onNext: handleNext, hasPrevious: hasPrevious, hasNext: hasNext })) : null;
61
+ return (_jsxs("div", { ref: anchorRef, style: { display: 'flex', flexDirection: 'column', height: '100%' }, children: [banner && (slot ? createPortal(banner, slot) : banner), _jsxs("div", { style: { flex: 1, minHeight: 0, position: 'relative' }, children: [_jsx("div", { style: {
13
62
  height: '100%',
14
63
  opacity: isReturning ? 0.5 : 1,
15
64
  transition: 'opacity 120ms ease',
@@ -24,7 +73,7 @@ export function VersionBannerOverride({ children, versions, selectedVersionId, o
24
73
  justifyContent: 'center',
25
74
  gap: '1rem',
26
75
  color: 'var(--pds-color-text-subtle)',
27
- backgroundColor: 'white',
28
- }, children: [_jsx(Icon, { iconName: "userAstronaut", iconSize: '3xl', "aria-hidden": "true" }), _jsx("p", { style: { margin: 0, fontFamily: 'Poppins, sans-serif', fontSize: '1rem' }, children: "Choose a page from the menu above" })] }))] })] }));
76
+ backgroundColor: 'var(--pds-color-bg-default, white)',
77
+ }, children: [_jsx(Icon, { iconName: "userAstronaut", size: "3xl", "aria-hidden": "true" }), _jsx("p", { style: { margin: 0, fontFamily: 'Poppins, sans-serif', fontSize: '1rem' }, children: "Choose a page from the menu above" })] }))] })] }));
29
78
  }
30
79
  //# sourceMappingURL=VersionBannerOverride.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VersionBannerOverride.js","sourceRoot":"","sources":["../../../src/editor/components/VersionBannerOverride.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAStE,MAAM,UAAU,qBAAqB,CAAC,EACpC,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,eAAe,GACY;IAC3B,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,CAAC,CAAC,iBAAiB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzG,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,sBAAsB,GAAG,SAAS,CAAC,eAAe,KAAK,IAAI,IAAI,SAAS,CAAC,eAAe,CAAC;IAC/F,MAAM,WAAW,GAAG,SAAS,CAAC,mBAAmB,CAAC;IAElD,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aACrE,YAAY,IAAI,CACf,eAAK,SAAS,EAAC,kDAAkD,EAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,aACvH,eAAK,SAAS,EAAC,8BAA8B,aAC3C,cAAK,SAAS,EAAC,2BAA2B,YACxC,KAAC,mBAAmB,KAAG,GACnB,EACN,cAAK,SAAS,EAAC,2BAA2B,YACxC,cAAK,SAAS,EAAC,8BAA8B,YAC3C,qDAAiC,GAC7B,GACF,IACF,EACN,cAAK,SAAS,EAAC,8BAA8B,YAC3C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0EAA0E,EACpF,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC5D,QAAQ,EAAE,WAAW,eACV,WAAW,YAErB,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,GAC1C,GACL,IACF,CACP,EAKD,eAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,aACzD,cACE,KAAK,EAAE;4BACL,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC9B,UAAU,EAAE,oBAAoB;4BAChC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;yBAChD,YAEA,QAAQ,GACL,EACL,CAAC,sBAAsB,IAAI,CAC1B,eACE,KAAK,EAAE;4BACL,QAAQ,EAAE,UAAU;4BACpB,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,EAAE;4BACV,OAAO,EAAE,MAAM;4BACf,aAAa,EAAE,QAAQ;4BACvB,UAAU,EAAE,QAAQ;4BACpB,cAAc,EAAE,QAAQ;4BACxB,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,8BAA8B;4BACrC,eAAe,EAAE,OAAO;yBACzB,aAED,KAAC,IAAI,IAAC,QAAQ,EAAC,eAAe,EAAC,QAAQ,EAAE,KAAc,iBAAc,MAAM,GAAG,EAC9E,YAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,kDAExE,IACA,CACP,IACG,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"VersionBannerOverride.js","sourceRoot":"","sources":["../../../src/editor/components/VersionBannerOverride.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import type { DocumentVersion } from '@pantheon-systems/css-client';
3
+ import type { CurrentUser } from '../../pds/components/P1EditorHeader.js';
4
+ export interface VersionTimelineProps {
5
+ dayGroups: {
6
+ label: string;
7
+ versions: DocumentVersion[];
8
+ }[];
9
+ /** Full version list — used to look up revert-source version numbers. */
10
+ allVersions: DocumentVersion[];
11
+ selectedVersionId?: string;
12
+ currentVersionId?: string;
13
+ isPreviewing: boolean;
14
+ unpublishedCount: number;
15
+ currentUser?: CurrentUser;
16
+ resolveAuthorName?: (id: string, type: 'user' | 'agent') => string | undefined;
17
+ onVersionSelect?: (version: DocumentVersion) => void;
18
+ }
19
+ export declare function VersionTimeline({ dayGroups, allVersions, selectedVersionId, currentVersionId, isPreviewing, unpublishedCount, currentUser, resolveAuthorName, onVersionSelect, }: VersionTimelineProps): React.ReactElement;
20
+ //# sourceMappingURL=VersionTimeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VersionTimeline.d.ts","sourceRoot":"","sources":["../../../src/editor/components/VersionTimeline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;KAAE,EAAE,CAAC;IAC5D,yEAAyE;IACzE,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,eAAe,GAChB,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAkF3C"}