Skip to content

Commit 65020e6

Browse files
committed
fix: studio search
1 parent 9af6a12 commit 65020e6

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

.changeset/studio-theme-tokens.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66

77
- Fix semantic tokens defined in `defineTheme` not showing in Panda Studio. We now show a theme selector in the token
88
pages for the theme-aware tokens.
9+
10+
- Improve performance when searching for tokens.

packages/studio/src/lib/use-color-docs.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TokenDictionary } from '@pandacss/token-dictionary'
22
import type { Token, TokenExtensions } from '@pandacss/token-dictionary'
3-
import { useState, useMemo } from 'react'
3+
import { useState, useMemo, useDeferredValue } from 'react'
44
import * as context from './panda-context'
55

66
interface Color {
@@ -70,6 +70,7 @@ const getSemanticTokens = (allTokens: Token[], filterMethod?: (token: ColorToken
7070

7171
export 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

Comments
 (0)