diff --git a/README.md b/README.md index e8ce59e..26b7cf7 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,9 @@ src/ - 文档位于 `src/content/docs/{series}/`,其中 `index.md` 是系列入口。 - 访谈位于 `src/content/interviews/`,单篇 Markdown 对应一个详情页。 -- 三类内容统一公开日期和阅读时间;动态通过日期和精选状态组织。 +- 三类内容统一公开日期和阅读时间,并通过 `tone: light | mid | dark` 配置单篇视觉色调;文档、访谈和动态均可将任意多篇内容设置为 `featured: true`,集合页会将它们组成精选展板,未指定时自动突出一篇内容。 +- 精选展板是否自动翻页及翻页间隔统一在 `src/data/site.ts` 的 `featuredCarouselConfig` 中按栏目配置。 +- 访谈使用 `affiliation` 记录系所;设置 `anonymous: true` 时隐藏姓名,未提供系所则显示“系所信息保密”。 - 内容字段由 `src/content.config.ts` 校验。 - 默认语言为简体中文;当前不配置多语言路由。 diff --git a/docs/components.md b/docs/components.md index e9c7084..f06ee11 100644 --- a/docs/components.md +++ b/docs/components.md @@ -18,7 +18,11 @@ GeoGenesis 的几何站点标记。它没有 Props,颜色继承父元素,可 ### `SiteFooter.astro` -全站页脚,组合站点标记、公共导航、组织说明与版权信息。它没有 Props,导航和版权数据来自 `src/data/site.ts`。 +全站页脚,组合组织标识、Slogan、板块导航、纯图标形式的 GitHub、微信公众号、小红书、哔哩哔哩和知乎链接,以及版权声明和备案信息。它没有 Props,所有内容均来自 `src/data/site.ts` 的 `siteNav` 与 `footerConfig`;更换媒体地址或备案号时不需要修改组件。标准品牌 SVG 下载自 Simple Icons,并保存在 `public/icons/social/`。 + +### `ScrollToTop.astro` + +全站右下角的返回顶部按钮。滚动距离超过视口高度的约一半后显示,点击后平滑返回页面顶部;减少动态效果偏好开启时改为立即返回。组件由 `BaseLayout` 统一挂载,不需要页面单独引用。 ## UI components @@ -42,12 +46,12 @@ GeoGenesis 的几何站点标记。它没有 Props,颜色继承父元素,可 ### `PageIntro.astro` -集合页顶部的栏目名称、主标题、导语和编号。通常由 `CollectionLayout` 调用,不在页面中重复组合。 +集合页顶部的栏目名称、主标题、导语和中性站点标识。通常由 `CollectionLayout` 调用,不在页面中重复组合。 - `eyebrow: string`:栏目名称。 - `title: string`:页面主标题。 - `description: string`:页面导语。 -- `index?: string`:栏目编号,默认 `01`。 +- `marker: string`:右上角不参与正文语义的英文栏目标识。 ### `SectionHeading.astro` @@ -58,28 +62,102 @@ GeoGenesis 的几何站点标记。它没有 Props,颜色继承父元素,可 - `noteHref?: string`:存在时将说明渲染为链接。 - `className?: string`:附加样式类。 +### `ArrowRight.astro` + +`ActionLink` 图标插槽共用的右箭头,避免在页面中内联重复 SVG。 + +- `wide?: boolean`:使用宽幅(32×24)版本,用于关于页 CTA;默认标准(24×24)版本。 +- 使用时添加 `slot="icon"` 传入 `ActionLink`。 + ## Content components +### `CollectionIndex.astro` + +文档、访谈、动态三个集合索引页共用的页面骨架。它组合 `CollectionLayout`、`FeaturedContentCarousel`、`SectionHeading` 与 `PaginatedContentList`,三个索引页只负责查询和规范化数据后传入。 + +- `section: 'docs' | 'interviews' | 'news'`:栏目标识,用于读取文案配置、轮播配置和分页数据分片。 +- `featured: ContentListItem[]`:精选内容。 +- `listing: ContentListItem[]`:完整列表数据。 +- 各栏目文案(标题、导语、标识、列表标题等)集中维护在 `src/data/sections.ts` 的 `collectionSections`,轮播自动翻页配置仍在 `src/data/site.ts` 的 `featuredCarouselConfig`。 + +### `ContentVisual.astro` + +按 `ContentListItem` 的 `visual` 字段选择并渲染对应的视觉组件(`DocumentArt`、`InterviewArt` 或 `NewsArt`),让 `FeaturedContentCarousel` 与 `PaginatedContentList` 不必各自维护类型映射。 + +- `visual: 'documents' | 'interviews' | 'news'`:视觉类型。 +- `tone?: 'light' | 'mid' | 'dark'`:视觉明度,默认 `mid`。 +- `large?: boolean`:大幅展示尺寸。 + +### `FeaturedContentCarousel.astro` + +文档、动态与访谈集合页共用的精选滚动展板。它接收所有 `featured: true` 的内容,以 `FeaturedContentCard` 为单张展板,提供循环前后翻页、动态圆点索引和可选的自动翻页;仅有一篇精选时自动隐藏全部控制项。 + +- `items: ContentListItem[]`:已经规范化和排序的精选内容,可以包含多篇。 +- `autoplay?: boolean`:是否自动翻页,默认关闭。 +- `interval?: number`:自动翻页间隔,单位为毫秒;为保证阅读时间,组件最低采用 3000 毫秒。 +- `label?: string`:轮播区域的无障碍名称。 +- 自动翻页由 `src/data/site.ts` 的 `featuredCarouselConfig` 分栏目配置,不在界面中展示额外的播放控制;鼠标悬停、键盘焦点进入或页面进入后台时会暂时停止计时。 +- 首尾使用无障碍隐藏的克隆展板衔接,点击同一方向的翻页按钮时始终保持一致的运动方向。 +- 系统开启“减少动态效果”时不启用自动翻页,并将滑动过渡降至最低。 + +### `FeaturedContentCard.astro` + +文档、动态与访谈集合页共用的单张精选内容卡片,也是 `FeaturedContentCarousel` 的基础展板。组件统一双栏布局、日期与阅读时间、标题、简介和 Hover 状态,不绑定内容类型或具体视觉图案。 + +- `href: string`:内容详情页地址。 +- `title: string`:内容标题。 +- `summary?: string`:可选简介;访谈等不需要简介的内容可以省略。 +- `publishedAt: Date`:发布日期。 +- `readTime: string`:阅读时间。 +- `visual` 命名插槽:左侧的 `DocumentArt`、`InterviewArt` 或 `NewsArt`。 +- `footer` 命名插槽:可选的类型专属补充信息,例如访谈嘉宾与所属机构。 + +### `ContentListCard.astro` + +文档、动态与访谈目录共用的横向内容卡片。组件统一视觉图、元信息、标题和简介的结构,并在窄屏下自动切换为纵向排列。访谈目录将访谈篇章标题作为标题、“受访者姓名+所属机构”作为简介,保持组件本身与内容类型解耦。 + +- `href: string`:内容详情页地址。 +- `title: string`:内容标题。 +- `summary?: string`:可选简介。 +- `publishedAt: Date`:发布日期。 +- `readTime: string`:阅读时间。 +- `visual` 命名插槽:内容类型对应的抽象视觉组件。 + +### `PaginatedContentList.astro` + +文档、访谈与动态目录共用的页内分页列表。Astro 在首屏静态渲染前六项,其余页面由构建期生成的静态 JSON 分片提供;用户通过动态小点索引和前后箭头切换固定大小的目录页,列表内容会被替换而不是持续追加。栏目 URL 始终保持不变,也不引入前端框架运行时。 + +- `items: ContentListItem[]`:已经规范化和排序的列表数据。 +- `section: 'docs' | 'interviews' | 'news'`:用于定位对应的静态数据分片。 +- `className?: string`:附加到实际列表容器的样式类。 +- 分页大小统一由 `src/utils/contentListing.ts` 的 `LIST_PAGE_SIZE` 控制。 +- 总页数超过九页时,索引只保留首尾页和当前页附近的分页点,其余范围使用省略标识隐藏。 + ### `NewsArt.astro` -动态列表和文章头部使用的抽象地学视觉。 +动态列表和文章头部使用的圆形玻璃面、涟漪纹理与倾斜星环视觉,左上角固定显示 `GEO / NEWS`。 - `tone?: 'light' | 'mid' | 'dark'`:视觉明度,默认 `mid`。 -- `index?: string`:图内编号或短标签。 - `large?: boolean`:文章头图尺寸。 -### `PortraitArt.astro` +### `InterviewArt.astro` -访谈列表和文章头部使用的人物抽象视觉。 +访谈列表和文章头部使用的三角形玻璃面与斜向细线纹理视觉,左上角固定显示 `GEO / INTERVIEWS`。 -- `initials: string`:受访者姓名缩写。 - `tone?: 'light' | 'mid' | 'dark'`:视觉明度,默认 `mid`。 -- `issue?: string`:期号或精选标签。 - `large?: boolean`:大幅展示尺寸。 +### `DocumentArt.astro` + +文档目录和阅读页使用的方形玻璃面与细密网格纹理视觉,左上角固定显示 `GEO / DOCUMENTS`。 + +- `tone?: 'light' | 'mid' | 'dark'`:视觉明度,默认 `mid`。 +- `large?: boolean`:精选区或文章头图尺寸。 + ## 组件约定 - Props 使用 `interface Props` 定义。 - 通用组件不绑定具体路由、作者或正文。 +- 集合页优先组合 `FeaturedContentCarousel`、`ContentListCard` 与对应的视觉组件;类型独有信息通过命名插槽传入。 - 内容数据中的视觉变体只使用 `light`、`mid`、`dark`,具体颜色由全局样式控制。 - 重复出现的展示结构优先抽成组件,不在页面中复制。 diff --git a/docs/layouts.md b/docs/layouts.md index f7d04c7..f8c719a 100644 --- a/docs/layouts.md +++ b/docs/layouts.md @@ -22,32 +22,31 @@ - `eyebrow: string`:栏目名称。 - `heading: string`:页面主标题。 - `intro: string`:页面导语。 -- `index: string`:栏目编号。 +- `marker: string`:页面介绍区右上角的英文栏目标识。 - 默认插槽:集合页内容。 ## `EditorialArticleLayout.astro` -单篇访谈和单篇动态共用的长文章布局。通过 `variant` 调整两类内容的头部、视觉区、侧栏和正文宽度。 +单篇访谈和单篇动态共用的编辑内容布局。两类内容共享元信息、标题、导语与横贯页面的低高度视觉图;`interview` 在正文旁保留人物侧栏,`news` 则使用无侧栏的居中 Markdown 正文列。 - `title: string`、`description: string`:文章标题和摘要。 -- `backHref: string`、`backLabel: string`:返回目录链接。 - `variant: 'interview' | 'news'`:文章类型。 - `eyebrow?: string`:未提供 `meta` 插槽时的备用信息。 - `meta` 插槽:日期和阅读时间。 -- `visual` 插槽:`NewsArt`、`PortraitArt` 或真实图片。 -- `aside` 插槽:受访者简介或精简文章信息。 +- `visual` 插槽:`NewsArt`、`InterviewArt` 或真实图片。 +- `aside` 插槽:访谈页面的受访者简介;动态页面不使用。 - 默认插槽:Markdown 正文。 ## `DocumentReaderLayout.astro` -文档系列的阅读布局,统一处理返回栏、系列导航、阅读进度、文章信息、正文、下一章节和页内目录。 +文档系列的阅读布局,统一处理精简的系列导航、文章信息、正文、前后翻页和页内目录。 - `title: string`、`description?: string`:当前文档信息。 - `publishedAt: Date`、`readTime: string`:公开元信息。 - `seriesTitle: string`:系列名称。 -- `currentIndex: number`:当前章节位置。 - `navigation`:系列章节导航数组。 - `headings`:Astro 渲染得到的正文标题数组。 +- `previous?`:上一篇文档入口;不存在时不渲染。 - `next?`:下一章节入口。 - `visual` 插槽:可选的系列视觉。 - 默认插槽:Markdown 正文。 diff --git a/docs/visual-style.md b/docs/visual-style.md index 6a0faaa..e6e9e75 100644 --- a/docs/visual-style.md +++ b/docs/visual-style.md @@ -12,9 +12,23 @@ GeoGenesis 使用克制的地球科学编辑风格:大面积采用石灰岩暖 颜色用于表达层级和状态,不用于无意义装饰。 +## 样式文件组织 + +全局样式位于 `src/styles/`,`global.css` 只负责按固定顺序导入各模块,不直接书写规则: + +- `tokens.css`:明暗主题的设计令牌。 +- `base.css`:元素重置、`shell`、`eyebrow` 等通用原子类和减少动态效果处理。 +- `layout/`:页头 `site-header.css` 与页脚 `site-footer.css`。 +- `ui/`:按钮 `buttons.css`、元信息行与栏目标题 `meta.css`、页首介绍 `page-intro.css`。 +- `content/`:内容卡片 `cards.css`、轮播 `carousel.css`、分页 `pagination.css`、三套内容视觉 `visuals.css`、长文排版 `prose.css`。 +- `pages/`:首页 `home.css`、集合索引 `collections.css`、文档阅读 `doc-reader.css`、文章页 `articles.css`、关于页 `about.css`。 +- `responsive/`:按断点集中的响应式覆盖(`1000.css`、`760.css`、`430.css`),始终在最后导入。 + +导入顺序即层叠顺序:基础样式在前、页面样式在后、断点覆盖最后。新增样式时先归入对应模块,断点覆盖写入对应断点文件;不要在 `global.css` 中直接添加规则。 + ## 设计令牌 -令牌位于 `src/styles/global.css`。 +令牌位于 `src/styles/tokens.css`。 | 令牌 | 用途 | | --- | --- | @@ -39,7 +53,7 @@ GeoGenesis 使用克制的地球科学编辑风格:大面积采用石灰岩暖 ## 内容视觉 -`PortraitArt`、`NewsArt` 和文档系列视觉使用 `light`、`mid`、`dark` 三档明度。实际色彩由全局样式控制,使内容数据不与某一版主题耦合。 +`DocumentArt`、`InterviewArt` 和 `NewsArt` 共享低饱和渐变与半透明玻璃质感,分别以方形加网格、三角形加斜线、圆形加涟漪与星环形成类别差异,并统一支持 `light`、`mid`、`dark` 三档色调。主几何形保持固定比例并越出画框,只展示约 70%,以适应不同比例的视觉容器。图片区域仅在左上角保留 `GEO / 类别` 标识,实际色彩由内容字段控制。 首页地球图片保留低饱和自然色;页脚、深色卡片和关于页 CTA 使用接近黑色的深岩绿。长文阅读区始终保持中性背景,避免颜色干扰阅读。 @@ -48,4 +62,6 @@ GeoGenesis 使用克制的地球科学编辑风格:大面积采用石灰岩暖 - 当前导航使用主题色文字,不添加圆点或粗下划线。 - 主要按钮使用深海岩绿,悬停时仅轻微改变明度。 - 正文链接、键盘焦点和阅读进度使用主题色。 +- 明暗切换使用无边框单图标按钮,只通过轻微底色和图标淡入淡出反馈状态。 +- 中文长篇正文以 18px 为桌面阅读基准,卡片摘要保持在 15–16px;装饰坐标等极小信息不低于 11px。 - 动效保持轻微,并遵循 `prefers-reduced-motion`。 diff --git a/public/icons/social/bilibili.svg b/public/icons/social/bilibili.svg new file mode 100644 index 0000000..6c114c7 --- /dev/null +++ b/public/icons/social/bilibili.svg @@ -0,0 +1 @@ +Bilibili \ No newline at end of file diff --git a/public/icons/social/github.svg b/public/icons/social/github.svg new file mode 100644 index 0000000..538ec5b --- /dev/null +++ b/public/icons/social/github.svg @@ -0,0 +1 @@ +GitHub \ No newline at end of file diff --git a/public/icons/social/wechat.svg b/public/icons/social/wechat.svg new file mode 100644 index 0000000..c3eb6c4 --- /dev/null +++ b/public/icons/social/wechat.svg @@ -0,0 +1 @@ +WeChat \ No newline at end of file diff --git a/public/icons/social/xiaohongshu.svg b/public/icons/social/xiaohongshu.svg new file mode 100644 index 0000000..3de64c5 --- /dev/null +++ b/public/icons/social/xiaohongshu.svg @@ -0,0 +1 @@ +Xiaohongshu \ No newline at end of file diff --git a/public/icons/social/zhihu.svg b/public/icons/social/zhihu.svg new file mode 100644 index 0000000..c283d23 --- /dev/null +++ b/public/icons/social/zhihu.svg @@ -0,0 +1 @@ +Zhihu \ No newline at end of file diff --git a/public/images/hero-earth.png b/public/images/hero-earth.png index aceb527..9ed0899 100644 Binary files a/public/images/hero-earth.png and b/public/images/hero-earth.png differ diff --git a/src/components/content/CollectionIndex.astro b/src/components/content/CollectionIndex.astro new file mode 100644 index 0000000..b933560 --- /dev/null +++ b/src/components/content/CollectionIndex.astro @@ -0,0 +1,45 @@ +--- +import CollectionLayout from '../../layouts/CollectionLayout.astro'; +import FeaturedContentCarousel from './FeaturedContentCarousel.astro'; +import PaginatedContentList from './PaginatedContentList.astro'; +import SectionHeading from '../ui/SectionHeading.astro'; +import { collectionSections } from '../../data/sections'; +import { featuredCarouselConfig } from '../../data/site'; +import type { ContentListItem, ListingSection } from '../../utils/contentListing'; + +interface Props { + section: ListingSection; + featured: ContentListItem[]; + listing: ContentListItem[]; +} + +const { section, featured, listing } = Astro.props; +const config = collectionSections[section]; +const carousel = featuredCarouselConfig[section]; +--- + + +
+ + + + + +
+
diff --git a/src/components/content/ContentListCard.astro b/src/components/content/ContentListCard.astro new file mode 100644 index 0000000..edd6d36 --- /dev/null +++ b/src/components/content/ContentListCard.astro @@ -0,0 +1,27 @@ +--- +import MetaRow from '../ui/MetaRow.astro'; +import { formatContentDate } from '../../utils/content'; + +interface Props { + href: string; + title: string; + summary?: string; + publishedAt: Date; + readTime: string; +} + +const { href, title, summary, publishedAt, readTime } = Astro.props; +--- + + + +
+ +

