jaml-ui 4.3.1 → 4.6.0

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 (104) hide show
  1. package/assets/jammy-seed-mascot.png +0 -0
  2. package/dist/assets/8BitDeck-B09C1jGy.png +0 -0
  3. package/dist/assets/BlindChips-Bnvhn76w.png +0 -0
  4. package/dist/assets/Boosters-Bqv_YhIn.png +0 -0
  5. package/dist/assets/Editions-B3YPqPOl.png +0 -0
  6. package/dist/assets/Enhancers-DhIlUuTX.png +0 -0
  7. package/dist/assets/Jokers-1egXSFFQ.png +0 -0
  8. package/dist/assets/Tarots-DkrFk7iW.png +0 -0
  9. package/dist/assets/Vouchers-Cdp8BeSE.png +0 -0
  10. package/dist/assets/balatro-stake-chips-BdO-bw7c.png +0 -0
  11. package/dist/assets/jammy-seed-mascot-BdoW3O33.png +0 -0
  12. package/dist/assets/m6x11plus-C8RqtTtG.ttf +0 -0
  13. package/dist/assets/stickers-B6y5vEyc.png +0 -0
  14. package/dist/assets/tags-BdxcVWR4.png +0 -0
  15. package/dist/chunks/JimboSwipeDeck-DbzWak3V.js +2051 -0
  16. package/dist/chunks/JimboSwipeDeck-DbzWak3V.js.map +1 -0
  17. package/dist/chunks/spriteMapper-gImEz0wa.js +501 -0
  18. package/dist/chunks/spriteMapper-gImEz0wa.js.map +1 -0
  19. package/dist/components/DailyRitualView.d.ts +17 -0
  20. package/dist/components/DeckStakePicker.d.ts +12 -0
  21. package/dist/components/JamlIde.d.ts +9 -0
  22. package/dist/components/JamlIdeToolbar.d.ts +2 -5
  23. package/dist/components/JamlIdeVisual.d.ts +30 -0
  24. package/dist/components/JamlMapPreview.d.ts +12 -0
  25. package/dist/components/Jamlyzer.d.ts +14 -2
  26. package/dist/components/JamlyzerBulk.d.ts +5 -4
  27. package/dist/components/JamlyzerView.d.ts +1 -12
  28. package/dist/components/SeedLab.d.ts +12 -0
  29. package/dist/components/jamlSeedUtils.d.ts +1 -0
  30. package/dist/components/jamlyzer/JamlyzerAnteDetails.d.ts +4 -0
  31. package/dist/components/jamlyzer/JamlyzerErraticDeck.d.ts +2 -2
  32. package/dist/components/jamlyzer/JamlyzerPackSection.d.ts +1 -5
  33. package/dist/components/jamlyzer/JamlyzerPulls.d.ts +2 -2
  34. package/dist/components/jamlyzer/JamlyzerSeedCard.d.ts +21 -0
  35. package/dist/components/jamlyzer/JamlyzerTape.d.ts +10 -0
  36. package/dist/components/jamlyzer/highlight.d.ts +3 -3
  37. package/dist/core.js +2 -2
  38. package/dist/decode/motelyItemDecoder.d.ts +1 -0
  39. package/dist/decode/motelySprite.d.ts +10 -13
  40. package/dist/decode/motelySpriteLut.generated.d.ts +2 -0
  41. package/dist/index.d.ts +13 -1
  42. package/dist/index.js +20903 -17732
  43. package/dist/index.js.map +1 -1
  44. package/dist/json-render/JimboJsonRenderer.d.ts +21 -0
  45. package/dist/json-render/catalog.d.ts +304 -180
  46. package/dist/json-render/index.d.ts +5 -30
  47. package/dist/json-render/registry.d.ts +2 -12
  48. package/dist/lib/daily/ritual.d.ts +43 -0
  49. package/dist/lib/jaml/{parseClauses.d.ts → jaml.d.ts} +17 -13
  50. package/dist/lib/jaml/rarity.d.ts +53 -0
  51. package/dist/lib/jaml/rarityData.generated.d.ts +727 -0
  52. package/dist/ui/JimboApp.d.ts +8 -6
  53. package/dist/ui/JimboBackground.d.ts +5 -13
  54. package/dist/ui/JimboBox.d.ts +16 -0
  55. package/dist/ui/JimboButton.d.ts +1 -1
  56. package/dist/ui/JimboCanvas.d.ts +12 -0
  57. package/dist/ui/JimboDock.d.ts +21 -0
  58. package/dist/ui/JimboInline.d.ts +11 -0
  59. package/dist/ui/JimboLink.d.ts +11 -0
  60. package/dist/ui/JimboMascot.d.ts +51 -5
  61. package/dist/ui/JimboOrbitalMenu.d.ts +81 -9
  62. package/dist/ui/JimboPanelSpinner.d.ts +14 -0
  63. package/dist/ui/JimboPicker.d.ts +1 -1
  64. package/dist/ui/JimboSeedCopyChip.d.ts +1 -2
  65. package/dist/ui/JimboShopBelt.d.ts +9 -0
  66. package/dist/ui/dockTree.d.ts +31 -0
  67. package/dist/ui/hooks.d.ts +1 -1
  68. package/dist/ui/jammySeedMascotImage.d.ts +1 -1
  69. package/dist/ui/jimbo.css +1 -1
  70. package/dist/ui/orbitalLayout.d.ts +149 -0
  71. package/dist/ui/orbitalMenuStore.d.ts +70 -0
  72. package/dist/ui/tokens.d.ts +9 -36
  73. package/dist/ui/useMotionPreference.d.ts +19 -0
  74. package/dist/ui.d.ts +20 -2
  75. package/dist/ui.js +77 -30
  76. package/dist/vocab.d.ts +26 -0
  77. package/package.json +36 -40
  78. package/README.md +0 -78
  79. package/assets/fonts/README.md +0 -14
  80. package/dist/chunks/JimboSwipeDeck-D2AVuZep.js +0 -967
  81. package/dist/chunks/JimboSwipeDeck-D2AVuZep.js.map +0 -1
  82. package/dist/chunks/motelyItemDecoder-Cb-RjvQ0.js +0 -692
  83. package/dist/chunks/motelyItemDecoder-Cb-RjvQ0.js.map +0 -1
  84. package/dist/chunks/spriteMapper-Dfr2_j0_.js +0 -501
  85. package/dist/chunks/spriteMapper-Dfr2_j0_.js.map +0 -1
  86. package/dist/components/jamlyzer/JamlyzerRail.d.ts +0 -14
  87. package/dist/json-render/builders/analyzer.d.ts +0 -23
  88. package/dist/json-render/builders/encyclopedia.d.ts +0 -14
  89. package/dist/json-render/builders/search.d.ts +0 -24
  90. package/dist/json-render/components/domain.d.ts +0 -59
  91. package/dist/json-render/components/game.d.ts +0 -18
  92. package/dist/json-render/components/layout.d.ts +0 -47
  93. package/dist/json-render/components/mascot.d.ts +0 -23
  94. package/dist/json-render/components/reference.d.ts +0 -39
  95. package/dist/json-render/engine.d.ts +0 -38
  96. package/dist/json-render/knowledge/bosses.d.ts +0 -18
  97. package/dist/json-render/knowledge/decks.d.ts +0 -22
  98. package/dist/json-render/knowledge/jokers.d.ts +0 -23
  99. package/dist/json-render/knowledge/synergies.d.ts +0 -21
  100. package/dist/lib/motely/jamlParse.d.ts +0 -4
  101. package/dist/lib/motely/runtime.d.ts +0 -1
  102. package/dist/motely.d.ts +0 -4
  103. package/dist/motely.js +0 -84
  104. package/dist/motely.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ import { ReactSpec } from '@json-render/react';
