@siteboon/claude-code-ui 1.8.2 → 1.8.4
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/assets/index-CeR_JfKq.js +895 -0
- package/dist/assets/index-Co7ALK3i.css +32 -0
- package/{index.html → dist/index.html} +2 -1
- package/package.json +6 -1
- package/server/database/auth.db +0 -0
- package/.env.example +0 -12
- package/.nvmrc +0 -1
- package/postcss.config.js +0 -6
- package/src/App.jsx +0 -751
- package/src/components/ChatInterface.jsx +0 -3485
- package/src/components/ClaudeLogo.jsx +0 -11
- package/src/components/ClaudeStatus.jsx +0 -107
- package/src/components/CodeEditor.jsx +0 -422
- package/src/components/CreateTaskModal.jsx +0 -88
- package/src/components/CursorLogo.jsx +0 -9
- package/src/components/DarkModeToggle.jsx +0 -35
- package/src/components/DiffViewer.jsx +0 -41
- package/src/components/ErrorBoundary.jsx +0 -73
- package/src/components/FileTree.jsx +0 -480
- package/src/components/GitPanel.jsx +0 -1283
- package/src/components/ImageViewer.jsx +0 -54
- package/src/components/LoginForm.jsx +0 -110
- package/src/components/MainContent.jsx +0 -577
- package/src/components/MicButton.jsx +0 -272
- package/src/components/MobileNav.jsx +0 -88
- package/src/components/NextTaskBanner.jsx +0 -695
- package/src/components/PRDEditor.jsx +0 -871
- package/src/components/ProtectedRoute.jsx +0 -44
- package/src/components/QuickSettingsPanel.jsx +0 -262
- package/src/components/Settings.jsx +0 -2023
- package/src/components/SetupForm.jsx +0 -135
- package/src/components/Shell.jsx +0 -663
- package/src/components/Sidebar.jsx +0 -1665
- package/src/components/StandaloneShell.jsx +0 -106
- package/src/components/TaskCard.jsx +0 -210
- package/src/components/TaskDetail.jsx +0 -406
- package/src/components/TaskIndicator.jsx +0 -108
- package/src/components/TaskList.jsx +0 -1054
- package/src/components/TaskMasterSetupWizard.jsx +0 -603
- package/src/components/TaskMasterStatus.jsx +0 -86
- package/src/components/TodoList.jsx +0 -91
- package/src/components/Tooltip.jsx +0 -91
- package/src/components/ui/badge.jsx +0 -31
- package/src/components/ui/button.jsx +0 -46
- package/src/components/ui/input.jsx +0 -19
- package/src/components/ui/scroll-area.jsx +0 -23
- package/src/contexts/AuthContext.jsx +0 -158
- package/src/contexts/TaskMasterContext.jsx +0 -324
- package/src/contexts/TasksSettingsContext.jsx +0 -95
- package/src/contexts/ThemeContext.jsx +0 -94
- package/src/contexts/WebSocketContext.jsx +0 -29
- package/src/hooks/useAudioRecorder.js +0 -109
- package/src/hooks/useVersionCheck.js +0 -39
- package/src/index.css +0 -822
- package/src/lib/utils.js +0 -6
- package/src/main.jsx +0 -10
- package/src/utils/api.js +0 -141
- package/src/utils/websocket.js +0 -109
- package/src/utils/whisper.js +0 -37
- package/tailwind.config.js +0 -63
- package/vite.config.js +0 -29
- /package/{public → dist}/convert-icons.md +0 -0
- /package/{public → dist}/favicon.png +0 -0
- /package/{public → dist}/favicon.svg +0 -0
- /package/{public → dist}/generate-icons.js +0 -0
- /package/{public → dist}/icons/claude-ai-icon.svg +0 -0
- /package/{public → dist}/icons/cursor.svg +0 -0
- /package/{public → dist}/icons/generate-icons.md +0 -0
- /package/{public → dist}/icons/icon-128x128.png +0 -0
- /package/{public → dist}/icons/icon-128x128.svg +0 -0
- /package/{public → dist}/icons/icon-144x144.png +0 -0
- /package/{public → dist}/icons/icon-144x144.svg +0 -0
- /package/{public → dist}/icons/icon-152x152.png +0 -0
- /package/{public → dist}/icons/icon-152x152.svg +0 -0
- /package/{public → dist}/icons/icon-192x192.png +0 -0
- /package/{public → dist}/icons/icon-192x192.svg +0 -0
- /package/{public → dist}/icons/icon-384x384.png +0 -0
- /package/{public → dist}/icons/icon-384x384.svg +0 -0
- /package/{public → dist}/icons/icon-512x512.png +0 -0
- /package/{public → dist}/icons/icon-512x512.svg +0 -0
- /package/{public → dist}/icons/icon-72x72.png +0 -0
- /package/{public → dist}/icons/icon-72x72.svg +0 -0
- /package/{public → dist}/icons/icon-96x96.png +0 -0
- /package/{public → dist}/icons/icon-96x96.svg +0 -0
- /package/{public → dist}/icons/icon-template.svg +0 -0
- /package/{public → dist}/logo.svg +0 -0
- /package/{public → dist}/manifest.json +0 -0
- /package/{public → dist}/screenshots/cli-selection.png +0 -0
- /package/{public → dist}/screenshots/desktop-main.png +0 -0
- /package/{public → dist}/screenshots/mobile-chat.png +0 -0
- /package/{public → dist}/screenshots/tools-modal.png +0 -0
- /package/{public → dist}/sw.js +0 -0
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Button } from './ui/button';
|
|
3
|
-
import { X } from 'lucide-react';
|
|
4
|
-
|
|
5
|
-
function ImageViewer({ file, onClose }) {
|
|
6
|
-
const imagePath = `/api/projects/${file.projectName}/files/content?path=${encodeURIComponent(file.path)}`;
|
|
7
|
-
|
|
8
|
-
return (
|
|
9
|
-
<div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
|
|
10
|
-
<div className="bg-white dark:bg-gray-800 rounded-lg shadow-xl max-w-4xl max-h-[90vh] w-full mx-4 overflow-hidden">
|
|
11
|
-
<div className="flex items-center justify-between p-4 border-b">
|
|
12
|
-
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
|
|
13
|
-
{file.name}
|
|
14
|
-
</h3>
|
|
15
|
-
<Button
|
|
16
|
-
variant="ghost"
|
|
17
|
-
size="sm"
|
|
18
|
-
onClick={onClose}
|
|
19
|
-
className="h-8 w-8 p-0"
|
|
20
|
-
>
|
|
21
|
-
<X className="h-4 w-4" />
|
|
22
|
-
</Button>
|
|
23
|
-
</div>
|
|
24
|
-
|
|
25
|
-
<div className="p-4 flex justify-center items-center bg-gray-50 dark:bg-gray-900 min-h-[400px]">
|
|
26
|
-
<img
|
|
27
|
-
src={imagePath}
|
|
28
|
-
alt={file.name}
|
|
29
|
-
className="max-w-full max-h-[70vh] object-contain rounded-lg shadow-md"
|
|
30
|
-
onError={(e) => {
|
|
31
|
-
e.target.style.display = 'none';
|
|
32
|
-
e.target.nextSibling.style.display = 'block';
|
|
33
|
-
}}
|
|
34
|
-
/>
|
|
35
|
-
<div
|
|
36
|
-
className="text-center text-gray-500 dark:text-gray-400"
|
|
37
|
-
style={{ display: 'none' }}
|
|
38
|
-
>
|
|
39
|
-
<p>Unable to load image</p>
|
|
40
|
-
<p className="text-sm mt-2">{file.path}</p>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
|
|
44
|
-
<div className="p-4 border-t bg-gray-50 dark:bg-gray-800">
|
|
45
|
-
<p className="text-sm text-gray-600 dark:text-gray-400">
|
|
46
|
-
{file.path}
|
|
47
|
-
</p>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default ImageViewer;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { useAuth } from '../contexts/AuthContext';
|
|
3
|
-
import { MessageSquare } from 'lucide-react';
|
|
4
|
-
|
|
5
|
-
const LoginForm = () => {
|
|
6
|
-
const [username, setUsername] = useState('');
|
|
7
|
-
const [password, setPassword] = useState('');
|
|
8
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
9
|
-
const [error, setError] = useState('');
|
|
10
|
-
|
|
11
|
-
const { login } = useAuth();
|
|
12
|
-
|
|
13
|
-
const handleSubmit = async (e) => {
|
|
14
|
-
e.preventDefault();
|
|
15
|
-
setError('');
|
|
16
|
-
|
|
17
|
-
if (!username || !password) {
|
|
18
|
-
setError('Please enter both username and password');
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
setIsLoading(true);
|
|
23
|
-
|
|
24
|
-
const result = await login(username, password);
|
|
25
|
-
|
|
26
|
-
if (!result.success) {
|
|
27
|
-
setError(result.error);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
setIsLoading(false);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
<div className="min-h-screen bg-background flex items-center justify-center p-4">
|
|
35
|
-
<div className="w-full max-w-md">
|
|
36
|
-
<div className="bg-card rounded-lg shadow-lg border border-border p-8 space-y-6">
|
|
37
|
-
{/* Logo and Title */}
|
|
38
|
-
<div className="text-center">
|
|
39
|
-
<div className="flex justify-center mb-4">
|
|
40
|
-
<div className="w-16 h-16 bg-primary rounded-lg flex items-center justify-center shadow-sm">
|
|
41
|
-
<MessageSquare className="w-8 h-8 text-primary-foreground" />
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<h1 className="text-2xl font-bold text-foreground">Welcome Back</h1>
|
|
45
|
-
<p className="text-muted-foreground mt-2">
|
|
46
|
-
Sign in to your Claude Code UI account
|
|
47
|
-
</p>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
{/* Login Form */}
|
|
51
|
-
<form onSubmit={handleSubmit} className="space-y-4">
|
|
52
|
-
<div>
|
|
53
|
-
<label htmlFor="username" className="block text-sm font-medium text-foreground mb-1">
|
|
54
|
-
Username
|
|
55
|
-
</label>
|
|
56
|
-
<input
|
|
57
|
-
type="text"
|
|
58
|
-
id="username"
|
|
59
|
-
value={username}
|
|
60
|
-
onChange={(e) => setUsername(e.target.value)}
|
|
61
|
-
className="w-full px-3 py-2 border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
62
|
-
placeholder="Enter your username"
|
|
63
|
-
required
|
|
64
|
-
disabled={isLoading}
|
|
65
|
-
/>
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
<div>
|
|
69
|
-
<label htmlFor="password" className="block text-sm font-medium text-foreground mb-1">
|
|
70
|
-
Password
|
|
71
|
-
</label>
|
|
72
|
-
<input
|
|
73
|
-
type="password"
|
|
74
|
-
id="password"
|
|
75
|
-
value={password}
|
|
76
|
-
onChange={(e) => setPassword(e.target.value)}
|
|
77
|
-
className="w-full px-3 py-2 border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
|
|
78
|
-
placeholder="Enter your password"
|
|
79
|
-
required
|
|
80
|
-
disabled={isLoading}
|
|
81
|
-
/>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
{error && (
|
|
85
|
-
<div className="p-3 bg-red-100 dark:bg-red-900/20 border border-red-300 dark:border-red-800 rounded-md">
|
|
86
|
-
<p className="text-sm text-red-700 dark:text-red-400">{error}</p>
|
|
87
|
-
</div>
|
|
88
|
-
)}
|
|
89
|
-
|
|
90
|
-
<button
|
|
91
|
-
type="submit"
|
|
92
|
-
disabled={isLoading}
|
|
93
|
-
className="w-full bg-blue-600 hover:bg-blue-700 disabled:bg-blue-400 text-white font-medium py-2 px-4 rounded-md transition-colors duration-200"
|
|
94
|
-
>
|
|
95
|
-
{isLoading ? 'Signing in...' : 'Sign In'}
|
|
96
|
-
</button>
|
|
97
|
-
</form>
|
|
98
|
-
|
|
99
|
-
<div className="text-center">
|
|
100
|
-
<p className="text-sm text-muted-foreground">
|
|
101
|
-
Enter your credentials to access Claude Code UI
|
|
102
|
-
</p>
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
);
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
export default LoginForm;
|