diff --git a/frontend/package.json b/frontend/package.json index a1a12c9..eb38cd1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -46,7 +46,7 @@ "svelte": "^5.0.0", "svelte-check": "^4.0.0", "svelte-sonner": "^1.0.5", - "tailwind-merge": "^3.0.2", + "tailwind-merge": "^3.3.1", "tailwind-variants": "^1.0.0", "tailwindcss": "^4.0.0", "tw-animate-css": "^1.3.4", @@ -63,6 +63,7 @@ "dependencies": { "@sveltejs/adapter-static": "^3.0.8", "@tanstack/svelte-query": "^5.81.2", + "cobe": "^0.6.4", "jwt-decode": "^4.0.0", "openapi-fetch": "^0.14.0" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 3b2b8e5..e459fdc 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@tanstack/svelte-query': specifier: ^5.81.2 version: 5.81.2(svelte@5.33.19) + cobe: + specifier: ^0.6.4 + version: 0.6.4 jwt-decode: specifier: ^4.0.0 version: 4.0.0 @@ -103,7 +106,7 @@ importers: specifier: ^1.0.5 version: 1.0.5(svelte@5.33.19) tailwind-merge: - specifier: ^3.0.2 + specifier: ^3.3.1 version: 3.3.1 tailwind-variants: specifier: ^1.0.0 @@ -994,6 +997,9 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cobe@0.6.4: + resolution: {integrity: sha512-huuGFnDoXLy/tsCZYYa/H35BBRs9cxsS0XKJ3BXjRp699cQKuoEVrvKlAQMx0DKXG7+VUv4jsHVrS7yPbkLSkQ==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1624,6 +1630,9 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + phenomenon@1.6.0: + resolution: {integrity: sha512-7h9/fjPD3qNlgggzm88cY58l9sudZ6Ey+UmZsizfhtawO6E3srZQXywaNm2lBwT72TbpHYRPy7ytIHeBUD/G0A==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3006,6 +3015,10 @@ snapshots: clsx@2.1.1: {} + cobe@0.6.4: + dependencies: + phenomenon: 1.6.0 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -3623,6 +3636,8 @@ snapshots: pathval@2.0.1: {} + phenomenon@1.6.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} diff --git a/frontend/src/lib/components/landing/Globe.svelte b/frontend/src/lib/components/landing/Globe.svelte new file mode 100644 index 0000000..9555cec --- /dev/null +++ b/frontend/src/lib/components/landing/Globe.svelte @@ -0,0 +1,100 @@ + + +
+ { + pointerInteracting = e.clientX - pointerInteractionMovement; + canvas.style.cursor = 'grabbing'; + }} + onpointerup={() => { + pointerInteracting = null; + canvas.style.cursor = 'grab'; + }} + onpointerout={() => { + pointerInteracting = null; + canvas.style.cursor = 'grab'; + }} + onmousemove={(e) => { + if (pointerInteracting !== null) { + const delta = e.clientX - pointerInteracting; + pointerInteractionMovement = delta; + x.set(delta / 200); + } + }} + > +
diff --git a/frontend/src/lib/components/landing/GlobeCard.svelte b/frontend/src/lib/components/landing/GlobeCard.svelte new file mode 100644 index 0000000..ba2fc07 --- /dev/null +++ b/frontend/src/lib/components/landing/GlobeCard.svelte @@ -0,0 +1,18 @@ + + +
+ + + + +
+
diff --git a/frontend/src/lib/components/landing/WordRotate.svelte b/frontend/src/lib/components/landing/WordRotate.svelte new file mode 100644 index 0000000..356ef9a --- /dev/null +++ b/frontend/src/lib/components/landing/WordRotate.svelte @@ -0,0 +1,31 @@ + + +
+ {#key index} +

+ {words[index]} +

+ {/key} +
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte index 5c7fa5b..c8e5cc3 100644 --- a/frontend/src/routes/+page.svelte +++ b/frontend/src/routes/+page.svelte @@ -17,6 +17,7 @@ Star, Github } from '@lucide/svelte'; + import GlobeCard from '@/components/landing/GlobeCard.svelte';
@@ -83,13 +84,14 @@
- Platform Dashboard + + + + + + + +
diff --git a/frontend/src/routes/app/(components)/ChooseRoleDialog.svelte b/frontend/src/routes/app/(components)/ChooseRoleDialog.svelte index a152966..c866635 100644 --- a/frontend/src/routes/app/(components)/ChooseRoleDialog.svelte +++ b/frontend/src/routes/app/(components)/ChooseRoleDialog.svelte @@ -17,7 +17,7 @@ label: 'Viewer', description: 'Browse and explore content', icon: Eye, - color: 'bg-blue-50 border-blue-200 hover:bg-blue-100', + color: 'bg-blue-50/10 border-blue-200 hover:bg-blue-100/50', iconColor: 'text-blue-600' }, { @@ -25,7 +25,7 @@ label: 'Founder', description: 'Build and manage your startup', icon: Rocket, - color: 'bg-purple-50 border-purple-200 hover:bg-purple-100', + color: 'bg-purple-50/10 border-purple-200 hover:bg-purple-100/50', iconColor: 'text-purple-600' }, { @@ -33,7 +33,7 @@ label: 'Developer', description: 'Create and contribute to projects', icon: Code, - color: 'bg-green-50 border-green-200 hover:bg-green-100', + color: 'bg-green-50/10 border-green-200 hover:bg-green-100/50', iconColor: 'text-green-600' }, { @@ -41,7 +41,7 @@ label: 'Investor', description: 'Discover investment opportunities', icon: TrendingUp, - color: 'bg-orange-50 border-orange-200 hover:bg-orange-100', + color: 'bg-orange-50/10 border-orange-200 hover:bg-orange-100/50', iconColor: 'text-orange-600' } ]; @@ -82,13 +82,13 @@ isSelected ? 'border-primary bg-primary/5 ring-primary/20 ring-2' : role.color )} > -
+
-

{role.label}

+

{role.label}

{#if isSelected}