a reactive (signals based) hypermedia web framework (wip) stormlightlabs.github.io/volt/
hypermedia frontend signals
1--- 2version: 1.0 3updated: 2025-10-18 4--- 5 6# signal 7 8Creates a new signal with the given initial value. 9 10@param initialValue - The initial value of the signal 11@returns A Signal object with get, set, and subscribe methods 12 13@example 14const count = signal(0); 15count.subscribe(value => console.log('Count:', value)); 16count.set(1); // Logs: Count: 1 17 18## signal 19 20Creates a new signal with the given initial value. 21 22```typescript 23export function signal<T>(initialValue: T): Signal<T> 24``` 25 26**Example:** 27 28```typescript 29const count = signal(0); 30count.subscribe(value => console.log('Count:', value)); 31count.set(1); // Logs: Count: 1 32``` 33 34## computed 35 36Creates a computed signal that derives its value from other signals. 37The computation function is re-run whenever any of its dependencies change. 38 39```typescript 40export function computed<T>( compute: () => T, dependencies: Array<Signal<unknown> | ComputedSignal<unknown>>, ): ComputedSignal<T> 41``` 42 43**Example:** 44 45```typescript 46const count = signal(5); 47const doubled = computed(() => count.get() * 2, [count]); 48doubled.get(); // 10 49count.set(10); 50doubled.get(); // 20 51``` 52 53## effect 54 55Creates a side effect that runs when dependencies change. 56 57```typescript 58export function effect( effectFunction: () => void | (() => void), dependencies: Array<Signal<unknown> | ComputedSignal<unknown>>, ): () => void 59``` 60 61**Example:** 62 63```typescript 64const count = signal(0); 65const cleanup = effect(() => { 66 console.log('Count changed:', count.get()); 67}, [count]); 68```