This website
<script lang="ts">
  import Nav from '../../Nav.svelte';
  import Tabs from '../../Tabs.svelte';
  import ChannelBar from '../../ChannelBar.svelte';
  import Folder from '../../../../Folder.svelte';
  import File from '../../../../File.svelte';
  const { data } = $props();
  const channel = $derived(data.channel.length ? data.channel : 'main');
</script>

<svelte:head>
  <title>{data.owner} / {data.repo}</title>
  <link rel="stylesheet" href="/hljs.css" />
</svelte:head>

<div class="p-3">
  <Nav
    user={data.owner}
    repo={data.repo}
    path={data.inode.Directory ? data.inode.Directory.path : data.inode.File.path}
    link={true} />

  <Tabs
    login={data.login}
    user={data.owner}
    repo={data.repo}
    channel={data.channel}
    active="tree" />
  <div class="pt-3">
    <ChannelBar
      owner={data.owner}
      repo={data.repo}
      {channel}
      channels={data.channels}
      tab="tree"
      token={data.token}
      can_delete={true} />
  </div>

  {#if data.inode.Directory}
    <ul class="mt-5 list bg-base-100 rounded-box shadow-md">
      {#each data.inode.Directory.children as ch}
        <li class="list-row p-1">
          <div class="text-truncate">
            <a
              class={ch.is_dir ? 'dir' : 'file'}
              href="/{data.owner}/{data.repo}{channel.length ? ':' + channel : ''}/tree/{ch.pos}">
              {#if ch.is_dir}
                <Folder />
              {:else}
                <File />
              {/if}
              {ch.name}</a>
          </div>
        </li>
      {/each}
    </ul>
  {:else}
    <pre><code class="mt-5 hljs"
        >{#if data.hled}{@html data.hled}{/if}</code></pre>
  {/if}
</div>

<style lang="scss">
  @media (prefers-color-scheme: dark) {
    a.file,
    a.dir {
      color: #fff;
    }
  }
  @media (prefers-color-scheme: light) {
    a.file,
    a.dir {
      color: #000;
    }
  }

  pre code.hljs {
    display: block;
    overflow-x: auto;
    padding: 5px;
  }
  code.hljs {
    padding: 3px 5px;
  }
</style>