@softize/opus 18.0.0 → 18.0.1

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/CHANGELOG.md CHANGED
@@ -7,6 +7,13 @@ Depois de qualquer bump, rode os gates (`typecheck` · `test` · `opus check` ·
7
7
  `opus copy --check` · `base copy check` · `manifest:check`) — eles apontam o que a
8
8
  mudança cobra do seu código.
9
9
 
10
+ ## 18.0.1 — 2026-09-13
11
+
12
+ Controles somente com ícone que pertencem ao chrome da superfície, como voltar e fechar, usam o
13
+ tamanho normal `icon`. O retorno cresce de 1.75rem para a área clicável padrão de 2.25rem; o close
14
+ permanece nessa medida e ambos mantêm o glifo compacto. `icon-sm` fica reservado às composições
15
+ densas, como paginação e toolbars.
16
+
10
17
  ## 18.0.0 — 2026-09-13
11
18
 
12
19
  ### Breaking
@@ -36,8 +36,8 @@ A variante altera somente a apresentação. Título, descrição, retorno e aç
36
36
  semanticamente à mesma página. Um header sem conteúdo útil não é materializado para reservar
37
37
  altura, e o header é ocultado durante os estados integrais do `PageState` — inversão da decisão
38
38
  original da ADR 0004, argumentada no adendo dela. Para acompanhar o ritmo
39
- compacto da barra, ações com texto usam `Button size="sm"` e ações somente com ícone usam
40
- `Button size="icon-sm"`.
39
+ da barra, ações com texto usam `Button size="default"` e ações somente com ícone usam
40
+ `Button size="icon"`.
41
41
 
42
42
  ## Consequências
43
43
 
@@ -24,7 +24,7 @@ risco.
24
24
  - ações operacionais em toolbar, header de seção ou coleção densa usam `sm`;
25
25
  - ações internas de linha, célula ou campo usam `xs` ou `icon-xs`;
26
26
  - ações somente com ícone que pertencem ao chrome da superfície, como voltar e fechar, usam
27
- `icon-sm`;
27
+ `icon`;
28
28
  - `lg` fica reservado a chamadas que deliberadamente precisam de uma área de toque maior, não a
29
29
  uma ação primária comum.
30
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softize/opus",
3
- "version": "18.0.0",
3
+ "version": "18.0.1",
4
4
  "description": "End-to-end action protocol for TypeScript. Single package with subpath exports (core + adapters).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,7 +27,7 @@
27
27
  O shell é o único responsável pela barra e projeta os slots de `PageHeader`; `PageIntro` permanece
28
28
  no conteúdo.
29
29
  Ações com texto na barra usam o tamanho `default`, como as ações de footer de Dialog e Drawer;
30
- ações somente com ícone de chrome usam `icon-sm`. O tamanho `sm` fica para ações operacionais em
30
+ ações somente com ícone de chrome usam `icon`. O tamanho `sm` fica para ações operacionais em
31
31
  toolbar, seção ou coleção densa, e `xs`/`icon-xs` para ações internas de linha ou célula. Contexto
32
32
  e variante resolvem a hierarquia visual sem alterar essa medida. Em uma coleção, a ação de
33
33
  criar usa botão textual `default`, sem ícone, no extremo oposto do `ContentHeader`. Não monte
