master
 1---
 2import { t } from '@utils/i18n';
 3
 4interface Props {
 5  backLinks: {
 6    refBy: {
 7      title: string;
 8      collection: 'posts' | 'spec';
 9      id: string;
10    };
11    context: string;
12    offset: [number, number];
13    id: string;
14  }[];
15}
16
17const { backLinks } = Astro.props;
18---
19
20<div class="bg-base-100 border-base-content/25 collapse-plus collapse my-4 border">
21  <input type="checkbox" />
22  <div class="collapse-title text-lg font-semibold">{t.info.backLinks()}</div>
23  <div class="collapse-content">
24    <ul class="list">
25      {
26        backLinks.map(({ refBy, context, id, offset }) => {
27          const url = refBy.collection === 'posts' ? `/posts/${refBy.id}` : `/${refBy.id}`;
28          return (
29            <li class="list-row">
30              <a href={`${url}#wiki-${id}`} title={refBy.title} class="list-col-grow">
31                <span class="text-base font-bold">{refBy.title}</span>
32                <div class="text-base-content/60 mt-2 flex flex-wrap items-start gap-x-4 gap-y-2 text-sm">
33                  <span>
34                    {context.slice(0, offset[0])}
35                    <strong class="text-primary">{context.slice(offset[0], offset[1])}</strong>
36                    {context.slice(offset[1])}
37                  </span>
38                </div>
39              </a>
40            </li>
41          );
42        })
43      }
44    </ul>
45  </div>
46</div>