chore: update /bookmarks and /blogroll d0d8716f
Steve · 2026-05-02 13:24 2 file(s) · +35 −33
src/components/page/LinkCard.astro +18 −17
18 18
		href={link.url}
19 19
		target="_blank"
20 20
		rel="noopener noreferrer"
21 -
		class="inline-flex items-center gap-2 text-base hover:opacity-70 transition-opacity"
21 +
		class="inline-flex items-start gap-2 text-base hover:opacity-70 transition-opacity"
22 22
	>
23 -
		{link.favicon_url ? (
23 +
		{link.favicon_url && (
24 24
			<img
25 25
				src={link.favicon_url}
26 26
				alt=""
27 27
				width="16"
28 28
				height="16"
29 29
				loading="lazy"
30 -
				class="w-4 h-4 rounded-sm shrink-0"
30 +
				class="w-4 h-4 rounded-sm shrink-0 mt-1"
31 +
				onerror="this.style.display='none';this.nextElementSibling.style.display='inline-block'"
31 32
			/>
32 -
		) : (
33 -
			<svg
34 -
				xmlns="http://www.w3.org/2000/svg"
35 -
				width="16"
36 -
				height="16"
37 -
				viewBox="0 0 256 256"
38 -
				class="w-4 h-4 shrink-0"
39 -
				aria-hidden="true"
40 -
			>
41 -
				<path
42 -
					fill="currentColor"
43 -
					d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 16v32H40V56Zm0 144H40v-96h176z"
44 -
				/>
45 -
			</svg>
46 33
		)}
34 +
		<svg
35 +
			xmlns="http://www.w3.org/2000/svg"
36 +
			width="16"
37 +
			height="16"
38 +
			viewBox="0 0 256 256"
39 +
			class="w-4 h-4 shrink-0 mt-1"
40 +
			style={link.favicon_url ? "display:none" : ""}
41 +
			aria-hidden="true"
42 +
		>
43 +
			<path
44 +
				fill="currentColor"
45 +
				d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 16v32H40V56Zm0 144H40v-96h176z"
46 +
			/>
47 +
		</svg>
47 48
		<span>{link.title}</span>
48 49
	</a>
49 50
	<span class="text-xs opacity-50 mt-0.5">{domain}</span>
src/pages/blogroll.astro +17 −16
43 43
              rel="noopener noreferrer"
44 44
              class="inline-flex items-center gap-2"
45 45
            >
46 -
              {feed.favicon_url ? (
46 +
              {feed.favicon_url && (
47 47
                <img
48 48
                  src={feed.favicon_url}
49 49
                  alt=""
50 50
                  width="16"
51 51
                  height="16"
52 52
                  loading="lazy"
53 -
                  class="w-4 h-4 rounded-sm"
53 +
                  class="favicon w-4 h-4 rounded-sm"
54 +
                  onerror="this.style.display='none';this.nextElementSibling.style.display='inline-block'"
54 55
                />
55 -
              ) : (
56 -
                <svg
57 -
                  xmlns="http://www.w3.org/2000/svg"
58 -
                  width="16"
59 -
                  height="16"
60 -
                  viewBox="0 0 256 256"
61 -
                  class="w-4 h-4"
62 -
                  aria-hidden="true"
63 -
                >
64 -
                  <path
65 -
                    fill="currentColor"
66 -
                    d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 16v32H40V56Zm0 144H40v-96h176z"
67 -
                  />
68 -
                </svg>
69 56
              )}
57 +
              <svg
58 +
                xmlns="http://www.w3.org/2000/svg"
59 +
                width="16"
60 +
                height="16"
61 +
                viewBox="0 0 256 256"
62 +
                class="favicon-fallback w-4 h-4"
63 +
                style={feed.favicon_url ? "display:none" : ""}
64 +
                aria-hidden="true"
65 +
              >
66 +
                <path
67 +
                  fill="currentColor"
68 +
                  d="M216 40H40a16 16 0 0 0-16 16v144a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a16 16 0 0 0-16-16m0 16v32H40V56Zm0 144H40v-96h176z"
69 +
                />
70 +
              </svg>
70 71
              {feed.title}
71 72
            </a>
72 73
          </li>