@@ -2,7 +2,7 @@ import { FitAddon } from '@xterm/addon-fit';
2
2
import { WebLinksAddon } from '@xterm/addon-web-links' ;
3
3
import { Terminal as XTerm } from '@xterm/xterm' ;
4
4
import '@xterm/xterm/css/xterm.css' ;
5
- import { forwardRef , useEffect , useImperativeHandle , useRef } from 'react' ;
5
+ import { forwardRef , useEffect , useImperativeHandle , useRef , type ComponentProps } from 'react' ;
6
6
import '../../styles/terminal.css' ;
7
7
import { getTerminalTheme } from './theme.js' ;
8
8
@@ -13,13 +13,28 @@ export interface TerminalRef {
13
13
export interface TerminalProps {
14
14
theme : 'dark' | 'light' ;
15
15
className ?: string ;
16
+ id ?: string ;
17
+ role ?: ComponentProps < 'div' > [ 'role' ] ;
18
+ 'aria-labelledby' ?: string ;
16
19
readonly ?: boolean ;
17
20
onTerminalReady ?: ( terminal : XTerm ) => void ;
18
21
onTerminalResize ?: ( cols : number , rows : number ) => void ;
19
22
}
20
23
21
24
export const Terminal = forwardRef < TerminalRef , TerminalProps > (
22
- ( { theme, className = '' , readonly = true , onTerminalReady, onTerminalResize } , ref ) => {
25
+ (
26
+ {
27
+ theme,
28
+ className,
29
+ id,
30
+ role,
31
+ 'aria-labelledby' : ariaLabelledby ,
32
+ readonly = true ,
33
+ onTerminalReady,
34
+ onTerminalResize,
35
+ } ,
36
+ ref ,
37
+ ) => {
23
38
const divRef = useRef < HTMLDivElement > ( null ) ;
24
39
const terminalRef = useRef < XTerm > ( ) ;
25
40
@@ -79,7 +94,7 @@ export const Terminal = forwardRef<TerminalRef, TerminalProps>(
79
94
} ;
80
95
} , [ ] ) ;
81
96
82
- return < div className = { className } ref = { divRef } /> ;
97
+ return < div id = { id } role = { role } aria-labelledby = { ariaLabelledby } className = { className } ref = { divRef } /> ;
83
98
} ,
84
99
) ;
85
100
0 commit comments