mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-28 05:27:35 +00:00
refac
This commit is contained in:
parent
a17cb174ad
commit
60feca71a6
5 changed files with 889 additions and 37 deletions
|
|
@ -30,8 +30,6 @@
|
|||
type TerminalCwd
|
||||
} from '$lib/apis/terminal';
|
||||
import { isCodeFile } from '$lib/utils/codeHighlight';
|
||||
import Folder from '../icons/Folder.svelte';
|
||||
import Document from '../icons/Document.svelte';
|
||||
import PenAlt from '../icons/PenAlt.svelte';
|
||||
import ZoomReset from '../icons/ZoomReset.svelte';
|
||||
import { isSavedChatId, isTemporaryChatId } from '$lib/utils/chatId';
|
||||
|
|
@ -43,6 +41,8 @@
|
|||
import FileNavToolbar from './FileNav/FileNavToolbar.svelte';
|
||||
import FilePreview from './FileNav/FilePreview.svelte';
|
||||
import FileEntryRow from './FileNav/FileEntryRow.svelte';
|
||||
import Icon from './FileNav/Icon.svelte';
|
||||
import FileTypeIcon from './FileNav/FileTypeIcon.svelte';
|
||||
import BulkActionBar from './FileNav/BulkActionBar.svelte';
|
||||
import PortList from './FileNav/PortList.svelte';
|
||||
import PortPreview from './FileNav/PortPreview.svelte';
|
||||
|
|
@ -1014,14 +1014,14 @@
|
|||
<div class="hidden"></div>
|
||||
{:else if terminalChatContextPending}
|
||||
<div class="flex-1 flex flex-col items-center justify-center p-6 text-center">
|
||||
<Folder className="size-6 text-gray-300 dark:text-gray-600 mb-2" />
|
||||
<Icon name="terminal" size={24} strokeWidth={1.4} class="text-gray-300 dark:text-gray-600 mb-2" />
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400">
|
||||
{$i18n.t('Start the chat to use this terminal.')}
|
||||
</div>
|
||||
</div>
|
||||
{:else if !selectedTerminal}
|
||||
<div class="flex-1 flex flex-col items-center justify-center p-6 text-center">
|
||||
<Folder className="size-6 text-gray-300 dark:text-gray-600 mb-2" />
|
||||
<Icon name="terminal" size={24} strokeWidth={1.4} class="text-gray-300 dark:text-gray-600 mb-2" />
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400 mb-1">
|
||||
{$i18n.t('No Terminal connection configured.')}
|
||||
</div>
|
||||
|
|
@ -1451,7 +1451,7 @@
|
|||
{#if !loading && !error && !uploading && !($selectedTerminalId && $terminalServers === null)}
|
||||
{#if creatingFolder}
|
||||
<div class="flex items-center gap-2 px-3 py-1.5">
|
||||
<Folder className="size-4 shrink-0 text-blue-400 dark:text-blue-300" />
|
||||
<FileTypeIcon name={newFolderName} type="directory" />
|
||||
<input
|
||||
bind:this={newFolderInput}
|
||||
bind:value={newFolderName}
|
||||
|
|
@ -1470,7 +1470,7 @@
|
|||
{/if}
|
||||
{#if creatingFile}
|
||||
<div class="flex items-center gap-2 px-3 py-1.5">
|
||||
<Document className="size-4 shrink-0 text-gray-400 dark:text-gray-500" />
|
||||
<FileTypeIcon name={newFileName} type="file" />
|
||||
<input
|
||||
bind:this={newFileInput}
|
||||
bind:value={newFileName}
|
||||
|
|
@ -1554,18 +1554,7 @@
|
|||
class="w-full flex items-center gap-2 px-3 py-1 mb-0.5 text-xs text-gray-500 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800/50 transition"
|
||||
on:click={toggleTerminal}
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
fill="currentColor"
|
||||
class="size-3.5"
|
||||
>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M3.25 3A2.25 2.25 0 0 0 1 5.25v9.5A2.25 2.25 0 0 0 3.25 17h13.5A2.25 2.25 0 0 0 19 14.75v-9.5A2.25 2.25 0 0 0 16.75 3H3.25Zm.943 8.752a.75.75 0 0 1 .055-1.06L6.128 9l-1.88-1.693a.75.75 0 1 1 1.004-1.114l2.5 2.25a.75.75 0 0 1 0 1.114l-2.5 2.25a.75.75 0 0 1-1.06-.055ZM9.75 10.25a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5h-2.5Z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
<Icon name="terminal" size={14} strokeWidth={1.4} class="shrink-0" />
|
||||
<span class="font-normal">{$i18n.t('Terminal')}</span>
|
||||
|
||||
{#if terminalExpanded}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
import Dropdown from '$lib/components/common/Dropdown.svelte';
|
||||
import DropdownMenu from '$lib/components/common/DropdownMenu.svelte';
|
||||
import Folder from '../../icons/Folder.svelte';
|
||||
import EllipsisHorizontal from '../../icons/EllipsisHorizontal.svelte';
|
||||
import GarbageBin from '../../icons/GarbageBin.svelte';
|
||||
import Pencil from '../../icons/Pencil.svelte';
|
||||
import Clipboard from '../../icons/Clipboard.svelte';
|
||||
import FileTypeIcon from './FileTypeIcon.svelte';
|
||||
|
||||
const i18n: any = getContext('i18n');
|
||||
|
||||
|
|
@ -250,24 +250,7 @@
|
|||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
{#if entry.type === 'directory'}
|
||||
<Folder className="size-4 shrink-0 text-blue-400 dark:text-blue-300" />
|
||||
{:else}
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="1.5"
|
||||
class="size-4 shrink-0 text-gray-400"
|
||||
>
|
||||
<path
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"
|
||||
/>
|
||||
</svg>
|
||||
{/if}
|
||||
<FileTypeIcon name={entry.name} type={entry.type} />
|
||||
{#if renaming}
|
||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||
<input
|
||||
|
|
|
|||
15
src/lib/components/chat/FileNav/FileTypeIcon.svelte
Normal file
15
src/lib/components/chat/FileNav/FileTypeIcon.svelte
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<script lang="ts">
|
||||
import Icon from './Icon.svelte';
|
||||
import { fileIconName } from './fileIcon';
|
||||
|
||||
export let name = '';
|
||||
export let type = 'file';
|
||||
export let size = 14;
|
||||
export let strokeWidth = 1.4;
|
||||
|
||||
$: iconName = fileIconName(name, type);
|
||||
$: tone =
|
||||
type === 'directory' ? 'text-gray-500 dark:text-gray-400' : 'text-gray-400 dark:text-gray-500';
|
||||
</script>
|
||||
|
||||
<Icon name={iconName} {size} {strokeWidth} class={`shrink-0 ${tone}`} />
|
||||
703
src/lib/components/chat/FileNav/Icon.svelte
Normal file
703
src/lib/components/chat/FileNav/Icon.svelte
Normal file
|
|
@ -0,0 +1,703 @@
|
|||
<script lang="ts">
|
||||
/**
|
||||
* Unified icon component using iconoir SVG paths.
|
||||
* Usage: <Icon name="folder" size={16} />
|
||||
*/
|
||||
interface Props {
|
||||
name: string;
|
||||
size?: number;
|
||||
strokeWidth?: number;
|
||||
class?: string;
|
||||
}
|
||||
|
||||
let { name, size = 16, strokeWidth = 1.5, class: className = '' }: Props = $props();
|
||||
</script>
|
||||
|
||||
<svg
|
||||
width={size}
|
||||
height={size}
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width={strokeWidth}
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
class={className}
|
||||
>
|
||||
{#if name === 'folder'}
|
||||
<path
|
||||
d="M2 11V4.6C2 4.26863 2.26863 4 2.6 4H8.77805C8.92127 4 9.05977 4.05124 9.16852 4.14445L12.3315 6.85555C12.4402 6.94876 12.5787 7 12.722 7H21.4C21.7314 7 22 7.26863 22 7.6V11M2 11V19.4C2 19.7314 2.26863 20 2.6 20H21.4C21.7314 20 22 19.7314 22 19.4V11M2 11H22"
|
||||
/>
|
||||
{:else if name === 'page'}
|
||||
<path
|
||||
d="M4 21.4V2.6C4 2.26863 4.26863 2 4.6 2H16.2515C16.4106 2 16.5632 2.06321 16.6757 2.17574L19.8243 5.32426C19.9368 5.43679 20 5.5894 20 5.74853V21.4C20 21.7314 19.7314 22 19.4 22H4.6C4.26863 22 4 21.7314 4 21.4Z"
|
||||
/>
|
||||
<path d="M16 2V5.4C16 5.73137 16.2686 6 16.6 6H20" />
|
||||
{:else if name === 'page-text'}
|
||||
<path
|
||||
d="M4 21.4V2.6C4 2.26863 4.26863 2 4.6 2H16.2515C16.4106 2 16.5632 2.06321 16.6757 2.17574L19.8243 5.32426C19.9368 5.43679 20 5.5894 20 5.74853V21.4C20 21.7314 19.7314 22 19.4 22H4.6C4.26863 22 4 21.7314 4 21.4Z"
|
||||
/>
|
||||
<path d="M8 10L16 10" />
|
||||
<path d="M8 18L16 18" />
|
||||
<path d="M8 14L12 14" />
|
||||
<path d="M16 2V5.4C16 5.73137 16.2686 6 16.6 6H20" />
|
||||
{:else if name === 'terminal'}
|
||||
<path d="M13 17H20" />
|
||||
<path d="M5 7L10 12L5 17" />
|
||||
{:else if name === 'tools'}
|
||||
<path
|
||||
d="M10.0503 10.6066L2.97923 17.6777C2.19818 18.4587 2.19818 19.7251 2.97923 20.5061C3.76027 21.2872 5.0266 21.2872 5.80765 20.5061L12.8787 13.4351"
|
||||
/>
|
||||
<path
|
||||
d="M17.1927 13.7994L21.071 17.6777C21.8521 18.4587 21.8521 19.7251 21.071 20.5061C20.29 21.2872 19.0236 21.2872 18.2426 20.5061L12.0341 14.2977"
|
||||
/>
|
||||
<path
|
||||
d="M6.73267 5.90381L4.61135 6.61092L2.49003 3.07539L3.90424 1.66117L7.43978 3.78249L6.73267 5.90381ZM6.73267 5.90381L9.5629 8.73404"
|
||||
/>
|
||||
<path
|
||||
d="M10.0503 10.6066C9.2065 8.45359 9.37147 5.62861 11.111 3.8891C12.8505 2.14958 16.0607 1.76778 17.8285 2.82844L14.7878 5.86911L14.5052 8.98015L17.6162 8.69754L20.6569 5.65686C21.7176 7.42463 21.3358 10.6349 19.5963 12.3744C17.8567 14.1139 15.0318 14.2789 12.8788 13.435"
|
||||
/>
|
||||
{:else if name === 'search'}
|
||||
<path d="M17 17L21 21" />
|
||||
<path
|
||||
d="M3 11C3 15.4183 6.58172 19 11 19C13.213 19 15.2161 18.1015 16.6644 16.6493C18.1077 15.2022 19 13.2053 19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11Z"
|
||||
/>
|
||||
{:else if name === 'git-diff'}
|
||||
<path d="M9 8H15" />
|
||||
<path d="M12 5V11" />
|
||||
<path d="M9 16H15" />
|
||||
{:else if name === 'git-branch'}
|
||||
<path
|
||||
d="M18 8C19.1046 8 20 7.10457 20 6C20 4.89543 19.1046 4 18 4C16.8954 4 16 4.89543 16 6C16 7.10457 16.8954 8 18 8Z"
|
||||
/>
|
||||
<path
|
||||
d="M6 20C7.10457 20 8 19.1046 8 18C8 16.8954 7.10457 16 6 16C4.89543 16 4 16.8954 4 18C4 19.1046 4.89543 20 6 20Z"
|
||||
/>
|
||||
<path d="M6 16V3" />
|
||||
<path d="M8 18H9C12.5 18 18 15.9 18 9.5V8" />
|
||||
{:else if name === 'chat-fork'}
|
||||
<path d="M4 12H9" />
|
||||
<path d="M9 12C12.5 12 12.5 7 16 7H20" />
|
||||
<path d="M17 4L20 7L17 10" />
|
||||
<path d="M9 12C12.5 12 12.5 17 16 17H20" />
|
||||
<path d="M17 14L20 17L17 20" />
|
||||
{:else if name === 'chat-bubble'}
|
||||
<path
|
||||
d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 13.8214 2.48697 15.5291 3.33782 17L2.5 21.5L7 20.6622C8.47087 21.513 10.1786 22 12 22Z"
|
||||
/>
|
||||
{:else if name === 'chat-plus'}
|
||||
<path d="M9 12H15" />
|
||||
<path d="M12 9V15" />
|
||||
<path
|
||||
d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 13.8214 2.48697 15.5291 3.33782 17L2.5 21.5L7 20.6622C8.47087 21.513 10.1786 22 12 22Z"
|
||||
/>
|
||||
{:else if name === 'info'}
|
||||
<path
|
||||
d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z"
|
||||
/>
|
||||
<path d="M12 8H12.01" />
|
||||
<path d="M11 12H12V16H13" />
|
||||
{:else if name === 'brain'}
|
||||
<path
|
||||
d="M9.5 4.5C7.9 3.4 5.6 4.3 5.2 6.2C3.7 6.6 2.7 8 2.8 9.6C1.8 10.7 1.8 12.6 2.9 13.7C2.5 15.7 4.1 17.5 6.1 17.5C6.8 19.2 9.1 19.6 10.3 18.2C10.9 17.5 11.2 16.6 11.2 15.7V6.9C11.2 5.9 10.6 5.1 9.5 4.5Z"
|
||||
/>
|
||||
<path
|
||||
d="M14.5 4.5C16.1 3.4 18.4 4.3 18.8 6.2C20.3 6.6 21.3 8 21.2 9.6C22.2 10.7 22.2 12.6 21.1 13.7C21.5 15.7 19.9 17.5 17.9 17.5C17.2 19.2 14.9 19.6 13.7 18.2C13.1 17.5 12.8 16.6 12.8 15.7V6.9C12.8 5.9 13.4 5.1 14.5 4.5Z"
|
||||
/>
|
||||
<path d="M8 9.2C8.8 9.2 9.5 9.7 9.8 10.4" />
|
||||
<path d="M16 9.2C15.2 9.2 14.5 9.7 14.2 10.4" />
|
||||
<path d="M8.6 14.2C9.4 14.2 10.1 13.8 10.5 13.1" />
|
||||
<path d="M15.4 14.2C14.6 14.2 13.9 13.8 13.5 13.1" />
|
||||
{:else if name === 'spark'}
|
||||
<path
|
||||
d="M3 12C9.26752 12 12 9.36306 12 3C12 9.36306 14.7134 12 21 12C14.7134 12 12 14.7134 12 21C12 14.7134 9.26752 12 3 12Z"
|
||||
/>
|
||||
{:else if name === 'plus'}
|
||||
<path d="M6 12H12M18 12H12M12 12V6M12 12V18" />
|
||||
{:else if name === 'xmark'}
|
||||
<path
|
||||
d="M6.75827 17.2426L12.0009 12M17.2435 6.75736L12.0009 12M12.0009 12L6.75827 6.75736M12.0009 12L17.2435 17.2426"
|
||||
/>
|
||||
{:else if name === 'menu'}
|
||||
<path d="M3 5H21" />
|
||||
<path d="M3 12H21" />
|
||||
<path d="M3 19H21" />
|
||||
{:else if name === 'expand'}
|
||||
<path d="M9 9L4 4M4 4V8M4 4H8" />
|
||||
<path d="M15 9L20 4M20 4V8M20 4H16" />
|
||||
<path d="M9 15L4 20M4 20V16M4 20H8" />
|
||||
<path d="M15 15L20 20M20 20V16M20 20H16" />
|
||||
{:else if name === 'sidebar-expand'}
|
||||
<path
|
||||
d="M19 21L5 21C3.89543 21 3 20.1046 3 19L3 5C3 3.89543 3.89543 3 5 3L19 3C20.1046 3 21 3.89543 21 5L21 19C21 20.1046 20.1046 21 19 21Z"
|
||||
/>
|
||||
<path d="M9.5 21V3" />
|
||||
<path d="M5.5 10L7.25 12L5.5 14" />
|
||||
{:else if name === 'settings'}
|
||||
<path
|
||||
d="M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z"
|
||||
/>
|
||||
<path
|
||||
d="M19.6224 10.3954L18.5247 7.7448L20 6L18 4L16.2647 5.48295L13.5578 4.36974L12.9353 2H10.981L10.3491 4.40113L7.70441 5.51596L6 4L4 6L5.45337 7.78885L4.3725 10.4463L2 11V13L4.40111 13.6555L5.51575 16.2997L4 18L6 20L7.79116 18.5403L10.397 19.6123L11 22H13L13.6045 19.6132L16.2551 18.5155C16.6969 18.8313 18 20 18 20L20 18L18.5159 16.2494L19.6139 13.598L21.9999 12.9772L22 11L19.6224 10.3954Z"
|
||||
/>
|
||||
{:else if name === 'usage'}
|
||||
<path d="M4 19V5" />
|
||||
<path d="M4 19H20" />
|
||||
<path d="M8 16V12" />
|
||||
<path d="M12 16V8" />
|
||||
<path d="M16 16V10" />
|
||||
<path d="M20 16V6" />
|
||||
{:else if name === 'half-moon'}
|
||||
<path
|
||||
d="M3 11.5066C3 16.7497 7.25034 21 12.4934 21C16.2209 21 19.4466 18.8518 21 15.7259C12.4934 15.7259 8.27411 11.5066 8.27411 3C5.14821 4.55344 3 7.77915 3 11.5066Z"
|
||||
/>
|
||||
{:else if name === 'sun-light'}
|
||||
<path
|
||||
d="M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18Z"
|
||||
/>
|
||||
<path d="M22 12L23 12" /><path d="M12 2V1" /><path d="M12 23V22" />
|
||||
<path d="M20 20L19 19" /><path d="M20 4L19 5" />
|
||||
<path d="M4 20L5 19" /><path d="M4 4L5 5" /><path d="M1 12L2 12" />
|
||||
{:else if name === 'code'}
|
||||
<path d="M13.5 6L10 18.5" />
|
||||
<path d="M6.5 8.5L3 12L6.5 15.5" />
|
||||
<path d="M17.5 8.5L21 12L17.5 15.5" />
|
||||
{:else if name === 'python'}
|
||||
<path
|
||||
d="M8 10H16C17.1046 10 18 9.10457 18 8V5.5C18 4.11929 16.8807 3 15.5 3H10C8.89543 3 8 3.89543 8 5V10Z"
|
||||
/>
|
||||
<path
|
||||
d="M16 14H8C6.89543 14 6 14.8954 6 16V18.5C6 19.8807 7.11929 21 8.5 21H14C15.1046 21 16 20.1046 16 19V14Z"
|
||||
/>
|
||||
<path d="M8 7H6.5C5.11929 7 4 8.11929 4 9.5V12C4 13.1046 4.89543 14 6 14H8" />
|
||||
<path d="M16 10H18C19.1046 10 20 10.8954 20 12V14.5C20 15.8807 18.8807 17 17.5 17H16" />
|
||||
<circle cx="11" cy="6.5" r="0.8" fill="currentColor" stroke="none" />
|
||||
<circle cx="13" cy="17.5" r="0.8" fill="currentColor" stroke="none" />
|
||||
{:else if name === 'javascript-logo'}
|
||||
<rect x="4" y="4" width="16" height="16" rx="2" />
|
||||
<text
|
||||
x="12"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="7"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">JS</text
|
||||
>
|
||||
{:else if name === 'typescript-logo'}
|
||||
<rect x="4" y="4" width="16" height="16" rx="2" />
|
||||
<text
|
||||
x="12"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="7"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">TS</text
|
||||
>
|
||||
{:else if name === 'react'}
|
||||
<ellipse cx="12" cy="12" rx="9" ry="3.5" />
|
||||
<ellipse cx="12" cy="12" rx="9" ry="3.5" transform="rotate(60 12 12)" />
|
||||
<ellipse cx="12" cy="12" rx="9" ry="3.5" transform="rotate(120 12 12)" />
|
||||
<circle cx="12" cy="12" r="1.5" fill="currentColor" stroke="none" />
|
||||
{:else if name === 'rust'}
|
||||
<circle cx="12" cy="12" r="6" />
|
||||
<path
|
||||
d="M12 3V5M12 19V21M3 12H5M19 12H21M5.6 5.6L7 7M17 17L18.4 18.4M18.4 5.6L17 7M7 17L5.6 18.4"
|
||||
/>
|
||||
<text
|
||||
x="12"
|
||||
y="14.4"
|
||||
text-anchor="middle"
|
||||
font-size="7"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">R</text
|
||||
>
|
||||
{:else if name === 'go-logo'}
|
||||
<path d="M3 9H10" />
|
||||
<path d="M2 12H9" />
|
||||
<path d="M3 15H10" />
|
||||
<text
|
||||
x="15"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="8"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">GO</text
|
||||
>
|
||||
{:else if name === 'java-logo'}
|
||||
<path d="M9 18H17" />
|
||||
<path d="M8 14H18L17 18C16.6667 19.3333 15.5 20 12.5 20C9.5 20 8.33333 19.3333 8 18L7 14H8Z" />
|
||||
<path d="M11 11C9 9 13 8 11 6" />
|
||||
<path d="M14 11C12 9 16 8 14 5" />
|
||||
<path d="M9 22H17" />
|
||||
{:else if name === 'c-logo'}
|
||||
<path d="M12 3L20 7.5V16.5L12 21L4 16.5V7.5L12 3Z" />
|
||||
<text
|
||||
x="12"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="8"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">C</text
|
||||
>
|
||||
{:else if name === 'cpp-logo'}
|
||||
<path d="M12 3L20 7.5V16.5L12 21L4 16.5V7.5L12 3Z" />
|
||||
<text
|
||||
x="10"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="8"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">C</text
|
||||
>
|
||||
<path d="M14.5 10V14M12.5 12H16.5M19 10V14M17 12H21" />
|
||||
{:else if name === 'c-sharp-logo'}
|
||||
<path d="M12 3L20 7.5V16.5L12 21L4 16.5V7.5L12 3Z" />
|
||||
<text
|
||||
x="12"
|
||||
y="15"
|
||||
text-anchor="middle"
|
||||
font-size="7"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">C#</text
|
||||
>
|
||||
{:else if name === 'ruby-logo'}
|
||||
<path d="M12 3L20 8L17 18L12 21L7 18L4 8L12 3Z" />
|
||||
<path d="M4 8H20L12 21L4 8Z" />
|
||||
<path d="M8 8L12 3L16 8L12 21L8 8Z" />
|
||||
{:else if name === 'php-logo'}
|
||||
<ellipse cx="12" cy="12" rx="9" ry="5.5" />
|
||||
<text
|
||||
x="12"
|
||||
y="14.2"
|
||||
text-anchor="middle"
|
||||
font-size="6"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">PHP</text
|
||||
>
|
||||
{:else if name === 'kotlin-logo'}
|
||||
<path d="M5 4H19L5 18V4Z" />
|
||||
<path d="M5 20L12 13L19 20H5Z" />
|
||||
<path d="M5 4V20" />
|
||||
{:else if name === 'svelte-logo'}
|
||||
<path
|
||||
d="M15.5 4.5C13.7 3.4 11.4 3.7 9.9 5.2L6.3 8.8C5 10.1 5 12.2 6.3 13.5C7.2 14.4 8.5 14.7 9.7 14.3"
|
||||
/>
|
||||
<path
|
||||
d="M8.5 19.5C10.3 20.6 12.6 20.3 14.1 18.8L17.7 15.2C19 13.9 19 11.8 17.7 10.5C16.8 9.6 15.5 9.3 14.3 9.7"
|
||||
/>
|
||||
<path d="M9 12H15" />
|
||||
{:else if name === 'vue-js'}
|
||||
<path d="M12 20.5L22.5 4H18.5L12 14L5.5 4H1.5L12 20.5Z" />
|
||||
<path d="M18.5 4H14.5L12 7.5L9.5 4H5.5" />
|
||||
{:else if name === 'apple-swift'}
|
||||
<path
|
||||
d="M20.457 14.5892C20.9032 13.1527 21.9081 7.84019 14.5261 3.10086C14.2661 2.9345 13.9248 2.97821 13.7186 3.20043C13.5111 3.42264 13.5024 3.75778 13.6974 3.99092C13.7274 4.02614 16.4472 7.33991 15.4798 11.1248C13.8074 9.97369 7.1565 4.70249 7.1565 4.70249L11 11L3.8617 6.40006C3.8617 6.40006 8.90765 12.5953 11.9962 14.9255C10.5013 15.4622 7.25274 16.0305 2.963 13.364C2.72052 13.2122 2.40179 13.2413 2.1918 13.438C1.98431 13.6311 1.93931 13.9395 2.08555 14.1812C2.2293 14.4192 5.66784 20 12.9387 20C14.9335 20 16.0997 19.4317 17.0372 18.9764C17.6134 18.6971 18.0683 18.4749 18.5646 18.4749C19.8007 18.4749 20.6119 19.7025 20.6194 19.7134C20.7344 19.8919 20.9357 20 21.1507 20C21.1669 20 21.1844 19.9988 21.2019 19.9976C21.4356 19.9794 21.6381 19.8373 21.7281 19.6272C22.6206 17.5544 21.0832 15.359 20.457 14.5892Z"
|
||||
/>
|
||||
{:else if name === 'markdown-logo'}
|
||||
<rect x="3" y="6" width="18" height="12" rx="1.5" />
|
||||
<path d="M6 15V9L9 12L12 9V15" />
|
||||
<path d="M16 9V15M14 13L16 15L18 13" />
|
||||
{:else if name === 'json-logo'}
|
||||
<path
|
||||
d="M9 6H8C6.89543 6 6 6.89543 6 8V10C6 11.1046 5.10457 12 4 12C5.10457 12 6 12.8954 6 14V16C6 17.1046 6.89543 18 8 18H9"
|
||||
/>
|
||||
<path
|
||||
d="M15 6H16C17.1046 6 18 6.89543 18 8V10C18 11.1046 18.8954 12 20 12C18.8954 12 18 12.8954 18 14V16C18 17.1046 17.1046 18 16 18H15"
|
||||
/>
|
||||
<path d="M11 9L13 15" />
|
||||
{:else if name === 'yaml-logo'}
|
||||
<path d="M5 5L9 12V19" />
|
||||
<path d="M13 5L9 12" />
|
||||
<path d="M14 9H20" />
|
||||
<path d="M14 13H19" />
|
||||
<path d="M14 17H18" />
|
||||
{:else if name === 'xml-logo'}
|
||||
<path d="M8 8L4 12L8 16" />
|
||||
<path d="M16 8L20 12L16 16" />
|
||||
<path d="M13.5 6L10.5 18" />
|
||||
{:else if name === 'shell-logo'}
|
||||
<path
|
||||
d="M4 5.6C4 5.26863 4.26863 5 4.6 5H19.4C19.7314 5 20 5.26863 20 5.6V18.4C20 18.7314 19.7314 19 19.4 19H4.6C4.26863 19 4 18.7314 4 18.4V5.6Z"
|
||||
/>
|
||||
<path d="M7 9L10 12L7 15" />
|
||||
<path d="M12 15H17" />
|
||||
{:else if name === 'html5'}
|
||||
<path d="M4 3L5.77778 20.0899L12 22L18.2222 20.0899L20 3H4Z" />
|
||||
<path d="M17 7H7.5L8 11.5H16L15.5 17L12 18L8.5 17L8.25 14.5" />
|
||||
{:else if name === 'css3'}
|
||||
<path d="M4 3L5.77778 20.0899L12 22L18.2222 20.0899L20 3H4Z" />
|
||||
<path d="M7 7H16.5L15.5 17L12 18L8.5 17L8.25 14.5" />
|
||||
<path d="M16 11.5H7.5" />
|
||||
{:else if name === 'svg-format'}
|
||||
<path
|
||||
d="M4.5 15H6.5C7.32843 15 8 14.3284 8 13.5C8 12.6716 7.32843 12 6.5 12H6C5.17157 12 4.5 11.3284 4.5 10.5C4.5 9.67157 5.17157 9 6 9H7.5"
|
||||
/>
|
||||
<path d="M10.5 9L12 15L13.5 9" />
|
||||
<path d="M19.5 9H16.5V15L19.5 15V12.6" />
|
||||
<path d="M4 6V3.6C4 3.26863 4.26863 3 4.6 3H19.4C19.7314 3 20 3.26863 20 3.6V6" />
|
||||
<path d="M4 18V20.4C4 20.7314 4.26863 21 4.6 21H19.4C19.7314 21 20 20.7314 20 20.4V18" />
|
||||
{:else if name === 'database-script'}
|
||||
<path d="M22 14V6C22 4.34315 20.6569 3 19 3H9C7.34315 3 6 4.34315 6 6V13" />
|
||||
<path
|
||||
d="M12 21H6C3.79086 21 2 19.2091 2 17C2 14.7909 3.79086 13 6 13H18C15.7909 13 14 14.7909 14 17C14 19.2091 15.7909 21 18 21C20.2091 21 22 19.2091 22 17V14"
|
||||
/>
|
||||
{:else if name === 'csv-logo'}
|
||||
<path
|
||||
d="M4 5.6C4 5.26863 4.26863 5 4.6 5H19.4C19.7314 5 20 5.26863 20 5.6V18.4C20 18.7314 19.7314 19 19.4 19H4.6C4.26863 19 4 18.7314 4 18.4V5.6Z"
|
||||
/>
|
||||
<path d="M4 10H20M4 14H20M10 5V19M15 5V19" />
|
||||
<text
|
||||
x="12"
|
||||
y="13.5"
|
||||
text-anchor="middle"
|
||||
font-size="5"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">CSV</text
|
||||
>
|
||||
{:else if name === 'pdf-logo'}
|
||||
<path
|
||||
d="M4 21.4V2.6C4 2.26863 4.26863 2 4.6 2H16.2515C16.4106 2 16.5632 2.06321 16.6757 2.17574L19.8243 5.32426C19.9368 5.43679 20 5.5894 20 5.74853V21.4C20 21.7314 19.7314 22 19.4 22H4.6C4.26863 22 4 21.7314 4 21.4Z"
|
||||
/>
|
||||
<path d="M16 2V5.4C16 5.73137 16.2686 6 16.6 6H20" />
|
||||
<text
|
||||
x="12"
|
||||
y="15.2"
|
||||
text-anchor="middle"
|
||||
font-size="5.5"
|
||||
font-weight="700"
|
||||
fill="currentColor"
|
||||
stroke="none">PDF</text
|
||||
>
|
||||
{:else if name === 'npm'}
|
||||
<path d="M1 8L23 8V15L11 15V17L7.5 17V15L1 15V8Z" />
|
||||
<path d="M7.5 8L7.5 15" />
|
||||
<path d="M13.5 8V15" />
|
||||
<path d="M18 11V15" />
|
||||
<path d="M5 11V15" />
|
||||
<path d="M11 11V12" />
|
||||
<path d="M20.5 11V15" />
|
||||
{:else if name === 'archive'}
|
||||
<path d="M7 6L17 6" />
|
||||
<path d="M7 9L17 9" />
|
||||
<path d="M9 17H15" />
|
||||
<path
|
||||
d="M3 12H2.6C2.26863 12 2 12.2686 2 12.6V21.4C2 21.7314 2.26863 22 2.6 22H21.4C21.7314 22 22 21.7314 22 21.4V12.6C22 12.2686 21.7314 12 21.4 12H21M3 12V2.6C3 2.26863 3.26863 2 3.6 2H20.4C20.7314 2 21 2.26863 21 2.6V12M3 12H21"
|
||||
/>
|
||||
{:else if name === 'package'}
|
||||
<path
|
||||
d="M20 5.99999L20 18C20 19.1046 19.1046 20 18 20H6C4.89543 20 4 19.1046 4 18V6C4 4.89543 4.89543 4 6 4H18C19.1045 4 19.9999 4.89543 20 5.99999Z"
|
||||
/>
|
||||
<path d="M12 9V4" />
|
||||
{:else if name === 'package-lock'}
|
||||
<path
|
||||
d="M14 20H6C4.89543 20 4 19.1046 4 18V6C4 4.89543 4.89543 4 6 4H18C19.1045 4 19.9999 4.89543 20 5.99999L20 12"
|
||||
/>
|
||||
<path d="M12 9V4" />
|
||||
<path
|
||||
d="M21.1667 18.5H21.4C21.7314 18.5 22 18.7686 22 19.1V21.4C22 21.7314 21.7314 22 21.4 22H17.6C17.2686 22 17 21.7314 17 21.4V19.1C17 18.7686 17.2686 18.5 17.6 18.5H17.8333M21.1667 18.5V16.75C21.1667 16.1667 20.8333 15 19.5 15C18.1667 15 17.8333 16.1667 17.8333 16.75V18.5M21.1667 18.5H17.8333"
|
||||
/>
|
||||
{:else if name === 'list'}
|
||||
<path d="M8 6H20" />
|
||||
<path d="M4 6.01L4.01 5.99889" />
|
||||
<path d="M4 12.01L4.01 11.9989" />
|
||||
<path d="M4 18.01L4.01 17.9989" />
|
||||
<path d="M8 12H20" />
|
||||
<path d="M8 18H20" />
|
||||
{:else if name === 'split-view'}
|
||||
<path
|
||||
d="M4 5.6C4 5.26863 4.26863 5 4.6 5H19.4C19.7314 5 20 5.26863 20 5.6V18.4C20 18.7314 19.7314 19 19.4 19H4.6C4.26863 19 4 18.7314 4 18.4V5.6Z"
|
||||
/>
|
||||
<path d="M12 5V19" />
|
||||
{:else if name === 'chevron-right'}
|
||||
<path d="M9 6L15 12L9 18" />
|
||||
{:else if name === 'arrow-left'}
|
||||
<path d="M21 12L3 12M3 12L11.5 3.5M3 12L11.5 20.5" />
|
||||
{:else if name === 'log-out'}
|
||||
<path d="M12 12H19M19 12L16 15M19 12L16 9" />
|
||||
<path
|
||||
d="M19 6V5C19 3.89543 18.1046 3 17 3H7C5.89543 3 5 3.89543 5 5V19C5 20.1046 5.89543 21 7 21H17C18.1046 21 19 20.1046 19 19V18"
|
||||
/>
|
||||
{:else if name === 'user'}
|
||||
<path
|
||||
d="M12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2Z"
|
||||
/>
|
||||
<path
|
||||
d="M4.271 18.346C4.271 18.346 6.50002 15.5 12 15.5C17.5 15.5 19.729 18.346 19.729 18.346"
|
||||
/>
|
||||
<path
|
||||
d="M12 12C13.6569 12 15 10.6569 15 9C15 7.34315 13.6569 6 12 6C10.3431 6 9 7.34315 9 9C9 10.6569 10.3431 12 12 12Z"
|
||||
/>
|
||||
{:else if name === 'lock'}
|
||||
<path
|
||||
d="M16 12H17.4C17.7314 12 18 12.2686 18 12.6V19.4C18 19.7314 17.7314 20 17.4 20H6.6C6.26863 20 6 19.7314 6 19.4V12.6C6 12.2686 6.26863 12 6.6 12H8M16 12V8C16 6.66667 15.2 4 12 4C8.8 4 8 6.66667 8 8V12M16 12H8"
|
||||
/>
|
||||
{:else if name === 'docker'}
|
||||
<path
|
||||
fill="currentColor"
|
||||
stroke="none"
|
||||
d="M13.983 11.078h2.119a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.119a.185.185 0 0 0-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 0 0 .186-.186V3.574a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 0 0 .186-.186V6.29a.186.186 0 0 0-.186-.185h-2.118a.185.185 0 0 0-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 0 0 .184-.186V6.29a.185.185 0 0 0-.185-.185H8.1a.185.185 0 0 0-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 0 0 .185-.186V6.29a.185.185 0 0 0-.185-.185H5.136a.186.186 0 0 0-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 0 0 .186-.185V9.006a.186.186 0 0 0-.186-.186h-2.118a.185.185 0 0 0-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 0 0 .185-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.186.186 0 0 0-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 0 0 .184-.185V9.006a.185.185 0 0 0-.184-.186h-2.12a.185.185 0 0 0-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 0 0-.75.748 11.376 11.376 0 0 0 .692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 0 0 3.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"
|
||||
/>
|
||||
{:else if name === 'empty-page'}
|
||||
<path
|
||||
d="M4 21.4V2.6C4 2.26863 4.26863 2 4.6 2H16.2515C16.4106 2 16.5632 2.06321 16.6757 2.17574L19.8243 5.32426C19.9368 5.43679 20 5.5894 20 5.74853V21.4C20 21.7314 19.7314 22 19.4 22H4.6C4.26863 22 4 21.7314 4 21.4Z"
|
||||
/>
|
||||
<path d="M16 2V5.4C16 5.73137 16.2686 6 16.6 6H20" />
|
||||
{:else if name === 'monitor'}
|
||||
<path d="M2 17V4.6C2 4.26863 2.26863 4 2.6 4H21.4C21.7314 4 22 4.26863 22 4.6V17" />
|
||||
<path d="M1 17H23" />
|
||||
<path d="M12 17V20" />
|
||||
<path d="M9 20H15" />
|
||||
{:else if name === 'phone'}
|
||||
<path
|
||||
d="M8 2.6C8 2.26863 8.26863 2 8.6 2H15.4C15.7314 2 16 2.26863 16 2.6V21.4C16 21.7314 15.7314 22 15.4 22H8.6C8.26863 22 8 21.7314 8 21.4V2.6Z"
|
||||
/>
|
||||
<path d="M11 18.5H13" />
|
||||
{:else if name === 'chevron-left'}
|
||||
<path d="M15 6L9 12L15 18" />
|
||||
{:else if name === 'check'}
|
||||
<path d="M5 13L9 17L19 7" />
|
||||
{:else if name === 'upload'}
|
||||
<path d="M6 20H18" />
|
||||
<path d="M12 16V4M12 4L15.5 7.5M12 4L8.5 7.5" />
|
||||
{:else if name === 'three-dots'}
|
||||
<circle cx="5" cy="12" r="1.5" fill="currentColor" />
|
||||
<circle cx="12" cy="12" r="1.5" fill="currentColor" />
|
||||
<circle cx="19" cy="12" r="1.5" fill="currentColor" />
|
||||
{:else if name === 'trash'}
|
||||
<path
|
||||
d="M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9"
|
||||
/>
|
||||
<path
|
||||
d="M21 6H15.5M3 6H8.5M8.5 6V4C8.5 3.44772 8.94772 3 9.5 3H14.5C15.0523 3 15.5 3.44772 15.5 4V6M8.5 6H15.5"
|
||||
/>
|
||||
{:else if name === 'pencil'}
|
||||
<path
|
||||
d="M14.3632 5.65156L15.8431 4.17157C16.6242 3.39052 17.8905 3.39052 18.6716 4.17157L19.8284 5.32843C20.6095 6.10948 20.6095 7.37581 19.8284 8.15685L18.3484 9.63685M14.3632 5.65156L4.74749 15.2672C4.41542 15.5993 4.21079 16.0376 4.16947 16.5054L3.92738 19.2459C3.87261 19.8659 4.13434 20.1276 4.75408 20.0729L7.49463 19.8308C7.96243 19.7894 8.40074 19.5848 8.73281 19.2527L18.3484 9.63685M14.3632 5.65156L18.3484 9.63685"
|
||||
/>
|
||||
{:else if name === 'download'}
|
||||
<path d="M6 20H18" />
|
||||
<path d="M12 4V16M12 16L15.5 12.5M12 16L8.5 12.5" />
|
||||
{:else if name === 'eye'}
|
||||
<path
|
||||
d="M12 14C13.1046 14 14 13.1046 14 12C14 10.8954 13.1046 10 12 10C10.8954 10 10 10.8954 10 12C10 13.1046 10.8954 14 12 14Z"
|
||||
/>
|
||||
<path
|
||||
d="M21 12C19.1114 14.991 15.7183 18 12 18C8.2817 18 4.88856 14.991 3 12C5.29855 9.15825 7.99163 6 12 6C16.0084 6 18.7015 9.15825 21 12Z"
|
||||
/>
|
||||
{:else if name === 'minus'}
|
||||
<path d="M6 12H18" />
|
||||
{:else if name === 'chevron-up'}
|
||||
<path d="M6 15L12 9L18 15" />
|
||||
{:else if name === 'chevron-down'}
|
||||
<path d="M6 9L12 15L18 9" />
|
||||
{:else if name === 'expand'}
|
||||
<path d="M15 3h6v6" />
|
||||
<path d="M9 21H3v-6" />
|
||||
<path d="M21 3l-7 7" />
|
||||
<path d="M3 21l7-7" />
|
||||
{:else if name === 'collapse'}
|
||||
<path d="M4 14h6v6" />
|
||||
<path d="M20 10h-6V4" />
|
||||
<path d="M14 10l7-7" />
|
||||
<path d="M3 21l7-7" />
|
||||
{:else if name === 'refresh'}
|
||||
<path d="M21.168 8A10.003 10.003 0 0012 2C6.815 2 2.55 5.947 2.05 11" />
|
||||
<path d="M17 8H21.4C21.7314 8 22 7.73137 22 7.4V3" />
|
||||
<path d="M2.832 16c1.612 3.604 5.253 6 9.168 6 5.185 0 9.45-3.947 9.95-9" />
|
||||
<path d="M7 16H2.6C2.26863 16 2 16.2686 2 16.6V21" />
|
||||
{:else if name === 'copy'}
|
||||
<path
|
||||
d="M19.4 20H9.6C9.26863 20 9 19.7314 9 19.4V9.6C9 9.26863 9.26863 9 9.6 9H19.4C19.7314 9 20 9.26863 20 9.6V19.4C20 19.7314 19.7314 20 19.4 20Z"
|
||||
/>
|
||||
<path
|
||||
d="M15 9V4.6C15 4.26863 14.7314 4 14.4 4H4.6C4.26863 4 4 4.26863 4 4.6V14.4C4 14.7314 4.26863 15 4.6 15H9"
|
||||
/>
|
||||
{:else if name === 'sort'}
|
||||
<path d="M4 5H20" />
|
||||
<path d="M4 12H16" />
|
||||
<path d="M4 19H12" />
|
||||
{:else if name === 'external-link'}
|
||||
<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" />
|
||||
<polyline points="15 3 21 3 21 9" />
|
||||
<line x1="10" y1="14" x2="21" y2="3" />
|
||||
{:else if name === 'save'}
|
||||
<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" />
|
||||
<polyline points="17 21 17 13 7 13 7 21" />
|
||||
<polyline points="7 3 7 8 15 8" />
|
||||
{:else if name === 'shield'}
|
||||
<path d="M12 22C12 22 20 18 20 12V5L12 2L4 5V12C4 18 12 22 12 22Z" />
|
||||
{:else if name === 'gateway'}
|
||||
<path d="M3 19H12M21 19H12M12 19V13M12 13H18V5H6V13H12Z" />
|
||||
<path d="M9 9.01L9.01 8.99889" />
|
||||
<path d="M12 9.01L12.01 8.99889" />
|
||||
{:else if name === 'quote'}
|
||||
<path d="M10 12H5C5 7 7.5 4.5 10 3.5" />
|
||||
<path d="M21 12H16C16 7 18.5 4.5 21 3.5" />
|
||||
<path d="M5 12V17C5 18.1046 5.89543 19 7 19H8" />
|
||||
<path d="M16 12V17C16 18.1046 16.8954 19 18 19H19" />
|
||||
{:else if name === 'undo'}
|
||||
<path d="M4.5 8H15C17.7614 8 20 10.2386 20 13C20 15.7614 17.7614 18 15 18H4.5" />
|
||||
<path d="M7.5 11.5L4 8L7.5 4.5" />
|
||||
{:else if name === 'redo'}
|
||||
<path d="M19.5 8H9C6.23858 8 4 10.2386 4 13C4 15.7614 6.23858 18 9 18H19.5" />
|
||||
<path d="M16.5 11.5L20 8L16.5 4.5" />
|
||||
{:else if name === 'list-ordered'}
|
||||
<path d="M9 6H20" />
|
||||
<path d="M9 12H20" />
|
||||
<path d="M9 18H20" />
|
||||
<path
|
||||
d="M4 16.5V16.8C4 17.1866 4.14 17.5 4.5 17.5H5.5C5.86 17.5 6 17.8 6 18C6 18.2 5.86 18.5 5.5 18.5H4.5"
|
||||
/>
|
||||
<path d="M5 6V4L4 4.5" />
|
||||
<path d="M4 12.5H5.5L4 14H6" />
|
||||
{:else if name === 'check-square'}
|
||||
<path
|
||||
d="M3 20.4V3.6C3 3.26863 3.26863 3 3.6 3H20.4C20.7314 3 21 3.26863 21 3.6V20.4C21 20.7314 20.7314 21 20.4 21H3.6C3.26863 21 3 20.7314 3 20.4Z"
|
||||
/>
|
||||
<path d="M9 12L11 14L15 10" />
|
||||
{:else if name === 'table'}
|
||||
<path
|
||||
d="M3 20.4V3.6C3 3.26863 3.26863 3 3.6 3H20.4C20.7314 3 21 3.26863 21 3.6V20.4C21 20.7314 20.7314 21 20.4 21H3.6C3.26863 21 3 20.7314 3 20.4Z"
|
||||
/>
|
||||
<path d="M3 9H21" />
|
||||
<path d="M3 15H21" />
|
||||
<path d="M9 3V21" />
|
||||
{:else if name === 'image'}
|
||||
<path
|
||||
d="M21 3.6V20.4C21 20.7314 20.7314 21 20.4 21H3.6C3.26863 21 3 20.7314 3 20.4V3.6C3 3.26863 3.26863 3 3.6 3H20.4C20.7314 3 21 3.26863 21 3.6Z"
|
||||
/>
|
||||
<path d="M3 16L10 13L21 18" />
|
||||
<path
|
||||
d="M16 10C14.8954 10 14 9.10457 14 8C14 6.89543 14.8954 6 16 6C17.1046 6 18 6.89543 18 8C18 9.10457 17.1046 10 16 10Z"
|
||||
/>
|
||||
{:else if name === 'split-horizontal'}
|
||||
<!-- Two side-by-side panes with a vertical divider -->
|
||||
<path
|
||||
d="M3 20.4V3.6C3 3.26863 3.26863 3 3.6 3H20.4C20.7314 3 21 3.26863 21 3.6V20.4C21 20.7314 20.7314 21 20.4 21H3.6C3.26863 21 3 20.7314 3 20.4Z"
|
||||
/>
|
||||
<path d="M12 3V21" />
|
||||
{:else if name === 'split-vertical'}
|
||||
<!-- Two stacked panes with a horizontal divider -->
|
||||
<path
|
||||
d="M3 20.4V3.6C3 3.26863 3.26863 3 3.6 3H20.4C20.7314 3 21 3.26863 21 3.6V20.4C21 20.7314 20.7314 21 20.4 21H3.6C3.26863 21 3 20.7314 3 20.4Z"
|
||||
/>
|
||||
<path d="M3 12H21" />
|
||||
{:else if name === 'arrow-right-from-line'}
|
||||
<!-- Open to the side icon -->
|
||||
<path d="M4 3V21" />
|
||||
<path d="M10 12H20M20 12L16 8M20 12L16 16" />
|
||||
{:else if name === 'swap'}
|
||||
<path d="M7.5 4.5L4.5 7.5L7.5 10.5" />
|
||||
<path d="M16.5 13.5L19.5 16.5L16.5 19.5" />
|
||||
<path d="M5 7.5H19.5" />
|
||||
<path d="M19 16.5H4.5" />
|
||||
{:else if name === 'plug'}
|
||||
<!-- Connection/plug icon -->
|
||||
<path d="M12 22V18" />
|
||||
<path d="M8 18H16" />
|
||||
<path d="M8 14V18" />
|
||||
<path d="M16 14V18" />
|
||||
<path d="M7 14H17C17 14 20 13 20 9C20 7 18 6 16 6H8C6 6 4 7 4 9C4 13 7 14 7 14Z" />
|
||||
<path d="M10 6V2" />
|
||||
<path d="M14 6V2" />
|
||||
{:else if name === 'play'}
|
||||
<path
|
||||
d="M6.90588 4.53682C6.50592 4.2998 6 4.58808 6 5.05299V18.947C6 19.4119 6.50592 19.7002 6.90588 19.4632L18.629 12.5162C19.0211 12.2838 19.0211 11.7162 18.629 11.4838L6.90588 4.53682Z"
|
||||
/>
|
||||
{:else if name === 'clock'}
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<path d="M12 6V12H16.5" />
|
||||
{:else if name === 'cube'}
|
||||
<path d="M12 2L2 7L12 12L22 7L12 2Z" />
|
||||
<path d="M2 17L12 22L22 17" />
|
||||
<path d="M2 12L12 17L22 12" />
|
||||
{:else if name === 'telegram'}
|
||||
<path d="M21 5L2 12.5L9 13.5M21 5L18.5 20L9 13.5M21 5L9 13.5M9 13.5V19L12.2488 15.7229" />
|
||||
{:else if name === 'discord'}
|
||||
<path d="M5.5 16C10.5 18.5 13.5 18.5 18.5 16" />
|
||||
<path
|
||||
d="M15.5 17.5L16.5 19.5C16.5 19.5 20.6713 18.1717 22 16C22 15 22.5301 7.85339 19 5.5C17.5 4.5 15 4 15 4L14 6H12"
|
||||
/>
|
||||
<path
|
||||
d="M8.52832 17.5L7.52832 19.5C7.52832 19.5 3.35699 18.1717 2.02832 16C2.02832 15 1.49823 7.85339 5.02832 5.5C6.52832 4.5 9.02832 4 9.02832 4L10.0283 6H12.0283"
|
||||
/>
|
||||
<path
|
||||
d="M8.5 14C7.67157 14 7 13.1046 7 12C7 10.8954 7.67157 10 8.5 10C9.32843 10 10 10.8954 10 12C10 13.1046 9.32843 14 8.5 14Z"
|
||||
/>
|
||||
<path
|
||||
d="M15.5 14C14.6716 14 14 13.1046 14 12C14 10.8954 14.6716 10 15.5 10C16.3284 10 17 10.8954 17 12C17 13.1046 16.3284 14 15.5 14Z"
|
||||
/>
|
||||
{:else if name === 'slack'}
|
||||
<path d="M10 3L6 21" />
|
||||
<path d="M20.5 16H2.5" />
|
||||
<path d="M22 7H4" />
|
||||
<path d="M18 3L14 21" />
|
||||
{:else if name === 'whatsapp'}
|
||||
<path
|
||||
d="M22 12C22 17.5228 17.5228 22 12 22C10.1786 22 8.47087 21.513 7 20.6622L2 21.5L2.83209 16C2.29689 14.7751 2 13.4222 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z"
|
||||
/>
|
||||
<path
|
||||
d="M12.9604 13.8683L15.0399 13.4624L17 14.2149V16.0385C17 16.6449 16.4783 17.1073 15.8901 16.9783C14.3671 16.6444 11.5997 15.8043 9.67826 13.8683C7.84859 12.0248 7.22267 9.45734 7.01039 8.04128C6.92535 7.47406 7.3737 7 7.94306 7H9.83707L10.572 8.96888L10.1832 11.0701"
|
||||
/>
|
||||
{:else if name === 'signal'}
|
||||
<path d="M8.5 11.5L11.5 14.5L16.5 9.5" />
|
||||
<path
|
||||
d="M5 18L3.13036 4.91253C3.05646 4.39524 3.39389 3.91247 3.90398 3.79912L11.5661 2.09641C11.8519 2.03291 12.1481 2.03291 12.4339 2.09641L20.096 3.79912C20.6061 3.91247 20.9435 4.39524 20.8696 4.91252L19 18C18.9293 18.495 18.5 21.5 12 21.5C5.5 21.5 5.07071 18.495 5 18Z"
|
||||
/>
|
||||
{:else if name === 'browser'}
|
||||
<path
|
||||
d="M22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12Z"
|
||||
/>
|
||||
<path d="M13 2.04932C13 2.04932 16 6 16 12C16 18 13 21.9507 13 21.9507" />
|
||||
<path d="M11 21.9507C11 21.9507 8 18 8 12C8 6 11 2.04932 11 2.04932" />
|
||||
<path d="M2 12H22" />
|
||||
{:else if name === 'globe'}
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<path d="M2 12H22" />
|
||||
<path d="M12 2C14.5 5.5 14.5 18.5 12 22" />
|
||||
<path d="M12 2C9.5 5.5 9.5 18.5 12 22" />
|
||||
<path d="M4 7H20" />
|
||||
<path d="M4 17H20" />
|
||||
{:else if name === 'microphone'}
|
||||
<path
|
||||
d="M12 1C10.3431 1 9 2.34315 9 4V12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12V4C15 2.34315 13.6569 1 12 1Z"
|
||||
/>
|
||||
<path d="M5 10V12C5 15.866 8.13401 19 12 19C15.866 19 19 15.866 19 12V10" />
|
||||
<line x1="12" y1="19" x2="12" y2="23" />
|
||||
<line x1="8" y1="23" x2="16" y2="23" />
|
||||
{:else if name === 'speaker'}
|
||||
<path d="M4 9V15H8L13 20V4L8 9H4Z" />
|
||||
<path d="M16 9C16.6254 9.81968 17 10.8637 17 12C17 13.1363 16.6254 14.1803 16 15" />
|
||||
<path d="M18.5 6.5C20.0645 7.86634 21 9.82395 21 12C21 14.176 20.0645 16.1337 18.5 17.5" />
|
||||
{:else if name === 'stop'}
|
||||
<rect x="6" y="6" width="12" height="12" rx="1" fill="currentColor" />
|
||||
{:else if name === 'share'}
|
||||
<path
|
||||
d="M18 22C19.6569 22 21 20.6569 21 19C21 17.3431 19.6569 16 18 16C16.3431 16 15 17.3431 15 19C15 20.6569 16.3431 22 18 22Z"
|
||||
/>
|
||||
<path
|
||||
d="M18 8C19.6569 8 21 6.65685 21 5C21 3.34315 19.6569 2 18 2C16.3431 2 15 3.34315 15 5C15 6.65685 16.3431 8 18 8Z"
|
||||
/>
|
||||
<path
|
||||
d="M6 15C7.65685 15 9 13.6569 9 12C9 10.3431 7.65685 9 6 9C4.34315 9 3 10.3431 3 12C3 13.6569 4.34315 15 6 15Z"
|
||||
/>
|
||||
<path d="M15.5 6.5L8.5 10.5" />
|
||||
<path d="M8.5 13.5L15.5 17.5" />
|
||||
{:else if name === 'wifi-off'}
|
||||
<path d="M1 1L23 23" />
|
||||
<path d="M16.72 11.06C17.8106 11.5469 18.8104 12.2174 19.67 13.05" />
|
||||
<path d="M5 12.55C6.97 10.6 9.47 9.48 12 9.48C12.9 9.48 13.8 9.62 14.65 9.87" />
|
||||
<path d="M8.53 16.11C9.5 15.14 10.7 14.56 12 14.56C12.7 14.56 13.38 14.71 14 15" />
|
||||
<path d="M2 8.82C5.23 5.72 8.5 4 12 4C13.72 4 15.4 4.4 16.97 5.15" />
|
||||
<circle cx="12" cy="20" r="1" fill="currentColor" />
|
||||
{/if}
|
||||
</svg>
|
||||
162
src/lib/components/chat/FileNav/fileIcon.ts
Normal file
162
src/lib/components/chat/FileNav/fileIcon.ts
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
/**
|
||||
* Shared file icon name resolver.
|
||||
* Maps file names/extensions to Icon component names.
|
||||
*/
|
||||
|
||||
export function fileIconName(name: string, type: string = 'file'): string {
|
||||
if (type === 'directory') return 'folder';
|
||||
const base = name.split('/').pop() ?? name;
|
||||
const lower = base.toLowerCase();
|
||||
const ext = base.includes('.') ? (base.split('.').pop()?.toLowerCase() ?? '') : '';
|
||||
|
||||
if (lower === 'dockerfile' || lower === 'containerfile') return 'docker';
|
||||
if (lower === 'license' || lower === 'license.md') return 'page-text';
|
||||
if (lower === 'package.json' || lower === 'npm-shrinkwrap.json' || lower === 'bunfig.toml') {
|
||||
return 'npm';
|
||||
}
|
||||
if (
|
||||
lower.endsWith('.lock') ||
|
||||
lower === 'package-lock.json' ||
|
||||
lower === 'pnpm-lock.yaml' ||
|
||||
lower === 'yarn.lock'
|
||||
) {
|
||||
return 'package-lock';
|
||||
}
|
||||
|
||||
switch (ext) {
|
||||
case 'md':
|
||||
case 'mdx':
|
||||
case 'markdown':
|
||||
return 'markdown-logo';
|
||||
case 'ts':
|
||||
return 'typescript-logo';
|
||||
case 'tsx':
|
||||
return 'react';
|
||||
case 'js':
|
||||
case 'mjs':
|
||||
case 'cjs':
|
||||
return 'javascript-logo';
|
||||
case 'jsx':
|
||||
return 'react';
|
||||
case 'py':
|
||||
case 'pyw':
|
||||
return 'python';
|
||||
case 'rs':
|
||||
return 'rust';
|
||||
case 'go':
|
||||
return 'go-logo';
|
||||
case 'java':
|
||||
return 'java-logo';
|
||||
case 'c':
|
||||
case 'h':
|
||||
return 'c-logo';
|
||||
case 'cpp':
|
||||
case 'cc':
|
||||
case 'cxx':
|
||||
case 'hpp':
|
||||
case 'hh':
|
||||
case 'hxx':
|
||||
return 'cpp-logo';
|
||||
case 'cs':
|
||||
return 'c-sharp-logo';
|
||||
case 'rb':
|
||||
return 'ruby-logo';
|
||||
case 'php':
|
||||
return 'php-logo';
|
||||
case 'swift':
|
||||
return 'apple-swift';
|
||||
case 'kt':
|
||||
case 'kts':
|
||||
return 'kotlin-logo';
|
||||
case 'svelte':
|
||||
return 'svelte-logo';
|
||||
case 'vue':
|
||||
return 'vue-js';
|
||||
case 'json':
|
||||
case 'jsonc':
|
||||
case 'json5':
|
||||
return 'json-logo';
|
||||
case 'yaml':
|
||||
case 'yml':
|
||||
return 'yaml-logo';
|
||||
case 'toml':
|
||||
case 'ini':
|
||||
case 'cfg':
|
||||
case 'conf':
|
||||
case 'env':
|
||||
return 'settings';
|
||||
case 'sh':
|
||||
case 'bash':
|
||||
case 'zsh':
|
||||
case 'fish':
|
||||
return 'shell-logo';
|
||||
case 'html':
|
||||
case 'htm':
|
||||
return 'html5';
|
||||
case 'css':
|
||||
case 'scss':
|
||||
case 'sass':
|
||||
case 'less':
|
||||
return 'css3';
|
||||
case 'xml':
|
||||
return 'xml-logo';
|
||||
case 'svg':
|
||||
return 'svg-format';
|
||||
case 'sql':
|
||||
case 'sqlite':
|
||||
case 'sqlite3':
|
||||
case 'db':
|
||||
case 'db3':
|
||||
return 'database-script';
|
||||
case 'csv':
|
||||
case 'tsv':
|
||||
return 'csv-logo';
|
||||
case 'pdf':
|
||||
return 'pdf-logo';
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
case 'png':
|
||||
case 'gif':
|
||||
case 'webp':
|
||||
case 'bmp':
|
||||
case 'ico':
|
||||
case 'avif':
|
||||
case 'tiff':
|
||||
return 'image';
|
||||
case 'mp4':
|
||||
case 'webm':
|
||||
case 'mov':
|
||||
case 'ogv':
|
||||
case 'avi':
|
||||
case 'mkv':
|
||||
return 'play';
|
||||
case 'mp3':
|
||||
case 'wav':
|
||||
case 'ogg':
|
||||
case 'flac':
|
||||
case 'm4a':
|
||||
case 'aac':
|
||||
case 'opus':
|
||||
case 'wma':
|
||||
return 'speaker';
|
||||
case 'zip':
|
||||
case 'tar':
|
||||
case 'gz':
|
||||
case 'tgz':
|
||||
case 'bz2':
|
||||
case 'xz':
|
||||
case '7z':
|
||||
case 'rar':
|
||||
return 'archive';
|
||||
case 'docx':
|
||||
case 'txt':
|
||||
return 'page-text';
|
||||
case 'xlsx':
|
||||
case 'xls':
|
||||
return 'table';
|
||||
case 'pptx':
|
||||
return 'page';
|
||||
default:
|
||||
return 'empty-page';
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue