{"repo":"bikeshaving/termdom","free":true,"listed":false,"github":"https://github.com/bikeshaving/termdom","clone":"git clone https://github.com/bikeshaving/termdom.git","description":"Build terminal apps with HTML, CSS and the DOM.","language":"TypeScript","stars":135,"topics":["ansi","cli","dom","javascript","terminal","tui","bun","deno","node","typescript"],"license":"MIT","category":"cli-tools","readme_excerpt":"TermDOM Build terminal apps with HTML, CSS and the DOM. TermDOM is a JavaScript library that displays HTML and CSS in the terminal. It draws actual DOM nodes to terminal output and redraws the screen when they mutate, so TUIs and interactive CLIs can be written with vanilla JavaScript or any frontend web framework. Features - Stylesheets CSS from elements and style attributes cascades and inherits as in the browser, translated to ANSI color and decoration. - Layout The CSS box model, flexbox, and table layout, computed in whole terminal cells with margins, borders, and padding. - Scrolling Documents taller than the terminal scroll with window.scrollTo() and element.scrollIntoView() . - Events Keyboard, mouse, focus, and paste events fire on elements, the document, and the window, decoded from stdin. - DOM utilities document.querySelector() , MutationObserver , ResizeObserver , and getBoundingClientRect() read the layout engine. - Forms , , , checkboxes, and radios have terminal-native looks, restylable with CSS; Tab and :focus work. - Web Components customElements.define() , attachShadow() , , :host , and scoped styles; the built-in controls are shadow trees. - Text CJK, emoji, and combining characters take correct widths; Hebrew and Arabic render in visual order with contextual shaping. - Selection Drag to select, styled with ::selection ; the caret moves by grapheme. - Fullscreen Element.requestFullscreen() renders to the alternate screen; exiting restores the shell and its","default_branch":null,"files":null,"tree":[],"storefront":"/r/bikeshaving","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/bikeshaving/termdom/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}