Files
logos-web/apps/web/components/sections/shared/docs-page-shell.tsx
T
Jinho Jang 97589cb5c5 Update Builders Hub, Get Started, legal pages, and RFP sourcing (#36)
* fix(sitemap): remove FAQ route from static indexable routes

* feat(web): markdown-managed legal pages + Testnet FAQ & Terms

Introduce a markdown-based system for legal/info documents and add the
two testnet pages on the same docs route pattern.

- Add getLegalDoc loader (gray-matter frontmatter + zod validation) and
  LegalMarkdown renderer (react-markdown + remark-gfm) mapped to Logos
  design tokens; render legal pages as a server component.
- Refactor docs-page-factory to source content from content/legal/<slug>.md
  instead of next-intl namespaces; migrate terms, privacy, and security
  from messages/en.json to markdown.
- Add /testnet-v01-faqs and /testnet-terms-and-conditions pages with
  content mirrored from logos.co; link the FAQ's testnet-terms references
  to the internal route.
- Add Testnet FAQ and Testnet Terms to the docs ToC (remove the dead FAQ
  entry); register both routes in the sitemap.
- Align docs content to the standard page gutter by removing the
  redundant px-3 on the docs page shell.

* chore: optimise page imagery

* feat(web): link Logos Devs X account in community section

* chore(web): hide 'What you can build today' section on get-started and builders-hub

* refactor: reuse builders hub start sections

* feat(builders-hub): source RFPs from GitHub API at build time

Fetch and parse RFPs from the logos-co/rfp repo (markdown + YAML
frontmatter) at build time instead of local content, so the /rfps
listing and [slug] detail pages render from a single live source.

- add rfps-github lib: GitHub contents fetch, gray-matter frontmatter
  parse, stable slug from filename, draft/template exclusion
- detail page renders frontmatter-stripped markdown via LegalMarkdown,
  with Apply + View on GitHub CTAs
- widen RFP card/row/listing props to RfpListItem so GitHub data
  (no reward/image) and local Rfp both satisfy the UI
- add optional markdown body to BuildersHubDetailLayout

* refactor: share get started sections
2026-06-04 18:34:29 +09:00

37 lines
1.2 KiB
TypeScript

import type { ReactNode } from 'react'
import ContentWidth from '@/components/layout/content-width'
import { DocsToc, type DocsTocKey } from './docs-toc'
/**
* Layout shell shared by FAQ, Terms, Privacy, Security and any future
* docs / legal pages: the left ToC + the right content column.
*
* Figma desktop 40009046:22318 — flex row, px-12, gap-488, both columns py-80,
* ToC w-226 (sticky), content w-464.
* Figma mobile 40009046:22277 — flex column, px-12, gap-12, ToC py-80,
* content pb-80, both w-full.
*
* Row layout requires ≥ 1202 px (226 + 488 + 464 + 24) so the breakpoint
* is xl (1280 px) — below that we render the same stacked layout as mobile.
*/
interface DocsPageShellProps {
activeKey: DocsTocKey
children: ReactNode
}
export function DocsPageShell({ activeKey, children }: DocsPageShellProps) {
return (
<ContentWidth>
<section className="flex min-h-190 flex-col items-start gap-3 xl:flex-row xl:gap-122">
<DocsToc activeKey={activeKey} />
<div className="flex w-full flex-col items-start gap-6 pb-20 xl:w-116 xl:py-20">
{children}
</div>
</section>
</ContentWidth>
)
}