@aurea-uds/react 0.12.4 → 0.13.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/README.md CHANGED
@@ -8,7 +8,7 @@ pnpm add @aurea-uds/react @aurea-uds/core @aurea-uds/fonts @aurea-uds/icons
8
8
 
9
9
  ## Uso
10
10
 
11
- Carregue as fontes **antes** da folha de estilo — o core não embute mais a IBM Plex.
11
+ Carregue as fontes **antes** da folha de estilo — o core não embute fonte nenhuma.
12
12
 
13
13
  ```js
14
14
  import "@aurea-uds/fonts/css";
package/dist/actions.js CHANGED
@@ -135,7 +135,10 @@ export const ThemeToggle = forwardRef(function ThemeToggle({ className, ...props
135
135
  const { theme, toggleTheme } = useAureaTheme();
136
136
  const s = useAureaStrings();
137
137
  const escuro = theme === "dark";
138
- return _jsx(IconButton, { ref: ref, icon: escuro ? "light--filled" : "asleep--filled", label: escuro ? s.themeToLight : s.themeToDark, className: cx(escuro ? "theme-toggle-sun" : "theme-toggle-moon", className), onClick: toggleTheme, ...props });
138
+ // O corpo do `IconButton`, escrito aqui só para o glifo sair na forma CHEIA (ADR-0053: a lua e o
139
+ // sol cheios, como os do Carbon aprovados pela imagem em 25/09/2026). O `IconButton` público não
140
+ // tem peso de ícone.
141
+ return _jsx(Button, { ref: ref, variant: "ghost", className: cx("btn-icon", escuro ? "theme-toggle-sun" : "theme-toggle-moon", className), "aria-label": escuro ? s.themeToLight : s.themeToDark, onClick: toggleTheme, ...props, children: _jsx(Icon, { name: escuro ? "sun" : "moon", weight: "fill" }) });
139
142
  });
140
143
  // ButtonGroup: agrupamento semântico. Sem roving tabindex — cada botão continua tabulável (use Toolbar para roving).
141
144
  // `orientation` (G-AXIS-01) muda só o EIXO do layout, não a semântica: `role="group"` não tem
package/dist/agents.js CHANGED
@@ -93,7 +93,7 @@ const TAREFA = {
93
93
  // aqui faria a fila responder por quatro contratos e nenhum deles direito.
94
94
  export function TaskQueue({ tasks, label, onRetry, className, ...props }) {
95
95
  const s = useAureaStrings();
96
- return _jsx("ol", { className: cx("task-queue", className), "aria-label": label ?? s.taskQueueLabel, ...props, children: tasks.map(t => _jsxs("li", { className: "task-item", "data-state": t.state, children: [_jsxs("div", { className: "task-line", children: [_jsx("span", { className: "task-title", children: t.title }), t.priority && _jsx(Badge, { variant: t.priority === "high" ? "warning" : "neutral", children: s.taskPriority[t.priority] }), _jsx(Status, { variant: TAREFA[t.state], children: s.taskState[t.state] }), t.state === "failed" && onRetry && _jsx(IconButton, { variant: "ghost", size: "sm", icon: "restart", label: `${s.uploadRetry} ${t.title}`, onClick: () => onRetry(t) })] }), t.description && _jsx("p", { className: "task-desc", children: t.description }), t.state === "running" && t.progress != null && _jsx(Progress, { value: Math.round(t.progress * 100), label: t.title })] }, t.id)) });
96
+ return _jsx("ol", { className: cx("task-queue", className), "aria-label": label ?? s.taskQueueLabel, ...props, children: tasks.map(t => _jsxs("li", { className: "task-item", "data-state": t.state, children: [_jsxs("div", { className: "task-line", children: [_jsx("span", { className: "task-title", children: t.title }), t.priority && _jsx(Badge, { variant: t.priority === "high" ? "warning" : "neutral", children: s.taskPriority[t.priority] }), _jsx(Status, { variant: TAREFA[t.state], children: s.taskState[t.state] }), t.state === "failed" && onRetry && _jsx(IconButton, { variant: "ghost", size: "sm", icon: "arrow-counter-clockwise", label: `${s.uploadRetry} ${t.title}`, onClick: () => onRetry(t) })] }), t.description && _jsx("p", { className: "task-desc", children: t.description }), t.state === "running" && t.progress != null && _jsx(Progress, { value: Math.round(t.progress * 100), label: t.title })] }, t.id)) });
97
97
  }
98
98
  // HumanApproval — o portão: o que vai acontecer, e a decisão de uma pessoa.
99
99
  export function HumanApproval({ title, description, details, risk, reasoning, deadline, decision, onApprove, onDeny, className, ...props }) {
@@ -279,7 +279,7 @@ export function InterAgentMessage({ messages, label, className, ...props }) {
279
279
  const s = useAureaStrings();
280
280
  return _jsx("ol", { className: cx("agent-messages", className), "aria-label": label ?? s.agentMessageLabel, ...props, children: messages.map(m => {
281
281
  const destino = m.to ?? s.agentMessageBroadcast;
282
- return _jsxs("li", { className: "agent-message", "data-kind": m.kind ?? "handoff", children: [_jsxs("div", { className: "agent-message-line", children: [_jsxs("span", { className: "agent-message-route", role: "group", "aria-label": `${m.from} ${s.agentMessageTo} ${destino}`, children: [_jsx("strong", { children: m.from }), _jsx(Icon, { name: "arrow--right", size: "sm", className: "agent-message-arrow" }), m.to ? _jsx("strong", { children: m.to }) : _jsx("span", { className: "hint", children: destino })] }), _jsx(Badge, { variant: RECADO[m.kind ?? "handoff"], children: s.agentMessageKind[m.kind ?? "handoff"] }), m.time && _jsx("time", { className: "agent-message-time", children: m.time })] }), _jsx("p", { className: "agent-message-body", children: m.body }), (m.reason || m.details?.length) && _jsxs("details", { className: "agent-message-why", children: [_jsx("summary", { children: s.agentMessageReason }), m.reason && _jsx("p", { className: "agent-message-reason", children: m.reason }), !!m.details?.length && _jsx(DataList, { items: m.details })] })] }, m.id);
282
+ return _jsxs("li", { className: "agent-message", "data-kind": m.kind ?? "handoff", children: [_jsxs("div", { className: "agent-message-line", children: [_jsxs("span", { className: "agent-message-route", role: "group", "aria-label": `${m.from} ${s.agentMessageTo} ${destino}`, children: [_jsx("strong", { children: m.from }), _jsx(Icon, { name: "arrow-right", size: "sm", className: "agent-message-arrow" }), m.to ? _jsx("strong", { children: m.to }) : _jsx("span", { className: "hint", children: destino })] }), _jsx(Badge, { variant: RECADO[m.kind ?? "handoff"], children: s.agentMessageKind[m.kind ?? "handoff"] }), m.time && _jsx("time", { className: "agent-message-time", children: m.time })] }), _jsx("p", { className: "agent-message-body", children: m.body }), (m.reason || m.details?.length) && _jsxs("details", { className: "agent-message-why", children: [_jsx("summary", { children: s.agentMessageReason }), m.reason && _jsx("p", { className: "agent-message-reason", children: m.reason }), !!m.details?.length && _jsx(DataList, { items: m.details })] })] }, m.id);
283
283
  }) });
284
284
  }
285
285
  // AutomationCard — a regra que roda sozinha: QUANDO isto, ENTÃO aquilo.
@@ -20,5 +20,5 @@ export function CodeBlock({ children, language = "text", copyable, className })
20
20
  if (!copyable)
21
21
  return pre;
22
22
  const onCopy = (e) => { e.stopPropagation(); window.Aurea?.copy?.(e.currentTarget) ?? navigator.clipboard?.writeText(children); };
23
- return _jsxs("div", { className: cx("code-block-wrap", className), "data-aurea-copy-scope": true, children: [_jsxs("button", { type: "button", className: "btn btn-icon btn-ghost copy-code", "data-aurea-copy": true, "aria-label": s.copyCode, onClick: onCopy, children: [_jsx(Icon, { name: "copy", size: "sm", className: "c-copy" }), _jsx(Icon, { name: "checkmark", size: "sm", className: "c-done" })] }), pre] });
23
+ return _jsxs("div", { className: cx("code-block-wrap", className), "data-aurea-copy-scope": true, children: [_jsxs("button", { type: "button", className: "btn btn-icon btn-ghost copy-code", "data-aurea-copy": true, "aria-label": s.copyCode, onClick: onCopy, children: [_jsx(Icon, { name: "copy", size: "sm", className: "c-copy" }), _jsx(Icon, { name: "check", size: "sm", className: "c-done" })] }), pre] });
24
24
  }
@@ -25,5 +25,5 @@ export function MessageComposer({ onSend, placeholder, label, icon, sendLabel, d
25
25
  const [text, setText] = React.useState("");
26
26
  const submit = (e) => { e.preventDefault(); const t = text.trim(); if (!t)
27
27
  return; onSend(t); setText(""); };
28
- return _jsxs("form", { className: cx("message-composer", className), onSubmit: submit, children: [_jsxs(InputGroup, { children: [icon && _jsx(InputGroupAddon, { children: _jsx(Icon, { name: icon }) }), _jsx("input", { className: "input", value: text, disabled: disabled, placeholder: placeholder, "aria-label": label ?? s.chatMessage, onChange: e => setText(e.target.value) })] }), _jsx(IconButton, { type: "submit", variant: "primary", icon: "send", label: sendLabel ?? s.chatSend, disabled: disabled || !text.trim() })] });
28
+ return _jsxs("form", { className: cx("message-composer", className), onSubmit: submit, children: [_jsxs(InputGroup, { children: [icon && _jsx(InputGroupAddon, { children: _jsx(Icon, { name: icon }) }), _jsx("input", { className: "input", value: text, disabled: disabled, placeholder: placeholder, "aria-label": label ?? s.chatMessage, onChange: e => setText(e.target.value) })] }), _jsx(IconButton, { type: "submit", variant: "primary", icon: "paper-plane-tilt", label: sendLabel ?? s.chatSend, disabled: disabled || !text.trim() })] });
29
29
  }
@@ -17,6 +17,6 @@ export function SortableList({ items, onReorder, label, className, ...props }) {
17
17
  rowSelector: ".sortable-item", handleSelector: ".sortable-handle" });
18
18
  return _jsxs(_Fragment, { children: [_jsx("ul", { ref: r.ref, className: cx("sortable-list", className), "aria-label": label ?? s.sortableLabel, ...props, children: items.map((it, i) => {
19
19
  const lid = `${bid}l${i}`, hid = `${bid}h${i}`;
20
- return _jsxs("li", { className: "sortable-item", "data-grabbed": r.pego === i || undefined, children: [_jsxs("button", { type: "button", id: hid, className: "sortable-handle", "aria-labelledby": `${hid} ${lid}`, "aria-describedby": `${bid}ajuda`, "aria-pressed": r.pego === i, onKeyDown: e => r.teclado(e, i), onPointerDown: e => r.ponteiroBaixo(e, i), onPointerMove: r.ponteiroMove, onPointerUp: r.ponteiroSolta, onPointerCancel: r.ponteiroSolta, children: [_jsx(Icon, { name: "drag--horizontal" }), _jsx("span", { className: "sr-only", children: s.sortableHandle })] }), _jsx("span", { id: lid, className: "sortable-label", children: it.label })] }, it.id);
20
+ return _jsxs("li", { className: "sortable-item", "data-grabbed": r.pego === i || undefined, children: [_jsxs("button", { type: "button", id: hid, className: "sortable-handle", "aria-labelledby": `${hid} ${lid}`, "aria-describedby": `${bid}ajuda`, "aria-pressed": r.pego === i, onKeyDown: e => r.teclado(e, i), onPointerDown: e => r.ponteiroBaixo(e, i), onPointerMove: r.ponteiroMove, onPointerUp: r.ponteiroSolta, onPointerCancel: r.ponteiroSolta, children: [_jsx(Icon, { name: "dots-six" }), _jsx("span", { className: "sr-only", children: s.sortableHandle })] }), _jsx("span", { id: lid, className: "sortable-label", children: it.label })] }, it.id);
21
21
  }) }), _jsx("span", { id: `${bid}ajuda`, className: "sr-only", children: s.sortableHelp }), _jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: r.aviso })] });
22
22
  }
package/dist/data-grid.js CHANGED
@@ -147,7 +147,7 @@ export function DataGrid({ data, columns, label, filterable, pageSize, selectabl
147
147
  // alvo exige inventar papel, tabindex e tecla; um <button> já é tudo isso.
148
148
  const colunas = React.useMemo(() => renderDetail ? [...allColumns, {
149
149
  id: "detail", enableSorting: false, enableHiding: false, header: () => null,
150
- cell: ({ row }) => _jsx(IconButton, { icon: "chevron--right", label: s.dataGridDetails, size: "sm", variant: "ghost", "aria-expanded": detailRowId === row.id, onClick: () => setDetailRowId(detailRowId === row.id ? null : row.id) }),
150
+ cell: ({ row }) => _jsx(IconButton, { icon: "caret-right", label: s.dataGridDetails, size: "sm", variant: "ghost", "aria-expanded": detailRowId === row.id, onClick: () => setDetailRowId(detailRowId === row.id ? null : row.id) }),
151
151
  }] : allColumns, [allColumns, renderDetail, detailRowId, s]);
152
152
  // A função acima precisa da tabela, e a tabela é o que esta chamada devolve: a referência fecha o
153
153
  // círculo. Ela é lida só quando o motor filtra, que é sempre depois da primeira montagem.
@@ -315,7 +315,7 @@ export function DataGrid({ data, columns, label, filterable, pageSize, selectabl
315
315
  }
316
316
  };
317
317
  const rove = (r, c) => eff.r === r && eff.c === c ? 0 : -1;
318
- const sortIcon = (dir) => dir === "asc" ? "chevron--sort--up" : dir === "desc" ? "chevron--sort--down" : "chevron--sort";
318
+ const sortIcon = (dir) => dir === "asc" ? "caret-up" : dir === "desc" ? "caret-down" : "caret-up-down";
319
319
  // F5: a barra de lote. Duas referências independentes (Activepieces e Kaneo) chegam
320
320
  // à MESMA anatomia — contagem, divisória, ações, e um jeito de limpar —, então é
321
321
  // ela que entra. O que não entra é o resto das duas: barra `position:fixed` sobre a
@@ -411,6 +411,6 @@ export function DataGrid({ data, columns, label, filterable, pageSize, selectabl
411
411
  : _jsx("tr", { children: _jsx("td", { colSpan: nColunas, tabIndex: rove(1, 0), className: "datagrid-empty", children: s.dataGridEmpty }) }) })] }) }));
412
412
  if (!renderDetail || !linhaAberta)
413
413
  return tabela;
414
- return _jsxs("div", { className: "datagrid-split", children: [tabela, _jsxs("aside", { className: "datagrid-detail", "aria-label": s.dataGridDetailPanel, children: [_jsx("div", { className: "datagrid-detail-head", children: _jsx(IconButton, { icon: "close", label: s.close, size: "sm", variant: "ghost", onClick: () => setDetailRowId(null) }) }), renderDetail(linhaAberta.original)] })] });
414
+ return _jsxs("div", { className: "datagrid-split", children: [tabela, _jsxs("aside", { className: "datagrid-detail", "aria-label": s.dataGridDetailPanel, children: [_jsx("div", { className: "datagrid-detail-head", children: _jsx(IconButton, { icon: "x", label: s.close, size: "sm", variant: "ghost", onClick: () => setDetailRowId(null) }) }), renderDetail(linhaAberta.original)] })] });
415
415
  })(), paginated && table.getPageCount() > 1 && _jsx(Pagination, { page: pageIndex + 1, total: table.getPageCount(), onPageChange: p => table.setPageIndex(p - 1) })] });
416
416
  }
@@ -17,5 +17,5 @@ export function Accordion({ items }) { return _jsx("div", { className: "accordio
17
17
  // A API é a daqui: `trigger` é dado, o conteúdo são os filhos. Não é a API composta da referência
18
18
  // (Root/Trigger/Panel) — quem quiser compor esse nível usa o motor direto.
19
19
  export function Collapsible({ trigger, children, open, defaultOpen, onOpenChange, disabled, className }) {
20
- return _jsxs(BaseCollapsible.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: soOValor(onOpenChange), disabled: disabled, className: cx("collapsible", className), children: [_jsxs(BaseCollapsible.Trigger, { className: "collapsible-trigger", children: [_jsx(Icon, { name: "chevron--down", size: "sm", className: "collapsible-chevron" }), trigger] }), _jsx(BaseCollapsible.Panel, { className: "collapsible-panel", children: children })] });
20
+ return _jsxs(BaseCollapsible.Root, { open: open, defaultOpen: defaultOpen, onOpenChange: soOValor(onOpenChange), disabled: disabled, className: cx("collapsible", className), children: [_jsxs(BaseCollapsible.Trigger, { className: "collapsible-trigger", children: [_jsx(Icon, { name: "caret-down", size: "sm", className: "collapsible-chevron" }), trigger] }), _jsx(BaseCollapsible.Panel, { className: "collapsible-panel", children: children })] });
21
21
  }
@@ -35,8 +35,8 @@ export function Status({ variant, state, children, className, ...props }) { cons
35
35
  // caso é específico. O Banner NÃO ganha o mesmo padrão de propósito: ele não existe na
36
36
  // referência e o aviso de largura de página nem sempre quer glifo — a assimetria é decidida,
37
37
  // não herdada.
38
- const ICONE_DA_VARIANTE = { info: "information--filled",
39
- success: "checkmark--filled", warning: "warning--alt--filled", danger: "error--filled" };
38
+ const ICONE_DA_VARIANTE = { info: "info",
39
+ success: "check-circle", warning: "warning", danger: "x-circle" };
40
40
  // A grade do `.alert` tem TRÊS trilhas (auto 1fr auto): ícone, corpo, ação. Uma versão anterior
41
41
  // emitia o título solto na trilha 1 — a do ícone — e o corpo como item anônimo. Medido no
42
42
  // navegador em 21/08/2026: o título ocupava a coluna do ícone e crescia com o próprio texto,
@@ -51,8 +51,8 @@ const ICONE_DA_VARIANTE = { info: "information--filled",
51
51
  // universal. Quem passa só `state` recebe a cor derivada da gravidade e o rótulo universal
52
52
  // quando não há filho; quem passa os dois manda, porque só o consumidor sabe se aquele
53
53
  // "esperando" dele é grave.
54
- export function Alert({ variant, state, title, icon, onDismiss, children, className, ...props }) { const s = useAureaStrings(); const v = variant ?? (state ? stateSeverity(state) : "info"); return _jsxs("div", { className: cx("alert", `alert-${v}`, className), role: v === "danger" ? "alert" : "status", "data-state": state, ...props, children: [_jsx(Icon, { name: icon ?? ICONE_DA_VARIANTE[v] }), _jsxs("div", { children: [title && _jsx("strong", { children: title }), children ?? (state ? s.universalState[state] : null)] }), onDismiss ? _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: s.close, onClick: onDismiss }) : _jsx("span", {})] }); }
55
- export function Banner({ variant, state, title, icon, onDismiss, children, className, ...props }) { const s = useAureaStrings(); const v = variant ?? (state ? stateSeverity(state) : "info"); return _jsxs("div", { className: cx("banner", `banner-${v}`, className), role: v === "danger" ? "alert" : "status", "data-state": state, ...props, children: [icon ? _jsx(Icon, { name: icon }) : _jsx("span", {}), _jsxs("div", { children: [title && _jsx("strong", { children: title }), children ?? (state ? s.universalState[state] : null)] }), onDismiss ? _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: s.close, onClick: onDismiss }) : _jsx("span", {})] }); }
54
+ export function Alert({ variant, state, title, icon, onDismiss, children, className, ...props }) { const s = useAureaStrings(); const v = variant ?? (state ? stateSeverity(state) : "info"); return _jsxs("div", { className: cx("alert", `alert-${v}`, className), role: v === "danger" ? "alert" : "status", "data-state": state, ...props, children: [_jsx(Icon, { name: icon ?? ICONE_DA_VARIANTE[v], weight: icon ? undefined : "fill" }), _jsxs("div", { children: [title && _jsx("strong", { children: title }), children ?? (state ? s.universalState[state] : null)] }), onDismiss ? _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: s.close, onClick: onDismiss }) : _jsx("span", {})] }); }
55
+ export function Banner({ variant, state, title, icon, onDismiss, children, className, ...props }) { const s = useAureaStrings(); const v = variant ?? (state ? stateSeverity(state) : "info"); return _jsxs("div", { className: cx("banner", `banner-${v}`, className), role: v === "danger" ? "alert" : "status", "data-state": state, ...props, children: [icon ? _jsx(Icon, { name: icon }) : _jsx("span", {}), _jsxs("div", { children: [title && _jsx("strong", { children: title }), children ?? (state ? s.universalState[state] : null)] }), onDismiss ? _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: s.close, onClick: onDismiss }) : _jsx("span", {})] }); }
56
56
  // A barra grampeava 0..100 e o `aria-valuenow` NÃO — medido ao publicar o contrato de API na
57
57
  // Parte E: com value=150 o desenho parava em 100% e o leitor de tela anunciava "150 de 100".
58
58
  // A causa é a de sempre: o grampo existia num lugar só. Agora é UMA expressão que serve os dois,
@@ -86,7 +86,7 @@ export function DataState({ state, message, skeleton, emptyTitle, emptyIcon, act
86
86
  return caixa(_jsxs(_Fragment, { children: [_jsx(Alert, { variant: stateSeverity(state), state: state, children: message }), conteudo()] }));
87
87
  return caixa(conteudo());
88
88
  }
89
- export function EmptyState({ icon = "document--blank", title, titleAs: TitleTag = "h3", description, action, state }) { const s = useAureaStrings(); const desc = description ?? (state ? s.universalState[state] : null); return _jsxs("div", { className: "empty-state", "data-state": state, children: [_jsx(Icon, { name: icon, size: "xl" }), _jsx(TitleTag, { className: "empty-title", children: title }), desc && _jsx("p", { className: "muted", children: desc }), action] }); }
89
+ export function EmptyState({ icon = "file", title, titleAs: TitleTag = "h3", description, action, state }) { const s = useAureaStrings(); const desc = description ?? (state ? s.universalState[state] : null); return _jsxs("div", { className: "empty-state", "data-state": state, children: [_jsx(Icon, { name: icon, size: "xl" }), _jsx(TitleTag, { className: "empty-title", children: title }), desc && _jsx("p", { className: "muted", children: desc }), action] }); }
90
90
  function groupNotifications(items) {
91
91
  const out = [];
92
92
  for (const it of items) {
@@ -98,7 +98,7 @@ function groupNotifications(items) {
98
98
  }
99
99
  return out;
100
100
  }
101
- export function NotificationCenter({ items, onItemClick, onMarkAllRead, label, icon = "notification", side = "bottom" }) {
101
+ export function NotificationCenter({ items, onItemClick, onMarkAllRead, label, icon = "bell", side = "bottom" }) {
102
102
  const s = useAureaStrings();
103
103
  const portal = usePortalContainer();
104
104
  const title = label ?? s.notificationsLabel;
@@ -274,7 +274,7 @@ export function FileInput({ accept, maxSize, multiple, onFilesChange, upload, la
274
274
  const recibo = files.filter(f => f.status === "done" || f.status === "error" || f.status === "canceled");
275
275
  const reciboTexto = recibo.map(r => [r.name, r.status, r.finishedAt ?? ""].join(TAB)).join(NL);
276
276
  return _jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs("label", { className: "dropzone", "data-dragging": dragging || undefined, onDragOver: e => { e.preventDefault(); setDragging(true); }, onDragLeave: e => { if (!e.currentTarget.contains(e.relatedTarget))
277
- setDragging(false); }, onDrop: e => { e.preventDefault(); setDragging(false); add(e.dataTransfer.files); }, children: [_jsx("input", { id: inputId, type: "file", className: "sr-only", accept: accept, multiple: multiple, "aria-invalid": rejected.length > 0 || undefined, "aria-describedby": rejected.length > 0 ? rejected.map((_, n) => `${inputId}-rejeitado-${n}`).join(" ") : undefined, onChange: e => { add(e.target.files); e.target.value = ""; } }), _jsx(Icon, { name: "cloud--upload", size: "xl", className: "dropzone-icon" }), _jsx("strong", { children: s.fileDropPrompt }), hint && _jsx("span", { className: "dropzone-hint", children: hint })] }), upload && (enviando || pausados) && _jsx("div", { className: "file-queue-actions", children: enviando ? _jsx(Button, { variant: "secondary", size: "sm", leadingIcon: "pause", onClick: pausarTudo, children: s.uploadPause })
277
+ setDragging(false); }, onDrop: e => { e.preventDefault(); setDragging(false); add(e.dataTransfer.files); }, children: [_jsx("input", { id: inputId, type: "file", className: "sr-only", accept: accept, multiple: multiple, "aria-invalid": rejected.length > 0 || undefined, "aria-describedby": rejected.length > 0 ? rejected.map((_, n) => `${inputId}-rejeitado-${n}`).join(" ") : undefined, onChange: e => { add(e.target.files); e.target.value = ""; } }), _jsx(Icon, { name: "cloud-arrow-up", size: "xl", className: "dropzone-icon" }), _jsx("strong", { children: s.fileDropPrompt }), hint && _jsx("span", { className: "dropzone-hint", children: hint })] }), upload && (enviando || pausados) && _jsx("div", { className: "file-queue-actions", children: enviando ? _jsx(Button, { variant: "secondary", size: "sm", leadingIcon: "pause", onClick: pausarTudo, children: s.uploadPause })
278
278
  : _jsx(Button, { variant: "secondary", size: "sm", leadingIcon: "play", onClick: retomarTudo, children: s.uploadResume }) }), files.length > 0 && _jsx("ul", { className: "file-list", children: files.map(({ id, file, name, bytes, status, progress = 0, restored, checksum: soma, preview: previa, erro }) => {
279
279
  // A barra reusa .progress + .file-progress (largura fixa em classe); só o
280
280
  // preenchimento (width %) fica inline, por ser data-driven. Erro reusa
@@ -282,6 +282,6 @@ export function FileInput({ accept, maxSize, multiple, onFilesChange, upload, la
282
282
  // não muda pixel de screenshot nenhum (auditoria 18/07, M14: CSS não usado
283
283
  // pelos docs não altera baseline — a justificativa antiga estava invertida).
284
284
  const pct = Math.round(progress * 100);
285
- return _jsxs("li", { className: "file-item", children: [previa ? _jsx("img", { className: "file-thumb", src: previa, alt: "" }) : _jsx(Icon, { name: "document" }), _jsx("span", { className: "file-name", children: name }), status === "uploading" ? _jsxs(_Fragment, { children: [_jsx("div", { className: "progress file-progress", role: "progressbar", "aria-label": `${s.uploadSending} ${name}`, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": pct, children: _jsx("span", { style: { width: `${pct}%` } }) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "pause", label: `${s.uploadPause} ${name}`, onClick: () => pausar(id) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: `${s.uploadCancel} ${name}`, onClick: () => abortId(id) })] }) : status === "paused" ? _jsxs(_Fragment, { children: [_jsxs("span", { className: "file-size", children: [s.uploadPaused, " \u00B7 ", Math.round(progress * 100), "%"] }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "play", label: `${s.uploadResume} ${name}`, onClick: () => retomar({ id, file, name, bytes, status, progress, restored }) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] }) : (status === "error" || status === "canceled") ? _jsxs(_Fragment, { children: [_jsx("span", { className: "field-error", children: erro ?? (status === "error" ? s.uploadError : s.uploadCanceled) }), file && _jsx(IconButton, { variant: "ghost", size: "sm", icon: "restart", label: `${s.uploadRetry} ${name}`, onClick: () => startUpload(id, file) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] }) : _jsxs(_Fragment, { children: [status === "done" && _jsx(Icon, { name: "checkmark--filled" }), _jsx("span", { className: "file-size", children: formatSize(bytes) }), soma && _jsx("span", { className: "file-checksum", title: `${s.uploadChecksum}: ${soma}`, children: soma.slice(0, 8) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] })] }, id);
285
+ return _jsxs("li", { className: "file-item", children: [previa ? _jsx("img", { className: "file-thumb", src: previa, alt: "" }) : _jsx(Icon, { name: "file-text" }), _jsx("span", { className: "file-name", children: name }), status === "uploading" ? _jsxs(_Fragment, { children: [_jsx("div", { className: "progress file-progress", role: "progressbar", "aria-label": `${s.uploadSending} ${name}`, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": pct, children: _jsx("span", { style: { width: `${pct}%` } }) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "pause", label: `${s.uploadPause} ${name}`, onClick: () => pausar(id) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: `${s.uploadCancel} ${name}`, onClick: () => abortId(id) })] }) : status === "paused" ? _jsxs(_Fragment, { children: [_jsxs("span", { className: "file-size", children: [s.uploadPaused, " \u00B7 ", Math.round(progress * 100), "%"] }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "play", label: `${s.uploadResume} ${name}`, onClick: () => retomar({ id, file, name, bytes, status, progress, restored }) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] }) : (status === "error" || status === "canceled") ? _jsxs(_Fragment, { children: [_jsx("span", { className: "field-error", children: erro ?? (status === "error" ? s.uploadError : s.uploadCanceled) }), file && _jsx(IconButton, { variant: "ghost", size: "sm", icon: "arrow-counter-clockwise", label: `${s.uploadRetry} ${name}`, onClick: () => startUpload(id, file) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] }) : _jsxs(_Fragment, { children: [status === "done" && _jsx(Icon, { name: "check-circle", weight: "fill" }), _jsx("span", { className: "file-size", children: formatSize(bytes) }), soma && _jsx("span", { className: "file-checksum", title: `${s.uploadChecksum}: ${soma}`, children: soma.slice(0, 8) }), _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: `${s.fileRemove} ${name}`, onClick: () => remove(id) })] })] }, id);
286
286
  }) }), conflitos.map((c, i) => _jsxs("div", { className: "file-conflict", role: "alert", children: [_jsxs("span", { children: [s.fileConflict, ": ", _jsx("strong", { children: c.file.name })] }), _jsx(Button, { size: "sm", variant: "secondary", onClick: () => resolverConflito(i, "replace"), children: s.fileReplace }), _jsx(Button, { size: "sm", variant: "secondary", onClick: () => resolverConflito(i, "both"), children: s.fileKeepBoth }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => resolverConflito(i, "skip"), children: s.fileSkip })] }, `c${i}`)), recibo.length > 0 && !emVoo && _jsxs("div", { className: "file-receipt", children: [_jsxs("div", { className: "file-receipt-head", children: [_jsx("strong", { children: s.uploadReceipt }), _jsx(Button, { size: "sm", variant: "ghost", leadingIcon: "copy", onClick: () => void navigator.clipboard?.writeText(reciboTexto), children: s.uploadReceiptCopy })] }), _jsx("ul", { children: recibo.map(r => _jsxs("li", { children: [r.name, " \u00B7 ", r.status === "done" ? s.uploadComplete : r.status === "canceled" ? s.uploadCanceled : s.uploadError, r.finishedAt ? ` · ${r.finishedAt}` : ""] }, r.id)) })] }), rejected.map((r, n) => _jsxs("span", { id: `${inputId}-rejeitado-${n}`, className: "field-error", children: [r.reason, ": ", r.file.name] }, n)), _jsx("span", { className: "sr-only", role: "status", "aria-live": "polite", children: announce })] });
287
287
  }
@@ -1,5 +1,5 @@
1
- /** Os 2571 nomes do Carbon que a Aurea desenha, os mesmos na web e no nativo. */
2
- export type CarbonIconName = "4K--filled" | "4K" | "AI-enabled-EDT" | "AI-enabled-PDLC" | "AI" | "API--1" | "ASM" | "BPMN-compensation--fill" | "BPMN-compensation--outline" | "BPMN-conditional--fill" | "BPMN-conditional--outline" | "BPMN-error--fill" | "BPMN-error--outline" | "BPMN-escalation--fill" | "BPMN-escalation--outline" | "BPMN-link--fill" | "BPMN-link--outline" | "C" | "CAD" | "CBL" | "CDA" | "CPlusPlus" | "CSV" | "DOC" | "DVR" | "Db2-Developer-Extension" | "GIF" | "HD--filled" | "HD" | "HDR" | "HTML--reference" | "HTML" | "HTTP" | "IP" | "ISO--filled" | "ISO--outline" | "ISO" | "JAVA" | "JCL" | "JPG" | "JSON--reference" | "JSON" | "KEY" | "MAC" | "MOV" | "MP3" | "MP4" | "MPEG" | "MPG2" | "PDF--reference" | "PDF" | "PLI" | "PNG" | "PPT" | "RAG" | "RAW" | "REXX" | "SAP" | "SDK" | "SLM" | "SQL" | "SVG" | "Serverless-Fleet" | "TIF" | "TSV" | "TXT--reference" | "TXT" | "URL" | "USB" | "VPN" | "WMV" | "XLS" | "XML" | "ZIP--reference" | "ZIP" | "accept-action--usage" | "accessibility--alt" | "accessibility--color--filled" | "accessibility--color" | "accessibility" | "account" | "accumulation--ice" | "accumulation--precipitation" | "accumulation--rain" | "accumulation--snow" | "action--definition" | "action--usage" | "activity" | "adapter-notification" | "add--alt" | "add--child-node" | "add--filled" | "add--large" | "add--parent-node" | "add--server" | "add-comment" | "add" | "agent-detached" | "aggregator--count-rows" | "aggregator--recalculation" | "agriculture-analytics" | "ai--observability" | "ai-agent-invocation" | "ai-business-impact-assessment" | "ai-financial-sustainability-check" | "ai-generate" | "ai-governance--lifecycle" | "ai-governance--tracked" | "ai-governance--untracked" | "ai-label" | "ai-launch" | "ai-recommend" | "airline--digital-gate" | "airline--manage-gates" | "airline--passenger-care" | "airline--rapid-board" | "airplay--filled" | "airplay" | "airport--01" | "airport--02" | "airport-location" | "alarm--add" | "alarm--subtract" | "alarm" | "align--horizontal-center" | "align--horizontal-left" | "align--horizontal-right" | "align--vertical-bottom" | "align--vertical-center" | "align--vertical-top" | "align-box--bottom-center" | "align-box--bottom-left" | "align-box--bottom-right" | "align-box--middle-center" | "align-box--middle-left" | "align-box--middle-right" | "align-box--top-center" | "align-box--top-left" | "align-box--top-right" | "analytics--custom" | "analytics--reference" | "analytics" | "anchor" | "aperture" | "api--key" | "api" | "app-connectivity" | "app" | "apple--dash" | "apple" | "application--mobile" | "application--virtual" | "application--web" | "application" | "apps" | "archive" | "area--custom" | "area-range--dashed" | "area-range--solid" | "area" | "arithmetic-mean" | "arithmetic-median" | "arrange--horizontal" | "arrange--vertical" | "arrange" | "array--booleans" | "array--date-time" | "array--dates" | "array--numbers" | "array--objects" | "array--strings" | "array--time" | "array-decimal" | "array-files" | "array-users" | "array" | "arrival" | "arrow--down-left" | "arrow--down-right" | "arrow--down" | "arrow--left" | "arrow--right" | "arrow--up-left" | "arrow--up-right" | "arrow--up" | "arrow-shift-down" | "arrows--horizontal" | "arrows--vertical" | "asleep--filled" | "asleep" | "assembly--cluster" | "assembly--reference" | "assembly" | "asset--confirm" | "asset--digital-twin" | "asset--view" | "asset-movement" | "asset" | "assignment-action--usage" | "asterisk" | "async" | "at" | "attachment" | "attribute--definition" | "attribute--usage" | "audio-console" | "augmented-reality" | "automatic" | "autoscaling" | "avro" | "awake" | "badge" | "baggage-claim" | "bank--vault" | "bar" | "barcode" | "bare-metal-server--01" | "bare-metal-server--02" | "bare-metal-server" | "base-document-set" | "basketball" | "bastion-host" | "bat" | "batch-job--step" | "batch-job" | "battery--charging" | "battery--empty" | "battery--error" | "battery--full" | "battery--half" | "battery--low" | "battery--quarter" | "battery--warning" | "bee-bat" | "bee" | "beta" | "bicycle" | "binding--01" | "binding--02" | "binoculars" | "bland-altman-plot" | "block-storage--alt" | "block-storage" | "blockchain" | "blog" | "bluetooth--off" | "bluetooth" | "book" | "bookmark--add" | "bookmark--filled" | "bookmark" | "boolean" | "boot-volume--alt" | "boot-volume" | "boot" | "border--bottom" | "border--full" | "border--left" | "border--none" | "border--right" | "border--top" | "bot" | "bottles--01--dash" | "bottles--01" | "bottles--02--dash" | "bottles--02" | "bottles--container" | "bottom-panel--close--filled" | "bottom-panel--close" | "bottom-panel--open--filled" | "bottom-panel--open" | "box--extra-large" | "box--large" | "box--medium" | "box--small" | "box-plot" | "box" | "brainstorm--filled" | "brainstorm" | "branch" | "breaking-change" | "brightness-contrast" | "bring-forward" | "bring-to-front" | "bsam-qsam-zedc" | "build--image" | "build--run" | "build-tool" | "building--electrical" | "building--insights-1" | "building--insights-2" | "building--insights-3" | "building" | "bullhorn" | "buoy" | "bus" | "business-metrics" | "business-processes" | "button--centered" | "button--flush-left" | "cabin-care--alert" | "cabin-care--alt" | "cabin-care" | "cafe" | "calculation--alt" | "calculation" | "calculator--check" | "calculator" | "calendar--add--alt" | "calendar--add" | "calendar--heat-map" | "calendar--settings" | "calendar--tools" | "calendar" | "calibrate" | "calls--all" | "calls--incoming" | "calls" | "camera--action" | "camera" | "campsite" | "car--front" | "car" | "carbon--ui-builder" | "carbon-accounting" | "carbon-for-AEM" | "carbon-for-ibm-dotcom" | "carbon-for-ibm-product" | "carbon-for-mobile" | "carbon-for-salesforce" | "carbon" | "caret--down" | "caret--left" | "caret--right" | "caret--sort--down" | "caret--sort--up" | "caret--sort" | "caret--up" | "carousel--horizontal" | "carousel--vertical" | "catalog--publish" | "catalog" | "categorical-palette" | "categories" | "category--add" | "category--and" | "category--new-each" | "category--new" | "category" | "cell-tower" | "center--circle" | "center--square" | "center-to-fit" | "certificate--check" | "certificate" | "change--catalog" | "change--circle" | "channels" | "character--decimal" | "character--fraction" | "character--integer" | "character--lower-case" | "character--negative-number" | "character--sentence-case" | "character--upper-case" | "character--whole-number" | "character-patterns" | "charging-station--filled" | "charging-station" | "chart--3D" | "chart--area-smooth" | "chart--area-stepper" | "chart--area" | "chart--average" | "chart--bar-floating" | "chart--bar-overlay" | "chart--bar-stacked" | "chart--bar-target" | "chart--bar" | "chart--bubble-packed" | "chart--bubble" | "chart--bullet" | "chart--candlestick" | "chart--cluster-bar" | "chart--column-floating" | "chart--column-target" | "chart--column" | "chart--combo-stacked" | "chart--combo" | "chart--custom" | "chart--donut" | "chart--dual-y-axis" | "chart--error-bar--alt" | "chart--error-bar" | "chart--evaluation" | "chart--high-low" | "chart--histogram" | "chart--line--data" | "chart--line-smooth" | "chart--line" | "chart--logistic-regression" | "chart--lollipop" | "chart--marimekko" | "chart--maximum" | "chart--median" | "chart--minimum" | "chart--multi-line" | "chart--multitype" | "chart--network" | "chart--parallel" | "chart--performance" | "chart--pie" | "chart--planning-waterfall" | "chart--point" | "chart--population" | "chart--radar" | "chart--radial" | "chart--relationship" | "chart--ring" | "chart--river" | "chart--rose" | "chart--scatter" | "chart--spiral" | "chart--stacked" | "chart--stepper" | "chart--sunburst" | "chart--t-sne" | "chart--treemap" | "chart--venn-diagram" | "chart--violin-plot" | "chart--waterfall" | "chart--win-loss" | "chat--launch" | "chat--off" | "chat--operational" | "chat-bot" | "chat" | "checkbox--checked--filled" | "checkbox--checked" | "checkbox--indeterminate--filled" | "checkbox--indeterminate" | "checkbox" | "checkmark--filled--error" | "checkmark--filled--warning" | "checkmark--filled" | "checkmark--outline--error" | "checkmark--outline--warning" | "checkmark--outline" | "checkmark" | "chemistry--reference" | "chemistry" | "chevron--down--outline" | "chevron--down" | "chevron--left" | "chevron--mini" | "chevron--right" | "chevron--sort--down" | "chevron--sort--up" | "chevron--sort" | "chevron--up--outline" | "chevron--up" | "child-node" | "chip" | "choices" | "choose-item" | "choropleth-map" | "cics--cmas" | "cics--db2-connection" | "cics--explorer" | "cics--program" | "cics--sit-overrides" | "cics--sit" | "cics--system-group" | "cics--transaction-server-zos" | "cics--wui-region" | "cics-region--alt" | "cics-region--routing" | "cics-region--target" | "cics-region" | "cicsplex" | "circle--filled" | "circle--outline" | "circle--solid" | "circle-dash" | "circle-packing" | "classic-batch" | "classification" | "classifier--language" | "clean" | "close--filled" | "close--large" | "close--outline" | "close" | "closed-caption--alt" | "closed-caption--filled" | "closed-caption" | "cloud--alerting" | "cloud--auditing" | "cloud--data-ops" | "cloud--download" | "cloud--infra-migration" | "cloud--logging" | "cloud--monitoring" | "cloud--offline" | "cloud--service-management" | "cloud--upload" | "cloud-app" | "cloud-ceiling" | "cloud-foundry--1" | "cloud-foundry--2" | "cloud-registry" | "cloud-satellite--config" | "cloud-satellite--link" | "cloud-satellite--services" | "cloud-satellite" | "cloud-services" | "cloud" | "cloudy" | "cobol-upgrade-advisor" | "code--hide" | "code--reference" | "code-block" | "code-signing-service" | "code" | "cognitive" | "collaborate" | "collapse--stripe" | "collapse--title-2" | "collapse--title" | "collapse-all" | "collapse-categories" | "color-palette" | "color-picker" | "color-switch" | "column--delete" | "column--insert" | "column-dependency" | "column" | "comments" | "commit-alt" | "commit" | "communication--unified" | "compare" | "compass" | "concept" | "condition--point" | "condition--wait-point" | "connect--recursive" | "connect--reference" | "connect--source" | "connect--target" | "connect" | "connection--receive" | "connection--send" | "connection--signal--alt" | "connection--two-way" | "connection--usage" | "connection-flow--usage" | "connection-signal--off" | "connection-signal" | "connection" | "constraint" | "construction" | "container--engine" | "container--image" | "container--runtime-monitor" | "container--runtime" | "container-image--pull" | "container-image--push-pull" | "container-image--push" | "container-registry" | "container-services" | "container-software" | "content-delivery-network" | "content-view" | "continue--filled" | "continue" | "continuous-deployment" | "continuous-integration" | "contrast" | "convert-to-cloud" | "cookie" | "copy--file" | "copy--link" | "copy--to-clipboard" | "copy" | "corn" | "corner" | "coronavirus" | "cost--total" | "cost" | "cough" | "coupling-facility-encryption" | "coupling-facility" | "course" | "covariate" | "create-link" | "credentials" | "crop-growth" | "crop-health" | "crop" | "cross-tab" | "crossroads" | "crowd-report--filled" | "crowd-report" | "cube-view" | "cube" | "currency--baht" | "currency--dollar" | "currency--euro" | "currency--lira" | "currency--pound" | "currency--ruble" | "currency--rupee" | "currency--shekel" | "currency--won" | "currency--yen" | "currency" | "cursor--1" | "cursor--2" | "curved-line--dashed" | "curved-line--solid" | "customer-service--filled" | "customer-service" | "customer" | "cut-out" | "cut" | "cyclist" | "dashboard--reference" | "dashboard" | "data--1" | "data--2" | "data--add" | "data--alert" | "data--base--alt" | "data--base" | "data--categorical" | "data--center" | "data--check" | "data--connected" | "data--error" | "data--format" | "data--reference" | "data--regular" | "data--set" | "data--structured" | "data--unreal" | "data--unstructured" | "data--view--alt" | "data--view" | "data-accessor" | "data-analytics" | "data-backup" | "data-bin" | "data-blob" | "data-class" | "data-collection" | "data-definition" | "data-dictionary" | "data-diode" | "data-enrichment--add" | "data-enrichment" | "data-glossary" | "data-player" | "data-quality-definition" | "data-refinery--reference" | "data-refinery" | "data-set-encryption" | "data-share" | "data-table--reference" | "data-table" | "data-vis--1" | "data-vis--2" | "data-vis--3" | "data-vis--4" | "data-volume--alt" | "data-volume" | "database--datastax" | "database--elastic" | "database--enterprise-db2" | "database--enterprisedb" | "database--etcd" | "database--messaging" | "database--mongodb" | "database--postgreSQL" | "database--rabbit" | "database--redis" | "datastore" | "db2--buffer-pool" | "db2--data-sharing-group" | "db2--database" | "debug" | "decision-node" | "decision-tree" | "decline" | "delay" | "delete" | "delivery--add" | "delivery--parcel" | "delivery--time" | "delivery-settings" | "delivery-truck" | "delivery" | "demo" | "departure" | "dependency" | "deploy-rules" | "deploy" | "deployment-canary" | "deployment-pattern" | "deployment-policy" | "deployment-unit--data" | "deployment-unit--execution" | "deployment-unit--installation" | "deployment-unit--presentation" | "deployment-unit--technical--data" | "deployment-unit--technical--execution" | "deployment-unit--technical--installation" | "deployment-unit--technical--presentation" | "desk--adjustable" | "development" | "devices--apps" | "devices" | "dew-point--filled" | "dew-point" | "dfsort-ibm-z-sort" | "diagram--reference" | "diagram" | "diamond--outline" | "diamond--solid" | "digital--identity" | "direct-link" | "direction--bear-right--01--filled" | "direction--bear-right--01" | "direction--bear-right--02--filled" | "direction--bear-right--02" | "direction--curve--filled" | "direction--curve" | "direction--fork--filled" | "direction--fork" | "direction--loop-left--filled" | "direction--loop-left" | "direction--loop-right--filled" | "direction--loop-right" | "direction--merge--filled" | "direction--merge" | "direction--right--01--filled" | "direction--right--01" | "direction--right--02--filled" | "direction--right--02" | "direction--rotary--first-right--filled" | "direction--rotary--first-right" | "direction--rotary--right--filled" | "direction--rotary--right" | "direction--rotary--straight--filled" | "direction--rotary--straight" | "direction--sharp-turn--filled" | "direction--sharp-turn" | "direction--straight--filled" | "direction--straight--right--filled" | "direction--straight--right" | "direction--straight" | "direction--u-turn--filled" | "direction--u-turn" | "directory-domain" | "disable-step" | "distribute--horizontal-center" | "distribute--horizontal-left" | "distribute--horizontal-right" | "distribute--vertical-bottom" | "distribute--vertical-center" | "distribute--vertical-top" | "dns-services" | "document--add" | "document--attachment" | "document--audio" | "document--blank" | "document--comment" | "document--configuration" | "document--download" | "document--epdf" | "document--export" | "document--horizontal" | "document--import" | "document--multiple-01" | "document--multiple-02" | "document--pdf" | "document--preliminary" | "document--processor" | "document--protected" | "document--requirements" | "document--security" | "document--signed" | "document--sketch" | "document--subject" | "document--subtract" | "document--tasks" | "document--unknown" | "document--unprotected" | "document--vertical" | "document--video" | "document--view" | "document--word-processor--reference" | "document--word-processor" | "document-sentiment" | "document-set" | "document" | "documentation" | "dog-walker" | "dot-mark" | "double-axis-chart--bar" | "double-axis-chart--column" | "double-chevron--left" | "double-chevron--right" | "double-integer" | "down-to-bottom" | "download" | "downstream" | "drag--horizontal" | "drag--vertical" | "draggable" | "draw" | "drill-back" | "drill-down" | "drill-through" | "drink--01" | "drink--02" | "driver-analysis" | "drone--delivery" | "drone--front" | "drone--video" | "drone" | "drop-photo--filled" | "drop-photo" | "drought" | "earth--americas--filled" | "earth--americas" | "earth--europe-africa--filled" | "earth--europe-africa" | "earth--filled" | "earth--southeast-asia--filled" | "earth--southeast-asia" | "earth" | "earthquake" | "edge-cluster" | "edge-device" | "edge-node--alt" | "edge-node" | "edge-service" | "edit--off" | "edit" | "edt-loop" | "education" | "element-picker" | "email--new" | "email--user" | "email" | "emissions-management" | "emissions" | "enable-step" | "encryption" | "energy--renewable" | "energy--report" | "energy--waste" | "enterprise" | "enumeration--definition" | "enumeration--usage" | "equal--approximately" | "equalizer" | "erase" | "error--filled" | "error--outline" | "error" | "event--change" | "event--incident" | "event--number" | "event--schedule" | "event--warning" | "event" | "events--alt" | "events" | "exam-mode" | "executable-program" | "execution-history" | "exit" | "expand-all" | "expand-categories" | "expand-screen--filled" | "expand-screen" | "explore" | "export" | "extensions" | "eyedropper" | "face--activated--add" | "face--activated--filled" | "face--activated" | "face--add" | "face--cool" | "face--dissatisfied--filled" | "face--dissatisfied" | "face--dizzy--filled" | "face--dizzy" | "face--mask" | "face--neutral--filled" | "face--neutral" | "face--pending--filled" | "face--pending" | "face--satisfied--filled" | "face--satisfied" | "face--wink--filled" | "face--wink" | "facility--group--alternate" | "facility--group" | "factor" | "fade" | "favorite--filled" | "favorite--half" | "favorite" | "feature-membership--filled" | "feature-membership" | "feature-picker" | "feature-typing" | "feedback-documentation" | "fetch-upload--cloud" | "fetch-upload" | "file--change" | "file--diff" | "file--storage" | "file--x" | "filter--edit" | "filter--remove" | "filter--reset" | "filter" | "finance" | "financial-assets" | "fingerprint-recognition" | "fire--fill" | "fire" | "firewall--classic" | "firewall" | "fish--multiple" | "fish" | "fit-to-height" | "fit-to-screen" | "fit-to-width" | "flag--filled" | "flag" | "flagging-taxi" | "flash--filled" | "flash--off--filled" | "flash--off" | "flash" | "flight--international" | "flight--roster" | "flight--schedule" | "floating-ip" | "flood--warning" | "flood" | "floorplan" | "flow--connection" | "flow--data" | "flow--modeler--reference" | "flow--modeler" | "flow--sequence" | "flow--stream--reference" | "flow--stream" | "flow-logs-vpc" | "flow" | "fog" | "folder--add" | "folder--details--reference" | "folder--details" | "folder--move-to" | "folder--off" | "folder--open" | "folder--parent" | "folder--shared" | "folder--tree" | "folder" | "folders" | "follow-up-work-order" | "for-loop" | "forecast--hail-30" | "forecast--hail" | "forecast--lightning-30" | "forecast--lightning" | "fork-node" | "fork" | "forum" | "forward--10" | "forward--30" | "forward--5" | "fragile" | "fragments" | "friendship" | "fruit-bowl" | "fuel-can" | "function--2" | "function-math" | "function" | "funnel--sequence" | "funnel--sort" | "game--console" | "game--wireless" | "gamification" | "gas-station--diesel" | "gas-station--eco" | "gas-station--filled" | "gas-station" | "gateway--api" | "gateway--mail" | "gateway--public" | "gateway--security" | "gateway--user-access" | "gateway--vpn" | "gateway" | "gears" | "gem--reference" | "gem" | "gender--female" | "gender--male" | "generate--pdf" | "gift" | "git--repo" | "global-filters" | "global-loan-and-trial" | "globe--private" | "globe" | "gradient" | "graph-aggregator" | "graphical-data-flow" | "grid" | "group--access" | "group--account" | "group--presentation" | "group--resource" | "group--security" | "group-objects--new" | "group-objects--save" | "group-objects" | "group" | "growth" | "gui--management" | "gui" | "hail" | "harbor" | "hardware-security-module" | "hashtag" | "haze--night" | "haze" | "heading" | "headphones" | "headset" | "health-cross" | "hearing" | "heat-map--02" | "heat-map--03" | "heat-map--stocks" | "heat-map" | "helicopter" | "helmet" | "help--filled" | "help-desk" | "help" | "hexagon--outline" | "hexagon--solid" | "hexagon--vertical--outline" | "hexagon--vertical--solid" | "history" | "home" | "horizontal-line--dashed" | "horizontal-line--solid" | "horizontal-view" | "hospital-bed" | "hospital" | "hotel" | "hourglass" | "humidity--alt" | "humidity" | "hurricane" | "hybrid-networking--alt" | "hybrid-networking" | "ibm--ai-on-z" | "ibm--aiops-insights" | "ibm--api-connect" | "ibm--app-connect-enterprise" | "ibm--application-and-discovery-delivery-intelligence" | "ibm--aspera" | "ibm--cloudant" | "ibm--content-cortex-repository" | "ibm--data-power" | "ibm--data-product-exchange" | "ibm--data-replication" | "ibm--databand" | "ibm--datastage" | "ibm--db2--alt" | "ibm--db2-warehouse" | "ibm--db2" | "ibm--deployable-architecture" | "ibm--devops-test" | "ibm--dynamic-route-server" | "ibm--elo--automotive-compliance" | "ibm--elo--engineering-insights" | "ibm--elo--method-composer" | "ibm--elo--publishing" | "ibm--engineering-lifecycle-mgmt" | "ibm--engineering-requirements-doors-next" | "ibm--engineering-systems-design-rhapsody-model-manager" | "ibm--engineering-systems-design-rhapsody-sn1" | "ibm--engineering-systems-design-rhapsody-sn2" | "ibm--engineering-systems-design-rhapsody" | "ibm--engineering-test-mgmt" | "ibm--engineering-workflow-mgmt" | "ibm--event-automation" | "ibm--event-endpoint-mgmt" | "ibm--event-processing" | "ibm--event-streams" | "ibm--gcm" | "ibm--global-storage-architecture" | "ibm--granite" | "ibm--ibv" | "ibm--instana" | "ibm--jrs" | "ibm--knowledge-catalog-premium" | "ibm--knowledge-catalog-standard" | "ibm--knowledge-catalog" | "ibm--launchpad-s4" | "ibm--lpa" | "ibm--lqe" | "ibm--machine-learning-for-zos" | "ibm--match-360" | "ibm--maximo-application-suite" | "ibm--mq" | "ibm--open-enterprise-languages" | "ibm--openshift-container-platform-on-vpc-for-regulated-industries" | "ibm--planning-analytics" | "ibm--power-vs-private-cloud" | "ibm--power-vs" | "ibm--power-with-vpc" | "ibm--private-path-services" | "ibm--process-mining" | "ibm--saas-console" | "ibm--sap-on-power" | "ibm--secure-infrastructure-on-vpc-for-regulated-industries" | "ibm--streamsets" | "ibm--telehealth" | "ibm--test-accelerator-for-z" | "ibm--toolchain" | "ibm--turbonomic" | "ibm--unstructured-data-processor" | "ibm--vpn-for-vpc" | "ibm--vsi-on-vpc-for-regulated-industries" | "ibm--wazi-deploy" | "ibm--webmethods-api-gateway" | "ibm--webmethods-api-studio" | "ibm--webmethods-b2b-integration" | "ibm--webmethods-developer-portal" | "ibm--webmethods-hybrid-integration" | "ibm--webmethods-integration-server" | "ibm--webmethods-integration" | "ibm--webmethods-managed-file-transfer" | "ibm-cloud--HSM" | "ibm-cloud--app-id" | "ibm-cloud--backup-and-recovery" | "ibm-cloud--backup-service-vpc" | "ibm-cloud--bare-metal-server" | "ibm-cloud--bare-metal-servers-vpc" | "ibm-cloud--citrix-daas" | "ibm-cloud--code-engine" | "ibm-cloud--continuous-delivery" | "ibm-cloud--databases" | "ibm-cloud--dedicated-host" | "ibm-cloud--direct-link-1--connect" | "ibm-cloud--direct-link-1--dedicated-hosting" | "ibm-cloud--direct-link-1--dedicated" | "ibm-cloud--direct-link-1--exchange" | "ibm-cloud--direct-link-2--connect" | "ibm-cloud--direct-link-2--dedicated-hosting" | "ibm-cloud--direct-link-2--dedicated" | "ibm-cloud--essential-security-and-observability-services" | "ibm-cloud--event-notification" | "ibm-cloud--event-streams" | "ibm-cloud--for-education" | "ibm-cloud--gate-keeper" | "ibm-cloud--hpc" | "ibm-cloud--hyper-protect-crypto-services" | "ibm-cloud--hyper-protect-dbaas" | "ibm-cloud--hyper-protect-vs" | "ibm-cloud--internet-services" | "ibm-cloud--ipsec-vpn" | "ibm-cloud--key-protect" | "ibm-cloud--kubernetes-service" | "ibm-cloud--logging" | "ibm-cloud--mass-data-migration" | "ibm-cloud--observability" | "ibm-cloud--pal" | "ibm-cloud--privileged-access-gateway" | "ibm-cloud--projects" | "ibm-cloud--resiliency" | "ibm-cloud--secrets-manager" | "ibm-cloud--security-compliance-center-workload-protection" | "ibm-cloud--security-compliance-center" | "ibm-cloud--security-groups" | "ibm-cloud--security" | "ibm-cloud--subnets" | "ibm-cloud--sysdig-secure" | "ibm-cloud--transit-gateway" | "ibm-cloud--virtual-server-classic" | "ibm-cloud--virtual-server-vpc" | "ibm-cloud--vpc-block-storage-snapshots" | "ibm-cloud--vpc-client-vpn" | "ibm-cloud--vpc-endpoints" | "ibm-cloud--vpc-file-storage" | "ibm-cloud--vpc-images" | "ibm-cloud--vpc" | "ibm-cloud-pak--MANTA-automated-data-lineage" | "ibm-cloud-pak--applications" | "ibm-cloud-pak--business-automation" | "ibm-cloud-pak--data" | "ibm-cloud-pak--integration" | "ibm-cloud-pak--multicloud-mgmt" | "ibm-cloud-pak--netezza" | "ibm-cloud-pak--network-automation" | "ibm-cloud-pak--security" | "ibm-cloud-pak--system" | "ibm-cloud-pak--watson-aiops" | "ibm-cloud" | "ibm-consulting-advantage--agent" | "ibm-consulting-advantage--application" | "ibm-consulting-advantage--assistant" | "ibm-devops--control" | "ibm-federated-api-management" | "ibm-hybrid-control-plane" | "ibm-partner-plus" | "ibm-quantum--safe-advisor" | "ibm-quantum--safe-explorer" | "ibm-quantum--safe-remediator" | "ibm-security--services" | "ibm-security" | "ibm-software--watsonx--data--analyze-and-process" | "ibm-software--watsonx--data--structured--enrichment" | "ibm-software--watsonx--data--structured--import" | "ibm-software--watsonx--data--unstructured--enrichment" | "ibm-software--watsonx--data--unstructured--import" | "ibm-software--watsonx--document--library" | "ibm-watson--assistant" | "ibm-watson--discovery" | "ibm-watson--knowledge-catalog" | "ibm-watson--knowledge-studio" | "ibm-watson--language-translator" | "ibm-watson--machine-learning" | "ibm-watson--natural-language-classifier" | "ibm-watson--natural-language-understanding" | "ibm-watson--openscale" | "ibm-watson--orders" | "ibm-watson--query" | "ibm-watson--speech-to-text" | "ibm-watson--studio" | "ibm-watson--text-to-speech" | "ibm-watson--tone-analyzer" | "ibm-watsonx--assistant" | "ibm-watsonx--code-assistant-for-enterprise-java-applications" | "ibm-watsonx--code-assistant-for-z--refactor" | "ibm-watsonx--code-assistant-for-z-understand" | "ibm-watsonx--code-assistant-for-z-validation-assistant" | "ibm-watsonx--code-assistant-for-z" | "ibm-watsonx--code-assistant" | "ibm-watsonx--orchestrate" | "ibm-z--cloud-mod-stack" | "ibm-z--environments-dev-sec-ops" | "ibm-z--open-editor" | "ibm-z--processor-capacity-reference" | "ibm-z-cloud--provisioning" | "ibm-z-os--ai-control-interface" | "ibm-z-os--containers" | "ibm-z-os--package-manager" | "ibm-z-os" | "ice--accretion" | "ice--vision" | "id-management" | "idea" | "identification" | "if--action" | "if--else" | "image--copy" | "image--medical" | "image--reference" | "image--search--alt" | "image--search" | "image-service" | "image-store--local" | "image" | "import-export" | "important" | "improve-relevance" | "in-progress--error" | "in-progress--warning" | "in-progress" | "incident-reporter" | "incomplete--cancel" | "incomplete--error" | "incomplete--warning" | "incomplete" | "increase-level" | "industry" | "infinity-symbol" | "information--disabled" | "information--filled" | "information--square--filled" | "information--square" | "information" | "infrastructure--classic" | "insert--page" | "insert-syntax" | "insert" | "inspection" | "instance--bx" | "instance--classic" | "instance--cx" | "instance--mx" | "instance--virtual" | "integration" | "intent-request--active" | "intent-request--create" | "intent-request--heal" | "intent-request--inactive" | "intent-request--scale-in" | "intent-request--scale-out" | "intent-request--uninstall" | "intent-request--upgrade" | "interactions" | "interface--definition--alt" | "interface--definition" | "interface--usage--1" | "interface--usage--alt" | "interface--usage" | "intersect" | "intrusion-prevention" | "inventory-management" | "iot--connect" | "iot--platform" | "item--definition" | "item--usage" | "job--daemon" | "job--run" | "join--full" | "join--inner--alt" | "join--inner" | "join--left-outer" | "join--left" | "join--outer" | "join--right-outer" | "join--right" | "join-node" | "js-error" | "jump-link" | "keep-dry" | "key--values" | "keyboard--off" | "keyboard" | "keychain" | "kiosk-device" | "kubelet" | "kubernetes--control-plane-node" | "kubernetes--ip-address" | "kubernetes--operator" | "kubernetes--pod" | "kubernetes--worker-node" | "kubernetes" | "label" | "language" | "laptop" | "lasso--polygon" | "lasso" | "launch" | "layers--external" | "layers" | "legend" | "letter--Aa" | "letter--Bb" | "letter--Cc" | "letter--Dd" | "letter--Ee" | "letter--Ff" | "letter--Gg" | "letter--Hh" | "letter--Ii" | "letter--Jj" | "letter--Kk" | "letter--Ll" | "letter--Mm" | "letter--Nn" | "letter--Oo" | "letter--Pp" | "letter--Qq" | "letter--Rr" | "letter--Ss" | "letter--Tt" | "letter--Uu" | "letter--Vv" | "letter--Ww" | "letter--Xx" | "letter--Yy" | "letter--Zz" | "license--draft" | "license--global" | "license--maintenance-draft" | "license--maintenance" | "license--third-party-draft" | "license--third-party" | "license" | "lifesaver" | "light--filled" | "light" | "lightning" | "line--thick" | "line--thin" | "link" | "linux--alt" | "linux--namespace" | "linux" | "list--boxes" | "list--bulleted" | "list--checked--mirror" | "list--checked" | "list--dropdown" | "list--numbered--mirror" | "list--numbered" | "list-tree" | "list" | "load-balancer--application" | "load-balancer--classic" | "load-balancer--global" | "load-balancer--listener" | "load-balancer--local" | "load-balancer--network" | "load-balancer--pool" | "load-balancer--vpc" | "location--company--filled" | "location--company" | "location--current" | "location--filled" | "location--group" | "location--hazard--filled" | "location--hazard" | "location--heart--filled" | "location--heart" | "location--info--filled" | "location--info" | "location--person--filled" | "location--person" | "location--save" | "location--star--filled" | "location--star" | "location--supplier" | "location" | "locked-and-blocked" | "locked" | "logical-partition" | "login" | "logo--angular" | "logo--ansible-community" | "logo--bluesky" | "logo--digg" | "logo--discord" | "logo--facebook" | "logo--figma" | "logo--flickr" | "logo--git" | "logo--github" | "logo--gitlab" | "logo--glassdoor" | "logo--instagram" | "logo--invision" | "logo--jupyter" | "logo--keybase" | "logo--kubernetes" | "logo--linkedin" | "logo--livestream" | "logo--mastodon" | "logo--medium" | "logo--model-context-protocol" | "logo--npm" | "logo--openshift" | "logo--pinterest" | "logo--python" | "logo--quora" | "logo--r-script" | "logo--react" | "logo--red-hat-ai-instructlab-on-ibm-cloud" | "logo--red-hat-ansible" | "logo--sketch" | "logo--skype" | "logo--slack" | "logo--snapchat" | "logo--svelte" | "logo--tumblr" | "logo--twitter" | "logo--vmware--alt" | "logo--vmware" | "logo--vue" | "logo--wechat" | "logo--x" | "logo--xing" | "logo--yelp" | "logo--youtube" | "logout" | "loop--alt" | "loop" | "mac--command" | "mac--option" | "mac--shift" | "machine-learning-model" | "machine-learning" | "magic-wand--filled" | "magic-wand" | "mail--all" | "mail--reply" | "manage-protection" | "managed-solutions" | "map--center" | "map--identify" | "map-boundary--vegetation" | "map-boundary" | "map" | "mapping--clear" | "mapping--hide" | "mapping--show" | "marginal" | "marine-warning" | "material-request" | "math-curve" | "maximize" | "media--library--filled" | "media--library" | "media-cast" | "medication--alert" | "medication--reminder" | "medication" | "menu" | "merge-node" | "merge" | "message-queue" | "meter--alt" | "meter" | "microphone--filled" | "microphone--off--filled" | "microphone--off" | "microphone" | "microscope" | "microservices--1" | "microservices--2" | "migrate--alt" | "migrate" | "milestone" | "military-camp" | "minimap-off" | "minimap-on" | "minimize" | "minus--plus" | "misuse--outline" | "misuse" | "mixed-rain-hail" | "ml-model--reference" | "mobile--add" | "mobile--audio" | "mobile--check" | "mobile--crash" | "mobile--download" | "mobile--event" | "mobile--landscape" | "mobile--request" | "mobile--session" | "mobile--view-orientation" | "mobile--view" | "mobile" | "mobility--services" | "model--alt" | "model--content--doc" | "model--foundation" | "model--reference" | "model--tuned" | "model-builder--reference" | "model-builder" | "model" | "modified--newest" | "modified--oldest" | "money" | "monster" | "monument" | "moon" | "moonrise" | "moonset" | "mostly-cloudy--night" | "mostly-cloudy" | "mountain" | "move" | "movement" | "multiuser-device" | "music--add" | "music--remove" | "music" | "mysql" | "name-space" | "naming-conventions" | "navaid--civil" | "navaid--dme" | "navaid--helipad" | "navaid--military-civil" | "navaid--military" | "navaid--ndb-dme" | "navaid--ndb" | "navaid--private" | "navaid--seaplane" | "navaid--tacan" | "navaid--vhfor" | "navaid--vor-dme" | "navaid--vor-tac" | "navaid--vor" | "need" | "network--1" | "network--2" | "network--3--reference" | "network--3" | "network--4--reference" | "network--4" | "network--admin-control" | "network--enterprise" | "network--overlay" | "network--public" | "network-interface" | "network-time-protocol" | "new-tab" | "next--filled" | "next--outline" | "no-image" | "no-ticket" | "nominal" | "non-certified" | "noodle-bowl" | "not-available" | "not-sent--filled" | "not-sent" | "notebook--reference" | "notebook" | "notification--filled" | "notification--new" | "notification--off--filled" | "notification--off" | "notification-counter" | "notification" | "notifications-paused" | "null-sign" | "number--0" | "number--1" | "number--2" | "number--3" | "number--4" | "number--5" | "number--6" | "number--7" | "number--8" | "number--9" | "number--small--0" | "number--small--1" | "number--small--2" | "number--small--3" | "number--small--4" | "number--small--5" | "number--small--6" | "number--small--7" | "number--small--8" | "number--small--9" | "object-storage--alt" | "object-storage" | "object" | "observed--hail" | "observed--lightning" | "offset--environmental" | "omega" | "opacity" | "open--stripe" | "open-panel--bottom" | "open-panel--filled--bottom" | "open-panel--filled--left" | "open-panel--filled--right" | "open-panel--filled--top" | "open-panel--left" | "open-panel--right" | "open-panel--top" | "operations--field" | "operations--record" | "orchestrate" | "order--server" | "order--storm" | "order--stratus" | "order-details" | "ordinal" | "outage" | "outlook-severe" | "overflow-menu--horizontal" | "overflow-menu--vertical" | "overlay" | "package--text-analysis" | "package-node" | "package" | "page--first" | "page--last" | "page-break" | "page-number" | "paint-brush--alt" | "paint-brush" | "palm-tree" | "pan--horizontal" | "pan--vertical" | "panel-expansion" | "paragraph" | "parameter" | "parent-child" | "parent-node" | "part--definition" | "part--usage" | "partition--auto" | "partition--collection" | "partition--repartition" | "partition--same" | "partition--specific" | "partly-cloudy--night" | "partly-cloudy" | "partnership" | "party-popper" | "passenger--drinks" | "passenger--plus" | "password" | "paste" | "pause--filled" | "pause--outline--filled" | "pause--outline" | "pause-future" | "pause-past" | "pause" | "payment--methods" | "pcn--e-node" | "pcn--military" | "pcn--p-node" | "pcn--z-node" | "pedestrian--family" | "pedestrian-child" | "pedestrian" | "pen--fountain" | "pen" | "pending--filled" | "pending" | "pentagon--down--outline" | "pentagon--down--solid" | "pentagon--left--outline" | "pentagon--left--solid" | "pentagon--outline" | "pentagon--right--outline" | "pentagon--right--solid" | "pentagon--solid" | "percentage--filled" | "percentage" | "perform--action" | "person--favorite" | "person" | "pest" | "phone--application" | "phone--block--filled" | "phone--block" | "phone--filled" | "phone--incoming--filled" | "phone--incoming" | "phone--ip" | "phone--off--filled" | "phone--off" | "phone--outgoing--filled" | "phone--outgoing" | "phone--settings" | "phone--voice--filled" | "phone--voice" | "phone" | "phrase-sentiment" | "picnic-area" | "piggy-bank--slot" | "piggy-bank" | "pills--add" | "pills--subtract" | "pills" | "pin--filled" | "pin" | "pipelines" | "pivot--horizontal" | "pivot--vertical" | "plan" | "plane--private" | "plane--sea" | "plane" | "platform-automation" | "platforms" | "play--filled--alt" | "play--filled" | "play--outline--filled" | "play--outline" | "play" | "playlist" | "plug--filled" | "plug" | "point-of-presence" | "point" | "police" | "policy" | "pop-in" | "popup" | "port--definition" | "port--input" | "port--output" | "port--usage" | "portfolio--management" | "portfolio" | "power-enterprise-pools-metered-capacity-integration" | "power-virtual-server-disaster-recovery-automation" | "power" | "pre-prod-environment" | "presentation-file" | "pressure--filled" | "pressure" | "previous--filled" | "previous--outline" | "pricing--consumption" | "pricing--container" | "pricing--quick-proposal" | "pricing--tailored" | "pricing--traditional" | "printer" | "priority--high" | "priority--low" | "private-network" | "process-automate" | "process" | "product" | "production-environment" | "production-service" | "program--action" | "program" | "progress-bar--round" | "progress-bar" | "promote" | "prompt-session" | "prompt-template" | "property-relationship" | "pull-request" | "punctuation-check" | "purchase" | "qiskit" | "qq-plot" | "qr-code" | "quadrant-plot" | "query-queue" | "query" | "question-answering" | "queued" | "quotes" | "radar--enhanced" | "radar--weather" | "radar" | "radio--combat" | "radio--push-to-talk" | "radio-button--checked" | "radio-button" | "radio" | "rain--drizzle" | "rain--heavy" | "rain--scattered--night" | "rain--scattered" | "rain-drop" | "rain" | "read-me" | "reading--glasses" | "receipt--verification" | "receipt" | "recently-viewed" | "recommend" | "recording--filled--alt" | "recording--filled" | "recording" | "recycle" | "red-hat-ai-instructlab-on-ibm-cloud" | "redefinition" | "redo" | "ref-evapotranspiration" | "reference-architecture" | "reflect--horizontal" | "reflect--vertical" | "refrigerant" | "reminder--medical" | "reminder" | "remote-connection" | "renew--alt" | "renew" | "repeat--one" | "repeat" | "replicate" | "reply--all" | "reply" | "repo--artifact" | "repo--source-code" | "report--chart" | "report--data" | "report--growth" | "report" | "request-quote" | "requirement--definition" | "requirement--usage" | "reset--alt" | "reset" | "restart" | "restaurant--fine" | "restaurant" | "result--draft" | "result--new" | "result--old" | "result" | "retry--failed" | "return" | "review" | "rewind--10" | "rewind--30" | "rewind--5" | "right-panel--close--filled" | "right-panel--close" | "right-panel--open--filled" | "right-panel--open" | "road--weather" | "road" | "roadmap" | "rocket" | "rotate--clockwise--alt--filled" | "rotate--clockwise--alt" | "rotate--clockwise--filled" | "rotate--clockwise" | "rotate--counterclockwise--alt--filled" | "rotate--counterclockwise--alt" | "rotate--counterclockwise--filled" | "rotate--counterclockwise" | "rotate" | "router--voice" | "router--wifi" | "router" | "row--collapse" | "row--delete" | "row--expand" | "row--insert" | "row" | "rss" | "rule--cancelled" | "rule--data-quality" | "rule--draft" | "rule--filled" | "rule--locked" | "rule--partial" | "rule--test" | "rule-grouping--data-quality" | "rule" | "ruler--alt" | "ruler" | "run--mirror" | "run-view-icon" | "run" | "running" | "sailboat--coastal" | "sailboat--offshore" | "sales-ops" | "sankey-diagram--alt" | "sankey-diagram" | "satellite--radar" | "satellite--weather" | "satellite" | "satisfy--definition" | "satisfy--usage" | "save--model" | "save" | "scale" | "scales--tipped" | "scales" | "scalpel" | "scan--alt" | "scan--disabled" | "scan" | "scatter-matrix" | "schematics" | "scis--control-tower" | "scis--transparent-supply" | "scooter--front" | "scooter" | "screen--off" | "screen-map--set" | "screen-map" | "screen" | "script--reference" | "script" | "search--advanced" | "search--locate--mirror" | "search--locate" | "search" | "security-services" | "security" | "select--01" | "select--02" | "select--window" | "send--alt--filled" | "send--alt" | "send--filled" | "send-action--usage" | "send-backward" | "send-to-back" | "send" | "sensor" | "sequential-palette" | "server--dns" | "server--proxy" | "server--time--usage" | "server--time" | "service-desk" | "service-id" | "service-levels" | "session-border-control" | "settings--adjust" | "settings--check" | "settings--edit" | "settings--services" | "settings--view" | "settings" | "shadow" | "shape--except" | "shape--exclude" | "shape--intersect" | "shape--join" | "shape--unite" | "shapes" | "share-knowledge" | "share" | "shield--alert" | "shipment--delivery" | "shopping--bag" | "shopping--cart--arrow-down" | "shopping--cart--arrow-up" | "shopping--cart--clear" | "shopping--cart--error" | "shopping--cart--minus" | "shopping--cart--plus" | "shopping--cart" | "shopping--catalog" | "show-data--cards" | "shrink-screen--filled" | "shrink-screen" | "shuffle" | "shuttle" | "side-panel--close--filled" | "side-panel--close" | "side-panel--open--filled" | "side-panel--open" | "sight" | "sigma" | "signal-strength" | "sim-card" | "skill-level--advanced" | "skill-level--basic" | "skill-level--intermediate" | "skill-level" | "skip--back--filled" | "skip--back--outline--filled" | "skip--back--outline--solid" | "skip--back--outline" | "skip--back--solid--filled" | "skip--back" | "skip--forward--filled" | "skip--forward--outline--filled" | "skip--forward--outline--solid" | "skip--forward--outline" | "skip--forward--solid--filled" | "skip--forward" | "sleet" | "slisor" | "smell" | "smoke" | "snooze" | "snow--blizzard" | "snow--heavy" | "snow--scattered--night" | "snow--scattered" | "snow-density" | "snow" | "snowflake" | "soccer" | "socket" | "software-resource--cluster" | "software-resource--reference" | "software-resource" | "soil-moisture--field" | "soil-moisture--global" | "soil-moisture" | "soil-temperature--field" | "soil-temperature--global" | "soil-temperature" | "solar-panel" | "sort--ascending" | "sort--descending" | "sort--remove" | "sorting-a-to-z" | "sorting-highest-to-lowest-number" | "sorting-lowest-to-highest-number" | "sorting-z-to-a" | "source-control" | "spell-check" | "split-screen" | "split" | "spray-paint" | "sprout" | "spyre-accelerator" | "square--outline" | "square--slash" | "square--solid" | "stack-limitation" | "stamp" | "star--filled" | "star--half" | "star--review" | "star" | "stay-inside" | "stem-leaf-plot" | "stethoscope" | "stickies" | "stop--filled--alt" | "stop--filled" | "stop--outline--filled" | "stop--outline" | "stop-sign--filled" | "stop-sign" | "stop" | "storage-pool" | "storage-request" | "store" | "storm-tracker" | "storm" | "strategy-play" | "stratus" | "strawberry" | "string-integer" | "string-text" | "subclassification" | "subdirectory" | "subflow--local" | "subflow" | "subject--definition" | "subject--usage" | "subnet-acl-rules" | "subsetting" | "subtract--alt" | "subtract--filled" | "subtract--large" | "subtract" | "succession--flow-connection" | "succession" | "summary--KPI--mirror" | "summary--KPI" | "sun" | "sunrise" | "sunset" | "support-vector-machine" | "surrogate--key-database" | "surrogate--key-flat-file" | "sustainability" | "swim" | "swimlane-d--vertical" | "switch-layer-2" | "switch-layer-3" | "switch" | "switcher" | "swot--filled" | "swot" | "sync-settings" | "sys-provision" | "sysplex--distributor" | "table--add" | "table--alias" | "table--built" | "table--shortcut" | "table--split" | "table-of-contents" | "table" | "tablet--landscape" | "tablet" | "tag--edit" | "tag--export" | "tag--group" | "tag--import" | "tag--none" | "tag" | "tank" | "target" | "task--add" | "task--approved" | "task--asset-view" | "task--blank" | "task--complete" | "task--edit" | "task--hold" | "task--location" | "task--progress" | "task--remove" | "task--settings" | "task--star" | "task--tools" | "task--view" | "task" | "taste" | "taxi" | "tcp-ip-service" | "temperature--celsius--alt" | "temperature--celsius" | "temperature--fahrenheit--alt" | "temperature--fahrenheit" | "temperature--feels-like" | "temperature--frigid" | "temperature--hot" | "temperature--inversion" | "temperature--max" | "temperature--min" | "temperature--water" | "temperature" | "template" | "tennis-ball" | "tennis" | "term--reference" | "term" | "terminal--3270" | "terminal" | "test-tool" | "text--align--center" | "text--align--justify" | "text--align--left" | "text--align--mixed" | "text--align--right" | "text--all-caps" | "text--bold" | "text--clear-format" | "text--color" | "text--creation" | "text--fill" | "text--font" | "text--footnote" | "text--highlight" | "text--indent--less" | "text--indent--more" | "text--indent" | "text--italic" | "text--kerning" | "text--leading" | "text--line-spacing" | "text--long-paragraph" | "text--new-line" | "text--scale" | "text--selection" | "text--short-paragraph" | "text--small-caps" | "text--strikethrough" | "text--subscript" | "text--superscript" | "text--tracking" | "text--underline" | "text--vertical-alignment" | "text--wrap" | "text-link--analysis" | "text-link" | "text-mining--applier" | "text-mining" | "theater" | "this-side-up" | "thumbnail--1" | "thumbnail--2" | "thumbs-down--filled" | "thumbs-down" | "thumbs-up--filled" | "thumbs-up-double--filled" | "thumbs-up-double" | "thumbs-up" | "thunderstorm--scattered--night" | "thunderstorm--scattered" | "thunderstorm--severe" | "thunderstorm--strong" | "thunderstorm" | "ticket" | "tides" | "time--filled" | "time-plot" | "time" | "timeline" | "timer" | "timing-belt" | "toggle--off--fill" | "toggle--on--fill" | "toggle-off" | "toggle-on" | "tool-box" | "tool-kit" | "tools--alt" | "tools" | "top-data-sets" | "top-programs" | "tornado-warning" | "tornado" | "touch--1--filled" | "touch--1-down--filled" | "touch--1-down" | "touch--1" | "touch--2--filled" | "touch--2" | "touch--interaction" | "tour" | "trace" | "traffic--event" | "traffic--flow-incident" | "traffic--flow" | "traffic--incident" | "traffic--weather-incident" | "traffic-cone" | "train--heart" | "train--profile" | "train--speed" | "train--ticket" | "train--time" | "train" | "tram" | "transform--binary" | "transform--code" | "transform--instructions" | "transform--language" | "transform--pipeline" | "transgender" | "translate" | "transmission-lte" | "transpose" | "trash-can" | "tree--fall-risk" | "tree-view--alt" | "tree-view" | "tree" | "triangle--down--outline" | "triangle--down--solid" | "triangle--left--outline" | "triangle--left--solid" | "triangle--outline" | "triangle--right--outline" | "triangle--right--solid" | "triangle--solid" | "trigger" | "trophy--filled" | "trophy" | "tropical-storm--model-tracks" | "tropical-storm--tracks" | "tropical-storm" | "tropical-warning" | "try-catch" | "tsq" | "tsunami" | "tuning" | "two-factor-authentication" | "two-person-lift" | "type-pattern" | "types" | "umbrella" | "undefined--filled" | "undefined" | "undo" | "unfold--open" | "ungroup-objects" | "unknown--filled" | "unknown" | "unlink" | "unlocked" | "unplug" | "unsaved" | "up-to-top" | "update-complete" | "update-now" | "upgrade" | "upload" | "upstream" | "usage--included-use-case" | "use-case--definition" | "use-case--usage" | "user--access-locked" | "user--access-unlocked" | "user--access" | "user--activity" | "user--admin" | "user--avatar--filled--alt" | "user--avatar--filled" | "user--avatar" | "user--certification" | "user--data" | "user--favorite--alt--filled" | "user--favorite--alt" | "user--favorite" | "user--feedback" | "user--filled" | "user--follow" | "user--identification" | "user--military" | "user--minus" | "user--multiple" | "user--online" | "user--profile" | "user--role" | "user--service-desk" | "user--service" | "user--settings" | "user--simulation" | "user--speaker" | "user--sponsor" | "user--x-ray" | "user-profile--alt" | "user" | "utility--expense" | "uv-index--alt" | "uv-index--filled" | "uv-index" | "value--variable--alt" | "value--variable" | "van" | "vegetation--asset" | "vegetation--encroachment" | "vegetation--height" | "vehicle--api" | "vehicle--connected" | "vehicle--insights" | "vehicle--services" | "version--major" | "version--minor" | "version--patch" | "version" | "vertical--fold" | "vertical-view" | "video--add" | "video--chat" | "video--filled" | "video--off--filled" | "video--off" | "video-player" | "video" | "view--filled" | "view--mode-1" | "view--mode-2" | "view--off--filled" | "view--off" | "view-next" | "view" | "vintage-mac" | "virtual-column--key" | "virtual-column" | "virtual-desktop" | "virtual-machine" | "virtual-private-cloud--alt" | "virtual-private-cloud" | "visual-inspection" | "visual-recognition" | "vlan--ibm" | "vlan" | "vmdk-disk" | "voice-activate" | "voice-mode" | "voicemail" | "volume--block-storage" | "volume--down--alt" | "volume--down--filled--alt" | "volume--down--filled" | "volume--down" | "volume--file-storage" | "volume--mute--filled" | "volume--mute" | "volume--object-storage" | "volume--up--alt" | "volume--up--filled--alt" | "volume--up--filled" | "volume--up" | "vpn--connection" | "vpn--policy" | "wallet" | "warning--alt--filled" | "warning--alt-inverted--filled" | "warning--alt-inverted" | "warning--alt" | "warning--diamond-fill" | "warning--diamond" | "warning--filled" | "warning--hex--filled" | "warning--hex" | "warning--multiple" | "warning--other" | "warning-square--filled" | "warning-square" | "warning" | "watch" | "watson--machine-learning" | "watson" | "watsonx-ai" | "watsonx-data" | "watsonx-governance" | "watsonx" | "wave-direction" | "wave-height" | "wave-period" | "waveform" | "weather-front--cold" | "weather-front--stationary" | "weather-front--warm" | "weather-station" | "web-services--cluster" | "web-services--container" | "web-services--definition" | "web-services--service" | "web-services--task-definition-version" | "web-services--task" | "webhook" | "websheet" | "wheat" | "while-loop" | "white-paper" | "wifi--controller" | "wifi--not-secure" | "wifi--off" | "wifi--secure" | "wifi-bridge--alt" | "wifi-bridge" | "wifi" | "wikis" | "wind-gusts" | "wind-power" | "wind-stream" | "windy--dust" | "windy--snow" | "windy--strong" | "windy" | "winter-warning" | "wintry-mix" | "wireless-checkout" | "word-cloud" | "workflow-automation" | "workspace--import" | "workspace" | "worship--christian" | "worship--jewish" | "worship--muslim" | "worship" | "x-axis" | "y-axis" | "z--lpar" | "z--systems" | "z-HyperLink" | "z-axis" | "zoom--area" | "zoom--fit" | "zoom--in-area" | "zoom--in" | "zoom--out-area" | "zoom--out" | "zoom--reset" | "zos--partition" | "zos--sysplex" | "zos";
1
+ /** Os 1433 nomes do Phosphor que a Aurea desenha, os mesmos na web e no nativo. */
2
+ export type PhosphorIconName = "acorn" | "address-book" | "address-book-tabs" | "air-traffic-control" | "airplane" | "airplane-in-flight" | "airplane-landing" | "airplane-takeoff" | "airplane-taxiing" | "airplane-tilt" | "airplay" | "alarm" | "alien" | "align-bottom" | "align-bottom-simple" | "align-center-horizontal" | "align-center-horizontal-simple" | "align-center-vertical" | "align-center-vertical-simple" | "align-left" | "align-left-simple" | "align-right" | "align-right-simple" | "align-top" | "align-top-simple" | "ambulance" | "anchor" | "anchor-simple" | "angle" | "aperture" | "app-window" | "approximate-equals" | "archive" | "armchair" | "arrow-arc-left" | "arrow-arc-right" | "arrow-bend-double-up-left" | "arrow-bend-double-up-right" | "arrow-bend-down-left" | "arrow-bend-down-right" | "arrow-bend-left-down" | "arrow-bend-left-up" | "arrow-bend-right-down" | "arrow-bend-right-up" | "arrow-bend-up-left" | "arrow-bend-up-right" | "arrow-circle-down" | "arrow-circle-down-left" | "arrow-circle-down-right" | "arrow-circle-left" | "arrow-circle-right" | "arrow-circle-up" | "arrow-circle-up-left" | "arrow-circle-up-right" | "arrow-clockwise" | "arrow-counter-clockwise" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-elbow-down-left" | "arrow-elbow-down-right" | "arrow-elbow-left" | "arrow-elbow-left-down" | "arrow-elbow-left-up" | "arrow-elbow-right" | "arrow-elbow-right-down" | "arrow-elbow-right-up" | "arrow-elbow-up-left" | "arrow-elbow-up-right" | "arrow-fat-down" | "arrow-fat-left" | "arrow-fat-line-down" | "arrow-fat-line-left" | "arrow-fat-line-right" | "arrow-fat-line-up" | "arrow-fat-lines-down" | "arrow-fat-lines-left" | "arrow-fat-lines-right" | "arrow-fat-lines-up" | "arrow-fat-right" | "arrow-fat-up" | "arrow-left" | "arrow-line-down" | "arrow-line-down-left" | "arrow-line-down-right" | "arrow-line-left" | "arrow-line-right" | "arrow-line-up" | "arrow-line-up-left" | "arrow-line-up-right" | "arrow-right" | "arrow-square-down" | "arrow-square-down-left" | "arrow-square-down-right" | "arrow-square-in" | "arrow-square-left" | "arrow-square-out" | "arrow-square-right" | "arrow-square-up" | "arrow-square-up-left" | "arrow-square-up-right" | "arrow-u-down-left" | "arrow-u-down-right" | "arrow-u-left-down" | "arrow-u-left-up" | "arrow-u-right-down" | "arrow-u-right-up" | "arrow-u-up-left" | "arrow-u-up-right" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "arrows-clockwise" | "arrows-counter-clockwise" | "arrows-down-up" | "arrows-horizontal" | "arrows-in" | "arrows-in-cardinal" | "arrows-in-line-horizontal" | "arrows-in-line-vertical" | "arrows-in-simple" | "arrows-left-right" | "arrows-merge" | "arrows-out" | "arrows-out-cardinal" | "arrows-out-line-horizontal" | "arrows-out-line-vertical" | "arrows-out-simple" | "arrows-split" | "arrows-vertical" | "article" | "article-medium" | "article-ny-times" | "asclepius" | "asterisk" | "asterisk-simple" | "at" | "atom" | "avocado" | "axe" | "baby" | "baby-carriage" | "backpack" | "backspace" | "bag" | "bag-simple" | "balloon" | "bandaids" | "bank" | "barbell" | "barcode" | "barn" | "barricade" | "baseball" | "baseball-cap" | "baseball-helmet" | "basket" | "basketball" | "bathtub" | "battery-charging" | "battery-charging-vertical" | "battery-empty" | "battery-full" | "battery-high" | "battery-low" | "battery-medium" | "battery-plus" | "battery-plus-vertical" | "battery-vertical-empty" | "battery-vertical-full" | "battery-vertical-high" | "battery-vertical-low" | "battery-vertical-medium" | "battery-warning" | "battery-warning-vertical" | "beach-ball" | "beanie" | "bed" | "beer-bottle" | "beer-stein" | "bell" | "bell-ringing" | "bell-simple" | "bell-simple-ringing" | "bell-simple-slash" | "bell-simple-z" | "bell-slash" | "bell-z" | "belt" | "bezier-curve" | "bicycle" | "binary" | "binoculars" | "biohazard" | "bird" | "blueprint" | "bluetooth" | "bluetooth-connected" | "bluetooth-slash" | "bluetooth-x" | "boat" | "bomb" | "bone" | "book" | "book-bookmark" | "book-open" | "book-open-text" | "book-open-user" | "bookmark" | "bookmark-simple" | "bookmarks" | "bookmarks-simple" | "books" | "boot" | "boules" | "bounding-box" | "bowl-food" | "bowl-steam" | "bowling-ball" | "box-arrow-down" | "box-arrow-up" | "boxing-glove" | "brackets-angle" | "brackets-curly" | "brackets-round" | "brackets-square" | "brain" | "brandy" | "bread" | "bridge" | "briefcase" | "briefcase-metal" | "broadcast" | "broom" | "browser" | "browsers" | "bug" | "bug-beetle" | "bug-droid" | "building" | "building-apartment" | "building-office" | "buildings" | "bulldozer" | "bus" | "butterfly" | "cable-car" | "cactus" | "cake" | "calculator" | "calendar" | "calendar-blank" | "calendar-check" | "calendar-dot" | "calendar-dots" | "calendar-heart" | "calendar-minus" | "calendar-plus" | "calendar-slash" | "calendar-star" | "calendar-x" | "call-bell" | "camera" | "camera-plus" | "camera-rotate" | "camera-slash" | "campfire" | "car" | "car-battery" | "car-profile" | "car-simple" | "cardholder" | "cards" | "cards-three" | "caret-circle-double-down" | "caret-circle-double-left" | "caret-circle-double-right" | "caret-circle-double-up" | "caret-circle-down" | "caret-circle-left" | "caret-circle-right" | "caret-circle-up" | "caret-circle-up-down" | "caret-double-down" | "caret-double-left" | "caret-double-right" | "caret-double-up" | "caret-down" | "caret-left" | "caret-line-down" | "caret-line-left" | "caret-line-right" | "caret-line-up" | "caret-right" | "caret-up" | "caret-up-down" | "carrot" | "cash-register" | "cassette-tape" | "castle-turret" | "cat" | "cell-signal-full" | "cell-signal-high" | "cell-signal-low" | "cell-signal-medium" | "cell-signal-none" | "cell-signal-slash" | "cell-signal-x" | "cell-tower" | "certificate" | "chair" | "chalkboard" | "chalkboard-simple" | "chalkboard-teacher" | "champagne" | "charging-station" | "chart-bar" | "chart-bar-horizontal" | "chart-donut" | "chart-line" | "chart-line-down" | "chart-line-up" | "chart-pie" | "chart-pie-slice" | "chart-polar" | "chart-scatter" | "chat" | "chat-centered" | "chat-centered-dots" | "chat-centered-slash" | "chat-centered-text" | "chat-circle" | "chat-circle-dots" | "chat-circle-slash" | "chat-circle-text" | "chat-dots" | "chat-slash" | "chat-teardrop" | "chat-teardrop-dots" | "chat-teardrop-slash" | "chat-teardrop-text" | "chat-text" | "chats" | "chats-circle" | "chats-teardrop" | "check" | "check-circle" | "check-fat" | "check-square" | "check-square-offset" | "checkerboard" | "checks" | "cheers" | "cheese" | "chef-hat" | "cherries" | "church" | "cigarette" | "cigarette-slash" | "circle" | "circle-dashed" | "circle-half" | "circle-half-tilt" | "circle-notch" | "circles-four" | "circles-three" | "circles-three-plus" | "circuitry" | "city" | "clipboard" | "clipboard-text" | "clock" | "clock-afternoon" | "clock-clockwise" | "clock-countdown" | "clock-counter-clockwise" | "clock-user" | "closed-captioning" | "cloud" | "cloud-arrow-down" | "cloud-arrow-up" | "cloud-check" | "cloud-fog" | "cloud-lightning" | "cloud-moon" | "cloud-rain" | "cloud-slash" | "cloud-snow" | "cloud-sun" | "cloud-warning" | "cloud-x" | "clover" | "club" | "coat-hanger" | "code" | "code-block" | "code-simple" | "coffee" | "coffee-bean" | "coin" | "coin-vertical" | "coins" | "columns" | "columns-plus-left" | "columns-plus-right" | "command" | "compass" | "compass-rose" | "compass-tool" | "computer-tower" | "confetti" | "contactless-payment" | "control" | "cookie" | "cooking-pot" | "copy" | "copy-simple" | "copyleft" | "copyright" | "corners-in" | "corners-out" | "couch" | "court-basketball" | "cow" | "cowboy-hat" | "cpu" | "crane" | "crane-tower" | "credit-card" | "cricket" | "crop" | "cross" | "crosshair" | "crosshair-simple" | "crown" | "crown-cross" | "crown-simple" | "cube" | "cube-focus" | "cube-transparent" | "currency-btc" | "currency-circle-dollar" | "currency-cny" | "currency-dollar" | "currency-dollar-simple" | "currency-eth" | "currency-eur" | "currency-gbp" | "currency-inr" | "currency-jpy" | "currency-krw" | "currency-kzt" | "currency-ngn" | "currency-rub" | "cursor" | "cursor-click" | "cursor-text" | "cylinder" | "database" | "desk" | "desktop" | "desktop-tower" | "detective" | "device-mobile" | "device-mobile-camera" | "device-mobile-slash" | "device-mobile-speaker" | "device-rotate" | "device-tablet" | "device-tablet-camera" | "device-tablet-speaker" | "devices" | "diamond" | "diamonds-four" | "dice-five" | "dice-four" | "dice-one" | "dice-six" | "dice-three" | "dice-two" | "disc" | "disco-ball" | "divide" | "dna" | "dog" | "door" | "door-open" | "dot" | "dot-outline" | "dots-nine" | "dots-six" | "dots-six-vertical" | "dots-three" | "dots-three-circle" | "dots-three-circle-vertical" | "dots-three-outline" | "dots-three-outline-vertical" | "dots-three-vertical" | "download" | "download-simple" | "dress" | "dresser" | "drone" | "drop" | "drop-half" | "drop-half-bottom" | "drop-simple" | "drop-slash" | "ear" | "ear-slash" | "egg" | "egg-crack" | "eject" | "eject-simple" | "elevator" | "empty" | "engine" | "envelope" | "envelope-open" | "envelope-simple" | "envelope-simple-open" | "equalizer" | "equals" | "eraser" | "escalator-down" | "escalator-up" | "exam" | "exclamation-mark" | "exclude" | "exclude-square" | "export" | "eye" | "eye-closed" | "eye-slash" | "eyedropper" | "eyedropper-sample" | "eyeglasses" | "eyes" | "face-mask" | "factory" | "faders" | "faders-horizontal" | "fallout-shelter" | "fan" | "farm" | "fast-forward" | "fast-forward-circle" | "feather" | "file" | "file-archive" | "file-arrow-down" | "file-arrow-up" | "file-audio" | "file-c" | "file-c-sharp" | "file-cloud" | "file-code" | "file-cpp" | "file-css" | "file-csv" | "file-dashed" | "file-doc" | "file-html" | "file-image" | "file-ini" | "file-jpg" | "file-js" | "file-jsx" | "file-lock" | "file-magnifying-glass" | "file-md" | "file-minus" | "file-pdf" | "file-plus" | "file-png" | "file-ppt" | "file-py" | "file-rs" | "file-sql" | "file-svg" | "file-text" | "file-ts" | "file-tsx" | "file-txt" | "file-video" | "file-vue" | "file-x" | "file-xls" | "file-zip" | "files" | "film-reel" | "film-script" | "film-slate" | "film-strip" | "fingerprint" | "fingerprint-simple" | "finn-the-human" | "fire" | "fire-extinguisher" | "fire-simple" | "fire-truck" | "first-aid" | "first-aid-kit" | "fish" | "fish-simple" | "flag" | "flag-banner" | "flag-banner-fold" | "flag-checkered" | "flag-pennant" | "flame" | "flashlight" | "flask" | "flip-horizontal" | "flip-vertical" | "floppy-disk" | "floppy-disk-back" | "flow-arrow" | "flower" | "flower-lotus" | "flower-tulip" | "flying-saucer" | "folder" | "folder-dashed" | "folder-lock" | "folder-minus" | "folder-open" | "folder-plus" | "folder-simple" | "folder-simple-dashed" | "folder-simple-lock" | "folder-simple-minus" | "folder-simple-plus" | "folder-simple-star" | "folder-simple-user" | "folder-star" | "folder-user" | "folders" | "football" | "football-helmet" | "footprints" | "fork-knife" | "four-k" | "frame-corners" | "function" | "funnel" | "funnel-simple" | "funnel-simple-x" | "funnel-x" | "game-controller" | "garage" | "gas-can" | "gas-pump" | "gauge" | "gavel" | "gear" | "gear-fine" | "gear-six" | "gender-female" | "gender-intersex" | "gender-male" | "gender-neuter" | "gender-nonbinary" | "gender-transgender" | "ghost" | "gif" | "gift" | "git-branch" | "git-commit" | "git-diff" | "git-fork" | "git-merge" | "git-pull-request" | "globe" | "globe-hemisphere-east" | "globe-hemisphere-west" | "globe-simple" | "globe-simple-x" | "globe-stand" | "globe-x" | "goggles" | "golf" | "gps" | "gps-fix" | "gps-slash" | "gradient" | "graduation-cap" | "grains" | "grains-slash" | "graph" | "graphics-card" | "greater-than" | "greater-than-or-equal" | "grid-four" | "grid-nine" | "guitar" | "hair-dryer" | "hamburger" | "hammer" | "hand" | "hand-arrow-down" | "hand-arrow-up" | "hand-coins" | "hand-deposit" | "hand-eye" | "hand-fist" | "hand-grabbing" | "hand-heart" | "hand-palm" | "hand-peace" | "hand-pointing" | "hand-soap" | "hand-swipe-left" | "hand-swipe-right" | "hand-tap" | "hand-waving" | "hand-withdraw" | "handbag" | "handbag-simple" | "hands-clapping" | "hands-praying" | "handshake" | "hard-drive" | "hard-drives" | "hard-hat" | "hash" | "hash-straight" | "head-circuit" | "headlights" | "headphones" | "headset" | "heart" | "heart-break" | "heart-half" | "heart-straight" | "heart-straight-break" | "heartbeat" | "hexagon" | "high-definition" | "high-heel" | "highlighter" | "highlighter-circle" | "hockey" | "hoodie" | "horse" | "hospital" | "hourglass" | "hourglass-high" | "hourglass-low" | "hourglass-medium" | "hourglass-simple" | "hourglass-simple-high" | "hourglass-simple-low" | "hourglass-simple-medium" | "house" | "house-line" | "house-simple" | "hurricane" | "ice-cream" | "identification-badge" | "identification-card" | "image" | "image-broken" | "image-square" | "images" | "images-square" | "infinity" | "info" | "intersect" | "intersect-square" | "intersect-three" | "intersection" | "invoice" | "island" | "jar" | "jar-label" | "jeep" | "joystick" | "kanban" | "key" | "key-return" | "keyboard" | "keyhole" | "knife" | "ladder" | "ladder-simple" | "lamp" | "lamp-pendant" | "laptop" | "lasso" | "layout" | "leaf" | "lectern" | "lego" | "lego-smiley" | "less-than" | "less-than-or-equal" | "letter-circle-h" | "letter-circle-p" | "letter-circle-v" | "lifebuoy" | "lightbulb" | "lightbulb-filament" | "lighthouse" | "lightning" | "lightning-a" | "lightning-slash" | "line-segment" | "line-segments" | "line-vertical" | "link" | "link-break" | "link-simple" | "link-simple-break" | "link-simple-horizontal" | "link-simple-horizontal-break" | "list" | "list-bullets" | "list-checks" | "list-dashes" | "list-heart" | "list-magnifying-glass" | "list-numbers" | "list-plus" | "list-star" | "lock" | "lock-key" | "lock-key-open" | "lock-laminated" | "lock-laminated-open" | "lock-open" | "lock-simple" | "lock-simple-open" | "lockers" | "log" | "magic-wand" | "magnet" | "magnet-straight" | "magnifying-glass" | "magnifying-glass-minus" | "magnifying-glass-plus" | "mailbox" | "map-pin" | "map-pin-area" | "map-pin-line" | "map-pin-plus" | "map-pin-simple" | "map-pin-simple-area" | "map-pin-simple-line" | "map-trifold" | "marker-circle" | "martini" | "mask-happy" | "mask-sad" | "math-operations" | "medal" | "medal-military" | "megaphone" | "megaphone-simple" | "member-of" | "memory" | "meteor" | "metronome" | "microphone" | "microphone-slash" | "microphone-stage" | "microscope" | "minus" | "minus-circle" | "minus-square" | "money" | "money-wavy" | "monitor" | "monitor-arrow-up" | "monitor-play" | "moon" | "moon-stars" | "moped" | "moped-front" | "mosque" | "motorcycle" | "mountains" | "mouse" | "mouse-left-click" | "mouse-middle-click" | "mouse-right-click" | "mouse-scroll" | "mouse-simple" | "music-note" | "music-note-simple" | "music-notes" | "music-notes-minus" | "music-notes-plus" | "music-notes-simple" | "navigation-arrow" | "needle" | "network" | "network-slash" | "network-x" | "newspaper" | "newspaper-clipping" | "not-equals" | "not-member-of" | "not-subset-of" | "not-superset-of" | "notches" | "note" | "note-blank" | "note-pencil" | "notebook" | "notepad" | "notification" | "nuclear-plant" | "number-circle-eight" | "number-circle-five" | "number-circle-four" | "number-circle-nine" | "number-circle-one" | "number-circle-seven" | "number-circle-six" | "number-circle-three" | "number-circle-two" | "number-circle-zero" | "number-eight" | "number-five" | "number-four" | "number-nine" | "number-one" | "number-seven" | "number-six" | "number-square-eight" | "number-square-five" | "number-square-four" | "number-square-nine" | "number-square-one" | "number-square-seven" | "number-square-six" | "number-square-three" | "number-square-two" | "number-square-zero" | "number-three" | "number-two" | "number-zero" | "numpad" | "nut" | "octagon" | "office-chair" | "onigiri" | "option" | "orange" | "orange-slice" | "oven" | "package" | "paint-brush" | "paint-brush-broad" | "paint-brush-household" | "paint-bucket" | "paint-roller" | "palette" | "panorama" | "pants" | "paper-plane" | "paper-plane-right" | "paper-plane-tilt" | "paperclip" | "paperclip-horizontal" | "parachute" | "paragraph" | "parallelogram" | "park" | "password" | "path" | "pause" | "pause-circle" | "paw-print" | "peace" | "pen" | "pen-nib" | "pen-nib-straight" | "pencil" | "pencil-circle" | "pencil-line" | "pencil-ruler" | "pencil-simple" | "pencil-simple-line" | "pencil-simple-slash" | "pencil-slash" | "pentagon" | "pentagram" | "pepper" | "percent" | "person" | "person-arms-spread" | "person-simple" | "person-simple-bike" | "person-simple-circle" | "person-simple-hike" | "person-simple-run" | "person-simple-ski" | "person-simple-snowboard" | "person-simple-swim" | "person-simple-tai-chi" | "person-simple-throw" | "person-simple-walk" | "perspective" | "phone" | "phone-call" | "phone-disconnect" | "phone-incoming" | "phone-list" | "phone-outgoing" | "phone-pause" | "phone-plus" | "phone-slash" | "phone-transfer" | "phone-x" | "pi" | "piano-keys" | "picnic-table" | "picture-in-picture" | "piggy-bank" | "pill" | "ping-pong" | "pint-glass" | "pinwheel" | "pipe" | "pipe-wrench" | "pizza" | "placeholder" | "planet" | "plant" | "play" | "play-circle" | "play-pause" | "playlist" | "plug" | "plug-charging" | "plugs" | "plugs-connected" | "plus" | "plus-circle" | "plus-minus" | "plus-square" | "poker-chip" | "police-car" | "polygon" | "popcorn" | "popsicle" | "potted-plant" | "power" | "prescription" | "presentation" | "presentation-chart" | "printer" | "prohibit" | "prohibit-inset" | "projector-screen" | "projector-screen-chart" | "pulse" | "push-pin" | "push-pin-simple" | "push-pin-simple-slash" | "push-pin-slash" | "puzzle-piece" | "qr-code" | "question" | "question-mark" | "queue" | "quotes" | "rabbit" | "racquet" | "radical" | "radio" | "radio-button" | "radioactive" | "rainbow" | "rainbow-cloud" | "ranking" | "receipt" | "receipt-x" | "record" | "rectangle" | "rectangle-dashed" | "recycle" | "repeat" | "repeat-once" | "resize" | "rewind" | "rewind-circle" | "road-horizon" | "robot" | "rocket" | "rocket-launch" | "rows" | "rows-plus-bottom" | "rows-plus-top" | "rss" | "rss-simple" | "rug" | "ruler" | "sailboat" | "scales" | "scan" | "scan-smiley" | "scissors" | "scooter" | "screencast" | "screwdriver" | "scribble" | "scribble-loop" | "scroll" | "seal" | "seal-check" | "seal-percent" | "seal-question" | "seal-warning" | "seat" | "seatbelt" | "security-camera" | "selection" | "selection-all" | "selection-background" | "selection-foreground" | "selection-inverse" | "selection-plus" | "selection-slash" | "shapes" | "share" | "share-fat" | "share-network" | "shield" | "shield-check" | "shield-checkered" | "shield-chevron" | "shield-plus" | "shield-slash" | "shield-star" | "shield-warning" | "shipping-container" | "shirt-folded" | "shooting-star" | "shopping-bag" | "shopping-bag-open" | "shopping-cart" | "shopping-cart-simple" | "shovel" | "shower" | "shrimp" | "shuffle" | "shuffle-angular" | "shuffle-simple" | "sidebar" | "sidebar-simple" | "sigma" | "sign-in" | "sign-out" | "signature" | "signpost" | "sim-card" | "siren" | "skip-back" | "skip-back-circle" | "skip-forward" | "skip-forward-circle" | "skull" | "sliders" | "sliders-horizontal" | "slideshow" | "smiley" | "smiley-angry" | "smiley-blank" | "smiley-meh" | "smiley-melting" | "smiley-nervous" | "smiley-sad" | "smiley-sticker" | "smiley-wink" | "smiley-x-eyes" | "sneaker" | "sneaker-move" | "snowflake" | "soccer-ball" | "sock" | "solar-panel" | "solar-roof" | "sort-ascending" | "sort-descending" | "spade" | "sparkle" | "speaker-hifi" | "speaker-high" | "speaker-low" | "speaker-none" | "speaker-simple-high" | "speaker-simple-low" | "speaker-simple-none" | "speaker-simple-slash" | "speaker-simple-x" | "speaker-slash" | "speaker-x" | "speedometer" | "sphere" | "spinner" | "spinner-ball" | "spinner-gap" | "spiral" | "split-horizontal" | "split-vertical" | "spray-bottle" | "square" | "square-half" | "square-half-bottom" | "square-split-horizontal" | "square-split-vertical" | "squares-four" | "stack" | "stack-minus" | "stack-plus" | "stack-simple" | "stairs" | "stamp" | "standard-definition" | "star" | "star-and-crescent" | "star-four" | "star-half" | "star-of-david" | "steering-wheel" | "steps" | "stethoscope" | "sticker" | "stool" | "stop" | "stop-circle" | "storefront" | "strategy" | "student" | "subset-of" | "subset-proper-of" | "subtitles" | "subtitles-slash" | "subtract" | "subtract-square" | "subway" | "suitcase" | "suitcase-rolling" | "suitcase-simple" | "sun" | "sun-dim" | "sun-horizon" | "sunglasses" | "superset-of" | "superset-proper-of" | "swap" | "swatches" | "swimming-pool" | "sword" | "synagogue" | "syringe" | "t-shirt" | "table" | "tabs" | "tag" | "tag-chevron" | "tag-simple" | "target" | "taxi" | "tea-bag" | "television" | "television-simple" | "tennis-ball" | "tent" | "terminal" | "terminal-window" | "test-tube" | "text-a-underline" | "text-aa" | "text-align-center" | "text-align-justify" | "text-align-left" | "text-align-right" | "text-b" | "text-columns" | "text-h" | "text-h-five" | "text-h-four" | "text-h-one" | "text-h-six" | "text-h-three" | "text-h-two" | "text-indent" | "text-italic" | "text-outdent" | "text-strikethrough" | "text-subscript" | "text-superscript" | "text-t" | "text-t-slash" | "text-underline" | "textbox" | "thermometer" | "thermometer-cold" | "thermometer-hot" | "thermometer-simple" | "three-d" | "thumbs-down" | "thumbs-up" | "ticket" | "tilde" | "timer" | "tip-jar" | "tipi" | "tire" | "toggle-left" | "toggle-right" | "toilet" | "toilet-paper" | "toolbox" | "tooth" | "tornado" | "tote" | "tote-simple" | "towel" | "tractor" | "trademark" | "trademark-registered" | "traffic-cone" | "traffic-sign" | "traffic-signal" | "train" | "train-regional" | "train-simple" | "tram" | "translate" | "trash" | "trash-simple" | "tray" | "tray-arrow-down" | "tray-arrow-up" | "treasure-chest" | "tree" | "tree-evergreen" | "tree-palm" | "tree-structure" | "tree-view" | "trend-down" | "trend-up" | "triangle" | "triangle-dashed" | "trolley" | "trolley-suitcase" | "trophy" | "truck" | "truck-trailer" | "umbrella" | "umbrella-simple" | "union" | "unite" | "unite-square" | "upload" | "upload-simple" | "usb" | "user" | "user-check" | "user-circle" | "user-circle-check" | "user-circle-dashed" | "user-circle-gear" | "user-circle-minus" | "user-circle-plus" | "user-focus" | "user-gear" | "user-list" | "user-minus" | "user-plus" | "user-rectangle" | "user-sound" | "user-square" | "user-switch" | "users" | "users-four" | "users-three" | "van" | "vault" | "vector-three" | "vector-two" | "vibrate" | "video" | "video-camera" | "video-camera-slash" | "video-conference" | "vignette" | "vinyl-record" | "virtual-reality" | "virus" | "visor" | "voicemail" | "volleyball" | "wall" | "wallet" | "warehouse" | "warning" | "warning-circle" | "warning-diamond" | "warning-octagon" | "washing-machine" | "watch" | "wave-sawtooth" | "wave-sine" | "wave-square" | "wave-triangle" | "waveform" | "waveform-slash" | "waves" | "webcam" | "webcam-slash" | "wheelchair" | "wheelchair-motion" | "wifi-high" | "wifi-low" | "wifi-medium" | "wifi-none" | "wifi-slash" | "wifi-x" | "wind" | "windmill" | "wine" | "wrench" | "x" | "x-circle" | "x-square" | "yarn" | "yin-yang";
3
3
  /**
4
4
  * Nomes que o APP acrescenta: um sprite próprio na web, um glifo de `criarGlifo` no nativo.
5
5
  * Vazio de propósito. O app declara os seus uma vez, e só eles passam a valer:
@@ -10,5 +10,12 @@ export type CarbonIconName = "4K--filled" | "4K" | "AI-enabled-EDT" | "AI-enable
10
10
  */
11
11
  export interface AureaIconNames {
12
12
  }
13
- /** Nome de ícone aceito: um do Carbon ou um que o app declarou em `AureaIconNames`. */
14
- export type IconName = CarbonIconName | Extract<keyof AureaIconNames, string>;
13
+ /** Nome de ícone aceito: um do Phosphor ou um que o app declarou em `AureaIconNames`. */
14
+ export type IconName = PhosphorIconName | Extract<keyof AureaIconNames, string>;
15
+ /**
16
+ * O peso do ícone. `regular` é o de sempre; `fill` é o cheio, o do item escolhido (aba ativa,
17
+ * item atual do menu) — ADR-0053. Nome próprio do app não tem forma cheia e fica no `regular`.
18
+ */
19
+ export type IconWeight = "regular" | "fill";
20
+ /** Os nomes do Phosphor em tempo de execução: só eles têm a forma cheia (`<nome>-fill`). */
21
+ export declare const NOMES_PHOSPHOR: ReadonlySet<string>;
@@ -1,3 +1,4 @@
1
- // GERADO por scripts/icon-names.mjs a partir do @carbon/icons (svg/32). Não editar à mão.
2
- // Achado A-04: o nome do ícone é checado pelo TypeScript.
3
- export {};
1
+ // GERADO por scripts/icon-names.mjs a partir do @phosphor-icons/core. Não editar à mão.
2
+ // Achado A-04: o nome do ícone é checado pelo TypeScript. ADR-0053: os nomes são os do Phosphor.
3
+ /** Os nomes do Phosphor em tempo de execução: só eles têm a forma cheia (`<nome>-fill`). */
4
+ export const NOMES_PHOSPHOR = new Set(["acorn", "address-book", "address-book-tabs", "air-traffic-control", "airplane", "airplane-in-flight", "airplane-landing", "airplane-takeoff", "airplane-taxiing", "airplane-tilt", "airplay", "alarm", "alien", "align-bottom", "align-bottom-simple", "align-center-horizontal", "align-center-horizontal-simple", "align-center-vertical", "align-center-vertical-simple", "align-left", "align-left-simple", "align-right", "align-right-simple", "align-top", "align-top-simple", "ambulance", "anchor", "anchor-simple", "angle", "aperture", "app-window", "approximate-equals", "archive", "armchair", "arrow-arc-left", "arrow-arc-right", "arrow-bend-double-up-left", "arrow-bend-double-up-right", "arrow-bend-down-left", "arrow-bend-down-right", "arrow-bend-left-down", "arrow-bend-left-up", "arrow-bend-right-down", "arrow-bend-right-up", "arrow-bend-up-left", "arrow-bend-up-right", "arrow-circle-down", "arrow-circle-down-left", "arrow-circle-down-right", "arrow-circle-left", "arrow-circle-right", "arrow-circle-up", "arrow-circle-up-left", "arrow-circle-up-right", "arrow-clockwise", "arrow-counter-clockwise", "arrow-down", "arrow-down-left", "arrow-down-right", "arrow-elbow-down-left", "arrow-elbow-down-right", "arrow-elbow-left", "arrow-elbow-left-down", "arrow-elbow-left-up", "arrow-elbow-right", "arrow-elbow-right-down", "arrow-elbow-right-up", "arrow-elbow-up-left", "arrow-elbow-up-right", "arrow-fat-down", "arrow-fat-left", "arrow-fat-line-down", "arrow-fat-line-left", "arrow-fat-line-right", "arrow-fat-line-up", "arrow-fat-lines-down", "arrow-fat-lines-left", "arrow-fat-lines-right", "arrow-fat-lines-up", "arrow-fat-right", "arrow-fat-up", "arrow-left", "arrow-line-down", "arrow-line-down-left", "arrow-line-down-right", "arrow-line-left", "arrow-line-right", "arrow-line-up", "arrow-line-up-left", "arrow-line-up-right", "arrow-right", "arrow-square-down", "arrow-square-down-left", "arrow-square-down-right", "arrow-square-in", "arrow-square-left", "arrow-square-out", "arrow-square-right", "arrow-square-up", "arrow-square-up-left", "arrow-square-up-right", "arrow-u-down-left", "arrow-u-down-right", "arrow-u-left-down", "arrow-u-left-up", "arrow-u-right-down", "arrow-u-right-up", "arrow-u-up-left", "arrow-u-up-right", "arrow-up", "arrow-up-left", "arrow-up-right", "arrows-clockwise", "arrows-counter-clockwise", "arrows-down-up", "arrows-horizontal", "arrows-in", "arrows-in-cardinal", "arrows-in-line-horizontal", "arrows-in-line-vertical", "arrows-in-simple", "arrows-left-right", "arrows-merge", "arrows-out", "arrows-out-cardinal", "arrows-out-line-horizontal", "arrows-out-line-vertical", "arrows-out-simple", "arrows-split", "arrows-vertical", "article", "article-medium", "article-ny-times", "asclepius", "asterisk", "asterisk-simple", "at", "atom", "avocado", "axe", "baby", "baby-carriage", "backpack", "backspace", "bag", "bag-simple", "balloon", "bandaids", "bank", "barbell", "barcode", "barn", "barricade", "baseball", "baseball-cap", "baseball-helmet", "basket", "basketball", "bathtub", "battery-charging", "battery-charging-vertical", "battery-empty", "battery-full", "battery-high", "battery-low", "battery-medium", "battery-plus", "battery-plus-vertical", "battery-vertical-empty", "battery-vertical-full", "battery-vertical-high", "battery-vertical-low", "battery-vertical-medium", "battery-warning", "battery-warning-vertical", "beach-ball", "beanie", "bed", "beer-bottle", "beer-stein", "bell", "bell-ringing", "bell-simple", "bell-simple-ringing", "bell-simple-slash", "bell-simple-z", "bell-slash", "bell-z", "belt", "bezier-curve", "bicycle", "binary", "binoculars", "biohazard", "bird", "blueprint", "bluetooth", "bluetooth-connected", "bluetooth-slash", "bluetooth-x", "boat", "bomb", "bone", "book", "book-bookmark", "book-open", "book-open-text", "book-open-user", "bookmark", "bookmark-simple", "bookmarks", "bookmarks-simple", "books", "boot", "boules", "bounding-box", "bowl-food", "bowl-steam", "bowling-ball", "box-arrow-down", "box-arrow-up", "boxing-glove", "brackets-angle", "brackets-curly", "brackets-round", "brackets-square", "brain", "brandy", "bread", "bridge", "briefcase", "briefcase-metal", "broadcast", "broom", "browser", "browsers", "bug", "bug-beetle", "bug-droid", "building", "building-apartment", "building-office", "buildings", "bulldozer", "bus", "butterfly", "cable-car", "cactus", "cake", "calculator", "calendar", "calendar-blank", "calendar-check", "calendar-dot", "calendar-dots", "calendar-heart", "calendar-minus", "calendar-plus", "calendar-slash", "calendar-star", "calendar-x", "call-bell", "camera", "camera-plus", "camera-rotate", "camera-slash", "campfire", "car", "car-battery", "car-profile", "car-simple", "cardholder", "cards", "cards-three", "caret-circle-double-down", "caret-circle-double-left", "caret-circle-double-right", "caret-circle-double-up", "caret-circle-down", "caret-circle-left", "caret-circle-right", "caret-circle-up", "caret-circle-up-down", "caret-double-down", "caret-double-left", "caret-double-right", "caret-double-up", "caret-down", "caret-left", "caret-line-down", "caret-line-left", "caret-line-right", "caret-line-up", "caret-right", "caret-up", "caret-up-down", "carrot", "cash-register", "cassette-tape", "castle-turret", "cat", "cell-signal-full", "cell-signal-high", "cell-signal-low", "cell-signal-medium", "cell-signal-none", "cell-signal-slash", "cell-signal-x", "cell-tower", "certificate", "chair", "chalkboard", "chalkboard-simple", "chalkboard-teacher", "champagne", "charging-station", "chart-bar", "chart-bar-horizontal", "chart-donut", "chart-line", "chart-line-down", "chart-line-up", "chart-pie", "chart-pie-slice", "chart-polar", "chart-scatter", "chat", "chat-centered", "chat-centered-dots", "chat-centered-slash", "chat-centered-text", "chat-circle", "chat-circle-dots", "chat-circle-slash", "chat-circle-text", "chat-dots", "chat-slash", "chat-teardrop", "chat-teardrop-dots", "chat-teardrop-slash", "chat-teardrop-text", "chat-text", "chats", "chats-circle", "chats-teardrop", "check", "check-circle", "check-fat", "check-square", "check-square-offset", "checkerboard", "checks", "cheers", "cheese", "chef-hat", "cherries", "church", "cigarette", "cigarette-slash", "circle", "circle-dashed", "circle-half", "circle-half-tilt", "circle-notch", "circles-four", "circles-three", "circles-three-plus", "circuitry", "city", "clipboard", "clipboard-text", "clock", "clock-afternoon", "clock-clockwise", "clock-countdown", "clock-counter-clockwise", "clock-user", "closed-captioning", "cloud", "cloud-arrow-down", "cloud-arrow-up", "cloud-check", "cloud-fog", "cloud-lightning", "cloud-moon", "cloud-rain", "cloud-slash", "cloud-snow", "cloud-sun", "cloud-warning", "cloud-x", "clover", "club", "coat-hanger", "code", "code-block", "code-simple", "coffee", "coffee-bean", "coin", "coin-vertical", "coins", "columns", "columns-plus-left", "columns-plus-right", "command", "compass", "compass-rose", "compass-tool", "computer-tower", "confetti", "contactless-payment", "control", "cookie", "cooking-pot", "copy", "copy-simple", "copyleft", "copyright", "corners-in", "corners-out", "couch", "court-basketball", "cow", "cowboy-hat", "cpu", "crane", "crane-tower", "credit-card", "cricket", "crop", "cross", "crosshair", "crosshair-simple", "crown", "crown-cross", "crown-simple", "cube", "cube-focus", "cube-transparent", "currency-btc", "currency-circle-dollar", "currency-cny", "currency-dollar", "currency-dollar-simple", "currency-eth", "currency-eur", "currency-gbp", "currency-inr", "currency-jpy", "currency-krw", "currency-kzt", "currency-ngn", "currency-rub", "cursor", "cursor-click", "cursor-text", "cylinder", "database", "desk", "desktop", "desktop-tower", "detective", "device-mobile", "device-mobile-camera", "device-mobile-slash", "device-mobile-speaker", "device-rotate", "device-tablet", "device-tablet-camera", "device-tablet-speaker", "devices", "diamond", "diamonds-four", "dice-five", "dice-four", "dice-one", "dice-six", "dice-three", "dice-two", "disc", "disco-ball", "divide", "dna", "dog", "door", "door-open", "dot", "dot-outline", "dots-nine", "dots-six", "dots-six-vertical", "dots-three", "dots-three-circle", "dots-three-circle-vertical", "dots-three-outline", "dots-three-outline-vertical", "dots-three-vertical", "download", "download-simple", "dress", "dresser", "drone", "drop", "drop-half", "drop-half-bottom", "drop-simple", "drop-slash", "ear", "ear-slash", "egg", "egg-crack", "eject", "eject-simple", "elevator", "empty", "engine", "envelope", "envelope-open", "envelope-simple", "envelope-simple-open", "equalizer", "equals", "eraser", "escalator-down", "escalator-up", "exam", "exclamation-mark", "exclude", "exclude-square", "export", "eye", "eye-closed", "eye-slash", "eyedropper", "eyedropper-sample", "eyeglasses", "eyes", "face-mask", "factory", "faders", "faders-horizontal", "fallout-shelter", "fan", "farm", "fast-forward", "fast-forward-circle", "feather", "file", "file-archive", "file-arrow-down", "file-arrow-up", "file-audio", "file-c", "file-c-sharp", "file-cloud", "file-code", "file-cpp", "file-css", "file-csv", "file-dashed", "file-doc", "file-html", "file-image", "file-ini", "file-jpg", "file-js", "file-jsx", "file-lock", "file-magnifying-glass", "file-md", "file-minus", "file-pdf", "file-plus", "file-png", "file-ppt", "file-py", "file-rs", "file-sql", "file-svg", "file-text", "file-ts", "file-tsx", "file-txt", "file-video", "file-vue", "file-x", "file-xls", "file-zip", "files", "film-reel", "film-script", "film-slate", "film-strip", "fingerprint", "fingerprint-simple", "finn-the-human", "fire", "fire-extinguisher", "fire-simple", "fire-truck", "first-aid", "first-aid-kit", "fish", "fish-simple", "flag", "flag-banner", "flag-banner-fold", "flag-checkered", "flag-pennant", "flame", "flashlight", "flask", "flip-horizontal", "flip-vertical", "floppy-disk", "floppy-disk-back", "flow-arrow", "flower", "flower-lotus", "flower-tulip", "flying-saucer", "folder", "folder-dashed", "folder-lock", "folder-minus", "folder-open", "folder-plus", "folder-simple", "folder-simple-dashed", "folder-simple-lock", "folder-simple-minus", "folder-simple-plus", "folder-simple-star", "folder-simple-user", "folder-star", "folder-user", "folders", "football", "football-helmet", "footprints", "fork-knife", "four-k", "frame-corners", "function", "funnel", "funnel-simple", "funnel-simple-x", "funnel-x", "game-controller", "garage", "gas-can", "gas-pump", "gauge", "gavel", "gear", "gear-fine", "gear-six", "gender-female", "gender-intersex", "gender-male", "gender-neuter", "gender-nonbinary", "gender-transgender", "ghost", "gif", "gift", "git-branch", "git-commit", "git-diff", "git-fork", "git-merge", "git-pull-request", "globe", "globe-hemisphere-east", "globe-hemisphere-west", "globe-simple", "globe-simple-x", "globe-stand", "globe-x", "goggles", "golf", "gps", "gps-fix", "gps-slash", "gradient", "graduation-cap", "grains", "grains-slash", "graph", "graphics-card", "greater-than", "greater-than-or-equal", "grid-four", "grid-nine", "guitar", "hair-dryer", "hamburger", "hammer", "hand", "hand-arrow-down", "hand-arrow-up", "hand-coins", "hand-deposit", "hand-eye", "hand-fist", "hand-grabbing", "hand-heart", "hand-palm", "hand-peace", "hand-pointing", "hand-soap", "hand-swipe-left", "hand-swipe-right", "hand-tap", "hand-waving", "hand-withdraw", "handbag", "handbag-simple", "hands-clapping", "hands-praying", "handshake", "hard-drive", "hard-drives", "hard-hat", "hash", "hash-straight", "head-circuit", "headlights", "headphones", "headset", "heart", "heart-break", "heart-half", "heart-straight", "heart-straight-break", "heartbeat", "hexagon", "high-definition", "high-heel", "highlighter", "highlighter-circle", "hockey", "hoodie", "horse", "hospital", "hourglass", "hourglass-high", "hourglass-low", "hourglass-medium", "hourglass-simple", "hourglass-simple-high", "hourglass-simple-low", "hourglass-simple-medium", "house", "house-line", "house-simple", "hurricane", "ice-cream", "identification-badge", "identification-card", "image", "image-broken", "image-square", "images", "images-square", "infinity", "info", "intersect", "intersect-square", "intersect-three", "intersection", "invoice", "island", "jar", "jar-label", "jeep", "joystick", "kanban", "key", "key-return", "keyboard", "keyhole", "knife", "ladder", "ladder-simple", "lamp", "lamp-pendant", "laptop", "lasso", "layout", "leaf", "lectern", "lego", "lego-smiley", "less-than", "less-than-or-equal", "letter-circle-h", "letter-circle-p", "letter-circle-v", "lifebuoy", "lightbulb", "lightbulb-filament", "lighthouse", "lightning", "lightning-a", "lightning-slash", "line-segment", "line-segments", "line-vertical", "link", "link-break", "link-simple", "link-simple-break", "link-simple-horizontal", "link-simple-horizontal-break", "list", "list-bullets", "list-checks", "list-dashes", "list-heart", "list-magnifying-glass", "list-numbers", "list-plus", "list-star", "lock", "lock-key", "lock-key-open", "lock-laminated", "lock-laminated-open", "lock-open", "lock-simple", "lock-simple-open", "lockers", "log", "magic-wand", "magnet", "magnet-straight", "magnifying-glass", "magnifying-glass-minus", "magnifying-glass-plus", "mailbox", "map-pin", "map-pin-area", "map-pin-line", "map-pin-plus", "map-pin-simple", "map-pin-simple-area", "map-pin-simple-line", "map-trifold", "marker-circle", "martini", "mask-happy", "mask-sad", "math-operations", "medal", "medal-military", "megaphone", "megaphone-simple", "member-of", "memory", "meteor", "metronome", "microphone", "microphone-slash", "microphone-stage", "microscope", "minus", "minus-circle", "minus-square", "money", "money-wavy", "monitor", "monitor-arrow-up", "monitor-play", "moon", "moon-stars", "moped", "moped-front", "mosque", "motorcycle", "mountains", "mouse", "mouse-left-click", "mouse-middle-click", "mouse-right-click", "mouse-scroll", "mouse-simple", "music-note", "music-note-simple", "music-notes", "music-notes-minus", "music-notes-plus", "music-notes-simple", "navigation-arrow", "needle", "network", "network-slash", "network-x", "newspaper", "newspaper-clipping", "not-equals", "not-member-of", "not-subset-of", "not-superset-of", "notches", "note", "note-blank", "note-pencil", "notebook", "notepad", "notification", "nuclear-plant", "number-circle-eight", "number-circle-five", "number-circle-four", "number-circle-nine", "number-circle-one", "number-circle-seven", "number-circle-six", "number-circle-three", "number-circle-two", "number-circle-zero", "number-eight", "number-five", "number-four", "number-nine", "number-one", "number-seven", "number-six", "number-square-eight", "number-square-five", "number-square-four", "number-square-nine", "number-square-one", "number-square-seven", "number-square-six", "number-square-three", "number-square-two", "number-square-zero", "number-three", "number-two", "number-zero", "numpad", "nut", "octagon", "office-chair", "onigiri", "option", "orange", "orange-slice", "oven", "package", "paint-brush", "paint-brush-broad", "paint-brush-household", "paint-bucket", "paint-roller", "palette", "panorama", "pants", "paper-plane", "paper-plane-right", "paper-plane-tilt", "paperclip", "paperclip-horizontal", "parachute", "paragraph", "parallelogram", "park", "password", "path", "pause", "pause-circle", "paw-print", "peace", "pen", "pen-nib", "pen-nib-straight", "pencil", "pencil-circle", "pencil-line", "pencil-ruler", "pencil-simple", "pencil-simple-line", "pencil-simple-slash", "pencil-slash", "pentagon", "pentagram", "pepper", "percent", "person", "person-arms-spread", "person-simple", "person-simple-bike", "person-simple-circle", "person-simple-hike", "person-simple-run", "person-simple-ski", "person-simple-snowboard", "person-simple-swim", "person-simple-tai-chi", "person-simple-throw", "person-simple-walk", "perspective", "phone", "phone-call", "phone-disconnect", "phone-incoming", "phone-list", "phone-outgoing", "phone-pause", "phone-plus", "phone-slash", "phone-transfer", "phone-x", "pi", "piano-keys", "picnic-table", "picture-in-picture", "piggy-bank", "pill", "ping-pong", "pint-glass", "pinwheel", "pipe", "pipe-wrench", "pizza", "placeholder", "planet", "plant", "play", "play-circle", "play-pause", "playlist", "plug", "plug-charging", "plugs", "plugs-connected", "plus", "plus-circle", "plus-minus", "plus-square", "poker-chip", "police-car", "polygon", "popcorn", "popsicle", "potted-plant", "power", "prescription", "presentation", "presentation-chart", "printer", "prohibit", "prohibit-inset", "projector-screen", "projector-screen-chart", "pulse", "push-pin", "push-pin-simple", "push-pin-simple-slash", "push-pin-slash", "puzzle-piece", "qr-code", "question", "question-mark", "queue", "quotes", "rabbit", "racquet", "radical", "radio", "radio-button", "radioactive", "rainbow", "rainbow-cloud", "ranking", "receipt", "receipt-x", "record", "rectangle", "rectangle-dashed", "recycle", "repeat", "repeat-once", "resize", "rewind", "rewind-circle", "road-horizon", "robot", "rocket", "rocket-launch", "rows", "rows-plus-bottom", "rows-plus-top", "rss", "rss-simple", "rug", "ruler", "sailboat", "scales", "scan", "scan-smiley", "scissors", "scooter", "screencast", "screwdriver", "scribble", "scribble-loop", "scroll", "seal", "seal-check", "seal-percent", "seal-question", "seal-warning", "seat", "seatbelt", "security-camera", "selection", "selection-all", "selection-background", "selection-foreground", "selection-inverse", "selection-plus", "selection-slash", "shapes", "share", "share-fat", "share-network", "shield", "shield-check", "shield-checkered", "shield-chevron", "shield-plus", "shield-slash", "shield-star", "shield-warning", "shipping-container", "shirt-folded", "shooting-star", "shopping-bag", "shopping-bag-open", "shopping-cart", "shopping-cart-simple", "shovel", "shower", "shrimp", "shuffle", "shuffle-angular", "shuffle-simple", "sidebar", "sidebar-simple", "sigma", "sign-in", "sign-out", "signature", "signpost", "sim-card", "siren", "skip-back", "skip-back-circle", "skip-forward", "skip-forward-circle", "skull", "sliders", "sliders-horizontal", "slideshow", "smiley", "smiley-angry", "smiley-blank", "smiley-meh", "smiley-melting", "smiley-nervous", "smiley-sad", "smiley-sticker", "smiley-wink", "smiley-x-eyes", "sneaker", "sneaker-move", "snowflake", "soccer-ball", "sock", "solar-panel", "solar-roof", "sort-ascending", "sort-descending", "spade", "sparkle", "speaker-hifi", "speaker-high", "speaker-low", "speaker-none", "speaker-simple-high", "speaker-simple-low", "speaker-simple-none", "speaker-simple-slash", "speaker-simple-x", "speaker-slash", "speaker-x", "speedometer", "sphere", "spinner", "spinner-ball", "spinner-gap", "spiral", "split-horizontal", "split-vertical", "spray-bottle", "square", "square-half", "square-half-bottom", "square-split-horizontal", "square-split-vertical", "squares-four", "stack", "stack-minus", "stack-plus", "stack-simple", "stairs", "stamp", "standard-definition", "star", "star-and-crescent", "star-four", "star-half", "star-of-david", "steering-wheel", "steps", "stethoscope", "sticker", "stool", "stop", "stop-circle", "storefront", "strategy", "student", "subset-of", "subset-proper-of", "subtitles", "subtitles-slash", "subtract", "subtract-square", "subway", "suitcase", "suitcase-rolling", "suitcase-simple", "sun", "sun-dim", "sun-horizon", "sunglasses", "superset-of", "superset-proper-of", "swap", "swatches", "swimming-pool", "sword", "synagogue", "syringe", "t-shirt", "table", "tabs", "tag", "tag-chevron", "tag-simple", "target", "taxi", "tea-bag", "television", "television-simple", "tennis-ball", "tent", "terminal", "terminal-window", "test-tube", "text-a-underline", "text-aa", "text-align-center", "text-align-justify", "text-align-left", "text-align-right", "text-b", "text-columns", "text-h", "text-h-five", "text-h-four", "text-h-one", "text-h-six", "text-h-three", "text-h-two", "text-indent", "text-italic", "text-outdent", "text-strikethrough", "text-subscript", "text-superscript", "text-t", "text-t-slash", "text-underline", "textbox", "thermometer", "thermometer-cold", "thermometer-hot", "thermometer-simple", "three-d", "thumbs-down", "thumbs-up", "ticket", "tilde", "timer", "tip-jar", "tipi", "tire", "toggle-left", "toggle-right", "toilet", "toilet-paper", "toolbox", "tooth", "tornado", "tote", "tote-simple", "towel", "tractor", "trademark", "trademark-registered", "traffic-cone", "traffic-sign", "traffic-signal", "train", "train-regional", "train-simple", "tram", "translate", "trash", "trash-simple", "tray", "tray-arrow-down", "tray-arrow-up", "treasure-chest", "tree", "tree-evergreen", "tree-palm", "tree-structure", "tree-view", "trend-down", "trend-up", "triangle", "triangle-dashed", "trolley", "trolley-suitcase", "trophy", "truck", "truck-trailer", "umbrella", "umbrella-simple", "union", "unite", "unite-square", "upload", "upload-simple", "usb", "user", "user-check", "user-circle", "user-circle-check", "user-circle-dashed", "user-circle-gear", "user-circle-minus", "user-circle-plus", "user-focus", "user-gear", "user-list", "user-minus", "user-plus", "user-rectangle", "user-sound", "user-square", "user-switch", "users", "users-four", "users-three", "van", "vault", "vector-three", "vector-two", "vibrate", "video", "video-camera", "video-camera-slash", "video-conference", "vignette", "vinyl-record", "virtual-reality", "virus", "visor", "voicemail", "volleyball", "wall", "wallet", "warehouse", "warning", "warning-circle", "warning-diamond", "warning-octagon", "washing-machine", "watch", "wave-sawtooth", "wave-sine", "wave-square", "wave-triangle", "waveform", "waveform-slash", "waves", "webcam", "webcam-slash", "wheelchair", "wheelchair-motion", "wifi-high", "wifi-low", "wifi-medium", "wifi-none", "wifi-slash", "wifi-x", "wind", "windmill", "wine", "wrench", "x", "x-circle", "x-square", "yarn", "yin-yang"]);
@@ -163,7 +163,7 @@ export const Input = forwardRef(function Input({ className, formatOnBlur, size,
163
163
  // `.input-wrap-end` para o botão do PasswordField —, e o grupo é a terceira vez virando uma. O
164
164
  // merge das duas linhagens tinha trazido de volta a versão com `.input-wrap`, contra um core
165
165
  // que já não a pinta.
166
- export function SearchField({ icon = "search", className, size, width, ...props }) { return _jsxs(InputGroup, { className: className, width: width, children: [_jsx(InputGroupAddon, { children: _jsx(Icon, { name: icon, size: valorBase(size) === "sm" ? "sm" : undefined }) }), _jsx(Input, { type: "search", size: size, ...props })] }); }
166
+ export function SearchField({ icon = "magnifying-glass", className, size, width, ...props }) { return _jsxs(InputGroup, { className: className, width: width, children: [_jsx(InputGroupAddon, { children: _jsx(Icon, { name: icon, size: valorBase(size) === "sm" ? "sm" : undefined }) }), _jsx(Input, { type: "search", size: size, ...props })] }); }
167
167
  // labelHidden: coluna de seleção de tabela precisa do rótulo POR LINHA para o leitor de
168
168
  // tela ("Select Analyst"), mas mostrá-lo engorda a coluna. O rótulo continua no DOM, só
169
169
  // sai da tela (.sr-only) — nunca trocar por aria-label solto num <label> visível vazio.
@@ -186,7 +186,7 @@ export function SearchField({ icon = "search", className, size, width, ...props
186
186
  // é a trava do item ("o valor mascarado continua no DOM") entregue pelo motor, e o teste a cobra.
187
187
  export function NumberField({ value, defaultValue, onValueChange, min, max, step, disabled, readOnly, required, label, id, name, format, locale, className, scrubbable, scrubDirection }) {
188
188
  const s = useAureaStrings();
189
- return _jsx(BaseNumberField.Root, { id: id, name: name, value: value, defaultValue: defaultValue, onValueChange: soOValor(onValueChange), min: min, max: max, step: step, format: format, locale: locale, disabled: disabled, readOnly: readOnly, required: required, className: cx("number-field", className), children: _jsxs(BaseNumberField.Group, { className: "number-field-group", children: [scrubbable && _jsxs(BaseNumberField.ScrubArea, { className: cx("number-field-scrub", scrubDirection === "vertical" && "number-field-scrub-vertical"), direction: scrubDirection, "aria-hidden": "true", children: [_jsx(Icon, { name: "draggable", "aria-hidden": true }), _jsx(BaseNumberField.ScrubAreaCursor, { className: "number-field-scrub-cursor", children: _jsx(Icon, { name: "draggable", "aria-hidden": true }) })] }), _jsx(BaseNumberField.Decrement, { className: "btn btn-ghost btn-icon", "aria-label": s.decrement, children: _jsx(Icon, { name: "subtract" }) }), _jsx(BaseNumberField.Input, { className: "input number-field-input", "aria-label": label }), _jsx(BaseNumberField.Increment, { className: "btn btn-ghost btn-icon", "aria-label": s.increment, children: _jsx(Icon, { name: "add" }) })] }) });
189
+ return _jsx(BaseNumberField.Root, { id: id, name: name, value: value, defaultValue: defaultValue, onValueChange: soOValor(onValueChange), min: min, max: max, step: step, format: format, locale: locale, disabled: disabled, readOnly: readOnly, required: required, className: cx("number-field", className), children: _jsxs(BaseNumberField.Group, { className: "number-field-group", children: [scrubbable && _jsxs(BaseNumberField.ScrubArea, { className: cx("number-field-scrub", scrubDirection === "vertical" && "number-field-scrub-vertical"), direction: scrubDirection, "aria-hidden": "true", children: [_jsx(Icon, { name: "dots-six-vertical", "aria-hidden": true }), _jsx(BaseNumberField.ScrubAreaCursor, { className: "number-field-scrub-cursor", children: _jsx(Icon, { name: "dots-six-vertical", "aria-hidden": true }) })] }), _jsx(BaseNumberField.Decrement, { className: "btn btn-ghost btn-icon", "aria-label": s.decrement, children: _jsx(Icon, { name: "minus" }) }), _jsx(BaseNumberField.Input, { className: "input number-field-input", "aria-label": label }), _jsx(BaseNumberField.Increment, { className: "btn btn-ghost btn-icon", "aria-label": s.increment, children: _jsx(Icon, { name: "plus" }) })] }) });
190
190
  }
191
191
  // OTPField (Lote 1 do BUILDING.md). Um campo por dígito, com o comportamento que ninguém acerta
192
192
  // à mão: colar o código inteiro distribui pelos campos, Backspace volta um, e o
@@ -243,7 +243,7 @@ const ehAgrupado = (items) => items != null && items.length > 0 && typeof items[
243
243
  // NADA no DOM quando o item não está escolhido; com um filho só, o texto caía na primeira coluna
244
244
  // da grade — a de 16px — e quebrava em duas ou três linhas. O invólucro fica montado sempre, como
245
245
  // o `.menu-mark` do `Menu` já faz, e o indicador aparece e some DENTRO dele.
246
- const renderComboboxItem = (item) => _jsxs(BaseCombobox.Item, { value: item, className: "menu-item combobox-item", children: [_jsx("span", { className: "combobox-check", "aria-hidden": "true", children: _jsx(BaseCombobox.ItemIndicator, { children: _jsx(Icon, { name: "checkmark", size: "sm" }) }) }), _jsx("span", { children: item.label })] }, item.value);
246
+ const renderComboboxItem = (item) => _jsxs(BaseCombobox.Item, { value: item, className: "menu-item combobox-item", children: [_jsx("span", { className: "combobox-check", "aria-hidden": "true", children: _jsx(BaseCombobox.ItemIndicator, { children: _jsx(Icon, { name: "check", size: "sm" }) }) }), _jsx("span", { children: item.label })] }, item.value);
247
247
  const listaCombobox = (items) => _jsx(BaseCombobox.List, { children: ehAgrupado(items)
248
248
  ? (group) => _jsxs(BaseCombobox.Group, { items: group.items, className: "combobox-section", children: [_jsx(BaseCombobox.GroupLabel, { className: "combobox-group-label", children: group.label }), _jsx(BaseCombobox.Collection, { children: renderComboboxItem })] }, group.label)
249
249
  : renderComboboxItem });
@@ -259,7 +259,7 @@ export function Combobox({ items, value, onValueChange, placeholder, label, empt
259
259
  const portal = usePortalContainer();
260
260
  const autoId = React.useId();
261
261
  const inputId = id ?? autoId;
262
- return _jsxs(BaseCombobox.Root, { items: items, value: value, onValueChange: soOValor(onValueChange), disabled: disabled, itemToStringLabel: (i) => i.label, children: [_jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs(BaseCombobox.InputGroup, { className: "combobox-group", children: [_jsx(BaseCombobox.Input, { id: inputId, placeholder: placeholder, className: cx("input", peleDoEixo("input", size)), "aria-describedby": descrito, "aria-invalid": invalido, "aria-label": rotulo }), _jsxs("span", { className: "combobox-actions", children: [_jsx(BaseCombobox.Clear, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: s.comboboxClear }) }), _jsx(BaseCombobox.Trigger, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "chevron--down", label: s.comboboxOpen }) })] })] })] }), _jsx(BaseCombobox.Portal, { container: portal, children: _jsx(BaseCombobox.Positioner, { sideOffset: 6, children: _jsxs(BaseCombobox.Popup, { className: "menu combobox-popup", children: [_jsx(BaseCombobox.Empty, { className: "combobox-empty", children: empty ?? s.comboboxEmpty }), listaCombobox(items)] }) }) })] });
262
+ return _jsxs(BaseCombobox.Root, { items: items, value: value, onValueChange: soOValor(onValueChange), disabled: disabled, itemToStringLabel: (i) => i.label, children: [_jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs(BaseCombobox.InputGroup, { className: "combobox-group", children: [_jsx(BaseCombobox.Input, { id: inputId, placeholder: placeholder, className: cx("input", peleDoEixo("input", size)), "aria-describedby": descrito, "aria-invalid": invalido, "aria-label": rotulo }), _jsxs("span", { className: "combobox-actions", children: [_jsx(BaseCombobox.Clear, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: s.comboboxClear }) }), _jsx(BaseCombobox.Trigger, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "caret-down", label: s.comboboxOpen }) })] })] })] }), _jsx(BaseCombobox.Portal, { container: portal, children: _jsx(BaseCombobox.Positioner, { sideOffset: 6, children: _jsxs(BaseCombobox.Popup, { className: "menu combobox-popup", children: [_jsx(BaseCombobox.Empty, { className: "combobox-empty", children: empty ?? s.comboboxEmpty }), listaCombobox(items)] }) }) })] });
263
263
  }
264
264
  // MultiCombobox (Fase 4): multi-seleção com chips, opções agrupadas e filtro
265
265
  // externo (async). Reusa .combobox-popup/-item/-empty do básico.
@@ -274,7 +274,7 @@ export function MultiCombobox({ items, value, onValueChange, onInputChange, load
274
274
  const autoId = React.useId();
275
275
  const inputId = id ?? autoId;
276
276
  return _jsxs(BaseCombobox.Root, { multiple: true, items: items, value: value, onValueChange: soOValor(onValueChange), disabled: disabled, itemToStringLabel: (i) => i.label, filter: onInputChange ? null : undefined, onInputValueChange: onInputChange ? ((v, d) => { if (d.reason !== "item-press")
277
- onInputChange(v); }) : undefined, children: [_jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs(BaseCombobox.InputGroup, { className: "combobox-multi", children: [_jsx(BaseCombobox.Chips, { className: "combobox-chips", children: _jsx(BaseCombobox.Value, { children: (selected) => _jsxs(_Fragment, { children: [selected.map((item) => _jsxs(BaseCombobox.Chip, { className: "combobox-chip", children: [item.label, _jsx(BaseCombobox.ChipRemove, { className: "combobox-chip-remove", "aria-label": `${s.comboboxRemove} ${item.label}`, children: _jsx(Icon, { name: "close", size: "sm" }) })] }, item.value)), _jsx(BaseCombobox.Input, { id: inputId, placeholder: selected.length ? undefined : placeholder, className: "combobox-chip-input", "aria-describedby": descrito, "aria-invalid": invalido, "aria-label": rotulo })] }) }) }), _jsxs("span", { className: "combobox-actions", children: [_jsx(BaseCombobox.Clear, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "close", label: s.comboboxClear }) }), _jsx(BaseCombobox.Trigger, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "chevron--down", label: s.comboboxOpen }) })] })] })] }), _jsx(BaseCombobox.Portal, { container: portal, children: _jsx(BaseCombobox.Positioner, { sideOffset: 6, children: _jsxs(BaseCombobox.Popup, { className: "menu combobox-popup", children: [_jsx(BaseCombobox.Empty, { className: "combobox-empty", children: loading ? s.comboboxLoading : (empty ?? s.comboboxEmpty) }), listaCombobox(items)] }) }) })] });
277
+ onInputChange(v); }) : undefined, children: [_jsxs("div", { className: cx("field", className), children: [label && _jsx("label", { className: "label", htmlFor: inputId, children: label }), _jsxs(BaseCombobox.InputGroup, { className: "combobox-multi", children: [_jsx(BaseCombobox.Chips, { className: "combobox-chips", children: _jsx(BaseCombobox.Value, { children: (selected) => _jsxs(_Fragment, { children: [selected.map((item) => _jsxs(BaseCombobox.Chip, { className: "combobox-chip", children: [item.label, _jsx(BaseCombobox.ChipRemove, { className: "combobox-chip-remove", "aria-label": `${s.comboboxRemove} ${item.label}`, children: _jsx(Icon, { name: "x", size: "sm" }) })] }, item.value)), _jsx(BaseCombobox.Input, { id: inputId, placeholder: selected.length ? undefined : placeholder, className: "combobox-chip-input", "aria-describedby": descrito, "aria-invalid": invalido, "aria-label": rotulo })] }) }) }), _jsxs("span", { className: "combobox-actions", children: [_jsx(BaseCombobox.Clear, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "x", label: s.comboboxClear }) }), _jsx(BaseCombobox.Trigger, { render: _jsx(IconButton, { variant: "ghost", size: "sm", icon: "caret-down", label: s.comboboxOpen }) })] })] })] }), _jsx(BaseCombobox.Portal, { container: portal, children: _jsx(BaseCombobox.Positioner, { sideOffset: 6, children: _jsxs(BaseCombobox.Popup, { className: "menu combobox-popup", children: [_jsx(BaseCombobox.Empty, { className: "combobox-empty", children: loading ? s.comboboxLoading : (empty ?? s.comboboxEmpty) }), listaCombobox(items)] }) }) })] });
278
278
  }
279
279
  const ehGrupoDoSelect = (i) => typeof i === "object" && i != null && "items" in i;
280
280
  // Lê `<option>`/`<optgroup>` como o navegador lê: `value` ausente vale o TEXTO da opção.
@@ -293,7 +293,7 @@ function opcoesDosFilhos(children) {
293
293
  });
294
294
  return lista;
295
295
  }
296
- const itemDoSelect = (o) => _jsxs(BaseSelect.Item, { value: o.value, disabled: o.disabled, className: "menu-item combobox-item", children: [_jsx("span", { className: "combobox-check", "aria-hidden": "true", children: _jsx(BaseSelect.ItemIndicator, { children: _jsx(Icon, { name: "checkmark", size: "sm" }) }) }), _jsx(BaseSelect.ItemText, { children: o.label })] }, o.value);
296
+ const itemDoSelect = (o) => _jsxs(BaseSelect.Item, { value: o.value, disabled: o.disabled, className: "menu-item combobox-item", children: [_jsx("span", { className: "combobox-check", "aria-hidden": "true", children: _jsx(BaseSelect.ItemIndicator, { children: _jsx(Icon, { name: "check", size: "sm" }) }) }), _jsx(BaseSelect.ItemText, { children: o.label })] }, o.value);
297
297
  export const Select = forwardRef(function Select({ items, children, value, defaultValue, onChange, onValueChange, placeholder, name, required, disabled, size, className, ...props }, ref) {
298
298
  const portal = usePortalContainer();
299
299
  const lista = items ?? opcoesDosFilhos(children);
@@ -318,7 +318,7 @@ export function BlockEditor({ blocks, onReorder, onRemove, label, className, ...
318
318
  rowSelector: ".block-item", handleSelector: ".block-handle" });
319
319
  return _jsxs(_Fragment, { children: [_jsx("ol", { ref: r.ref, className: cx("block-editor", className), "aria-label": label ?? s.blockEditorLabel, ...props, children: blocks.map((b, i) => {
320
320
  const kid = `${bid}k${i}`, hid = `${bid}h${i}`, rid = `${bid}r${i}`;
321
- return _jsxs("li", { className: "block-item", "data-grabbed": r.pego === i || undefined, children: [_jsxs("div", { className: "block-rail", children: [_jsxs("button", { type: "button", id: hid, className: "block-handle", "aria-labelledby": `${hid} ${kid}`, "aria-describedby": `${bid}ajuda`, "aria-pressed": r.pego === i, onKeyDown: e => r.teclado(e, i), onPointerDown: e => r.ponteiroBaixo(e, i), onPointerMove: r.ponteiroMove, onPointerUp: r.ponteiroSolta, onPointerCancel: r.ponteiroSolta, children: [_jsx(Icon, { name: "drag--horizontal" }), _jsx("span", { className: "sr-only", children: s.sortableHandle })] }), onRemove && _jsxs("button", { type: "button", id: rid, className: "block-remove", "aria-labelledby": `${rid} ${kid}`, onClick: () => onRemove(i), children: [_jsx(Icon, { name: "trash-can" }), _jsx("span", { className: "sr-only", children: s.blockRemove })] })] }), _jsx("div", { className: "block-body", children: b.children }), _jsxs("span", { id: kid, className: "sr-only", children: [b.kind ?? s.blockLabel, " ", i + 1, " ", s.positionOf, " ", n] })] }, b.id);
321
+ return _jsxs("li", { className: "block-item", "data-grabbed": r.pego === i || undefined, children: [_jsxs("div", { className: "block-rail", children: [_jsxs("button", { type: "button", id: hid, className: "block-handle", "aria-labelledby": `${hid} ${kid}`, "aria-describedby": `${bid}ajuda`, "aria-pressed": r.pego === i, onKeyDown: e => r.teclado(e, i), onPointerDown: e => r.ponteiroBaixo(e, i), onPointerMove: r.ponteiroMove, onPointerUp: r.ponteiroSolta, onPointerCancel: r.ponteiroSolta, children: [_jsx(Icon, { name: "dots-six" }), _jsx("span", { className: "sr-only", children: s.sortableHandle })] }), onRemove && _jsxs("button", { type: "button", id: rid, className: "block-remove", "aria-labelledby": `${rid} ${kid}`, onClick: () => onRemove(i), children: [_jsx(Icon, { name: "trash" }), _jsx("span", { className: "sr-only", children: s.blockRemove })] })] }), _jsx("div", { className: "block-body", children: b.children }), _jsxs("span", { id: kid, className: "sr-only", children: [b.kind ?? s.blockLabel, " ", i + 1, " ", s.positionOf, " ", n] })] }, b.id);
322
322
  }) }), _jsx("span", { id: `${bid}ajuda`, className: "sr-only", children: s.sortableHelp }), _jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: r.aviso })] });
323
323
  }
324
324
  export function PasswordField({ className, size, defaultVisible = false, id, ...props }) {
@@ -326,5 +326,5 @@ export function PasswordField({ className, size, defaultVisible = false, id, ...
326
326
  const [visivel, setVisivel] = React.useState(defaultVisible);
327
327
  const auto = React.useId();
328
328
  const campoId = id ?? auto;
329
- return _jsxs(InputGroup, { className: className, children: [_jsx(Input, { id: campoId, type: visivel ? "text" : "password", className: peleDoEixo("input", size) || undefined, autoComplete: "current-password", ...props }), _jsx(InputGroupAddon, { side: "end", layout: "inline", children: _jsx(IconButton, { variant: "ghost", size: valorBase(size) === "lg" ? "md" : "sm", icon: visivel ? "view--off" : "view", label: visivel ? s.passwordHide : s.passwordShow, "aria-controls": campoId, onClick: () => setVisivel(v => !v) }) })] });
329
+ return _jsxs(InputGroup, { className: className, children: [_jsx(Input, { id: campoId, type: visivel ? "text" : "password", className: peleDoEixo("input", size) || undefined, autoComplete: "current-password", ...props }), _jsx(InputGroupAddon, { side: "end", layout: "inline", children: _jsx(IconButton, { variant: "ghost", size: valorBase(size) === "lg" ? "md" : "sm", icon: visivel ? "eye-slash" : "eye", label: visivel ? s.passwordHide : s.passwordShow, "aria-controls": campoId, onClick: () => setVisivel(v => !v) }) })] });
330
330
  }
@@ -123,7 +123,7 @@ function useGavetaFechaNoDesktop() {
123
123
  export function AppShell({ brand, navigation, navItems, currentNavId, navLabel, topbar, topbarVariant = "floating", topbarDivider, sidebarVariant, sidebarCollapsed, contentVariant = "surface", children, className, ...props }) {
124
124
  const s = useAureaStrings();
125
125
  useGavetaFechaNoDesktop();
126
- return _jsxs("div", { className: cx("app-shell", topbarVariant === "flush" && "app-shell-flush", className), ...props, children: [_jsx("a", { className: "skip-link", href: `#${SHELL_MAIN_ID}`, children: s.skipToContent }), _jsx(Topbar, { variant: topbarVariant, divider: topbarDivider, brand: _jsxs(_Fragment, { children: [_jsx(IconButton, { className: "nav-toggle", icon: "menu", label: s.navigationToggle, popoverTarget: SHELL_NAV_ID }), brand] }), children: topbar }), _jsx(Sidebar, { id: SHELL_NAV_ID, popover: "auto", variant: sidebarVariant, collapsed: sidebarCollapsed, items: navItems, current: currentNavId, label: navLabel, onToggle: focoDaGaveta, children: navigation }), _jsx("main", { id: SHELL_MAIN_ID, tabIndex: -1, className: cx("content", contentVariant === "plain" && "content-plain"), children: children })] });
126
+ return _jsxs("div", { className: cx("app-shell", topbarVariant === "flush" && "app-shell-flush", className), ...props, children: [_jsx("a", { className: "skip-link", href: `#${SHELL_MAIN_ID}`, children: s.skipToContent }), _jsx(Topbar, { variant: topbarVariant, divider: topbarDivider, brand: _jsxs(_Fragment, { children: [_jsx(IconButton, { className: "nav-toggle", icon: "list", label: s.navigationToggle, popoverTarget: SHELL_NAV_ID }), brand] }), children: topbar }), _jsx(Sidebar, { id: SHELL_NAV_ID, popover: "auto", variant: sidebarVariant, collapsed: sidebarCollapsed, items: navItems, current: currentNavId, label: navLabel, onToggle: focoDaGaveta, children: navigation }), _jsx("main", { id: SHELL_MAIN_ID, tabIndex: -1, className: cx("content", contentVariant === "plain" && "content-plain"), children: children })] });
127
127
  }
