create-warlock 4.0.119 → 4.0.120
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/package.json +1 -1
- package/templates/warlock/package.json +7 -7
- package/templates/warlock/public/home.css +511 -0
- package/templates/warlock/src/app/shared/components/HomePageComponent.tsx +216 -0
- package/templates/warlock/src/app/shared/controllers/home-page.controller.tsx +10 -0
- package/templates/warlock/src/app/shared/routes.ts +4 -0
package/package.json
CHANGED
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"@mongez/reinforcements": "^2.3.17",
|
|
25
25
|
"@mongez/localization": "^3.2.1",
|
|
26
26
|
"@mongez/supportive-is": "^2.0.4",
|
|
27
|
-
"@warlock.js/auth": "4.0.
|
|
28
|
-
"@warlock.js/cache": "4.0.
|
|
29
|
-
"@warlock.js/cascade": "4.0.
|
|
30
|
-
"@warlock.js/scheduler": "4.0.
|
|
31
|
-
"@warlock.js/core": "4.0.
|
|
32
|
-
"@warlock.js/logger": "4.0.
|
|
33
|
-
"@warlock.js/seal": "4.0.
|
|
27
|
+
"@warlock.js/auth": "4.0.120",
|
|
28
|
+
"@warlock.js/cache": "4.0.120",
|
|
29
|
+
"@warlock.js/cascade": "4.0.120",
|
|
30
|
+
"@warlock.js/scheduler": "4.0.120",
|
|
31
|
+
"@warlock.js/core": "4.0.120",
|
|
32
|
+
"@warlock.js/logger": "4.0.120",
|
|
33
|
+
"@warlock.js/seal": "4.0.120",
|
|
34
34
|
"dayjs": "^1.11.19",
|
|
35
35
|
"mongodb": "^7.0.0"
|
|
36
36
|
},
|
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
/* Warlock.js Homepage Styles */
|
|
2
|
+
|
|
3
|
+
* {
|
|
4
|
+
margin: 0;
|
|
5
|
+
padding: 0;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
body {
|
|
10
|
+
font-family:
|
|
11
|
+
"Inter",
|
|
12
|
+
-apple-system,
|
|
13
|
+
BlinkMacSystemFont,
|
|
14
|
+
"Segoe UI",
|
|
15
|
+
Roboto,
|
|
16
|
+
Oxygen,
|
|
17
|
+
Ubuntu,
|
|
18
|
+
Cantarell,
|
|
19
|
+
sans-serif;
|
|
20
|
+
background: #0a0a0f;
|
|
21
|
+
color: #e4e4e7;
|
|
22
|
+
line-height: 1.6;
|
|
23
|
+
overflow-x: hidden;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.warlock-home {
|
|
27
|
+
min-height: 100vh;
|
|
28
|
+
position: relative;
|
|
29
|
+
overflow: hidden;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Animated Background */
|
|
33
|
+
.warlock-home::before {
|
|
34
|
+
content: "";
|
|
35
|
+
position: fixed;
|
|
36
|
+
top: -50%;
|
|
37
|
+
left: -50%;
|
|
38
|
+
width: 200%;
|
|
39
|
+
height: 200%;
|
|
40
|
+
background:
|
|
41
|
+
radial-gradient(circle at 20% 50%, rgba(234, 179, 8, 0.08) 0%, transparent 50%),
|
|
42
|
+
radial-gradient(circle at 80% 80%, rgba(34, 197, 94, 0.06) 0%, transparent 50%),
|
|
43
|
+
radial-gradient(circle at 40% 20%, rgba(234, 179, 8, 0.05) 0%, transparent 50%);
|
|
44
|
+
animation: backgroundFloat 20s ease-in-out infinite;
|
|
45
|
+
z-index: 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@keyframes backgroundFloat {
|
|
49
|
+
0%,
|
|
50
|
+
100% {
|
|
51
|
+
transform: translate(0, 0) rotate(0deg);
|
|
52
|
+
}
|
|
53
|
+
33% {
|
|
54
|
+
transform: translate(30px, -30px) rotate(1deg);
|
|
55
|
+
}
|
|
56
|
+
66% {
|
|
57
|
+
transform: translate(-20px, 20px) rotate(-1deg);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Container */
|
|
62
|
+
.warlock-container {
|
|
63
|
+
max-width: 1200px;
|
|
64
|
+
margin: 0 auto;
|
|
65
|
+
padding: 0 2rem;
|
|
66
|
+
position: relative;
|
|
67
|
+
z-index: 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Header */
|
|
71
|
+
.warlock-header {
|
|
72
|
+
padding: 2rem 0;
|
|
73
|
+
display: flex;
|
|
74
|
+
justify-content: space-between;
|
|
75
|
+
align-items: center;
|
|
76
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
77
|
+
backdrop-filter: blur(10px);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.warlock-logo {
|
|
81
|
+
display: flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 1rem;
|
|
84
|
+
font-size: 1.5rem;
|
|
85
|
+
font-weight: 700;
|
|
86
|
+
color: #fbbf24;
|
|
87
|
+
text-decoration: none;
|
|
88
|
+
transition: transform 0.3s ease;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.warlock-logo:hover {
|
|
92
|
+
transform: scale(1.05);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.warlock-logo-icon {
|
|
96
|
+
font-size: 2rem;
|
|
97
|
+
animation: pulse 2s ease-in-out infinite;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@keyframes pulse {
|
|
101
|
+
0%,
|
|
102
|
+
100% {
|
|
103
|
+
opacity: 1;
|
|
104
|
+
transform: scale(1);
|
|
105
|
+
}
|
|
106
|
+
50% {
|
|
107
|
+
opacity: 0.8;
|
|
108
|
+
transform: scale(1.1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.warlock-nav {
|
|
113
|
+
display: flex;
|
|
114
|
+
gap: 2rem;
|
|
115
|
+
align-items: center;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.warlock-nav a {
|
|
119
|
+
color: #a1a1aa;
|
|
120
|
+
text-decoration: none;
|
|
121
|
+
font-weight: 500;
|
|
122
|
+
transition: color 0.3s ease;
|
|
123
|
+
position: relative;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.warlock-nav a::after {
|
|
127
|
+
content: "";
|
|
128
|
+
position: absolute;
|
|
129
|
+
bottom: -4px;
|
|
130
|
+
left: 0;
|
|
131
|
+
width: 0;
|
|
132
|
+
height: 2px;
|
|
133
|
+
background: linear-gradient(90deg, #fbbf24, #22c55e);
|
|
134
|
+
transition: width 0.3s ease;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.warlock-nav a:hover {
|
|
138
|
+
color: #fbbf24;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.warlock-nav a:hover::after {
|
|
142
|
+
width: 100%;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/* Hero Section */
|
|
146
|
+
.warlock-hero {
|
|
147
|
+
padding: 8rem 0;
|
|
148
|
+
text-align: center;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.warlock-hero h1 {
|
|
152
|
+
font-size: 4.5rem;
|
|
153
|
+
font-weight: 900;
|
|
154
|
+
margin-bottom: 1.5rem;
|
|
155
|
+
background: linear-gradient(135deg, #fbbf24 0%, #22c55e 100%);
|
|
156
|
+
-webkit-background-clip: text;
|
|
157
|
+
-webkit-text-fill-color: transparent;
|
|
158
|
+
background-clip: text;
|
|
159
|
+
line-height: 1.2;
|
|
160
|
+
animation: fadeInUp 0.8s ease-out;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.warlock-hero p {
|
|
164
|
+
font-size: 1.5rem;
|
|
165
|
+
color: #a1a1aa;
|
|
166
|
+
margin-bottom: 3rem;
|
|
167
|
+
max-width: 700px;
|
|
168
|
+
margin-left: auto;
|
|
169
|
+
margin-right: auto;
|
|
170
|
+
animation: fadeInUp 0.8s ease-out 0.2s both;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
@keyframes fadeInUp {
|
|
174
|
+
from {
|
|
175
|
+
opacity: 0;
|
|
176
|
+
transform: translateY(30px);
|
|
177
|
+
}
|
|
178
|
+
to {
|
|
179
|
+
opacity: 1;
|
|
180
|
+
transform: translateY(0);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.warlock-cta {
|
|
185
|
+
display: flex;
|
|
186
|
+
gap: 1.5rem;
|
|
187
|
+
justify-content: center;
|
|
188
|
+
flex-wrap: wrap;
|
|
189
|
+
animation: fadeInUp 0.8s ease-out 0.4s both;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.warlock-btn {
|
|
193
|
+
padding: 1rem 2.5rem;
|
|
194
|
+
font-size: 1.1rem;
|
|
195
|
+
font-weight: 600;
|
|
196
|
+
text-decoration: none;
|
|
197
|
+
border-radius: 12px;
|
|
198
|
+
transition: all 0.3s ease;
|
|
199
|
+
display: inline-flex;
|
|
200
|
+
align-items: center;
|
|
201
|
+
gap: 0.5rem;
|
|
202
|
+
position: relative;
|
|
203
|
+
overflow: hidden;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.warlock-btn::before {
|
|
207
|
+
content: "";
|
|
208
|
+
position: absolute;
|
|
209
|
+
top: 50%;
|
|
210
|
+
left: 50%;
|
|
211
|
+
width: 0;
|
|
212
|
+
height: 0;
|
|
213
|
+
border-radius: 50%;
|
|
214
|
+
background: rgba(255, 255, 255, 0.2);
|
|
215
|
+
transform: translate(-50%, -50%);
|
|
216
|
+
transition:
|
|
217
|
+
width 0.6s ease,
|
|
218
|
+
height 0.6s ease;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.warlock-btn:hover::before {
|
|
222
|
+
width: 300px;
|
|
223
|
+
height: 300px;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.warlock-btn-primary {
|
|
227
|
+
background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
|
|
228
|
+
color: #0a0a0f;
|
|
229
|
+
box-shadow: 0 10px 30px rgba(251, 191, 36, 0.3);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.warlock-btn-primary:hover {
|
|
233
|
+
transform: translateY(-3px);
|
|
234
|
+
box-shadow: 0 15px 40px rgba(251, 191, 36, 0.4);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.warlock-btn-secondary {
|
|
238
|
+
background: rgba(255, 255, 255, 0.05);
|
|
239
|
+
color: #e4e4e7;
|
|
240
|
+
border: 2px solid rgba(255, 255, 255, 0.1);
|
|
241
|
+
backdrop-filter: blur(10px);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.warlock-btn-secondary:hover {
|
|
245
|
+
background: rgba(255, 255, 255, 0.1);
|
|
246
|
+
border-color: rgba(251, 191, 36, 0.3);
|
|
247
|
+
transform: translateY(-3px);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Features Section */
|
|
251
|
+
.warlock-features {
|
|
252
|
+
padding: 6rem 0;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.warlock-section-title {
|
|
256
|
+
text-align: center;
|
|
257
|
+
font-size: 3rem;
|
|
258
|
+
font-weight: 800;
|
|
259
|
+
margin-bottom: 1rem;
|
|
260
|
+
background: linear-gradient(135deg, #fbbf24 0%, #22c55e 100%);
|
|
261
|
+
-webkit-background-clip: text;
|
|
262
|
+
-webkit-text-fill-color: transparent;
|
|
263
|
+
background-clip: text;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.warlock-section-subtitle {
|
|
267
|
+
text-align: center;
|
|
268
|
+
font-size: 1.25rem;
|
|
269
|
+
color: #71717a;
|
|
270
|
+
margin-bottom: 4rem;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.warlock-features-grid {
|
|
274
|
+
display: grid;
|
|
275
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
276
|
+
gap: 2rem;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.warlock-feature-card {
|
|
280
|
+
background: rgba(255, 255, 255, 0.02);
|
|
281
|
+
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
282
|
+
border-radius: 16px;
|
|
283
|
+
padding: 2.5rem;
|
|
284
|
+
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
285
|
+
backdrop-filter: blur(10px);
|
|
286
|
+
position: relative;
|
|
287
|
+
overflow: hidden;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.warlock-feature-card::before {
|
|
291
|
+
content: "";
|
|
292
|
+
position: absolute;
|
|
293
|
+
top: 0;
|
|
294
|
+
left: 0;
|
|
295
|
+
right: 0;
|
|
296
|
+
height: 3px;
|
|
297
|
+
background: linear-gradient(90deg, #fbbf24, #22c55e);
|
|
298
|
+
transform: scaleX(0);
|
|
299
|
+
transform-origin: left;
|
|
300
|
+
transition: transform 0.4s ease;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.warlock-feature-card:hover::before {
|
|
304
|
+
transform: scaleX(1);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.warlock-feature-card:hover {
|
|
308
|
+
transform: translateY(-8px);
|
|
309
|
+
background: rgba(255, 255, 255, 0.05);
|
|
310
|
+
border-color: rgba(251, 191, 36, 0.2);
|
|
311
|
+
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.warlock-feature-icon {
|
|
315
|
+
font-size: 3rem;
|
|
316
|
+
margin-bottom: 1.5rem;
|
|
317
|
+
display: block;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.warlock-feature-card h3 {
|
|
321
|
+
font-size: 1.5rem;
|
|
322
|
+
font-weight: 700;
|
|
323
|
+
margin-bottom: 1rem;
|
|
324
|
+
color: #fbbf24;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.warlock-feature-card p {
|
|
328
|
+
color: #a1a1aa;
|
|
329
|
+
line-height: 1.8;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/* Quick Start Section */
|
|
333
|
+
.warlock-quickstart {
|
|
334
|
+
padding: 6rem 0;
|
|
335
|
+
background: rgba(255, 255, 255, 0.01);
|
|
336
|
+
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
|
337
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.warlock-code-block {
|
|
341
|
+
background: rgba(0, 0, 0, 0.4);
|
|
342
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
343
|
+
border-radius: 16px;
|
|
344
|
+
padding: 2rem;
|
|
345
|
+
margin-top: 2rem;
|
|
346
|
+
position: relative;
|
|
347
|
+
overflow: hidden;
|
|
348
|
+
backdrop-filter: blur(20px);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.warlock-code-header {
|
|
352
|
+
display: flex;
|
|
353
|
+
align-items: center;
|
|
354
|
+
gap: 0.5rem;
|
|
355
|
+
margin-bottom: 1.5rem;
|
|
356
|
+
padding-bottom: 1rem;
|
|
357
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.warlock-code-dot {
|
|
361
|
+
width: 12px;
|
|
362
|
+
height: 12px;
|
|
363
|
+
border-radius: 50%;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.warlock-code-dot:nth-child(1) {
|
|
367
|
+
background: #ef4444;
|
|
368
|
+
}
|
|
369
|
+
.warlock-code-dot:nth-child(2) {
|
|
370
|
+
background: #f59e0b;
|
|
371
|
+
}
|
|
372
|
+
.warlock-code-dot:nth-child(3) {
|
|
373
|
+
background: #22c55e;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.warlock-code-content {
|
|
377
|
+
font-family: "Fira Code", "Courier New", monospace;
|
|
378
|
+
font-size: 1rem;
|
|
379
|
+
line-height: 2;
|
|
380
|
+
color: #e4e4e7;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.warlock-code-line {
|
|
384
|
+
display: block;
|
|
385
|
+
transition: background 0.2s ease;
|
|
386
|
+
padding: 0.25rem 0.5rem;
|
|
387
|
+
border-radius: 4px;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.warlock-code-line:hover {
|
|
391
|
+
background: rgba(251, 191, 36, 0.1);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.warlock-code-comment {
|
|
395
|
+
color: #71717a;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
.warlock-code-command {
|
|
399
|
+
color: #22c55e;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.warlock-code-flag {
|
|
403
|
+
color: #fbbf24;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.warlock-code-string {
|
|
407
|
+
color: #06b6d4;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
/* Footer */
|
|
411
|
+
.warlock-footer {
|
|
412
|
+
padding: 4rem 0 2rem;
|
|
413
|
+
text-align: center;
|
|
414
|
+
border-top: 1px solid rgba(255, 255, 255, 0.05);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.warlock-social-links {
|
|
418
|
+
display: flex;
|
|
419
|
+
justify-content: center;
|
|
420
|
+
gap: 2rem;
|
|
421
|
+
margin-bottom: 2rem;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.warlock-social-link {
|
|
425
|
+
display: inline-flex;
|
|
426
|
+
align-items: center;
|
|
427
|
+
gap: 0.75rem;
|
|
428
|
+
padding: 1rem 2rem;
|
|
429
|
+
background: rgba(255, 255, 255, 0.03);
|
|
430
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
431
|
+
border-radius: 12px;
|
|
432
|
+
color: #e4e4e7;
|
|
433
|
+
text-decoration: none;
|
|
434
|
+
font-weight: 600;
|
|
435
|
+
transition: all 0.3s ease;
|
|
436
|
+
backdrop-filter: blur(10px);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.warlock-social-link:hover {
|
|
440
|
+
background: rgba(255, 255, 255, 0.08);
|
|
441
|
+
border-color: rgba(251, 191, 36, 0.3);
|
|
442
|
+
transform: translateY(-3px);
|
|
443
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.warlock-social-icon {
|
|
447
|
+
font-size: 1.5rem;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.warlock-footer-text {
|
|
451
|
+
color: #71717a;
|
|
452
|
+
font-size: 0.95rem;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.warlock-footer-text a {
|
|
456
|
+
color: #fbbf24;
|
|
457
|
+
text-decoration: none;
|
|
458
|
+
transition: color 0.3s ease;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.warlock-footer-text a:hover {
|
|
462
|
+
color: #f59e0b;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/* Responsive Design */
|
|
466
|
+
@media (max-width: 768px) {
|
|
467
|
+
.warlock-hero h1 {
|
|
468
|
+
font-size: 3rem;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.warlock-hero p {
|
|
472
|
+
font-size: 1.25rem;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
.warlock-section-title {
|
|
476
|
+
font-size: 2.25rem;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
.warlock-features-grid {
|
|
480
|
+
grid-template-columns: 1fr;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.warlock-nav {
|
|
484
|
+
display: none;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
.warlock-social-links {
|
|
488
|
+
flex-direction: column;
|
|
489
|
+
gap: 1rem;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
.warlock-cta {
|
|
493
|
+
flex-direction: column;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.warlock-btn {
|
|
497
|
+
width: 100%;
|
|
498
|
+
justify-content: center;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/* Smooth Scroll */
|
|
503
|
+
html {
|
|
504
|
+
scroll-behavior: smooth;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/* Selection */
|
|
508
|
+
::selection {
|
|
509
|
+
background: rgba(251, 191, 36, 0.3);
|
|
510
|
+
color: #fbbf24;
|
|
511
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { publicUrl } from "@warlock.js/core";
|
|
2
|
+
|
|
3
|
+
export function HomePageComponent() {
|
|
4
|
+
return (
|
|
5
|
+
<>
|
|
6
|
+
<head>
|
|
7
|
+
<meta charSet="UTF-8" />
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
9
|
+
<title>Warlock.js - Modern Backend TypeScript Framework</title>
|
|
10
|
+
<meta
|
|
11
|
+
name="description"
|
|
12
|
+
content="A powerful, elegant TypeScript framework for building modern web applications with ease."
|
|
13
|
+
/>
|
|
14
|
+
<link rel="stylesheet" href={publicUrl("home.css")} />
|
|
15
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
16
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
|
17
|
+
<link
|
|
18
|
+
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap"
|
|
19
|
+
rel="stylesheet"
|
|
20
|
+
/>
|
|
21
|
+
</head>
|
|
22
|
+
|
|
23
|
+
<div className="warlock-home">
|
|
24
|
+
<div className="warlock-container">
|
|
25
|
+
{/* Header */}
|
|
26
|
+
<header className="warlock-header">
|
|
27
|
+
<a href="/" className="warlock-logo">
|
|
28
|
+
<span className="warlock-logo-icon">⚡</span>
|
|
29
|
+
<span>Warlock.js</span>
|
|
30
|
+
</a>
|
|
31
|
+
<nav className="warlock-nav">
|
|
32
|
+
<a href="https://warlock.js.org" target="_blank" rel="noopener noreferrer">
|
|
33
|
+
Docs
|
|
34
|
+
</a>
|
|
35
|
+
<a href="https://github.com/warlockjs" target="_blank" rel="noopener noreferrer">
|
|
36
|
+
GitHub
|
|
37
|
+
</a>
|
|
38
|
+
<a href="https://discord.gg/x3W9SN2jvx" target="_blank" rel="noopener noreferrer">
|
|
39
|
+
Discord
|
|
40
|
+
</a>
|
|
41
|
+
</nav>
|
|
42
|
+
</header>
|
|
43
|
+
|
|
44
|
+
{/* Hero Section */}
|
|
45
|
+
<section className="warlock-hero">
|
|
46
|
+
<h1>
|
|
47
|
+
Build Modern Web Apps
|
|
48
|
+
<br />
|
|
49
|
+
with Confidence
|
|
50
|
+
</h1>
|
|
51
|
+
<p>
|
|
52
|
+
A powerful, elegant TypeScript framework designed for developers who demand
|
|
53
|
+
excellence. Ship faster, scale better, and enjoy the journey.
|
|
54
|
+
</p>
|
|
55
|
+
<div className="warlock-cta">
|
|
56
|
+
<a href="https://warlock.js.org" className="warlock-btn warlock-btn-primary">
|
|
57
|
+
<span>Get Started</span>
|
|
58
|
+
<span>→</span>
|
|
59
|
+
</a>
|
|
60
|
+
<a href="https://github.com/warlockjs" className="warlock-btn warlock-btn-secondary">
|
|
61
|
+
<span>View on GitHub</span>
|
|
62
|
+
</a>
|
|
63
|
+
</div>
|
|
64
|
+
</section>
|
|
65
|
+
|
|
66
|
+
{/* Features Section */}
|
|
67
|
+
<section className="warlock-features">
|
|
68
|
+
<h2 className="warlock-section-title">Why Warlock.js?</h2>
|
|
69
|
+
<p className="warlock-section-subtitle">
|
|
70
|
+
Everything you need to build production-ready applications
|
|
71
|
+
</p>
|
|
72
|
+
|
|
73
|
+
<div className="warlock-features-grid">
|
|
74
|
+
<div className="warlock-feature-card">
|
|
75
|
+
<span className="warlock-feature-icon">🚀</span>
|
|
76
|
+
<h3>Lightning Fast</h3>
|
|
77
|
+
<p>
|
|
78
|
+
Blazing fast development server with instant hot reload. Build and deploy
|
|
79
|
+
optimized production bundles in seconds.
|
|
80
|
+
</p>
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div className="warlock-feature-card">
|
|
84
|
+
<span className="warlock-feature-icon">🎯</span>
|
|
85
|
+
<h3>Type-Safe</h3>
|
|
86
|
+
<p>
|
|
87
|
+
Built with TypeScript from the ground up. Enjoy full type safety across your
|
|
88
|
+
entire application with intelligent auto-completion.
|
|
89
|
+
</p>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div className="warlock-feature-card">
|
|
93
|
+
<span className="warlock-feature-icon">🏗️</span>
|
|
94
|
+
<h3>Battle-Tested Architecture</h3>
|
|
95
|
+
<p>
|
|
96
|
+
Proven patterns and best practices baked in. From routing to database management,
|
|
97
|
+
we've got you covered.
|
|
98
|
+
</p>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<div className="warlock-feature-card">
|
|
102
|
+
<span className="warlock-feature-icon">🔌</span>
|
|
103
|
+
<h3>Powerful CLI</h3>
|
|
104
|
+
<p>
|
|
105
|
+
Scaffold components, run migrations, manage seeds, and more with an intuitive
|
|
106
|
+
command-line interface that boosts productivity.
|
|
107
|
+
</p>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<div className="warlock-feature-card">
|
|
111
|
+
<span className="warlock-feature-icon">🎨</span>
|
|
112
|
+
<h3>Flexible & Extensible</h3>
|
|
113
|
+
<p>
|
|
114
|
+
Plugin architecture allows you to extend core functionality. Build your own tools
|
|
115
|
+
or use community packages.
|
|
116
|
+
</p>
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div className="warlock-feature-card">
|
|
120
|
+
<span className="warlock-feature-icon">🌍</span>
|
|
121
|
+
<h3>Multi-Tenant Ready</h3>
|
|
122
|
+
<p>
|
|
123
|
+
Built-in support for multi-tenancy. Scale from single to multi-tenant applications
|
|
124
|
+
without architectural changes.
|
|
125
|
+
</p>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</section>
|
|
129
|
+
|
|
130
|
+
{/* Quick Start Section */}
|
|
131
|
+
<section className="warlock-quickstart">
|
|
132
|
+
<h2 className="warlock-section-title">Get Started in Seconds</h2>
|
|
133
|
+
<p className="warlock-section-subtitle">One command to rule them all</p>
|
|
134
|
+
|
|
135
|
+
<div className="warlock-code-block">
|
|
136
|
+
<div className="warlock-code-header">
|
|
137
|
+
<span className="warlock-code-dot"></span>
|
|
138
|
+
<span className="warlock-code-dot"></span>
|
|
139
|
+
<span className="warlock-code-dot"></span>
|
|
140
|
+
</div>
|
|
141
|
+
<div className="warlock-code-content">
|
|
142
|
+
<code className="warlock-code-line">
|
|
143
|
+
<span className="warlock-code-comment"># Create a new Warlock.js project</span>
|
|
144
|
+
</code>
|
|
145
|
+
<code className="warlock-code-line">
|
|
146
|
+
<span className="warlock-code-command">npx</span> create-warlock@latest{" "}
|
|
147
|
+
<span className="warlock-code-flag">my-app</span>
|
|
148
|
+
</code>
|
|
149
|
+
<code className="warlock-code-line"> </code>
|
|
150
|
+
<code className="warlock-code-line">
|
|
151
|
+
<span className="warlock-code-comment"># Navigate to your project</span>
|
|
152
|
+
</code>
|
|
153
|
+
<code className="warlock-code-line">
|
|
154
|
+
<span className="warlock-code-command">cd</span>{" "}
|
|
155
|
+
<span className="warlock-code-flag">my-app</span>
|
|
156
|
+
</code>
|
|
157
|
+
<code className="warlock-code-line"> </code>
|
|
158
|
+
<code className="warlock-code-line">
|
|
159
|
+
<span className="warlock-code-comment"># Start the development server</span>
|
|
160
|
+
</code>
|
|
161
|
+
<code className="warlock-code-line">
|
|
162
|
+
<span className="warlock-code-command">yarn</span> start
|
|
163
|
+
</code>
|
|
164
|
+
<code className="warlock-code-line"> </code>
|
|
165
|
+
<code className="warlock-code-line">
|
|
166
|
+
<span className="warlock-code-comment">
|
|
167
|
+
# 🚀 Server ready at http://localhost:3000
|
|
168
|
+
</span>
|
|
169
|
+
</code>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</section>
|
|
173
|
+
|
|
174
|
+
{/* Footer */}
|
|
175
|
+
<footer className="warlock-footer">
|
|
176
|
+
<div className="warlock-social-links">
|
|
177
|
+
<a
|
|
178
|
+
href="https://discord.gg/x3W9SN2jvx"
|
|
179
|
+
className="warlock-social-link"
|
|
180
|
+
target="_blank"
|
|
181
|
+
rel="noopener noreferrer"
|
|
182
|
+
>
|
|
183
|
+
<span className="warlock-social-icon">💬</span>
|
|
184
|
+
<span>Join Discord</span>
|
|
185
|
+
</a>
|
|
186
|
+
<a
|
|
187
|
+
href="https://github.com/warlockjs"
|
|
188
|
+
className="warlock-social-link"
|
|
189
|
+
target="_blank"
|
|
190
|
+
rel="noopener noreferrer"
|
|
191
|
+
>
|
|
192
|
+
<span className="warlock-social-icon">⭐</span>
|
|
193
|
+
<span>Star on GitHub</span>
|
|
194
|
+
</a>
|
|
195
|
+
<a
|
|
196
|
+
href="https://warlock.js.org"
|
|
197
|
+
className="warlock-social-link"
|
|
198
|
+
target="_blank"
|
|
199
|
+
rel="noopener noreferrer"
|
|
200
|
+
>
|
|
201
|
+
<span className="warlock-social-icon">📚</span>
|
|
202
|
+
<span>Read Docs</span>
|
|
203
|
+
</a>
|
|
204
|
+
</div>
|
|
205
|
+
<p className="warlock-footer-text">
|
|
206
|
+
Built with ⚡ by the{" "}
|
|
207
|
+
<a href="https://github.com/warlockjs" target="_blank" rel="noopener noreferrer">
|
|
208
|
+
Warlock.js Team
|
|
209
|
+
</a>
|
|
210
|
+
</p>
|
|
211
|
+
</footer>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
</>
|
|
215
|
+
);
|
|
216
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Request, type RequestHandler, type Response } from "@warlock.js/core";
|
|
2
|
+
import { HomePageComponent } from "../components/HomePageComponent";
|
|
3
|
+
|
|
4
|
+
export const homePageController: RequestHandler = async (request: Request, response: Response) => {
|
|
5
|
+
// your code here
|
|
6
|
+
|
|
7
|
+
return response.render(<HomePageComponent />);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
homePageController.description = "Home Page Controller";
|