3
+ import { Spec } from '@json-render/core';
4
+ import { jimboCatalog } from './catalog.js';
5
+ export interface JimboJsonRendererProps {
6
+ /** The AI-generated JSON UI specification */
7
+ spec: ReactSpec<typeof jimboCatalog> | Spec | null;
8
+ /** Whether the spec is currently streaming / loading from an LLM */
9
+ loading?: boolean;
10
+ /** Optional container className */
11
+ className?: string;
12
+ /** Optional container style */
13
+ style?: React.CSSProperties;
14
+ }
15
+ /**
16
+ * Jimbo Generative UI Renderer (powered by Vercel Labs `@json-render`).
17
+ *
18
+ * Automatically mounts inside `<JimboApp>` so all generated components receive
19
+ * the authentic pixel font, felt background, and zero-flex CSS Grid layout.
20
+ */
21
+ export declare function JimboJsonRenderer({ spec, loading, className, style, }: JimboJsonRendererProps): React.JSX.Element | null;
@@ -1,204 +1,328 @@
1
- import { BadgeTone } from './components/layout.js';
1
+ import { z } from 'zod';
2
2
  /**
3
- * Balatro Catalog — Component vocabulary for AI-generated UI.
3
+ * Jimbo generative-UI catalog for Vercel Labs' `@json-render`.
4
4
  *
5
- * Type-safe at compile time. Zero runtime overhead.
6
- * The AI sees these names + descriptions + prop shapes.
5
+ * Defines the type-safe catalog of Jimbo design system components and
6
+ * Balatro card sprites that an AI model may emit specs against.
7
7
  */
