Florin Bobiș commited on
Commit
2f819d6
1 Parent(s): 869bee4
package-lock.json CHANGED
@@ -12,6 +12,8 @@
12
  "@radix-ui/react-dropdown-menu": "^2.1.1",
13
  "@radix-ui/react-icons": "^1.3.0",
14
  "@radix-ui/react-slot": "^1.1.0",
 
 
15
  "@tabler/icons-react": "^3.17.0",
16
  "@tsparticles/engine": "^3.5.0",
17
  "@tsparticles/react": "^3.0.0",
@@ -27,7 +29,9 @@
27
  "sharp": "^0.33.5",
28
  "simplex-noise": "^4.0.3",
29
  "tailwind-merge": "^2.5.2",
30
- "tailwindcss-animate": "^1.0.7"
 
 
31
  },
32
  "devDependencies": {
33
  "@types/node": "^20",
@@ -52,6 +56,18 @@
52
  "url": "https://github.com/sponsors/sindresorhus"
53
  }
54
  },
 
 
 
 
 
 
 
 
 
 
 
 
55
  "node_modules/@emnapi/runtime": {
56
  "version": "1.2.0",
57
  "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
@@ -651,6 +667,24 @@
651
  "@jridgewell/sourcemap-codec": "^1.4.14"
652
  }
653
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
654
  "node_modules/@next/env": {
655
  "version": "14.2.13",
656
  "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz",
@@ -1425,6 +1459,181 @@
1425
  "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==",
1426
  "license": "MIT"
1427
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1428
  "node_modules/@rtsao/scc": {
1429
  "version": "1.1.0",
1430
  "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
@@ -1873,6 +2082,58 @@
1873
  "@tsparticles/engine": "^3.5.0"
1874
  }
1875
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1876
  "node_modules/@types/json5": {
1877
  "version": "0.0.29",
1878
  "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
@@ -1890,18 +2151,22 @@
1890
  "undici-types": "~6.19.2"
1891
  }
1892
  },
 
 
 
 
 
 
1893
  "node_modules/@types/prop-types": {
1894
  "version": "15.7.13",
1895
  "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
1896
  "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
1897
- "devOptional": true,
1898
  "license": "MIT"
1899
  },
1900
  "node_modules/@types/react": {
1901
  "version": "18.3.8",
1902
  "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz",
1903
  "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==",
1904
- "devOptional": true,
1905
  "license": "MIT",
1906
  "dependencies": {
1907
  "@types/prop-types": "*",
@@ -1918,6 +2183,42 @@
1918
  "@types/react": "*"
1919
  }
1920
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1921
  "node_modules/@typescript-eslint/eslint-plugin": {
1922
  "version": "8.6.0",
1923
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz",
@@ -2141,6 +2442,40 @@
2141
  "dev": true,
2142
  "license": "ISC"
2143
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2144
  "node_modules/acorn": {
2145
  "version": "8.12.1",
2146
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
@@ -2466,6 +2801,35 @@
2466
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2467
  "license": "MIT"
2468
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2469
  "node_modules/binary-extensions": {
2470
  "version": "2.3.0",
2471
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
@@ -2501,6 +2865,30 @@
2501
  "node": ">=8"
2502
  }
2503
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2504
  "node_modules/busboy": {
2505
  "version": "1.6.0",
2506
  "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
@@ -2551,6 +2939,15 @@
2551
  "node": ">= 6"
2552
  }
2553
  },
 
 
 
 
 
 
 
 
 
2554
  "node_modules/caniuse-lite": {
2555
  "version": "1.0.30001662",
2556
  "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
@@ -2717,6 +3114,24 @@
2717
  "dev": true,
2718
  "license": "MIT"
2719
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2720
  "node_modules/cross-spawn": {
2721
  "version": "7.0.3",
2722
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -2747,9 +3162,155 @@
2747
  "version": "3.1.3",
2748
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
2749
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
2750
- "devOptional": true,
2751
  "license": "MIT"
2752
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2753
  "node_modules/damerau-levenshtein": {
2754
  "version": "1.0.8",
2755
  "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
@@ -2757,6 +3318,18 @@
2757
  "dev": true,
2758
  "license": "BSD-2-Clause"
2759
  },
 
 
 
 
 
 
 
 
 
 
 
 
2760
  "node_modules/data-view-buffer": {
2761
  "version": "1.0.1",
2762
  "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
@@ -2811,6 +3384,12 @@
2811
  "url": "https://github.com/sponsors/ljharb"
2812
  }
2813
  },
 
 
 
 
 
 
2814
  "node_modules/debug": {
2815
  "version": "4.3.7",
2816
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
@@ -2905,6 +3484,24 @@
2905
  "url": "https://github.com/sponsors/ljharb"
2906
  }
2907
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2908
  "node_modules/detect-libc": {
2909
  "version": "2.0.3",
2910
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@@ -2945,6 +3542,18 @@
2945
  "node": ">=6.0.0"
2946
  }
2947
  },
 
 
 
 
 
 
 
 
 
 
 
 
2948
  "node_modules/eastasianwidth": {
2949
  "version": "0.2.0",
2950
  "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -3677,6 +4286,12 @@
3677
  "reusify": "^1.0.4"
3678
  }
3679
  },
 
 
 
 
 
 
3680
  "node_modules/file-entry-cache": {
3681
  "version": "6.0.1",
3682
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -3767,6 +4382,15 @@
3767
  "url": "https://github.com/sponsors/isaacs"
3768
  }
3769
  },
 
 
 
 
 
 
 
 
 
3770
  "node_modules/framer-motion": {
3771
  "version": "11.5.6",
3772
  "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.5.6.tgz",
@@ -4002,6 +4626,12 @@
4002
  "url": "https://github.com/sponsors/ljharb"
4003
  }
4004
  },
 
 
 
 
 
 
4005
  "node_modules/gopd": {
4006
  "version": "1.0.1",
4007
  "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
@@ -4028,6 +4658,17 @@
4028
  "dev": true,
4029
  "license": "MIT"
4030
  },
 
 
 
 
 
 
 
 
 
 
 
4031
  "node_modules/has-bigints": {
4032
  "version": "1.0.2",
4033
  "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
@@ -4115,6 +4756,32 @@
4115
  "node": ">= 0.4"
4116
  }
4117
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4118
  "node_modules/ignore": {
4119
  "version": "5.3.2",
4120
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -4125,6 +4792,12 @@
4125
  "node": ">= 4"
4126
  }
4127
  },
 
 
 
 
 
 
4128
  "node_modules/import-fresh": {
4129
  "version": "3.3.0",
4130
  "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -4152,6 +4825,15 @@
4152
  "node": ">=0.8.19"
4153
  }
4154
  },
 
 
 
 
 
 
 
 
 
4155
  "node_modules/inflight": {
4156
  "version": "1.0.6",
4157
  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -4186,6 +4868,15 @@
4186
  "node": ">= 0.4"
4187
  }
4188
  },
 
 
 
 
 
 
 
 
 
4189
  "node_modules/invariant": {
4190
  "version": "2.2.4",
4191
  "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
@@ -4483,6 +5174,12 @@
4483
  "node": ">=8"
4484
  }
4485
  },
 
 
 
 
 
 
4486
  "node_modules/is-regex": {
4487
  "version": "1.1.4",
4488
  "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@@ -4647,6 +5344,27 @@
4647
  "set-function-name": "^2.0.1"
4648
  }
4649
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4650
  "node_modules/jackspeak": {
4651
  "version": "2.3.6",
4652
  "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
@@ -4743,6 +5461,18 @@
4743
  "node": ">=4.0"
4744
  }
4745
  },
 
 
 
 
 
 
 
 
 
 
 
 
4746
  "node_modules/keyv": {
4747
  "version": "4.5.4",
4748
  "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -4787,6 +5517,15 @@
4787
  "node": ">= 0.8.0"
4788
  }
4789
  },
 
 
 
 
 
 
 
 
 
4790
  "node_modules/lilconfig": {
4791
  "version": "2.1.0",
4792
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -4818,6 +5557,12 @@
4818
  "url": "https://github.com/sponsors/sindresorhus"
4819
  }
4820
  },
 
 
 
 
 
 
4821
  "node_modules/lodash.merge": {
4822
  "version": "4.6.2",
4823
  "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -4852,6 +5597,16 @@
4852
  "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
4853
  }
4854
  },
 
 
 
 
 
 
 
 
 
 
4855
  "node_modules/merge2": {
4856
  "version": "1.4.1",
4857
  "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -4861,6 +5616,21 @@
4861
  "node": ">= 8"
4862
  }
4863
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4864
  "node_modules/micromatch": {
4865
  "version": "4.0.8",
4866
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
@@ -5515,6 +6285,12 @@
5515
  "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
5516
  "license": "MIT"
5517
  },
 
 
 
 
 
 
5518
  "node_modules/prelude-ls": {
5519
  "version": "1.2.1",
5520
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -5525,11 +6301,20 @@
5525
  "node": ">= 0.8.0"
5526
  }
5527
  },
 
 
 
 
 
 
 
 
 
 
5528
  "node_modules/prop-types": {
5529
  "version": "15.8.1",
5530
  "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
5531
  "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
5532
- "dev": true,
5533
  "license": "MIT",
5534
  "dependencies": {
5535
  "loose-envify": "^1.4.0",
@@ -5567,6 +6352,12 @@
5567
  ],
5568
  "license": "MIT"
5569
  },
 
 
 
 
 
 
5570
  "node_modules/react": {
5571
  "version": "18.3.1",
5572
  "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
@@ -5579,6 +6370,18 @@
5579
  "node": ">=0.10.0"
5580
  }
5581
  },
 
 
 
 
 
 
 
 
 
 
 
 
5582
  "node_modules/react-dom": {
5583
  "version": "18.3.1",
5584
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
@@ -5596,9 +6399,33 @@
5596
  "version": "16.13.1",
5597
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
5598
  "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
5599
- "dev": true,
5600
  "license": "MIT"
5601
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5602
  "node_modules/react-remove-scroll": {
5603
  "version": "2.5.7",
5604
  "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
@@ -5712,6 +6539,12 @@
5712
  "url": "https://github.com/sponsors/ljharb"
5713
  }
5714
  },
 
 
 
 
 
 
5715
  "node_modules/regexp.prototype.flags": {
5716
  "version": "1.5.2",
5717
  "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
@@ -5731,6 +6564,15 @@
5731
  "url": "https://github.com/sponsors/ljharb"
5732
  }
5733
  },
 
 
 
 
 
 
 
 
 
5734
  "node_modules/resolve": {
5735
  "version": "1.22.8",
5736
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -5817,6 +6659,12 @@
5817
  "url": "https://github.com/sponsors/isaacs"
5818
  }
5819
  },
 
 
 
 
 
 
5820
  "node_modules/run-parallel": {
5821
  "version": "1.2.0",
5822
  "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -6032,6 +6880,12 @@
6032
  "is-arrayish": "^0.3.1"
6033
  }
6034
  },
 
 
 
 
 
 