{title}

+ {summary &&

{summary}

} +
+
diff --git a/src/components/content/ContentVisual.astro b/src/components/content/ContentVisual.astro new file mode 100644 index 0000000..92f1f6f --- /dev/null +++ b/src/components/content/ContentVisual.astro @@ -0,0 +1,21 @@ +--- +import DocumentArt from './DocumentArt.astro'; +import InterviewArt from './InterviewArt.astro'; +import NewsArt from './NewsArt.astro'; +import type { ListingTone, ListingVisual } from '../../utils/contentListing'; + +interface Props { + visual: ListingVisual; + tone?: ListingTone; + large?: boolean; +} + +const { visual, tone = 'mid', large = false } = Astro.props; +const Visual = { + documents: DocumentArt, + interviews: InterviewArt, + news: NewsArt, +}[visual]; +--- + + diff --git a/src/components/content/DocumentArt.astro b/src/components/content/DocumentArt.astro new file mode 100644 index 0000000..4b309d3 --- /dev/null +++ b/src/components/content/DocumentArt.astro @@ -0,0 +1,18 @@ +--- +interface Props { + tone?: 'light' | 'mid' | 'dark'; + large?: boolean; +} + +const { tone = 'mid', large = false } = Astro.props; +--- + +
+ GEO / DOCUMENTS + + +
diff --git a/src/components/content/FeaturedContentCard.astro b/src/components/content/FeaturedContentCard.astro new file mode 100644 index 0000000..4a61d53 --- /dev/null +++ b/src/components/content/FeaturedContentCard.astro @@ -0,0 +1,29 @@ +--- +import MetaRow from '../ui/MetaRow.astro'; +import { formatContentDate } from '../../utils/content'; + +interface Props { + href: string; + title: string; + summary?: string; + publishedAt: Date; + readTime: string; +} + +const { href, title, summary, publishedAt, readTime } = Astro.props; +const hasFooter = Astro.slots.has('footer'); +--- + + + + + diff --git a/src/components/content/FeaturedContentCarousel.astro b/src/components/content/FeaturedContentCarousel.astro new file mode 100644 index 0000000..a4e8edb --- /dev/null +++ b/src/components/content/FeaturedContentCarousel.astro @@ -0,0 +1,208 @@ +--- +import FeaturedContentCard from './FeaturedContentCard.astro'; +import ContentVisual from './ContentVisual.astro'; +import type { ContentListItem } from '../../utils/contentListing'; + +interface Props { + items: ContentListItem[]; + autoplay?: boolean; + interval?: number; + label?: string; +} + +const { + items, + autoplay = false, + interval = 7000, + label = '精选内容', +} = Astro.props; +const hasMultiple = items.length > 1; +const panels = hasMultiple + ? [ + { item: items[items.length - 1], originalIndex: items.length - 1, clone: true }, + ...items.map((item, originalIndex) => ({ item, originalIndex, clone: false })), + { item: items[0], originalIndex: 0, clone: true }, + ] + : items.map((item, originalIndex) => ({ item, originalIndex, clone: false })); +--- + +{items.length > 0 && ( + +)} + + diff --git a/src/components/content/InterviewArt.astro b/src/components/content/InterviewArt.astro new file mode 100644 index 0000000..8f91e52 --- /dev/null +++ b/src/components/content/InterviewArt.astro @@ -0,0 +1,18 @@ +--- +interface Props { + tone?: 'light' | 'mid' | 'dark'; + large?: boolean; +} + +const { tone = 'mid', large = false } = Astro.props; +--- + +
+ GEO / INTERVIEWS + + +
diff --git a/src/components/content/NewsArt.astro b/src/components/content/NewsArt.astro index 977c5c4..8cda3d3 100644 --- a/src/components/content/NewsArt.astro +++ b/src/components/content/NewsArt.astro @@ -1,16 +1,18 @@ --- interface Props { tone?: 'light' | 'mid' | 'dark'; - index?: string; large?: boolean; } -const { tone = 'mid', index = '01', large = false } = Astro.props; +const { tone = 'mid', large = false } = Astro.props; --- -
- - {index} - GEO / DISPATCH - +
+ GEO / NEWS + +
diff --git a/src/components/content/PaginatedContentList.astro b/src/components/content/PaginatedContentList.astro new file mode 100644 index 0000000..e8a8caa --- /dev/null +++ b/src/components/content/PaginatedContentList.astro @@ -0,0 +1,244 @@ +--- +import ContentListCard from './ContentListCard.astro'; +import ContentVisual from './ContentVisual.astro'; +import { + LIST_PAGE_SIZE, + type ContentListItem, + type ListingSection, +} from '../../utils/contentListing'; +import { sitePath } from '../../utils/paths'; + +interface Props { + items: ContentListItem[]; + section: ListingSection; + className?: string; +} + +const { items, section, className } = Astro.props; +const firstPage = items.slice(0, LIST_PAGE_SIZE); +const totalPages = Math.ceil(items.length / LIST_PAGE_SIZE); +--- + +
+
+ {firstPage.map((item) => ( + + + + ))} +
+ + {totalPages > 1 && ( + + )} +
+ + diff --git a/src/components/content/PortraitArt.astro b/src/components/content/PortraitArt.astro deleted file mode 100644 index 68316b6..0000000 --- a/src/components/content/PortraitArt.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -interface Props { - initials: string; - tone?: 'light' | 'mid' | 'dark'; - issue?: string; - large?: boolean; -} - -const { initials, tone = 'mid', issue, large = false } = Astro.props; ---- - -
-
- {initials} - {issue && {issue}} - FIELD NOTES · 2026 -
diff --git a/src/components/site/ScrollToTop.astro b/src/components/site/ScrollToTop.astro new file mode 100644 index 0000000..71c004b --- /dev/null +++ b/src/components/site/ScrollToTop.astro @@ -0,0 +1,107 @@ + + + + + diff --git a/src/components/site/SiteFooter.astro b/src/components/site/SiteFooter.astro index 67a6493..02bf11d 100644 --- a/src/components/site/SiteFooter.astro +++ b/src/components/site/SiteFooter.astro @@ -1,21 +1,56 @@ --- import SiteMark from './SiteMark.astro'; -import { footerCopyright, siteNav } from '../../data/site'; +import { footerConfig, siteNav } from '../../data/site'; import { sitePath } from '../../utils/paths'; --- diff --git a/src/components/site/SiteHeader.astro b/src/components/site/SiteHeader.astro index 30362d4..85af831 100644 --- a/src/components/site/SiteHeader.astro +++ b/src/components/site/SiteHeader.astro @@ -27,10 +27,10 @@ const pathname = Astro.url.pathname;
-
@@ -54,16 +54,30 @@ const pathname = Astro.url.pathname; diff --git a/src/components/site/SiteMark.astro b/src/components/site/SiteMark.astro index 568e8dc..6103334 100644 --- a/src/components/site/SiteMark.astro +++ b/src/components/site/SiteMark.astro @@ -3,8 +3,8 @@