@boba-cli/dsl 1.0.0-alpha.2 → 1.0.0-alpha.4
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/README.md +12 -12
- package/dist/index.cjs +8 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @boba-cli/dsl
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The main API for building Boba CLI applications.** A declarative DSL for building terminal UIs with minimal ceremony using a fluent builder API and view primitives inspired by SwiftUI.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -31,19 +31,19 @@ const app = createApp()
|
|
|
31
31
|
await app.run()
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
## Why DSL?
|
|
34
|
+
## Why the DSL?
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
The DSL is the recommended way to build Boba CLI applications. For advanced use cases requiring fine-grained control, you can use the [low-level Elm Architecture API](../tea/README.md) directly.
|
|
37
37
|
|
|
38
|
-
| Aspect |
|
|
39
|
-
|
|
40
|
-
| Lines of code | ~
|
|
41
|
-
| Boilerplate | Manual class, state management, `instanceof` checks |
|
|
42
|
-
| Type safety |
|
|
43
|
-
| View composition |
|
|
44
|
-
| Component integration | Manual model wrapping and message routing |
|
|
38
|
+
| Aspect | DSL (Main API) | Low-Level TEA |
|
|
39
|
+
|--------|----------------|---------------|
|
|
40
|
+
| Lines of code | ~35 lines | ~147 lines |
|
|
41
|
+
| Boilerplate | Declarative builder, automatic state handling | Manual class, state management, `instanceof` checks |
|
|
42
|
+
| Type safety | Phantom types provide compile-time safety | Manual type guards, verbose generics |
|
|
43
|
+
| View composition | Composable view primitives | String concatenation |
|
|
44
|
+
| Component integration | Automatic component lifecycle management | Manual model wrapping and message routing |
|
|
45
45
|
|
|
46
|
-
See [examples/spinner
|
|
46
|
+
See [examples/spinner](../../examples/src/spinner) (DSL) vs [examples/spinner-low-level](../../examples/src/spinner-low-level) (low-level) for a real comparison.
|
|
47
47
|
|
|
48
48
|
## API Reference
|
|
49
49
|
|
|
@@ -646,7 +646,7 @@ createApp()
|
|
|
646
646
|
|
|
647
647
|
## Advanced Usage
|
|
648
648
|
|
|
649
|
-
### Accessing the
|
|
649
|
+
### Accessing the Low-Level TEA Model
|
|
650
650
|
|
|
651
651
|
For advanced use cases, you can access the generated TEA model:
|
|
652
652
|
|
package/dist/index.cjs
CHANGED
|
@@ -1117,6 +1117,14 @@ Object.defineProperty(exports, "Style", {
|
|
|
1117
1117
|
enumerable: true,
|
|
1118
1118
|
get: function () { return chapstick.Style; }
|
|
1119
1119
|
});
|
|
1120
|
+
Object.defineProperty(exports, "DefaultItem", {
|
|
1121
|
+
enumerable: true,
|
|
1122
|
+
get: function () { return list$1.DefaultItem; }
|
|
1123
|
+
});
|
|
1124
|
+
Object.defineProperty(exports, "ListModel", {
|
|
1125
|
+
enumerable: true,
|
|
1126
|
+
get: function () { return list$1.ListModel; }
|
|
1127
|
+
});
|
|
1120
1128
|
Object.defineProperty(exports, "dot", {
|
|
1121
1129
|
enumerable: true,
|
|
1122
1130
|
get: function () { return spinner$1.dot; }
|