128
128
  export function Separator({ orientation, spacing = "none", className, ...props }) {
129
129
  const ancora = useRef(null);
@@ -97,9 +97,9 @@ export function MediaPlayer({ kind = "video", src, poster, title, subtitle, clas
97
97
  const volPct = muted ? 0 : Math.round(volume * 100);
98
98
  const valueText = duration > 0 ? `${spokenTime(current)} of ${spokenTime(duration)}` : spokenTime(current);
99
99
  const MediaTag = kind === "audio" ? "audio" : "video";
100
- return _jsxs("div", { ref: boxRef, className: cx("media-player", className), role: "group", "aria-label": typeof title === "string" ? title : s.mediaPlayer, children: [_jsxs("div", { className: "media-viewport", children: [kind === "audio" && _jsxs("div", { className: "media-placeholder", children: [_jsx(Icon, { name: "volume--up" }), title && _jsx("strong", { children: title }), subtitle && _jsx("span", { children: subtitle })] }), _jsx(MediaTag, { ref: mediaRef, src: src, ...rest, ...(kind === "video" ? { poster, playsInline: true, className: "media-fill", onClick: (e) => { onClick?.(e); togglePlay(); } } : { onClick }), onPlay: (e) => { setPlaying(true); onPlay?.(e); }, onPause: (e) => { setPlaying(false); onPause?.(e); }, onEnded: (e) => { setPlaying(false); onEnded?.(e); }, onTimeUpdate: (e) => { const el = m(); if (el)
100
+ return _jsxs("div", { ref: boxRef, className: cx("media-player", className), role: "group", "aria-label": typeof title === "string" ? title : s.mediaPlayer, children: [_jsxs("div", { className: "media-viewport", children: [kind === "audio" && _jsxs("div", { className: "media-placeholder", children: [_jsx(Icon, { name: "speaker-high" }), title && _jsx("strong", { children: title }), subtitle && _jsx("span", { children: subtitle })] }), _jsx(MediaTag, { ref: mediaRef, src: src, ...rest, ...(kind === "video" ? { poster, playsInline: true, className: "media-fill", onClick: (e) => { onClick?.(e); togglePlay(); } } : { onClick }), onPlay: (e) => { setPlaying(true); onPlay?.(e); }, onPause: (e) => { setPlaying(false); onPause?.(e); }, onEnded: (e) => { setPlaying(false); onEnded?.(e); }, onTimeUpdate: (e) => { const el = m(); if (el)
101
101
  setCurrent(el.currentTime); onTimeUpdate?.(e); }, onLoadedMetadata: (e) => { onMeta(); onLoadedMetadata?.(e); }, onDurationChange: (e) => { const el = m(); if (el)
102
- setDuration(el.duration); onDurationChange?.(e); }, onProgress: (e) => { syncBuf(); onProgress?.(e); }, onVolumeChange: (e) => { syncVol(); onVolumeChange?.(e); }, children: children })] }), kind === "video" && title && _jsx("div", { className: "media-overlay-title", children: _jsxs("div", { children: [_jsx("strong", { children: title }), subtitle && _jsx("span", { children: subtitle })] }) }), _jsxs("div", { className: "media-controls", children: [_jsxs("div", { className: "media-seek", style: { "--media-played": `${playedPct}%` }, children: [_jsxs("div", { className: "media-seek-track", children: [_jsx("span", { className: "media-seek-buffered", style: { width: `${bufferedPct}%` } }), _jsx("span", { className: "media-seek-played" })] }), _jsx("input", { type: "range", min: 0, max: duration > 0 ? duration : 0, step: "any", value: Math.min(current, duration || 0), "aria-label": s.mediaSeek, "aria-valuetext": valueText, onChange: e => seek(Number(e.target.value)) })] }), _jsxs("div", { className: "media-control-row", children: [_jsxs("div", { className: "media-control-group", children: [_jsx("button", { className: "media-control", type: "button", "aria-label": playing ? s.mediaPause : s.mediaPlay, onClick: togglePlay, children: _jsx(Icon, { name: playing ? "pause" : "play" }) }), _jsx("button", { className: "media-control", type: "button", "aria-label": s.mediaSkipBack, onClick: () => skip(-10), children: _jsx(Icon, { name: "rewind--10" }) }), _jsx("button", { className: "media-control", type: "button", "aria-label": s.mediaSkipForward, onClick: () => skip(10), children: _jsx(Icon, { name: "forward--10" }) }), _jsxs("span", { className: "media-time", children: [clockTime(current), " / ", clockTime(duration)] })] }), _jsxs("div", { className: "media-control-group", children: [_jsx("button", { className: "media-control", type: "button", "aria-label": muted ? s.mediaUnmute : s.mediaMute, onClick: toggleMute, children: _jsx(Icon, { name: muted || volume === 0 ? "volume--mute" : "volume--up" }) }), _jsx("input", { className: "media-volume", type: "range", min: 0, max: 100, value: volPct, "aria-label": s.mediaVolume, "aria-valuetext": `${volPct}%`, onChange: e => setVol(Number(e.target.value) / 100) }), hasCaptions && _jsx("button", { className: cx("media-control", captionsOn && "active"), type: "button", "aria-label": captionsOn ? s.mediaCaptionsHide : s.mediaCaptionsShow, "aria-pressed": captionsOn, onClick: toggleCaptions, children: _jsx(Icon, { name: "closed-caption" }) }), kind === "video" && _jsx("button", { className: "media-control", type: "button", "aria-label": fullscreen ? s.mediaFullscreenExit : s.mediaFullscreenEnter, onClick: toggleFullscreen, children: _jsx(Icon, { name: fullscreen ? "minimize" : "maximize" }) })] })] })] })] });
102
+ setDuration(el.duration); onDurationChange?.(e); }, onProgress: (e) => { syncBuf(); onProgress?.(e); }, onVolumeChange: (e) => { syncVol(); onVolumeChange?.(e); }, children: children })] }), kind === "video" && title && _jsx("div", { className: "media-overlay-title", children: _jsxs("div", { children: [_jsx("strong", { children: title }), subtitle && _jsx("span", { children: subtitle })] }) }), _jsxs("div", { className: "media-controls", children: [_jsxs("div", { className: "media-seek", style: { "--media-played": `${playedPct}%` }, children: [_jsxs("div", { className: "media-seek-track", children: [_jsx("span", { className: "media-seek-buffered", style: { width: `${bufferedPct}%` } }), _jsx("span", { className: "media-seek-played" })] }), _jsx("input", { type: "range", min: 0, max: duration > 0 ? duration : 0, step: "any", value: Math.min(current, duration || 0), "aria-label": s.mediaSeek, "aria-valuetext": valueText, onChange: e => seek(Number(e.target.value)) })] }), _jsxs("div", { className: "media-control-row", children: [_jsxs("div", { className: "media-control-group", children: [_jsx("button", { className: "media-control", type: "button", "aria-label": playing ? s.mediaPause : s.mediaPlay, onClick: togglePlay, children: _jsx(Icon, { name: playing ? "pause" : "play" }) }), _jsx("button", { className: "media-control", type: "button", "aria-label": s.mediaSkipBack, onClick: () => skip(-10), children: _jsx(Icon, { name: "clock-counter-clockwise" }) }), _jsx("button", { className: "media-control", type: "button", "aria-label": s.mediaSkipForward, onClick: () => skip(10), children: _jsx(Icon, { name: "clock-clockwise" }) }), _jsxs("span", { className: "media-time", children: [clockTime(current), " / ", clockTime(duration)] })] }), _jsxs("div", { className: "media-control-group", children: [_jsx("button", { className: "media-control", type: "button", "aria-label": muted ? s.mediaUnmute : s.mediaMute, onClick: toggleMute, children: _jsx(Icon, { name: muted || volume === 0 ? "speaker-slash" : "speaker-high" }) }), _jsx("input", { className: "media-volume", type: "range", min: 0, max: 100, value: volPct, "aria-label": s.mediaVolume, "aria-valuetext": `${volPct}%`, onChange: e => setVol(Number(e.target.value) / 100) }), hasCaptions && _jsx("button", { className: cx("media-control", captionsOn && "active"), type: "button", "aria-label": captionsOn ? s.mediaCaptionsHide : s.mediaCaptionsShow, "aria-pressed": captionsOn, onClick: toggleCaptions, children: _jsx(Icon, { name: "closed-captioning" }) }), kind === "video" && _jsx("button", { className: "media-control", type: "button", "aria-label": fullscreen ? s.mediaFullscreenExit : s.mediaFullscreenEnter, onClick: toggleFullscreen, children: _jsx(Icon, { name: fullscreen ? "arrows-in" : "arrows-out" }) })] })] })] })] });
103
103
  }
104
104
  function comAutoplay(src) { try {
105
105
  const u = new URL(src);
@@ -119,7 +119,7 @@ export function MediaEmbed({ src, title, poster, ratio = "16/9", href, autoplay
119
119
  const endereco = clicou && autoplay ? comAutoplay(src) : src;
120
120
  return _jsxs("div", { className: cx("media-embed", className), style: style, children: [_jsx("div", { className: "media-embed-frame", style: { aspectRatio: ratio }, children: ativo
121
121
  ? _jsx("iframe", { ref: frameRef, src: endereco, title: title, loading: "lazy", referrerPolicy: "strict-origin-when-cross-origin", allow: "autoplay; encrypted-media; fullscreen; picture-in-picture", allowFullScreen: true, ...rest })
122
- : _jsxs("button", { type: "button", className: "media-embed-facade", "aria-label": `${s.mediaPlay}: ${title}`, onClick: () => { setAtivo(true); setClicou(true); }, children: [_jsx("img", { src: poster, alt: "", loading: "lazy", decoding: "async" }), _jsx("span", { className: "media-embed-play", "aria-hidden": "true", children: _jsx(Icon, { name: "play--filled--alt" }) })] }) }), href && _jsxs("a", { className: "media-embed-link", href: href, target: "_blank", rel: "noopener", children: [_jsx(Icon, { name: "launch" }), s.mediaEmbedOpen] })] });
122
+ : _jsxs("button", { type: "button", className: "media-embed-facade", "aria-label": `${s.mediaPlay}: ${title}`, onClick: () => { setAtivo(true); setClicou(true); }, children: [_jsx("img", { src: poster, alt: "", loading: "lazy", decoding: "async" }), _jsx("span", { className: "media-embed-play", "aria-hidden": "true", children: _jsx(Icon, { name: "play-circle", weight: "fill" }) })] }) }), href && _jsxs("a", { className: "media-embed-link", href: href, target: "_blank", rel: "noopener", children: [_jsx(Icon, { name: "arrow-square-out" }), s.mediaEmbedOpen] })] });
123
123
  }
