chore: added rel=me
df61fae3
3 file(s) · +22 −3
| 63 | 63 | <link rel="alternate" type="application/rss+xml" title={siteConfig.title} href={new URL("rss.xml", Astro.site)} |
|
| 64 | 64 | /> |
|
| 65 | 65 | ||
| 66 | + | <!-- Webmention endpoint --> |
|
| 67 | + | <link rel="webmention" href={new URL("api/webmention", Astro.site)} /> |
|
| 68 | + | ||
| 66 | 69 | <!-- Standard.site document verification --> |
|
| 67 | 70 | {atUri && <link rel="site.standard.document" href={atUri} />} |
|
| 68 | 71 | <link rel="site.standard.publication" href="at://did:plc:ia2zdnhjaokf5lazhxrmj6eu/site.standard.publication/3mbykzswhqc2x" /> |
| 118 | 118 | name: string; |
|
| 119 | 119 | href: string; |
|
| 120 | 120 | external?: boolean; |
|
| 121 | + | // rel="me" for IndieWeb identity verification on profile links |
|
| 122 | + | me?: boolean; |
|
| 121 | 123 | icon: string; |
|
| 122 | 124 | }; |
|
| 123 | 125 | ||
| 134 | 136 | key: "email", |
|
| 135 | 137 | name: "Email", |
|
| 136 | 138 | href: "mailto:contact@stevedylan.dev", |
|
| 139 | + | me: true, |
|
| 137 | 140 | icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 256 256"><path fill="currentColor" d="M224 48H32a8 8 0 0 0-8 8v136a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V56a8 8 0 0 0-8-8m-96 85.15L52.57 64h150.86ZM98.71 128L40 181.81V74.19Zm11.84 10.85l12 11.05a8 8 0 0 0 10.82 0l12-11.05l58 53.15H52.57ZM157.29 128L216 74.18v107.64Z"/></svg>`, |
|
| 138 | 141 | }, |
|
| 139 | 142 | { |
|
| 162 | 165 | name: "ATProto", |
|
| 163 | 166 | href: `https://pdsls.dev/at://${OWNER_DID}`, |
|
| 164 | 167 | external: true, |
|
| 168 | + | me: true, |
|
| 165 | 169 | icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 256 256"><path fill="currentColor" d="M128 24a104 104 0 0 0 0 208c21.51 0 44.1-6.48 60.43-17.33a8 8 0 0 0-8.86-13.33C166 210.38 146.21 216 128 216a88 88 0 1 1 88-88c0 26.45-10.88 32-20 32s-20-5.55-20-32V88a8 8 0 0 0-16 0v4.26a48 48 0 1 0 5.93 65.1c6 12 16.35 18.64 30.07 18.64c22.54 0 36-17.94 36-48A104.11 104.11 0 0 0 128 24m0 136a32 32 0 1 1 32-32a32 32 0 0 1-32 32"/></svg>`, |
|
| 166 | 170 | }, |
|
| 167 | 171 | { |
|
| 169 | 173 | name: "GitHub", |
|
| 170 | 174 | href: "https://github.com/stevedylandev", |
|
| 171 | 175 | external: true, |
|
| 176 | + | me: true, |
|
| 172 | 177 | icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 256 256"><path fill="currentColor" d="M208.31 75.68A59.78 59.78 0 0 0 202.93 28a8 8 0 0 0-6.93-4a59.75 59.75 0 0 0-48 24h-24a59.75 59.75 0 0 0-48-24a8 8 0 0 0-6.93 4a59.78 59.78 0 0 0-5.38 47.68A58.14 58.14 0 0 0 56 104v8a56.06 56.06 0 0 0 48.44 55.47A39.8 39.8 0 0 0 96 192v8H72a24 24 0 0 1-24-24a40 40 0 0 0-40-40a8 8 0 0 0 0 16a24 24 0 0 1 24 24a40 40 0 0 0 40 40h24v16a8 8 0 0 0 16 0v-40a24 24 0 0 1 48 0v40a8 8 0 0 0 16 0v-40a39.8 39.8 0 0 0-8.44-24.53A56.06 56.06 0 0 0 216 112v-8a58.14 58.14 0 0 0-7.69-28.32M200 112a40 40 0 0 1-40 40h-48a40 40 0 0 1-40-40v-8a41.74 41.74 0 0 1 6.9-22.48a8 8 0 0 0 1.1-7.69a43.8 43.8 0 0 1 .79-33.58a43.88 43.88 0 0 1 32.32 20.06a8 8 0 0 0 6.71 3.69h32.35a8 8 0 0 0 6.74-3.69a43.87 43.87 0 0 1 32.32-20.06a43.8 43.8 0 0 1 .77 33.58a8.09 8.09 0 0 0 1 7.65a41.7 41.7 0 0 1 7 22.52Z"/></svg>`, |
|
| 173 | 178 | }, |
|
| 174 | 179 | { |
|
| 176 | 181 | name: "LinkedIn", |
|
| 177 | 182 | href: "https://www.linkedin.com/in/steve-simkins/", |
|
| 178 | 183 | external: true, |
|
| 184 | + | me: true, |
|
| 179 | 185 | icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 256 256"><path fill="currentColor" d="M216 24H40a16 16 0 0 0-16 16v176a16 16 0 0 0 16 16h176a16 16 0 0 0 16-16V40a16 16 0 0 0-16-16m0 192H40V40h176zM96 112v64a8 8 0 0 1-16 0v-64a8 8 0 0 1 16 0m88 28v36a8 8 0 0 1-16 0v-36a20 20 0 0 0-40 0v36a8 8 0 0 1-16 0v-64a8 8 0 0 1 15.79-1.78A36 36 0 0 1 184 140m-84-56a12 12 0 1 1-12-12a12 12 0 0 1 12 12"/></svg>`, |
|
| 180 | 186 | }, |
|
| 181 | 187 | // { |
|
| 196 | 202 | key: "photos", |
|
| 197 | 203 | name: "Photos", |
|
| 198 | 204 | href: "https://steve.photo", |
|
| 205 | + | me: true, |
|
| 199 | 206 | icon: `<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 256 256"><path fill="currentColor" 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 16v102.75l-26.07-26.06a16 16 0 0 0-22.63 0l-20 20l-44-44a16 16 0 0 0-22.62 0L40 149.37V56ZM40 172l52-52l80 80H40Zm176 28h-21.37l-36-36l20-20L216 181.38zm-72-100a12 12 0 1 1 12 12a12 12 0 0 1-12-12"/></svg>`, |
|
| 200 | 207 | }, |
|
| 201 | 208 | ]; |
|
| 13 | 13 | <h1 class="title mb-6">/links</h1> |
|
| 14 | 14 | <ul class="flex flex-col items-start gap-x-4 sm:flex-initial"> |
|
| 15 | 15 | { |
|
| 16 | - | SOCIAL_ITEMS.map((link) => ( |
|
| 16 | + | SOCIAL_ITEMS.map((link) => { |
|
| 17 | + | const rel = [ |
|
| 18 | + | link.external && "noopener", |
|
| 19 | + | link.external && "noreferrer", |
|
| 20 | + | link.me && "me", |
|
| 21 | + | ] |
|
| 22 | + | .filter(Boolean) |
|
| 23 | + | .join(" "); |
|
| 24 | + | return ( |
|
| 17 | 25 | <li> |
|
| 18 | 26 | <a |
|
| 19 | 27 | class="flex items-center gap-4 p-2 sm:hover:text-link" |
|
| 20 | 28 | href={link.href} |
|
| 21 | 29 | target={link.external ? "_blank" : undefined} |
|
| 22 | - | rel={link.external ? "noopener noreferrer" : undefined} |
|
| 30 | + | rel={rel || undefined} |
|
| 23 | 31 | > |
|
| 24 | 32 | <Fragment set:html={link.icon} /> |
|
| 25 | 33 | {link.name} |
|
| 26 | 34 | <span class="sr-only">{link.name}</span> |
|
| 27 | 35 | </a> |
|
| 28 | 36 | </li> |
|
| 29 | - | )) |
|
| 37 | + | ); |
|
| 38 | + | }) |
|
| 30 | 39 | } |
|
| 31 | 40 | </ul> |
|
| 32 | 41 | </div> |