diff --git a/src/admin/ui/Button.tsx b/src/admin/ui/Button.tsx
new file mode 100644
index 0000000..5fbaede
--- /dev/null
+++ b/src/admin/ui/Button.tsx
@@ -0,0 +1,6 @@
+import MuiButton, { type ButtonProps } from "@mui/material/Button";
+
+/** App Button: defaults to the brand primary contained style. */
+export default function Button(props: ButtonProps) {
+ return ;
+}
diff --git a/src/admin/ui/Card.tsx b/src/admin/ui/Card.tsx
new file mode 100644
index 0000000..fb47e55
--- /dev/null
+++ b/src/admin/ui/Card.tsx
@@ -0,0 +1,10 @@
+import MuiCard, { type CardProps } from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+
+export default function Card({ children, ...props }: CardProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/admin/ui/TextField.tsx b/src/admin/ui/TextField.tsx
new file mode 100644
index 0000000..454c9cc
--- /dev/null
+++ b/src/admin/ui/TextField.tsx
@@ -0,0 +1,6 @@
+import MuiTextField, { type TextFieldProps } from "@mui/material/TextField";
+
+/** App TextField: small + outlined + full width by default. */
+export default function TextField(props: TextFieldProps) {
+ return ;
+}
diff --git a/src/admin/ui/index.ts b/src/admin/ui/index.ts
new file mode 100644
index 0000000..d5002f3
--- /dev/null
+++ b/src/admin/ui/index.ts
@@ -0,0 +1,4 @@
+export { default as MuiProvider } from "./MuiProvider";
+export { default as Button } from "./Button";
+export { default as Card } from "./Card";
+export { default as TextField } from "./TextField";