Cooler styling for reasoning blocks
| @@ -6247,15 +6247,20 @@ | ||
| 6247 | 6247 | <div class="mes_edit_cancel menu_button fa-solid fa-xmark" title="Cancel" data-i18n="[title]Cancel"></div> |
| 6248 | 6248 | </div> |
| 6249 | 6249 | </div> |
| 6250 | 6250 | <details class="mes_reasoning_details" open> |
| 6251 | 6251 | <summary class="mes_reasoning_summary flex-container"> |
| 6252 | - <span data-i18n="Reasoning">Reasoning</span> | |
| 6252 | + <div class="mes_reasoning_header_block flex-container"> | |
| 6253 | 6253 | <div class="mes_reasoning_actionsmes_reasoning_header flex-container"> |
| 6254 | - <div class="mes_reasoning_edit_done mes_button fa-solid fa-check" title="Confirm" data-i18n="[title]Confirmedit"></div> | |
| 6254 | + <span class="mes_reasoning_header_title" data-i18n="Thought for some time">Thought for some time</span> | |
| 6255 | 6255 | <div class="mes_reasoning_edit_cancel mes_buttonmes_reasoning_arrow fa-solid fa-xmark" title="Cancel edit" datachevron-i18n="[title]Cancel editup"></div> |
| 6256 | - <div class="mes_reasoning_edit mes_button fa-solid fa-pencil" title="Edit reasoning" data-i18n="[title]Edit reasoning"></div> | |
| 6256 | + </div> | |
| 6257 | + </div> | |
| 6258 | + <div class="mes_reasoning_actions flex-container"> | |
| 6259 | + <div class="mes_reasoning_edit_done menu_button edit_button fa-solid fa-check" title="Confirm" data-i18n="[title]Confirmedit"></div> | |
| 6260 | + <div class="mes_reasoning_delete menu_button edit_button fa-solid fa-trash-can" title="Remove reasoning" data-i18n="[title]Remove reasoning"></div> | |
| 6261 | + <div class="mes_reasoning_edit_cancel menu_button edit_button fa-solid fa-xmark" title="Cancel edit" data-i18n="[title]Cancel edit"></div> | |
| 6257 | 6262 | <div class="mes_reasoning_copy mes_button fa-solid fa-copy" title="Copy reasoning" data-i18n="[title]Copy reasoning"></div> |
| 6258 | 6263 | <div class="mes_reasoning_deletemes_reasoning_edit mes_button fa-solid fa-trash-canpencil" title="RemoveEdit reasoning" data-i18n="[title]RemoveEdit reasoning"></div> |
| 6259 | 6264 | </div> |
| 6260 | 6265 | </summary> |
| 6261 | 6266 | <div class="mes_reasoning"></div> |
| @@ -2189,26 +2189,29 @@ function insertSVGIcon(mes, extra) { | ||
| 2189 | 2189 | modelName = extra.api; |
| 2190 | 2190 | } |
| 2191 | 2191 | |
| 2192 | - const image = new Image(); | |
| 2192 | + const insertOrReplaceSVG = (image, className, targetSelector, insertBefore) => { | |
| 2193 | - // Add classes for styling and identification | |
| 2193 | + image.onload = async function () { | |
| 2194 | - image.classList.add('icon-svg', 'timestamp-icon'); | |
| 2194 | + let existingSVG = insertBefore ? mes.find(targetSelector).prev(`.${className}`) : mes.find(targetSelector).next(`.${className}`); | |
| 2195 | - image.src = `/img/${modelName}.svg`; | |
| 2195 | + if (existingSVG.length) { | |
| 2196 | - image.title = `${extra?.api ? extra.api + ' - ' : ''}${extra?.model ?? ''}`; | |
| 2196 | + existingSVG.replaceWith(image); | |
| 2197 | - | |
| 2197 | + } else { | |
| 2198 | - image.onload = async function () { | |
| 2198 | + if (insertBefore) mes.find(targetSelector).before(image); | |
| 2199 | - // Check if an SVG already exists adjacent to the timestamp | |
| 2199 | + else mes.find(targetSelector).after(image); | |
| 2200 | - let existingSVG = mes.find('.timestamp').next('.timestamp-icon'); | |
| 2200 | + } | |
| 2201 | - | |
| 2201 | + await SVGInject(image); | |
| 2202 | - if (existingSVG.length) { | |
| 2202 | + }; | |
| 2203 | - // Replace existing SVG | |
| 2203 | + }; | |
| 2204 | - existingSVG.replaceWith(image); | |
| 2205 | - } else { | |
| 2206 | - // Append the new SVG if none exists | |
| 2207 | - mes.find('.timestamp').after(image); | |
| 2208 | - } | |
| 2209 | 2204 | |
| 2210 | - await SVGInject(image); | |
| 2205 | + const createModelImage = (className, targetSelector, insertBefore) => { | |
| 2206 | + const image = new Image(); | |
| 2207 | + image.classList.add('icon-svg', className); | |
| 2208 | + image.src = `/img/${modelName}.svg`; | |
| 2209 | + image.title = `${extra?.api ? extra.api + ' - ' : ''}${extra?.model ?? ''}`; | |
| 2210 | + insertOrReplaceSVG(image, className, targetSelector, insertBefore); | |
| 2211 | 2211 | }; |
| 2212 | + | |
| 2213 | + createModelImage('timestamp-icon', '.timestamp'); | |
| 2214 | + createModelImage('thinking-icon', '.mes_reasoning_header_title', true); | |
| 2212 | 2215 | } |
| 2213 | 2216 | |
| 2214 | 2217 | |
| @@ -342,18 +342,44 @@ input[type='checkbox']:focus-visible { | ||
| 342 | 342 | |
| 343 | 343 | .mes_reasoning { |
| 344 | 344 | display: block; |
| 345 | 345 | border-left: 1px2px solid var(--SmartThemeBorderColorSmartThemeEmColor); |
| 346 | - background-color: var(--black30a); | |
| 346 | + border-radius: 2px; | |
| 347 | - border-radius: 5px; | |
| 348 | 347 | padding: 5px; |
| 349 | 348 | marginpadding-left: 5px 014px; |
| 349 | + margin-bottom: 0.5rem; | |
| 350 | 350 | overflow-y: auto; |
| 351 | + color: var(--SmartThemeEmColor); | |
| 352 | +} | |
| 353 | + | |
| 354 | +.mes_reasoning *:last-child { | |
| 355 | + margin-bottom: 0; | |
| 356 | +} | |
| 357 | + | |
| 358 | +.mes_reasoning em, | |
| 359 | +.mes_reasoning i, | |
| 360 | +.mes_reasoning u, | |
| 361 | +.mes_reasoning q, | |
| 362 | +.mes_reasoning blockquote { | |
| 363 | + filter: saturate(0.5); | |
| 364 | +} | |
| 365 | + | |
| 366 | +.mes_reasoning_details .mes_reasoning em { | |
| 367 | + color: color-mix(in srgb, var(--SmartThemeEmColor) 67%, var(--SmartThemeBlurTintColor) 33%) | |
| 351 | 368 | } |
| 352 | 369 | |
| 353 | 370 | .mes_reasoning_summarymes_reasoning_header_block { |
| 371 | + flex-grow: 1; | |
| 372 | +} | |
| 373 | + | |
| 374 | +.mes_reasoning_header { | |
| 354 | 375 | cursor: pointer; |
| 355 | 376 | position: relative; |
| 356 | 377 | marginuser-select: 2pxnone; |
| 378 | + margin: 0.5rem 2px; | |
| 379 | + padding: 7px 14px; | |
| 380 | + border-radius: 10px; | |
| 381 | + background-color: var(--grey30); | |
| 382 | + font-size: 0.9rem; | |
| 357 | 383 | } |
| 358 | 384 | |
| 359 | 385 | @supports not selector(:has(*)) { |
| @@ -368,24 +394,20 @@ input[type='checkbox']:focus-visible { | ||
| 368 | 394 | .mes_block:has(.edit_textarea) .mes_reasoning_details, |
| 369 | 395 | .mes_reasoning_details:not([open]) .mes_reasoning_actions, |
| 370 | 396 | .mes_reasoning_details:has(.reasoning_edit_textarea) .mes_reasoning, |
| 371 | 397 | .mes_reasoning_details:not(:has(.reasoning_edit_textarea)) .mes_reasoning_actions .mes_button.mes_reasoning_edit_doneedit_button, |
| 372 | 398 | .mes_reasoning_details:not(:has(.reasoning_edit_textarea)) .mes_reasoning_actions .mes_button:not(.mes_reasoning_edit_cancel,edit_button) { |
| 373 | -.mes_reasoning_details:has(.reasoning_edit_textarea) .mes_reasoning_actions .mes_button:not(.mes_reasoning_edit_done, .mes_reasoning_edit_cancel) { | |
| 374 | 399 | display: none; |
| 375 | 400 | } |
| 376 | 401 | |
| 377 | 402 | .mes_reasoning_actionsmes_reasoning_details .mes_reasoning_arrow { |
| 378 | 403 | positionfont-size: absolute10px; |
| 379 | 404 | rightwidth: 010px; |
| 380 | 405 | topheight: 010px; |
| 406 | + margin-top: 5px; | |
| 407 | +} | |
| 381 | 408 | |
| 382 | - display: flex; | |
| 409 | +.mes_reasoning_details:not([open]) .mes_reasoning_arrow { | |
| 383 | 410 | gaptransform: 4pxrotate(180deg); |
| 384 | - flex-wrap: nowrap; | |
| 385 | - justify-content: flex-end; | |
| 386 | - transition: all 200ms; | |
| 387 | - overflow-x: hidden; | |
| 388 | - padding: 1px; | |
| 389 | 411 | } |
| 390 | 412 | |
| 391 | 413 | .mes_reasoning_summary>span { |
| @@ -4224,7 +4246,8 @@ input[type="range"]::-webkit-slider-thumb { | ||
| 4224 | 4246 | transition: 0.3s ease-in-out; |
| 4225 | 4247 | } |
| 4226 | 4248 | |
| 4227 | 4249 | .mes_edit_buttons .menu_button {, |
| 4250 | +.mes_reasoning_actions .edit_button { | |
| 4228 | 4251 | opacity: 0.5; |
| 4229 | 4252 | padding: 0px; |
| 4230 | 4253 | font-size: 1rem; |
| @@ -4237,6 +4260,12 @@ input[type="range"]::-webkit-slider-thumb { | ||
| 4237 | 4260 | align-items: center; |
| 4238 | 4261 | } |
| 4239 | 4262 | |
| 4263 | +.mes_reasoning_actions .edit_button { | |
| 4264 | + margin-bottom: 0.5rem; | |
| 4265 | + opacity: 1; | |
| 4266 | + filter: brightness(0.7); | |
| 4267 | +} | |
| 4268 | + | |
| 4240 | 4269 | .mes_reasoning_edit_cancel, |
| 4241 | 4270 | .mes_edit_cancel.menu_button { |
| 4242 | 4271 | background-color: var(--crimson70a); |