Files
zeekay 3a8484ecae Merge upstream fumadocs dev (16.6.17) with @hanzo/docs namespace rename
Merge 131 upstream commits from fuma-nama/fumadocs dev branch, bringing
framework packages to v16.6.17. All fumadocs-* and @fumadocs/* package
references renamed to @hanzo/docs-* namespace.

Upstream additions:
- packages/content/ (@hanzo/docs-content) - Fuma Content adapter
- packages/epub/ (@hanzo/docs-epub) - EPUB export support
- MarkdownCopyButton, ViewOptionsPopover in docs page layout
- Flexsearch, Orama search integration
- Shiki v4 upgrade
- Various UI framework improvements

Hanzo customizations preserved:
- apps/docs/content/ (all Hanzo service/project docs)
- apps/docs/app/ (Hanzo homepage, AI chat, subdomain routing)
- apps/docs/components/ (AI search, error boundaries, auth)
- apps/docs/lib/ (source config, OpenAPI, metadata)
- Webpack alias layer for upstream project doc imports
- MdxErrorBoundary wrapper for graceful MDX failures
2026-03-16 14:34:53 -07:00
..

Proposals Documentation Template

A shared template for improvement proposals documentation sites:

  • LPs - Lux Proposals (lps.lux.network)
  • HIPs - Hanzo Improvement Proposals (hips.hanzo.ai)
  • ZIPs - Zoo Improvement Proposals (zips.zoo.ngo)

Quick Start

pnpm install
pnpm dev

Customization

Brand Configuration

Edit lib/config.ts to use your brand:

// For Lux Proposals
import { luxBrand as brand } from './brand';
export { brand };

// For Hanzo Improvement Proposals
import { hanzoBrand as brand } from './brand';
export { brand };

// For Zoo Improvement Proposals
import { zooBrand as brand } from './brand';
export { brand };

Content Directory

Edit lib/instance.ts to point to your proposals directory:

// For LPs repository structure
const PROPOSALS_DIR = path.join(process.cwd(), '../LPs');

Categories

Customize categories in lib/brand.ts by editing the categories array:

categories: [
  {
    name: 'Core',
    shortDesc: 'Core specifications',
    description: 'Full description...',
    range: [0, 99],  // Proposal number range
    icon: 'layers',   // Icon from lucide-react
    color: 'blue',    // Tailwind color
    learnMore: 'Educational content...',
    keyTopics: ['Topic 1', 'Topic 2'],
  },
]

Features

  • Context-Sensitive Search - Cmd+K opens a search dialog with:

    • Category-based navigation
    • Full-text search across proposals
    • Page-specific actions (edit on GitHub, view raw, join discussion)
    • Keyboard navigation
  • Proposal Metadata - Automatic parsing of frontmatter:

    • Status badges (Draft, Review, Final, etc.)
    • Category classification
    • Author attribution
    • Dependencies tracking
  • Statistics Dashboard - Sidebar showing:

    • Total proposals count
    • Count by status
    • Count by type

Project Structure

proposals/
├── app/
│   ├── api/search/     # Search API endpoint
│   ├── docs/           # Documentation pages
│   ├── (home)/         # Landing page
│   ├── global.css      # Global styles
│   └── layout.tsx      # Root layout
├── components/
│   └── search-dialog.tsx  # Custom search with quick actions
├── lib/
│   ├── brand.ts        # Brand configurations (LP, HIP, ZIP)
│   ├── config.ts       # Active brand selection
│   ├── source.ts       # Proposal source loader
│   └── instance.ts     # Source instance
├── content/docs/       # Sample proposals (or point to real dir)
└── public/             # Static assets

Deployment

For Lux Proposals (lps.lux.network)

  1. Clone the lps repository
  2. Copy this template to the docs/ directory
  3. Update lib/config.ts to use luxBrand
  4. Update lib/instance.ts to point to ../LPs
  5. Deploy to Vercel/Netlify

For Hanzo HIPs or Zoo ZIPs

Same process, using the appropriate brand configuration.

License

MIT - See LICENSE