vatts 2.2.6 → 2.3.0-canary.1

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 (70) hide show
  1. package/LICENSE +12 -12
  2. package/README.md +65 -65
  3. package/dist/builder.js +79 -42
  4. package/dist/frameworks/FrontCore.d.ts +34 -0
  5. package/dist/frameworks/FrontCore.js +128 -0
  6. package/dist/{vue → frameworks/builds}/vue.build.js +1 -1
  7. package/dist/frameworks/react/client.d.ts +8 -0
  8. package/dist/{react → frameworks/react}/client.js +14 -14
  9. package/dist/{react → frameworks/react/components}/Link.js +2 -2
  10. package/dist/frameworks/react/entry.client.d.ts +14 -0
  11. package/dist/frameworks/react/entry.client.js +211 -0
  12. package/dist/frameworks/react/react-elements.d.ts +10 -0
  13. package/dist/{react → frameworks/renderers}/renderer-react.d.ts +2 -2
  14. package/dist/{react → frameworks/renderers}/renderer-react.js +53 -86
  15. package/dist/{vue → frameworks/renderers}/renderer.vue.d.ts +2 -2
  16. package/dist/frameworks/renderers/renderer.vue.js +193 -0
  17. package/dist/frameworks/themes/BuildingPage.d.ts +1 -0
  18. package/dist/frameworks/themes/BuildingPage.js +312 -0
  19. package/dist/frameworks/themes/DefaultNotFound.d.ts +1 -0
  20. package/dist/frameworks/themes/DefaultNotFound.js +330 -0
  21. package/dist/frameworks/themes/ErrorModal.d.ts +1 -0
  22. package/dist/frameworks/themes/ErrorModal.js +345 -0
  23. package/dist/frameworks/themes/ServerError.d.ts +1 -0
  24. package/dist/frameworks/themes/ServerError.js +401 -0
  25. package/dist/frameworks/themes/VattsDevBadge.d.ts +1 -0
  26. package/dist/frameworks/themes/VattsDevBadge.js +232 -0
  27. package/dist/frameworks/vue/App.vue +149 -0
  28. package/dist/frameworks/vue/client.d.ts +9 -0
  29. package/dist/{vue → frameworks/vue}/client.js +13 -11
  30. package/dist/{vue → frameworks/vue/components}/Link.vue +38 -38
  31. package/dist/{vue → frameworks/vue/components}/image/Image.vue +128 -128
  32. package/dist/frameworks/vue/entry.client.js +75 -0
  33. package/dist/global/global.d.ts +179 -180
  34. package/dist/hotReload.js +77 -77
  35. package/dist/index.js +12 -1
  36. package/dist/loaders.js +15 -15
  37. package/dist/renderer.js +2 -2
  38. package/dist/renderers/common.js +3 -3
  39. package/dist/utils/core-go.js +2 -2
  40. package/dist/utils/utils.js +5 -5
  41. package/package.json +10 -26
  42. package/dist/react/BuildingPage.d.ts +0 -2
  43. package/dist/react/BuildingPage.js +0 -270
  44. package/dist/react/DefaultNotFound.d.ts +0 -2
  45. package/dist/react/DefaultNotFound.js +0 -248
  46. package/dist/react/DevIndicator.d.ts +0 -5
  47. package/dist/react/DevIndicator.js +0 -203
  48. package/dist/react/ErrorModal.d.ts +0 -20
  49. package/dist/react/ErrorModal.js +0 -266
  50. package/dist/react/client.d.ts +0 -8
  51. package/dist/react/entry.client.d.ts +0 -6
  52. package/dist/react/entry.client.js +0 -325
  53. package/dist/react/server-error.d.ts +0 -8
  54. package/dist/react/server-error.js +0 -346
  55. package/dist/vue/App.vue +0 -199
  56. package/dist/vue/BuildingPage.vue +0 -281
  57. package/dist/vue/DefaultNotFound.vue +0 -329
  58. package/dist/vue/DevIndicator.vue +0 -226
  59. package/dist/vue/ErrorModal.vue +0 -317
  60. package/dist/vue/client.d.ts +0 -9
  61. package/dist/vue/entry.client.js +0 -110
  62. package/dist/vue/renderer.vue.js +0 -387
  63. package/dist/vue/server-error.vue +0 -351
  64. /package/dist/{react → frameworks/builds}/react.build.d.ts +0 -0
  65. /package/dist/{react → frameworks/builds}/react.build.js +0 -0
  66. /package/dist/{vue → frameworks/builds}/vue.build.d.ts +0 -0
  67. /package/dist/{react → frameworks/react/components}/Link.d.ts +0 -0
  68. /package/dist/{react → frameworks/react/components}/image/Image.d.ts +0 -0
  69. /package/dist/{react → frameworks/react/components}/image/Image.js +0 -0
  70. /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