124
124
  export function Image({ ratio, fit, alt, className, style, render, onError, ...props }) {
125
125
  const [quebrou, setQuebrou] = React.useState(false);
@@ -255,5 +255,5 @@ export function Carousel({ children, label, controls = true, indicators = true,
255
255
  // Os slides fora da vista NÃO ficam `inert`: aqui todos existem no DOM e na árvore de
256
256
  // acessibilidade, como em qualquer lista que rola. Escondê-los seria esconder as fotos 2 a 8 de
257
257
  // quem usa leitor de tela para ganhar uma ordem de Tab mais curta.
258
- return _jsxs("div", { className: cx("carousel", className), role: "region", "aria-roledescription": "carousel", "aria-label": label ?? s.carouselLabel, ...props, children: [_jsx("div", { ref: trilho, className: "carousel-track", tabIndex: 0, onScroll: medir, children: slides.map((slide, i) => _jsx("div", { className: "carousel-slide", role: "group", "aria-roledescription": "slide", "aria-label": `${s.carouselSlide} ${i + 1} ${s.positionOf} ${slides.length}`, children: slide }, i)) }), (controls || indicators) && _jsxs("div", { className: "carousel-controls", children: [controls && _jsx(IconButton, { icon: "chevron--left", label: s.carouselPrev, size: "sm", disabled: pos.inicio, onClick: () => irPara(pos.indice - 1) }), indicators && _jsx("div", { className: "carousel-dots", children: slides.map((_, i) => _jsx("button", { type: "button", className: "carousel-dot", "aria-current": i === pos.indice ? "true" : undefined, "aria-label": `${s.carouselSlide} ${i + 1}`, onClick: () => irPara(i) }, i)) }), controls && _jsx(IconButton, { icon: "chevron--right", label: s.carouselNext, size: "sm", disabled: pos.fim, onClick: () => irPara(pos.indice + 1) })] })] });
258
+ return _jsxs("div", { className: cx("carousel", className), role: "region", "aria-roledescription": "carousel", "aria-label": label ?? s.carouselLabel, ...props, children: [_jsx("div", { ref: trilho, className: "carousel-track", tabIndex: 0, onScroll: medir, children: slides.map((slide, i) => _jsx("div", { className: "carousel-slide", role: "group", "aria-roledescription": "slide", "aria-label": `${s.carouselSlide} ${i + 1} ${s.positionOf} ${slides.length}`, children: slide }, i)) }), (controls || indicators) && _jsxs("div", { className: "carousel-controls", children: [controls && _jsx(IconButton, { icon: "caret-left", label: s.carouselPrev, size: "sm", disabled: pos.inicio, onClick: () => irPara(pos.indice - 1) }), indicators && _jsx("div", { className: "carousel-dots", children: slides.map((_, i) => _jsx("button", { type: "button", className: "carousel-dot", "aria-current": i === pos.indice ? "true" : undefined, "aria-label": `${s.carouselSlide} ${i + 1}`, onClick: () => irPara(i) }, i)) }), controls && _jsx(IconButton, { icon: "caret-right", label: s.carouselNext, size: "sm", disabled: pos.fim, onClick: () => irPara(pos.indice + 1) })] })] });
259
259
  }
@@ -21,12 +21,12 @@ export function Stepper({ items, label, className }) {
21
21
  const s = useAureaStrings();
22
22
  return _jsx("div", { role: "list", "aria-label": label ?? s.stepperLabel, className: cx("stepper", className), children: items.map((it, n) => {
23
23
  const st = it.state ?? "default";
24
- const marca = st === "done" ? _jsx(Icon, { name: "checkmark" }) : st === "error" ? _jsx(Icon, { name: "error" }) : n + 1;
24
+ const marca = st === "done" ? _jsx(Icon, { name: "check" }) : st === "error" ? _jsx(Icon, { name: "x-circle" }) : n + 1;
25
25
  const miolo = _jsxs(_Fragment, { children: [_jsx("span", { className: "step-dot", children: marca }), _jsx("strong", { children: it.label }), it.optional && _jsx("small", { className: "step-optional", children: it.optional })] });
26
26
  return _jsx("div", { role: "listitem", className: cx("step", st !== "default" && `step-${st}`), "aria-current": st === "active" ? "step" : undefined, children: it.onClick ? _jsx("button", { type: "button", className: "step-trigger", onClick: it.onClick, children: miolo }) : miolo }, n);
27
27
  }) });
28
28
  }
29
- export function Breadcrumb({ items, label }) { const s = useAureaStrings(); return _jsx("nav", { className: "breadcrumb", "aria-label": label ?? s.breadcrumbLabel, children: items.map((i, n) => _jsxs(React.Fragment, { children: [n > 0 && _jsx(Icon, { name: "chevron--right", size: "sm" }), " ", i.render ? fundirRender(i.render, { children: i.label }, "a") : i.href ? _jsx("a", { href: i.href, children: i.label }) : _jsx("strong", { "aria-current": "page", children: i.label })] }, n)) }); }
29
+ export function Breadcrumb({ items, label }) { const s = useAureaStrings(); return _jsx("nav", { className: "breadcrumb", "aria-label": label ?? s.breadcrumbLabel, children: items.map((i, n) => _jsxs(React.Fragment, { children: [n > 0 && _jsx(Icon, { name: "caret-right", size: "sm" }), " ", i.render ? fundirRender(i.render, { children: i.label }, "a") : i.href ? _jsx("a", { href: i.href, children: i.label }) : _jsx("strong", { "aria-current": "page", children: i.label })] }, n)) }); }
30
30
  export function Tabs({ tabs, value, onChange, label, orientation, activateOnFocus = true, loopFocus }) { const s = useAureaStrings(); const ancora = useRef(null); const resolvida = useValorResponsivo(orientation, "horizontal", ancora); return _jsxs(BaseTabs.Root, { ref: ancora, value: value, onValueChange: v => onChange(String(v)), orientation: resolvida, className: "tabs-root", children: [_jsx(BaseTabs.List, { className: "tabs", "aria-label": label ?? s.tabsLabel, activateOnFocus: activateOnFocus, loopFocus: loopFocus, children: tabs.map(t => _jsx(BaseTabs.Tab, { value: t.id, className: "tab", children: t.label }, t.id)) }), tabs.map(t => _jsx(BaseTabs.Panel, { value: t.id, className: "card card-inset", tabIndex: 0, children: t.content }, t.id))] }); }
31
31
  export function Pagination({ page, total, onPageChange }) { const s = useAureaStrings(); return _jsxs("nav", { className: "pagination", "aria-label": s.paginationLabel, children: [_jsx(Button, { variant: "ghost", size: "sm", disabled: page <= 1, onClick: () => onPageChange(page - 1), children: s.previous }), _jsxs(Badge, { variant: "primary", children: [page, " / ", total] }), _jsx(Button, { variant: "ghost", size: "sm", disabled: page >= total, onClick: () => onPageChange(page + 1), children: s.next })] }); }
32
32
  export function TableOfContents({ items, current, label, className, ...props }) {
@@ -167,7 +167,7 @@ export function TreeView({ items, defaultExpandedIds, onSelect, label, className
167
167
  const renderNodes = (nodes, level) => (_jsx("ul", { ref: level === 1 ? rootRef : undefined, className: cx(level === 1 ? "tree" : "tree-group", level === 1 && className), role: level === 1 ? "tree" : "group", "aria-label": level === 1 ? (label ?? s.treeLabel) : undefined, onKeyDown: level === 1 ? onKeyDown : undefined, children: nodes.map(node => {
168
168
  const hasChildren = !!node.children?.length, isOpen = expanded.has(node.id), isSelected = selected === node.id, labelId = baseId + node.id;
169
169
  return _jsxs("li", { className: "tree-item", role: "treeitem", "data-tree-id": node.id, "aria-level": level, "aria-expanded": hasChildren ? isOpen : undefined, "aria-selected": isSelected, "aria-labelledby": labelId, tabIndex: node.id === effectiveActive ? 0 : -1, children: [_jsxs("span", { className: "tree-node", "data-selected": isSelected || undefined, style: { paddingInlineStart: `calc(var(--space-3) + ${level - 1} * var(--space-4))` }, onClick: () => { focusId(node.id); select(node); if (hasChildren)
170
- toggle(node.id, !isOpen); }, children: [hasChildren ? _jsx(Icon, { name: "chevron--right", size: "sm", className: "tree-twist" }) : _jsx("span", { className: "tree-indent", "aria-hidden": "true" }), node.icon && _jsx(Icon, { name: node.icon, size: "sm" }), _jsx("span", { id: labelId, className: "tree-label", children: node.label })] }), hasChildren && isOpen && renderNodes(node.children, level + 1)] }, node.id);
170
+ toggle(node.id, !isOpen); }, children: [hasChildren ? _jsx(Icon, { name: "caret-right", size: "sm", className: "tree-twist" }) : _jsx("span", { className: "tree-indent", "aria-hidden": "true" }), node.icon && _jsx(Icon, { name: node.icon, size: "sm" }), _jsx("span", { id: labelId, className: "tree-label", children: node.label })] }), hasChildren && isOpen && renderNodes(node.children, level + 1)] }, node.id);
171
171
  }) }));
