jaml-ui 2.5.1 → 3.0.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.
- package/README.md +38 -225
- package/dist/chunks/Layer-B5y9UIAt.js +19 -0
- package/dist/chunks/Layer-B5y9UIAt.js.map +1 -0
- package/dist/chunks/motelySprite-BYsaes3N.js +753 -0
- package/dist/chunks/motelySprite-BYsaes3N.js.map +1 -0
- package/dist/chunks/spriteMapper-BiDkbZrD.js +480 -0
- package/dist/chunks/spriteMapper-BiDkbZrD.js.map +1 -0
- package/dist/components/DeckSprite.d.ts +1 -1
- package/dist/components/GameCard.d.ts +5 -4
- package/dist/components/JamlyzerView.d.ts +9 -0
- package/dist/components/StandardCard.d.ts +4 -3
- package/dist/core.d.ts +0 -1
- package/dist/core.js +38 -26
- package/dist/core.js.map +1 -1
- package/dist/decode/motelyItemDecoder.d.ts +5 -0
- package/dist/index.d.ts +5 -28
- package/dist/index.js +3180 -27606
- package/dist/index.js.map +1 -1
- package/dist/json-render/catalog.d.ts +26 -1
- package/dist/json-render/components/domain.d.ts +8 -8
- package/dist/json-render/components/game.d.ts +3 -7
- package/dist/json-render/components/jammySeedMascotImage.d.ts +1 -0
- package/dist/json-render/components/layout.d.ts +2 -1
- package/dist/json-render/components/mascot.d.ts +22 -0
- package/dist/json-render/components/reference.d.ts +7 -7
- package/dist/json-render/engine.d.ts +4 -4
- package/dist/json-render/index.d.ts +2 -0
- package/dist/motely.d.ts +2 -5
- package/dist/motely.js +22 -173
- package/dist/motely.js.map +1 -1
- package/dist/render/CanvasRenderer.d.ts +2 -1
- package/dist/render/useJamlCardRenderer.d.ts +15 -0
- package/dist/ui/jimbo.css +1 -2
- package/dist/ui.d.ts +0 -39
- package/dist/ui.js +58 -3
- package/dist/ui.js.map +1 -0
- package/package.json +13 -53
- package/dist/assets/searchPoolWorker-DA5uFkl3.js +0 -2
- package/dist/assets/searchPoolWorker-DA5uFkl3.js.map +0 -1
- package/dist/chunks/jamlSeeds-CRthre97.js +0 -69
- package/dist/chunks/jamlSeeds-CRthre97.js.map +0 -1
- package/dist/chunks/runtime-D7eHq1kP.js +0 -2060
- package/dist/chunks/runtime-D7eHq1kP.js.map +0 -1
- package/dist/chunks/searchPoolWorker-649yzf3l.js +0 -11
- package/dist/chunks/searchPoolWorker-649yzf3l.js.map +0 -1
- package/dist/chunks/spriteMapper-BqG15k6f.js +0 -2496
- package/dist/chunks/spriteMapper-BqG15k6f.js.map +0 -1
- package/dist/chunks/ui-DwggmAYr.js +0 -3399
- package/dist/chunks/ui-DwggmAYr.js.map +0 -1
- package/dist/components/CardFan.d.ts +0 -13
- package/dist/components/JamlAestheticSelector.d.ts +0 -12
- package/dist/components/JamlCodeEditor.d.ts +0 -7
- package/dist/components/JamlCurator.d.ts +0 -1
- package/dist/components/JamlIde.d.ts +0 -44
- package/dist/components/JamlIdeToolbar.d.ts +0 -14
- package/dist/components/JamlIdeVisual.d.ts +0 -30
- package/dist/components/JamlMapPreview.d.ts +0 -11
- package/dist/components/JamlSeedInput.d.ts +0 -24
- package/dist/components/JamlSeedSpinner.d.ts +0 -9
- package/dist/components/JamlSpeedometer.d.ts +0 -16
- package/dist/components/Jamlyzer.d.ts +0 -8
- package/dist/components/JimmolateEditor.d.ts +0 -47
- package/dist/components/MotelyHello.d.ts +0 -5
- package/dist/components/MotelyVersionBadge.d.ts +0 -28
- package/dist/components/PaginatedFilterBrowser.d.ts +0 -26
- package/dist/components/RunConfigModal.d.ts +0 -8
- package/dist/components/SeedFinderApp.d.ts +0 -7
- package/dist/components/jamlMap/CategoryPicker.d.ts +0 -32
- package/dist/components/jamlMap/JamlMapEditor.d.ts +0 -14
- package/dist/components/jamlMap/JokerPicker.d.ts +0 -8
- package/dist/components/jamlMap/MysterySlot.d.ts +0 -37
- package/dist/components/jamlMap/index.d.ts +0 -4
- package/dist/components/jamlMap/jokerRarity.d.ts +0 -6
- package/dist/components/jamlSeedUtils.d.ts +0 -1
- package/dist/hooks/searchPoolWorker.d.ts +0 -61
- package/dist/hooks/searchWorker.d.ts +0 -1
- package/dist/hooks/useAnalyzer.d.ts +0 -10
- package/dist/hooks/useIntersectionObserver.d.ts +0 -14
- package/dist/hooks/useJamlLibrary.d.ts +0 -13
- package/dist/hooks/useSearch.d.ts +0 -31
- package/dist/hooks/useSearchPool.d.ts +0 -43
- package/dist/hooks/useShopStream.d.ts +0 -22
- package/dist/lib/SpriteMapper.d.ts +0 -10
- package/dist/lib/cardParser.d.ts +0 -8
- package/dist/lib/classes/BuyMetaData.d.ts +0 -11
- package/dist/lib/config.d.ts +0 -13
- package/dist/lib/const.d.ts +0 -70
- package/dist/lib/data/constants.d.ts +0 -11
- package/dist/lib/hooks/useDragScroll.d.ts +0 -4
- package/dist/lib/hooks/useJamlFilter.d.ts +0 -48
- package/dist/lib/hooks/useSeedAnalyzer.d.ts +0 -5
- package/dist/lib/jaml/jamlCompletion.d.ts +0 -12
- package/dist/lib/jaml/jamlData.d.ts +0 -4
- package/dist/lib/jaml/jamlLangCodemirror.d.ts +0 -13
- package/dist/lib/jaml/jamlObjectives.d.ts +0 -13
- package/dist/lib/jaml/jamlParser.d.ts +0 -14
- package/dist/lib/jaml/jamlPresets.d.ts +0 -8
- package/dist/lib/jaml/jamlSchema.d.ts +0 -19
- package/dist/lib/jaml/jamlSeeds.d.ts +0 -7
- package/dist/lib/motely/runtime.d.ts +0 -40
- package/dist/lib/parseDailyRitual.d.ts +0 -45
- package/dist/lib/tts/getRevealPos.d.ts +0 -5
- package/dist/lib/tts/splitTtsDisplay.d.ts +0 -19
- package/dist/lib/types.d.ts +0 -122
- package/dist/lib/utils.d.ts +0 -2
- package/dist/motelyDisplay.d.ts +0 -10
- package/dist/ui/JimboBadge.d.ts +0 -12
- package/dist/ui/JimboBalatroFooter.d.ts +0 -16
- package/dist/ui/JimboCopyButton.d.ts +0 -27
- package/dist/ui/JimboDeckAndStakeSelectorModal.d.ts +0 -30
- package/dist/ui/JimboDualChip.d.ts +0 -17
- package/dist/ui/JimboIconButton.d.ts +0 -15
- package/dist/ui/JimboInlineEdit.d.ts +0 -16
- package/dist/ui/JimboInputModal.d.ts +0 -13
- package/dist/ui/JimboListItem.d.ts +0 -11
- package/dist/ui/JimboPanelSpinner.d.ts +0 -15
- package/dist/ui/JimboPanelSplitter.d.ts +0 -8
- package/dist/ui/JimboPicker.d.ts +0 -28
- package/dist/ui/JimboSeedCopyChip.d.ts +0 -16
- package/dist/ui/JimboSelect.d.ts +0 -30
- package/dist/ui/JimboSlider.d.ts +0 -11
- package/dist/ui/JimboSpinner.d.ts +0 -18
- package/dist/ui/JimboStepper.d.ts +0 -22
- package/dist/ui/JimboTextInput.d.ts +0 -5
- package/dist/ui/JimboToggleList.d.ts +0 -12
- package/dist/ui/JimboValueBadge.d.ts +0 -19
- package/dist/ui/codeBlock.d.ts +0 -11
- package/dist/ui/hooks.d.ts +0 -126
- package/dist/ui/ide/JamlEditor.d.ts +0 -7
- package/dist/ui/jimboApp.d.ts +0 -9
- package/dist/ui/jimboBackground.d.ts +0 -17
- package/dist/ui/jimboCopyRow.d.ts +0 -9
- package/dist/ui/jimboFilterBar.d.ts +0 -22
- package/dist/ui/jimboFlankNav.d.ts +0 -17
- package/dist/ui/jimboInfoCard.d.ts +0 -31
- package/dist/ui/jimboInset.d.ts +0 -9
- package/dist/ui/jimboLayout.d.ts +0 -25
- package/dist/ui/jimboLink.d.ts +0 -12
- package/dist/ui/jimboSectionHeader.d.ts +0 -11
- package/dist/ui/jimboStatGrid.d.ts +0 -13
- package/dist/ui/jimboTabs.d.ts +0 -21
- package/dist/ui/jimboText.d.ts +0 -25
- package/dist/ui/jimboTooltip.d.ts +0 -33
- package/dist/ui/jimboWordmark.d.ts +0 -10
- package/dist/ui/mascot/JammySpeechBox.d.ts +0 -9
- package/dist/ui/mascot/SeedMascot.d.ts +0 -37
- package/dist/ui/mascot/index.d.ts +0 -3
- package/dist/ui/mascot/menuConfig.d.ts +0 -102
- package/dist/ui/panel.d.ts +0 -32
- package/dist/ui/radial/RadialBadge.d.ts +0 -16
- package/dist/ui/radial/RadialBreadcrumb.d.ts +0 -12
- package/dist/ui/radial/RadialButton.d.ts +0 -60
- package/dist/ui/radial/RadialMenu.d.ts +0 -38
- package/dist/ui/radial/RadialPill.d.ts +0 -17
- package/dist/ui/radial/index.d.ts +0 -16
- package/dist/ui/radial/radialMenuStore.d.ts +0 -31
- package/dist/ui/radial/radialMenuViewport.d.ts +0 -6
- package/dist/ui/radial/useRadialMenu.d.ts +0 -35
- package/dist/ui/showcase.d.ts +0 -38
- package/dist/ui/sprites.d.ts +0 -25
- package/dist/utils/jamlMapPreview.d.ts +0 -12
- package/dist/utils/jamlVisualFilter.d.ts +0 -3
package/README.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# jaml-ui
|
|
2
2
|
|
|
3
|
-
React
|
|
3
|
+
Zero-dependency JSON-to-React engine (`json-render`) + Balatro card sprite rendering for MCP Apps.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## What's inside
|
|
6
|
+
|
|
7
|
+
- **`json-render`** — a tiny, zero-dep JSON-to-React engine in `src/json-render`. A JsonNode tree + a registry = rendered UI. Ships with a Balatro catalog (`Panel`, `Stack`, `Grid`, `SeedCard`, `SearchStats`, `JamlGameCard`, ...).
|
|
8
|
+
- **Balatro card sprites** — canvas-based `JamlGameCard`, `StandardCard`, `DeckSprite`, plus sprite metadata.
|
|
9
|
+
- **MCP App example** — `examples/mcp-seed-finder` is a single-file MCP App that talks to an MCP server and renders search results with `json-render`.
|
|
6
10
|
|
|
7
11
|
## Install
|
|
8
12
|
|
|
@@ -10,252 +14,61 @@ Wraps [motely-wasm](https://www.npmjs.com/package/motely-wasm) — the Bootsharp
|
|
|
10
14
|
npm install jaml-ui motely-wasm react react-dom
|
|
11
15
|
```
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Boot motely-wasm before rendering
|
|
16
|
-
|
|
17
|
-
`motely-wasm` is a Bootsharp module. Boot it once at app startup, before React mounts. Two requirements:
|
|
18
|
-
|
|
19
|
-
1. Top-level `await bootsharp.boot(<bin path>)` in your entry point.
|
|
20
|
-
2. The `motely-wasm/bin/*` files must be served at that path. Copy them into your `public/` (Vite) or wire a static route (Next.js).
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
// src/main.tsx
|
|
24
|
-
import "jaml-ui/jimbo.css"; // already side-effect-imported by jaml-ui; safe either way
|
|
25
|
-
import { createRoot } from "react-dom/client";
|
|
26
|
-
import bootsharp from "motely-wasm";
|
|
27
|
-
import App from "./App";
|
|
28
|
-
|
|
29
|
-
await bootsharp.boot("/motely-wasm/bin");
|
|
30
|
-
createRoot(document.getElementById("root")!).render(<App />);
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Vite serves `/motely-wasm/bin` if you copy `node_modules/motely-wasm/bin` into `public/motely-wasm/bin/`. See `examples/seed-finder` for a working setup.
|
|
17
|
+
`motely-wasm` is a peer dependency — boot it once before rendering.
|
|
34
18
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
## Quick start — a real seed finder in ~30 lines
|
|
19
|
+
## Quick start — render JSON UI
|
|
38
20
|
|
|
39
21
|
```tsx
|
|
40
|
-
import {
|
|
41
|
-
import { JamlIde, useSearch, type JamlIdeSearchResult } from "jaml-ui";
|
|
22
|
+
import { render, balatroRegistry } from "jaml-ui";
|
|
42
23
|
|
|
43
|
-
const
|
|
24
|
+
const spec = {
|
|
25
|
+
type: "Panel",
|
|
26
|
+
props: { title: "Hello" },
|
|
27
|
+
children: [
|
|
28
|
+
{ type: "Text", props: { body: "Seed: ALEEB", variant: "title" } },
|
|
29
|
+
{ type: "JamlGameCard", props: { type: "joker", card: { name: "Blueprint" } } },
|
|
30
|
+
],
|
|
31
|
+
};
|
|
44
32
|
|
|
45
33
|
export default function App() {
|
|
46
|
-
|
|
47
|
-
const search = useSearch();
|
|
48
|
-
|
|
49
|
-
const results: JamlIdeSearchResult[] = search.results.map((r) => ({
|
|
50
|
-
seed: r.seed,
|
|
51
|
-
score: r.score,
|
|
52
|
-
tallyColumns: r.tallyColumns,
|
|
53
|
-
}));
|
|
54
|
-
|
|
55
|
-
return (
|
|
56
|
-
<JamlIde
|
|
57
|
-
jaml={jaml}
|
|
58
|
-
onChange={setJaml}
|
|
59
|
-
searchResults={results}
|
|
60
|
-
isSearching={search.status === "running"}
|
|
61
|
-
onSearch={() => search.startAesthetic(jaml, /* aesthetic */ 0)}
|
|
62
|
-
/>
|
|
63
|
-
);
|
|
34
|
+
return <div>{render(spec, balatroRegistry)}</div>;
|
|
64
35
|
}
|
|
65
36
|
```
|
|
66
37
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
## Package exports
|
|
70
|
-
|
|
71
|
-
Four subpath entries, each a barrel. The public API is exactly what they re-export.
|
|
72
|
-
|
|
73
|
-
| Entry | What's in it | When you import it |
|
|
74
|
-
| ----- | ------------ | ------------------ |
|
|
75
|
-
| `jaml-ui` | Game cards, JAML IDE, search hooks | The default surface — most apps only need this |
|
|
76
|
-
| `jaml-ui/ui` | Jimbo design system (JimboPanel, JimboButton, JimboModal, tokens) | Building custom Balatro-styled UI |
|
|
77
|
-
| `jaml-ui/core` | Sprite metadata, asset URLs, canvas `Layer` — pure, **no React, no motely-wasm** | Next.js server components, server-side rendering |
|
|
78
|
-
| `jaml-ui/motely` | Re-exports `bootsharp` + `Motely` from motely-wasm, plus item-decode helpers and `useJamlLibrary` | Direct motely-wasm access, file-system mount |
|
|
38
|
+
## Boot motely-wasm
|
|
79
39
|
|
|
80
40
|
```tsx
|
|
81
|
-
import
|
|
82
|
-
import { JimboPanel, JimboButton, JimboColorOption } from "jaml-ui/ui";
|
|
83
|
-
import { resolveJamlAssetUrl, SPRITE_SHEETS } from "jaml-ui/core";
|
|
84
|
-
import { Motely, decodeMotelyItemName } from "jaml-ui/motely";
|
|
85
|
-
```
|
|
41
|
+
import bootsharp from "motely-wasm";
|
|
86
42
|
|
|
87
|
-
|
|
43
|
+
await bootsharp.boot("/motely-wasm/bin");
|
|
44
|
+
```
|
|
88
45
|
|
|
89
|
-
|
|
90
|
-
| ---- | ------------- |
|
|
91
|
-
| `examples/seed-finder` | End-to-end Vite app: boots motely-wasm, renders `JamlIde`, runs real searches. Copy it, point it at your published `jaml-ui`, ship. |
|
|
46
|
+
## MCP App example
|
|
92
47
|
|
|
93
48
|
```bash
|
|
94
|
-
cd examples/seed-finder
|
|
49
|
+
cd examples/mcp-seed-finder
|
|
95
50
|
pnpm install
|
|
96
51
|
pnpm dev
|
|
97
52
|
```
|
|
98
53
|
|
|
99
|
-
##
|
|
100
|
-
|
|
101
|
-
### Game card
|
|
102
|
-
|
|
103
|
-
```tsx
|
|
104
|
-
import { JamlGameCard } from "jaml-ui";
|
|
105
|
-
|
|
106
|
-
<JamlGameCard
|
|
107
|
-
type="joker"
|
|
108
|
-
card={{ name: "Blueprint", edition: "Foil", isEternal: true, scale: 1.5 }}
|
|
109
|
-
/>
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### JAML IDE
|
|
113
|
-
|
|
114
|
-
The full editor — code view, visual filter, results column, toolbar — in one component:
|
|
115
|
-
|
|
116
|
-
```tsx
|
|
117
|
-
import { JamlIde } from "jaml-ui";
|
|
118
|
-
|
|
119
|
-
<JamlIde
|
|
120
|
-
jaml={jaml}
|
|
121
|
-
onChange={setJaml}
|
|
122
|
-
searchResults={results}
|
|
123
|
-
onSearch={handleSearch}
|
|
124
|
-
isSearching={isSearching}
|
|
125
|
-
/>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Standalone code editor
|
|
129
|
-
|
|
130
|
-
```tsx
|
|
131
|
-
import { JamlCodeEditor } from "jaml-ui";
|
|
132
|
-
|
|
133
|
-
<JamlCodeEditor value={jaml} onChange={setJaml} />
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### JAML map preview
|
|
137
|
-
|
|
138
|
-
```tsx
|
|
139
|
-
import { JamlMapPreview } from "jaml-ui";
|
|
140
|
-
|
|
141
|
-
<JamlMapPreview jaml={jaml} />
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### Jimbo UI primitives
|
|
145
|
-
|
|
146
|
-
```tsx
|
|
147
|
-
import { JimboPanel, JimboButton, JimboModal } from "jaml-ui/ui";
|
|
148
|
-
|
|
149
|
-
<JimboPanel sway onBack={() => setOpen(false)}>
|
|
150
|
-
<JimboButton variant="primary" onClick={handleSearch}>Search</JimboButton>
|
|
151
|
-
</JimboPanel>
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Button variants: `primary`, `secondary`, `danger`, `back`, `ghost`.
|
|
155
|
-
|
|
156
|
-
## Hooks
|
|
157
|
-
|
|
158
|
-
All hooks lazily boot motely-wasm on first call if you skipped the top-level `bootsharp.boot()`.
|
|
159
|
-
|
|
160
|
-
### `useSearch()` — run JAML filter searches
|
|
161
|
-
|
|
162
|
-
```ts
|
|
163
|
-
import { useSearch } from "jaml-ui";
|
|
164
|
-
|
|
165
|
-
const {
|
|
166
|
-
results, // SearchResult[]
|
|
167
|
-
status, // "idle" | "running" | "completed" | "cancelled" | "error"
|
|
168
|
-
totalSearched, // bigint
|
|
169
|
-
matchingSeeds, // bigint
|
|
170
|
-
seedsPerSecond, // number
|
|
171
|
-
error, // string | null
|
|
172
|
-
startAesthetic, // (jaml, aesthetic) => Promise<void>
|
|
173
|
-
startSeedList, // (jaml, seeds[]) => Promise<void>
|
|
174
|
-
startRandom, // (jaml, count) => Promise<void>
|
|
175
|
-
cancel,
|
|
176
|
-
reset,
|
|
177
|
-
clearError,
|
|
178
|
-
} = useSearch();
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### `useAnalyzer()` — analyze a known seed
|
|
182
|
-
|
|
183
|
-
```ts
|
|
184
|
-
import { useAnalyzer } from "jaml-ui";
|
|
185
|
-
const { status, result, error, analyze } = useAnalyzer();
|
|
186
|
-
await analyze(jaml, "ALEEB");
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### `useSearchPool()` — multi-worker parallel search
|
|
190
|
-
|
|
191
|
-
For long searches, spreads work across a pool of web workers.
|
|
192
|
-
|
|
193
|
-
### `useJamlLibrary()` — browser file picker for `.jaml` files
|
|
194
|
-
|
|
195
|
-
```tsx
|
|
196
|
-
import { useJamlLibrary } from "jaml-ui/motely";
|
|
197
|
-
|
|
198
|
-
const library = useJamlLibrary();
|
|
199
|
-
await library.mount(); // prompts user to pick a folder
|
|
200
|
-
const source = await library.loadFile(library.files[0]);
|
|
201
|
-
await library.saveFile("filters/example.jaml", source);
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
Requires `@rewaffle/bootsharp-file-system` (optional peer). When absent, `status === "unsupported"`.
|
|
205
|
-
|
|
206
|
-
## Core utilities (no React)
|
|
207
|
-
|
|
208
|
-
```ts
|
|
209
|
-
import { SPRITE_SHEETS, getSpriteData, resolveJamlAssetUrl, Layer } from "jaml-ui/core";
|
|
210
|
-
```
|
|
54
|
+
## Package exports
|
|
211
55
|
|
|
212
|
-
|
|
56
|
+
| Entry | What's in it |
|
|
57
|
+
| ----- | ------------ |
|
|
58
|
+
| `jaml-ui` | json-render engine, Balatro registry/catalog, card components |
|
|
59
|
+
| `jaml-ui/ui` | Jimbo CSS tokens only |
|
|
60
|
+
| `jaml-ui/core` | Sprite metadata, asset URLs, canvas `Layer` — no React, no motely-wasm |
|
|
61
|
+
| `jaml-ui/motely` | `bootsharp` + `Motely` re-exports, item decoders |
|
|
213
62
|
|
|
214
|
-
##
|
|
63
|
+
## Scripts
|
|
215
64
|
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
motelyItemTypeName,
|
|
222
|
-
} from "jaml-ui/motely";
|
|
65
|
+
```bash
|
|
66
|
+
pnpm build # Vite library build → dist/
|
|
67
|
+
pnpm dev # vite build --watch
|
|
68
|
+
pnpm typecheck # tsc --noEmit
|
|
69
|
+
pnpm lint # ESLint
|
|
223
70
|
```
|
|
224
71
|
|
|
225
|
-
## Next.js
|
|
226
|
-
|
|
227
|
-
- Use `jaml-ui/core` from server components — it has no React and no motely-wasm imports.
|
|
228
|
-
- Use `jaml-ui` / `jaml-ui/motely` only from client components (mark the file with `"use client"`).
|
|
229
|
-
- Serve `motely-wasm/bin` at `/motely-wasm/bin` via a public folder or a catch-all route, then call `await bootsharp.boot("/motely-wasm/bin")` from a client component or your client entry script.
|
|
230
|
-
- If you're consuming this as a workspace package:
|
|
231
|
-
|
|
232
|
-
```ts
|
|
233
|
-
// next.config.ts
|
|
234
|
-
const nextConfig = { transpilePackages: ["jaml-ui"] };
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## Peer dependencies
|
|
238
|
-
|
|
239
|
-
| Peer | Required for | Optional? |
|
|
240
|
-
| ---- | ------------ | --------- |
|
|
241
|
-
| `react`, `react-dom` | All components | No |
|
|
242
|
-
| `motely-wasm` | All search/analyzer/decode functionality | No (direct dep) |
|
|
243
|
-
| `react-icons` | Components that render icons | Yes |
|
|
244
|
-
| `@rewaffle/bootsharp-file-system` | `useJamlLibrary` folder mount | Yes |
|
|
245
|
-
|
|
246
|
-
## Troubleshooting
|
|
247
|
-
|
|
248
|
-
- **"Motely is not initialized"** — you didn't call `bootsharp.boot()` before rendering, and the lazy guard hasn't fired yet. Add `await bootsharp.boot("/motely-wasm/bin")` to your entry point.
|
|
249
|
-
- **`404 /motely-wasm/bin/...`** — copy `node_modules/motely-wasm/bin/` into `public/motely-wasm/bin/` (Vite) or add a static route (Next.js).
|
|
250
|
-
- **CSS not applied** — make sure you imported from `jaml-ui` or `jaml-ui/ui` at least once. Both pull in `jimbo.css` as a side effect. If your bundler strips side-effect imports, add `import "jaml-ui/jimbo.css"`.
|
|
251
|
-
- **Storybook hangs on boot** — Storybook's `staticDirs` already serves `motely-wasm/bin`; see `.storybook/main.ts` for the pattern.
|
|
252
|
-
|
|
253
|
-
## Fonts
|
|
254
|
-
|
|
255
|
-
Jimbo UI uses **m6x11** and **m6x11plus** (`.ttf` in `assets/fonts/`). Fonts by [Daniel Linssen](https://managore.itch.io/) — free to use with attribution. If you ship an app that shows this UI, include that credit in your README or notices.
|
|
256
|
-
|
|
257
|
-
Code blocks use **JetBrains Mono** / system monospace via `--j-font-code`, not the pixel fonts.
|
|
258
|
-
|
|
259
72
|
## License
|
|
260
73
|
|
|
261
|
-
MIT — see [LICENSE](LICENSE). Font files are
|
|
74
|
+
MIT — see [LICENSE](LICENSE). Font files in `assets/fonts/` are third-party assets by Daniel Linssen; attribution required when redistributing or displaying the pixel fonts.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var n = Object.defineProperty;
|
|
2
|
+
var m = (r, s, t) => s in r ? n(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;
|
|
3
|
+
var o = (r, s, t) => m(r, typeof s != "symbol" ? s + "" : s, t);
|
|
4
|
+
class d {
|
|
5
|
+
constructor({ pos: s, name: t, order: e, source: a, rows: i, columns: c, animated: h = !1 }) {
|
|
6
|
+
o(this, "pos");
|
|
7
|
+
o(this, "name");
|
|
8
|
+
o(this, "order");
|
|
9
|
+
o(this, "source");
|
|
10
|
+
o(this, "rows");
|
|
11
|
+
o(this, "columns");
|
|
12
|
+
o(this, "animated");
|
|
13
|
+
this.pos = s, this.name = t, this.order = e, this.source = a, this.rows = i, this.columns = c, this.animated = h;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
d as L
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=Layer-B5y9UIAt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layer-B5y9UIAt.js","sources":["../../src/render/Layer.ts"],"sourcesContent":["/**\n * Layer class for sprite-based card rendering.\n * Encapsulates the source, position, and dimensions of a sprite layer.\n */\nexport interface LayerOptions {\n pos: { x: number; y: number };\n name: string;\n order: number;\n source: string;\n rows: number;\n columns: number;\n animated?: boolean;\n}\n\nexport class Layer {\n pos: { x: number; y: number };\n name: string;\n order: number;\n source: string;\n rows: number;\n columns: number;\n animated: boolean;\n\n constructor({ pos, name, order, source, rows, columns, animated = false }: LayerOptions) {\n this.pos = pos;\n this.name = name;\n this.order = order;\n this.source = source;\n this.rows = rows;\n this.columns = columns;\n this.animated = animated;\n }\n}\n"],"names":["Layer","pos","name","order","source","rows","columns","animated","__publicField"],"mappings":";;;AAcO,MAAMA,EAAM;AAAA,EASf,YAAY,EAAE,KAAAC,GAAK,MAAAC,GAAM,OAAAC,GAAO,QAAAC,GAAQ,MAAAC,GAAM,SAAAC,GAAS,UAAAC,IAAW,MAAuB;AARzF,IAAAC,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAGI,SAAK,MAAMP,GACX,KAAK,OAAOC,GACZ,KAAK,QAAQC,GACb,KAAK,SAASC,GACd,KAAK,OAAOC,GACZ,KAAK,UAAUC,GACf,KAAK,WAAWC;AAAA,EACpB;AACJ;"}
|