8
- export declare const balatroCatalog: {
9
- Panel: {
10
- props: {
11
- title?: string;
12
- subtitle?: string;
13
- variant?: "default" | "accent" | "muted";
14
- className?: string;
15
- };
16
- description: string;
17
- };
18
- Stack: {
19
- props: {
20
- gap?: number;
21
- align?: "start" | "center" | "end" | "stretch";
22
- className?: string;
23
- };
24
- description: string;
25
- };
26
- Grid: {
27
- props: {
28
- columns?: number;
29
- gap?: number;
30
- className?: string;
31
- };
32
- description: string;
33
- };
34
- Text: {
35
- props: {
36
- body: string;
37
- variant?: "title" | "body" | "muted" | "accent" | "error";
38
- className?: string;
8
+ export declare const jimboCatalog: import('@json-render/core').Catalog<{
9
+ spec: import('@json-render/core').SchemaType<"object", {
10
+ root: import('@json-render/core').SchemaType<"string", unknown>;
11
+ elements: import('@json-render/core').SchemaType<"record", import('@json-render/core').SchemaType<"object", {
12
+ type: import('@json-render/core').SchemaType<"ref", string>;
13
+ props: import('@json-render/core').SchemaType<"propsOf", string>;
14
+ children: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>>;
15
+ slots: {
16
+ optional: true;
17
+ kind: "record";
18
+ inner?: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>> | undefined;
19
+ };
20
+ visible: {
21
+ optional: true;
22
+ kind: "any";
23
+ inner?: unknown;
24
+ };
25
+ repeat: {
26
+ optional: true;
27
+ kind: "any";
28
+ inner?: unknown;
29
+ };
30
+ }>>;
31
+ }>;
32
+ catalog: import('@json-render/core').SchemaType<"object", {
33
+ components: import('@json-render/core').SchemaType<"map", {
34
+ props: import('@json-render/core').SchemaType<"zod", unknown>;
35
+ slots: import('@json-render/core').SchemaType<"array", import('@json-render/core').SchemaType<"string", unknown>>;
36
+ description: import('@json-render/core').SchemaType<"string", unknown>;
37
+ example: import('@json-render/core').SchemaType<"any", unknown>;
38
+ }>;
39
+ actions: import('@json-render/core').SchemaType<"map", {
40
+ params: import('@json-render/core').SchemaType<"zod", unknown>;
41
+ description: import('@json-render/core').SchemaType<"string", unknown>;
42
+ }>;
43
+ }>;
44
+ }, {
45
+ components: {
46
+ JimboPanel: {
47
+ props: z.ZodObject<{
48
+ title: z.ZodOptional<z.ZodString>;
49
+ tone: z.ZodOptional<z.ZodEnum<{
50
+ red: "red";
51
+ orange: "orange";
52
+ blue: "blue";
53
+ green: "green";
54
+ purple: "purple";
55
+ gold: "gold";
56
+ dark: "dark";
57
+ }>>;
58
+ }, z.core.$strip>;
59
+ slots: string[];
60
+ description: string;
61
+ example: {
62
+ title: string;
63
+ tone: string;
64
+ };
39
65
  };
40
- description: string;
41
- };
42
- Spacer: {
43
- props: {
44
- size?: number;
66
+ JimboInnerPanel: {
67
+ props: z.ZodObject<{
68
+ className: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>;
70
+ slots: string[];
71
+ description: string;
72
+ example: {};
45
73
  };
46
- description: string;
47
- };
48
- Divider: {
49
- props: {
50
- className?: string;
74
+ JimboRow: {
75
+ props: z.ZodObject<{
76
+ gap: z.ZodOptional<z.ZodEnum<{
77
+ xs: "xs";
78
+ sm: "sm";
79
+ md: "md";
80
+ lg: "lg";
81
+ }>>;
82
+ wrap: z.ZodOptional<z.ZodBoolean>;
83
+ align: z.ZodOptional<z.ZodEnum<{
84
+ start: "start";
85
+ center: "center";
86
+ end: "end";
87
+ stretch: "stretch";
88
+ }>>;
89
+ justify: z.ZodOptional<z.ZodEnum<{
90
+ start: "start";
91
+ center: "center";
92
+ end: "end";
93
+ between: "between";
94
+ }>>;
95
+ }, z.core.$strip>;
96
+ slots: string[];
97
+ description: string;
98
+ example: {
99
+ gap: string;
100
+ align: string;
101
+ };
51
102
  };
52
- description: string;
53
- };
54
- Badge: {
55
- props: {
56
- label: string;
57
- tone?: "red" | "blue" | "green" | "orange" | "gold" | "purple" | "grey";
58
- className?: string;
103
+ JimboStack: {
104
+ props: z.ZodObject<{
105
+ gap: z.ZodOptional<z.ZodEnum<{
106
+ xs: "xs";
107
+ sm: "sm";
108
+ md: "md";
109
+ lg: "lg";
110
+ }>>;
111
+ align: z.ZodOptional<z.ZodEnum<{
112
+ start: "start";
113
+ center: "center";
114
+ end: "end";
115
+ stretch: "stretch";
116
+ }>>;
117
+ }, z.core.$strip>;
118
+ slots: string[];
119
+ description: string;
120
+ example: {
121
+ gap: string;
122
+ align: string;
123
+ };
59
124
  };
60
- description: string;
61
- };
62
- SearchStats: {
63
- props: {
64
- status: "idle" | "running" | "completed" | "error";
65
- seedsSearched?: string;
66
- matchesFound?: number;
67
- seedsPerSecond?: number;
68
- elapsed?: string;
69
- };
70
- description: string;
71
- };
72
- ErrorBanner: {
73
- props: {
74
- message: string;
75
- onDismiss?: boolean;
125
+ JimboBox: {
126
+ props: z.ZodObject<{
127
+ className: z.ZodOptional<z.ZodString>;
128
+ }, z.core.$strip>;
129
+ slots: string[];
130
+ description: string;
131
+ example: {};
76
132
  };
77
- description: string;
78
- };
79
- LoadingPulse: {
80
- props: {
81
- text?: string;
133
+ JamlGameCard: {
134
+ props: z.ZodObject<{
135
+ name: z.ZodString;
136
+ type: z.ZodDefault<z.ZodEnum<{
137
+ playing: "playing";
138
+ joker: "joker";
139
+ consumable: "consumable";
140
+ }>>;
141
+ scale: z.ZodOptional<z.ZodNumber>;
142
+ }, z.core.$strip>;
143
+ slots: never[];
144
+ description: string;
145
+ example: {
146
+ name: string;
147
+ type: string;
148
+ scale: number;
149
+ };
82
150
  };
83
- description: string;
84
- };
85
- SeedCard: {
86
- props: {
87
- seed: string;
88
- score?: number;
89
- rank?: number;
90
- highlights?: string[];
91
- jokers?: string[];
92
- edition?: string;
93
- onClick?: boolean;
94
- };
95
- description: string;
96
- };
97
- SeedList: {
98
- props: {
99
- seeds: string[];
100
- scores?: number[];
101
- total?: number;
102
- pageSize?: number;
103
- };
104
- description: string;
105
- };
106
- JokerBadge: {
107
- props: {
108
- name: string;
109
- edition?: "Foil" | "Holographic" | "Polychrome" | "Negative";
110
- rarity?: "Common" | "Uncommon" | "Rare" | "Legendary";
151
+ StandardCard: {
152
+ props: z.ZodObject<{
153
+ rank: z.ZodString;
154
+ suit: z.ZodDefault<z.ZodEnum<{
155
+ Hearts: "Hearts";
156
+ Clubs: "Clubs";
157
+ Diamonds: "Diamonds";
158
+ Spades: "Spades";
159
+ }>>;
160
+ enhancement: z.ZodOptional<z.ZodString>;
161
+ edition: z.ZodOptional<z.ZodString>;
162
+ seal: z.ZodOptional<z.ZodString>;
163
+ size: z.ZodOptional<z.ZodNumber>;
164
+ }, z.core.$strip>;
165
+ slots: never[];
166
+ description: string;
167
+ example: {
168
+ rank: string;
169
+ suit: string;
170
+ size: number;
171
+ };
111
172
  };
112
- description: string;
113
- };
114
- EditionBadge: {
115
- props: {
116
- edition: "Foil" | "Holographic" | "Polychrome" | "Negative";
173
+ DeckSprite: {
174
+ props: z.ZodObject<{
175
+ deck: z.ZodDefault<z.ZodString>;
176
+ stake: z.ZodOptional<z.ZodString>;
177
+ size: z.ZodOptional<z.ZodNumber>;
178
+ }, z.core.$strip>;
179
+ slots: never[];
180
+ description: string;
181
+ example: {
182
+ deck: string;
183
+ stake: string;
184
+ size: number;
185
+ };
117
186
  };
118
- description: string;
119
- };
120
- JamlGameCard: {
121
- props: {
122
- type: "joker" | "consumable" | "playing";
123
- card: {
124
- name: string;
125
- edition?: string;
126
- seal?: string;
127
- isEternal?: boolean;
128
- isPerishable?: boolean;
129
- isRental?: boolean;
130
- scale?: number;
187
+ JamlyzerSeedCard: {
188
+ props: z.ZodObject<{
189
+ seed: z.ZodString;
190
+ score: z.ZodOptional<z.ZodNumber>;
191
+ pinned: z.ZodOptional<z.ZodBoolean>;
192
+ }, z.core.$strip>;
193
+ slots: never[];
194
+ description: string;
195
+ example: {
196
+ seed: string;
197
+ score: number;
198
+ pinned: boolean;
131
199
  };
132
200
  };
133
- description: string;
134
- };
135
- JammyMascot: {
136
- props: {
137
- mood?: "idle" | "happy" | "surprised";
138
- size?: number;
139
- menuItems?: {
201
+ JimboButton: {
202
+ props: z.ZodObject<{
203
+ label: z.ZodString;
204
+ tone: z.ZodDefault<z.ZodEnum<{
205
+ red: "red";
206
+ orange: "orange";
207
+ blue: "blue";
208
+ green: "green";
209
+ }>>;
210
+ size: z.ZodDefault<z.ZodEnum<{
211
+ xs: "xs";
212
+ sm: "sm";
213
+ md: "md";
214
+ lg: "lg";
215
+ }>>;
216
+ action: z.ZodOptional<z.ZodString>;
217
+ }, z.core.$strip>;
218
+ slots: never[];
219
+ description: string;
220
+ example: {
140
221
  label: string;
141
- action: string;
142
- tone?: BadgeTone;
143
- }[];
144
- onMenuAction?: boolean;
222
+ tone: string;
223
+ size: string;
224
+ };
145
225
  };
146
- description: string;
147
- };
148
- JammyOrbitalMenu: {
149
- props: {
150
- items: {
151
- label: string;
152
- action: string;
153
- tone?: BadgeTone;
154
- }[];
155
- radius?: number;
226
+ JimboBadge: {
227
+ props: z.ZodObject<{
228
+ text: z.ZodString;
229
+ tone: z.ZodDefault<z.ZodEnum<{
230
+ red: "red";
231
+ orange: "orange";
232
+ blue: "blue";
233
+ green: "green";
234
+ purple: "purple";
235
+ grey: "grey";
236
+ dark: "dark";
237
+ }>>;
238
+ size: z.ZodDefault<z.ZodEnum<{
239
+ sm: "sm";
240
+ md: "md";
241
+ }>>;
242
+ }, z.core.$strip>;
243
+ slots: never[];
244
+ description: string;
245
+ example: {
246
+ text: string;
247
+ tone: string;
248
+ size: string;
249
+ };
156
250
  };
157
- description: string;
158
- };
159
- JokerCard: {
160
- props: {
161
- name: string;
162
- showSynergies?: boolean;
251
+ JimboText: {
252
+ props: z.ZodObject<{
253
+ text: z.ZodString;
254
+ size: z.ZodDefault<z.ZodEnum<{
255
+ title: "title";
256
+ micro: "micro";
257
+ xs: "xs";
258
+ sm: "sm";
259
+ md: "md";
260
+ lg: "lg";
261
+ }>>;
262
+ tone: z.ZodDefault<z.ZodEnum<{
263
+ red: "red";
264
+ blue: "blue";
265
+ green: "green";
266
+ gold: "gold";
267
+ grey: "grey";
268
+ white: "white";
269
+ }>>;
270
+ }, z.core.$strip>;
271
+ slots: never[];
272
+ description: string;
273
+ example: {
274
+ text: string;
275
+ tone: string;
276
+ size: string;
277
+ };
163
278
  };
164
- description: string;
165
- };
166
- SynergyCard: {
167
- props: {
168
- name: string;
279
+ JimboSeedCopyChip: {
280
+ props: z.ZodObject<{
281
+ value: z.ZodString;
282
+ }, z.core.$strip>;
283
+ slots: never[];
284
+ description: string;
285
+ example: {
286
+ value: string;
287
+ };
169
288
  };
170
- description: string;
171
- };
172
- BossBlindCard: {
173
- props: {
174
- name: string;
289
+ JimboStatusPill: {
290
+ props: z.ZodObject<{
291
+ label: z.ZodString;
292
+ status: z.ZodDefault<z.ZodEnum<{
293
+ error: "error";
294
+ idle: "idle";
295
+ paused: "paused";
296
+ running: "running";
297
+ ok: "ok";
298
+ }>>;
299
+ }, z.core.$strip>;
300
+ slots: never[];
301
+ description: string;
302
+ example: {
303
+ label: string;
304
+ status: string;
305
+ };
175
306
  };
176
- description: string;
177
307
  };
178
- DeckCard: {
179
- props: {
180
- name: string;
308
+ actions: {
309
+ copySeed: {
310
+ params: z.ZodObject<{
311
+ seed: z.ZodString;
312
+ }, z.core.$strip>;
313
+ description: string;
181
314
  };
182
- description: string;
183
- };
184
- StakeCard: {
185
- props: {
186
- name: string;
315
+ selectSeed: {
316
+ params: z.ZodObject<{
317
+ seed: z.ZodString;
318
+ }, z.core.$strip>;
319
+ description: string;
187
320
  };
188
- description: string;
189
- };
190
- StrategyAdvisor: {
191
- props: {
192
- jokers: string[];
321
+ loadJaml: {
322
+ params: z.ZodObject<{
323
+ jaml: z.ZodString;
324
+ }, z.core.$strip>;
325
+ description: string;
193
326
  };
194
- description: string;
195
327
  };
196
- };
197
- export type BalatroCatalog = typeof balatroCatalog;
198
- export type BalatroComponentName = keyof BalatroCatalog;
199
- /**
200
- * Extract the props type for a given catalog component.
201
- */
202
- export type CatalogProps<K extends BalatroComponentName> = BalatroCatalog[K] extends {
203
- props: infer P;
204
- } ? P : never;
328
+ }>;
@@ -1,30 +1,5 @@
1
- export { render, renderList, defineCatalog } from './engine.js';
2
- export type { JsonNode, ComponentProps, Registry } from './engine.js';
3
- export { balatroCatalog } from './catalog.js';
4
- export type { BalatroCatalog, BalatroComponentName, CatalogProps } from './catalog.js';
5
- export { balatroRegistry } from './registry.js';
6
- export type { BalatroRegistry } from './registry.js';
7
- export { Panel, Stack, Grid, Text, Spacer, Divider, Badge, } from './components/layout.js';
8
- export type { PanelProps, StackProps, GridProps, TextProps, SpacerProps, DividerProps, BadgeProps, } from './components/layout.js';
9
- export { SearchStats, ErrorBanner, LoadingPulse, SeedCard, SeedList, JokerBadge, EditionBadge, } from './components/domain.js';
10
- export type { SearchStatsProps, ErrorBannerProps, LoadingPulseProps, SeedCardProps, SeedListProps, JokerBadgeProps, EditionBadgeProps, } from './components/domain.js';
11
- export { JamlGameCard } from './components/game.js';
12
- export type { JamlGameCardProps } from './components/game.js';
13
- export { JammyMascot, JammyOrbitalMenu } from './components/mascot.js';
14
- export type { JammyMascotProps, JammyOrbitalMenuProps, JammyOrbitalMenuItem, } from './components/mascot.js';
15
- export { JokerCard, SynergyCard, BossBlindCard, DeckCard, StakeCard, StrategyAdvisor, } from './components/reference.js';
16
- export type { JokerCardProps, SynergyCardProps, BossBlindCardProps, DeckCardProps, StakeCardProps, StrategyAdvisorProps, } from './components/reference.js';
17
- export { buildSearchSpec } from './builders/search.js';
18
- export type { SearchResult, SearchParams } from './builders/search.js';
19
- export { buildEncyclopediaSpec } from './builders/encyclopedia.js';
20
- export type { EncyclopediaParams } from './builders/encyclopedia.js';
21
- export { buildAnalyzerSpec } from './builders/analyzer.js';
22
- export type { AnalyzerResult } from './builders/analyzer.js';
23
- export { JOKERS, getJoker, getJokersByCategory, getSynergies } from './knowledge/jokers.js';
24
- export type { JokerInfo, JokerRarity, JokerCategory } from './knowledge/jokers.js';
25
- export { SYNERGIES, findSynergies, findSynergiesByTag, getRecommendedSynergies } from './knowledge/synergies.js';
26
- export type { SynergyInfo } from './knowledge/synergies.js';
27
- export { DECKS, STAKES, getDeck, getStake } from './knowledge/decks.js';
28
- export type { DeckInfo, StakeInfo } from './knowledge/decks.js';
29
- export { BOSSES, FINISHERS, getBoss, getBossesByCategory, getAllBosses } from './knowledge/bosses.js';
30
- export type { BossInfo, BossCategory } from './knowledge/bosses.js';
1
+ export { jimboCatalog } from './catalog.js';
2
+ export { jimboRegistry, jimboHandlers, executeJimboAction, } from './registry.js';
3
+ export { JimboJsonRenderer, type JimboJsonRendererProps, } from './JimboJsonRenderer.js';
4
+ export { defineCatalog, defineDirective, validateSpec, autoFixSpec, buildUserPrompt, type Catalog, type Spec, type InferSpec, type InferCatalogComponents, } from '@json-render/core';
5
+ export { Renderer, defineRegistry, createRenderer, StateProvider, JSONUIProvider, useStateStore, useStateValue, type ReactSpec, type ReactSchema, } from '@json-render/react';
@@ -1,14 +1,4 @@
1
- import { Registry } from './engine.js';
2
1
  /**
3
- * Balatro Component Registry
4
- *
5
- * Maps catalog component names to real React implementations.
6
- * This is the ONLY place where catalog names are bound to code.
7
- * Add new components here → they instantly work in json-render specs.
2
+ * Official Jimbo Component Registry for Vercel `@json-render/react`.
8
3
  */
9
- export declare const balatroRegistry: Registry;
10
- /**
11
- * Type-safe registry helper.
12
- * Ensures all catalog names have a matching component at compile time.
13
- */
14
- export type BalatroRegistry = typeof balatroRegistry;
4
+ export declare const jimboRegistry: import('@json-render/react').ComponentRegistry, jimboHandlers: (getSetState: () => import('@json-render/react').SetState | undefined, getState: () => import('@json-render/core').StateModel) => Record<string, (params: Record<string, unknown>) => Promise<void>>, executeJimboAction: (actionName: string, params: Record<string, unknown> | undefined, setState: import('@json-render/react').SetState, state?: import('@json-render/core').StateModel) => Promise<void>;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * A daily ritual is a single JAML file. Nothing is hardcoded: the filter body is
3
+ * real, engine-valid JAML (deck/stake/must/should), and the presentation metadata
4
+ * rides as `# key: value` header comments so the validator never sees a key it
5
+ * would reject. One `.jaml` file fully defines a ritual — title, flavor, hint, the
6
+ * cards to show, and the filter to search.
7
+ *
8
+ * This is the shape `DailyRitualView` renders and the app authors in the UX. It is
9
+ * pure parsing — no React, no hooks, no engine — so it runs in Node and the browser
10
+ * alike and never needs a client boundary.
11
+ */
12
+ export interface DailyRitual {
13
+ /** Display title. From the JAML `name:` key, or a `# title:` comment, else "Daily Ritual". */
14
+ title: string;
15
+ /** One-line summary. From the JAML `description:` key or a `# description:` comment. */
16
+ description?: string;
17
+ /** Metadata carried as header comments so the filter stays engine-valid. */
18
+ emoji?: string;
19
+ flavor?: string;
20
+ hint?: string;
21
+ /** Rank to spotlight as a card sprite, e.g. "2", "K", "A". */
22
+ focusRank?: string;
23
+ /** Joker to spotlight as a card sprite, e.g. "WeeJoker". */
24
+ targetJoker?: string;
25
+ /** Optional theme label, e.g. "Foil Friday". */
26
+ theme?: string;
27
+ /** The raw JAML source, exactly as authored — the single source of truth. */
28
+ jaml: string;
29
+ }
30
+ /**
31
+ * Parse a ritual from its JAML source.
32
+ *
33
+ * Two channels, by design:
34
+ * - `# key: value` comment lines carry presentation metadata (emoji, flavor, hint,
35
+ * focusRank, targetJoker, theme, and optionally title/description).
36
+ * - top-level `name:` and `description:` JAML keys are read as title/description
37
+ * when no comment overrides them, so a ritual authored as plain JAML still titles
38
+ * itself. Only single-line scalars are read here; a block scalar (`>` or `|`) is
39
+ * left to the metadata comment instead of half-parsed.
40
+ *
41
+ * The raw text is preserved verbatim on `.jaml`; the filter body is never rewritten.
42
+ */
43
+ export declare function parseRitual(jamlText: string): DailyRitual;