File size: 2,212 Bytes
e8a6c67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<script lang="ts">
  import type { Citation } from '$lib/types/claim';
  import TierGlyph from '$lib/components/glyphs/TierGlyph.svelte';
  import { citations as cstore } from '$lib/stores/citations.svelte';

  interface Props { citations: Record<string, Citation>; }
  let { citations }: Props = $props();

  let entries = $derived(Object.values(citations).sort((a, b) => a.n - b.n));
</script>

<aside class="citation-drawer" aria-label="Citations">
  <div class="citation-drawer-head">
    <span class="section-label">Citations · {entries.length}</span>
    <span class="citation-drawer-meta">live · primary sources</span>
  </div>
  <ol class="citation-list">
    {#each entries as c (c.id)}
      <li
        id="cite-{c.id}"
        class="citation-item"
        class:is-active={cstore.active === c.id}
      >
        <span class="citation-num">[{c.n}]</span>
        <div class="citation-body">
          <div class="citation-line-1">
            <TierGlyph tier={c.tier} size={10} color="var(--tier-{c.tier})" />
            <span class="citation-source">{c.source}</span>
            <span class="citation-vintage">v. {c.vintage}</span>
          </div>
          <div class="citation-title">
            {#if c.url && c.url.startsWith('http')}
              <a href={c.url} target="_blank" rel="noopener noreferrer">{c.title}</a>
            {:else}
              {c.title}
            {/if}
          </div>
          <div class="citation-meta">
            <span class="citation-docid">{c.docId}</span>
            <span class="citation-retrieved">retr. {c.retrieved}</span>
          </div>
        </div>
      </li>
    {/each}
  </ol>
  <div class="citation-drawer-foot">
    <span class="section-label">Trust signals</span>
    <p class="citation-foot-copy">
      All foundation models Apache-2.0. All data from public-record federal,
      state, and city sources. No commercial APIs contacted at runtime.
    </p>
  </div>
</aside>

<style>
  .citation-drawer :global(a) {
    color: inherit;
    border-bottom: 1px solid var(--rule-soft);
    text-decoration: none;
  }
  .citation-drawer :global(a:hover) {
    border-bottom-color: var(--accent);
    color: var(--accent);
  }
</style>