Spaces:
Running
Running
Add 3 files
Browse files- README.md +7 -5
- index.html +694 -19
- prompts.txt +31 -0
README.md
CHANGED
|
@@ -1,10 +1,12 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
---
|
| 2 |
+
title: customized-chatbot
|
| 3 |
+
emoji: π³
|
| 4 |
+
colorFrom: green
|
| 5 |
+
colorTo: pink
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite
|
| 10 |
---
|
| 11 |
|
| 12 |
+
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
index.html
CHANGED
|
@@ -1,19 +1,694 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Linda Grey Law Firm Chatbot</title>
|
| 7 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 8 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
| 9 |
+
<style>
|
| 10 |
+
@keyframes bounce {
|
| 11 |
+
0%, 100% { transform: translateY(0); }
|
| 12 |
+
50% { transform: translateY(-5px); }
|
| 13 |
+
}
|
| 14 |
+
.bounce-hover:hover {
|
| 15 |
+
animation: bounce 0.8s ease infinite;
|
| 16 |
+
}
|
| 17 |
+
.teardrop {
|
| 18 |
+
width: 50px;
|
| 19 |
+
height: 50px;
|
| 20 |
+
background: #0D3B2E;
|
| 21 |
+
border-radius: 50% 0 50% 50%;
|
| 22 |
+
transform: rotate(90deg);
|
| 23 |
+
position: relative;
|
| 24 |
+
box-shadow: 0 4px 15px rgba(13, 59, 46, 0.3);
|
| 25 |
+
}
|
| 26 |
+
.teardrop-inner {
|
| 27 |
+
transform: rotate(-90deg);
|
| 28 |
+
position: absolute;
|
| 29 |
+
top: 8px;
|
| 30 |
+
left: 8px;
|
| 31 |
+
width: 34px;
|
| 32 |
+
height: 34px;
|
| 33 |
+
border-radius: 50%;
|
| 34 |
+
overflow: hidden;
|
| 35 |
+
display: flex;
|
| 36 |
+
justify-content: center;
|
| 37 |
+
align-items: center;
|
| 38 |
+
background: white;
|
| 39 |
+
}
|
| 40 |
+
.chat-container {
|
| 41 |
+
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
|
| 42 |
+
backdrop-filter: blur(10px);
|
| 43 |
+
background: rgba(255, 255, 255, 0.98);
|
| 44 |
+
border-radius: 18px;
|
| 45 |
+
border: 1px solid rgba(13, 59, 46, 0.1);
|
| 46 |
+
}
|
| 47 |
+
.typing-indicator {
|
| 48 |
+
display: flex;
|
| 49 |
+
align-items: center;
|
| 50 |
+
}
|
| 51 |
+
.typing-dot {
|
| 52 |
+
width: 6px;
|
| 53 |
+
height: 6px;
|
| 54 |
+
margin: 0 2px;
|
| 55 |
+
background-color: #6b7280;
|
| 56 |
+
border-radius: 50%;
|
| 57 |
+
animation: typingAnimation 1.4s infinite ease-in-out;
|
| 58 |
+
}
|
| 59 |
+
.typing-dot:nth-child(1) {
|
| 60 |
+
animation-delay: 0s;
|
| 61 |
+
}
|
| 62 |
+
.typing-dot:nth-child(2) {
|
| 63 |
+
animation-delay: 0.2s;
|
| 64 |
+
}
|
| 65 |
+
.typing-dot:nth-child(3) {
|
| 66 |
+
animation-delay: 0.4s;
|
| 67 |
+
}
|
| 68 |
+
@keyframes typingAnimation {
|
| 69 |
+
0%, 60%, 100% { transform: translateY(0); }
|
| 70 |
+
30% { transform: translateY(-5px); }
|
| 71 |
+
}
|
| 72 |
+
.message-fade-in {
|
| 73 |
+
animation: fadeIn 0.3s ease-in-out;
|
| 74 |
+
}
|
| 75 |
+
@keyframes fadeIn {
|
| 76 |
+
from { opacity: 0; transform: translateY(10px); }
|
| 77 |
+
to { opacity: 1; transform: translateY(0); }
|
| 78 |
+
}
|
| 79 |
+
.navy-green-bg {
|
| 80 |
+
background-color: #0D3B2E;
|
| 81 |
+
}
|
| 82 |
+
.navy-green-text {
|
| 83 |
+
color: #0D3B2E;
|
| 84 |
+
}
|
| 85 |
+
.navy-green-border {
|
| 86 |
+
border-color: #0D3B2E;
|
| 87 |
+
}
|
| 88 |
+
.quick-reply-btn {
|
| 89 |
+
transition: all 0.2s ease;
|
| 90 |
+
white-space: nowrap;
|
| 91 |
+
overflow: hidden;
|
| 92 |
+
text-overflow: ellipsis;
|
| 93 |
+
padding: 2px 6px;
|
| 94 |
+
font-size: 0.8rem;
|
| 95 |
+
}
|
| 96 |
+
.feedback-buttons {
|
| 97 |
+
display: none;
|
| 98 |
+
margin-top: 4px;
|
| 99 |
+
margin-left: 16px;
|
| 100 |
+
transition: all 0.3s ease;
|
| 101 |
+
}
|
| 102 |
+
.feedback-button {
|
| 103 |
+
background: transparent;
|
| 104 |
+
border: none;
|
| 105 |
+
cursor: pointer;
|
| 106 |
+
padding: 2px 4px;
|
| 107 |
+
border-radius: 4px;
|
| 108 |
+
transition: all 0.2s ease;
|
| 109 |
+
}
|
| 110 |
+
.feedback-button.thumbs-up.active {
|
| 111 |
+
color: #10B981 !important;
|
| 112 |
+
}
|
| 113 |
+
.feedback-button.thumbs-down.active {
|
| 114 |
+
color: #EF4444 !important;
|
| 115 |
+
}
|
| 116 |
+
.feedback-button:hover {
|
| 117 |
+
transform: scale(1.1);
|
| 118 |
+
}
|
| 119 |
+
.feedback-button.thumbs-up:hover {
|
| 120 |
+
color: #10B981;
|
| 121 |
+
}
|
| 122 |
+
.feedback-button.thumbs-down:hover {
|
| 123 |
+
color: #EF4444;
|
| 124 |
+
}
|
| 125 |
+
.bot-message-bubble {
|
| 126 |
+
max-width: 80%;
|
| 127 |
+
background: #f9fafb;
|
| 128 |
+
border-radius: 16px;
|
| 129 |
+
padding: 12px 16px;
|
| 130 |
+
margin-left: 8px;
|
| 131 |
+
box-shadow: 0 1px 4px rgba(0,0,0,0.05);
|
| 132 |
+
position: relative;
|
| 133 |
+
font-size: 15px;
|
| 134 |
+
color: #111827;
|
| 135 |
+
}
|
| 136 |
+
.user-message-bubble {
|
| 137 |
+
max-width: 80%;
|
| 138 |
+
background: #0D3B2E;
|
| 139 |
+
color: white;
|
| 140 |
+
border-radius: 16px;
|
| 141 |
+
padding: 12px 16px;
|
| 142 |
+
margin-right: 8px;
|
| 143 |
+
box-shadow: 0 1px 4px rgba(0,0,0,0.05);
|
| 144 |
+
line-height: 1.2;
|
| 145 |
+
font-weight: bold;
|
| 146 |
+
}
|
| 147 |
+
.message-container:hover .feedback-buttons {
|
| 148 |
+
display: block;
|
| 149 |
+
}
|
| 150 |
+
.timestamp {
|
| 151 |
+
font-size: 0.75rem;
|
| 152 |
+
color: #6b7280;
|
| 153 |
+
margin-top: 4px;
|
| 154 |
+
display: flex;
|
| 155 |
+
align-items: center;
|
| 156 |
+
}
|
| 157 |
+
.user-timestamp {
|
| 158 |
+
text-align: right;
|
| 159 |
+
padding-right: 10px;
|
| 160 |
+
}
|
| 161 |
+
.timestamp i {
|
| 162 |
+
margin-right: 3px;
|
| 163 |
+
font-size: 0.6rem;
|
| 164 |
+
}
|
| 165 |
+
.help-menu {
|
| 166 |
+
display: none;
|
| 167 |
+
background-color: white;
|
| 168 |
+
border-radius: 18px;
|
| 169 |
+
position: absolute;
|
| 170 |
+
top: 0;
|
| 171 |
+
left: 0;
|
| 172 |
+
right: 0;
|
| 173 |
+
bottom: 0;
|
| 174 |
+
z-index: 100;
|
| 175 |
+
padding: 20px;
|
| 176 |
+
overflow-y: auto;
|
| 177 |
+
animation: slideUp 0.3s ease-out;
|
| 178 |
+
}
|
| 179 |
+
.help-menu.show {
|
| 180 |
+
display: flex;
|
| 181 |
+
flex-direction: column;
|
| 182 |
+
}
|
| 183 |
+
.help-menu-header {
|
| 184 |
+
display: flex;
|
| 185 |
+
justify-content: space-between;
|
| 186 |
+
align-items: center;
|
| 187 |
+
padding-bottom: 16px;
|
| 188 |
+
border-bottom: 1px solid #e5e7eb;
|
| 189 |
+
margin-bottom: 16px;
|
| 190 |
+
}
|
| 191 |
+
.help-menu-title {
|
| 192 |
+
font-size: 1.2rem;
|
| 193 |
+
font-weight: 600;
|
| 194 |
+
color: #0D3B2E;
|
| 195 |
+
}
|
| 196 |
+
.help-menu-close {
|
| 197 |
+
cursor: pointer;
|
| 198 |
+
color: #6b7280;
|
| 199 |
+
font-size: 1.5rem;
|
| 200 |
+
}
|
| 201 |
+
.help-menu-item {
|
| 202 |
+
padding: 16px 12px;
|
| 203 |
+
cursor: pointer;
|
| 204 |
+
color: #4b5563;
|
| 205 |
+
border-bottom: 1px solid #f3f4f6;
|
| 206 |
+
transition: all 0.2s ease;
|
| 207 |
+
display: flex;
|
| 208 |
+
align-items: center;
|
| 209 |
+
}
|
| 210 |
+
.help-menu-item:hover {
|
| 211 |
+
background-color: #f9fafb;
|
| 212 |
+
color: #0D3B2E;
|
| 213 |
+
}
|
| 214 |
+
.help-menu-item i {
|
| 215 |
+
margin-right: 12px;
|
| 216 |
+
width: 24px;
|
| 217 |
+
text-align: center;
|
| 218 |
+
color: #0D3B2E;
|
| 219 |
+
}
|
| 220 |
+
.help-menu-divider {
|
| 221 |
+
height: 1px;
|
| 222 |
+
background-color: #e5e7eb;
|
| 223 |
+
margin: 12px 0;
|
| 224 |
+
}
|
| 225 |
+
.back-to-chat {
|
| 226 |
+
margin-top: auto;
|
| 227 |
+
padding: 16px;
|
| 228 |
+
background-color: #0D3B2E;
|
| 229 |
+
color: white;
|
| 230 |
+
border-radius: 12px;
|
| 231 |
+
text-align: center;
|
| 232 |
+
font-weight: 500;
|
| 233 |
+
cursor: pointer;
|
| 234 |
+
transition: all 0.2s ease;
|
| 235 |
+
}
|
| 236 |
+
.back-to-chat:hover {
|
| 237 |
+
background-color: #0c3529;
|
| 238 |
+
}
|
| 239 |
+
@keyframes slideUp {
|
| 240 |
+
from { opacity: 0; transform: translateY(20px); }
|
| 241 |
+
to { opacity: 1; transform: translateY(0); }
|
| 242 |
+
}
|
| 243 |
+
/* Custom scrollbar */
|
| 244 |
+
.help-menu::-webkit-scrollbar {
|
| 245 |
+
width: 6px;
|
| 246 |
+
}
|
| 247 |
+
.help-menu::-webkit-scrollbar-track {
|
| 248 |
+
background: #f1f1f1;
|
| 249 |
+
border-radius: 10px;
|
| 250 |
+
}
|
| 251 |
+
.help-menu::-webkit-scrollbar-thumb {
|
| 252 |
+
background: #0D3B2E;
|
| 253 |
+
border-radius: 10px;
|
| 254 |
+
}
|
| 255 |
+
.help-menu::-webkit-scrollbar-thumb:hover {
|
| 256 |
+
background: #0a2e24;
|
| 257 |
+
}
|
| 258 |
+
.powered-by {
|
| 259 |
+
font-size: 0.7rem;
|
| 260 |
+
color: #6b7280;
|
| 261 |
+
text-align: center;
|
| 262 |
+
padding: 8px 0;
|
| 263 |
+
margin-top: auto;
|
| 264 |
+
}
|
| 265 |
+
.powered-by a {
|
| 266 |
+
color: #0D3B2E;
|
| 267 |
+
font-weight: 500;
|
| 268 |
+
text-decoration: none;
|
| 269 |
+
transition: all 0.2s ease;
|
| 270 |
+
}
|
| 271 |
+
.powered-by a:hover {
|
| 272 |
+
color: #0a2e24;
|
| 273 |
+
text-decoration: underline;
|
| 274 |
+
}
|
| 275 |
+
.consecutive-message {
|
| 276 |
+
margin-top: 4px;
|
| 277 |
+
}
|
| 278 |
+
@media (max-width: 640px) {
|
| 279 |
+
#chatLauncher {
|
| 280 |
+
bottom: 16px;
|
| 281 |
+
right: 16px;
|
| 282 |
+
z-index: 1000;
|
| 283 |
+
}
|
| 284 |
+
#chatContainer {
|
| 285 |
+
width: calc(100vw - 32px);
|
| 286 |
+
max-width: 100%;
|
| 287 |
+
right: 16px;
|
| 288 |
+
left: 16px;
|
| 289 |
+
bottom: 80px;
|
| 290 |
+
top: auto;
|
| 291 |
+
height: calc(100vh - 160px);
|
| 292 |
+
max-height: none;
|
| 293 |
+
}
|
| 294 |
+
.quick-reply-btn {
|
| 295 |
+
font-size: 0.7rem;
|
| 296 |
+
padding: 6px 10px;
|
| 297 |
+
}
|
| 298 |
+
.bot-message-bubble, .user-message-bubble {
|
| 299 |
+
max-width: 85%;
|
| 300 |
+
padding: 10px 14px;
|
| 301 |
+
font-size: 14px;
|
| 302 |
+
}
|
| 303 |
+
.help-menu {
|
| 304 |
+
border-radius: 0;
|
| 305 |
+
top: 0;
|
| 306 |
+
}
|
| 307 |
+
}
|
| 308 |
+
</style>
|
| 309 |
+
</head>
|
| 310 |
+
<body class="font-sans">
|
| 311 |
+
<!-- Chat Launcher -->
|
| 312 |
+
<div id="chatLauncher" class="fixed bottom-8 right-8 z-30 cursor-pointer bounce-hover">
|
| 313 |
+
<div class="teardrop">
|
| 314 |
+
<div class="teardrop-inner">
|
| 315 |
+
<img src="https://kynosai.io/wp-content/uploads/2025/05/woman-8451051_1280.webp"
|
| 316 |
+
alt="Linda Grey"
|
| 317 |
+
class="w-full h-full object-cover">
|
| 318 |
+
</div>
|
| 319 |
+
</div>
|
| 320 |
+
</div>
|
| 321 |
+
|
| 322 |
+
<!-- Chat Container -->
|
| 323 |
+
<div id="chatContainer" class="fixed bottom-20 right-8 w-[400px] max-w-[95vw] h-[500px] max-h-[70vh] z-40 hidden">
|
| 324 |
+
<div class="chat-container flex flex-col h-full overflow-hidden">
|
| 325 |
+
<!-- Header -->
|
| 326 |
+
<div class="bg-[#0D3B2E] text-white p-4 flex items-center justify-between rounded-t-[18px] relative">
|
| 327 |
+
<div class="flex items-center space-x-3">
|
| 328 |
+
<img src="https://kynosai.io/wp-content/uploads/2025/05/gold-law-firm-logo-icon-design-creative-template-for-company-vector.webp"
|
| 329 |
+
alt="Linda Grey Law Firm"
|
| 330 |
+
class="w-10 h-10 rounded-full object-cover border-2 border-white">
|
| 331 |
+
<div>
|
| 332 |
+
<h3 class="font-bold">Linda Grey Law Firm</h3>
|
| 333 |
+
<p class="text-xs opacity-80">Justice Assistant</p>
|
| 334 |
+
</div>
|
| 335 |
+
</div>
|
| 336 |
+
<div class="flex items-center space-x-4">
|
| 337 |
+
<button id="helpButton" class="text-white hover:text-gray-200 text-lg">
|
| 338 |
+
<i class="fas fa-question-circle"></i>
|
| 339 |
+
</button>
|
| 340 |
+
<button id="closeChat" class="text-white hover:text-gray-200 text-2xl">×</button>
|
| 341 |
+
</div>
|
| 342 |
+
</div>
|
| 343 |
+
|
| 344 |
+
<!-- Help Menu (full screen) -->
|
| 345 |
+
<div id="helpMenu" class="help-menu">
|
| 346 |
+
<div class="help-menu-header">
|
| 347 |
+
<div class="help-menu-title">Help & Information</div>
|
| 348 |
+
<div id="helpMenuClose" class="help-menu-close">×</div>
|
| 349 |
+
</div>
|
| 350 |
+
|
| 351 |
+
<div class="help-menu-item" onclick="displayHelpOption('email')">
|
| 352 |
+
<i class="fas fa-envelope"></i>
|
| 353 |
+
<div>
|
| 354 |
+
<div class="font-medium">Email Linda Grey</div>
|
| 355 |
+
<div class="text-xs opacity-75">Click to email our firm</div>
|
| 356 |
+
</div>
|
| 357 |
+
</div>
|
| 358 |
+
|
| 359 |
+
<div class="help-menu-item" onclick="displayHelpOption('services')">
|
| 360 |
+
<i class="fas fa-gavel"></i>
|
| 361 |
+
<div class="font-medium">Services</div>
|
| 362 |
+
</div>
|
| 363 |
+
|
| 364 |
+
<div class="help-menu-item" onclick="displayHelpOption('location')">
|
| 365 |
+
<i class="fas fa-map-marker-alt"></i>
|
| 366 |
+
<div class="font-medium">Location</div>
|
| 367 |
+
</div>
|
| 368 |
+
|
| 369 |
+
<div class="help-menu-divider"></div>
|
| 370 |
+
|
| 371 |
+
<div class="help-menu-item" onclick="displayHelpOption('faq')">
|
| 372 |
+
<i class="fas fa-question-circle"></i>
|
| 373 |
+
<div class="font-medium">FAQ</div>
|
| 374 |
+
</div>
|
| 375 |
+
|
| 376 |
+
<div class="help-menu-item" onclick="displayHelpOption('contact')">
|
| 377 |
+
<i class="fas fa-phone-alt"></i>
|
| 378 |
+
<div class="font-medium">Contact</div>
|
| 379 |
+
</div>
|
| 380 |
+
|
| 381 |
+
<div class="powered-by">
|
| 382 |
+
Powered by <a href="https://kynosai.io" target="_blank">Kynos AI</a>
|
| 383 |
+
</div>
|
| 384 |
+
|
| 385 |
+
<div class="back-to-chat" id="backToChat">
|
| 386 |
+
Return to Chat
|
| 387 |
+
</div>
|
| 388 |
+
</div>
|
| 389 |
+
|
| 390 |
+
<!-- Chat Messages -->
|
| 391 |
+
<div id="chatMessages" class="flex-1 p-4 overflow-y-auto bg-white/90 space-y-3">
|
| 392 |
+
<!-- Initial bot message -->
|
| 393 |
+
<div class="flex flex-col mb-2 message-fade-in message-container">
|
| 394 |
+
<div class="flex">
|
| 395 |
+
<div class="flex-shrink-0 mr-1">
|
| 396 |
+
<img src="https://kynosai.io/wp-content/uploads/2025/05/gold-law-firm-logo-icon-design-creative-template-for-company-vector.webp"
|
| 397 |
+
alt="Linda Grey Law Firm"
|
| 398 |
+
class="w-6 h-6 rounded-full object-cover border border-gray-200">
|
| 399 |
+
</div>
|
| 400 |
+
<div>
|
| 401 |
+
<div class="bot-message-bubble whitespace-pre-line">
|
| 402 |
+
<p>Hi π I'm Linda Grey, How can I help you today?</p>
|
| 403 |
+
</div>
|
| 404 |
+
<div class="feedback-buttons flex space-x-2">
|
| 405 |
+
<button class="feedback-button thumbs-up text-gray-400"
|
| 406 |
+
onclick="handleFeedback(this, 'thumbs-up', 'bot-1')">
|
| 407 |
+
<i class="fas fa-thumbs-up text-xs"></i>
|
| 408 |
+
</button>
|
| 409 |
+
<button class="feedback-button thumbs-down text-gray-400"
|
| 410 |
+
onclick="handleFeedback(this, 'thumbs-down', 'bot-1')">
|
| 411 |
+
<i class="fas fa-thumbs-down text-xs"></i>
|
| 412 |
+
</button>
|
| 413 |
+
</div>
|
| 414 |
+
</div>
|
| 415 |
+
</div>
|
| 416 |
+
<div class="timestamp ml-10">
|
| 417 |
+
<i class="far fa-clock"></i> Just now
|
| 418 |
+
</div>
|
| 419 |
+
</div>
|
| 420 |
+
</div>
|
| 421 |
+
|
| 422 |
+
<!-- Quick Reply Buttons -->
|
| 423 |
+
<div id="quickReplies" class="px-4 pb-2 bg-white/90">
|
| 424 |
+
<div class="flex gap-2 overflow-x-auto py-1">
|
| 425 |
+
<button class="quick-reply-btn bg-gray-100 hover:bg-gray-200 text-[#0D3B2E] rounded-full border border-gray-300 transition">
|
| 426 |
+
π
Book appointment
|
| 427 |
+
</button>
|
| 428 |
+
<button class="quick-reply-btn bg-gray-100 hover:bg-gray-200 text-[#0D3B2E] rounded-full border border-gray-300 transition">
|
| 429 |
+
βοΈ Legal advice
|
| 430 |
+
</button>
|
| 431 |
+
<button class="quick-reply-btn bg-gray-100 hover:bg-gray-200 text-[#0D3B2E] rounded-full border border-gray-300 transition">
|
| 432 |
+
π©βπΌ Talk to Linda
|
| 433 |
+
</button>
|
| 434 |
+
</div>
|
| 435 |
+
</div>
|
| 436 |
+
|
| 437 |
+
<!-- Input Area -->
|
| 438 |
+
<div class="p-3 border-t border-gray-200 bg-white rounded-b-[18px]">
|
| 439 |
+
<div class="relative">
|
| 440 |
+
<input id="userInput"
|
| 441 |
+
type="text"
|
| 442 |
+
placeholder="Type your message..."
|
| 443 |
+
class="w-full p-2 pr-12 rounded-full border border-gray-300 focus:outline-none focus:ring-2 focus:ring-[#0D3B2E] focus:border-transparent text-sm">
|
| 444 |
+
<button id="sendButton" class="absolute right-2 top-1/2 transform -translate-y-1/2 text-[#0D3B2E] hover:text-opacity-80 font-medium text-xs md:text-sm">
|
| 445 |
+
Send
|
| 446 |
+
</button>
|
| 447 |
+
</div>
|
| 448 |
+
</div>
|
| 449 |
+
|
| 450 |
+
<!-- Powered by footer -->
|
| 451 |
+
<div class="powered-by">
|
| 452 |
+
Powered by <a href="https://kynosai.io" target="_blank">Kynos AI</a>
|
| 453 |
+
</div>
|
| 454 |
+
</div>
|
| 455 |
+
</div>
|
| 456 |
+
|
| 457 |
+
<script>
|
| 458 |
+
// Track feedback for messages
|
| 459 |
+
const feedbackMap = new Map();
|
| 460 |
+
const votedMessages = new Set();
|
| 461 |
+
let messageCounter = 1;
|
| 462 |
+
let helpMenuOpen = false;
|
| 463 |
+
let currentFeedbackAllowed = true;
|
| 464 |
+
let lastSender = null;
|
| 465 |
+
|
| 466 |
+
document.addEventListener('DOMContentLoaded', function() {
|
| 467 |
+
const chatLauncher = document.getElementById('chatLauncher');
|
| 468 |
+
const chatContainer = document.getElementById('chatContainer');
|
| 469 |
+
const quickReplies = document.getElementById('quickReplies');
|
| 470 |
+
const chatMessages = document.getElementById('chatMessages');
|
| 471 |
+
const helpButton = document.getElementById('helpButton');
|
| 472 |
+
const helpMenu = document.getElementById('helpMenu');
|
| 473 |
+
const helpMenuClose = document.getElementById('helpMenuClose');
|
| 474 |
+
const backToChat = document.getElementById('backToChat');
|
| 475 |
+
|
| 476 |
+
// Initial check for mobile
|
| 477 |
+
checkMobileView();
|
| 478 |
+
|
| 479 |
+
// Toggle chat visibility
|
| 480 |
+
chatLauncher.addEventListener('click', toggleChat);
|
| 481 |
+
|
| 482 |
+
// Close chat button
|
| 483 |
+
document.getElementById('closeChat').addEventListener('click', closeChat);
|
| 484 |
+
|
| 485 |
+
// Send message button
|
| 486 |
+
document.getElementById('sendButton').addEventListener('click', sendMessage);
|
| 487 |
+
|
| 488 |
+
// Quick reply buttons
|
| 489 |
+
document.querySelectorAll('.quick-reply-btn').forEach(button => {
|
| 490 |
+
button.addEventListener('click', function() {
|
| 491 |
+
const message = this.textContent.trim();
|
| 492 |
+
addMessageToChat(message, 'user');
|
| 493 |
+
// Reset feedback allowance on new user message
|
| 494 |
+
currentFeedbackAllowed = true;
|
| 495 |
+
processQuickReply(message);
|
| 496 |
+
});
|
| 497 |
+
});
|
| 498 |
+
|
| 499 |
+
// Handle Enter key for input
|
| 500 |
+
document.getElementById('userInput').addEventListener('keypress', function(e) {
|
| 501 |
+
if (e.key === 'Enter') sendMessage();
|
| 502 |
+
});
|
| 503 |
+
|
| 504 |
+
// Help menu toggle
|
| 505 |
+
helpButton.addEventListener('click', toggleHelpMenu);
|
| 506 |
+
|
| 507 |
+
// Help menu close button
|
| 508 |
+
helpMenuClose.addEventListener('click', closeHelpMenu);
|
| 509 |
+
|
| 510 |
+
// Back to chat button
|
| 511 |
+
backToChat.addEventListener('click', closeHelpMenu);
|
| 512 |
+
|
| 513 |
+
function toggleChat() {
|
| 514 |
+
if (chatContainer.classList.contains('hidden')) {
|
| 515 |
+
chatContainer.classList.remove('hidden');
|
| 516 |
+
checkMobileView();
|
| 517 |
+
closeHelpMenu(); // Ensure help menu is closed when chat opens
|
| 518 |
+
} else {
|
| 519 |
+
closeChat();
|
| 520 |
+
}
|
| 521 |
+
}
|
| 522 |
+
|
| 523 |
+
function closeChat() {
|
| 524 |
+
chatContainer.classList.add('hidden');
|
| 525 |
+
closeHelpMenu();
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
function toggleHelpMenu() {
|
| 529 |
+
if (helpMenuOpen) {
|
| 530 |
+
closeHelpMenu();
|
| 531 |
+
} else {
|
| 532 |
+
openHelpMenu();
|
| 533 |
+
}
|
| 534 |
+
}
|
| 535 |
+
|
| 536 |
+
function openHelpMenu() {
|
| 537 |
+
helpMenu.classList.add('show');
|
| 538 |
+
helpMenuOpen = true;
|
| 539 |
+
// Hide other UI elements
|
| 540 |
+
document.getElementById('chatMessages').style.display = 'none';
|
| 541 |
+
document.getElementById('quickReplies').style.display = 'none';
|
| 542 |
+
document.getElementById('userInput').parentElement.style.display = 'none';
|
| 543 |
+
document.querySelector('.powered-by').style.display = 'none';
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
function closeHelpMenu() {
|
| 547 |
+
helpMenu.classList.remove('show');
|
| 548 |
+
helpMenuOpen = false;
|
| 549 |
+
// Show other UI elements
|
| 550 |
+
document.getElementById('chatMessages').style.display = 'block';
|
| 551 |
+
document.getElementById('quickReplies').style.display = 'block';
|
| 552 |
+
document.getElementById('userInput').parentElement.style.display = 'block';
|
| 553 |
+
document.querySelector('.powered-by').style.display = 'block';
|
| 554 |
+
}
|
| 555 |
+
|
| 556 |
+
function checkMobileView() {
|
| 557 |
+
// Adjust layout for mobile
|
| 558 |
+
if (window.innerWidth <= 640) {
|
| 559 |
+
chatContainer.style.width = 'calc(100vw - 32px)';
|
| 560 |
+
chatContainer.style.left = '16px';
|
| 561 |
+
chatContainer.style.right = '16px';
|
| 562 |
+
chatContainer.style.bottom = '80px';
|
| 563 |
+
chatContainer.style.top = 'auto';
|
| 564 |
+
chatContainer.style.height = 'calc(100vh - 160px)';
|
| 565 |
+
chatContainer.style.maxHeight = 'none';
|
| 566 |
+
} else {
|
| 567 |
+
// Reset desktop styles
|
| 568 |
+
chatContainer.style.width = '400px';
|
| 569 |
+
chatContainer.style.right = '32px';
|
| 570 |
+
chatContainer.style.bottom = '90px';
|
| 571 |
+
chatContainer.style.left = 'auto';
|
| 572 |
+
chatContainer.style.height = '500px';
|
| 573 |
+
chatContainer.style.maxHeight = '90vh';
|
| 574 |
+
}
|
| 575 |
+
}
|
| 576 |
+
|
| 577 |
+
function sendMessage() {
|
| 578 |
+
const inputField = document.getElementById('userInput');
|
| 579 |
+
const message = inputField.value.trim();
|
| 580 |
+
|
| 581 |
+
if (message) {
|
| 582 |
+
if (helpMenuOpen) {
|
| 583 |
+
// If help menu is open, close it first
|
| 584 |
+
closeHelpMenu();
|
| 585 |
+
}
|
| 586 |
+
|
| 587 |
+
addMessageToChat(message, 'user');
|
| 588 |
+
// Reset feedback allowance on new user message
|
| 589 |
+
currentFeedbackAllowed = true;
|
| 590 |
+
|
| 591 |
+
// Clear input
|
| 592 |
+
inputField.value = '';
|
| 593 |
+
|
| 594 |
+
// Process message
|
| 595 |
+
setTimeout(() => {
|
| 596 |
+
processQuickReply(message);
|
| 597 |
+
}, 500);
|
| 598 |
+
}
|
| 599 |
+
inputField.focus();
|
| 600 |
+
}
|
| 601 |
+
|
| 602 |
+
function showTypingIndicator() {
|
| 603 |
+
const typingDiv = document.createElement('div');
|
| 604 |
+
typingDiv.id = 'typingIndicator';
|
| 605 |
+
typingDiv.classList.add('flex', 'mb-2', 'message-fade-in');
|
| 606 |
+
|
| 607 |
+
typingDiv.innerHTML = `
|
| 608 |
+
<div class="flex-shrink-0 mr-1">
|
| 609 |
+
<img src="https://kynosai.io/wp-content/uploads/2025/05/gold-law-firm-logo-icon-design-creative-template-for-company-vector.webp"
|
| 610 |
+
alt="Linda Grey Law Firm"
|
| 611 |
+
class="w-6 h-6 rounded-full object-cover border border-gray-200">
|
| 612 |
+
</div>
|
| 613 |
+
<div>
|
| 614 |
+
<div class="bot-message-bubble">
|
| 615 |
+
<div class="typing-indicator">
|
| 616 |
+
<div class="typing-dot"></div>
|
| 617 |
+
<div class="typing-dot"></div>
|
| 618 |
+
<div class="typing-dot"></div>
|
| 619 |
+
</div>
|
| 620 |
+
</div>
|
| 621 |
+
</div>
|
| 622 |
+
`;
|
| 623 |
+
|
| 624 |
+
chatMessages.appendChild(typingDiv);
|
| 625 |
+
scrollToBottom();
|
| 626 |
+
}
|
| 627 |
+
|
| 628 |
+
function removeTypingIndicator() {
|
| 629 |
+
const typingIndicator = document.getElementById('typingIndicator');
|
| 630 |
+
if (typingIndicator) {
|
| 631 |
+
typingIndicator.remove();
|
| 632 |
+
}
|
| 633 |
+
}
|
| 634 |
+
|
| 635 |
+
function processQuickReply(message) {
|
| 636 |
+
message = message.toLowerCase();
|
| 637 |
+
let botResponse = "";
|
| 638 |
+
|
| 639 |
+
showTypingIndicator();
|
| 640 |
+
|
| 641 |
+
if (message.includes('book') || message.includes('appointment') || message.includes('π
')) {
|
| 642 |
+
botResponse = "π
Our team is ready to assist you with your legal needs. Please provide your contact details and preferred appointment date.";
|
| 643 |
+
} else if (message.includes('legal') || message.includes('advice') || message.includes('βοΈ')) {
|
| 644 |
+
botResponse = "βοΈ We can help with various legal matters:\n\nβ’ Family Law\nβ’ Business Law\nβ’ Real Estate\nβ’ Criminal Defense\n\nWhat specific area are you inquiring about?";
|
| 645 |
+
} else if (message.includes('linda') || message.includes('grey') || message.includes('talk') || message.includes('π©βπΌ')) {
|
| 646 |
+
botResponse = "π©βπΌ Linda Grey will respond to your inquiry shortly. Please share:\n\n1. Your contact information\n2. The nature of your request\n3. Any relevant documents";
|
| 647 |
+
} else if (message.includes('help') || message.includes('faq') || message.includes('support')) {
|
| 648 |
+
displayHelpOption('faq');
|
| 649 |
+
removeTypingIndicator();
|
| 650 |
+
return;
|
| 651 |
+
} else if (message.includes('contact') || message.includes('phone') || message.includes('email')) {
|
| 652 |
+
displayHelpOption('contact');
|
| 653 |
+
removeTypingIndicator();
|
| 654 |
+
return;
|
| 655 |
+
} else {
|
| 656 |
+
botResponse = "Thank you for your message. How can we assist you today? \n\nPlease select an option or ask your legal question directly.";
|
| 657 |
+
}
|
| 658 |
+
|
| 659 |
+
setTimeout(() => {
|
| 660 |
+
removeTypingIndicator();
|
| 661 |
+
addMessageToChat(botResponse, 'bot');
|
| 662 |
+
}, 1500);
|
| 663 |
+
}
|
| 664 |
+
|
| 665 |
+
function displayHelpOption(option) {
|
| 666 |
+
let helpMessage = "";
|
| 667 |
+
|
| 668 |
+
switch(option) {
|
| 669 |
+
case 'email':
|
| 670 |
+
window.open('mailto:info@lindagrey.com', '_blank');
|
| 671 |
+
helpMessage = "βοΈ Your email client should open with our address pre-filled. If it doesn't, you can email us at info@lindagrey.com";
|
| 672 |
+
break;
|
| 673 |
+
case 'services':
|
| 674 |
+
helpMessage = "βοΈ Our Legal Services:\n\nβ’ Civil Litigation\nβ’ Family Law\nβ’ Estate Planning\nβ’ Business Law\nβ’ Real Estate\nβ’ Employment Law\nβ’ Personal Injury\n\nWould you like more details about any of these services?";
|
| 675 |
+
break;
|
| 676 |
+
case 'location':
|
| 677 |
+
helpMessage = "π Our Office Location:\n\nπ’ Linda Grey Law Firm\n123 Justice Avenue, Suite 500\nLegal City, LC 12345\n\nMap: https://maps.google.com/lindagreylaw\n\nπ
ΏοΈ Free parking available in the rear.\n\nβ° Hours:\nMon-Fri: 9am-5pm\nSat: By appointment";
|
| 678 |
+
break;
|
| 679 |
+
case 'faq':
|
| 680 |
+
helpMessage = "β Frequently Asked Questions:\n\n1. How do I book a consultation?\n β Click 'Book appointment' or request via chat\n\n2. What are your office hours?\n β Mon-Fri: 9am-5pm | Sat: 10am-2pm\n\n3. Do you offer free consultations?\n β Yes, 30-minute initial consultations are free";
|
| 681 |
+
break;
|
| 682 |
+
case 'contact':
|
| 683 |
+
helpMessage = "π Contact Information:\n\nβ’ Phone: +1 (555) 123-4567\nβ’ Email: info@lindagreylaw.com\nβ’ Address: 123 Justice Ave, Suite 500\n\nβ° Office hours: Mon-Fri 9am-5pm";
|
| 684 |
+
break;
|
| 685 |
+
default:
|
| 686 |
+
helpMessage = "How can we help you today? Please select from the menu options.";
|
| 687 |
+
}
|
| 688 |
+
|
| 689 |
+
// Close help menu
|
| 690 |
+
closeHelpMenu();
|
| 691 |
+
|
| 692 |
+
// Add help message to chat
|
| 693 |
+
addMessageToChat(help
|
| 694 |
+
</html>
|
prompts.txt
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
### β
**Final Prompt β Fully Deployable Chatbot Widget for Jude Law Firm (Embed via iframe)** π― **Build and deploy a fully styled floating chatbot widget for a legal consulting firm called *Jude Law Firm*.** --- ### π¬ **Widget Requirements:** #### π’ **1. Floating Chatbot Launcher Icon** * Shape: **Teardrop or speech-bubble**, pointing downward (like a chat balloon or map pin) * Size: **120Γ120px** (PNG or styled div) * Background: Flat color (e.g., royal blue `#0056A0`) * Image: Center a **circular profile photo** from this URL: `https://rosieconsult.com.au/wp-content/uploads/2024/11/cropped-70eb60b8-74cd-4be5-a4e0-278f7d8e2dec.webp` * Style: * Smooth rounded edges * Soft inner and outer shadow for depth * Subtle **bounce animation on hover** * Position: **Fixed at bottom-right corner** * On click: Opens the full chat interface --- #### π¨οΈ **2. Full Chat Window** * Clean, modern UI with soft shadows or light glassmorphism style * Header section: * Same profile image as launcher * Title: **Jude Law Firm** * Close button (`Γ`) on top right --- #### π€ **3. Chat Functionality** * Preloaded bot greeting: > *βHi π Iβm Barrister Jude! How can I help you today?β* * Typing indicator: > *βJude is typingβ¦β* (small, italic, grey) * Message alignment: * Bot: Left * User: Right * Timestamps shown below each message in light grey, small text --- #### β‘ **4. Quick Reply Buttons** * π
**Book Appointment** * π©βπΌ **Talk to an Agent** * If user types or clicks βTalk to a Humanβ, bot replies: > *βSure, one of our support agents will join shortly. πββοΈβ* --- #### β¨οΈ **5. Chat Input Area** * Rounded text input with placeholder: > *βType your message...β* * **Send button** inside the input field, styled cleanly (like the provided reference) --- #### β±οΈ **6. Inactivity Trigger** * After **60 seconds** of no user input, auto-send: > *βAre you still there? Let me know if you need anything else.β* --- #### π **7. Feedback Buttons** * Show after each bot response * Include: **π** and **π** * Style: Light grey with soft shadow and hover effect --- #### π§ **8. Footer** * Below the input field: > *βPowered by Kynos AIβ* (small, muted text) --- ### π **Deployment & Backend Integration** * **Host the widget** and provide a live public URL ready to be embedded using an `<iframe>` * Add a **placeholder for future API integration**, using this mock POST URL: ``` https://your-n8n-url-here.com/webhook/chatbot ``` * Format the POST request as: ```json { "message": "User's message", "session_id": "unique-id", "timestamp": "ISO timestamp" } ``` * Expect response format: ```json { "reply": "Bot response" } ``` * Ensure the API URL is **easy to replace** later when the real backend is ready --- ### π§© Output: * Fully styled and responsive chatbot widget * Hosted and deployed with a live link * Embed-ready using: ```html <iframe src="YOUR_DEPLOYED_CHATBOT_URL" width="400" height="600" style="border: none; position: fixed; bottom: 20px; right: 20px; z-index: 9999; border-radius: 12px; box-shadow: 0 5px 15px rgba(0,0,0,0.2);"></iframe> ``` β
Deployment & Backend Integration Prompt (for builder or AI tool) π Deploy this chatbot widget and make it iframe-embeddable. Host the widget and provide a public URL that can be embedded on external websites. Ensure it is responsive and optimized for desktop and mobile. The final output should be embeddable using this format: <iframe src="YOUR_DEPLOYED_CHATBOT_URL" width="400" height="600" style="border: none; position: fixed; bottom: 20px; right: 20px; z-index: 9999; border-radius: 12px; box-shadow: 0 5px 15px rgba(0,0,0,0.2);"></iframe> π» Include a placeholder for the chatbot backend API (for future integration): Set the backend API endpoint as: https://your-n8n-url-here.com/webhook/chatbot When the user sends a message, make a POST request to that URL with { "message": "User's message", "session_id": "unique-id", "timestamp": "ISO timestamp" } Expect a reply in this format: { "reply": "Bot response" } Ensure the API URL is clearly defined in the code and easy to replace later.
|
| 2 |
+
chatbot is not opening. fix it
|
| 3 |
+
chatbot is not opening. fix it
|
| 4 |
+
chatbot is not opening. fix it
|
| 5 |
+
reduce the size of the launcher to properly fit
|
| 6 |
+
further reduce launcher to properly fit and let the tear drop face left side. make bot container size H500px . make bot color navy green .3 ewplace send icon with send word at same place . 4. add Legal Advice to Book appointment and Talk to agent and make their background navy blue 5. round the edges of the bot and give unique and appealling styling
|
| 7 |
+
bot is not opening again. fix all changes without breaking the bot
|
| 8 |
+
bot is not opening again. fix all changes without breaking the bot
|
| 9 |
+
bot is not opening again. fix all changes without breaking the bot
|
| 10 |
+
bot is not opening again. fix all changes without breaking the bot
|
| 11 |
+
bot is not opening again. fix all changes without breaking the bot
|
| 12 |
+
1.remove the quick reply btn background . make bot color navy green . 3 tilt teardrop a little to the right downwards 4. reduce sizes book appointment, legal advice and talk to agent to properly align horizontally 5. make bot mobile responsive. fix all without breaking bot
|
| 13 |
+
1. remove the green line from booke appointment, talk to agent and legal advice 2. make launcher rest below chat container when opened
|
| 14 |
+
1. tilt teardrop to bottom left like 6:35 position on the clock . 2. remove the green background from the book appointment, legal advice and talk to agent 3. change bot name to Linda Grey Law Firm and Justice Assistant beneath it
|
| 15 |
+
1. make user use feedback-vote ones per message and not vote twice on same message. 2. make teardrop face bottom right corner 3. there is a green interface beneath book appointment, legal advice and talk to agent, remove it and let thet items have the conteiner background
|
| 16 |
+
1. reduce the sizes of book appointment, legal advice and talk to agent to properly fit and align horizontally. there is enough space for that. make bot size W440px H500 on desktop and make it mobile responsive. add help menu close to (x) button and add these items: Email Linda Grey , Privacy Policy, Services, FAQ , Location and return to chat at the bottom and make them clickable. use info@lindagrey.com for email. and add animation to help menu items on hover
|
| 17 |
+
there is enough space for book appointment, legal advice and change talk to agent to talk to Grey. so make write them in full and style them ti fit. use https://kynosai.io for Kynos ai 4. use this for launcher image(https://kynosai.io/wp-content/uploads/2025/05/woman-8451051_1280-removebg-preview.webp) and this for logo (https://kynosai.io/wp-content/uploads/2025/05/gold-law-firm-logo-icon-design-creative-template-for-company-vector-removebg-preview.webp). fix all without breaking bot
|
| 18 |
+
1. change launcher image to this (https://kynosai.io/wp-content/uploads/2025/05/woman-8451051_1280.webp) and logo to this (https://kynosai.io/wp-content/uploads/2025/05/gold-law-firm-logo-icon-design-creative-template-for-company-vector.webp 2. give proper padding to quick reply btn to properly fit on all screens) . 3. use https://kynosai.io for powered by kynos ai
|
| 19 |
+
1. reduce the sizes of book appointment , legal advice and talk to linda and style them to fit on all screen sizes.
|
| 20 |
+
1. remove cases and firm from quick reply button 3. ### π **Deployment & Backend Integration** * **Host the widget** and provide a live public URL ready to be embedded using an `<iframe>` * Add a **placeholder for future API integration**, using this mock POST URL: ``` endpoint https://your-n8n-url-here.com/webhook/chatbot feedback-vote https://your-n8n-url-here.com/webhook/chatbot ``` * Format the POST request as: ```json { "message": "User's message", "session_id": "unique-id", "timestamp": "ISO timestamp" } ``` * Expect response format: ```json { "reply": "Bot response" } ``` * Ensure the API URL is **easy to replace** later when the real backend is ready --- ### π§© Output: * Fully styled and responsive chatbot widget * Hosted and deployed with a live link * Embed-ready using: ```html <iframe src="YOUR_DEPLOYED_CHATBOT_URL" width="400" height="600" style="border: none; position: fixed; bottom: 20px; right: 20px; z-index: 9999; border-radius: 12px; box-shadow: 0 5px 15px rgba(0,0,0,0.2);"></iframe> ```
|
| 21 |
+
write book appointment , legal advice and talk to linda in full. reduce sizes to properlly fit to all screen sizes
|
| 22 |
+
please follow instructions 1. only write book appointment , legal advice , talk to Grey . 2. the text box hides at bottom of screen when opened on mobile view. fix this and dont do any unauthorized changes
|
| 23 |
+
make bot responsive
|
| 24 |
+
1. mobile text box is separated from the chat container fix it 2. remove all these from welcome message to Hi π I'm Linda Grey, How can i help you today 3. remove Hi π I'm Justice Assistant! You can: π
Book appointment βοΈ Legal advice π©βπΌ Talk to Linda How can I help you today? from bot response 4. restore previous user bubble style
|
| 25 |
+
1. restore feedback-vote 2. reduce sizes of bot and user bubble and give appropriate and appealling styling
|
| 26 |
+
make user only vote ones per message 2. restore timestamp .3 reduce height of user buuble and give proper stling
|
| 27 |
+
resotre the help menu and dont make any unauthorized changes or adjustment
|
| 28 |
+
use this (?) for the help menu icon and add these items: Email Linda Grey(info@lindagrey.com) , services , location and return to chat at the bottom. make it a real menu to fill the screen when opened and make it responsive
|
| 29 |
+
none of the menu items are clickable, make them clickable. remove the info@lindagrey.com from email linda grey and make it link clickable in real world. use these: Services , FAQ, contact , location . 2 reduce scroller size 3. return to chat does not work . fix all
|
| 30 |
+
make feedback-vote be used ones per message and after user votes,they can vote agin till next message 2. reduce the height of the user bubble and increase width a little and properly style it
|
| 31 |
+
restore Powered by Kynos ai and link to https://kynosai.io 2. ### π¬ Prompt to Style Chat Bubbles ``` Style my chatbot message bubbles with the following: β
**Bot Messages (Left-aligned):** - Background: `#f9fafb` (light grey ) - Text: `#111827` (very dark grey) - Border-radius: `16px` - Padding: `12px 16px` - Max-width: `80%` - Font-size: `15px` - Add subtle shadow: `0 1px 4px rgba(0,0,0,0.05)` - Timestamp: below message in small `#6b7280` text β
**User Messages (Right-aligned):** - Background: `#0D3B2E` (deep green brand color) - Text: `#ffffff` - Border-radius: `16px` - Padding: `12px 16px` - Max-width: `80%` - Font-weight: `bold` - Add emoji support - Align timestamp neatly under message, right-aligned π‘ Animate new messages with a slight fade-in (`fadeIn 0.3s ease`). Make sure it works responsively across mobile and desktop. Ensure consistent padding between bubbles and adjust spacing when consecutive messages come from the same sender.
|