@datatechsolutions/tympan 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Avatar-P14MVkK1.js → Avatar-CU7B1WsX.js} +61 -1
- package/dist/{Avatar-P14MVkK1.js.map → Avatar-CU7B1WsX.js.map} +1 -1
- package/dist/avatars.js +1 -1
- package/dist/flow.d.ts +1 -1
- package/dist/flow.js +2 -2
- package/dist/{index-6wR5ThnX.d.ts → index-J-7EBkCL.d.ts} +172 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/{src-C9whlpC7.js → src-uCyIE-Te.js} +909 -379
- package/dist/src-uCyIE-Te.js.map +1 -0
- package/dist/styles.css +476 -0
- package/package.json +2 -2
- package/src/components/calendar/Calendar.css +260 -0
- package/src/components/calendar/Calendar.test.tsx +178 -0
- package/src/components/calendar/Calendar.tsx +341 -0
- package/src/components/date-range-field/DateRangeField.css +140 -0
- package/src/components/date-range-field/DateRangeField.test.tsx +187 -0
- package/src/components/date-range-field/DateRangeField.tsx +231 -0
- package/src/components/tooltip/Tooltip.css +70 -0
- package/src/components/tooltip/Tooltip.test.tsx +209 -0
- package/src/components/tooltip/Tooltip.tsx +102 -0
- package/src/index.ts +3 -0
- package/src/internal/messages/core-es.ts +17 -0
- package/src/internal/messages.ts +51 -0
- package/src/styles.css +3 -0
- package/dist/src-C9whlpC7.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar-P14MVkK1.js","names":["en","pt","es","en","pt","es","en","pt","es","en","pt","es","AriaLink","AriaButton"],"sources":["../src/utilities/i18n-adapter/icu.ts","../src/internal/icuCatalogue.ts","../src/internal/messages/plural.ts","../src/internal/messages/forms-a.ts","../src/internal/messages/forms-b.ts","../src/internal/messages/overlays-nav.ts","../src/internal/messages/data-a.ts","../src/internal/messages/data-b.ts","../src/internal/messages/charts-geo.ts","../src/internal/messages/auth-brand.ts","../src/internal/messages/platform.ts","../src/internal/messages/showcase.ts","../src/internal/messages/shell.ts","../src/internal/messages/core-es.ts","../src/internal/messages.ts","../src/internal/provider.tsx","../src/internal/dev.ts","../src/components/avatar/Avatar.tsx"],"sourcesContent":["// A small ICU MessageFormat subset, written for this library: plain\n// arguments, number and date arguments, plural (with `=n` exact cases and\n// `#`) and select. Anything it cannot parse makes `formatMessage` fall back\n// to simple `{name}` substitution; it never throws.\n\nexport type MessageParams = Record<string, unknown>\n\ntype Part =\n | { k: 'text'; v: string }\n | { k: 'hash' }\n | { k: 'arg'; name: string; fmt?: 'number' | 'date' | 'time'; style?: string }\n | { k: 'choice'; name: string; mode: 'plural' | 'select' | 'selectordinal'; cases: Map<string, Part[]> }\n\nclass Cursor {\n i = 0\n constructor(readonly src: string) {}\n get done() {\n return this.i >= this.src.length\n }\n peek() {\n return this.src[this.i]\n }\n skipSpace() {\n while (!this.done && /\\s/.test(this.src[this.i]!)) this.i++\n }\n word(): string {\n this.skipSpace()\n const start = this.i\n while (!this.done && !/[\\s,{}]/.test(this.src[this.i]!)) this.i++\n if (start === this.i) throw new SyntaxError(`identifier expected at ${start}`)\n return this.src.slice(start, this.i)\n }\n expect(ch: string) {\n this.skipSpace()\n if (this.src[this.i] !== ch) throw new SyntaxError(`\"${ch}\" expected at ${this.i}`)\n this.i++\n }\n}\n\nfunction parseSequence(c: Cursor, inChoice: boolean): Part[] {\n const out: Part[] = []\n let text = ''\n const flush = () => {\n if (text) out.push({ k: 'text', v: text })\n text = ''\n }\n while (!c.done) {\n const ch = c.peek()!\n if (ch === '}') {\n if (!inChoice) throw new SyntaxError(`unbalanced \"}\" at ${c.i}`)\n break\n }\n if (ch === '{') {\n flush()\n out.push(parseArgument(c))\n continue\n }\n if (ch === '#' && inChoice) {\n flush()\n out.push({ k: 'hash' })\n c.i++\n continue\n }\n if (ch === \"'\") {\n // '' is a literal quote; '{…}' quotes syntax characters.\n const next = c.src[c.i + 1]\n if (next === \"'\") {\n text += \"'\"\n c.i += 2\n continue\n }\n if (next === '{' || next === '}' || next === '#') {\n const end = c.src.indexOf(\"'\", c.i + 1)\n if (end > 0) {\n text += c.src.slice(c.i + 1, end)\n c.i = end + 1\n continue\n }\n }\n }\n text += ch\n c.i++\n }\n flush()\n return out\n}\n\nfunction parseArgument(c: Cursor): Part {\n c.expect('{')\n const name = c.word()\n c.skipSpace()\n if (c.peek() === '}') {\n c.i++\n return { k: 'arg', name }\n }\n c.expect(',')\n const kind = c.word()\n c.skipSpace()\n if (kind === 'number' || kind === 'date' || kind === 'time') {\n let style: string | undefined\n if (c.peek() === ',') {\n c.i++\n style = c.word()\n }\n c.expect('}')\n return { k: 'arg', name, fmt: kind, style }\n }\n if (kind !== 'plural' && kind !== 'select' && kind !== 'selectordinal') throw new SyntaxError(`unknown argument type \"${kind}\"`)\n c.expect(',')\n const cases = new Map<string, Part[]>()\n for (;;) {\n c.skipSpace()\n if (c.peek() === '}') {\n c.i++\n break\n }\n if (c.done) throw new SyntaxError('unterminated choice')\n const key = c.word()\n if (key.startsWith('offset:')) continue\n c.expect('{')\n cases.set(key, parseSequence(c, true))\n c.expect('}')\n }\n if (!cases.has('other')) throw new SyntaxError(`\"${name}\" needs an \"other\" case`)\n return { k: 'choice', name, mode: kind, cases }\n}\n\nconst cache = new Map<string, Part[]>()\n\nexport function parseMessage(message: string): Part[] {\n let ast = cache.get(message)\n if (!ast) {\n const c = new Cursor(message)\n ast = parseSequence(c, false)\n if (!c.done) throw new SyntaxError(`unexpected \"${c.peek()}\" at ${c.i}`)\n cache.set(message, ast)\n }\n return ast\n}\n\nfunction asDate(value: unknown): Date | null {\n const d = value instanceof Date ? value : typeof value === 'string' || typeof value === 'number' ? new Date(value) : null\n return d && !Number.isNaN(d.getTime()) ? d : null\n}\n\nfunction render(parts: Part[], params: MessageParams, locale: string, hashValue: number | null): string {\n let out = ''\n for (const p of parts) {\n switch (p.k) {\n case 'text':\n out += p.v\n break\n case 'hash':\n out += hashValue === null ? '#' : new Intl.NumberFormat(locale).format(hashValue)\n break\n case 'arg': {\n const v = params[p.name]\n if (v === undefined) {\n out += `{${p.name}}`\n } else if (p.fmt === 'number' && typeof v === 'number') {\n const opts: Intl.NumberFormatOptions = p.style === 'percent' ? { style: 'percent' } : p.style === 'integer' ? { maximumFractionDigits: 0 } : {}\n out += new Intl.NumberFormat(locale, opts).format(v)\n } else if ((p.fmt === 'date' || p.fmt === 'time') && asDate(v)) {\n const style = (['short', 'medium', 'long', 'full'].includes(p.style ?? '') ? p.style : 'medium') as 'short' | 'medium' | 'long' | 'full'\n const opts: Intl.DateTimeFormatOptions = p.fmt === 'date' ? { dateStyle: style } : { timeStyle: style }\n out += new Intl.DateTimeFormat(locale, opts).format(asDate(v)!)\n } else {\n out += String(v)\n }\n break\n }\n case 'choice': {\n const v = params[p.name]\n let branch: Part[] | undefined\n let hash: number | null = hashValue\n if (p.mode === 'select') {\n branch = p.cases.get(String(v))\n } else {\n const n = Number(v)\n hash = n\n branch = p.cases.get(`=${n}`)\n if (!branch && Number.isFinite(n)) {\n const rules = new Intl.PluralRules(locale, { type: p.mode === 'selectordinal' ? 'ordinal' : 'cardinal' })\n branch = p.cases.get(rules.select(n))\n }\n }\n out += render(branch ?? p.cases.get('other')!, params, locale, hash)\n break\n }\n }\n }\n return out\n}\n\n/** Plain `{name}` substitution, the fallback for unparsable messages. */\nexport function substitute(message: string, params: MessageParams = {}): string {\n return message.replace(/\\{\\s*([\\w.-]+)\\s*\\}/g, (whole, key: string) => (params[key] === undefined ? whole : String(params[key])))\n}\n\n/** Formats an ICU message; never throws. */\nexport function formatMessage(message: string, params: MessageParams = {}, locale = 'en'): string {\n try {\n return render(parseMessage(message), params, locale, null)\n } catch {\n return substitute(message, params)\n }\n}\n","// ICU MessageFormat bridge and pseudo-localization for the copy catalogue.\n//\n// Every key of `Messages` accepts an ICU string. Keys whose default is a\n// function receive their arguments positionally as {0}, {1}, … so a host can\n// write, for example:\n// pagination.range: '{0}–{1} de {2, number}'\n// rail.count: '{0, plural, one {# pendente} other {# pendentes}}'\nimport { formatMessage } from '../utilities/i18n-adapter/icu'\nimport type { MessageOverrides, Messages } from './messages'\n\nexport interface IcuCatalogue {\n [key: string]: string | IcuCatalogue\n}\n\ntype Tree = Record<string, unknown>\nconst isTree = (v: unknown): v is Tree => !!v && typeof v === 'object' && !Array.isArray(v)\n\n/** Compiles ICU strings (shaped like the catalogue) into catalogue overrides for `locale`. */\nexport function compileIcuMessages(icu: IcuCatalogue, base: Messages, locale: string): MessageOverrides {\n const walk = (source: IcuCatalogue, reference: unknown): Tree => {\n const out: Tree = {}\n for (const [key, value] of Object.entries(source)) {\n const ref = isTree(reference) ? reference[key] : undefined\n if (typeof value === 'string') {\n out[key] =\n typeof ref === 'function'\n ? (...args: unknown[]) => formatMessage(value, Object.fromEntries(args.map((a, i) => [String(i), a])), locale)\n : formatMessage(value, {}, locale)\n } else out[key] = walk(value, ref)\n }\n return out\n }\n return walk(icu, base) as MessageOverrides\n}\n\nconst ACCENTED: Record<string, string> = {\n a: 'à', b: 'ƀ', c: 'ç', d: 'ď', e: 'é', f: 'ƒ', g: 'ĝ', h: 'ĥ', i: 'î', j: 'ĵ', k: 'ķ', l: 'ļ', m: 'ɱ',\n n: 'ñ', o: 'ö', p: 'þ', q: 'ǫ', r: 'ŕ', s: 'š', t: 'ţ', u: 'û', v: 'ṽ', w: 'ŵ', x: 'ẋ', y: 'ý', z: 'ž',\n A: 'Å', B: 'Ɓ', C: 'Ç', D: 'Đ', E: 'É', F: 'Ƒ', G: 'Ĝ', H: 'Ĥ', I: 'Î', J: 'Ĵ', K: 'Ķ', L: 'Ļ', M: 'Ṁ',\n N: 'Ñ', O: 'Ö', P: 'Þ', Q: 'Ǫ', R: 'Ŕ', S: 'Š', T: 'Ţ', U: 'Û', V: 'Ṽ', W: 'Ŵ', X: 'Ẋ', Y: 'Ý', Z: 'Ž',\n}\n\n/** One pseudo-localized string: accented, about 40 % longer, bracketed so clipping shows. */\nexport function pseudoString(text: string): string {\n if (!text) return text\n const accented = [...text].map((ch) => ACCENTED[ch] ?? ch).join('')\n const letters = [...text].filter((ch) => /\\p{L}/u.test(ch)).length\n return `⟦${accented}${'~'.repeat(Math.ceil(letters * 0.4))}⟧`\n}\n\n/** Pseudo-localizes a whole catalogue (strings and the output of message functions). */\nexport function pseudoLocalize(messages: Messages): Messages {\n const walk = (node: unknown): unknown => {\n if (typeof node === 'string') return pseudoString(node)\n if (typeof node === 'function') return (...args: unknown[]) => pseudoString(String((node as (...a: unknown[]) => unknown)(...args)))\n if (isTree(node)) return Object.fromEntries(Object.entries(node).map(([k, v]) => [k, walk(v)]))\n return node\n }\n return walk(messages) as Messages\n}\n","// Locale-bound number and plural helpers for the shipped catalogues. Each\n// catalogue formats its own numbers (digits, grouping) and picks plural forms\n// with Intl.PluralRules instead of string concatenation.\n\nexport interface CountWords {\n one: string\n other: string\n /** Optional CLDR categories for languages that have them. */\n zero?: string\n two?: string\n few?: string\n many?: string\n}\n\nexport function speaker(language: string) {\n const rules = new Intl.PluralRules(language)\n const numbers = new Intl.NumberFormat(language)\n return {\n /** Formats a number in the catalogue's language. */\n n: (value: number) => numbers.format(value),\n /** The word for `count`, by CLDR plural category. */\n word: (count: number, words: CountWords) => words[rules.select(count) as keyof CountWords] ?? words.other,\n }\n}\n","// Copy of the \"forms-a\" group (wave 2). One namespace per component, English\n// and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface FormsAMessages {\n themeSwitcher: { label: string; toLight: string; toDark: string }\n /** ThemePalette: `results` {0} = count; `noResults` {0} = query; `applied` / `trigger` {0} = theme name; `count` {0} = themes in a group. */\n themePalette: {\n label: string\n placeholder: string\n groupInterface: string\n groupPrint: string\n recent: string\n noResults: (query: string) => string\n results: (n: number) => string\n count: (n: number) => string\n applied: (name: string) => string\n trigger: (name: string) => string\n preview: string\n sample: string\n mode: string\n modeSystem: string\n modeLight: string\n modeDark: string\n density: string\n densityCompact: string\n densityDefault: string\n densityComfortable: string\n hints: { move: string; apply: string; revert: string }\n }\n stateSwitch: { off: string; on: string }\n /** `box`: {0} = 1-based position, {1} = total boxes. */\n oneTimeCode: { label: string; box: (position: number, total: number) => string }\n passwordStrength: {\n label: string\n levels: [string, string, string, string]\n met: string\n notMet: string\n /** Polite announcement of the level; {0} = level word. */\n announce: (level: string) => string\n rules: {\n minLength: (count: number) => string\n uppercase: string\n lowercase: string\n digit: string\n symbol: string\n }\n }\n searchBar: {\n label: string\n placeholder: string\n refinePlaceholder: string\n clearSearch: string\n clearAll: string\n cancel: string\n filters: string\n /** {0} = number of active filters. */\n filtersActive: (count: number) => string\n filtersTitle: string\n clear: string\n done: string\n }\n filterField: { clear: string }\n filterChips: { group: string; remove: (label: string) => string; removed: (label: string) => string; clearAll: string }\n choiceCard: { unavailable: string }\n chipGroup: {\n /** {0} = number of selected chips. */\n selected: (count: number) => string\n selectAll: string\n clear: string\n empty: string\n loading: string\n addPlaceholder: string\n addLabel: string\n remove: (name: string) => string\n }\n flagSetPicker: { presets: string; options: string }\n}\n\nexport const formsAEn: FormsAMessages = {\n themeSwitcher: { label: 'Dark mode', toLight: 'Switch to light mode', toDark: 'Switch to dark mode' },\n themePalette: {\n label: 'Choose a theme',\n placeholder: 'Search themes',\n groupInterface: 'Interface',\n groupPrint: 'Book styles',\n recent: 'Recent',\n noResults: (q) => `No theme matches “${q}”.`,\n results: (n) => `${en.n(n)} ${en.word(n, { one: 'theme', other: 'themes' })}`,\n count: (n) => en.n(n),\n applied: (name) => `Theme applied: ${name}`,\n trigger: (name) => `Theme: ${name}`,\n preview: 'Preview',\n sample: 'The same content, another engraving.',\n mode: 'Mode',\n modeSystem: 'System',\n modeLight: 'Light',\n modeDark: 'Dark',\n density: 'Density',\n densityCompact: 'Compact',\n densityDefault: 'Default',\n densityComfortable: 'Comfortable',\n hints: { move: 'preview', apply: 'apply', revert: 'revert' },\n },\n stateSwitch: { off: 'Inactive', on: 'Active' },\n oneTimeCode: { label: 'Verification code', box: (n, total) => `Character ${en.n(n)} of ${en.n(total)}` },\n passwordStrength: {\n label: 'Password strength',\n levels: ['Weak', 'Fair', 'Good', 'Strong'],\n met: 'met:',\n notMet: 'not met:',\n announce: (word) => `Password strength: ${word}`,\n rules: {\n minLength: (n) => `At least ${en.n(n)} ${en.word(n, { one: 'character', other: 'characters' })}`,\n uppercase: 'An uppercase letter',\n lowercase: 'A lowercase letter',\n digit: 'A digit',\n symbol: 'A symbol',\n },\n },\n searchBar: {\n label: 'Search',\n placeholder: 'Search',\n refinePlaceholder: 'Refine within the filters',\n clearSearch: 'Clear search',\n clearAll: 'Clear all',\n cancel: 'Cancel',\n filters: 'Filters',\n filtersActive: (n) => `Filters, ${en.n(n)} active`,\n filtersTitle: 'Filters',\n clear: 'Clear',\n done: 'Done',\n },\n filterField: { clear: 'Clear filter' },\n filterChips: {\n group: 'Active filters',\n remove: (label) => `Remove ${label}`,\n removed: (label) => `${label} removed`,\n clearAll: 'Clear all',\n },\n choiceCard: { unavailable: 'Unavailable' },\n chipGroup: {\n selected: (n) => `${en.n(n)} selected`,\n selectAll: 'Select all',\n clear: 'Clear',\n empty: 'No items to choose from',\n loading: 'Loading items',\n addPlaceholder: 'Add and press Enter',\n addLabel: 'Add an item',\n remove: (name) => `Remove ${name}`,\n },\n flagSetPicker: { presets: 'Presets', options: 'Options' },\n}\n\nexport const formsAPtBR: FormsAMessages = {\n themeSwitcher: { label: 'Modo escuro', toLight: 'Mudar para o modo claro', toDark: 'Mudar para o modo escuro' },\n themePalette: {\n label: 'Escolher o tema',\n placeholder: 'Buscar tema',\n groupInterface: 'Interface',\n groupPrint: 'Estilos de livro',\n recent: 'Recentes',\n noResults: (q) => `Nenhum tema corresponde a “${q}”.`,\n results: (n) => `${pt.n(n)} ${pt.word(n, { one: 'tema', other: 'temas' })}`,\n count: (n) => pt.n(n),\n applied: (name) => `Tema aplicado: ${name}`,\n trigger: (name) => `Tema: ${name}`,\n preview: 'Prévia',\n sample: 'O mesmo conteúdo, outra gravação.',\n mode: 'Modo',\n modeSystem: 'Sistema',\n modeLight: 'Claro',\n modeDark: 'Escuro',\n density: 'Densidade',\n densityCompact: 'Compacta',\n densityDefault: 'Padrão',\n densityComfortable: 'Confortável',\n hints: { move: 'prévia', apply: 'aplicar', revert: 'desfazer' },\n },\n stateSwitch: { off: 'Inativo', on: 'Ativo' },\n oneTimeCode: { label: 'Código de verificação', box: (n, total) => `Caractere ${pt.n(n)} de ${pt.n(total)}` },\n passwordStrength: {\n label: 'Força da senha',\n levels: ['Fraca', 'Razoável', 'Boa', 'Forte'],\n met: 'atendido:',\n notMet: 'não atendido:',\n announce: (word) => `Força da senha: ${word}`,\n rules: {\n minLength: (n) => `Pelo menos ${pt.n(n)} ${pt.word(n, { one: 'caractere', other: 'caracteres' })}`,\n uppercase: 'Uma letra maiúscula',\n lowercase: 'Uma letra minúscula',\n digit: 'Um número',\n symbol: 'Um símbolo',\n },\n },\n searchBar: {\n label: 'Busca',\n placeholder: 'Buscar',\n refinePlaceholder: 'Refinar dentro dos filtros',\n clearSearch: 'Limpar busca',\n clearAll: 'Limpar tudo',\n cancel: 'Cancelar',\n filters: 'Filtros',\n filtersActive: (n) => `Filtros, ${pt.n(n)} ${pt.word(n, { one: 'ativo', other: 'ativos' })}`,\n filtersTitle: 'Filtros',\n clear: 'Limpar',\n done: 'Concluir',\n },\n filterField: { clear: 'Limpar filtro' },\n filterChips: {\n group: 'Filtros ativos',\n remove: (label) => `Remover ${label}`,\n removed: (label) => `${label} removido`,\n clearAll: 'Limpar tudo',\n },\n choiceCard: { unavailable: 'Indisponível' },\n chipGroup: {\n selected: (n) => `${pt.n(n)} ${pt.word(n, { one: 'selecionado', other: 'selecionados' })}`,\n selectAll: 'Selecionar todos',\n clear: 'Limpar',\n empty: 'Nenhum item para escolher',\n loading: 'Carregando itens',\n addPlaceholder: 'Digite e pressione Enter',\n addLabel: 'Adicionar item',\n remove: (name) => `Remover ${name}`,\n },\n flagSetPicker: { presets: 'Predefinições', options: 'Opções' },\n}\n\n/** Spanish (neutral Latin-American). */\nexport const formsAEs: FormsAMessages = {\n themeSwitcher: { label: 'Modo oscuro', toLight: 'Cambiar al modo claro', toDark: 'Cambiar al modo oscuro' },\n themePalette: {\n label: 'Elegir el tema',\n placeholder: 'Buscar tema',\n groupInterface: 'Interfaz',\n groupPrint: 'Estilos de libro',\n recent: 'Recientes',\n noResults: (q) => `Ningún tema coincide con «${q}».`,\n results: (n) => `${es.n(n)} ${es.word(n, { one: 'tema', other: 'temas' })}`,\n count: (n) => es.n(n),\n applied: (name) => `Tema aplicado: ${name}`,\n trigger: (name) => `Tema: ${name}`,\n preview: 'Vista previa',\n sample: 'El mismo contenido, otro grabado.',\n mode: 'Modo',\n modeSystem: 'Sistema',\n modeLight: 'Claro',\n modeDark: 'Oscuro',\n density: 'Densidad',\n densityCompact: 'Compacta',\n densityDefault: 'Normal',\n densityComfortable: 'Cómoda',\n hints: { move: 'vista previa', apply: 'aplicar', revert: 'deshacer' },\n },\n stateSwitch: { off: 'Inactivo', on: 'Activo' },\n oneTimeCode: { label: 'Código de verificación', box: (n, total) => `Carácter ${es.n(n)} de ${es.n(total)}` },\n passwordStrength: {\n label: 'Seguridad de la contraseña',\n levels: ['Débil', 'Aceptable', 'Buena', 'Fuerte'],\n met: 'cumplido:',\n notMet: 'no cumplido:',\n announce: (word) => `Seguridad de la contraseña: ${word}`,\n rules: {\n minLength: (n) => `Al menos ${es.n(n)} ${es.word(n, { one: 'carácter', other: 'caracteres' })}`,\n uppercase: 'Una letra mayúscula',\n lowercase: 'Una letra minúscula',\n digit: 'Un número',\n symbol: 'Un símbolo',\n },\n },\n searchBar: {\n label: 'Búsqueda',\n placeholder: 'Buscar',\n refinePlaceholder: 'Refinar dentro de los filtros',\n clearSearch: 'Borrar búsqueda',\n clearAll: 'Borrar todo',\n cancel: 'Cancelar',\n filters: 'Filtros',\n filtersActive: (n) => `Filtros, ${es.n(n)} ${es.word(n, { one: 'activo', other: 'activos' })}`,\n filtersTitle: 'Filtros',\n clear: 'Borrar',\n done: 'Listo',\n },\n filterField: { clear: 'Borrar filtro' },\n filterChips: {\n group: 'Filtros activos',\n remove: (label) => `Quitar ${label}`,\n removed: (label) => `${label} quitado`,\n clearAll: 'Borrar todo',\n },\n choiceCard: { unavailable: 'No disponible' },\n chipGroup: {\n selected: (n) => `${es.n(n)} ${es.word(n, { one: 'seleccionado', other: 'seleccionados' })}`,\n selectAll: 'Seleccionar todo',\n clear: 'Borrar',\n empty: 'No hay elementos para elegir',\n loading: 'Cargando elementos',\n addPlaceholder: 'Escribe y presiona Enter',\n addLabel: 'Agregar un elemento',\n remove: (name) => `Quitar ${name}`,\n },\n flagSetPicker: { presets: 'Ajustes predefinidos', options: 'Opciones' },\n}\n","// Copy of the \"forms-b\" group (wave 2). One namespace per component, English,\n// Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface FormsBMessages {\n tagField: {\n remove: (display: string) => string\n chosen: (field: string) => string\n suggestions: string\n }\n currencyField: {\n currency: (name: string) => string\n }\n dateField: {\n placeholder: string\n previousMonth: string\n nextMonth: string\n previousYear: string\n nextYear: string\n today: string\n todayMarker: string\n chooseMonth: (current: string) => string\n backToDays: string\n months: string\n years: string\n }\n timeField: {\n placeholder: string\n hours: string\n minutes: string\n confirm: string\n future: string\n }\n monthField: {\n placeholder: string\n previousYear: string\n nextYear: string\n months: string\n years: string\n }\n localePicker: {\n title: string\n trigger: (title: string, language: string) => string\n current: (language: string, code: string) => string\n list: string\n }\n imagePicker: {\n change: string\n wrongType: string\n tooLarge: (limit: string) => string\n failed: string\n updated: string\n uploading: string\n }\n requestForm: {\n submit: string\n reject: string\n sending: string\n choose: string\n required: string\n notNumber: string\n atLeast: (min: number) => string\n atMost: (max: number) => string\n defaultReason: string\n approved: string\n rejected: string\n approvedSentence: string\n rejectedSentence: string\n failed: string\n }\n formActions: {\n saving: string\n }\n}\n\nexport const formsBEn: FormsBMessages = {\n tagField: {\n remove: (d) => `Remove ${d}`,\n chosen: (f) => `${f}: chosen values`,\n suggestions: 'Suggestions',\n },\n currencyField: {\n currency: (name) => `Currency: ${name}`,\n },\n dateField: {\n placeholder: 'Select a date',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n previousYear: 'Previous year',\n nextYear: 'Next year',\n today: 'Today',\n todayMarker: 'today',\n chooseMonth: (c) => `${c}, choose month and year`,\n backToDays: 'Back to days',\n months: 'Months',\n years: 'Years',\n },\n timeField: {\n placeholder: 'Select a time',\n hours: 'Hours',\n minutes: 'Minutes',\n confirm: 'Confirm',\n future: 'This time is still in the future. Choose a time up to now.',\n },\n monthField: {\n placeholder: 'Select a month',\n previousYear: 'Previous year',\n nextYear: 'Next year',\n months: 'Months',\n years: 'Years with data',\n },\n localePicker: {\n title: 'Language',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Current language: ${l} (${c})`,\n list: 'Available languages',\n },\n imagePicker: {\n change: 'Change picture',\n wrongType: 'This file type is not accepted. Choose a JPEG, PNG or WebP image.',\n tooLarge: (limit) => `The file is larger than ${limit}. Choose a smaller image.`,\n failed: 'The picture could not be uploaded. Try again.',\n updated: 'Picture updated',\n uploading: 'Uploading the picture',\n },\n requestForm: {\n submit: 'Submit',\n reject: 'Reject',\n sending: 'Sending',\n choose: 'Choose…',\n required: 'Fill in this field.',\n notNumber: 'Enter a number.',\n atLeast: (n) => `Enter ${en.n(n)} or more.`,\n atMost: (n) => `Enter ${en.n(n)} or less.`,\n defaultReason: 'Rejected by the reviewer',\n approved: 'Approved',\n rejected: 'Rejected',\n approvedSentence: 'Answer sent. The run resumed.',\n rejectedSentence: 'Request rejected. The run was closed.',\n failed: 'The answer could not be sent.',\n },\n formActions: {\n saving: 'Saving',\n },\n}\n\nexport const formsBPtBR: FormsBMessages = {\n tagField: {\n remove: (d) => `Remover ${d}`,\n chosen: (f) => `${f}: valores escolhidos`,\n suggestions: 'Sugestões',\n },\n currencyField: {\n currency: (name) => `Moeda: ${name}`,\n },\n dateField: {\n placeholder: 'Selecione uma data',\n previousMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n previousYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n today: 'Hoje',\n todayMarker: 'hoje',\n chooseMonth: (c) => `${c}, escolher mês e ano`,\n backToDays: 'Voltar aos dias',\n months: 'Meses',\n years: 'Anos',\n },\n timeField: {\n placeholder: 'Selecione um horário',\n hours: 'Horas',\n minutes: 'Minutos',\n confirm: 'Confirmar',\n future: 'Este horário ainda está no futuro. Escolha um horário até agora.',\n },\n monthField: {\n placeholder: 'Selecione um mês',\n previousYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n months: 'Meses',\n years: 'Anos com dados',\n },\n localePicker: {\n title: 'Idioma',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Idioma atual: ${l} (${c})`,\n list: 'Idiomas disponíveis',\n },\n imagePicker: {\n change: 'Trocar imagem',\n wrongType: 'Este tipo de arquivo não é aceito. Escolha uma imagem JPEG, PNG ou WebP.',\n tooLarge: (limit) => `O arquivo tem mais de ${limit}. Escolha uma imagem menor.`,\n failed: 'Não foi possível enviar a imagem. Tente de novo.',\n updated: 'Imagem atualizada',\n uploading: 'Enviando a imagem',\n },\n requestForm: {\n submit: 'Enviar',\n reject: 'Rejeitar',\n sending: 'Enviando',\n choose: 'Escolha…',\n required: 'Preencha este campo.',\n notNumber: 'Digite um número.',\n atLeast: (n) => `Digite ${pt.n(n)} ou mais.`,\n atMost: (n) => `Digite ${pt.n(n)} ou menos.`,\n defaultReason: 'Rejeitado por quem revisou',\n approved: 'Aprovado',\n rejected: 'Rejeitado',\n approvedSentence: 'Resposta enviada. A execução foi retomada.',\n rejectedSentence: 'Pedido rejeitado. A execução foi encerrada.',\n failed: 'Não foi possível enviar a resposta.',\n },\n formActions: {\n saving: 'Salvando',\n },\n}\n\n/** Spanish (neutral Latin American). */\nexport const formsBEs: FormsBMessages = {\n tagField: {\n remove: (d) => `Quitar ${d}`,\n chosen: (f) => `${f}: valores elegidos`,\n suggestions: 'Sugerencias',\n },\n currencyField: {\n currency: (name) => `Moneda: ${name}`,\n },\n dateField: {\n placeholder: 'Seleccione una fecha',\n previousMonth: 'Mes anterior',\n nextMonth: 'Mes siguiente',\n previousYear: 'Año anterior',\n nextYear: 'Año siguiente',\n today: 'Hoy',\n todayMarker: 'hoy',\n chooseMonth: (c) => `${c}, elegir mes y año`,\n backToDays: 'Volver a los días',\n months: 'Meses',\n years: 'Años',\n },\n timeField: {\n placeholder: 'Seleccione una hora',\n hours: 'Horas',\n minutes: 'Minutos',\n confirm: 'Confirmar',\n future: 'Esta hora todavía está en el futuro. Elija una hora hasta ahora.',\n },\n monthField: {\n placeholder: 'Seleccione un mes',\n previousYear: 'Año anterior',\n nextYear: 'Año siguiente',\n months: 'Meses',\n years: 'Años con datos',\n },\n localePicker: {\n title: 'Idioma',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Idioma actual: ${l} (${c})`,\n list: 'Idiomas disponibles',\n },\n imagePicker: {\n change: 'Cambiar imagen',\n wrongType: 'Este tipo de archivo no se acepta. Elija una imagen JPEG, PNG o WebP.',\n tooLarge: (limit) => `El archivo supera ${limit}. Elija una imagen más pequeña.`,\n failed: 'No se pudo subir la imagen. Inténtelo de nuevo.',\n updated: 'Imagen actualizada',\n uploading: 'Subiendo la imagen',\n },\n requestForm: {\n submit: 'Enviar',\n reject: 'Rechazar',\n sending: 'Enviando',\n choose: 'Elija…',\n required: 'Complete este campo.',\n notNumber: 'Escriba un número.',\n atLeast: (n) => `Escriba ${es.n(n)} o más.`,\n atMost: (n) => `Escriba ${es.n(n)} o menos.`,\n defaultReason: 'Rechazado por quien revisó',\n approved: 'Aprobado',\n rejected: 'Rechazado',\n approvedSentence: 'Respuesta enviada. La ejecución se reanudó.',\n rejectedSentence: 'Solicitud rechazada. La ejecución se cerró.',\n failed: 'No se pudo enviar la respuesta.',\n },\n formActions: {\n saving: 'Guardando',\n },\n}\n","// Copy of the \"overlays-nav\" group (wave 2). One namespace per component,\n// English and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface OverlaysNavMessages {\n sectionedModal: { close: string; cancel: string; save: string; sectionPicker: string }\n settingsDialog: {\n placeholder: string\n copy: (field: string) => string\n copied: string\n changePicture: string\n currentPassword: string\n newPassword: string\n confirmPassword: string\n changePassword: string\n passwordMismatch: string\n }\n confirm: { confirm: string; cancel: string; caution: string }\n detailsPopover: {\n tone: Record<'success' | 'pending' | 'error', string>\n }\n navigationFlyout: {\n title: string\n search: string\n noResults: string\n count: (n: number) => string\n notifications: string\n unseen: (n: number) => string\n darkTheme: string\n profile: string\n signOut: string\n destinations: string\n }\n appNavigation: {\n landmark: string\n home: string\n profile: string\n signOut: string\n theme: string\n themeLight: string\n themeDark: string\n language: string\n account: string\n openMenu: string\n closeMenu: string\n collapse: string\n expand: string\n pending: (label: string, n: number) => string\n submenu: (label: string) => string\n }\n appLauncher: {\n actions: string\n more: (label: string) => string\n shortcuts: (label: string) => string\n withCount: (label: string, n: number) => string\n withAlerts: (label: string, n: number) => string\n profileLoading: string\n profile: string\n }\n commandPalette: {\n label: string\n placeholder: string\n empty: string\n noResults: (query: string) => string\n loading: string\n removeScope: (scope: string) => string\n actionsFor: (item: string) => string\n recent: string\n results: (n: number) => string\n scopes: string\n fallback: string\n hints: { navigate: string; select: string; actions: string; back: string; close: string }\n }\n longPressMenu: { hint: string }\n floatingActionButton: { busy: string }\n stepList: {\n position: (n: number, total: number) => string\n status: Record<'complete' | 'current' | 'upcoming', string>\n }\n pageDots: { label: string; dot: (n: number, total: number) => string; counter: (n: number, total: number) => string }\n wizardPage: {\n previous: string\n next: string\n cancel: string\n submit: string\n submitting: string\n close: string\n actions: string\n documentTitle: (step: string, flow: string) => string\n }\n}\n\nexport const overlaysNavEn: OverlaysNavMessages = {\n sectionedModal: { close: 'Close', cancel: 'Cancel', save: 'Save', sectionPicker: 'Section' },\n settingsDialog: {\n placeholder: 'Nothing to configure in this section yet.',\n copy: (f) => `Copy ${f}`,\n copied: 'Copied',\n changePicture: 'Change picture',\n currentPassword: 'Current password',\n newPassword: 'New password',\n confirmPassword: 'Confirm the new password',\n changePassword: 'Change password',\n passwordMismatch: 'The two new passwords are different.',\n },\n confirm: { confirm: 'Confirm', cancel: 'Cancel', caution: 'Caution' },\n detailsPopover: { tone: { success: 'Success', pending: 'Pending', error: 'Error' } },\n navigationFlyout: {\n title: 'Navigation',\n search: 'Search destinations',\n noResults: 'No destination matches this search.',\n count: (n) => `${en.n(n)} ${en.word(n, { one: 'destination', other: 'destinations' })}`,\n notifications: 'Notifications',\n unseen: (n) => `${en.n(n)} unseen`,\n darkTheme: 'Dark theme',\n profile: 'Profile',\n signOut: 'Sign out',\n destinations: 'Destinations',\n },\n appNavigation: {\n landmark: 'Primary navigation',\n home: 'Home',\n profile: 'Profile',\n signOut: 'Sign out',\n theme: 'Theme',\n themeLight: 'Light',\n themeDark: 'Dark',\n language: 'Language',\n account: 'Account',\n openMenu: 'Open navigation',\n closeMenu: 'Close navigation',\n collapse: 'Collapse navigation',\n expand: 'Expand navigation',\n pending: (label, n) => `${label}, ${en.n(n)} pending`,\n submenu: (label) => `More in ${label}`,\n },\n appLauncher: {\n actions: 'Actions',\n more: (label) => `More for ${label}`,\n shortcuts: (label) => `Shortcuts of ${label}`,\n withCount: (label, n) => `${label}, ${en.n(n)} new`,\n withAlerts: (label, n) => `${label}, ${en.n(n)} ${en.word(n, { one: 'alert', other: 'alerts' })}`,\n profileLoading: 'Loading the profile',\n profile: 'Profile',\n },\n commandPalette: {\n label: 'Search and commands',\n placeholder: 'Search or type a command',\n empty: 'Type to search records, sources and screens.',\n noResults: (q) => `Nothing matches “${q}”.`,\n loading: 'Loading results',\n removeScope: (s) => `Remove scope ${s}`,\n actionsFor: (item) => `Actions for ${item}`,\n recent: 'Recent',\n results: (n) => `${en.n(n)} ${en.word(n, { one: 'result', other: 'results' })}`,\n scopes: 'Scopes',\n fallback: 'Other actions',\n hints: { navigate: 'move', select: 'open', actions: 'actions', back: 'back', close: 'close' },\n },\n longPressMenu: { hint: 'More actions: long press, right click or Shift+F10.' },\n floatingActionButton: { busy: 'Working' },\n stepList: {\n position: (n, total) => `Step ${en.n(n)} of ${en.n(total)}`,\n status: { complete: 'completed', current: 'current', upcoming: 'not started' },\n },\n pageDots: {\n label: 'Pages',\n dot: (n, total) => `Page ${en.n(n)} of ${en.n(total)}`,\n counter: (n, total) => `${en.n(n)} of ${en.n(total)}`,\n },\n wizardPage: {\n previous: 'Previous',\n next: 'Next',\n cancel: 'Cancel',\n submit: 'Submit',\n submitting: 'Submitting',\n close: 'Close',\n actions: 'Step actions',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n\nexport const overlaysNavPtBR: OverlaysNavMessages = {\n sectionedModal: { close: 'Fechar', cancel: 'Cancelar', save: 'Salvar', sectionPicker: 'Seção' },\n settingsDialog: {\n placeholder: 'Ainda não há o que configurar nesta seção.',\n copy: (f) => `Copiar ${f}`,\n copied: 'Copiado',\n changePicture: 'Trocar foto',\n currentPassword: 'Senha atual',\n newPassword: 'Nova senha',\n confirmPassword: 'Confirme a nova senha',\n changePassword: 'Trocar senha',\n passwordMismatch: 'As duas senhas novas são diferentes.',\n },\n confirm: { confirm: 'Confirmar', cancel: 'Cancelar', caution: 'Atenção' },\n detailsPopover: { tone: { success: 'Sucesso', pending: 'Pendente', error: 'Erro' } },\n navigationFlyout: {\n title: 'Navegação',\n search: 'Buscar destinos',\n noResults: 'Nenhum destino corresponde à busca.',\n count: (n) => `${pt.n(n)} ${pt.word(n, { one: 'destino', other: 'destinos' })}`,\n notifications: 'Notificações',\n unseen: (n) => `${pt.n(n)} ${pt.word(n, { one: 'não vista', other: 'não vistas' })}`,\n darkTheme: 'Tema escuro',\n profile: 'Perfil',\n signOut: 'Sair',\n destinations: 'Destinos',\n },\n appNavigation: {\n landmark: 'Navegação principal',\n home: 'Início',\n profile: 'Perfil',\n signOut: 'Sair',\n theme: 'Tema',\n themeLight: 'Claro',\n themeDark: 'Escuro',\n language: 'Idioma',\n account: 'Conta',\n openMenu: 'Abrir navegação',\n closeMenu: 'Fechar navegação',\n collapse: 'Recolher navegação',\n expand: 'Expandir navegação',\n pending: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'pendente', other: 'pendentes' })}`,\n submenu: (label) => `Mais em ${label}`,\n },\n appLauncher: {\n actions: 'Ações',\n more: (label) => `Mais opções de ${label}`,\n shortcuts: (label) => `Atalhos de ${label}`,\n withCount: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'novo', other: 'novos' })}`,\n withAlerts: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'alerta', other: 'alertas' })}`,\n profileLoading: 'Carregando o perfil',\n profile: 'Perfil',\n },\n commandPalette: {\n label: 'Busca e comandos',\n placeholder: 'Busque ou digite um comando',\n empty: 'Digite para buscar registros, fontes e telas.',\n noResults: (q) => `Nada corresponde a “${q}”.`,\n loading: 'Carregando resultados',\n removeScope: (s) => `Remover o escopo ${s}`,\n actionsFor: (item) => `Ações de ${item}`,\n recent: 'Recentes',\n results: (n) => `${pt.n(n)} ${pt.word(n, { one: 'resultado', other: 'resultados' })}`,\n scopes: 'Escopos',\n fallback: 'Outras ações',\n hints: { navigate: 'mover', select: 'abrir', actions: 'ações', back: 'voltar', close: 'fechar' },\n },\n longPressMenu: { hint: 'Mais ações: toque longo, clique direito ou Shift+F10.' },\n floatingActionButton: { busy: 'Processando' },\n stepList: {\n position: (n, total) => `Etapa ${pt.n(n)} de ${pt.n(total)}`,\n status: { complete: 'concluída', current: 'atual', upcoming: 'não iniciada' },\n },\n pageDots: {\n label: 'Páginas',\n dot: (n, total) => `Página ${pt.n(n)} de ${pt.n(total)}`,\n counter: (n, total) => `${pt.n(n)} de ${pt.n(total)}`,\n },\n wizardPage: {\n previous: 'Anterior',\n next: 'Próxima',\n cancel: 'Cancelar',\n submit: 'Enviar',\n submitting: 'Enviando',\n close: 'Fechar',\n actions: 'Ações da etapa',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n\n/** Spanish (neutral Latin American). */\nexport const overlaysNavEs: OverlaysNavMessages = {\n sectionedModal: { close: 'Cerrar', cancel: 'Cancelar', save: 'Guardar', sectionPicker: 'Sección' },\n settingsDialog: {\n placeholder: 'Todavía no hay nada que configurar en esta sección.',\n copy: (f) => `Copiar ${f}`,\n copied: 'Copiado',\n changePicture: 'Cambiar imagen',\n currentPassword: 'Contraseña actual',\n newPassword: 'Contraseña nueva',\n confirmPassword: 'Confirme la contraseña nueva',\n changePassword: 'Cambiar contraseña',\n passwordMismatch: 'Las dos contraseñas nuevas son distintas.',\n },\n confirm: { confirm: 'Confirmar', cancel: 'Cancelar', caution: 'Atención' },\n detailsPopover: { tone: { success: 'Éxito', pending: 'Pendiente', error: 'Error' } },\n navigationFlyout: {\n title: 'Navegación',\n search: 'Buscar destinos',\n noResults: 'Ningún destino coincide con esta búsqueda.',\n count: (n) => `${es.n(n)} ${es.word(n, { one: 'destino', other: 'destinos' })}`,\n notifications: 'Notificaciones',\n unseen: (n) => `${es.n(n)} ${es.word(n, { one: 'sin ver', other: 'sin ver' })}`,\n darkTheme: 'Tema oscuro',\n profile: 'Perfil',\n signOut: 'Cerrar sesión',\n destinations: 'Destinos',\n },\n appNavigation: {\n landmark: 'Navegación principal',\n home: 'Inicio',\n profile: 'Perfil',\n signOut: 'Cerrar sesión',\n theme: 'Tema',\n themeLight: 'Claro',\n themeDark: 'Oscuro',\n language: 'Idioma',\n account: 'Cuenta',\n openMenu: 'Abrir navegación',\n closeMenu: 'Cerrar navegación',\n collapse: 'Contraer navegación',\n expand: 'Expandir navegación',\n pending: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'pendiente', other: 'pendientes' })}`,\n submenu: (label) => `Más en ${label}`,\n },\n appLauncher: {\n actions: 'Acciones',\n more: (label) => `Más para ${label}`,\n shortcuts: (label) => `Atajos de ${label}`,\n withCount: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'nuevo', other: 'nuevos' })}`,\n withAlerts: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'alerta', other: 'alertas' })}`,\n profileLoading: 'Cargando el perfil',\n profile: 'Perfil',\n },\n commandPalette: {\n label: 'Búsqueda y comandos',\n placeholder: 'Busque o escriba un comando',\n empty: 'Escriba para buscar registros, fuentes y pantallas.',\n noResults: (q) => `Nada coincide con «${q}».`,\n loading: 'Cargando resultados',\n removeScope: (s) => `Quitar el ámbito ${s}`,\n actionsFor: (item) => `Acciones de ${item}`,\n recent: 'Recientes',\n results: (n) => `${es.n(n)} ${es.word(n, { one: 'resultado', other: 'resultados' })}`,\n scopes: 'Ámbitos',\n fallback: 'Otras acciones',\n hints: { navigate: 'mover', select: 'abrir', actions: 'acciones', back: 'volver', close: 'cerrar' },\n },\n longPressMenu: { hint: 'Más acciones: mantenga pulsado, clic derecho o Mayús+F10.' },\n floatingActionButton: { busy: 'Trabajando' },\n stepList: {\n position: (n, total) => `Paso ${es.n(n)} de ${es.n(total)}`,\n status: { complete: 'completado', current: 'actual', upcoming: 'sin empezar' },\n },\n pageDots: {\n label: 'Páginas',\n dot: (n, total) => `Página ${es.n(n)} de ${es.n(total)}`,\n counter: (n, total) => `${es.n(n)} de ${es.n(total)}`,\n },\n wizardPage: {\n previous: 'Anterior',\n next: 'Siguiente',\n cancel: 'Cancelar',\n submit: 'Enviar',\n submitting: 'Enviando',\n close: 'Cerrar',\n actions: 'Acciones del paso',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n","// Copy of the \"data-a\" group (wave 2): lists, records, disclosure lists,\n// identifiers and markdown. One namespace per component, English and\n// Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\n/** \"n units ago\" in the catalogue's language (Intl.RelativeTimeFormat). */\nconst ago = (language: string, unit: Intl.RelativeTimeFormatUnit) => (n: number) => new Intl.RelativeTimeFormat(language, { numeric: 'auto' }).format(-n, unit)\n\nexport interface PluralNoun {\n one: string\n other: string\n}\n\nexport interface DataAMessages {\n listRow: {\n /** Textual marker of the emphasised row (never only the background). */\n current: string\n }\n countBadge: {\n /** Default noun counted by a badge. */\n item: PluralNoun\n /** Accessible sentence, e.g. \"3 notifications\". */\n describe: (count: number, noun: string) => string\n }\n notificationCenter: {\n bell: string\n /** Bell name with unseen entries, e.g. \"Notifications, 3 unread\". */\n bellUnseen: (label: string, unseen: number) => string\n title: string\n clearAll: string\n cleared: string\n empty: string\n dismiss: (title: string) => string\n tone: Record<'success' | 'error' | 'warning' | 'info', string>\n time: { justNow: string; minutes: (n: number) => string; hours: (n: number) => string; days: (n: number) => string }\n }\n profileAvatar: { profile: string }\n copyIdentifier: {\n copy: string\n copied: string\n copiedStatus: (value: string) => string\n failed: string\n }\n recoveryCodes: {\n hidden: string\n reveal: string\n copyAll: string\n copied: string\n copyFailed: string\n download: string\n fileTitle: string\n generatedAt: (iso: string) => string\n keepSafe: string\n fileName: string\n listLabel: string\n }\n markdown: { codeBlock: (language?: string) => string }\n}\n\nexport const dataAEn: DataAMessages = {\n listRow: { current: 'Current' },\n countBadge: {\n item: { one: 'item', other: 'items' },\n describe: (n, noun) => `${en.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notifications',\n bellUnseen: (label, n) => `${label}, ${en.n(n)} unread`,\n title: 'Notifications',\n clearAll: 'Clear all',\n cleared: 'Notifications cleared',\n empty: 'There are no notifications in this session.',\n dismiss: (title) => `Dismiss, ${title}`,\n tone: { success: 'Success', error: 'Error', warning: 'Warning', info: 'Information' },\n time: {\n justNow: 'just now',\n minutes: ago('en', 'minute'),\n hours: ago('en', 'hour'),\n days: ago('en', 'day'),\n },\n },\n profileAvatar: { profile: 'Profile' },\n copyIdentifier: {\n copy: 'Copy',\n copied: 'copied',\n copiedStatus: (v) => `Copied ${v}`,\n failed: 'Copying failed. Select the text to copy it by hand.',\n },\n recoveryCodes: {\n hidden: 'The recovery codes are hidden.',\n reveal: 'Show codes',\n copyAll: 'Copy all',\n copied: 'Copied',\n copyFailed: 'The clipboard is not available. Select the codes to copy them.',\n download: 'Download',\n fileTitle: 'Recovery codes',\n generatedAt: (iso) => `Generated at ${iso}`,\n keepSafe: 'Keep these codes somewhere safe. Each code works once.',\n fileName: 'recovery-codes.txt',\n listLabel: 'Recovery codes',\n },\n markdown: { codeBlock: (lang) => (lang ? `Code block, ${lang}` : 'Code block') },\n}\n\nexport const dataAPtBR: DataAMessages = {\n listRow: { current: 'Atual' },\n countBadge: {\n item: { one: 'item', other: 'itens' },\n describe: (n, noun) => `${pt.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notificações',\n bellUnseen: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'não lida', other: 'não lidas' })}`,\n title: 'Notificações',\n clearAll: 'Limpar tudo',\n cleared: 'Notificações apagadas',\n empty: 'Não há notificações nesta sessão.',\n dismiss: (title) => `Dispensar, ${title}`,\n tone: { success: 'Sucesso', error: 'Erro', warning: 'Atenção', info: 'Informação' },\n time: {\n justNow: 'agora mesmo',\n minutes: ago('pt-BR', 'minute'),\n hours: ago('pt-BR', 'hour'),\n days: ago('pt-BR', 'day'),\n },\n },\n profileAvatar: { profile: 'Perfil' },\n copyIdentifier: {\n copy: 'Copiar',\n copied: 'copiado',\n copiedStatus: (v) => `${v} copiado`,\n failed: 'Não foi possível copiar. Selecione o texto para copiar à mão.',\n },\n recoveryCodes: {\n hidden: 'Os códigos de recuperação estão ocultos.',\n reveal: 'Mostrar códigos',\n copyAll: 'Copiar todos',\n copied: 'Copiados',\n copyFailed: 'A área de transferência não está disponível. Selecione os códigos para copiá-los.',\n download: 'Baixar',\n fileTitle: 'Códigos de recuperação',\n generatedAt: (iso) => `Gerados em ${iso}`,\n keepSafe: 'Guarde estes códigos em lugar seguro. Cada código funciona uma vez.',\n fileName: 'codigos-de-recuperacao.txt',\n listLabel: 'Códigos de recuperação',\n },\n markdown: { codeBlock: (lang) => (lang ? `Bloco de código, ${lang}` : 'Bloco de código') },\n}\n\n/** Spanish (neutral Latin American). */\nexport const dataAEs: DataAMessages = {\n listRow: { current: 'Actual' },\n countBadge: {\n item: { one: 'elemento', other: 'elementos' },\n describe: (n, noun) => `${es.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notificaciones',\n bellUnseen: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'sin leer', other: 'sin leer' })}`,\n title: 'Notificaciones',\n clearAll: 'Borrar todo',\n cleared: 'Notificaciones borradas',\n empty: 'No hay notificaciones en esta sesión.',\n dismiss: (title) => `Descartar, ${title}`,\n tone: { success: 'Éxito', error: 'Error', warning: 'Atención', info: 'Información' },\n time: {\n justNow: 'ahora mismo',\n minutes: ago('es', 'minute'),\n hours: ago('es', 'hour'),\n days: ago('es', 'day'),\n },\n },\n profileAvatar: { profile: 'Perfil' },\n copyIdentifier: {\n copy: 'Copiar',\n copied: 'copiado',\n copiedStatus: (v) => `${v} copiado`,\n failed: 'No se pudo copiar. Seleccione el texto para copiarlo a mano.',\n },\n recoveryCodes: {\n hidden: 'Los códigos de recuperación están ocultos.',\n reveal: 'Mostrar códigos',\n copyAll: 'Copiar todos',\n copied: 'Copiados',\n copyFailed: 'El portapapeles no está disponible. Seleccione los códigos para copiarlos.',\n download: 'Descargar',\n fileTitle: 'Códigos de recuperación',\n generatedAt: (iso) => `Generados el ${iso}`,\n keepSafe: 'Guarde estos códigos en un lugar seguro. Cada código funciona una sola vez.',\n fileName: 'codigos-de-recuperacion.txt',\n listLabel: 'Códigos de recuperación',\n },\n markdown: { codeBlock: (lang) => (lang ? `Bloque de código, ${lang}` : 'Bloque de código') },\n}\n","// Copy of the \"data-b\" group (wave 2/4): figures, cards and summaries. One\n// namespace per component, English, Brazilian Portuguese and Spanish. Merged into\n// `Messages` by ../messages.ts.\n\nexport interface DataBMessages {\n statTile: {\n filtered: string\n explain: (label: string) => string\n attention: string\n }\n delta: { up: string; down: string; flat: string }\n agentOutput: {\n outcome: Record<'completed' | 'failed' | 'pending', string>\n duration: (d: string) => string\n }\n recordCard: {\n cancel: string\n working: string\n }\n contact: { email: string; phone: string }\n insight: {\n actions: string\n pending: string\n proposedBy: string\n failed: string\n }\n ticker: {\n value: string\n change: string\n empty: string\n loading: string\n }\n}\n\nexport const dataBEn: DataBMessages = {\n statTile: {\n filtered: 'filtered',\n explain: (label) => `How \"${label}\" is computed`,\n attention: 'needs action',\n },\n delta: { up: 'up', down: 'down', flat: 'no change' },\n agentOutput: {\n outcome: { completed: 'completed', failed: 'failed', pending: 'pending' },\n duration: (d) => `took ${d}`,\n },\n recordCard: { cancel: 'Cancel', working: 'Working' },\n contact: { email: 'E-mail', phone: 'Phone' },\n insight: {\n actions: 'Actions on this proposal',\n pending: 'Working',\n proposedBy: 'Proposed by',\n failed: 'The action could not be completed.',\n },\n ticker: { value: 'value', change: 'change', empty: 'No entries to show.', loading: 'Loading entries' },\n}\n\nexport const dataBPtBR: DataBMessages = {\n statTile: {\n filtered: 'filtrado',\n explain: (label) => `Como \"${label}\" é calculado`,\n attention: 'pede ação',\n },\n delta: { up: 'subiu', down: 'caiu', flat: 'sem mudança' },\n agentOutput: {\n outcome: { completed: 'concluída', failed: 'falhou', pending: 'pendente' },\n duration: (d) => `levou ${d}`,\n },\n recordCard: { cancel: 'Cancelar', working: 'Processando' },\n contact: { email: 'E-mail', phone: 'Telefone' },\n insight: {\n actions: 'Ações sobre esta proposta',\n pending: 'Processando',\n proposedBy: 'Proposta de',\n failed: 'Não foi possível concluir a ação.',\n },\n ticker: { value: 'valor', change: 'variação', empty: 'Nenhuma entrada para mostrar.', loading: 'Carregando entradas' },\n}\n\nexport const dataBEs: DataBMessages = {\n statTile: {\n filtered: 'filtrado',\n explain: (label) => `Cómo se calcula «${label}»`,\n attention: 'requiere acción',\n },\n delta: { up: 'subió', down: 'bajó', flat: 'sin cambios' },\n agentOutput: {\n outcome: { completed: 'completada', failed: 'falló', pending: 'pendiente' },\n duration: (d) => `tardó ${d}`,\n },\n recordCard: { cancel: 'Cancelar', working: 'Procesando' },\n contact: { email: 'Correo electrónico', phone: 'Teléfono' },\n insight: {\n actions: 'Acciones sobre esta propuesta',\n pending: 'Procesando',\n proposedBy: 'Propuesta de',\n failed: 'No se pudo completar la acción.',\n },\n ticker: { value: 'valor', change: 'variación', empty: 'No hay entradas para mostrar.', loading: 'Cargando entradas' },\n}\n","// Copy of the \"charts-geo\" group (wave 2/4): Chart, ReportView,\n// LiveReportView, RegionMap and the subdivision kinds of RegionThemeData.\n// English, Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport type SubdivisionKind =\n | 'state'\n | 'province'\n | 'region'\n | 'department'\n | 'governorate'\n | 'prefecture'\n | 'county'\n | 'voivodeship'\n | 'district'\n | 'nation'\n\nexport type RunPhase = 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled'\nexport type RunStepState = 'running' | 'done' | 'failed' | 'paused'\n\nexport interface ChartsGeoMessages {\n chart: {\n viewSwitch: string\n chartView: string\n tableView: string\n noData: string\n noDataHint: string\n /** Accessible description of the interactive plot. */\n plotHint: (title: string) => string\n readout: (category: string, series: string, value: string) => string\n missing: string\n categoryColumn: string\n legend: string\n }\n report: {\n empty: string\n emptyHint: string\n noValue: string\n recommendation: string\n unknownSection: (kind: string) => string\n inputRequestPending: string\n receipt: { description: string; quantity: string; unitPrice: string; total: string; subtotal: string; tax: string; grandTotal: string }\n approval: Record<'approved' | 'rejected' | 'pending', string> & { by: (who: string) => string; prompt: string; reason: string }\n document: { identifier: string; accessKey: string; number: string; series: string; environment: string; open: string }\n lifecycle: Record<'complete' | 'current' | 'upcoming', string>\n score: { outOf: (score: number) => string; reasoning: string }\n /** Receives the number of seconds; the catalogue formats it with Intl. */\n duration: (seconds: number) => string\n meta: string\n }\n liveReport: {\n phase: Record<RunPhase, string>\n step: Record<RunStepState, string>\n steps: string\n waiting: string\n pausedWaiting: string\n failed: string\n approve: string\n reject: string\n }\n regionMap: {\n map: string\n zoomIn: string\n zoomOut: string\n zoomValue: (percent: number) => string\n legendTitle: string\n more: (n: number) => string\n regionList: string\n regionItems: (name: string, count: number) => string\n loadError: string\n loading: string\n }\n regionKind: Record<SubdivisionKind, string>\n}\n\nexport const chartsGeoEn: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Show as',\n chartView: 'Chart',\n tableView: 'Table',\n noData: 'No data to plot',\n noDataHint: 'The chart appears once the analysis returns values.',\n plotHint: (title) => `${title}. Use the arrow keys to read each value.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'no value',\n categoryColumn: 'Category',\n legend: 'Legend',\n },\n report: {\n empty: 'This report is empty',\n emptyHint: 'Content appears here when the run produces it.',\n noValue: 'no value',\n recommendation: 'Recommendation',\n unknownSection: (kind) => `Section of an unknown kind (${kind})`,\n inputRequestPending: 'Waiting for input',\n receipt: {\n description: 'Description',\n quantity: 'Quantity',\n unitPrice: 'Unit price',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Tax',\n grandTotal: 'Total due',\n },\n approval: { approved: 'Approved', rejected: 'Rejected', pending: 'Pending', by: (who) => `by ${who}`, prompt: 'Original request', reason: 'Reason' },\n document: { identifier: 'Identifier', accessKey: 'Access key', number: 'Number', series: 'Series', environment: 'Environment', open: 'Open document' },\n lifecycle: { complete: 'complete', current: 'current', upcoming: 'upcoming' },\n score: { outOf: (score) => `${new Intl.NumberFormat('en').format(score)} of ${new Intl.NumberFormat('en').format(100)}`, reasoning: 'Reasoning' },\n duration: (s) => new Intl.NumberFormat('en', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Report details',\n },\n liveReport: {\n phase: { pending: 'Pending', running: 'Running', paused: 'Paused', completed: 'Completed', failed: 'Failed', cancelled: 'Cancelled' },\n step: { running: 'running', done: 'done', failed: 'failed', paused: 'paused' },\n steps: 'Steps',\n waiting: 'Waiting for data',\n pausedWaiting: 'Paused, waiting for input',\n failed: 'The run failed',\n approve: 'Approve',\n reject: 'Reject',\n },\n regionMap: {\n map: 'Map of regions',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('en', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regions with most items',\n more: (n) => `+${new Intl.NumberFormat('en').format(n)} more`,\n regionList: 'Regions',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('en').format(count)} ${new Intl.PluralRules('en').select(count) === 'one' ? 'item' : 'items'}`,\n loadError: 'The map shapes could not be loaded. The list of regions still works.',\n loading: 'Loading the map',\n },\n regionKind: {\n state: 'State',\n province: 'Province',\n region: 'Region',\n department: 'Department',\n governorate: 'Governorate',\n prefecture: 'Prefecture',\n county: 'County',\n voivodeship: 'Voivodeship',\n district: 'District',\n nation: 'Nation',\n },\n}\n\nexport const chartsGeoPtBR: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Mostrar como',\n chartView: 'Gráfico',\n tableView: 'Tabela',\n noData: 'Sem dados para o gráfico',\n noDataHint: 'O gráfico aparece quando a análise devolver valores.',\n plotHint: (title) => `${title}. Use as setas para ler cada valor.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'sem valor',\n categoryColumn: 'Categoria',\n legend: 'Legenda',\n },\n report: {\n empty: 'Este relatório está vazio',\n emptyHint: 'O conteúdo aparece aqui quando a execução o produzir.',\n noValue: 'sem valor',\n recommendation: 'Recomendação',\n unknownSection: (kind) => `Seção de tipo desconhecido (${kind})`,\n inputRequestPending: 'Aguardando resposta',\n receipt: {\n description: 'Descrição',\n quantity: 'Quantidade',\n unitPrice: 'Preço unitário',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Imposto',\n grandTotal: 'Total devido',\n },\n approval: { approved: 'Aprovado', rejected: 'Rejeitado', pending: 'Pendente', by: (who) => `por ${who}`, prompt: 'Pedido original', reason: 'Motivo' },\n document: { identifier: 'Identificador', accessKey: 'Chave de acesso', number: 'Número', series: 'Série', environment: 'Ambiente', open: 'Abrir documento' },\n lifecycle: { complete: 'concluída', current: 'atual', upcoming: 'próxima' },\n score: { outOf: (score) => `${new Intl.NumberFormat('pt-BR').format(score)} de ${new Intl.NumberFormat('pt-BR').format(100)}`, reasoning: 'Justificativa' },\n duration: (s) => new Intl.NumberFormat('pt-BR', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Detalhes do relatório',\n },\n liveReport: {\n phase: { pending: 'Pendente', running: 'Em execução', paused: 'Pausada', completed: 'Concluída', failed: 'Falhou', cancelled: 'Cancelada' },\n step: { running: 'em execução', done: 'concluído', failed: 'falhou', paused: 'pausado' },\n steps: 'Passos',\n waiting: 'Aguardando dados',\n pausedWaiting: 'Pausada, aguardando resposta',\n failed: 'A execução falhou',\n approve: 'Aprovar',\n reject: 'Rejeitar',\n },\n regionMap: {\n map: 'Mapa das regiões',\n zoomIn: 'Aproximar',\n zoomOut: 'Afastar',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('pt-BR', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regiões com mais itens',\n more: (n) => `+${new Intl.NumberFormat('pt-BR').format(n)} outras`,\n regionList: 'Regiões',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('pt-BR').format(count)} ${new Intl.PluralRules('pt-BR').select(count) === 'one' ? 'item' : 'itens'}`,\n loadError: 'Não foi possível carregar as formas do mapa. A lista de regiões continua funcionando.',\n loading: 'Carregando o mapa',\n },\n regionKind: {\n state: 'Estado',\n province: 'Província',\n region: 'Região',\n department: 'Departamento',\n governorate: 'Governadoria',\n prefecture: 'Prefeitura',\n county: 'Condado',\n voivodeship: 'Voivodia',\n district: 'Distrito',\n nation: 'Nação',\n },\n}\n\nexport const chartsGeoEs: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Mostrar como',\n chartView: 'Gráfico',\n tableView: 'Tabla',\n noData: 'No hay datos para el gráfico',\n noDataHint: 'El gráfico aparece cuando el análisis devuelve valores.',\n plotHint: (title) => `${title}. Use las flechas para leer cada valor.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'sin valor',\n categoryColumn: 'Categoría',\n legend: 'Leyenda',\n },\n report: {\n empty: 'Este informe está vacío',\n emptyHint: 'El contenido aparece aquí cuando la ejecución lo produce.',\n noValue: 'sin valor',\n recommendation: 'Recomendación',\n unknownSection: (kind) => `Sección de un tipo desconocido (${kind})`,\n inputRequestPending: 'Esperando respuesta',\n receipt: {\n description: 'Descripción',\n quantity: 'Cantidad',\n unitPrice: 'Precio unitario',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Impuesto',\n grandTotal: 'Total a pagar',\n },\n approval: { approved: 'Aprobado', rejected: 'Rechazado', pending: 'Pendiente', by: (who) => `por ${who}`, prompt: 'Solicitud original', reason: 'Motivo' },\n document: { identifier: 'Identificador', accessKey: 'Clave de acceso', number: 'Número', series: 'Serie', environment: 'Entorno', open: 'Abrir documento' },\n lifecycle: { complete: 'concluida', current: 'actual', upcoming: 'siguiente' },\n score: { outOf: (score) => `${new Intl.NumberFormat('es').format(score)} de ${new Intl.NumberFormat('es').format(100)}`, reasoning: 'Justificación' },\n duration: (s) => new Intl.NumberFormat('es', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Detalles del informe',\n },\n liveReport: {\n phase: { pending: 'Pendiente', running: 'En ejecución', paused: 'En pausa', completed: 'Completada', failed: 'Falló', cancelled: 'Cancelada' },\n step: { running: 'en ejecución', done: 'hecho', failed: 'falló', paused: 'en pausa' },\n steps: 'Pasos',\n waiting: 'Esperando datos',\n pausedWaiting: 'En pausa, esperando respuesta',\n failed: 'La ejecución falló',\n approve: 'Aprobar',\n reject: 'Rechazar',\n },\n regionMap: {\n map: 'Mapa de las regiones',\n zoomIn: 'Acercar',\n zoomOut: 'Alejar',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('es', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regiones con más elementos',\n more: (n) => `+${new Intl.NumberFormat('es').format(n)} más`,\n regionList: 'Regiones',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('es').format(count)} ${new Intl.PluralRules('es').select(count) === 'one' ? 'elemento' : 'elementos'}`,\n loadError: 'No se pudieron cargar las formas del mapa. La lista de regiones sigue funcionando.',\n loading: 'Cargando el mapa',\n },\n regionKind: {\n state: 'Estado',\n province: 'Provincia',\n region: 'Región',\n department: 'Departamento',\n governorate: 'Gobernación',\n prefecture: 'Prefectura',\n county: 'Condado',\n voivodeship: 'Voivodato',\n district: 'Distrito',\n nation: 'Nación',\n },\n}\n","// Copy of the \"auth-brand\" group (wave 2/4). One namespace per component,\n// English, Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport type HttpErrorKind = 'not-found' | 'bad-request' | 'server-error'\n\ninterface PageCopy {\n title: string\n message: string\n}\n\nexport interface AuthBrandMessages {\n brand: { productName: string }\n federatedSignIn: { continueWith: (provider: string) => string; groupLabel: string }\n providerMark: { otherProvider: string }\n upgradeGate: {\n eyebrow: string\n title: string\n description: string\n cannotDismiss: string\n noticeTitle: string\n noticeBody: string\n viewPlans: string\n signOut: string\n }\n httpError: Record<HttpErrorKind, PageCopy> & { codeLabel: (code: number) => string; problemType: string }\n routeProgress: { label: string }\n consent: { label: string; message: string; learnMore: string; accept: string; reject: string }\n environment: {\n label: string\n message: string\n appName: string\n port: string\n apiBase: string\n email: string\n role: string\n }\n legalDocument: { contents: string; showContents: string }\n}\n\nexport const authBrandEn: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continue with ${p}`, groupLabel: 'Other ways to sign in' },\n providerMark: { otherProvider: 'Other provider' },\n upgradeGate: {\n eyebrow: 'Subscription',\n title: 'Your organisation has no active plan',\n description: 'Choose a plan to keep working. This screen stays until a plan is active.',\n cannotDismiss: 'This message cannot be closed.',\n noticeTitle: 'Projects are read only',\n noticeBody: 'You can still sign out. Research data is kept and nothing is deleted.',\n viewPlans: 'View plans',\n signOut: 'Sign out',\n },\n httpError: {\n 'not-found': { title: 'Page not found', message: 'The address may be wrong, or the page was moved or removed.' },\n 'bad-request': { title: 'The request could not be read', message: 'Something in the address or the form was not understood. Check it and try again.' },\n 'server-error': { title: 'The server failed', message: 'The server could not complete the request. Try again in a moment.' },\n codeLabel: (code) => `Error ${code}`,\n problemType: 'Problem type',\n },\n routeProgress: { label: 'Loading page' },\n consent: {\n label: 'Cookie choice',\n message: 'We use essential cookies to keep you signed in. With your consent we also measure how the platform is used.',\n learnMore: 'Privacy policy',\n accept: 'Accept measurement',\n reject: 'Only essential cookies',\n },\n environment: {\n label: 'Environment',\n message: 'Not the production platform. Data may be simulated.',\n appName: 'App',\n port: 'Port',\n apiBase: 'API',\n email: 'User',\n role: 'Role',\n },\n legalDocument: { contents: 'Contents', showContents: 'Show contents' },\n}\n\nexport const authBrandPtBR: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continuar com ${p}`, groupLabel: 'Outras formas de entrar' },\n providerMark: { otherProvider: 'Outro provedor' },\n upgradeGate: {\n eyebrow: 'Assinatura',\n title: 'Sua organização não tem plano ativo',\n description: 'Escolha um plano para continuar. Esta tela fica até que um plano esteja ativo.',\n cannotDismiss: 'Esta mensagem não pode ser fechada.',\n noticeTitle: 'Os projetos estão só para leitura',\n noticeBody: 'Você ainda pode sair. Os dados da pesquisa são mantidos e nada é apagado.',\n viewPlans: 'Ver planos',\n signOut: 'Sair',\n },\n httpError: {\n 'not-found': { title: 'Página não encontrada', message: 'O endereço pode estar errado, ou a página foi movida ou removida.' },\n 'bad-request': { title: 'O pedido não pôde ser lido', message: 'Algo no endereço ou no formulário não foi entendido. Confira e tente de novo.' },\n 'server-error': { title: 'O servidor falhou', message: 'O servidor não concluiu o pedido. Tente de novo em instantes.' },\n codeLabel: (code) => `Erro ${code}`,\n problemType: 'Tipo do problema',\n },\n routeProgress: { label: 'Carregando a página' },\n consent: {\n label: 'Escolha de cookies',\n message: 'Usamos cookies essenciais para manter você conectado. Com seu consentimento, também medimos como a plataforma é usada.',\n learnMore: 'Política de privacidade',\n accept: 'Aceitar medição',\n reject: 'Só cookies essenciais',\n },\n environment: {\n label: 'Ambiente',\n message: 'Não é a plataforma de produção. Os dados podem ser simulados.',\n appName: 'App',\n port: 'Porta',\n apiBase: 'API',\n email: 'Usuário',\n role: 'Papel',\n },\n legalDocument: { contents: 'Sumário', showContents: 'Mostrar sumário' },\n}\n\nexport const authBrandEs: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continuar con ${p}`, groupLabel: 'Otras formas de iniciar sesión' },\n providerMark: { otherProvider: 'Otro proveedor' },\n upgradeGate: {\n eyebrow: 'Suscripción',\n title: 'Su organización no tiene un plan activo',\n description: 'Elija un plan para seguir trabajando. Esta pantalla permanece hasta que haya un plan activo.',\n cannotDismiss: 'Este mensaje no se puede cerrar.',\n noticeTitle: 'Los proyectos son de solo lectura',\n noticeBody: 'Todavía puede cerrar la sesión. Los datos de la investigación se conservan y no se borra nada.',\n viewPlans: 'Ver planes',\n signOut: 'Cerrar sesión',\n },\n httpError: {\n 'not-found': { title: 'Página no encontrada', message: 'La dirección puede estar mal, o la página se movió o se eliminó.' },\n 'bad-request': { title: 'No se pudo leer la solicitud', message: 'Algo en la dirección o en el formulario no se entendió. Revíselo e inténtelo de nuevo.' },\n 'server-error': { title: 'El servidor falló', message: 'El servidor no completó la solicitud. Inténtelo de nuevo en un momento.' },\n codeLabel: (code) => `Error ${code}`,\n problemType: 'Tipo de problema',\n },\n routeProgress: { label: 'Cargando la página' },\n consent: {\n label: 'Elección de cookies',\n message: 'Usamos cookies esenciales para mantener su sesión. Con su consentimiento también medimos cómo se usa la plataforma.',\n learnMore: 'Política de privacidad',\n accept: 'Aceptar la medición',\n reject: 'Solo cookies esenciales',\n },\n environment: {\n label: 'Entorno',\n message: 'No es la plataforma de producción. Los datos pueden ser simulados.',\n appName: 'Aplicación',\n port: 'Puerto',\n apiBase: 'API',\n email: 'Usuario',\n role: 'Rol',\n },\n legalDocument: { contents: 'Índice', showContents: 'Mostrar el índice' },\n}\n","// Copy of the \"platform\" group (wave 2/4). One namespace per component, English,\n// Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport interface PlatformMessages {\n formatters: { placeholder: string }\n swipeRow: {\n actionsFor: (row: string) => string\n delete: string\n archive: string\n edit: string\n favourite: string\n }\n pullToRefresh: { refreshing: string }\n glassCheck: { label: string; notApplicable: string }\n}\n\nexport const platformEn: PlatformMessages = {\n formatters: { placeholder: 'not informed' },\n swipeRow: {\n actionsFor: (row) => `Actions for ${row}`,\n delete: 'Delete',\n archive: 'Archive',\n edit: 'Edit',\n favourite: 'Favourite',\n },\n pullToRefresh: { refreshing: 'Refreshing' },\n glassCheck: {\n label: 'Glass check',\n notApplicable: 'Surfaces are opaque in this display mode, so the check does not apply.',\n },\n}\n\nexport const platformPtBR: PlatformMessages = {\n formatters: { placeholder: 'não informado' },\n swipeRow: {\n actionsFor: (row) => `Ações de ${row}`,\n delete: 'Excluir',\n archive: 'Arquivar',\n edit: 'Editar',\n favourite: 'Favoritar',\n },\n pullToRefresh: { refreshing: 'Atualizando' },\n glassCheck: {\n label: 'Teste do vidro',\n notApplicable: 'As superfícies ficam opacas neste modo de exibição, então o teste não se aplica.',\n },\n}\n\nexport const platformEs: PlatformMessages = {\n formatters: { placeholder: 'no informado' },\n swipeRow: {\n actionsFor: (row) => `Acciones de ${row}`,\n delete: 'Eliminar',\n archive: 'Archivar',\n edit: 'Editar',\n favourite: 'Marcar como favorito',\n },\n pullToRefresh: { refreshing: 'Actualizando' },\n glassCheck: {\n label: 'Prueba del vidrio',\n notApplicable: 'Las superficies son opacas en este modo de visualización, así que la prueba no se aplica.',\n },\n}\n","// Copy of the \"showcase\" group (wave 2/4). One namespace per component, English\n// and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ShowcaseMessages {}\n\nexport const showcaseEn: ShowcaseMessages = {}\n\nexport const showcasePtBR: ShowcaseMessages = {}\n\n/** Spanish (placeholder until translated: falls back to English). */\nexport const showcaseEs: ShowcaseMessages = showcaseEn\n","// Copy of the \"shell\" group (wave 4 research shell). One namespace per\n// component, English and Brazilian Portuguese. Merged into `Messages` by\n// ../messages.ts.\n\nexport type StageStatus = 'done' | 'current' | 'upcoming' | 'attention'\n\nexport interface ShellMessages {\n actionBar: {\n /** Landmark name of the bar. */\n label: string\n more: string\n /** Accessible name of an item's menu chevron. */\n openMenu: (item: string) => string\n /** Count in words, appended to the item name. */\n count: (n: number) => string\n loading: string\n /** Skip-link text targeting the bar. */\n skipTo: string\n /** Entry of the tab bar's \"more\" menu that opens the rail drawer. */\n allSections: string\n confirm: string\n cancel: string\n /** Capped badge; receives the formatted cap (for example \"99\"). */\n capped: (cap: string) => string\n }\n rail: {\n label: string\n openNavigation: string\n closeNavigation: string\n count: (n: number) => string\n capped: (cap: string) => string\n }\n pageTrail: { label: string }\n evidencePanel: { close: string; resize: string }\n stageStrip: { status: Record<StageStatus, string> }\n attentionList: {\n empty: string\n seeAll: string\n actionName: (action: string, title: string) => string\n /** Visually hidden suffix that makes an action's name unique (\": TAMM\"). */\n actionTarget: (title: string) => string\n }\n activityFeed: { empty: string }\n phaseBar: { part: (label: string, value: string) => string; empty: string; named: (label: string, parts: string) => string }\n}\n\nexport const shellEn: ShellMessages = {\n actionBar: {\n label: 'Actions',\n more: 'More',\n openMenu: (item) => `Open the menu of ${item}`,\n count: (n) => (new Intl.PluralRules('en').select(n) === 'one' ? `${n} pending` : `${n} pending`),\n loading: 'Loading actions',\n skipTo: 'Skip to the action bar',\n allSections: 'All sections',\n confirm: 'Confirm',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancel',\n },\n rail: {\n label: 'Main',\n openNavigation: 'Open navigation',\n closeNavigation: 'Close navigation',\n count: (n) => (new Intl.PluralRules('en').select(n) === 'one' ? `${n} pending` : `${n} pending`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Breadcrumb' },\n evidencePanel: { close: 'Close panel', resize: 'Resize panel' },\n stageStrip: { status: { done: 'done', current: 'current', upcoming: 'upcoming', attention: 'needs attention' } },\n attentionList: {\n empty: 'Nothing needs you right now.',\n seeAll: 'See all',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'No activity yet.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'No data yet', named: (label, parts) => `${label}: ${parts}` },\n}\n\nexport const shellPtBR: ShellMessages = {\n actionBar: {\n label: 'Ações',\n more: 'Mais',\n openMenu: (item) => `Abrir o menu de ${item}`,\n count: (n) => (new Intl.PluralRules('pt-BR').select(n) === 'one' ? `${n} pendente` : `${n} pendentes`),\n loading: 'Carregando as ações',\n skipTo: 'Ir para a barra de ações',\n allSections: 'Todas as seções',\n confirm: 'Confirmar',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancelar',\n },\n rail: {\n label: 'Principal',\n openNavigation: 'Abrir navegação',\n closeNavigation: 'Fechar navegação',\n count: (n) => (new Intl.PluralRules('pt-BR').select(n) === 'one' ? `${n} pendente` : `${n} pendentes`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Trilha de navegação' },\n evidencePanel: { close: 'Fechar painel', resize: 'Redimensionar painel' },\n stageStrip: { status: { done: 'concluída', current: 'em curso', upcoming: 'a seguir', attention: 'pede atenção' } },\n attentionList: {\n empty: 'Nada precisa de você agora.',\n seeAll: 'Ver tudo',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'Ainda não há atividade.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'Ainda sem dados', named: (label, parts) => `${label}: ${parts}` },\n}\n\nexport const shellEs: ShellMessages = {\n actionBar: {\n label: 'Acciones',\n more: 'Más',\n openMenu: (item) => `Abrir el menú de ${item}`,\n count: (n) => (new Intl.PluralRules('es').select(n) === 'one' ? `${n} pendiente` : `${n} pendientes`),\n loading: 'Cargando las acciones',\n skipTo: 'Ir a la barra de acciones',\n allSections: 'Todas las secciones',\n confirm: 'Confirmar',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancelar',\n },\n rail: {\n label: 'Principal',\n openNavigation: 'Abrir navegación',\n closeNavigation: 'Cerrar navegación',\n count: (n) => (new Intl.PluralRules('es').select(n) === 'one' ? `${n} pendiente` : `${n} pendientes`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Ruta de navegación' },\n evidencePanel: { close: 'Cerrar panel', resize: 'Redimensionar panel' },\n stageStrip: { status: { done: 'concluida', current: 'en curso', upcoming: 'siguiente', attention: 'requiere atención' } },\n attentionList: {\n empty: 'Nada requiere su atención ahora.',\n seeAll: 'Ver todo',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'Todavía no hay actividad.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'Todavía sin datos', named: (label, parts) => `${label}: ${parts}` },\n}\n","// Spanish copy of the wave-1 core catalogue (the groups ship their own `xEs`).\nimport type { CoreMessages } from '../messages'\nimport { speaker } from './plural'\n\nconst es = speaker('es')\n\nexport const coreEs: CoreMessages = {\n close: 'Cerrar',\n dismiss: 'Descartar',\n loading: 'Cargando',\n required: 'obligatorio',\n moreActions: 'Más acciones',\n inProgress: 'En curso',\n breadcrumbs: { label: 'Ruta de navegación', backTo: (p) => `Volver a ${p}`, overflow: 'Mostrar niveles ocultos' },\n link: { opensInNewTab: '(se abre en una pestaña nueva)' },\n textField: {\n clear: 'Borrar',\n showPassword: 'Mostrar contraseña',\n hidePassword: 'Ocultar contraseña',\n counter: (n, max) => `${es.n(n)} de ${es.n(max)} ${es.word(max, { one: 'carácter', other: 'caracteres' })}`,\n overLimit: (n, max) =>\n `${es.n(n)} de ${es.n(max)} ${es.word(max, { one: 'carácter', other: 'caracteres' })}, ${es.n(n - max)} por encima del límite`,\n },\n select: { placeholder: 'Seleccione…', done: 'Listo' },\n notice: { toneWord: { danger: 'Error:', warning: 'Atención:', info: 'Información:', success: 'Éxito:' } },\n empty: {\n 'no-data': { title: 'Todavía no hay nada aquí', description: 'Los elementos aparecen aquí cuando se agregan.' },\n 'no-results': { title: 'Ningún registro con estos filtros', description: 'Cambie los filtros o bórrelos para ver todos los registros.' },\n offline: { title: 'Está sin conexión', description: 'Compruebe la conexión e inténtelo de nuevo.' },\n clearFilters: 'Borrar filtros',\n retry: 'Intentar de nuevo',\n },\n error: {\n generic: { title: 'Algo salió mal', message: 'No se pudo cargar el contenido.' },\n network: { title: 'Problema de conexión', message: 'No se pudo contactar con el servidor. Compruebe la conexión e inténtelo de nuevo.' },\n server: { title: 'El servidor falló', message: 'El servidor no completó la solicitud. Inténtelo de nuevo en un momento.' },\n permission: { title: 'Sin acceso', message: 'Su rol no permite ver este contenido.' },\n 'not-found': { title: 'No encontrado', message: 'Este elemento no existe o fue eliminado.' },\n conflict: { title: 'Modificado por otra persona', message: 'Alguien modificó este elemento antes que usted. Recárguelo para ver la versión actual.' },\n retry: 'Intentar de nuevo',\n details: 'Detalles técnicos',\n statusCode: (code) => `Código ${code}`,\n },\n pagination: {\n navigation: 'Paginación',\n previous: 'Anterior',\n next: 'Siguiente',\n pageSize: 'Elementos por página',\n range: (from, to, total) => `${es.n(from)} a ${es.n(to)} de ${es.n(total)}`,\n page: (n) => `Página ${es.n(n)}`,\n pageOf: (n, count) => `Página ${es.n(n)} de ${es.n(count)}`,\n },\n skipLink: 'Ir al contenido',\n status: {\n pending: 'Pendiente',\n approved: 'Aprobado',\n rejected: 'Rechazado',\n active: 'Activo',\n inactive: 'Inactivo',\n processing: 'Procesando',\n error: 'Error',\n success: 'Éxito',\n },\n tag: { remove: (text) => `Quitar ${text}` },\n toast: { region: 'Notificaciones', dismiss: 'Descartar notificación' },\n avatar: { open: (name) => `Abrir el perfil de ${name}` },\n frame: {\n navigation: 'Principal',\n openNavigation: 'Abrir navegación',\n closeNavigation: 'Cerrar navegación',\n collapseNavigation: 'Contraer navegación',\n expandNavigation: 'Expandir navegación',\n loadingPage: 'Cargando la página',\n closePanel: 'Cerrar panel',\n },\n table: {\n loading: 'Cargando la lista',\n selectAll: 'Seleccionar todas las filas',\n selectRow: (label) => `Seleccionar ${label}`,\n empty: 'No hay filas para mostrar',\n sortAscending: 'en orden ascendente',\n sortDescending: 'en orden descendente',\n },\n proof: {\n proved: 'probada',\n pending: 'pendiente',\n refuted: 'refutada',\n not_disclosed: 'no informada',\n none: 'sin prueba',\n provedBy: (who) => `por ${who}`,\n rule: (rule) => `regla ${rule}`,\n },\n actor: { person: 'persona', agent: 'agente', system: 'sistema' },\n}\n","// Default copy of the library. Components never hard-code strings: they read\n// this catalogue through `useMessages()`, and hosts override any entry through\n// `<TympanProvider messages={…}>` (for example from their own i18n adapter).\n\nimport { formsAEn, formsAEs, formsAPtBR, type FormsAMessages } from './messages/forms-a'\nimport { formsBEn, formsBEs, formsBPtBR, type FormsBMessages } from './messages/forms-b'\nimport { overlaysNavEn, overlaysNavEs, overlaysNavPtBR, type OverlaysNavMessages } from './messages/overlays-nav'\nimport { dataAEn, dataAEs, dataAPtBR, type DataAMessages } from './messages/data-a'\nimport { dataBEn, dataBEs, dataBPtBR, type DataBMessages } from './messages/data-b'\nimport { chartsGeoEn, chartsGeoEs, chartsGeoPtBR, type ChartsGeoMessages } from './messages/charts-geo'\nimport { authBrandEn, authBrandEs, authBrandPtBR, type AuthBrandMessages } from './messages/auth-brand'\nimport { platformEn, platformEs, platformPtBR, type PlatformMessages } from './messages/platform'\nimport { showcaseEn, showcaseEs, showcasePtBR, type ShowcaseMessages } from './messages/showcase'\nimport { shellEn, shellEs, shellPtBR, type ShellMessages } from './messages/shell'\nimport { coreEs } from './messages/core-es'\nimport { speaker } from './messages/plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\n\nexport type ProofStateKey = 'proved' | 'pending' | 'refuted' | 'not_disclosed' | 'none'\nexport type ErrorKind = 'generic' | 'network' | 'server' | 'permission' | 'not-found' | 'conflict'\nexport type EmptyReason = 'no-data' | 'no-results' | 'offline'\n\n/** Group catalogues of waves 2 and 4 (see ./messages/). */\nexport type GroupMessages = FormsAMessages & FormsBMessages & OverlaysNavMessages & DataAMessages & DataBMessages & ChartsGeoMessages & AuthBrandMessages & PlatformMessages & ShowcaseMessages & ShellMessages\n\n/** Wave 1 copy plus one interface per wave 2/4 group (see ./messages/). */\nexport interface Messages\n extends FormsAMessages, FormsBMessages, OverlaysNavMessages, DataAMessages, DataBMessages, ChartsGeoMessages, AuthBrandMessages, PlatformMessages, ShowcaseMessages, ShellMessages {\n close: string\n dismiss: string\n loading: string\n required: string\n moreActions: string\n inProgress: string\n breadcrumbs: { label: string; backTo: (parent: string) => string; overflow: string }\n link: { opensInNewTab: string }\n textField: {\n clear: string\n showPassword: string\n hidePassword: string\n counter: (count: number, max: number) => string\n overLimit: (count: number, max: number) => string\n }\n select: { placeholder: string; done: string }\n notice: { toneWord: Record<'danger' | 'warning' | 'info' | 'success', string> }\n empty: Record<EmptyReason, { title: string; description: string }> & { clearFilters: string; retry: string }\n error: Record<ErrorKind, { title: string; message: string }> & {\n retry: string\n details: string\n statusCode: (code: number) => string\n }\n pagination: {\n navigation: string\n previous: string\n next: string\n pageSize: string\n range: (from: number, to: number, total: number) => string\n page: (n: number) => string\n pageOf: (n: number, count: number) => string\n }\n skipLink: string\n status: Record<'pending' | 'approved' | 'rejected' | 'active' | 'inactive' | 'processing' | 'error' | 'success', string>\n tag: { remove: (text: string) => string }\n toast: { region: string; dismiss: string }\n avatar: { open: (name: string) => string }\n frame: {\n navigation: string\n openNavigation: string\n closeNavigation: string\n collapseNavigation: string\n expandNavigation: string\n loadingPage: string\n closePanel: string\n }\n table: {\n loading: string\n selectAll: string\n selectRow: (label: string) => string\n empty: string\n sortAscending: string\n sortDescending: string\n }\n proof: Record<ProofStateKey, string> & {\n provedBy: (who: string) => string\n rule: (rule: string) => string\n }\n actor: { person: string; agent: string; system: string }\n}\n\nexport const defaultMessages: Messages = {\n ...formsAEn,\n ...formsBEn,\n ...overlaysNavEn,\n ...dataAEn,\n ...dataBEn,\n ...chartsGeoEn,\n ...authBrandEn,\n ...platformEn,\n ...showcaseEn,\n ...shellEn,\n close: 'Close',\n dismiss: 'Dismiss',\n loading: 'Loading',\n required: 'required',\n moreActions: 'More actions',\n inProgress: 'In progress',\n breadcrumbs: { label: 'Breadcrumb', backTo: (p) => `Back to ${p}`, overflow: 'Show hidden levels' },\n link: { opensInNewTab: '(opens in a new tab)' },\n textField: {\n clear: 'Clear',\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n counter: (n, max) => `${en.n(n)} of ${en.n(max)} ${en.word(max, { one: 'character', other: 'characters' })}`,\n overLimit: (n, max) =>\n `${en.n(n)} of ${en.n(max)} ${en.word(max, { one: 'character', other: 'characters' })}, ${en.n(n - max)} over the limit`,\n },\n select: { placeholder: 'Select…', done: 'Done' },\n notice: { toneWord: { danger: 'Error:', warning: 'Warning:', info: 'Information:', success: 'Success:' } },\n empty: {\n 'no-data': { title: 'Nothing here yet', description: 'Items appear here once they are added.' },\n 'no-results': { title: 'No records match these filters', description: 'Change the filters or clear them to see every record.' },\n offline: { title: 'You are offline', description: 'Check the connection and try again.' },\n clearFilters: 'Clear filters',\n retry: 'Try again',\n },\n error: {\n generic: { title: 'Something went wrong', message: 'The content could not be loaded.' },\n network: { title: 'Connection problem', message: 'The server could not be reached. Check the connection and try again.' },\n server: { title: 'The server failed', message: 'The server could not complete the request. Try again in a moment.' },\n permission: { title: 'No access', message: 'Your role does not allow you to see this content.' },\n 'not-found': { title: 'Not found', message: 'This item does not exist or was removed.' },\n conflict: { title: 'Changed by someone else', message: 'Someone changed this item before you. Reload it to see the latest version.' },\n retry: 'Try again',\n details: 'Technical details',\n statusCode: (code) => `Status ${code}`,\n },\n pagination: {\n navigation: 'Pagination',\n previous: 'Previous',\n next: 'Next',\n pageSize: 'Items per page',\n range: (from, to, total) => `${en.n(from)} to ${en.n(to)} of ${en.n(total)}`,\n page: (n) => `Page ${en.n(n)}`,\n pageOf: (n, count) => `Page ${en.n(n)} of ${en.n(count)}`,\n },\n skipLink: 'Skip to main content',\n status: {\n pending: 'Pending',\n approved: 'Approved',\n rejected: 'Rejected',\n active: 'Active',\n inactive: 'Inactive',\n processing: 'Processing',\n error: 'Error',\n success: 'Success',\n },\n tag: { remove: (text) => `Remove ${text}` },\n toast: { region: 'Notifications', dismiss: 'Dismiss notification' },\n avatar: { open: (name) => `Open profile of ${name}` },\n frame: {\n navigation: 'Main',\n openNavigation: 'Open navigation',\n closeNavigation: 'Close navigation',\n collapseNavigation: 'Collapse navigation',\n expandNavigation: 'Expand navigation',\n loadingPage: 'Loading the page',\n closePanel: 'Close panel',\n },\n table: {\n loading: 'Loading the list',\n selectAll: 'Select all rows',\n selectRow: (label) => `Select ${label}`,\n empty: 'No rows to show',\n sortAscending: 'sorted ascending',\n sortDescending: 'sorted descending',\n },\n proof: {\n proved: 'proved',\n pending: 'pending',\n refuted: 'refuted',\n not_disclosed: 'not disclosed',\n none: 'no proof',\n provedBy: (who) => `by ${who}`,\n rule: (rule) => `rule ${rule}`,\n },\n actor: { person: 'person', agent: 'agent', system: 'system' },\n}\n\n/** Portuguese (Brazil) catalogue, the platform's first language. */\nexport const messagesPtBR: Messages = {\n ...formsAPtBR,\n ...formsBPtBR,\n ...overlaysNavPtBR,\n ...dataAPtBR,\n ...dataBPtBR,\n ...chartsGeoPtBR,\n ...authBrandPtBR,\n ...platformPtBR,\n ...showcasePtBR,\n ...shellPtBR,\n close: 'Fechar',\n dismiss: 'Dispensar',\n loading: 'Carregando',\n required: 'obrigatório',\n moreActions: 'Mais ações',\n inProgress: 'Em andamento',\n breadcrumbs: { label: 'Trilha de navegação', backTo: (p) => `Voltar para ${p}`, overflow: 'Mostrar níveis ocultos' },\n link: { opensInNewTab: '(abre em nova aba)' },\n textField: {\n clear: 'Limpar',\n showPassword: 'Mostrar senha',\n hidePassword: 'Ocultar senha',\n counter: (n, max) => `${pt.n(n)} de ${pt.n(max)} ${pt.word(max, { one: 'caractere', other: 'caracteres' })}`,\n overLimit: (n, max) =>\n `${pt.n(n)} de ${pt.n(max)} ${pt.word(max, { one: 'caractere', other: 'caracteres' })}, ${pt.n(n - max)} acima do limite`,\n },\n select: { placeholder: 'Selecione…', done: 'Concluir' },\n notice: { toneWord: { danger: 'Erro:', warning: 'Atenção:', info: 'Informação:', success: 'Sucesso:' } },\n empty: {\n 'no-data': { title: 'Ainda não há nada aqui', description: 'Os itens aparecem aqui quando forem adicionados.' },\n 'no-results': { title: 'Nenhum registro com esses filtros', description: 'Mude os filtros ou limpe-os para ver todos os registros.' },\n offline: { title: 'Você está sem conexão', description: 'Confira a conexão e tente de novo.' },\n clearFilters: 'Limpar filtros',\n retry: 'Tentar de novo',\n },\n error: {\n generic: { title: 'Algo deu errado', message: 'O conteúdo não pôde ser carregado.' },\n network: { title: 'Problema de conexão', message: 'Não foi possível falar com o servidor. Confira a conexão e tente de novo.' },\n server: { title: 'O servidor falhou', message: 'O servidor não concluiu o pedido. Tente de novo em instantes.' },\n permission: { title: 'Sem acesso', message: 'Seu papel não permite ver este conteúdo.' },\n 'not-found': { title: 'Não encontrado', message: 'Este item não existe ou foi removido.' },\n conflict: { title: 'Alterado por outra pessoa', message: 'Alguém alterou este item antes de você. Recarregue para ver a versão atual.' },\n retry: 'Tentar de novo',\n details: 'Detalhes técnicos',\n statusCode: (code) => `Código ${code}`,\n },\n pagination: {\n navigation: 'Paginação',\n previous: 'Anterior',\n next: 'Próxima',\n pageSize: 'Itens por página',\n range: (from, to, total) => `${pt.n(from)} a ${pt.n(to)} de ${pt.n(total)}`,\n page: (n) => `Página ${pt.n(n)}`,\n pageOf: (n, count) => `Página ${pt.n(n)} de ${pt.n(count)}`,\n },\n skipLink: 'Ir para o conteúdo',\n status: {\n pending: 'Pendente',\n approved: 'Aprovado',\n rejected: 'Rejeitado',\n active: 'Ativo',\n inactive: 'Inativo',\n processing: 'Processando',\n error: 'Erro',\n success: 'Sucesso',\n },\n tag: { remove: (text) => `Remover ${text}` },\n toast: { region: 'Notificações', dismiss: 'Dispensar notificação' },\n avatar: { open: (name) => `Abrir perfil de ${name}` },\n frame: {\n navigation: 'Principal',\n openNavigation: 'Abrir navegação',\n closeNavigation: 'Fechar navegação',\n collapseNavigation: 'Recolher navegação',\n expandNavigation: 'Expandir navegação',\n loadingPage: 'Carregando a página',\n closePanel: 'Fechar painel',\n },\n table: {\n loading: 'Carregando a lista',\n selectAll: 'Selecionar todas as linhas',\n selectRow: (label) => `Selecionar ${label}`,\n empty: 'Nenhuma linha para mostrar',\n sortAscending: 'em ordem crescente',\n sortDescending: 'em ordem decrescente',\n },\n proof: {\n proved: 'provada',\n pending: 'pendente',\n refuted: 'refutada',\n not_disclosed: 'não informada',\n none: 'sem prova',\n provedBy: (who) => `por ${who}`,\n rule: (rule) => `regra ${rule}`,\n },\n actor: { person: 'pessoa', agent: 'agente', system: 'sistema' },\n}\n\nexport const messagesEs: Messages = {\n ...formsAEs,\n ...formsBEs,\n ...overlaysNavEs,\n ...dataAEs,\n ...dataBEs,\n ...chartsGeoEs,\n ...authBrandEs,\n ...platformEs,\n ...showcaseEs,\n ...shellEs,\n ...coreEs,\n}\n\n/** The wave-1 part of the catalogue (the keys not owned by a group). */\nexport type CoreMessages = Omit<Messages, keyof GroupMessages>\n\n/** Catalogues shipped as defaults. Other locales fall back to English copy with locale-aware formatting. */\nexport const shippedCatalogues = { en: defaultMessages, 'pt-BR': messagesPtBR, es: messagesEs } as const\n\n/** Default catalogue for a BCP 47 locale: Portuguese and Spanish by language subtag, English otherwise. */\nexport function catalogueForLocale(locale: string | undefined): Messages {\n const language = (locale ?? 'en').toLowerCase().split(/[-_]/)[0]\n return language === 'pt' ? messagesPtBR : language === 'es' ? messagesEs : defaultMessages\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends (...args: never[]) => unknown ? T[K] : T[K] extends object ? DeepPartial<T[K]> : T[K] }\nexport type MessageOverrides = DeepPartial<Messages>\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return !!v && typeof v === 'object' && !Array.isArray(v)\n}\n\nexport function mergeMessages(base: Messages, overrides?: MessageOverrides): Messages {\n if (!overrides) return base\n const walk = (a: Record<string, unknown>, b: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = { ...a }\n for (const [k, v] of Object.entries(b)) {\n if (v === undefined) continue\n out[k] = isPlainObject(v) && isPlainObject(a[k]) ? walk(a[k] as Record<string, unknown>, v) : v\n }\n return out\n }\n return walk(base as unknown as Record<string, unknown>, overrides as Record<string, unknown>) as unknown as Messages\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { I18nProvider, RouterProvider } from 'react-aria-components'\nimport { compileIcuMessages, pseudoLocalize, type IcuCatalogue } from './icuCatalogue'\nimport { catalogueForLocale, defaultMessages, mergeMessages, type MessageOverrides, type Messages } from './messages'\n\nconst MessagesContext = createContext<Messages>(defaultMessages)\n\nexport interface TympanProviderProps {\n /** Copy overrides, typically produced by the host's i18n adapter. */\n messages?: MessageOverrides\n /** Base catalogue to merge overrides into (defaults to the shipped catalogue of `locale`: pt, es or en). */\n baseMessages?: Messages\n /** Overrides as ICU MessageFormat strings (function keys take {0}, {1}, … positionally). */\n icuMessages?: IcuCatalogue\n /** Pseudo-localization (accented, expanded, bracketed copy) to catch clipping and hard-coded strings. */\n pseudo?: boolean\n /** Router adapter: client-side navigation for every library link. */\n navigate?: (href: string, options?: RouterNavigateOptions) => void\n /** Router adapter: converts a router href into a native href. */\n useHref?: (href: string) => string\n /** BCP 47 locale for number/date formatting and reading direction. */\n locale?: string\n children: ReactNode\n}\n\n/** Options forwarded to the router adapter by links (for example `replace`). */\nexport interface RouterNavigateOptions {\n replace?: boolean\n}\n\ndeclare module 'react-aria-components' {\n interface RouterConfig {\n routerOptions: RouterNavigateOptions\n }\n}\n\n/**\n * Root provider: supplies copy (I18n adapter) and the router adapter used by\n * every link-like component. Optional: components fall back to English copy\n * and native navigation without it.\n */\nexport function TympanProvider({ messages, baseMessages, icuMessages, pseudo = false, navigate, useHref, locale, children }: TympanProviderProps) {\n const merged = useMemo(() => {\n const base = baseMessages ?? (locale ? catalogueForLocale(locale) : defaultMessages)\n let out = mergeMessages(base, messages)\n if (icuMessages) out = mergeMessages(out, compileIcuMessages(icuMessages, out, locale ?? 'en'))\n return pseudo ? pseudoLocalize(out) : out\n }, [baseMessages, messages, icuMessages, pseudo, locale])\n let tree = <MessagesContext.Provider value={merged}>{children}</MessagesContext.Provider>\n if (navigate) {\n tree = (\n <RouterProvider navigate={navigate} {...(useHref ? { useHref } : {})}>\n {tree}\n </RouterProvider>\n )\n }\n if (locale) tree = <I18nProvider locale={locale}>{tree}</I18nProvider>\n return tree\n}\n\n/** Current copy catalogue. */\nexport function useMessages(): Messages {\n return useContext(MessagesContext)\n}\n","const isDev = (() => {\n try {\n return (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.NODE_ENV !== 'production'\n } catch {\n return true\n }\n})()\n\n/** Logs a development-only warning with the library prefix. */\nexport function devWarning(condition: boolean, message: string): void {\n if (isDev && condition) console.warn(`[@datatechsolutions/tympan] ${message}`)\n}\n","import { Bot, User } from 'lucide-react'\nimport { useEffect, useState, type ReactNode } from 'react'\nimport { Button as AriaButton, Link as AriaLink, type PressEvent } from 'react-aria-components'\nimport { cx } from '../../internal/cx'\nimport { devWarning } from '../../internal/dev'\nimport { useMessages } from '../../internal/provider'\n\n/** The first `count` user-perceived characters (grapheme clusters), so marks and emoji stay whole. */\nfunction leadingGraphemes(text: string, count: number): string {\n const Segmenter = (Intl as { Segmenter?: typeof Intl.Segmenter }).Segmenter\n if (!Segmenter) return Array.from(text).slice(0, count).join('')\n let out = ''\n let taken = 0\n for (const { segment } of new Segmenter(undefined, { granularity: 'grapheme' }).segment(text)) {\n if (taken === count) break\n out += segment\n taken += 1\n }\n return out\n}\n\nexport type AvatarSize = 'xsmall' | 'small' | 'regular' | 'large'\n\nexport interface AvatarProps {\n /** Image URL; on load error the fallback shows. */\n src?: string | null\n /** One or two characters shown without an image (derived by the host from a name). */\n fallbackText?: string\n /** Accessible name; required unless `decorative`. */\n name?: string\n /** Hides the avatar from assistive tech when the name is shown next to it. */\n decorative?: boolean\n /** Person: circle with initials. Agent: rounded square, bot icon, dashed border, never initials (§2.11). */\n actorKind?: 'person' | 'agent'\n size?: AvatarSize\n /** Fallback background: accent-soft or neutral. */\n tint?: 'accent' | 'neutral'\n /**\n * Artwork drawn when there is no image (or the image fails): a generated\n * avatar (`@datatechsolutions/tympan/avatars`) or the host's own. It replaces\n * the initials and the agent bot icon and is always decorative; the frame\n * carries the name. Without it (or when it is null) the fallback shows.\n */\n artwork?: ReactNode\n /** Makes the avatar a button. */\n onPress?: (e: PressEvent) => void\n /** Makes the avatar a link (router adapter). */\n href?: string\n className?: string\n}\n\n/** Person or agent picture with fallback (spec: wave-1/avatar.md; design direction §2.11). */\nexport function Avatar({ src, fallbackText, name, decorative = false, actorKind = 'person', size = 'regular', tint = 'accent', artwork, onPress, href, className }: AvatarProps) {\n const messages = useMessages()\n const [failed, setFailed] = useState(false)\n useEffect(() => setFailed(false), [src])\n const pressable = !!(onPress || href)\n devWarning(!decorative && !name, 'Avatar: `name` is required unless `decorative`.')\n\n const isAgent = actorKind === 'agent'\n const showImage = !!src && !failed\n const showArtwork = !showImage && artwork != null\n // Inside a pressable wrapper the visual is decorative: the control carries the name.\n const hidden = decorative || pressable\n\n let inner\n if (showImage) {\n inner = <img className=\"ty-avatar__image\" src={src ?? undefined} alt={hidden ? '' : (name ?? '')} onError={() => setFailed(true)} />\n } else if (showArtwork) {\n inner = artwork\n } else if (isAgent) {\n inner = <Bot className=\"ty-avatar__icon\" aria-hidden=\"true\" focusable=\"false\" />\n } else if (fallbackText) {\n inner = (\n <span className=\"ty-avatar__initials\" aria-hidden=\"true\">\n {leadingGraphemes(fallbackText, 2)}\n </span>\n )\n } else {\n inner = <User className=\"ty-avatar__icon\" aria-hidden=\"true\" focusable=\"false\" />\n }\n\n const visual = (\n <span\n className={cx('ty-avatar', !pressable && className)}\n data-kind={actorKind}\n data-size={size}\n data-tint={tint}\n data-image={showImage || undefined}\n data-artwork={showArtwork || undefined}\n aria-hidden={hidden ? true : undefined}\n role={!hidden && !showImage ? 'img' : undefined}\n aria-label={!hidden && !showImage ? name : undefined}\n >\n {inner}\n </span>\n )\n\n if (!pressable) return visual\n\n const label = name ? messages.avatar.open(name) : undefined\n if (href) {\n return (\n <AriaLink href={href} onPress={onPress} aria-label={label} className={cx('ty-avatar-control', className)} data-size={size}>\n {visual}\n </AriaLink>\n )\n }\n return (\n <AriaButton onPress={onPress} aria-label={label} className={cx('ty-avatar-control', className)} data-size={size}>\n {visual}\n </AriaButton>\n )\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Avatar-CU7B1WsX.js","names":["en","pt","es","en","pt","es","en","pt","es","en","pt","es","AriaLink","AriaButton"],"sources":["../src/utilities/i18n-adapter/icu.ts","../src/internal/icuCatalogue.ts","../src/internal/messages/plural.ts","../src/internal/messages/forms-a.ts","../src/internal/messages/forms-b.ts","../src/internal/messages/overlays-nav.ts","../src/internal/messages/data-a.ts","../src/internal/messages/data-b.ts","../src/internal/messages/charts-geo.ts","../src/internal/messages/auth-brand.ts","../src/internal/messages/platform.ts","../src/internal/messages/showcase.ts","../src/internal/messages/shell.ts","../src/internal/messages/core-es.ts","../src/internal/messages.ts","../src/internal/provider.tsx","../src/internal/dev.ts","../src/components/avatar/Avatar.tsx"],"sourcesContent":["// A small ICU MessageFormat subset, written for this library: plain\n// arguments, number and date arguments, plural (with `=n` exact cases and\n// `#`) and select. Anything it cannot parse makes `formatMessage` fall back\n// to simple `{name}` substitution; it never throws.\n\nexport type MessageParams = Record<string, unknown>\n\ntype Part =\n | { k: 'text'; v: string }\n | { k: 'hash' }\n | { k: 'arg'; name: string; fmt?: 'number' | 'date' | 'time'; style?: string }\n | { k: 'choice'; name: string; mode: 'plural' | 'select' | 'selectordinal'; cases: Map<string, Part[]> }\n\nclass Cursor {\n i = 0\n constructor(readonly src: string) {}\n get done() {\n return this.i >= this.src.length\n }\n peek() {\n return this.src[this.i]\n }\n skipSpace() {\n while (!this.done && /\\s/.test(this.src[this.i]!)) this.i++\n }\n word(): string {\n this.skipSpace()\n const start = this.i\n while (!this.done && !/[\\s,{}]/.test(this.src[this.i]!)) this.i++\n if (start === this.i) throw new SyntaxError(`identifier expected at ${start}`)\n return this.src.slice(start, this.i)\n }\n expect(ch: string) {\n this.skipSpace()\n if (this.src[this.i] !== ch) throw new SyntaxError(`\"${ch}\" expected at ${this.i}`)\n this.i++\n }\n}\n\nfunction parseSequence(c: Cursor, inChoice: boolean): Part[] {\n const out: Part[] = []\n let text = ''\n const flush = () => {\n if (text) out.push({ k: 'text', v: text })\n text = ''\n }\n while (!c.done) {\n const ch = c.peek()!\n if (ch === '}') {\n if (!inChoice) throw new SyntaxError(`unbalanced \"}\" at ${c.i}`)\n break\n }\n if (ch === '{') {\n flush()\n out.push(parseArgument(c))\n continue\n }\n if (ch === '#' && inChoice) {\n flush()\n out.push({ k: 'hash' })\n c.i++\n continue\n }\n if (ch === \"'\") {\n // '' is a literal quote; '{…}' quotes syntax characters.\n const next = c.src[c.i + 1]\n if (next === \"'\") {\n text += \"'\"\n c.i += 2\n continue\n }\n if (next === '{' || next === '}' || next === '#') {\n const end = c.src.indexOf(\"'\", c.i + 1)\n if (end > 0) {\n text += c.src.slice(c.i + 1, end)\n c.i = end + 1\n continue\n }\n }\n }\n text += ch\n c.i++\n }\n flush()\n return out\n}\n\nfunction parseArgument(c: Cursor): Part {\n c.expect('{')\n const name = c.word()\n c.skipSpace()\n if (c.peek() === '}') {\n c.i++\n return { k: 'arg', name }\n }\n c.expect(',')\n const kind = c.word()\n c.skipSpace()\n if (kind === 'number' || kind === 'date' || kind === 'time') {\n let style: string | undefined\n if (c.peek() === ',') {\n c.i++\n style = c.word()\n }\n c.expect('}')\n return { k: 'arg', name, fmt: kind, style }\n }\n if (kind !== 'plural' && kind !== 'select' && kind !== 'selectordinal') throw new SyntaxError(`unknown argument type \"${kind}\"`)\n c.expect(',')\n const cases = new Map<string, Part[]>()\n for (;;) {\n c.skipSpace()\n if (c.peek() === '}') {\n c.i++\n break\n }\n if (c.done) throw new SyntaxError('unterminated choice')\n const key = c.word()\n if (key.startsWith('offset:')) continue\n c.expect('{')\n cases.set(key, parseSequence(c, true))\n c.expect('}')\n }\n if (!cases.has('other')) throw new SyntaxError(`\"${name}\" needs an \"other\" case`)\n return { k: 'choice', name, mode: kind, cases }\n}\n\nconst cache = new Map<string, Part[]>()\n\nexport function parseMessage(message: string): Part[] {\n let ast = cache.get(message)\n if (!ast) {\n const c = new Cursor(message)\n ast = parseSequence(c, false)\n if (!c.done) throw new SyntaxError(`unexpected \"${c.peek()}\" at ${c.i}`)\n cache.set(message, ast)\n }\n return ast\n}\n\nfunction asDate(value: unknown): Date | null {\n const d = value instanceof Date ? value : typeof value === 'string' || typeof value === 'number' ? new Date(value) : null\n return d && !Number.isNaN(d.getTime()) ? d : null\n}\n\nfunction render(parts: Part[], params: MessageParams, locale: string, hashValue: number | null): string {\n let out = ''\n for (const p of parts) {\n switch (p.k) {\n case 'text':\n out += p.v\n break\n case 'hash':\n out += hashValue === null ? '#' : new Intl.NumberFormat(locale).format(hashValue)\n break\n case 'arg': {\n const v = params[p.name]\n if (v === undefined) {\n out += `{${p.name}}`\n } else if (p.fmt === 'number' && typeof v === 'number') {\n const opts: Intl.NumberFormatOptions = p.style === 'percent' ? { style: 'percent' } : p.style === 'integer' ? { maximumFractionDigits: 0 } : {}\n out += new Intl.NumberFormat(locale, opts).format(v)\n } else if ((p.fmt === 'date' || p.fmt === 'time') && asDate(v)) {\n const style = (['short', 'medium', 'long', 'full'].includes(p.style ?? '') ? p.style : 'medium') as 'short' | 'medium' | 'long' | 'full'\n const opts: Intl.DateTimeFormatOptions = p.fmt === 'date' ? { dateStyle: style } : { timeStyle: style }\n out += new Intl.DateTimeFormat(locale, opts).format(asDate(v)!)\n } else {\n out += String(v)\n }\n break\n }\n case 'choice': {\n const v = params[p.name]\n let branch: Part[] | undefined\n let hash: number | null = hashValue\n if (p.mode === 'select') {\n branch = p.cases.get(String(v))\n } else {\n const n = Number(v)\n hash = n\n branch = p.cases.get(`=${n}`)\n if (!branch && Number.isFinite(n)) {\n const rules = new Intl.PluralRules(locale, { type: p.mode === 'selectordinal' ? 'ordinal' : 'cardinal' })\n branch = p.cases.get(rules.select(n))\n }\n }\n out += render(branch ?? p.cases.get('other')!, params, locale, hash)\n break\n }\n }\n }\n return out\n}\n\n/** Plain `{name}` substitution, the fallback for unparsable messages. */\nexport function substitute(message: string, params: MessageParams = {}): string {\n return message.replace(/\\{\\s*([\\w.-]+)\\s*\\}/g, (whole, key: string) => (params[key] === undefined ? whole : String(params[key])))\n}\n\n/** Formats an ICU message; never throws. */\nexport function formatMessage(message: string, params: MessageParams = {}, locale = 'en'): string {\n try {\n return render(parseMessage(message), params, locale, null)\n } catch {\n return substitute(message, params)\n }\n}\n","// ICU MessageFormat bridge and pseudo-localization for the copy catalogue.\n//\n// Every key of `Messages` accepts an ICU string. Keys whose default is a\n// function receive their arguments positionally as {0}, {1}, … so a host can\n// write, for example:\n// pagination.range: '{0}–{1} de {2, number}'\n// rail.count: '{0, plural, one {# pendente} other {# pendentes}}'\nimport { formatMessage } from '../utilities/i18n-adapter/icu'\nimport type { MessageOverrides, Messages } from './messages'\n\nexport interface IcuCatalogue {\n [key: string]: string | IcuCatalogue\n}\n\ntype Tree = Record<string, unknown>\nconst isTree = (v: unknown): v is Tree => !!v && typeof v === 'object' && !Array.isArray(v)\n\n/** Compiles ICU strings (shaped like the catalogue) into catalogue overrides for `locale`. */\nexport function compileIcuMessages(icu: IcuCatalogue, base: Messages, locale: string): MessageOverrides {\n const walk = (source: IcuCatalogue, reference: unknown): Tree => {\n const out: Tree = {}\n for (const [key, value] of Object.entries(source)) {\n const ref = isTree(reference) ? reference[key] : undefined\n if (typeof value === 'string') {\n out[key] =\n typeof ref === 'function'\n ? (...args: unknown[]) => formatMessage(value, Object.fromEntries(args.map((a, i) => [String(i), a])), locale)\n : formatMessage(value, {}, locale)\n } else out[key] = walk(value, ref)\n }\n return out\n }\n return walk(icu, base) as MessageOverrides\n}\n\nconst ACCENTED: Record<string, string> = {\n a: 'à', b: 'ƀ', c: 'ç', d: 'ď', e: 'é', f: 'ƒ', g: 'ĝ', h: 'ĥ', i: 'î', j: 'ĵ', k: 'ķ', l: 'ļ', m: 'ɱ',\n n: 'ñ', o: 'ö', p: 'þ', q: 'ǫ', r: 'ŕ', s: 'š', t: 'ţ', u: 'û', v: 'ṽ', w: 'ŵ', x: 'ẋ', y: 'ý', z: 'ž',\n A: 'Å', B: 'Ɓ', C: 'Ç', D: 'Đ', E: 'É', F: 'Ƒ', G: 'Ĝ', H: 'Ĥ', I: 'Î', J: 'Ĵ', K: 'Ķ', L: 'Ļ', M: 'Ṁ',\n N: 'Ñ', O: 'Ö', P: 'Þ', Q: 'Ǫ', R: 'Ŕ', S: 'Š', T: 'Ţ', U: 'Û', V: 'Ṽ', W: 'Ŵ', X: 'Ẋ', Y: 'Ý', Z: 'Ž',\n}\n\n/** One pseudo-localized string: accented, about 40 % longer, bracketed so clipping shows. */\nexport function pseudoString(text: string): string {\n if (!text) return text\n const accented = [...text].map((ch) => ACCENTED[ch] ?? ch).join('')\n const letters = [...text].filter((ch) => /\\p{L}/u.test(ch)).length\n return `⟦${accented}${'~'.repeat(Math.ceil(letters * 0.4))}⟧`\n}\n\n/** Pseudo-localizes a whole catalogue (strings and the output of message functions). */\nexport function pseudoLocalize(messages: Messages): Messages {\n const walk = (node: unknown): unknown => {\n if (typeof node === 'string') return pseudoString(node)\n if (typeof node === 'function') return (...args: unknown[]) => pseudoString(String((node as (...a: unknown[]) => unknown)(...args)))\n if (isTree(node)) return Object.fromEntries(Object.entries(node).map(([k, v]) => [k, walk(v)]))\n return node\n }\n return walk(messages) as Messages\n}\n","// Locale-bound number and plural helpers for the shipped catalogues. Each\n// catalogue formats its own numbers (digits, grouping) and picks plural forms\n// with Intl.PluralRules instead of string concatenation.\n\nexport interface CountWords {\n one: string\n other: string\n /** Optional CLDR categories for languages that have them. */\n zero?: string\n two?: string\n few?: string\n many?: string\n}\n\nexport function speaker(language: string) {\n const rules = new Intl.PluralRules(language)\n const numbers = new Intl.NumberFormat(language)\n return {\n /** Formats a number in the catalogue's language. */\n n: (value: number) => numbers.format(value),\n /** The word for `count`, by CLDR plural category. */\n word: (count: number, words: CountWords) => words[rules.select(count) as keyof CountWords] ?? words.other,\n }\n}\n","// Copy of the \"forms-a\" group (wave 2). One namespace per component, English\n// and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface FormsAMessages {\n themeSwitcher: { label: string; toLight: string; toDark: string }\n /** ThemePalette: `results` {0} = count; `noResults` {0} = query; `applied` / `trigger` {0} = theme name; `count` {0} = themes in a group. */\n themePalette: {\n label: string\n placeholder: string\n groupInterface: string\n groupPrint: string\n recent: string\n noResults: (query: string) => string\n results: (n: number) => string\n count: (n: number) => string\n applied: (name: string) => string\n trigger: (name: string) => string\n preview: string\n sample: string\n mode: string\n modeSystem: string\n modeLight: string\n modeDark: string\n density: string\n densityCompact: string\n densityDefault: string\n densityComfortable: string\n hints: { move: string; apply: string; revert: string }\n }\n stateSwitch: { off: string; on: string }\n /** `box`: {0} = 1-based position, {1} = total boxes. */\n oneTimeCode: { label: string; box: (position: number, total: number) => string }\n passwordStrength: {\n label: string\n levels: [string, string, string, string]\n met: string\n notMet: string\n /** Polite announcement of the level; {0} = level word. */\n announce: (level: string) => string\n rules: {\n minLength: (count: number) => string\n uppercase: string\n lowercase: string\n digit: string\n symbol: string\n }\n }\n searchBar: {\n label: string\n placeholder: string\n refinePlaceholder: string\n clearSearch: string\n clearAll: string\n cancel: string\n filters: string\n /** {0} = number of active filters. */\n filtersActive: (count: number) => string\n filtersTitle: string\n clear: string\n done: string\n }\n filterField: { clear: string }\n filterChips: { group: string; remove: (label: string) => string; removed: (label: string) => string; clearAll: string }\n choiceCard: { unavailable: string }\n chipGroup: {\n /** {0} = number of selected chips. */\n selected: (count: number) => string\n selectAll: string\n clear: string\n empty: string\n loading: string\n addPlaceholder: string\n addLabel: string\n remove: (name: string) => string\n }\n flagSetPicker: { presets: string; options: string }\n}\n\nexport const formsAEn: FormsAMessages = {\n themeSwitcher: { label: 'Dark mode', toLight: 'Switch to light mode', toDark: 'Switch to dark mode' },\n themePalette: {\n label: 'Choose a theme',\n placeholder: 'Search themes',\n groupInterface: 'Interface',\n groupPrint: 'Book styles',\n recent: 'Recent',\n noResults: (q) => `No theme matches “${q}”.`,\n results: (n) => `${en.n(n)} ${en.word(n, { one: 'theme', other: 'themes' })}`,\n count: (n) => en.n(n),\n applied: (name) => `Theme applied: ${name}`,\n trigger: (name) => `Theme: ${name}`,\n preview: 'Preview',\n sample: 'The same content, another engraving.',\n mode: 'Mode',\n modeSystem: 'System',\n modeLight: 'Light',\n modeDark: 'Dark',\n density: 'Density',\n densityCompact: 'Compact',\n densityDefault: 'Default',\n densityComfortable: 'Comfortable',\n hints: { move: 'preview', apply: 'apply', revert: 'revert' },\n },\n stateSwitch: { off: 'Inactive', on: 'Active' },\n oneTimeCode: { label: 'Verification code', box: (n, total) => `Character ${en.n(n)} of ${en.n(total)}` },\n passwordStrength: {\n label: 'Password strength',\n levels: ['Weak', 'Fair', 'Good', 'Strong'],\n met: 'met:',\n notMet: 'not met:',\n announce: (word) => `Password strength: ${word}`,\n rules: {\n minLength: (n) => `At least ${en.n(n)} ${en.word(n, { one: 'character', other: 'characters' })}`,\n uppercase: 'An uppercase letter',\n lowercase: 'A lowercase letter',\n digit: 'A digit',\n symbol: 'A symbol',\n },\n },\n searchBar: {\n label: 'Search',\n placeholder: 'Search',\n refinePlaceholder: 'Refine within the filters',\n clearSearch: 'Clear search',\n clearAll: 'Clear all',\n cancel: 'Cancel',\n filters: 'Filters',\n filtersActive: (n) => `Filters, ${en.n(n)} active`,\n filtersTitle: 'Filters',\n clear: 'Clear',\n done: 'Done',\n },\n filterField: { clear: 'Clear filter' },\n filterChips: {\n group: 'Active filters',\n remove: (label) => `Remove ${label}`,\n removed: (label) => `${label} removed`,\n clearAll: 'Clear all',\n },\n choiceCard: { unavailable: 'Unavailable' },\n chipGroup: {\n selected: (n) => `${en.n(n)} selected`,\n selectAll: 'Select all',\n clear: 'Clear',\n empty: 'No items to choose from',\n loading: 'Loading items',\n addPlaceholder: 'Add and press Enter',\n addLabel: 'Add an item',\n remove: (name) => `Remove ${name}`,\n },\n flagSetPicker: { presets: 'Presets', options: 'Options' },\n}\n\nexport const formsAPtBR: FormsAMessages = {\n themeSwitcher: { label: 'Modo escuro', toLight: 'Mudar para o modo claro', toDark: 'Mudar para o modo escuro' },\n themePalette: {\n label: 'Escolher o tema',\n placeholder: 'Buscar tema',\n groupInterface: 'Interface',\n groupPrint: 'Estilos de livro',\n recent: 'Recentes',\n noResults: (q) => `Nenhum tema corresponde a “${q}”.`,\n results: (n) => `${pt.n(n)} ${pt.word(n, { one: 'tema', other: 'temas' })}`,\n count: (n) => pt.n(n),\n applied: (name) => `Tema aplicado: ${name}`,\n trigger: (name) => `Tema: ${name}`,\n preview: 'Prévia',\n sample: 'O mesmo conteúdo, outra gravação.',\n mode: 'Modo',\n modeSystem: 'Sistema',\n modeLight: 'Claro',\n modeDark: 'Escuro',\n density: 'Densidade',\n densityCompact: 'Compacta',\n densityDefault: 'Padrão',\n densityComfortable: 'Confortável',\n hints: { move: 'prévia', apply: 'aplicar', revert: 'desfazer' },\n },\n stateSwitch: { off: 'Inativo', on: 'Ativo' },\n oneTimeCode: { label: 'Código de verificação', box: (n, total) => `Caractere ${pt.n(n)} de ${pt.n(total)}` },\n passwordStrength: {\n label: 'Força da senha',\n levels: ['Fraca', 'Razoável', 'Boa', 'Forte'],\n met: 'atendido:',\n notMet: 'não atendido:',\n announce: (word) => `Força da senha: ${word}`,\n rules: {\n minLength: (n) => `Pelo menos ${pt.n(n)} ${pt.word(n, { one: 'caractere', other: 'caracteres' })}`,\n uppercase: 'Uma letra maiúscula',\n lowercase: 'Uma letra minúscula',\n digit: 'Um número',\n symbol: 'Um símbolo',\n },\n },\n searchBar: {\n label: 'Busca',\n placeholder: 'Buscar',\n refinePlaceholder: 'Refinar dentro dos filtros',\n clearSearch: 'Limpar busca',\n clearAll: 'Limpar tudo',\n cancel: 'Cancelar',\n filters: 'Filtros',\n filtersActive: (n) => `Filtros, ${pt.n(n)} ${pt.word(n, { one: 'ativo', other: 'ativos' })}`,\n filtersTitle: 'Filtros',\n clear: 'Limpar',\n done: 'Concluir',\n },\n filterField: { clear: 'Limpar filtro' },\n filterChips: {\n group: 'Filtros ativos',\n remove: (label) => `Remover ${label}`,\n removed: (label) => `${label} removido`,\n clearAll: 'Limpar tudo',\n },\n choiceCard: { unavailable: 'Indisponível' },\n chipGroup: {\n selected: (n) => `${pt.n(n)} ${pt.word(n, { one: 'selecionado', other: 'selecionados' })}`,\n selectAll: 'Selecionar todos',\n clear: 'Limpar',\n empty: 'Nenhum item para escolher',\n loading: 'Carregando itens',\n addPlaceholder: 'Digite e pressione Enter',\n addLabel: 'Adicionar item',\n remove: (name) => `Remover ${name}`,\n },\n flagSetPicker: { presets: 'Predefinições', options: 'Opções' },\n}\n\n/** Spanish (neutral Latin-American). */\nexport const formsAEs: FormsAMessages = {\n themeSwitcher: { label: 'Modo oscuro', toLight: 'Cambiar al modo claro', toDark: 'Cambiar al modo oscuro' },\n themePalette: {\n label: 'Elegir el tema',\n placeholder: 'Buscar tema',\n groupInterface: 'Interfaz',\n groupPrint: 'Estilos de libro',\n recent: 'Recientes',\n noResults: (q) => `Ningún tema coincide con «${q}».`,\n results: (n) => `${es.n(n)} ${es.word(n, { one: 'tema', other: 'temas' })}`,\n count: (n) => es.n(n),\n applied: (name) => `Tema aplicado: ${name}`,\n trigger: (name) => `Tema: ${name}`,\n preview: 'Vista previa',\n sample: 'El mismo contenido, otro grabado.',\n mode: 'Modo',\n modeSystem: 'Sistema',\n modeLight: 'Claro',\n modeDark: 'Oscuro',\n density: 'Densidad',\n densityCompact: 'Compacta',\n densityDefault: 'Normal',\n densityComfortable: 'Cómoda',\n hints: { move: 'vista previa', apply: 'aplicar', revert: 'deshacer' },\n },\n stateSwitch: { off: 'Inactivo', on: 'Activo' },\n oneTimeCode: { label: 'Código de verificación', box: (n, total) => `Carácter ${es.n(n)} de ${es.n(total)}` },\n passwordStrength: {\n label: 'Seguridad de la contraseña',\n levels: ['Débil', 'Aceptable', 'Buena', 'Fuerte'],\n met: 'cumplido:',\n notMet: 'no cumplido:',\n announce: (word) => `Seguridad de la contraseña: ${word}`,\n rules: {\n minLength: (n) => `Al menos ${es.n(n)} ${es.word(n, { one: 'carácter', other: 'caracteres' })}`,\n uppercase: 'Una letra mayúscula',\n lowercase: 'Una letra minúscula',\n digit: 'Un número',\n symbol: 'Un símbolo',\n },\n },\n searchBar: {\n label: 'Búsqueda',\n placeholder: 'Buscar',\n refinePlaceholder: 'Refinar dentro de los filtros',\n clearSearch: 'Borrar búsqueda',\n clearAll: 'Borrar todo',\n cancel: 'Cancelar',\n filters: 'Filtros',\n filtersActive: (n) => `Filtros, ${es.n(n)} ${es.word(n, { one: 'activo', other: 'activos' })}`,\n filtersTitle: 'Filtros',\n clear: 'Borrar',\n done: 'Listo',\n },\n filterField: { clear: 'Borrar filtro' },\n filterChips: {\n group: 'Filtros activos',\n remove: (label) => `Quitar ${label}`,\n removed: (label) => `${label} quitado`,\n clearAll: 'Borrar todo',\n },\n choiceCard: { unavailable: 'No disponible' },\n chipGroup: {\n selected: (n) => `${es.n(n)} ${es.word(n, { one: 'seleccionado', other: 'seleccionados' })}`,\n selectAll: 'Seleccionar todo',\n clear: 'Borrar',\n empty: 'No hay elementos para elegir',\n loading: 'Cargando elementos',\n addPlaceholder: 'Escribe y presiona Enter',\n addLabel: 'Agregar un elemento',\n remove: (name) => `Quitar ${name}`,\n },\n flagSetPicker: { presets: 'Ajustes predefinidos', options: 'Opciones' },\n}\n","// Copy of the \"forms-b\" group (wave 2). One namespace per component, English,\n// Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface FormsBMessages {\n tagField: {\n remove: (display: string) => string\n chosen: (field: string) => string\n suggestions: string\n }\n currencyField: {\n currency: (name: string) => string\n }\n dateField: {\n placeholder: string\n previousMonth: string\n nextMonth: string\n previousYear: string\n nextYear: string\n today: string\n todayMarker: string\n chooseMonth: (current: string) => string\n backToDays: string\n months: string\n years: string\n }\n timeField: {\n placeholder: string\n hours: string\n minutes: string\n confirm: string\n future: string\n }\n monthField: {\n placeholder: string\n previousYear: string\n nextYear: string\n months: string\n years: string\n }\n localePicker: {\n title: string\n trigger: (title: string, language: string) => string\n current: (language: string, code: string) => string\n list: string\n }\n imagePicker: {\n change: string\n wrongType: string\n tooLarge: (limit: string) => string\n failed: string\n updated: string\n uploading: string\n }\n requestForm: {\n submit: string\n reject: string\n sending: string\n choose: string\n required: string\n notNumber: string\n atLeast: (min: number) => string\n atMost: (max: number) => string\n defaultReason: string\n approved: string\n rejected: string\n approvedSentence: string\n rejectedSentence: string\n failed: string\n }\n formActions: {\n saving: string\n }\n}\n\nexport const formsBEn: FormsBMessages = {\n tagField: {\n remove: (d) => `Remove ${d}`,\n chosen: (f) => `${f}: chosen values`,\n suggestions: 'Suggestions',\n },\n currencyField: {\n currency: (name) => `Currency: ${name}`,\n },\n dateField: {\n placeholder: 'Select a date',\n previousMonth: 'Previous month',\n nextMonth: 'Next month',\n previousYear: 'Previous year',\n nextYear: 'Next year',\n today: 'Today',\n todayMarker: 'today',\n chooseMonth: (c) => `${c}, choose month and year`,\n backToDays: 'Back to days',\n months: 'Months',\n years: 'Years',\n },\n timeField: {\n placeholder: 'Select a time',\n hours: 'Hours',\n minutes: 'Minutes',\n confirm: 'Confirm',\n future: 'This time is still in the future. Choose a time up to now.',\n },\n monthField: {\n placeholder: 'Select a month',\n previousYear: 'Previous year',\n nextYear: 'Next year',\n months: 'Months',\n years: 'Years with data',\n },\n localePicker: {\n title: 'Language',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Current language: ${l} (${c})`,\n list: 'Available languages',\n },\n imagePicker: {\n change: 'Change picture',\n wrongType: 'This file type is not accepted. Choose a JPEG, PNG or WebP image.',\n tooLarge: (limit) => `The file is larger than ${limit}. Choose a smaller image.`,\n failed: 'The picture could not be uploaded. Try again.',\n updated: 'Picture updated',\n uploading: 'Uploading the picture',\n },\n requestForm: {\n submit: 'Submit',\n reject: 'Reject',\n sending: 'Sending',\n choose: 'Choose…',\n required: 'Fill in this field.',\n notNumber: 'Enter a number.',\n atLeast: (n) => `Enter ${en.n(n)} or more.`,\n atMost: (n) => `Enter ${en.n(n)} or less.`,\n defaultReason: 'Rejected by the reviewer',\n approved: 'Approved',\n rejected: 'Rejected',\n approvedSentence: 'Answer sent. The run resumed.',\n rejectedSentence: 'Request rejected. The run was closed.',\n failed: 'The answer could not be sent.',\n },\n formActions: {\n saving: 'Saving',\n },\n}\n\nexport const formsBPtBR: FormsBMessages = {\n tagField: {\n remove: (d) => `Remover ${d}`,\n chosen: (f) => `${f}: valores escolhidos`,\n suggestions: 'Sugestões',\n },\n currencyField: {\n currency: (name) => `Moeda: ${name}`,\n },\n dateField: {\n placeholder: 'Selecione uma data',\n previousMonth: 'Mês anterior',\n nextMonth: 'Próximo mês',\n previousYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n today: 'Hoje',\n todayMarker: 'hoje',\n chooseMonth: (c) => `${c}, escolher mês e ano`,\n backToDays: 'Voltar aos dias',\n months: 'Meses',\n years: 'Anos',\n },\n timeField: {\n placeholder: 'Selecione um horário',\n hours: 'Horas',\n minutes: 'Minutos',\n confirm: 'Confirmar',\n future: 'Este horário ainda está no futuro. Escolha um horário até agora.',\n },\n monthField: {\n placeholder: 'Selecione um mês',\n previousYear: 'Ano anterior',\n nextYear: 'Próximo ano',\n months: 'Meses',\n years: 'Anos com dados',\n },\n localePicker: {\n title: 'Idioma',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Idioma atual: ${l} (${c})`,\n list: 'Idiomas disponíveis',\n },\n imagePicker: {\n change: 'Trocar imagem',\n wrongType: 'Este tipo de arquivo não é aceito. Escolha uma imagem JPEG, PNG ou WebP.',\n tooLarge: (limit) => `O arquivo tem mais de ${limit}. Escolha uma imagem menor.`,\n failed: 'Não foi possível enviar a imagem. Tente de novo.',\n updated: 'Imagem atualizada',\n uploading: 'Enviando a imagem',\n },\n requestForm: {\n submit: 'Enviar',\n reject: 'Rejeitar',\n sending: 'Enviando',\n choose: 'Escolha…',\n required: 'Preencha este campo.',\n notNumber: 'Digite um número.',\n atLeast: (n) => `Digite ${pt.n(n)} ou mais.`,\n atMost: (n) => `Digite ${pt.n(n)} ou menos.`,\n defaultReason: 'Rejeitado por quem revisou',\n approved: 'Aprovado',\n rejected: 'Rejeitado',\n approvedSentence: 'Resposta enviada. A execução foi retomada.',\n rejectedSentence: 'Pedido rejeitado. A execução foi encerrada.',\n failed: 'Não foi possível enviar a resposta.',\n },\n formActions: {\n saving: 'Salvando',\n },\n}\n\n/** Spanish (neutral Latin American). */\nexport const formsBEs: FormsBMessages = {\n tagField: {\n remove: (d) => `Quitar ${d}`,\n chosen: (f) => `${f}: valores elegidos`,\n suggestions: 'Sugerencias',\n },\n currencyField: {\n currency: (name) => `Moneda: ${name}`,\n },\n dateField: {\n placeholder: 'Seleccione una fecha',\n previousMonth: 'Mes anterior',\n nextMonth: 'Mes siguiente',\n previousYear: 'Año anterior',\n nextYear: 'Año siguiente',\n today: 'Hoy',\n todayMarker: 'hoy',\n chooseMonth: (c) => `${c}, elegir mes y año`,\n backToDays: 'Volver a los días',\n months: 'Meses',\n years: 'Años',\n },\n timeField: {\n placeholder: 'Seleccione una hora',\n hours: 'Horas',\n minutes: 'Minutos',\n confirm: 'Confirmar',\n future: 'Esta hora todavía está en el futuro. Elija una hora hasta ahora.',\n },\n monthField: {\n placeholder: 'Seleccione un mes',\n previousYear: 'Año anterior',\n nextYear: 'Año siguiente',\n months: 'Meses',\n years: 'Años con datos',\n },\n localePicker: {\n title: 'Idioma',\n trigger: (t, l) => `${t}: ${l}`,\n current: (l, c) => `Idioma actual: ${l} (${c})`,\n list: 'Idiomas disponibles',\n },\n imagePicker: {\n change: 'Cambiar imagen',\n wrongType: 'Este tipo de archivo no se acepta. Elija una imagen JPEG, PNG o WebP.',\n tooLarge: (limit) => `El archivo supera ${limit}. Elija una imagen más pequeña.`,\n failed: 'No se pudo subir la imagen. Inténtelo de nuevo.',\n updated: 'Imagen actualizada',\n uploading: 'Subiendo la imagen',\n },\n requestForm: {\n submit: 'Enviar',\n reject: 'Rechazar',\n sending: 'Enviando',\n choose: 'Elija…',\n required: 'Complete este campo.',\n notNumber: 'Escriba un número.',\n atLeast: (n) => `Escriba ${es.n(n)} o más.`,\n atMost: (n) => `Escriba ${es.n(n)} o menos.`,\n defaultReason: 'Rechazado por quien revisó',\n approved: 'Aprobado',\n rejected: 'Rechazado',\n approvedSentence: 'Respuesta enviada. La ejecución se reanudó.',\n rejectedSentence: 'Solicitud rechazada. La ejecución se cerró.',\n failed: 'No se pudo enviar la respuesta.',\n },\n formActions: {\n saving: 'Guardando',\n },\n}\n","// Copy of the \"overlays-nav\" group (wave 2). One namespace per component,\n// English and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\nexport interface OverlaysNavMessages {\n sectionedModal: { close: string; cancel: string; save: string; sectionPicker: string }\n settingsDialog: {\n placeholder: string\n copy: (field: string) => string\n copied: string\n changePicture: string\n currentPassword: string\n newPassword: string\n confirmPassword: string\n changePassword: string\n passwordMismatch: string\n }\n confirm: { confirm: string; cancel: string; caution: string }\n detailsPopover: {\n tone: Record<'success' | 'pending' | 'error', string>\n }\n navigationFlyout: {\n title: string\n search: string\n noResults: string\n count: (n: number) => string\n notifications: string\n unseen: (n: number) => string\n darkTheme: string\n profile: string\n signOut: string\n destinations: string\n }\n appNavigation: {\n landmark: string\n home: string\n profile: string\n signOut: string\n theme: string\n themeLight: string\n themeDark: string\n language: string\n account: string\n openMenu: string\n closeMenu: string\n collapse: string\n expand: string\n pending: (label: string, n: number) => string\n submenu: (label: string) => string\n }\n appLauncher: {\n actions: string\n more: (label: string) => string\n shortcuts: (label: string) => string\n withCount: (label: string, n: number) => string\n withAlerts: (label: string, n: number) => string\n profileLoading: string\n profile: string\n }\n commandPalette: {\n label: string\n placeholder: string\n empty: string\n noResults: (query: string) => string\n loading: string\n removeScope: (scope: string) => string\n actionsFor: (item: string) => string\n recent: string\n results: (n: number) => string\n scopes: string\n fallback: string\n hints: { navigate: string; select: string; actions: string; back: string; close: string }\n }\n longPressMenu: { hint: string }\n floatingActionButton: { busy: string }\n stepList: {\n position: (n: number, total: number) => string\n status: Record<'complete' | 'current' | 'upcoming', string>\n }\n pageDots: { label: string; dot: (n: number, total: number) => string; counter: (n: number, total: number) => string }\n wizardPage: {\n previous: string\n next: string\n cancel: string\n submit: string\n submitting: string\n close: string\n actions: string\n documentTitle: (step: string, flow: string) => string\n }\n}\n\nexport const overlaysNavEn: OverlaysNavMessages = {\n sectionedModal: { close: 'Close', cancel: 'Cancel', save: 'Save', sectionPicker: 'Section' },\n settingsDialog: {\n placeholder: 'Nothing to configure in this section yet.',\n copy: (f) => `Copy ${f}`,\n copied: 'Copied',\n changePicture: 'Change picture',\n currentPassword: 'Current password',\n newPassword: 'New password',\n confirmPassword: 'Confirm the new password',\n changePassword: 'Change password',\n passwordMismatch: 'The two new passwords are different.',\n },\n confirm: { confirm: 'Confirm', cancel: 'Cancel', caution: 'Caution' },\n detailsPopover: { tone: { success: 'Success', pending: 'Pending', error: 'Error' } },\n navigationFlyout: {\n title: 'Navigation',\n search: 'Search destinations',\n noResults: 'No destination matches this search.',\n count: (n) => `${en.n(n)} ${en.word(n, { one: 'destination', other: 'destinations' })}`,\n notifications: 'Notifications',\n unseen: (n) => `${en.n(n)} unseen`,\n darkTheme: 'Dark theme',\n profile: 'Profile',\n signOut: 'Sign out',\n destinations: 'Destinations',\n },\n appNavigation: {\n landmark: 'Primary navigation',\n home: 'Home',\n profile: 'Profile',\n signOut: 'Sign out',\n theme: 'Theme',\n themeLight: 'Light',\n themeDark: 'Dark',\n language: 'Language',\n account: 'Account',\n openMenu: 'Open navigation',\n closeMenu: 'Close navigation',\n collapse: 'Collapse navigation',\n expand: 'Expand navigation',\n pending: (label, n) => `${label}, ${en.n(n)} pending`,\n submenu: (label) => `More in ${label}`,\n },\n appLauncher: {\n actions: 'Actions',\n more: (label) => `More for ${label}`,\n shortcuts: (label) => `Shortcuts of ${label}`,\n withCount: (label, n) => `${label}, ${en.n(n)} new`,\n withAlerts: (label, n) => `${label}, ${en.n(n)} ${en.word(n, { one: 'alert', other: 'alerts' })}`,\n profileLoading: 'Loading the profile',\n profile: 'Profile',\n },\n commandPalette: {\n label: 'Search and commands',\n placeholder: 'Search or type a command',\n empty: 'Type to search records, sources and screens.',\n noResults: (q) => `Nothing matches “${q}”.`,\n loading: 'Loading results',\n removeScope: (s) => `Remove scope ${s}`,\n actionsFor: (item) => `Actions for ${item}`,\n recent: 'Recent',\n results: (n) => `${en.n(n)} ${en.word(n, { one: 'result', other: 'results' })}`,\n scopes: 'Scopes',\n fallback: 'Other actions',\n hints: { navigate: 'move', select: 'open', actions: 'actions', back: 'back', close: 'close' },\n },\n longPressMenu: { hint: 'More actions: long press, right click or Shift+F10.' },\n floatingActionButton: { busy: 'Working' },\n stepList: {\n position: (n, total) => `Step ${en.n(n)} of ${en.n(total)}`,\n status: { complete: 'completed', current: 'current', upcoming: 'not started' },\n },\n pageDots: {\n label: 'Pages',\n dot: (n, total) => `Page ${en.n(n)} of ${en.n(total)}`,\n counter: (n, total) => `${en.n(n)} of ${en.n(total)}`,\n },\n wizardPage: {\n previous: 'Previous',\n next: 'Next',\n cancel: 'Cancel',\n submit: 'Submit',\n submitting: 'Submitting',\n close: 'Close',\n actions: 'Step actions',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n\nexport const overlaysNavPtBR: OverlaysNavMessages = {\n sectionedModal: { close: 'Fechar', cancel: 'Cancelar', save: 'Salvar', sectionPicker: 'Seção' },\n settingsDialog: {\n placeholder: 'Ainda não há o que configurar nesta seção.',\n copy: (f) => `Copiar ${f}`,\n copied: 'Copiado',\n changePicture: 'Trocar foto',\n currentPassword: 'Senha atual',\n newPassword: 'Nova senha',\n confirmPassword: 'Confirme a nova senha',\n changePassword: 'Trocar senha',\n passwordMismatch: 'As duas senhas novas são diferentes.',\n },\n confirm: { confirm: 'Confirmar', cancel: 'Cancelar', caution: 'Atenção' },\n detailsPopover: { tone: { success: 'Sucesso', pending: 'Pendente', error: 'Erro' } },\n navigationFlyout: {\n title: 'Navegação',\n search: 'Buscar destinos',\n noResults: 'Nenhum destino corresponde à busca.',\n count: (n) => `${pt.n(n)} ${pt.word(n, { one: 'destino', other: 'destinos' })}`,\n notifications: 'Notificações',\n unseen: (n) => `${pt.n(n)} ${pt.word(n, { one: 'não vista', other: 'não vistas' })}`,\n darkTheme: 'Tema escuro',\n profile: 'Perfil',\n signOut: 'Sair',\n destinations: 'Destinos',\n },\n appNavigation: {\n landmark: 'Navegação principal',\n home: 'Início',\n profile: 'Perfil',\n signOut: 'Sair',\n theme: 'Tema',\n themeLight: 'Claro',\n themeDark: 'Escuro',\n language: 'Idioma',\n account: 'Conta',\n openMenu: 'Abrir navegação',\n closeMenu: 'Fechar navegação',\n collapse: 'Recolher navegação',\n expand: 'Expandir navegação',\n pending: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'pendente', other: 'pendentes' })}`,\n submenu: (label) => `Mais em ${label}`,\n },\n appLauncher: {\n actions: 'Ações',\n more: (label) => `Mais opções de ${label}`,\n shortcuts: (label) => `Atalhos de ${label}`,\n withCount: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'novo', other: 'novos' })}`,\n withAlerts: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'alerta', other: 'alertas' })}`,\n profileLoading: 'Carregando o perfil',\n profile: 'Perfil',\n },\n commandPalette: {\n label: 'Busca e comandos',\n placeholder: 'Busque ou digite um comando',\n empty: 'Digite para buscar registros, fontes e telas.',\n noResults: (q) => `Nada corresponde a “${q}”.`,\n loading: 'Carregando resultados',\n removeScope: (s) => `Remover o escopo ${s}`,\n actionsFor: (item) => `Ações de ${item}`,\n recent: 'Recentes',\n results: (n) => `${pt.n(n)} ${pt.word(n, { one: 'resultado', other: 'resultados' })}`,\n scopes: 'Escopos',\n fallback: 'Outras ações',\n hints: { navigate: 'mover', select: 'abrir', actions: 'ações', back: 'voltar', close: 'fechar' },\n },\n longPressMenu: { hint: 'Mais ações: toque longo, clique direito ou Shift+F10.' },\n floatingActionButton: { busy: 'Processando' },\n stepList: {\n position: (n, total) => `Etapa ${pt.n(n)} de ${pt.n(total)}`,\n status: { complete: 'concluída', current: 'atual', upcoming: 'não iniciada' },\n },\n pageDots: {\n label: 'Páginas',\n dot: (n, total) => `Página ${pt.n(n)} de ${pt.n(total)}`,\n counter: (n, total) => `${pt.n(n)} de ${pt.n(total)}`,\n },\n wizardPage: {\n previous: 'Anterior',\n next: 'Próxima',\n cancel: 'Cancelar',\n submit: 'Enviar',\n submitting: 'Enviando',\n close: 'Fechar',\n actions: 'Ações da etapa',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n\n/** Spanish (neutral Latin American). */\nexport const overlaysNavEs: OverlaysNavMessages = {\n sectionedModal: { close: 'Cerrar', cancel: 'Cancelar', save: 'Guardar', sectionPicker: 'Sección' },\n settingsDialog: {\n placeholder: 'Todavía no hay nada que configurar en esta sección.',\n copy: (f) => `Copiar ${f}`,\n copied: 'Copiado',\n changePicture: 'Cambiar imagen',\n currentPassword: 'Contraseña actual',\n newPassword: 'Contraseña nueva',\n confirmPassword: 'Confirme la contraseña nueva',\n changePassword: 'Cambiar contraseña',\n passwordMismatch: 'Las dos contraseñas nuevas son distintas.',\n },\n confirm: { confirm: 'Confirmar', cancel: 'Cancelar', caution: 'Atención' },\n detailsPopover: { tone: { success: 'Éxito', pending: 'Pendiente', error: 'Error' } },\n navigationFlyout: {\n title: 'Navegación',\n search: 'Buscar destinos',\n noResults: 'Ningún destino coincide con esta búsqueda.',\n count: (n) => `${es.n(n)} ${es.word(n, { one: 'destino', other: 'destinos' })}`,\n notifications: 'Notificaciones',\n unseen: (n) => `${es.n(n)} ${es.word(n, { one: 'sin ver', other: 'sin ver' })}`,\n darkTheme: 'Tema oscuro',\n profile: 'Perfil',\n signOut: 'Cerrar sesión',\n destinations: 'Destinos',\n },\n appNavigation: {\n landmark: 'Navegación principal',\n home: 'Inicio',\n profile: 'Perfil',\n signOut: 'Cerrar sesión',\n theme: 'Tema',\n themeLight: 'Claro',\n themeDark: 'Oscuro',\n language: 'Idioma',\n account: 'Cuenta',\n openMenu: 'Abrir navegación',\n closeMenu: 'Cerrar navegación',\n collapse: 'Contraer navegación',\n expand: 'Expandir navegación',\n pending: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'pendiente', other: 'pendientes' })}`,\n submenu: (label) => `Más en ${label}`,\n },\n appLauncher: {\n actions: 'Acciones',\n more: (label) => `Más para ${label}`,\n shortcuts: (label) => `Atajos de ${label}`,\n withCount: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'nuevo', other: 'nuevos' })}`,\n withAlerts: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'alerta', other: 'alertas' })}`,\n profileLoading: 'Cargando el perfil',\n profile: 'Perfil',\n },\n commandPalette: {\n label: 'Búsqueda y comandos',\n placeholder: 'Busque o escriba un comando',\n empty: 'Escriba para buscar registros, fuentes y pantallas.',\n noResults: (q) => `Nada coincide con «${q}».`,\n loading: 'Cargando resultados',\n removeScope: (s) => `Quitar el ámbito ${s}`,\n actionsFor: (item) => `Acciones de ${item}`,\n recent: 'Recientes',\n results: (n) => `${es.n(n)} ${es.word(n, { one: 'resultado', other: 'resultados' })}`,\n scopes: 'Ámbitos',\n fallback: 'Otras acciones',\n hints: { navigate: 'mover', select: 'abrir', actions: 'acciones', back: 'volver', close: 'cerrar' },\n },\n longPressMenu: { hint: 'Más acciones: mantenga pulsado, clic derecho o Mayús+F10.' },\n floatingActionButton: { busy: 'Trabajando' },\n stepList: {\n position: (n, total) => `Paso ${es.n(n)} de ${es.n(total)}`,\n status: { complete: 'completado', current: 'actual', upcoming: 'sin empezar' },\n },\n pageDots: {\n label: 'Páginas',\n dot: (n, total) => `Página ${es.n(n)} de ${es.n(total)}`,\n counter: (n, total) => `${es.n(n)} de ${es.n(total)}`,\n },\n wizardPage: {\n previous: 'Anterior',\n next: 'Siguiente',\n cancel: 'Cancelar',\n submit: 'Enviar',\n submitting: 'Enviando',\n close: 'Cerrar',\n actions: 'Acciones del paso',\n documentTitle: (step, flow) => `${step}: ${flow}`,\n },\n}\n","// Copy of the \"data-a\" group (wave 2): lists, records, disclosure lists,\n// identifiers and markdown. One namespace per component, English and\n// Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\nimport { speaker } from './plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\nconst es = speaker('es')\n\n/** \"n units ago\" in the catalogue's language (Intl.RelativeTimeFormat). */\nconst ago = (language: string, unit: Intl.RelativeTimeFormatUnit) => (n: number) => new Intl.RelativeTimeFormat(language, { numeric: 'auto' }).format(-n, unit)\n\nexport interface PluralNoun {\n one: string\n other: string\n}\n\nexport interface DataAMessages {\n listRow: {\n /** Textual marker of the emphasised row (never only the background). */\n current: string\n }\n countBadge: {\n /** Default noun counted by a badge. */\n item: PluralNoun\n /** Accessible sentence, e.g. \"3 notifications\". */\n describe: (count: number, noun: string) => string\n }\n notificationCenter: {\n bell: string\n /** Bell name with unseen entries, e.g. \"Notifications, 3 unread\". */\n bellUnseen: (label: string, unseen: number) => string\n title: string\n clearAll: string\n cleared: string\n empty: string\n dismiss: (title: string) => string\n tone: Record<'success' | 'error' | 'warning' | 'info', string>\n time: { justNow: string; minutes: (n: number) => string; hours: (n: number) => string; days: (n: number) => string }\n }\n profileAvatar: { profile: string }\n copyIdentifier: {\n copy: string\n copied: string\n copiedStatus: (value: string) => string\n failed: string\n }\n recoveryCodes: {\n hidden: string\n reveal: string\n copyAll: string\n copied: string\n copyFailed: string\n download: string\n fileTitle: string\n generatedAt: (iso: string) => string\n keepSafe: string\n fileName: string\n listLabel: string\n }\n markdown: { codeBlock: (language?: string) => string }\n}\n\nexport const dataAEn: DataAMessages = {\n listRow: { current: 'Current' },\n countBadge: {\n item: { one: 'item', other: 'items' },\n describe: (n, noun) => `${en.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notifications',\n bellUnseen: (label, n) => `${label}, ${en.n(n)} unread`,\n title: 'Notifications',\n clearAll: 'Clear all',\n cleared: 'Notifications cleared',\n empty: 'There are no notifications in this session.',\n dismiss: (title) => `Dismiss, ${title}`,\n tone: { success: 'Success', error: 'Error', warning: 'Warning', info: 'Information' },\n time: {\n justNow: 'just now',\n minutes: ago('en', 'minute'),\n hours: ago('en', 'hour'),\n days: ago('en', 'day'),\n },\n },\n profileAvatar: { profile: 'Profile' },\n copyIdentifier: {\n copy: 'Copy',\n copied: 'copied',\n copiedStatus: (v) => `Copied ${v}`,\n failed: 'Copying failed. Select the text to copy it by hand.',\n },\n recoveryCodes: {\n hidden: 'The recovery codes are hidden.',\n reveal: 'Show codes',\n copyAll: 'Copy all',\n copied: 'Copied',\n copyFailed: 'The clipboard is not available. Select the codes to copy them.',\n download: 'Download',\n fileTitle: 'Recovery codes',\n generatedAt: (iso) => `Generated at ${iso}`,\n keepSafe: 'Keep these codes somewhere safe. Each code works once.',\n fileName: 'recovery-codes.txt',\n listLabel: 'Recovery codes',\n },\n markdown: { codeBlock: (lang) => (lang ? `Code block, ${lang}` : 'Code block') },\n}\n\nexport const dataAPtBR: DataAMessages = {\n listRow: { current: 'Atual' },\n countBadge: {\n item: { one: 'item', other: 'itens' },\n describe: (n, noun) => `${pt.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notificações',\n bellUnseen: (label, n) => `${label}, ${pt.n(n)} ${pt.word(n, { one: 'não lida', other: 'não lidas' })}`,\n title: 'Notificações',\n clearAll: 'Limpar tudo',\n cleared: 'Notificações apagadas',\n empty: 'Não há notificações nesta sessão.',\n dismiss: (title) => `Dispensar, ${title}`,\n tone: { success: 'Sucesso', error: 'Erro', warning: 'Atenção', info: 'Informação' },\n time: {\n justNow: 'agora mesmo',\n minutes: ago('pt-BR', 'minute'),\n hours: ago('pt-BR', 'hour'),\n days: ago('pt-BR', 'day'),\n },\n },\n profileAvatar: { profile: 'Perfil' },\n copyIdentifier: {\n copy: 'Copiar',\n copied: 'copiado',\n copiedStatus: (v) => `${v} copiado`,\n failed: 'Não foi possível copiar. Selecione o texto para copiar à mão.',\n },\n recoveryCodes: {\n hidden: 'Os códigos de recuperação estão ocultos.',\n reveal: 'Mostrar códigos',\n copyAll: 'Copiar todos',\n copied: 'Copiados',\n copyFailed: 'A área de transferência não está disponível. Selecione os códigos para copiá-los.',\n download: 'Baixar',\n fileTitle: 'Códigos de recuperação',\n generatedAt: (iso) => `Gerados em ${iso}`,\n keepSafe: 'Guarde estes códigos em lugar seguro. Cada código funciona uma vez.',\n fileName: 'codigos-de-recuperacao.txt',\n listLabel: 'Códigos de recuperação',\n },\n markdown: { codeBlock: (lang) => (lang ? `Bloco de código, ${lang}` : 'Bloco de código') },\n}\n\n/** Spanish (neutral Latin American). */\nexport const dataAEs: DataAMessages = {\n listRow: { current: 'Actual' },\n countBadge: {\n item: { one: 'elemento', other: 'elementos' },\n describe: (n, noun) => `${es.n(n)} ${noun}`,\n },\n notificationCenter: {\n bell: 'Notificaciones',\n bellUnseen: (label, n) => `${label}, ${es.n(n)} ${es.word(n, { one: 'sin leer', other: 'sin leer' })}`,\n title: 'Notificaciones',\n clearAll: 'Borrar todo',\n cleared: 'Notificaciones borradas',\n empty: 'No hay notificaciones en esta sesión.',\n dismiss: (title) => `Descartar, ${title}`,\n tone: { success: 'Éxito', error: 'Error', warning: 'Atención', info: 'Información' },\n time: {\n justNow: 'ahora mismo',\n minutes: ago('es', 'minute'),\n hours: ago('es', 'hour'),\n days: ago('es', 'day'),\n },\n },\n profileAvatar: { profile: 'Perfil' },\n copyIdentifier: {\n copy: 'Copiar',\n copied: 'copiado',\n copiedStatus: (v) => `${v} copiado`,\n failed: 'No se pudo copiar. Seleccione el texto para copiarlo a mano.',\n },\n recoveryCodes: {\n hidden: 'Los códigos de recuperación están ocultos.',\n reveal: 'Mostrar códigos',\n copyAll: 'Copiar todos',\n copied: 'Copiados',\n copyFailed: 'El portapapeles no está disponible. Seleccione los códigos para copiarlos.',\n download: 'Descargar',\n fileTitle: 'Códigos de recuperación',\n generatedAt: (iso) => `Generados el ${iso}`,\n keepSafe: 'Guarde estos códigos en un lugar seguro. Cada código funciona una sola vez.',\n fileName: 'codigos-de-recuperacion.txt',\n listLabel: 'Códigos de recuperación',\n },\n markdown: { codeBlock: (lang) => (lang ? `Bloque de código, ${lang}` : 'Bloque de código') },\n}\n","// Copy of the \"data-b\" group (wave 2/4): figures, cards and summaries. One\n// namespace per component, English, Brazilian Portuguese and Spanish. Merged into\n// `Messages` by ../messages.ts.\n\nexport interface DataBMessages {\n statTile: {\n filtered: string\n explain: (label: string) => string\n attention: string\n }\n delta: { up: string; down: string; flat: string }\n agentOutput: {\n outcome: Record<'completed' | 'failed' | 'pending', string>\n duration: (d: string) => string\n }\n recordCard: {\n cancel: string\n working: string\n }\n contact: { email: string; phone: string }\n insight: {\n actions: string\n pending: string\n proposedBy: string\n failed: string\n }\n ticker: {\n value: string\n change: string\n empty: string\n loading: string\n }\n}\n\nexport const dataBEn: DataBMessages = {\n statTile: {\n filtered: 'filtered',\n explain: (label) => `How \"${label}\" is computed`,\n attention: 'needs action',\n },\n delta: { up: 'up', down: 'down', flat: 'no change' },\n agentOutput: {\n outcome: { completed: 'completed', failed: 'failed', pending: 'pending' },\n duration: (d) => `took ${d}`,\n },\n recordCard: { cancel: 'Cancel', working: 'Working' },\n contact: { email: 'E-mail', phone: 'Phone' },\n insight: {\n actions: 'Actions on this proposal',\n pending: 'Working',\n proposedBy: 'Proposed by',\n failed: 'The action could not be completed.',\n },\n ticker: { value: 'value', change: 'change', empty: 'No entries to show.', loading: 'Loading entries' },\n}\n\nexport const dataBPtBR: DataBMessages = {\n statTile: {\n filtered: 'filtrado',\n explain: (label) => `Como \"${label}\" é calculado`,\n attention: 'pede ação',\n },\n delta: { up: 'subiu', down: 'caiu', flat: 'sem mudança' },\n agentOutput: {\n outcome: { completed: 'concluída', failed: 'falhou', pending: 'pendente' },\n duration: (d) => `levou ${d}`,\n },\n recordCard: { cancel: 'Cancelar', working: 'Processando' },\n contact: { email: 'E-mail', phone: 'Telefone' },\n insight: {\n actions: 'Ações sobre esta proposta',\n pending: 'Processando',\n proposedBy: 'Proposta de',\n failed: 'Não foi possível concluir a ação.',\n },\n ticker: { value: 'valor', change: 'variação', empty: 'Nenhuma entrada para mostrar.', loading: 'Carregando entradas' },\n}\n\nexport const dataBEs: DataBMessages = {\n statTile: {\n filtered: 'filtrado',\n explain: (label) => `Cómo se calcula «${label}»`,\n attention: 'requiere acción',\n },\n delta: { up: 'subió', down: 'bajó', flat: 'sin cambios' },\n agentOutput: {\n outcome: { completed: 'completada', failed: 'falló', pending: 'pendiente' },\n duration: (d) => `tardó ${d}`,\n },\n recordCard: { cancel: 'Cancelar', working: 'Procesando' },\n contact: { email: 'Correo electrónico', phone: 'Teléfono' },\n insight: {\n actions: 'Acciones sobre esta propuesta',\n pending: 'Procesando',\n proposedBy: 'Propuesta de',\n failed: 'No se pudo completar la acción.',\n },\n ticker: { value: 'valor', change: 'variación', empty: 'No hay entradas para mostrar.', loading: 'Cargando entradas' },\n}\n","// Copy of the \"charts-geo\" group (wave 2/4): Chart, ReportView,\n// LiveReportView, RegionMap and the subdivision kinds of RegionThemeData.\n// English, Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport type SubdivisionKind =\n | 'state'\n | 'province'\n | 'region'\n | 'department'\n | 'governorate'\n | 'prefecture'\n | 'county'\n | 'voivodeship'\n | 'district'\n | 'nation'\n\nexport type RunPhase = 'pending' | 'running' | 'paused' | 'completed' | 'failed' | 'cancelled'\nexport type RunStepState = 'running' | 'done' | 'failed' | 'paused'\n\nexport interface ChartsGeoMessages {\n chart: {\n viewSwitch: string\n chartView: string\n tableView: string\n noData: string\n noDataHint: string\n /** Accessible description of the interactive plot. */\n plotHint: (title: string) => string\n readout: (category: string, series: string, value: string) => string\n missing: string\n categoryColumn: string\n legend: string\n }\n report: {\n empty: string\n emptyHint: string\n noValue: string\n recommendation: string\n unknownSection: (kind: string) => string\n inputRequestPending: string\n receipt: { description: string; quantity: string; unitPrice: string; total: string; subtotal: string; tax: string; grandTotal: string }\n approval: Record<'approved' | 'rejected' | 'pending', string> & { by: (who: string) => string; prompt: string; reason: string }\n document: { identifier: string; accessKey: string; number: string; series: string; environment: string; open: string }\n lifecycle: Record<'complete' | 'current' | 'upcoming', string>\n score: { outOf: (score: number) => string; reasoning: string }\n /** Receives the number of seconds; the catalogue formats it with Intl. */\n duration: (seconds: number) => string\n meta: string\n }\n liveReport: {\n phase: Record<RunPhase, string>\n step: Record<RunStepState, string>\n steps: string\n waiting: string\n pausedWaiting: string\n failed: string\n approve: string\n reject: string\n }\n regionMap: {\n map: string\n zoomIn: string\n zoomOut: string\n zoomValue: (percent: number) => string\n legendTitle: string\n more: (n: number) => string\n regionList: string\n regionItems: (name: string, count: number) => string\n loadError: string\n loading: string\n }\n regionKind: Record<SubdivisionKind, string>\n}\n\nexport const chartsGeoEn: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Show as',\n chartView: 'Chart',\n tableView: 'Table',\n noData: 'No data to plot',\n noDataHint: 'The chart appears once the analysis returns values.',\n plotHint: (title) => `${title}. Use the arrow keys to read each value.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'no value',\n categoryColumn: 'Category',\n legend: 'Legend',\n },\n report: {\n empty: 'This report is empty',\n emptyHint: 'Content appears here when the run produces it.',\n noValue: 'no value',\n recommendation: 'Recommendation',\n unknownSection: (kind) => `Section of an unknown kind (${kind})`,\n inputRequestPending: 'Waiting for input',\n receipt: {\n description: 'Description',\n quantity: 'Quantity',\n unitPrice: 'Unit price',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Tax',\n grandTotal: 'Total due',\n },\n approval: { approved: 'Approved', rejected: 'Rejected', pending: 'Pending', by: (who) => `by ${who}`, prompt: 'Original request', reason: 'Reason' },\n document: { identifier: 'Identifier', accessKey: 'Access key', number: 'Number', series: 'Series', environment: 'Environment', open: 'Open document' },\n lifecycle: { complete: 'complete', current: 'current', upcoming: 'upcoming' },\n score: { outOf: (score) => `${new Intl.NumberFormat('en').format(score)} of ${new Intl.NumberFormat('en').format(100)}`, reasoning: 'Reasoning' },\n duration: (s) => new Intl.NumberFormat('en', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Report details',\n },\n liveReport: {\n phase: { pending: 'Pending', running: 'Running', paused: 'Paused', completed: 'Completed', failed: 'Failed', cancelled: 'Cancelled' },\n step: { running: 'running', done: 'done', failed: 'failed', paused: 'paused' },\n steps: 'Steps',\n waiting: 'Waiting for data',\n pausedWaiting: 'Paused, waiting for input',\n failed: 'The run failed',\n approve: 'Approve',\n reject: 'Reject',\n },\n regionMap: {\n map: 'Map of regions',\n zoomIn: 'Zoom in',\n zoomOut: 'Zoom out',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('en', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regions with most items',\n more: (n) => `+${new Intl.NumberFormat('en').format(n)} more`,\n regionList: 'Regions',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('en').format(count)} ${new Intl.PluralRules('en').select(count) === 'one' ? 'item' : 'items'}`,\n loadError: 'The map shapes could not be loaded. The list of regions still works.',\n loading: 'Loading the map',\n },\n regionKind: {\n state: 'State',\n province: 'Province',\n region: 'Region',\n department: 'Department',\n governorate: 'Governorate',\n prefecture: 'Prefecture',\n county: 'County',\n voivodeship: 'Voivodeship',\n district: 'District',\n nation: 'Nation',\n },\n}\n\nexport const chartsGeoPtBR: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Mostrar como',\n chartView: 'Gráfico',\n tableView: 'Tabela',\n noData: 'Sem dados para o gráfico',\n noDataHint: 'O gráfico aparece quando a análise devolver valores.',\n plotHint: (title) => `${title}. Use as setas para ler cada valor.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'sem valor',\n categoryColumn: 'Categoria',\n legend: 'Legenda',\n },\n report: {\n empty: 'Este relatório está vazio',\n emptyHint: 'O conteúdo aparece aqui quando a execução o produzir.',\n noValue: 'sem valor',\n recommendation: 'Recomendação',\n unknownSection: (kind) => `Seção de tipo desconhecido (${kind})`,\n inputRequestPending: 'Aguardando resposta',\n receipt: {\n description: 'Descrição',\n quantity: 'Quantidade',\n unitPrice: 'Preço unitário',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Imposto',\n grandTotal: 'Total devido',\n },\n approval: { approved: 'Aprovado', rejected: 'Rejeitado', pending: 'Pendente', by: (who) => `por ${who}`, prompt: 'Pedido original', reason: 'Motivo' },\n document: { identifier: 'Identificador', accessKey: 'Chave de acesso', number: 'Número', series: 'Série', environment: 'Ambiente', open: 'Abrir documento' },\n lifecycle: { complete: 'concluída', current: 'atual', upcoming: 'próxima' },\n score: { outOf: (score) => `${new Intl.NumberFormat('pt-BR').format(score)} de ${new Intl.NumberFormat('pt-BR').format(100)}`, reasoning: 'Justificativa' },\n duration: (s) => new Intl.NumberFormat('pt-BR', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Detalhes do relatório',\n },\n liveReport: {\n phase: { pending: 'Pendente', running: 'Em execução', paused: 'Pausada', completed: 'Concluída', failed: 'Falhou', cancelled: 'Cancelada' },\n step: { running: 'em execução', done: 'concluído', failed: 'falhou', paused: 'pausado' },\n steps: 'Passos',\n waiting: 'Aguardando dados',\n pausedWaiting: 'Pausada, aguardando resposta',\n failed: 'A execução falhou',\n approve: 'Aprovar',\n reject: 'Rejeitar',\n },\n regionMap: {\n map: 'Mapa das regiões',\n zoomIn: 'Aproximar',\n zoomOut: 'Afastar',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('pt-BR', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regiões com mais itens',\n more: (n) => `+${new Intl.NumberFormat('pt-BR').format(n)} outras`,\n regionList: 'Regiões',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('pt-BR').format(count)} ${new Intl.PluralRules('pt-BR').select(count) === 'one' ? 'item' : 'itens'}`,\n loadError: 'Não foi possível carregar as formas do mapa. A lista de regiões continua funcionando.',\n loading: 'Carregando o mapa',\n },\n regionKind: {\n state: 'Estado',\n province: 'Província',\n region: 'Região',\n department: 'Departamento',\n governorate: 'Governadoria',\n prefecture: 'Prefeitura',\n county: 'Condado',\n voivodeship: 'Voivodia',\n district: 'Distrito',\n nation: 'Nação',\n },\n}\n\nexport const chartsGeoEs: ChartsGeoMessages = {\n chart: {\n viewSwitch: 'Mostrar como',\n chartView: 'Gráfico',\n tableView: 'Tabla',\n noData: 'No hay datos para el gráfico',\n noDataHint: 'El gráfico aparece cuando el análisis devuelve valores.',\n plotHint: (title) => `${title}. Use las flechas para leer cada valor.`,\n readout: (category, series, value) => `${category}, ${series}: ${value}`,\n missing: 'sin valor',\n categoryColumn: 'Categoría',\n legend: 'Leyenda',\n },\n report: {\n empty: 'Este informe está vacío',\n emptyHint: 'El contenido aparece aquí cuando la ejecución lo produce.',\n noValue: 'sin valor',\n recommendation: 'Recomendación',\n unknownSection: (kind) => `Sección de un tipo desconocido (${kind})`,\n inputRequestPending: 'Esperando respuesta',\n receipt: {\n description: 'Descripción',\n quantity: 'Cantidad',\n unitPrice: 'Precio unitario',\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Impuesto',\n grandTotal: 'Total a pagar',\n },\n approval: { approved: 'Aprobado', rejected: 'Rechazado', pending: 'Pendiente', by: (who) => `por ${who}`, prompt: 'Solicitud original', reason: 'Motivo' },\n document: { identifier: 'Identificador', accessKey: 'Clave de acceso', number: 'Número', series: 'Serie', environment: 'Entorno', open: 'Abrir documento' },\n lifecycle: { complete: 'concluida', current: 'actual', upcoming: 'siguiente' },\n score: { outOf: (score) => `${new Intl.NumberFormat('es').format(score)} de ${new Intl.NumberFormat('es').format(100)}`, reasoning: 'Justificación' },\n duration: (s) => new Intl.NumberFormat('es', { style: 'unit', unit: 'second', unitDisplay: 'short' }).format(s),\n meta: 'Detalles del informe',\n },\n liveReport: {\n phase: { pending: 'Pendiente', running: 'En ejecución', paused: 'En pausa', completed: 'Completada', failed: 'Falló', cancelled: 'Cancelada' },\n step: { running: 'en ejecución', done: 'hecho', failed: 'falló', paused: 'en pausa' },\n steps: 'Pasos',\n waiting: 'Esperando datos',\n pausedWaiting: 'En pausa, esperando respuesta',\n failed: 'La ejecución falló',\n approve: 'Aprobar',\n reject: 'Rechazar',\n },\n regionMap: {\n map: 'Mapa de las regiones',\n zoomIn: 'Acercar',\n zoomOut: 'Alejar',\n zoomValue: (p) => `Zoom ${new Intl.NumberFormat('es', { style: 'percent' }).format(p / 100)}`,\n legendTitle: 'Regiones con más elementos',\n more: (n) => `+${new Intl.NumberFormat('es').format(n)} más`,\n regionList: 'Regiones',\n regionItems: (name, count) => `${name}, ${new Intl.NumberFormat('es').format(count)} ${new Intl.PluralRules('es').select(count) === 'one' ? 'elemento' : 'elementos'}`,\n loadError: 'No se pudieron cargar las formas del mapa. La lista de regiones sigue funcionando.',\n loading: 'Cargando el mapa',\n },\n regionKind: {\n state: 'Estado',\n province: 'Provincia',\n region: 'Región',\n department: 'Departamento',\n governorate: 'Gobernación',\n prefecture: 'Prefectura',\n county: 'Condado',\n voivodeship: 'Voivodato',\n district: 'Distrito',\n nation: 'Nación',\n },\n}\n","// Copy of the \"auth-brand\" group (wave 2/4). One namespace per component,\n// English, Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport type HttpErrorKind = 'not-found' | 'bad-request' | 'server-error'\n\ninterface PageCopy {\n title: string\n message: string\n}\n\nexport interface AuthBrandMessages {\n brand: { productName: string }\n federatedSignIn: { continueWith: (provider: string) => string; groupLabel: string }\n providerMark: { otherProvider: string }\n upgradeGate: {\n eyebrow: string\n title: string\n description: string\n cannotDismiss: string\n noticeTitle: string\n noticeBody: string\n viewPlans: string\n signOut: string\n }\n httpError: Record<HttpErrorKind, PageCopy> & { codeLabel: (code: number) => string; problemType: string }\n routeProgress: { label: string }\n consent: { label: string; message: string; learnMore: string; accept: string; reject: string }\n environment: {\n label: string\n message: string\n appName: string\n port: string\n apiBase: string\n email: string\n role: string\n }\n legalDocument: { contents: string; showContents: string }\n}\n\nexport const authBrandEn: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continue with ${p}`, groupLabel: 'Other ways to sign in' },\n providerMark: { otherProvider: 'Other provider' },\n upgradeGate: {\n eyebrow: 'Subscription',\n title: 'Your organisation has no active plan',\n description: 'Choose a plan to keep working. This screen stays until a plan is active.',\n cannotDismiss: 'This message cannot be closed.',\n noticeTitle: 'Projects are read only',\n noticeBody: 'You can still sign out. Research data is kept and nothing is deleted.',\n viewPlans: 'View plans',\n signOut: 'Sign out',\n },\n httpError: {\n 'not-found': { title: 'Page not found', message: 'The address may be wrong, or the page was moved or removed.' },\n 'bad-request': { title: 'The request could not be read', message: 'Something in the address or the form was not understood. Check it and try again.' },\n 'server-error': { title: 'The server failed', message: 'The server could not complete the request. Try again in a moment.' },\n codeLabel: (code) => `Error ${code}`,\n problemType: 'Problem type',\n },\n routeProgress: { label: 'Loading page' },\n consent: {\n label: 'Cookie choice',\n message: 'We use essential cookies to keep you signed in. With your consent we also measure how the platform is used.',\n learnMore: 'Privacy policy',\n accept: 'Accept measurement',\n reject: 'Only essential cookies',\n },\n environment: {\n label: 'Environment',\n message: 'Not the production platform. Data may be simulated.',\n appName: 'App',\n port: 'Port',\n apiBase: 'API',\n email: 'User',\n role: 'Role',\n },\n legalDocument: { contents: 'Contents', showContents: 'Show contents' },\n}\n\nexport const authBrandPtBR: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continuar com ${p}`, groupLabel: 'Outras formas de entrar' },\n providerMark: { otherProvider: 'Outro provedor' },\n upgradeGate: {\n eyebrow: 'Assinatura',\n title: 'Sua organização não tem plano ativo',\n description: 'Escolha um plano para continuar. Esta tela fica até que um plano esteja ativo.',\n cannotDismiss: 'Esta mensagem não pode ser fechada.',\n noticeTitle: 'Os projetos estão só para leitura',\n noticeBody: 'Você ainda pode sair. Os dados da pesquisa são mantidos e nada é apagado.',\n viewPlans: 'Ver planos',\n signOut: 'Sair',\n },\n httpError: {\n 'not-found': { title: 'Página não encontrada', message: 'O endereço pode estar errado, ou a página foi movida ou removida.' },\n 'bad-request': { title: 'O pedido não pôde ser lido', message: 'Algo no endereço ou no formulário não foi entendido. Confira e tente de novo.' },\n 'server-error': { title: 'O servidor falhou', message: 'O servidor não concluiu o pedido. Tente de novo em instantes.' },\n codeLabel: (code) => `Erro ${code}`,\n problemType: 'Tipo do problema',\n },\n routeProgress: { label: 'Carregando a página' },\n consent: {\n label: 'Escolha de cookies',\n message: 'Usamos cookies essenciais para manter você conectado. Com seu consentimento, também medimos como a plataforma é usada.',\n learnMore: 'Política de privacidade',\n accept: 'Aceitar medição',\n reject: 'Só cookies essenciais',\n },\n environment: {\n label: 'Ambiente',\n message: 'Não é a plataforma de produção. Os dados podem ser simulados.',\n appName: 'App',\n port: 'Porta',\n apiBase: 'API',\n email: 'Usuário',\n role: 'Papel',\n },\n legalDocument: { contents: 'Sumário', showContents: 'Mostrar sumário' },\n}\n\nexport const authBrandEs: AuthBrandMessages = {\n brand: { productName: 'Tympan' },\n federatedSignIn: { continueWith: (p) => `Continuar con ${p}`, groupLabel: 'Otras formas de iniciar sesión' },\n providerMark: { otherProvider: 'Otro proveedor' },\n upgradeGate: {\n eyebrow: 'Suscripción',\n title: 'Su organización no tiene un plan activo',\n description: 'Elija un plan para seguir trabajando. Esta pantalla permanece hasta que haya un plan activo.',\n cannotDismiss: 'Este mensaje no se puede cerrar.',\n noticeTitle: 'Los proyectos son de solo lectura',\n noticeBody: 'Todavía puede cerrar la sesión. Los datos de la investigación se conservan y no se borra nada.',\n viewPlans: 'Ver planes',\n signOut: 'Cerrar sesión',\n },\n httpError: {\n 'not-found': { title: 'Página no encontrada', message: 'La dirección puede estar mal, o la página se movió o se eliminó.' },\n 'bad-request': { title: 'No se pudo leer la solicitud', message: 'Algo en la dirección o en el formulario no se entendió. Revíselo e inténtelo de nuevo.' },\n 'server-error': { title: 'El servidor falló', message: 'El servidor no completó la solicitud. Inténtelo de nuevo en un momento.' },\n codeLabel: (code) => `Error ${code}`,\n problemType: 'Tipo de problema',\n },\n routeProgress: { label: 'Cargando la página' },\n consent: {\n label: 'Elección de cookies',\n message: 'Usamos cookies esenciales para mantener su sesión. Con su consentimiento también medimos cómo se usa la plataforma.',\n learnMore: 'Política de privacidad',\n accept: 'Aceptar la medición',\n reject: 'Solo cookies esenciales',\n },\n environment: {\n label: 'Entorno',\n message: 'No es la plataforma de producción. Los datos pueden ser simulados.',\n appName: 'Aplicación',\n port: 'Puerto',\n apiBase: 'API',\n email: 'Usuario',\n role: 'Rol',\n },\n legalDocument: { contents: 'Índice', showContents: 'Mostrar el índice' },\n}\n","// Copy of the \"platform\" group (wave 2/4). One namespace per component, English,\n// Brazilian Portuguese and Spanish. Merged into `Messages` by ../messages.ts.\n\nexport interface PlatformMessages {\n formatters: { placeholder: string }\n swipeRow: {\n actionsFor: (row: string) => string\n delete: string\n archive: string\n edit: string\n favourite: string\n }\n pullToRefresh: { refreshing: string }\n glassCheck: { label: string; notApplicable: string }\n}\n\nexport const platformEn: PlatformMessages = {\n formatters: { placeholder: 'not informed' },\n swipeRow: {\n actionsFor: (row) => `Actions for ${row}`,\n delete: 'Delete',\n archive: 'Archive',\n edit: 'Edit',\n favourite: 'Favourite',\n },\n pullToRefresh: { refreshing: 'Refreshing' },\n glassCheck: {\n label: 'Glass check',\n notApplicable: 'Surfaces are opaque in this display mode, so the check does not apply.',\n },\n}\n\nexport const platformPtBR: PlatformMessages = {\n formatters: { placeholder: 'não informado' },\n swipeRow: {\n actionsFor: (row) => `Ações de ${row}`,\n delete: 'Excluir',\n archive: 'Arquivar',\n edit: 'Editar',\n favourite: 'Favoritar',\n },\n pullToRefresh: { refreshing: 'Atualizando' },\n glassCheck: {\n label: 'Teste do vidro',\n notApplicable: 'As superfícies ficam opacas neste modo de exibição, então o teste não se aplica.',\n },\n}\n\nexport const platformEs: PlatformMessages = {\n formatters: { placeholder: 'no informado' },\n swipeRow: {\n actionsFor: (row) => `Acciones de ${row}`,\n delete: 'Eliminar',\n archive: 'Archivar',\n edit: 'Editar',\n favourite: 'Marcar como favorito',\n },\n pullToRefresh: { refreshing: 'Actualizando' },\n glassCheck: {\n label: 'Prueba del vidrio',\n notApplicable: 'Las superficies son opacas en este modo de visualización, así que la prueba no se aplica.',\n },\n}\n","// Copy of the \"showcase\" group (wave 2/4). One namespace per component, English\n// and Brazilian Portuguese. Merged into `Messages` by ../messages.ts.\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ShowcaseMessages {}\n\nexport const showcaseEn: ShowcaseMessages = {}\n\nexport const showcasePtBR: ShowcaseMessages = {}\n\n/** Spanish (placeholder until translated: falls back to English). */\nexport const showcaseEs: ShowcaseMessages = showcaseEn\n","// Copy of the \"shell\" group (wave 4 research shell). One namespace per\n// component, English and Brazilian Portuguese. Merged into `Messages` by\n// ../messages.ts.\n\nexport type StageStatus = 'done' | 'current' | 'upcoming' | 'attention'\n\nexport interface ShellMessages {\n actionBar: {\n /** Landmark name of the bar. */\n label: string\n more: string\n /** Accessible name of an item's menu chevron. */\n openMenu: (item: string) => string\n /** Count in words, appended to the item name. */\n count: (n: number) => string\n loading: string\n /** Skip-link text targeting the bar. */\n skipTo: string\n /** Entry of the tab bar's \"more\" menu that opens the rail drawer. */\n allSections: string\n confirm: string\n cancel: string\n /** Capped badge; receives the formatted cap (for example \"99\"). */\n capped: (cap: string) => string\n }\n rail: {\n label: string\n openNavigation: string\n closeNavigation: string\n count: (n: number) => string\n capped: (cap: string) => string\n }\n pageTrail: { label: string }\n evidencePanel: { close: string; resize: string }\n stageStrip: { status: Record<StageStatus, string> }\n attentionList: {\n empty: string\n seeAll: string\n actionName: (action: string, title: string) => string\n /** Visually hidden suffix that makes an action's name unique (\": TAMM\"). */\n actionTarget: (title: string) => string\n }\n activityFeed: { empty: string }\n phaseBar: { part: (label: string, value: string) => string; empty: string; named: (label: string, parts: string) => string }\n}\n\nexport const shellEn: ShellMessages = {\n actionBar: {\n label: 'Actions',\n more: 'More',\n openMenu: (item) => `Open the menu of ${item}`,\n count: (n) => (new Intl.PluralRules('en').select(n) === 'one' ? `${n} pending` : `${n} pending`),\n loading: 'Loading actions',\n skipTo: 'Skip to the action bar',\n allSections: 'All sections',\n confirm: 'Confirm',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancel',\n },\n rail: {\n label: 'Main',\n openNavigation: 'Open navigation',\n closeNavigation: 'Close navigation',\n count: (n) => (new Intl.PluralRules('en').select(n) === 'one' ? `${n} pending` : `${n} pending`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Breadcrumb' },\n evidencePanel: { close: 'Close panel', resize: 'Resize panel' },\n stageStrip: { status: { done: 'done', current: 'current', upcoming: 'upcoming', attention: 'needs attention' } },\n attentionList: {\n empty: 'Nothing needs you right now.',\n seeAll: 'See all',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'No activity yet.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'No data yet', named: (label, parts) => `${label}: ${parts}` },\n}\n\nexport const shellPtBR: ShellMessages = {\n actionBar: {\n label: 'Ações',\n more: 'Mais',\n openMenu: (item) => `Abrir o menu de ${item}`,\n count: (n) => (new Intl.PluralRules('pt-BR').select(n) === 'one' ? `${n} pendente` : `${n} pendentes`),\n loading: 'Carregando as ações',\n skipTo: 'Ir para a barra de ações',\n allSections: 'Todas as seções',\n confirm: 'Confirmar',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancelar',\n },\n rail: {\n label: 'Principal',\n openNavigation: 'Abrir navegação',\n closeNavigation: 'Fechar navegação',\n count: (n) => (new Intl.PluralRules('pt-BR').select(n) === 'one' ? `${n} pendente` : `${n} pendentes`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Trilha de navegação' },\n evidencePanel: { close: 'Fechar painel', resize: 'Redimensionar painel' },\n stageStrip: { status: { done: 'concluída', current: 'em curso', upcoming: 'a seguir', attention: 'pede atenção' } },\n attentionList: {\n empty: 'Nada precisa de você agora.',\n seeAll: 'Ver tudo',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'Ainda não há atividade.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'Ainda sem dados', named: (label, parts) => `${label}: ${parts}` },\n}\n\nexport const shellEs: ShellMessages = {\n actionBar: {\n label: 'Acciones',\n more: 'Más',\n openMenu: (item) => `Abrir el menú de ${item}`,\n count: (n) => (new Intl.PluralRules('es').select(n) === 'one' ? `${n} pendiente` : `${n} pendientes`),\n loading: 'Cargando las acciones',\n skipTo: 'Ir a la barra de acciones',\n allSections: 'Todas las secciones',\n confirm: 'Confirmar',\n capped: (cap) => `${cap}+`,\n cancel: 'Cancelar',\n },\n rail: {\n label: 'Principal',\n openNavigation: 'Abrir navegación',\n closeNavigation: 'Cerrar navegación',\n count: (n) => (new Intl.PluralRules('es').select(n) === 'one' ? `${n} pendiente` : `${n} pendientes`),\n capped: (cap) => `${cap}+`,\n },\n pageTrail: { label: 'Ruta de navegación' },\n evidencePanel: { close: 'Cerrar panel', resize: 'Redimensionar panel' },\n stageStrip: { status: { done: 'concluida', current: 'en curso', upcoming: 'siguiente', attention: 'requiere atención' } },\n attentionList: {\n empty: 'Nada requiere su atención ahora.',\n seeAll: 'Ver todo',\n actionName: (action, title) => `${action}: ${title}`,\n actionTarget: (title) => `: ${title}`,\n },\n activityFeed: { empty: 'Todavía no hay actividad.' },\n phaseBar: { part: (label, value) => `${label} ${value}`, empty: 'Todavía sin datos', named: (label, parts) => `${label}: ${parts}` },\n}\n","// Spanish copy of the wave-1 core catalogue (the groups ship their own `xEs`).\nimport type { CoreMessages } from '../messages'\nimport { speaker } from './plural'\n\nconst es = speaker('es')\n\nexport const coreEs: CoreMessages = {\n close: 'Cerrar',\n dismiss: 'Descartar',\n loading: 'Cargando',\n required: 'obligatorio',\n moreActions: 'Más acciones',\n inProgress: 'En curso',\n breadcrumbs: { label: 'Ruta de navegación', backTo: (p) => `Volver a ${p}`, overflow: 'Mostrar niveles ocultos' },\n link: { opensInNewTab: '(se abre en una pestaña nueva)' },\n textField: {\n clear: 'Borrar',\n showPassword: 'Mostrar contraseña',\n hidePassword: 'Ocultar contraseña',\n counter: (n, max) => `${es.n(n)} de ${es.n(max)} ${es.word(max, { one: 'carácter', other: 'caracteres' })}`,\n overLimit: (n, max) =>\n `${es.n(n)} de ${es.n(max)} ${es.word(max, { one: 'carácter', other: 'caracteres' })}, ${es.n(n - max)} por encima del límite`,\n },\n select: { placeholder: 'Seleccione…', done: 'Listo' },\n calendar: {\n previousMonth: (target) => `Mes anterior, ${target}`,\n nextMonth: (target) => `Mes siguiente, ${target}`,\n monthPicker: 'Mes',\n yearPicker: 'Año',\n },\n dateRangeField: {\n start: 'Fecha inicial',\n end: 'Fecha final',\n presets: 'Períodos rápidos',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n endBeforeStart: 'La fecha final es anterior a la fecha inicial.',\n tooManyDays: (max) => `El período es más largo que ${es.n(max)} ${es.word(max, { one: 'día', other: 'días' })}.`,\n unavailableDay: 'El período incluye un día que no se puede elegir.',\n outOfBounds: 'El período incluye un día fuera de las fechas permitidas.',\n },\n notice: { toneWord: { danger: 'Error:', warning: 'Atención:', info: 'Información:', success: 'Éxito:' } },\n empty: {\n 'no-data': { title: 'Todavía no hay nada aquí', description: 'Los elementos aparecen aquí cuando se agregan.' },\n 'no-results': { title: 'Ningún registro con estos filtros', description: 'Cambie los filtros o bórrelos para ver todos los registros.' },\n offline: { title: 'Está sin conexión', description: 'Compruebe la conexión e inténtelo de nuevo.' },\n clearFilters: 'Borrar filtros',\n retry: 'Intentar de nuevo',\n },\n error: {\n generic: { title: 'Algo salió mal', message: 'No se pudo cargar el contenido.' },\n network: { title: 'Problema de conexión', message: 'No se pudo contactar con el servidor. Compruebe la conexión e inténtelo de nuevo.' },\n server: { title: 'El servidor falló', message: 'El servidor no completó la solicitud. Inténtelo de nuevo en un momento.' },\n permission: { title: 'Sin acceso', message: 'Su rol no permite ver este contenido.' },\n 'not-found': { title: 'No encontrado', message: 'Este elemento no existe o fue eliminado.' },\n conflict: { title: 'Modificado por otra persona', message: 'Alguien modificó este elemento antes que usted. Recárguelo para ver la versión actual.' },\n retry: 'Intentar de nuevo',\n details: 'Detalles técnicos',\n statusCode: (code) => `Código ${code}`,\n },\n pagination: {\n navigation: 'Paginación',\n previous: 'Anterior',\n next: 'Siguiente',\n pageSize: 'Elementos por página',\n range: (from, to, total) => `${es.n(from)} a ${es.n(to)} de ${es.n(total)}`,\n page: (n) => `Página ${es.n(n)}`,\n pageOf: (n, count) => `Página ${es.n(n)} de ${es.n(count)}`,\n },\n skipLink: 'Ir al contenido',\n status: {\n pending: 'Pendiente',\n approved: 'Aprobado',\n rejected: 'Rechazado',\n active: 'Activo',\n inactive: 'Inactivo',\n processing: 'Procesando',\n error: 'Error',\n success: 'Éxito',\n },\n tag: { remove: (text) => `Quitar ${text}` },\n toast: { region: 'Notificaciones', dismiss: 'Descartar notificación' },\n avatar: { open: (name) => `Abrir el perfil de ${name}` },\n frame: {\n navigation: 'Principal',\n openNavigation: 'Abrir navegación',\n closeNavigation: 'Cerrar navegación',\n collapseNavigation: 'Contraer navegación',\n expandNavigation: 'Expandir navegación',\n loadingPage: 'Cargando la página',\n closePanel: 'Cerrar panel',\n },\n table: {\n loading: 'Cargando la lista',\n selectAll: 'Seleccionar todas las filas',\n selectRow: (label) => `Seleccionar ${label}`,\n empty: 'No hay filas para mostrar',\n sortAscending: 'en orden ascendente',\n sortDescending: 'en orden descendente',\n },\n proof: {\n proved: 'probada',\n pending: 'pendiente',\n refuted: 'refutada',\n not_disclosed: 'no informada',\n none: 'sin prueba',\n provedBy: (who) => `por ${who}`,\n rule: (rule) => `regla ${rule}`,\n },\n actor: { person: 'persona', agent: 'agente', system: 'sistema' },\n}\n","// Default copy of the library. Components never hard-code strings: they read\n// this catalogue through `useMessages()`, and hosts override any entry through\n// `<TympanProvider messages={…}>` (for example from their own i18n adapter).\n\nimport { formsAEn, formsAEs, formsAPtBR, type FormsAMessages } from './messages/forms-a'\nimport { formsBEn, formsBEs, formsBPtBR, type FormsBMessages } from './messages/forms-b'\nimport { overlaysNavEn, overlaysNavEs, overlaysNavPtBR, type OverlaysNavMessages } from './messages/overlays-nav'\nimport { dataAEn, dataAEs, dataAPtBR, type DataAMessages } from './messages/data-a'\nimport { dataBEn, dataBEs, dataBPtBR, type DataBMessages } from './messages/data-b'\nimport { chartsGeoEn, chartsGeoEs, chartsGeoPtBR, type ChartsGeoMessages } from './messages/charts-geo'\nimport { authBrandEn, authBrandEs, authBrandPtBR, type AuthBrandMessages } from './messages/auth-brand'\nimport { platformEn, platformEs, platformPtBR, type PlatformMessages } from './messages/platform'\nimport { showcaseEn, showcaseEs, showcasePtBR, type ShowcaseMessages } from './messages/showcase'\nimport { shellEn, shellEs, shellPtBR, type ShellMessages } from './messages/shell'\nimport { coreEs } from './messages/core-es'\nimport { speaker } from './messages/plural'\n\nconst en = speaker('en')\nconst pt = speaker('pt-BR')\n\nexport type ProofStateKey = 'proved' | 'pending' | 'refuted' | 'not_disclosed' | 'none'\nexport type ErrorKind = 'generic' | 'network' | 'server' | 'permission' | 'not-found' | 'conflict'\nexport type EmptyReason = 'no-data' | 'no-results' | 'offline'\n\n/** Group catalogues of waves 2 and 4 (see ./messages/). */\nexport type GroupMessages = FormsAMessages & FormsBMessages & OverlaysNavMessages & DataAMessages & DataBMessages & ChartsGeoMessages & AuthBrandMessages & PlatformMessages & ShowcaseMessages & ShellMessages\n\n/** Wave 1 copy plus one interface per wave 2/4 group (see ./messages/). */\nexport interface Messages\n extends FormsAMessages, FormsBMessages, OverlaysNavMessages, DataAMessages, DataBMessages, ChartsGeoMessages, AuthBrandMessages, PlatformMessages, ShowcaseMessages, ShellMessages {\n close: string\n dismiss: string\n loading: string\n required: string\n moreActions: string\n inProgress: string\n breadcrumbs: { label: string; backTo: (parent: string) => string; overflow: string }\n link: { opensInNewTab: string }\n textField: {\n clear: string\n showPassword: string\n hidePassword: string\n counter: (count: number, max: number) => string\n overLimit: (count: number, max: number) => string\n }\n select: { placeholder: string; done: string }\n calendar: {\n previousMonth: (target: string) => string\n nextMonth: (target: string) => string\n monthPicker: string\n yearPicker: string\n }\n dateRangeField: {\n start: string\n end: string\n presets: string\n apply: string\n cancel: string\n endBeforeStart: string\n tooManyDays: (max: number) => string\n unavailableDay: string\n outOfBounds: string\n }\n notice: { toneWord: Record<'danger' | 'warning' | 'info' | 'success', string> }\n empty: Record<EmptyReason, { title: string; description: string }> & { clearFilters: string; retry: string }\n error: Record<ErrorKind, { title: string; message: string }> & {\n retry: string\n details: string\n statusCode: (code: number) => string\n }\n pagination: {\n navigation: string\n previous: string\n next: string\n pageSize: string\n range: (from: number, to: number, total: number) => string\n page: (n: number) => string\n pageOf: (n: number, count: number) => string\n }\n skipLink: string\n status: Record<'pending' | 'approved' | 'rejected' | 'active' | 'inactive' | 'processing' | 'error' | 'success', string>\n tag: { remove: (text: string) => string }\n toast: { region: string; dismiss: string }\n avatar: { open: (name: string) => string }\n frame: {\n navigation: string\n openNavigation: string\n closeNavigation: string\n collapseNavigation: string\n expandNavigation: string\n loadingPage: string\n closePanel: string\n }\n table: {\n loading: string\n selectAll: string\n selectRow: (label: string) => string\n empty: string\n sortAscending: string\n sortDescending: string\n }\n proof: Record<ProofStateKey, string> & {\n provedBy: (who: string) => string\n rule: (rule: string) => string\n }\n actor: { person: string; agent: string; system: string }\n}\n\nexport const defaultMessages: Messages = {\n ...formsAEn,\n ...formsBEn,\n ...overlaysNavEn,\n ...dataAEn,\n ...dataBEn,\n ...chartsGeoEn,\n ...authBrandEn,\n ...platformEn,\n ...showcaseEn,\n ...shellEn,\n close: 'Close',\n dismiss: 'Dismiss',\n loading: 'Loading',\n required: 'required',\n moreActions: 'More actions',\n inProgress: 'In progress',\n breadcrumbs: { label: 'Breadcrumb', backTo: (p) => `Back to ${p}`, overflow: 'Show hidden levels' },\n link: { opensInNewTab: '(opens in a new tab)' },\n textField: {\n clear: 'Clear',\n showPassword: 'Show password',\n hidePassword: 'Hide password',\n counter: (n, max) => `${en.n(n)} of ${en.n(max)} ${en.word(max, { one: 'character', other: 'characters' })}`,\n overLimit: (n, max) =>\n `${en.n(n)} of ${en.n(max)} ${en.word(max, { one: 'character', other: 'characters' })}, ${en.n(n - max)} over the limit`,\n },\n select: { placeholder: 'Select…', done: 'Done' },\n calendar: {\n previousMonth: (target) => `Previous month, ${target}`,\n nextMonth: (target) => `Next month, ${target}`,\n monthPicker: 'Month',\n yearPicker: 'Year',\n },\n dateRangeField: {\n start: 'Start date',\n end: 'End date',\n presets: 'Presets',\n apply: 'Apply',\n cancel: 'Cancel',\n endBeforeStart: 'The end date is before the start date.',\n tooManyDays: (max) => `The range is longer than ${en.n(max)} ${en.word(max, { one: 'day', other: 'days' })}.`,\n unavailableDay: 'The range includes a day that cannot be chosen.',\n outOfBounds: 'The range includes a day outside the allowed dates.',\n },\n notice: { toneWord: { danger: 'Error:', warning: 'Warning:', info: 'Information:', success: 'Success:' } },\n empty: {\n 'no-data': { title: 'Nothing here yet', description: 'Items appear here once they are added.' },\n 'no-results': { title: 'No records match these filters', description: 'Change the filters or clear them to see every record.' },\n offline: { title: 'You are offline', description: 'Check the connection and try again.' },\n clearFilters: 'Clear filters',\n retry: 'Try again',\n },\n error: {\n generic: { title: 'Something went wrong', message: 'The content could not be loaded.' },\n network: { title: 'Connection problem', message: 'The server could not be reached. Check the connection and try again.' },\n server: { title: 'The server failed', message: 'The server could not complete the request. Try again in a moment.' },\n permission: { title: 'No access', message: 'Your role does not allow you to see this content.' },\n 'not-found': { title: 'Not found', message: 'This item does not exist or was removed.' },\n conflict: { title: 'Changed by someone else', message: 'Someone changed this item before you. Reload it to see the latest version.' },\n retry: 'Try again',\n details: 'Technical details',\n statusCode: (code) => `Status ${code}`,\n },\n pagination: {\n navigation: 'Pagination',\n previous: 'Previous',\n next: 'Next',\n pageSize: 'Items per page',\n range: (from, to, total) => `${en.n(from)} to ${en.n(to)} of ${en.n(total)}`,\n page: (n) => `Page ${en.n(n)}`,\n pageOf: (n, count) => `Page ${en.n(n)} of ${en.n(count)}`,\n },\n skipLink: 'Skip to main content',\n status: {\n pending: 'Pending',\n approved: 'Approved',\n rejected: 'Rejected',\n active: 'Active',\n inactive: 'Inactive',\n processing: 'Processing',\n error: 'Error',\n success: 'Success',\n },\n tag: { remove: (text) => `Remove ${text}` },\n toast: { region: 'Notifications', dismiss: 'Dismiss notification' },\n avatar: { open: (name) => `Open profile of ${name}` },\n frame: {\n navigation: 'Main',\n openNavigation: 'Open navigation',\n closeNavigation: 'Close navigation',\n collapseNavigation: 'Collapse navigation',\n expandNavigation: 'Expand navigation',\n loadingPage: 'Loading the page',\n closePanel: 'Close panel',\n },\n table: {\n loading: 'Loading the list',\n selectAll: 'Select all rows',\n selectRow: (label) => `Select ${label}`,\n empty: 'No rows to show',\n sortAscending: 'sorted ascending',\n sortDescending: 'sorted descending',\n },\n proof: {\n proved: 'proved',\n pending: 'pending',\n refuted: 'refuted',\n not_disclosed: 'not disclosed',\n none: 'no proof',\n provedBy: (who) => `by ${who}`,\n rule: (rule) => `rule ${rule}`,\n },\n actor: { person: 'person', agent: 'agent', system: 'system' },\n}\n\n/** Portuguese (Brazil) catalogue, the platform's first language. */\nexport const messagesPtBR: Messages = {\n ...formsAPtBR,\n ...formsBPtBR,\n ...overlaysNavPtBR,\n ...dataAPtBR,\n ...dataBPtBR,\n ...chartsGeoPtBR,\n ...authBrandPtBR,\n ...platformPtBR,\n ...showcasePtBR,\n ...shellPtBR,\n close: 'Fechar',\n dismiss: 'Dispensar',\n loading: 'Carregando',\n required: 'obrigatório',\n moreActions: 'Mais ações',\n inProgress: 'Em andamento',\n breadcrumbs: { label: 'Trilha de navegação', backTo: (p) => `Voltar para ${p}`, overflow: 'Mostrar níveis ocultos' },\n link: { opensInNewTab: '(abre em nova aba)' },\n textField: {\n clear: 'Limpar',\n showPassword: 'Mostrar senha',\n hidePassword: 'Ocultar senha',\n counter: (n, max) => `${pt.n(n)} de ${pt.n(max)} ${pt.word(max, { one: 'caractere', other: 'caracteres' })}`,\n overLimit: (n, max) =>\n `${pt.n(n)} de ${pt.n(max)} ${pt.word(max, { one: 'caractere', other: 'caracteres' })}, ${pt.n(n - max)} acima do limite`,\n },\n select: { placeholder: 'Selecione…', done: 'Concluir' },\n calendar: {\n previousMonth: (target) => `Mês anterior, ${target}`,\n nextMonth: (target) => `Próximo mês, ${target}`,\n monthPicker: 'Mês',\n yearPicker: 'Ano',\n },\n dateRangeField: {\n start: 'Data inicial',\n end: 'Data final',\n presets: 'Períodos rápidos',\n apply: 'Aplicar',\n cancel: 'Cancelar',\n endBeforeStart: 'A data final é anterior à data inicial.',\n tooManyDays: (max) => `O período é maior que ${pt.n(max)} ${pt.word(max, { one: 'dia', other: 'dias' })}.`,\n unavailableDay: 'O período inclui um dia que não pode ser escolhido.',\n outOfBounds: 'O período inclui um dia fora das datas permitidas.',\n },\n notice: { toneWord: { danger: 'Erro:', warning: 'Atenção:', info: 'Informação:', success: 'Sucesso:' } },\n empty: {\n 'no-data': { title: 'Ainda não há nada aqui', description: 'Os itens aparecem aqui quando forem adicionados.' },\n 'no-results': { title: 'Nenhum registro com esses filtros', description: 'Mude os filtros ou limpe-os para ver todos os registros.' },\n offline: { title: 'Você está sem conexão', description: 'Confira a conexão e tente de novo.' },\n clearFilters: 'Limpar filtros',\n retry: 'Tentar de novo',\n },\n error: {\n generic: { title: 'Algo deu errado', message: 'O conteúdo não pôde ser carregado.' },\n network: { title: 'Problema de conexão', message: 'Não foi possível falar com o servidor. Confira a conexão e tente de novo.' },\n server: { title: 'O servidor falhou', message: 'O servidor não concluiu o pedido. Tente de novo em instantes.' },\n permission: { title: 'Sem acesso', message: 'Seu papel não permite ver este conteúdo.' },\n 'not-found': { title: 'Não encontrado', message: 'Este item não existe ou foi removido.' },\n conflict: { title: 'Alterado por outra pessoa', message: 'Alguém alterou este item antes de você. Recarregue para ver a versão atual.' },\n retry: 'Tentar de novo',\n details: 'Detalhes técnicos',\n statusCode: (code) => `Código ${code}`,\n },\n pagination: {\n navigation: 'Paginação',\n previous: 'Anterior',\n next: 'Próxima',\n pageSize: 'Itens por página',\n range: (from, to, total) => `${pt.n(from)} a ${pt.n(to)} de ${pt.n(total)}`,\n page: (n) => `Página ${pt.n(n)}`,\n pageOf: (n, count) => `Página ${pt.n(n)} de ${pt.n(count)}`,\n },\n skipLink: 'Ir para o conteúdo',\n status: {\n pending: 'Pendente',\n approved: 'Aprovado',\n rejected: 'Rejeitado',\n active: 'Ativo',\n inactive: 'Inativo',\n processing: 'Processando',\n error: 'Erro',\n success: 'Sucesso',\n },\n tag: { remove: (text) => `Remover ${text}` },\n toast: { region: 'Notificações', dismiss: 'Dispensar notificação' },\n avatar: { open: (name) => `Abrir perfil de ${name}` },\n frame: {\n navigation: 'Principal',\n openNavigation: 'Abrir navegação',\n closeNavigation: 'Fechar navegação',\n collapseNavigation: 'Recolher navegação',\n expandNavigation: 'Expandir navegação',\n loadingPage: 'Carregando a página',\n closePanel: 'Fechar painel',\n },\n table: {\n loading: 'Carregando a lista',\n selectAll: 'Selecionar todas as linhas',\n selectRow: (label) => `Selecionar ${label}`,\n empty: 'Nenhuma linha para mostrar',\n sortAscending: 'em ordem crescente',\n sortDescending: 'em ordem decrescente',\n },\n proof: {\n proved: 'provada',\n pending: 'pendente',\n refuted: 'refutada',\n not_disclosed: 'não informada',\n none: 'sem prova',\n provedBy: (who) => `por ${who}`,\n rule: (rule) => `regra ${rule}`,\n },\n actor: { person: 'pessoa', agent: 'agente', system: 'sistema' },\n}\n\nexport const messagesEs: Messages = {\n ...formsAEs,\n ...formsBEs,\n ...overlaysNavEs,\n ...dataAEs,\n ...dataBEs,\n ...chartsGeoEs,\n ...authBrandEs,\n ...platformEs,\n ...showcaseEs,\n ...shellEs,\n ...coreEs,\n}\n\n/** The wave-1 part of the catalogue (the keys not owned by a group). */\nexport type CoreMessages = Omit<Messages, keyof GroupMessages>\n\n/** Catalogues shipped as defaults. Other locales fall back to English copy with locale-aware formatting. */\nexport const shippedCatalogues = { en: defaultMessages, 'pt-BR': messagesPtBR, es: messagesEs } as const\n\n/** Default catalogue for a BCP 47 locale: Portuguese and Spanish by language subtag, English otherwise. */\nexport function catalogueForLocale(locale: string | undefined): Messages {\n const language = (locale ?? 'en').toLowerCase().split(/[-_]/)[0]\n return language === 'pt' ? messagesPtBR : language === 'es' ? messagesEs : defaultMessages\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends (...args: never[]) => unknown ? T[K] : T[K] extends object ? DeepPartial<T[K]> : T[K] }\nexport type MessageOverrides = DeepPartial<Messages>\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return !!v && typeof v === 'object' && !Array.isArray(v)\n}\n\nexport function mergeMessages(base: Messages, overrides?: MessageOverrides): Messages {\n if (!overrides) return base\n const walk = (a: Record<string, unknown>, b: Record<string, unknown>): Record<string, unknown> => {\n const out: Record<string, unknown> = { ...a }\n for (const [k, v] of Object.entries(b)) {\n if (v === undefined) continue\n out[k] = isPlainObject(v) && isPlainObject(a[k]) ? walk(a[k] as Record<string, unknown>, v) : v\n }\n return out\n }\n return walk(base as unknown as Record<string, unknown>, overrides as Record<string, unknown>) as unknown as Messages\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { I18nProvider, RouterProvider } from 'react-aria-components'\nimport { compileIcuMessages, pseudoLocalize, type IcuCatalogue } from './icuCatalogue'\nimport { catalogueForLocale, defaultMessages, mergeMessages, type MessageOverrides, type Messages } from './messages'\n\nconst MessagesContext = createContext<Messages>(defaultMessages)\n\nexport interface TympanProviderProps {\n /** Copy overrides, typically produced by the host's i18n adapter. */\n messages?: MessageOverrides\n /** Base catalogue to merge overrides into (defaults to the shipped catalogue of `locale`: pt, es or en). */\n baseMessages?: Messages\n /** Overrides as ICU MessageFormat strings (function keys take {0}, {1}, … positionally). */\n icuMessages?: IcuCatalogue\n /** Pseudo-localization (accented, expanded, bracketed copy) to catch clipping and hard-coded strings. */\n pseudo?: boolean\n /** Router adapter: client-side navigation for every library link. */\n navigate?: (href: string, options?: RouterNavigateOptions) => void\n /** Router adapter: converts a router href into a native href. */\n useHref?: (href: string) => string\n /** BCP 47 locale for number/date formatting and reading direction. */\n locale?: string\n children: ReactNode\n}\n\n/** Options forwarded to the router adapter by links (for example `replace`). */\nexport interface RouterNavigateOptions {\n replace?: boolean\n}\n\ndeclare module 'react-aria-components' {\n interface RouterConfig {\n routerOptions: RouterNavigateOptions\n }\n}\n\n/**\n * Root provider: supplies copy (I18n adapter) and the router adapter used by\n * every link-like component. Optional: components fall back to English copy\n * and native navigation without it.\n */\nexport function TympanProvider({ messages, baseMessages, icuMessages, pseudo = false, navigate, useHref, locale, children }: TympanProviderProps) {\n const merged = useMemo(() => {\n const base = baseMessages ?? (locale ? catalogueForLocale(locale) : defaultMessages)\n let out = mergeMessages(base, messages)\n if (icuMessages) out = mergeMessages(out, compileIcuMessages(icuMessages, out, locale ?? 'en'))\n return pseudo ? pseudoLocalize(out) : out\n }, [baseMessages, messages, icuMessages, pseudo, locale])\n let tree = <MessagesContext.Provider value={merged}>{children}</MessagesContext.Provider>\n if (navigate) {\n tree = (\n <RouterProvider navigate={navigate} {...(useHref ? { useHref } : {})}>\n {tree}\n </RouterProvider>\n )\n }\n if (locale) tree = <I18nProvider locale={locale}>{tree}</I18nProvider>\n return tree\n}\n\n/** Current copy catalogue. */\nexport function useMessages(): Messages {\n return useContext(MessagesContext)\n}\n","const isDev = (() => {\n try {\n return (globalThis as { process?: { env?: Record<string, string | undefined> } }).process?.env?.NODE_ENV !== 'production'\n } catch {\n return true\n }\n})()\n\n/** Logs a development-only warning with the library prefix. */\nexport function devWarning(condition: boolean, message: string): void {\n if (isDev && condition) console.warn(`[@datatechsolutions/tympan] ${message}`)\n}\n","import { Bot, User } from 'lucide-react'\nimport { useEffect, useState, type ReactNode } from 'react'\nimport { Button as AriaButton, Link as AriaLink, type PressEvent } from 'react-aria-components'\nimport { cx } from '../../internal/cx'\nimport { devWarning } from '../../internal/dev'\nimport { useMessages } from '../../internal/provider'\n\n/** The first `count` user-perceived characters (grapheme clusters), so marks and emoji stay whole. */\nfunction leadingGraphemes(text: string, count: number): string {\n const Segmenter = (Intl as { Segmenter?: typeof Intl.Segmenter }).Segmenter\n if (!Segmenter) return Array.from(text).slice(0, count).join('')\n let out = ''\n let taken = 0\n for (const { segment } of new Segmenter(undefined, { granularity: 'grapheme' }).segment(text)) {\n if (taken === count) break\n out += segment\n taken += 1\n }\n return out\n}\n\nexport type AvatarSize = 'xsmall' | 'small' | 'regular' | 'large'\n\nexport interface AvatarProps {\n /** Image URL; on load error the fallback shows. */\n src?: string | null\n /** One or two characters shown without an image (derived by the host from a name). */\n fallbackText?: string\n /** Accessible name; required unless `decorative`. */\n name?: string\n /** Hides the avatar from assistive tech when the name is shown next to it. */\n decorative?: boolean\n /** Person: circle with initials. Agent: rounded square, bot icon, dashed border, never initials (§2.11). */\n actorKind?: 'person' | 'agent'\n size?: AvatarSize\n /** Fallback background: accent-soft or neutral. */\n tint?: 'accent' | 'neutral'\n /**\n * Artwork drawn when there is no image (or the image fails): a generated\n * avatar (`@datatechsolutions/tympan/avatars`) or the host's own. It replaces\n * the initials and the agent bot icon and is always decorative; the frame\n * carries the name. Without it (or when it is null) the fallback shows.\n */\n artwork?: ReactNode\n /** Makes the avatar a button. */\n onPress?: (e: PressEvent) => void\n /** Makes the avatar a link (router adapter). */\n href?: string\n className?: string\n}\n\n/** Person or agent picture with fallback (spec: wave-1/avatar.md; design direction §2.11). */\nexport function Avatar({ src, fallbackText, name, decorative = false, actorKind = 'person', size = 'regular', tint = 'accent', artwork, onPress, href, className }: AvatarProps) {\n const messages = useMessages()\n const [failed, setFailed] = useState(false)\n useEffect(() => setFailed(false), [src])\n const pressable = !!(onPress || href)\n devWarning(!decorative && !name, 'Avatar: `name` is required unless `decorative`.')\n\n const isAgent = actorKind === 'agent'\n const showImage = !!src && !failed\n const showArtwork = !showImage && artwork != null\n // Inside a pressable wrapper the visual is decorative: the control carries the name.\n const hidden = decorative || pressable\n\n let inner\n if (showImage) {\n inner = <img className=\"ty-avatar__image\" src={src ?? undefined} alt={hidden ? '' : (name ?? '')} onError={() => setFailed(true)} />\n } else if (showArtwork) {\n inner = artwork\n } else if (isAgent) {\n inner = <Bot className=\"ty-avatar__icon\" aria-hidden=\"true\" focusable=\"false\" />\n } else if (fallbackText) {\n inner = (\n <span className=\"ty-avatar__initials\" aria-hidden=\"true\">\n {leadingGraphemes(fallbackText, 2)}\n </span>\n )\n } else {\n inner = <User className=\"ty-avatar__icon\" aria-hidden=\"true\" focusable=\"false\" />\n }\n\n const visual = (\n <span\n className={cx('ty-avatar', !pressable && className)}\n data-kind={actorKind}\n data-size={size}\n data-tint={tint}\n data-image={showImage || undefined}\n data-artwork={showArtwork || undefined}\n aria-hidden={hidden ? true : undefined}\n role={!hidden && !showImage ? 'img' : undefined}\n aria-label={!hidden && !showImage ? name : undefined}\n >\n {inner}\n </span>\n )\n\n if (!pressable) return visual\n\n const label = name ? messages.avatar.open(name) : undefined\n if (href) {\n return (\n <AriaLink href={href} onPress={onPress} aria-label={label} className={cx('ty-avatar-control', className)} data-size={size}>\n {visual}\n </AriaLink>\n )\n }\n return (\n <AriaButton onPress={onPress} aria-label={label} className={cx('ty-avatar-control', className)} data-size={size}>\n {visual}\n </AriaButton>\n )\n}\n"],"mappings":"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"}
|