mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-13 06:43:06 +00:00
- CampaignHomeSearchChromeContext + publisher no Início - CampaignMobileTopBar troca SidebarTrigger por Voltar quando uiFocused - useHomeSearchFocusHistory com pushState/popstate para back do SO - HomeSearchSuggestSkeleton enquanto isFetching sem hits - Unit tests para history helper, top bar e skeleton Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
/** Debounce for Início omnibox — shorter than list search (1000 ms RSC round-trips). */
|
|
export const HOME_SEARCH_DEBOUNCE_MS = 250
|
|
|
|
/** Minimum trimmed length before focused mode and result providers run. */
|
|
export const HOME_SEARCH_MIN_QUERY_LENGTH = 2
|
|
|
|
/** Cap for capped home-search entity groups (leadership, dobradinhas). */
|
|
export const HOME_SEARCH_RESULT_HIT_CAP = 25
|
|
|
|
export type HomeSearchQuery = {
|
|
raw: string
|
|
debounced: string
|
|
isActive: boolean
|
|
}
|
|
|
|
export const homeSearchQueryIsActive = (trimmedDebounced: string): boolean =>
|
|
trimmedDebounced.length >= HOME_SEARCH_MIN_QUERY_LENGTH
|
|
|
|
export const normalizeHomeSearchRaw = (raw: string): string => raw.trim()
|
|
|
|
/**
|
|
* B66/B68 — focused chrome vs active search query. Fetch uses `isActive`;
|
|
* layout hiding uses `uiFocused` (input focused or query active).
|
|
*/
|
|
export const homeSearchUiFocused = (input: { inputFocused: boolean; isActive: boolean }): boolean =>
|
|
input.inputFocused || input.isActive
|
|
|
|
/** B106 — mobile top bar back control when Início search is expanded. */
|
|
export const HOME_SEARCH_COLLAPSE_ARIA_LABEL = 'Fechar busca' as const
|