@praxisui/page-builder 1.0.0-beta.5 → 1.0.0-beta.52

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/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @praxisui/page-builder
2
2
 
3
+ ## 🔰 Exemplos / Quickstart
4
+
5
+ Para ver esta biblioteca em funcionamento em uma aplicação completa, utilize o projeto de exemplo (Quickstart):
6
+
7
+ - Repositório: https://github.com/codexrodrigues/praxis-ui-quickstart
8
+ - O Quickstart demonstra a integração das bibliotecas `@praxisui/*` em um app Angular, incluindo instalação, configuração e uso em telas reais.
9
+
3
10
  Ferramentas de edição para páginas dinâmicas baseadas em Gridster. Inclui o conjunto de editores (Builder, Graph), paleta de componentes e toolbars para montar e inspecionar conexões entre widgets definidos por metadata (`GridPageDefinition` do `@praxisui/core`). Integra com o `@praxisui/settings-panel` para abrir editores em painel lateral e oferece um modo de diálogo fullscreen para edição visual.
4
11
 
5
12
  ## Instalação
@@ -24,12 +31,82 @@ Este pacote expõe os editores e utilitários usados pelo componente de página
24
31
  - `ConnectionBuilderComponent` — lista e edita conexões (from.output → to.input) com filtros, agrupamentos e validação.
25
32
  - `ConnectionGraph` (uso integrado) — visualiza nós/portas/arestas; suporta arrastar para criar conexões e abrir o Builder.
26
33
  - `ComponentPaletteDialog` — paleta para adicionar widgets à página.
27
- - `FloatingToolbar` e `TileToolbar` — ações rápidas (adicionar, conexões, configurações, salvar, pré‑visualizar).
34
+ - `FloatingToolbar` e `TileToolbar` — ações rápidas (adicionar, conexões, configurar widget, configurar card, salvar, pré‑visualizar).
28
35
 
29
36
  Os editores podem ser abertos:
30
37
  - Via `SettingsPanelService` (painel lateral) — recomendado para fluxo dentro do app.
31
38
  - Como diálogo fullscreen (Material Dialog) para uma experiência imersiva de edição.
32
39
 
40
+ ## AI Capabilities Registration
41
+
42
+ Para que o assistente de IA consiga configurar os inputs dos widgets, registre os catálogos de capacidades no bootstrap da aplicação.
43
+
44
+ Opção recomendada (registro automático via provider + InjectionToken):
45
+
46
+ ```ts
47
+ import { bootstrapApplication } from '@angular/platform-browser';
48
+ import { PAGE_BUILDER_WIDGET_AI_CATALOGS, providePageBuilderWidgetAiCatalogs } from '@praxisui/page-builder';
49
+ import { TABLE_AI_CAPABILITIES } from '@praxisui/table';
50
+ import { CRUD_AI_CAPABILITIES } from '@praxisui/crud';
51
+ import { AppComponent } from './app/app.component';
52
+
53
+ bootstrapApplication(AppComponent, {
54
+ providers: [
55
+ {
56
+ provide: PAGE_BUILDER_WIDGET_AI_CATALOGS,
57
+ useValue: {
58
+ 'praxis-table': TABLE_AI_CAPABILITIES,
59
+ 'praxis-crud': CRUD_AI_CAPABILITIES,
60
+ },
61
+ },
62
+ providePageBuilderWidgetAiCatalogs(),
63
+ ],
64
+ });
65
+ ```
66
+
67
+ Registro manual (útil para apps que precisam customizar o mapa):
68
+
69
+ ```ts
70
+ import { registerWidgetAiCatalogs } from '@praxisui/page-builder';
71
+ import { TABLE_AI_CAPABILITIES } from '@praxisui/table';
72
+ import { CRUD_AI_CAPABILITIES } from '@praxisui/crud';
73
+
74
+ registerWidgetAiCatalogs({
75
+ 'praxis-table': TABLE_AI_CAPABILITIES,
76
+ 'praxis-crud': CRUD_AI_CAPABILITIES,
77
+ });
78
+ ```
79
+
80
+ Registro via token:
81
+ - Use o InjectionToken `PAGE_BUILDER_WIDGET_AI_CATALOGS` para fornecer o mapa no host.
82
+
83
+ ## Settings Panel Bridge
84
+
85
+ Para abrir "Configurações da Página" e editores no painel lateral, o host deve
86
+ registrar o bridge do Settings Panel:
87
+
88
+ ```ts
89
+ import { SETTINGS_PANEL_BRIDGE } from '@praxisui/core';
90
+ import { SettingsPanelService } from '@praxisui/settings-panel';
91
+
92
+ providers: [
93
+ {
94
+ provide: SETTINGS_PANEL_BRIDGE,
95
+ useExisting: SettingsPanelService,
96
+ },
97
+ ]
98
+ ```
99
+
100
+ Catálogos conhecidos (exports):
101
+ - `TABLE_AI_CAPABILITIES` — `@praxisui/table` (`praxis-table`)
102
+ - `CRUD_AI_CAPABILITIES` — `@praxisui/crud` (`praxis-crud`)
103
+ - `LIST_AI_CAPABILITIES` — `@praxisui/list` (`praxis-list`)
104
+ - `FORM_AI_CAPABILITIES` — `@praxisui/dynamic-form` (`praxis-dynamic-form`)
105
+ - `FILES_UPLOAD_AI_CAPABILITIES` — `@praxisui/files-upload` (`praxis-files-upload`)
106
+ - `STEPPER_AI_CAPABILITIES` — `@praxisui/stepper` (`praxis-stepper`)
107
+ - `TABS_AI_CAPABILITIES` — `@praxisui/tabs` (`praxis-tabs`)
108
+ - `EXPANSION_AI_CAPABILITIES` — `@praxisui/expansion` (`praxis-expansion`)
109
+
33
110
  ## Quick Start (usando a página Gridster)
