@@ -2,9 +2,10 @@ import {JSX, ReactNode} from 'react';
22import clsx from 'clsx' ;
33import Heading from '@theme/Heading' ;
44import Link from '@docusaurus/Link' ;
5+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext' ;
56import styles from './styles.module.css' ;
67import { getSiteUrl , type SiteKey } from '@ifla/theme/config/siteConfig' ;
7- import { getCurrentEnv } from '@ifla/theme/config/siteConfig.server ' ;
8+ import { DocsEnv } from '@ifla/theme/config/siteConfigCore ' ;
89
910type StandardItem = {
1011 title : string ;
@@ -15,10 +16,8 @@ type StandardItem = {
1516 href : string ; // Pre-computed URL
1617} ;
1718
18- // Get current environment at build time
19- const currentEnv = getCurrentEnv ( ) ;
20-
21- const StandardsList : StandardItem [ ] = [
19+ // Define the standards list data without hrefs (to be computed at render time)
20+ const StandardsListData = [
2221 {
2322 title : 'ISBD for Manifestation (ISBDM)' ,
2423 code : 'ISBDM' ,
@@ -29,8 +28,7 @@ const StandardsList: StandardItem[] = [
2928 </ >
3029 ) ,
3130 siteKey : 'ISBDM' as SiteKey ,
32- status : 'published' ,
33- href : getSiteUrl ( 'ISBDM' as SiteKey , '' , currentEnv ) ,
31+ status : 'published' as const ,
3432 } ,
3533 {
3634 title : 'Library Reference Model (LRM)' ,
@@ -42,8 +40,7 @@ const StandardsList: StandardItem[] = [
4240 </ >
4341 ) ,
4442 siteKey : 'LRM' as SiteKey ,
45- status : 'published' ,
46- href : getSiteUrl ( 'LRM' as SiteKey , '' , currentEnv ) ,
43+ status : 'published' as const ,
4744 } ,
4845 {
4946 title : 'International Standard Bibliographic Description (ISBD)' ,
@@ -55,8 +52,7 @@ const StandardsList: StandardItem[] = [
5552 </ >
5653 ) ,
5754 siteKey : 'isbd' as SiteKey ,
58- status : 'development' ,
59- href : getSiteUrl ( 'isbd' as SiteKey , '' , currentEnv ) ,
55+ status : 'development' as const ,
6056 } ,
6157 {
6258 title : 'Functional Requirements (FR)' ,
@@ -68,8 +64,7 @@ const StandardsList: StandardItem[] = [
6864 </ >
6965 ) ,
7066 siteKey : 'FRBR' as SiteKey ,
71- status : 'development' ,
72- href : getSiteUrl ( 'FRBR' as SiteKey , '' , currentEnv ) ,
67+ status : 'development' as const ,
7368 } ,
7469 {
7570 title : 'Multilingual Dictionary of Cataloguing Terms (MulDiCat)' ,
@@ -81,8 +76,7 @@ const StandardsList: StandardItem[] = [
8176 </ >
8277 ) ,
8378 siteKey : 'muldicat' as SiteKey ,
84- status : 'development' ,
85- href : getSiteUrl ( 'muldicat' as SiteKey , '' , currentEnv ) ,
79+ status : 'development' as const ,
8680 } ,
8781 {
8882 title : 'UNIMARC' ,
@@ -94,8 +88,7 @@ const StandardsList: StandardItem[] = [
9488 </ >
9589 ) ,
9690 siteKey : 'unimarc' as SiteKey ,
97- status : 'development' ,
98- href : getSiteUrl ( 'unimarc' as SiteKey , '' , currentEnv ) ,
91+ status : 'development' as const ,
9992 } ,
10093] ;
10194
@@ -130,6 +123,17 @@ function StandardCard({title, code, description, href, status}: StandardItem) {
130123}
131124
132125export default function HomepageFeatures ( ) : JSX . Element {
126+ const { siteConfig : { customFields } } = useDocusaurusContext ( ) ;
127+
128+ // Get current environment from Docusaurus customFields
129+ const currentEnv = ( customFields ?. docsEnv as DocsEnv ) || DocsEnv . Production ;
130+
131+ // Generate standards list with URLs computed at render time
132+ const StandardsList : StandardItem [ ] = StandardsListData . map ( item => ( {
133+ ...item ,
134+ href : getSiteUrl ( item . siteKey , '' , currentEnv ) ,
135+ } ) ) ;
136+
133137 return (
134138 < section className = { styles . features } id = "standards" >
135139 < div className = "container" >
0 commit comments