feat: project scaffold — Vite + React + TS + test setup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" href="/assets/logos/logo-icon.svg" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>MorseQuest</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Open+Sans:wght@400;600&family=Source+Code+Pro:wght@400;600&display=swap" rel="stylesheet" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,8 @@
|
||||
import React from 'react'
|
||||
import ReactDOM from 'react-dom/client'
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||
<React.StrictMode>
|
||||
<div>MorseQuest loading...</div>
|
||||
</React.StrictMode>
|
||||
)
|
||||
@@ -0,0 +1,28 @@
|
||||
// Mock AudioContext for tests
|
||||
class MockAudioContext {
|
||||
currentTime = 0
|
||||
destination = {}
|
||||
state: AudioContextState = 'running'
|
||||
createOscillator() {
|
||||
return {
|
||||
connect: () => {},
|
||||
start: () => {},
|
||||
stop: () => {},
|
||||
frequency: { value: 0 },
|
||||
type: 'sine' as OscillatorType,
|
||||
}
|
||||
}
|
||||
createGain() {
|
||||
return {
|
||||
connect: () => {},
|
||||
gain: {
|
||||
value: 1,
|
||||
setValueAtTime: () => {},
|
||||
linearRampToValueAtTime: () => {},
|
||||
},
|
||||
}
|
||||
}
|
||||
async resume() {}
|
||||
async suspend() {}
|
||||
}
|
||||
;(global as any).AudioContext = MockAudioContext
|
||||
Reference in New Issue
Block a user