diff --git a/app/layout.tsx b/app/layout.tsx
new file mode 100644
index 0000000..a14e64f
--- /dev/null
+++ b/app/layout.tsx
@@ -0,0 +1,16 @@
+export const metadata = {
+ title: 'Next.js',
+ description: 'Generated by Next.js',
+}
+
+export default function RootLayout({
+ children,
+}: {
+ children: React.ReactNode
+}) {
+ return (
+
+
{children}
+
+ )
+}
diff --git a/app/page.tsx b/app/page.tsx
index e69de29..63d9c78 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -0,0 +1,157 @@
+"use client"; // Add this at the top to mark this file as a Client Component
+
+import React, { useState, useEffect, useRef } from 'react';
+import './styles.css'; // Make sure this matches your CSS file path
+
+const App = () => {
+ const [showDivs, setShowDivs] = useState(true); // Default to true to show divs on load
+ const conversationRef = useRef(null);
+
+ useEffect(() => {
+ // Scroll to bottom when the component mounts or updates
+ const scrollToBottom = () => {
+ const conversation = conversationRef.current;
+ if (conversation) {
+ conversation.scrollTop = conversation.scrollHeight;
+ }
+ };
+
+ scrollToBottom(); // Scroll to the bottom when the page loads
+
+ // Use MutationObserver to efficiently observe changes in the conversation element
+ const observer = new MutationObserver(scrollToBottom);
+
+ if (conversationRef.current) {
+ observer.observe(conversationRef.current, {
+ childList: true,
+ subtree: true,
+ });
+ }
+
+ return () => {
+ if (conversationRef.current) {
+ observer.disconnect();
+ }
+ };
+ }, []);
+
+ const toggleDivs = () => {
+ setShowDivs(prevState => !prevState);
+ };
+
+ return (
+
+
+
+
+ {showDivs && (
+
+
+
+ -
+ history1
+
+ {/* Add more history items here */}
+
+
+
+ )}
+
+ {showDivs && (
+
+
+
+
Different AI models
+
+
+
+
+ )}
+
+
+
+ {/* Render messages here */}
+ {/* Replace the following example with dynamic rendering */}
+
User: Example message
+
AI: Example response
+
+
+
+
+
+
+ );
+};
+
+export default App;
diff --git a/app/styles.css b/app/styles.css
new file mode 100644
index 0000000..0f41603
--- /dev/null
+++ b/app/styles.css
@@ -0,0 +1,524 @@
+:root {
+ --background-color: white;
+ --text-color: white;
+ --font-family: Arial, sans-serif;
+ --history-background-color: rgb(0, 0, 48);
+ --models-background-color: rgb(0, 0, 48);
+ --output-background-color: black;
+ /* Set the conversation background to black */
+ --user-message-color: rgb(0, 128, 255);
+ /* Blueish bubble for user */
+ --ai-message-color: rgb(100, 100, 255);
+ /* Lighter blue for AI */
+ --input-background-color: rgb(0, 0, 48);
+ --input-button-color: rgb(0, 128, 255);
+ --input-button-hover-color: rgb(0, 100, 200);
+ --scrollbar-track: rgb(91, 172, 253);
+ --scrollbar-thumb: rgb(0, 88, 176);
+}
+
+/* Global Reset */
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+html,
+body {
+ height: 100vh;
+ overflow: hidden;
+ /* Prevent scrolling */
+}
+
+/* Body Styling */
+body {
+ margin-top: 2em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-color: var(--background-color);
+ color: var(--text-color);
+ font-family: var(--font-family);
+ margin-bottom: 0.5em;
+}
+
+/* Header Styling */
+header {
+ background-color: var(--background-color);
+ color: black;
+ width: 100%;
+ text-decoration: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ padding: 10px 20px;
+ box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
+ z-index: 1000;
+ font-family: var(--font-family);
+}
+
+header li {
+ display: inline-block;
+ margin: 0 15px;
+}
+
+header img {
+ height: 2em;
+ vertical-align: middle;
+}
+
+header a {
+ color: black;
+ text-decoration: none;
+ transition: color 0.3s;
+}
+
+header a:hover {
+ color: var(--input-button-color);
+}
+
+/* Container Grid Layout */
+.container {
+ display: grid;
+ grid-template-columns: 1fr 3fr;
+ grid-template-rows: 3fr 1fr 1fr 1fr;
+ gap: 10px;
+ width: 90vw;
+ height: 95vh;
+}
+
+/* History Section */
+.history-background {
+ grid-column: 1/2;
+ grid-row: 1/2;
+ height: 100%;
+ overflow: hidden;
+ background-color: var(--history-background-color);
+ padding: 1em;
+ border-radius: 2em;
+}
+
+.history {
+ height: 100%;
+ overflow-y: scroll;
+ padding-right: 10px;
+}
+
+.history ul {
+ list-style: none;
+}
+
+.history ul li {
+ padding: 10px 0;
+ border-bottom: 1px solid var(--text-color);
+ width: 100%;
+}
+
+.history ul li a {
+ display: block;
+ text-decoration: none;
+ color: white;
+ width: 100%;
+ padding: 5px;
+}
+
+.history ul li a:hover {
+ background-color: var(--input-button-hover-color);
+}
+
+/* Models Section */
+.model-background {
+ grid-column: 1/2;
+ grid-row: 2/5;
+ overflow-y: auto;
+ background-color: var(--models-background-color);
+ border-radius: 2em;
+ padding: 1em;
+ height: 90%;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+
+.models {
+ grid-column: 1/2;
+ grid-row: 2/5;
+ overflow-y: auto;
+ background-color: var(--models-background-color);
+ border-radius: 2em;
+ padding: 1em;
+ height: 100%;
+ box-sizing: border-box;
+ overflow: hidden;
+ overflow-y: scroll;
+}
+
+.models form {
+ padding-right: 10px;
+ padding-left: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.models .titel {
+ padding-bottom: 1em;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 1.5vh;
+ width: fit-content;
+ /* height: calc(100% - 2em); */
+}
+
+.grid h3 {
+ font-size: x-large;
+}
+
+.model-box {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ border-radius: 5%;
+ overflow: hidden;
+ position: relative;
+ height: 18vh;
+ width: 18vh;
+}
+
+.overlay {
+ z-index: 900;
+ position: absolute;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.7);
+ /* Dark overlay */
+ color: white;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 300%;
+ transition: opacity 0.5s ease;
+ pointer-events: none;
+ opacity: 0;
+ font-size: xx-large;
+}
+
+.overlay img {
+ align-self: flex-end;
+ justify-self: end;
+ height: 3vh;
+ width: 3vh;
+ position: absolute;
+ right: 15px;
+ bottom: 15px;
+}
+
+.model-box:hover .overlay {
+ opacity: 1;
+}
+
+.code-model {
+ background-image: url(/img/code.jpg);
+ background-repeat: no-repeat;
+ background-size: cover;
+}
+
+.math-model {
+ background-image: url(/img/math.jpg);
+ background-color: white;
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+.language-model {
+ background-image: url(/img/language.jpg);
+ background-color: #72cce4;
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-position: center;
+}
+
+.default-model {
+ background-image: url(/img/default.jpg);
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center;
+}
+
+/* Output Section */
+.output {
+ grid-column: 2;
+ grid-row: 1 / 4;
+ border-radius: 2em;
+ background-color: var(--output-background-color);
+ padding: 1.5em;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ font-size: 1.2em;
+ overflow-y: auto;
+ min-height: 75vh;
+ margin-bottom: 0;
+ width: 100%;
+ height: 100%;
+}
+
+/* Conversation */
+#conversation {
+ display: flex;
+ flex-direction: column;
+ padding: 10px;
+ overflow-y: auto;
+ max-height: 80vh;
+ background-color: var(--output-background-color);
+ /* Black background */
+ border-radius: 10px;
+ scroll-behavior: smooth;
+ /* Optional: Smooth scrolling */
+}
+
+/* Resizable Conversation */
+.resize {
+ resize: both;
+ overflow: auto;
+ /* Allow resizing both horizontally and vertically */
+ min-width: 300px;
+ min-height: 300px;
+ /* Minimum dimensions to prevent it from becoming too small */
+}
+
+/* User and AI Messages */
+.user-message,
+.ai-message {
+ margin: 10px 0;
+ padding: 10px 15px;
+ border-radius: 15px;
+ max-width: 60%;
+ width: fit-content;
+ /* Adjusts width to fit the content */
+ word-wrap: break-word;
+ display: block;
+ /* Changed from inline-block to block */
+ box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+/* Align user message to the right */
+.user-message {
+ background-color: var(--user-message-color);
+ color: var(--text-color);
+ border-bottom-right-radius: 0;
+ margin-left: auto;
+ text-align: right;
+ /* Align text to the right */
+}
+
+/* Align AI message to the left */
+.ai-message {
+ background-color: var(--ai-message-color);
+ color: var(--text-color);
+ border-bottom-left-radius: 0;
+ margin-right: auto;
+ text-align: left;
+ /* Align text to the left */
+}
+
+/* Output Form Buttons */
+.output form {
+ display: flex;
+ justify-content: flex-start;
+ gap: 10px;
+}
+
+.output form button {
+ background-color: transparent;
+ color: white;
+ border: none;
+ padding: 0;
+ margin: 5px;
+ cursor: pointer;
+ transition: transform 0.2s ease-in-out;
+}
+
+.output form button:hover {
+ transform: scale(1.2);
+}
+
+.output form button img {
+ height: 1.8em;
+}
+
+/* Input Section */
+.input {
+ grid-column: 2/3;
+ grid-row: 4/5;
+ border-radius: 20px;
+ background-color: var(--input-background-color);
+ padding: 1.5vh;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ height: auto;
+ /* margin-top: -9em; */
+ gap: 10px;
+ height: 10vh;
+}
+
+.input input {
+ flex-grow: 1;
+ padding: 5px;
+ font-size: 1.2em;
+ border-radius: 8px;
+ border: 2px solid var(--input-button-color);
+ outline: none;
+ margin-right: 10px;
+ background-color: rgba(255, 255, 255, 0.9);
+ color: #333;
+ transition: border-color 0.3s ease-in-out;
+ height: 7vh;
+}
+
+.input input:focus {
+ border-color: var(--input-button-hover-color);
+}
+
+.input button {
+ padding: 1em;
+ margin: 5px;
+ background-color: var(--input-button-color);
+ color: white;
+ border: none;
+ border-radius: 50%;
+ font-size: 1.5em;
+ cursor: pointer;
+ height: 50px;
+ width: 50px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ transition: background-color 0.3s ease;
+ position: relative;
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
+}
+
+.input button img {
+ height: 1em;
+}
+
+.input button:hover {
+ background-color: var(--input-button-hover-color);
+ box-shadow: 0 6px 15px rgba(0, 0, 0, 0.2);
+}
+
+/* FAQ Section */
+#faq {
+ max-width: 800px;
+ width: 90%;
+ margin-top: 50px;
+ padding: 20px;
+ background-color: #222;
+ border-radius: 10px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
+}
+
+#faq h2 {
+ text-align: center;
+ color: #00ccff;
+ font-size: 2em;
+ margin-bottom: 20px;
+}
+
+.faq-item {
+ margin-bottom: 20px;
+ padding: 10px;
+ border-radius: 5px;
+ background-color: #333;
+}
+
+.faq-item h3 {
+ color: #00ccff;
+ margin-bottom: 10px;
+ font-size: 1.5em;
+}
+
+.faq-item p {
+ color: #ddd;
+ font-size: 1.1em;
+ line-height: 1.5;
+}
+
+.faq-item:hover {
+ background-color: #444;
+ transition: background-color 0.3s;
+}
+
+::-webkit-scrollbar {
+ width: 7px;
+}
+
+::-webkit-scrollbar-track {
+ background-color: var(--scrollbar-track);
+ border-radius: 5px;
+ overflow: hidden;
+ margin-left: 10px;
+ padding-left: 15px;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: var(--scrollbar-thumb);
+ border-radius: 5px;
+}
+
+@media (max-width: 1400px) {
+ .grid {
+ grid-template-columns: 1fr;
+ }
+
+ .model-box {
+ width: 15vw;
+ aspect-ratio: 1/1;
+ }
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+ .container {
+ grid-template-columns: 1fr;
+ grid-template-rows: auto;
+ width: 95vw;
+ }
+
+ .history,
+ .models {
+ display: none;
+ /* Hide history and models */
+ }
+
+ .output {
+ grid-column: 1;
+ grid-row: 1 / span 2;
+ }
+
+ .input {
+ grid-column: 1;
+ grid-row: 3;
+ /* margin-top: -4em; */
+ }
+
+ .input button {
+ height: 40px;
+ width: 40px;
+ }
+
+ .output form button img {
+ height: 1.5em;
+ }
+}
diff --git a/public/img/code.jpg b/public/img/code.jpg
new file mode 100644
index 0000000..416fca4
Binary files /dev/null and b/public/img/code.jpg differ
diff --git a/public/img/copy.svg b/public/img/copy.svg
new file mode 100644
index 0000000..c8bdf17
--- /dev/null
+++ b/public/img/copy.svg
@@ -0,0 +1,54 @@
+
+
+
+
diff --git a/public/img/default.jpg b/public/img/default.jpg
new file mode 100644
index 0000000..266213d
Binary files /dev/null and b/public/img/default.jpg differ
diff --git a/public/img/edit.svg b/public/img/edit.svg
new file mode 100644
index 0000000..ed1f7fe
--- /dev/null
+++ b/public/img/edit.svg
@@ -0,0 +1,74 @@
+
+
+
+
diff --git a/public/img/language.jpg b/public/img/language.jpg
new file mode 100644
index 0000000..5ab31b9
Binary files /dev/null and b/public/img/language.jpg differ
diff --git a/public/img/logo.png b/public/img/logo.png
new file mode 100644
index 0000000..00332a4
Binary files /dev/null and b/public/img/logo.png differ
diff --git a/public/img/math.jpg b/public/img/math.jpg
new file mode 100644
index 0000000..a417968
Binary files /dev/null and b/public/img/math.jpg differ
diff --git a/public/img/microphone.svg b/public/img/microphone.svg
new file mode 100644
index 0000000..6dde830
--- /dev/null
+++ b/public/img/microphone.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/public/img/nowifi.svg b/public/img/nowifi.svg
new file mode 100644
index 0000000..8e7beb7
--- /dev/null
+++ b/public/img/nowifi.svg
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/public/img/resend.svg b/public/img/resend.svg
new file mode 100644
index 0000000..469d02b
--- /dev/null
+++ b/public/img/resend.svg
@@ -0,0 +1,65 @@
+
+
+
+
diff --git a/public/img/send.svg b/public/img/send.svg
new file mode 100644
index 0000000..dafc2e9
--- /dev/null
+++ b/public/img/send.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/public/img/wifi.svg b/public/img/wifi.svg
new file mode 100644
index 0000000..350a0eb
--- /dev/null
+++ b/public/img/wifi.svg
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file