diff --git a/docs/data/api/text-field.json b/docs/data/api/text-field.json
new file mode 100644
index 0000000000..b43f106f19
--- /dev/null
+++ b/docs/data/api/text-field.json
@@ -0,0 +1,14 @@
+{
+ "props": {},
+ "name": "TextField",
+ "imports": ["import { TextField } from '@base_ui/react/TextField';"],
+ "classes": [],
+ "spread": true,
+ "themeDefaultProps": true,
+ "muiName": "TextField",
+ "forwardsRefTo": "HTMLInputElement",
+ "filename": "/packages/mui-base/src/TextField/TextField.tsx",
+ "inheritance": null,
+ "demos": "
",
+ "cssComponent": false
+}
diff --git a/docs/data/api/text-input.json b/docs/data/api/text-input.json
new file mode 100644
index 0000000000..f46e551d5e
--- /dev/null
+++ b/docs/data/api/text-input.json
@@ -0,0 +1,14 @@
+{
+ "props": {},
+ "name": "TextInput",
+ "imports": ["import { TextInput } from '@base_ui/react/TextInput';"],
+ "classes": [],
+ "spread": true,
+ "themeDefaultProps": true,
+ "muiName": "TextInput",
+ "forwardsRefTo": "HTMLInputElement",
+ "filename": "/packages/mui-base/src/TextInput/TextInput.tsx",
+ "inheritance": null,
+ "demos": "",
+ "cssComponent": false
+}
diff --git a/docs/data/components/field/UnstyledFieldIntroduction/system/index.js b/docs/data/components/field/UnstyledFieldIntroduction/system/index.js
index a1dd1e4513..1b380121f1 100644
--- a/docs/data/components/field/UnstyledFieldIntroduction/system/index.js
+++ b/docs/data/components/field/UnstyledFieldIntroduction/system/index.js
@@ -1,6 +1,7 @@
'use client';
import * as React from 'react';
import { Field } from '@base_ui/react/Field';
+import { TextInput } from '@base_ui/react/TextInput';
import { styled } from '@mui/system';
export default function UnstyledFieldIntroduction() {
@@ -8,7 +9,7 @@ export default function UnstyledFieldIntroduction() {
(value === 'admin' ? 'Name not allowed' : null)}>
Name
-
+
{({ validity, value }) => {
@@ -40,7 +41,7 @@ const FieldRoot = styled(Field.Root)`
width: 275px;
`;
-const FieldControl = styled(Field.Control)`
+const Input = styled(TextInput)`
border: 1px solid #ccc;
border-radius: 4px;
width: 100%;
diff --git a/docs/data/components/field/UnstyledFieldIntroduction/system/index.tsx b/docs/data/components/field/UnstyledFieldIntroduction/system/index.tsx
index a1dd1e4513..1b380121f1 100644
--- a/docs/data/components/field/UnstyledFieldIntroduction/system/index.tsx
+++ b/docs/data/components/field/UnstyledFieldIntroduction/system/index.tsx
@@ -1,6 +1,7 @@
'use client';
import * as React from 'react';
import { Field } from '@base_ui/react/Field';
+import { TextInput } from '@base_ui/react/TextInput';
import { styled } from '@mui/system';
export default function UnstyledFieldIntroduction() {
@@ -8,7 +9,7 @@ export default function UnstyledFieldIntroduction() {
(value === 'admin' ? 'Name not allowed' : null)}>
Name
-
+
{({ validity, value }) => {
@@ -40,7 +41,7 @@ const FieldRoot = styled(Field.Root)`
width: 275px;
`;
-const FieldControl = styled(Field.Control)`
+const Input = styled(TextInput)`
border: 1px solid #ccc;
border-radius: 4px;
width: 100%;
diff --git a/docs/data/components/field/UnstyledFieldPassword.js b/docs/data/components/field/UnstyledFieldPassword.js
index 2e233b17f1..3219a6ec76 100644
--- a/docs/data/components/field/UnstyledFieldPassword.js
+++ b/docs/data/components/field/UnstyledFieldPassword.js
@@ -1,6 +1,7 @@
'use client';
import * as React from 'react';
import { Field } from '@base_ui/react/Field';
+import { TextInput } from '@base_ui/react/TextInput';
import { styled } from '@mui/system';
function validate(value) {
@@ -31,7 +32,7 @@ export default function UnstyledFieldPassword() {
return (
0}>
Password
- setValue(event.currentTarget.value)}
@@ -51,7 +52,7 @@ const FieldRoot = styled(Field.Root)`
width: 275px;
`;
-const FieldControl = styled(Field.Control)`
+const Input = styled(TextInput)`
border: 1px solid #ccc;
border-radius: 4px;
width: 100%;
diff --git a/docs/data/components/field/UnstyledFieldPassword.tsx b/docs/data/components/field/UnstyledFieldPassword.tsx
index 63adfbdf95..7ef09bb191 100644
--- a/docs/data/components/field/UnstyledFieldPassword.tsx
+++ b/docs/data/components/field/UnstyledFieldPassword.tsx
@@ -1,6 +1,7 @@
'use client';
import * as React from 'react';
import { Field } from '@base_ui/react/Field';
+import { TextInput } from '@base_ui/react/TextInput';
import { styled } from '@mui/system';
function validate(value: string) {
@@ -31,7 +32,7 @@ export default function UnstyledFieldPassword() {
return (
0}>
Password
- setValue(event.currentTarget.value)}
@@ -51,7 +52,7 @@ const FieldRoot = styled(Field.Root)`
width: 275px;
`;
-const FieldControl = styled(Field.Control)`
+const Input = styled(TextInput)`
border: 1px solid #ccc;
border-radius: 4px;
width: 100%;
diff --git a/docs/data/components/field/UnstyledFieldPassword.tsx.preview b/docs/data/components/field/UnstyledFieldPassword.tsx.preview
index 6dcd33da03..c8d04c1250 100644
--- a/docs/data/components/field/UnstyledFieldPassword.tsx.preview
+++ b/docs/data/components/field/UnstyledFieldPassword.tsx.preview
@@ -1,6 +1,6 @@
0}>
Password
- setValue(event.currentTarget.value)}
diff --git a/docs/data/components/field/UnstyledFieldServerError.js b/docs/data/components/field/UnstyledFieldServerError.js
index 24e281a835..1d0a45e1ec 100644
--- a/docs/data/components/field/UnstyledFieldServerError.js
+++ b/docs/data/components/field/UnstyledFieldServerError.js
@@ -1,6 +1,7 @@
'use client';
import * as React from 'react';
import { Field } from '@base_ui/react/Field';
+import { TextInput } from '@base_ui/react/TextInput';
import { styled } from '@mui/system';
export default function UnstyledFieldServerError() {
@@ -40,7 +41,7 @@ export default function UnstyledFieldServerError() {