vatts 2.2.6 → 2.3.0-canary

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 (63) hide show
  1. package/dist/builder.js +54 -17
  2. package/dist/frameworks/FrontCore.d.ts +34 -0
  3. package/dist/frameworks/FrontCore.js +128 -0
  4. package/dist/{vue → frameworks/builds}/vue.build.js +1 -1
  5. package/dist/frameworks/react/client.d.ts +8 -0
  6. package/dist/{react → frameworks/react}/client.js +14 -14
  7. package/dist/{react → frameworks/react/components}/Link.js +2 -2
  8. package/dist/frameworks/react/entry.client.d.ts +14 -0
  9. package/dist/frameworks/react/entry.client.js +211 -0
  10. package/dist/frameworks/react/react-elements.d.ts +10 -0
  11. package/dist/{react → frameworks/renderers}/renderer-react.d.ts +2 -2
  12. package/dist/{react → frameworks/renderers}/renderer-react.js +34 -67
  13. package/dist/{vue → frameworks/renderers}/renderer.vue.d.ts +2 -2
  14. package/dist/frameworks/renderers/renderer.vue.js +193 -0
  15. package/dist/frameworks/themes/BuildingPage.d.ts +1 -0
  16. package/dist/frameworks/themes/BuildingPage.js +312 -0
  17. package/dist/frameworks/themes/DefaultNotFound.d.ts +1 -0
  18. package/dist/frameworks/themes/DefaultNotFound.js +330 -0
  19. package/dist/frameworks/themes/ErrorModal.d.ts +1 -0
  20. package/dist/frameworks/themes/ErrorModal.js +345 -0
  21. package/dist/frameworks/themes/ServerError.d.ts +1 -0
  22. package/dist/frameworks/themes/ServerError.js +401 -0
  23. package/dist/frameworks/themes/VattsDevBadge.d.ts +1 -0
  24. package/dist/frameworks/themes/VattsDevBadge.js +232 -0
  25. package/dist/frameworks/vue/App.vue +149 -0
  26. package/dist/frameworks/vue/client.d.ts +9 -0
  27. package/dist/{vue → frameworks/vue}/client.js +13 -11
  28. package/dist/{vue → frameworks/vue/components}/Link.vue +1 -1
  29. package/dist/frameworks/vue/entry.client.js +75 -0
  30. package/dist/global/global.d.ts +1 -2
  31. package/dist/index.js +12 -1
  32. package/dist/renderer.js +2 -2
  33. package/package.json +10 -26
  34. package/dist/react/BuildingPage.d.ts +0 -2
  35. package/dist/react/BuildingPage.js +0 -270
  36. package/dist/react/DefaultNotFound.d.ts +0 -2
  37. package/dist/react/DefaultNotFound.js +0 -248
  38. package/dist/react/DevIndicator.d.ts +0 -5
  39. package/dist/react/DevIndicator.js +0 -203
  40. package/dist/react/ErrorModal.d.ts +0 -20
  41. package/dist/react/ErrorModal.js +0 -266
  42. package/dist/react/client.d.ts +0 -8
  43. package/dist/react/entry.client.d.ts +0 -6
  44. package/dist/react/entry.client.js +0 -325
  45. package/dist/react/server-error.d.ts +0 -8
  46. package/dist/react/server-error.js +0 -346
  47. package/dist/vue/App.vue +0 -199
  48. package/dist/vue/BuildingPage.vue +0 -281
  49. package/dist/vue/DefaultNotFound.vue +0 -329
  50. package/dist/vue/DevIndicator.vue +0 -226
  51. package/dist/vue/ErrorModal.vue +0 -317
  52. package/dist/vue/client.d.ts +0 -9
  53. package/dist/vue/entry.client.js +0 -110
  54. package/dist/vue/renderer.vue.js +0 -387
  55. package/dist/vue/server-error.vue +0 -351
  56. /package/dist/{react → frameworks/builds}/react.build.d.ts +0 -0
  57. /package/dist/{react → frameworks/builds}/react.build.js +0 -0
  58. /package/dist/{vue → frameworks/builds}/vue.build.d.ts +0 -0
  59. /package/dist/{react → frameworks/react/components}/Link.d.ts +0 -0
  60. /package/dist/{react → frameworks/react/components}/image/Image.d.ts +0 -0
  61. /package/dist/{react → frameworks/react/components}/image/Image.js +0 -0
  62. /package/dist/{vue → frameworks/vue/components}/image/Image.vue +0 -0
  63. /package/dist/{vue → frameworks/vue}/entry.client.d.ts +0 -0
