@hexidecibel/companion 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/task-parser.test.js +29 -29
- package/dist/__tests__/task-parser.test.js.map +1 -1
- package/dist/anthropic-usage.d.ts.map +1 -1
- package/dist/anthropic-usage.js +1 -1
- package/dist/anthropic-usage.js.map +1 -1
- package/dist/cert-generator.d.ts.map +1 -1
- package/dist/cert-generator.js +4 -21
- package/dist/cert-generator.js.map +1 -1
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +413 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -7
- package/dist/config.js.map +1 -1
- package/dist/escalation.d.ts +51 -0
- package/dist/escalation.d.ts.map +1 -0
- package/dist/escalation.js +198 -0
- package/dist/escalation.js.map +1 -0
- package/dist/index.js +67 -30
- package/dist/index.js.map +1 -1
- package/dist/input-injector.d.ts.map +1 -1
- package/dist/input-injector.js +9 -5
- package/dist/input-injector.js.map +1 -1
- package/dist/notification-store.d.ts +35 -0
- package/dist/notification-store.d.ts.map +1 -0
- package/dist/notification-store.js +272 -0
- package/dist/notification-store.js.map +1 -0
- package/dist/parser.d.ts +15 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +106 -61
- package/dist/parser.js.map +1 -1
- package/dist/push.d.ts +18 -26
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +90 -184
- package/dist/push.js.map +1 -1
- package/dist/qr-server.d.ts.map +1 -1
- package/dist/qr-server.js +159 -139
- package/dist/qr-server.js.map +1 -1
- package/dist/rules-engine.d.ts +20 -0
- package/dist/rules-engine.d.ts.map +1 -0
- package/dist/rules-engine.js +71 -0
- package/dist/rules-engine.js.map +1 -0
- package/dist/scaffold/claude-commands.d.ts +18 -0
- package/dist/scaffold/claude-commands.d.ts.map +1 -0
- package/dist/scaffold/claude-commands.js +352 -0
- package/dist/scaffold/claude-commands.js.map +1 -0
- package/dist/scaffold/generator.d.ts.map +1 -1
- package/dist/scaffold/generator.js +26 -1
- package/dist/scaffold/generator.js.map +1 -1
- package/dist/scaffold/scorer.d.ts +19 -0
- package/dist/scaffold/scorer.d.ts.map +1 -0
- package/dist/scaffold/scorer.js +92 -0
- package/dist/scaffold/scorer.js.map +1 -0
- package/dist/scaffold/templates/go-cli.d.ts +3 -0
- package/dist/scaffold/templates/go-cli.d.ts.map +1 -0
- package/dist/scaffold/templates/go-cli.js +249 -0
- package/dist/scaffold/templates/go-cli.js.map +1 -0
- package/dist/scaffold/templates/index.d.ts.map +1 -1
- package/dist/scaffold/templates/index.js +8 -2
- package/dist/scaffold/templates/index.js.map +1 -1
- package/dist/scaffold/templates/nextjs.d.ts +3 -0
- package/dist/scaffold/templates/nextjs.d.ts.map +1 -0
- package/dist/scaffold/templates/nextjs.js +336 -0
- package/dist/scaffold/templates/nextjs.js.map +1 -0
- package/dist/scaffold/templates/node-express.d.ts.map +1 -1
- package/dist/scaffold/templates/node-express.js +170 -157
- package/dist/scaffold/templates/node-express.js.map +1 -1
- package/dist/scaffold/templates/python-fastapi.d.ts.map +1 -1
- package/dist/scaffold/templates/python-fastapi.js +234 -221
- package/dist/scaffold/templates/python-fastapi.js.map +1 -1
- package/dist/scaffold/templates/react-mui-website.d.ts.map +1 -1
- package/dist/scaffold/templates/react-mui-website.js +337 -324
- package/dist/scaffold/templates/react-mui-website.js.map +1 -1
- package/dist/scaffold/templates/react-typescript.d.ts.map +1 -1
- package/dist/scaffold/templates/react-typescript.js +219 -206
- package/dist/scaffold/templates/react-typescript.js.map +1 -1
- package/dist/scaffold/templates/typescript-library.d.ts +3 -0
- package/dist/scaffold/templates/typescript-library.d.ts.map +1 -0
- package/dist/scaffold/templates/typescript-library.js +241 -0
- package/dist/scaffold/templates/typescript-library.js.map +1 -0
- package/dist/scaffold/types.d.ts +7 -0
- package/dist/scaffold/types.d.ts.map +1 -1
- package/dist/subagent-watcher.d.ts.map +1 -1
- package/dist/subagent-watcher.js +3 -3
- package/dist/subagent-watcher.js.map +1 -1
- package/dist/tmux-manager.d.ts +37 -0
- package/dist/tmux-manager.d.ts.map +1 -1
- package/dist/tmux-manager.js +165 -5
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-config.d.ts.map +1 -1
- package/dist/tool-config.js +2 -2
- package/dist/tool-config.js.map +1 -1
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +18 -0
- package/dist/types.js.map +1 -1
- package/dist/watcher.d.ts +7 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +118 -9
- package/dist/watcher.js.map +1 -1
- package/dist/websocket.d.ts +16 -2
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +758 -117
- package/dist/websocket.js.map +1 -1
- package/dist/work-group-manager.d.ts +69 -0
- package/dist/work-group-manager.d.ts.map +1 -0
- package/dist/work-group-manager.js +610 -0
- package/dist/work-group-manager.js.map +1 -0
- package/package.json +1 -1
|
@@ -8,300 +8,313 @@ exports.reactMuiWebsiteTemplate = {
|
|
|
8
8
|
type: 'frontend',
|
|
9
9
|
icon: '🎨',
|
|
10
10
|
tags: ['react', 'typescript', 'mui', 'material-ui', 'website', 'frontend'],
|
|
11
|
+
scoring: {
|
|
12
|
+
primaryKeywords: ['mui', 'material', 'website', 'landing', 'portfolio'],
|
|
13
|
+
secondaryKeywords: ['react', 'pages', 'routing', 'navigation', 'design', 'theme', 'multi-page'],
|
|
14
|
+
useCases: [
|
|
15
|
+
'marketing website',
|
|
16
|
+
'landing page',
|
|
17
|
+
'portfolio site',
|
|
18
|
+
'multi-page website',
|
|
19
|
+
'material ui website',
|
|
20
|
+
'company website',
|
|
21
|
+
],
|
|
22
|
+
typeSignals: { website: 3, landing: 3, portfolio: 3, brochure: 2, marketing: 2 },
|
|
23
|
+
},
|
|
11
24
|
files: [
|
|
12
25
|
{
|
|
13
26
|
path: 'package.json',
|
|
14
|
-
template: `{
|
|
15
|
-
"name": "{{projectName}}",
|
|
16
|
-
"version": "0.1.0",
|
|
17
|
-
"private": true,
|
|
18
|
-
"dependencies": {
|
|
19
|
-
"@emotion/react": "^11.13.0",
|
|
20
|
-
"@emotion/styled": "^11.13.0",
|
|
21
|
-
"@mui/icons-material": "^6.1.0",
|
|
22
|
-
"@mui/material": "^6.1.0",
|
|
23
|
-
"react": "^18.3.1",
|
|
24
|
-
"react-dom": "^18.3.1",
|
|
25
|
-
"react-router-dom": "^6.28.0"
|
|
26
|
-
},
|
|
27
|
-
"devDependencies": {
|
|
28
|
-
"@types/react": "^18.3.12",
|
|
29
|
-
"@types/react-dom": "^18.3.1",
|
|
30
|
-
"@vitejs/plugin-react": "^4.3.3",
|
|
31
|
-
"typescript": "~5.6.2",
|
|
32
|
-
"vite": "^5.4.10"
|
|
33
|
-
},
|
|
34
|
-
"scripts": {
|
|
35
|
-
"dev": "vite",
|
|
36
|
-
"build": "tsc -b && vite build",
|
|
37
|
-
"preview": "vite preview"
|
|
38
|
-
}
|
|
27
|
+
template: `{
|
|
28
|
+
"name": "{{projectName}}",
|
|
29
|
+
"version": "0.1.0",
|
|
30
|
+
"private": true,
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@emotion/react": "^11.13.0",
|
|
33
|
+
"@emotion/styled": "^11.13.0",
|
|
34
|
+
"@mui/icons-material": "^6.1.0",
|
|
35
|
+
"@mui/material": "^6.1.0",
|
|
36
|
+
"react": "^18.3.1",
|
|
37
|
+
"react-dom": "^18.3.1",
|
|
38
|
+
"react-router-dom": "^6.28.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/react": "^18.3.12",
|
|
42
|
+
"@types/react-dom": "^18.3.1",
|
|
43
|
+
"@vitejs/plugin-react": "^4.3.3",
|
|
44
|
+
"typescript": "~5.6.2",
|
|
45
|
+
"vite": "^5.4.10"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"dev": "vite",
|
|
49
|
+
"build": "tsc -b && vite build",
|
|
50
|
+
"preview": "vite preview"
|
|
51
|
+
}
|
|
39
52
|
}`,
|
|
40
53
|
},
|
|
41
54
|
{
|
|
42
55
|
path: 'tsconfig.json',
|
|
43
|
-
template: `{
|
|
44
|
-
"compilerOptions": {
|
|
45
|
-
"target": "ES2020",
|
|
46
|
-
"useDefineForClassFields": true,
|
|
47
|
-
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
48
|
-
"module": "ESNext",
|
|
49
|
-
"skipLibCheck": true,
|
|
50
|
-
"moduleResolution": "bundler",
|
|
51
|
-
"allowImportingTsExtensions": true,
|
|
52
|
-
"isolatedModules": true,
|
|
53
|
-
"moduleDetection": "force",
|
|
54
|
-
"noEmit": true,
|
|
55
|
-
"jsx": "react-jsx",
|
|
56
|
-
"strict": true,
|
|
57
|
-
"noUnusedLocals": true,
|
|
58
|
-
"noUnusedParameters": true,
|
|
59
|
-
"noFallthroughCasesInSwitch": true
|
|
60
|
-
},
|
|
61
|
-
"include": ["src"]
|
|
56
|
+
template: `{
|
|
57
|
+
"compilerOptions": {
|
|
58
|
+
"target": "ES2020",
|
|
59
|
+
"useDefineForClassFields": true,
|
|
60
|
+
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
|
61
|
+
"module": "ESNext",
|
|
62
|
+
"skipLibCheck": true,
|
|
63
|
+
"moduleResolution": "bundler",
|
|
64
|
+
"allowImportingTsExtensions": true,
|
|
65
|
+
"isolatedModules": true,
|
|
66
|
+
"moduleDetection": "force",
|
|
67
|
+
"noEmit": true,
|
|
68
|
+
"jsx": "react-jsx",
|
|
69
|
+
"strict": true,
|
|
70
|
+
"noUnusedLocals": true,
|
|
71
|
+
"noUnusedParameters": true,
|
|
72
|
+
"noFallthroughCasesInSwitch": true
|
|
73
|
+
},
|
|
74
|
+
"include": ["src"]
|
|
62
75
|
}`,
|
|
63
76
|
},
|
|
64
77
|
{
|
|
65
78
|
path: 'vite.config.ts',
|
|
66
|
-
template: `import { defineConfig } from 'vite'
|
|
67
|
-
import react from '@vitejs/plugin-react'
|
|
68
|
-
|
|
69
|
-
export default defineConfig({
|
|
70
|
-
plugins: [react()],
|
|
79
|
+
template: `import { defineConfig } from 'vite'
|
|
80
|
+
import react from '@vitejs/plugin-react'
|
|
81
|
+
|
|
82
|
+
export default defineConfig({
|
|
83
|
+
plugins: [react()],
|
|
71
84
|
})`,
|
|
72
85
|
},
|
|
73
86
|
{
|
|
74
87
|
path: 'index.html',
|
|
75
|
-
template: `<!doctype html>
|
|
76
|
-
<html lang="en">
|
|
77
|
-
<head>
|
|
78
|
-
<meta charset="UTF-8" />
|
|
79
|
-
<link rel="icon" href="/favicon.ico" />
|
|
80
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
81
|
-
<title>{{projectName}}</title>
|
|
82
|
-
</head>
|
|
83
|
-
<body>
|
|
84
|
-
<div id="root"></div>
|
|
85
|
-
<script type="module" src="/src/main.tsx"></script>
|
|
86
|
-
</body>
|
|
88
|
+
template: `<!doctype html>
|
|
89
|
+
<html lang="en">
|
|
90
|
+
<head>
|
|
91
|
+
<meta charset="UTF-8" />
|
|
92
|
+
<link rel="icon" href="/favicon.ico" />
|
|
93
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
94
|
+
<title>{{projectName}}</title>
|
|
95
|
+
</head>
|
|
96
|
+
<body>
|
|
97
|
+
<div id="root"></div>
|
|
98
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
99
|
+
</body>
|
|
87
100
|
</html>`,
|
|
88
101
|
},
|
|
89
102
|
{
|
|
90
103
|
path: 'src/main.tsx',
|
|
91
|
-
template: `import { StrictMode } from 'react'
|
|
92
|
-
import { createRoot } from 'react-dom/client'
|
|
93
|
-
import { BrowserRouter } from 'react-router-dom'
|
|
94
|
-
import { ThemeProvider, CssBaseline } from '@mui/material'
|
|
95
|
-
import { theme } from './theme'
|
|
96
|
-
import App from './App'
|
|
97
|
-
|
|
98
|
-
createRoot(document.getElementById('root')!).render(
|
|
99
|
-
<StrictMode>
|
|
100
|
-
<BrowserRouter>
|
|
101
|
-
<ThemeProvider theme={theme}>
|
|
102
|
-
<CssBaseline />
|
|
103
|
-
<App />
|
|
104
|
-
</ThemeProvider>
|
|
105
|
-
</BrowserRouter>
|
|
106
|
-
</StrictMode>,
|
|
104
|
+
template: `import { StrictMode } from 'react'
|
|
105
|
+
import { createRoot } from 'react-dom/client'
|
|
106
|
+
import { BrowserRouter } from 'react-router-dom'
|
|
107
|
+
import { ThemeProvider, CssBaseline } from '@mui/material'
|
|
108
|
+
import { theme } from './theme'
|
|
109
|
+
import App from './App'
|
|
110
|
+
|
|
111
|
+
createRoot(document.getElementById('root')!).render(
|
|
112
|
+
<StrictMode>
|
|
113
|
+
<BrowserRouter>
|
|
114
|
+
<ThemeProvider theme={theme}>
|
|
115
|
+
<CssBaseline />
|
|
116
|
+
<App />
|
|
117
|
+
</ThemeProvider>
|
|
118
|
+
</BrowserRouter>
|
|
119
|
+
</StrictMode>,
|
|
107
120
|
)`,
|
|
108
121
|
},
|
|
109
122
|
{
|
|
110
123
|
path: 'src/theme.ts',
|
|
111
|
-
template: `import { createTheme } from '@mui/material/styles'
|
|
112
|
-
|
|
113
|
-
export const theme = createTheme({
|
|
114
|
-
palette: {
|
|
115
|
-
mode: 'dark',
|
|
116
|
-
primary: {
|
|
117
|
-
main: '#90caf9',
|
|
118
|
-
},
|
|
119
|
-
secondary: {
|
|
120
|
-
main: '#f48fb1',
|
|
121
|
-
},
|
|
122
|
-
background: {
|
|
123
|
-
default: '#121212',
|
|
124
|
-
paper: '#1e1e1e',
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
typography: {
|
|
128
|
-
fontFamily: '"Inter", "Roboto", "Helvetica", "Arial", sans-serif',
|
|
129
|
-
h1: {
|
|
130
|
-
fontSize: '2.5rem',
|
|
131
|
-
fontWeight: 700,
|
|
132
|
-
},
|
|
133
|
-
h2: {
|
|
134
|
-
fontSize: '2rem',
|
|
135
|
-
fontWeight: 600,
|
|
136
|
-
},
|
|
137
|
-
},
|
|
124
|
+
template: `import { createTheme } from '@mui/material/styles'
|
|
125
|
+
|
|
126
|
+
export const theme = createTheme({
|
|
127
|
+
palette: {
|
|
128
|
+
mode: 'dark',
|
|
129
|
+
primary: {
|
|
130
|
+
main: '#90caf9',
|
|
131
|
+
},
|
|
132
|
+
secondary: {
|
|
133
|
+
main: '#f48fb1',
|
|
134
|
+
},
|
|
135
|
+
background: {
|
|
136
|
+
default: '#121212',
|
|
137
|
+
paper: '#1e1e1e',
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
typography: {
|
|
141
|
+
fontFamily: '"Inter", "Roboto", "Helvetica", "Arial", sans-serif',
|
|
142
|
+
h1: {
|
|
143
|
+
fontSize: '2.5rem',
|
|
144
|
+
fontWeight: 700,
|
|
145
|
+
},
|
|
146
|
+
h2: {
|
|
147
|
+
fontSize: '2rem',
|
|
148
|
+
fontWeight: 600,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
138
151
|
})`,
|
|
139
152
|
},
|
|
140
153
|
{
|
|
141
154
|
path: 'src/App.tsx',
|
|
142
|
-
template: `import { Routes, Route } from 'react-router-dom'
|
|
143
|
-
import { Box } from '@mui/material'
|
|
144
|
-
import { Navbar } from './components/Navbar'
|
|
145
|
-
import { Home } from './pages/Home'
|
|
146
|
-
import { About } from './pages/About'
|
|
147
|
-
import { Contact } from './pages/Contact'
|
|
148
|
-
|
|
149
|
-
function App() {
|
|
150
|
-
return (
|
|
151
|
-
<Box sx={{ minHeight: '100vh', display: 'flex', flexDirection: 'column' }}>
|
|
152
|
-
<Navbar />
|
|
153
|
-
<Box component="main" sx={{ flex: 1, py: 4 }}>
|
|
154
|
-
<Routes>
|
|
155
|
-
<Route path="/" element={<Home />} />
|
|
156
|
-
<Route path="/about" element={<About />} />
|
|
157
|
-
<Route path="/contact" element={<Contact />} />
|
|
158
|
-
</Routes>
|
|
159
|
-
</Box>
|
|
160
|
-
</Box>
|
|
161
|
-
)
|
|
162
|
-
}
|
|
163
|
-
|
|
155
|
+
template: `import { Routes, Route } from 'react-router-dom'
|
|
156
|
+
import { Box } from '@mui/material'
|
|
157
|
+
import { Navbar } from './components/Navbar'
|
|
158
|
+
import { Home } from './pages/Home'
|
|
159
|
+
import { About } from './pages/About'
|
|
160
|
+
import { Contact } from './pages/Contact'
|
|
161
|
+
|
|
162
|
+
function App() {
|
|
163
|
+
return (
|
|
164
|
+
<Box sx={{ minHeight: '100vh', display: 'flex', flexDirection: 'column' }}>
|
|
165
|
+
<Navbar />
|
|
166
|
+
<Box component="main" sx={{ flex: 1, py: 4 }}>
|
|
167
|
+
<Routes>
|
|
168
|
+
<Route path="/" element={<Home />} />
|
|
169
|
+
<Route path="/about" element={<About />} />
|
|
170
|
+
<Route path="/contact" element={<Contact />} />
|
|
171
|
+
</Routes>
|
|
172
|
+
</Box>
|
|
173
|
+
</Box>
|
|
174
|
+
)
|
|
175
|
+
}
|
|
176
|
+
|
|
164
177
|
export default App`,
|
|
165
178
|
},
|
|
166
179
|
{
|
|
167
180
|
path: 'src/components/Navbar.tsx',
|
|
168
|
-
template: `import { AppBar, Toolbar, Typography, Button, Container, Box } from '@mui/material'
|
|
169
|
-
import { Link as RouterLink } from 'react-router-dom'
|
|
170
|
-
|
|
171
|
-
export function Navbar() {
|
|
172
|
-
return (
|
|
173
|
-
<AppBar position="static" color="transparent" elevation={0}>
|
|
174
|
-
<Container maxWidth="lg">
|
|
175
|
-
<Toolbar disableGutters>
|
|
176
|
-
<Typography
|
|
177
|
-
variant="h6"
|
|
178
|
-
component={RouterLink}
|
|
179
|
-
to="/"
|
|
180
|
-
sx={{ textDecoration: 'none', color: 'inherit', flexGrow: 1 }}
|
|
181
|
-
>
|
|
182
|
-
{{projectName}}
|
|
183
|
-
</Typography>
|
|
184
|
-
<Box sx={{ display: 'flex', gap: 2 }}>
|
|
185
|
-
<Button component={RouterLink} to="/" color="inherit">
|
|
186
|
-
Home
|
|
187
|
-
</Button>
|
|
188
|
-
<Button component={RouterLink} to="/about" color="inherit">
|
|
189
|
-
About
|
|
190
|
-
</Button>
|
|
191
|
-
<Button component={RouterLink} to="/contact" color="inherit">
|
|
192
|
-
Contact
|
|
193
|
-
</Button>
|
|
194
|
-
</Box>
|
|
195
|
-
</Toolbar>
|
|
196
|
-
</Container>
|
|
197
|
-
</AppBar>
|
|
198
|
-
)
|
|
181
|
+
template: `import { AppBar, Toolbar, Typography, Button, Container, Box } from '@mui/material'
|
|
182
|
+
import { Link as RouterLink } from 'react-router-dom'
|
|
183
|
+
|
|
184
|
+
export function Navbar() {
|
|
185
|
+
return (
|
|
186
|
+
<AppBar position="static" color="transparent" elevation={0}>
|
|
187
|
+
<Container maxWidth="lg">
|
|
188
|
+
<Toolbar disableGutters>
|
|
189
|
+
<Typography
|
|
190
|
+
variant="h6"
|
|
191
|
+
component={RouterLink}
|
|
192
|
+
to="/"
|
|
193
|
+
sx={{ textDecoration: 'none', color: 'inherit', flexGrow: 1 }}
|
|
194
|
+
>
|
|
195
|
+
{{projectName}}
|
|
196
|
+
</Typography>
|
|
197
|
+
<Box sx={{ display: 'flex', gap: 2 }}>
|
|
198
|
+
<Button component={RouterLink} to="/" color="inherit">
|
|
199
|
+
Home
|
|
200
|
+
</Button>
|
|
201
|
+
<Button component={RouterLink} to="/about" color="inherit">
|
|
202
|
+
About
|
|
203
|
+
</Button>
|
|
204
|
+
<Button component={RouterLink} to="/contact" color="inherit">
|
|
205
|
+
Contact
|
|
206
|
+
</Button>
|
|
207
|
+
</Box>
|
|
208
|
+
</Toolbar>
|
|
209
|
+
</Container>
|
|
210
|
+
</AppBar>
|
|
211
|
+
)
|
|
199
212
|
}`,
|
|
200
213
|
},
|
|
201
214
|
{
|
|
202
215
|
path: 'src/pages/Home.tsx',
|
|
203
|
-
template: `import { Container, Typography, Box, Button } from '@mui/material'
|
|
204
|
-
import { Link as RouterLink } from 'react-router-dom'
|
|
205
|
-
|
|
206
|
-
export function Home() {
|
|
207
|
-
return (
|
|
208
|
-
<Container maxWidth="lg">
|
|
209
|
-
<Box sx={{ textAlign: 'center', py: 8 }}>
|
|
210
|
-
<Typography variant="h1" gutterBottom>
|
|
211
|
-
Welcome to {{projectName}}
|
|
212
|
-
</Typography>
|
|
213
|
-
<Typography variant="h5" color="text.secondary" paragraph>
|
|
214
|
-
{{projectDescription}}
|
|
215
|
-
</Typography>
|
|
216
|
-
<Box sx={{ mt: 4 }}>
|
|
217
|
-
<Button
|
|
218
|
-
variant="contained"
|
|
219
|
-
size="large"
|
|
220
|
-
component={RouterLink}
|
|
221
|
-
to="/about"
|
|
222
|
-
>
|
|
223
|
-
Learn More
|
|
224
|
-
</Button>
|
|
225
|
-
</Box>
|
|
226
|
-
</Box>
|
|
227
|
-
</Container>
|
|
228
|
-
)
|
|
216
|
+
template: `import { Container, Typography, Box, Button } from '@mui/material'
|
|
217
|
+
import { Link as RouterLink } from 'react-router-dom'
|
|
218
|
+
|
|
219
|
+
export function Home() {
|
|
220
|
+
return (
|
|
221
|
+
<Container maxWidth="lg">
|
|
222
|
+
<Box sx={{ textAlign: 'center', py: 8 }}>
|
|
223
|
+
<Typography variant="h1" gutterBottom>
|
|
224
|
+
Welcome to {{projectName}}
|
|
225
|
+
</Typography>
|
|
226
|
+
<Typography variant="h5" color="text.secondary" paragraph>
|
|
227
|
+
{{projectDescription}}
|
|
228
|
+
</Typography>
|
|
229
|
+
<Box sx={{ mt: 4 }}>
|
|
230
|
+
<Button
|
|
231
|
+
variant="contained"
|
|
232
|
+
size="large"
|
|
233
|
+
component={RouterLink}
|
|
234
|
+
to="/about"
|
|
235
|
+
>
|
|
236
|
+
Learn More
|
|
237
|
+
</Button>
|
|
238
|
+
</Box>
|
|
239
|
+
</Box>
|
|
240
|
+
</Container>
|
|
241
|
+
)
|
|
229
242
|
}`,
|
|
230
243
|
},
|
|
231
244
|
{
|
|
232
245
|
path: 'src/pages/About.tsx',
|
|
233
|
-
template: `import { Container, Typography, Box, Paper } from '@mui/material'
|
|
234
|
-
|
|
235
|
-
export function About() {
|
|
236
|
-
return (
|
|
237
|
-
<Container maxWidth="md">
|
|
238
|
-
<Paper sx={{ p: 4 }}>
|
|
239
|
-
<Typography variant="h2" gutterBottom>
|
|
240
|
-
About
|
|
241
|
-
</Typography>
|
|
242
|
-
<Typography variant="body1" paragraph>
|
|
243
|
-
This is the about page for {{projectName}}.
|
|
244
|
-
</Typography>
|
|
245
|
-
<Typography variant="body1" paragraph>
|
|
246
|
-
{{projectDescription}}
|
|
247
|
-
</Typography>
|
|
248
|
-
</Paper>
|
|
249
|
-
</Container>
|
|
250
|
-
)
|
|
246
|
+
template: `import { Container, Typography, Box, Paper } from '@mui/material'
|
|
247
|
+
|
|
248
|
+
export function About() {
|
|
249
|
+
return (
|
|
250
|
+
<Container maxWidth="md">
|
|
251
|
+
<Paper sx={{ p: 4 }}>
|
|
252
|
+
<Typography variant="h2" gutterBottom>
|
|
253
|
+
About
|
|
254
|
+
</Typography>
|
|
255
|
+
<Typography variant="body1" paragraph>
|
|
256
|
+
This is the about page for {{projectName}}.
|
|
257
|
+
</Typography>
|
|
258
|
+
<Typography variant="body1" paragraph>
|
|
259
|
+
{{projectDescription}}
|
|
260
|
+
</Typography>
|
|
261
|
+
</Paper>
|
|
262
|
+
</Container>
|
|
263
|
+
)
|
|
251
264
|
}`,
|
|
252
265
|
},
|
|
253
266
|
{
|
|
254
267
|
path: 'src/pages/Contact.tsx',
|
|
255
|
-
template: `import { Container, Typography, Box, Paper, TextField, Button } from '@mui/material'
|
|
256
|
-
import { useState } from 'react'
|
|
257
|
-
|
|
258
|
-
export function Contact() {
|
|
259
|
-
const [formData, setFormData] = useState({ name: '', email: '', message: '' })
|
|
260
|
-
|
|
261
|
-
const handleSubmit = (e: React.FormEvent) => {
|
|
262
|
-
e.preventDefault()
|
|
263
|
-
console.log('Form submitted:', formData)
|
|
264
|
-
// Add your form submission logic here
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return (
|
|
268
|
-
<Container maxWidth="sm">
|
|
269
|
-
<Paper sx={{ p: 4 }}>
|
|
270
|
-
<Typography variant="h2" gutterBottom>
|
|
271
|
-
Contact Us
|
|
272
|
-
</Typography>
|
|
273
|
-
<Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
|
|
274
|
-
<TextField
|
|
275
|
-
label="Name"
|
|
276
|
-
value={formData.name}
|
|
277
|
-
onChange={(e) => setFormData({ ...formData, name: e.target.value })}
|
|
278
|
-
required
|
|
279
|
-
fullWidth
|
|
280
|
-
/>
|
|
281
|
-
<TextField
|
|
282
|
-
label="Email"
|
|
283
|
-
type="email"
|
|
284
|
-
value={formData.email}
|
|
285
|
-
onChange={(e) => setFormData({ ...formData, email: e.target.value })}
|
|
286
|
-
required
|
|
287
|
-
fullWidth
|
|
288
|
-
/>
|
|
289
|
-
<TextField
|
|
290
|
-
label="Message"
|
|
291
|
-
multiline
|
|
292
|
-
rows={4}
|
|
293
|
-
value={formData.message}
|
|
294
|
-
onChange={(e) => setFormData({ ...formData, message: e.target.value })}
|
|
295
|
-
required
|
|
296
|
-
fullWidth
|
|
297
|
-
/>
|
|
298
|
-
<Button type="submit" variant="contained" size="large">
|
|
299
|
-
Send Message
|
|
300
|
-
</Button>
|
|
301
|
-
</Box>
|
|
302
|
-
</Paper>
|
|
303
|
-
</Container>
|
|
304
|
-
)
|
|
268
|
+
template: `import { Container, Typography, Box, Paper, TextField, Button } from '@mui/material'
|
|
269
|
+
import { useState } from 'react'
|
|
270
|
+
|
|
271
|
+
export function Contact() {
|
|
272
|
+
const [formData, setFormData] = useState({ name: '', email: '', message: '' })
|
|
273
|
+
|
|
274
|
+
const handleSubmit = (e: React.FormEvent) => {
|
|
275
|
+
e.preventDefault()
|
|
276
|
+
console.log('Form submitted:', formData)
|
|
277
|
+
// Add your form submission logic here
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
return (
|
|
281
|
+
<Container maxWidth="sm">
|
|
282
|
+
<Paper sx={{ p: 4 }}>
|
|
283
|
+
<Typography variant="h2" gutterBottom>
|
|
284
|
+
Contact Us
|
|
285
|
+
</Typography>
|
|
286
|
+
<Box component="form" onSubmit={handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
|
|
287
|
+
<TextField
|
|
288
|
+
label="Name"
|
|
289
|
+
value={formData.name}
|
|
290
|
+
onChange={(e) => setFormData({ ...formData, name: e.target.value })}
|
|
291
|
+
required
|
|
292
|
+
fullWidth
|
|
293
|
+
/>
|
|
294
|
+
<TextField
|
|
295
|
+
label="Email"
|
|
296
|
+
type="email"
|
|
297
|
+
value={formData.email}
|
|
298
|
+
onChange={(e) => setFormData({ ...formData, email: e.target.value })}
|
|
299
|
+
required
|
|
300
|
+
fullWidth
|
|
301
|
+
/>
|
|
302
|
+
<TextField
|
|
303
|
+
label="Message"
|
|
304
|
+
multiline
|
|
305
|
+
rows={4}
|
|
306
|
+
value={formData.message}
|
|
307
|
+
onChange={(e) => setFormData({ ...formData, message: e.target.value })}
|
|
308
|
+
required
|
|
309
|
+
fullWidth
|
|
310
|
+
/>
|
|
311
|
+
<Button type="submit" variant="contained" size="large">
|
|
312
|
+
Send Message
|
|
313
|
+
</Button>
|
|
314
|
+
</Box>
|
|
315
|
+
</Paper>
|
|
316
|
+
</Container>
|
|
317
|
+
)
|
|
305
318
|
}`,
|
|
306
319
|
},
|
|
307
320
|
{
|
|
@@ -310,87 +323,87 @@ export function Contact() {
|
|
|
310
323
|
},
|
|
311
324
|
{
|
|
312
325
|
path: '.gitignore',
|
|
313
|
-
template: `# Dependencies
|
|
314
|
-
node_modules
|
|
315
|
-
|
|
316
|
-
# Build
|
|
317
|
-
dist
|
|
318
|
-
dist-ssr
|
|
319
|
-
*.local
|
|
320
|
-
|
|
321
|
-
# Editor
|
|
322
|
-
.vscode/*
|
|
323
|
-
!.vscode/extensions.json
|
|
324
|
-
.idea
|
|
325
|
-
|
|
326
|
-
# Logs
|
|
327
|
-
*.log
|
|
328
|
-
npm-debug.log*
|
|
329
|
-
|
|
330
|
-
# OS
|
|
326
|
+
template: `# Dependencies
|
|
327
|
+
node_modules
|
|
328
|
+
|
|
329
|
+
# Build
|
|
330
|
+
dist
|
|
331
|
+
dist-ssr
|
|
332
|
+
*.local
|
|
333
|
+
|
|
334
|
+
# Editor
|
|
335
|
+
.vscode/*
|
|
336
|
+
!.vscode/extensions.json
|
|
337
|
+
.idea
|
|
338
|
+
|
|
339
|
+
# Logs
|
|
340
|
+
*.log
|
|
341
|
+
npm-debug.log*
|
|
342
|
+
|
|
343
|
+
# OS
|
|
331
344
|
.DS_Store`,
|
|
332
345
|
},
|
|
333
346
|
{
|
|
334
347
|
path: 'CLAUDE.md',
|
|
335
|
-
template: `# {{projectName}}
|
|
336
|
-
|
|
337
|
-
{{projectDescription}}
|
|
338
|
-
|
|
339
|
-
## Tech Stack
|
|
340
|
-
- React 18 with TypeScript
|
|
341
|
-
- Material UI (MUI) v6 for components
|
|
342
|
-
- React Router v6 for navigation
|
|
343
|
-
- Vite for build tooling
|
|
344
|
-
|
|
345
|
-
## Project Structure
|
|
346
|
-
\`\`\`
|
|
347
|
-
src/
|
|
348
|
-
├── main.tsx # Entry point
|
|
349
|
-
├── App.tsx # Root component with routing
|
|
350
|
-
├── theme.ts # MUI theme customization
|
|
351
|
-
├── components/ # Reusable components
|
|
352
|
-
│ └── Navbar.tsx
|
|
353
|
-
└── pages/ # Page components
|
|
354
|
-
├── Home.tsx
|
|
355
|
-
├── About.tsx
|
|
356
|
-
└── Contact.tsx
|
|
357
|
-
\`\`\`
|
|
358
|
-
|
|
359
|
-
## Commands
|
|
360
|
-
- \`npm run dev\` - Start dev server
|
|
361
|
-
- \`npm run build\` - Build for production
|
|
362
|
-
- \`npm run preview\` - Preview production build
|
|
363
|
-
|
|
364
|
-
## Development Notes
|
|
365
|
-
- Add new pages in \`src/pages/\`
|
|
366
|
-
- Add reusable components in \`src/components/\`
|
|
367
|
-
- Customize theme in \`src/theme.ts\`
|
|
348
|
+
template: `# {{projectName}}
|
|
349
|
+
|
|
350
|
+
{{projectDescription}}
|
|
351
|
+
|
|
352
|
+
## Tech Stack
|
|
353
|
+
- React 18 with TypeScript
|
|
354
|
+
- Material UI (MUI) v6 for components
|
|
355
|
+
- React Router v6 for navigation
|
|
356
|
+
- Vite for build tooling
|
|
357
|
+
|
|
358
|
+
## Project Structure
|
|
359
|
+
\`\`\`
|
|
360
|
+
src/
|
|
361
|
+
├── main.tsx # Entry point
|
|
362
|
+
├── App.tsx # Root component with routing
|
|
363
|
+
├── theme.ts # MUI theme customization
|
|
364
|
+
├── components/ # Reusable components
|
|
365
|
+
│ └── Navbar.tsx
|
|
366
|
+
└── pages/ # Page components
|
|
367
|
+
├── Home.tsx
|
|
368
|
+
├── About.tsx
|
|
369
|
+
└── Contact.tsx
|
|
370
|
+
\`\`\`
|
|
371
|
+
|
|
372
|
+
## Commands
|
|
373
|
+
- \`npm run dev\` - Start dev server
|
|
374
|
+
- \`npm run build\` - Build for production
|
|
375
|
+
- \`npm run preview\` - Preview production build
|
|
376
|
+
|
|
377
|
+
## Development Notes
|
|
378
|
+
- Add new pages in \`src/pages/\`
|
|
379
|
+
- Add reusable components in \`src/components/\`
|
|
380
|
+
- Customize theme in \`src/theme.ts\`
|
|
368
381
|
- Add routes in \`App.tsx\``,
|
|
369
382
|
},
|
|
370
383
|
{
|
|
371
384
|
path: 'README.md',
|
|
372
|
-
template: `# {{projectName}}
|
|
373
|
-
|
|
374
|
-
{{projectDescription}}
|
|
375
|
-
|
|
376
|
-
## Getting Started
|
|
377
|
-
|
|
378
|
-
\`\`\`bash
|
|
379
|
-
npm install
|
|
380
|
-
npm run dev
|
|
381
|
-
\`\`\`
|
|
382
|
-
|
|
383
|
-
## Pages
|
|
384
|
-
|
|
385
|
-
- **Home** - Landing page
|
|
386
|
-
- **About** - About page
|
|
387
|
-
- **Contact** - Contact form
|
|
388
|
-
|
|
389
|
-
## Tech Stack
|
|
390
|
-
|
|
391
|
-
- React + TypeScript
|
|
392
|
-
- Material UI
|
|
393
|
-
- React Router
|
|
385
|
+
template: `# {{projectName}}
|
|
386
|
+
|
|
387
|
+
{{projectDescription}}
|
|
388
|
+
|
|
389
|
+
## Getting Started
|
|
390
|
+
|
|
391
|
+
\`\`\`bash
|
|
392
|
+
npm install
|
|
393
|
+
npm run dev
|
|
394
|
+
\`\`\`
|
|
395
|
+
|
|
396
|
+
## Pages
|
|
397
|
+
|
|
398
|
+
- **Home** - Landing page
|
|
399
|
+
- **About** - About page
|
|
400
|
+
- **Contact** - Contact form
|
|
401
|
+
|
|
402
|
+
## Tech Stack
|
|
403
|
+
|
|
404
|
+
- React + TypeScript
|
|
405
|
+
- Material UI
|
|
406
|
+
- React Router
|
|
394
407
|
- Vite`,
|
|
395
408
|
},
|
|
396
409
|
],
|