refac
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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')}
|
||||
|
||||
@@ -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')}
|
||||
|
||||
@@ -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,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;
|
||||
}}
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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}
|
||||
>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user