PluginProbe
AI Builder – Generate pages, blocks, images & translate with AI / trunk
AI Builder – Generate pages, blocks, images & translate with AI vtrunk
2.7.9 2.7.8 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.3.10 2.3.11 All 121 releases
ai-builder / assets / css / chat-widget.css

chat-widget.css in AI Builder – Generate pages, blocks, images & translate with AI trunk, at assets/css/chat-widget.css

313 lines 5.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 #chat-toggle {
2 position: fixed;
3 bottom: 40px;
4 left: 20px;
5 background: linear-gradient(135deg, #1d4ed8 0%, #0ea5e9 100%);
6 color: white;
7 padding: 12px 20px;
8 border-radius: 25px;
9 cursor: pointer;
10 z-index: 9999;
11 font-weight: 600;
12 font-size: 14px;
13 box-shadow: 0 4px 15px rgba(29, 78, 216, 0.35);
14 transition: all 0.3s ease;
15 border: none;
16 width: fit-content;
17 display: inline-block;
18 white-space: nowrap;
19 }
20
21 #chat-toggle:hover {
22 transform: translateY(-2px);
23 box-shadow: 0 6px 20px rgba(29, 78, 216, 0.5);
24 }
25
26 /* Effet visuel de chargement sur le toggle */
27 #chat-toggle.generating {
28 position: fixed;
29 animation: toggle-pulse 1.5s ease-in-out infinite;
30 box-shadow: 0 4px 15px rgba(29, 78, 216, 0.35),
31 0 0 20px rgba(14, 165, 233, 0.45),
32 0 0 40px rgba(29, 78, 216, 0.3);
33 transform-origin: left bottom;
34 }
35
36 @keyframes toggle-pulse {
37
38 0%,
39 100% {
40 transform: scale(1);
41 box-shadow: 0 4px 15px rgba(29, 78, 216, 0.35),
42 0 0 20px rgba(14, 165, 233, 0.45),
43 0 0 40px rgba(29, 78, 216, 0.3);
44 }
45
46 50% {
47 transform: scale(1.05);
48 box-shadow: 0 4px 15px rgba(29, 78, 216, 0.35),
49 0 0 30px rgba(14, 165, 233, 0.65),
50 0 0 60px rgba(29, 78, 216, 0.45);
51 }
52 }
53
54 #chat-box {
55 position: fixed;
56 bottom: 120px;
57 left: 20px;
58 width: 450px;
59 height: 550px;
60 background: white;
61 border: none;
62 border-radius: 20px;
63 display: none;
64 flex-direction: column;
65 z-index: 9999;
66 box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
67 overflow: hidden;
68 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
69 animation: slideIn 0.3s ease;
70 }
71
72 #chat-header {
73 background: linear-gradient(135deg, #1d4ed8 0%, #0ea5e9 100%);
74 color: white;
75 padding: 20px;
76 text-align: center;
77 }
78
79 #chat-header h3 {
80 margin: 0 0 8px 0;
81 font-size: 18px;
82 font-weight: 600;
83 color: white;
84 }
85
86 #chat-header .warning-text {
87 margin: 0;
88 font-size: 12px;
89 opacity: 0.9;
90 line-height: 1.4;
91 color: white;
92 }
93
94 #chat-messages {
95 flex: 1;
96 padding: 20px;
97 overflow-y: auto;
98 font-size: 14px;
99 background: #f8f9fa;
100 }
101
102 #chat-messages .user-message {
103 background: #e3f2fd;
104 padding: 12px 16px;
105 border-radius: 18px;
106 margin-bottom: 12px;
107 border-bottom-left-radius: 4px;
108 max-width: 90%;
109 margin-left: auto;
110 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
111 line-height: 1.4;
112 min-height: 44px;
113 display: flex;
114 align-items: center;
115 }
116
117 #chat-messages .ai-message {
118 background: white;
119 padding: 12px 16px;
120 border-radius: 18px;
121 margin-bottom: 12px;
122 border-bottom-right-radius: 4px;
123 max-width: 90%;
124 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
125 border-left: 3px solid #4caf50;
126 line-height: 1.5;
127 min-height: 44px;
128 display: block;
129 text-align: left;
130 }
131
132 /* Corps du message IA (markdown léger → HTML) : pas de flex multi-colonnes */
133 #chat-messages .ai-message .ai-message-body {
134 display: block;
135 width: 100%;
136 text-align: left;
137 word-wrap: break-word;
138 overflow-wrap: break-word;
139 column-count: 1;
140 }
141
142 #chat-messages .ai-message .ai-message-body strong {
143 font-weight: 600;
144 margin-right: 0;
145 }
146
147 #chat-messages .ai-message.error {
148 border-left-color: #f44336;
149 background: #ffebee;
150 }
151
152 #chat-messages .user-message strong {
153 margin-right: 8px;
154 }
155
156 #chat-messages .ai-message strong {
157 margin-right: 8px;
158 }
159
160 #chat-input {
161 border-top: 1px solid #e0e0e0;
162 display: flex;
163 padding: 15px;
164 background: white;
165 gap: 8px;
166 }
167
168 #chat-input textarea {
169 flex: 1;
170 border: 2px solid #e0e0e0;
171 border-radius: 15px;
172 padding: 12px 16px;
173 font-size: 14px;
174 outline: none;
175 transition: border-color 0.3s ease;
176 resize: none;
177 font-family: inherit;
178 line-height: 1.4;
179 min-height: 60px;
180 max-height: 120px;
181 }
182
183 #chat-input textarea:focus {
184 border-color: #2563eb;
185 }
186
187 #chat-input textarea::placeholder {
188 color: #999;
189 font-style: italic;
190 }
191
192 #chat-input button {
193 background: linear-gradient(135deg, #1d4ed8 0%, #0ea5e9 100%);
194 color: white;
195 border: none;
196 padding: 12px 20px;
197 border-radius: 25px;
198 cursor: pointer;
199 font-weight: 600;
200 font-size: 14px;
201 transition: all 0.3s ease;
202 min-width: 80px;
203 }
204
205 #chat-input button:hover:not(:disabled) {
206 transform: translateY(-1px);
207 box-shadow: 0 4px 12px rgba(29, 78, 216, 0.35);
208 }
209
210 #chat-input button:disabled {
211 opacity: 0.6;
212 cursor: not-allowed;
213 transform: none;
214 }
215
216 #chat-input button.loading {
217 position: relative;
218 cursor: wait;
219 opacity: 0.9;
220 font-size: 0px;
221 /* Cache le texte original du bouton */
222 }
223
224 /* Libellé visible pendant le chargement */
225 #chat-input button.loading::before {
226 content: 'Generating…';
227 color: #fff;
228 font-size: 14px;
229 /* Restaure la taille de police */
230 padding-right: 12px;
231 }
232
233 /* Spinner moderne à droite du bouton */
234 #chat-input button.loading::after {
235 content: '';
236 position: absolute;
237 right: 8px;
238 top: 50%;
239 width: 14px;
240 height: 14px;
241 margin-top: -7px;
242 border-radius: 50%;
243 border: 2px solid rgba(255, 255, 255, 0.6);
244 border-top-color: #ffffff;
245 animation: chat-spin 0.7s linear infinite;
246 }
247
248 #chat-undo {
249 background: #f44336 !important;
250 min-width: 60px;
251 }
252
253 #chat-undo:hover {
254 background: #d32f2f !important;
255 }
256
257 /* Scrollbar personnalisée */
258 #chat-messages::-webkit-scrollbar {
259 width: 6px;
260 }
261
262 #chat-messages::-webkit-scrollbar-track {
263 background: #f1f1f1;
264 border-radius: 3px;
265 }
266
267 #chat-messages::-webkit-scrollbar-thumb {
268 background: #c1c1c1;
269 border-radius: 3px;
270 }
271
272 #chat-messages::-webkit-scrollbar-thumb:hover {
273 background: #a8a8a8;
274 }
275
276 /* Animation d'apparition */
277 @keyframes slideIn {
278 from {
279 opacity: 0;
280 transform: translateY(20px);
281 }
282
283 to {
284 opacity: 1;
285 transform: translateY(0);
286 }
287 }
288
289 /* Animation du spinner */
290 @keyframes chat-spin {
291 from {
292 transform: rotate(0deg);
293 }
294
295 to {
296 transform: rotate(360deg);
297 }
298 }
299
300 /* Responsive */
301 @media (max-width: 768px) {
302 #chat-box {
303 width: calc(100vw - 40px);
304 left: 20px;
305 right: 20px;
306 }
307
308 #chat-toggle {
309 left: 20px;
310 right: 20px;
311 text-align: center;
312 }
313 }