text-generation-webui/css/main.css
2024-12-18 15:33:05 -08:00

1169 lines
22 KiB
CSS

:root {
--darker-gray: #202123;
--dark-gray: #343541;
--light-gray: #444654;
--light-theme-gray: #f4f4f4;
--border-color-dark: #525252;
--header-width: 112px;
--selected-item-color-dark: #32333e;
}
@font-face {
font-family: Inter;
src: url('file/css/Inter/Inter-VariableFont_opsz,wght.ttf') format('truetype');
font-weight: 100 900;
font-style: normal;
}
@font-face {
font-family: Inter;
src: url('file/css/Inter/Inter-Italic-VariableFont_opsz,wght.ttf') format('truetype');
font-weight: 100 900;
font-style: italic;
}
.tabs.svelte-710i53 {
margin-top: 0
}
.padded.svelte-12cmxck {
padding: 3px 0;
}
div.svelte-sfqy0y,
div.svelte-iyf88w {
background: transparent;
border: 0;
}
/* "info" messages without a title above */
.block > .svelte-e8n7p6:not(:only-of-type, #chat-mode *) {
margin-bottom: 2px;
}
.py-6 {
padding-top: 2.5rem
}
.small-button {
min-width: 0 !important;
max-width: 171px;
height: 39.594px;
align-self: end;
}
.refresh-button {
max-width: 4.4em;
min-width: 2.2em !important;
height: 39.594px;
align-self: end;
line-height: 1em;
border-radius: 0.375rem;
flex: none;
}
.refresh-button-small {
max-width: 2.2em;
}
.button_nowrap {
white-space: nowrap;
}
#slim-column {
flex: none !important;
min-width: 0 !important;
}
.slim-dropdown {
background-color: transparent !important;
border: none !important;
padding: 0 !important;
}
#download-label, #upload-label {
min-height: 0
}
.dark a {
color: white !important;
}
ol li p, ul li p {
display: inline-block;
}
#chat-tab, #default-tab, #notebook-tab, #parameters, #chat-settings, #lora, #training-tab, #model-tab, #session-tab {
border: 0;
}
#default-tab, #notebook-tab, #parameters, #chat-settings, #lora, #training-tab, #model-tab, #session-tab {
padding: 1rem;
}
.gradio-container {
max-width: 100% !important;
padding-top: 0 !important;
}
#extensions {
margin: 5px auto 35px;
max-width: 880px;
padding: 1em;
padding-left: calc(var(--header-width) + 1em);
}
.extension-tab {
border: 0 !important;
}
span.math.inline {
font-size: 27px;
vertical-align: baseline !important;
}
div.svelte-15lo0d8 > *, div.svelte-15lo0d8 > .form > * {
flex-wrap: nowrap;
}
gradio-app > :first-child {
padding: 0 !important;
}
.header_bar {
box-shadow: 0 0 3px rgba(22 22 22 / 35%);
margin-bottom: 0;
overflow-x: scroll;
text-wrap: nowrap;
z-index: 90;
position: fixed;
display: flex !important;
flex-direction: column;
height: 100dvh;
width: var(--header-width);
}
.header_bar button {
margin: 0;
padding: 0.75rem;
}
.header_bar button.selected {
border: 0;
}
.dark .header_bar {
border: none !important;
box-shadow: 0 3px 4px rgba(20 20 20 / 60%);
background-color: #8080802b;
}
.header_bar button.selected {
border-radius: 0;
}
.textbox_default textarea {
height: calc(100dvh - 201px);
}
.textbox_default_output textarea {
height: calc(100dvh - 117px);
}
.textbox textarea {
height: calc(100dvh - 172px);
}
.textbox_logits textarea {
height: calc(100dvh - 205px);
}
.textbox_logits_notebook textarea {
height: calc(100dvh - 221px);
}
.monospace textarea {
font-family: monospace;
}
.textbox_default textarea,
.textbox_default_output textarea,
.textbox_logits textarea,
.textbox_logits_notebook textarea,
.textbox textarea {
font-size: 16px !important;
color: #46464A !important;
}
.dark textarea {
color: #efefef !important;
}
/* Hide the gradio footer */
footer {
display: none !important;
}
button {
font-size: 14px !important;
}
.file-saver {
position: fixed !important;
height: 100%;
z-index: 1000;
background-color: rgb(0 0 0 / 50%) !important;
margin-left: -20px;
margin-right: -20px;
}
.file-saver > :first-child {
position: fixed !important;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* center horizontally */
width: 100%;
max-width: 500px;
background-color: var(--input-background-fill);
border: var(--input-border-width) solid var(--input-border-color) !important;
}
.file-saver > :first-child > :last-child {
background: var(--block-background-fill);
justify-content: flex-end;
}
.checkboxgroup-table label {
background: none !important;
padding: 0 !important;
border: 0 !important;
}
.checkboxgroup-table div {
display: grid !important;
}
.markdown ul ol {
font-size: 100% !important;
}
.pretty_scrollbar::-webkit-scrollbar {
width: 7px;
height: 7px;
}
.pretty_scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.pretty_scrollbar::-webkit-scrollbar-thumb,
.pretty_scrollbar::-webkit-scrollbar-thumb:hover {
background: var(--neutral-300);
border-radius: 30px;
}
.dark .pretty_scrollbar::-webkit-scrollbar-thumb,
.dark .pretty_scrollbar::-webkit-scrollbar-thumb:hover {
background: #ccc;
border-radius: 10px;
}
.pretty_scrollbar::-webkit-resizer {
background: #c5c5d2;
}
.dark .pretty_scrollbar::-webkit-resizer {
background: #ccc;
border-radius: 10px;
}
.pretty_scrollbar::-webkit-scrollbar-corner {
background: transparent;
}
audio {
max-width: 100%;
}
/* Copied from https://github.com/AUTOMATIC1111/stable-diffusion-webui */
#default-token-counter, #notebook-token-counter {
position: absolute !important;
z-index: 100;
background: var(--input-background-fill) !important;
min-height: 0 !important;
width: 0;
text-align: left;
direction: rtl;
right: 5px;
}
#default-token-counter {
top: calc(100dvh - 200px) !important;
}
#notebook-token-counter {
top: calc(100dvh - 171px) !important;
}
#default-token-counter span, #notebook-token-counter span {
padding: 1px;
box-shadow: 0 0 0 0.3em rgb(192 192 192 / 15%), inset 0 0 0.6em rgb(192 192 192 / 7.5%);
border: 2px solid rgb(192 192 192 / 40%) !important;
border-radius: 0.4em;
}
.no-background {
background: transparent;
padding: 0 !important;
}
/* ----------------------------------------------
Chat tab
---------------------------------------------- */
.h-\[40dvh\], .wrap.svelte-byatnx.svelte-byatnx.svelte-byatnx {
height: 66.67dvh
}
.gradio-container {
margin-left: auto !important;
margin-right: auto !important;
}
.w-screen {
width: unset
}
div.svelte-362y77>*, div.svelte-362y77>.form>* {
flex-wrap: nowrap
}
.pending.svelte-1ed2p3z {
opacity: 1;
}
.wrap.svelte-6roggh.svelte-6roggh {
max-height: 92.5%;
}
/* This is for the microphone button in the whisper extension */
.sm.svelte-1ipelgc {
width: 100%;
}
#chat-tab {
padding: 0;
}
#chat-tab > :nth-child(1) {
display: flex;
flex-direction: row;
gap: 0;
}
#chat-tab button#Generate, #chat-tab button#stop {
width: 89.3438px !important;
}
#chat-tab button, #notebook-tab button, #default-tab button {
min-width: 0 !important;
}
#chat-tab > :first-child, #extensions {
margin-left: auto;
margin-right: auto;
}
@media screen and (width <= 688px) {
#chat-tab {
padding-left: 0;
padding-right: 0;
}
.chat {
padding-left: 0;
padding-right: 0;
}
}
.chat {
margin-left: auto;
margin-right: auto;
min-height: var(--chat-height);
overflow-y: auto;
display: flex;
flex-direction: column;
word-break: break-word;
overflow-wrap: anywhere;
border-top: none;
border-radius: 0;
visibility: visible;
}
.chat-parent {
height: calc(100dvh - 98px - var(--input-delta));
overflow: auto !important;
border-radius: 0 !important;
margin-bottom: var(--input-delta) !important;
}
.chat-parent .prose {
visibility: visible;
}
.chat .message {
width: min(100%, 48rem);
margin-left: auto;
margin-right: auto;
text-align: start;
padding-left: 1rem;
padding-right: 1rem;
}
.chat-parent.bigchat {
height: calc(100dvh - 98px - var(--input-delta)) !important;
margin-bottom: var(--input-delta) !important;
}
.chat > .messages {
display: flex;
flex-direction: column;
}
.chat > .messages > :first-child {
padding-top: 20px;
}
.message-body h1,
.message-body h2,
.message-body h3,
.message-body h4 {
color: var(--body-text-color);
margin: 20px 0 10px;
}
.dark .message q {
color: #f5b031;
}
.message-body q::before, .message-body q::after {
content: "";
}
.message-body li {
list-style-position: outside;
}
.chat .message-body ul, .chat .message-body ol {
padding-inline-start: 2em;
}
.chat .message-body li:not(:last-child) {
margin-top: 0;
margin-bottom: 2px;
}
.chat .message-body li:last-child {
margin-bottom: 0 !important;
}
.message-body li > p {
display: inline !important;
}
.message-body ul, .message-body ol {
font-size: 15px !important;
}
.message-body ul {
list-style-type: disc !important;
}
.message-body pre:not(:last-child) {
margin-bottom: 35.625px !important;
}
.message-body pre:last-child {
margin-bottom: 0 !important;
}
#default-tab .prose pre, #notebook-tab .prose pre {
overflow: scroll;
}
.prose ul ul {
margin: 0;
}
.message-body pre > code {
white-space: pre-wrap !important;
word-wrap: break-word !important;
border: 1px solid #666;
border-radius: 5px;
font-size: 82%;
padding: 1px 3px;
background: white !important;
color: #1f2328;
}
.dark .message-body pre > code {
background: #0d1117 !important;
color: rgb(201 209 217);
}
.message-body pre > code {
display: block;
padding: 15px;
}
.message-body :not(pre) > code::before {
content: "`";
}
.message-body :not(pre) > code::after {
content: "`";
}
.message-body :not(pre) > code {
white-space: normal !important;
font-weight: bold;
font-family: unset;
}
#chat-input {
padding: 0;
padding-top: 18px;
background: transparent;
border: none;
}
#chat-input textarea {
padding: 0.65rem 2.5rem;
}
#chat-input textarea::placeholder {
white-space: nowrap;
overflow: hidden;
}
#chat-input textarea:focus {
box-shadow: none !important;
}
#chat-input > :first-child {
background-color: transparent;
}
#chat-input .progress-text {
display: none;
}
.chat-input-positioned {
position: absolute;
bottom: 0;
max-width: 54rem;
left: 50%;
transform: translateX(-50%);
}
@media print {
body {
visibility: hidden;
}
.chat {
visibility: visible;
position: absolute;
left: 0;
top: 0;
max-width: unset;
max-height: unset;
width: 100%;
overflow-y: visible;
}
.message {
break-inside: avoid;
}
.gradio-container {
overflow: visible;
}
.tab-nav {
display: none !important;
}
#chat-tab > :first-child {
max-width: unset;
}
}
#show-controls {
position: absolute;
background-color: transparent;
border: 0 !important;
border-radius: 0;
}
#show-controls label {
z-index: 1000;
position: absolute;
right: 30px;
top: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.dark #show-controls span {
color: var(--neutral-400);
}
#show-controls span {
color: var(--neutral-600);
}
#typing-container {
display: none;
position: absolute;
background-color: transparent;
left: -2px;
top: 4px;
padding: var(--block-padding);
}
.typing {
position: relative;
}
.visible-dots #typing-container {
display: block;
}
.typing span {
content: '';
animation: blink 1.5s infinite;
animation-fill-mode: both;
height: 10px;
width: 10px;
background: #3b5998;;
position: absolute;
left:0;
top:0;
border-radius: 50%;
}
.typing .dot1 {
animation-delay: .2s;
margin-left: calc(10px * 1.5);
}
.typing .dot2 {
animation-delay: .4s;
margin-left: calc(10px * 3);
}
@keyframes blink {
0% {
opacity: .1;
}
20% {
opacity: 1;
}
100% {
opacity: .1;
}
}
#chat-tab .generating {
display: none !important;
}
.hover-element {
position: relative;
font-size: 24px;
}
.hover-menu {
display: none;
position: absolute;
bottom: 80%;
left: 0;
box-shadow: 0 0 5px rgb(0 0 0 / 25%);
z-index: 10000;
min-width: 330px;
flex-direction: column;
}
.hover-menu button {
width: 100%;
background: transparent !important;
border-radius: 0 !important;
justify-content: space-between;
margin: 0 !important;
height: 36px;
}
.hover-menu button:not(#clear-history-confirm) {
border-bottom: 0 !important;
}
.hover-menu button:not(#clear-history-confirm):last-child {
border-bottom: var(--button-border-width) solid var(--border-color-primary) !important;
}
.hover-menu button:hover {
background: var(--button-secondary-background-fill-hover) !important;
}
.transparent-substring {
opacity: 0.333;
}
#chat-tab #chat-buttons {
display: none !important;
}
#gr-hover-container {
min-width: 0 !important;
display: flex;
flex-direction: column-reverse;
padding-right: 20px;
padding-bottom: 3px;
flex-grow: 0 !important;
}
#generate-stop-container {
min-width: 0 !important;
display: flex;
flex-direction: column-reverse;
padding-bottom: 3px;
flex: 0 auto !important;
}
#chat-input-container {
min-width: 0 !important;
}
#chat-input-container > .form {
background: transparent;
border: none;
}
#chat-input-row {
padding-bottom: 1.5em;
padding-left: 1rem;
padding-right: 1rem;
}
#chat-input-row.bigchat {
padding-bottom: 1px !important;
}
#chat-col {
padding-bottom: 100px;
}
@media screen and (width <= 924px) {
#chat-col {
padding-bottom: 100px;
margin-top: 32px;
position: relative; /* Ensure positioning for the pseudo-element */
}
.chat-parent {
height: calc(100dvh - 98px - var(--input-delta) - 32px);
}
.chat-parent.bigchat {
height: calc(100dvh - 98px - var(--input-delta) - 32px) !important;
}
}
#chat-col.bigchat {
padding-bottom: 80px !important;
}
.chat ol, .chat ul {
margin-top: 6px !important;
}
/* ----------------------------------------------
Past chats menus
---------------------------------------------- */
#rename-row label {
margin-top: var(--layout-gap);
}
/* ----------------------------------------------
Create the sidebars
---------------------------------------------- */
#chat-controls,
#past-chats-row {
width: 260px;
max-width: 80vw;
padding: 0.5rem;
height: 100dvh;
flex-shrink: 0;
box-sizing: content-box;
z-index: 10;
}
#past-chats-row:not(.negative-header) {
max-width: calc(85vw - var(--header-width));
}
#chat-controls {
padding: 1rem;
padding-bottom: 0;
overflow-y: scroll;
}
#chat-controls > :nth-child(1) {
padding: 0.5rem;
}
#past-chats-row + * {
width: unset;
flex-grow: 1;
flex-shrink: 1;
}
/* ----------------------------------------------
Keep dropdown menus above errored components
---------------------------------------------- */
.options {
z-index: 100 !important;
border: 1px solid var(--input-border-color);
border-radius: 0;
}
/* ----------------------------------------------
Big profile picture for characters
---------------------------------------------- */
.bigProfilePicture {
position: fixed;
bottom: 0;
left: 0;
width: calc(100vw / 2 - 600px);
z-index: 10000;
}
.pfp_character {
position: relative;
}
.pfp_character:hover {
cursor: pointer;
}
@media screen and (width <= 1300px) {
.bigProfilePicture {
display: none;
}
}
#past-chats {
max-height: calc(100dvh - 90px);
overflow-y: scroll !important;
border-radius: 0;
scrollbar-width: auto;
}
#past-chats::-webkit-scrollbar {
display: block;
}
#past-chats label {
width: 100%;
background-color: transparent !important;
background: none;
border: 0;
border-radius: 0;
padding-top: 8px;
padding-bottom: 8px;
position: relative;
min-height: 42px !important;
}
#past-chats label::before {
content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z"></path></svg>');
position: absolute;
top: 12px;
left: 12px;
margin-right: 8px;
}
.dark #past-chats label::before {
content: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z"></path></svg>');
}
#past-chats label span {
margin-left: 29px;
}
#past-chats > :nth-child(2) {
display: none;
}
#past-chats > :nth-child(3) {
gap: 0.25rem;
}
#past-chats input {
display: none;
}
#past-chats label {
padding: 0.75rem;
font-size: 12.5px;
font-weight: 400;
}
#past-chats .selected,
#past-chats label:hover {
border-radius: 0.5rem;
}
#past-chats label:hover {
cursor: pointer;
}
#past-chats-buttons,
#delete-chat-row,
#rename-row {
width: 100%;
justify-content: center;
}
#past-chats-row,
#chat-controls {
width: 260px;
padding: 0.5rem;
height: calc(100dvh - 16px);
flex-shrink: 0;
box-sizing: content-box;
}
.sidebar-hidden {
width: 0 !important;
padding: 0 !important;
overflow: hidden;
}
#past-chats-toggle,
#chat-controls-toggle,
#navigation-toggle {
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
user-select: none;
border-radius: 3px;
z-index: 1000;
position: fixed;
width: 2rem;
height: 2rem;
top: 0;
}
#past-chats-toggle svg,
#chat-controls-toggle svg,
#navigation-toggle svg {
pointer-events: none;
}
@media screen and (width <= 408px) {
#past-chats-toggle.past-chats-open {
top: 28px;
}
#chat-controls-toggle.chat-controls-open {
top: 28px;
right: calc(16px + min(260px, 80vw)) !important;
}
}
#past-chats-toggle.past-chats-open.negative-header {
left: calc(min(260px, 85vw) + 16px);
}
#past-chats-toggle.past-chats-open:not(.negative-header) {
left: calc(112px + min(260px, calc(85vw - var(--header-width))) + 16px);
}
#past-chats-toggle.past-chats-closed:not(.negative-header) {
left: 112px;
}
#past-chats-toggle.past-chats-closed.negative-header {
left: 0;
top: 28px;
}
@media screen and (width <= 924px) {
#past-chats-toggle.past-chats-closed.negative-header {
left: 28px;
top: 0;
}
}
.header_bar ~ * {
margin-left: var(--header-width);
}
/* Positions for chat-controls-toggle */
#chat-controls-toggle.chat-controls-open {
right: calc(min(260px, 80vw) + 23px);
}
#chat-controls-toggle.chat-controls-closed {
right: 7px;
}
@media screen and (width <= 924px) {
#chat-controls.sidebar-shown {
position: fixed;
right: 0;
}
#past-chats-row.sidebar-shown {
position: fixed;
}
}
/* ----------------------------------------------
Dark theme
---------------------------------------------- */
.dark .header_bar {
background-color: var(--darker-gray) !important;
}
.dark .header_bar button.selected {
background: var(--selected-item-color-dark);
}
.dark #chat-input textarea {
background: var(--light-gray);
color: white !important;
border-color: #292c3b;
}
.dark #chat-input textarea::placeholder {
color: #9ca3af;
}
.dark .hover-menu {
background-color: var(--darker-gray);
}
.dark .hover-menu button {
border-color: var(--border-color-primary);
}
.dark #chat-controls,
.dark #past-chats-row {
background-color: var(--darker-gray);
border: 0 !important;
}
.dark #past-chats .selected,
.dark #past-chats label:hover {
background-color: var(--selected-item-color-dark) !important;
}
.dark #past-chats-row,
.dark #chat-controls {
background-color: var(--darker-gray);
}
.dark #past-chats-toggle,
.dark #chat-controls-toggle,
.dark #navigation-toggle {
color: white;
}
.dark svg {
fill: white;
color: white;
}
@media screen and (width <= 408px) {
.dark #past-chats-toggle.past-chats-open {
background: var(--darker-gray);
}
.dark #chat-controls-toggle.chat-controls-open {
background: var(--darker-gray);
}
}
/* ----------------------------------------------
Light theme
---------------------------------------------- */
.header_bar {
background-color: var(--light-theme-gray) !important;
}
.header_bar button.selected {
background: white;
}
#chat-controls,
#past-chats-row {
background-color: var(--light-theme-gray);
}
#chat-controls {
border-left: 1px solid #d9d9d0;
}
#past-chats-row {
border-right: 1px solid #d9d9d0;
}
#past-chats-toggle,
#chat-controls-toggle,
#navigation-toggle {
color: gray !important;
}
.mobile-top-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 32px;
z-index: 2;
opacity: 0;
pointer-events: none;
}
@media screen and (width <= 924px) {
.mobile-top-bar {
opacity: 1;
pointer-events: auto;
}
.dark .mobile-top-bar {
background-color: var(--darker-gray);
}
.mobile-top-bar {
background-color: var(--light-theme-gray);
}
}
@media screen and (width <= 408px) {
#past-chats-toggle.past-chats-open {
background: var(--light-theme-gray);
}
#chat-controls-toggle.chat-controls-open {
background: var(--light-theme-gray);
}
}