///
import { Cell, Default, handler, recipe, str } from "commontools";
interface CounterState {
value: Default;
}
interface IncrementEvent {
amount?: number;
}
const increment = handler(
(event: IncrementEvent | undefined, context: { value: Cell }) => {
const amount = typeof event?.amount === "number" ? event.amount : 1;
context.value.set((context.value.get() ?? 0) + amount);
},
);
export const simpleCounter = recipe(
"Simple Counter",
({ value }) => {
return {
label: str`Counter value: ${value}`,
value,
increment: increment({ value }),
};
},
);