Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}"> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet"> | |
| <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;700&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css"> | |
| <style> | |
| ::-webkit-scrollbar { | |
| width: 12px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: rgb(43, 43, 43); | |
| border-radius: 6px; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| background: rgb(119, 119, 119); | |
| } | |
| html,body{ | |
| padding: 0; | |
| margin: 0; | |
| background-color: rgb(2,2,8); | |
| width: 100vw; | |
| height: 100vh; | |
| overflow: hidden; | |
| scrollbar-width: thin; | |
| scrollbar-color: rgb(41, 41, 41) transparent; | |
| font-family: 'Inter'; | |
| } | |
| nav{ | |
| position: fixed; | |
| width: 100vw; | |
| height: 8vh; | |
| z-index: 100; | |
| display: flex; | |
| } | |
| .hamburger{ | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1.5vh; | |
| width: 20vh; | |
| color: white; | |
| margin: 1vw; | |
| cursor: pointer; | |
| position: absolute; | |
| z-index: 101; | |
| margin: 10px; | |
| } | |
| .line1{ | |
| background-color: rgb(122, 122, 122); | |
| width: 6vh; | |
| height: 0.5vh; | |
| } | |
| .line2{ | |
| background-color: rgb(104, 104, 104); | |
| width: 3vh; | |
| height: 0.5vh; | |
| } | |
| .hamburger:hover .line1{ | |
| transform: translateX(-30px); | |
| transition: transform 1s ease; | |
| } | |
| .hamburger:hover .line2{ | |
| transform: translateX(30px); | |
| transition: transform 1s ease; | |
| } | |
| .menu{ | |
| height: 100vh; | |
| width: 0px; | |
| background-color: rgba(20, 20, 20,0.5); | |
| border-radius: 10px; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| display: flex; | |
| flex-direction: column; | |
| overflow-y: auto; | |
| } | |
| .newChat{ | |
| margin-top: 8vh; | |
| margin-left: 1vw; | |
| color: gray; | |
| font-size: large; | |
| cursor: pointer; | |
| font-weight: 400; | |
| position: relative; | |
| font-size: large; | |
| } | |
| .newChat:hover{ | |
| transform: scale(0.95); | |
| transition: transform 0.7s ease; | |
| } | |
| .prevChatsCont{ | |
| color: rgb(172, 171, 171); | |
| margin-left: 1vw; | |
| font-weight: 300; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1vh; | |
| position: relative; | |
| font-size: medium; | |
| } | |
| .prevChat{ | |
| min-height: 5vh; | |
| cursor: pointer; | |
| width: 90%; | |
| display: flex; | |
| align-items: center; | |
| padding-left: 5%; | |
| border-radius: 10px; | |
| overflow: hidden; | |
| padding-top: 1%; | |
| padding-bottom: 1%; | |
| position: relative; | |
| } | |
| .prevChat:hover{ | |
| background-color: rgba(70,70, 70,1); | |
| transform: translateY(5px); | |
| transition: transform 0.8s ease; | |
| } | |
| .chatsTxt{ | |
| color: #fdffdf; | |
| margin-left: 1vw; | |
| font-size: 14px; | |
| margin-top: 4vh; | |
| margin-bottom: 3vh; | |
| z-index: 100; | |
| overflow: hidden; | |
| min-height: 5vh; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .container { | |
| width: 99.5%; | |
| max-width: 99.5%; | |
| height: 90%; | |
| position: absolute; | |
| z-index: 50; | |
| top: 8vh; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: flex-end; | |
| z-index: 1; | |
| } | |
| .inputs { | |
| width: 70%; | |
| display: flex; | |
| flex-direction: row; | |
| justify-content: space-between; | |
| align-items: center; | |
| background-color: rgba(51, 51, 51, 0.4); | |
| padding: 10px; | |
| border-top-right-radius: 50px; | |
| border-bottom-left-radius: 20px; | |
| border-top-left-radius: 20px; | |
| border-bottom-right-radius: 50px; | |
| font-size: large; | |
| position: relative; | |
| margin-top: auto; | |
| align-self: center; | |
| } | |
| .textBox{ | |
| width: 90%; | |
| background: none; | |
| outline: none; | |
| border: none; | |
| color: rgb(161, 161, 161); | |
| padding: 7px; | |
| } | |
| .sendBtn{ | |
| background-color: white; | |
| border: none; | |
| color: black; | |
| font-size: x-large; | |
| cursor: pointer; | |
| border-radius: 50%; | |
| width: 6vh; | |
| height: 6vh; | |
| } | |
| .messages { | |
| overflow-y: auto; | |
| color: white; | |
| padding: 10px; | |
| display: flex; | |
| flex-direction: column; | |
| position: relative; | |
| } | |
| .user{ | |
| margin-left: auto; | |
| max-width: 60%; | |
| background-color: rgba(51, 51, 51, 0.4); | |
| padding: 0.5vh 1.5vh 0.5vh 1.5vh; | |
| text-align: left; | |
| font-weight: 300; | |
| border-radius: 10px; | |
| line-height: 130%; | |
| } | |
| .user p{ | |
| color: #b4b4b4; | |
| padding: 0; | |
| opacity: 0.9; | |
| } | |
| .ai{ | |
| text-align: left; | |
| width: 70%; | |
| margin-left: auto; | |
| margin-right: auto; | |
| margin-top: 2vh; | |
| } | |
| .ai p { | |
| opacity: 0.9; | |
| font-weight: 300; | |
| font-size: medium; | |
| line-height: 1.6; | |
| color: #c5c5c5; | |
| background-color: rgba(28, 28, 28, 0.5); | |
| padding: 20px; | |
| border-radius: 10px; | |
| border: 2px solid rgba(255,255,255,0.1); | |
| font-family: 'Inter'; | |
| } | |
| .subHeading,.heading{ | |
| padding: 1vh; | |
| border-radius: 10px; | |
| display: inline-block; | |
| margin-bottom: 2vh; | |
| margin-top: 2vh; | |
| } | |
| .subHeading{ | |
| background-color: rgba(59, 59, 59, 0.5); | |
| border: 1px solid rgba(255,255,255,0.1) | |
| } | |
| .heading{ | |
| background-color: rgba(119, 16, 238, 0.55); | |
| box-shadow: 6px 6px rgba(0, 0, 0, 0.5) ; | |
| } | |
| code{ | |
| border-radius: 15px; | |
| } | |
| .models{ | |
| position: relative; | |
| margin: auto; | |
| padding: 10px ; | |
| outline: none; | |
| background-color: rgb(43, 43, 43); | |
| color: rgb(177, 177, 177); | |
| border: none; | |
| border-radius: 10px; | |
| } | |
| .models:hover{ | |
| background-color: #383838; | |
| } | |
| .models option{ | |
| background-color: rgb(34, 34, 34); | |
| color: #afafaf; | |
| padding: 10px; | |
| } | |
| .alert{ | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| transform: translate(-50%,-50%); | |
| width: 320px; | |
| height: 320px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0px; | |
| color: #d8d8d8; | |
| background-color: #222222; | |
| box-shadow: 6px 6px rgb(41, 41, 41) ; | |
| justify-content: center; | |
| z-index: 100; | |
| } | |
| .alert p{ | |
| float: left; | |
| font-family: 'Inter'; | |
| font-weight: 300; | |
| font-size: 15px; | |
| color: #cfcfcf; | |
| opacity: 0.9; | |
| padding-left: 10px; | |
| } | |
| .closeAlert{ | |
| margin-left: auto; | |
| margin-right: 10px; | |
| margin-top: 10px; | |
| background-color: rgb(247, 102, 102); | |
| padding: 10px; | |
| cursor: pointer; | |
| border-radius: 10px; | |
| color: #ffffff; | |
| } | |
| .discord { | |
| margin: 10px; | |
| text-decoration: none; | |
| color: rgb(211, 211, 211); | |
| padding: 7.5px; | |
| border-radius: 10px; | |
| background: linear-gradient(to right, #4A148C, #9c18e3); | |
| cursor: pointer; | |
| display: inline-block; | |
| font-size: 13px; | |
| max-width: 77px; | |
| } | |
| .note{ | |
| text-align: center; | |
| background-color: rgba(119, 16, 238, 0.55); | |
| box-shadow: 6px 6px rgb(32, 32, 32) ; | |
| margin: auto; | |
| width: 70px; | |
| padding: 10px; | |
| } | |
| .webSearch{ | |
| color: rgb(233, 233, 233); | |
| background: transparent; | |
| cursor: pointer; | |
| border: none; | |
| font-size: x-large; | |
| } | |
| /*Image Button*/ | |
| .image-button { | |
| background: transparent; | |
| border: none; | |
| color: rgb(233, 233, 233); | |
| cursor: pointer; | |
| font-size: x-large; | |
| padding: 0; /* Remove padding to fit exactly the icon */ | |
| display: flex; /* Use flexbox for alignment */ | |
| align-items: center; /* Vertically center the icon */ | |
| justify-content: center; /* Horizontally center the icon */ | |
| } | |
| .image-button i { | |
| margin: 0; | |
| } | |
| @media screen and (max-width: 780px){ | |
| .menu{ | |
| background-color: rgba(20, 20, 20); | |
| } | |
| .inputs{ | |
| width: 85%; | |
| } | |
| .ai{ | |
| width: 90%; | |
| } | |
| .user{ | |
| max-width: 90%; | |
| } | |
| } | |
| /* New styles for thinking section */ | |
| .thinking-container { | |
| background: rgba(30, 30, 30, 0.7); | |
| border-radius: 8px; | |
| margin: 10px 0; | |
| overflow: hidden; | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .thinking-header { | |
| display: flex; | |
| align-items: center; | |
| padding: 10px 15px; | |
| cursor: pointer; | |
| background: rgba(119, 16, 238, 0.2); | |
| border-bottom: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .thinking-header:hover { | |
| background: rgba(119, 16, 238, 0.3); | |
| } | |
| .thinking-title { | |
| color: #fdffdf; | |
| font-size: 14px; | |
| margin-right: 10px; | |
| } | |
| .thinking-arrow { | |
| margin-left: auto; | |
| transition: transform 0.3s ease; | |
| } | |
| .thinking-arrow.open { | |
| transform: rotate(180deg); | |
| } | |
| .thinking-content { | |
| padding: 15px; | |
| color: #c5c5c5; | |
| font-size: 14px; | |
| line-height: 1.5; | |
| max-height: 0; | |
| overflow: hidden; | |
| transition: max-height 0.3s ease-out; | |
| } | |
| .thinking-content.open { | |
| max-height: 500px; | |
| transition: max-height 0.5s ease-in; | |
| } | |
| </style> | |
| <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> | |
| <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> | |
| <title>Chat Completion Demo</title> | |
| </head> | |
| <body> | |
| <nav> | |
| <select name="" id="models" class="models"> | |
| </select> | |
| <div class="hamburger" id="hamburger"> | |
| <div class="line1"></div> | |
| <div class="line2"></div> | |
| </div> | |
| <div class="menu" id="menu"> | |
| <div class="newChat" id="newChat">+ New Chat</div> | |
| <p class="chatsTxt">chats</p> | |
| <div class="prevChatsCont" id="prevChatsCont"> | |
| </div> | |
| </div> | |
| </nav> | |
| <div class="container" id="container"> | |
| <div class="messages" id="messages"> | |
| <!-- Messages will be inserted here --> | |
| </div> | |
| <div class="inputs"> | |
| <button id="webSearch" class="webSearch"><i class="fa-solid fa-globe"></i></button> | |
| <!-- Image Button --> | |
| <a href="https://reality123b-iris.hf.space" target="_blank" rel="noopener noreferrer"> | |
| <button class="image-button"><i class="fa-solid fa-image"></i></button> | |
| </a> | |
| <textarea name="" id="textBox" class="textBox" placeholder="Enter your message..."></textarea> | |
| <button id="sendBtn" class="sendBtn"><i class="fa-solid fa-arrow-up"></i></button> | |
| </div> | |
| </div> | |
| <script> | |
| // Add this to your existing JavaScript or create a new script | |
| function createThinkingElement(thinkingContent) { | |
| const container = document.createElement('div'); | |
| container.className = 'thinking-container'; | |
| const header = document.createElement('div'); | |
| header.className = 'thinking-header'; | |
| const title = document.createElement('span'); | |
| title.className = 'thinking-title'; | |
| title.textContent = 'Reasoning about it'; | |
| const arrow = document.createElement('i'); | |
| arrow.className = 'fa-solid fa-chevron-down thinking-arrow'; | |
| const content = document.createElement('div'); | |
| content.className = 'thinking-content'; | |
| content.textContent = thinkingContent; | |
| header.appendChild(title); | |
| header.appendChild(arrow); | |
| container.appendChild(header); | |
| container.appendChild(content); | |
| header.addEventListener('click', () => { | |
| arrow.classList.toggle('open'); | |
| content.classList.toggle('open'); | |
| }); | |
| return container; | |
| } | |
| // Example usage in your message processing logic: | |
| function processMessage(message) { | |
| const thinkMatch = message.match(/<think>(.*?)<\/think>/s); | |
| if (thinkMatch) { | |
| const thinkingContent = thinkMatch[1].trim(); | |
| const thinkingElement = createThinkingElement(thinkingContent); | |
| // Insert the thinking element into your message container | |
| document.getElementById('messages').appendChild(thinkingElement); | |
| } | |
| } | |
| </script> | |
| <script src="{{ url_for('static', filename='js/script.js') }}" type="module"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script> | |
| </body> | |
| </html> |