├── tmp └── .gitkeep ├── public ├── .gitkeep └── favicon.ico ├── .github ├── config │ └── exclude.txt ├── pull_request_template.md └── workflows │ └── recover-cache.yml ├── postcss.config.js ├── src ├── components │ ├── notion-blocks │ │ ├── Divider.astro │ │ ├── embeds │ │ │ ├── astro-tweet │ │ │ │ ├── src │ │ │ │ │ ├── api │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── types │ │ │ │ │ │ │ ├── edit.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── photo.ts │ │ │ │ │ │ │ ├── user.ts │ │ │ │ │ │ │ ├── video.ts │ │ │ │ │ │ │ ├── entities.ts │ │ │ │ │ │ │ ├── media.ts │ │ │ │ │ │ │ └── tweet.ts │ │ │ │ │ │ └── get-tweet.ts │ │ │ │ │ ├── twitter-theme │ │ │ │ │ │ ├── tweet-skeleton.module.css │ │ │ │ │ │ ├── Skeleton.astro │ │ │ │ │ │ ├── AvatarImg.astro │ │ │ │ │ │ ├── MediaImg.astro │ │ │ │ │ │ ├── quoted-tweet │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── QuotedTweetContainer.astro │ │ │ │ │ │ │ ├── quoted-tweet-body.module.css │ │ │ │ │ │ │ ├── QuotedTweetBody.astro │ │ │ │ │ │ │ ├── quoted-tweet-container.module.css │ │ │ │ │ │ │ ├── QuotedTweet.astro │ │ │ │ │ │ │ ├── quoted-tweet-header.module.css │ │ │ │ │ │ │ └── QuotedTweetHeader.astro │ │ │ │ │ │ ├── icons │ │ │ │ │ │ │ ├── icons.module.css │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── Verified.astro │ │ │ │ │ │ │ ├── VerifiedGovernment.astro │ │ │ │ │ │ │ └── VerifiedBusiness.astro │ │ │ │ │ │ ├── tweet-not-found.module.css │ │ │ │ │ │ ├── TweetLink.astro │ │ │ │ │ │ ├── tweet-link.module.css │ │ │ │ │ │ ├── tweet-body.module.css │ │ │ │ │ │ ├── verified-badge.module.css │ │ │ │ │ │ ├── tweet-info-created-at.module.css │ │ │ │ │ │ ├── tweet-in-reply-to.module.css │ │ │ │ │ │ ├── TweetNotFound.astro │ │ │ │ │ │ ├── TweetContainer.astro │ │ │ │ │ │ ├── TweetInReplyTo.astro │ │ │ │ │ │ ├── skeleton.module.css │ │ │ │ │ │ ├── TweetInfoCreatedAt.astro │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ ├── TweetSkeleton.astro │ │ │ │ │ │ ├── TweetMediaVideo.astro │ │ │ │ │ │ ├── tweet-container.module.css │ │ │ │ │ │ ├── TweetReplies.astro │ │ │ │ │ │ ├── components.ts │ │ │ │ │ │ ├── tweet-replies.module.css │ │ │ │ │ │ ├── TweetBody.astro │ │ │ │ │ │ ├── tweet-info.module.css │ │ │ │ │ │ ├── VerifiedBadge.astro │ │ │ │ │ │ ├── tweet-media.module.css │ │ │ │ │ │ ├── TweetInfo.astro │ │ │ │ │ │ ├── EmbeddedTweet.astro │ │ │ │ │ │ ├── tweet-media-video.module.css │ │ │ │ │ │ ├── TweetHeader.astro │ │ │ │ │ │ ├── tweet-header.module.css │ │ │ │ │ │ ├── TweetMedia.astro │ │ │ │ │ │ ├── TweetActions.astro │ │ │ │ │ │ └── tweet-actions.module.css │ │ │ │ │ ├── AstroTweet.astro │ │ │ │ │ ├── Tweet.astro │ │ │ │ │ └── TweetContent.astro │ │ │ │ └── index.ts │ │ │ ├── astro-bluesky │ │ │ │ ├── index.ts │ │ │ │ ├── types.ts │ │ │ │ ├── starter-pack.astro │ │ │ │ ├── list.astro │ │ │ │ ├── media-container.astro │ │ │ │ ├── avatar.astro │ │ │ │ ├── video-thumbnail.astro │ │ │ │ ├── image-grid.astro │ │ │ │ ├── embed.astro │ │ │ │ ├── external.astro │ │ │ │ ├── quote-embed.astro │ │ │ │ └── card.astro │ │ │ ├── PinterestEmbed.astro │ │ │ ├── SpotifyEmbed.astro │ │ │ ├── NotionEmbed.astro │ │ │ ├── BlueskyEmbed.astro │ │ │ ├── CodePenEmbed.astro │ │ │ ├── TikTokEmbed.astro │ │ │ ├── TweetEmbed.astro │ │ │ ├── EmbedGeneric.astro │ │ │ ├── NAudio.astro │ │ │ ├── GoogleMapsEmbed.astro │ │ │ └── Video.astro │ │ ├── MentionDate.astro │ │ ├── annotations │ │ │ ├── Italic.astro │ │ │ ├── Underline.astro │ │ │ ├── Bold.astro │ │ │ ├── Strikethrough.astro │ │ │ ├── Color.astro │ │ │ ├── Code.astro │ │ │ └── Anchor.astro │ │ ├── LinkToPage.astro │ │ ├── Equation.astro │ │ ├── SyncedBlock.astro │ │ ├── Caption.astro │ │ ├── ColumnList.astro │ │ ├── Quote.astro │ │ ├── MentionCustomEmoji.astro │ │ ├── TableOfContents.astro │ │ ├── Paragraph.astro │ │ ├── BulletedListItems.astro │ │ ├── File.astro │ │ ├── NumberedListItems.astro │ │ ├── Heading1.astro │ │ ├── Heading3.astro │ │ ├── Heading2.astro │ │ ├── ToDo.astro │ │ ├── Toggle.astro │ │ └── FootnoteContent.astro │ ├── ui │ │ ├── SkipLink.astro │ │ ├── FormattedDate.astro │ │ ├── Icon.astro │ │ └── ThemeIcon.astro │ ├── generated-mdx-snippets │ │ ├── MdxSnippetRenderer.astro │ │ └── mdxSnippetRegistry.ts │ ├── layout │ │ ├── Footer.astro │ │ └── HeroBackgroundCover.astro │ ├── auto-added-sections │ │ ├── webmentions │ │ │ ├── index.astro │ │ │ ├── Likes.astro │ │ │ └── Comments.astro │ │ ├── TOCHeading.astro │ │ ├── interlinked-content │ │ │ ├── LinksToThisPage.astro │ │ │ └── MediaLinksInThisPage.astro │ │ ├── FootnotesSection.astro │ │ └── BibliographySection.astro │ ├── popover │ │ ├── TagDescPopover.astro │ │ └── NPagePopover.astro │ └── listing-layout │ │ ├── Paginator.astro │ │ └── PostPreview.astro ├── integrations │ ├── delete-build-cache.ts │ ├── create-folders-if-missing.ts │ ├── build-timestamp-recorder.ts │ ├── custom-icon-downloader.ts │ ├── public-notion-copier.ts │ ├── citations-initializer.ts │ ├── external-render-cacheer.ts │ └── google-woff2-provider.mjs ├── env.d.ts ├── scripts │ ├── lightbox.ts │ ├── to-top-btn.ts │ └── print.ts ├── pages │ ├── 404.astro │ ├── collections │ │ └── index.astro │ ├── tags │ │ └── index.astro │ ├── rss.xml.ts │ ├── authors │ │ └── index.astro │ └── sitemap.xml.ts ├── utils │ ├── numbering.ts │ ├── shiki-highlighter.ts │ ├── date.ts │ └── index.ts ├── lib │ ├── notion │ │ ├── mdx-snippet-writer.ts │ │ └── request-params.ts │ ├── external-content │ │ ├── external-html-content.ts │ │ ├── remark-external-mdx-assets.ts │ │ └── external-html-utils.ts │ └── vite-external-content-plugins.ts ├── site.config.ts ├── layouts │ └── Base.astro └── types.ts ├── .editorconfig ├── .prettierignore ├── .prettierrc.js ├── .gitignore ├── tsconfig.json ├── LICENSE └── eslint.config.mjs /tmp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/config/exclude.txt: -------------------------------------------------------------------------------- 1 | .vscode/ -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | "@tailwindcss/postcss": {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /src/components/notion-blocks/Divider.astro: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | --- 4 | 5 |
6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nerdymomocat-templates/webtrotion-astro-notion-cms-website-blog/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/api/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./types/index.js"; 2 | export * from "./get-tweet.js"; 3 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/index.ts: -------------------------------------------------------------------------------- 1 | import AstroTweet from "./src/Tweet.astro"; 2 | 3 | export default AstroTweet; 4 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-bluesky/index.ts: -------------------------------------------------------------------------------- 1 | export { default as BlueskyPost } from "./post.astro"; 2 | export type { Post } from "./types"; 3 | -------------------------------------------------------------------------------- /src/components/ui/SkipLink.astro: -------------------------------------------------------------------------------- 1 | skip to content 3 | 4 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/tweet-skeleton.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | pointer-events: none; 3 | padding-bottom: 0.25rem; 4 | } 5 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | indent_style = tab 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = false 10 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/Skeleton.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import styles from "./skeleton.module.css"; 3 | --- 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/AstroTweet.astro: -------------------------------------------------------------------------------- 1 | --- 2 | // Write your component code in this file! 3 | interface Props { 4 | prefix?: string; 5 | } 6 | --- 7 | 8 |
{Astro.props.prefix} My special component
9 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/api/types/edit.ts: -------------------------------------------------------------------------------- 1 | export interface TweetEditControl { 2 | edit_tweet_ids: string[]; 3 | editable_until_msecs: string; 4 | is_edit_eligible: boolean; 5 | edits_remaining: string; 6 | } 7 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/AvatarImg.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | src: string; 4 | alt: string; 5 | width: number; 6 | height: number; 7 | } 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/MediaImg.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | src: string; 4 | alt: string; 5 | class?: string; 6 | draggable?: boolean; 7 | } 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/quoted-tweet/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./QuotedTweet.astro"; 2 | export * from "./QuotedTweetContainer.astro"; 3 | export * from "./QuotedTweetHeader.astro"; 4 | export * from "./quoted-tweet-body.astro"; 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | *.min.js 2 | node_modules 3 | 4 | # cache-dirs 5 | **/.cache 6 | 7 | 8 | dist 9 | 10 | # because i want global css output to look good 11 | src/integrations/theme-constants-to-css.ts 12 | 13 | #because these are just conversation logs 14 | .agents -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/api/types/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./edit.js"; 2 | export * from "./entities.js"; 3 | export * from "./media.js"; 4 | export * from "./photo.js"; 5 | export * from "./tweet.js"; 6 | export * from "./user.js"; 7 | export * from "./video.js"; 8 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/icons/icons.module.css: -------------------------------------------------------------------------------- 1 | .verified { 2 | margin-left: 0.125rem; 3 | max-width: 16px; 4 | max-height: 16px; 5 | height: 1em; 6 | fill: currentColor; 7 | user-select: none; 8 | vertical-align: text-bottom; 9 | } 10 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/tweet-not-found.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | padding-bottom: 0.75rem; 6 | } 7 | .root > h3 { 8 | font-size: 1.25rem; 9 | margin-bottom: 0.5rem; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/api/types/photo.ts: -------------------------------------------------------------------------------- 1 | import type { Rect, RGB } from "./media.js"; 2 | 3 | export interface TweetPhoto { 4 | backgroundColor: RGB; 5 | cropCandidates: Rect[]; 6 | expandedUrl: string; 7 | url: string; 8 | width: number; 9 | height: number; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/TweetLink.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import s from "./tweet-link.module.css"; 3 | interface Props { 4 | href: string; 5 | } 6 | --- 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/icons/index.ts: -------------------------------------------------------------------------------- 1 | import Verified from "./Verified.astro"; 2 | import VerifiedBusiness from "./VerifiedBusiness.astro"; 3 | import VerifiedGovernment from "./VerifiedGovernment.astro"; 4 | 5 | export { Verified, VerifiedBusiness, VerifiedGovernment }; 6 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/tweet-link.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | font-weight: inherit; 3 | color: var(--tweet-color-blue-secondary); 4 | text-decoration: none; 5 | cursor: pointer; 6 | } 7 | .root:hover { 8 | text-decoration-thickness: 1px; 9 | text-decoration-line: underline; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/tweet-body.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | font-size: var(--tweet-body-font-size); 3 | font-weight: var(--tweet-body-font-weight); 4 | line-height: var(--tweet-body-line-height); 5 | margin: var(--tweet-body-margin); 6 | overflow-wrap: break-word; 7 | white-space: pre-wrap; 8 | } 9 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/verified-badge.module.css: -------------------------------------------------------------------------------- 1 | .verifiedOld { 2 | color: var(--tweet-verified-old-color); 3 | } 4 | .verifiedBlue { 5 | color: var(--tweet-verified-blue-color); 6 | } 7 | .verifiedGovernment { 8 | /* color: var(--tweet-verified-government-color); */ 9 | color: rgb(130, 154, 171); 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/twitter-theme/tweet-info-created-at.module.css: -------------------------------------------------------------------------------- 1 | .root { 2 | color: inherit; 3 | text-decoration: none; 4 | font-size: var(--tweet-info-font-size); 5 | line-height: var(--tweet-info-line-height); 6 | } 7 | .root:hover { 8 | text-decoration-thickness: 1px; 9 | text-decoration-line: underline; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/astro-tweet/src/api/types/user.ts: -------------------------------------------------------------------------------- 1 | export interface TweetUser { 2 | id_str: string; 3 | name: string; 4 | profile_image_url_https: string; 5 | profile_image_shape: "Circle" | "Square"; 6 | screen_name: string; 7 | verified: boolean; 8 | verified_type?: "Business" | "Government"; 9 | is_blue_verified: boolean; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/notion-blocks/embeds/PinterestEmbed.astro: -------------------------------------------------------------------------------- 1 | --- 2 | export interface Props { 3 | url: URL; 4 | caption: string | undefined; 5 | } 6 | 7 | const { url, caption } = Astro.props; 8 | --- 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/components/notion-blocks/MentionDate.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import Icon from "@/components/ui/Icon.astro"; 3 | 4 | export interface Props { 5 | mention_date: string; 6 | } 7 | 8 | const { mention_date } = Astro.props; 9 | const text = "🗓️"; 10 | --- 11 | 12 | {text ?