6035
  "node_modules/simplex-noise": {
6036
  "version": "4.0.3",
6037
  "resolved": "https://registry.npmjs.org/simplex-noise/-/simplex-noise-4.0.3.tgz",
@@ -6047,6 +6901,34 @@
6047
  "node": ">=0.10.0"
6048
  }
6049
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6050
  "node_modules/stop-iteration-iterator": {
6051
  "version": "1.0.0",
6052
  "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
@@ -6352,6 +7234,15 @@
6352
  "url": "https://github.com/sponsors/ljharb"
6353
  }
6354
  },
 
 
 
 
 
 
 
 
 
6355
  "node_modules/tailwind-merge": {
6356
  "version": "2.5.2",
6357
  "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz",
@@ -6446,6 +7337,138 @@
6446
  "node": ">=0.8"
6447
  }
6448
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6449
  "node_modules/to-regex-range": {
6450
  "version": "5.0.1",
6451
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -6458,6 +7481,36 @@
6458
  "node": ">=8.0"
6459
  }
6460
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6461
  "node_modules/ts-api-utils": {
6462
  "version": "1.3.0",
6463
  "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
@@ -6496,6 +7549,43 @@
6496
  "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
6497
  "license": "0BSD"
6498
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6499
  "node_modules/type-check": {
6500
  "version": "0.4.0",
6501
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -6689,12 +7779,54 @@
6689
  }
6690
  }
6691
  },
 
 
 
 
 
 
 
 
 
6692
  "node_modules/util-deprecate": {
6693
  "version": "1.0.2",
6694
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
6695
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
6696
  "license": "MIT"
6697
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6698
  "node_modules/which": {
6699
  "version": "2.0.2",
6700
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -6916,6 +8048,15 @@
6916
  "node": ">= 14"
6917
  }
6918
  },
 
 
 
 
 
 
 
 
 
6919
  "node_modules/yocto-queue": {
6920
  "version": "0.1.0",
6921
  "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -6928,6 +8069,23 @@
6928
  "funding": {
6929
  "url": "https://github.com/sponsors/sindresorhus"
6930
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6931
  }
6932
  }
6933
  }
 
12
  "@radix-ui/react-dropdown-menu": "^2.1.1",
13
  "@radix-ui/react-icons": "^1.3.0",
14
  "@radix-ui/react-slot": "^1.1.0",
15
+ "@react-three/drei": "^9.113.0",
16
+ "@react-three/fiber": "^8.17.8",
17
  "@tabler/icons-react": "^3.17.0",
18
  "@tsparticles/engine": "^3.5.0",
19
  "@tsparticles/react": "^3.0.0",
 
29
  "sharp": "^0.33.5",
30
  "simplex-noise": "^4.0.3",
31
  "tailwind-merge": "^2.5.2",
32
+ "tailwindcss-animate": "^1.0.7",
33
+ "three": "^0.168.0",
34
+ "three-globe": "^2.31.1"
35
  },
36
  "devDependencies": {
37
  "@types/node": "^20",
 
56
  "url": "https://github.com/sponsors/sindresorhus"
57
  }
58
  },
59
+ "node_modules/@babel/runtime": {
60
+ "version": "7.25.6",
61
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
62
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
63
+ "license": "MIT",
64
+ "dependencies": {
65
+ "regenerator-runtime": "^0.14.0"
66
+ },
67
+ "engines": {
68
+ "node": ">=6.9.0"
69
+ }
70
+ },
71
  "node_modules/@emnapi/runtime": {
72
  "version": "1.2.0",
73
  "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
 
667
  "@jridgewell/sourcemap-codec": "^1.4.14"
668
  }
669
  },
670
+ "node_modules/@mediapipe/tasks-vision": {
671
+ "version": "0.10.8",
672
+ "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.8.tgz",
673
+ "integrity": "sha512-Rp7ll8BHrKB3wXaRFKhrltwZl1CiXGdibPxuWXvqGnKTnv8fqa/nvftYNuSbf+pbJWKYCXdBtYTITdAUTGGh0Q==",
674
+ "license": "Apache-2.0"
675
+ },
676
+ "node_modules/@monogrid/gainmap-js": {
677
+ "version": "3.0.6",
678
+ "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.0.6.tgz",
679
+ "integrity": "sha512-ireqJg7cw0tUn/JePDG8rAL7RyXgUKSDbjYdiygkrnye1WuKGLAWDBwF/ICwCwJ9iZBAF5caU8gSu+c34HLGdQ==",
680
+ "license": "MIT",
681
+ "dependencies": {
682
+ "promise-worker-transferable": "^1.0.4"
683
+ },
684
+ "peerDependencies": {
685
+ "three": ">= 0.159.0"
686
+ }
687
+ },
688
  "node_modules/@next/env": {
689
  "version": "14.2.13",
690
  "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz",
 
1459
  "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==",
1460
  "license": "MIT"
1461
  },
1462
+ "node_modules/@react-spring/animated": {
1463
+ "version": "9.6.1",
1464
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.6.1.tgz",
1465
+ "integrity": "sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==",
1466
+ "license": "MIT",
1467
+ "dependencies": {
1468
+ "@react-spring/shared": "~9.6.1",
1469
+ "@react-spring/types": "~9.6.1"
1470
+ },
1471
+ "peerDependencies": {
1472
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
1473
+ }
1474
+ },
1475
+ "node_modules/@react-spring/core": {
1476
+ "version": "9.6.1",
1477
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.6.1.tgz",
1478
+ "integrity": "sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==",
1479
+ "license": "MIT",
1480
+ "dependencies": {
1481
+ "@react-spring/animated": "~9.6.1",
1482
+ "@react-spring/rafz": "~9.6.1",
1483
+ "@react-spring/shared": "~9.6.1",
1484
+ "@react-spring/types": "~9.6.1"
1485
+ },
1486
+ "funding": {
1487
+ "type": "opencollective",
1488
+ "url": "https://opencollective.com/react-spring/donate"
1489
+ },
1490
+ "peerDependencies": {
1491
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
1492
+ }
1493
+ },
1494
+ "node_modules/@react-spring/rafz": {
1495
+ "version": "9.6.1",
1496
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.6.1.tgz",
1497
+ "integrity": "sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==",
1498
+ "license": "MIT"
1499
+ },
1500
+ "node_modules/@react-spring/shared": {
1501
+ "version": "9.6.1",
1502
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.6.1.tgz",
1503
+ "integrity": "sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==",
1504
+ "license": "MIT",
1505
+ "dependencies": {
1506
+ "@react-spring/rafz": "~9.6.1",
1507
+ "@react-spring/types": "~9.6.1"
1508
+ },
1509
+ "peerDependencies": {
1510
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
1511
+ }
1512
+ },
1513
+ "node_modules/@react-spring/three": {
1514
+ "version": "9.6.1",
1515
+ "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.6.1.tgz",
1516
+ "integrity": "sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA==",
1517
+ "license": "MIT",
1518
+ "dependencies": {
1519
+ "@react-spring/animated": "~9.6.1",
1520
+ "@react-spring/core": "~9.6.1",
1521
+ "@react-spring/shared": "~9.6.1",
1522
+ "@react-spring/types": "~9.6.1"
1523
+ },
1524
+ "peerDependencies": {
1525
+ "@react-three/fiber": ">=6.0",
1526
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
1527
+ "three": ">=0.126"
1528
+ }
1529
+ },
1530
+ "node_modules/@react-spring/types": {
1531
+ "version": "9.6.1",
1532
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.6.1.tgz",
1533
+ "integrity": "sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==",
1534
+ "license": "MIT"
1535
+ },
1536
+ "node_modules/@react-three/drei": {
1537
+ "version": "9.113.0",
1538
+ "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-9.113.0.tgz",
1539
+ "integrity": "sha512-y+V6/vyRteYtvYkEzfAmBsEXzMCftONKHbVHEqrx5LG6jrXmwFJP1sSHXU16c05cXH91GIGRiputcTIspLZsZQ==",
1540
+ "license": "MIT",
1541
+ "dependencies": {
1542
+ "@babel/runtime": "^7.11.2",
1543
+ "@mediapipe/tasks-vision": "0.10.8",
1544
+ "@monogrid/gainmap-js": "^3.0.5",
1545
+ "@react-spring/three": "~9.6.1",
1546
+ "@use-gesture/react": "^10.2.24",
1547
+ "camera-controls": "^2.4.2",
1548
+ "cross-env": "^7.0.3",
1549
+ "detect-gpu": "^5.0.28",
1550
+ "glsl-noise": "^0.0.0",
1551
+ "hls.js": "1.3.5",
1552
+ "maath": "^0.10.7",
1553
+ "meshline": "^3.1.6",
1554
+ "react-composer": "^5.0.3",
1555
+ "stats-gl": "^2.0.0",
1556
+ "stats.js": "^0.17.0",
1557
+ "suspend-react": "^0.1.3",
1558
+ "three-mesh-bvh": "^0.7.8",
1559
+ "three-stdlib": "^2.29.9",
1560
+ "troika-three-text": "^0.49.0",
1561
+ "tunnel-rat": "^0.1.2",
1562
+ "utility-types": "^3.10.0",
1563
+ "uuid": "^9.0.1",
1564
+ "zustand": "^3.7.1"
1565
+ },
1566
+ "peerDependencies": {
1567
+ "@react-three/fiber": ">=8.0",
1568
+ "react": ">=18.0",
1569
+ "react-dom": ">=18.0",
1570
+ "three": ">=0.137"
1571
+ },
1572
+ "peerDependenciesMeta": {
1573
+ "react-dom": {
1574
+ "optional": true
1575
+ }
1576
+ }
1577
+ },
1578
+ "node_modules/@react-three/fiber": {
1579
+ "version": "8.17.8",
1580
+ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.17.8.tgz",
1581
+ "integrity": "sha512-L2r8n4Ebg7YMTMaPHx1soxplgfia7SpAJUA1bS4C1ApRG9KKAjK8Kjhx3ODX3f6fyYfQZju2JyE8Q7OJHv1DNA==",
1582
+ "license": "MIT",
1583
+ "dependencies": {
1584
+ "@babel/runtime": "^7.17.8",
1585
+ "@types/debounce": "^1.2.1",
1586
+ "@types/react-reconciler": "^0.26.7",
1587
+ "@types/webxr": "*",
1588
+ "base64-js": "^1.5.1",
1589
+ "buffer": "^6.0.3",
1590
+ "debounce": "^1.2.1",
1591
+ "its-fine": "^1.0.6",
1592
+ "react-reconciler": "^0.27.0",
1593
+ "scheduler": "^0.21.0",
1594
+ "suspend-react": "^0.1.3",
1595
+ "zustand": "^3.7.1"
1596
+ },
1597
+ "peerDependencies": {
1598
+ "expo": ">=43.0",
1599
+ "expo-asset": ">=8.4",
1600
+ "expo-file-system": ">=11.0",
1601
+ "expo-gl": ">=11.0",
1602
+ "react": ">=18.0",
1603
+ "react-dom": ">=18.0",
1604
+ "react-native": ">=0.64",
1605
+ "three": ">=0.133"
1606
+ },
1607
+ "peerDependenciesMeta": {
1608
+ "expo": {
1609
+ "optional": true
1610
+ },
1611
+ "expo-asset": {
1612
+ "optional": true
1613
+ },
1614
+ "expo-file-system": {
1615
+ "optional": true
1616
+ },
1617
+ "expo-gl": {
1618
+ "optional": true
1619
+ },
1620
+ "react-dom": {
1621
+ "optional": true
1622
+ },
1623
+ "react-native": {
1624
+ "optional": true
1625
+ }
1626
+ }
1627
+ },
1628
+ "node_modules/@react-three/fiber/node_modules/scheduler": {
1629
+ "version": "0.21.0",
1630
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
1631
+ "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
1632
+ "license": "MIT",
1633
+ "dependencies": {
1634
+ "loose-envify": "^1.1.0"
1635
+ }
1636
+ },
1637
  "node_modules/@rtsao/scc": {
1638
  "version": "1.1.0",
1639
  "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz",
 
2082
  "@tsparticles/engine": "^3.5.0"
2083
  }
