@rbxts/app-forge 0.7.2-alpha.9 → 0.7.2-prototype.2

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.
Files changed (54) hide show
  1. package/README.md +86 -372
  2. package/out/{vide/decorator.d.ts → appRegistry.d.ts} +1 -1
  3. package/out/{vide/decorator.luau → appRegistry.luau} +1 -1
  4. package/out/{vide/context.d.ts → context.d.ts} +1 -1
  5. package/out/global.d.ts +1 -1
  6. package/out/{vide/hooks → hooks}/useAppContext.d.ts +1 -1
  7. package/out/{vide/hooks → hooks}/useAppContext.luau +1 -1
  8. package/out/{vide/hooks → hooks}/useEventListener.luau +1 -1
  9. package/out/{vide/hooks → hooks}/usePx.luau +2 -2
  10. package/out/index.d.ts +5 -11
  11. package/out/init.luau +6 -14
  12. package/out/{vide/index.d.ts → mount.d.ts} +8 -8
  13. package/out/{vide/init.luau → mount.luau} +57 -109
  14. package/out/renderManager.d.ts +7 -0
  15. package/out/renderManager.luau +36 -0
  16. package/out/{vide/classes/rules → ruleEngine}/exclusiveGroup.d.ts +1 -1
  17. package/out/{vide/classes/rules → ruleEngine}/exclusiveGroup.luau +1 -1
  18. package/out/ruleEngine/index.d.ts +7 -0
  19. package/out/{vide/classes/rules → ruleEngine}/init.luau +14 -12
  20. package/out/{react/rules → ruleEngine}/parent.d.ts +1 -1
  21. package/out/{vide/classes/rules → ruleEngine}/parent.luau +1 -1
  22. package/out/{vide/types.d.ts → types.d.ts} +13 -13
  23. package/package.json +4 -10
  24. package/out/react/container.d.ts +0 -10
  25. package/out/react/container.luau +0 -60
  26. package/out/react/context.d.ts +0 -7
  27. package/out/react/context.luau +0 -12
  28. package/out/react/decorator.d.ts +0 -14
  29. package/out/react/decorator.luau +0 -51
  30. package/out/react/helpers.d.ts +0 -6
  31. package/out/react/helpers.luau +0 -74
  32. package/out/react/hooks/useAppContext.d.ts +0 -5
  33. package/out/react/hooks/useAppContext.luau +0 -16
  34. package/out/react/hooks/usePx.d.ts +0 -15
  35. package/out/react/hooks/usePx.luau +0 -117
  36. package/out/react/index.d.ts +0 -44
  37. package/out/react/init.luau +0 -123
  38. package/out/react/rules/index.d.ts +0 -6
  39. package/out/react/rules/init.luau +0 -27
  40. package/out/react/rules/parent.luau +0 -42
  41. package/out/react/types.d.ts +0 -44
  42. package/out/vide/classes/renders.d.ts +0 -25
  43. package/out/vide/classes/renders.luau +0 -255
  44. package/out/vide/classes/rules/index.d.ts +0 -7
  45. package/out/vide/classes/rules/parent.d.ts +0 -2
  46. package/out/vide/debug/index.d.ts +0 -3
  47. package/out/vide/debug/init.luau +0 -8
  48. /package/out/{vide/context.luau → context.luau} +0 -0
  49. /package/out/{vide/debug/debugger.d.ts → debugger.d.ts} +0 -0
  50. /package/out/{vide/debug/debugger.luau → debugger.luau} +0 -0
  51. /package/out/{vide/hooks → hooks}/useEventListener.d.ts +0 -0
  52. /package/out/{vide/hooks → hooks}/usePx.d.ts +0 -0
  53. /package/out/{vide/debug/logger.d.ts → logger.d.ts} +0 -0
  54. /package/out/{vide/debug/logger.luau → logger.luau} +0 -0
package/README.md CHANGED
@@ -1,238 +1,124 @@
1
1
  # AppForge
