diff --git a/packages/integration-tests/tests/rendering.test.tsx b/packages/integration-tests/tests/rendering.test.tsx index 5c5a2d7..e8098f7 100644 --- a/packages/integration-tests/tests/rendering.test.tsx +++ b/packages/integration-tests/tests/rendering.test.tsx @@ -40,7 +40,7 @@ test.beforeEach(async () => { await Promise.all(messages.map((message) => message.delete())) }) -test.serial.only("kitchen sink + destroy", async (t) => { +test.serial("kitchen sink + destroy", async (t) => { const root = createRoot(channel) await root.render( diff --git a/packages/reacord/src/renderer/base-instance.ts b/packages/reacord/src/base-instance.ts similarity index 100% rename from packages/reacord/src/renderer/base-instance.ts rename to packages/reacord/src/base-instance.ts diff --git a/packages/reacord/src/components/embed.tsx b/packages/reacord/src/components/embed.tsx deleted file mode 100644 index b70b03b..0000000 --- a/packages/reacord/src/components/embed.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import type { ColorResolvable } from "discord.js" -import type { ReactNode } from "react" -import React from "react" -import { EmbedInstance } from "../renderer/embed-instance.js" - -export type EmbedProps = { - color?: ColorResolvable - children?: ReactNode -} - -export function Embed(props: EmbedProps) { - return ( - new EmbedInstance(props.color)} /> - ) -} diff --git a/packages/reacord/src/components/text.tsx b/packages/reacord/src/components/text.tsx deleted file mode 100644 index e4d69f8..0000000 --- a/packages/reacord/src/components/text.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import type { ReactNode } from "react" -import React from "react" -import { TextElementInstance } from "../renderer/text-element-instance.js" - -export type TextProps = { - children?: ReactNode -} - -export function Text(props: TextProps) { - return new TextElementInstance()} /> -} diff --git a/packages/reacord/src/renderer/container-instance.ts b/packages/reacord/src/container-instance.ts similarity index 100% rename from packages/reacord/src/renderer/container-instance.ts rename to packages/reacord/src/container-instance.ts diff --git a/packages/reacord/src/renderer/container.ts b/packages/reacord/src/container.ts similarity index 100% rename from packages/reacord/src/renderer/container.ts rename to packages/reacord/src/container.ts diff --git a/packages/reacord/src/renderer/embed-instance.ts b/packages/reacord/src/embed.tsx similarity index 59% rename from packages/reacord/src/renderer/embed-instance.ts rename to packages/reacord/src/embed.tsx index e4cb6b8..bae5652 100644 --- a/packages/reacord/src/renderer/embed-instance.ts +++ b/packages/reacord/src/embed.tsx @@ -3,10 +3,24 @@ import type { MessageEmbedOptions, MessageOptions, } from "discord.js" +import type { ReactNode } from "react" +import React from "react" import { ContainerInstance } from "./container-instance.js" -/** Represents an element */ -export class EmbedInstance extends ContainerInstance { +export type EmbedProps = { + color?: ColorResolvable + children?: ReactNode +} + +export function Embed(props: EmbedProps) { + return ( + new EmbedInstance(props.color)}> + {props.children} + + ) +} + +class EmbedInstance extends ContainerInstance { readonly name = "Embed" constructor(readonly color?: ColorResolvable) { diff --git a/packages/reacord/src/jsx.d.ts b/packages/reacord/src/jsx.d.ts new file mode 100644 index 0000000..eb41a3b --- /dev/null +++ b/packages/reacord/src/jsx.d.ts @@ -0,0 +1,11 @@ +declare namespace JSX { + import type { ReactNode } from "react" + + // eslint-disable-next-line @typescript-eslint/consistent-type-definitions + interface IntrinsicElements { + "reacord-element": { + createInstance: () => unknown + children?: ReactNode + } + } +} diff --git a/packages/reacord/src/main.ts b/packages/reacord/src/main.ts index d988b26..67e81d1 100644 --- a/packages/reacord/src/main.ts +++ b/packages/reacord/src/main.ts @@ -1,3 +1,3 @@ -export * from "./components/embed.js" -export * from "./components/text.js" -export * from "./renderer/root.js" +export * from "./embed.js" +export * from "./root.js" +export * from "./text.js" diff --git a/packages/reacord/src/renderer/reconciler.ts b/packages/reacord/src/reconciler.ts similarity index 100% rename from packages/reacord/src/renderer/reconciler.ts rename to packages/reacord/src/reconciler.ts diff --git a/packages/reacord/src/renderer/elements.d.ts b/packages/reacord/src/renderer/elements.d.ts deleted file mode 100644 index 55e0a3f..0000000 --- a/packages/reacord/src/renderer/elements.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type ReacordElementTag = "reacord-element" - -export type ReacordElementProps = { - createInstance: () => unknown -} - -declare global { - namespace JSX { - // eslint-disable-next-line @typescript-eslint/consistent-type-definitions - interface IntrinsicElements - extends Record {} - } -} diff --git a/packages/reacord/src/renderer/root.ts b/packages/reacord/src/root.ts similarity index 100% rename from packages/reacord/src/renderer/root.ts rename to packages/reacord/src/root.ts diff --git a/packages/reacord/src/renderer/text-instance.ts b/packages/reacord/src/text-instance.ts similarity index 100% rename from packages/reacord/src/renderer/text-instance.ts rename to packages/reacord/src/text-instance.ts diff --git a/packages/reacord/src/renderer/text-element-instance.ts b/packages/reacord/src/text.tsx similarity index 52% rename from packages/reacord/src/renderer/text-element-instance.ts rename to packages/reacord/src/text.tsx index 4d0a777..af28a78 100644 --- a/packages/reacord/src/renderer/text-element-instance.ts +++ b/packages/reacord/src/text.tsx @@ -1,8 +1,21 @@ import type { MessageOptions } from "discord.js" +import type { ReactNode } from "react" +import React from "react" import { ContainerInstance } from "./container-instance.js" -/** Represents a element */ -export class TextElementInstance extends ContainerInstance { +export type TextProps = { + children?: ReactNode +} + +export function Text(props: TextProps) { + return ( + new TextElementInstance()}> + {props.children} + + ) +} + +class TextElementInstance extends ContainerInstance { readonly name = "Text" constructor() {