diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c218f9d
--- /dev/null
+++ b/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "react-doctor-cr-test",
+ "private": true,
+ "type": "module",
+ "dependencies": {
+ "react": "^18.3.0",
+ "react-dom": "^18.3.0"
+ },
+ "devDependencies": {
+ "typescript": "^5.0.0",
+ "@types/react": "^18.0.0",
+ "@types/react-dom": "^18.0.0"
+ }
+}
diff --git a/src/App.tsx b/src/App.tsx
new file mode 100644
index 0000000..801d929
--- /dev/null
+++ b/src/App.tsx
@@ -0,0 +1,34 @@
+import { createContext, useState } from "react";
+import { AssertiveHints } from "./AssertiveHints.js";
+
+const items = ["alpha", "beta", "gamma"];
+
+export function App() {
+ const ThemeContext = createContext("light");
+ const [userHtml] = useState("
");
+ const userInput = "alert('xss')";
+
+ return (
+
+
+
+ click me
+
+
+ {items.map((item) => (
+ - {item}
+ ))}
+
+
+
+
+
+ );
+}
diff --git a/src/AssertiveHints.tsx b/src/AssertiveHints.tsx
new file mode 100644
index 0000000..1725336
--- /dev/null
+++ b/src/AssertiveHints.tsx
@@ -0,0 +1,21 @@
+type RowProps = {
+ label: string;
+ onSelect: () => void;
+};
+
+function Row({ label, onSelect }: RowProps) {
+ return {label};
+}
+
+export function AssertiveHints() {
+ const handleAction = () => console.log("action");
+
+ return (
+
+
+
+ Open menu
+ console.log("selected")} />
+
+ );
+}
diff --git a/src/main.tsx b/src/main.tsx
new file mode 100644
index 0000000..ecbc456
--- /dev/null
+++ b/src/main.tsx
@@ -0,0 +1,7 @@
+import { createRoot } from "react-dom/client";
+import { App } from "./App.js";
+
+const root = document.getElementById("root");
+if (root) {
+ createRoot(root).render();
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..0389b2e
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "jsx": "react-jsx",
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "strict": true,
+ "noEmit": true,
+ "skipLibCheck": true,
+ "isolatedModules": true
+ },
+ "include": ["src"]
+}