Skip to main content
New
New

Design Systems

BOOKMARK
Save on this device

Styling Guide (Typography + Code)

Documentation should feel easy to read for extended periods, especially when pages combine explanatory text, UI references, and code.

MokuDocs uses a clean, restrained visual system designed to support scanning and comprehension rather than visual novelty.

Typography principles

  • prioritise readability over density

  • keep heading hierarchy obvious

  • avoid overly narrow body widths

  • use spacing to separate ideas clearly

Code principles

  • code should be easy to distinguish from body copy

  • inline code should be used for short references only
  • longer examples should live in dedicated code blocks

  • examples should be valid, readable, and worth copying

Practical guidance

Use typography and code styling to support clarity, not aesthetic experimentation. A documentation system should feel stable and dependable first.

What good looks like

  • readable line length

  • consistent heading rhythm

  • code samples that are clean and complete

  • tables and callouts that feel part of the same system

Helpful resources

Want a stronger foundation in Framer's layout and styling model? Start with these official lessons.

Framer Fundamentals

Link and color styles in Framer

Creating light and dark themes in Framer

Typography system

ElementUsageGuidance
H1Page titleOne per page
H2Primary section headingsUse for major content divisions
H3Secondary section headingsUse only when needed
BodyMain explanatory contentKeep paragraphs concise
Inline CodeUI labels, variables, short code referencesUse sparingly
Code BlockFull examples and snippetsKeep examples complete and readable

Typography system

ElementUsageGuidance
H1Page titleOne per page
H2Primary section headingsUse for major content divisions
H3Secondary section headingsUse only when needed
BodyMain explanatory contentKeep paragraphs concise
Inline CodeUI labels, variables, short code referencesUse sparingly
Code BlockFull examples and snippetsKeep examples complete and readable

Typography system

ElementUsageGuidance
H1Page titleOne per page
H2Primary section headingsUse for major content divisions
H3Secondary section headingsUse only when needed
BodyMain explanatory contentKeep paragraphs concise
Inline CodeUI labels, variables, short code referencesUse sparingly
Code BlockFull examples and snippetsKeep examples complete and readable

Code block example

ts
type DocPageProps = {
  title: string
  summary?: string
  blocks?: Array<{
    type: "table" | "code" | "image" | "note"
    title: string
  }>
}

export function DocPage({ title, summary, blocks = [] }: DocPageProps) {
  return (
    <article>
      <h1>{title}</h1>
      {summary ? <p>{summary}</p> : null}

      {blocks.length > 0 && (
        <section>
          <h2>Included Blocks</h2>
          <ul>
            {blocks.map((block, index) => (
              <li key={index}>
                {block.title} — {block.type}
              </li>
            ))}
          </ul>
        </section>
      )}
    </article>
  )
}

Code block example

ts
type DocPageProps = {
  title: string
  summary?: string
  blocks?: Array<{
    type: "table" | "code" | "image" | "note"
    title: string
  }>
}

export function DocPage({ title, summary, blocks = [] }: DocPageProps) {
  return (
    <article>
      <h1>{title}</h1>
      {summary ? <p>{summary}</p> : null}

      {blocks.length > 0 && (
        <section>
          <h2>Included Blocks</h2>
          <ul>
            {blocks.map((block, index) => (
              <li key={index}>
                {block.title} — {block.type}
              </li>
            ))}
          </ul>
        </section>
      )}
    </article>
  )
}

Code block example

ts
type DocPageProps = {
  title: string
  summary?: string
  blocks?: Array<{
    type: "table" | "code" | "image" | "note"
    title: string
  }>
}

export function DocPage({ title, summary, blocks = [] }: DocPageProps) {
  return (
    <article>
      <h1>{title}</h1>
      {summary ? <p>{summary}</p> : null}

      {blocks.length > 0 && (
        <section>
          <h2>Included Blocks</h2>
          <ul>
            {blocks.map((block, index) => (
              <li key={index}>
                {block.title} — {block.type}
              </li>
            ))}
          </ul>
        </section>
      )}
    </article>
  )
}

© 2026 MokuDocs. Powered by Mokujiro Studio.

© 2026 MokuDocs. Powered by Mokujiro Studio.

© 2026 MokuDocs. Powered by Mokujiro Studio.

Create a free website with Framer, the website builder loved by startups, designers and agencies.