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.
Files changed (162) hide show
  1. package/README.md +38 -225
  2. package/dist/chunks/Layer-B5y9UIAt.js +19 -0
  3. package/dist/chunks/Layer-B5y9UIAt.js.map +1 -0
  4. package/dist/chunks/motelySprite-BYsaes3N.js +753 -0
  5. package/dist/chunks/motelySprite-BYsaes3N.js.map +1 -0
  6. package/dist/chunks/spriteMapper-BiDkbZrD.js +480 -0
  7. package/dist/chunks/spriteMapper-BiDkbZrD.js.map +1 -0
  8. package/dist/components/DeckSprite.d.ts +1 -1
  9. package/dist/components/GameCard.d.ts +5 -4
  10. package/dist/components/JamlyzerView.d.ts +9 -0
  11. package/dist/components/StandardCard.d.ts +4 -3
  12. package/dist/core.d.ts +0 -1
  13. package/dist/core.js +38 -26
  14. package/dist/core.js.map +1 -1
  15. package/dist/decode/motelyItemDecoder.d.ts +5 -0
  16. package/dist/index.d.ts +5 -28
  17. package/dist/index.js +3180 -27606
  18. package/dist/index.js.map +1 -1
  19. package/dist/json-render/catalog.d.ts +26 -1
  20. package/dist/json-render/components/domain.d.ts +8 -8
  21. package/dist/json-render/components/game.d.ts +3 -7
  22. package/dist/json-render/components/jammySeedMascotImage.d.ts +1 -0
  23. package/dist/json-render/components/layout.d.ts +2 -1
  24. package/dist/json-render/components/mascot.d.ts +22 -0
  25. package/dist/json-render/components/reference.d.ts +7 -7
  26. package/dist/json-render/engine.d.ts +4 -4
  27. package/dist/json-render/index.d.ts +2 -0
  28. package/dist/motely.d.ts +2 -5
  29. package/dist/motely.js +22 -173
  30. package/dist/motely.js.map +1 -1
  31. package/dist/render/CanvasRenderer.d.ts +2 -1
  32. package/dist/render/useJamlCardRenderer.d.ts +15 -0
  33. package/dist/ui/jimbo.css +1 -2
  34. package/dist/ui.d.ts +0 -39
  35. package/dist/ui.js +58 -3
  36. package/dist/ui.js.map +1 -0
  37. package/package.json +13 -53
  38. package/dist/assets/searchPoolWorker-DA5uFkl3.js +0 -2
  39. package/dist/assets/searchPoolWorker-DA5uFkl3.js.map +0 -1
  40. package/dist/chunks/jamlSeeds-CRthre97.js +0 -69
  41. package/dist/chunks/jamlSeeds-CRthre97.js.map +0 -1
  42. package/dist/chunks/runtime-D7eHq1kP.js +0 -2060
  43. package/dist/chunks/runtime-D7eHq1kP.js.map +0 -1
  44. package/dist/chunks/searchPoolWorker-649yzf3l.js +0 -11
  45. package/dist/chunks/searchPoolWorker-649yzf3l.js.map +0 -1
  46. package/dist/chunks/spriteMapper-BqG15k6f.js +0 -2496
  47. package/dist/chunks/spriteMapper-BqG15k6f.js.map +0 -1
  48. package/dist/chunks/ui-DwggmAYr.js +0 -3399
  49. package/dist/chunks/ui-DwggmAYr.js.map +0 -1
  50. package/dist/components/CardFan.d.ts +0 -13
  51. package/dist/components/JamlAestheticSelector.d.ts +0 -12
  52. package/dist/components/JamlCodeEditor.d.ts +0 -7
  53. package/dist/components/JamlCurator.d.ts +0 -1
  54. package/dist/components/JamlIde.d.ts +0 -44
  55. package/dist/components/JamlIdeToolbar.d.ts +0 -14
  56. package/dist/components/JamlIdeVisual.d.ts +0 -30
  57. package/dist/components/JamlMapPreview.d.ts +0 -11
  58. package/dist/components/JamlSeedInput.d.ts +0 -24
  59. package/dist/components/JamlSeedSpinner.d.ts +0 -9
  60. package/dist/components/JamlSpeedometer.d.ts +0 -16
  61. package/dist/components/Jamlyzer.d.ts +0 -8
  62. package/dist/components/JimmolateEditor.d.ts +0 -47
  63. package/dist/components/MotelyHello.d.ts +0 -5
  64. package/dist/components/MotelyVersionBadge.d.ts +0 -28
  65. package/dist/components/PaginatedFilterBrowser.d.ts +0 -26
  66. package/dist/components/RunConfigModal.d.ts +0 -8
  67. package/dist/components/SeedFinderApp.d.ts +0 -7
  68. package/dist/components/jamlMap/CategoryPicker.d.ts +0 -32
  69. package/dist/components/jamlMap/JamlMapEditor.d.ts +0 -14
  70. package/dist/components/jamlMap/JokerPicker.d.ts +0 -8
  71. package/dist/components/jamlMap/MysterySlot.d.ts +0 -37
  72. package/dist/components/jamlMap/index.d.ts +0 -4
  73. package/dist/components/jamlMap/jokerRarity.d.ts +0 -6
  74. package/dist/components/jamlSeedUtils.d.ts +0 -1
  75. package/dist/hooks/searchPoolWorker.d.ts +0 -61
  76. package/dist/hooks/searchWorker.d.ts +0 -1
  77. package/dist/hooks/useAnalyzer.d.ts +0 -10
  78. package/dist/hooks/useIntersectionObserver.d.ts +0 -14
  79. package/dist/hooks/useJamlLibrary.d.ts +0 -13
  80. package/dist/hooks/useSearch.d.ts +0 -31
  81. package/dist/hooks/useSearchPool.d.ts +0 -43
  82. package/dist/hooks/useShopStream.d.ts +0 -22
  83. package/dist/lib/SpriteMapper.d.ts +0 -10
  84. package/dist/lib/cardParser.d.ts +0 -8
  85. package/dist/lib/classes/BuyMetaData.d.ts +0 -11
  86. package/dist/lib/config.d.ts +0 -13
  87. package/dist/lib/const.d.ts +0 -70
  88. package/dist/lib/data/constants.d.ts +0 -11
  89. package/dist/lib/hooks/useDragScroll.d.ts +0 -4
  90. package/dist/lib/hooks/useJamlFilter.d.ts +0 -48
  91. package/dist/lib/hooks/useSeedAnalyzer.d.ts +0 -5
  92. package/dist/lib/jaml/jamlCompletion.d.ts +0 -12
  93. package/dist/lib/jaml/jamlData.d.ts +0 -4
  94. package/dist/lib/jaml/jamlLangCodemirror.d.ts +0 -13
  95. package/dist/lib/jaml/jamlObjectives.d.ts +0 -13
  96. package/dist/lib/jaml/jamlParser.d.ts +0 -14
  97. package/dist/lib/jaml/jamlPresets.d.ts +0 -8
  98. package/dist/lib/jaml/jamlSchema.d.ts +0 -19
  99. package/dist/lib/jaml/jamlSeeds.d.ts +0 -7
  100. package/dist/lib/motely/runtime.d.ts +0 -40
  101. package/dist/lib/parseDailyRitual.d.ts +0 -45
  102. package/dist/lib/tts/getRevealPos.d.ts +0 -5
  103. package/dist/lib/tts/splitTtsDisplay.d.ts +0 -19
  104. package/dist/lib/types.d.ts +0 -122
  105. package/dist/lib/utils.d.ts +0 -2
  106. package/dist/motelyDisplay.d.ts +0 -10
  107. package/dist/ui/JimboBadge.d.ts +0 -12
  108. package/dist/ui/JimboBalatroFooter.d.ts +0 -16
  109. package/dist/ui/JimboCopyButton.d.ts +0 -27
  110. package/dist/ui/JimboDeckAndStakeSelectorModal.d.ts +0 -30
  111. package/dist/ui/JimboDualChip.d.ts +0 -17
  112. package/dist/ui/JimboIconButton.d.ts +0 -15
  113. package/dist/ui/JimboInlineEdit.d.ts +0 -16
  114. package/dist/ui/JimboInputModal.d.ts +0 -13
  115. package/dist/ui/JimboListItem.d.ts +0 -11
  116. package/dist/ui/JimboPanelSpinner.d.ts +0 -15
  117. package/dist/ui/JimboPanelSplitter.d.ts +0 -8
  118. package/dist/ui/JimboPicker.d.ts +0 -28
  119. package/dist/ui/JimboSeedCopyChip.d.ts +0 -16
  120. package/dist/ui/JimboSelect.d.ts +0 -30
  121. package/dist/ui/JimboSlider.d.ts +0 -11
  122. package/dist/ui/JimboSpinner.d.ts +0 -18
  123. package/dist/ui/JimboStepper.d.ts +0 -22
  124. package/dist/ui/JimboTextInput.d.ts +0 -5
  125. package/dist/ui/JimboToggleList.d.ts +0 -12
  126. package/dist/ui/JimboValueBadge.d.ts +0 -19
  127. package/dist/ui/codeBlock.d.ts +0 -11
  128. package/dist/ui/hooks.d.ts +0 -126
  129. package/dist/ui/ide/JamlEditor.d.ts +0 -7
  130. package/dist/ui/jimboApp.d.ts +0 -9
  131. package/dist/ui/jimboBackground.d.ts +0 -17
  132. package/dist/ui/jimboCopyRow.d.ts +0 -9
  133. package/dist/ui/jimboFilterBar.d.ts +0 -22
  134. package/dist/ui/jimboFlankNav.d.ts +0 -17
  135. package/dist/ui/jimboInfoCard.d.ts +0 -31
  136. package/dist/ui/jimboInset.d.ts +0 -9
  137. package/dist/ui/jimboLayout.d.ts +0 -25
  138. package/dist/ui/jimboLink.d.ts +0 -12
  139. package/dist/ui/jimboSectionHeader.d.ts +0 -11
  140. package/dist/ui/jimboStatGrid.d.ts +0 -13
  141. package/dist/ui/jimboTabs.d.ts +0 -21
  142. package/dist/ui/jimboText.d.ts +0 -25
  143. package/dist/ui/jimboTooltip.d.ts +0 -33
  144. package/dist/ui/jimboWordmark.d.ts +0 -10
  145. package/dist/ui/mascot/JammySpeechBox.d.ts +0 -9
  146. package/dist/ui/mascot/SeedMascot.d.ts +0 -37
  147. package/dist/ui/mascot/index.d.ts +0 -3
  148. package/dist/ui/mascot/menuConfig.d.ts +0 -102
  149. package/dist/ui/panel.d.ts +0 -32
  150. package/dist/ui/radial/RadialBadge.d.ts +0 -16
  151. package/dist/ui/radial/RadialBreadcrumb.d.ts +0 -12
  152. package/dist/ui/radial/RadialButton.d.ts +0 -60
  153. package/dist/ui/radial/RadialMenu.d.ts +0 -38
  154. package/dist/ui/radial/RadialPill.d.ts +0 -17
  155. package/dist/ui/radial/index.d.ts +0 -16
  156. package/dist/ui/radial/radialMenuStore.d.ts +0 -31
  157. package/dist/ui/radial/radialMenuViewport.d.ts +0 -6
  158. package/dist/ui/radial/useRadialMenu.d.ts +0 -35
  159. package/dist/ui/showcase.d.ts +0 -38
  160. package/dist/ui/sprites.d.ts +0 -25
  161. package/dist/utils/jamlMapPreview.d.ts +0 -12
  162. package/dist/utils/jamlVisualFilter.d.ts +0 -3
