1
- import React , { useContext } from 'react' ;
1
+ import React , { useContext , useEffect , useState } from 'react' ;
2
2
import Markdown from 'markdown-to-jsx' ;
3
3
import Link from 'next/link' ;
4
4
import slugifyMarkdownHeadline from '~/lib/slugifyMarkdownHeadline' ;
@@ -8,6 +8,7 @@ import Highlight from 'react-syntax-highlighter';
8
8
import { atomOneDark } from 'react-syntax-highlighter/dist/cjs/styles/hljs' ;
9
9
import Code from '~/components/Code' ;
10
10
import { FullMarkdownContext } from '~/context' ;
11
+ import Image from 'next/image' ;
11
12
12
13
import {
13
14
Headline1 ,
@@ -504,12 +505,24 @@ const StyledMarkdownBlock = ({ markdown }: { markdown: string }) => {
504
505
const fullMarkdown = useContext ( FullMarkdownContext ) ;
505
506
if ( ! fullMarkdown ) return null ;
506
507
return (
507
- < div className = 'mt-3 bg-slate-50 dark:bg-slate-900 pt-6 pb-3 pr-3 border-dotted border-l-blue-400 border-l-[3px]' >
508
- < TableOfContentMarkdown
509
- markdown = { fullMarkdown }
510
- depth = { depth }
511
- />
512
- </ div >
508
+ < >
509
+ < div className = 'flex flex-row gap-2 text-slate-600 dark:text-slate-300 text-h5 max-sm:text-[1rem] items-center' >
510
+ < Image
511
+ src = { '/icons/toc-menu.svg' }
512
+ height = { 15 }
513
+ width = { 15 }
514
+ alt = 'menu-icon'
515
+ className = 'max-sm:w-3 max-sm:h-3'
516
+ />
517
+ < span > Table of Contents</ span >
518
+ </ div >
519
+ < div className = 'mt-2 bg-slate-50 dark:bg-slate-900 pt-6 pb-3 pr-3 border border-r-0 border-y-0 border-l-blue-400/40 border-l-[2.5px]' >
520
+ < TableOfContentMarkdown
521
+ markdown = { fullMarkdown }
522
+ depth = { depth }
523
+ />
524
+ </ div >
525
+ </ >
513
526
) ;
514
527
} ,
515
528
} ,
@@ -541,7 +554,7 @@ export function TableOfContentMarkdown({
541
554
href = { `#${ slug } ` }
542
555
className = 'block cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ml-[-0.40rem] font-medium'
543
556
>
544
- < span className = 'mr-1 text-blue-400 text-[1.5em] ' >
557
+ < span className = 'mr-1 text-blue-400/90 text-[1em] flex justify-center items-center ' >
545
558
●
546
559
</ span >
547
560
{ children }
@@ -570,12 +583,22 @@ export function TableOfContentMarkdown({
570
583
? {
571
584
component : ( { children } ) => {
572
585
const slug = slugifyMarkdownHeadline ( children ) ;
586
+ const [ isChrome , setIsChrome ] = useState ( false ) ;
587
+
588
+ useEffect ( ( ) => {
589
+ const chromeCheck =
590
+ / C h r o m e / . test ( navigator . userAgent ) &&
591
+ / G o o g l e I n c / . test ( navigator . vendor ) ;
592
+ setIsChrome ( chromeCheck ) ;
593
+ } , [ ] ) ;
594
+
573
595
return (
596
+ // chromeClass
574
597
< a
575
598
href = { `#${ slug } ` }
576
- className = ' block cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 -ml-[9px ] max-sm:-ml-[7px ] font-medium'
599
+ className = { ` block cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ] max-sm:-ml-[6px ] font-medium ${ isChrome ? '-ml-[4.8px]' : '-ml-[6.5px]' } ` }
577
600
>
578
- < span className = 'mr-1 text-blue-400 text-[1em ]' >
601
+ < span className = 'mr-1 text-blue-400 text-[0.7em ]' >
579
602
●
580
603
</ span >
581
604
{ children }
@@ -592,12 +615,12 @@ export function TableOfContentMarkdown({
592
615
return (
593
616
< a
594
617
href = { `#${ slug } ` }
595
- className = 'flex flex-row items-center cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ml-[-0.15rem ]'
618
+ className = 'flex flex-row items-center cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ml-[-0.25rem ]'
596
619
>
597
- < span className = 'text-blue-400 text-[0.28em] ml-1 max-sm:w-[18px] ' >
598
- ● ● ● ● ;
620
+ < span className = 'text-blue-400/40 font-extrabold text-[0.8em] max-sm:text-[1.2em] ml-1 ' >
621
+ —&mdash ;
599
622
</ span >
600
- < span className = 'mr-1 text-blue-400 text-[0.75em] ' >
623
+ < span className = 'mr-1 text-blue-400/90 text-[0.7em] flex justify-center items-center ' >
601
624
●
602
625
</ span >
603
626
@@ -615,13 +638,12 @@ export function TableOfContentMarkdown({
615
638
return (
616
639
< a
617
640
href = { `#${ slug } ` }
618
- className = 'flex flex-row items-center cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ml-[-0.15rem] '
641
+ className = 'flex flex-row items-center cursor-pointer mb-3 max-sm:text-sm text-slate-600 dark:text-slate-300 leading-4 ml-[-0.25rem] '
619
642
>
620
- < span className = 'text-blue-400 text-[0.28em] ml-1 max-sm:w-[48px]' >
621
- ● ● ● ● ● ●
622
- ● ● ● ● ●
643
+ < span className = 'text-blue-400/40 font-extrabold text-[0.8em] ml-1 max-sm:text-[1.2em]' >
644
+ ————
623
645
</ span >
624
- < span className = 'mr-1 text-blue-400 text-[0.75em] ' >
646
+ < span className = 'mr-1 text-blue-400/90 text-[0.7em] flex justify-center items-center ' >
625
647
●
626
648
</ span >
627
649
0 commit comments