Components
Caspian components are just Python functions. They encapsulate logic, styles, and structure. Start simple with basic strings, or scale up to fully type-safe, reactive UI elements.
1. The Basics
A standard component handles prop merging and returns an HTML string. Use
merge_classes to ensure
Tailwind classes don't conflict.
Developer Speed Tip
Don't write boilerplate. If you have the VS Code Extension installed, just type:
caspcom
+
Tab
It automatically generates the standard structure seen below.
2. Type-Safe Props
Want TypeScript-like validation? Use Python's
Literal
type. Your editor will autocomplete variants, and linter will catch typos.
3. HTML Templates & Reactivity
For complex layouts or reactive state, separate your code into an HTML
file. Use html_file to bridge
them.
from casp.component_decorator import component, html_file @component def Counter(**props): return html_file("Counter.html", **props)
<div> <h3>[[label]]</h3> <!-- Prop --> <button onclick="inc()"> {count} <!-- State --> </button> </div>