{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "notion-blog-page-shadcnui", "type": "registry:block", "title": "Notion Blog Page", "description": "Notion-style publishing playbook with rich text, toggles, and supporting visuals", "registryDependencies": [ "button" ], "dependencies": [ "framer-motion", "react" ], "files": [ { "path": "@uitripled/react-shadcn/src/components/sections/notion-blog-page.tsx", "content": "\"use client\";\n\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { BookOpen, ChevronDown, Clock, Quote } from \"lucide-react\";\nimport { useState } from \"react\";\n\nconst toggleSections = [\n {\n title: \"Morning focus ritual\",\n summary: \"Anchor your attention before anything else.\",\n content: [\n \"Open your doc before you open your inbox. Protect the first five minutes for intention setting.\",\n \"Free-write everything in your head for three minutes. Highlight the sentence that has the most energy.\",\n \"Set a single outcome for this session. When the timer ends, the outcome should be either done or clearly moved forward.\",\n ],\n },\n {\n title: \"Drafting in layers\",\n summary: \"Treat each pass as a different job description.\",\n content: [\n \"Pass one: outline in short bullet blocks. Ignore tone, grammar, or flow.\",\n \"Pass two: expand each bullet into a paragraph that answers “so what?” for the reader.\",\n \"Pass three: polish transitions, add a visual, and cut at least 10% of the words.\",\n ],\n },\n {\n title: \"Publishing without panic\",\n summary: \"Make the final review a celebration, not a scramble.\",\n content: [\n \"Read the draft out loud once. Mark sentences that trip you up-they are almost always too long.\",\n \"Paste the introduction into a new page. If it still makes sense, you’re ready. If not, keep tightening.\",\n \"Ship with a note to yourself about what felt easy. Capture it inside your writing playbook.\",\n ],\n },\n];\n\nconst miniGallery = [\n {\n src: \"https://images.unsplash.com/photo-1524995997946-a1c2e315a42f?auto=format&fit=crop&w=900&q=80\",\n alt: \"Wooden desk with open notebook and coffee\",\n caption: \"A quiet desk lets the outline breathe.\",\n },\n {\n src: \"https://images.unsplash.com/photo-1500530855697-b586d89ba3ee?auto=format&fit=crop&w=900&q=80\",\n alt: \"Highlights in a notebook with pen\",\n caption: \"Colour-code revisions by pass.\",\n },\n];\n\nconst readingList = [\n \"On Writing Well - William Zinsser\",\n \"The Art of Slow Productivity - Cal Newport\",\n \"Working in Public - Nadia Eghbal\",\n];\n\nconst cadence = [\n { label: \"Monday\", detail: \"Research & interviews\" },\n { label: \"Wednesday\", detail: \"Draft messy outline\" },\n { label: \"Friday\", detail: \"Edit, ship, reflect\" },\n];\n\nexport function NotionBlogPage() {\n const [openToggle, setOpenToggle] = useState(0);\n\n const handleToggle = (index: number) => {\n setOpenToggle((prev) => (prev === index ? null : index));\n };\n\n return (\n
\n \n
\n \n \n \n \n \n \n Mindful Publishing Playbook\n \n
\n\n
\n \n
\n \n \n Field Notes\n \n
\n 9 min read\n
\n Updated November 2025\n
\n

\n Slow Publishing: A Notion Workflow for Thoughtful Blogs\n

\n

\n Creative focus doesn’t arrive by accident-it is the product of\n small rituals, generous constraints, and a system that remembers\n what works. This Notion-style page captures the cadence our team\n uses to ship a thoughtful story every Friday without burning out.\n

\n \n\n
\n \n

\n We treat every article as a field note: a snapshot of what we\n are learning in public. The goal is not to chase virality but to\n document a craft in motion. A good post leaves breadcrumbs for\n future us and an invitation for readers to try the practice\n themselves.\n

\n

\n The workflow begins on Monday morning. Instead of running toward\n a blank page, we pull from an idea backlog curated throughout\n the week. Each card includes a “why now” note and a quick voice\n memo. When a theme repeats three times, it earns a dedicated\n spot on the publishing calendar.\n

\n
\n
\n \n
\n
\n

\n Idea backlog hygiene\n

\n

\n Tag backlog cards by energy level, not topic. High-energy\n cards are ready to outline quickly, while low-energy cards\n need more research or a better story.\n

\n
\n
\n\n
\n
\n \n
\n

\n Slow is smooth. Smooth becomes fast.\n

\n

\n We don’t remove friction; we design the right friction. If\n a draft feels rushed, it usually means we skipped the\n check-in block or jumped straight to editing.\n

\n
\n
\n
\n\n
\n {toggleSections.map((section, index) => (\n \n handleToggle(index)}\n className=\"flex w-full items-center justify-between gap-3 px-4 py-3 text-left transition-colors hover:bg-muted/40\"\n >\n
\n

\n {section.title}\n

\n

\n {section.summary}\n

\n
\n \n \n \n \n \n {openToggle === index && (\n \n
    \n {section.content.map((item) => (\n
  • {item}
  • \n ))}\n
\n \n )}\n
\n
\n ))}\n
\n \n\n \n
\n

\n Weekly cadence\n

\n
    \n {cadence.map((item) => (\n \n \n {item.label}\n \n \n {item.detail}\n \n \n ))}\n
\n
\n\n
\n

\n Reading stack\n

\n
    \n {readingList.map((title) => (\n
  • \n \n {title}\n
  • \n ))}\n
\n
\n\n
\n {miniGallery.map((image) => (\n \n
\n \n
\n

\n {image.caption}\n

\n
\n ))}\n
\n \n \n\n \n

\n Friday reflection prompts\n

\n
    \n
  • \n • What sentence did readers highlight the most? Add it to your\n intuition library.\n
  • \n
  • \n • What part of the workflow felt spacious? Capture the moment\n inside your rituals toggle.\n
  • \n
  • • What will future you thank you for writing down today?
  • \n
\n

\n Iterate on the process, not just the prose. The page you are\n reading is a living document-duplicate it, remix the blocks, and\n keep the parts that help you publish with calm confidence.\n

\n \n \n \n
\n );\n}\n", "type": "registry:block", "target": "components/uitripled/notion-blog-page-shadcnui.tsx" } ] }