diff --git a/astro.config.mjs b/astro.config.mjs
index 580591f..f246ddb 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -39,7 +39,7 @@ export default defineConfig({
animationClass: "transition-swup-", // see https://swup.js.org/options/#animationselector
// the default value `transition-` cause transition delay
// when the Tailwind class `transition-all` is used
- containers: ["main", "#toc"],
+ containers: ["main", "#toc", "#series"],
smoothScrolling: true,
cache: true,
preload: true,
diff --git a/src/components/widget/Series.astro b/src/components/widget/Series.astro
new file mode 100644
index 0000000..413b629
--- /dev/null
+++ b/src/components/widget/Series.astro
@@ -0,0 +1,51 @@
+---
+import I18nKey from '../../i18n/i18nKey'
+import { i18n } from '../../i18n/translation'
+import { getPostSeries } from '../../utils/content-utils'
+import { getPostUrlBySlug } from '../../utils/url-utils'
+import WidgetLayout from './WidgetLayout.astro'
+
+const COLLAPSED_HEIGHT = '7.5rem'
+
+interface Props {
+ class?: string
+ style?: string
+ series: string
+}
+const className = Astro.props.class
+const style = Astro.props.style
+const seriesName = Astro.props.series
+
+const series = await getPostSeries(seriesName)
+
+const isCollapsed = series.length >= 10
+---
+