@@ -32,19 +32,21 @@ import { fetchLabNoteBySlug, getLabNotes } from "@/lib/labNotes";
3232import type { LabNote } from "@/lib/labNotes" ;
3333
3434type RouteParams = {
35- id ?: string ; // slug-style id
35+ slug ?: string ;
36+ locale ?: string ; // if you add :locale routes
3637} ;
3738
3839export function LabNoteDetailPage ( ) {
39- const { id } = useParams < RouteParams > ( ) ;
40+ const { slug , locale : routeLocale } = useParams < RouteParams > ( ) ;
4041 const { i18n, t } = useTranslation ( "labNotesPage" ) ;
41- const locale = i18n . language || "en" ;
42+ const locale = routeLocale || i18n . language || "en" ;
43+ const base = `/${ locale } ` ;
4244
4345 const [ note , setNote ] = useState < LabNote | null > ( null ) ;
4446 const [ loading , setLoading ] = useState ( true ) ;
4547
4648 useEffect ( ( ) => {
47- if ( ! id ) return ;
49+ if ( ! slug ) return ;
4850
4951 const controller = new AbortController ( ) ;
5052 let alive = true ;
@@ -53,7 +55,7 @@ export function LabNoteDetailPage() {
5355 setLoading ( true ) ;
5456
5557 try {
56- const data = await fetchLabNoteBySlug ( locale , id , controller . signal ) ;
58+ const data = await fetchLabNoteBySlug ( locale , slug , controller . signal ) ;
5759
5860 if ( ! alive ) return ;
5961 setNote ( data ) ;
@@ -71,7 +73,7 @@ export function LabNoteDetailPage() {
7173 console . error ( e ) ;
7274
7375 // Local fallback (useful when API is down)
74- const local = getLabNotes ( locale ) . find ( ( n ) => n . id === id ) ?? null ;
76+ const local = getLabNotes ( locale ) . find ( ( n ) => n . id === slug ) ?? null ;
7577 setNote ( local ) ;
7678 } finally {
7779 if ( alive ) setLoading ( false ) ;
@@ -83,7 +85,7 @@ export function LabNoteDetailPage() {
8385 alive = false ;
8486 controller . abort ( ) ;
8587 } ;
86- } , [ id , locale ] ) ;
88+ } , [ slug , locale ] ) ;
8789
8890 if ( loading ) {
8991 return (
@@ -108,7 +110,7 @@ export function LabNoteDetailPage() {
108110 This entry has been retracted or never existed in this timeline.
109111 </ p >
110112 < Link
111- to = " /lab-notes"
113+ to = { ` ${ base } /lab-notes` }
112114 className = "mt-8 text-lyric hover:text-ada transition-colors"
113115 >
114116 ← Return to Registry
@@ -127,7 +129,7 @@ export function LabNoteDetailPage() {
127129 { /* Breadcrumb */ }
128130 < nav className = "mb-8 flex items-center justify-between" >
129131 < Link
130- to = " /lab-notes"
132+ to = { ` ${ base } /lab-notes` }
131133 className = "group inline-flex items-center gap-2 rounded-full
132134 border border-slate-800 bg-slate-950/40 px-4 py-2
133135 text-xs font-mono uppercase tracking-[0.2em] text-slate-400
0 commit comments