diff --git a/FrontEnd/my-app/app/page.tsx b/FrontEnd/my-app/app/page.tsx
index db3696b..c7fa5d3 100644
--- a/FrontEnd/my-app/app/page.tsx
+++ b/FrontEnd/my-app/app/page.tsx
@@ -1,63 +1,26 @@
"use client";
-import FeaturedQuests from "@/components/homepage/FeaturedQuests";
-import Link from "next/link";
import { motion } from "framer-motion";
+import Link from "next/link";
+import HeroSection from "@/components/homepage/HeroSection";
import { HowItWorks } from "@/components/homepage/HowItWorks";
-import { FAQAccordion } from "@/components/homepage/FAQAccordion";
import FeaturedQuests from "@/components/homepage/FeaturedQuests";
+import { FAQAccordion } from "@/components/homepage/FAQAccordion";
export default function Home() {
return (
{/* Hero */}
-
-
- Turn Work Into{" "}
-
- On-Chain Achievements
-
-
-
- Complete quests, earn rewards, and build your reputation on the
- Stellar blockchain. Fast settlements, low fees, global reach.
-
-
-
- Explore Quests
-
-
- Connect Wallet
-
-
-
+
{/* How It Works */}
+ {/* Featured Quests */}
+
+
{/* CTA */}
-
+
- Join thousands of contributors completing quests and building
- their on-chain reputation. Connect your wallet to get started.
+ Join thousands of contributors completing quests and building their
+ on-chain reputation. Connect your wallet to get started.
-
-
-
-
-
- {/* Featured Quests */}
-
-
{/* FAQ */}
);
-}
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/components/homepage/CTAButtons.tsx b/FrontEnd/my-app/components/homepage/CTAButtons.tsx
new file mode 100644
index 0000000..f6d2252
--- /dev/null
+++ b/FrontEnd/my-app/components/homepage/CTAButtons.tsx
@@ -0,0 +1,43 @@
+"use client";
+
+import Link from "next/link";
+
+export default function CTAButtons() {
+ return (
+
+
+ Explore Quests
+
+
+
+
+
+ Connect Wallet
+
+
+ );
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/components/homepage/HeroSection.tsx b/FrontEnd/my-app/components/homepage/HeroSection.tsx
new file mode 100644
index 0000000..457a2ba
--- /dev/null
+++ b/FrontEnd/my-app/components/homepage/HeroSection.tsx
@@ -0,0 +1,133 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { motion } from "framer-motion";
+import CTAButtons from "./CTAButtons";
+import StatsCounter from "./StatsCounter";
+import TrustIndicators from "./TrustIndicators";
+
+const ROTATING_WORDS = ["Achievements", "Rewards", "Reputation", "Income"];
+
+export default function HeroSection() {
+ const [wordIndex, setWordIndex] = useState(0);
+ const [visible, setVisible] = useState(true);
+
+ useEffect(() => {
+ const interval = setInterval(() => {
+ setVisible(false);
+ setTimeout(() => {
+ setWordIndex((i) => (i + 1) % ROTATING_WORDS.length);
+ setVisible(true);
+ }, 350);
+ }, 2600);
+ return () => clearInterval(interval);
+ }, []);
+
+ return (
+
+ {/* Background grid */}
+
+
+ {/* Ambient glow */}
+
+
+
+
+ {/* "Built on Stellar & Soroban" badge */}
+
+ ⭐
+
+ Built on Stellar & Soroban
+
+
+
+ {/* Headline */}
+
+ Turn Work Into{" "}
+
+
+ On-Chain {ROTATING_WORDS[wordIndex]}
+
+
+
+ {/* Subtext */}
+
+ Complete quests, earn rewards, and build your reputation on the
+ Stellar blockchain. Fast settlements, low fees, global reach.
+
+
+ {/* CTA Buttons */}
+
+
+
+
+ {/* Stats */}
+
+
+
+
+ {/* Trust indicator pills */}
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/components/homepage/NetworkVisualization.tsx b/FrontEnd/my-app/components/homepage/NetworkVisualization.tsx
new file mode 100644
index 0000000..8074cbe
--- /dev/null
+++ b/FrontEnd/my-app/components/homepage/NetworkVisualization.tsx
@@ -0,0 +1,130 @@
+"use client";
+
+import { useEffect, useRef } from "react";
+
+interface Node {
+ x: number;
+ y: number;
+ vx: number;
+ vy: number;
+ radius: number;
+ pulse: number;
+ pulseSpeed: number;
+}
+
+export default function NetworkVisualization() {
+ const canvasRef = useRef(null);
+ const animRef = useRef(null);
+
+ useEffect(() => {
+ const canvas = canvasRef.current;
+ if (!canvas) return;
+ const ctx = canvas.getContext("2d");
+ if (!ctx) return;
+
+ const setSize = () => {
+ canvas.width = canvas.offsetWidth;
+ canvas.height = canvas.offsetHeight;
+ };
+ setSize();
+
+ const NODE_COUNT = Math.max(
+ 12,
+ Math.floor((canvas.width * canvas.height) / 16000)
+ );
+ const MAX_DIST = 120;
+ // Cyan palette matching the project
+ const COLORS = ["#22d3ee", "#06b6d4", "#67e8f9", "#a5f3fc", "#0891b2"];
+
+ const nodes: Node[] = Array.from({ length: NODE_COUNT }, () => ({
+ x: Math.random() * canvas.width,
+ y: Math.random() * canvas.height,
+ vx: (Math.random() - 0.5) * 0.5,
+ vy: (Math.random() - 0.5) * 0.5,
+ radius: 2 + Math.random() * 2.5,
+ pulse: Math.random() * Math.PI * 2,
+ pulseSpeed: 0.018 + Math.random() * 0.015,
+ }));
+
+ // Store colors separately so they don't reset each frame
+ const nodeColors = nodes.map(
+ () => COLORS[Math.floor(Math.random() * COLORS.length)]
+ );
+
+ const draw = () => {
+ const W = canvas.width;
+ const H = canvas.height;
+ ctx.clearRect(0, 0, W, H);
+
+ // Update
+ nodes.forEach((n) => {
+ n.x += n.vx;
+ n.y += n.vy;
+ n.pulse += n.pulseSpeed;
+ if (n.x < 0 || n.x > W) n.vx *= -1;
+ if (n.y < 0 || n.y > H) n.vy *= -1;
+ });
+
+ // Edges
+ for (let i = 0; i < nodes.length; i++) {
+ for (let j = i + 1; j < nodes.length; j++) {
+ const dx = nodes[i].x - nodes[j].x;
+ const dy = nodes[i].y - nodes[j].y;
+ const dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < MAX_DIST) {
+ const alpha = (1 - dist / MAX_DIST) * 0.4;
+ ctx.beginPath();
+ ctx.moveTo(nodes[i].x, nodes[i].y);
+ ctx.lineTo(nodes[j].x, nodes[j].y);
+ ctx.strokeStyle = `rgba(34, 211, 238, ${alpha})`;
+ ctx.lineWidth = 0.8;
+ ctx.stroke();
+ }
+ }
+ }
+
+ // Nodes
+ nodes.forEach((n, i) => {
+ const r = n.radius * (1 + 0.2 * Math.sin(n.pulse));
+ const color = nodeColors[i];
+
+ // Glow
+ const grd = ctx.createRadialGradient(n.x, n.y, 0, n.x, n.y, r * 4);
+ grd.addColorStop(0, color + "99");
+ grd.addColorStop(1, color + "00");
+ ctx.beginPath();
+ ctx.arc(n.x, n.y, r * 4, 0, Math.PI * 2);
+ ctx.fillStyle = grd;
+ ctx.fill();
+
+ // Core dot
+ ctx.beginPath();
+ ctx.arc(n.x, n.y, r, 0, Math.PI * 2);
+ ctx.fillStyle = color;
+ ctx.fill();
+ });
+
+ animRef.current = requestAnimationFrame(draw);
+ };
+
+ draw();
+
+ const handleResize = () => {
+ setSize();
+ };
+ window.addEventListener("resize", handleResize);
+
+ return () => {
+ if (animRef.current) cancelAnimationFrame(animRef.current);
+ window.removeEventListener("resize", handleResize);
+ };
+ }, []);
+
+ return (
+
+
+ {/* Fade out bottom edge to blend with section */}
+
+
+ );
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/components/homepage/StatsCounter.tsx b/FrontEnd/my-app/components/homepage/StatsCounter.tsx
new file mode 100644
index 0000000..17ddc78
--- /dev/null
+++ b/FrontEnd/my-app/components/homepage/StatsCounter.tsx
@@ -0,0 +1,97 @@
+"use client";
+
+import { useEffect, useRef, useState } from "react";
+
+interface Stat {
+ label: string;
+ target: number;
+ prefix?: string;
+ suffix?: string;
+ decimals?: number;
+}
+
+const STATS: Stat[] = [
+ { label: "XLM Distributed", target: 2.5, prefix: "", suffix: "M+", decimals: 1 },
+ { label: "Quests Completed", target: 10, prefix: "", suffix: "K+", decimals: 0 },
+ { label: "Active Quests", target: 5, prefix: "", suffix: "K+", decimals: 0 },
+];
+
+function useCountUp(target: number, decimals = 0, active: boolean) {
+ const [count, setCount] = useState(0);
+ const rafRef = useRef(null);
+
+ useEffect(() => {
+ if (!active) return;
+ const duration = 1800;
+ const start = performance.now();
+
+ const step = (now: number) => {
+ const progress = Math.min((now - start) / duration, 1);
+ const eased = 1 - Math.pow(1 - progress, 3);
+ setCount(parseFloat((eased * target).toFixed(decimals)));
+ if (progress < 1) rafRef.current = requestAnimationFrame(step);
+ };
+
+ rafRef.current = requestAnimationFrame(step);
+ return () => {
+ if (rafRef.current) cancelAnimationFrame(rafRef.current);
+ };
+ }, [target, decimals, active]);
+
+ return count;
+}
+
+function StatItem({ stat, active }: { stat: Stat; active: boolean }) {
+ const count = useCountUp(stat.target, stat.decimals ?? 0, active);
+ const display = stat.decimals
+ ? count.toFixed(stat.decimals)
+ : Math.round(count).toLocaleString();
+
+ return (
+
+
+ {stat.prefix}
+ {display}
+ {stat.suffix}
+
+ {stat.label}
+
+ );
+}
+
+export default function StatsCounter() {
+ const ref = useRef(null);
+ const [active, setActive] = useState(false);
+
+ useEffect(() => {
+ const el = ref.current;
+ if (!el) return;
+ const observer = new IntersectionObserver(
+ ([entry]) => {
+ if (entry.isIntersecting) {
+ setActive(true);
+ observer.disconnect();
+ }
+ },
+ { threshold: 0.3 }
+ );
+ observer.observe(el);
+ return () => observer.disconnect();
+ }, []);
+
+ return (
+
+ {STATS.map((stat) => (
+
+ ))}
+
+ );
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/components/homepage/TrustIndicators.tsx b/FrontEnd/my-app/components/homepage/TrustIndicators.tsx
new file mode 100644
index 0000000..1e900d7
--- /dev/null
+++ b/FrontEnd/my-app/components/homepage/TrustIndicators.tsx
@@ -0,0 +1,28 @@
+"use client";
+
+const INDICATORS = [
+ { icon: "⚡", label: "5-Second Settlement" },
+ { icon: "✅", label: "On-Chain Verification" },
+ { icon: "🏆", label: "Earn XP & Badges" },
+];
+
+export default function TrustIndicators() {
+ return (
+
+ {INDICATORS.map(({ icon, label }) => (
+
+ {icon}
+ {label}
+
+ ))}
+
+ );
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/package-lock.json b/FrontEnd/my-app/package-lock.json
index 87bb443..4a2b47d 100644
--- a/FrontEnd/my-app/package-lock.json
+++ b/FrontEnd/my-app/package-lock.json
@@ -85,6 +85,7 @@
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -684,17 +685,6 @@
"@floating-ui/utils": "^0.2.11"
}
},
- "node_modules/@floating-ui/dom": {
- "version": "1.7.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz",
- "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@floating-ui/core": "^1.7.5",
- "@floating-ui/utils": "^0.2.11"
- }
- },
"node_modules/@floating-ui/utils": {
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz",
@@ -1487,7 +1477,6 @@
"resolved": "https://registry.npmjs.org/@near-js/accounts/-/accounts-1.4.1.tgz",
"integrity": "sha512-ni3QT9H3NdrbVVKyx56yvz93r89Dvpc/vgVtiIK2OdXjkK6jcj+UKMDRQ6F7rd9qJOInLkHZbVBtcR6j1CXLjw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/providers": "1.0.3",
@@ -1507,8 +1496,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz",
"integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/@near-js/crypto": {
"version": "1.4.2",
@@ -1535,7 +1523,6 @@
"resolved": "https://registry.npmjs.org/@near-js/keystores/-/keystores-0.2.2.tgz",
"integrity": "sha512-DLhi/3a4qJUY+wgphw2Jl4S+L0AKsUYm1mtU0WxKYV5OBwjOXvbGrXNfdkheYkfh3nHwrQgtjvtszX6LrRXLLw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/types": "0.3.1"
@@ -1546,7 +1533,6 @@
"resolved": "https://registry.npmjs.org/@near-js/keystores-browser/-/keystores-browser-0.2.2.tgz",
"integrity": "sha512-Pxqm7WGtUu6zj32vGCy9JcEDpZDSB5CCaLQDTQdF3GQyL0flyRv2I/guLAgU5FLoYxU7dJAX9mslJhPW7P2Bfw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/keystores": "0.2.2"
@@ -1557,7 +1543,6 @@
"resolved": "https://registry.npmjs.org/@near-js/keystores-node/-/keystores-node-0.1.2.tgz",
"integrity": "sha512-MWLvTszZOVziiasqIT/LYNhUyWqOJjDGlsthOsY6dTL4ZcXjjmhmzrbFydIIeQr+CcEl5wukTo68ORI9JrHl6g==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/keystores": "0.2.2"
@@ -1568,7 +1553,6 @@
"resolved": "https://registry.npmjs.org/@near-js/providers/-/providers-1.0.3.tgz",
"integrity": "sha512-VJMboL14R/+MGKnlhhE3UPXCGYvMd1PpvF9OqZ9yBbulV7QVSIdTMfY4U1NnDfmUC2S3/rhAEr+3rMrIcNS7Fg==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/transactions": "1.3.3",
"@near-js/types": "0.3.1",
@@ -1584,8 +1568,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz",
"integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/@near-js/providers/node_modules/node-fetch": {
"version": "2.6.7",
@@ -1593,7 +1576,6 @@
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -1614,7 +1596,6 @@
"resolved": "https://registry.npmjs.org/@near-js/signers/-/signers-0.2.2.tgz",
"integrity": "sha512-M6ib+af9zXAPRCjH2RyIS0+RhCmd9gxzCeIkQ+I2A3zjgGiEDkBZbYso9aKj8Zh2lPKKSH7h+u8JGymMOSwgyw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/keystores": "0.2.2",
@@ -1626,7 +1607,6 @@
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz",
"integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 16"
},
@@ -1639,7 +1619,6 @@
"resolved": "https://registry.npmjs.org/@near-js/transactions/-/transactions-1.3.3.tgz",
"integrity": "sha512-1AXD+HuxlxYQmRTLQlkVmH+RAmV3HwkAT8dyZDu+I2fK/Ec9BQHXakOJUnOBws3ihF+akQhamIBS5T0EXX/Ylw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/crypto": "1.4.2",
"@near-js/signers": "0.2.2",
@@ -1653,8 +1632,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz",
"integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/@near-js/types": {
"version": "0.3.1",
@@ -1679,7 +1657,6 @@
"resolved": "https://registry.npmjs.org/@near-js/wallet-account/-/wallet-account-1.3.3.tgz",
"integrity": "sha512-GDzg/Kz0GBYF7tQfyQQQZ3vviwV8yD+8F2lYDzsWJiqIln7R1ov0zaXN4Tii86TeS21KPn2hHAsVu3Y4txa8OQ==",
"license": "ISC",
- "peer": true,
"dependencies": {
"@near-js/accounts": "1.4.1",
"@near-js/crypto": "1.4.2",
@@ -1696,8 +1673,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz",
"integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/@near-wallet-selector/core": {
"version": "8.10.2",
@@ -1874,6 +1850,7 @@
"resolved": "https://registry.npmjs.org/@ngneat/elf/-/elf-2.5.1.tgz",
"integrity": "sha512-13BItNZFgHglTiXuP9XhisNczwQ5QSzH+imAv9nAPsdbCq/3ortqkIYRnlxB8DGPVcuIjLujQ4OcZa+9QWgZtw==",
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"rxjs": ">=7.0.0"
}
@@ -1984,6 +1961,7 @@
"integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==",
"devOptional": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"playwright": "1.58.2"
},
@@ -2432,6 +2410,7 @@
"resolved": "https://registry.npmjs.org/@solana/kit/-/kit-2.3.0.tgz",
"integrity": "sha512-sb6PgwoW2LjE5oTFu4lhlS/cGt/NB3YrShEyx7JgWFWysfgLdJnhwWThgwy/4HjNsmtMrQGWVls0yVBHcMvlMQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@solana/accounts": "2.3.0",
"@solana/addresses": "2.3.0",
@@ -2788,6 +2767,7 @@
"resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-2.3.0.tgz",
"integrity": "sha512-LvjADZrpZ+CnhlHqfI5cmsRzX9Rpyb1Ox2dMHnbsRNzeKAMhu9w4ZBIaeTdO322zsTr509G1B+k2ABD3whvUBA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@solana/accounts": "2.3.0",
"@solana/codecs": "2.3.0",
@@ -2910,6 +2890,7 @@
"resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.4.tgz",
"integrity": "sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/runtime": "^7.25.0",
"@noble/curves": "^1.4.2",
@@ -3114,7 +3095,6 @@
"resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-14.1.0.tgz",
"integrity": "sha512-A8kFli6QGy22SRF45IjgPAJfUNGjnI+R7g4DF5NZYVsD1kGf7B4ITyc4OPclLV9tqNI4/lXxafGEw0JEUbHixw==",
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@noble/curves": "^1.9.6",
"@stellar/js-xdr": "^3.1.2",
@@ -3132,7 +3112,6 @@
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
"integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@noble/hashes": "1.8.0"
},
@@ -3148,7 +3127,6 @@
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
"integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
"license": "MIT",
- "peer": true,
"engines": {
"node": "^14.21.3 || >=16"
},
@@ -3161,6 +3139,7 @@
"resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-13.3.0.tgz",
"integrity": "sha512-8+GHcZLp+mdin8gSjcgfb/Lb6sSMYRX6Nf/0LcSJxvjLQR0XHpjGzOiRbYb2jSXo51EnA6kAV5j+4Pzh5OUKUg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"@stellar/stellar-base": "^13.1.0",
"axios": "^1.8.4",
@@ -3480,6 +3459,7 @@
"resolved": "https://registry.npmjs.org/@tiptap/core/-/core-3.21.0.tgz",
"integrity": "sha512-IfnQiuEeabDSPr1C/zHFTbnvlTf5z0DE/d/xz4C6bkL4ZBDJ3rr99h2qsaV0l8F+kbNswZMlQdM8rxNlMy95fQ==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -3702,6 +3682,7 @@
"resolved": "https://registry.npmjs.org/@tiptap/extension-list/-/extension-list-3.21.0.tgz",
"integrity": "sha512-KeBlEtLrGce2d3dgL89hmwWEtREuzlW4XY5bYWpKNvCbFqvdSb3n7vkdkw32YclZmMWxAcABgW6ucCStkE0rsQ==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -3820,6 +3801,7 @@
"resolved": "https://registry.npmjs.org/@tiptap/extensions/-/extensions-3.21.0.tgz",
"integrity": "sha512-MN1uh5PmHT1F2BNsbc21MIS0AMFFA73oODlp/4ckpBR4o5AxRwV+8f43Cd52UL4MgMkKj/A+QfZ7iK9IDb0h5A==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -3834,6 +3816,7 @@
"resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-3.21.0.tgz",
"integrity": "sha512-I3sNo7oMMsR6FFz1ecvPb9uCF0VQuS2WV67j8Io2M7DJicRWCE/GM5DaiYjTeWBbnByk6BuG0txoJATAqPVliQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-changeset": "^2.3.0",
"prosemirror-collab": "^1.3.1",
@@ -3927,7 +3910,6 @@
"resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.5.0.tgz",
"integrity": "sha512-evILW5XJEmfPlf0TY1duOLtGJ47pdGeSKVE3P75ODEUsRNxtPVqlkOUBPmYpCxPnzS8XDmkatT8lf9/DF0G6nA==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/env-utils": "1.5.0",
"@trezor/utils": "9.5.0"
@@ -3941,7 +3923,6 @@
"resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.6.1.tgz",
"integrity": "sha512-SPwxkihOMI0o79BOy0RkfgVL2meuJhIe1yWHCeR8uoqf5KGblUyeXxvNCy6w8ckJ9LRpM1+bZhsUODuNs3083Q==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@solana-program/compute-budget": "^0.8.0",
"@solana-program/stake": "^0.2.1",
@@ -3971,7 +3952,6 @@
"resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.5.1.tgz",
"integrity": "sha512-Idavz6LwLBW8sXc69fh5AJEnl666EDl2Nt3io7updvBgOR0/P12I900DgjNhCKtiWuv66A33/5RE7zLcj3lfnw==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/utils": "9.5.0",
"@trezor/utxo-lib": "2.5.0"
@@ -3985,7 +3965,6 @@
"resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.5.2.tgz",
"integrity": "sha512-OSS5OEE98FMnYfjoEALPjBt7ebjC/FKnq3HOolHdEWXBpVlXZNN2+Vo1R9J6WbZUU087sHuUTJJy/GJYWY13Tg==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@mobily/ts-belt": "^3.13.1",
"@stellar/stellar-sdk": "14.2.0",
@@ -4004,7 +3983,6 @@
"integrity": "sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==",
"hasInstallScript": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@stellar/stellar-base": "^14.0.1",
"axios": "^1.12.2",
@@ -4025,7 +4003,6 @@
"integrity": "sha512-7nh2ogzLRMhfkIC0fGjn1LHUzk3jqVw8tjAuTt5ADWfL9CSGBL18ILucE9igz2L/RU2AZgeAvhujAnW91Ut/oQ==",
"hasInstallScript": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"@stellar/stellar-base": "^14.0.1",
"axios": "^1.12.2",
@@ -4045,7 +4022,6 @@
"resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.5.0.tgz",
"integrity": "sha512-wD6FKKxNr89MTWYL+NikRkBcWXhiWNFR0AuDHW6GHmlCEHhKu/hAvQtcER8X5jt/Wd0hSKNZqtHBXJ1ZkpJ6rg==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/utils": "9.5.0",
"@trezor/utxo-lib": "2.5.0"
@@ -4059,7 +4035,6 @@
"resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.5.1.tgz",
"integrity": "sha512-2tDGLEj5jzydjsJQONGTWVmCDDy6FTZ4ytr1/2gE6anyYEJU8MbaR+liTt3UvcP5jwZTNutwYLvZixRfrb8JpA==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@mobily/ts-belt": "^3.13.1",
"@stellar/stellar-sdk": "14.2.0",
@@ -4077,7 +4052,6 @@
"resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.5.1.tgz",
"integrity": "sha512-nAkaCCAqLpErBd+IuKeG5MpbyLR/2RMgCw18TWc80m1Ws/XgQirhHY9Jbk6gLImTXb9GTrxP0+MDSahzd94rSA==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/schema-utils": "1.4.0",
"long": "5.2.5",
@@ -4092,7 +4066,6 @@
"resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.7.2.tgz",
"integrity": "sha512-Sn6F4mNH+yi2vAHy29kwhs50bRLn92drg3znm3pkY+8yEBxI4MmuP8sKYjdgUEJnQflWh80KlcvEDeVa4olVRA==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@ethereumjs/common": "^10.1.0",
"@ethereumjs/tx": "^10.1.0",
@@ -4137,7 +4110,6 @@
"resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.4.0.tgz",
"integrity": "sha512-hy2J2oeIhRC/e1bOWXo5dsVMVnDwO2UKnxhR6FD8PINR3jgM6PWAXc6k33WJsBcyiTzwMP7/xPysLcgNJH5o4w==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/analytics": "1.5.0"
},
@@ -4150,7 +4122,6 @@
"resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.5.1.tgz",
"integrity": "sha512-wdpVCwdylBh4SBO5Ys40tB/d59UlfjmxgBHDkkLgaR+JcqkthCfiw5VlUrV9wu65lquejAZhA5KQL4mUUUhCow==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@trezor/env-utils": "1.5.0",
"@trezor/type-utils": "1.2.0",
@@ -4508,15 +4479,13 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz",
"integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@trezor/connect/node_modules/bs58": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz",
"integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"base-x": "^5.0.0"
}
@@ -4526,7 +4495,6 @@
"resolved": "https://registry.npmjs.org/@trezor/crypto-utils/-/crypto-utils-1.2.0.tgz",
"integrity": "sha512-9i1NrfW1IE6JO910ut7xrx4u5LxE++GETbpJhWLj4P5xpuGDDSDLEn/MXaYisls2DpE897aOrGPaa1qyt8V6tw==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"peerDependencies": {
"tslib": "^2.6.2"
}
@@ -4536,7 +4504,6 @@
"resolved": "https://registry.npmjs.org/@trezor/device-authenticity/-/device-authenticity-1.1.2.tgz",
"integrity": "sha512-313uSXYR4XKDv3CjtCpgHA+yEe9xxqN7EFl/D68FEn70SPsuWI0+2zUvjPPh6TIOh/EcLv7hCO/QTHUAGd7ZWQ==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@noble/curves": "^2.0.1",
"@trezor/crypto-utils": "1.2.0",
@@ -4550,7 +4517,6 @@
"resolved": "https://registry.npmjs.org/@noble/curves/-/curves-2.0.1.tgz",
"integrity": "sha512-vs1Az2OOTBiP4q0pwjW5aF0xp9n4MxVrmkFBxc6EKZc6ddYx5gaZiAsZoq0uRRXWbi3AT/sBqn05eRPtn1JCPw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@noble/hashes": "2.0.1"
},
@@ -4566,7 +4532,6 @@
"resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz",
"integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 20.19.0"
},
@@ -4578,15 +4543,13 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@trezor/device-utils/-/device-utils-1.2.0.tgz",
"integrity": "sha512-Aqp7pIooFTx21zRUtTI6i1AS4d9Lrx7cclvksh2nJQF9WJvbzuCXshEGkLoOsHwhQrCl3IXfbGuMdA12yDenPA==",
- "license": "See LICENSE.md in repo root",
- "peer": true
+ "license": "See LICENSE.md in repo root"
},
"node_modules/@trezor/env-utils": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.5.0.tgz",
"integrity": "sha512-u1TN7dMQ5Qhpbae08Z4JJmI9fQrbbJ4yj8eIAsuzMQn6vb+Sg9vbntl+IDsZ1G9WeI73uHTLu1wWMmAgiujH8w==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"ua-parser-js": "^2.0.4"
},
@@ -4613,7 +4576,6 @@
"resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.5.2.tgz",
"integrity": "sha512-zViaL1jKue8DUTVEDg0C/lMipqNMd/Z3kr29/+MeZOoupjaXIQ2Lqp3WAMe8hvNTKKX8aNQH9JrbapJ6w9FMXw==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@trezor/schema-utils": "1.4.0",
"long": "5.2.5",
@@ -4628,7 +4590,6 @@
"resolved": "https://registry.npmjs.org/@trezor/protocol/-/protocol-1.3.0.tgz",
"integrity": "sha512-rmrxbDrdgxTouBPbZcSeqU7ba/e5WVT1dxvxxEntHqRdTiDl7d3VK+BErCrlyol8EH5YCqEF3/rXt0crSOfoFw==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"peerDependencies": {
"tslib": "^2.6.2"
}
@@ -4638,7 +4599,6 @@
"resolved": "https://registry.npmjs.org/@trezor/schema-utils/-/schema-utils-1.4.0.tgz",
"integrity": "sha512-K7upSeh7VDrORaIC4KAxYVW93XNlohmUnH5if/5GKYmTdQSRp1nBkO6Jm+Z4hzIthdnz/1aLgnbeN3bDxWLRxA==",
"license": "See LICENSE.md in repo root",
- "peer": true,
"dependencies": {
"@sinclair/typebox": "^0.33.7",
"ts-mixer": "^6.0.3"
@@ -4652,7 +4612,6 @@
"resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.6.2.tgz",
"integrity": "sha512-w0HlD1fU+qTGO3tefBGHF/YS/ts/TWFja9FGIJ4+7+Z9NphvIG06HGvy2HzcD9AhJy9pvDeIsyoM2TTZTiyjkQ==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@trezor/protobuf": "1.5.2",
"@trezor/protocol": "1.3.0",
@@ -4669,15 +4628,13 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@trezor/type-utils/-/type-utils-1.2.0.tgz",
"integrity": "sha512-+E2QntxkyQuYfQQyl8RvT01tq2i5Dp/LFUOXuizF+KVOqsZBjBY43j5hewcCO3+MokD7deDiPyekbUEN5/iVlw==",
- "license": "See LICENSE.md in repo root",
- "peer": true
+ "license": "See LICENSE.md in repo root"
},
"node_modules/@trezor/utils": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.5.0.tgz",
"integrity": "sha512-kdyMyDbxzvOZmwBNvTjAK+C/kzyOz8T4oUbFvq+KaXn5mBFf1uf8rq5X2HkxgdYRPArtHS3PxLKsfkNCdhCYtQ==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"bignumber.js": "^9.3.1"
},
@@ -4690,7 +4647,6 @@
"resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-2.5.0.tgz",
"integrity": "sha512-Fa2cZh0037oX6AHNLfpFIj65UR/OoX0ZJTocFuQASe77/1PjZHysf6BvvGfmzuFToKfrAQ+DM/1Sx+P/vnyNmA==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@trezor/utils": "9.5.0",
"bech32": "^2.0.0",
@@ -4718,15 +4674,13 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz",
"integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/@trezor/utxo-lib/node_modules/bs58": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz",
"integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"base-x": "^5.0.0"
}
@@ -4736,7 +4690,6 @@
"resolved": "https://registry.npmjs.org/@trezor/websocket-client/-/websocket-client-1.3.0.tgz",
"integrity": "sha512-9KQSaVc3NtmM6rFFj1e+9bM0C5mVKVidbnxlfzuBJu7G2YMRdIdLPcAXhvmRZjs40uzDuBeApK+p547kODz2ug==",
"license": "SEE LICENSE IN LICENSE.md",
- "peer": true,
"dependencies": {
"@trezor/utils": "9.5.0",
"ws": "^8.18.0"
@@ -4827,6 +4780,7 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
"integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"csstype": "^3.2.2"
}
@@ -4836,6 +4790,7 @@
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
"license": "MIT",
+ "peer": true,
"peerDependencies": {
"@types/react": "^19.2.0"
}
@@ -4924,6 +4879,7 @@
"integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.57.2",
"@typescript-eslint/types": "8.57.2",
@@ -5586,21 +5542,6 @@
"ws": "^7.5.1"
}
},
- "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/utf-8-validate": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
- "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
"node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
@@ -5923,6 +5864,7 @@
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -6196,7 +6138,6 @@
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
@@ -6207,8 +6148,7 @@
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/ast-types-flow": {
"version": "0.0.8",
@@ -6534,7 +6474,6 @@
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -6549,7 +6488,6 @@
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
"license": "MIT",
- "peer": true,
"dependencies": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -6561,7 +6499,6 @@
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"license": "MIT",
- "peer": true,
"dependencies": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -6574,7 +6511,6 @@
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz",
"integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^5.2.1",
"randombytes": "^2.1.0",
@@ -6589,7 +6525,6 @@
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz",
"integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==",
"license": "ISC",
- "peer": true,
"dependencies": {
"bn.js": "^5.2.2",
"browserify-rsa": "^4.1.1",
@@ -6609,15 +6544,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/browserify-sign/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -6632,15 +6565,13 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/browserify-sign/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -6649,8 +6580,7 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/browserslist": {
"version": "4.28.1",
@@ -6672,6 +6602,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -6754,22 +6685,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
"integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
- "license": "MIT",
- "peer": true
- },
- "node_modules/bufferutil": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz",
- "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
+ "license": "MIT"
},
"node_modules/call-bind": {
"version": "1.0.8",
@@ -6871,7 +6787,6 @@
"resolved": "https://registry.npmjs.org/cbor/-/cbor-10.0.12.tgz",
"integrity": "sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"nofilter": "^3.0.2"
},
@@ -7037,7 +6952,6 @@
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^4.1.0",
"elliptic": "^6.5.3"
@@ -7047,8 +6961,7 @@
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/create-hash": {
"version": "1.2.0",
@@ -7130,7 +7043,6 @@
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
@@ -7333,7 +7245,6 @@
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz",
"integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
@@ -7386,7 +7297,6 @@
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -7397,8 +7307,7 @@
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/dijkstrajs": {
"version": "1.0.3",
@@ -7747,6 +7656,7 @@
"integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -7932,6 +7842,7 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -8237,7 +8148,6 @@
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -8247,8 +8157,7 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz",
"integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/eyes": {
"version": "0.1.8",
@@ -8575,7 +8484,6 @@
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"is-property": "^1.0.2"
}
@@ -8585,7 +8493,6 @@
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"is-property": "^1.0.0"
}
@@ -8962,7 +8869,6 @@
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"license": "MIT",
- "peer": true,
"dependencies": {
"depd": "~1.1.2",
"inherits": "2.0.3",
@@ -8979,7 +8885,6 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -8988,8 +8893,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/humanize-ms": {
"version": "1.2.1",
@@ -9004,7 +8908,8 @@
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz",
"integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==",
- "license": "Apache-2.0"
+ "license": "Apache-2.0",
+ "peer": true
},
"node_modules/ieee754": {
"version": "1.2.1",
@@ -9337,15 +9242,13 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
"integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/is-my-json-valid": {
"version": "2.20.6",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
"integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"generate-function": "^2.0.0",
"generate-object-property": "^1.1.0",
@@ -9398,8 +9301,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/is-regex": {
"version": "1.2.1",
@@ -9665,21 +9567,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
- "node_modules/jayson/node_modules/utf-8-validate": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
- "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
- "hasInstallScript": true,
- "license": "MIT",
- "optional": true,
- "peer": true,
- "dependencies": {
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=6.14.2"
- }
- },
"node_modules/jayson/node_modules/ws": {
"version": "7.5.10",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
@@ -9795,7 +9682,6 @@
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
"integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -10247,8 +10133,7 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz",
"integrity": "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/lru-cache": {
"version": "5.1.1",
@@ -10351,7 +10236,6 @@
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -10364,8 +10248,7 @@
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
@@ -10528,7 +10411,6 @@
"resolved": "https://registry.npmjs.org/near-abi/-/near-abi-0.2.0.tgz",
"integrity": "sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==",
"license": "(MIT AND Apache-2.0)",
- "peer": true,
"dependencies": {
"@types/json-schema": "^7.0.11"
}
@@ -10538,7 +10420,6 @@
"resolved": "https://registry.npmjs.org/near-api-js/-/near-api-js-5.1.1.tgz",
"integrity": "sha512-h23BGSKxNv8ph+zU6snicstsVK1/CTXsQz4LuGGwoRE24Hj424nSe4+/1tzoiC285Ljf60kPAqRCmsfv9etF2g==",
"license": "(MIT AND Apache-2.0)",
- "peer": true,
"dependencies": {
"@near-js/accounts": "1.4.1",
"@near-js/crypto": "1.4.2",
@@ -10563,15 +10444,13 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz",
"integrity": "sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==",
- "license": "Apache-2.0",
- "peer": true
+ "license": "Apache-2.0"
},
"node_modules/near-api-js/node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -10758,7 +10637,6 @@
"resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz",
"integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=12.19"
}
@@ -11022,7 +10900,6 @@
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz",
"integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==",
"license": "ISC",
- "peer": true,
"dependencies": {
"asn1.js": "^4.10.1",
"browserify-aes": "^1.2.0",
@@ -11065,7 +10942,6 @@
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz",
"integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
@@ -11359,6 +11235,7 @@
"resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.4.tgz",
"integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"orderedmap": "^2.0.0"
}
@@ -11388,6 +11265,7 @@
"resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz",
"integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.0.0",
"prosemirror-transform": "^1.0.0",
@@ -11436,6 +11314,7 @@
"resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.41.7.tgz",
"integrity": "sha512-jUwKNCEIGiqdvhlS91/2QAg21e4dfU5bH2iwmSDQeosXJgKF7smG0YSplOWK0cjSNgIqXe7VXqo7EIfUFJdt3w==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"prosemirror-model": "^1.20.0",
"prosemirror-state": "^1.0.0",
@@ -11486,7 +11365,6 @@
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
"license": "MIT",
- "peer": true,
"dependencies": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -11500,8 +11378,7 @@
"version": "4.12.3",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz",
"integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==",
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/punycode": {
"version": "2.3.1",
@@ -11614,7 +11491,6 @@
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -11625,6 +11501,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
"integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -11634,6 +11511,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
"integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"scheduler": "^0.27.0"
},
@@ -11942,6 +11820,7 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -12127,8 +12006,7 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/sha.js": {
"version": "2.4.12",
@@ -12403,7 +12281,6 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -12806,6 +12683,7 @@
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=12"
},
@@ -12845,7 +12723,6 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.6"
}
@@ -12911,7 +12788,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tweetnacl": {
"version": "1.0.3",
@@ -13026,6 +12904,7 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -13656,6 +13535,7 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": ">=10.0.0"
},
@@ -13698,7 +13578,6 @@
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.4"
}
@@ -13822,6 +13701,7 @@
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
diff --git a/FrontEnd/my-app/playwright-report/index.html b/FrontEnd/my-app/playwright-report/index.html
new file mode 100644
index 0000000..6dfe7df
--- /dev/null
+++ b/FrontEnd/my-app/playwright-report/index.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+ Playwright Test Report
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/FrontEnd/my-app/test-results/.last-run.json b/FrontEnd/my-app/test-results/.last-run.json
new file mode 100644
index 0000000..cbcc1fb
--- /dev/null
+++ b/FrontEnd/my-app/test-results/.last-run.json
@@ -0,0 +1,4 @@
+{
+ "status": "passed",
+ "failedTests": []
+}
\ No newline at end of file
diff --git a/FrontEnd/my-app/tests/e2e/homepage-hero.spec.ts b/FrontEnd/my-app/tests/e2e/homepage-hero.spec.ts
new file mode 100644
index 0000000..5088197
--- /dev/null
+++ b/FrontEnd/my-app/tests/e2e/homepage-hero.spec.ts
@@ -0,0 +1,134 @@
+import { test, expect } from "@playwright/test";
+
+test.describe("Homepage Hero Section", () => {
+ test.beforeEach(async ({ page }) => {
+ await page.goto("/");
+ });
+
+ // ── Visibility ────────────────────────────────────────────
+
+ test("renders the hero section", async ({ page }) => {
+ await expect(page.getByRole("region", { name: "Hero" })).toBeVisible();
+ });
+
+ test("shows Built on Stellar & Soroban badge", async ({ page }) => {
+ await expect(
+ page.getByText(/built on stellar & soroban/i)
+ ).toBeVisible();
+ });
+
+ test("shows the main headline", async ({ page }) => {
+ await expect(
+ page.getByRole("heading", { level: 1 })
+ ).toContainText(/turn work into/i);
+ });
+
+ test("shows the subtext description", async ({ page }) => {
+ await expect(
+ page.getByText(/complete quests, earn rewards/i)
+ ).toBeVisible();
+ });
+
+ // ── Rotating headline ─────────────────────────────────────
+
+ test("headline contains an animated word", async ({ page }) => {
+ const hero = page.getByRole("region", { name: "Hero" });
+ const animated = hero.locator("[aria-live='polite']");
+ await expect(animated).toBeVisible();
+ const firstWord = await animated.textContent();
+ expect(firstWord?.trim().length).toBeGreaterThan(0);
+ });
+
+ // ── CTA Buttons ───────────────────────────────────────────
+
+ test("Explore Quests button is visible and clickable", async ({ page }) => {
+ // Match by aria-label set on the link
+ const btn = page.getByRole("link", {
+ name: /explore all available quests/i,
+ });
+ await expect(btn).toBeVisible();
+ await expect(btn).toHaveAttribute("href", "/quests");
+ });
+
+ test("Connect Wallet button is visible and clickable", async ({ page }) => {
+ // Match by aria-label set on the link
+ const btn = page.getByRole("link", {
+ name: /connect your wallet/i,
+ });
+ await expect(btn).toBeVisible();
+ await expect(btn).toHaveAttribute("href", "/dashboard");
+ });
+
+ test("CTA buttons are keyboard focusable", async ({ page }) => {
+ await page.keyboard.press("Tab");
+ const focused = page.locator(":focus");
+ await expect(focused).toBeVisible();
+ });
+
+ // ── Stats ─────────────────────────────────────────────────
+
+ test("stats region is present", async ({ page }) => {
+ await expect(
+ page.getByRole("region", { name: /platform statistics/i })
+ ).toBeVisible();
+ });
+
+ test("shows XLM Distributed stat label", async ({ page }) => {
+ await expect(page.getByText(/xlm distributed/i)).toBeVisible();
+ });
+
+ test("shows Quests Completed stat label", async ({ page }) => {
+ await expect(page.getByText(/quests completed/i)).toBeVisible();
+ });
+
+ test("shows Active Quests stat label", async ({ page }) => {
+ await expect(page.getByText(/active quests/i)).toBeVisible();
+ });
+
+ // ── Trust Indicators ──────────────────────────────────────
+
+ test("shows trust indicators", async ({ page }) => {
+ await expect(page.getByText(/5-second settlement/i)).toBeVisible();
+ await expect(page.getByText(/on-chain verification/i)).toBeVisible();
+ await expect(page.getByText(/earn xp & badges/i)).toBeVisible();
+ });
+
+ // ── Responsive ────────────────────────────────────────────
+
+ test("hero looks correct on mobile", async ({ page }) => {
+ await page.setViewportSize({ width: 375, height: 812 });
+ await expect(
+ page.getByRole("heading", { level: 1 })
+ ).toBeVisible();
+ await expect(
+ page.getByRole("link", { name: /explore all available quests/i })
+ ).toBeVisible();
+ });
+
+ test("hero looks correct on tablet", async ({ page }) => {
+ await page.setViewportSize({ width: 768, height: 1024 });
+ await expect(
+ page.getByRole("region", { name: "Hero" })
+ ).toBeVisible();
+ });
+
+ // ── Accessibility ─────────────────────────────────────────
+
+ test("hero section has correct aria-label", async ({ page }) => {
+ await expect(
+ page.locator("section[aria-label='Hero']")
+ ).toBeVisible();
+ });
+
+ test("stats region has aria-label", async ({ page }) => {
+ await expect(
+ page.locator("[aria-label='Platform statistics']")
+ ).toBeVisible();
+ });
+
+ test("trust indicators have aria-label", async ({ page }) => {
+ await expect(
+ page.locator("[aria-label='Trust indicators']")
+ ).toBeVisible();
+ });
+});
\ No newline at end of file