@softize/opus 12.10.0 → 13.0.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 +56 -0
- package/bin/lib/check.mjs +1098 -310
- package/bin/lib/copy.mjs +12 -5
- 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 +180 -0
- package/docs/adr/0006-semantic-context-precedes-visual-variant.md +182 -0
- package/docs/adr/0007-toast-actions-form-an-ordered-collection.md +63 -0
- package/docs/adr/0008-hierarchical-navigation-is-composed-at-the-consumer-boundary.md +71 -0
- package/docs/radius-scale.md +1 -1
- 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/maintain-opus-docs/SKILL.md +83 -0
- package/registry/skills/maintain-opus-docs/agents/openai.yaml +4 -0
- package/registry/skills/maintain-opus-docs/references/editorial-standard.md +85 -0
- package/registry/skills/maintain-opus-docs/references/evaluations.md +34 -0
- package/registry/skills/maintain-opus-docs/scripts/audit-docs.mjs +81 -0
- 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 +17 -8
- package/src/ui/components/patterns/action-form-card.tsx +18 -12
- package/src/ui/components/patterns/confirm.tsx +163 -40
- 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/list.tsx +1097 -783
- 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 +357 -83
- package/src/ui/components/patterns/trigger.tsx +37 -30
- package/src/ui/components/patterns/view.tsx +7 -11
- package/src/ui/components/primitives/alert.tsx +298 -110
- 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/dialog.tsx +196 -39
- 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 +40 -24
- package/src/ui/components/primitives/empty.tsx +3 -3
- package/src/ui/components/primitives/item.tsx +135 -79
- package/src/ui/components/primitives/menu.tsx +11 -3
- package/src/ui/components/primitives/metric-card.tsx +133 -0
- package/src/ui/components/primitives/sonner.tsx +187 -8
- package/src/ui/components/primitives/table.tsx +2 -2
- package/src/ui/docs/DocBrowser.tsx +104 -25
- package/src/ui/docs/changelog.tsx +1 -1
- package/src/ui/docs/content/accordion.md +22 -16
- package/src/ui/docs/content/action-form-card.md +8 -8
- package/src/ui/docs/content/action-form-dialog.md +9 -9
- package/src/ui/docs/content/action-form.md +28 -34
- package/src/ui/docs/content/action-list-dialog.md +11 -6
- package/src/ui/docs/content/action-list.md +64 -39
- package/src/ui/docs/content/action-trigger.md +21 -14
- package/src/ui/docs/content/action-view.md +8 -8
- package/src/ui/docs/content/actions.md +9 -9
- package/src/ui/docs/content/ai.md +3 -3
- package/src/ui/docs/content/alert.md +54 -28
- package/src/ui/docs/content/aspect-ratio.md +4 -4
- package/src/ui/docs/content/audit.md +2 -2
- package/src/ui/docs/content/auth.md +3 -3
- package/src/ui/docs/content/avatar.md +34 -14
- package/src/ui/docs/content/badge.md +21 -22
- package/src/ui/docs/content/breadcrumb.md +13 -8
- package/src/ui/docs/content/button.md +93 -15
- package/src/ui/docs/content/calendar.md +5 -5
- package/src/ui/docs/content/card.md +6 -6
- package/src/ui/docs/content/carousel.md +16 -11
- package/src/ui/docs/content/chat.md +3 -3
- package/src/ui/docs/content/checkbox.md +7 -7
- package/src/ui/docs/content/cli.md +5 -5
- package/src/ui/docs/content/collapsible.md +8 -8
- package/src/ui/docs/content/command.md +16 -8
- package/src/ui/docs/content/composer.md +2 -2
- package/src/ui/docs/content/content.md +44 -0
- package/src/ui/docs/content/copyable.md +4 -3
- package/src/ui/docs/content/customization.md +7 -7
- package/src/ui/docs/content/cycle.md +3 -3
- package/src/ui/docs/content/data-state.md +11 -12
- package/src/ui/docs/content/data.md +26 -33
- package/src/ui/docs/content/detail.md +8 -5
- package/src/ui/docs/content/dialog.md +339 -31
- package/src/ui/docs/content/dictionary-value.md +19 -18
- package/src/ui/docs/content/dock.md +3 -3
- package/src/ui/docs/content/dot.md +7 -7
- package/src/ui/docs/content/drawer.md +32 -16
- package/src/ui/docs/content/empty-value.md +2 -2
- package/src/ui/docs/content/empty.md +19 -12
- package/src/ui/docs/content/events.md +4 -4
- package/src/ui/docs/content/field.md +34 -12
- package/src/ui/docs/content/getting-started.md +1 -1
- package/src/ui/docs/content/icon-picker.md +8 -4
- package/src/ui/docs/content/input-otp.md +20 -12
- package/src/ui/docs/content/input.md +121 -9
- package/src/ui/docs/content/item.md +64 -24
- package/src/ui/docs/content/kbd.md +19 -11
- package/src/ui/docs/content/label.md +5 -3
- package/src/ui/docs/content/log.md +4 -4
- package/src/ui/docs/content/markdown.md +7 -6
- package/src/ui/docs/content/mcp.md +13 -15
- package/src/ui/docs/content/menu.md +36 -17
- package/src/ui/docs/content/metric-card.md +41 -0
- package/src/ui/docs/content/observability.md +2 -2
- package/src/ui/docs/content/page.md +93 -10
- package/src/ui/docs/content/pagination.md +22 -17
- package/src/ui/docs/content/popover.md +16 -8
- package/src/ui/docs/content/progress.md +7 -5
- package/src/ui/docs/content/queue.md +5 -5
- package/src/ui/docs/content/radio-group.md +20 -12
- package/src/ui/docs/content/router.md +11 -6
- package/src/ui/docs/content/scheduler.md +4 -5
- package/src/ui/docs/content/scroll-area.md +12 -7
- package/src/ui/docs/content/select.md +42 -29
- package/src/ui/docs/content/semantic-context.md +63 -0
- package/src/ui/docs/content/separator.md +5 -5
- package/src/ui/docs/content/sidebar.md +325 -56
- package/src/ui/docs/content/skeleton.md +5 -4
- package/src/ui/docs/content/slider.md +8 -7
- package/src/ui/docs/content/spinner.md +8 -8
- package/src/ui/docs/content/split.md +8 -5
- package/src/ui/docs/content/storage.md +6 -8
- package/src/ui/docs/content/switch.md +8 -7
- package/src/ui/docs/content/table.md +16 -6
- package/src/ui/docs/content/tabs.md +28 -14
- package/src/ui/docs/content/testing.md +9 -11
- package/src/ui/docs/content/textarea.md +5 -4
- package/src/ui/docs/content/toast.md +47 -13
- package/src/ui/docs/content/toggle.md +75 -7
- package/src/ui/docs/content/tokens.md +31 -3
- package/src/ui/docs/content/tooltip.md +19 -11
- package/src/ui/docs/content/truncate.md +7 -8
- package/src/ui/docs/content/ui.md +10 -9
- package/src/ui/docs/content/upgrading.md +7 -8
- package/src/ui/docs/doc-client.tsx +2 -2
- package/src/ui/docs/registry.tsx +580 -229
- package/src/ui/lib/semantic-context.ts +30 -0
- package/src/ui/meta.ts +278 -286
- package/src/ui/react.tsx +377 -111
- package/src/ui/theme.css +116 -0
- package/src/ui/components/primitives/alert-dialog.tsx +0 -190
- package/src/ui/docs/content/alert-dialog.md +0 -73
- package/src/ui/docs/content/button-group.md +0 -71
- package/src/ui/docs/content/confirm.md +0 -120
- package/src/ui/docs/content/input-group.md +0 -78
- package/src/ui/docs/content/toggle-group.md +0 -81
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,62 @@ 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
|
+
## 13.0.0 — 2026-09-07
|
|
11
|
+
|
|
12
|
+
Dialogs passam a formar uma única família. `Dialog mode="alert"` oferece a semântica de
|
|
13
|
+
`alertdialog`, exige uma resposta explícita e compartilha conteúdo, cabeçalho, mídia, corpo e rodapé
|
|
14
|
+
com o modo padrão. `DialogClose` pode declarar `result` e foco inicial, enquanto `Dialog.onResult`
|
|
15
|
+
recebe a escolha. A API imperativa mantém `alert`, `confirm` e `prompt` e acrescenta
|
|
16
|
+
`dialog.choose({ actions })` para uma ou mais respostas nomeadas.
|
|
17
|
+
|
|
18
|
+
Alerts, toasts, itens, estados vazios, dialogs e drawers alinham mídia e ações pela mesma anatomia.
|
|
19
|
+
Molduras de ícone permanecem quadradas mesmo com descrições em várias linhas; ações ficam na região
|
|
20
|
+
final da superfície e usam `Button` explicitamente. Toast aceita uma coleção ordenada em `actions`,
|
|
21
|
+
com a última ação destacada por padrão. Drawer aproxima cabeçalho, corpo e rodapé do enquadramento de
|
|
22
|
+
Dialog. Tabelas ganham respiro consistente, cabeçalhos muted e representação muted para valores
|
|
23
|
+
ausentes. `Page` passa a usar teto padrão de `80rem`, e `SidebarTreeGroup` incorpora a guia visual
|
|
24
|
+
para navegação hierárquica.
|
|
25
|
+
|
|
26
|
+
A documentação publicada foi reorganizada por famílias de uso. Button Group, Input Group, Toggle
|
|
27
|
+
Group e Page State passam a viver nas páginas dos componentes que os contextualizam, cada API com
|
|
28
|
+
sua própria referência de propriedades. Dialog reúne os modos declarativo e imperativo, Sidebar
|
|
29
|
+
documenta composição em árvore, e as categorias do catálogo ganham ícones próprios. A nova skill
|
|
30
|
+
`maintain-opus-docs` registra o padrão editorial e os gates usados para manter esse catálogo.
|
|
31
|
+
|
|
32
|
+
**Breaking:** os exports `AlertDialog*` foram removidos. Troque a raiz por
|
|
33
|
+
`<Dialog mode="alert">`, os demais slots pelos equivalentes `Dialog*` e componha cada ação como
|
|
34
|
+
`<DialogClose asChild><Button>…</Button></DialogClose>`. Para distinguir respostas, declare
|
|
35
|
+
`result` em `DialogClose` e trate o valor em `Dialog.onResult`. Os campos `action` e `cancel` de
|
|
36
|
+
Toast também foram removidos; use `actions`. `EmptyContent` foi removido; use `EmptyActions`.
|
|
37
|
+
`SidebarNavGroup.subgroups` deixa de existir: componha níveis adicionais com `SidebarTreeGroup`.
|
|
38
|
+
|
|
39
|
+
## 12.11.0 — 2026-09-04
|
|
40
|
+
|
|
41
|
+
A UI passa a separar intenção semântica de tratamento visual. `context` aceita `neutral`,
|
|
42
|
+
`primary`, `info`, `success`, `warning` e `danger`; `variant` fica restrita a `solid`, `subtle`,
|
|
43
|
+
`outline`, `ghost` e `link`. `tone` e as variantes semânticas anteriores continuam aceitos para
|
|
44
|
+
migração, mas novos componentes e dicionários devem declarar `context`. Actions destrutivas
|
|
45
|
+
continuam usando `destructive`, projetado visualmente como `danger`.
|
|
46
|
+
Durante a migração, use o alias antigo sozinho: combiná-lo com `context` é ambíguo e agora falha
|
|
47
|
+
explicitamente em vez de descartar uma das intenções.
|
|
48
|
+
|
|
49
|
+
Páginas, conteúdos e estados assíncronos ganham anatomia compartilhada. `PageState` cobre vazio e
|
|
50
|
+
erro no enquadramento da página; `Content` organiza título, descrição e ações; `MetricCard` evita
|
|
51
|
+
cards de indicador montados manualmente. `Page`, sidebars, alerts, itens, cards, drawers e tabelas
|
|
52
|
+
expõem slots estruturais consistentes, documentados e verificados por `opus check`.
|
|
53
|
+
As composições públicas anteriores de `ContentHeader`, `Alert` e `ItemHeader` permanecem
|
|
54
|
+
funcionais como adaptadores durante a série 12, enquanto o gate orienta código novo à anatomia.
|
|
55
|
+
|
|
56
|
+
Controles de tamanho normal passam a compartilhar a mesma altura relativa, e `Detail` alinha os
|
|
57
|
+
rótulos sem depender do comprimento de cada atributo. A documentação do catálogo inclui os novos
|
|
58
|
+
padrões, tokens e exemplos, e o verificador aceita slots válidos envolvidos por condicionais JSX.
|
|
59
|
+
|
|
60
|
+
**Migração:** troque intenção semântica declarada em `variant` ou `tone` por `context`, mantendo em
|
|
61
|
+
`variant` apenas a aparência. Em dicionários de status ou estágio, substitua `tone` por `context`.
|
|
62
|
+
Use `PageState`, `Content` e os slots estruturais em vez de reproduzir vazio, erro, cabeçalho ou
|
|
63
|
+
ações com composição local. O gate informa os locais que ainda usam a forma antiga ou uma anatomia
|
|
64
|
+
incompleta.
|
|
65
|
+
|
|
10
66
|
## 12.10.0 — 2026-09-03
|
|
11
67
|
|
|
12
68
|
`Alert` ganha a variante aditiva `warning` e passa a oferecer realce tonal nativo ao redor do
|