@@ -1,351 +0,0 @@
1
- <template>
2
- <div class="ssr-error-wrapper">
3
- <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
4
-
5
- <div class="container">
6
- <div class="card">
7
- <div class="neon-line"></div>
8
-
9
- <div class="content">
10
- <h1>
11
- {{ titleComputed }}
12
- </h1>
13
-
14
- <div class="meta-info" v-if="requestUrl || hint">
15
- <div v-if="requestUrl" class="meta-row">
16
- <span class="meta-label">REQUEST URL:</span>
17
- <code class="meta-value">{{ requestUrl }}</code>
18
- </div>
19
- <div v-if="hint" class="meta-row">
20
- <span class="meta-label">HINT:</span>
21
- <span class="meta-value accent">{{ hint }}</span>
22
- </div>
23
- </div>
24
-
25
- <div class="terminal-box">
26
- <div class="terminal-header">
27
- <div class="dots">
28
- <div class="dot red"></div>
29
- <div class="dot yellow"></div>
30
- <div class="dot green"></div>
31
- </div>
32
- <span class="terminal-title">SSR Exception Log</span>
33
- </div>
34
-
35
- <div class="terminal-body custom-scroll">
36
- <div class="log-entry error">
37
- <span class="arrow">></span> {{ message }}
38
- </div>
39
-
40
- <template v-if="stack">
41
- <div class="separator"></div>
42
- <div class="stack-trace">
43
- {{ stack }}
44
- </div>
45
- </template>
46
- </div>
47
- </div>
48
- </div>
49
-
50
- <div class="card-footer">
51
- <div class="status-error">
52
- <div class="status-dot"></div>
53
- <span>Render Failed</span>
54
- </div>
55
- </div>
56
- </div>
57
-
58
- </div>
59
- </div>
60
- </template>
61
-
62
- <script setup lang="ts">
63
- import { computed } from 'vue';
64
-
65
- const props = defineProps<{
66
- title?: string;
67
- error?: unknown;
68
- hint?: string;
69
- requestUrl?: string;
70
- }>();
71
-
72
- function formatUnknownError(error: unknown): { message: string; stack?: string } {
73
- if (!error) return { message: 'Erro desconhecido no SSR.' };
74
-
75
- if (error instanceof Error) {
76
- return { message: error.message || String(error), stack: error.stack };
77
- }
78
-
79
- if (typeof error === 'string') {
80
- return { message: error };
81
- }
82
-
83
- try {
84
- return { message: JSON.stringify(error, null, 2) };
85
- } catch {
86
- return { message: String(error) };
87
- }
88
- }
89
-
90
- const formatted = computed(() => formatUnknownError(props.error));
91
- const titleComputed = computed(() => props.title || 'SSR Error');
92
- const message = computed(() => formatted.value.message);
93
- const stack = computed(() => formatted.value.stack);
94
- const hint = computed(() => props.hint);
95
- const requestUrl = computed(() => props.requestUrl);
96
- </script>
97
-
98
- <style scoped>
99
- .ssr-error-wrapper {
100
- /* Reset e Variáveis baseadas no Vatts.js Theme */
101
- --vue-green: #42b883;
102
- --vue-dark: #35495e;
103
- --bg-solid: #000000;
104
- --card-bg: #0a0a0a;
105
- --text-main: #ffffff;
106
- --text-muted: #a7c4bc;
107
- --error-red: #ff5f56;
108
-
109
- font-family: 'Inter', system-ui, sans-serif;
110
- position: fixed;
111
- top: 0;
112
- left: 0;
113
- width: 100vw;
114
- height: 100vh;
115
- background-color: var(--bg-solid);
116
- color: var(--text-main);
117
- overflow: hidden;
118
- z-index: 9999;
119
- box-sizing: border-box;
120
- }
121
-
122
- .container {
123
- display: flex;
124
- flex-direction: column;
125
- justify-content: center;
126
- align-items: center;
127
- width: 100%;
128
- height: 100%;
129
- padding: 20px;
130
- }
131
-
132
- .card {
133
- width: 100%;
134
- max-width: 900px; /* Mais largo para caber stack trace */
135
- max-height: 90vh;
136
- display: flex;
137
- flex-direction: column;
138
- background: var(--card-bg);
139
- box-shadow: 0 0 0 1px rgba(66, 184, 131, 0.1), 0 40px 80px -20px rgba(0, 0, 0, 0.9);
140
- border-radius: 20px;
141
- overflow: hidden;
142
- position: relative;
143
- }
144
-
145
- /* Efeito Neon Superior */
146
- .neon-line {
147
- height: 1px;
148
- width: 100%;
149
- background: linear-gradient(90deg, transparent, var(--vue-dark), var(--vue-green), var(--vue-dark), transparent);
150
- box-shadow: 0 0 15px rgba(66, 184, 131, 0.2);
151
- flex-shrink: 0;
152
- }
153
-
154
- .content {
155
- padding: 32px 40px;
156
- display: flex;
157
- flex-direction: column;
158
- flex: 1;
159
- overflow: hidden; /* Para o scroll ficar apenas no terminal se necessário */
160
- }
161
-
162
- h1 {
163
- margin: 0 0 24px 0;
164
- font-size: 1.8rem;
165
- font-weight: 800;
166
- letter-spacing: -0.03em;
167
- background: linear-gradient(180deg, #ffffff 0%, var(--vue-green) 100%);
168
- -webkit-background-clip: text;
169
- -webkit-text-fill-color: transparent;
170
- display: flex;
171
- align-items: center;
172
- gap: 12px;
173
- }
174
-
175
- .icon {
176
- -webkit-text-fill-color: initial;
177
- font-size: 1.5rem;
178
- }
179
-
180
- /* Área de Metadados */
181
- .meta-info {
182
- margin-bottom: 24px;
183
- display: flex;
184
- flex-direction: column;
185
- gap: 8px;
186
- }
187
-
188
- .meta-row {
189
- display: flex;
190
- align-items: baseline;
191
- gap: 10px;
192
- font-size: 0.9rem;
193
- }
194
-
195
- .meta-label {
196
- color: var(--vue-dark);
197
- font-weight: 700;
198
- font-size: 0.75rem;
199
- letter-spacing: 0.05em;
200
- }
201
-
202
- .meta-value {
203
- color: var(--text-muted);
204
- font-family: 'JetBrains Mono', monospace;
205
- font-size: 0.85rem;
206
- word-break: break-all;
207
- }
208
-
209
- .meta-value.accent {
210
- color: var(--vue-green);
211
- }
212
-
213
- /* Terminal Styles */
214
- .terminal-box {
215
- background: rgba(10, 10, 10, 0.8);
216
- border: 1px solid rgba(66, 184, 131, 0.15);
217
- border-radius: 12px;
218
- display: flex;
219
- flex-direction: column;
220
- flex: 1;
221
- overflow: hidden;
222
- font-family: 'JetBrains Mono', monospace;
223
- }
224
-
225
- .terminal-header {
226
- background: rgba(66, 184, 131, 0.05);
227
- padding: 12px 16px;
228
- border-bottom: 1px solid rgba(66, 184, 131, 0.1);
229
- display: flex;
230
- align-items: center;
231
- gap: 12px;
232
- }
233
-
234
- .dots {
235
- display: flex;
236
- gap: 6px;
237
- }
238
-
239
- .dot {
240
- width: 10px;
241
- height: 10px;
242
- border-radius: 50%;
243
- }
244
- .dot.red { background: #ff5f56; }
245
- .dot.yellow { background: #ffbd2e; }
246
- .dot.green { background: #27c93f; }
247
-
248
- .terminal-title {
249
- font-size: 0.75rem;
250
- color: rgba(255,255,255,0.3);
251
- }
252
-
253
- .terminal-body {
254
- padding: 20px;
255
- overflow-y: auto;
256
- color: #e0e0e0;
257
- font-size: 0.85rem;
258
- line-height: 1.6;
259
- }
260
-
261
- .log-entry.error {
262
- color: #ff8b8b; /* Vermelho claro para erro */
263
- font-weight: 600;
264
- margin-bottom: 16px;
265
- }
266
-
267
- .arrow {
268
- color: var(--vue-dark);
269
- margin-right: 8px;
270
- }
271
-
272
- .separator {
273
- height: 1px;
274
- background: rgba(255,255,255,0.1);
275
- margin: 16px 0;
276
- width: 100%;
277
- }
278
-
279
- .stack-trace {
280
- color: rgba(167, 196, 188, 0.6); /* Muted green */
281
- white-space: pre-wrap;
282
- font-size: 0.75rem;
283
- line-height: 1.5;
284
- }
285
-
286
- /* Custom Scrollbar for Terminal */
287
- .custom-scroll::-webkit-scrollbar {
288
- width: 8px;
289
- }
290
- .custom-scroll::-webkit-scrollbar-track {
291
- background: transparent;
292
- }
293
- .custom-scroll::-webkit-scrollbar-thumb {
294
- background: rgba(66, 184, 131, 0.2);
295
- border-radius: 4px;
296
- }
297
- .custom-scroll::-webkit-scrollbar-thumb:hover {
298
- background: rgba(66, 184, 131, 0.4);
299
- }
300
-
301
- /* Footer do Card */
302
- .card-footer {
303
- padding: 16px 40px;
304
- background: rgba(66, 184, 131, 0.02);
305
- border-top: 1px solid rgba(66, 184, 131, 0.05);
306
- display: flex;
307
- justify-content: space-between;
308
- align-items: center;
309
- font-size: 11px;
310
- box-sizing: border-box;
311
- }
312
-
313
- .footer-hint {
314
- color: rgba(255, 255, 255, 0.3);
315
- }
316
-
317
- .status-error {
318
- display: flex;
319
- align-items: center;
320
- gap: 8px;
321
- color: var(--error-red);
322
- font-weight: 600;
323
- text-transform: uppercase;
324
- letter-spacing: 0.05em;
325
- }
326
-
327
- .status-dot {
328
- width: 6px;
329
- height: 6px;
330
- background-color: var(--error-red);
331
- border-radius: 50%;
332
- box-shadow: 0 0 8px var(--error-red);
333
- }
334
-
335
- /* Branding fora do card */
336
- .brand-link {
337
- margin-top: 24px;
338
- opacity: 0.4;
339
- }
340
-
341
- .brand-text {
342
- font-family: 'Inter', sans-serif;
343
- font-size: 14px;
344
- font-weight: 600;
345
- color: #fff;
346
- }
347
-
348
- .brand-highlight {
349
- color: var(--vue-green);
350
- }
351
- </style>
File without changes
File without changes