package/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # jaml-ui
2
2
 
3
- React components, UI tokens, sprites, and utilities for Balatro/JAML seed-finder apps.
3
+ Zero-dependency JSON-to-React engine (`json-render`) + Balatro card sprite rendering for MCP Apps.
4
4
 
5
- Wraps [motely-wasm](https://www.npmjs.com/package/motely-wasm) — the Bootsharp-built WebAssembly port of the C# Motely seed engine — and ships a Balatro-styled design system called **Jimbo**.
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
- The CSS is loaded automatically as a side-effect import. No PostCSS, no Tailwind, no config.
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
- > If you can't use top-level await (legacy Webpack, server components), the hooks (`useSearch`, `useAnalyzer`, `useJamlLibrary`) inline a Standby-guard and will boot lazily on first call. The top-level pattern is still preferred it removes the boot wait from the first interaction.
36
-
37
- ## Quick start — a real seed finder in ~30 lines
19
+ ## Quick startrender JSON UI
38
20
 
39
21
  ```tsx
40
- import { useState } from "react";
41
- import { JamlIde, useSearch, type JamlIdeSearchResult } from "jaml-ui";
22
+ import { render, balatroRegistry } from "jaml-ui";
42
23
 
43
- const STARTER_JAML = `must:\n - joker: Blueprint\n antes: [1,2,3,4,5,6,7,8]\ndeck: Red\nstake: White\n`;
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
- const [jaml, setJaml] = useState(STARTER_JAML);
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
- That's the whole integration. `useSearch` handles boot guarding, search lifecycle, progress events, and result accumulation; `JamlIde` renders the editor, visual filter, results column, and toolbar.
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 { JamlGameCard, useSearch } from "jaml-ui";
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
- ## Examples
43
+ await bootsharp.boot("/motely-wasm/bin");
44
+ ```
88
45
 
89
- | Path | What it shows |
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
- ## Core components
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
- `resolveJamlAssetUrl(key)` returns a bundled asset URL — Vite imports the PNGs at build time, so consumers don't have to wire any base URL.
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
- ## Motely decode helpers
63
+ ## Scripts
215
64
 
216
- ```ts
217
- import {
218
- decodeMotelyItem,
219
- decodeMotelyItemName,
220
- motelyItemDisplayName,
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 separate third-party assets; attribution to Daniel Linssen is required when redistributing or displaying the pixel fonts.
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;"}