Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
f6510ea
fix: locally linked
transitive-bullshit Nov 1, 2024
7421da8
🐕
transitive-bullshit Nov 1, 2024
c738b43
feat: update react-notion-x to v7
transitive-bullshit Nov 1, 2024
ac25c68
fix
transitive-bullshit Nov 1, 2024
d314d88
🦌
transitive-bullshit Nov 1, 2024
eac2132
Merge pull request #641 from transitive-bullshit/feature/maintenance-…
transitive-bullshit Nov 1, 2024
163fda4
🈂
transitive-bullshit Nov 1, 2024
224256b
fix: social images
transitive-bullshit Nov 8, 2024
3eaa013
fix: update react-notion-x
transitive-bullshit Nov 8, 2024
6394b01
fix: fonts issue
transitive-bullshit Nov 8, 2024
dd3154e
fix
transitive-bullshit Nov 8, 2024
99a7ced
Merge pull request #651 from transitive-bullshit/fix/social-images
transitive-bullshit Nov 8, 2024
0c8b9c2
chore: update lqip-modern
transitive-bullshit Nov 8, 2024
9ebeda7
chore: update lqip-modern
transitive-bullshit Nov 8, 2024
67ea3bb
Document the Deployment Protection setting causing 401 Unauthorized f…
onnimonni Jan 31, 2024
d476e81
Replace Vercel Deployment Protection setting screenshot with short GIF
onnimonni Nov 8, 2024
5441482
Merge pull request #594 from onnimonni/document-fix-for-social-media-…
transitive-bullshit Nov 8, 2024
6db2ce1
🍓
transitive-bullshit Nov 8, 2024
172bd84
feat: remove inter regular font and just use bold for social images
transitive-bullshit Nov 8, 2024
e2017fd
feat: improve tweet embedding using react-tweet
transitive-bullshit Nov 10, 2024
b858110
transitive-bullshit Nov 10, 2024
b2e3cc4
Fix apple-mobile-web-app-capable deprecated meta tag warning
onnimonni Nov 11, 2024
abc6fd9
Merge pull request #655 from onnimonni/change-deprecated-mobile-web-m…
transitive-bullshit Mar 14, 2025
92f8f69
feat: update deps; fix eslint issues; fix bug with collections
transitive-bullshit Jun 6, 2025
b99d5a3
Merge pull request #707 from transitive-bullshit/feature/upkeep-june-…
transitive-bullshit Jun 6, 2025
53b5dc4
fix: update react-notion-x deps
transitive-bullshit Jun 6, 2025
1d9a659
feat: add maxDepth to limit depth of pages in space to pre-render
transitive-bullshit Jun 6, 2025
55caa35
feat: improve env parsing
transitive-bullshit Jun 6, 2025
3ddb6c6
fix: REDIS_ENABLED issue
transitive-bullshit Jun 7, 2025
3b004dd
Add JSON-LD microdata for blog posts
onnimonni Jun 9, 2025
1834e29
Merge pull request #653 from onnimonni/add-json-ld-microdata-for-blog…
transitive-bullshit Jul 18, 2025
6283497
fix: resolve ReferenceError for undefined isBlogPost in PageHead comp…
Armruo Jul 20, 2025
67e3b6f
Merge pull request #722 from Armruo/fix/pagehead-isblogpost-undefined
transitive-bullshit Jul 20, 2025
bf795b7
fix: collection / database loading
transitive-bullshit Jul 23, 2025
668c521
feat: bump core deps
transitive-bullshit Sep 18, 2025
68af398
fix: upgrade notion-client to fix collection issues
transitive-bullshit Oct 11, 2025
97b8dd2
fix: include pageUrlOverrides in getStaticPaths for production builds
wustep Jan 8, 2026
0750da9
Merge pull request #742 from wustep/fix/static-paths-url-overrides
transitive-bullshit Jan 8, 2026
39aec1e
🖐
transitive-bullshit Jan 8, 2026
7978cd6
feat: update core deps
transitive-bullshit Feb 14, 2026
fa9359b
🚷
transitive-bullshit Feb 14, 2026
7281f35
🥂
transitive-bullshit Feb 14, 2026
c7924b8
transitive-bullshit Feb 15, 2026
d2f1117
Merge pull request #748 from transitive-bullshit/feature/update-feb-2026
transitive-bullshit Feb 15, 2026
d38b637
🍿
transitive-bullshit Feb 15, 2026
f203f43
🗣
transitive-bullshit Feb 15, 2026
119a5f1
transitive-bullshit Feb 15, 2026
6255c1d
🔣
transitive-bullshit Feb 15, 2026
b414ca0
😝
transitive-bullshit Feb 15, 2026
484c14a
feat: remove react-icons in favor of local icons
transitive-bullshit Feb 15, 2026
0eadf00
feat: update react-notion-x
transitive-bullshit Mar 19, 2026
eafeffa
👏
transitive-bullshit Mar 19, 2026
fdefd04
🏮
transitive-bullshit Mar 19, 2026
379c735
transitive-bullshit Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 12 additions & 22 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,17 @@
{
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint", "react", "react-hooks"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"prettier"
],
"settings": {
"react": {
"version": "detect"
}
},
"env": {
"browser": true,
"node": true
},
"extends": ["@fisch0920/eslint-config"],
"rules": {
"@typescript-eslint/no-explicit-any": 0,
"@typescript-eslint/no-non-null-assertion": 0,
"@typescript-eslint/no-unused-vars": 2,
"react/prop-types": 0
"react/prop-types": "off",
"unicorn/no-array-reduce": "off",
"unicorn/filename-case": "off",
"no-process-env": "off",
"array-callback-return": "off",
"jsx-a11y/click-events-have-key-events": "off",
"jsx-a11y/no-static-element-interactions": "off",
"jsx-a11y/media-has-caption": "off",
"jsx-a11y/interactive-supports-focus": "off",
"jsx-a11y/anchor-is-valid": "off",
"@typescript-eslint/naming-convention": "off"
}
}
42 changes: 27 additions & 15 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
name: Build
name: CI