2084
  },
2085
+ "node_modules/@turf/boolean-point-in-polygon": {
2086
+ "version": "6.5.0",
2087
+ "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz",
2088
+ "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==",
2089
+ "license": "MIT",
2090
+ "dependencies": {
2091
+ "@turf/helpers": "^6.5.0",
2092
+ "@turf/invariant": "^6.5.0"
2093
+ },
2094
+ "funding": {
2095
+ "url": "https://opencollective.com/turf"
2096
+ }
2097
+ },
2098
+ "node_modules/@turf/helpers": {
2099
+ "version": "6.5.0",
2100
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz",
2101
+ "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==",
2102
+ "license": "MIT",
2103
+ "funding": {
2104
+ "url": "https://opencollective.com/turf"
2105
+ }
2106
+ },
2107
+ "node_modules/@turf/invariant": {
2108
+ "version": "6.5.0",
2109
+ "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz",
2110
+ "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==",
2111
+ "license": "MIT",
2112
+ "dependencies": {
2113
+ "@turf/helpers": "^6.5.0"
2114
+ },
2115
+ "funding": {
2116
+ "url": "https://opencollective.com/turf"
2117
+ }
2118
+ },
2119
+ "node_modules/@tweenjs/tween.js": {
2120
+ "version": "23.1.3",
2121
+ "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz",
2122
+ "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==",
2123
+ "license": "MIT"
2124
+ },
2125
+ "node_modules/@types/debounce": {
2126
+ "version": "1.2.4",
2127
+ "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.4.tgz",
2128
+ "integrity": "sha512-jBqiORIzKDOToaF63Fm//haOCHuwQuLa2202RK4MozpA6lh93eCBc+/8+wZn5OzjJt3ySdc+74SXWXB55Ewtyw==",
2129
+ "license": "MIT"
2130
+ },
2131
+ "node_modules/@types/draco3d": {
2132
+ "version": "1.4.10",
2133
+ "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz",
2134
+ "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==",
2135
+ "license": "MIT"
2136
+ },
2137
  "node_modules/@types/json5": {
2138
  "version": "0.0.29",
2139
  "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
 
2151
  "undici-types": "~6.19.2"
2152
  }
2153
  },
2154
+ "node_modules/@types/offscreencanvas": {
2155
+ "version": "2019.7.3",
2156
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
2157
+ "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==",
2158
+ "license": "MIT"
2159
+ },
2160
  "node_modules/@types/prop-types": {
2161
  "version": "15.7.13",
2162
  "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
2163
  "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
 
2164
  "license": "MIT"
2165
  },
2166
  "node_modules/@types/react": {
2167
  "version": "18.3.8",
2168
  "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.8.tgz",
2169
  "integrity": "sha512-syBUrW3/XpnW4WJ41Pft+I+aPoDVbrBVQGEnbD7NijDGlVC+8gV/XKRY+7vMDlfPpbwYt0l1vd/Sj8bJGMbs9Q==",
 
2170
  "license": "MIT",
2171
  "dependencies": {
2172
  "@types/prop-types": "*",
 
2183
  "@types/react": "*"
2184
  }
2185
  },
2186
+ "node_modules/@types/react-reconciler": {
2187
+ "version": "0.26.7",
2188
+ "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz",
2189
+ "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==",
2190
+ "license": "MIT",
2191
+ "dependencies": {
2192
+ "@types/react": "*"
2193
+ }
2194
+ },
2195
+ "node_modules/@types/stats.js": {
2196
+ "version": "0.17.3",
2197
+ "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz",
2198
+ "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==",
2199
+ "license": "MIT"
2200
+ },
2201
+ "node_modules/@types/three": {
2202
+ "version": "0.168.0",
2203
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.168.0.tgz",
2204
+ "integrity": "sha512-qAGLGzbaYgkkonOBfwOr+TZpOskPfFjrDAj801WQSVkUz0/D9zwir4vhruJ/CC/GteywzR9pqeVVfs5th/2oKw==",
2205
+ "license": "MIT",
2206
+ "peer": true,
2207
+ "dependencies": {
2208
+ "@tweenjs/tween.js": "~23.1.3",
2209
+ "@types/stats.js": "*",
2210
+ "@types/webxr": "*",
2211
+ "@webgpu/types": "*",
2212
+ "fflate": "~0.8.2",
2213
+ "meshoptimizer": "~0.18.1"
2214
+ }
2215
+ },
2216
+ "node_modules/@types/webxr": {
2217
+ "version": "0.5.20",
2218
+ "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.20.tgz",
2219
+ "integrity": "sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==",
2220
+ "license": "MIT"
2221
+ },
2222
  "node_modules/@typescript-eslint/eslint-plugin": {
2223
  "version": "8.6.0",
2224
  "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.6.0.tgz",
 
2442
  "dev": true,
2443
  "license": "ISC"
2444
  },
2445
+ "node_modules/@use-gesture/core": {
2446
+ "version": "10.3.1",
2447
+ "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz",
2448
+ "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==",
2449
+ "license": "MIT"
2450
+ },
2451
+ "node_modules/@use-gesture/react": {
2452
+ "version": "10.3.1",
2453
+ "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz",
2454
+ "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==",
2455
+ "license": "MIT",
2456
+ "dependencies": {
2457
+ "@use-gesture/core": "10.3.1"
2458
+ },
2459
+ "peerDependencies": {
2460
+ "react": ">= 16.8.0"
2461
+ }
2462
+ },
2463
+ "node_modules/@webgpu/types": {
2464
+ "version": "0.1.46",
2465
+ "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.46.tgz",
2466
+ "integrity": "sha512-2iogO6Zh0pTbKLGZuuGWEmJpF/fTABGs7G9wXxpn7s24XSJchSUIiMqIJHURi5zsMZRRTuXrV/3GLOkmOFjq5w==",
2467
+ "license": "BSD-3-Clause",
2468
+ "peer": true
2469
+ },
2470
+ "node_modules/accessor-fn": {
2471
+ "version": "1.5.1",
2472
+ "resolved": "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.5.1.tgz",
2473
+ "integrity": "sha512-zZpFYBqIL1Aqg+f2qmYHJ8+yIZF7/tP6PUGx2/QM0uGPSO5UegpinmkNwDohxWtOj586BpMPVRUjce2HI6xB3A==",
2474
+ "license": "MIT",
2475
+ "engines": {
2476
+ "node": ">=12"
2477
+ }
2478
+ },
2479
  "node_modules/acorn": {
2480
  "version": "8.12.1",
2481
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
 
2801
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
2802
  "license": "MIT"
2803
  },
2804
+ "node_modules/base64-js": {
2805
+ "version": "1.5.1",
2806
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
2807
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
2808
+ "funding": [
2809
+ {
2810
+ "type": "github",
2811
+ "url": "https://github.com/sponsors/feross"
2812
+ },
2813
+ {
2814
+ "type": "patreon",
2815
+ "url": "https://www.patreon.com/feross"
2816
+ },
2817
+ {
2818
+ "type": "consulting",
2819
+ "url": "https://feross.org/support"
2820
+ }
2821
+ ],
2822
+ "license": "MIT"
2823
+ },
2824
+ "node_modules/bidi-js": {
2825
+ "version": "1.0.3",
2826
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
2827
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
2828
+ "license": "MIT",
2829
+ "dependencies": {
2830
+ "require-from-string": "^2.0.2"
2831
+ }
2832
+ },
2833
  "node_modules/binary-extensions": {
2834
  "version": "2.3.0",
2835
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
 
2865
  "node": ">=8"
2866
  }
2867
  },
2868
+ "node_modules/buffer": {
2869
+ "version": "6.0.3",
2870
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
2871
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
2872
+ "funding": [
2873
+ {
2874
+ "type": "github",
2875
+ "url": "https://github.com/sponsors/feross"
2876
+ },
2877
+ {
2878
+ "type": "patreon",
2879
+ "url": "https://www.patreon.com/feross"
2880
+ },
2881
+ {
2882
+ "type": "consulting",
2883
+ "url": "https://feross.org/support"
2884
+ }
2885
+ ],
2886
+ "license": "MIT",
2887
+ "dependencies": {
2888
+ "base64-js": "^1.3.1",
2889
+ "ieee754": "^1.2.1"
2890
+ }
2891
+ },
2892
  "node_modules/busboy": {
2893
  "version": "1.6.0",
2894
  "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
 
2939
  "node": ">= 6"
2940
  }
2941
  },
2942
+ "node_modules/camera-controls": {
2943
+ "version": "2.9.0",
2944
+ "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.9.0.tgz",
2945
+ "integrity": "sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==",
2946
+ "license": "MIT",
2947
+ "peerDependencies": {
2948
+ "three": ">=0.126.1"
2949
+ }
2950
+ },
2951
  "node_modules/caniuse-lite": {
2952
  "version": "1.0.30001662",
2953
  "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
 
3114
  "dev": true,
3115
  "license": "MIT"
3116
  },
3117
+ "node_modules/cross-env": {
3118
+ "version": "7.0.3",
3119
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
3120
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
3121
+ "license": "MIT",
3122
+ "dependencies": {
3123
+ "cross-spawn": "^7.0.1"
3124
+ },
3125
+ "bin": {
3126
+ "cross-env": "src/bin/cross-env.js",
3127
+ "cross-env-shell": "src/bin/cross-env-shell.js"
3128
+ },
3129
+ "engines": {
3130
+ "node": ">=10.14",
3131
+ "npm": ">=6",
3132
+ "yarn": ">=1"
3133
+ }
3134
+ },
3135
  "node_modules/cross-spawn": {
3136
  "version": "7.0.3",
3137
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
 
3162
  "version": "3.1.3",
3163
  "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
3164
  "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
 
3165
  "license": "MIT"
3166
  },
