cjo93 commited on
Commit
296e725
verified
1 Parent(s): b8921b1

Create src/app/relationships/page.tsx

Browse files
Files changed (1) hide show
  1. src/app/relationships/page.tsx +124 -0
src/app/relationships/page.tsx ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use client';
2
+ import { useState } from 'react';
3
+
4
+ const DEMO_CONNECTIONS = [
5
+ {
6
+ name: 'Alex M.',
7
+ type: 'Generator',
8
+ gate: '34',
9
+ tension: 72,
10
+ harmony: 85,
11
+ channel: '34-57',
12
+ status: 'Active',
13
+ note: 'Electromagnetic channel: strong creative resonance. Watch for burnout loops.',
14
+ },
15
+ {
16
+ name: 'Jordan K.',
17
+ type: 'Projector',
18
+ gate: '13',
19
+ tension: 38,
20
+ harmony: 91,
21
+ channel: '13-33',
22
+ status: 'Dormant',
23
+ note: 'The Listener meets the Memory. Deep karmic recognition. Timing is everything.',
24
+ },
25
+ {
26
+ name: 'Sam R.',
27
+ type: 'Manifestor',
28
+ gate: '1',
29
+ tension: 88,
30
+ harmony: 44,
31
+ channel: '1-8',
32
+ status: 'Friction',
33
+ note: 'Both self-expression gates activated. Role conflict likely. Needs explicit agreements.',
34
+ },
35
+ ];
36
+
37
+ const STATUS_COLORS: Record<string, string> = {
38
+ Active: 'text-green-400 border-green-800 bg-green-950',
39
+ Dormant: 'text-slate-500 border-slate-800 bg-slate-900',
40
+ Friction: 'text-amber-400 border-amber-800 bg-amber-950',
41
+ };
42
+
43
+ export default function RelationshipsPage() {
44
+ const [selected, setSelected] = useState<number | null>(null);
45
+
46
+ return (
47
+ <div className="min-h-screen p-6 max-w-5xl mx-auto">
48
+ <div className="mb-8">
49
+ <p className="text-xs font-mono text-slate-600 tracking-widest uppercase mb-1">Relational Geometry</p>
50
+ <h1 className="text-3xl font-light text-slate-100">Connection Map</h1>
51
+ <p className="text-sm text-slate-500 mt-1">Composite dynamics between your node and others</p>
52
+ </div>
53
+
54
+ <div className="grid md:grid-cols-3 gap-4 mb-8">
55
+ {DEMO_CONNECTIONS.map((c, i) => (
56
+ <button
57
+ key={c.name}
58
+ onClick={() => setSelected(selected === i ? null : i)}
59
+ className={`text-left p-5 rounded-xl border transition-all ${
60
+ selected === i
61
+ ? 'border-violet-600 bg-violet-950/30'
62
+ : 'border-[#1e1e2e] bg-[#0d0d14] hover:border-violet-800/40'
63
+ }`}
64
+ >
65
+ <div className="flex items-start justify-between mb-4">
66
+ <div>
67
+ <p className="text-slate-100 font-medium">{c.name}</p>
68
+ <p className="text-xs text-slate-600 font-mono">{c.type} 路 Gate {c.gate}</p>
69
+ </div>
70
+ <span className={`text-xs font-mono px-2 py-0.5 rounded border ${STATUS_COLORS[c.status]}`}>
71
+ {c.status}
72
+ </span>
73
+ </div>
74
+
75
+ <div className="flex flex-col gap-2">
76
+ <div>
77
+ <div className="flex justify-between text-xs text-slate-600 mb-1">
78
+ <span>Harmony</span>
79
+ <span>{c.harmony}%</span>
80
+ </div>
81
+ <div className="h-1 bg-slate-900 rounded-full">
82
+ <div className="h-full bg-violet-500 rounded-full" style={{ width: `${c.harmony}%` }} />
83
+ </div>
84
+ </div>
85
+ <div>
86
+ <div className="flex justify-between text-xs text-slate-600 mb-1">
87
+ <span>Tension</span>
88
+ <span>{c.tension}%</span>
89
+ </div>
90
+ <div className="h-1 bg-slate-900 rounded-full">
91
+ <div className="h-full bg-amber-500 rounded-full" style={{ width: `${c.tension}%` }} />
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </button>
96
+ ))}
97
+ </div>
98
+
99
+ {selected !== null && (
100
+ <div className="p-6 rounded-xl border border-violet-800/40 bg-violet-950/20">
101
+ <div className="flex items-start justify-between mb-4">
102
+ <div>
103
+ <p className="text-xs font-mono text-violet-400 uppercase tracking-widest mb-1">Composite Channel</p>
104
+ <h2 className="text-2xl font-light text-slate-100">{DEMO_CONNECTIONS[selected].channel}</h2>
105
+ </div>
106
+ <button onClick={() => setSelected(null)} className="text-slate-700 hover:text-slate-400 text-lg">脳</button>
107
+ </div>
108
+ <p className="text-slate-400 leading-relaxed">{DEMO_CONNECTIONS[selected].note}</p>
109
+ <div className="mt-4 flex gap-3">
110
+ <a href="/oracle" className="px-4 py-2 text-xs font-mono rounded border border-violet-700 text-violet-400 hover:bg-violet-900/30 transition-colors">
111
+ Get Oracle Guidance
112
+ </a>
113
+ </div>
114
+ </div>
115
+ )}
116
+
117
+ <div className="mt-8 flex justify-end">
118
+ <a href="/onboarding" className="text-xs font-mono text-slate-600 hover:text-violet-400 transition-colors">
119
+ + Add Connection
120
+ </a>
121
+ </div>
122
+ </div>
123
+ );
124
+ }