@teaui/preact 1.3.8 → 1.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.dist/preact.js CHANGED
@@ -1,116 +1,131 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.run = run;
4
- const preact_1 = require("preact");
5
- const core_1 = require("@teaui/core");
6
- const TextReact_1 = require("./components/TextReact");
1
+ import { render as preactRender, options } from 'preact';
2
+ import { Accordion as WrAccordion, Box as WrBox, Button as WrButton, Checkbox as WrCheckbox, Collapsible as WrCollapsible, CollapsibleText as WrCollapsibleText, ConsoleLog as WrConsoleLog, Container, Digits as WrDigits, H1, H2, H3, H4, H5, H6, Drawer as WrDrawer, Dropdown as WrDropdown, HotKey as WrHotKey, Progress as WrProgress, Spinner as WrSpinner, ToggleGroup as WrToggleGroup, Tree as WrTree, Input as WrInput, Screen, Scrollable as WrScrollable, Separator as WrSeparator, Slider as WrSlider, Space as WrSpace, Stack as WrStack, Tabs as WrTabs, Window as WrWindow, } from '@teaui/core';
3
+ import { TextContainer, TextLiteral, TextProvider, TextStyle, } from './components/TextReact.js';
7
4
  function createView(type, props) {
5
+ // Strip children/child from props before passing to constructors
6
+ const { children, child, ...viewProps } = props;
8
7
  switch (type) {
9
8
  case 'text':
10
- return new TextReact_1.TextLiteral(String(props.text) ?? '');
9
+ return new TextLiteral(String(viewProps.text) ?? '');
11
10
  case 'br':
12
11
  case 'tui-br':
13
- return new TextReact_1.TextLiteral('\n');
12
+ return new TextLiteral('\n');
14
13
  case 'checkbox':
15
14
  case 'tui-checkbox':
16
- return new core_1.Checkbox(props);
15
+ return new WrCheckbox(viewProps);
17
16
  case 'collapsible-text':
18
17
  case 'tui-collapsible-text':
19
- return new core_1.CollapsibleText(props);
18
+ return new WrCollapsibleText(viewProps);
20
19
  case 'console':
21
20
  case 'tui-console':
22
- return new core_1.ConsoleLog(props);
21
+ return new WrConsoleLog(viewProps);
23
22
  case 'digits':
24
23
  case 'tui-digits':
25
- return new core_1.Digits(props);
24
+ return new WrDigits(viewProps);
25
+ case 'dropdown':
26
+ case 'tui-dropdown':
27
+ return new WrDropdown(viewProps);
28
+ case 'hotkey':
29
+ case 'tui-hotkey':
30
+ return new WrHotKey(viewProps);
26
31
  case 'h1':
27
32
  case 'tui-h1':
28
- return (0, core_1.H1)(props.text ?? '');
33
+ return H1(viewProps.text ?? '');
29
34
  case 'h2':
30
35
  case 'tui-h2':
31
- return (0, core_1.H2)(props.text ?? '');
36
+ return H2(viewProps.text ?? '');
32
37
  case 'h3':
33
38
  case 'tui-h3':
34
- return (0, core_1.H3)(props.text ?? '');
39
+ return H3(viewProps.text ?? '');
35
40
  case 'h4':
36
41
  case 'tui-h4':
37
- return (0, core_1.H4)(props.text ?? '');
42
+ return H4(viewProps.text ?? '');
38
43
  case 'h5':
39
44
  case 'tui-h5':
40
- return (0, core_1.H5)(props.text ?? '');
45
+ return H5(viewProps.text ?? '');
41
46
  case 'h6':
42
47
  case 'tui-h6':
43
- return (0, core_1.H6)(props.text ?? '');
48
+ return H6(viewProps.text ?? '');
49
+ case 'progress':
50
+ case 'tui-progress':
51
+ return new WrProgress(viewProps);
52
+ case 'spinner':
53
+ case 'tui-spinner':
54
+ return new WrSpinner(viewProps);
44
55
  case 'toggle-group':
45
56
  case 'tui-toggle-group':
46
- return new core_1.ToggleGroup(props);
57
+ return new WrToggleGroup(viewProps);
47
58
  case 'input':
48
59
  case 'tui-input':
49
- return new core_1.Input(props);
60
+ return new WrInput(viewProps);
50
61
  case 'literal':
51
62
  case 'tui-literal':
52
- return new TextReact_1.TextLiteral(props.text ?? '');
63
+ return new TextLiteral(viewProps.text ?? '');
53
64
  case 'separator':
54
65
  case 'tui-separator':
55
- return new core_1.Separator(props);
66
+ return new WrSeparator(viewProps);
56
67
  case 'slider':
57
68
  case 'tui-slider':
58
- return new core_1.Slider(props);
69
+ return new WrSlider(viewProps);
59
70
  case 'space':
60
71
  case 'tui-space':
61
- return new core_1.Space(props);
62
- // case 'Tree':
63
- // return
72
+ return new WrSpace(viewProps);
73
+ case 'tree':
74
+ case 'tui-tree':
75
+ return new WrTree(viewProps);
64
76
  case 'box':
65
77
  case 'tui-box':
66
- return new core_1.Box(props);
78
+ return new WrBox(viewProps);
67
79
  case 'button':
68
80
  case 'tui-button':
69
- return new core_1.Button(props);
81
+ return new WrButton(viewProps);
70
82
  case 'collapsible':
71
83
  case 'tui-collapsible':
72
- return new core_1.Collapsible(props);
84
+ return new WrCollapsible(viewProps);
73
85
  case 'scrollable':
74
86
  case 'tui-scrollable':
75
- return new core_1.Scrollable(props);
87
+ return new WrScrollable(viewProps);
76
88
  case 'stack':
77
89
  case 'tui-stack':
78
- return new core_1.Stack(props);
90
+ return new WrStack(viewProps);
79
91
  case 'style':
80
92
  case 'tui-style':
81
- return new TextReact_1.TextStyle(props);
93
+ return new TextStyle(viewProps);
82
94
  case 'tui-text':
83
- return new TextReact_1.TextProvider(props);
95
+ return new TextProvider(viewProps);
84
96
  case 'accordion':
85
97
  case 'tui-accordion':
86
- return new core_1.Accordion(props);
98
+ return new WrAccordion(viewProps);
87
99
  case 'accordion-section':
88
100
  case 'tui-accordion-section':
89
- return new core_1.Accordion.Section(props);
101
+ return new WrAccordion.Section(viewProps);
90
102
  case 'drawer':
91
103
  case 'tui-drawer':
92
- return new core_1.Drawer(props);
104
+ return new WrDrawer(viewProps);
93
105
  case 'tabs':
94
106
  case 'tui-tabs':
95
- return new core_1.Tabs(props);
107
+ return new WrTabs(viewProps);
96
108
  case 'tabs-section':
97
109
  case 'tui-tabs-section':
98
- return new core_1.Tabs.Section(props);
99
- case 'window':
110
+ return new WrTabs.Section(viewProps);
100
111
  case 'tui-window':
101
- return new core_1.Window(props);
112
+ return new WrWindow();
102
113
  default:
103
- throw Error(`Unknown type ${type}`);
114
+ throw new Error(`Unknown type: ${type}`);
104
115
  }
105
116
  }
