@tsparticles/template-portfolio 4.4.0 → 4.5.0
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/CHANGELOG.md +6 -2
- package/package.json +5 -5
- package/scripts/prebuild.js +1 -1
- package/template/angular/package.json +15 -15
- package/template/angular/src/app/app.component.ts +3 -1
- package/template/angular-confetti/package.json +16 -16
- package/template/angular-confetti/src/app/app.component.ts +3 -1
- package/template/angular-fireworks/package.json +16 -16
- package/template/angular-fireworks/src/app/app.component.ts +3 -1
- package/template/astro/package.json +6 -6
- package/template/ember/package.json +27 -13
- package/template/inferno/package.json +7 -7
- package/template/inferno/src/App.tsx +1 -1
- package/template/jquery/index.html +70 -0
- package/template/jquery/package.json +5 -5
- package/template/jquery/src/main.ts +2 -2
- package/template/lit/package.json +6 -6
- package/template/lit/src/my-app.ts +5 -5
- package/template/nextjs/package.json +6 -5
- package/template/nextjs/src/app/page.tsx +2 -2
- package/template/nextjs/src/app/providers.tsx +9 -14
- package/template/nuxt2/package.json +12 -6
- package/template/nuxt2/pages/index.vue +6 -7
- package/template/nuxt3/package.json +4 -4
- package/template/nuxt4/package.json +4 -4
- package/template/preact/package.json +5 -5
- package/template/preact/src/App.tsx +1 -1
- package/template/qwik/package.json +6 -5
- package/template/qwik/src/App.tsx +1 -1
- package/template/react/package.json +4 -2
- package/template/riot/package.json +7 -6
- package/template/riot/src/app.riot +0 -1
- package/template/solid/package.json +2 -2
- package/template/stencil/package.json +4 -4
- package/template/stencil/src/components/app-home/app-home.tsx +4 -7
- package/template/svelte/package.json +1 -1
- package/template/vue2/package.json +6 -6
- package/template/vue3/package.json +1 -1
- package/template/webcomponents/index.html +69 -0
- package/template/webcomponents/package.json +5 -5
- package/template/webcomponents/src/main.ts +7 -2
- package/template.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,11 +3,15 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.5.0](https://github.com/tsparticles/tsparticles/compare/v4.4.0...v4.5.0) (2026-10-25)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @tsparticles/template-portfolio
|
|
9
|
+
|
|
6
10
|
# [4.4.0](https://github.com/tsparticles/tsparticles/compare/v4.3.3...v4.4.0) (2026-08-30)
|
|
7
11
|
|
|
8
12
|
### Bug Fixes
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
- various fixes for 4.4.0 ([475d06d](https://github.com/tsparticles/tsparticles/commit/475d06da27e1497bb097c0822fcfcb72d7142456))
|
|
11
15
|
|
|
12
16
|
## [4.3.3](https://github.com/tsparticles/tsparticles/compare/v4.3.2...v4.3.3) (2026-07-23)
|
|
13
17
|
|
|
@@ -25,7 +29,7 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
|
|
|
25
29
|
|
|
26
30
|
### Bug Fixes
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
- fixed angular confetti ([6f25a4a](https://github.com/tsparticles/tsparticles/commit/6f25a4a1eaa69c47f2668316e7b396fe55195f84))
|
|
29
33
|
|
|
30
34
|
## [4.2.1](https://github.com/tsparticles/tsparticles/compare/v4.2.0...v4.2.1) (2026-06-18)
|
|
31
35
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsparticles/template-portfolio",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
"prepack": "pnpm run build"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@tsparticles/configs": "4.
|
|
22
|
-
"@tsparticles/engine": "4.
|
|
23
|
-
"@tsparticles/slim": "4.
|
|
21
|
+
"@tsparticles/configs": "4.5.0",
|
|
22
|
+
"@tsparticles/engine": "4.5.0",
|
|
23
|
+
"@tsparticles/slim": "4.5.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"fs-extra": "^11.3.4"
|
|
27
27
|
},
|
|
28
|
-
"gitHead": "
|
|
28
|
+
"gitHead": "a637373a03c008ab38edaaecf6524ec4b8e332c0"
|
|
29
29
|
}
|
package/scripts/prebuild.js
CHANGED
|
@@ -52,7 +52,7 @@ fs.readFile(libPackage, function (error, data) {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
fs.writeFile(libPackage, JSON.stringify(libObj, undefined, 2)
|
|
55
|
+
fs.writeFile(libPackage, `${JSON.stringify(libObj, undefined, 2)}\n`, "utf-8", function () {
|
|
56
56
|
console.log("template.json dependencies updated successfully");
|
|
57
57
|
});
|
|
58
58
|
});
|
|
@@ -11,25 +11,25 @@
|
|
|
11
11
|
"watch": "ng build --watch --configuration development"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@angular/animations": "~22.
|
|
15
|
-
"@angular/common": "~22.
|
|
16
|
-
"@angular/compiler": "~22.
|
|
17
|
-
"@angular/core": "~22.
|
|
18
|
-
"@angular/forms": "~22.
|
|
19
|
-
"@angular/platform-browser": "~22.
|
|
20
|
-
"@angular/platform-browser-dynamic": "~22.
|
|
21
|
-
"@angular/router": "~22.
|
|
22
|
-
"@tsparticles/angular": "^4.
|
|
23
|
-
"@tsparticles/configs": "^4.
|
|
24
|
-
"@tsparticles/slim": "^4.
|
|
14
|
+
"@angular/animations": "~22.2.2",
|
|
15
|
+
"@angular/common": "~22.2.2",
|
|
16
|
+
"@angular/compiler": "~22.2.2",
|
|
17
|
+
"@angular/core": "~22.2.2",
|
|
18
|
+
"@angular/forms": "~22.2.2",
|
|
19
|
+
"@angular/platform-browser": "~22.2.2",
|
|
20
|
+
"@angular/platform-browser-dynamic": "~22.2.2",
|
|
21
|
+
"@angular/router": "~22.2.2",
|
|
22
|
+
"@tsparticles/angular": "^4.4.0",
|
|
23
|
+
"@tsparticles/configs": "^4.4.0",
|
|
24
|
+
"@tsparticles/slim": "^4.4.0",
|
|
25
25
|
"rxjs": "~7.8.2",
|
|
26
26
|
"tslib": "^2.8.1",
|
|
27
|
-
"zone.js": "~0.16.
|
|
27
|
+
"zone.js": "~0.16.3"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@angular-devkit/build-angular": "~22.
|
|
31
|
-
"@angular/cli": "~22.
|
|
32
|
-
"@angular/compiler-cli": "~22.
|
|
30
|
+
"@angular-devkit/build-angular": "~22.2.2",
|
|
31
|
+
"@angular/cli": "~22.2.2",
|
|
32
|
+
"@angular/compiler-cli": "~22.2.2",
|
|
33
33
|
"typescript": "~6.0.3"
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
|
|
|
3
3
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
|
+
import type { FormGroup } from "@angular/forms";
|
|
6
7
|
|
|
7
8
|
@Component({
|
|
9
|
+
standalone: false,
|
|
8
10
|
selector: "app-root",
|
|
9
11
|
templateUrl: "./app.component.html",
|
|
10
12
|
styleUrls: ["./app.component.css"],
|
|
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
|
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
onSubmit(form:
|
|
45
|
+
onSubmit(form: FormGroup): void {
|
|
44
46
|
alert("Message sent! (demo)");
|
|
45
47
|
form.reset();
|
|
46
48
|
}
|
|
@@ -11,26 +11,26 @@
|
|
|
11
11
|
"watch": "ng build --watch --configuration development"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@angular/animations": "~22.
|
|
15
|
-
"@angular/common": "~22.
|
|
16
|
-
"@angular/compiler": "~22.
|
|
17
|
-
"@angular/core": "~22.
|
|
18
|
-
"@angular/forms": "~22.
|
|
19
|
-
"@angular/platform-browser": "~22.
|
|
20
|
-
"@angular/platform-browser-dynamic": "~22.
|
|
21
|
-
"@angular/router": "~22.
|
|
22
|
-
"@tsparticles/angular": "^4.
|
|
23
|
-
"@tsparticles/engine": "^4.
|
|
24
|
-
"@tsparticles/slim": "^4.
|
|
25
|
-
"@tsparticles/configs": "^4.
|
|
14
|
+
"@angular/animations": "~22.2.2",
|
|
15
|
+
"@angular/common": "~22.2.2",
|
|
16
|
+
"@angular/compiler": "~22.2.2",
|
|
17
|
+
"@angular/core": "~22.2.2",
|
|
18
|
+
"@angular/forms": "~22.2.2",
|
|
19
|
+
"@angular/platform-browser": "~22.2.2",
|
|
20
|
+
"@angular/platform-browser-dynamic": "~22.2.2",
|
|
21
|
+
"@angular/router": "~22.2.2",
|
|
22
|
+
"@tsparticles/angular": "^4.4.0",
|
|
23
|
+
"@tsparticles/engine": "^4.4.0",
|
|
24
|
+
"@tsparticles/slim": "^4.4.0",
|
|
25
|
+
"@tsparticles/configs": "^4.4.0",
|
|
26
26
|
"rxjs": "~7.8.2",
|
|
27
27
|
"tslib": "^2.8.1",
|
|
28
|
-
"zone.js": "~0.16.
|
|
28
|
+
"zone.js": "~0.16.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@angular-devkit/build-angular": "~22.
|
|
32
|
-
"@angular/cli": "~22.
|
|
33
|
-
"@angular/compiler-cli": "~22.
|
|
31
|
+
"@angular-devkit/build-angular": "~22.2.2",
|
|
32
|
+
"@angular/cli": "~22.2.2",
|
|
33
|
+
"@angular/compiler-cli": "~22.2.2",
|
|
34
34
|
"typescript": "~6.0.3"
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
|
|
|
3
3
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
|
+
import type { FormGroup } from "@angular/forms";
|
|
6
7
|
|
|
7
8
|
@Component({
|
|
9
|
+
standalone: false,
|
|
8
10
|
selector: "app-root",
|
|
9
11
|
templateUrl: "./app.component.html",
|
|
10
12
|
styleUrls: ["./app.component.css"],
|
|
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
|
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
onSubmit(form:
|
|
45
|
+
onSubmit(form: FormGroup): void {
|
|
44
46
|
alert("Message sent! (demo)");
|
|
45
47
|
form.reset();
|
|
46
48
|
}
|
|
@@ -11,26 +11,26 @@
|
|
|
11
11
|
"watch": "ng build --watch --configuration development"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@angular/animations": "~22.
|
|
15
|
-
"@angular/common": "~22.
|
|
16
|
-
"@angular/compiler": "~22.
|
|
17
|
-
"@angular/core": "~22.
|
|
18
|
-
"@angular/forms": "~22.
|
|
19
|
-
"@angular/platform-browser": "~22.
|
|
20
|
-
"@angular/platform-browser-dynamic": "~22.
|
|
21
|
-
"@angular/router": "~22.
|
|
22
|
-
"@tsparticles/angular": "^4.
|
|
23
|
-
"@tsparticles/engine": "^4.
|
|
24
|
-
"@tsparticles/slim": "^4.
|
|
25
|
-
"@tsparticles/configs": "^4.
|
|
14
|
+
"@angular/animations": "~22.2.2",
|
|
15
|
+
"@angular/common": "~22.2.2",
|
|
16
|
+
"@angular/compiler": "~22.2.2",
|
|
17
|
+
"@angular/core": "~22.2.2",
|
|
18
|
+
"@angular/forms": "~22.2.2",
|
|
19
|
+
"@angular/platform-browser": "~22.2.2",
|
|
20
|
+
"@angular/platform-browser-dynamic": "~22.2.2",
|
|
21
|
+
"@angular/router": "~22.2.2",
|
|
22
|
+
"@tsparticles/angular": "^4.4.0",
|
|
23
|
+
"@tsparticles/engine": "^4.4.0",
|
|
24
|
+
"@tsparticles/slim": "^4.4.0",
|
|
25
|
+
"@tsparticles/configs": "^4.4.0",
|
|
26
26
|
"rxjs": "~7.8.2",
|
|
27
27
|
"tslib": "^2.8.1",
|
|
28
|
-
"zone.js": "~0.16.
|
|
28
|
+
"zone.js": "~0.16.3"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@angular-devkit/build-angular": "~22.
|
|
32
|
-
"@angular/cli": "~22.
|
|
33
|
-
"@angular/compiler-cli": "~22.
|
|
31
|
+
"@angular-devkit/build-angular": "~22.2.2",
|
|
32
|
+
"@angular/cli": "~22.2.2",
|
|
33
|
+
"@angular/compiler-cli": "~22.2.2",
|
|
34
34
|
"typescript": "~6.0.3"
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -3,8 +3,10 @@ import { NgParticlesService } from "@tsparticles/angular";
|
|
|
3
3
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
|
+
import type { FormGroup } from "@angular/forms";
|
|
6
7
|
|
|
7
8
|
@Component({
|
|
9
|
+
standalone: false,
|
|
8
10
|
selector: "app-root",
|
|
9
11
|
templateUrl: "./app.component.html",
|
|
10
12
|
styleUrls: ["./app.component.css"],
|
|
@@ -40,7 +42,7 @@ export class AppComponent implements OnInit {
|
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
onSubmit(form:
|
|
45
|
+
onSubmit(form: FormGroup): void {
|
|
44
46
|
alert("Message sent! (demo)");
|
|
45
47
|
form.reset();
|
|
46
48
|
}
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"preview": "astro preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/astro": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
16
|
-
"astro": "^
|
|
12
|
+
"@tsparticles/astro": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
|
+
"astro": "^7.3.2"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"typescript": "~
|
|
19
|
+
"typescript": "~6.0.3"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -2,24 +2,38 @@
|
|
|
2
2
|
"name": "{{packageName}}",
|
|
3
3
|
"private": true,
|
|
4
4
|
"version": "{{version}}",
|
|
5
|
-
"type": "module",
|
|
6
5
|
"scripts": {
|
|
7
6
|
"dev": "ember serve",
|
|
8
7
|
"build": "ember build",
|
|
9
|
-
"preview": "ember serve
|
|
10
|
-
|
|
8
|
+
"preview": "ember serve"
|
|
9
|
+
},
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"@ember/optional-features": "^3.0.0",
|
|
12
|
+
"@glimmer/component": "^2.1.1",
|
|
13
|
+
"@glimmer/tracking": "^1.1.2",
|
|
14
|
+
"broccoli-asset-rev": "^3.0.0",
|
|
15
|
+
"ember-auto-import": "^2.13.1",
|
|
16
|
+
"ember-cli": "~6.12.0",
|
|
17
|
+
"ember-cli-babel": "^8.3.1",
|
|
18
|
+
"ember-cli-htmlbars": "^7.0.1",
|
|
19
|
+
"ember-cli-inject-live-reload": "^2.1.0",
|
|
20
|
+
"ember-cli-sri": "^2.1.1",
|
|
21
|
+
"ember-cli-terser": "^4.0.2",
|
|
22
|
+
"ember-load-initializers": "^3.0.1",
|
|
23
|
+
"ember-modifier": "^4.3.0",
|
|
24
|
+
"ember-resolver": "^13.2.0",
|
|
25
|
+
"ember-source": "~6.12.0",
|
|
26
|
+
"loader.js": "^4.7.0",
|
|
27
|
+
"typescript": "^6.0.3",
|
|
28
|
+
"webpack": "^5.106.1"
|
|
11
29
|
},
|
|
12
30
|
"dependencies": {
|
|
13
|
-
"@tsparticles/
|
|
14
|
-
"@tsparticles/
|
|
15
|
-
"@tsparticles/
|
|
16
|
-
"@tsparticles/
|
|
17
|
-
"ember-source": "^6.0.0"
|
|
31
|
+
"@tsparticles/configs": "^4.4.0",
|
|
32
|
+
"@tsparticles/ember": "^4.4.0",
|
|
33
|
+
"@tsparticles/engine": "^4.4.0",
|
|
34
|
+
"@tsparticles/slim": "^4.4.0"
|
|
18
35
|
},
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"@glimmer/component": "^2.0.0",
|
|
22
|
-
"@glimmer/tracking": "^2.0.0",
|
|
23
|
-
"typescript": "~5.8.0"
|
|
36
|
+
"ember": {
|
|
37
|
+
"edition": "octane"
|
|
24
38
|
}
|
|
25
39
|
}
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/inferno": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
16
|
-
"inferno": "^9.
|
|
12
|
+
"@tsparticles/inferno": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
|
+
"inferno": "^9.1.0",
|
|
17
|
+
"inferno-create-element": "^9.1.0"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"typescript": "~5.8.0",
|
|
20
|
-
"vite": "^
|
|
21
|
-
"vite-plugin-inferno": "^1.0.0"
|
|
21
|
+
"vite": "^8.3.1"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from "inferno";
|
|
2
|
-
import Particles,
|
|
2
|
+
import { Particles, initParticlesEngine } from "@tsparticles/inferno";
|
|
3
3
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>{{projectName}}</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<nav id="navbar">
|
|
10
|
+
<a href="#hero" class="nav-link">Home</a>
|
|
11
|
+
<a href="#about" class="nav-link">About</a>
|
|
12
|
+
<a href="#projects" class="nav-link">Projects</a>
|
|
13
|
+
<a href="#skills" class="nav-link">Skills</a>
|
|
14
|
+
<a href="#contact" class="nav-link">Contact</a>
|
|
15
|
+
</nav>
|
|
16
|
+
<section id="hero" class="section">
|
|
17
|
+
<div class="hero-content">
|
|
18
|
+
<h1>Hello, I'm <span class="highlight">Your Name</span></h1>
|
|
19
|
+
<p class="subtitle">Full-Stack Developer & Designer</p>
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
22
|
+
<section id="about" class="section content-section">
|
|
23
|
+
<div class="container">
|
|
24
|
+
<h2>About Me</h2>
|
|
25
|
+
<p>A passionate developer who loves building beautiful and performant web applications. Experienced in modern JavaScript frameworks, cloud infrastructure, and UI/UX design.</p>
|
|
26
|
+
</div>
|
|
27
|
+
</section>
|
|
28
|
+
<section id="projects" class="section content-section">
|
|
29
|
+
<div class="container">
|
|
30
|
+
<h2>Projects</h2>
|
|
31
|
+
<div class="project-grid">
|
|
32
|
+
<div class="project-card">
|
|
33
|
+
<h3>Project One</h3>
|
|
34
|
+
<p>A web application built with React and TypeScript.</p>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="project-card">
|
|
37
|
+
<h3>Project Two</h3>
|
|
38
|
+
<p>Real-time dashboard with data visualization.</p>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="project-card">
|
|
41
|
+
<h3>Project Three</h3>
|
|
42
|
+
<p>Mobile-first e-commerce platform.</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</section>
|
|
47
|
+
<section id="skills" class="section content-section">
|
|
48
|
+
<div class="container">
|
|
49
|
+
<h2>Skills</h2>
|
|
50
|
+
<div class="skill-bar"><span class="skill-name">TypeScript</span><div class="bar"><div class="fill" style="width: 90%"></div></div></div>
|
|
51
|
+
<div class="skill-bar"><span class="skill-name">React</span><div class="bar"><div class="fill" style="width: 85%"></div></div></div>
|
|
52
|
+
<div class="skill-bar"><span class="skill-name">Node.js</span><div class="bar"><div class="fill" style="width: 80%"></div></div></div>
|
|
53
|
+
<div class="skill-bar"><span class="skill-name">CSS</span><div class="bar"><div class="fill" style="width: 88%"></div></div></div>
|
|
54
|
+
</div>
|
|
55
|
+
</section>
|
|
56
|
+
<section id="contact" class="section content-section">
|
|
57
|
+
<div class="container">
|
|
58
|
+
<h2>Contact</h2>
|
|
59
|
+
<form id="contactForm">
|
|
60
|
+
<input type="text" placeholder="Your Name" required />
|
|
61
|
+
<input type="email" placeholder="Your Email" required />
|
|
62
|
+
<textarea placeholder="Your Message" rows="5" required></textarea>
|
|
63
|
+
<button type="submit">Send Message</button>
|
|
64
|
+
</form>
|
|
65
|
+
</div>
|
|
66
|
+
</section>
|
|
67
|
+
<div id="tsparticles"></div>
|
|
68
|
+
<script type="module" src="/src/main.ts"></script>
|
|
69
|
+
</body>
|
|
70
|
+
</html>
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/jquery": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/jquery": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"jquery": "^3.7.1"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/jquery": "^3.5.30",
|
|
20
20
|
"typescript": "~5.8.0",
|
|
21
|
-
"vite": "^
|
|
21
|
+
"vite": "^8.3.1"
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./style.css";
|
|
2
2
|
import $ from "jquery";
|
|
3
|
-
import "jquery
|
|
3
|
+
import "@tsparticles/jquery";
|
|
4
4
|
import { loadSlim } from "@tsparticles/slim";
|
|
5
5
|
import configs from "@tsparticles/configs";
|
|
6
6
|
import { tsParticles } from "@tsparticles/engine";
|
|
@@ -11,7 +11,7 @@ import { tsParticles } from "@tsparticles/engine";
|
|
|
11
11
|
const keys = Object.keys(configs);
|
|
12
12
|
const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
|
|
13
13
|
|
|
14
|
-
$("#tsparticles").particles().
|
|
14
|
+
$("#tsparticles").particles().load({
|
|
15
15
|
...configs[randomKey],
|
|
16
16
|
fullScreen: { enable: true, zIndex: -1 },
|
|
17
17
|
});
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/lit": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
16
|
-
"lit": "^3.
|
|
12
|
+
"@tsparticles/lit": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
|
+
"lit": "^3.3.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"typescript": "~5.8.0",
|
|
20
|
-
"vite": "^
|
|
20
|
+
"vite": "^8.3.1"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { LitElement, html } from "lit";
|
|
1
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
2
2
|
import { customElement, state } from "lit/decorators.js";
|
|
3
|
-
import {
|
|
3
|
+
import { initParticlesEngine } from "@tsparticles/lit";
|
|
4
4
|
import { loadSlim } from "@tsparticles/slim";
|
|
5
5
|
import configs from "@tsparticles/configs";
|
|
6
6
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
7
|
-
import style from "./style.css"
|
|
7
|
+
import style from "./style.css?inline";
|
|
8
8
|
|
|
9
9
|
const keys = Object.keys(configs);
|
|
10
10
|
const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
|
|
@@ -15,7 +15,7 @@ const options: ISourceOptions = {
|
|
|
15
15
|
|
|
16
16
|
@customElement("my-app")
|
|
17
17
|
export class MyApp extends LitElement {
|
|
18
|
-
static styles = [style];
|
|
18
|
+
static styles = [unsafeCSS(style)];
|
|
19
19
|
|
|
20
20
|
@state()
|
|
21
21
|
private projects = [
|
|
@@ -36,7 +36,7 @@ export class MyApp extends LitElement {
|
|
|
36
36
|
|
|
37
37
|
connectedCallback(): void {
|
|
38
38
|
super.connectedCallback();
|
|
39
|
-
void
|
|
39
|
+
void initParticlesEngine(async (engine) => {
|
|
40
40
|
await loadSlim(engine);
|
|
41
41
|
});
|
|
42
42
|
}
|
|
@@ -9,17 +9,18 @@
|
|
|
9
9
|
"preview": "next start"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/nextjs": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/nextjs": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"next": "^15.0.0",
|
|
17
17
|
"react": "^19.2.5",
|
|
18
18
|
"react-dom": "^19.2.5"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
+
"@types/node": "^24.10.1",
|
|
21
22
|
"@types/react": "^19.0.0",
|
|
22
23
|
"@types/react-dom": "^19.0.0",
|
|
23
|
-
"typescript": "
|
|
24
|
+
"typescript": "^6.0.3"
|
|
24
25
|
}
|
|
25
26
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NextParticles } from "@tsparticles/nextjs";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
6
|
import { ParticlesProvider } from "./providers";
|
|
@@ -36,7 +36,7 @@ export default function Home() {
|
|
|
36
36
|
|
|
37
37
|
return (
|
|
38
38
|
<ParticlesProvider>
|
|
39
|
-
<
|
|
39
|
+
<NextParticles id="tsparticles" options={options} />
|
|
40
40
|
<nav id="navbar">
|
|
41
41
|
{navItems.map((item) => (
|
|
42
42
|
<a key={item} href={`#${item.toLowerCase()}`} className="nav-link">{item}</a>
|
|
@@ -1,20 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { NextParticlesProvider } from "@tsparticles/nextjs";
|
|
4
4
|
import { loadSlim } from "@tsparticles/slim";
|
|
5
|
-
import {
|
|
5
|
+
import type { Engine } from "@tsparticles/engine";
|
|
6
6
|
|
|
7
7
|
export function ParticlesProvider({ children }: { children: React.ReactNode }) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
void initParticlesEngine(async (engine) => {
|
|
14
|
-
await loadSlim(engine);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}, []);
|
|
18
|
-
|
|
19
|
-
return <>{children}</>;
|
|
8
|
+
return (
|
|
9
|
+
<NextParticlesProvider init={async (engine: Engine): Promise<void> => { await loadSlim(engine); }}>
|
|
10
|
+
{children}
|
|
11
|
+
</NextParticlesProvider>
|
|
12
|
+
);
|
|
20
13
|
}
|
|
14
|
+
|
|
15
|
+
export default ParticlesProvider;
|
|
@@ -8,14 +8,20 @@
|
|
|
8
8
|
"preview": "nuxt start"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@tsparticles/nuxt2": "^4.
|
|
12
|
-
"@tsparticles/engine": "^4.
|
|
13
|
-
"@tsparticles/slim": "^4.
|
|
14
|
-
"@tsparticles/configs": "^4.
|
|
11
|
+
"@tsparticles/nuxt2": "^4.4.0",
|
|
12
|
+
"@tsparticles/engine": "^4.4.0",
|
|
13
|
+
"@tsparticles/slim": "^4.4.0",
|
|
14
|
+
"@tsparticles/configs": "^4.4.0",
|
|
15
15
|
"nuxt": "^2.18.0",
|
|
16
16
|
"vue": "^2.7.16"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"
|
|
20
|
-
}
|
|
19
|
+
"@babel/preset-env": "^7.29.0"
|
|
20
|
+
},
|
|
21
|
+
"browserslist": [
|
|
22
|
+
"chrome 58",
|
|
23
|
+
"edge 16",
|
|
24
|
+
"firefox 57",
|
|
25
|
+
"safari 11"
|
|
26
|
+
]
|
|
21
27
|
}
|
|
@@ -50,15 +50,14 @@
|
|
|
50
50
|
</div>
|
|
51
51
|
</template>
|
|
52
52
|
|
|
53
|
-
<script
|
|
53
|
+
<script>
|
|
54
54
|
import Vue from "vue";
|
|
55
55
|
import configs from "@tsparticles/configs";
|
|
56
|
-
import type { ISourceOptions } from "@tsparticles/engine";
|
|
57
56
|
|
|
58
57
|
const keys = Object.keys(configs);
|
|
59
|
-
const randomKey = keys[Math.floor(Math.random() * keys.length)]
|
|
60
|
-
const options
|
|
61
|
-
...
|
|
58
|
+
const randomKey = keys[Math.floor(Math.random() * keys.length)];
|
|
59
|
+
const options = {
|
|
60
|
+
...configs[randomKey],
|
|
62
61
|
fullScreen: { enable: true, zIndex: -1 },
|
|
63
62
|
};
|
|
64
63
|
|
|
@@ -82,10 +81,10 @@ export default Vue.extend({
|
|
|
82
81
|
};
|
|
83
82
|
},
|
|
84
83
|
methods: {
|
|
85
|
-
handleSubmit(e
|
|
84
|
+
handleSubmit(e) {
|
|
86
85
|
e.preventDefault();
|
|
87
86
|
alert("Message sent! (demo)");
|
|
88
|
-
|
|
87
|
+
e.target.reset();
|
|
89
88
|
},
|
|
90
89
|
},
|
|
91
90
|
});
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"preview": "nuxt preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/nuxt3": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/nuxt3": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"nuxt": "^3.16.0",
|
|
17
17
|
"vue": "^3.5.0"
|
|
18
18
|
},
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"preview": "nuxt preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/nuxt4": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/nuxt4": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"nuxt": "^4.0.0",
|
|
17
17
|
"vue": "^3.5.0"
|
|
18
18
|
},
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/preact": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/preact": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"preact": "^10.26.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@preact/preset-vite": "^
|
|
19
|
+
"@preact/preset-vite": "^2.10.1",
|
|
20
20
|
"typescript": "~5.8.0"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -9,13 +9,14 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/qwik": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/qwik": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"@builder.io/qwik": "^1.12.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"typescript": "~5.8.0"
|
|
19
|
+
"typescript": "~5.8.0",
|
|
20
|
+
"vite": "^7.3.6"
|
|
20
21
|
}
|
|
21
22
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { component$, useVisibleTask$, useSignal } from "@builder.io/qwik";
|
|
2
|
-
import Particles,
|
|
2
|
+
import { Particles, initParticlesEngine } from "@tsparticles/qwik";
|
|
3
3
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
5
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"react": "^19.2.5",
|
|
13
13
|
"react-dom": "^19.2.5",
|
|
14
|
-
"@tsparticles/react": "^4.
|
|
14
|
+
"@tsparticles/react": "^4.4.0"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"@vitejs/plugin-react": "^6.0.1"
|
|
17
|
+
"@vitejs/plugin-react": "^6.0.1",
|
|
18
|
+
"@types/react": "^19.2.14",
|
|
19
|
+
"@types/react-dom": "^19.2.3"
|
|
18
20
|
}
|
|
19
21
|
}
|
|
@@ -9,15 +9,16 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/riot": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
16
|
-
"riot": "^
|
|
12
|
+
"@tsparticles/riot": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
|
+
"riot": "^10.1.6"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"rollup-plugin-riot": "^9.0.0",
|
|
20
20
|
"typescript": "~5.8.0",
|
|
21
|
-
"vite": "^
|
|
21
|
+
"vite": "^8.3.1",
|
|
22
|
+
"@riotjs/compiler": "^10.0.4"
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"preview": "stencil build --dev --watch"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/stencil": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/stencil": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0",
|
|
16
16
|
"@stencil/core": "^4.20.0"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Component, State, h } from "@stencil/core";
|
|
2
|
-
import { ParticlesBase } from "@tsparticles/stencil";
|
|
3
2
|
import { loadSlim } from "@tsparticles/slim";
|
|
3
|
+
import { tsParticles, type ISourceOptions } from "@tsparticles/engine";
|
|
4
4
|
import configs from "@tsparticles/configs";
|
|
5
|
-
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
5
|
|
|
7
6
|
const keys = Object.keys(configs);
|
|
8
7
|
const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
|
|
@@ -35,10 +34,8 @@ export class AppHome {
|
|
|
35
34
|
{ name: "CSS", pct: 88 },
|
|
36
35
|
];
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
await loadSlim(engine);
|
|
41
|
-
});
|
|
37
|
+
async componentDidLoad(): Promise<void> {
|
|
38
|
+
await loadSlim(tsParticles);
|
|
42
39
|
}
|
|
43
40
|
|
|
44
41
|
private handleSubmit(e: Event): void {
|
|
@@ -50,7 +47,7 @@ export class AppHome {
|
|
|
50
47
|
render() {
|
|
51
48
|
return (
|
|
52
49
|
<div>
|
|
53
|
-
<
|
|
50
|
+
<stencil-particles id="tsparticles" options={options}></stencil-particles>
|
|
54
51
|
<nav id="navbar">
|
|
55
52
|
{this.navItems.map((item) => (
|
|
56
53
|
<a href={`#${item.toLowerCase()}`} class="nav-link">{item}</a>
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
"preview": "vite preview"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@tsparticles/vue2": "^4.
|
|
12
|
-
"@tsparticles/engine": "^4.
|
|
13
|
-
"@tsparticles/slim": "^4.
|
|
14
|
-
"@tsparticles/configs": "^4.
|
|
11
|
+
"@tsparticles/vue2": "^4.4.0",
|
|
12
|
+
"@tsparticles/engine": "^4.4.0",
|
|
13
|
+
"@tsparticles/slim": "^4.4.0",
|
|
14
|
+
"@tsparticles/configs": "^4.4.0",
|
|
15
15
|
"vue": "^2.7.16"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@vitejs/plugin-vue2": "^2.3.
|
|
18
|
+
"@vitejs/plugin-vue2": "^2.3.4",
|
|
19
19
|
"typescript": "~5.8.0",
|
|
20
|
-
"vite": "^7.
|
|
20
|
+
"vite": "^7.3.6"
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>{{projectName}}</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<nav id="navbar">
|
|
10
|
+
<a href="#hero" class="nav-link">Home</a>
|
|
11
|
+
<a href="#about" class="nav-link">About</a>
|
|
12
|
+
<a href="#projects" class="nav-link">Projects</a>
|
|
13
|
+
<a href="#skills" class="nav-link">Skills</a>
|
|
14
|
+
<a href="#contact" class="nav-link">Contact</a>
|
|
15
|
+
</nav>
|
|
16
|
+
<section id="hero" class="section">
|
|
17
|
+
<div class="hero-content">
|
|
18
|
+
<h1>Hello, I'm <span class="highlight">Your Name</span></h1>
|
|
19
|
+
<p class="subtitle">Full-Stack Developer & Designer</p>
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
22
|
+
<section id="about" class="section content-section">
|
|
23
|
+
<div class="container">
|
|
24
|
+
<h2>About Me</h2>
|
|
25
|
+
<p>A passionate developer who loves building beautiful and performant web applications. Experienced in modern JavaScript frameworks, cloud infrastructure, and UI/UX design.</p>
|
|
26
|
+
</div>
|
|
27
|
+
</section>
|
|
28
|
+
<section id="projects" class="section content-section">
|
|
29
|
+
<div class="container">
|
|
30
|
+
<h2>Projects</h2>
|
|
31
|
+
<div class="project-grid">
|
|
32
|
+
<div class="project-card">
|
|
33
|
+
<h3>Project One</h3>
|
|
34
|
+
<p>A web application built with React and TypeScript.</p>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="project-card">
|
|
37
|
+
<h3>Project Two</h3>
|
|
38
|
+
<p>Real-time dashboard with data visualization.</p>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="project-card">
|
|
41
|
+
<h3>Project Three</h3>
|
|
42
|
+
<p>Mobile-first e-commerce platform.</p>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</section>
|
|
47
|
+
<section id="skills" class="section content-section">
|
|
48
|
+
<div class="container">
|
|
49
|
+
<h2>Skills</h2>
|
|
50
|
+
<div class="skill-bar"><span class="skill-name">TypeScript</span><div class="bar"><div class="fill" style="width: 90%"></div></div></div>
|
|
51
|
+
<div class="skill-bar"><span class="skill-name">React</span><div class="bar"><div class="fill" style="width: 85%"></div></div></div>
|
|
52
|
+
<div class="skill-bar"><span class="skill-name">Node.js</span><div class="bar"><div class="fill" style="width: 80%"></div></div></div>
|
|
53
|
+
<div class="skill-bar"><span class="skill-name">CSS</span><div class="bar"><div class="fill" style="width: 88%"></div></div></div>
|
|
54
|
+
</div>
|
|
55
|
+
</section>
|
|
56
|
+
<section id="contact" class="section content-section">
|
|
57
|
+
<div class="container">
|
|
58
|
+
<h2>Contact</h2>
|
|
59
|
+
<form id="contactForm">
|
|
60
|
+
<input type="text" placeholder="Your Name" required />
|
|
61
|
+
<input type="email" placeholder="Your Email" required />
|
|
62
|
+
<textarea placeholder="Your Message" rows="5" required></textarea>
|
|
63
|
+
<button type="submit">Send Message</button>
|
|
64
|
+
</form>
|
|
65
|
+
</div>
|
|
66
|
+
</section>
|
|
67
|
+
<script type="module" src="/src/main.ts"></script>
|
|
68
|
+
</body>
|
|
69
|
+
</html>
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"preview": "vite preview"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@tsparticles/webcomponents": "^4.
|
|
13
|
-
"@tsparticles/engine": "^4.
|
|
14
|
-
"@tsparticles/slim": "^4.
|
|
15
|
-
"@tsparticles/configs": "^4.
|
|
12
|
+
"@tsparticles/webcomponents": "^4.4.0",
|
|
13
|
+
"@tsparticles/engine": "^4.4.0",
|
|
14
|
+
"@tsparticles/slim": "^4.4.0",
|
|
15
|
+
"@tsparticles/configs": "^4.4.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"typescript": "~5.8.0",
|
|
19
|
-
"vite": "^
|
|
19
|
+
"vite": "^8.3.1"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import "./style.css";
|
|
2
|
-
import {
|
|
2
|
+
import { tsParticles } from "@tsparticles/engine";
|
|
3
|
+
import { defineParticlesElement, initParticlesEngine } from "@tsparticles/webcomponents";
|
|
3
4
|
import { loadSlim } from "@tsparticles/slim";
|
|
4
5
|
import configs from "@tsparticles/configs";
|
|
5
6
|
import type { ISourceOptions } from "@tsparticles/engine";
|
|
6
7
|
|
|
8
|
+
globalThis.tsParticles = tsParticles;
|
|
9
|
+
|
|
7
10
|
(async () => {
|
|
8
|
-
await
|
|
11
|
+
await initParticlesEngine(async (engine) => {
|
|
9
12
|
await loadSlim(engine);
|
|
10
13
|
});
|
|
11
14
|
|
|
15
|
+
defineParticlesElement();
|
|
16
|
+
|
|
12
17
|
const keys = Object.keys(configs);
|
|
13
18
|
const randomKey = keys[Math.floor(Math.random() * keys.length)] as keyof typeof configs;
|
|
14
19
|
const options: ISourceOptions = {
|
package/template.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"package": {
|
|
3
3
|
"dependencies": {
|
|
4
|
-
"@tsparticles/engine": "^4.
|
|
5
|
-
"@tsparticles/slim": "^4.
|
|
6
|
-
"@tsparticles/configs": "^4.
|
|
4
|
+
"@tsparticles/engine": "^4.5.0",
|
|
5
|
+
"@tsparticles/slim": "^4.5.0",
|
|
6
|
+
"@tsparticles/configs": "^4.5.0"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
|
9
9
|
"typescript": "^6.0.3",
|
|
10
|
-
"vite": "^8.1
|
|
10
|
+
"vite": "^8.3.1"
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
}
|
|
13
|
+
}
|