3167
+ "node_modules/d3-array": {
3168
+ "version": "3.2.4",
3169
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
3170
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
3171
+ "license": "ISC",
3172
+ "dependencies": {
3173
+ "internmap": "1 - 2"
3174
+ },
3175
+ "engines": {
3176
+ "node": ">=12"
3177
+ }
3178
+ },
3179
+ "node_modules/d3-color": {
3180
+ "version": "3.1.0",
3181
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
3182
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
3183
+ "license": "ISC",
3184
+ "engines": {
3185
+ "node": ">=12"
3186
+ }
3187
+ },
3188
+ "node_modules/d3-delaunay": {
3189
+ "version": "6.0.4",
3190
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
3191
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
3192
+ "license": "ISC",
3193
+ "dependencies": {
3194
+ "delaunator": "5"
3195
+ },
3196
+ "engines": {
3197
+ "node": ">=12"
3198
+ }
3199
+ },
3200
+ "node_modules/d3-format": {
3201
+ "version": "3.1.0",
3202
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
3203
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
3204
+ "license": "ISC",
3205
+ "engines": {
3206
+ "node": ">=12"
3207
+ }
3208
+ },
3209
+ "node_modules/d3-geo": {
3210
+ "version": "3.1.1",
3211
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz",
3212
+ "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==",
3213
+ "license": "ISC",
3214
+ "dependencies": {
3215
+ "d3-array": "2.5.0 - 3"
3216
+ },
3217
+ "engines": {
3218
+ "node": ">=12"
3219
+ }
3220
+ },
3221
+ "node_modules/d3-geo-voronoi": {
3222
+ "version": "2.1.0",
3223
+ "resolved": "https://registry.npmjs.org/d3-geo-voronoi/-/d3-geo-voronoi-2.1.0.tgz",
3224
+ "integrity": "sha512-kqE4yYuOjPbKdBXG0xztCacPwkVSK2REF1opSNrnqqtXJmNcM++UbwQ8SxvwP6IQTj9RvIjjK4qeiVsEfj0Z2Q==",
3225
+ "license": "ISC",
3226
+ "dependencies": {
3227
+ "d3-array": "3",
3228
+ "d3-delaunay": "6",
3229
+ "d3-geo": "3",
3230
+ "d3-tricontour": "1"
3231
+ },
3232
+ "engines": {
3233
+ "node": ">=12"
3234
+ }
3235
+ },
3236
+ "node_modules/d3-interpolate": {
3237
+ "version": "3.0.1",
3238
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
3239
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
3240
+ "license": "ISC",
3241
+ "dependencies": {
3242
+ "d3-color": "1 - 3"
3243
+ },
3244
+ "engines": {
3245
+ "node": ">=12"
3246
+ }
3247
+ },
3248
+ "node_modules/d3-scale": {
3249
+ "version": "4.0.2",
3250
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
3251
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
3252
+ "license": "ISC",
3253
+ "dependencies": {
3254
+ "d3-array": "2.10.0 - 3",
3255
+ "d3-format": "1 - 3",
3256
+ "d3-interpolate": "1.2.0 - 3",
3257
+ "d3-time": "2.1.1 - 3",
3258
+ "d3-time-format": "2 - 4"
3259
+ },
3260
+ "engines": {
3261
+ "node": ">=12"
3262
+ }
3263
+ },
3264
+ "node_modules/d3-scale-chromatic": {
3265
+ "version": "3.1.0",
3266
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
3267
+ "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
3268
+ "license": "ISC",
3269
+ "dependencies": {
3270
+ "d3-color": "1 - 3",
3271
+ "d3-interpolate": "1 - 3"
3272
+ },
3273
+ "engines": {
3274
+ "node": ">=12"
3275
+ }
3276
+ },
3277
+ "node_modules/d3-time": {
3278
+ "version": "3.1.0",
3279
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
3280
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
3281
+ "license": "ISC",
3282
+ "dependencies": {
3283
+ "d3-array": "2 - 3"
3284
+ },
3285
+ "engines": {
3286
+ "node": ">=12"
3287
+ }
3288
+ },
3289
+ "node_modules/d3-time-format": {
3290
+ "version": "4.1.0",
3291
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
3292
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
3293
+ "license": "ISC",
3294
+ "dependencies": {
3295
+ "d3-time": "1 - 3"
3296
+ },
3297
+ "engines": {
3298
+ "node": ">=12"
3299
+ }
3300
+ },
3301
+ "node_modules/d3-tricontour": {
3302
+ "version": "1.0.2",
3303
+ "resolved": "https://registry.npmjs.org/d3-tricontour/-/d3-tricontour-1.0.2.tgz",
3304
+ "integrity": "sha512-HIRxHzHagPtUPNabjOlfcyismJYIsc+Xlq4mlsts4e8eAcwyq9Tgk/sYdyhlBpQ0MHwVquc/8j+e29YjXnmxeA==",
3305
+ "license": "ISC",
3306
+ "dependencies": {
3307
+ "d3-delaunay": "6",
3308
+ "d3-scale": "4"
3309
+ },
3310
+ "engines": {
3311
+ "node": ">=12"
3312
+ }
3313
+ },
3314
  "node_modules/damerau-levenshtein": {
3315
  "version": "1.0.8",
3316
  "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
 
3318
  "dev": true,
3319
  "license": "BSD-2-Clause"
3320
  },
3321
+ "node_modules/data-joint": {
3322
+ "version": "1.3.1",
3323
+ "resolved": "https://registry.npmjs.org/data-joint/-/data-joint-1.3.1.tgz",
3324
+ "integrity": "sha512-tMK0m4OVGqiA3zkn8JmO6YAqD8UwJqIAx4AAwFl1SKTtKAqcXePuT+n2aayiX9uITtlN3DFtKKTOxJRUc2+HvQ==",
3325
+ "license": "MIT",
3326
+ "dependencies": {
3327
+ "index-array-by": "^1.4.0"
3328
+ },
3329
+ "engines": {
3330
+ "node": ">=12"
3331
+ }
3332
+ },
3333
  "node_modules/data-view-buffer": {
3334
  "version": "1.0.1",
3335
  "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
 
3384
  "url": "https://github.com/sponsors/ljharb"
3385
  }
3386
  },
3387
+ "node_modules/debounce": {
3388
+ "version": "1.2.1",
3389
+ "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
3390
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
3391
+ "license": "MIT"
3392
+ },
3393
  "node_modules/debug": {
3394
  "version": "4.3.7",
3395
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
 
3484
  "url": "https://github.com/sponsors/ljharb"
3485
  }
3486
  },
3487
+ "node_modules/delaunator": {
3488
+ "version": "5.0.1",
3489
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
3490
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
3491
+ "license": "ISC",
3492
+ "dependencies": {
3493
+ "robust-predicates": "^3.0.2"
3494
+ }
3495
+ },
3496
+ "node_modules/detect-gpu": {
3497
+ "version": "5.0.49",
3498
+ "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.49.tgz",
3499
+ "integrity": "sha512-XXPqzsKJErNcafLnoye+hnSa5GzwMwpoOMz4nCnmhV0wQMy3wJVi2j5/FSMYxxH+elR12N/x7QjGxegd4AmdpQ==",
3500
+ "license": "MIT",
3501
+ "dependencies": {
3502
+ "webgl-constants": "^1.1.1"
3503
+ }
3504
+ },
3505
  "node_modules/detect-libc": {
3506
  "version": "2.0.3",
3507
  "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
 
3542
  "node": ">=6.0.0"
3543
  }
3544
  },
3545
+ "node_modules/draco3d": {
3546
+ "version": "1.5.7",
3547
+ "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz",
3548
+ "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
3549
+ "license": "Apache-2.0"
3550
+ },
3551
+ "node_modules/earcut": {
3552
+ "version": "2.2.4",
3553
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
3554
+ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
3555
+ "license": "ISC"
3556
+ },
3557
  "node_modules/eastasianwidth": {
3558
  "version": "0.2.0",
3559
  "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
 
4286
  "reusify": "^1.0.4"
4287
  }
4288
  },
4289
+ "node_modules/fflate": {
4290
+ "version": "0.8.2",
4291
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
4292
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
4293
+ "license": "MIT"
4294
+ },
4295
  "node_modules/file-entry-cache": {
4296
  "version": "6.0.1",
4297
  "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
 
4382
  "url": "https://github.com/sponsors/isaacs"
4383
  }
4384
  },
4385
+ "node_modules/frame-ticker": {
4386
+ "version": "1.0.3",
4387
+ "resolved": "https://registry.npmjs.org/frame-ticker/-/frame-ticker-1.0.3.tgz",
4388
+ "integrity": "sha512-E0X2u2JIvbEMrqEg5+4BpTqaD22OwojJI63K7MdKHdncjtAhGRbCR8nJCr2vwEt9NWBPCPcu70X9smPviEBy8Q==",
4389
+ "license": "MIT",
4390
+ "dependencies": {
4391
+ "simplesignal": "^2.1.6"
4392
+ }
4393
+ },
4394
  "node_modules/framer-motion": {
4395
  "version": "11.5.6",
4396
  "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.5.6.tgz",
 
4626
  "url": "https://github.com/sponsors/ljharb"
4627
  }
4628
  },
4629
+ "node_modules/glsl-noise": {
4630
+ "version": "0.0.0",
4631
+ "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz",
4632
+ "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==",
4633
+ "license": "MIT"
4634
+ },
4635
  "node_modules/gopd": {
4636
  "version": "1.0.1",
4637
  "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
 
4658
  "dev": true,
4659
  "license": "MIT"
4660
  },
4661
+ "node_modules/h3-js": {
4662
+ "version": "4.1.0",
4663
+ "resolved": "https://registry.npmjs.org/h3-js/-/h3-js-4.1.0.tgz",
4664
+ "integrity": "sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ==",
4665
+ "license": "Apache-2.0",
4666
+ "engines": {
4667
+ "node": ">=4",
4668
+ "npm": ">=3",
4669
+ "yarn": ">=1.3.0"
4670
+ }
4671
+ },
4672
  "node_modules/has-bigints": {
4673
  "version": "1.0.2",
4674
  "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
 
4756
  "node": ">= 0.4"
4757
  }
4758
  },
4759
+ "node_modules/hls.js": {
4760
+ "version": "1.3.5",
4761
+ "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.3.5.tgz",
4762
+ "integrity": "sha512-uybAvKS6uDe0MnWNEPnO0krWVr+8m2R0hJ/viql8H3MVK+itq8gGQuIYoFHL3rECkIpNH98Lw8YuuWMKZxp3Ew==",
4763
+ "license": "Apache-2.0"
4764
+ },
4765
+ "node_modules/ieee754": {
4766
+ "version": "1.2.1",
4767
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
4768
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
4769
+ "funding": [
4770
+ {
4771
+ "type": "github",
4772
+ "url": "https://github.com/sponsors/feross"
4773
+ },
4774
+ {
4775
+ "type": "patreon",
4776
+ "url": "https://www.patreon.com/feross"
4777
+ },
4778
+ {
4779
+ "type": "consulting",
4780
+ "url": "https://feross.org/support"
4781
+ }
4782
+ ],
4783
+ "license": "BSD-3-Clause"
4784
+ },
4785
  "node_modules/ignore": {
4786
  "version": "5.3.2",
4787
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
 
4792
  "node": ">= 4"
4793
  }
4794
  },
