Data Table

Sortable, filterable, paginated table with row selection and CSV export — reactive computed pipeline

How it works — Computed Pipeline

const raw = signal(data);
const searched = computed(() => raw.value.filter(r => matchesSearch(r, query.value)));
const filtered = computed(() => searched.value.filter(r => matchesFilters(r, filters.value)));
const sorted   = computed(() => [...filtered.value].sort(compareFn(sortCol.value, sortDir.value)));
const paged    = computed(() => sorted.value.slice(offset.value, offset.value + perPage.value));