Search

PythonReactSEOPDF
GitHub Skill

templ-components

Create reusable templ UI components with props, children, and composition patterns. Use when building UI components, creating component libraries, mentions 'button component', 'card component', or 'reusable templ components'.

Xe☆ 718 Repository stars117 Repository forks

Installation

Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.

View source ↗Guides

Skill instructions

Templ Components

Use progressive disclosure: solve with Level 1 first, then pull deeper guidance only if complexity requires it.

Level 1: Component Checklist

Use this skill for reusable templ UI components.

  1. Define a small, single-purpose component.
  2. Prefer typed props (structs for complex APIs).
  3. Support composition with { children... }.
  4. Keep variants explicit and predictable.
  5. Extract shared layout wrappers instead of duplicating markup.
type ButtonProps struct {
    Label    string
    Variant  string
    Disabled bool
}

templ Button(props ButtonProps) {
    <button class={ "btn btn-" + props.Variant } disabled?={ props.Disabled }>
        { props.Label }
    </button>
}

Level 2: API Design Rules

  • Small surface area: avoid giant prop lists.
  • Typed options: enums/constants beat free-form strings for critical variants.
  • Composition first: prefer wrappers (Card, Modal, Layout) over monolith components.
  • No hidden side effects: components render; handlers/loaders do data work.
  • Stable contracts: avoid breaking prop shape without migration.

Level 3: Reusable Patterns

templ Card(title string) {
    <article class="card">
        <header><h3>{ title }</h3></header>
        <div class="card-body">{ children... }</div>
    </article>
}

templ WithError(err error) {
    if err != nil {
        <p class="error">{ err.Error() }</p>
    } else {
        { children... }
    }
}

Escalate to Other Skills

  • Need syntax details: use templ-syntax.
  • Need HTTP routing/rendering: use templ-http.
  • Need partial updates/interactions: use templ-htmx.

References

Examples

Read the usage examples in the source repository.

View source ↗

Source history

Indexed on
2026-03-11
Index updated
2026-03-11
Branch
main

Index and sync dates describe this directory. View the source repository for code history.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!