4795
+ "node_modules/immediate": {
4796
+ "version": "3.0.6",
4797
+ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
4798
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
4799
+ "license": "MIT"
4800
+ },
4801
  "node_modules/import-fresh": {
4802
  "version": "3.3.0",
4803
  "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
 
4825
  "node": ">=0.8.19"
4826
  }
4827
  },
4828
+ "node_modules/index-array-by": {
4829
+ "version": "1.4.2",
4830
+ "resolved": "https://registry.npmjs.org/index-array-by/-/index-array-by-1.4.2.tgz",
4831
+ "integrity": "sha512-SP23P27OUKzXWEC/TOyWlwLviofQkCSCKONnc62eItjp69yCZZPqDQtr3Pw5gJDnPeUMqExmKydNZaJO0FU9pw==",
4832
+ "license": "MIT",
4833
+ "engines": {
4834
+ "node": ">=12"
4835
+ }
4836
+ },
4837
  "node_modules/inflight": {
4838
  "version": "1.0.6",
4839
  "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 
4868
  "node": ">= 0.4"
4869
  }
4870
  },
4871
+ "node_modules/internmap": {
4872
+ "version": "2.0.3",
4873
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
4874
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
4875
+ "license": "ISC",
4876
+ "engines": {
4877
+ "node": ">=12"
4878
+ }
4879
+ },
4880
  "node_modules/invariant": {
4881
  "version": "2.2.4",
4882
  "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
 
5174
  "node": ">=8"
5175
  }
5176
  },
5177
+ "node_modules/is-promise": {
5178
+ "version": "2.2.2",
5179
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
5180
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==",
5181
+ "license": "MIT"
5182
+ },
5183
  "node_modules/is-regex": {
5184
  "version": "1.1.4",
5185
  "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
 
5344
  "set-function-name": "^2.0.1"
5345
  }
5346
  },
5347
+ "node_modules/its-fine": {
5348
+ "version": "1.2.5",
5349
+ "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.2.5.tgz",
5350
+ "integrity": "sha512-fXtDA0X0t0eBYAGLVM5YsgJGsJ5jEmqZEPrGbzdf5awjv0xE7nqv3TVnvtUF060Tkes15DbDAKW/I48vsb6SyA==",
5351
+ "license": "MIT",
5352
+ "dependencies": {
5353
+ "@types/react-reconciler": "^0.28.0"
5354
+ },
5355
+ "peerDependencies": {
5356
+ "react": ">=18.0"
5357
+ }
5358
+ },
5359
+ "node_modules/its-fine/node_modules/@types/react-reconciler": {
5360
+ "version": "0.28.8",
5361
+ "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz",
5362
+ "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==",
5363
+ "license": "MIT",
5364
+ "dependencies": {
5365
+ "@types/react": "*"
5366
+ }
5367
+ },
5368
  "node_modules/jackspeak": {
5369
  "version": "2.3.6",
5370
  "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
 
5461
  "node": ">=4.0"
5462
  }
5463
  },
5464
+ "node_modules/kapsule": {
5465
+ "version": "1.14.5",
5466
+ "resolved": "https://registry.npmjs.org/kapsule/-/kapsule-1.14.5.tgz",
5467
+ "integrity": "sha512-H0iSpTynUzZw3tgraDmReprpFRmH5oP5GPmaNsurSwLx2H5iCpOMIkp5q+sfhB4Tz/UJd1E1IbEE9Z6ksnJ6RA==",
5468
+ "license": "MIT",
5469
+ "dependencies": {
5470
+ "lodash-es": "4"
5471
+ },
5472
+ "engines": {
5473
+ "node": ">=12"
5474
+ }
5475
+ },
5476
  "node_modules/keyv": {
5477
  "version": "4.5.4",
5478
  "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
 
5517
  "node": ">= 0.8.0"
5518
  }
5519
  },
5520
+ "node_modules/lie": {
5521
+ "version": "3.3.0",
5522
+ "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
5523
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
5524
+ "license": "MIT",
5525
+ "dependencies": {
5526
+ "immediate": "~3.0.5"
5527
+ }
5528
+ },
5529
  "node_modules/lilconfig": {
5530
  "version": "2.1.0",
5531
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
 
5557
  "url": "https://github.com/sponsors/sindresorhus"
5558
  }
5559
  },
5560
+ "node_modules/lodash-es": {
5561
+ "version": "4.17.21",
5562
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
5563
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
5564
+ "license": "MIT"
5565
+ },
5566
  "node_modules/lodash.merge": {
5567
  "version": "4.6.2",
5568
  "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
 
5597
  "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
5598
  }
5599
  },
5600
+ "node_modules/maath": {
5601
+ "version": "0.10.8",
5602
+ "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz",
5603
+ "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==",
5604
+ "license": "MIT",
5605
+ "peerDependencies": {
5606
+ "@types/three": ">=0.134.0",
5607
+ "three": ">=0.134.0"
5608
+ }
5609
+ },
5610
  "node_modules/merge2": {
5611
  "version": "1.4.1",
5612
  "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
 
5616
  "node": ">= 8"
5617
  }
5618
  },
5619
+ "node_modules/meshline": {
5620
+ "version": "3.3.1",
5621
+ "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz",
5622
+ "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==",
5623
+ "license": "MIT",
5624
+ "peerDependencies": {
5625
+ "three": ">=0.137"
5626
+ }
5627
+ },
5628
+ "node_modules/meshoptimizer": {
5629
+ "version": "0.18.1",
5630
+ "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
5631
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==",
5632
+ "license": "MIT"
5633
+ },
5634
  "node_modules/micromatch": {
5635
  "version": "4.0.8",
5636
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
 
6285
  "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
6286
  "license": "MIT"
6287
  },
6288
+ "node_modules/potpack": {
6289
+ "version": "1.0.2",
6290
+ "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
6291
+ "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==",
6292
+ "license": "ISC"
6293
+ },
6294
  "node_modules/prelude-ls": {
6295
  "version": "1.2.1",
6296
  "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
 
6301
  "node": ">= 0.8.0"
6302
  }
6303
  },
6304
+ "node_modules/promise-worker-transferable": {
6305
+ "version": "1.0.4",
6306
+ "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz",
6307
+ "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==",
6308
+ "license": "Apache-2.0",
6309
+ "dependencies": {
6310
+ "is-promise": "^2.1.0",
6311
+ "lie": "^3.0.2"
6312
+ }
6313
+ },
6314
  "node_modules/prop-types": {
6315
  "version": "15.8.1",
6316
  "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
6317
  "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
 
6318
  "license": "MIT",
6319
  "dependencies": {
6320
  "loose-envify": "^1.4.0",
 
6352
  ],
6353
  "license": "MIT"
6354
  },
6355
+ "node_modules/rafor": {
6356
+ "version": "1.0.2",
6357
+ "resolved": "https://registry.npmjs.org/rafor/-/rafor-1.0.2.tgz",
6358
+ "integrity": "sha512-b8e8/srbSbC0FZTxivEz9pj5z1mQM8CpCEv1aAxuaK26ljSOHJk8AjimcTaHpHIZlwH/VPbli12LuKKrJyyGmA==",
6359
+ "license": "MIT"
6360
+ },
6361
  "node_modules/react": {
6362
  "version": "18.3.1",
6363
  "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
 
6370
  "node": ">=0.10.0"
6371
  }
6372
  },
6373
+ "node_modules/react-composer": {
6374
+ "version": "5.0.3",
6375
+ "resolved": "https://registry.npmjs.org/react-composer/-/react-composer-5.0.3.tgz",
6376
+ "integrity": "sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==",
6377
+ "license": "MIT",
6378
+ "dependencies": {
6379
+ "prop-types": "^15.6.0"
6380
+ },
6381
+ "peerDependencies": {
6382
+ "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0"
6383
+ }
6384
+ },
6385
  "node_modules/react-dom": {
6386
  "version": "18.3.1",
6387
  "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
 
6399
  "version": "16.13.1",
6400
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
6401
  "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
 
6402
  "license": "MIT"
6403
  },
6404
+ "node_modules/react-reconciler": {
6405
+ "version": "0.27.0",
6406
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz",
6407
+ "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==",
6408
+ "license": "MIT",
6409
+ "dependencies": {
6410
+ "loose-envify": "^1.1.0",
6411
+ "scheduler": "^0.21.0"
6412
+ },
6413
+ "engines": {
6414
+ "node": ">=0.10.0"
6415
+ },
6416
+ "peerDependencies": {
6417
+ "react": "^18.0.0"
6418
+ }
6419
+ },
6420
+ "node_modules/react-reconciler/node_modules/scheduler": {
6421
+ "version": "0.21.0",
6422
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz",
6423
+ "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==",
6424
+ "license": "MIT",
6425
+ "dependencies": {
6426
+ "loose-envify": "^1.1.0"
6427
+ }
6428
+ },
6429
  "node_modules/react-remove-scroll": {
6430
  "version": "2.5.7",
6431
  "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
 
6539
  "url": "https://github.com/sponsors/ljharb"
6540
  }
6541
  },
6542
+ "node_modules/regenerator-runtime": {
6543
+ "version": "0.14.1",
6544
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
6545
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
6546
+ "license": "MIT"
6547
+ },
6548
  "node_modules/regexp.prototype.flags": {
6549
  "version": "1.5.2",
6550
  "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
 
6564
  "url": "https://github.com/sponsors/ljharb"
6565
  }
6566
  },
6567
+ "node_modules/require-from-string": {
6568
+ "version": "2.0.2",
6569
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
6570
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
6571
+ "license": "MIT",
6572
+ "engines": {
6573
+ "node": ">=0.10.0"
6574
+ }
6575
+ },
6576
  "node_modules/resolve": {
6577
  "version": "1.22.8",
6578
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
 
6659
  "url": "https://github.com/sponsors/isaacs"
6660
  }
6661
  },
6662
+ "node_modules/robust-predicates": {
6663
+ "version": "3.0.2",
6664
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
6665
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
6666
+ "license": "Unlicense"
6667
+ },
6668
  "node_modules/run-parallel": {
6669
  "version": "1.2.0",
6670
  "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
 
6880
  "is-arrayish": "^0.3.1"
6881
  }
6882
  },
6883
+ "node_modules/simplesignal": {
6884
+ "version": "2.1.7",
6885
+ "resolved": "https://registry.npmjs.org/simplesignal/-/simplesignal-2.1.7.tgz",
6886
+ "integrity": "sha512-PEo2qWpUke7IMhlqiBxrulIFvhJRLkl1ih52Rwa+bPjzhJepcd4GIjn2RiQmFSx3dQvsEAgF0/lXMwMN7vODaA==",
6887
+ "license": "MIT"
6888
+ },
6889
  "node_modules/simplex-noise": {
6890
  "version": "4.0.3",
6891
  "resolved": "https://registry.npmjs.org/simplex-noise/-/simplex-noise-4.0.3.tgz",
 
6901
  "node": ">=0.10.0"
6902
  }
6903
  },
