Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | import React from "react";
import { UserPen } from "lucide-react";
import * as style from "./index.module.scss";
const AuthorBio = () => (
<aside className={style.authorBioWrapper} aria-label="この記事を書いた人">
<h2 className={style.authorBioHeading}>
<UserPen
size={18}
aria-hidden="true"
style={{ verticalAlign: "-0.125em" }}
/>
この記事を書いた人
</h2>
<div className={style.authorBio}>
<div className={style.authorAvatar}>
<picture>
<source srcSet="/assets/avater.webp" type="image/webp" />
<img
src="/assets/avater.png"
alt="tubone24"
width="64"
height="64"
loading="lazy"
/>
</picture>
</div>
<div className={style.authorInfo}>
<strong className={style.authorName}>tubone24</strong>
<p className={style.authorDescription}>
AIエージェント開発、Webアプリケーション開発、クラウドインフラに携わるソフトウェアエンジニア。
「やさしいMCP入門」「AIエージェント開発/運用入門」著者。
</p>
<div className={style.authorLinks}>
<a
href="https://github.com/tubone24"
target="_blank"
rel="noopener noreferrer"
>
GitHub
</a>
<a
href="https://twitter.com/tubone24"
target="_blank"
rel="noopener noreferrer"
>
X
</a>
<a
href="https://portfolio.tubone-project24.xyz/"
target="_blank"
rel="noopener noreferrer"
>
Portfolio
</a>
</div>
</div>
</div>
</aside>
);
export default AuthorBio;
|