create-fluxstack 1.0.13 → 1.0.15

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.
Files changed (214) hide show
  1. package/.env.example +29 -29
  2. package/app/client/README.md +69 -69
  3. package/app/client/index.html +14 -13
  4. package/app/client/src/App.tsx +157 -524
  5. package/app/client/src/components/ErrorBoundary.tsx +107 -0
  6. package/app/client/src/components/ErrorDisplay.css +365 -0
  7. package/app/client/src/components/ErrorDisplay.tsx +258 -0
  8. package/app/client/src/components/FluxStackConfig.tsx +1321 -0
  9. package/app/client/src/components/HybridLiveCounter.tsx +140 -0
  10. package/app/client/src/components/LiveClock.tsx +286 -0
  11. package/app/client/src/components/MainLayout.tsx +390 -0
  12. package/app/client/src/components/SidebarNavigation.tsx +391 -0
  13. package/app/client/src/components/StateDemo.tsx +178 -0
  14. package/app/client/src/components/SystemMonitor.tsx +1038 -0
  15. package/app/client/src/components/Teste.tsx +104 -0
  16. package/app/client/src/components/UserProfile.tsx +809 -0
  17. package/app/client/src/hooks/useAuth.ts +39 -0
  18. package/app/client/src/hooks/useNotifications.ts +56 -0
  19. package/app/client/src/lib/eden-api.ts +189 -53
  20. package/app/client/src/lib/errors.ts +340 -0
  21. package/app/client/src/lib/hooks/useErrorHandler.ts +258 -0
  22. package/app/client/src/lib/index.ts +45 -0
  23. package/app/client/src/main.tsx +3 -2
  24. package/app/client/src/pages/ApiDocs.tsx +182 -0
  25. package/app/client/src/pages/Demo.tsx +174 -0
  26. package/app/client/src/pages/HybridLive.tsx +263 -0
  27. package/app/client/src/pages/Overview.tsx +155 -0
  28. package/app/client/src/store/README.md +43 -0
  29. package/app/client/src/store/index.ts +16 -0
  30. package/app/client/src/store/slices/uiSlice.ts +151 -0
  31. package/app/client/src/store/slices/userSlice.ts +161 -0
  32. package/app/client/src/test/README.md +257 -0
  33. package/app/client/src/test/setup.ts +70 -0
  34. package/app/client/src/test/types.ts +12 -0
  35. package/app/client/src/vite-env.d.ts +1 -1
  36. package/app/client/tsconfig.app.json +44 -43
  37. package/app/client/tsconfig.json +7 -7
  38. package/app/client/tsconfig.node.json +25 -25
  39. package/app/client/zustand-setup.md +65 -0
  40. package/app/server/controllers/users.controller.ts +68 -68
  41. package/app/server/index.ts +9 -1
  42. package/app/server/live/CounterComponent.ts +191 -0
  43. package/app/server/live/FluxStackConfig.ts +529 -0
  44. package/app/server/live/LiveClockComponent.ts +214 -0
  45. package/app/server/live/SidebarNavigation.ts +156 -0
  46. package/app/server/live/SystemMonitor.ts +594 -0
  47. package/app/server/live/SystemMonitorIntegration.ts +151 -0
  48. package/app/server/live/TesteComponent.ts +87 -0
  49. package/app/server/live/UserProfileComponent.ts +135 -0
  50. package/app/server/live/register-components.ts +28 -0
  51. package/app/server/middleware/auth.ts +136 -0
  52. package/app/server/middleware/errorHandling.ts +250 -0
  53. package/app/server/middleware/index.ts +10 -0
  54. package/app/server/middleware/rateLimit.ts +193 -0
  55. package/app/server/middleware/requestLogging.ts +215 -0
  56. package/app/server/middleware/validation.ts +270 -0
  57. package/app/server/routes/index.ts +14 -2
  58. package/app/server/routes/upload.ts +92 -0
  59. package/app/server/routes/users.routes.ts +2 -9
  60. package/app/server/services/NotificationService.ts +302 -0
  61. package/app/server/services/UserService.ts +222 -0
  62. package/app/server/services/index.ts +46 -0
  63. package/core/cli/commands/plugin-deps.ts +263 -0
  64. package/core/cli/generators/README.md +339 -0
  65. package/core/cli/generators/component.ts +770 -0
  66. package/core/cli/generators/controller.ts +299 -0
  67. package/core/cli/generators/index.ts +144 -0
  68. package/core/cli/generators/interactive.ts +228 -0
  69. package/core/cli/generators/prompts.ts +83 -0
  70. package/core/cli/generators/route.ts +513 -0
  71. package/core/cli/generators/service.ts +465 -0
  72. package/core/cli/generators/template-engine.ts +154 -0
  73. package/core/cli/generators/types.ts +71 -0
  74. package/core/cli/generators/utils.ts +192 -0
  75. package/core/cli/index.ts +69 -0
  76. package/core/cli/plugin-discovery.ts +16 -85
  77. package/core/client/fluxstack.ts +17 -0
  78. package/core/client/hooks/index.ts +7 -0
  79. package/core/client/hooks/state-validator.ts +130 -0
  80. package/core/client/hooks/useAuth.ts +49 -0
  81. package/core/client/hooks/useChunkedUpload.ts +258 -0
  82. package/core/client/hooks/useHybridLiveComponent.ts +967 -0
  83. package/core/client/hooks/useWebSocket.ts +373 -0
  84. package/core/client/index.ts +47 -0
  85. package/core/client/state/createStore.ts +193 -0
  86. package/core/client/state/index.ts +15 -0
  87. package/core/config/env-dynamic.ts +1 -1
  88. package/core/config/env.ts +2 -1
  89. package/core/config/runtime-config.ts +3 -3
  90. package/core/config/schema.ts +84 -49
  91. package/core/framework/server.ts +30 -0
  92. package/core/index.ts +25 -0
  93. package/core/live/ComponentRegistry.ts +399 -0
  94. package/core/live/types.ts +164 -0
  95. package/core/plugins/built-in/live-components/commands/create-live-component.ts +1201 -0
  96. package/core/plugins/built-in/live-components/index.ts +27 -0
  97. package/core/plugins/built-in/logger/index.ts +1 -1
  98. package/core/plugins/built-in/monitoring/index.ts +1 -1
  99. package/core/plugins/built-in/static/index.ts +1 -1
  100. package/core/plugins/built-in/swagger/index.ts +1 -1
  101. package/core/plugins/built-in/vite/index.ts +1 -1
  102. package/core/plugins/dependency-manager.ts +384 -0
  103. package/core/plugins/index.ts +5 -1
  104. package/core/plugins/manager.ts +7 -3
  105. package/core/plugins/registry.ts +88 -10
  106. package/core/plugins/types.ts +11 -11
  107. package/core/server/framework.ts +43 -0
  108. package/core/server/index.ts +11 -1
  109. package/core/server/live/ComponentRegistry.ts +1017 -0
  110. package/core/server/live/FileUploadManager.ts +272 -0
  111. package/core/server/live/LiveComponentPerformanceMonitor.ts +930 -0
  112. package/core/server/live/SingleConnectionManager.ts +0 -0
  113. package/core/server/live/StateSignature.ts +644 -0
  114. package/core/server/live/WebSocketConnectionManager.ts +688 -0
  115. package/core/server/live/websocket-plugin.ts +435 -0
  116. package/core/server/middleware/errorHandling.ts +141 -0
  117. package/core/server/middleware/index.ts +16 -0
  118. package/core/server/plugins/static-files-plugin.ts +232 -0
  119. package/core/server/services/BaseService.ts +95 -0
  120. package/core/server/services/ServiceContainer.ts +144 -0
  121. package/core/server/services/index.ts +9 -0
  122. package/core/templates/create-project.ts +196 -33
  123. package/core/testing/index.ts +10 -0
  124. package/core/testing/setup.ts +74 -0
  125. package/core/types/build.ts +38 -14
  126. package/core/types/types.ts +319 -0
  127. package/core/utils/env-runtime.ts +7 -0
  128. package/core/utils/errors/handlers.ts +264 -39
  129. package/core/utils/errors/index.ts +528 -18
  130. package/core/utils/errors/middleware.ts +114 -0
  131. package/core/utils/logger/formatters.ts +222 -0
  132. package/core/utils/logger/index.ts +167 -48
  133. package/core/utils/logger/middleware.ts +253 -0
  134. package/core/utils/logger/performance.ts +384 -0
  135. package/core/utils/logger/transports.ts +365 -0
  136. package/create-fluxstack.ts +296 -296
  137. package/fluxstack.config.ts +17 -1
  138. package/package-template.json +66 -66
  139. package/package.json +31 -6
  140. package/public/README.md +16 -0
  141. package/vite.config.ts +29 -14
  142. package/.claude/settings.local.json +0 -74
  143. package/.github/workflows/ci-build-tests.yml +0 -480
  144. package/.github/workflows/dependency-management.yml +0 -324
  145. package/.github/workflows/release-validation.yml +0 -355
  146. package/.kiro/specs/fluxstack-architecture-optimization/design.md +0 -700
  147. package/.kiro/specs/fluxstack-architecture-optimization/requirements.md +0 -127
  148. package/.kiro/specs/fluxstack-architecture-optimization/tasks.md +0 -330
  149. package/CLAUDE.md +0 -200
  150. package/Dockerfile +0 -58
  151. package/Dockerfile.backend +0 -52
  152. package/Dockerfile.frontend +0 -54
  153. package/README-Docker.md +0 -85
  154. package/ai-context/00-QUICK-START.md +0 -86
  155. package/ai-context/README.md +0 -88
  156. package/ai-context/development/eden-treaty-guide.md +0 -362
  157. package/ai-context/development/patterns.md +0 -382
  158. package/ai-context/development/plugins-guide.md +0 -572
  159. package/ai-context/examples/crud-complete.md +0 -626
  160. package/ai-context/project/architecture.md +0 -399
  161. package/ai-context/project/overview.md +0 -213
  162. package/ai-context/recent-changes/eden-treaty-refactor.md +0 -281
  163. package/ai-context/recent-changes/type-inference-fix.md +0 -223
  164. package/ai-context/reference/environment-vars.md +0 -384
  165. package/ai-context/reference/troubleshooting.md +0 -407
  166. package/app/client/src/components/TestPage.tsx +0 -453
  167. package/bun.lock +0 -1063
  168. package/bunfig.toml +0 -16
  169. package/core/__tests__/integration.test.ts +0 -227
  170. package/core/build/index.ts +0 -186
  171. package/core/config/__tests__/config-loader.test.ts +0 -554
  172. package/core/config/__tests__/config-merger.test.ts +0 -657
  173. package/core/config/__tests__/env-converter.test.ts +0 -372
  174. package/core/config/__tests__/env-processor.test.ts +0 -431
  175. package/core/config/__tests__/env.test.ts +0 -452
  176. package/core/config/__tests__/integration.test.ts +0 -418
  177. package/core/config/__tests__/loader.test.ts +0 -331
  178. package/core/config/__tests__/schema.test.ts +0 -129
  179. package/core/config/__tests__/validator.test.ts +0 -318
  180. package/core/framework/__tests__/server.test.ts +0 -233
  181. package/core/plugins/__tests__/built-in.test.ts.disabled +0 -366
  182. package/core/plugins/__tests__/manager.test.ts +0 -398
  183. package/core/plugins/__tests__/monitoring.test.ts +0 -401
  184. package/core/plugins/__tests__/registry.test.ts +0 -335
  185. package/core/utils/__tests__/errors.test.ts +0 -139
  186. package/core/utils/__tests__/helpers.test.ts +0 -297
  187. package/core/utils/__tests__/logger.test.ts +0 -141
  188. package/create-test-app.ts +0 -156
  189. package/docker-compose.microservices.yml +0 -75
  190. package/docker-compose.simple.yml +0 -57
  191. package/docker-compose.yml +0 -71
  192. package/eslint.config.js +0 -23
  193. package/flux-cli.ts +0 -214
  194. package/nginx-lb.conf +0 -37
  195. package/publish.sh +0 -63
  196. package/run-clean.ts +0 -26
  197. package/run-env-tests.ts +0 -313
  198. package/tailwind.config.js +0 -34
  199. package/tests/__mocks__/api.ts +0 -56
  200. package/tests/fixtures/users.ts +0 -69
  201. package/tests/integration/api/users.routes.test.ts +0 -221
  202. package/tests/setup.ts +0 -29
  203. package/tests/unit/app/client/App-simple.test.tsx +0 -56
  204. package/tests/unit/app/client/App.test.tsx.skip +0 -237
  205. package/tests/unit/app/client/eden-api.test.ts +0 -186
  206. package/tests/unit/app/client/simple.test.tsx +0 -23
  207. package/tests/unit/app/controllers/users.controller.test.ts +0 -150
  208. package/tests/unit/core/create-project.test.ts.skip +0 -95
  209. package/tests/unit/core/framework.test.ts +0 -144
  210. package/tests/unit/core/plugins/logger.test.ts.skip +0 -268
  211. package/tests/unit/core/plugins/vite.test.ts.disabled +0 -188
  212. package/tests/utils/test-helpers.ts +0 -61
  213. package/vitest.config.ts +0 -50
  214. package/workspace.json +0 -6
