| 1234567891011121314151617181920212223 |
- import { type ClassValue, clsx } from 'clsx'
- import { twMerge } from 'tailwind-merge'
- export function cn(...inputs: ClassValue[]) {
- return twMerge(clsx(inputs))
- }
- /**
- * Normalize a string for fuzzy search matching.
- * Treats spaces, underscores, and hyphens as equivalent.
- * Example: "clear from out" matches "clear_from_out"
- */
- export function normalizeForSearch(str: string): string {
- return str.toLowerCase().replace(/[\s_-]+/g, ' ')
- }
- /**
- * Check if a search query matches a target string (fuzzy match).
- * Spaces, underscores, and hyphens are treated as equivalent.
- */
- export function fuzzyMatch(target: string, query: string): boolean {
- return normalizeForSearch(target).includes(normalizeForSearch(query))
- }
|