on: [push, pull_request]
on: [push]

jobs:
Build:
test:
name: Test Node.js ${{ matrix.node-version }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
strategy:
fail-fast: true
matrix:
node-version:
- 20
- 22
- 24

steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: 16
cache: yarn
node-version: ${{ matrix.node-version }}
cache: "pnpm"

- run: pnpm install --frozen-lockfile --strict-peer-dependencies
- run: pnpm test

- run: yarn install --frozen-lockfile
- name: build
# TODO Enable those lines below if you use a Redis cache, you'll also need to configure GitHub Repository Secrets
# env:
# REDIS_HOST: ${{ secrets.REDIS_HOST }}
# REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }}
run: yarn build
# TODO Enable those lines below if you use a Redis cache, you'll also need to configure GitHub Repository Secrets
# env:
# REDIS_HOST: ${{ secrets.REDIS_HOST }}
# REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }}
# - name: Build
# run: pnpm build
4 changes: 1 addition & 3 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,4 @@ dist/
node_modules/
.next/
.vercel/

.demo/
.renderer/
next-env.d.ts
20 changes: 0 additions & 20 deletions .prettierrc

This file was deleted.

1 change: 0 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/next",
"runtimeArgs": ["dev"],
"cwd": "${workspaceFolder}",
"port": 9229,
"smartStep": true,
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"],
Expand Down
4 changes: 1 addition & 3 deletions components/ErrorPage.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import * as React from 'react'

import { PageHead } from './PageHead'
import styles from './styles.module.css'

export const ErrorPage: React.FC<{ statusCode: number }> = ({ statusCode }) => {
export function ErrorPage({ statusCode }: { statusCode: number }) {
const title = 'Error'

return (
Expand Down
84 changes: 16 additions & 68 deletions components/Footer.tsx
Original file line number Diff line number Diff line change
@@ -1,29 +1,22 @@
import * as React from 'react'

import { FaEnvelopeOpenText } from '@react-icons/all-files/fa/FaEnvelopeOpenText'
import { FaGithub } from '@react-icons/all-files/fa/FaGithub'
import { FaLinkedin } from '@react-icons/all-files/fa/FaLinkedin'
import { FaMastodon } from '@react-icons/all-files/fa/FaMastodon'
import { FaTwitter } from '@react-icons/all-files/fa/FaTwitter'
import { FaYoutube } from '@react-icons/all-files/fa/FaYoutube'
import { FaZhihu } from '@react-icons/all-files/fa/FaZhihu'
import { IoMoonSharp } from '@react-icons/all-files/io5/IoMoonSharp'
import { IoSunnyOutline } from '@react-icons/all-files/io5/IoSunnyOutline'

import * as config from '@/lib/config'
import { GitHubIcon } from '@/lib/icons/github'
import { LinkedInIcon } from '@/lib/icons/linkedin'
import { MoonIcon } from '@/lib/icons/moon'
import { SunIcon } from '@/lib/icons/sun'
import { TwitterIcon } from '@/lib/icons/twitter'
import { useDarkMode } from '@/lib/use-dark-mode'

import styles from './styles.module.css'

// TODO: merge the data and icons from PageSocial with the social links in Footer

export const FooterImpl: React.FC = () => {
export function FooterImpl() {
const [hasMounted, setHasMounted] = React.useState(false)
const { isDarkMode, toggleDarkMode } = useDarkMode()
const currentYear = new Date().getFullYear()

const onToggleDarkMode = React.useCallback(
(e) => {
(e: any) => {
e.preventDefault()
toggleDarkMode()
},
Expand All @@ -36,7 +29,9 @@ export const FooterImpl: React.FC = () => {

return (
<footer className={styles.footer}>
<div className={styles.copyright}>Copyright {currentYear} {config.author}</div>
<div className={styles.copyright}>
Copyright {currentYear} {config.author}
</div>

<div className={styles.settings}>
{hasMounted && (
Expand All @@ -47,7 +42,7 @@ export const FooterImpl: React.FC = () => {
onClick={onToggleDarkMode}
title='Toggle dark mode'
>
{isDarkMode ? <IoMoonSharp /> : <IoSunnyOutline />}
{isDarkMode ? <MoonIcon /> : <SunIcon />}
</a>
)}
</div>
Expand All @@ -56,35 +51,12 @@ export const FooterImpl: React.FC = () => {
{config.twitter && (
<a
className={styles.twitter}
href={`https://twitter.com/${config.twitter}`}
title={`Twitter @${config.twitter}`}
target='_blank'
rel='noopener noreferrer'
>
<FaTwitter />
</a>
)}

{config.mastodon && (
<a
className={styles.mastodon}
href={config.mastodon}
title={`Mastodon ${config.getMastodonHandle()}`}
rel='me'
>
<FaMastodon />
</a>
)}

{config.zhihu && (
<a
className={styles.zhihu}
href={`https://zhihu.com/people/${config.zhihu}`}
title={`Zhihu @${config.zhihu}`}
href={`https://x.com/${config.twitter}`}
title={`X @${config.twitter}`}
target='_blank'
rel='noopener noreferrer'
>
<FaZhihu />
<TwitterIcon />
</a>
)}

Expand All @@ -96,7 +68,7 @@ export const FooterImpl: React.FC = () => {
target='_blank'
rel='noopener noreferrer'
>
<FaGithub />
<GitHubIcon />
</a>
)}

Expand All @@ -108,31 +80,7 @@ export const FooterImpl: React.FC = () => {
target='_blank'
rel='noopener noreferrer'
>
<FaLinkedin />
</a>
)}

{config.newsletter && (
<a
className={styles.newsletter}
href={`${config.newsletter}`}
title={`Newsletter ${config.author}`}
target='_blank'
rel='noopener noreferrer'
>
<FaEnvelopeOpenText />
</a>
)}

{config.youtube && (
<a
className={styles.youtube}
href={`https://www.youtube.com/${config.youtube}`}
title={`YouTube ${config.author}`}
target='_blank'
rel='noopener noreferrer'
>
<FaYoutube />
<LinkedInIcon />
</a>
)}
</div>
Expand Down
4 changes: 1 addition & 3 deletions components/GitHubShareButton.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import * as React from 'react'

import styles from './styles.module.css'

export const GitHubShareButton: React.FC = () => {
export function GitHubShareButton() {
return (
<a
href='https://github.com/transitive-bullshit/nextjs-notion-starter-kit'
Expand Down
14 changes: 7 additions & 7 deletions components/Loading.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as React from 'react'

import { LoadingIcon } from './LoadingIcon'
import styles from './styles.module.css'

export const Loading: React.FC = () => (
<div className={styles.container}>
<LoadingIcon />
</div>
)
export function Loading() {
return (
<div className={styles.container}>
<LoadingIcon />
</div>
)
}
4 changes: 1 addition & 3 deletions components/LoadingIcon.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import * as React from 'react'

import cs from 'classnames'

import styles from './styles.module.css'

export const LoadingIcon = (props) => {
export function LoadingIcon(props: any) {
const { className, ...rest } = props
return (
<svg
Expand Down
Loading