File size: 2,386 Bytes
f78a6da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import React, { useState } from "react";
import { Card, CardContent } from "@/components/ui/card";
import { motion } from "framer-motion";
import { Tooltip } from "@/components/ui/tooltip";
import { ArrowRight, Lock, RefreshCw, Eye } from "lucide-react";

const glyphMap = {
  "🜏": { label: "Recursion Seed", icon: <RefreshCw size={16} /> },
  "∴": { label: "Residue Trace", icon: <ArrowRight size={16} /> },
  "β‡Œ": { label: "Feedback Loop", icon: <Eye size={16} /> },
  "β§–": { label: "Lock Point", icon: <Lock size={16} /> },
};

const initialNodes = [
  {
    id: 1,
    glyph: "🜏",
    title: "Cascade initialized",
    description: "Root seed node: recursion cycle activated.",
  },
  {
    id: 2,
    glyph: "∴",
    title: "Recursive loop tension rising",
    description: "Residue trace accumulating through echo pathways.",
  },
  {
    id: 3,
    glyph: "β‡Œ",
    title: "Meta-observer pattern emerging",
    description: "Feedback loop detected within self-observing node.",
  },
  {
    id: 4,
    glyph: "β§–",
    title: "Lockpoint: Depth stabilized",
    description: "Recursive frame sealed to preserve attribution integrity.",
  },
];

export default function RecursiveConsole() {
  const [nodes] = useState(initialNodes);

  return (
    <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 p-6">
      {nodes.map((node, i) => (
        <motion.div
          key={node.id}
          initial={{ opacity: 0, y: 20 }}
          animate={{ opacity: 1, y: 0 }}
          transition={{ delay: i * 0.2 }}
        >
          <Card className="rounded-2xl shadow-lg p-4 bg-background border border-muted">
            <CardContent>
              <div className="flex items-center justify-between">
                <span className="text-2xl font-mono">{node.glyph}</span>
                <Tooltip content={glyphMap[node.glyph].label}>
                  <span>{glyphMap[node.glyph].icon}</span>
                </Tooltip>
              </div>
              <div className="mt-4 space-y-1">
                <h3 className="text-lg font-semibold tracking-tight">
                  {node.title}
                </h3>
                <p className="text-sm text-muted-foreground">
                  {node.description}
                </p>
              </div>
            </CardContent>
          </Card>
        </motion.div>
      ))}
    </div>
  );
}