@@ -0,0 +1,390 @@
1
+ // 🔥 Main Layout with Sidebar Navigation
2
+
3
+ import React, { useState } from 'react'
4
+ import { SidebarNavigation } from './SidebarNavigation'
5
+ import { UserProfile } from './UserProfile'
6
+ import { SystemMonitor } from './SystemMonitor'
7
+ import { FluxStackConfig } from './FluxStackConfig'
8
+ import { FaHome, FaCog, FaFolder, FaChartBar, FaRocket, FaServer } from 'react-icons/fa'
9
+ import { Teste } from './Teste'
10
+
11
+ // Temporary placeholder components for other pages
12
+ function Dashboard() {
13
+ return (
14
+ <div style={{
15
+ padding: '2rem',
16
+ maxWidth: '1200px',
17
+ margin: '0 auto'
18
+ }}>
19
+ <div style={{
20
+ background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
21
+ borderRadius: '20px',
22
+ padding: '3rem',
23
+ color: 'white',
24
+ textAlign: 'center',
25
+ marginBottom: '2rem'
26
+ }}>
27
+ <FaRocket size={48} style={{ marginBottom: '1rem' }} />
28
+ <h1 style={{ fontSize: '2.5rem', marginBottom: '1rem' }}>
29
+ 🔥 FluxStack Dashboard
30
+ </h1>
31
+ <p style={{ fontSize: '1.2rem', opacity: 0.9 }}>
32
+ Bem-vindo ao seu painel de controle interativo!
33
+ </p>
34
+ </div>
35
+
36
+ <div style={{
37
+ display: 'grid',
38
+ gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
39
+ gap: '2rem',
40
+ marginTop: '2rem'
41
+ }}>
42
+ {/* Stats Cards */}
43
+ {[
44
+ { title: 'Live Components', value: '5', icon: FaRocket, color: '#3b82f6' },
45
+ { title: 'WebSocket Conexões', value: '12', icon: FaHome, color: '#10b981' },
46
+ { title: 'Uploads Ativos', value: '3', icon: FaFolder, color: '#f59e0b' },
47
+ { title: 'Usuários Online', value: '8', icon: FaChartBar, color: '#ef4444' }
48
+ ].map((stat, index) => {
49
+ const Icon = stat.icon
50
+ return (
51
+ <div key={index} style={{
52
+ backgroundColor: 'white',
53
+ padding: '2rem',
54
+ borderRadius: '16px',
55
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
56
+ border: '1px solid #e5e7eb'
57
+ }}>
58
+ <div style={{
59
+ display: 'flex',
60
+ alignItems: 'center',
61
+ gap: '1rem',
62
+ marginBottom: '1rem'
63
+ }}>
64
+ <div style={{
65
+ backgroundColor: stat.color,
66
+ padding: '0.75rem',
67
+ borderRadius: '12px',
68
+ color: 'white'
69
+ }}>
70
+ <Icon size={24} />
71
+ </div>
72
+ <div>
73
+ <h3 style={{
74
+ margin: 0,
75
+ fontSize: '1.1rem',
76
+ color: '#374151'
77
+ }}>
78
+ {stat.title}
79
+ </h3>
80
+ <p style={{
81
+ margin: 0,
82
+ fontSize: '2rem',
83
+ fontWeight: 'bold',
84
+ color: stat.color
85
+ }}>
86
+ {stat.value}
87
+ </p>
88
+ </div>
89
+ </div>
90
+ </div>
91
+ )
92
+ })}
93
+ </div>
94
+
95
+ <div style={{
96
+ backgroundColor: 'white',
97
+ padding: '2rem',
98
+ borderRadius: '16px',
99
+ marginTop: '2rem',
100
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)'
101
+ }}>
102
+ <h2 style={{ color: '#374151', marginBottom: '1rem' }}>
103
+ 📊 Sistema de Live Components
104
+ </h2>
105
+ <p style={{ color: '#6b7280', lineHeight: 1.6 }}>
106
+ Este dashboard demonstra o poder dos Live Components do FluxStack.
107
+ Navegue pelo menu lateral para explorar diferentes seções como
108
+ Perfil de Usuário, Configurações, Gerenciamento de Arquivos e Analytics.
109
+ Tudo funcionando com WebSockets em tempo real e estado persistido!
110
+ </p>
111
+
112
+ <div style={{
113
+ marginTop: '1.5rem',
114
+ padding: '1rem',
115
+ backgroundColor: '#f0f9ff',
116
+ borderRadius: '8px',
117
+ border: '1px solid #0ea5e9'
118
+ }}>
119
+ <h4 style={{ color: '#0369a1', margin: '0 0 0.5rem 0' }}>
120
+ 🎯 Funcionalidades Ativas:
121
+ </h4>
122
+ <ul style={{ color: '#0369a1', margin: 0, paddingLeft: '1.5rem' }}>
123
+ <li>✅ Reconexão automática com re-hydration</li>
124
+ <li>✅ Estado criptograficamente assinado</li>
125
+ <li>✅ Interface sem piscadas (optimized loading)</li>
126
+ <li>✅ Navegação via Live Components</li>
127
+ <li>✅ Upload de arquivos por chunks via WebSocket</li>
128
+ </ul>
129
+ </div>
130
+ </div>
131
+ <Teste></Teste>
132
+ </div>
133
+ )
134
+ }
135
+
136
+ function Settings() {
137
+ return (
138
+ <div style={{
139
+ padding: '2rem',
140
+ maxWidth: '800px',
141
+ margin: '0 auto'
142
+ }}>
143
+ <div style={{
144
+ backgroundColor: 'white',
145
+ padding: '2rem',
146
+ borderRadius: '16px',
147
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)'
148
+ }}>
149
+ <div style={{
150
+ display: 'flex',
151
+ alignItems: 'center',
152
+ gap: '1rem',
153
+ marginBottom: '2rem'
154
+ }}>
155
+ <FaCog size={32} style={{ color: '#6b7280' }} />
156
+ <h1 style={{ color: '#374151', margin: 0 }}>Configurações</h1>
157
+ </div>
158
+
159
+ <p style={{ color: '#6b7280', marginBottom: '2rem' }}>
160
+ Painel de configurações do FluxStack. Aqui você pode ajustar
161
+ preferências do sistema, configurar integrações e gerenciar
162
+ suas configurações de usuário.
163
+ </p>
164
+
165
+ <div style={{
166
+ padding: '1.5rem',
167
+ backgroundColor: '#fef3c7',
168
+ borderRadius: '8px',
169
+ border: '1px solid #f59e0b'
170
+ }}>
171
+ <h3 style={{ color: '#92400e', margin: '0 0 1rem 0' }}>
172
+ 🚧 Em Desenvolvimento
173
+ </h3>
174
+ <p style={{ color: '#92400e', margin: 0 }}>
175
+ Esta seção será expandida com configurações avançadas,
176
+ integrações de API, configurações de tema personalizadas
177
+ e muito mais!
178
+ </p>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ )
183
+ }
184
+
185
+ function Files() {
186
+ return (
187
+ <div style={{
188
+ padding: '2rem',
189
+ maxWidth: '1000px',
190
+ margin: '0 auto'
191
+ }}>
192
+ <div style={{
193
+ backgroundColor: 'white',
194
+ padding: '2rem',
195
+ borderRadius: '16px',
196
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)'
197
+ }}>
198
+ <div style={{
199
+ display: 'flex',
200
+ alignItems: 'center',
201
+ gap: '1rem',
202
+ marginBottom: '2rem'
203
+ }}>
204
+ <FaFolder size={32} style={{ color: '#6b7280' }} />
205
+ <h1 style={{ color: '#374151', margin: 0 }}>Gerenciamento de Arquivos</h1>
206
+ </div>
207
+
208
+ <p style={{ color: '#6b7280', marginBottom: '2rem' }}>
209
+ Sistema avançado de upload e gerenciamento de arquivos via WebSocket.
210
+ Suporte a upload por chunks, progress em tempo real e armazenamento seguro.
211
+ </p>
212
+
213
+ <div style={{
214
+ padding: '1.5rem',
215
+ backgroundColor: '#f0fdf4',
216
+ borderRadius: '8px',
217
+ border: '1px solid #10b981',
218
+ marginBottom: '2rem'
219
+ }}>
220
+ <h3 style={{ color: '#047857', margin: '0 0 1rem 0' }}>
221
+ ✅ Funcionalidades Implementadas
222
+ </h3>
223
+ <ul style={{ color: '#047857', margin: 0, paddingLeft: '1.5rem' }}>
224
+ <li>Upload via WebSocket com chunks</li>
225
+ <li>Progress tracking em tempo real</li>
226
+ <li>Validação de tipos de arquivo</li>
227
+ <li>Armazenamento organizado por categorias</li>
228
+ <li>Preview de imagens integrado</li>
229
+ </ul>
230
+ </div>
231
+
232
+ <div style={{
233
+ padding: '1.5rem',
234
+ backgroundColor: '#fef3c7',
235
+ borderRadius: '8px',
236
+ border: '1px solid #f59e0b'
237
+ }}>
238
+ <h3 style={{ color: '#92400e', margin: '0 0 1rem 0' }}>
239
+ 🔄 Próximas Features
240
+ </h3>
241
+ <ul style={{ color: '#92400e', margin: 0, paddingLeft: '1.5rem' }}>
242
+ <li>Galeria de arquivos com busca</li>
243
+ <li>Compartilhamento de arquivos</li>
244
+ <li>Versionamento de documentos</li>
245
+ <li>Integração com storage cloud</li>
246
+ </ul>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ )
251
+ }
252
+
253
+ function Analytics() {
254
+ return (
255
+ <div style={{
256
+ padding: '2rem',
257
+ maxWidth: '1200px',
258
+ margin: '0 auto'
259
+ }}>
260
+ <div style={{
261
+ backgroundColor: 'white',
262
+ padding: '2rem',
263
+ borderRadius: '16px',
264
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)'
265
+ }}>
266
+ <div style={{
267
+ display: 'flex',
268
+ alignItems: 'center',
269
+ gap: '1rem',
270
+ marginBottom: '2rem'
271
+ }}>
272
+ <FaServer size={32} style={{ color: '#6b7280' }} />
273
+ <h1 style={{ color: '#374151', margin: 0 }}>Sistema de Monitoramento</h1>
274
+ </div>
275
+
276
+ <p style={{ color: '#6b7280', marginBottom: '2rem' }}>
277
+ Dashboard completo de monitoramento dos Live Components em tempo real.
278
+ Métricas de performance, conexões WebSocket, uso de recursos e atividade do sistema.
279
+ </p>
280
+
281
+ <div style={{
282
+ display: 'grid',
283
+ gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))',
284
+ gap: '1.5rem',
285
+ marginBottom: '2rem'
286
+ }}>
287
+ {[
288
+ { title: 'WebSocket Connections', value: '127', trend: '+12%' },
289
+ { title: 'Live Components', value: '34', trend: '+8%' },
290
+ { title: 'Messages/sec', value: '2.3k', trend: '+15%' },
291
+ { title: 'Uptime', value: '99.8%', trend: '+0.1%' }
292
+ ].map((metric, index) => (
293
+ <div key={index} style={{
294
+ padding: '1.5rem',
295
+ backgroundColor: '#f8fafc',
296
+ borderRadius: '12px',
297
+ border: '1px solid #e2e8f0'
298
+ }}>
299
+ <h3 style={{
300
+ color: '#475569',
301
+ fontSize: '0.9rem',
302
+ margin: '0 0 0.5rem 0',
303
+ textTransform: 'uppercase',
304
+ letterSpacing: '0.05em'
305
+ }}>
306
+ {metric.title}
307
+ </h3>
308
+ <div style={{ display: 'flex', alignItems: 'center', gap: '1rem' }}>
309
+ <span style={{
310
+ fontSize: '2rem',
311
+ fontWeight: 'bold',
312
+ color: '#1e293b'
313
+ }}>
314
+ {metric.value}
315
+ </span>
316
+ <span style={{
317
+ fontSize: '0.9rem',
318
+ color: '#10b981',
319
+ backgroundColor: '#f0fdf4',
320
+ padding: '0.25rem 0.5rem',
321
+ borderRadius: '4px'
322
+ }}>
323
+ {metric.trend}
324
+ </span>
325
+ </div>
326
+ </div>
327
+ ))}
328
+ </div>
329
+
330
+ <div style={{
331
+ padding: '1.5rem',
332
+ backgroundColor: '#eff6ff',
333
+ borderRadius: '8px',
334
+ border: '1px solid #3b82f6'
335
+ }}>
336
+ <h3 style={{ color: '#1d4ed8', margin: '0 0 1rem 0' }}>
337
+ 📈 Métricas em Tempo Real
338
+ </h3>
339
+ <p style={{ color: '#1d4ed8', margin: 0 }}>
340
+ Todas as métricas são coletadas e atualizadas via Live Components,
341
+ proporcionando visibilidade instantânea do sistema em produção.
342
+ </p>
343
+ </div>
344
+ </div>
345
+ </div>
346
+ )
347
+ }
348
+
349
+ export function MainLayout() {
350
+ const [currentPage, setCurrentPage] = useState('dashboard')
351
+
352
+ const renderContent = () => {
353
+ switch (currentPage) {
354
+ case 'dashboard':
355
+ return <Dashboard />
356
+ case 'profile':
357
+ return <UserProfile />
358
+ case 'settings':
359
+ return <Settings />
360
+ case 'files':
361
+ return <Files />
362
+ case 'analytics':
363
+ return <SystemMonitor />
364
+ case 'config':
365
+ return <FluxStackConfig />
366
+ default:
367
+ return <Dashboard />
368
+ }
369
+ }
370
+
371
+ return (
372
+ <div style={{
373
+ display: 'flex',
374
+ height: '100vh',
375
+ backgroundColor: '#f8fafc'
376
+ }}>
377
+ {/* Sidebar */}
378
+ <SidebarNavigation onPageChange={setCurrentPage} />
379
+
380
+ {/* Main Content */}
381
+ <main style={{
382
+ flex: 1,
383
+ overflow: 'auto',
384
+ height: '100vh'
385
+ }}>
386
+ {renderContent()}
387
+ </main>
388
+ </div>
389
+ )
390
+ }