11import { TokenDictionary } from '@pandacss/token-dictionary'
22import type { Token , TokenExtensions } from '@pandacss/token-dictionary'
3- import { useState , useMemo } from 'react'
3+ import { useState , useMemo , useDeferredValue } from 'react'
44import * as context from './panda-context'
55
66interface Color {
@@ -70,6 +70,7 @@ const getSemanticTokens = (allTokens: Token[], filterMethod?: (token: ColorToken
7070
7171export const useColorDocs = ( theme ?: string ) => {
7272 const [ filterQuery , setFilterQuery ] = useState ( '' )
73+ const deferredQuery = useDeferredValue ( filterQuery )
7374
7475 // Memoize token data based on theme to ensure reactivity
7576 const { colors, allTokens } = useMemo ( ( ) => {
@@ -84,7 +85,7 @@ export const useColorDocs = (theme?: string) => {
8485 return { colors, allTokens }
8586 } , [ theme ] )
8687
87- // Memoize processed data based on theme and filter query
88+ // Memoize processed data based on theme and filter query (deferred for performance)
8889 const processedData = useMemo ( ( ) => {
8990 const filterMethod = ( token : ColorToken ) => {
9091 return [
@@ -98,7 +99,7 @@ export const useColorDocs = (theme?: string) => {
9899 ...Object . values ( token . extensions ?. conditions || { } ) ,
99100 ]
100101 . filter ( Boolean )
101- . some ( ( prop ) => prop . includes ( filterQuery ) )
102+ . some ( ( prop ) => prop . includes ( deferredQuery ) )
102103 }
103104
104105 const colorsInCategories = groupByColorPalette ( colors as ColorToken [ ] , filterMethod )
@@ -121,7 +122,7 @@ export const useColorDocs = (theme?: string) => {
121122 semanticTokens,
122123 hasResults,
123124 }
124- } , [ colors , allTokens , filterQuery ] )
125+ } , [ colors , allTokens , deferredQuery ] )
125126
126127 return {
127128 filterQuery,
0 commit comments