| | <!doctype html> |
| | <html> |
| | <head> |
| | <meta charset="utf-8" /> |
| | <meta name="viewport" content="width=device-width" /> |
| | <title>My static Space</title> |
| | <link rel="stylesheet" href="style.css" /> |
| | |
| | <style> |
| | .chat-fab { |
| | position: fixed; |
| | right: 20px; |
| | bottom: 20px; |
| | width: 56px; |
| | height: 56px; |
| | border-radius: 50%; |
| | border: none; |
| | cursor: pointer; |
| | background: #111; |
| | color: #fff; |
| | font-size: 24px; |
| | box-shadow: 0 6px 15px rgba(0,0,0,0.25); |
| | z-index: 10000; |
| | } |
| | |
| | .chat-panel { |
| | position: fixed; |
| | right: 20px; |
| | bottom: 90px; |
| | width: 400px; |
| | height: 600px; |
| | max-width: calc(100% - 40px); |
| | transform: translateY(20px); |
| | opacity: 0; |
| | pointer-events: none; |
| | transition: opacity .2s ease, transform .2s ease; |
| | border-radius: 12px; |
| | overflow: hidden; |
| | box-shadow: 0 12px 30px rgba(0,0,0,.25); |
| | background: #fff; |
| | z-index: 10000; |
| | } |
| | |
| | .chat-panel.open { |
| | opacity: 1; |
| | transform: translateY(0); |
| | pointer-events: auto; |
| | } |
| | |
| | .chat-header { |
| | height: 44px; |
| | display: flex; |
| | align-items: center; |
| | justify-content: space-between; |
| | padding: 0 12px; |
| | background: #111; |
| | color: #fff; |
| | font: 14px/1.2 system-ui, sans-serif; |
| | } |
| | |
| | .chat-iframe { |
| | border: 0; |
| | width: 100%; |
| | height: calc(100% - 44px); |
| | display: block; |
| | } |
| | |
| | .chat-close { |
| | background: none; |
| | border: 0; |
| | color: #fff; |
| | font-size: 18px; |
| | cursor: pointer; |
| | } |
| | </style> |
| | |
| | <script> |
| | document.addEventListener('DOMContentLoaded', function () { |
| | const fab = document.createElement('button'); |
| | fab.className = 'chat-fab'; |
| | fab.textContent = '💬'; |
| | fab.setAttribute('aria-label', 'Open chat'); |
| | |
| | const panel = document.createElement('div'); |
| | panel.className = 'chat-panel'; |
| | panel.setAttribute('aria-hidden', 'true'); |
| | |
| | const header = document.createElement('div'); |
| | header.className = 'chat-header'; |
| | header.innerHTML = `<span>Chatbot</span>`; |
| | |
| | const closeBtn = document.createElement('button'); |
| | closeBtn.className = 'chat-close'; |
| | closeBtn.textContent = '✕'; |
| | closeBtn.setAttribute('aria-label', 'Close chat'); |
| | |
| | closeBtn.addEventListener('click', () => { |
| | panel.classList.remove('open'); |
| | panel.setAttribute('aria-hidden', 'true'); |
| | }); |
| | |
| | const iframe = document.createElement('iframe'); |
| | iframe.className = 'chat-iframe'; |
| | iframe.src = 'https://openai-chatkit-starter-app-mocha.vercel.app'; |
| | iframe.allow = 'clipboard-write; microphone; camera'; |
| | iframe.referrerPolicy = 'strict-origin-when-cross-origin'; |
| | |
| | header.appendChild(closeBtn); |
| | panel.appendChild(header); |
| | panel.appendChild(iframe); |
| | document.body.appendChild(fab); |
| | document.body.appendChild(panel); |
| | |
| | fab.addEventListener('click', () => { |
| | panel.classList.add('open'); |
| | panel.setAttribute('aria-hidden', 'false'); |
| | }); |
| | }); |
| | </script> |
| | |
| | </head> |
| | <body> |
| | <div class="card"> |
| | <h1>Welcome to your static Space!</h1> |
| | <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p> |
| | <p> |
| | To start an OpenAI Agent Builder Chat, click the speech bubble icon on the bottom right of the page. |
| | Type in a subject, and the model will give you an interesting fact on it, then tell you a "dad joke" about it |
| | </p> |
| | </div> |
| | </body> |
| | </html> |
| |
|