172
172
  return renderNodes(items, 1);
173
173
  }
@@ -181,7 +181,8 @@ function sidebarList(items, ctx, sub, labelledBy) {
181
181
  if (filhos && !it.href && !it.onClick && !it.render)
182
182
  return _jsxs("li", { children: [_jsx("p", { id: lid, className: cx("sidebar-group-label", ctx.collapsed && "sr-only"), children: it.label }), sidebarList(filhos, ctx, false, lid)] }, it.id);
183
183
  const ativo = it.id === ctx.current;
184
- const miolo = _jsxs(_Fragment, { children: [it.icon && _jsx(Icon, { name: it.icon }), _jsx("span", { className: cx("sidebar-label", ctx.collapsed && "sr-only"), children: it.label }), it.badge != null && oculto(it.badge)] });
184
+ // O item escolhido desenha o ícone CHEIO (ADR-0053).
185
+ const miolo = _jsxs(_Fragment, { children: [it.icon && _jsx(Icon, { name: it.icon, weight: ativo ? "fill" : undefined }), _jsx("span", { className: cx("sidebar-label", ctx.collapsed && "sr-only"), children: it.label }), it.badge != null && oculto(it.badge)] });
185
186
  const alvo = it.render
186
187
  ? fundirRender(it.render, { id: lid, className: "sidebar-item", "aria-current": ativo ? "page" : undefined, onClick: it.onClick, children: miolo }, "a")
187
188
  : it.href
@@ -238,7 +239,8 @@ export function BottomNav({ items, current, variant = "floating", indicator = "n
238
239
  // texto. A caixa é o que dá ao contador um canto para se ancorar — e nos quatro indicadores
239
240
  // redondos é ela que VIRA o círculo, com o rótulo embaixo, fora dele.
240
241
  // `size="lg"` porque a proporção contra o contador foi medida: 24 para 16, razão 0,67.
241
- const marca = _jsxs("span", { className: "bottom-nav-mark", children: [it.icon && _jsx(Icon, { name: it.icon, size: "lg" }), it.badge != null && _jsx("span", { className: "bottom-nav-badge", children: it.badge })] });
242
+ // O item escolhido desenha o ícone CHEIO (ADR-0053).
243
+ const marca = _jsxs("span", { className: "bottom-nav-mark", children: [it.icon && _jsx(Icon, { name: it.icon, size: "lg", weight: ativo ? "fill" : undefined }), it.badge != null && _jsx("span", { className: "bottom-nav-badge", children: it.badge })] });
242
244
  const miolo = _jsxs(_Fragment, { children: [marca, _jsx("span", { className: "bottom-nav-label", children: it.label })] });
243
245
  return it.render
244
246
  ? _jsx(React.Fragment, { children: fundirRender(it.render, { className: "bottom-nav-item", "aria-current": ativo ? "page" : undefined, onClick: it.onClick, children: miolo }, "a") }, it.id)
@@ -249,7 +251,7 @@ export function BottomNav({ items, current, variant = "floating", indicator = "n
249
251
  }
250
252
  export function NavList({ items, className, ...props }) {
251
253
  return _jsx("ul", { className: cx("nav-list", className), ...props, children: items.map(it => {
252
- const miolo = _jsxs(_Fragment, { children: [it.icon && _jsx(Icon, { name: it.icon }), _jsxs("span", { className: "nav-list-text", children: [_jsx("span", { className: "nav-list-label", children: it.label }), it.description != null && _jsx("span", { className: "nav-list-description", children: it.description })] }), it.value != null && _jsx("span", { className: "nav-list-value", children: it.value }), (it.href || it.render) && _jsx(Icon, { name: "chevron--right", size: "sm", className: "nav-list-chevron" })] });
254
+ const miolo = _jsxs(_Fragment, { children: [it.icon && _jsx(Icon, { name: it.icon }), _jsxs("span", { className: "nav-list-text", children: [_jsx("span", { className: "nav-list-label", children: it.label }), it.description != null && _jsx("span", { className: "nav-list-description", children: it.description })] }), it.value != null && _jsx("span", { className: "nav-list-value", children: it.value }), (it.href || it.render) && _jsx(Icon, { name: "caret-right", size: "sm", className: "nav-list-chevron" })] });
253
255
  return _jsx("li", { children: it.render && !it.disabled
254
256
  ? fundirRender(it.render, { className: "nav-list-row", onClick: it.onClick, children: miolo }, "a")
255
257
  : it.href && !it.disabled
package/dist/overlays.js CHANGED
@@ -20,7 +20,7 @@ export function Dialog({ open, title, children, footer, onClose, size = "md", di
20
20
  const s = useAureaStrings();
21
21
  const portal = usePortalContainer();
22
22
  return _jsx(BaseDialog.Root, { open: open, disablePointerDismissal: !dismissible, onOpenChange: o => { if (!o && dismissible)
23
- onClose(); }, children: _jsxs(BaseDialog.Portal, { container: portal, children: [_jsx(BaseDialog.Backdrop, { className: "dialog-backdrop" }), _jsxs(BaseDialog.Popup, { className: cx("dialog", size !== "md" && `dialog-${size}`), children: [_jsxs("header", { children: [_jsx(BaseDialog.Title, { render: _jsx("h2", {}), children: title }), _jsx(BaseDialog.Close, { className: "btn btn-ghost btn-icon", "aria-label": s.close, disabled: !dismissible, children: _jsx(Icon, { name: "close" }) })] }), _jsx("div", { className: "dialog-body", children: children }), footer && _jsx("footer", { children: footer })] })] }) });
23
+ onClose(); }, children: _jsxs(BaseDialog.Portal, { container: portal, children: [_jsx(BaseDialog.Backdrop, { className: "dialog-backdrop" }), _jsxs(BaseDialog.Popup, { className: cx("dialog", size !== "md" && `dialog-${size}`), children: [_jsxs("header", { children: [_jsx(BaseDialog.Title, { render: _jsx("h2", {}), children: title }), _jsx(BaseDialog.Close, { className: "btn btn-ghost btn-icon", "aria-label": s.close, disabled: !dismissible, children: _jsx(Icon, { name: "x" }) })] }), _jsx("div", { className: "dialog-body", children: children }), footer && _jsx("footer", { children: footer })] })] }) });
24
24
  }
25
25
  // ConfirmDialog (M5): a decisão que não se fecha por engano. NÃO é um Dialog com dois botões —
26
26
  // é `role="alertdialog"`, e a diferença é de comportamento, não de aparência: o Base UI tira do
@@ -58,7 +58,7 @@ export function ConfirmDialog({ open, title, description, confirmLabel, cancelLa
58
58
  onCancel(); }, children: _jsxs(BaseAlertDialog.Portal, { container: portal, children: [_jsx(BaseAlertDialog.Backdrop, { className: "dialog-backdrop" }), _jsxs(BaseAlertDialog.Popup, { className: "dialog dialog-confirm", initialFocus: seguro, children: [_jsx("header", { children: _jsx(BaseAlertDialog.Title, { render: _jsx("h2", {}), children: title }) }), _jsx(BaseAlertDialog.Description, { className: "dialog-body", children: description }), _jsxs("footer", { children: [_jsx(Button, { ref: seguro, variant: "secondary", onClick: onCancel, children: cancelLabel ?? s.confirmCancel }), _jsx(Button, { variant: destructive ? "danger" : "primary", onClick: onConfirm, children: confirmLabel ?? s.confirmProceed })] })] })] }) });
59
59
  }
60
60
  export function Drawer({ open, title, children, onClose, side = "right" }) { const s = useAureaStrings(); const portal = usePortalContainer(); return _jsx(BaseDialog.Root, { open: open, onOpenChange: o => { if (!o)
61
- onClose(); }, children: _jsxs(BaseDialog.Portal, { container: portal, children: [_jsx(BaseDialog.Backdrop, { className: "drawer-backdrop" }), _jsxs(BaseDialog.Popup, { className: cx("drawer", `drawer-${side}`), children: [_jsxs("header", { children: [_jsx(BaseDialog.Title, { render: _jsx("h2", {}), children: title }), _jsx(BaseDialog.Close, { className: "btn btn-ghost btn-icon", "aria-label": s.close, children: _jsx(Icon, { name: "close" }) })] }), children] })] }) }); }
61
+ onClose(); }, children: _jsxs(BaseDialog.Portal, { container: portal, children: [_jsx(BaseDialog.Backdrop, { className: "drawer-backdrop" }), _jsxs(BaseDialog.Popup, { className: cx("drawer", `drawer-${side}`), children: [_jsxs("header", { children: [_jsx(BaseDialog.Title, { render: _jsx("h2", {}), children: title }), _jsx(BaseDialog.Close, { className: "btn btn-ghost btn-icon", "aria-label": s.close, children: _jsx(Icon, { name: "x" }) })] }), children] })] }) }); }
62
62
  export function AccessGate({ allowed, children, ...resto }) {
63
63
  if (allowed)
64
64
  return children;
@@ -114,7 +114,7 @@ function renderMenuItems(items, portal) {
114
114
  const sm = it;
115
115
  // O submenu é uma RAIZ própria com gatilho próprio — não é um item que "abre outro menu".
116
116
  // É o que dá `aria-haspopup`, a seta para a direita e o fechamento em cascata de graça.
117
- return _jsxs(BaseMenu.SubmenuRoot, { children: [_jsxs(BaseMenu.SubmenuTrigger, { className: "menu-item", disabled: sm.disabled, children: [dentro(sm), _jsx(Icon, { name: "chevron--right", size: "sm", className: "menu-seta" })] }), _jsx(BaseMenu.Portal, { container: portal, children: _jsx(BaseMenu.Positioner, { side: "inline-end", sideOffset: 4, children: _jsx(BaseMenu.Popup, { className: "menu", children: renderMenuItems(sm.items, portal) }) }) })] }, i);
117
+ return _jsxs(BaseMenu.SubmenuRoot, { children: [_jsxs(BaseMenu.SubmenuTrigger, { className: "menu-item", disabled: sm.disabled, children: [dentro(sm), _jsx(Icon, { name: "caret-right", size: "sm", className: "menu-seta" })] }), _jsx(BaseMenu.Portal, { container: portal, children: _jsx(BaseMenu.Positioner, { side: "inline-end", sideOffset: 4, children: _jsx(BaseMenu.Popup, { className: "menu", children: renderMenuItems(sm.items, portal) }) }) })] }, i);
118
118
  }
119
119
  case "checkbox": {
120
120
  const c = it;
@@ -123,7 +123,7 @@ function renderMenuItems(items, portal) {
123
123
  // assinatura pública da Aurea mudar junto com uma versão do motor. Mesma decisão do
124
124
  // `onValueChange` do grupo de rádio. O teste pegou: sem o embrulho, o `vi.fn()` recebia um
125
125
  // `PointerEvent` de brinde.
126
- return _jsxs(BaseMenu.CheckboxItem, { className: "menu-item", disabled: c.disabled, checked: c.checked, defaultChecked: c.defaultChecked, onCheckedChange: v => c.onCheckedChange?.(v), children: [marca(_jsx(BaseMenu.CheckboxItemIndicator, { children: _jsx(Icon, { name: "checkmark", size: "sm" }) })), dentro(c)] }, i);
126
+ return _jsxs(BaseMenu.CheckboxItem, { className: "menu-item", disabled: c.disabled, checked: c.checked, defaultChecked: c.defaultChecked, onCheckedChange: v => c.onCheckedChange?.(v), children: [marca(_jsx(BaseMenu.CheckboxItemIndicator, { children: _jsx(Icon, { name: "check", size: "sm" }) })), dentro(c)] }, i);
127
127
  }
128
128
  case "link": {
129
129
  const l = it;
package/dist/system.d.ts CHANGED
@@ -25,12 +25,14 @@ export declare function useAureaTheme(): {
25
25
  setDensity: (d: AureaDensity) => void;
26
26
  toggleTheme: () => void;
27
27
  };
28
- export type { IconName, CarbonIconName, AureaIconNames } from "./icon-names.js";
29
- import type { IconName } from "./icon-names.js";
28
+ export type { IconName, PhosphorIconName, AureaIconNames, IconWeight } from "./icon-names.js";
29
+ import { type IconName, type IconWeight } from "./icon-names.js";
30
30
  export type IconSize = "sm" | "md" | "lg" | "xl";
31
31
  export interface IconProps extends React.SVGAttributes<SVGSVGElement> {
32
32
  name: IconName;
33
33
  spriteUrl?: string;
34
34
  size?: Responsive<IconSize>;
35
+ /** `fill` desenha a forma cheia — a do item escolhido (ADR-0053). Nome próprio do app fica no `regular`. */
36
+ weight?: IconWeight;
35
37
  }
36
- export declare function Icon({ name, spriteUrl, size, className, ...props }: IconProps): React.JSX.Element;
38
+ export declare function Icon({ name, spriteUrl, size, weight, className, ...props }: IconProps): React.JSX.Element;
package/dist/system.js CHANGED
@@ -153,6 +153,10 @@ function AureaToastViewport() {
153
153
  const portal = usePortalContainer();
154
154
  return _jsx(BaseToast.Portal, { container: portal, children: _jsx(BaseToast.Viewport, { className: "toast-stack", children: _jsx(AureaToastList, {}) }) });
155
155
  }
156
+ import { NOMES_PHOSPHOR } from "./icon-names.js";
156
157
  // spriteUrl aqui é OVERRIDE local (dois sprites na mesma página, por exemplo). O normal é
157
158
  // não passar nada e deixar o AureaProvider dizer de onde vêm os glifos.
158
- export function Icon({ name, spriteUrl, size, className, ...props }) { const base = useSpriteUrl(); return _jsx("svg", { "aria-hidden": "true", className: cx("icon", peleDoEixo("icon", size), className), ...props, children: _jsx("use", { href: `${spriteUrl ?? base}#i-${name}` }) }); }
159
+ // A forma cheia é o símbolo `i-<nome>-fill` do sprite. Só os nomes do Phosphor a têm: um nome
160
+ // próprio do app pedido em `fill` desenha o regular, em vez de um `<use>` vazio.
161
+ const idDoIcone = (name, weight = "regular") => weight === "fill" && NOMES_PHOSPHOR.has(name) ? `i-${name}-fill` : `i-${name}`;
162
+ export function Icon({ name, spriteUrl, size, weight, className, ...props }) { const base = useSpriteUrl(); return _jsx("svg", { "aria-hidden": "true", className: cx("icon", peleDoEixo("icon", size), className), ...props, children: _jsx("use", { href: `${spriteUrl ?? base}#${idDoIcone(name, weight)}` }) }); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurea-uds/react",
3
- "version": "0.12.4",
3
+ "version": "0.13.0",
4
4
  "description": "Os componentes React da Aurea UDS. Importe @aurea-uds/fonts/css e @aurea-uds/core/css junto.",
5
5
  "keywords": [
6
6
  "aurea",