@softize/opus 18.0.1 → 18.1.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 +47 -0
- package/docs/adr/0016-productive-surfaces-use-compact-density.md +62 -0
- package/docs/adr/0017-ui-assumes-a-fixed-desktop-layout.md +54 -0
- package/docs/relative-unit-scale.md +9 -2
- package/package.json +1 -1
- package/registry/skills/build-opus-ui/references/evaluations.md +3 -1
- package/registry/skills/build-opus-ui/references/ui-patterns.md +9 -3
- package/src/core/runtime.ts +7 -1
- package/src/core/types.ts +12 -3
- package/src/mcp/index.ts +4 -1
- package/src/ui/components/patterns/action-list-dialog.tsx +2 -2
- package/src/ui/components/patterns/content-header.tsx +1 -1
- package/src/ui/components/patterns/form-dialog.tsx +7 -2
- package/src/ui/components/patterns/list.tsx +239 -47
- package/src/ui/components/patterns/presentation.tsx +7 -5
- package/src/ui/components/patterns/state-surface.tsx +2 -2
- package/src/ui/components/patterns/surface-header.tsx +4 -4
- package/src/ui/components/primitives/alert.tsx +2 -2
- package/src/ui/components/primitives/breadcrumb.tsx +1 -1
- package/src/ui/components/primitives/button-group.tsx +1 -1
- package/src/ui/components/primitives/button.tsx +3 -3
- package/src/ui/components/primitives/calendar.tsx +1 -1
- package/src/ui/components/primitives/close-button.tsx +40 -0
- package/src/ui/components/primitives/detail.tsx +66 -28
- package/src/ui/components/primitives/dialog.tsx +36 -21
- package/src/ui/components/primitives/drawer.tsx +26 -19
- package/src/ui/components/primitives/empty-value.tsx +3 -3
- package/src/ui/components/primitives/empty.tsx +1 -1
- package/src/ui/components/primitives/field.tsx +12 -12
- package/src/ui/components/primitives/icon-picker.tsx +1 -1
- package/src/ui/components/primitives/input-group.tsx +1 -1
- package/src/ui/components/primitives/input.tsx +2 -2
- package/src/ui/components/primitives/item.tsx +5 -5
- package/src/ui/components/primitives/pagination.tsx +4 -4
- package/src/ui/components/primitives/select.tsx +2 -2
- package/src/ui/components/primitives/table.tsx +26 -17
- package/src/ui/components/primitives/tabs.tsx +80 -23
- package/src/ui/components/primitives/textarea.tsx +1 -1
- package/src/ui/components/primitives/toggle-group.tsx +9 -2
- package/src/ui/docs/content/action-form.md +19 -0
- package/src/ui/docs/content/action-list-dialog.md +1 -1
- package/src/ui/docs/content/action-list.md +7 -1
- package/src/ui/docs/content/alert.md +2 -0
- package/src/ui/docs/content/button.md +2 -1
- package/src/ui/docs/content/customization.md +11 -1
- package/src/ui/docs/content/detail.md +9 -8
- package/src/ui/docs/content/dialog.md +12 -5
- package/src/ui/docs/content/drawer.md +6 -3
- package/src/ui/docs/content/empty-value.md +4 -4
- package/src/ui/docs/content/field.md +1 -1
- package/src/ui/docs/content/item.md +2 -0
- package/src/ui/docs/content/page.md +1 -1
- package/src/ui/docs/content/presentation.md +2 -2
- package/src/ui/docs/content/tabs.md +16 -6
- package/src/ui/docs/content/toast.md +2 -1
- package/src/ui/docs/content/tokens.md +45 -2
- package/src/ui/react.tsx +1 -0
- package/src/ui/theme.css +3 -0
|
@@ -53,7 +53,7 @@ família oferece sólido, foreground, superfície sutil, ênfase e borda. Use as
|
|
|
53
53
|
```tsx preview
|
|
54
54
|
const CONTEXTS = ['neutral', 'primary', 'info', 'success', 'warning', 'danger']
|
|
55
55
|
render(
|
|
56
|
-
<div className="grid w-full
|
|
56
|
+
<div className="grid w-full grid-cols-3 gap-2">
|
|
57
57
|
{CONTEXTS.map((context) => (
|
|
58
58
|
<div
|
|
59
59
|
key={context}
|
|
@@ -79,7 +79,7 @@ render(
|
|
|
79
79
|
```tsx preview
|
|
80
80
|
const LINES = [
|
|
81
81
|
['border', 'Bordas de contêineres (cards, tabelas, separadores).'],
|
|
82
|
-
['input', 'Borda de campos de formulário.'],
|
|
82
|
+
['input', 'Borda e fundo sutil de campos de formulário.'],
|
|
83
83
|
['ring', 'O anel de foco (focus-visible).'],
|
|
84
84
|
]
|
|
85
85
|
render(
|
|
@@ -135,6 +135,49 @@ render(
|
|
|
135
135
|
> aplicação continuam responsáveis pela densidade. Uma aplicação pode ajustar `font-size` em
|
|
136
136
|
> `html`; texto, espaçamento, radius, foco e elevação acompanham a mesma decisão.
|
|
137
137
|
|
|
138
|
+
## Tipografia produtiva
|
|
139
|
+
|
|
140
|
+
Interfaces operacionais precisam acomodar controles, dados e ações sem transformar o corpo comum
|
|
141
|
+
em texto secundário. Use `text-sm` (`0.875rem`) como corpo produtivo: descrições curtas, valores,
|
|
142
|
+
rótulos e texto de componentes. Reserve `text-base` (`1rem`) para leitura mais confortável, como
|
|
143
|
+
prosa longa, conteúdo editorial ou uma ênfase que dependa de tamanho.
|
|
144
|
+
|
|
145
|
+
O tema não reduz o texto do `body`. Componentes e regiões produtivas declaram `text-sm`
|
|
146
|
+
explicitamente em uma raiz controlada, enquanto o texto geral do documento permanece em `1rem`.
|
|
147
|
+
Assim, escolher o corpo da interface não recalibra tipografia, espaçamento ou dimensões globais.
|
|
148
|
+
|
|
149
|
+
`base` nomeia o degrau de `1rem` da escala técnica; não significa que todo produto precisa usá-lo
|
|
150
|
+
como corpo predominante. Preserve a fonte raiz usual do documento para que `1rem` continue sendo a
|
|
151
|
+
referência do navegador e para que espaçamentos e controles em `rem` não mudem quando a intenção for
|
|
152
|
+
somente escolher um papel tipográfico.
|
|
153
|
+
|
|
154
|
+
A herança continua fazendo parte da composição. Declare `text-sm` na raiz de um componente ou de
|
|
155
|
+
uma região produtiva e omita a classe apenas nos filhos que herdam dessa raiz controlada. Um
|
|
156
|
+
elemento também declara `text-sm` quando precisa restaurar o corpo produtivo dentro de um contexto
|
|
157
|
+
com outro tamanho. Não crie um alias como `text-body`: ele esconderia o mesmo degrau sem eliminar
|
|
158
|
+
a necessidade de declarar o papel tipográfico.
|
|
159
|
+
|
|
160
|
+
```tsx preview
|
|
161
|
+
render(
|
|
162
|
+
<div className="space-y-3 text-sm">
|
|
163
|
+
<p>Corpo produtivo para a interface.</p>
|
|
164
|
+
<p className="text-base leading-relaxed">
|
|
165
|
+
Corpo ampliado para um trecho que pede leitura mais confortável.
|
|
166
|
+
</p>
|
|
167
|
+
<div className="text-xs text-muted-foreground">
|
|
168
|
+
Metadado compacto.
|
|
169
|
+
<p className="mt-1 text-sm text-foreground">
|
|
170
|
+
Corpo produtivo restaurado dentro do contexto compacto.
|
|
171
|
+
</p>
|
|
172
|
+
</div>
|
|
173
|
+
</div>,
|
|
174
|
+
)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Alterar `font-size` em `html` permanece válido quando a aplicação quer recalibrar **toda** a
|
|
178
|
+
interface. Essa decisão escala tipografia, espaços, controles, radius e elevação em conjunto; não é
|
|
179
|
+
o mecanismo para fazer `text-sm` se chamar `text-base`.
|
|
180
|
+
|
|
138
181
|
## Radius
|
|
139
182
|
|
|
140
183
|
> A escala mapeada no `@theme inline` preserva o sentido pré-v4 dos utilitários `rounded-*`
|
package/src/ui/react.tsx
CHANGED
package/src/ui/theme.css
CHANGED