106
- const defer = Promise.prototype.then.bind(Promise.resolve());
117
+ const defer = typeof Promise == 'function'
118
+ ? (fn) => Promise.resolve().then(fn)
119
+ : setTimeout;
107
120
  function removeFromTextContainer(container, child) {
108
- // find TextContainer with child in it, and remove
109
- for (const node of container.children) {
110
- if (node instanceof TextReact_1.TextContainer && node.children.includes(child)) {
111
- node.removeChild(child);
112
- if (node.children.length === 0) {
113
- container.removeChild(node);
121
+ for (const viewChild of container.children) {
122
+ if (viewChild instanceof TextContainer && child.parent === viewChild) {
123
+ // TextContainer.add() puts TextLiterals/TextStyles into #nodes,
124
+ // NOT into .children (which holds generated Text views).
125
+ // Check child.parent instead of searching .children.
126
+ viewChild.removeChild(child);
127
+ if (viewChild.children.length === 0) {
128
+ container.removeChild(viewChild);
114
129
  }
115
130
  return;
116
131
  }
@@ -120,16 +135,16 @@ function removeChild(container, child) {
120
135
  if (child.parent === container) {
121
136
  container.removeChild(child);
122
137
  }
123
- else if (child instanceof TextReact_1.TextLiteral || child instanceof TextReact_1.TextStyle) {
138
+ else if (child instanceof TextLiteral || child instanceof TextStyle) {
124
139
  removeFromTextContainer(container, child);
125
140
  }
126
141
  }
127
142
  function appendChild(parentInstance, child, before) {
128
- if (parentInstance instanceof TextReact_1.TextStyle &&
129
- (child instanceof TextReact_1.TextLiteral || child instanceof TextReact_1.TextStyle)) {
143
+ if (parentInstance instanceof TextStyle &&
144
+ (child instanceof TextLiteral || child instanceof TextStyle)) {
130
145
  // do not do the TextContainer song and dance
131
146
  }
132
- else if (child instanceof TextReact_1.TextLiteral || child instanceof TextReact_1.TextStyle) {
147
+ else if (child instanceof TextLiteral || child instanceof TextStyle) {
133
148
  // find the last child (checking 'before')
134
149
  let lastChild = parentInstance.children.at(-1);
135
150
  if (before) {
@@ -139,11 +154,11 @@ function appendChild(parentInstance, child, before) {
139
154
  }
140
155
  }
141
156
  let textContainer;
142
- if (lastChild instanceof TextReact_1.TextContainer) {
157
+ if (lastChild instanceof TextContainer) {
143
158
  textContainer = lastChild;
144
159
  }
145
160
  else {
146
- textContainer = new TextReact_1.TextContainer();
161
+ textContainer = new TextContainer();
147
162
  parentInstance.add(textContainer);
148
163
  }
149
164
  textContainer.add(child);
@@ -168,17 +183,18 @@ class RendererElement {
168
183
  props = {};
169
184
  prevProps;
170
185
  node;
171
- nodeType = '';
172
- constructor(renderer, localName) {
186
+ nodeType;
187
+ constructor(renderer, localName, nodeType = 1) {
173
188
  this.renderer = renderer;
174
189
  this.localName = localName;
190
+ this.nodeType = nodeType;
175
191
  this._commit = this._commit.bind(this);
176
192
  }
177
193
  set data(text) {
178
194
  this.setAttribute('text', String(text));
179
195
  }
180
196
  addEventListener(event, func) {
181
- this.setAttribute(`on${event}`, (...args) => this.l[event + false](...args));
197
+ this.setAttribute(`on${event}`, func);
182
198
  }
183
199
  setAttribute(name, value) {
184
200
  if (this.node && !this.prevProps) {
@@ -188,6 +204,10 @@ class RendererElement {
188
204
  this.props[name] = value;
189
205
  }
190
206
  removeAttribute(name) {
207
+ if (this.node && !this.prevProps) {
208
+ this.prevProps = Object.assign({}, this.props);
209
+ defer(this._commit);
210
+ }
191
211
  delete this.props[name];
192
212
  }
193
213
  _attach() {
@@ -244,13 +264,13 @@ class RendererElement {
244
264
  }
245
265
  function createRendererDom(renderer) {
246
266
  function createElement(type) {
247
- return new RendererElement(renderer, type);
267
+ return new RendererElement(renderer, type, 1);
248
268
  }
249
269
  function createElementNS(_, type) {
250
- return new RendererElement(renderer, type);
270
+ return new RendererElement(renderer, type, 1);
251
271
  }
252
272
  function createTextNode(text) {
253
- const node = createElement('text');
273
+ const node = new RendererElement(renderer, 'text', 3);
254
274
  node.props.text = String(text);
255
275
  return node;
256
276
  }
@@ -259,39 +279,68 @@ function createRendererDom(renderer) {
259
279
  }
260
280
  return { createElement, createElementNS, createTextNode, createRoot };
261
281
  }
282
+ let _rerender;
283
+ // Hook into Preact's diffed option to trigger screen re-renders after commits
284
+ const prevDiffed = options.diffed;
285
+ options.diffed = (vnode) => {
286
+ prevDiffed?.(vnode);
287
+ _rerender?.();
288
+ };
262
289
  const dom = createRendererDom({
263
290
  create(type, props) {
264
291
  return createView(type, props);
265
292
  },
266
293
  insert(parent, node, before) {
267
- if (!(parent instanceof core_1.Container)) {
294
+ if (!(parent instanceof Container)) {
268
295
  return;
269
296
  }
270
297
  appendChild(parent, node, before);
271
298
  },
272
299
  remove(parent, node) {
273
- if (!(parent instanceof core_1.Container)) {
300
+ if (!(parent instanceof Container)) {
274
301
  return;
275
302
  }
276
303
  removeChild(parent, node);
277
304
  },
278
305
  update(node, props) {
279
- if (node instanceof TextReact_1.TextLiteral) {
280
- node.update(props);
281
- node.text = props.text ?? '';
306
+ const { children, child, ...updateProps } = props;
307
+ if (node instanceof TextLiteral) {
308
+ node.text = updateProps.text ?? '';
282
309
  }
283
310
  else {
284
- node.update(props);
311
+ node.update(updateProps);
285
312
  }
286
313
  },
287
314
  });
288
- Object.assign(global, { document: {} });
289
- Object.assign(document, dom);
290
- async function run(component, options) {
315
+ // Preact accesses `document` directly (not ownerDocument), so we must
316
+ // provide a global document shim with our custom DOM factory methods.
317
+ const fakeDocument = Object.create(null);
318
+ Object.assign(fakeDocument, dom);
319
+ globalThis.document = fakeDocument;
320
+ export function render(screen, window, component) {
321
+ _rerender = () => {
322
+ screen.render();
323
+ };
291
324
  const root = dom.createRoot();
292
- (0, preact_1.render)(component, root);
293
- const window = root.node;
294
- const [screen, _] = await core_1.Screen.start(window, options);
295
- return [screen, window, component];
325
+ root.ownerDocument = fakeDocument;
326
+ preactRender(component, root);
327
+ // Reparent created views into the actual window
328
+ if (root.node instanceof WrWindow) {
329
+ for (const child of [...root.node.children]) {
330
+ root.node.removeChild(child);
331
+ window.add(child);
332
+ }
333
+ }
334
+ return function unmount() {
335
+ preactRender(null, root);
336
+ _rerender = undefined;
337
+ };
338
+ }
339
+ export async function run(component, options) {
340
+ // Start the screen first, then render (matching React package behavior)
341
+ const window = new WrWindow();
342
+ const [screen, _] = await Screen.start(window, options);
343
+ const unmount = render(screen, window, component);
344
+ return [screen, window, component, unmount];
296
345
  }
297
346
  //# sourceMappingURL=preact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preact.js","sourceRoot":"","sources":["../lib/preact.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preact.js","sourceRoot":"","sources":["../lib/preact.tsx"],"names":[],"mappings":"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"}
package/README.md CHANGED
@@ -1,31 +1,195 @@
1
- # TeaUI + Preact
1
+ # @teaui/preact
2
2
 
3
- See [TeaUI](https://github.com/colinta/teaui) for more info about
4
- TeaUI itself. This library adds a Preact renderer/reconciler.
3
+ Preact renderer for [TeaUI](https://github.com/colinta/teaui). Write fullscreen terminal UIs with Preact components, hooks, signals, and JSX.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm install @teaui/core @teaui/preact preact
9
+ ```
10
+
11
+ ## Usage
5
12
 
6
13
  ```tsx
7
- import {useReducer} from 'preact/hooksZ'
14
+ import {useReducer} from 'preact/hooks'
8
15
  import {interceptConsoleLog} from '@teaui/core'
9
- import {
10
- Box,
11
- Button,
12
- Stack,
13
- run,
14
- } from '@teaui/preact'
15
-
16
- // Recommended:
16
+ import {Box, Button, Stack, run} from '@teaui/preact'
17
+
17
18
  interceptConsoleLog()
18
19
 
19
20
  function App() {
20
- const [bang, goto10] = useReducer((state) => state + '!', '')
21
-
22
- return <Box border="single">
23
- <Stack.down>
24
- First there was Ncurses{bang}
25
- <Button onClick={goto10}>Tell me more!</Button>
26
- </Stack.down>
27
- </Box>
21
+ const [bang, addBang] = useReducer((s: string) => s + '!', '')
22
+
23
+ return (
24
+ <Box border="single">
25
+ <Stack.down>
26
+ Hello TeaUI{bang}
27
+ <Button onClick={addBang}>Click me</Button>
28
+ </Stack.down>
29
+ </Box>
30
+ )
31
+ }
32
+
33
+ run(<App />)
34
+ ```
35
+
36
+ Compile and run:
37
+
38
+ ```bash
39
+ pnpm tsc && node .dist/index.js
40
+ ```
41
+
42
+ ## API
43
+
44
+ ### `run(element, options?)`
45
+
46
+ Creates a `Window` and `Screen`, renders the Preact element tree, and enters fullscreen mode.
47
+
48
+ ```ts
49
+ const [screen, window, component, unmount] = await run(<App />)
50
+ ```
51
+
52
+ Returns `[Screen, Window, ComponentChildren, unmount]`. Call `unmount()` to tear down the Preact tree.
53
+
54
+ ### `render(screen, window, element)`
55
+
56
+ Lower-level alternative — mount a Preact element into an existing `Screen` and `Window`.
57
+
58
+ ```ts
59
+ import {Screen, Window} from '@teaui/core'
60
+ import {render} from '@teaui/preact'
61
+
62
+ const window = new Window()
63
+ const [screen] = await Screen.start(window)
64
+ const unmount = render(screen, window, <App />)
65
+ ```
66
+
67
+ Returns an `unmount()` function.
68
+
69
+ ## Components
70
+
71
+ All components are typed wrappers around TeaUI core views. They accept the same props as the core constructors, with `children` mapped to Preact children.
72
+
73
+ ### Views (leaf nodes)
74
+
75
+ | Component | Element | Description |
76
+ |-----------|---------|-------------|
77
+ | `<Br />` | `<tui-br>` | Line break in text |
78
+ | `<Checkbox />` | `<tui-checkbox>` | Toggle checkbox |
79
+ | `<CollapsibleText />` | `<tui-collapsible-text>` | Text that truncates with expand/collapse |
80
+ | `<ConsoleLog />` | `<tui-console>` | Displays intercepted `console.log` output |
81
+ | `<Digits />` | `<tui-digits>` | Large-font digit display |
82
+ | `<H1 />`–`<H6 />` | `<tui-h1>`–`<tui-h6>` | Header text |
83
+ | `<Input />` | `<tui-input>` | Text input field |
84
+ | `<Separator />` | `<tui-separator>` | Horizontal or vertical line |
85
+ | `<Slider />` | `<tui-slider>` | Value slider |
86
+ | `<Space />` | `<tui-space>` | Empty spacer |
87
+ | `<ToggleGroup />` | `<tui-toggle-group>` | Group of toggle options |
88
+
89
+ `Separator` has `.horizontal` and `.vertical` variants. `Slider` has `.horizontal` and `.vertical` variants.
90
+
91
+ ### Containers
92
+
93
+ | Component | Element | Description |
94
+ |-----------|---------|-------------|
95
+ | `<Box />` | `<tui-box>` | Box with optional border and padding |
96
+ | `<Button />` | `<tui-button>` | Clickable button |
97
+ | `<Collapsible />` | `<tui-collapsible>` | Toggle between `collapsed` and `expanded` content |
98
+ | `<Scrollable />` | `<tui-scrollable>` | Scrollable content region |
99
+ | `<Stack />` | `<tui-stack>` | Linear layout |
100
+ | `<Text />` | `<tui-text>` | Text container (sets font, alignment, wrap) |
101
+ | `<Style />` | `<tui-style>` | Inline text styles (bold, italic, etc.) |
102
+
103
+ `Stack` has `.down`, `.up`, `.left`, and `.right` variants.
104
+
105
+ ### Complex Containers
106
+
107
+ | Component | Element | Description |
108
+ |-----------|---------|-------------|
109
+ | `<Accordion />` | `<tui-accordion>` | Expandable section group |
110
+ | `<Accordion.Section />` | `<tui-accordion-section>` | Section within an accordion |
111
+ | `<Drawer />` | `<tui-drawer>` | Panel that slides in from an edge |
112
+ | `<Tabs />` | `<tui-tabs>` | Tabbed container |
113
+ | `<Tabs.Section />` | `<tui-tabs-section>` | Tab within tabs |
114
+ | `<Tree />` | `<tui-tree>` | Tree view with expandable nodes |
115
+
116
+ `Drawer` has `.top`, `.right`, `.bottom`, and `.left` variants. Each accepts `content` and `drawer` props for the two panes.
117
+
118
+ ### Intrinsic Elements
119
+
120
+ You can also use the `tui-` prefixed JSX elements directly:
121
+
122
+ ```tsx
123
+ <tui-stack direction="down">
124
+ <tui-box border="single" width={20}>
125
+ <tui-text alignment="center">Hello</tui-text>
126
+ </tui-box>
127
+ </tui-stack>
128
+ ```
129
+
130
+ ## Text Handling
131
+
132
+ String literals are rendered as `TextLiteral` nodes, which are automatically grouped into `TextContainer`s for layout:
133
+
134
+ ```tsx
135
+ <Stack.down>
136
+ hello {/* TextLiteral → TextContainer #1 */}
137
+ <Br /> {/* TextLiteral → TextContainer #1 */}
138
+ <Box /> {/* Box breaks the text group */}
139
+ goodbye {/* TextLiteral → TextContainer #2 */}
140
+ </Stack.down>
141
+ ```
142
+
143
+ Use `<Text>` to control font, alignment, and word wrap. Use `<Style>` for inline formatting (bold, italic, etc.):
144
+
145
+ ```tsx
146
+ <Text alignment="center" wrap>
147
+ This is <Style bold>important</Style> text.
148
+ </Text>
149
+ ```
150
+
151
+ ## Preact Features
152
+
153
+ | Feature | Status |
154
+ |---------|--------|
155
+ | Hooks (`useState`, `useReducer`, `useEffect`, etc.) | ✅ Works |
156
+ | Context (`useContext`, providers) | ✅ Works |
157
+ | Refs (`useRef`, callback refs) | ✅ Works |
158
+ | Signals (`@preact/signals`) | ✅ Compatible |
159
+ | Error Boundaries | Not yet tested |
160
+
161
+ ## TypeScript Configuration
162
+
163
+ The package uses Preact's JSX transform. Your `tsconfig.json` should include:
164
+
165
+ ```json
166
+ {
167
+ "compilerOptions": {
168
+ "jsx": "react-jsx",
169
+ "jsxImportSource": "preact"
170
+ }
28
171
  }
172
+ ```
29
173
 
30
- run()
174
+ ## Architecture
175
+
176
+ ```
177
+ @teaui/preact
178
+ ├── lib/
179
+ │ ├── index.ts # Re-exports renderer + components
180
+ │ ├── preact.tsx # Fake-DOM renderer, render(), run()
181
+ │ ├── components.tsx # Typed Preact wrappers + JSX IntrinsicElements
182
+ │ └── components/
183
+ │ └── TextReact.ts # TextLiteral, TextContainer, TextProvider, TextStyle
184
+ └── tsconfig.json
31
185
  ```
186
+
187
+ **`preact.tsx`** implements a custom DOM-like abstraction (`RendererElement`) that Preact renders into. Each `RendererElement` lazily creates its corresponding TeaUI view on first attach. Attribute changes are batched via microtask deferral — multiple `setAttribute` calls in the same synchronous block are committed together. Preact's `options.diffed` hook triggers `screen.render()` after each commit so updates appear on screen.
188
+
189
+ **`components.tsx`** provides typed Preact component wrappers for all TeaUI views. Each component maps its props to the corresponding `tui-` intrinsic element. The file also declares `preact.JSX.IntrinsicElements` so `tui-` elements can be used directly in JSX.
190
+
191
+ **`components/TextReact.ts`** defines the text rendering architecture. Adjacent `TextLiteral` nodes are grouped into a `TextContainer`, which handles layout. `TextProvider` (`<Text>`) sets text properties (font, alignment, wrap) for descendant text. `TextStyle` (`<Style>`) applies inline SGR styles without affecting layout properties.
192
+
193
+ ## License
194
+
195
+ MIT
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
+ "type": "module",
2
3
  "name": "@teaui/preact",
3
4
  "description": "Preact renderer for TeaUI",
4
5
  "author": "Colin T.A. Gray <colinta@colinta.com>",
5
6
  "contributors": [],
6
- "version": "1.3.8",
7
+ "version": "1.5.8",
7
8
  "license": "MIT",
8
9
  "preferGlobal": false,
9
10
  "repository": {
@@ -20,7 +21,7 @@
20
21
  "url": "http://github.com/colinta/teaui/issues"
21
22
  },
22
23
  "keywords": [
23
- "react",
24
+ "preact",
24
25
  "curses",
25
26
  "tui",
26
27
  "terminal",
@@ -28,7 +29,7 @@
28
29
  "terminal-ui"
29
30
  ],
30
31
  "tags": [
31
- "react",
32
+ "preact",
32
33
  "curses",
33
34
  "tui",
34
35
  "terminal"
@@ -39,10 +40,10 @@
39
40
  "peerDependencies": {},
40
41
  "dependencies": {
41
42
  "preact": "^10.24.3",
42
- "@teaui/core": "1.3.8"
43
+ "@teaui/core": "1.5.8"
43
44
  },
44
45
  "devDependencies": {
45
- "@teaui/shared": "1.3.8"
46
+ "@teaui/shared": "1.5.8"
46
47
  },
47
48
  "scripts": {
48
49
  "clean": "rm -rf .dist/",