6904
+ "node_modules/stats-gl": {
6905
+ "version": "2.2.8",
6906
+ "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.2.8.tgz",
6907
+ "integrity": "sha512-94G5nZvduDmzxBS7K0lYnynYwreZpkknD8g5dZmU6mpwIhy3caCrjAm11Qm1cbyx7mqix7Fp00RkbsonzKWnoQ==",
6908
+ "license": "MIT",
6909
+ "dependencies": {
6910
+ "@types/three": "^0.163.0"
6911
+ }
6912
+ },
6913
+ "node_modules/stats-gl/node_modules/@types/three": {
6914
+ "version": "0.163.0",
6915
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.163.0.tgz",
6916
+ "integrity": "sha512-uIdDhsXRpQiBUkflBS/i1l3JX14fW6Ot9csed60nfbZNXHDTRsnV2xnTVwXcgbvTiboAR4IW+t+lTL5f1rqIqA==",
6917
+ "license": "MIT",
6918
+ "dependencies": {
6919
+ "@tweenjs/tween.js": "~23.1.1",
6920
+ "@types/stats.js": "*",
6921
+ "@types/webxr": "*",
6922
+ "fflate": "~0.8.2",
6923
+ "meshoptimizer": "~0.18.1"
6924
+ }
6925
+ },
6926
+ "node_modules/stats.js": {
6927
+ "version": "0.17.0",
6928
+ "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz",
6929
+ "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==",
6930
+ "license": "MIT"
6931
+ },
6932
  "node_modules/stop-iteration-iterator": {
6933
  "version": "1.0.0",
6934
  "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
 
7234
  "url": "https://github.com/sponsors/ljharb"
7235
  }
7236
  },
7237
+ "node_modules/suspend-react": {
7238
+ "version": "0.1.3",
7239
+ "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz",
7240
+ "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==",
7241
+ "license": "MIT",
7242
+ "peerDependencies": {
7243
+ "react": ">=17.0"
7244
+ }
7245
+ },
7246
  "node_modules/tailwind-merge": {
7247
  "version": "2.5.2",
7248
  "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz",
 
7337
  "node": ">=0.8"
7338
  }
7339
  },
7340
+ "node_modules/three": {
7341
+ "version": "0.168.0",
7342
+ "resolved": "https://registry.npmjs.org/three/-/three-0.168.0.tgz",
7343
+ "integrity": "sha512-6m6jXtDwMJEK/GGMbAOTSAmxNdzKvvBzgd7q8bE/7Tr6m7PaBh5kKLrN7faWtlglXbzj7sVba48Idwx+NRsZXw==",
7344
+ "license": "MIT"
7345
+ },
7346
+ "node_modules/three-conic-polygon-geometry": {
7347
+ "version": "1.6.3",
7348
+ "resolved": "https://registry.npmjs.org/three-conic-polygon-geometry/-/three-conic-polygon-geometry-1.6.3.tgz",
7349
+ "integrity": "sha512-uJhuUBHc5K4IFQ+31qVQboMIlEQ485WWX7+pN4qR2p4ctTO66nlJ2NWrXNn8x2A89Utyf09v+zyBIpWUVe1inQ==",
7350
+ "license": "MIT",
7351
+ "dependencies": {
7352
+ "@turf/boolean-point-in-polygon": "^6.5",
7353
+ "d3-array": "1 - 3",
7354
+ "d3-geo": "1 - 3",
7355
+ "d3-geo-voronoi": "^2.0",
7356
+ "d3-scale": "1 - 4",
7357
+ "delaunator": "5",
7358
+ "earcut": "2"
7359
+ },
7360
+ "engines": {
7361
+ "node": ">=12"
7362
+ },
7363
+ "peerDependencies": {
7364
+ "three": ">=0.72.0"
7365
+ }
7366
+ },
7367
+ "node_modules/three-fatline": {
7368
+ "version": "0.7.0",
7369
+ "resolved": "https://registry.npmjs.org/three-fatline/-/three-fatline-0.7.0.tgz",
7370
+ "integrity": "sha512-IG3mA1gNO1ccT/O8ou9rBnYJQynCreCZn12IfuyFoWNN9+0DrrSENlXk46I7TQfNBKCgwsHpzucJ2qyPC3I/dQ==",
7371
+ "engines": {
7372
+ "node": ">=12"
7373
+ },
7374
+ "peerDependencies": {
7375
+ "three": ">=0.154.0"
7376
+ }
7377
+ },
7378
+ "node_modules/three-geojson-geometry": {
7379
+ "version": "1.3.3",
7380
+ "resolved": "https://registry.npmjs.org/three-geojson-geometry/-/three-geojson-geometry-1.3.3.tgz",
7381
+ "integrity": "sha512-9SogZ9CYfzUYPo0oagGdTCU+Suyjqrbdya24xNbkwMwXr0atF5ozJKPUkdQWHwUy2WgV+i4I9cSjFDnGnanvbQ==",
7382
+ "license": "MIT",
7383
+ "dependencies": {
7384
+ "d3-geo": "1 - 3",
7385
+ "earcut": "3"
7386
+ },
7387
+ "engines": {
7388
+ "node": ">=12"
7389
+ },
7390
+ "peerDependencies": {
7391
+ "three": ">=0.72.0"
7392
+ }
7393
+ },
7394
+ "node_modules/three-geojson-geometry/node_modules/earcut": {
7395
+ "version": "3.0.0",
7396
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz",
7397
+ "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==",
7398
+ "license": "ISC"
7399
+ },
7400
+ "node_modules/three-globe": {
7401
+ "version": "2.31.1",
7402
+ "resolved": "https://registry.npmjs.org/three-globe/-/three-globe-2.31.1.tgz",
7403
+ "integrity": "sha512-xsQGPsURxvPpHziq99cX++RmzDFFi3mITJyWNrGiY6cuH8BJkSb1C3xBYoqH5zmGSEIa16uPHN8KrYCiMUg8Wg==",
7404
+ "license": "MIT",
7405
+ "dependencies": {
7406
+ "@tweenjs/tween.js": "18 - 23",
7407
+ "accessor-fn": "1",
7408
+ "d3-array": "3",
7409
+ "d3-color": "3",
7410
+ "d3-geo": "3",
7411
+ "d3-interpolate": "3",
7412
+ "d3-scale": "4",
7413
+ "d3-scale-chromatic": "3",
7414
+ "data-joint": "1",
7415
+ "earcut": "2",
7416
+ "frame-ticker": "1",
7417
+ "h3-js": "4",
7418
+ "index-array-by": "1",
7419
+ "kapsule": "1",
7420
+ "three-conic-polygon-geometry": "1",
7421
+ "three-fatline": "^0.7",
7422
+ "three-geojson-geometry": "1",
7423
+ "tinycolor2": "1",
7424
+ "yaot": "^1.1"
7425
+ },
7426
+ "engines": {
7427
+ "node": ">=12"
7428
+ },
7429
+ "peerDependencies": {
7430
+ "three": ">=0.125"
7431
+ }
7432
+ },
7433
+ "node_modules/three-mesh-bvh": {
7434
+ "version": "0.7.8",
7435
+ "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.8.tgz",
7436
+ "integrity": "sha512-BGEZTOIC14U0XIRw3tO4jY7IjP7n7v24nv9JXS1CyeVRWOCkcOMhRnmENUjuV39gktAw4Ofhr0OvIAiTspQrrw==",
7437
+ "deprecated": "Deprecated due to three.js version incompatibility. Please use v0.8.0, instead.",
7438
+ "license": "MIT",
7439
+ "peerDependencies": {
7440
+ "three": ">= 0.151.0"
7441
+ }
7442
+ },
7443
+ "node_modules/three-stdlib": {
7444
+ "version": "2.33.0",
7445
+ "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.33.0.tgz",
7446
+ "integrity": "sha512-V/uycBuqQOP/3Z+FBtpMdj2Ds5PyfJ3VDfMzktEmG4niOIzv7q1y5uMSbMcng0+057m1l0N147FQxsodQo9zBg==",
7447
+ "license": "MIT",
7448
+ "dependencies": {
7449
+ "@types/draco3d": "^1.4.0",
7450
+ "@types/offscreencanvas": "^2019.6.4",
7451
+ "@types/webxr": "^0.5.2",
7452
+ "draco3d": "^1.4.1",
7453
+ "fflate": "^0.6.9",
7454
+ "potpack": "^1.0.1"
7455
+ },
7456
+ "peerDependencies": {
7457
+ "three": ">=0.128.0"
7458
+ }
7459
+ },
7460
+ "node_modules/three-stdlib/node_modules/fflate": {
7461
+ "version": "0.6.10",
7462
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
7463
+ "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==",
7464
+ "license": "MIT"
7465
+ },
7466
+ "node_modules/tinycolor2": {
7467
+ "version": "1.6.0",
7468
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
7469
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
7470
+ "license": "MIT"
7471
+ },
7472
  "node_modules/to-regex-range": {
7473
  "version": "5.0.1",
7474
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
 
7481
  "node": ">=8.0"
7482
  }
7483
  },
7484
+ "node_modules/troika-three-text": {
7485
+ "version": "0.49.1",
7486
+ "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.49.1.tgz",
7487
+ "integrity": "sha512-lXGWxgjJP9kw4i4Wh+0k0Q/7cRfS6iOME4knKht/KozPu9GcFA9NnNpRvehIhrUawq9B0ZRw+0oiFHgRO+4Wig==",
7488
+ "license": "MIT",
7489
+ "dependencies": {
7490
+ "bidi-js": "^1.0.2",
7491
+ "troika-three-utils": "^0.49.0",
7492
+ "troika-worker-utils": "^0.49.0",
7493
+ "webgl-sdf-generator": "1.1.1"
7494
+ },
7495
+ "peerDependencies": {
7496
+ "three": ">=0.125.0"
7497
+ }
7498
+ },
7499
+ "node_modules/troika-three-utils": {
7500
+ "version": "0.49.0",
7501
+ "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.49.0.tgz",
7502
+ "integrity": "sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==",
7503
+ "license": "MIT",
7504
+ "peerDependencies": {
7505
+ "three": ">=0.125.0"
7506
+ }
7507
+ },
7508
+ "node_modules/troika-worker-utils": {
7509
+ "version": "0.49.0",
7510
+ "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.49.0.tgz",
7511
+ "integrity": "sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg==",
7512
+ "license": "MIT"
7513
+ },
7514
  "node_modules/ts-api-utils": {
7515
  "version": "1.3.0",
7516
  "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
 
7549
  "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
7550
  "license": "0BSD"
7551
  },
7552
+ "node_modules/tunnel-rat": {
7553
+ "version": "0.1.2",
7554
+ "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz",
7555
+ "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==",
7556
+ "license": "MIT",
7557
+ "dependencies": {
7558
+ "zustand": "^4.3.2"
7559
+ }
7560
+ },
7561
+ "node_modules/tunnel-rat/node_modules/zustand": {
7562
+ "version": "4.5.5",
7563
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz",
7564
+ "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==",
7565
+ "license": "MIT",
7566
+ "dependencies": {
7567
+ "use-sync-external-store": "1.2.2"
7568
+ },
7569
+ "engines": {
7570
+ "node": ">=12.7.0"
7571
+ },
7572
+ "peerDependencies": {
7573
+ "@types/react": ">=16.8",
7574
+ "immer": ">=9.0.6",
7575
+ "react": ">=16.8"
7576
+ },
7577
+ "peerDependenciesMeta": {
7578
+ "@types/react": {
7579
+ "optional": true
7580
+ },
7581
+ "immer": {
7582
+ "optional": true
7583
+ },
7584
+ "react": {
7585
+ "optional": true
7586
+ }
7587
+ }
7588
+ },
7589
  "node_modules/type-check": {
7590
  "version": "0.4.0",
7591
  "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
 
7779
  }