@@ -639,7 +639,7 @@ export function PageBack({
639
639
  typeof children === "string" ? children : "a página anterior";
640
640
  const accessibleLabel = ariaLabel ?? `Voltar para ${destination}`;
641
641
  const back = (
642
- <Button asChild variant="ghost" size="icon-sm">
642
+ <Button asChild variant="ghost" size="icon">
643
643
  <a
644
644
  data-slot="page-back"
645
645
  aria-label={accessibleLabel}
@@ -629,7 +629,7 @@ export function Presentation({
629
629
  (invocation.surface === "page" || parentSurface !== "page");
630
630
  const navigation = !canGoBack ? undefined : (
631
631
  <Button
632
- size="icon-sm"
632
+ size="icon"
633
633
  variant="ghost"
634
634
  disabled={surfaceBlocked}
635
635
  aria-label="Voltar"
@@ -7,7 +7,7 @@
7
7
  * - Confirmação opcional via <Dialog> (compacto, não fecha no clique fora) antes de disparar.
8
8
  * - `icon` faz o botão virar icon-only com tooltip, no quadrado `icon-xs` (1.5rem) da escala:
9
9
  * é a ação que mora NO item (linha, card). Uma composição que peça mais presença — a barra
10
- * do `PageHeader`, por exemplo — declara `size="icon-sm"`. Absorveu o antigo DeleteButton,
10
+ * do `PageHeader`, por exemplo — declara `size="icon"`. Absorveu o antigo DeleteButton,
11
11
  * que era este componente com uma lixeira.
12
12
  * Emite `data-action="<action.name>"` na raiz (selector E2E).
13
13
  */
@@ -39,7 +39,7 @@ confirm: {
39
39
 
40
40
  Com `icon`, o botão exibe somente o ícone no quadrado `icon-xs` da escala (1.5rem, a ação que mora
41
41
  dentro de uma linha ou card) e usa `label`, ou `action.label`, no tooltip e no nome acessível. Uma
42
- composição que peça mais presença, como a barra do `PageHeader`, declara `size="icon-sm"`. O clique
42
+ composição que peça mais presença, como a barra do `PageHeader`, declara `size="icon"`. O clique
43
43
  não aciona o item clicável ao redor. `itemLabel` identifica o registro na mensagem de confirmação.
44
44
 
45
45
  ```tsx
@@ -79,7 +79,7 @@ um atalho, um arrastar, um item de menu.
79
79
  | `action` | `SimpleContract<TInput, TData>` | | A SimpleAction do Opus — label, messages e confirm vêm do contrato. |
80
80
  | `input` | `TInput` | | O que a action recebe — geralmente { id }. |
81
81
  | `label` | `string` | `action.label` | Sobrepõe o texto do botão. |
82
- | `context / variant / size` | `do Button` | gatilho: `primary`/`solid`; `danger` quando a action é `destructive`; no modo ícone, `ghost` e `neutral` (ou `danger` se destrutiva) / `default` | Visual do gatilho; `context` explícito vence. O botão de confirmar é sempre `solid`: `danger` quando a action é `destructive`, senão a prop `context` do gatilho (ou `primary`). |
82
+ | `context / variant / size` | `do Button` | gatilho: `primary`/`solid`; `danger` quando a action é `destructive`; no modo ícone, `ghost` e `neutral` (ou `danger` se destrutiva) / `icon-xs` | Visual do gatilho; `context` explícito vence. O botão de confirmar é sempre `solid`: `danger` quando a action é `destructive`, senão a prop `context` do gatilho (ou `primary`). |
83
83
  | `confirm` | `{ title, description?, actionLabel?, cancelLabel? }` | | Confirmação via prop — sobrepõe o ConfirmSpec do contrato. |
84
84
  | `onSuccess` | `(data: TData) => void` | | Pós-sucesso (cache já invalidado pelo action.invalidates). |
85
85
  | `icon` | `React.ReactNode` | | Torna o botão icon-only: rótulo no tooltip e no `aria-label`, clique que não vaza para o item. |
@@ -35,7 +35,7 @@ há texto visível. O glifo dentro do controle acompanha o tamanho (0.875rem em
35
35
  Escolha o tamanho pela região, não pela importância visual: `variant` e `context` resolvem a
36
36
  hierarquia da ação. Headers de Page e footers de Dialog/Drawer usam `default`; ações operacionais
37
37
  de seção, toolbar e coleção usam `sm`; ações dentro de linha ou célula usam `xs` ou `icon-xs`.
38
- Controles de chrome, como voltar e fechar, usam `icon-sm`. Assim a mesma decisão mantém a mesma
38
+ Controles de chrome, como voltar e fechar, usam `icon`. Assim a mesma decisão mantém a mesma
39
39
  altura mesmo quando uma superfície troca uma ação secundária por uma primária.
40
40
 
41
41
  ```tsx preview