diff --git a/packages/block-editor/src/components/border-radius-control/README.md b/packages/block-editor/src/components/border-radius-control/README.md
new file mode 100644
index 00000000000000..efc0e6499eeb76
--- /dev/null
+++ b/packages/block-editor/src/components/border-radius-control/README.md
@@ -0,0 +1,78 @@
+# BorderRadiusControl
+
+`BorderRadiusControl` is a React component that provides a user interface for managing border radius values. It allows users to control the border radius of each corner independently or link them together for uniform values.
+
+## Usage
+
+```jsx
+/**
+ * WordPress dependencies
+ */
+import { BorderRadiusControl } from '@wordpress/block-editor';
+import { useState } from '@wordpress/element';
+
+const MyBorderRadiusControl = () => {
+ const [values, setValues] = useState({
+ topLeft: '10px',
+ topRight: '10px',
+ bottomLeft: '10px',
+ bottomRight: '10px',
+ });
+
+ return (
+
+ );
+};
+
+// ...
+
+;
+```
+
+## Props
+
+The component accepts the following props:
+
+### values
+
+An object containing the border radius values for each corner.
+
+- **Type:** `Object`
+- **Required:** No
+- **Default:** `{ topLeft: undefined, topRight: undefined, bottomLeft: undefined, bottomRight: undefined }`
+
+The values object has the following schema:
+
+| Property | Description | Type |
+| ----------- | ------------------------------------ | ------ |
+| topLeft | Border radius for top left corner | string |
+| topRight | Border radius for top right corner | string |
+| bottomLeft | Border radius for bottom left corner | string |
+| bottomRight | Border radius for bottom right corner| string |
+
+Each value should be a valid CSS border radius value (e.g., '10px', '1em').
+
+### onChange
+
+Callback function that is called when any border radius value changes.
+
+- **Type:** `Function`
+- **Required:** Yes
+- **Default:** `() => {}`
+
+The function receives the updated values object as its argument.
+
+## Limitations
+
+The component has the following built-in constraints:
+
+- Minimum border radius value: 0
+- Maximum values by unit:
+ - px: 100
+ - em: 20
+ - rem: 20
+
+Please refer to the component's stories for more examples of usage.
diff --git a/packages/block-editor/src/components/border-radius-control/stories/index.story.js b/packages/block-editor/src/components/border-radius-control/stories/index.story.js
new file mode 100644
index 00000000000000..85fa0c94e1df2a
--- /dev/null
+++ b/packages/block-editor/src/components/border-radius-control/stories/index.story.js
@@ -0,0 +1,66 @@
+/**
+ * WordPress dependencies
+ */
+import { useState } from '@wordpress/element';
+
+/**
+ * Internal dependencies
+ */
+import BorderRadiusControl from '../';
+
+const meta = {
+ title: 'BlockEditor/BorderRadiusControl',
+ component: BorderRadiusControl,
+ parameters: {
+ docs: {
+ canvas: { sourceState: 'shown' },
+ description: {
+ component: 'Control to display border radius options.',
+ },
+ },
+ },
+ argTypes: {
+ values: {
+ control: 'object',
+ description: 'Border radius values.',
+ table: {
+ type: { summary: 'object' },
+ },
+ },
+ onChange: {
+ action: 'onChange',
+ control: { type: null },
+ table: {
+ type: { summary: 'function' },
+ },
+ description: 'Callback to handle onChange.',
+ },
+ },
+};
+
+export default meta;
+
+export const Default = {
+ render: function Template( { onChange, ...args } ) {
+ const [ values, setValues ] = useState( args.values );
+
+ return (
+ {
+ setValues( ...changeArgs );
+ onChange( ...changeArgs );
+ } }
+ />
+ );
+ },
+ args: {
+ values: {
+ topLeft: '10px',
+ topRight: '10px',
+ bottomLeft: '10px',
+ bottomRight: '10px',
+ },
+ },
+};