port blog components
- AuthorCard, BlogPagination, BlueskyComments, BlueskyEmbed,
CategoryFilter, CollapsibleComments, MarkdownContent, PostList,
ReadMoreContent, ScrollLogger, SortButton, Subscribe
- Category chips render via <Toggle pressed> (was Button variant
"toggled") so the submodule works against stock shadcn primitives
with no consumer-side variant additions
- Hardcoded color/spacing replaced with semantic Tailwind tokens
(text-primary, bg-background, border-border, …) — consumer
retunes via CSS variables, submodule never hardcodes brand
- BlueskyComments/Subscribe accept theme prop layered over sensible
defaults; <sequoia-*> custom-element registration is dynamic-
imported through the consumer's @/components/sequoia-* path
- ReadMoreContent + ScrollLogger use useBlogTelemetry() so all
client-side events route through BlogConfig.telemetry
- MarkdownContent exposes overridable remarkPlugins / rehypePlugins
/ embeds props with the current defaults (remarkGfm,
rehypePrettyCode, BlueskyEmbed)
- example/ adds Next env.d.ts + tsconfig + stub sequoia-* modules so
in-submodule tsc resolves @/components/* without the real sequoia
runtime
- Barrel re-exports the component set (renamed to AuthorCard to
avoid collision with the Author type)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>