@salmansaeed/nexa 1.0.0 → 1.0.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.
- package/README.md +0 -26
- package/bin/nexa.js +53 -16
- package/package.json +1 -1
- package/template/public/index.html +2 -2
- package/template/public/manifest.json +7 -12
- package/template/public/nexa.svg +55 -0
- package/template/src/assets/nexa.svg +55 -0
- package/template/src/components/Home/Home.css +9 -13
- package/template/src/components/Home/Home.jsx +2 -1
- package/template/public/favicon.jpeg +0 -0
- package/template/public/logo.jpeg +0 -0
package/README.md
CHANGED
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
Here is your **full Nexa README**, upgraded from SG, aligned with your actual CLI behavior, and including:
|
|
2
|
-
|
|
3
|
-
- correct commands (`nexa`, not `sg`)
|
|
4
|
-
- global install instructions (very important)
|
|
5
|
-
- npx usage
|
|
6
|
-
- your new UI philosophy (Cleaner UI, prebuilt structure)
|
|
7
|
-
- new component system
|
|
8
|
-
- your branding
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
# 📦 `README.md`
|
|
13
|
-
|
|
14
|
-
````md
|
|
15
1
|
# Nexa CLI
|
|
16
2
|
|
|
17
3
|
**React Power. Angular Simplicity. Vite Speed. Cleaner UI. Prebuilt structure.**
|
|
@@ -51,7 +37,6 @@ it gives you a **fully structured application shell** with:
|
|
|
51
37
|
```bash
|
|
52
38
|
npx --verbose @salmansaeed/nexa@latest new app <app-name>
|
|
53
39
|
```
|
|
54
|
-
````
|
|
55
40
|
|
|
56
41
|
---
|
|
57
42
|
|
|
@@ -279,15 +264,4 @@ Built and maintained by **Salman Saeed**
|
|
|
279
264
|
---
|
|
280
265
|
|
|
281
266
|
# 🚀 Next step (highly recommended)
|
|
282
|
-
|
|
283
|
-
Now that your README is strong:
|
|
284
|
-
|
|
285
|
-
👉 Next best move:
|
|
286
|
-
- add screenshots (massive impact on adoption)
|
|
287
|
-
- or I can help you write:
|
|
288
|
-
- **npm page description**
|
|
289
|
-
- **GitHub landing page hero**
|
|
290
|
-
- **CLI demo GIF script**
|
|
291
|
-
|
|
292
|
-
Just tell me 👍
|
|
293
267
|
```
|
package/bin/nexa.js
CHANGED
|
@@ -262,12 +262,51 @@ function createService(serviceName) {
|
|
|
262
262
|
|
|
263
263
|
const content = `/**
|
|
264
264
|
* File: src/services/${finalName}.js
|
|
265
|
-
* Purpose: Service module
|
|
265
|
+
* Purpose: Service module for ${finalName}.
|
|
266
|
+
* Handles API calls and external integrations.
|
|
266
267
|
*/
|
|
267
268
|
|
|
268
|
-
|
|
269
|
-
|
|
269
|
+
const BASE_URL = "Add your url here for further use";
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Example GET request
|
|
273
|
+
*/
|
|
274
|
+
export async function get${finalName}() {
|
|
275
|
+
try {
|
|
276
|
+
const res = await fetch(\`\${BASE_URL}\`);
|
|
277
|
+
if (!res.ok) throw new Error("Failed to fetch ${finalName}");
|
|
278
|
+
return await res.json();
|
|
279
|
+
} catch (err) {
|
|
280
|
+
console.error("${finalName} GET error:", err);
|
|
281
|
+
throw err;
|
|
282
|
+
}
|
|
270
283
|
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Example POST request
|
|
287
|
+
*/
|
|
288
|
+
export async function create${finalName}(payload) {
|
|
289
|
+
try {
|
|
290
|
+
const res = await fetch(\`\${BASE_URL}\`, {
|
|
291
|
+
method: "POST",
|
|
292
|
+
headers: {
|
|
293
|
+
"Content-Type": "application/json",
|
|
294
|
+
},
|
|
295
|
+
body: JSON.stringify(payload),
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
if (!res.ok) throw new Error("Failed to create ${finalName}");
|
|
299
|
+
return await res.json();
|
|
300
|
+
} catch (err) {
|
|
301
|
+
console.error("${finalName} POST error:", err);
|
|
302
|
+
throw err;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
export default {
|
|
307
|
+
get${finalName},
|
|
308
|
+
create${finalName},
|
|
309
|
+
};
|
|
271
310
|
`;
|
|
272
311
|
|
|
273
312
|
writeFileSafe(servicePath, content);
|
|
@@ -327,6 +366,7 @@ function createComponent(componentName) {
|
|
|
327
366
|
);
|
|
328
367
|
|
|
329
368
|
const jsxContent = `import React from "react";
|
|
369
|
+
import logo from "../../assets/nexa.svg";
|
|
330
370
|
import "./${finalName}.css";
|
|
331
371
|
import ${childName} from "./${childName}";
|
|
332
372
|
|
|
@@ -337,7 +377,7 @@ const ${finalName} = () => {
|
|
|
337
377
|
<div className="nexa-logo-wrap">
|
|
338
378
|
<div className="nexa-logo-convex" />
|
|
339
379
|
<div className="nexa-logo-shine" />
|
|
340
|
-
<
|
|
380
|
+
<img src={logo} alt="Nexa Logo" className="nexa-logo-img" />
|
|
341
381
|
</div>
|
|
342
382
|
|
|
343
383
|
<h2 className="nexa-wordmark">${finalName}</h2>
|
|
@@ -426,16 +466,12 @@ export default ${childName};
|
|
|
426
466
|
pointer-events: none;
|
|
427
467
|
}
|
|
428
468
|
|
|
429
|
-
.nexa-logo {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
color: var(--nexa-primary);
|
|
436
|
-
text-shadow:
|
|
437
|
-
0 0 10px rgba(62, 231, 255, 0.28),
|
|
438
|
-
0 0 24px rgba(62, 231, 255, 0.14);
|
|
469
|
+
.nexa-logo-img {
|
|
470
|
+
width: 112px;
|
|
471
|
+
height: 112px;
|
|
472
|
+
object-fit: contain;
|
|
473
|
+
position: relative;
|
|
474
|
+
z-index: 1;
|
|
439
475
|
transform: scale(0.2);
|
|
440
476
|
opacity: 0;
|
|
441
477
|
filter: blur(14px);
|
|
@@ -577,8 +613,9 @@ export default ${childName};
|
|
|
577
613
|
border-radius: 22px;
|
|
578
614
|
}
|
|
579
615
|
|
|
580
|
-
.nexa-logo {
|
|
581
|
-
|
|
616
|
+
.nexa-logo-img {
|
|
617
|
+
width: 92px;
|
|
618
|
+
height: 92px;
|
|
582
619
|
}
|
|
583
620
|
|
|
584
621
|
.nexa-wordmark {
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<link rel="icon" type="image/
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="/nexa.svg" />
|
|
7
7
|
<link rel="manifest" href="/manifest.json" />
|
|
8
8
|
<title>AG App</title>
|
|
9
9
|
</head>
|
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"short_name": "
|
|
2
|
+
"name": "Nexa",
|
|
3
|
+
"short_name": "Nexa",
|
|
4
4
|
"start_url": ".",
|
|
5
5
|
"display": "standalone",
|
|
6
|
-
"background_color": "#
|
|
7
|
-
"theme_color": "#
|
|
6
|
+
"background_color": "#07111f",
|
|
7
|
+
"theme_color": "#3ee7ff",
|
|
8
8
|
"icons": [
|
|
9
9
|
{
|
|
10
|
-
"src": "/
|
|
11
|
-
"sizes": "
|
|
12
|
-
"type": "image/
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
"src": "/logo.png",
|
|
16
|
-
"sizes": "512x512",
|
|
17
|
-
"type": "image/png"
|
|
10
|
+
"src": "/nexa.svg",
|
|
11
|
+
"sizes": "any",
|
|
12
|
+
"type": "image/svg+xml"
|
|
18
13
|
}
|
|
19
14
|
]
|
|
20
15
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="512" y2="512" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0%" stop-color="#040B16"></stop>
|
|
5
|
+
<stop offset="100%" stop-color="#07111F"></stop>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
|
|
8
|
+
<linearGradient id="leftStroke" x1="110" y1="120" x2="220" y2="390" gradientUnits="userSpaceOnUse">
|
|
9
|
+
<stop offset="0%" stop-color="#F4F8FF"></stop>
|
|
10
|
+
<stop offset="55%" stop-color="#C9D7E8"></stop>
|
|
11
|
+
<stop offset="100%" stop-color="#7E8FA8"></stop>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
|
|
14
|
+
<linearGradient id="rightStroke" x1="260" y1="120" x2="415" y2="390" gradientUnits="userSpaceOnUse">
|
|
15
|
+
<stop offset="0%" stop-color="#4EEBFF"></stop>
|
|
16
|
+
<stop offset="55%" stop-color="#1788FF"></stop>
|
|
17
|
+
<stop offset="100%" stop-color="#0A2A8B"></stop>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
|
|
20
|
+
<filter id="blueGlow" x="120" y="80" width="320" height="340" filterUnits="userSpaceOnUse">
|
|
21
|
+
<feGaussianBlur stdDeviation="18" result="blur"></feGaussianBlur>
|
|
22
|
+
<feColorMatrix in="blur" type="matrix" values="0 0 0 0 0.18
|
|
23
|
+
0 0 0 0 0.74
|
|
24
|
+
0 0 0 0 1
|
|
25
|
+
0 0 0 0.45 0"></feColorMatrix>
|
|
26
|
+
</filter>
|
|
27
|
+
|
|
28
|
+
<filter id="whiteGlow" x="70" y="80" width="230" height="340" filterUnits="userSpaceOnUse">
|
|
29
|
+
<feGaussianBlur stdDeviation="16" result="blur"></feGaussianBlur>
|
|
30
|
+
<feColorMatrix in="blur" type="matrix" values="0 0 0 0 0.85
|
|
31
|
+
0 0 0 0 0.9
|
|
32
|
+
0 0 0 0 1
|
|
33
|
+
0 0 0 0.22 0"></feColorMatrix>
|
|
34
|
+
</filter>
|
|
35
|
+
</defs>
|
|
36
|
+
|
|
37
|
+
<rect width="512" height="512" rx="96" fill="url(#bg)"></rect>
|
|
38
|
+
|
|
39
|
+
<g filter="url(#whiteGlow)">
|
|
40
|
+
<path d="M126 370L178 145C182 129 196 118 213 118H225C242 118 258 127 267 141L332 249L305 292L213 154L165 364L126 370Z" fill="url(#leftStroke)" opacity="0.9"></path>
|
|
41
|
+
</g>
|
|
42
|
+
|
|
43
|
+
<g filter="url(#blueGlow)">
|
|
44
|
+
<path d="M233 140C242 127 258 118 275 118H387L316 393H280C262 393 245 384 236 369L170 262L198 219L289 356L345 154H275C258 154 246 148 233 140Z" fill="url(#rightStroke)"></path>
|
|
45
|
+
</g>
|
|
46
|
+
|
|
47
|
+
<path d="M126 370L178 145C182 129 196 118 213 118H225C242 118 258 127 267 141L332 249L305 292L213 154L165 364L126 370Z" fill="url(#leftStroke)"></path>
|
|
48
|
+
|
|
49
|
+
<path d="M233 140C242 127 258 118 275 118H387L316 393H280C262 393 245 384 236 369L170 262L198 219L289 356L345 154H275C258 154 246 148 233 140Z" fill="url(#rightStroke)"></path>
|
|
50
|
+
|
|
51
|
+
<path d="M322 156L358 156L300 380L279 380L322 156Z" fill="white" opacity="0.12"></path>
|
|
52
|
+
|
|
53
|
+
<circle cx="355" cy="143" r="10" fill="white" opacity="0.95"></circle>
|
|
54
|
+
<circle cx="355" cy="143" r="22" fill="#5BEFFF" opacity="0.18"></circle>
|
|
55
|
+
</svg>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0" y1="0" x2="512" y2="512" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0%" stop-color="#040B16"></stop>
|
|
5
|
+
<stop offset="100%" stop-color="#07111F"></stop>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
|
|
8
|
+
<linearGradient id="leftStroke" x1="110" y1="120" x2="220" y2="390" gradientUnits="userSpaceOnUse">
|
|
9
|
+
<stop offset="0%" stop-color="#F4F8FF"></stop>
|
|
10
|
+
<stop offset="55%" stop-color="#C9D7E8"></stop>
|
|
11
|
+
<stop offset="100%" stop-color="#7E8FA8"></stop>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
|
|
14
|
+
<linearGradient id="rightStroke" x1="260" y1="120" x2="415" y2="390" gradientUnits="userSpaceOnUse">
|
|
15
|
+
<stop offset="0%" stop-color="#4EEBFF"></stop>
|
|
16
|
+
<stop offset="55%" stop-color="#1788FF"></stop>
|
|
17
|
+
<stop offset="100%" stop-color="#0A2A8B"></stop>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
|
|
20
|
+
<filter id="blueGlow" x="120" y="80" width="320" height="340" filterUnits="userSpaceOnUse">
|
|
21
|
+
<feGaussianBlur stdDeviation="18" result="blur"></feGaussianBlur>
|
|
22
|
+
<feColorMatrix in="blur" type="matrix" values="0 0 0 0 0.18
|
|
23
|
+
0 0 0 0 0.74
|
|
24
|
+
0 0 0 0 1
|
|
25
|
+
0 0 0 0.45 0"></feColorMatrix>
|
|
26
|
+
</filter>
|
|
27
|
+
|
|
28
|
+
<filter id="whiteGlow" x="70" y="80" width="230" height="340" filterUnits="userSpaceOnUse">
|
|
29
|
+
<feGaussianBlur stdDeviation="16" result="blur"></feGaussianBlur>
|
|
30
|
+
<feColorMatrix in="blur" type="matrix" values="0 0 0 0 0.85
|
|
31
|
+
0 0 0 0 0.9
|
|
32
|
+
0 0 0 0 1
|
|
33
|
+
0 0 0 0.22 0"></feColorMatrix>
|
|
34
|
+
</filter>
|
|
35
|
+
</defs>
|
|
36
|
+
|
|
37
|
+
<rect width="512" height="512" rx="96" fill="url(#bg)"></rect>
|
|
38
|
+
|
|
39
|
+
<g filter="url(#whiteGlow)">
|
|
40
|
+
<path d="M126 370L178 145C182 129 196 118 213 118H225C242 118 258 127 267 141L332 249L305 292L213 154L165 364L126 370Z" fill="url(#leftStroke)" opacity="0.9"></path>
|
|
41
|
+
</g>
|
|
42
|
+
|
|
43
|
+
<g filter="url(#blueGlow)">
|
|
44
|
+
<path d="M233 140C242 127 258 118 275 118H387L316 393H280C262 393 245 384 236 369L170 262L198 219L289 356L345 154H275C258 154 246 148 233 140Z" fill="url(#rightStroke)"></path>
|
|
45
|
+
</g>
|
|
46
|
+
|
|
47
|
+
<path d="M126 370L178 145C182 129 196 118 213 118H225C242 118 258 127 267 141L332 249L305 292L213 154L165 364L126 370Z" fill="url(#leftStroke)"></path>
|
|
48
|
+
|
|
49
|
+
<path d="M233 140C242 127 258 118 275 118H387L316 393H280C262 393 245 384 236 369L170 262L198 219L289 356L345 154H275C258 154 246 148 233 140Z" fill="url(#rightStroke)"></path>
|
|
50
|
+
|
|
51
|
+
<path d="M322 156L358 156L300 380L279 380L322 156Z" fill="white" opacity="0.12"></path>
|
|
52
|
+
|
|
53
|
+
<circle cx="355" cy="143" r="10" fill="white" opacity="0.95"></circle>
|
|
54
|
+
<circle cx="355" cy="143" r="22" fill="#5BEFFF" opacity="0.18"></circle>
|
|
55
|
+
</svg>
|
|
@@ -51,17 +51,12 @@
|
|
|
51
51
|
pointer-events: none;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
.nexa-logo {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
color: var(--nexa-primary);
|
|
61
|
-
text-shadow:
|
|
62
|
-
0 0 10px rgba(62, 231, 255, 0.28),
|
|
63
|
-
0 0 24px rgba(62, 231, 255, 0.14);
|
|
64
|
-
|
|
54
|
+
.nexa-logo-img {
|
|
55
|
+
width: 112px;
|
|
56
|
+
height: 112px;
|
|
57
|
+
object-fit: contain;
|
|
58
|
+
position: relative;
|
|
59
|
+
z-index: 1;
|
|
65
60
|
transform: scale(0.2);
|
|
66
61
|
opacity: 0;
|
|
67
62
|
filter: blur(14px);
|
|
@@ -175,8 +170,9 @@
|
|
|
175
170
|
border-radius: 22px;
|
|
176
171
|
}
|
|
177
172
|
|
|
178
|
-
.nexa-logo {
|
|
179
|
-
|
|
173
|
+
.nexa-logo-img {
|
|
174
|
+
width: 92px;
|
|
175
|
+
height: 92px;
|
|
180
176
|
}
|
|
181
177
|
|
|
182
178
|
.nexa-wordmark {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
+
import logo from "../../assets/nexa.svg";
|
|
2
3
|
import "./Home.css";
|
|
3
4
|
|
|
4
5
|
const Home = () => {
|
|
@@ -8,7 +9,7 @@ const Home = () => {
|
|
|
8
9
|
<div className="nexa-logo-wrap">
|
|
9
10
|
<div className="nexa-logo-convex" />
|
|
10
11
|
<div className="nexa-logo-shine" />
|
|
11
|
-
<
|
|
12
|
+
<img src={logo} alt="Nexa Logo" className="nexa-logo-img" />
|
|
12
13
|
</div>
|
|
13
14
|
|
|
14
15
|
<h2 className="nexa-wordmark">Nexa</h2>
|
|
Binary file
|
|
Binary file
|