+
+ { __( 'Enter a custom name for this block.' ) }
+
+
+
+ );
+}
diff --git a/packages/block-editor/src/components/block-rename/rename-control.js b/packages/block-editor/src/components/block-rename/rename-control.js
new file mode 100644
index 00000000000000..1f646126d14a4b
--- /dev/null
+++ b/packages/block-editor/src/components/block-rename/rename-control.js
@@ -0,0 +1,80 @@
+/**
+ * WordPress dependencies
+ */
+import { MenuItem } from '@wordpress/components';
+import { useSelect, useDispatch } from '@wordpress/data';
+import { __ } from '@wordpress/i18n';
+import { useState } from '@wordpress/element';
+
+/**
+ * Internal dependencies
+ */
+import { store as blockEditorStore } from '../../store';
+import { useBlockDisplayInformation } from '..';
+import isEmptyString from './is-empty-string';
+import BlockRenameModal from './modal';
+
+export default function BlockRenameControl( { clientId } ) {
+ const [ renamingBlock, setRenamingBlock ] = useState( false );
+
+ const { metadata } = useSelect(
+ ( select ) => {
+ const { getBlockAttributes } = select( blockEditorStore );
+
+ const _metadata = getBlockAttributes( clientId )?.metadata;
+ return {
+ metadata: _metadata,
+ };
+ },
+ [ clientId ]
+ );
+
+ const { updateBlockAttributes } = useDispatch( blockEditorStore );
+
+ const customName = metadata?.name;
+
+ function onChange( newName ) {
+ updateBlockAttributes( [ clientId ], {
+ metadata: {
+ ...( metadata && metadata ),
+ name: newName,
+ },
+ } );
+ }
+
+ const blockInformation = useBlockDisplayInformation( clientId );
+
+ return (
+ <>
+