const SMALL_WORDS = new Set(['da', 'de', 'do', 'das', 'dos', 'e']); export const removeTrailingSellerId = (value: string) => { return value.replace(/\s*#\d+\s*$/, '').trim(); }; export const formatDisplayName = (value: string) => { const normalized = String(value || '').replace(/\s+/g, ' ').trim(); if (!normalized) return ''; const withoutSellerId = removeTrailingSellerId(normalized); const withoutNumericPrefix = withoutSellerId.replace(/^\[\d+\]\s*/, '').trim(); const isUppercaseName = /[A-ZÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ]/.test(withoutNumericPrefix) && withoutNumericPrefix === withoutNumericPrefix.toUpperCase(); if (!isUppercaseName) return withoutNumericPrefix; return withoutNumericPrefix .toLocaleLowerCase('pt-BR') .split(' ') .map((word, index) => { if (index > 0 && SMALL_WORDS.has(word)) return word; return word.charAt(0).toLocaleUpperCase('pt-BR') + word.slice(1); }) .join(' '); }; export const formatColorLabel = (value: string) => { const normalized = String(value || '').replace(/\s+/g, ' ').trim(); if (!normalized) return ''; if (normalized.toLocaleLowerCase('pt-BR') === 'sem cor') return 'Sem cor'; return normalized .toLocaleLowerCase('pt-BR') .split(' ') .map((word, index) => { if (index > 0 && SMALL_WORDS.has(word)) return word; return word.charAt(0).toLocaleUpperCase('pt-BR') + word.slice(1); }) .join(' '); };