34
111
 
35
112
  O componente de página dinâmica (parte do workspace) expõe métodos utilitários para abrir editores. Exemplo de uso no template:
@@ -50,6 +127,96 @@ O componente de página dinâmica (parte do workspace) expõe métodos utilitár
50
127
 
51
128
  `page` é um `GridPageDefinition` (do `@praxisui/core`) contendo `widgets` e opcionalmente `connections`.
52
129
 
130
+ ## Widget Shell (Dashboard Cards)
131
+
132
+ Cada widget pode declarar um `shell` para renderizar um card padronizado com cabeçalho rico,
133
+ ações de contexto e controles de janela (expandir/recolher). Exemplo:
134
+
135
+ ```json
136
+ {
137
+ "widgets": [
138
+ {
139
+ "key": "dados-cadastrais",
140
+ "definition": { "id": "praxis-list", "inputs": { "listId": "dados", "config": {} } },
141
+ "layout": { "col": 1, "row": 1, "colSpan": 6, "rowSpan": 4 },
142
+ "shell": {
143
+ "kind": "dashboard-card",
144
+ "icon": "badge",
145
+ "title": "Dados Cadastrais",
146
+ "subtitle": "Servidor: Jéssica Techne",
147
+ "actions": [
148
+ { "id": "editar", "label": "Editar", "icon": "edit", "variant": "outlined", "emit": "editar" },
149
+ { "id": "imprimir", "label": "Imprimir", "icon": "print", "variant": "text", "emit": "imprimir" }
150
+ ],
151
+ "windowActions": { "collapsible": true, "expandable": true },
152
+ "appearance": {
153
+ "card": { "background": "#0b1220", "borderColor": "rgba(255,255,255,0.12)", "borderRadius": "16px" },
154
+ "header": { "titleColor": "#e6edf3", "subtitleColor": "#9fb0c4", "iconColor": "#8ab4ff" },
155
+ "typography": { "titleSize": "14px", "titleWeight": "600", "subtitleSize": "12px" }
156
+ }
157
+ }
158
+ }
159
+ ]
160
+ }
161
+ ```
162
+
163
+ Quando uma ação é clicada, o shell:
164
+ - dispara um evento para o page-builder (`emit`, ou `shell:<id>` por padrão) para uso em `connections`;
165
+ - tenta despachar a ação para o componente interno via método `handleShellAction(action)`.
166
+
167
+ ### Presets visuais (global)
168
+
169
+ Você pode definir presets globais na página e escolher um preset padrão para todos os cards:
170
+
171
+ ```json
172
+ {
173
+ "context": {
174
+ "ui": {
175
+ "shell": {
176
+ "preset": "dark-glass",
177
+ "presets": {
178
+ "dark-glass": {
179
+ "card": { "background": "#0b1220", "borderColor": "rgba(255,255,255,0.12)", "borderRadius": "16px" }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ O widget pode sobrescrever:
189
+
190
+ ```json
191
+ {
192
+ "shell": {
193
+ "preset": "light-neutral",
194
+ "appearance": { "header": { "titleColor": "#1f2937" } }
195
+ }
196
+ }
197
+ ```
198
+
199
+ ## Editor do Card (Shell)
200
+
201
+ O botão "Configurar card" na toolbar do tile abre o editor de shell, permitindo editar
202
+ titulo, subtitulo, icone e acoes do cabecalho. O editor grava os metadados no campo
203
+ `shell` do widget.
204
+
205
+ Para abrir via API (Settings Panel):
206
+
207
+ ```ts
208
+ import { WidgetShellEditorComponent } from '@praxisui/page-builder';
209
+
210
+ this.settingsPanel.open({
211
+ id: 'grid-widget-shell:table',
212
+ title: 'Configurar Card',
213
+ content: {
214
+ component: WidgetShellEditorComponent,
215
+ inputs: { shell: widget.shell },
216
+ },
217
+ });
218
+ ```
219
+
53
220
  ## Abrindo editores via Settings Panel
54
221
 
55
222
  Para abrir o Builder/Graph em um painel lateral, injete o `SettingsPanelService` e forneça o conteúdo. O `ConnectionBuilderComponent` é exportado por este pacote.