API Reference
Core API
Template
Base template creation and manipulation:
example.typescripttypescript
1import { createTemplate } from "@reface/template";23const template = createTemplate({ tag: "div" });4template({ class: "container" })`Content`;
Elements
Pre-defined HTML elements:
example.typescripttypescript
1import { button, div, span } from "@reface/elements";23div({ class: "container" })`4 ${span`Text`}5 ${button({ type: "button" })`Click me`}6`;
JSX
JSX support:
example.typescripttypescript
1import { createElement, Fragment } from "@reface";23// Fragment4<>5 <div>Firstdiv>6 <div>Seconddiv>7>;89// Components10function Button(props: ButtonProps) {11 return <button class={props.class}>{props.children}button>;12}
Components
Component creation:
example.typescripttypescript
1import { component } from "@reface";23const Button = component<ButtonProps>((props, children) => {4 // Elements API5 return button({ class: props.class })`${children}`;67 // Or JSX8 return <button class={props.class}>{children}button>;9});
Framework API
Reface
Main framework class:
example.typescripttypescript
1const app = new Reface({2 layout: Layout,3 plugins: [...plugins],4});56// Pages7app.page("/", HomePage);89// Hono integration10app.hono();
Plugins
Built-in plugins:
example.typescripttypescript
1import { StyledPlugin } from "@reface/plugins/styled";2import { PartialsPlugin } from "@reface/plugins/partials";34app.use(new StyledPlugin());5app.use(new PartialsPlugin());
Styling
CSS-in-JS system:
example.typescripttypescript
1import { styled } from "@reface/plugins/styled";23const Button = styled.button`4 & {5 /* styles */6 }7`;
Islands
Interactive components:
example.typescripttypescript
1import { island } from "@reface";23const Interactive = island({4 template: () => {...},5 state: {...},6 rpc: {...}7});