22
33import { useState , useRef , useEffect } from 'react' ;
44import { Collapsible , CollapsibleContent , CollapsibleTrigger } from './ui/collapsible' ;
5- import { ChevronDown , ExternalLink , Copy , FileText , Book } from 'lucide-react' ;
5+ import { ChevronDown , ExternalLink , Copy , FileText , Book , ScrollText , NotepadTextDashed , NotebookText , Map , WandSparkles , Sparkles } from 'lucide-react' ;
66import { usePathname } from 'next/navigation' ;
77import { useMediaQuery } from './hooks/use-media-query' ;
88import Image from 'next/image' ;
@@ -110,17 +110,8 @@ export const OpenInLLM = () => {
110110 < button
111111 className = "flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-[hsl(var(--text-secondary))] bg-[hsl(var(--background-secondary))] hover:text-[hsl(var(--text-accent))] hover:bg-[hsl(var(--background-accent))] transition-colors border border-[hsl(var(--border-primary))] shadow-sm"
112112 >
113- { isMobile ? (
114- < >
115- < Book size = { 18 } />
116- < ChevronDown size = { 16 } className = { `transition-transform ${ isOpen ? 'rotate-180' : '' } ` } />
117- </ >
118- ) : (
119- < >
120- < span > Open in LLM</ span >
121- < ChevronDown size = { 16 } className = { `transition-transform ${ isOpen ? 'rotate-180' : '' } ` } />
122- </ >
123- ) }
113+ < Sparkles size = { 18 } />
114+ < ChevronDown size = { 16 } className = { `transition-transform ${ isOpen ? 'rotate-180' : '' } ` } />
124115 </ button >
125116 </ CollapsibleTrigger >
126117 < CollapsibleContent className = "absolute right-0 top-full z-50 mt-1 w-64 rounded-lg bg-[hsl(var(--background-base))] p-1 shadow-lg border border-[hsl(var(--border-primary))]" >
@@ -129,7 +120,7 @@ export const OpenInLLM = () => {
129120 href = { getClaudeUrl ( ) }
130121 target = "_blank"
131122 rel = "noopener noreferrer"
132- className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-secondary ))] no-underline"
123+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent ))] no-underline"
133124 onClick = { ( ) => setIsOpen ( false ) }
134125 >
135126 < span className = "flex h-5 w-5 items-center justify-center" >
@@ -153,7 +144,7 @@ export const OpenInLLM = () => {
153144 href = { getChatGPTUrl ( ) }
154145 target = "_blank"
155146 rel = "noopener noreferrer"
156- className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-secondary ))] no-underline"
147+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent ))] no-underline"
157148 onClick = { ( ) => setIsOpen ( false ) }
158149 >
159150 < span className = "flex h-5 w-5 items-center justify-center" >
@@ -173,9 +164,15 @@ export const OpenInLLM = () => {
173164 < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
174165 </ a >
175166
176- < button
177- onClick = { copyMarkdown }
178- className = "flex w-full items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-secondary))]"
167+ < div className = "h-px bg-[hsl(var(--border-primary))] my-1" />
168+
169+ < a
170+ href = "#"
171+ onClick = { ( e ) => {
172+ e . preventDefault ( ) ;
173+ copyMarkdown ( ) ;
174+ } }
175+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent))] no-underline"
179176 >
180177 < span className = "flex h-5 w-5 items-center justify-center" >
181178 < Copy size = { 16 } />
@@ -185,13 +182,13 @@ export const OpenInLLM = () => {
185182 < span className = "text-xs text-[hsl(var(--text-tertiary))]" > Copy page as plaintext</ span >
186183 </ div >
187184 < ExternalLink size = { 14 } className = "ml-auto opacity-0" />
188- </ button >
185+ </ a >
189186
190187 < a
191188 href = { mounted ? ( isIndexPage ? `${ window . location . origin } /api/md/docs/index` : markdownUrl ) : '#' }
192189 target = "_blank"
193190 rel = "noopener noreferrer"
194- className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-secondary ))] no-underline"
191+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent ))] no-underline"
195192 onClick = { ( ) => setIsOpen ( false ) }
196193 >
197194 < span className = "flex h-5 w-5 items-center justify-center" >
@@ -204,26 +201,71 @@ export const OpenInLLM = () => {
204201 < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
205202 </ a >
206203
207- < div className = "mt-2 px-3 py-2 border-t border-[hsl(var(--border-primary))]" >
208- < div className = "grid grid-cols-2 gap-2" >
209- < a
210- href = "/llms.txt"
211- target = "_blank"
212- rel = "noopener noreferrer"
213- className = "flex justify-center items-center gap-1 px-2 py-1.5 text-xs font-medium rounded-md text-[hsl(var(--text-primary))] bg-[hsl(var(--background-secondary))] hover:bg-[hsl(var(--background-primary))] no-underline border border-[hsl(var(--border-primary))] transition-colors"
214- >
215- < span > llms.txt</ span >
216- </ a >
217- < a
218- href = "/llms-full.txt"
219- target = "_blank"
220- rel = "noopener noreferrer"
221- className = "flex justify-center items-center gap-1 px-2 py-1.5 text-xs font-medium rounded-md text-[hsl(var(--text-primary))] bg-[hsl(var(--background-secondary))] hover:bg-[hsl(var(--background-primary))] no-underline border border-[hsl(var(--border-primary))] transition-colors"
222- >
223- < span > llms-full.txt</ span >
224- </ a >
204+ < div className = "h-px bg-[hsl(var(--border-primary))] my-1" />
205+
206+ < a
207+ href = "/llms.txt"
208+ target = "_blank"
209+ rel = "noopener noreferrer"
210+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent))] no-underline"
211+ onClick = { ( ) => setIsOpen ( false ) }
212+ >
213+ < span className = "flex h-5 w-5 items-center justify-center" >
214+ < Map size = { 16 } />
215+ </ span >
216+ < div className = "flex flex-col" >
217+ < span > llms.txt</ span >
218+ < span className = "text-xs text-[hsl(var(--text-tertiary))]" > Docs index for AI</ span >
219+ </ div >
220+ < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
221+ </ a >
222+
223+ < a
224+ href = "/llms-full.txt"
225+ target = "_blank"
226+ rel = "noopener noreferrer"
227+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent))] no-underline"
228+ onClick = { ( ) => setIsOpen ( false ) }
229+ >
230+ < span className = "flex h-5 w-5 items-center justify-center" >
231+ < NotebookText size = { 16 } />
232+ </ span >
233+ < div className = "flex flex-col" >
234+ < span > Full Documentation</ span >
235+ < span className = "text-xs text-[hsl(var(--text-tertiary))]" > Complete docs as text</ span >
236+ </ div >
237+ < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
238+ </ a >
239+
240+ < a
241+ href = "/resources/llms"
242+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent))] no-underline"
243+ onClick = { ( ) => setIsOpen ( false ) }
244+ >
245+ < span className = "flex h-5 w-5 items-center justify-center" >
246+ < Book size = { 16 } />
247+ </ span >
248+ < div className = "flex flex-col" >
249+ < span > LLM Resouces</ span >
250+ < span className = "text-xs text-[hsl(var(--text-tertiary))]" > AI-friendly resources</ span >
225251 </ div >
226- </ div >
252+ < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
253+ </ a >
254+
255+ < a
256+ href = "/handbook/ai"
257+ className = "flex items-center gap-2 px-3 py-2.5 text-sm text-[hsl(var(--text-primary))] hover:bg-[hsl(var(--background-accent))] hover:text-[hsl(var(--text-accent))] no-underline"
258+ onClick = { ( ) => setIsOpen ( false ) }
259+ >
260+ < span className = "flex h-5 w-5 items-center justify-center" >
261+ < WandSparkles size = { 16 } />
262+ </ span >
263+ < div className = "flex flex-col" >
264+ < span > AI template</ span >
265+ < span className = "text-xs text-[hsl(var(--text-tertiary))]" > Create components with AI</ span >
266+ </ div >
267+ < ExternalLink size = { 14 } className = "ml-auto opacity-70" />
268+ </ a >
227269 </ div >
228270 </ CollapsibleContent >
229271 </ Collapsible >
0 commit comments