Container API: render components in isolation · Issue #533 · withastro/roadmap
Body Accepted Date: 23/03/23 Reference Issues/Discussions: #462 Author: @natemoo-re Implementation PR: No PR yet. See the feat/container branch for an exploration of implementation. Summary Astro c...
Container API: render components in isolation · Issue #533 · withastro/roadmap favicon https://github.com/withastro/roadmap/issues/533
Container API: render components in isolation · Issue #533 · withastro/roadmap

慣れてきた。astro いいじゃない。

⛔ storybook

部品の動作確認用に最初に準備。 svelte のときにあったのだけど histoire に入れかえて消滅したので やりなおし。 と思ったら stroybook の astro component 対応がなかった。

Support for Astro components · Issue #18356 · storybookjs/storybook
Is your feature request related to a problem? Please describe Astro is a new framework focusing on mostly static sites. It has its own template syntax, very much like jsx. Describe the solution you...
Support for Astro components · Issue #18356 · storybookjs/storybook favicon https://github.com/storybookjs/storybook/issues/18356
Support for Astro components · Issue #18356 · storybookjs/storybook

こちらは、一見 storybook に空目するのだけど storyblok デス。

StoryblokとAstro
StoryblokをCMSとして使ってコンテンツをAstroプロジェクトへ追加する
StoryblokとAstro favicon https://docs.astro.build/ja/guides/cms/storyblok/
StoryblokとAstro

✅ tailwind と DaisyUI

Terminal window
> npx astro add tailwind

class = "prose"

✅ theme-change

DaisyUI のデフォルトテーマを全部つっこんでみた。

ContentCollection

✅ tag

✅ next / prev

素直に実装。

タイトルだよー
const posts = await getCollection("posts");
posts.sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf());
const index = posts.findIndex((p) => p.slug == post.slug);
let prev = index + 1 < posts.length ? posts[index + 1] : null;
let next = index > 0 ? posts[index - 1] : null;

サーバー使わない簡易な検索。

✅ pagination

[page].astro を足したら動いた。同じディレクトリに同居できるぽい。

/src/pages/posts/[...slug].astro
/src/pages/posts/[page].astro # 👈
index.astro

✅ icon

Astro Icon
Astro Icon simplifies working with icons in Astro
Astro Icon favicon https://www.astroicon.dev/
astro-iconで手軽にいい感じのアイコンを使わせてもらおう - アルパカログ
Astroでアイコンを簡単に導入できるライブラリastro-iconを紹介します。
astro-iconで手軽にいい感じのアイコンを使わせてもらおう - アルパカログ favicon https://alpacat.com/blog/introduction-of-astro-icon/
astro-iconで手軽にいい感じのアイコンを使わせてもらおう - アルパカログ
Terminal window
npm i -D @iconify-json/mdi @iconify-json/devicon

mdx で Icon !
<Icon name="devicon:astro" class="text-4xl" />

markdown

✅ TOC

render 関数から見出し一覧を取得できる。 なるほどー。

const { Content, headings } = await post.render();

markdown 拡張

✅ directive / admonition ( info, warning とかの囲み)

admonitions is pretty great!

エラーノート

GFM

デフォルトに入っている?

✅ 外部リンクのマーカー

Add icons to external links | Docs

contents を使うと後ろに入るので、propertiescss を組み合わせて前に入れた。

css で前へ
a[data-external]::before {
content: attr(data-external);
}

✅🚧 linkcard

Astroでremark-link-cardをつかってリンクをカード形式で表示する
Astroでmarkdownで書いた記事をtailwindcss/typographyで表示する際にリンクをカード形式にする
Astroでremark-link-cardをつかってリンクをカード形式で表示する favicon https://futabooo.com/blog/2023/link-card/
Astroでremark-link-cardをつかってリンクをカード形式で表示する

TODO: aspect比固定するべし

✅ codeblock title

いろいろ調べたけど astro では astro-expressive-code がいいです。

:::warning build時エラーに

no grammar...

preivew 時はエラーにならない。 codeblock がシンタックス違反をしているとエラーになる!

astro の markdown-sytnax-guide とかだめ。

だめなときは文法を txt 指定にすればエラーは回避できる。 :::

astro-expressive-code

Configuring Expressive Code
Configuring Expressive Code favicon https://expressive-code.com/reference/configuration/
Configuring Expressive Code

rehype-pretty-code

Prism

remark-flexible-code-titles

data-language 属性 を before で表示

rehype-pretty-code と組合せるなど。

🟩 Starlight

Starlight 🌟 Astroでドキュメントサイトを作る
Starlightは、Astroを使った美しく高性能なドキュメントサイトの構築を支援します。
Starlight 🌟 Astroでドキュメントサイトを作る favicon https://starlight.astro.build/ja/
Starlight 🌟 Astroでドキュメントサイトを作る

sidebar に category tree を作る予定。