@@ -125,6 +125,8 @@ export interface SqlHoverConfig {
125125 /** Custom renderer for column items */
126126 column ?: ( data : NamespaceTooltipData ) => string ;
127127 } ;
128+ /** Custom CSS theme for hover tooltips */
129+ theme ?: Extension ;
128130}
129131
130132/**
@@ -504,8 +506,51 @@ export const DefaultSqlTooltipRenders = {
504506/**
505507 * Default CSS styles for hover tooltips
506508 */
507- export const sqlHoverTheme = ( ) : Extension =>
508- EditorView . theme ( {
509+ export const defaultSqlHoverTheme = ( theme : "light" | "dark" = "light" ) : Extension => {
510+ // Theme-dependent color variables
511+ const lightTheme = {
512+ tooltipBg : "#ffffff" ,
513+ tooltipBorder : "#e5e7eb" ,
514+ tooltipText : "#374151" ,
515+ tooltipTypeBg : "#f3f4f6" ,
516+ tooltipTypeText : "#6b7280" ,
517+ tooltipChildren : "#6b7280" ,
518+ codeBg : "#f9fafb" ,
519+ codeText : "#1f2937" ,
520+ strong : "#111827" ,
521+ em : "#6b7280" ,
522+ header : "#111827" ,
523+ info : "#374151" ,
524+ related : "#374151" ,
525+ path : "#374151" ,
526+ example : "#374151" ,
527+ columns : "#374151" ,
528+ syntax : "#374151" ,
529+ } ;
530+
531+ const darkTheme = {
532+ tooltipBg : "#1f2937" ,
533+ tooltipBorder : "#374151" ,
534+ tooltipText : "#f9fafb" ,
535+ tooltipTypeBg : "#374151" ,
536+ tooltipTypeText : "#9ca3af" ,
537+ tooltipChildren : "#9ca3af" ,
538+ codeBg : "#374151" ,
539+ codeText : "#f3f4f6" ,
540+ strong : "#ffffff" ,
541+ em : "#9ca3af" ,
542+ header : "#ffffff" ,
543+ info : "#d1d5db" ,
544+ related : "#d1d5db" ,
545+ path : "#d1d5db" ,
546+ example : "#d1d5db" ,
547+ columns : "#d1d5db" ,
548+ syntax : "#d1d5db" ,
549+ } ;
550+
551+ const colors = theme === "dark" ? darkTheme : lightTheme ;
552+
553+ return EditorView . theme ( {
509554 ".cm-sql-hover-tooltip" : {
510555 padding : "8px 12px" ,
511556 backgroundColor : "#ffffff" ,
@@ -516,112 +561,71 @@ export const sqlHoverTheme = (): Extension =>
516561 lineHeight : "1.4" ,
517562 maxWidth : "320px" ,
518563 fontFamily : "system-ui, -apple-system, sans-serif" ,
564+ color : colors . tooltipText ,
519565 } ,
520566 ".cm-sql-hover-tooltip .sql-hover-header" : {
521567 marginBottom : "6px" ,
522568 display : "flex" ,
523569 alignItems : "center" ,
524570 gap : "6px" ,
571+ color : colors . header ,
525572 } ,
526573 ".cm-sql-hover-tooltip .sql-hover-type" : {
527574 fontSize : "11px" ,
528575 padding : "2px 6px" ,
529- backgroundColor : "#f3f4f6" ,
530- color : "#6b7280" ,
576+ backgroundColor : colors . tooltipTypeBg ,
577+ color : colors . tooltipTypeText ,
531578 borderRadius : "4px" ,
532579 fontWeight : "500" ,
533580 } ,
534581 ".cm-sql-hover-tooltip .sql-hover-description" : {
535- color : "#374151" ,
582+ color : colors . info ,
536583 marginBottom : "8px" ,
537584 } ,
538585 ".cm-sql-hover-tooltip .sql-hover-syntax" : {
539586 marginBottom : "8px" ,
540- color : "#374151" ,
587+ color : colors . syntax ,
541588 } ,
542589 ".cm-sql-hover-tooltip .sql-hover-example" : {
543590 marginBottom : "4px" ,
544- color : "#374151" ,
591+ color : colors . example ,
545592 } ,
546593 ".cm-sql-hover-tooltip .sql-hover-columns" : {
547594 marginBottom : "4px" ,
548- color : "#374151" ,
595+ color : colors . columns ,
549596 } ,
550597 ".cm-sql-hover-tooltip .sql-hover-related" : {
551598 marginBottom : "4px" ,
552- color : "#374151" ,
599+ color : colors . related ,
553600 } ,
554601 ".cm-sql-hover-tooltip .sql-hover-path" : {
555602 marginBottom : "4px" ,
556- color : "#374151" ,
603+ color : colors . path ,
557604 } ,
558605 ".cm-sql-hover-tooltip .sql-hover-info" : {
559606 marginBottom : "4px" ,
560- color : "#374151" ,
607+ color : colors . info ,
561608 } ,
562609 ".cm-sql-hover-tooltip .sql-hover-children" : {
563610 marginBottom : "4px" ,
564- color : "#6b7280" ,
611+ color : colors . tooltipChildren ,
565612 fontSize : "12px" ,
566613 } ,
567614 ".cm-sql-hover-tooltip code" : {
568- backgroundColor : "#f9fafb" ,
615+ backgroundColor : colors . codeBg ,
569616 padding : "1px 4px" ,
570617 borderRadius : "3px" ,
571618 fontSize : "12px" ,
572619 fontFamily : "ui-monospace, 'SF Mono', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace" ,
573- color : "#1f2937" ,
620+ color : colors . codeText ,
574621 } ,
575622 ".cm-sql-hover-tooltip strong" : {
576623 fontWeight : "600" ,
577- color : "#111827" ,
624+ color : colors . strong ,
578625 } ,
579626 ".cm-sql-hover-tooltip em" : {
580627 fontStyle : "italic" ,
581- color : "#6b7280" ,
582- } ,
583- // Dark theme support
584- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip" : {
585- backgroundColor : "#1f2937" ,
586- borderColor : "#374151" ,
587- color : "#f9fafb" ,
588- } ,
589- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-type" : {
590- backgroundColor : "#374151" ,
591- color : "#9ca3af" ,
592- } ,
593- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-description" : {
594- color : "#d1d5db" ,
595- } ,
596- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-syntax" : {
597- color : "#d1d5db" ,
598- } ,
599- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-example" : {
600- color : "#d1d5db" ,
601- } ,
602- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-columns" : {
603- color : "#d1d5db" ,
604- } ,
605- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-related" : {
606- color : "#d1d5db" ,
607- } ,
608- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-path" : {
609- color : "#d1d5db" ,
610- } ,
611- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-info" : {
612- color : "#d1d5db" ,
613- } ,
614- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip .sql-hover-children" : {
615- color : "#9ca3af" ,
616- } ,
617- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip code" : {
618- backgroundColor : "#374151" ,
619- color : "#f3f4f6" ,
620- } ,
621- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip strong" : {
622- color : "#ffffff" ,
623- } ,
624- ".cm-editor.cm-focused.cm-dark .cm-sql-hover-tooltip em" : {
625- color : "#9ca3af" ,
628+ color : colors . em ,
626629 } ,
627630 } ) ;
631+ } ;
0 commit comments