architecture
definePick
Un ejemplo mas amplio que combina servicios, ciclos de vida y composicion de componentes.
Resumen del ejemplo
Este documento prerenderizado muestra definePick como contenido HTML navegable. La experiencia interactiva se activa despues con el bundle del playground.
Vista previa del codigo
import counterStyles from "./counter.styles.css";
import { definePick } from "pick-components";
// definePick es la API completamente sin decoradores.
// Sin clase, sin @Reactive, sin @Listen — todo se configura via ctx.
export const counterDef = definePick<{ count: number }>("counter-example", (ctx) => {
// Declara el estado reactivo. Cada campo se mapea a un binding {{mustache}}.
ctx.state({ count: 0 });
// Las acciones son métodos donde `this` es el estado del componente.
ctx.on({
decrement() { this.count--; },
reset() { this.count = 0; },
increment() { this.count++; },
});
ctx.css(counterStyles);
ctx.html(`
<div class="counter">
<p>Contador: {{count}}</p>
<div class="actions">
<pick-action action="decrement"><button type="button">−</button></pick-action>
<pick-action action="reset"><button type="button">Reiniciar</button></pick-action>
<pick-action action="increment"><button type="button">+</button></pick-action>
</div>
</div>
`);
});