@@ -108,6 +108,37 @@ export default function ResistanceTable(props) {
108108
109109 const { colorMode } = useColorMode ( ) ;
110110
111+ const palette = useMemo ( ( ) => {
112+ if ( colorMode === 'dark' ) {
113+ return {
114+ border : '#444' ,
115+ background : '#1e1e1e' ,
116+ text : '#eee' ,
117+ subtleBg : '#252525' ,
118+ subtleBgHover : '#333' ,
119+ sourceInfoBg : '#333' ,
120+ sourceInfoText : '#bbb' ,
121+ emptyCellBg : '#2a2a2a' ,
122+ tooltipBg : 'rgba(200, 200, 200, 0.9)' ,
123+ tooltipText : '#000' ,
124+ overlay : 'rgba(30, 30, 30, 0.7)' ,
125+ } ;
126+ }
127+ return {
128+ border : '#ddd' ,
129+ background : '#fff' ,
130+ text : '#333' ,
131+ subtleBg : '#f9f9f9' ,
132+ subtleBgHover : '#f0f0f0' ,
133+ sourceInfoBg : '#f0f0f0' ,
134+ sourceInfoText : '#666' ,
135+ emptyCellBg : '#f2f2f2' ,
136+ tooltipBg : 'rgba(60, 60, 60, 0.9)' ,
137+ tooltipText : '#fff' ,
138+ overlay : 'rgba(255, 255, 255, 0.7)' ,
139+ } ;
140+ } , [ colorMode ] ) ;
141+
111142 const [ showEmpty , setShowEmpty ] = useState ( showEmptyProp === 'true' ) ;
112143 const [ display , setDisplay ] = useState ( 'full' ) ;
113144 const [ hover , setHover ] = useState ( { row : null , col : null } ) ;
@@ -383,13 +414,18 @@ export default function ResistanceTable(props) {
383414 const isStale = isLoading && data && data . length > 0 ;
384415 const isInitialLoad = isLoading && ( ! data || data . length === 0 ) ;
385416
386- if ( isInitialLoad ) return < div className = { styles . placeholder } > < div className = { styles . spinner } /> { t ( 'loading' ) } </ div > ;
417+ if ( isInitialLoad ) return (
418+ < div className = { styles . placeholder } style = { { color : palette . sourceInfoText } } >
419+ < div className = { styles . spinner } style = { { border : `3px solid ${ palette . subtleBgHover } ` , borderTopColor : palette . text } } />
420+ { t ( 'loading' ) }
421+ </ div >
422+ ) ;
387423 if ( error ) return < div className = { styles . error } > { t ( 'generationFailed' ) } : { error . message } </ div > ;
388424
389425 const unresolvedIds = [ ...unresolvedAbx , ...unresolvedOrg ] ;
390426 if ( unresolvedIds . length > 0 ) {
391427 return (
392- < div className = { styles . noDataContainer } >
428+ < div className = { styles . noDataContainer } style = { { backgroundColor : palette . subtleBg , color : palette . text } } >
393429 < p > < strong > { t ( 'resistanceTable' ) } </ strong > </ p >
394430 < p > { t ( 'unrecognizedIdentifiers' ) } :</ p >
395431 < ul className = { styles . noDataList } >
@@ -406,7 +442,7 @@ export default function ResistanceTable(props) {
406442 const orgNames = organismIds . map ( idToName ) ;
407443
408444 return (
409- < div className = { styles . noDataContainer } >
445+ < div className = { styles . noDataContainer } style = { { backgroundColor : palette . subtleBg , color : palette . text } } >
410446 < p > < strong > { t ( 'resistanceTable' ) } </ strong > </ p >
411447 < p > { t ( 'noDataForCombination' ) } :</ p >
412448 { abxNames . length > 0 && (
@@ -424,13 +460,17 @@ export default function ResistanceTable(props) {
424460
425461 return (
426462 < >
427- { isStale && < div className = { styles . tableOverlay } > < div className = { styles . spinner } /> </ div > }
428- < table ref = { tableRef } className = { styles . resistanceTable } style = { { borderCollapse : 'separate' , borderSpacing : 0 } } >
429- < TableHeader { ...{ cols, displayMode : display , hoveredCol : hover . col , onSetHover : handleSetHover , onClearHover : handleClearHover , onShowTooltip : showTooltip , onHideTooltip : hideTooltip , styles } } />
430- < TableBody { ...{ data, cols, displayMode : display , rowsAreAbx, hoveredRow : hover . row , hoveredCol : hover . col , onSetHover : handleSetHover , onClearHover : handleClearHover , onShowTooltip : showTooltip , onHideTooltip : hideTooltip , styles, colorMode, sourceId2ShortName, t } } />
463+ { isStale && (
464+ < div className = { styles . tableOverlay } style = { { backgroundColor : palette . overlay } } >
465+ < div className = { styles . spinner } style = { { border : `3px solid ${ palette . subtleBgHover } ` , borderTopColor : palette . text } } />
466+ </ div >
467+ ) }
468+ < table ref = { tableRef } className = { styles . resistanceTable } style = { { borderCollapse : 'separate' , borderSpacing : 0 , color : palette . text } } >
469+ < TableHeader { ...{ cols, displayMode : display , hoveredCol : hover . col , onSetHover : handleSetHover , onClearHover : handleClearHover , onShowTooltip : showTooltip , onHideTooltip : hideTooltip , styles, palette } } />
470+ < TableBody { ...{ data, cols, displayMode : display , rowsAreAbx, hoveredRow : hover . row , hoveredCol : hover . col , onSetHover : handleSetHover , onClearHover : handleClearHover , onShowTooltip : showTooltip , onHideTooltip : hideTooltip , styles, colorMode, sourceId2ShortName, palette, t } } />
431471 </ table >
432- < Legend { ...{ cols, displayMode : display , styles } } />
433- < div className = { styles . sourceInfo } >
472+ < Legend { ...{ cols, displayMode : display , styles, palette } } />
473+ < div className = { styles . sourceInfo } style = { { backgroundColor : palette . sourceInfoBg , borderTop : `1px solid ${ palette . border } ` , color : palette . sourceInfoText } } >
434474 { renderHiddenInfo ( ) }
435475 { sourceChain . length > 0 && (
436476 < >
@@ -464,7 +504,7 @@ export default function ResistanceTable(props) {
464504 < div ref = { containerRef } style = { { minHeight : '150px' } } >
465505 < div className = { styles . rootContainer } >
466506 { hierarchicalSources . length > 0 && (
467- < SourceSwitcher { ...{ sources : hierarchicalSources , selected : selectedSource , onSelect : setSelectedSource , styles, locale } } />
507+ < SourceSwitcher { ...{ sources : hierarchicalSources , selected : selectedSource , onSelect : setSelectedSource , styles, locale, palette } } />
468508 ) }
469509 < div className = { styles . tableContainer } >
470510 { renderContent ( ) }
@@ -475,9 +515,15 @@ export default function ResistanceTable(props) {
475515 < RadixTooltip . Root open = { tooltipOpen } onOpenChange = { setTooltipOpen } >
476516 < RadixTooltip . Trigger asChild > < VirtualTrigger ref = { virtualTriggerRef } /> </ RadixTooltip . Trigger >
477517 < RadixTooltip . Portal >
478- < RadixTooltip . Content side = "top" align = "center" sideOffset = { 5 } className = { styles . tooltipContent } >
518+ < RadixTooltip . Content
519+ side = "top"
520+ align = "center"
521+ sideOffset = { 5 }
522+ className = { styles . tooltipContent }
523+ style = { { backgroundColor : palette . tooltipBg , color : palette . tooltipText } }
524+ >
479525 { tooltipContent }
480- < RadixTooltip . Arrow width = { 8 } height = { 4 } className = { styles . tooltipArrow } />
526+ < RadixTooltip . Arrow width = { 8 } height = { 4 } className = { styles . tooltipArrow } style = { { fill : palette . tooltipBg } } />
481527 </ RadixTooltip . Content >
482528 </ RadixTooltip . Portal >
483529 </ RadixTooltip . Root >
0 commit comments