chore: blogroll improvements
e20eb49e
1 file(s) · +28 −4
| 9 | 9 | }; |
|
| 10 | 10 | ||
| 11 | 11 | // Fetch the feeds data |
|
| 12 | - | const response = await fetch("https://feeds.stevedylan.dev/feeds?format=json"); |
|
| 12 | + | const response = await fetch("https://feeds.stevedylan.dev/api/subscriptions"); |
|
| 13 | 13 | const data = await response.json(); |
|
| 14 | 14 | ||
| 15 | 15 | // Sort subscriptions by title |
|
| 32 | 32 | </p> |
|
| 33 | 33 | <h2 class="text-xl font-semibold text-accent-2">Links</h2> |
|
| 34 | 34 | <ul |
|
| 35 | - | class="list-disc pl-4 space-y-4 sm:grid sm:grid-cols-2 sm:gap-y-4 sm:space-y-0" |
|
| 35 | + | class="list-none pl-0 space-y-4 sm:grid sm:grid-cols-2 sm:gap-y-4 sm:space-y-0" |
|
| 36 | 36 | > |
|
| 37 | 37 | { |
|
| 38 | 38 | sortedFeeds.map((feed) => ( |
|
| 39 | 39 | <li> |
|
| 40 | 40 | <a |
|
| 41 | - | href={feed.htmlUrl} |
|
| 41 | + | href={feed.site_url} |
|
| 42 | 42 | target="_blank" |
|
| 43 | 43 | rel="noopener noreferrer" |
|
| 44 | - | class="style-link" |
|
| 44 | + | class="inline-flex items-center gap-2" |
|
| 45 | 45 | > |
|
| 46 | + | {feed.favicon_url ? ( |
|
| 47 | + | <img |
|
| 48 | + | src={feed.favicon_url} |
|
| 49 | + | alt="" |
|
| 50 | + | width="16" |
|
| 51 | + | height="16" |
|
| 52 | + | loading="lazy" |
|
| 53 | + | class="w-4 h-4 rounded-sm" |
|
| 54 | + | /> |
|
| 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 | + | )} |
|
| 46 | 70 | {feed.title} |
|
| 47 | 71 | </a> |
|
| 48 | 72 | </li> |
|