7780
  }
7781
  },
7782
+ "node_modules/use-sync-external-store": {
7783
+ "version": "1.2.2",
7784
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
7785
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
7786
+ "license": "MIT",
7787
+ "peerDependencies": {
7788
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
7789
+ }
7790
+ },
7791
  "node_modules/util-deprecate": {
7792
  "version": "1.0.2",
7793
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7794
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
7795
  "license": "MIT"
7796
  },
7797
+ "node_modules/utility-types": {
7798
+ "version": "3.11.0",
7799
+ "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz",
7800
+ "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==",
7801
+ "license": "MIT",
7802
+ "engines": {
7803
+ "node": ">= 4"
7804
+ }
7805
+ },
7806
+ "node_modules/uuid": {
7807
+ "version": "9.0.1",
7808
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
7809
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
7810
+ "funding": [
7811
+ "https://github.com/sponsors/broofa",
7812
+ "https://github.com/sponsors/ctavan"
7813
+ ],
7814
+ "license": "MIT",
7815
+ "bin": {
7816
+ "uuid": "dist/bin/uuid"
7817
+ }
7818
+ },
7819
+ "node_modules/webgl-constants": {
7820
+ "version": "1.1.1",
7821
+ "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz",
7822
+ "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg=="
7823
+ },
7824
+ "node_modules/webgl-sdf-generator": {
7825
+ "version": "1.1.1",
7826
+ "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz",
7827
+ "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==",
7828
+ "license": "MIT"
7829
+ },
7830
  "node_modules/which": {
7831
  "version": "2.0.2",
7832
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
 
8048
  "node": ">= 14"
8049
  }
8050
  },
8051
+ "node_modules/yaot": {
8052
+ "version": "1.1.3",
8053
+ "resolved": "https://registry.npmjs.org/yaot/-/yaot-1.1.3.tgz",
8054
+ "integrity": "sha512-AE8LInj21hTuA01RUK+9pSsl0ltQXO+rxn4Q+CJT4+NI/X7dhGGblF7vvzGj6ro0qXRCGAE/7ccEfu6S4DJayw==",
8055
+ "license": "MIT",
8056
+ "dependencies": {
8057
+ "rafor": "^1.0.2"
8058
+ }
8059
+ },
8060
  "node_modules/yocto-queue": {
8061
  "version": "0.1.0",
8062
  "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
 
8069
  "funding": {
8070
  "url": "https://github.com/sponsors/sindresorhus"
8071
  }
8072
+ },
8073
+ "node_modules/zustand": {
8074
+ "version": "3.7.2",
8075
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz",
8076
+ "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==",
8077
+ "license": "MIT",
8078
+ "engines": {
8079
+ "node": ">=12.7.0"
8080
+ },
8081
+ "peerDependencies": {
8082
+ "react": ">=16.8"
8083
+ },
8084
+ "peerDependenciesMeta": {
8085
+ "react": {
8086
+ "optional": true
8087
+ }
8088
+ }
8089
  }
8090
  }
8091
  }
package.json CHANGED
@@ -13,6 +13,8 @@
13
  "@radix-ui/react-dropdown-menu": "^2.1.1",
14
  "@radix-ui/react-icons": "^1.3.0",
15
  "@radix-ui/react-slot": "^1.1.0",
 
 
16
  "@tabler/icons-react": "^3.17.0",
17
  "@tsparticles/engine": "^3.5.0",
18
  "@tsparticles/react": "^3.0.0",
@@ -28,7 +30,9 @@
28
  "sharp": "^0.33.5",
29
  "simplex-noise": "^4.0.3",
30
  "tailwind-merge": "^2.5.2",
31
- "tailwindcss-animate": "^1.0.7"
 
 
32
  },
33
  "devDependencies": {
34
  "@types/node": "^20",
 
13
  "@radix-ui/react-dropdown-menu": "^2.1.1",
14
  "@radix-ui/react-icons": "^1.3.0",
15
  "@radix-ui/react-slot": "^1.1.0",
16
+ "@react-three/drei": "^9.113.0",
17
+ "@react-three/fiber": "^8.17.8",
18
  "@tabler/icons-react": "^3.17.0",
19
  "@tsparticles/engine": "^3.5.0",
20
  "@tsparticles/react": "^3.0.0",
 
30
  "sharp": "^0.33.5",
31
  "simplex-noise": "^4.0.3",
32
  "tailwind-merge": "^2.5.2",
33
+ "tailwindcss-animate": "^1.0.7",
34
+ "three": "^0.168.0",
35
+ "three-globe": "^2.31.1"
36
  },
