File size: 10,826 Bytes
ad61268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AI Chat Interface</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://cdn.tailwindcss.com"></script>
    <script>
        tailwind.config = {
            darkMode: 'class',
            theme: {
                extend: {
                    colors: {
                        primary: '#6366f1', // Indigo-500
                        secondary: '#1e293b', // Slate-800
                        dark: '#0f172a', // Slate-900
                        lighter: '#334155', // Slate-700
                    }
                }
            }
        }
    </script>
    <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
</head>
<body class="bg-gray-50 dark:bg-dark text-gray-800 dark:text-gray-100 h-screen overflow-hidden flex transition-colors duration-300">

    <!-- Mobile Header -->
    <div class="md:hidden fixed top-0 left-0 right-0 h-16 bg-white dark:bg-secondary border-b border-gray-200 dark:border-gray-700 flex items-center justify-between px-4 z-50">
        <button id="mobile-menu-btn" class="p-2 rounded-md hover:bg-gray-100 dark:hover:bg-lighter">
            <i data-feather="menu"></i>
        </button>
        <span class="font-bold text-lg text-primary">AI Chat</span>
        <div class="w-8"></div> <!-- Spacer -->
    </div>

    <!-- Sidebar -->
    <aside id="sidebar" class="fixed inset-y-0 left-0 transform -translate-x-full md:translate-x-0 w-64 bg-white dark:bg-secondary border-r border-gray-200 dark:border-gray-700 flex flex-col transition-transform duration-300 z-40 h-full pt-16 md:pt-0">
        
        <!-- New Chat Button -->
        <div class="p-4 border-b border-gray-200 dark:border-gray-700">
            <button onclick="window.location.reload()" class="w-full flex items-center justify-center gap-2 px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-lighter transition-colors text-sm font-medium">
                <i data-feather="plus" class="w-4 h-4"></i>
                New Chat
            </button>
        </div>

        <!-- History List (Scrollable) -->
        <div class="flex-1 overflow-y-auto p-3 space-y-2 custom-scrollbar">
            <div class="text-xs font-semibold text-gray-500 dark:text-gray-400 px-2 mb-2 uppercase tracking-wider">Today</div>
            <button class="w-full text-left px-3 py-2 rounded-md bg-gray-100 dark:bg-lighter text-sm truncate flex items-center gap-3">
                <i data-feather="message-square" class="w-4 h-4 opacity-50"></i>
                <span class="truncate">Quantum Physics Explanation</span>
            </button>
            <button class="w-full text-left px-3 py-2 rounded-md hover:bg-gray-50 dark:hover:bg-lighter text-sm truncate flex items-center gap-3 text-gray-600 dark:text-gray-300">
                <i data-feather="message-square" class="w-4 h-4 opacity-50"></i>
                <span class="truncate">React Component Ideas</span>
            </button>
            <button class="w-full text-left px-3 py-2 rounded-md hover:bg-gray-50 dark:hover:bg-lighter text-sm truncate flex items-center gap-3 text-gray-600 dark:text-gray-300">
                <i data-feather="message-square" class="w-4 h-4 opacity-50"></i>
                <span class="truncate">Code Refactoring Tips</span>
            </button>
        </div>

        <!-- User Profile / Settings -->
        <div class="p-3 border-t border-gray-200 dark:border-gray-700">
            <button class="w-full flex items-center gap-3 px-3 py-2 rounded-md hover:bg-gray-50 dark:hover:bg-lighter transition-colors">
                <div class="w-8 h-8 rounded-full bg-gradient-to-tr from-primary to-purple-500 flex items-center justify-center text-white text-xs font-bold">
                    JS
                </div>
                <div class="flex-1 text-sm font-medium text-left">John Smith</div>
                <i data-feather="settings" class="w-4 h-4 text-gray-500"></i>
            </button>
        </div>
    </aside>

    <!-- Overlay for mobile sidebar -->
    <div id="sidebar-overlay" class="fixed inset-0 bg-black/50 z-30 hidden md:hidden opacity-0 transition-opacity duration-300"></div>

    <!-- Main Chat Area -->
    <main class="flex-1 flex flex-col h-full relative ml-0 md:ml-64 pt-16 md:pt-0">
        
        <!-- Mobile padding spacer -->
        <div class="md:hidden h-16"></div>

        <!-- Chat Container -->
        <div id="chat-container" class="flex-1 overflow-y-auto p-4 md:p-8 space-y-6 custom-scrollbar scroll-smooth">
            
            <!-- Welcome Screen (Hidden when chat starts) -->
            <div id="welcome-screen" class="h-full flex flex-col items-center justify-center text-center space-y-6 pb-20">
                <div class="w-16 h-16 bg-primary/10 rounded-2xl flex items-center justify-center text-primary mb-4">
                    <i data-feather="cpu" class="w-8 h-8"></i>
                </div>
                <h1 class="text-3xl font-bold text-gray-800 dark:text-white">How can I help you today?</h1>
                <div class="grid grid-cols-1 md:grid-cols-2 gap-4 w-full max-w-2xl px-4">
                    <button onclick="fillInput('Explain quantum computing in simple terms')" class="p-4 bg-white dark:bg-secondary border border-gray-200 dark:border-gray-700 rounded-xl hover:border-primary dark:hover:border-primary hover:shadow-lg transition-all text-left group">
                        <div class="text-primary mb-2 group-hover:scale-110 transition-transform"><i data-feather="book-open" class="w-5 h-5"></i></div>
                        <div class="font-medium">Explain quantum computing</div>
                        <div class="text-sm text-gray-500">in simple terms</div>
                    </button>
                    <button onclick="fillInput('Write a Python script to automate daily reports')" class="p-4 bg-white dark:bg-secondary border border-gray-200 dark:border-gray-700 rounded-xl hover:border-primary dark:hover:border-primary hover:shadow-lg transition-all text-left group">
                        <div class="text-primary mb-2 group-hover:scale-110 transition-transform"><i data-feather="code" class="w-5 h-5"></i></div>
                        <div class="font-medium">Write a Python script</div>
                        <div class="text-sm text-gray-500">to automate daily reports</div>
                    </button>
                    <button onclick="fillInput('Brainstorm creative ideas for a birthday')" class="p-4 bg-white dark:bg-secondary border border-gray-200 dark:border-gray-700 rounded-xl hover:border-primary dark:hover:border-primary hover:shadow-lg transition-all text-left group">
                        <div class="text-primary mb-2 group-hover:scale-110 transition-transform"><i data-feather="gift" class="w-5 h-5"></i></div>
                        <div class="font-medium">Birthday ideas</div>
                        <div class="text-sm text-gray-500">creative and fun</div>
                    </button>
                    <button onclick="fillInput('Translate the following text to French')" class="p-4 bg-white dark:bg-secondary border border-gray-200 dark:border-gray-700 rounded-xl hover:border-primary dark:hover:border-primary hover:shadow-lg transition-all text-left group">
                        <div class="text-primary mb-2 group-hover:scale-110 transition-transform"><i data-feather="globe" class="w-5 h-5"></i></div>
                        <div class="font-medium">Translate text</div>
                        <div class="text-sm text-gray-500">to French, Spanish, etc.</div>
                    </button>
                </div>
            </div>

            <!-- Messages will be injected here -->
            <div id="messages-wrapper" class="hidden space-y-6 pb-4">
                <!-- Example Assistant Message -->
                <div class="flex gap-4 max-w-4xl mx-auto">
                    <div class="w-8 h-8 rounded-full bg-gradient-to-br from-green-400 to-blue-500 flex-shrink-0 flex items-center justify-center text-white text-xs">
                        AI
                    </div>
                    <div class="flex-1 space-y-2">
                        <p class="font-medium text-sm text-gray-900 dark:text-gray-100">Assistant</p>
                        <div class="prose dark:prose-invert max-w-none text-gray-700 dark:text-gray-300 leading-7">
                            <p>Hello! I am your AI assistant. How can I help you today?</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Input Area -->
        <div class="bg-gradient-to-t from-gray-50 dark:from-dark via-gray-50 dark:via-dark to-transparent pt-10 pb-6 px-4 absolute bottom-0 w-full">
            <div class="max-w-4xl mx-auto">
                <div class="relative flex items-end gap-2 bg-white dark:bg-secondary border border-gray-300 dark:border-gray-700 rounded-2xl shadow-sm p-2 focus-within:ring-2 focus-within:ring-primary/50 focus-within:border-primary transition-all">
                    <button class="p-2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 transition-colors rounded-xl hover:bg-gray-100 dark:hover:bg-lighter">
                        <i data-feather="plus-circle" class="w-5 h-5"></i>
                    </button>
                    <textarea 
                        id="chat-input" 
                        rows="1" 
                        placeholder="Send a message..." 
                        class="w-full bg-transparent border-none focus:ring-0 resize-none max-h-32 py-3 text-gray-800 dark:text-white placeholder-gray-400"
                        oninput="this.style.height = ''; this.style.height = this.scrollHeight + 'px'"
                        onkeydown="handleEnter(event)"
                    ></textarea>
                    <button 
                        id="send-btn"
                        class="p-2 bg-primary text-white rounded-xl hover:bg-indigo-600 disabled:opacity-50 disabled:cursor-not-allowed transition-all shadow-md hover:shadow-lg flex-shrink-0 mb-1"
                        onclick="sendMessage()"
                    >
                        <i data-feather="send" class="w-5 h-5"></i>
                    </button>
                </div>
                <p class="text-xs text-center text-gray-400 mt-2">AI can make mistakes. Consider checking important information.</p>
            </div>
        </div>

    </main>

    <script src="script.js"></script>
    <script>feather.replace();</script>
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
</body>
</html>