@softize/opus 12.9.0 → 12.11.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/CHANGELOG.md +44 -0
- package/bin/lib/check.mjs +1103 -310
- package/bin/lib/copy.mjs +74 -6
- package/docs/adr/0003-dictionary-presentation-is-declared.md +3 -0
- package/docs/adr/0004-page-content-state-is-composed.md +65 -0
- package/docs/adr/0005-structural-surfaces-share-an-explicit-anatomy.md +97 -0
- package/docs/adr/0006-semantic-context-precedes-visual-variant.md +182 -0
- package/docs/code-style.md +6 -2
- package/package.json +1 -1
- package/registry/instructions/opus.md +5 -0
- package/registry/skills/build-opus-ui/SKILL.md +27 -16
- package/registry/skills/build-opus-ui/references/evaluations.md +16 -5
- package/registry/skills/build-opus-ui/references/ui-patterns.md +38 -15
- package/registry/skills/model-opus-dictionary/SKILL.md +4 -2
- package/registry/skills/model-opus-dictionary/references/evaluations.md +4 -3
- package/registry/templates/app/src/App.tsx +1 -1
- package/src/core/dictionary.ts +52 -14
- package/src/core/index.ts +10 -0
- package/src/core/ui-context.ts +29 -0
- package/src/schema/drivers/zod.ts +34 -19
- package/src/ui/components/patterns/action-form-card.tsx +18 -12
- package/src/ui/components/patterns/confirm.tsx +26 -3
- package/src/ui/components/patterns/content-header.tsx +335 -61
- package/src/ui/components/patterns/data-state.tsx +23 -10
- package/src/ui/components/patterns/form.tsx +1 -1
- package/src/ui/components/patterns/list.tsx +1096 -777
- package/src/ui/components/patterns/page-state.tsx +115 -0
- package/src/ui/components/patterns/page.tsx +231 -41
- package/src/ui/components/patterns/sidebar.tsx +354 -80
- package/src/ui/components/patterns/trigger.tsx +13 -9
- package/src/ui/components/patterns/view.tsx +7 -11
- package/src/ui/components/primitives/alert-dialog.tsx +7 -5
- package/src/ui/components/primitives/alert.tsx +298 -80
- package/src/ui/components/primitives/ask.tsx +2 -1
- package/src/ui/components/primitives/badge.tsx +91 -30
- package/src/ui/components/primitives/button.tsx +99 -60
- package/src/ui/components/primitives/calendar.tsx +39 -39
- package/src/ui/components/primitives/card.tsx +96 -23
- package/src/ui/components/primitives/detail.tsx +2 -2
- package/src/ui/components/primitives/dictionary-value.tsx +9 -14
- package/src/ui/components/primitives/dot.tsx +74 -21
- package/src/ui/components/primitives/drawer.tsx +33 -20
- package/src/ui/components/primitives/field.tsx +4 -4
- package/src/ui/components/primitives/item.tsx +137 -81
- package/src/ui/components/primitives/menu.tsx +11 -3
- package/src/ui/components/primitives/metric-card.tsx +133 -0
- package/src/ui/components/primitives/table.tsx +2 -2
- package/src/ui/components/primitives/tooltip.tsx +1 -1
- package/src/ui/docs/DocBrowser.tsx +3 -3
- package/src/ui/docs/changelog.tsx +1 -1
- package/src/ui/docs/content/action-form-card.md +1 -1
- package/src/ui/docs/content/alert-dialog.md +8 -8
- package/src/ui/docs/content/alert.md +54 -23
- package/src/ui/docs/content/badge.md +18 -19
- package/src/ui/docs/content/button.md +12 -9
- package/src/ui/docs/content/card.md +5 -5
- package/src/ui/docs/content/content.md +44 -0
- package/src/ui/docs/content/customization.md +2 -2
- package/src/ui/docs/content/detail.md +5 -2
- package/src/ui/docs/content/dialog.md +2 -2
- package/src/ui/docs/content/dictionary-value.md +11 -10
- package/src/ui/docs/content/dot.md +7 -7
- package/src/ui/docs/content/drawer.md +6 -3
- package/src/ui/docs/content/field.md +1 -1
- package/src/ui/docs/content/input-group.md +3 -2
- package/src/ui/docs/content/item.md +47 -21
- package/src/ui/docs/content/menu.md +5 -4
- package/src/ui/docs/content/metric-card.md +41 -0
- package/src/ui/docs/content/page-state.md +45 -0
- package/src/ui/docs/content/page.md +48 -10
- package/src/ui/docs/content/semantic-context.md +63 -0
- package/src/ui/docs/content/sidebar.md +4 -4
- package/src/ui/docs/content/skeleton.md +2 -2
- package/src/ui/docs/content/table.md +3 -3
- package/src/ui/docs/content/tokens.md +28 -0
- package/src/ui/docs/content/tooltip.md +15 -1
- package/src/ui/docs/doc-client.tsx +2 -2
- package/src/ui/docs/registry.tsx +596 -228
- package/src/ui/lib/semantic-context.ts +30 -0
- package/src/ui/meta.ts +292 -270
- package/src/ui/react.tsx +378 -111
- package/src/ui/theme.css +66 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,50 @@ 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
|
+
## 12.11.0 — 2026-09-04
|
|
11
|
+
|
|
12
|
+
A UI passa a separar intenção semântica de tratamento visual. `context` aceita `neutral`,
|
|
13
|
+
`primary`, `info`, `success`, `warning` e `danger`; `variant` fica restrita a `solid`, `subtle`,
|
|
14
|
+
`outline`, `ghost` e `link`. `tone` e as variantes semânticas anteriores continuam aceitos para
|
|
15
|
+
migração, mas novos componentes e dicionários devem declarar `context`. Actions destrutivas
|
|
16
|
+
continuam usando `destructive`, projetado visualmente como `danger`.
|
|
17
|
+
Durante a migração, use o alias antigo sozinho: combiná-lo com `context` é ambíguo e agora falha
|
|
18
|
+
explicitamente em vez de descartar uma das intenções.
|
|
19
|
+
|
|
20
|
+
Páginas, conteúdos e estados assíncronos ganham anatomia compartilhada. `PageState` cobre vazio e
|
|
21
|
+
erro no enquadramento da página; `Content` organiza título, descrição e ações; `MetricCard` evita
|
|
22
|
+
cards de indicador montados manualmente. `Page`, sidebars, alerts, itens, cards, drawers e tabelas
|
|
23
|
+
expõem slots estruturais consistentes, documentados e verificados por `opus check`.
|
|
24
|
+
As composições públicas anteriores de `ContentHeader`, `Alert` e `ItemHeader` permanecem
|
|
25
|
+
funcionais como adaptadores durante a série 12, enquanto o gate orienta código novo à anatomia.
|
|
26
|
+
|
|
27
|
+
Controles de tamanho normal passam a compartilhar a mesma altura relativa, e `Detail` alinha os
|
|
28
|
+
rótulos sem depender do comprimento de cada atributo. A documentação do catálogo inclui os novos
|
|
29
|
+
padrões, tokens e exemplos, e o verificador aceita slots válidos envolvidos por condicionais JSX.
|
|
30
|
+
|
|
31
|
+
**Migração:** troque intenção semântica declarada em `variant` ou `tone` por `context`, mantendo em
|
|
32
|
+
`variant` apenas a aparência. Em dicionários de status ou estágio, substitua `tone` por `context`.
|
|
33
|
+
Use `PageState`, `Content` e os slots estruturais em vez de reproduzir vazio, erro, cabeçalho ou
|
|
34
|
+
ações com composição local. O gate informa os locais que ainda usam a forma antiga ou uma anatomia
|
|
35
|
+
incompleta.
|
|
36
|
+
|
|
37
|
+
## 12.10.0 — 2026-09-03
|
|
38
|
+
|
|
39
|
+
`Alert` ganha a variante aditiva `warning` e passa a oferecer realce tonal nativo ao redor do
|
|
40
|
+
ícone. O layout com ícone reserva uma coluna estável; sem ícone, o aviso continua em bloco e não
|
|
41
|
+
cria espaço vazio. `style` permite ajustar as medidas internas quando uma composição exigir.
|
|
42
|
+
|
|
43
|
+
`FieldLabel` adota a mesma hierarquia tipográfica de `DetailField`, com ritmo vertical menor, e o
|
|
44
|
+
estado marcado de uma escolha em cartão deixa de vazar para rótulos comuns com checkbox. Tooltips
|
|
45
|
+
passam a ter largura máxima compartilhada e quebra de linha natural; `ActionForm` apenas consome
|
|
46
|
+
esse padrão, sem decidir a largura do primitivo.
|
|
47
|
+
|
|
48
|
+
`opus copy` passa a inventariar estaticamente `label`, `description` e `doc` declarados em
|
|
49
|
+
`t.dict`, inclusive a documentação do dicionário. Metadados livres não viram copy por inferência;
|
|
50
|
+
declarações dinâmicas continuam falhando no gate em vez de executar código consumidor. Em runtime,
|
|
51
|
+
o dicionário mantém um snapshot imutável das entradas, então alterações posteriores no objeto
|
|
52
|
+
original, em `metaFor` ou na metadata lógica não mudam a copy já declarada.
|
|
53
|
+
|
|
10
54
|
## 12.9.0 — 2026-09-03
|
|
11
55
|
|
|
12
56
|
`Chat` aceita `empty`, um nó React para o estado sem mensagens: o app compõe o vazio com os
|