BlockDex

Components

Registries

Free blocks

Method

BlockDex

Components

Registries

Free blocks

Method

Open API

BlockDex

Components

Registries

Free blocks

Method

Open API

Components/data-table-filters/data-table-nuqs

Data Table nuqs Store Adapter

data-table-filters/data-table-nuqs
FreeBlock

URL-based state management adapter using nuqs for shareable, bookmarkable filter state.

Install it

npx shadcn@latest add https://logs.run/r/data-table-nuqs.json

Source

src/lib/store/adapters/nuqs/index.tslogs.run/r/data-table-nuqs.json
1/**
2 * nuqs Adapter for BYOS
3 *
4 * This adapter uses nuqs for URL-based state management.
5 * It supports SSR and URL synchronization.
6 */
7
8"use client";
9
10import { useQueryStates, type ParserBuilder } from "nuqs";
11import { useEffect, useMemo, useRef } from "react";
12import type { InternalStoreAdapter } from "../../adapter/types";
13import { getSchemaDefaults, validateState } from "../../schema/serialization";
14import type { SchemaDefinition, StoreSnapshot } from "../../schema/types";
15import { schemaToNuqsParsers } from "./parser-bridge";
16import type { NuqsAdapterOptions } from "./types";
17
18export type { NuqsAdapterOptions } from "./types";
19
20/**
21 * Create a nuqs adapter for URL-based state management
22 *
23 * @example
24 * ```typescript
25 * const schema = createSchema({
26 * regions: field.array(field.string()).default([]),
27 * host: field.string(),
28 * });
29 *
30 * function MyComponent() {
31 * const adapter = useNuqsAdapter(schema.definition, { id: 'my-table' });
32 * return (
33 * <DataTableStoreProvider adapter={adapter}>
34 * <DataTable />
35 * </DataTableStoreProvider>
36 * );
37 * }
38 * ```
39 */
40export function useNuqsAdapter<T extends Record<string, unknown>>(
41 schema: SchemaDefinition,
42 options: NuqsAdapterOptions<T>,
43): InternalStoreAdapter<T> {
44 const {
45 id,
46 initialState,
47 shallow = true,
48 history = "push",
49 scroll = false,
50 throttleMs = 50,
51 } = options;
52
53 const parsers = useMemo(() => schemaToNuqsParsers(schema), [schema]);
54 const defaults = useMemo(() => getSchemaDefaults(schema) as T, [schema]);
55
56 // Use nuqs hook
57 const [nuqsState, setNuqsState] = useQueryStates(
58 parsers as Record<string, ParserBuilder<unknown>>,
59 {
60 shallow,
61 history,
62 scroll,
63 throttleMs,
64 },
65 );
66
67 // Store state and version
68 const stateRef = useRef<T>(defaults);
69 const versionRef = useRef(0);
70 const listenersRef = useRef(new Set<() => void>());
71 const pausedRef = useRef(false);
72 const pendingStateRef = useRef<Partial<T> | null>(null);
73
74 // Cache server snapshot to avoid infinite loop with useSyncExternalStore
75 const serverSnapshotRef = useRef<StoreSnapshot<T>>({
76 state: { ...defaults, ...initialState } as T,
77 version: 0,
78 });
79
80 // Compute merged state once per render so validateState isn't called twice
81 const currentState = useMemo(() => {
82 const validated = validateState(schema, nuqsState) as T;
83 return { ...defaults, ...initialState, ...validated } as T;
84// … truncated

What it pulls in

npm packages

  • nuqs

Other registry items

  • https://data-table.openstatus.dev/r/data-table.json

Files it writes

  • src/lib/store/adapters/nuqs/index.ts
  • src/lib/store/adapters/nuqs/types.ts
  • src/lib/store/adapters/nuqs/server.ts
  • src/lib/store/adapters/nuqs/parser-bridge.ts

Facts

Registry
data-table-filters
Type
registry:block
Access
Free
Files written
4
Licence
MIT
First indexed
2026-08-01
Last confirmed
yesterday

Go to the source

logs.run openstatusHQ/data-table-filters on GitHub Raw registry item This item as JSON

More from data-table-filters

All 11 items
Same registry, same kind — the ones you would have found next
ComponentRegistryKindAccessInstallsCommand
Data Table with Filtersdata-tabledata-table-filtersBlocksFree17 deps · 53 files
Data Table Cell Renderersdata-table-celldata-table-filtersBlocksFree4 deps · 17 files
Data Table Drizzle ORM Helpersdata-table-drizzledata-table-filtersBlocksFree2 deps · 7 files
Data Table Filter Command Palettedata-table-filter-commanddata-table-filtersBlocksFree2 deps · 2 files
Data Table AI Filter Command Palettedata-table-filter-command-aidata-table-filtersBlocksFree6 deps · 11 files
Data Table MCP Serverdata-table-mcpdata-table-filtersBlocksFree2 deps · 5 files
Data Table Query Layerdata-table-querydata-table-filtersBlocksFree3 deps · 3 files
Data Table Schema Systemdata-table-schemadata-table-filtersBlocksFree1 dep · 13 files
BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex

BlockDex

Built by

Kynth Studio

Index

Components
Registries
Method
Open API

Guides

shadcn component libraries
Best shadcn registries
Free shadcn blocks

Reference

Corpus counts
Crawl health
hello@kynth.studio
Privacy
Terms

BlockDex