Commit Graph

29 Commits

Author SHA1 Message Date
Maksym Mokriakov 36cd379ce1 feat(box): add titleColor prop (#1122)
---------

Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
2026-06-04 18:12:16 +02:00
Sebastian 7aa65a022a refine keymap (#1025) 2026-05-06 03:42:24 +02:00
Matt Simpson 28b3f3f1c0 feat(react): add usePaste, useFocus, useBlur, useSelectionHandler hooks (#1011)
Adds four hooks to `@opentui/react` that already exist in
`@opentui/solid`:

- `usePaste(handler)` — subscribe to terminal paste events
- `useFocus(handler)` — subscribe to terminal focus events
- `useBlur(handler)` — subscribe to terminal blur events
- `useSelectionHandler(handler)` — subscribe to text selection events
2026-05-04 02:55:06 +02:00
Sebastian 342dadda09 refine keymap (#1007) 2026-05-01 21:01:19 +02:00
Sebastian f1c511780e Keymap (#983)
See `docs/keymap/overview.mdx` for details.

---------

Co-authored-by: Simon Klee <hello@simonklee.dk>
2026-04-28 02:10:37 +02:00
Simon Klee 2f17b8f0c3 core: refactor/fix renderer api options (#851)
Cleaned up CliRenderer config by replacing overlapping renderer flags
with explicit modes.

The current config uses useAlternateScreen, useConsole, and
experimental_splitHeight. That setup makes it hard for you to tell:

- where the renderer draws
- whether it captures stdout or passes it through
- whether the console overlay is enabled

This makes it explicit:

- screenMode: alternate-screen | main-screen | split-footer
- externalOutputMode: capture-stdout | passthrough
- consoleMode: console-overlay | disabled

Goal is to make CliRenderer configuration simpler and easier to
understand. It replaces implicit flag combinations with explicit modes.

It's a breaking API change, obviously.
2026-03-29 10:54:31 +02:00
Simon Klee 6d5d25afda Switch tsconfig to NodeNext module resolution (#855)
Prevent regressions where extensionless imports break consumers using
NodeNext
or Node's ESM loader.

tsconfigs override back to "bundler" because bun-ffi-structs and
bun-webgpu
don't export NodeNext-compatible types yet.

Change this once @kommander fixes upstream. I think we can merge this pr
now and update the last things once you've updated upstream.

Close: #843
2026-03-24 11:32:43 +01:00
Sebastian 63df8307a8 Plugins (Slots) (#774) 2026-03-12 12:03:20 +01:00
Sebastian 5ccd87659f Time to first draw measurements (#790) 2026-03-08 00:45:40 +01:00
Nicolas Favre-Felix 304f1beceb fix(react/examples): import createRoot from package (#763) 2026-03-06 22:05:40 +01:00
Tommy D. Rossi 9639559c5f fix: handle flushSync rename in react-reconciler 0.32.0 (#454)
`flushSync` was renamed to `flushSyncFromReconciler` in react-reconciler
0.32.0.

This fix uses nullish coalescing to check for the new name first,
falling back to the old name for backwards compatibility.

Ref: https://github.com/facebook/react/issues/35424

---------

Co-authored-by: Matt Simpson <7691252+msmps@users.noreply.github.com>
2026-01-01 21:21:22 +00:00
Sebastian faaa6912be support rendering OSC8 hyperlinks (#447) 2025-12-27 20:32:53 +01:00
Muhammed Mustafa AKŞAM 522b0ee382 feat(core): add opacity property to Renderable (#401) 2025-12-11 15:47:41 +01:00
Tommy D. Rossi e931bed411 feat(react): add <diff> component support (#360)
## Summary
- Add `<diff>` as a built-in React component by registering
`DiffRenderable` in the component catalogue
- Add React example demonstrating diff viewer with theme cycling, view
modes (unified/split), and keybindings
- Add diff-demo to core examples index

---------

Co-authored-by: Matt Simpson <7691252+msmps@users.noreply.github.com>
2025-11-29 22:36:24 +00:00
Matt Simpson 4f35707cda feat: rebase + add line number renderable (#364)
- add line number renderable
- update use keyboard hook to align with solid with new release key
- add missing property to line number renderable
2025-11-29 23:10:08 +01:00
Matt Simpson ab06252eb9 fix: refactor asciifont and fix seg fault on color setters (#304) 2025-11-12 09:40:56 +00:00
Matt Simpson d846c32291 chore(react): replace render method with createRoot (#270) 2025-11-05 17:29:47 +00:00
Tommy D. Rossi 13d29a3cb1 Scroll acceleration for macOS (#198)
This PR adds scroll acceleration, enabled by default for macOS

Without acceleration, notice that all scrolls are the about the same
speed


https://github.com/user-attachments/assets/7913e603-ba37-416c-bb22-02ae629c2648

With acceleration, notice some scolls are faster, in those cases I moved
the mouse wheel faster


https://github.com/user-attachments/assets/bb7f2b86-17fa-473d-bded-1d0cdee803c2
2025-10-06 14:34:19 +02:00
Matt Simpson e8a0ab0965 feat(react): add animation/timeline hook (#185) 2025-09-27 13:57:11 +01:00
Matt Simpson 9c4d837771 feat(text): reimplement text primitive (#157)
## Description

- introduces a `span` element for styling text
- introduces `b`, `u`, `i`, `em` and `strong` elements

---------

Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
2025-09-12 20:52:22 +02:00
Matt Simpson 1734c322d5 fix: add reactive scroll properties (#133) 2025-09-03 23:16:52 +01:00
Matt Simpson 6a22c7bc1f feat(react): add scroll component (#126) 2025-09-02 22:58:12 +01:00
Matt Simpson 618e3b372e chore: rename needsUpdate method to requestRender (#115)
## Description

- rename the `needsUpdate` method to `requestRender`
- rename the `markNeedsUpdate` method to `markRequiresRerender`
2025-08-31 20:01:27 +01:00
Sebastian Herrlinger b4dbcf4710 remove Group renderable in favor of Box (default no borders) 2025-08-29 12:48:35 +02:00
Matt Simpson fdfd3570b8 fix(react): update types (#98) 2025-08-28 18:40:49 +01:00
Sebastian Herrlinger 15b29b91d4 extended core construct composition 2025-08-28 18:47:47 +02:00
Matt Simpson d40c124a5b fix: fallback to default values when properties undefined (#73) 2025-08-25 11:29:31 +01:00
Matt Simpson 9523301d88 feat(react): add ascii-font component (#47) 2025-08-19 23:04:22 +02:00
Matt Simpson 6c33a2605a feat(react): initial commit (#34)
# TODO:

- [x] enable text to take styled-text children over content
- [x] impl `style` property
- [x] importless components
- [ ] impl ascii-text
- [ ] bundle
2025-08-19 00:12:30 +02:00