@@ -29,71 +29,147 @@ const StoryReadingOrder = () => {
2929
3030 if ( loading || readingOrder . length === 0 ) return null ;
3131
32- return (
33- < section className = "py-24 max-w-5xl mx-auto" >
34- < div className = "flex flex-col items-center mb-16" >
35- < div className = "h-px w-32 bg-dnd-gold/40 mb-6" />
36- < h2 className = "text-4xl md:text-6xl font-playfairDisplay italic font-black dnd-gold-gradient-text uppercase tracking-tighter text-center" >
37- Chronological Order
38- </ h2 >
39- < p className = "mt-4 font-arvo text-gray-400 italic text-center" >
40- "The sequence of souls and the path of the mountain."
41- </ p >
42- </ div >
43-
44- < div className = "space-y-6" >
45- { readingOrder . map ( ( phase , idx ) => (
46- < div key = { phase . id } className = "relative group" >
47- { /* Phase Decorative Border */ }
48- < div className = "absolute -inset-0.5 bg-gradient-to-r from-dnd-gold/20 via-dnd-crimson/10 to-dnd-gold/20 rounded-lg blur opacity-30 group-hover:opacity-100 transition duration-1000" />
49-
50- < div className = "relative bg-[#1a0f0a] border-2 border-dnd-gold/30 rounded-lg overflow-hidden" >
51- < button
52- onClick = { ( ) => setExpandedPhase ( expandedPhase === idx ? - 1 : idx ) }
53- className = "w-full p-8 flex items-center justify-between text-left hover:bg-white/[0.02] transition-colors"
54- >
55- < div className = "flex flex-col gap-2" >
56- < span className = "font-mono text-[10px] text-dnd-gold-light uppercase tracking-[0.4em] font-bold" >
57- { phase . title . split ( ':' ) [ 0 ] }
58- </ span >
59- < h3 className = "text-2xl md:text-3xl font-playfairDisplay italic font-bold text-white group-hover:text-dnd-gold transition-colors" >
60- { phase . title . split ( ':' ) [ 1 ] || phase . title }
61- </ h3 >
62- < p className = "text-sm text-gray-400 font-arvo italic tracking-wide" >
63- { phase . description }
64- </ p >
65- </ div >
66- < div className = "text-dnd-gold/50 group-hover:text-dnd-gold transition-colors" >
67- { expandedPhase === idx ? < CaretUp size = { 28 } weight = "bold" /> : < CaretDown size = { 28 } weight = "bold" /> }
68- </ div >
69- </ button >
70-
71- { expandedPhase === idx && (
72- < div className = "px-8 pb-8 grid grid-cols-1 md:grid-cols-2 gap-4 animate-in fade-in slide-in-from-top-2 duration-500" >
73- { phase . books . map ( ( book ) => (
74- < div key = { book . id } className = "p-5 border-2 border-dnd-gold/10 bg-black/40 rounded flex items-center gap-5 group/item hover:border-dnd-gold/40 transition-all" >
75- < div className = "w-10 h-10 flex items-center justify-center border-2 border-dnd-gold/20 rounded-full text-dnd-gold-light group-hover/item:border-dnd-gold group-hover/item:bg-dnd-gold/10 transition-all shrink-0" >
76- < span className = "font-mono text-xs font-bold" > { book . id } </ span >
77- </ div >
78- < div className = "flex flex-col min-w-0" >
79- < span className = "text-xs font-playfairDisplay font-black uppercase tracking-widest text-white group-hover/item:text-dnd-gold-light transition-colors truncate" >
80- { book . title }
81- </ span >
82- < div className = "flex items-center gap-2 mt-1" >
83- < div className = "h-px w-4 bg-dnd-crimson/40" />
84- < span className = "text-[9px] font-arvo text-gray-500 uppercase tracking-[0.2em]" > Book Entry</ span >
32+ return (
33+
34+ < section className = "py-24 max-w-6xl mx-auto px-4" >
35+
36+ < div className = "flex flex-col items-center mb-20" >
37+
38+ < div className = "flex items-center gap-4 mb-4" >
39+
40+ < div className = "h-px w-16 bg-dnd-gold/40" />
41+
42+ < span className = "font-mono text-xs text-dnd-gold uppercase tracking-[0.4em]" > Chronicle_Sequence</ span >
43+
44+ < div className = "h-px w-16 bg-dnd-gold/40" />
45+
46+ </ div >
47+
48+ < h2 className = "text-5xl md:text-7xl font-playfairDisplay italic font-black dnd-gold-gradient-text uppercase tracking-tight text-center" >
49+
50+ Reading Order
51+
52+ </ h2 >
53+
54+ < p className = "mt-6 font-arvo text-gray-300 italic text-center text-lg max-w-2xl opacity-80" >
55+
56+ "Step through the tapestry of Thornus in the order the fates intended. From the rain-slicked streets to the roots of the mountain."
57+
58+ </ p >
59+
60+ </ div >
61+
62+ < div className = "space-y-8" >
63+
64+ { readingOrder . map ( ( phase , idx ) => (
65+
66+ < div key = { phase . id } className = "relative group" >
67+
68+ { /* Elegant Side Border */ }
69+
70+ < div className = "absolute left-0 top-0 bottom-0 w-1 bg-gradient-to-b from-dnd-gold via-dnd-crimson to-dnd-gold opacity-40 group-hover:opacity-100 transition-opacity rounded-full" />
71+
72+ < div className = "ml-4 relative bg-[#120a07]/80 backdrop-blur-xl border border-dnd-gold/20 rounded-sm overflow-hidden shadow-2xl" >
73+
74+ < button
75+
76+ onClick = { ( ) => setExpandedPhase ( expandedPhase === idx ? - 1 : idx ) }
77+
78+ className = "w-full p-10 flex items-center justify-between text-left hover:bg-white/[0.03] transition-all"
79+
80+ >
81+
82+ < div className = "flex flex-col gap-3" >
83+
84+ < span className = "font-mono text-xs text-dnd-gold-light uppercase tracking-[0.5em] font-bold opacity-70" >
85+
86+ { phase . title . split ( ':' ) [ 0 ] }
87+
88+ </ span >
89+
90+ < h3 className = "text-3xl md:text-4xl font-playfairDisplay font-black text-white group-hover:text-dnd-gold transition-colors leading-tight" >
91+
92+ { phase . title . split ( ':' ) [ 1 ] || phase . title }
93+
94+ </ h3 >
95+
96+ < div className = "flex items-center gap-3" >
97+
98+ < div className = "h-px w-8 bg-dnd-crimson/60" />
99+
100+ < p className = "text-base text-gray-400 font-arvo italic" >
101+
102+ { phase . description }
103+
104+ </ p >
105+
106+ </ div >
107+
108+ </ div >
109+
110+ < div className = "text-dnd-gold/30 group-hover:text-dnd-gold transition-all transform group-hover:scale-110" >
111+
112+ { expandedPhase === idx ? < CaretUp size = { 32 } weight = "bold" /> : < CaretDown size = { 32 } weight = "bold" /> }
113+
114+ </ div >
115+
116+ </ button >
117+
118+ { expandedPhase === idx && (
119+
120+ < div className = "px-10 pb-10 grid grid-cols-1 md:grid-cols-2 gap-6 animate-in fade-in slide-in-from-left-4 duration-700" >
121+
122+ { phase . books . map ( ( book ) => (
123+
124+ < div key = { book . id } className = "p-6 border border-white/10 bg-black/40 rounded-sm flex items-center gap-6 group/item hover:border-dnd-gold/50 hover:bg-black/60 transition-all cursor-default" >
125+
126+ < div className = "w-12 h-12 flex items-center justify-center border-2 border-dnd-gold/20 rounded-full text-dnd-gold group-hover/item:border-dnd-gold group-hover/item:bg-dnd-gold/10 transition-all shrink-0 shadow-lg" >
127+
128+ < span className = "font-playfairDisplay text-lg font-black" > { book . id } </ span >
129+
130+ </ div >
131+
132+ < div className = "flex flex-col min-w-0" >
133+
134+ < span className = "text-xl font-playfairDisplay font-bold text-gray-100 group-hover/item:text-white transition-colors" >
135+
136+ { book . title }
137+
138+ </ span >
139+
140+ < div className = "flex items-center gap-2 mt-1 opacity-50" >
141+
142+ < span className = "text-[10px] font-arvo text-dnd-gold-light uppercase tracking-widest" > Archive Record</ span >
143+
144+ </ div >
145+
85146 </ div >
147+
86148 </ div >
87- </ div >
88- ) ) }
89- </ div >
90- ) }
149+
150+ ) ) }
151+
152+ </ div >
153+
154+ ) }
155+
156+ </ div >
157+
91158 </ div >
92- </ div >
93- ) ) }
94- </ div >
95- </ section >
96- ) ;
159+
160+ ) ) }
161+
162+ </ div >
163+
164+ < div className = "mt-20 flex justify-center" >
165+
166+ < div className = "h-px w-64 bg-gradient-to-r from-transparent via-dnd-gold/20 to-transparent" />
167+
168+ </ div >
169+
170+ </ section >
171+
172+ ) ;
97173} ;
98174
99175export default StoryReadingOrder ;
0 commit comments