1- import { cn } from '../lib/utils' ;
2-
31type CalloutType = 'note' | 'tip' | 'warning' | 'critical' | 'info' | 'success' ;
42
53interface CalloutProps {
@@ -19,58 +17,62 @@ const calloutConfig: Record<
1917> = {
2018 note : {
2119 title : 'Note' ,
22- bgColor : 'bg-blue-950/30' ,
23- borderColor : 'border-blue-400' ,
24- titleColor : 'text-blue-400' ,
20+ bgColor : 'bg-blue-50 dark:bg-blue- 950/30' ,
21+ borderColor : 'border-blue-500 dark:border-blue- 400' ,
22+ titleColor : 'text-blue-700 dark:text-blue- 400' ,
2523 } ,
2624 tip : {
2725 title : 'Tip' ,
28- bgColor : 'bg-purple-950/30' ,
29- borderColor : 'border-purple-400' ,
30- titleColor : 'text-purple-400' ,
26+ bgColor : 'bg-purple-50 dark:bg-purple- 950/30' ,
27+ borderColor : 'border-purple-500 dark:border-purple- 400' ,
28+ titleColor : 'text-purple-700 dark:text-purple- 400' ,
3129 } ,
3230 warning : {
3331 title : 'Warning' ,
34- bgColor : 'bg-yellow-950/30' ,
35- borderColor : 'border-yellow-400' ,
36- titleColor : 'text-yellow-400' ,
32+ bgColor : 'bg-yellow-50 dark:bg-yellow- 950/30' ,
33+ borderColor : 'border-yellow-500 dark:border-yellow- 400' ,
34+ titleColor : 'text-yellow-700 dark:text-yellow- 400' ,
3735 } ,
3836 critical : {
39- title : 'critical ' ,
40- bgColor : 'bg-red-950/30' ,
41- borderColor : 'border-red-400' ,
42- titleColor : 'text-red-400' ,
37+ title : 'Critical ' ,
38+ bgColor : 'bg-red-50 dark:bg-red- 950/30' ,
39+ borderColor : 'border-red-500 dark:border-red- 400' ,
40+ titleColor : 'text-red-700 dark:text-red- 400' ,
4341 } ,
4442 info : {
4543 title : 'Info' ,
46- bgColor : 'bg-cyan-950/30' ,
47- borderColor : 'border-cyan-400' ,
48- titleColor : 'text-cyan-400' ,
44+ bgColor : 'bg-cyan-50 dark:bg-cyan- 950/30' ,
45+ borderColor : 'border-cyan-500 dark:border-cyan- 400' ,
46+ titleColor : 'text-cyan-700 dark:text-cyan- 400' ,
4947 } ,
5048 success : {
5149 title : 'Success' ,
52- bgColor : 'bg-green-950/30' ,
53- borderColor : 'border-green-400' ,
54- titleColor : 'text-green-400' ,
50+ bgColor : 'bg-green-50 dark:bg-green- 950/30' ,
51+ borderColor : 'border-green-500 dark:border-green- 400' ,
52+ titleColor : 'text-green-700 dark:text-green- 400' ,
5553 } ,
5654} ;
5755
5856export function Callout ( { type, children, title } : CalloutProps ) {
5957 const config = calloutConfig [ type ] ;
6058
59+ if ( ! config ) {
60+ throw new Error ( `Unknown callout type: ${ type } ` ) ;
61+ }
62+
6163 return (
62- < div className = { cn ( config . bgColor , config . borderColor , ' mt-6 border-l-2 p-4' ) } >
63- < div className = "min-w-0 flex-1 text-white" >
64+ < div className = { ` ${ config . bgColor } ${ config . borderColor } mt-6 rounded-r-lg border-l-2 p-4` } >
65+ < div className = "min-w-0 flex-1 dark: text-white" >
6466 < div
65- className = { cn ( ' mb-2 font-mono text-sm font-medium uppercase' , config . titleColor ) }
67+ className = { ` mb-2 font-mono text-sm font-medium uppercase ${ config . titleColor } ` }
6668 style = { {
6769 letterSpacing : '0.05em' ,
6870 } }
6971 >
7072 { title ?? config . title }
7173 </ div >
7274 { /* I used [&_*]:!leading-[inherit] to override line-height forced by nextra */ }
73- < div className = { cn ( ' [&_*]:!leading-[inherit]' ) } > { children } </ div >
75+ < div className = " [&_*]:!leading-[inherit]" > { children } </ div >
7476 </ div >
7577 </ div >
7678 ) ;
0 commit comments