2
2
 
3
- > ⚠️ **Documentation Notice**
4
- >
5
- > This README was written with the assistance of **AI tooling**.
6
- > I do not currently have the time to write a fully hand-crafted documentation site, so there may be typos, rough wording, or missing explanations.
7
- >
8
- > If you find an issue, inconsistency, or bug in the docs or API, please **@ me on Discord** in the **roblox-ts Discord**: `@loner71x`.
9
- >
10
- > Thank you for your patience ❤️
3
+ > ⚠️ **Documentation Notice**
4
+ > Written with AI assistance. Please report any issues in [GitHub Issues](https://github.com/Loner1536/AppForge/issues) or on Discord: `@loner71x`.
11
5
 
12
- > **An App Manager for Vide**
13
-
14
- AppForge is a **declarative UI application manager** built on top of [Vide](https://github.com/centau/vide) for **roblox-ts**. It provides a structured way to register, mount, show/hide, group, and coordinate UI "apps" using rules instead of ad‑hoc state wiring.
15
-
16
- If you’ve ever ended up with tangled UI state, duplicated visibility logic, or brittle parent/child UI dependencies — AppForge is meant to solve that without forcing you into complex patterns.
6
+ **AppForge** is a **declarative UI application manager** for [Vide](https://github.com/centau/vide) in **roblox-ts**. It allows you to structure, mount, and control UI “apps” with centralized visibility, parent-child relationships, exclusive groups, and ZIndex rules — without tangled state.
17
7
 
18
8
  ---
19
9
 
20
10
  ## ✨ Features
21
11
 
22
- * **App-based UI architecture**
23
- * **Centralized visibility state** per app
24
- * **Rule system** (parent/child, exclusive groups, z-index)
25
- * **Render groups** for selective mounting
26
- * **px scaling** built-in via `loners-pretty-vide-utils`
27
- * **Vide context integration**
28
- * **Story / sandbox rendering**
29
- * Fully typed with **roblox-ts**
12
+ - **App-based UI architecture**: self-contained UI units
13
+ - **Centralized visibility** per app
14
+ - **Rules system**: parent/child, exclusive groups, ZIndex
15
+ - **Render groups** for selective mounting
16
+ - **Built-in debug logger & performance tracing**
17
+ - **Fully typed with roblox-ts**
30
18
 
31
19
  ---
32
20
 
33
21
  ## 📦 Installation
34
22
 
35
- ### Using **bun**
36
-
37
- ```bash
38
- bun add @rbxts/app-forge
39
- ```
40
-
41
- Peer dependencies (choose one renderer):
42
-
43
- ```bash
44
- bun add @rbxts/vide
45
- # or
46
- bun add @rbxts/react
47
- ```
48
-
49
- ---
50
-
51
- ### Using **npm**
52
-
53
23
  ```bash
54
24
  npm install @rbxts/app-forge
55
- ```
56
-
57
- Peer dependencies (choose one renderer):
58
-
59
- ```bash
60
25
  npm install @rbxts/vide
61
- # or
62
- npm install @rbxts/react
63
- ```
64
-
65
- ---
66
-
67
- ## 🧠 Core Concepts
68
-
69
- ### App
70
-
71
- An **App** is a self-contained UI unit:
72
-
73
- * owns its own visibility source
74
- * renders a Vide tree
75
- * can depend on other apps via rules
76
-
77
- Apps are registered using a decorator and rendered through `AppForge`.
78
-
79
- ---
80
-
81
- ### Forge
82
-
83
- `AppForge` is the runtime manager. It:
84
-
85
- * owns all app visibility sources
86
- * mounts and unmounts UI
87
- * enforces rules
88
- * exposes imperative helpers (`open`, `close`, `toggle`)
89
-
90
- You usually create **one Forge per UI root**.
91
-
92
- ---
93
-
94
- ### Rules
95
26
 
96
- Rules define **relationships between apps**, not layout.
27
+ Or using Bun:
97
28
 
98
- Currently supported:
99
-
100
- | Rule | Description |
101
- | ---------------- | -------------------------------------- |
102
- | `parent` | Child app closes when parent closes |
103
- | `detach` | Prevents automatic anchoring to parent |
104
- | `exclusiveGroup` | Only one app in the group may be open |
105
- | `index` | Sets ZIndex of the app container |
106
-
107
- Rules are enforced automatically whenever visibility changes.
108
-
109
- ---
110
-
111
- ### Render Groups
112
-
113
- Render groups let you **selectively mount apps**.
114
-
115
- Example use cases:
116
-
117
- * Lobby UI vs In‑Game UI
118
- * HUD vs Menus
119
- * Feature‑flagged UI
29
+ bun add @rbxts/app-forge
30
+ bun add @rbxts/vide
120
31
 
121
- ---
32
+ 🧠 Core Concepts
33
+ App
122
34
 
123
- ## 🧩 Basic Usage
35
+ An App is a self-contained UI unit:
124
36
 
125
- ### Creating a Forge
37
+ Owns its visibility source
126
38
 
127
- ```ts
128
- const forge = new CreateVideForge();
129
- ```
39
+ Renders a Vide tree
130
40
 
131
- > `CreateVideForge` owns its internal state. You **do not pass the forge into itself** — it is only provided to Apps at render-time.
41
+ Can have rules: parent/child, exclusive groups, ZIndex
132
42
 
133
- ---
43
+ Apps are defined using the @App decorator and must extend Args.
44
+ Forge
134
45
 
135
- ### Mounting (Game Runtime)
46
+ AppForge is the runtime manager:
136
47
 
137
- AppForge is mounted once from application bootstrap code (commonly a Flamework controller).
48
+ Holds all visibility sources
138
49
 
139
- ```ts
140
- const forge = new CreateVideForge();
50
+ Mounts/unmounts apps in the UI
141
51
 
142
- forge.mount(
143
- () => (
144
- <screengui
145
- Name="App"
146
- ZIndexBehavior="Sibling"
147
- ResetOnSpawn={false}
148
- />
149
- ),
150
- props,
151
- Players.LocalPlayer.WaitForChild("PlayerGui"),
152
- );
153
- ```
52
+ Applies rules automatically
154
53
 
155
- Notes:
54
+ Exposes imperative helpers: open, close, toggle
156
55
 
157
- * `forge` is **implicitly available** to Apps
158
- * `props` are user-defined and become `this.props` inside Apps
159
- * visibility & rules are controlled entirely by the Forge
56
+ Owns debugger & logger
160
57
 
161
- ---
58
+ One Forge per UI root is recommended.
59
+ Rules
60
+ Rule Description
61
+ parent Child app closes automatically when parent closes
62
+ detach Prevents automatic anchoring to parent
63
+ exclusiveGroup Only one app in the group may be open
64
+ index Sets ZIndex of the app container
162
65
 
163
- ### Mounting (Game Runtime)
66
+ Rules are reactively enforced when visibility changes.
67
+ Render Groups
164
68
 
165
- AppForge is typically mounted from a **controller** (e.g. Flamework) and targets `PlayerGui`.
69
+ Render groups let you mount selective apps:
166
70
 
167
- ```ts
168
- const forge = new CreateVideForge();
71
+ Example: Lobby UI vs In-Game UI
169
72
 
170
- forge.mount(
171
- () => (
172
- <screengui
173
- Name="App"
174
- ZIndexBehavior="Sibling"
175
- ResetOnSpawn={false}
176
- />
177
- ),
178
- props,
179
- Players.LocalPlayer.WaitForChild("PlayerGui"),
180
- );
181
- ```
73
+ Example: HUD vs Menus
182
74
 
183
- This:
75
+ Apps can be rendered by group, name, or multiple names using the Forge’s internal rendering methods.
76
+ 🧩 Basic Usage
77
+ Creating a Forge
184
78
 
185
- * creates a single root `ScreenGui`
186
- * mounts all rendered apps under it
187
- * keeps AppForge in control of visibility & rules
79
+ import { CreateForge } from "@rbxts/app-forge";
188
80
 
189
- ---
81
+ const forge = new CreateForge();
190
82
 
191
- ### Mounting
83
+ Mounting to the PlayerGui
192
84
 
193
- ```ts
194
85
  forge.mount(
195
- () => <screengui ResetOnSpawn={false} />,
196
- props,
197
- playerGui,
86
+ <screengui
87
+ Name="AppRoot"
88
+ ZIndexBehavior="Sibling"
89
+ ResetOnSpawn={false}
90
+ />,
91
+ { props: {}, forge },
92
+ Players.LocalPlayer.WaitForChild("PlayerGui")
198
93
  );
199
- ```
200
94
 
201
- ---
95
+ ⚠️ Note: You pass the root node directly, not a function.
202
96
 
203
- ### Opening & Closing Apps
97
+ Controlling Apps
204
98
 
205
- ```ts
206
99
  forge.open("Inventory");
207
100
  forge.close("Inventory");
208
101
  forge.toggle("Inventory");
209
- ```
210
102
 
211
- You can also access the reactive source directly:
103
+ open(name): Shows the app
212
104
 
213
- ```ts
214
- const visible = forge.getSource("Inventory");
215
- ```
105
+ close(name): Hides the app
216
106
 
217
- ---
107
+ toggle(name): Toggles visibility
218
108
 
219
- ## 🧱 Defining an App
109
+ Defining an App
220
110
 
221
- ```ts
222
- import { VideApp, VideArgs } from "@rbxts/app-forge";
223
- import Vide from "@rbxts/vide";
111
+ import { App, Args } from "@rbxts/app-forge";
224
112
 
225
- @VideApp({
113
+ @App({
226
114
  name: "Inventory",
227
115
  renderGroup: "Lobby",
228
116
  visible: false,
229
- rules: {
230
- index: 2,
231
- },
117
+ rules: { zIndex: 2 },
232
118
  })
233
- export class Inventory extends VideArgs {
119
+ export class Inventory extends Args {
234
120
  render() {
235
- const { px } = this.props;
121
+ const { px } = this.props; // px comes from the Forge
236
122
 
237
123
  return (
238
124
  <frame
@@ -242,175 +128,28 @@ export class Inventory extends VideArgs {
242
128
  );
243
129
  }
244
130
  }
245
- ```
246
131
 
247
- ---
248
-
249
- ## 🔗 Parent / Child Apps
250
-
251
- ```ts
252
- @VideApp({
253
- name: "InventoryInfo",
254
- renderGroup: "Lobby",
255
- rules: {
256
- parent: "Inventory",
257
- },
258
- })
259
- export class InventoryInfo extends VideArgs {
260
- render() {
261
- return <frame />;
262
- }
263
- }
264
- ```
132
+ @App registers the app with the Forge
265
133
 
266
- Behavior:
134
+ px provides scaling helpers automatically
267
135
 
268
- * When `Inventory` closes `InventoryInfo` closes
269
- * Child is **anchored** to parent unless `detach: true`
136
+ rules define relationships (parent, exclusive group, ZIndex)
270
137
 
271
- ```ts
272
- rules: {
273
- parent: "Inventory",
274
- detach: true,
275
- }
276
- ```
138
+ 🐞 Debugging
277
139
 
278
- ---
140
+ AppForge provides Studio-only debug logging:
279
141
 
280
- ## 🚦 Exclusive Groups
142
+ forge.debug.enable("render");
143
+ forge.debug.enable("rules");
144
+ forge.debug.enableAll(); // everything
145
+ forge.debug.disable("render");
281
146
 
282
- ```ts
283
- @VideApp({
284
- name: "Settings",
285
- rules: {
286
- exclusiveGroup: "Menus",
287
- },
288
- })
289
- ```
147
+ Performance tracing example:
290
148
 
291
- Only one app in the same `exclusiveGroup` may be open at a time.
149
+ [PERF][render][Inventory] 1.243ms
292
150
 
293
- ---
151
+ 🧱 Architecture Overview
294
152
 
295
- ## 🎭 Render Control
296
-
297
- AppForge supports **multiple render selection modes**. You can render by:
298
-
299
- * a single app name
300
- * multiple app names
301
- * one or more render groups
302
- * combinations of `group + name(s)`
303
-
304
- All render options are passed via `VideRenderProps`.
305
-
306
- ---
307
-
308
- ### Render a single app
309
-
310
- ```ts
311
- render: { name: "Inventory" }
312
- ```
313
-
314
- ---
315
-
316
- ### Render multiple apps
317
-
318
- ```ts
319
- render: { names: ["Inventory", "InventoryInfo"] }
320
- ```
321
-
322
- ---
323
-
324
- ### Render by group
325
-
326
- ```ts
327
- render: { group: "Lobby" }
328
- ```
329
-
330
- ---
331
-
332
- ### Render by group + name
333
-
334
- ```ts
335
- render: {
336
- group: "Lobby",
337
- name: "Inventory",
338
- }
339
- ```
340
-
341
- Only renders `Inventory` **if** it belongs to the `Lobby` group.
342
-
343
- ---
344
-
345
- ### Render by group + names
346
-
347
- ```ts
348
- render: {
349
- group: "Lobby",
350
- names: ["Inventory", "Settings"],
351
- }
352
- ```
353
-
354
- Only renders apps that:
355
-
356
- * are in the specified group(s)
357
- * and whose names match the provided list
358
-
359
- ---
360
-
361
- ## 🧪 Story / Sandbox Rendering
362
-
363
- AppForge provides `forge.story` for **isolated rendering**, commonly used with **UI Labs**.
364
-
365
- ```ts
366
- const forge = new CreateVideForge();
367
-
368
- return forge.story({
369
- props,
370
- config: {
371
- px: {
372
- target: storyProps.target,
373
- },
374
- },
375
- render: { group: "Lobby" },
376
- });
377
- ```
378
-
379
- This is ideal for:
380
-
381
- * component stories
382
- * previews
383
- * controlled visibility via bindings
384
-
385
- ---
386
-
387
- ## 🧠 Context Access Inside Apps
388
-
389
- App props are provided via Vide context.
390
-
391
- ```ts
392
- import { Provider } from "@rbxts/vide";
393
- import { VideContexts } from "@rbxts/app-forge";
394
-
395
- <Provider context={VideContexts.App} value={this.props}>
396
- {() => <Child />}
397
- </Provider>
398
- ```
399
-
400
- Or via hook:
401
-
402
- ````ts
403
- ```ts
404
- import { useVideAppContext } from "@rbxts/app-forge";
405
-
406
- const app = useVideAppContext();
407
- ````
408
-
409
- ---
410
-
411
- ## 🧱 Architecture Overview
412
-
413
- ```
414
153
  AppForge
415
154
  ├─ AppRegistry (static)
416
155
  ├─ Visibility Sources
@@ -418,52 +157,27 @@ AppForge
418
157
  ├─ Rule Engine
419
158
  │ ├─ Parent Rule
420
159
  │ └─ Exclusive Group Rule
160
+ ├─ Debugger / Logger
421
161
  └─ Vide Mount
422
- ```
423
-
424
- ---
425
162
 
426
- ## ⚠️ Notes
163
+ ⚠️ Notes
427
164
 
428
- * Apps are **singletons per Forge**
429
- * Rendering twice will warn if px is re‑initialized
430
- * Rules are enforced **reactively**
431
- * This package is currently **alpha** — APIs may change
165
+ Apps are singletons per Forge
432
166
 
433
- ---
434
-
435
- ## 🛣 Roadmap
167
+ Rendering twice warns if px is re-initialized
436
168
 
437
- * [ ] Transition animations API
438
- * [ ] Async app loading
439
- * [ ] Better dev warnings
440
- * [ ] Debug inspector
441
-
442
- ---
169
+ Rules are reactive
443
170
 
444
- ## ⚛️ React Support (Planned)
171
+ Debug logging only runs in Studio
445
172
 
446
- AppForge is designed as a **renderer-agnostic App Manager**.b
173
+ API is alpha may change
447
174
 
448
- Currently:
175
+ 🛣 Roadmap
449
176
 
450
- * **Vide renderer** is production-ready
451
- * 🚧 **React renderer** exists but is **very early / experimental**
177
+ Better developer warnings
452
178
 
453
- React support is intentionally paused while the Vide API stabilizes. The author is still learning React, and decided to refocus on Vide first. React will be revisited once the core architecture is fully locked in.
179
+ Debug inspector
454
180
 
455
- Public surface (subject to change):
181
+ 📜 License
456
182
 
457
- ```ts
458
- import { ReactApp, ReactArgs, CreateReactForge } from "@rbxts/app-forge";
459
- ```
460
-
461
- **Vide is the recommended and supported path today.**
462
-
463
- ---
464
-
465
- ## 📜 License
466
-
467
- MIT
468
-
469
- ---
183
+ MIT
@@ -1,6 +1,6 @@
1
1
  import Vide from "@rbxts/vide";
2
2
  import type Types from "./types";
3
- import type AppForge from ".";
3
+ import type AppForge from "./mount";
4
4
  export declare const AppRegistry: Map<string, Types.AppRegistry.Static>;
5
5
  /**
6
6
  * Registers a Vide App with AppForge.
@@ -5,7 +5,7 @@ local TS = _G[script]
5
5
  -- Hooks
6
6
  local px = TS.import(script, script.Parent, "hooks", "usePx").px
7
7
  -- Debug
8
- local Logger = TS.import(script, script.Parent, "debug", "logger").default
8
+ local Logger = TS.import(script, script.Parent, "logger").default
9
9
  local logger = Logger.new("AppRegistry")
10
10
  local AppRegistry = {}
11
11
  --[[
@@ -1,6 +1,6 @@
1
1
  declare const Contexts: {
2
2
  readonly App: import("@rbxts/vide").Context<{
3
- forge: import(".").default;
3
+ forge: import("./mount").default;
4
4
  px: typeof import("./hooks/usePx").px;
5
5
  } | undefined>;
6
6
  };
package/out/global.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  declare global {
2
2
  // These will be overridden by the user
3
3
  // They are only placeholders for your build
4
- type GroupNames = string;
4
+ type AppGroups = string;
5
5
  type AppNames = string;
6
6
  type AppProps = {};
7
7
  }
@@ -1,5 +1,5 @@
1
1
  declare const _default: () => {
2
- forge: import("..").default;
2
+ forge: import("..").CreateForge;
3
3
  px: typeof import("./usePx").px;
4
4
  };
5
5
  export default _default;
@@ -3,7 +3,7 @@ local TS = _G[script]
3
3
  -- Components
4
4
  local Contexts = TS.import(script, script.Parent.Parent, "context").default
5
5
  -- Debug
6
- local Logger = TS.import(script, script.Parent.Parent, "debug", "logger").default
6
+ local Logger = TS.import(script, script.Parent.Parent, "logger").default
7
7
  local logger = Logger.new("useAppContext")
8
8
  local default = function()
9
9
  local context = Contexts.App()
@@ -2,7 +2,7 @@
2
2
  local TS = _G[script]
3
3
  local cleanup = TS.import(script, TS.getModule(script, "@rbxts", "vide").src).cleanup
4
4
  -- Debug
5
- local Logger = TS.import(script, script.Parent.Parent, "debug", "logger").default
5
+ local Logger = TS.import(script, script.Parent.Parent, "logger").default
6
6
  local logger = Logger.new("useEventListener")
7
7
  local connect = function(event, callback)
8
8
  local _event = event
@@ -7,7 +7,7 @@ local source = TS.import(script, TS.getModule(script, "@rbxts", "vide").src).sou
7
7
  -- Helpers
8
8
  local useEventListener = TS.import(script, script.Parent, "useEventListener").useEventListener
9
9
  -- Debug
10
- local Logger = TS.import(script, script.Parent.Parent, "debug", "logger").default
10
+ local Logger = TS.import(script, script.Parent.Parent, "logger").default
11
11
  local logger = Logger.new("usePx")
12
12
  --* Default reference resolution for px calculations
13
13
  local BASE_RESOLUTION = source(Vector2.new(1920, 1080))
@@ -77,7 +77,7 @@ local function usePx(target, baseResolution, minScale)
77
77
  if baseResolution then
78
78
  BASE_RESOLUTION(baseResolution)
79
79
  end
80
- if minScale ~= nil then
80
+ if minScale ~= 0 and minScale == minScale and minScale then
81
81
  MIN_SCALE(minScale)
82
82
  end
83
83
  if target then
package/out/index.d.ts CHANGED
@@ -1,11 +1,5 @@
1
- export { App as ReactApp, Args as ReactArgs } from "./react/decorator";
2
- export { App as VideApp, Args as VideArgs } from "./vide/decorator";
3
- export { default as CreateReactForge } from "./react";
4
- export { default as CreateVideForge } from "./vide";
5
- export { Render as RenderReact } from "./react/helpers";
6
- export type { MainProps as VideProps, ClassProps as VideClassProps, RenderProps as VideRenderProps, } from "./vide/types";
7
- export type { MainProps as ReactProps, ClassProps as ReactClassProps, } from "./react/types";
8
- export { default as useReactAppContext } from "./react/hooks/useAppContext";
9
- export { default as ReactContexts } from "./react/context";
10
- export { default as useVideAppContext } from "./vide/hooks/useAppContext";
11
- export { default as VideContexts } from "./vide/context";
1
+ export { App, Args } from "./appRegistry";
2
+ export { default as CreateForge } from "./mount";
3
+ export type { ForgeProps, ClassProps, RenderProps, } from "./types";
4
+ export { default as useAppContext } from "./hooks/useAppContext";
5
+ export { default as Contexts } from "./context";
package/out/init.luau CHANGED
@@ -2,20 +2,12 @@
2
2
  local TS = _G[script]
3
3
  local exports = {}
4
4
  -- Decorators
5
- local _decorator = TS.import(script, script, "react", "decorator")
6
- exports.ReactApp = _decorator.App
7
- exports.ReactArgs = _decorator.Args
8
- local _decorator_1 = TS.import(script, script, "vide", "decorator")
9
- exports.VideApp = _decorator_1.App
10
- exports.VideArgs = _decorator_1.Args
5
+ local _appRegistry = TS.import(script, script, "appRegistry")
6
+ exports.App = _appRegistry.App
7
+ exports.Args = _appRegistry.Args
11
8
  -- Creators
12
- exports.CreateReactForge = TS.import(script, script, "react").default
13
- exports.CreateVideForge = TS.import(script, script, "vide").default
14
- -- Helpers
15
- exports.RenderReact = TS.import(script, script, "react", "helpers").Render
9
+ exports.CreateForge = TS.import(script, script, "mount").default
16
10
  -- Types
17
- exports.useReactAppContext = TS.import(script, script, "react", "hooks", "useAppContext").default
18
- exports.ReactContexts = TS.import(script, script, "react", "context").default
19
- exports.useVideAppContext = TS.import(script, script, "vide", "hooks", "useAppContext").default
20
- exports.VideContexts = TS.import(script, script, "vide", "context").default
11
+ exports.useAppContext = TS.import(script, script, "hooks", "useAppContext").default
12
+ exports.Contexts = TS.import(script, script, "context").default
21
13
  return exports