@softize/opus 27.0.0 → 28.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 +73 -0
- package/bin/lib/check.mjs +139 -30
- package/docs/adr/0015-action-size-follows-interaction-density.md +2 -0
- package/docs/adr/0017-ui-assumes-a-fixed-desktop-layout.md +14 -8
- package/docs/adr/0029-page-header-is-the-single-page-introduction.md +3 -1
- package/docs/adr/0057-doc-browser-permite-busca-no-chrome-do-consumidor.md +39 -5
- package/docs/adr/0060-surface-composition-separates-chrome-and-intro.md +161 -0
- package/docs/adr/README.md +2 -0
- package/package.json +1 -1
- package/registry/skills/build-opus-ui/SKILL.md +11 -11
- package/registry/skills/build-opus-ui/references/evaluations.md +10 -0
- package/registry/skills/build-opus-ui/references/ui-patterns.md +17 -15
- package/src/ui/components/patterns/list.tsx +62 -53
- package/src/ui/components/patterns/page.tsx +146 -38
- package/src/ui/components/patterns/presentation.tsx +44 -59
- package/src/ui/components/patterns/structural-header.tsx +42 -6
- package/src/ui/components/patterns/surface-anatomy.ts +52 -22
- package/src/ui/components/patterns/surface.tsx +2 -3
- package/src/ui/components/primitives/control.ts +2 -2
- package/src/ui/components/primitives/dialog.tsx +7 -2
- package/src/ui/components/primitives/drawer.tsx +7 -2
- package/src/ui/components/primitives/icon-picker.tsx +271 -34
- package/src/ui/components/primitives/pagination.tsx +5 -4
- package/src/ui/components/primitives/tabs.tsx +15 -2
- package/src/ui/components/primitives/toggle.tsx +1 -1
- package/src/ui/docs/DocBrowser.tsx +122 -12
- package/src/ui/docs/content/action-list.md +11 -2
- package/src/ui/docs/content/button.md +7 -7
- package/src/ui/docs/content/compositions.md +35 -23
- package/src/ui/docs/content/dialog.md +18 -6
- package/src/ui/docs/content/documentation-portal.md +40 -1
- package/src/ui/docs/content/drawer.md +17 -5
- package/src/ui/docs/content/icon-picker.md +37 -19
- package/src/ui/docs/content/input.md +1 -1
- package/src/ui/docs/content/page.md +169 -69
- package/src/ui/docs/content/pagination.md +7 -8
- package/src/ui/docs/content/presentation.md +4 -3
- package/src/ui/docs/content/surface.md +8 -5
- package/src/ui/docs/content/tabs.md +12 -4
- package/src/ui/docs/types.ts +2 -0
- package/src/ui/meta.ts +1 -1
- package/src/ui/react.tsx +9 -1
|
@@ -38,25 +38,30 @@ mostrar somente o ícone, declare `aria-label` para preservar seu nome acessíve
|
|
|
38
38
|
</Tabs>
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
A barra e o painel ficam separados por `1rem`. O painel organiza seus blocos diretos com
|
|
42
|
+
o mesmo intervalo. Sem moldura, não há padding inferior: o hospedeiro fornece o recuo externo.
|
|
43
|
+
Não adicione margem ou padding para repetir esses intervalos.
|
|
44
|
+
|
|
41
45
|
## Emoldurar abas e painéis
|
|
42
46
|
|
|
43
47
|
Use `framed` quando a navegação e seus painéis precisarem formar um único bloco. A propriedade
|
|
44
48
|
reúne borda, raio e recorte no próprio `Tabs`, mas não aplica fundo: o bloco herda a
|
|
45
49
|
superfície em que foi composto. Por isso, não envolva `Tabs` em um `Surface` somente para obter essa
|
|
46
|
-
moldura.
|
|
50
|
+
moldura. O painel horizontal recebe `1rem` nas laterais e embaixo; o intervalo da barra
|
|
51
|
+
fornece o espaço superior. Na orientação vertical, a moldura recebe `1rem` ao redor da composição.
|
|
47
52
|
|
|
48
53
|
```tsx preview col
|
|
49
|
-
<Tabs defaultValue="overview" framed
|
|
54
|
+
<Tabs defaultValue="overview" framed>
|
|
50
55
|
<TabsList>
|
|
51
56
|
<TabsListItem value="overview">Visão geral</TabsListItem>
|
|
52
57
|
<TabsListItem value="history">Histórico</TabsListItem>
|
|
53
58
|
</TabsList>
|
|
54
|
-
<TabsPanel value="overview"
|
|
59
|
+
<TabsPanel value="overview">
|
|
55
60
|
<p className="text-sm text-muted-foreground">
|
|
56
61
|
Resumo do workspace Empresa X.
|
|
57
62
|
</p>
|
|
58
63
|
</TabsPanel>
|
|
59
|
-
<TabsPanel value="history"
|
|
64
|
+
<TabsPanel value="history">
|
|
60
65
|
<p className="text-sm text-muted-foreground">
|
|
61
66
|
Alterações recentes do workspace.
|
|
62
67
|
</p>
|
|
@@ -196,3 +201,6 @@ do gatilho.
|
|
|
196
201
|
| ------------ | -------- | ------ | ----------------------------------------------------------------------- |
|
|
197
202
|
| `value` | `string` | | Identificador do painel, igual ao `value` do `TabsListItem` que o abre. |
|
|
198
203
|
| `forceMount` | `true` | | Mantém o painel montado mesmo quando outra aba está ativa. |
|
|
204
|
+
|
|
205
|
+
Painéis com `forceMount` continuam montados quando inativos, mas ficam ocultos. Isso preserva
|
|
206
|
+
o estado de editores sem exibir simultaneamente o conteúdo de abas diferentes.
|
package/src/ui/docs/types.ts
CHANGED
package/src/ui/meta.ts
CHANGED
|
@@ -406,7 +406,7 @@ export const componentMeta = {
|
|
|
406
406
|
name: "page",
|
|
407
407
|
ancestry: "opus",
|
|
408
408
|
whenToUse:
|
|
409
|
-
"Estruture uma página com cabeçalho, estado e conteúdo na mesma anatomia. Page renderiza o `<main>` com
|
|
409
|
+
"Estruture uma página com cabeçalho, estado e conteúdo na mesma anatomia. Page renderiza o `<main>` com header e viewport em largura total e conteúdo centralizado de até 80rem; surfaceLayout escolhe sectioned (padrão) ou continuous, independente de layout flow/fill; PageHeader reúne navegação e ações da superfície; PageIntro abre PageBody com título e orientação. A composição compacta mantém o título no header, sem intro. PageShell pode fornecer navegação e ações conhecidas pela aplicação sem criar uma barra visual. Uma região interna pode fornecer o heading principal com `Surface level={1}`. PageActionsTarget fica restrito a workspaces imersivos. PageState substitui o header e o conteúdo durante carregamento, falha ou ausência, por isso informações indispensáveis entram no corpo, como Alert ou texto. Para uma falha parcial, mantenha o estado na seção com DataState; para uma região disponível para criação ou vínculo, use Empty.",
|
|
410
410
|
},
|
|
411
411
|
presentation: {
|
|
412
412
|
name: "presentation",
|
package/src/ui/react.tsx
CHANGED
|
@@ -88,9 +88,15 @@ export { Copyable } from "./components/primitives/copyable.tsx";
|
|
|
88
88
|
export type { CopyableProps } from "./components/primitives/copyable.tsx";
|
|
89
89
|
export {
|
|
90
90
|
IconPicker,
|
|
91
|
+
IconCatalogProvider,
|
|
92
|
+
iconPickerSearch,
|
|
91
93
|
iconPickerIcons,
|
|
92
94
|
} from "./components/primitives/icon-picker.tsx";
|
|
93
|
-
export type {
|
|
95
|
+
export type {
|
|
96
|
+
IconPickerProps,
|
|
97
|
+
IconCatalog,
|
|
98
|
+
IconCatalogEntry,
|
|
99
|
+
} from "./components/primitives/icon-picker.tsx";
|
|
94
100
|
|
|
95
101
|
export {
|
|
96
102
|
Command,
|
|
@@ -509,6 +515,8 @@ export {
|
|
|
509
515
|
PageShell,
|
|
510
516
|
Page,
|
|
511
517
|
PageHeader,
|
|
518
|
+
PageIntro,
|
|
519
|
+
PageIntroActions,
|
|
512
520
|
PageNavigation,
|
|
513
521
|
PageBack,
|
|
514
522
|
PageTitle,
|