@@ -25,159 +25,108 @@ export default function Home() {
2525 } , [ activeCategory , searchQuery ] ) ;
2626
2727 return (
28- < div >
28+ < div className = "min-h-screen" >
2929 < a
3030 href = "#main-content"
3131 className = "sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#4F6EF7] focus:text-white focus:rounded-lg focus:font-medium"
3232 >
3333 Skip to main content
3434 </ a >
35- < header
36- className = "sticky top-0 z-50"
37- style = { {
38- backdropFilter : 'blur(12px)' ,
39- background : 'rgba(10, 15, 30, 0.85)' ,
40- borderBottom : '1px solid rgba(255, 255, 255, 0.06)' ,
41- } }
42- >
43- < div className = "max-w-6xl mx-auto px-4 py-4" >
44- < div className = "flex items-center justify-between mb-4" >
45- < div className = "flex items-center gap-3" >
46- < div
47- className = "w-10 h-10 rounded-xl flex items-center justify-center"
48- style = { {
49- background : 'linear-gradient(135deg, #4F6EF7, #7B5EA7)' ,
50- boxShadow : '0 4px 12px rgba(79, 110, 247, 0.4)' ,
51- } }
52- >
53- < svg className = "w-6 h-6 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
54- < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" />
55- </ svg >
56- </ div >
57- < div >
58- < h1 className = "text-xl font-bold" style = { { color : '#F8FAFC' } } > Neuro Note Macros</ h1 >
59- < p className = "text-xs" style = { { color : 'rgba(255, 255, 255, 0.45)' } } > Neurology dot phrases & templates </ p >
60- </ div >
61- </ div >
62- < button
63- onClick = { ( ) => setShowNIHSS ( ! showNIHSS ) }
64- className = "flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-all"
35+
36+ { /* Top Section - Navigation and Identity */ }
37+ < div className = "max-w-6xl mx-auto px-4 pt-8 pb-12" >
38+ < div className = "flex items-center justify-between" >
39+ < div className = "flex items-center gap-3" >
40+ < div
41+ className = "w-10 h-10 rounded-xl flex items-center justify-center"
6542 style = { {
66- border : showNIHSS ? 'none' : '1px solid #4F6EF7' ,
67- color : showNIHSS ? 'white' : '#7C9FFF' ,
68- background : showNIHSS
69- ? 'linear-gradient(135deg, #4F6EF7, #7B5EA7)'
70- : 'rgba(79, 110, 247, 0.08)' ,
71- boxShadow : showNIHSS
72- ? '0 4px 12px rgba(79, 110, 247, 0.4)'
73- : 'none' ,
43+ background : 'linear-gradient(135deg, #4F6EF7, #7B5EA7)' ,
44+ boxShadow : '0 4px 12px rgba(79, 110, 247, 0.4)' ,
7445 } }
7546 >
76- < svg className = "w-5 h-5 " fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
77- < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z " />
47+ < svg className = "w-6 h-6 text-white " fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
48+ < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z " />
7849 </ svg >
79- NIHSS Calculator
80- </ button >
81- </ div >
82-
83- < div className = "flex flex-col md:flex-row gap-4" >
84- < div className = "flex-1" >
85- < SearchBar onSearch = { setSearchQuery } />
50+ </ div >
51+ < div >
52+ < h1 className = "text-xl font-bold tracking-tight text-[#F8FAFC]" > neurolib</ h1 >
53+ < p className = "text-xs text-white/45" > High-performance neurology templates</ p >
8654 </ div >
8755 </ div >
88-
89- < div className = "mt-4" style = { { borderBottom : '1px solid rgba(255, 255, 255, 0.05)' } } >
90- < CategoryNav activeCategory = { activeCategory } onCategoryChange = { setActiveCategory } />
91- </ div >
56+ < button
57+ onClick = { ( ) => {
58+ setShowNIHSS ( ! showNIHSS ) ;
59+ if ( ! showNIHSS ) {
60+ window . scrollTo ( { top : 0 , behavior : 'smooth' } ) ;
61+ }
62+ } }
63+ className = "flex items-center gap-2 px-4 py-2 rounded-lg font-medium transition-all hover:scale-[1.02] active:scale-[0.98]"
64+ style = { {
65+ border : showNIHSS ? 'none' : '1px solid rgba(79, 110, 247, 0.4)' ,
66+ color : showNIHSS ? 'white' : '#7C9FFF' ,
67+ background : showNIHSS
68+ ? 'linear-gradient(135deg, #4F6EF7, #7B5EA7)'
69+ : 'rgba(79, 110, 247, 0.08)' ,
70+ boxShadow : showNIHSS
71+ ? '0 4px 12px rgba(79, 110, 247, 0.4)'
72+ : 'none' ,
73+ } }
74+ >
75+ < svg className = "w-5 h-5" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
76+ < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z" />
77+ </ svg >
78+ NIHSS Calculator
79+ </ button >
9280 </ div >
93- </ header >
81+ </ div >
9482
95- < section className = "relative overflow-hidden border-b border-white/5" >
96- < div
97- className = "absolute inset-0 z-0 opacity-40 grayscale-[0.2]"
98- style = { {
99- backgroundImage : 'url("/hero-bg.png")' ,
100- backgroundSize : 'cover' ,
101- backgroundPosition : 'center' ,
102- } }
103- />
104- < div className = "absolute inset-0 z-10 bg-gradient-to-b from-[#0B0F1A]/80 via-[#0B0F1A]/40 to-[#0B0F1A]" />
105-
106- < div className = "relative z-20 max-w-6xl mx-auto px-4 py-20 md:py-32" >
107- < div className = "max-w-2xl" >
108- < h2 className = "text-4xl md:text-5xl font-bold tracking-tight mb-6" style = { { color : '#F8FAFC' } } >
109- Neurology documentation, < br />
110- < span className = "text-transparent bg-clip-text bg-gradient-to-r from-[#4F6EF7] to-[#7B5EA7]" >
111- reimagined for clinical flow.
112- </ span >
113- </ h2 >
114- < p className = "text-lg mb-8 leading-relaxed" style = { { color : 'rgba(255, 255, 255, 0.6)' } } >
115- A high-performance library of dot phrases and clinical calculators.
116- Designed for neurologists and stroke teams who value precision and speed.
117- Private, local-first, and always open source.
118- </ p >
119- < div className = "flex flex-wrap gap-4" >
120- < button
121- onClick = { ( ) => {
122- const el = document . getElementById ( 'main-content' ) ;
123- el ?. scrollIntoView ( { behavior : 'smooth' } ) ;
124- } }
125- className = "px-6 py-3 rounded-xl font-semibold transition-all hover:scale-[1.02] active:scale-[0.98]"
126- style = { {
127- background : 'linear-gradient(135deg, #4F6EF7, #7B5EA7)' ,
128- color : 'white' ,
129- boxShadow : '0 4px 20px rgba(79, 110, 247, 0.3)' ,
130- } }
131- >
132- Browse Templates
133- </ button >
134- < button
135- onClick = { ( ) => setShowNIHSS ( true ) }
136- className = "px-6 py-3 rounded-xl font-semibold transition-all border border-white/10 hover:bg-white/5"
137- style = { { color : '#F8FAFC' } }
138- >
139- Launch NIHSS
140- </ button >
141- </ div >
83+ { /* Primary Action Area - Search and Categories */ }
84+ < div
85+ className = "sticky top-0 z-50 border-y border-white/5"
86+ style = { {
87+ backdropFilter : 'blur(16px)' ,
88+ background : 'rgba(11, 15, 26, 0.7)' ,
89+ } }
90+ >
91+ < div className = "max-w-6xl mx-auto px-4 py-6" >
92+ < div className = "max-w-3xl mx-auto space-y-6" >
93+ < SearchBar onSearch = { setSearchQuery } />
94+ < CategoryNav activeCategory = { activeCategory } onCategoryChange = { setActiveCategory } />
14295 </ div >
14396 </ div >
144- </ section >
97+ </ div >
14598
146- < main id = "main-content" className = "max-w-6xl mx-auto px-4 py-6 " >
99+ < main id = "main-content" className = "max-w-6xl mx-auto px-4 py-8 " >
147100 { showNIHSS && (
148- < div className = "mb-8 animate-slide-down" >
101+ < div className = "mb-12 animate-slide-down" >
149102 < NIHSSCalculator />
150103 </ div >
151104 ) }
152105
153- < div className = "mb-4 flex items-center justify-end" >
106+ < div className = "mb-6 flex items-center justify-end" >
154107 < p
155- className = "text-xs uppercase tracking-wider"
156- style = { { color : 'rgba(255, 255, 255, 0.3)' } }
108+ className = "text-[10px] uppercase tracking-widest font-semibold text-white/20"
157109 aria-live = "polite"
158110 >
159111 { filteredPhrases . length } template{ filteredPhrases . length !== 1 ? 's' : '' } found
160112 </ p >
161113 </ div >
162114
163115 { filteredPhrases . length > 0 ? (
164- < div className = "grid gap-4 md:grid-cols-2" >
116+ < div className = "grid gap-6 md:grid-cols-2 lg :grid-cols-2" >
165117 { filteredPhrases . map ( ( phrase ) => (
166118 < PhraseCard key = { phrase . id } phrase = { phrase } />
167119 ) ) }
168120 </ div >
169121 ) : (
170- < div className = "text-center py-12" >
171- < div
172- className = "w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4"
173- style = { { background : 'rgba(255, 255, 255, 0.05)' } }
174- >
175- < svg className = "w-8 h-8" style = { { color : 'rgba(255, 255, 255, 0.25)' } } fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
122+ < div className = "text-center py-20 bg-white/[0.02] border border-dashed border-white/5 rounded-3xl" >
123+ < div className = "w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4 bg-white/5" >
124+ < svg className = "w-8 h-8 text-white/20" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
176125 < path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
177126 </ svg >
178127 </ div >
179- < h3 className = "text-lg font-medium mb-1" style = { { color : '#F8FAFC' } } > No templates found</ h3 >
180- < p style = { { color : 'rgba(255, 255, 255, 0.45)' } } > Try adjusting your search or category filter</ p >
128+ < h3 className = "text-lg font-medium mb-1 text-white/90" > No templates found</ h3 >
129+ < p className = "text-sm text-white/45" > Try adjusting your search or category filter</ p >
181130 </ div >
182131 ) }
183132 </ main >
0 commit comments