Full-page FAQ document component that composes `PageShell`, `PageLayout`, and `FaqSection` into a single drop-in page, mirroring the `LegalDocumentPage` / `DevSectionPage` pattern so host pages need only pass config and SSR-resolved data.
## Key Components
### `FaqDocumentPage`
The primary export. Renders a complete `/faqs` page with:
- **`PageLayout` `TitleBlock`** — owns the `
` (title + subtitle), keeping `FaqSection` headings at ``/`` for correct SEO outline
- **`PageShell`** — optional standalone `` container (disable via `shell={false}` when the host layout already provides one)
- **`FaqSection`** — receives SSR-hydrated `initialFaqs` to skip its client self-fetch, or omit for self-fetching embed mode
- **Back button** — follows the same `{ label, href } | false` pattern as `LegalDocumentPage` / `DevSectionPage`
### `FaqDocumentPageProps`
| Prop | Type | Default | Description |
|---|---|---|---|
| `title` | `string` | `'Frequently Asked Questions'` | Page `` text |
| `subtitle` | `string` | — | Subtitle beneath the title |
| `backButton` | `{ label?, href? } \| false` | `{ label: 'Back to home', href: '/' }` | Back nav; `false` hides it |
| `shell` | `boolean` | `true` | Wrap with `PageShell`; set `false` when host owns `` |
| `initialFaqs` | `Faq[]` | — | SSR-resolved FAQs; omit for client self-fetch |
| `emitJsonLd` | `boolean` | `false` | Emit `FAQPage` schema.org JSON-LD |
| `jsonLd` | `FaqSchemaOptions` | — | JSON-LD name/description/url overrides |
| `apiBaseUrl` | `string` | — | Base URL for `/api/faqs` (reverse-proxy embedders) |
| `entityType` / `entityId` | `string / number` | — | Optional entity scoping |
| `minResults` | `number` | — | Minimum FAQ count before rendering |
## Usage Example
**Standalone page (SSR, shell on):**
```typescript
// app/faqs/page.tsx
import { FaqDocumentPage } from '@openframe-oss-lib/components/faq';
import { fetchFaqs } from '@/lib/api';
export default async function FaqsPage() {
const initialFaqs = await fetchFaqs({ platform: 'acme' });
return (
);
}
```
**Embedded inside host layout (shell off, no back button):**
```typescript
```
## Source
[`faq-document-page.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/faq-document-page.tsx)