37
  "devDependencies": {
38
  "@types/node": "^20",
src/app/page.tsx CHANGED
@@ -1,10 +1,11 @@
1
- import AboutSection from "@/components/about-section";
2
- import Footer from "@/components/footer";
3
- import Header from "@/components/header";
4
- import PricingSection from "@/components/pricing-section";
5
  import { Compare } from "@/components/ui/compare";
6
  import { Cover } from "@/components/ui/cover";
7
- import WelcomeSection from "@/components/welcome-section";
 
 
 
 
 
8
 
9
  export default function Home() {
10
  return (
@@ -28,6 +29,7 @@ export default function Home() {
28
  />
29
  </div>
30
  </section>
 
31
  <PricingSection />
32
  </main>
33
  <Footer />
 
 
 
 
 
1
  import { Compare } from "@/components/ui/compare";
2
  import { Cover } from "@/components/ui/cover";
3
+ import Footer from "@/components/footer";
4
+ import Header from "@/components/header";
5
+ import AboutSection from "@/components/sections/about-section";
6
+ import PricingSection from "@/components/sections/pricing-section";
7
+ import WelcomeSection from "@/components/sections/welcome-section";
8
+ import ClientsSection from "@/components/sections/clients-section";
9
 
10
  export default function Home() {
11
  return (
 
29
  />
30
  </div>
31
  </section>
32
+ <ClientsSection />
33
  <PricingSection />
34
  </main>
35
  <Footer />
src/components/header.tsx CHANGED
@@ -6,7 +6,7 @@ import { Button } from "./ui/button";
6
 
7
  const Header = () => {
8
  return (
9
- <header className="sticky top-0 flex h-16 items-center border-b shadow-md gap-4 bg-background/50 backdrop-blur px-4 md:px-6 z-30">
10
  <Navbar />
11
  <Sidebar />
12
  <div className="flex w-full md:w-auto justify-end gap-4 md:ml-auto md:gap-2 lg:gap-4">
 
6
 
7
  const Header = () => {
8
  return (
9
+ <header className="sticky top-0 flex h-16 items-center border-b shadow-md gap-4 bg-background/50 backdrop-blur px-4 md:px-6 z-50">
10
  <Navbar />
11
  <Sidebar />
12
  <div className="flex w-full md:w-auto justify-end gap-4 md:ml-auto md:gap-2 lg:gap-4">
src/components/{about-section.tsx → sections/about-section.tsx} RENAMED
@@ -1,5 +1,5 @@
1
  import Image from "next/image";
2
- import { ContainerScroll } from "./ui/container-scroll-animation";
3
 
4
  const AboutSection = () => {
5
  return (
 
1
  import Image from "next/image";
2
+ import { ContainerScroll } from "../ui/container-scroll-animation";
3
 
4
  const AboutSection = () => {
5
  return (
src/components/sections/clients-section.tsx ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Spotlight } from "../ui/spotlight";
2
+
3
+ const ClientsSection = () => {
4
+ return (
5
+ <section
6
+ id="clients"
7
+ className="h-screen w-full dark:bg-black flex flex-col items-center justify-center overflow-hidden"
8
+ >
9
+ <div className="p-4 max-w-7xl mx-auto relative z-10 w-full pt-20 md:pt-0">
10
+ <h1 className="text-4xl md:text-7xl font-bold text-center bg-clip-text text-transparent bg-gradient-to-b from-neutral-600 to-neutral-400 dark:from-neutral-600 dark:to-white bg-opacity-50 p-2">
11
+ Clients <br /> from all over the globe.
12
+ </h1>
13
+ <p className="mt-4 font-normal text-base text-neutral-500 dark:text-neutral-300 max-w-lg text-center mx-auto">
14
+ Spotlight effect is a great way to draw attention to a specific part
15
+ of the page. Here, we are drawing the attention towards the text
16
+ section of the page. I don&apos;t know why but I&apos;m running out of
17
+ copy.
18
+ </p>
19
+ </div>
20
+ </section>
21
+ );
22
+ };
23
+
24
+ export default ClientsSection;
src/components/{pricing-section.tsx → sections/pricing-section.tsx} RENAMED
@@ -1,6 +1,6 @@
1
  import { CheckIcon } from "lucide-react";
2
- import { LampComponent } from "./ui/lamp";
3
- import { CardContainer, CardBody, CardItem } from "./ui/3d-card";
4
 
5
  const PricingSection = () => {
6
  return (
 
1
  import { CheckIcon } from "lucide-react";
2
+ import { LampComponent } from "../ui/lamp";
3
+ import { CardContainer, CardBody, CardItem } from "../ui/3d-card";
4
 
5
  const PricingSection = () => {
6
  return (
src/components/{welcome-section.tsx → sections/welcome-section.tsx} RENAMED
@@ -1,12 +1,12 @@
1
  "use client";
2
 
3
- import { ShootingStars } from "./ui/shooting-stars";
4
- import { SparklesCore } from "./ui/sparkles";
5
- import { StarsBackground } from "./ui/stars-background";
6
 
7
  const WelcomeSection = () => {
8
  return (
9
- <section className="h-screen w-full dark:bg-black flex flex-col items-center justify-center overflow-hidden">
10
  <h1
11
  className="md:text-7xl text-3xl lg:text-9xl font-bold text-center relative z-20
12
  bg-clip-text text-transparent bg-gradient-to-b from-neutral-900 to-neutral-700 dark:from-neutral-600 dark:to-white"
 
1
  "use client";
2
 
3
+ import { ShootingStars } from "../ui/shooting-stars";
4
+ import { SparklesCore } from "../ui/sparkles";
5
+ import { StarsBackground } from "../ui/stars-background";
6
 
7
  const WelcomeSection = () => {
8
  return (
9
+ <section id="#" className="h-screen w-full dark:bg-black flex flex-col items-center justify-center overflow-hidden">
10
  <h1
11
  className="md:text-7xl text-3xl lg:text-9xl font-bold text-center relative z-20
12
  bg-clip-text text-transparent bg-gradient-to-b from-neutral-900 to-neutral-700 dark:from-neutral-600 dark:to-white"
src/components/ui/spotlight.tsx ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from "react";
2
+ import { cn } from "@/lib/utils";
3
+
4
+ type SpotlightProps = {
5
+ className?: string;
6
+ fill?: string;
7
+ };
8
+
9
+ export const Spotlight = ({ className, fill }: SpotlightProps) => {
10
+ return (
11
+ <svg
12
+ className={cn(
13
+ "animate-spotlight pointer-events-none absolute z-[1] h-[169%] w-[138%] lg:w-[84%] opacity-0",
14
+ className
15
+ )}
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ viewBox="0 0 3787 2842"
18
+ fill="none"
19
+ >
20
+ <g filter="url(#filter)">
21
+ <ellipse
22
+ cx="1924.71"
23
+ cy="273.501"
24
+ rx="1924.71"
25
+ ry="273.501"
26
+ transform="matrix(-0.822377 -0.568943 -0.568943 0.822377 3631.88 2291.09)"
27
+ fill={fill || "white"}
28
+ fillOpacity="0.21"
29
+ ></ellipse>
30
+ </g>
31
+ <defs>
32
+ <filter
33
+ id="filter"
34
+ x="0.860352"
35
+ y="0.838989"
36
+ width="3785.16"
37
+ height="2840.26"
38
+ filterUnits="userSpaceOnUse"
39
+ colorInterpolationFilters="sRGB"
40
+ >
41
+ <feFlood floodOpacity="0" result="BackgroundImageFix"></feFlood>
42
+ <feBlend
43
+ mode="normal"
44
+ in="SourceGraphic"
45
+ in2="BackgroundImageFix"
46
+ result="shape"
47
+ ></feBlend>
48
+ <feGaussianBlur
49
+ stdDeviation="151"
50
+ result="effect1_foregroundBlur_1065_8"
51
+ ></feGaussianBlur>
52
+ </filter>
53
+ </defs>
54
+ </svg>
55
+ );
56
+ };
src/components/ui/wavy-background.tsx ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client";
2
+ import { cn } from "@/lib/utils";
3
+ import React, { useEffect, useRef, useState } from "react";
4
+ import { createNoise3D } from "simplex-noise";
5
+
6
+ export const WavyBackground = ({
7
+ children,
8
+ className,
9
+ containerClassName,
10
+ colors,
11
+ waveWidth,
12
+ backgroundFill,
13
+ blur = 10,
14
+ speed = "fast",
15
+ waveOpacity = 0.5,
16
+ ...props
17
+ }: {
18
+ children?: any;
19
+ className?: string;
20
+ containerClassName?: string;
21
+ colors?: string[];
22
+ waveWidth?: number;
23
+ backgroundFill?: string;
24
+ blur?: number;
25
+ speed?: "slow" | "fast";
26
+ waveOpacity?: number;
27
+ [key: string]: any;
28
+ }) => {
29
+ const noise = createNoise3D();
30
+ let w: number,
31
+ h: number,
32
+ nt: number,
33
+ i: number,
34
+ x: number,
35
+ ctx: any,
36
+ canvas: any;
37
+ const canvasRef = useRef<HTMLCanvasElement>(null);
38
+ const getSpeed = () => {
39
+ switch (speed) {
40
+ case "slow":
41
+ return 0.001;
42
+ case "fast":
43
+ return 0.002;
44
+ default:
45
+ return 0.001;
46
+ }
47
+ };
48
+
49
+ const init = () => {
50
+ canvas = canvasRef.current;
51
+ ctx = canvas.getContext("2d");
52
+ w = ctx.canvas.width = window.innerWidth;
53
+ h = ctx.canvas.height = window.innerHeight;
54
+ ctx.filter = `blur(${blur}px)`;
55
+ nt = 0;
56
+ window.onresize = function () {
57
+ w = ctx.canvas.width = window.innerWidth;
58
+ h = ctx.canvas.height = window.innerHeight;
59
+ ctx.filter = `blur(${blur}px)`;
60
+ };
61
+ render();
62
+ };
63
+
64
+ const waveColors = colors ?? [
65
+ "#38bdf8",
66
+ "#818cf8",
67
+ "#c084fc",
68
+ "#e879f9",
69
+ "#22d3ee",
70
+ ];
71
+ const drawWave = (n: number) => {
72
+ nt += getSpeed();
73
+ for (i = 0; i < n; i++) {
74
+ ctx.beginPath();
75
+ ctx.lineWidth = waveWidth || 50;
76
+ ctx.strokeStyle = waveColors[i % waveColors.length];
77
+ for (x = 0; x < w; x += 5) {
78
+ var y = noise(x / 800, 0.3 * i, nt) * 100;
79
+ ctx.lineTo(x, y + h * 0.5); // adjust for height, currently at 50% of the container
80
+ }
81
+ ctx.stroke();
82
+ ctx.closePath();
83
+ }
84
+ };
85
+
86
+ let animationId: number;
87
+ const render = () => {
88
+ ctx.fillStyle = backgroundFill || "black";
89
+ ctx.globalAlpha = waveOpacity || 0.5;
90
+ ctx.fillRect(0, 0, w, h);
91
+ drawWave(5);
92
+ animationId = requestAnimationFrame(render);
93
+ };
94
+
95
+ useEffect(() => {
96
+ init();
97
+ return () => {
98
+ cancelAnimationFrame(animationId);
99
+ };
100
+ }, []);
101
+
102
+ const [isSafari, setIsSafari] = useState(false);
103
+ useEffect(() => {
104
+ // I'm sorry but i have got to support it on safari.
105
+ setIsSafari(
106
+ typeof window !== "undefined" &&
107
+ navigator.userAgent.includes("Safari") &&
108
+ !navigator.userAgent.includes("Chrome")
109
+ );
110
+ }, []);
111
+
112
+ return (
113
+ <div
114
+ className={cn(
115
+ "h-screen flex flex-col items-center justify-center",
116
+ containerClassName
117
+ )}
118
+ >
119
+ <canvas
120
+ className="absolute inset-0 z-0"
121
+ ref={canvasRef}
122
+ id="canvas"
123
+ style={{
124
+ ...(isSafari ? { filter: `blur(${blur}px)` } : {}),
125
+ }}
126
+ ></canvas>
127
+ <div className={cn("relative z-10", className)} {...props}>
128
+ {children}
129
+ </div>
130
+ </div>
131
+ );
132
+ };
tailwind.config.ts CHANGED
@@ -1,62 +1,77 @@
1
  import type { Config } from "tailwindcss";
2
 
3
  const config: Config = {
4
- darkMode: ["class"],
5
- content: [
6
  "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
7
  "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
8
  "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
9
  ],
10
  theme: {
11
- extend: {
12
- colors: {
13
- background: 'hsl(var(--background))',
14
- foreground: 'hsl(var(--foreground))',
15
- card: {
16
- DEFAULT: 'hsl(var(--card))',
17
- foreground: 'hsl(var(--card-foreground))'
18
- },
19
- popover: {
20
- DEFAULT: 'hsl(var(--popover))',
21
- foreground: 'hsl(var(--popover-foreground))'
22
- },
23
- primary: {
24
- DEFAULT: 'hsl(var(--primary))',
25
- foreground: 'hsl(var(--primary-foreground))'
26
- },
27
- secondary: {
28
- DEFAULT: 'hsl(var(--secondary))',
29
- foreground: 'hsl(var(--secondary-foreground))'
30
- },
31
- muted: {
32
- DEFAULT: 'hsl(var(--muted))',
33
- foreground: 'hsl(var(--muted-foreground))'
34
- },
35
- accent: {
36
- DEFAULT: 'hsl(var(--accent))',
37
- foreground: 'hsl(var(--accent-foreground))'
38
- },
39
- destructive: {
40
- DEFAULT: 'hsl(var(--destructive))',
41
- foreground: 'hsl(var(--destructive-foreground))'
42
- },
43
- border: 'hsl(var(--border))',
44
- input: 'hsl(var(--input))',
45
- ring: 'hsl(var(--ring))',
46
- chart: {
47
- '1': 'hsl(var(--chart-1))',
48
- '2': 'hsl(var(--chart-2))',
49
- '3': 'hsl(var(--chart-3))',
50
- '4': 'hsl(var(--chart-4))',
51
- '5': 'hsl(var(--chart-5))'
52
- }
53
- },
54
- borderRadius: {
55
- lg: 'var(--radius)',
56
- md: 'calc(var(--radius) - 2px)',
57
- sm: 'calc(var(--radius) - 4px)'
58
- }
59
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  },
61
  plugins: [require("tailwindcss-animate")],
62
  };
 
1
  import type { Config } from "tailwindcss";
2
 
3
  const config: Config = {
4
+ darkMode: ["class"],
5
+ content: [
6
  "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
7
  "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
8
  "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
9
  ],
10
  theme: {
11
+ extend: {
12
+ colors: {
13
+ background: "hsl(var(--background))",
14
+ foreground: "hsl(var(--foreground))",
15
+ card: {
16
+ DEFAULT: "hsl(var(--card))",
17
+ foreground: "hsl(var(--card-foreground))",
18
+ },
19
+ popover: {
20
+ DEFAULT: "hsl(var(--popover))",
21
+ foreground: "hsl(var(--popover-foreground))",
22
+ },
23
+ primary: {
24
+ DEFAULT: "hsl(var(--primary))",
25
+ foreground: "hsl(var(--primary-foreground))",
26
+ },
27
+ secondary: {
28
+ DEFAULT: "hsl(var(--secondary))",
29
+ foreground: "hsl(var(--secondary-foreground))",
30
+ },
31
+ muted: {
32
+ DEFAULT: "hsl(var(--muted))",
33
+ foreground: "hsl(var(--muted-foreground))",
34
+ },
35
+ accent: {
36
+ DEFAULT: "hsl(var(--accent))",
37
+ foreground: "hsl(var(--accent-foreground))",
38
+ },
39
+ destructive: {
40
+ DEFAULT: "hsl(var(--destructive))",
41
+ foreground: "hsl(var(--destructive-foreground))",
42
+ },
43
+ border: "hsl(var(--border))",
44
+ input: "hsl(var(--input))",
45
+ ring: "hsl(var(--ring))",
46
+ chart: {
47
+ "1": "hsl(var(--chart-1))",
48
+ "2": "hsl(var(--chart-2))",
49
+ "3": "hsl(var(--chart-3))",
50
+ "4": "hsl(var(--chart-4))",
51
+ "5": "hsl(var(--chart-5))",
52
+ },
53
+ },
54
+ borderRadius: {
55
+ lg: "var(--radius)",
56
+ md: "calc(var(--radius) - 2px)",
57
+ sm: "calc(var(--radius) - 4px)",
58
+ },
59
+ animation: {
60
+ spotlight: "spotlight 2s ease .75s 1 forwards",
61
+ },
62
+ keyframes: {
63
+ spotlight: {
64
+ "0%": {
65
+ opacity: 0,
66
+ transform: "translate(-72%, -62%) scale(0.5)",
67
+ },
68
+ "100%": {
69
+ opacity: 1,
70
+ transform: "translate(-50%,-40%) scale(1)",
71
+ },
72
+ },
73
+ },
74
+ },
75
  },
76
  plugins: [require("tailwindcss-animate")],
77
  };