This commit is contained in:
Timothy Jaeryang Baek
2026-07-14 04:15:20 -04:00
parent a7fbf66269
commit aedb6bef4e
208 changed files with 1056 additions and 1066 deletions
+1 -1
View File
@@ -264,7 +264,7 @@
{/if}
</div>
{:else}
<div class="m-auto font-medium text-xs text-gray-900 dark:text-white">
<div class="m-auto font-normal text-xs text-gray-900 dark:text-white">
{$i18n.t('No HTML, CSS, or JavaScript content found.')}
</div>
{/if}
+1 -1
View File
@@ -3108,7 +3108,7 @@
}}
>
<div class=" text-sm text-gray-500 flex-1 line-clamp-3">
{$i18n.t('This will delete')} <span class=" font-semibold">{$chatTitle}</span>.
{$i18n.t('This will delete')} <span class=" font-normal">{$chatTitle}</span>.
</div>
</DeleteConfirmDialog>
+6 -6
View File
@@ -309,7 +309,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'controls'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'controls')}
>
@@ -320,7 +320,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'files'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'files')}
>
@@ -331,7 +331,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'overview'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'overview')}
>
@@ -454,7 +454,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'controls'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'controls')}
>
@@ -465,7 +465,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'files'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'files')}
>
@@ -476,7 +476,7 @@
<button
class="px-2.5 py-1 text-sm rounded-lg transition whitespace-nowrap {activeTab ===
'overview'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-medium text-gray-700 dark:text-gray-200'
? 'bg-gray-100/40 dark:bg-gray-800/25 font-normal text-gray-700 dark:text-gray-200'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100/30 dark:hover:bg-gray-800/20 hover:text-gray-600 dark:hover:text-gray-300'}"
on:click={() => (activeTab = 'overview')}
>
@@ -83,7 +83,7 @@
{/if}
<div
class=" mt-2 mb-4 text-3xl text-gray-800 dark:text-gray-100 text-left flex items-center gap-4 font-primary"
class=" mt-2 mb-4 text-3xl text-gray-800 dark:text-gray-100 text-left flex items-center gap-4 "
>
<div>
<div class=" capitalize line-clamp-1" in:fade={{ duration: 200 }}>
@@ -132,7 +132,7 @@
</div>
</div>
<div class=" w-full font-primary" in:fade={{ duration: 200, delay: 300 }}>
<div class=" w-full " in:fade={{ duration: 200, delay: 300 }}>
<Suggestions
className="grid grid-cols-2"
suggestionPrompts={atSelectedModel?.info?.meta?.suggestion_prompts ??
@@ -30,13 +30,13 @@
let showAdvancedParams = getOpen('advancedParams');
const compactSectionButtonClass =
'w-full py-1 text-xs font-medium text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 transition cursor-pointer select-none';
'w-full py-1 text-xs font-normal text-gray-500 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-100 transition cursor-pointer select-none';
</script>
<div class=" dark:text-white">
{#if !embed}
<div class=" flex items-center justify-between dark:text-gray-100 mb-2">
<div class=" text-md self-center font-primary">{$i18n.t('Controls')}</div>
<div class=" text-md self-center ">{$i18n.t('Controls')}</div>
<button
class="self-center"
aria-label={$i18n.t('Close chat controls')}
+1 -1
View File
@@ -1494,7 +1494,7 @@
clip-rule="evenodd"
/>
</svg>
<span class="font-medium">{$i18n.t('Terminal')}</span>
<span class="font-normal">{$i18n.t('Terminal')}</span>
{#if terminalExpanded}
<div
@@ -15,7 +15,7 @@
</script>
<div class="flex items-center gap-2 px-3 py-1.5 bg-gray-50 dark:bg-gray-800/50 shrink-0">
<span class="text-xs font-medium text-gray-600 dark:text-gray-400 flex-1 truncate">
<span class="text-xs font-normal text-gray-600 dark:text-gray-400 flex-1 truncate">
{$i18n.t('{{count}} selected', { count })}
</span>
@@ -319,7 +319,7 @@
<button
class="shrink-0 px-3 py-1 text-xs rounded-md transition-colors
{selectedExcelSheet === sheet
? 'bg-gray-200 dark:bg-gray-700 text-gray-800 dark:text-gray-200 font-medium'
? 'bg-gray-200 dark:bg-gray-700 text-gray-800 dark:text-gray-200 font-normal'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800'}"
on:click={() => onSheetChange?.(sheet)}
>
@@ -55,7 +55,7 @@
<div class="px-2 py-1">
<button
class="flex items-center gap-1 w-full text-xs font-medium text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition"
class="flex items-center gap-1 w-full text-xs font-normal text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition"
on:click={() => (expanded = !expanded)}
>
<svg
@@ -139,7 +139,7 @@
<button
class="shrink-0 px-2 py-1 text-xs rounded-lg transition
{table === selectedTable && !queryMode
? 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-200 font-medium'
? 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-200 font-normal'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800'}"
on:click={() => selectTable(table)}
>
@@ -150,7 +150,7 @@
<button
class="shrink-0 px-2 py-1 text-xs rounded-lg transition font-mono
{queryMode
? 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-200 font-medium'
? 'bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-200 font-normal'
: 'text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800'}"
on:click={() => {
queryMode = !queryMode;
@@ -187,7 +187,7 @@
<span class="text-[0.6rem] text-gray-400 dark:text-gray-600 select-none">⌘+Enter</span>
{/if}
<button
class="shrink-0 px-2.5 py-0.5 text-[0.65rem] font-medium rounded hover:bg-gray-200 dark:hover:bg-gray-800 transition text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300"
class="shrink-0 px-2.5 py-0.5 text-[0.65rem] font-normal rounded hover:bg-gray-200 dark:hover:bg-gray-800 transition text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300"
on:click={runQuery}
>
{$i18n.t('Run')}
+1 -1
View File
@@ -1233,7 +1233,7 @@
/>
{#if loaded}
<div class="w-full font-primary">
<div class="w-full ">
<div class=" mx-auto inset-x-0 bg-transparent flex justify-center">
<div
class="flex flex-col px-3 {($settings?.widescreenMode ?? null)
@@ -37,7 +37,7 @@
<Modal bind:show size="sm">
<div class="flex flex-col h-full">
<div class="flex justify-between items-center dark:text-gray-100 px-5 pt-4 pb-1.5">
<h1 class="text-lg font-medium self-center font-primary">
<h1 class="text-lg font-normal self-center ">
{$i18n.t('Attach Webpage')}
</h1>
<button
@@ -79,7 +79,7 @@
<div class="flex justify-end gap-2 pt-3 bg-gray-50 dark:bg-gray-900/50">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-800 text-white dark:bg-white dark:text-black dark:hover:bg-gray-200 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-800 text-white dark:bg-white dark:text-black dark:hover:bg-gray-200 transition rounded-full"
type="submit"
>
{$i18n.t('Add')}
@@ -959,7 +959,7 @@
}
}}
>
<div class="line-clamp-1 text-sm font-medium">
<div class="line-clamp-1 text-sm font-normal">
{#if loading}
{$i18n.t('Thinking...')}
{:else if muted}
@@ -79,7 +79,7 @@
on:focus={() => {}}
data-selected={promptIdx === selectedPromptIdx}
>
<span class=" font-medium text-black dark:text-gray-100">
<span class=" font-normal text-black dark:text-gray-100">
{promptItem.command}
</span>
@@ -64,7 +64,7 @@
const description = escapeTooltipText(skill.description);
return `<div class="max-w-80 whitespace-normal text-left leading-snug">
<span class="break-words font-medium">${name}</span>${description ? `: <span class="break-words opacity-80">${description}</span>` : ''}
<span class="break-words font-normal">${name}</span>${description ? `: <span class="break-words opacity-80">${description}</span>` : ''}
</div>`;
};
</script>
@@ -67,7 +67,7 @@
<Modal bind:show size="md">
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
<div class=" text-lg font-medium self-center">{$i18n.t('Input Variables')}</div>
<div class=" text-lg font-normal self-center">{$i18n.t('Input Variables')}</div>
<button
class="self-center"
on:click={() => {
@@ -94,7 +94,7 @@
<div class=" py-0.5 w-full justify-between">
<div class="flex w-full justify-between mb-1.5">
<div class=" self-center text-xs font-medium">
<div class=" self-center text-xs font-normal">
{variable}
{#if variables[variable]?.required ?? false}
@@ -350,9 +350,9 @@
{/if}
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<div class="flex justify-end pt-3 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-white hover:bg-gray-100 text-black dark:bg-black dark:text-white dark:hover:bg-gray-900 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-white hover:bg-gray-100 text-black dark:bg-black dark:text-white dark:hover:bg-gray-900 transition rounded-full"
type="button"
on:click={() => {
show = false;
@@ -362,7 +362,7 @@
</button>
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -507,7 +507,7 @@
{loading ? ' text-gray-500 dark:text-gray-400 ' : ' text-indigo-400 '}
font-medium flex-1 mx-auto text-center"
font-normal flex-1 mx-auto text-center"
>
{formatSeconds(durationSeconds)}
</div>
@@ -162,7 +162,7 @@
{@const urlCitations = citations.filter((c) => c?.source?.name?.startsWith('http'))}
<div class=" py-1 -mx-0.5 w-full flex gap-1 items-center flex-wrap">
<button
class="text-xs font-medium text-gray-600 dark:text-gray-300 px-3.5 h-8 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800 transition flex items-center gap-1 border border-gray-50 dark:border-gray-850/30"
class="text-xs font-normal text-gray-600 dark:text-gray-300 px-3.5 h-8 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800 transition flex items-center gap-1 border border-gray-50 dark:border-gray-850/30"
aria-label={citations.length === 1
? $i18n.t('Toggle 1 source')
: $i18n.t('Toggle {{COUNT}} sources', { COUNT: citations.length })}
@@ -185,7 +185,7 @@
{/each}
{#if citations.length > 3}
<div
class="size-4 rounded-full shrink-0 border border-white dark:border-gray-850 bg-gray-100 dark:bg-gray-800 flex items-center justify-center text-[8px] font-semibold text-gray-500 dark:text-gray-400 whitespace-nowrap tracking-tighter"
class="size-4 rounded-full shrink-0 border border-white dark:border-gray-850 bg-gray-100 dark:bg-gray-800 flex items-center justify-center text-[8px] font-normal text-gray-500 dark:text-gray-400 whitespace-nowrap tracking-tighter"
aria-hidden="true"
>
+{citations.length - Math.min(urlCitations.length, 3)}
@@ -221,7 +221,7 @@
selectedCitation = citation;
}}
>
<div class=" font-medium bg-gray-50 dark:bg-gray-850 rounded-md px-1">
<div class=" font-normal bg-gray-50 dark:bg-gray-850 rounded-md px-1">
{idx + 1}
</div>
<div
@@ -98,7 +98,7 @@
<Modal size="lg" bind:show>
<div>
<div class=" flex justify-between dark:text-gray-300 px-4.5 pt-3 pb-2">
<div class=" text-lg font-medium self-center flex items-center">
<div class=" text-lg font-normal self-center flex items-center">
{#if citation?.source?.name}
{@const document = mergedDocuments?.[0]}
{#if document?.metadata?.file_id || document.source?.url?.includes('http')}
@@ -148,7 +148,7 @@
<div class="flex flex-col w-full gap-2">
{#if document.metadata?.parameters}
<div>
<div class="text-sm font-medium dark:text-gray-300 mb-1">
<div class="text-sm font-normal dark:text-gray-300 mb-1">
{$i18n.t('Parameters')}
</div>
@@ -159,7 +159,7 @@
<div>
<div
class=" text-sm font-medium dark:text-gray-300 flex items-center gap-2 w-fit mb-1"
class=" text-sm font-normal dark:text-gray-300 flex items-center gap-2 w-fit mb-1"
>
{#if document.source?.url?.includes('http')}
{@const snippetUrl = getTextFragmentUrl(document)}
@@ -190,7 +190,7 @@
{#if typeof percentage === 'number'}
<span
class={`px-1 rounded-sm font-medium ${getRelevanceColor(percentage)}`}
class={`px-1 rounded-sm font-normal ${getRelevanceColor(percentage)}`}
>
{percentage.toFixed(2)}%
</span>
@@ -40,7 +40,7 @@
<Modal size="lg" bind:show>
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
<div class=" text-lg font-medium self-center capitalize">
<div class=" text-lg font-normal self-center capitalize">
{$i18n.t('Citations')}
</div>
<button
@@ -66,7 +66,7 @@
selectedCitation = citation;
}}
>
<div class=" font-medium">
<div class=" font-normal">
{idx + 1}.
</div>
<div
@@ -14,7 +14,7 @@
<Modal size="lg" bind:show>
<div>
<div class="flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
<div class="text-lg font-medium self-center flex flex-col gap-0.5 capitalize">
<div class="text-lg font-normal self-center flex flex-col gap-0.5 capitalize">
{#if codeExecution?.result}
<div>
{#if codeExecution.result?.error}
@@ -91,7 +91,7 @@
{#if codeExecution?.result?.files && codeExecution?.result?.files.length > 0}
<div class="flex flex-col w-full">
<hr class="border-gray-100/30 dark:border-gray-850/30 my-2" />
<div class=" text-sm font-medium dark:text-gray-300">
<div class=" text-sm font-normal dark:text-gray-300">
{$i18n.t('Files')}
</div>
<ul class="mt-1 list-disc pl-4 text-xs">
@@ -28,7 +28,7 @@
{#if codeExecutions.length > 0}
<div class="mt-1 mb-2 w-full flex gap-1 items-center flex-wrap">
{#each codeExecutions as execution (execution.id)}
<div class="flex gap-1 text-xs font-semibold">
<div class="flex gap-1 text-xs font-normal">
<button
class="flex dark:text-gray-300 py-1 px-1 bg-gray-50 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-xl max-w-96"
on:click={() => {
@@ -102,7 +102,7 @@ Renders the following Markdown as alerts:
<div class={`border-l-4 pl-2.5 ${alertStyles[alert.type].border} my-0.5`}>
<div class="{alertStyles[alert.type].text} items-center flex gap-1 py-1.5">
<svelte:component this={alertStyles[alert.type].icon} className="inline-block size-4" />
<span class=" font-medium">{alert.type}</span>
<span class=" font-normal">{alert.type}</span>
</div>
<div class="pb-2">
<MarkdownTokens id={`${id}-${tokenIdx}`} tokens={alert.tokens} {onTaskClick} {onSourceClick} />
@@ -36,7 +36,7 @@
<div class="relative group my-2 rounded-2xl border border-gray-100 dark:border-gray-800 px-4 py-3">
<!-- Header row: type badge + copy button -->
<div class="flex items-center justify-between mb-2">
<span class="text-xs font-medium text-gray-500 dark:text-gray-400">
<span class="text-xs font-normal text-gray-500 dark:text-gray-400">
{label}
</span>
@@ -55,7 +55,7 @@
>
<div class="flex flex-col justify-center w-full min-w-0">
<div class="dark:text-gray-100 text-sm flex justify-between items-center gap-2">
<div class="font-medium line-clamp-1 flex-1 min-w-0">
<div class="font-normal line-clamp-1 flex-1 min-w-0">
{#if loading}
<span class="text-gray-400">...</span>
{:else}
@@ -251,7 +251,7 @@
<div class="w-full">
<div class=" flex w-full mb-4.5 border-b border-gray-200 dark:border-gray-850">
<div
class="flex gap-2 scrollbar-none overflow-x-auto w-fit text-center font-medium bg-transparent pt-1 text-sm"
class="flex gap-2 scrollbar-none overflow-x-auto w-fit text-center font-normal bg-transparent pt-1 text-sm"
on:wheel|preventDefault={(e) => {
e.currentTarget.scrollLeft += e.deltaY;
}}
+1 -1
View File
@@ -1,3 +1,3 @@
<div class=" self-center font-semibold line-clamp-1 flex gap-1 items-center">
<div class=" self-center font-normal line-clamp-1 flex gap-1 items-center">
<slot />
</div>
@@ -259,7 +259,7 @@
<!-- Role label -->
<div class="flex items-start pt-1.5">
<div
class="text-[11px] font-semibold uppercase tracking-wide min-w-[4.5rem] text-gray-400 dark:text-gray-500"
class="text-[11px] font-normal uppercase tracking-wide min-w-[4.5rem] text-gray-400 dark:text-gray-500"
>
{getItemLabel(di)}
</div>
@@ -104,7 +104,7 @@
</script>
{#if message?.arena}
<div class="text-xs font-medium pt-1.5 -mb-0.5">
<div class="text-xs font-normal pt-1.5 -mb-0.5">
{$i18n.t('This response was generated by "{{model}}"', {
model: selectedModel ? (selectedModel?.name ?? selectedModel.id) : message.selectedModelId
})}
@@ -116,7 +116,7 @@
id="message-feedback-{message.id}"
>
<div class="flex justify-between items-center">
<div class="text-sm font-medium">{$i18n.t('How would you rate this response?')}</div>
<div class="text-sm font-normal">{$i18n.t('How would you rate this response?')}</div>
<!-- <div class=" text-sm">{$i18n.t('Tell us more:')}</div> -->
@@ -165,7 +165,7 @@
<div>
{#if reasons.length > 0}
<div class="text-sm mt-1.5 font-medium">{$i18n.t('Why?')}</div>
<div class="text-sm mt-1.5 font-normal">{$i18n.t('Why?')}</div>
<div class="flex flex-wrap gap-1.5 text-sm mt-1.5">
{#each reasons as reason}
@@ -244,7 +244,7 @@
</div>
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
on:click={() => {
saveHandler();
}}
@@ -261,7 +261,7 @@
class="flex cursor-pointer items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-850 w-full px-3 py-2 rounded-xl transition"
>
<div class="self-center">
<div class="text-sm font-medium">
<div class="text-sm font-normal">
{$i18n.t('Leave a public review for {{modelName}}', { modelName: message.model })}
</div>
<div class="text-xs text-gray-500">
@@ -761,7 +761,7 @@
/>
{/if}
<div class=" mt-2 mb-1 flex justify-between text-sm font-medium">
<div class=" mt-2 mb-1 flex justify-between text-sm font-normal">
<div>
<button
id="save-new-message-button"
@@ -921,7 +921,7 @@
{#if messageIndexEdit}
<div
class="text-sm flex justify-center font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm flex justify-center font-normal self-center dark:text-gray-100 min-w-fit"
>
<input
id="message-index-input-{message.id}"
@@ -942,13 +942,13 @@
messageIndexEdit = false;
}
}}
class="bg-transparent font-semibold self-center dark:text-gray-100 min-w-fit outline-hidden"
class="bg-transparent font-normal self-center dark:text-gray-100 min-w-fit outline-hidden"
/>/{siblings.length}
</div>
{:else}
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
class="text-sm tracking-widest font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm tracking-widest font-normal self-center dark:text-gray-100 min-w-fit"
on:dblclick={async () => {
messageIndexEdit = true;
@@ -9,7 +9,7 @@
</script>
<div class="mt-4">
<div class="text-sm font-medium">
<div class="text-sm font-normal">
{$i18n.t('Follow up')}
</div>
@@ -38,7 +38,7 @@
on:click={() => (expanded = !expanded)}
>
<span class="w-1.5 h-1.5 rounded-full bg-gray-300 dark:bg-gray-600 shrink-0"></span>
<span class="text-[0.75rem] font-medium shrink-0">
<span class="text-[0.75rem] font-normal shrink-0">
{$i18n.t('Background sub-agent finished')}
</span>
{#if summary}
@@ -159,7 +159,7 @@
<Name>
{#if message.user}
{$i18n.t('You')}
<span class=" text-gray-500 text-sm font-medium">{message?.user ?? ''}</span>
<span class=" text-gray-500 text-sm font-normal">{message?.user ?? ''}</span>
{:else if $settings.showUsername || $_user?.name !== user?.name}
{user?.name ?? $i18n.t('You')}
{:else}
@@ -299,7 +299,7 @@
/>
</div>
<div class=" mt-2 mb-1 flex justify-between text-sm font-medium">
<div class=" mt-2 mb-1 flex justify-between text-sm font-normal">
<div>
<button
id="save-edit-message-button"
@@ -414,7 +414,7 @@
{#if messageIndexEdit}
<div
class="text-sm flex justify-center font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm flex justify-center font-normal self-center dark:text-gray-100 min-w-fit"
>
<input
id="message-index-input-{message.id}"
@@ -435,13 +435,13 @@
messageIndexEdit = false;
}
}}
class="bg-transparent font-semibold self-center dark:text-gray-100 min-w-fit outline-hidden"
class="bg-transparent font-normal self-center dark:text-gray-100 min-w-fit outline-hidden"
/>/{siblings.length}
</div>
{:else}
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
class="text-sm tracking-widest font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm tracking-widest font-normal self-center dark:text-gray-100 min-w-fit"
on:dblclick={async () => {
messageIndexEdit = true;
@@ -598,7 +598,7 @@
{#if messageIndexEdit}
<div
class="text-sm flex justify-center font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm flex justify-center font-normal self-center dark:text-gray-100 min-w-fit"
>
<input
id="message-index-input-{message.id}"
@@ -619,13 +619,13 @@
messageIndexEdit = false;
}
}}
class="bg-transparent font-semibold self-center dark:text-gray-100 min-w-fit outline-hidden"
class="bg-transparent font-normal self-center dark:text-gray-100 min-w-fit outline-hidden"
/>/{siblings.length}
</div>
{:else}
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
class="text-sm tracking-widest font-semibold self-center dark:text-gray-100 min-w-fit"
class="text-sm tracking-widest font-normal self-center dark:text-gray-100 min-w-fit"
on:dblclick={async () => {
messageIndexEdit = true;
@@ -70,7 +70,7 @@
{#each item.model?.tags.sort((a, b) => a.name.localeCompare(b.name)) as tag}
<Tooltip content={tag.name} className="flex-shrink-0">
<div
class=" text-xs font-semibold px-1 rounded-sm uppercase bg-gray-500/20 text-gray-700 dark:text-gray-200"
class=" text-xs font-normal px-1 rounded-sm uppercase bg-gray-500/20 text-gray-700 dark:text-gray-200"
>
{tag.name}
</div>
@@ -157,7 +157,7 @@
<div slot="tooltip" id="tags-{item.model.id}">
{#each item.model?.tags.sort((a, b) => a.name.localeCompare(b.name)) as tag}
<Tooltip content={tag.name} className="flex-shrink-0">
<div class=" text-xs font-medium rounded-sm uppercase text-white">
<div class=" text-xs font-normal rounded-sm uppercase text-white">
{tag.name}
</div>
</Tooltip>
@@ -732,7 +732,7 @@
{#if filteredItems.length === 0}
{#if items.length === 0 && $user?.role === 'admin'}
<div class="flex flex-col items-start justify-center py-6 px-4 text-start">
<div class="text-sm font-medium text-gray-900 dark:text-gray-100 mb-1">
<div class="text-sm font-normal text-gray-900 dark:text-gray-100 mb-1">
{$i18n.t('No models available')}
</div>
<div class="text-xs text-gray-500 dark:text-gray-400 mb-4">
@@ -740,7 +740,7 @@
</div>
<a
href="/admin/settings/connections"
class="px-4 py-1.5 rounded-xl text-xs font-medium bg-gray-900 dark:bg-white text-white dark:text-gray-900 hover:bg-gray-800 dark:hover:bg-gray-100 transition"
class="px-4 py-1.5 rounded-xl text-xs font-normal bg-gray-900 dark:bg-white text-white dark:text-gray-900 hover:bg-gray-800 dark:hover:bg-gray-100 transition"
on:click={() => {
show = false;
}}
+2 -2
View File
@@ -35,7 +35,7 @@
/>
<div class="ml-2">
<div class=" flex justify-between items-center">
<div class="text-xs text-black dark:text-white font-medium line-clamp-1">
<div class="text-xs text-black dark:text-white font-normal line-clamp-1">
{data?.user?.name ?? 'User'}
</div>
</div>
@@ -56,7 +56,7 @@
<div class="ml-2">
<div class=" flex justify-between items-center">
<div class="text-xs text-black dark:text-white font-medium line-clamp-1">
<div class="text-xs text-black dark:text-white font-normal line-clamp-1">
{data?.model?.name ?? data?.message?.model ?? 'Assistant'}
</div>
+3 -3
View File
@@ -94,7 +94,7 @@
{/if}
<div
class="w-full text-3xl text-gray-800 dark:text-gray-100 text-center flex items-center gap-4 font-primary"
class="w-full text-3xl text-gray-800 dark:text-gray-100 text-center flex items-center gap-4 "
>
<div class="w-full flex flex-col justify-center items-center">
{#if $selectedFolder}
@@ -250,13 +250,13 @@
{#if $selectedFolder}
<div
class="mx-auto px-4 md:max-w-3xl md:px-6 font-primary min-h-62"
class="mx-auto px-4 md:max-w-3xl md:px-6 min-h-62"
in:fade={{ duration: 200, delay: 200 }}
>
<FolderPlaceholder folder={$selectedFolder} />
</div>
{:else}
<div class="mx-auto max-w-2xl font-primary mt-2" in:fade={{ duration: 200, delay: 200 }}>
<div class="mx-auto max-w-2xl mt-2" in:fade={{ duration: 200, delay: 200 }}>
<div class="mx-5">
<Suggestions
suggestionPrompts={atSelectedModel?.info?.meta?.suggestion_prompts ??
@@ -63,7 +63,7 @@
{#if chatList}
{#if chatList.length > 0}
<div class="flex text-xs font-medium mb-1 items-center -mr-0.5">
<div class="flex text-xs font-normal mb-1 items-center -mr-0.5">
<button
class="px-1.5 py-1 cursor-pointer select-none basis-3/5"
on:click={() => setSortKey('title')}
@@ -123,7 +123,7 @@
{#each chatList as chat, idx (chat.id)}
{#if (idx === 0 || (idx > 0 && chat.time_range !== chatList[idx - 1].time_range)) && chat?.time_range}
<div
class="w-full text-xs text-gray-500 dark:text-gray-500 font-medium {idx === 0
class="w-full text-xs text-gray-500 dark:text-gray-500 font-normal {idx === 0
? ''
: 'pt-5'} pb-2 px-2"
>
@@ -71,7 +71,7 @@
<div>
<!-- <div class="mb-1">
<div
class="flex gap-1 scrollbar-none overflow-x-auto w-fit text-center text-sm font-medium rounded-full bg-transparent py-1 touch-auto pointer-events-auto"
class="flex gap-1 scrollbar-none overflow-x-auto w-fit text-center text-sm font-normal rounded-full bg-transparent py-1 touch-auto pointer-events-auto"
>
<button
class="min-w-fit p-1.5 {selectedTab === 'knowledge'
@@ -47,7 +47,7 @@
<div id="tab-about" class="flex flex-col h-full justify-between space-y-3 text-sm">
<div class=" space-y-3 overflow-y-scroll max-h-[28rem] md:max-h-full">
<div>
<div class=" mb-2.5 text-sm font-medium flex space-x-2 items-center">
<div class=" mb-2.5 text-sm font-normal flex space-x-2 items-center">
<div>
{$WEBUI_NAME}
{$i18n.t('Version')}
@@ -86,7 +86,7 @@
{#if $config?.features?.enable_version_update_check}
<button
class=" text-xs px-3 py-1.5 bg-gray-100 hover:bg-gray-200 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-lg font-medium"
class=" text-xs px-3 py-1.5 bg-gray-100 hover:bg-gray-200 dark:bg-gray-850 dark:hover:bg-gray-800 transition rounded-lg font-normal"
on:click={() => {
checkForVersionUpdates();
}}
@@ -101,7 +101,7 @@
<hr class=" border-gray-100/30 dark:border-gray-850/30" />
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Ollama Version')}</div>
<div class=" mb-2.5 text-sm font-normal">{$i18n.t('Ollama Version')}</div>
<div class="flex w-full">
<div class="flex-1 text-xs text-gray-700 dark:text-gray-200">
{ollamaVersion ?? 'N/A'}
@@ -115,7 +115,7 @@
{#if $config?.license_metadata}
<div class="mb-2 text-xs">
{#if !$WEBUI_NAME.includes('Open WebUI')}
<span class=" text-gray-500 dark:text-gray-300 font-medium">{$WEBUI_NAME}</span> -
<span class=" text-gray-500 dark:text-gray-300 font-normal">{$WEBUI_NAME}</span> -
{/if}
<span class=" capitalize">{$config?.license_metadata?.type}</span> license purchased by
@@ -167,7 +167,7 @@
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t('Created by')}
<a
class=" text-gray-500 dark:text-gray-300 font-medium"
class=" text-gray-500 dark:text-gray-300 font-normal"
href="https://github.com/tjbck"
target="_blank">Timothy J. Baek</a
>
+14 -14
View File
@@ -128,14 +128,14 @@
<div class=" overflow-y-scroll max-h-[28rem] md:max-h-full">
<div class="space-y-1">
<div>
<div class="text-base font-medium">{$i18n.t('Your Account')}</div>
<div class="text-base font-normal">{$i18n.t('Your Account')}</div>
<div class="text-xs text-gray-500 mt-0.5">
{$i18n.t('Manage your account information.')}
</div>
</div>
<!-- <div class=" text-sm font-medium">{$i18n.t('Account')}</div> -->
<!-- <div class=" text-sm font-normal">{$i18n.t('Account')}</div> -->
<div class="flex space-x-5 my-4">
<UserProfileImage bind:profileImageUrl user={$user} />
@@ -143,7 +143,7 @@
<div class="flex flex-1 flex-col">
<div class=" flex-1">
<div class="flex flex-col w-full">
<div class=" mb-1 text-xs font-medium">{$i18n.t('Name')}</div>
<div class=" mb-1 text-xs font-normal">{$i18n.t('Name')}</div>
<div class="flex-1">
<input
@@ -158,7 +158,7 @@
</div>
<div class="flex flex-col w-full mt-2">
<div class=" mb-1 text-xs font-medium">{$i18n.t('Bio')}</div>
<div class=" mb-1 text-xs font-normal">{$i18n.t('Bio')}</div>
<div class="flex-1">
<Textarea
@@ -172,7 +172,7 @@
</div>
<div class="flex flex-col w-full mt-2">
<div class=" mb-1 text-xs font-medium">{$i18n.t('Gender')}</div>
<div class=" mb-1 text-xs font-normal">{$i18n.t('Gender')}</div>
<div class="flex-1">
<select
@@ -210,7 +210,7 @@
</div>
<div class="flex flex-col w-full mt-2">
<div class=" mb-1 text-xs font-medium">{$i18n.t('Birth Date')}</div>
<div class=" mb-1 text-xs font-normal">{$i18n.t('Birth Date')}</div>
<div class="flex-1">
<input
@@ -230,7 +230,7 @@
{#if $config?.features?.enable_user_webhooks && ($user?.role === 'admin' || ($user?.permissions?.features?.webhooks ?? false))}
<div class="mt-2">
<div class="flex flex-col w-full">
<div class=" mb-1 text-xs font-medium">{$i18n.t('Notification Webhook')}</div>
<div class=" mb-1 text-xs font-normal">{$i18n.t('Notification Webhook')}</div>
<div class="flex-1">
<input
@@ -256,9 +256,9 @@
{#if ($config?.features?.enable_api_keys ?? true) && ($user?.role === 'admin' || ($user?.permissions?.features?.api_keys ?? false))}
<div class="flex justify-between items-center text-sm mt-2">
<div class=" font-medium">{$i18n.t('API keys')}</div>
<div class=" font-normal">{$i18n.t('API keys')}</div>
<button
class=" text-xs font-medium text-gray-500"
class=" text-xs font-normal text-gray-500"
type="button"
on:click={() => {
showAPIKeys = !showAPIKeys;
@@ -271,7 +271,7 @@
{#if $user?.role === 'admin'}
<div class="justify-between w-full mt-2">
<div class="flex justify-between w-full">
<div class="self-center text-xs font-medium mb-1">{$i18n.t('JWT Token')}</div>
<div class="self-center text-xs font-normal mb-1">{$i18n.t('JWT Token')}</div>
</div>
<div class="flex">
@@ -329,7 +329,7 @@
<div class="justify-between w-full mt-2">
{#if $user?.role === 'admin'}
<div class="flex justify-between w-full">
<div class="self-center text-xs font-medium mb-1">{$i18n.t('API Key')}</div>
<div class="self-center text-xs font-normal mb-1">{$i18n.t('API Key')}</div>
</div>
{/if}
<div class="flex">
@@ -407,7 +407,7 @@
</Tooltip>
{:else}
<button
class="flex gap-1.5 items-center font-medium px-3.5 py-1.5 rounded-lg bg-gray-100/70 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-850 transition"
class="flex gap-1.5 items-center font-normal px-3.5 py-1.5 rounded-lg bg-gray-100/70 hover:bg-gray-100 dark:bg-gray-850 dark:hover:bg-gray-850 transition"
on:click={() => {
createAPIKeyHandler();
}}
@@ -425,9 +425,9 @@
{/if}
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<div class="flex justify-end pt-3 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
on:click={async () => {
const res = await submitHandler();
@@ -44,9 +44,9 @@
}}
>
<div class="flex justify-between items-center text-sm">
<div class=" font-medium">{$i18n.t('Change Password')}</div>
<div class=" font-normal">{$i18n.t('Change Password')}</div>
<button
class=" text-xs font-medium text-gray-500"
class=" text-xs font-normal text-gray-500"
type="button"
on:click={() => {
show = !show;
@@ -104,7 +104,7 @@
<div class="mt-3 flex justify-end">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
>
{$i18n.t('Update password')}
</button>
+16 -16
View File
@@ -177,11 +177,11 @@
>
<div class=" space-y-3 overflow-y-scroll max-h-[28rem] md:max-h-full">
<div>
<div class=" mb-1 text-sm font-medium">{$i18n.t('STT Settings')}</div>
<div class=" mb-1 text-sm font-normal">{$i18n.t('STT Settings')}</div>
{#if $config.audio.stt.engine !== 'web'}
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Speech-to-Text Engine')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Speech-to-Text Engine')}</div>
<div class="flex items-center relative">
<select
class="w-fit pr-8 rounded-sm px-2 p-1 text-xs bg-transparent outline-hidden text-right"
@@ -196,7 +196,7 @@
</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Language')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Language')}</div>
<div class="flex items-center relative text-xs px-3">
<Tooltip
@@ -218,7 +218,7 @@
{/if}
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">
<div class=" self-center text-xs font-normal">
{$i18n.t('Instant Auto-Send After Voice Transcription')}
</div>
@@ -241,10 +241,10 @@
</div>
<div>
<div class=" mb-1 text-sm font-medium">{$i18n.t('TTS Settings')}</div>
<div class=" mb-1 text-sm font-normal">{$i18n.t('TTS Settings')}</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Text-to-Speech Engine')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Text-to-Speech Engine')}</div>
<div class="flex items-center relative">
<select
class="w-fit pr-8 rounded-sm px-2 p-1 text-xs bg-transparent outline-hidden text-right"
@@ -260,7 +260,7 @@
{#if TTSEngine === 'browser-kokoro'}
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Kokoro.js Dtype')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Kokoro.js Dtype')}</div>
<div class="flex items-center relative">
<select
class="w-fit pr-8 rounded-sm px-2 p-1 text-xs bg-transparent outline-hidden text-right"
@@ -279,7 +279,7 @@
{/if}
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Auto-Playback Response')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Auto-Playback Response')}</div>
<button
class="p-1 px-3 text-xs flex rounded-sm transition"
@@ -299,7 +299,7 @@
</div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Speech Playback Speed')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Speech Playback Speed')}</div>
<div class="flex items-center relative text-xs px-3">
<input
@@ -320,7 +320,7 @@
{#if TTSEngine === 'browser-kokoro'}
{#if TTSModel}
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Voice')}</div>
<div class=" mb-2.5 text-sm font-normal">{$i18n.t('Set Voice')}</div>
<div class="flex w-full">
<div class="flex-1">
<input
@@ -341,10 +341,10 @@
</div>
{:else}
<div>
<div class=" mb-2.5 text-sm font-medium flex gap-2 items-center">
<div class=" mb-2.5 text-sm font-normal flex gap-2 items-center">
<Spinner className="size-4" />
<div class=" text-sm font-medium shimmer">
<div class=" text-sm font-normal shimmer">
{$i18n.t('Loading Kokoro.js...')}
{TTSModelProgress && TTSModelProgress.status === 'progress'
? `(${Math.round(TTSModelProgress.progress * 10) / 10}%)`
@@ -359,7 +359,7 @@
{/if}
{:else if $config.audio.tts.engine === ''}
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Voice')}</div>
<div class=" mb-2.5 text-sm font-normal">{$i18n.t('Set Voice')}</div>
<div class="flex w-full">
<div class="flex-1">
<select
@@ -390,7 +390,7 @@
</div>
{:else if $config.audio.tts.engine !== ''}
<div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('Set Voice')}</div>
<div class=" mb-2.5 text-sm font-normal">{$i18n.t('Set Voice')}</div>
<div class="flex w-full">
<div class="flex-1">
<input
@@ -412,9 +412,9 @@
{/if}
</div>
<div class="flex justify-end text-sm font-medium">
<div class="flex justify-end text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -82,7 +82,7 @@
<div class="pr-1.5">
<div class="">
<div class="flex justify-between items-center mb-0.5">
<div class="font-medium">{$i18n.t('Manage Direct Connections')}</div>
<div class="font-normal">{$i18n.t('Manage Direct Connections')}</div>
<Tooltip content={$i18n.t(`Add Connection`)}>
<button
@@ -151,9 +151,9 @@
{/if}
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<div class="flex justify-end pt-3 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -169,7 +169,7 @@
/>
<div>
<div class="mb-1 text-sm font-medium">{$i18n.t('Chats')}</div>
<div class="mb-1 text-sm font-normal">{$i18n.t('Chats')}</div>
{#if $user?.role === 'admin' || ($user.permissions?.chat?.import ?? true)}
<div>
@@ -267,7 +267,7 @@
</div>
<div>
<div class="mb-1 text-sm font-medium">{$i18n.t('Files')}</div>
<div class="mb-1 text-sm font-normal">{$i18n.t('Files')}</div>
<div>
<div class="py-0.5 flex w-full justify-between">
+10 -10
View File
@@ -208,10 +208,10 @@
<div class="flex flex-col h-full justify-between text-sm" id="tab-general">
<div class=" overflow-y-scroll max-h-[28rem] md:max-h-full">
<div class="">
<div class=" mb-1 text-sm font-medium">{$i18n.t('WebUI Settings')}</div>
<div class=" mb-1 text-sm font-normal">{$i18n.t('WebUI Settings')}</div>
<div class="flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Theme')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Theme')}</div>
<div class="flex items-center relative">
<select
class="w-fit pr-8 rounded-sm py-2 px-2 text-xs bg-transparent text-right {$settings.highContrastMode
@@ -233,7 +233,7 @@
</div>
<div class=" flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Language')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Language')}</div>
<div class="flex items-center relative">
<select
class="w-fit pr-8 rounded-sm py-2 px-2 text-xs bg-transparent text-right {$settings.highContrastMode
@@ -259,7 +259,7 @@
>
Couldn't find your language?
<a
class="font-medium underline {($settings?.highContrastMode ?? false)
class="font-normal underline {($settings?.highContrastMode ?? false)
? 'text-gray-700 dark:text-gray-200'
: 'text-gray-300'}"
href="https://github.com/open-webui/open-webui/blob/main/docs/CONTRIBUTING.md#-translations-and-internationalization"
@@ -272,7 +272,7 @@
<div>
<div class=" py-0.5 flex w-full justify-between">
<div class=" self-center text-xs font-medium">{$i18n.t('Notifications')}</div>
<div class=" self-center text-xs font-normal">{$i18n.t('Notifications')}</div>
<button
class="p-1 px-3 text-xs flex rounded-sm transition"
@@ -297,7 +297,7 @@
<hr class="border-gray-100/30 dark:border-gray-850/30 my-3" />
<div>
<div class=" my-2.5 text-sm font-medium">{$i18n.t('System Prompt')}</div>
<div class=" my-2.5 text-sm font-normal">{$i18n.t('System Prompt')}</div>
<Textarea
bind:value={system}
className={'w-full text-sm outline-hidden resize-vertical' +
@@ -313,9 +313,9 @@
{#if $user?.role === 'admin' || (($user?.permissions.chat?.controls ?? true) && ($user?.permissions.chat?.params ?? true))}
<div class="mt-2 space-y-3 pr-1.5">
<div class="flex justify-between items-center text-sm">
<div class=" font-medium">{$i18n.t('Advanced Parameters')}</div>
<div class=" font-normal">{$i18n.t('Advanced Parameters')}</div>
<button
class=" text-xs font-medium {($settings?.highContrastMode ?? false)
class=" text-xs font-normal {($settings?.highContrastMode ?? false)
? 'text-gray-800 dark:text-gray-100'
: 'text-gray-400 dark:text-gray-500'}"
type="button"
@@ -333,9 +333,9 @@
{/if}
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<div class="flex justify-end pt-3 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
on:click={() => {
saveHandler();
}}
@@ -86,7 +86,7 @@
<div class="pr-1.5">
<div class="">
<div class="flex justify-between items-center mb-0.5">
<div class="font-medium">{$i18n.t('Manage Tool Servers')}</div>
<div class="font-normal">{$i18n.t('Manage Tool Servers')}</div>
<Tooltip content={$i18n.t('Add Connection')}>
<button
@@ -169,9 +169,9 @@
{/if}
</div>
<div class="flex justify-end pt-3 text-sm font-medium">
<div class="flex justify-end pt-3 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -43,7 +43,7 @@
<div>
<div class="flex justify-between items-center mb-1">
<div class="flex items-center gap-2">
<div class="font-medium">{$i18n.t('Open Terminal')}</div>
<div class="font-normal">{$i18n.t('Open Terminal')}</div>
</div>
<Tooltip content={$i18n.t('Add Connection')}>
<button
@@ -337,7 +337,7 @@
<div class=" space-y-3 overflow-y-scroll max-h-[28rem] md:max-h-full">
<div>
<h1 class=" mb-2 text-sm font-medium">{$i18n.t('UI')}</h1>
<h1 class=" mb-2 text-sm font-normal">{$i18n.t('UI')}</h1>
<div>
<div class="py-0.5 flex w-full justify-between">
@@ -592,7 +592,7 @@
</div>
{/if}
<div class=" my-2 text-sm font-medium">{$i18n.t('Chat')}</div>
<div class=" my-2 text-sm font-normal">{$i18n.t('Chat')}</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
@@ -1158,7 +1158,7 @@
</div>
</div>
<div class=" my-2 text-sm font-medium">{$i18n.t('Input')}</div>
<div class=" my-2 text-sm font-normal">{$i18n.t('Input')}</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
@@ -1282,7 +1282,7 @@
</div>
</div>
<div class=" my-2 text-sm font-medium">{$i18n.t('Artifacts')}</div>
<div class=" my-2 text-sm font-normal">{$i18n.t('Artifacts')}</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
@@ -1341,7 +1341,7 @@
</div>
</div>
<div class=" my-2 text-sm font-medium">{$i18n.t('Voice')}</div>
<div class=" my-2 text-sm font-normal">{$i18n.t('Voice')}</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
@@ -1381,7 +1381,7 @@
</div>
</div>
<div class=" my-2 text-sm font-medium">{$i18n.t('File')}</div>
<div class=" my-2 text-sm font-normal">{$i18n.t('File')}</div>
<div>
<div class=" py-0.5 flex w-full justify-between">
@@ -1438,9 +1438,9 @@
</div>
</div>
<div class="flex justify-end text-sm font-medium">
<div class="flex justify-end text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -30,7 +30,7 @@
<Modal size="sm" bind:show>
<div>
<div class=" flex justify-between dark:text-gray-100 px-5 pt-4 pb-1.5">
<h1 class="text-lg font-medium self-center font-primary">
<h1 class="text-lg font-normal self-center ">
{$i18n.t('Quick Actions')}
</h1>
<button
@@ -55,7 +55,7 @@
>
<div>
<div class="text-xs flex items-center justify-between mb-2">
<div class="font-medium">{$i18n.t('Actions')}</div>
<div class="font-normal">{$i18n.t('Actions')}</div>
<div class="flex items-center gap-2 text-gray-700 dark:text-gray-300">
<button
@@ -169,9 +169,9 @@
{/if}
</div>
<div class="flex justify-end text-sm font-medium">
<div class="flex justify-end text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -26,7 +26,7 @@
<Modal size="sm" bind:show>
<div>
<div class=" flex justify-between dark:text-gray-100 px-5 pt-4 pb-1.5">
<h1 class="text-lg font-medium self-center font-primary">
<h1 class="text-lg font-normal self-center ">
{$i18n.t('Manage')}
</h1>
<button
@@ -93,9 +93,9 @@
</div>
</div>
<div class="flex justify-end text-sm font-medium">
<div class="flex justify-end text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -37,10 +37,10 @@
'This is an experimental feature, it may not function as expected and is subject to change at any time.'
)}
>
<div class="flex items-center gap-2 text-sm font-medium">
<div class="flex items-center gap-2 text-sm font-normal">
{$i18n.t('Memory')}
<span
class="text-[0.65rem] font-medium uppercase px-1.5 py-0.5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-500 dark:text-gray-400"
class="text-[0.65rem] font-normal uppercase px-1.5 py-0.5 rounded-full bg-gray-100 dark:bg-gray-800 text-gray-500 dark:text-gray-400"
>{$i18n.t('Experimental')}</span
>
</div>
@@ -68,7 +68,7 @@
<div class="mt-3 mb-1 ml-1">
<button
type="button"
class="px-3.5 py-1.5 font-medium hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-300 dark:outline-gray-800 rounded-3xl"
class="px-3.5 py-1.5 font-normal hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-300 dark:outline-gray-800 rounded-3xl"
on:click={() => {
showManageModal = true;
}}
@@ -78,9 +78,9 @@
</div>
</div>
<div class="flex justify-end text-sm font-medium">
<div class="flex justify-end text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="submit"
>
{$i18n.t('Save')}
@@ -106,10 +106,10 @@
<div>
<div class="flex justify-between dark:text-gray-300 px-5 pt-4 pb-1">
<div class="flex items-center gap-2">
<div class="text-lg font-medium">{$i18n.t('Memory')}</div>
<div class="text-lg font-normal">{$i18n.t('Memory')}</div>
{#if !loading}
<div class="text-lg font-medium text-gray-500 dark:text-gray-500">
<div class="text-lg font-normal text-gray-500 dark:text-gray-500">
{memories.length}
</div>
{/if}
@@ -242,7 +242,7 @@
>
<button
class="px-3.5 py-1.5 font-medium hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-100 dark:outline-gray-800 rounded-3xl"
class="px-3.5 py-1.5 font-normal hover:bg-black/5 dark:hover:bg-white/5 outline outline-1 outline-gray-100 dark:outline-gray-800 rounded-3xl"
on:click={() => {
selectedMemory = null;
showMemoryModal = true;
@@ -54,7 +54,7 @@
<Modal bind:show size="sm">
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-2">
<div class=" text-lg font-medium self-center">
<div class=" text-lg font-normal self-center">
{#if edit}
{$i18n.t('Edit Memory')}
{:else}
@@ -114,9 +114,9 @@
</div>
</div>
<div class="flex justify-end pt-1 text-sm font-medium">
<div class="flex justify-end pt-1 text-sm font-normal">
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex items-center gap-2 whitespace-nowrap {loading
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full flex items-center gap-2 whitespace-nowrap {loading
? ' cursor-not-allowed'
: ''}"
type="submit"
@@ -318,7 +318,7 @@
<div class="w-full">
{#if completed}
<div class="px-5.5 py-5">
<div class="mb-1 text-xl font-medium">{$i18n.t('Sync Complete!')}</div>
<div class="mb-1 text-xl font-normal">{$i18n.t('Sync Complete!')}</div>
<div class="mb-3 text-xs text-gray-500">
{$i18n.t('Your usage stats have been successfully synced.')}
</div>
@@ -336,7 +336,7 @@
</div>
{:else if error}
<div class="px-5.5 py-5">
<div class="mb-1 text-xl font-medium">{$i18n.t('Sync Failed')}</div>
<div class="mb-1 text-xl font-normal">{$i18n.t('Sync Failed')}</div>
<div class="mb-3 text-xs text-gray-500">
{errorMessage || $i18n.t('There was an error syncing your stats. Please try again.')}
</div>
@@ -355,7 +355,7 @@
</div>
{:else}
<div class="flex justify-between px-5 pt-4 pb-0.5">
<div class="text-lg font-medium self-center">{$i18n.t('Sync Usage Stats')}</div>
<div class="text-lg font-normal self-center">{$i18n.t('Sync Usage Stats')}</div>
<button
class="self-center"
aria-label={$i18n.t('Close modal')}
@@ -380,7 +380,7 @@
</div>
<div class="mt-3 text-xs text-gray-500">
<div class="font-medium text-gray-900 dark:text-gray-100 mb-1">
<div class="font-normal text-gray-900 dark:text-gray-100 mb-1">
{$i18n.t('What is shared:')}
</div>
<ul class="list-disc list-inside space-y-0.5 ml-1 mb-2">
@@ -391,7 +391,7 @@
<li>{$i18n.t('User ratings (thumbs up/down)')}</li>
</ul>
<div class="font-medium text-gray-900 dark:text-gray-100 mb-1">
<div class="font-normal text-gray-900 dark:text-gray-100 mb-1">
{$i18n.t('What is NOT shared:')}
</div>
<ul class="list-disc list-inside space-y-0.5 ml-1">
@@ -465,7 +465,7 @@
</div>
<button
class="px-4 py-2 rounded-full text-sm font-medium bg-gray-100 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 text-gray-900 dark:text-gray-100 transition disabled:cursor-not-allowed"
class="px-4 py-2 rounded-full text-sm font-normal bg-gray-100 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700 text-gray-900 dark:text-gray-100 transition disabled:cursor-not-allowed"
on:click={() => {
if (syncing) {
cancelOperation();
@@ -478,7 +478,7 @@
</button>
<button
class="px-3.5 py-1.5 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition-colors rounded-full"
class="px-3.5 py-1.5 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition-colors rounded-full"
on:click={syncStats}
disabled={syncing}
>
+1 -1
View File
@@ -591,7 +591,7 @@
<Modal size="2xl" bind:show>
<div class="text-gray-700 dark:text-gray-100 mx-1">
<div class=" flex justify-between dark:text-gray-300 px-4 pt-4 pb-1 md:pb-2">
<div class=" text-lg font-medium self-center">{$i18n.t('Settings')}</div>
<div class=" text-lg font-normal self-center">{$i18n.t('Settings')}</div>
<button
aria-label={$i18n.t('Close settings modal')}
class="self-center"
@@ -112,7 +112,7 @@
<Modal bind:show size="md">
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-0.5">
<div class=" text-lg font-medium self-center">{$i18n.t('Share Chat')}</div>
<div class=" text-lg font-normal self-center">{$i18n.t('Share Chat')}</div>
<button
class="self-center"
aria-label={$i18n.t('Close')}
@@ -168,7 +168,7 @@
<div class="flex justify-end gap-1 mt-3">
{#if $config?.features.enable_community_sharing}
<button
class="flex items-center gap-1 px-3.5 py-2 text-sm font-medium bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:text-white dark:hover:bg-gray-800 transition rounded-full"
class="flex items-center gap-1 px-3.5 py-2 text-sm font-normal bg-gray-100 hover:bg-gray-200 text-gray-800 dark:bg-gray-850 dark:text-white dark:hover:bg-gray-800 transition rounded-full"
type="button"
on:click={() => {
shareChat();
@@ -179,7 +179,7 @@
{/if}
<button
class="flex items-center gap-1 px-3.5 py-2 text-sm font-medium bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
class="flex items-center gap-1 px-3.5 py-2 text-sm font-normal bg-black hover:bg-gray-900 text-white dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full"
type="button"
id="copy-and-share-chat-button"
on:click={async () => {
@@ -46,7 +46,7 @@
<Modal bind:show>
<div class="text-gray-700 dark:text-gray-100 px-5 py-4">
<div class="flex justify-between dark:text-gray-300 pb-2">
<div class="text-lg font-medium self-center">{$i18n.t('Keyboard Shortcuts')}</div>
<div class="text-lg font-normal self-center">{$i18n.t('Keyboard Shortcuts')}</div>
<button class="self-center" aria-label={$i18n.t('Close')} on:click={() => (show = false)}>
<XMark className={'size-5'} />
</button>
+3 -3
View File
@@ -19,7 +19,7 @@
<Modal bind:show size="md">
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-0.5">
<div class=" text-lg font-medium self-center">{$i18n.t('Available Skills')}</div>
<div class=" text-lg font-normal self-center">{$i18n.t('Available Skills')}</div>
<button
class="self-center"
aria-label={$i18n.t('Close')}
@@ -33,7 +33,7 @@
{#if selectedSkills.length > 0}
<div class=" flex justify-between dark:text-gray-300 px-5 pb-1">
<div class=" text-base font-medium self-center">{$i18n.t('Skills')}</div>
<div class=" text-base font-normal self-center">{$i18n.t('Skills')}</div>
</div>
<div class="px-5 pb-5 w-full flex flex-col justify-center">
@@ -41,7 +41,7 @@
{#each selectedSkills as skill}
<Collapsible buttonClassName="w-full mb-0.5">
<div class="truncate">
<div class="text-sm font-medium dark:text-gray-100 text-gray-800 truncate">
<div class="text-sm font-normal dark:text-gray-100 text-gray-800 truncate">
{skill?.name}
</div>
+3 -3
View File
@@ -64,7 +64,7 @@
}
</script>
<div class="mb-1 flex gap-1 text-xs font-medium items-center text-gray-600 dark:text-gray-400">
<div class="mb-1 flex gap-1 text-xs font-normal items-center text-gray-600 dark:text-gray-400">
{#if filteredPrompts.length > 0}
<Bolt />
{$i18n.t('Suggested')}
@@ -97,7 +97,7 @@
<div class="flex flex-col text-left">
{#if prompt.title && prompt.title[0] !== ''}
<div
class="font-medium dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1"
class="font-normal dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1"
>
{prompt.title[0]}
</div>
@@ -106,7 +106,7 @@
</div>
{:else}
<div
class="font-medium dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1"
class="font-normal dark:text-gray-300 dark:group-hover:text-gray-200 transition line-clamp-1"
>
{prompt.content}
</div>
@@ -34,7 +34,7 @@
<Modal bind:show size="md">
<div>
<div class=" flex justify-between dark:text-gray-300 px-5 pt-4 pb-0.5">
<div class=" text-lg font-medium self-center">{$i18n.t('Available Tools')}</div>
<div class=" text-lg font-normal self-center">{$i18n.t('Available Tools')}</div>
<button
class="self-center"
aria-label={$i18n.t('Close')}
@@ -49,7 +49,7 @@
{#if selectedTools.length > 0}
{#if $toolServers.length > 0}
<div class=" flex justify-between dark:text-gray-300 px-5 pb-1">
<div class=" text-base font-medium self-center">{$i18n.t('Tools')}</div>
<div class=" text-base font-normal self-center">{$i18n.t('Tools')}</div>
</div>
{/if}
@@ -65,7 +65,7 @@
>
<div class="min-w-0 flex-1">
<div class="flex items-center gap-1 min-w-0">
<div class="text-sm font-medium dark:text-gray-100 text-gray-800 truncate">
<div class="text-sm font-normal dark:text-gray-100 text-gray-800 truncate">
{tool?.name}
</div>
{#if status}
@@ -107,7 +107,7 @@
{#if $toolServers.length > 0}
<div class=" flex justify-between dark:text-gray-300 px-5 pb-0.5">
<div class=" text-base font-medium self-center">{$i18n.t('Tool Servers')}</div>
<div class=" text-base font-normal self-center">{$i18n.t('Tool Servers')}</div>
</div>
<div class="px-5 pb-5 w-full flex flex-col justify-center">
@@ -122,7 +122,7 @@
{#each $toolServers as toolServer}
<Collapsible buttonClassName="w-full" chevron>
<div>
<div class="text-sm font-medium dark:text-gray-100 text-gray-800">
<div class="text-sm font-normal dark:text-gray-100 text-gray-800">
{toolServer?.openapi?.info?.title} - v{toolServer?.openapi?.info?.version}
</div>
@@ -138,7 +138,7 @@
<div slot="content">
{#each toolServer?.specs ?? [] as tool_spec}
<div class="my-1">
<div class="font-medium text-gray-800 dark:text-gray-100">
<div class="font-normal text-gray-800 dark:text-gray-100">
{tool_spec?.name}
</div>