add gtk typings and renderer for window

This commit is contained in:
Benjamin Palko 2025-04-13 20:28:06 -04:00
parent ce38dcf8b0
commit 90dff70165
5 changed files with 36 additions and 10 deletions

11
lib/jsx/types/gtk.ts Normal file
View file

@ -0,0 +1,11 @@
import Gtk40 from "gi://Gtk?version=4.0";
export const GtkClasses = {
window: Gtk40.Window,
};
export type GtkElements = {
[K in keyof typeof GtkClasses]: ConstructorParameters<
(typeof GtkClasses)[K]
>[0];
};
export type GtkTag = keyof typeof GtkClasses;

2
lib/jsx/types/index.ts Normal file
View file

@ -0,0 +1,2 @@
export * from "./gtk";
export * from "./jsx";

21
lib/jsx/types/jsx.ts Normal file
View file

@ -0,0 +1,21 @@
import type { JSX } from "@lib/jsx/jsx-runtime";
export type RenderedNode = JSX.Element;
export type JSXNode =
| RenderedNode
| (() => JSXNode)
| boolean
| number
| bigint
| string
| null
| undefined;
export interface JSXChildren {
children?: JSXNode | JSXNode[] | undefined;
}
export type FunctionComponent = (
props?: Record<string, unknown>,
) => RenderedNode;