PageSourceSearch

https://www.generative-income.ai/assets/ArchetypeBadge-CGoYTGd9.js

js generative-income.ai collected 2026-10-05 12:17:19 UTC 3,462 bytes, 111 lines download raw bytes

1const e=`type Archetype = 'architect' | 'initiator' | 'strategist' | 'builder' | 'synthesizer';
2
3interface ArchetypeBadgeProps {
4  archetype: Archetype;
5  size: 'sm' | 'md' | 'lg';
6  showLabel?: boolean;
7}
8
9const SIZES = { sm: 24, md: 40, lg: 80 } as const;
10
11const LABELS: Record<Archetype, string> = {
12  architect: 'The Architect',
13  initiator: 'The Initiator',
14  strategist: 'The Strategist',
15  builder: 'The Builder',
16  synthesizer: 'The Synthesizer',
17};
18
19const gold = '#D4A843';
20const teal = '#01696F';
21
22function ArchitectSVG() {
23  return (
24    <g>
25      <rect x="15" y="15" width="22" height="22" rx="2" fill="none" stroke={gold} strokeWidth="2.5" />
26      <rect x="43" y="15" width="22" height="22" rx="2" fill="none" stroke={gold} strokeWidth="2.5" />
27      <rect x="15" y="43" width="22" height="22" rx="2" fill="none" stroke={gold} strokeWidth="2.5" />
28      <rect x="43" y="43" width="22" height="22" rx="2" fill="none" stroke={teal} strokeWidth="2.5" />
29    </g>
30  );
31}
32
33function InitiatorSVG() {
34  return (
35    <g>
36      <circle cx="36" cy="40" r="18" fill="none" stroke={teal} strokeWidth="2.5" />
37      <path d="M32 40 L50 40 L44 34 M50 40 L44 46" fill="none" stroke={gold} strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" />
38    </g>
39  );
40}
41
42function StrategistSVG() {
43  return (
44    <g>
45      <line x1="40" y1="18" x2="20" y2="58" stroke={teal} strokeWidth="2.5" />
46      <line x1="40" y1="18" x2="60" y2="58" stroke={teal} strokeWidth="2.5" />
47      <line x1="20" y1="58" x2="60" y2="58" stroke={teal} strokeWidth="2.5" />
48      <circle cx="40" cy="18" r="5" fill={gold} />
49      <circle cx="20" cy="58" r="5" fill={gold} />
50      <circle cx="60" cy="58" r="5" fill={gold} />
51    </g>
52  );
53}
54
55function BuilderSVG() {
56  return (
57    <g>
58      <rect x="14" y="48" width="52" height="10" rx="2" fill="none" stroke={gold} strokeWidth="2.5" />
59      <rect x="18" y="32" width="44" height="10" rx="2" fill="none" stroke={gold} strokeWidth="2.5" />
60      <rect x="22" y="16" width="36" height="10" rx="2" fill="none" stroke={teal} strokeWidth="2.5" />
61    </g>
62  );
63}
64
65function SynthesizerSVG() {
66  return (
67    <g>
68      <circle cx="30" cy="32" r="16" fill="none" stroke={gold} strokeWidth="2.5" />
69      <circle cx="50" cy="32" r="16" fill="none" stroke={gold} strokeWidth="2.5" />
70      <circle cx="40" cy="48" r="16" fill="none" stroke={gold} strokeWidth="2.5" />
71      <path d="M40 28 Q40 40 36 48 Q40 44 44 48 Q40 40 40 28Z" fill={teal} opacity="0.8" />
72    </g>
73  );
74}
75
76const SVG_MAP: Record<Archetype, () => JSX.Element> = {
77  architect: ArchitectSVG,
78  initiator: InitiatorSVG,
79  strategist: StrategistSVG,
80  builder: BuilderSVG,
81  synthesizer: SynthesizerSVG,
82};
83
84export function ArchetypeBadge({ archetype, size, showLabel = false }: ArchetypeBadgeProps) {
85  const px = SIZES[size];
86  const SvgContent = SVG_MAP[archetype];
87
88  return (
89    <div className="inline-flex flex-col items-center gap-1">
90      <svg
91        viewBox="0 0 80 80"
92        width={px}
93        height={px}
94        className="shrink-0"
95        aria-label={LABELS[archetype]}
96      >
97        <rect width="80" height="80" rx="12" fill="#0B1420" />
98        <SvgContent />
99      </svg>
100      {showLabel && (
101        <span className="font-satoshi text-xs font-semibold text-accent whitespace-nowrap">
102          {LABELS[archetype]}
103        </span>
104      )}
105    </div>
106  );
107}
108
109export { LABELS as ARCHETYPE_LABELS };
110export type { Archetype };
111`;export{e as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.