From 3972b8f1e74b13e585c0ec9f5855bc4936a04c05 Mon Sep 17 00:00:00 2001 From: Nathaniel Hammond Date: Wed, 14 Oct 2026 15:31:14 +0100 Subject: [PATCH 1/5] fix translate category bug and extra exports --- packages/craftcms-legacy/cp/src/js/Craft.js | 2 +- resources/js/cp-module.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/craftcms-legacy/cp/src/js/Craft.js b/packages/craftcms-legacy/cp/src/js/Craft.js index a9fc29afe10..b3eb3c61cf4 100644 --- a/packages/craftcms-legacy/cp/src/js/Craft.js +++ b/packages/craftcms-legacy/cp/src/js/Craft.js @@ -85,7 +85,7 @@ $.extend(Craft, { * @returns {string} */ t: function (category, message, params = {}) { - return t(message, params, (category = 'app'), Craft.translations); + return t(message, params, category, Craft.translations); }, formatMessage: function (pattern, args) { diff --git a/resources/js/cp-module.ts b/resources/js/cp-module.ts index e9890a2de7d..f38848f3dd6 100644 --- a/resources/js/cp-module.ts +++ b/resources/js/cp-module.ts @@ -38,8 +38,23 @@ export const DeleteButton = defineAsyncComponent( () => import('./modules/admin-table/components/DeleteButton.vue') ); +/** + * Renders a server-built `HtmlFragment` (HTML plus its head and body assets), + * so a plugin's page can host HTML from template hooks or other server code. + */ +export const HtmlFragmentRenderer = defineAsyncComponent( + () => import('./common/components/HtmlFragmentRenderer.vue') +); + export type {ActionItem, ActionItemLink} from './common/types'; +export {openUiModal, type UiModalOptions} from './modules/ui/open-ui-modal'; + +export { + useInertiaUiRenderer, + type UiRendererInstance, +} from './modules/ui/useInertiaUiRenderer'; + /** * Lets a plugin's page configure the control panel shell around it — its * secondary nav, most usefully, so an index can put its own sources there. From 58da431ba540a88e14f07be08b7182dac1577442 Mon Sep 17 00:00:00 2001 From: Nathaniel Hammond Date: Fri, 16 Oct 2026 10:05:45 +0100 Subject: [PATCH 2/5] cms tweak export extra pieces --- resources/js/cp-module.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/js/cp-module.ts b/resources/js/cp-module.ts index f38848f3dd6..6b54f349679 100644 --- a/resources/js/cp-module.ts +++ b/resources/js/cp-module.ts @@ -46,6 +46,22 @@ export const HtmlFragmentRenderer = defineAsyncComponent( () => import('./common/components/HtmlFragmentRenderer.vue') ); +/** + * A screen's details column: an Info panel showing its default slot (sidebar + * content) above the server's metadata HTML. + */ +export const MetadataDetails = defineAsyncComponent( + () => import('./common/components/MetadataDetails.vue') +); + +/** + * An element's own actions (Delete, Copy URL, …), from its + * `actionMenuDescriptors()`, with their behaviors dispatched client-side. + */ +export const ElementActionMenu = defineAsyncComponent( + () => import('./modules/elements/components/ElementActionMenu.vue') +); + export type {ActionItem, ActionItemLink} from './common/types'; export {openUiModal, type UiModalOptions} from './modules/ui/open-ui-modal'; From 2da19d4eb668a1acdcad1253bedd65a27978695d Mon Sep 17 00:00:00 2001 From: Nathaniel Hammond Date: Mon, 26 Oct 2026 10:29:52 +0000 Subject: [PATCH 3/5] export screen panel --- resources/js/cp-module.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/js/cp-module.ts b/resources/js/cp-module.ts index 6b54f349679..5749a695cf5 100644 --- a/resources/js/cp-module.ts +++ b/resources/js/cp-module.ts @@ -54,6 +54,14 @@ export const MetadataDetails = defineAsyncComponent( () => import('./common/components/MetadataDetails.vue') ); +/** + * Adds a panel to the screen's details column while it's mounted: a rail icon + * and the panel it opens, with the default slot as the panel's content. + */ +export const ScreenPanel = defineAsyncComponent( + () => import('./common/components/ScreenPanel.vue') +); + /** * An element's own actions (Delete, Copy URL, …), from its * `actionMenuDescriptors()`, with their behaviors dispatched client-side. From 129671fb66a8e71ad2e173bb9204a307a4259e7f Mon Sep 17 00:00:00 2001 From: Nathaniel Hammond Date: Tue, 10 Nov 2026 14:03:31 +0000 Subject: [PATCH 4/5] further exports --- resources/js/common/components/ScreenPanel.vue | 8 +++++++- resources/js/cp-module.ts | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/resources/js/common/components/ScreenPanel.vue b/resources/js/common/components/ScreenPanel.vue index acd22db024f..5ba9476583c 100644 --- a/resources/js/common/components/ScreenPanel.vue +++ b/resources/js/common/components/ScreenPanel.vue @@ -80,6 +80,12 @@ onBeforeUnmount(() => panels?.unregister(props.id)); const section = computed(() => panels?.sections.get(props.id) ?? null); + const active = computed(() => panels?.openPanelId.value === props.id); + + defineSlots<{ + default?(props: {active: boolean}): unknown; + 'header-actions'?(): unknown; + }>();