jaml-ui 0.21.2 → 0.21.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.
Files changed (119) hide show
  1. package/DESIGN.md +36 -6
  2. package/dist/components/JamlAnalyzerFullscreen.d.ts +1 -1
  3. package/dist/components/JamlAnalyzerFullscreen.js +5 -81
  4. package/dist/components/JamlCurator.js +1 -1
  5. package/dist/components/JamlSpeedometer.d.ts +7 -2
  6. package/dist/components/JamlSpeedometer.js +8 -15
  7. package/dist/components/jamlMap/JamlMapEditor.js +42 -38
  8. package/dist/components/jamlMap/JokerPicker.js +2 -2
  9. package/dist/components/jamlMap/MysterySlot.js +4 -4
  10. package/dist/hooks/useSearch.d.ts +2 -1
  11. package/dist/hooks/useSearch.js +111 -8
  12. package/dist/lib/SpriteMapper.d.ts +10 -0
  13. package/dist/lib/SpriteMapper.js +48 -0
  14. package/dist/lib/cardParser.d.ts +8 -0
  15. package/dist/lib/cardParser.js +65 -0
  16. package/dist/lib/classes/BuyMetaData.d.ts +11 -0
  17. package/dist/lib/classes/BuyMetaData.js +1 -0
  18. package/dist/lib/config.d.ts +13 -0
  19. package/dist/lib/config.js +15 -0
  20. package/dist/lib/const.d.ts +61 -0
  21. package/dist/lib/const.js +521 -0
  22. package/dist/lib/data/constants.d.ts +11 -0
  23. package/dist/lib/data/constants.js +17 -0
  24. package/dist/lib/hooks/useDragScroll.d.ts +4 -0
  25. package/dist/lib/hooks/useDragScroll.js +48 -0
  26. package/dist/lib/hooks/useJamlFilter.d.ts +48 -0
  27. package/dist/lib/hooks/useJamlFilter.js +219 -0
  28. package/dist/lib/hooks/useSeedAnalyzer.d.ts +6 -0
  29. package/dist/lib/hooks/useSeedAnalyzer.js +48 -0
  30. package/dist/lib/jaml/jamlCompletion.d.ts +12 -0
  31. package/dist/lib/jaml/jamlCompletion.js +13 -0
  32. package/dist/lib/jaml/jamlData.d.ts +3 -0
  33. package/dist/lib/jaml/jamlData.js +8 -0
  34. package/dist/lib/jaml/jamlObjectives.d.ts +13 -0
  35. package/dist/lib/jaml/jamlObjectives.js +97 -0
  36. package/dist/lib/jaml/jamlParser.d.ts +14 -0
  37. package/dist/lib/jaml/jamlParser.js +47 -0
  38. package/dist/lib/jaml/jamlPresets.d.ts +8 -0
  39. package/dist/lib/jaml/jamlPresets.js +61 -0
  40. package/dist/lib/jaml/jamlSchema.d.ts +54 -0
  41. package/dist/lib/jaml/jamlSchema.js +91 -0
  42. package/dist/lib/parseDailyRitual.d.ts +45 -0
  43. package/dist/lib/parseDailyRitual.js +69 -0
  44. package/dist/lib/tts/getRevealPos.d.ts +5 -0
  45. package/dist/lib/tts/getRevealPos.js +16 -0
  46. package/dist/lib/tts/splitTtsDisplay.d.ts +19 -0
  47. package/dist/lib/tts/splitTtsDisplay.js +35 -0
  48. package/dist/lib/types.d.ts +121 -0
  49. package/dist/lib/types.js +1 -0
  50. package/dist/lib/utils.d.ts +2 -0
  51. package/dist/lib/utils.js +5 -0
  52. package/dist/ui/JimboIconButton.d.ts +10 -0
  53. package/dist/ui/JimboIconButton.js +28 -0
  54. package/dist/ui/JimboInputModal.d.ts +13 -0
  55. package/dist/ui/JimboInputModal.js +60 -0
  56. package/dist/ui/JimboSelect.d.ts +18 -0
  57. package/dist/ui/JimboSelect.js +43 -0
  58. package/dist/ui/PanelSplitter.d.ts +7 -0
  59. package/dist/ui/PanelSplitter.js +76 -0
  60. package/dist/ui/ide/AgnosticSeedCard.d.ts +19 -0
  61. package/dist/ui/ide/AgnosticSeedCard.js +48 -0
  62. package/dist/ui/ide/DeckSprite.d.ts +1 -0
  63. package/dist/ui/ide/DeckSprite.js +2 -0
  64. package/dist/ui/ide/JamlBuilder.d.ts +1 -0
  65. package/dist/ui/ide/JamlBuilder.js +112 -0
  66. package/dist/ui/ide/JamlEditor.d.ts +7 -0
  67. package/dist/ui/ide/JamlEditor.js +496 -0
  68. package/dist/ui/ide/JamlEditorMonaco.d.ts +8 -0
  69. package/dist/ui/ide/JamlEditorMonaco.js +78 -0
  70. package/dist/ui/ide/WasmStatus.d.ts +1 -0
  71. package/dist/ui/ide/WasmStatus.js +42 -0
  72. package/dist/ui/jimbo.css +336 -31
  73. package/dist/ui/jimboApp.d.ts +12 -0
  74. package/dist/ui/jimboApp.js +15 -0
  75. package/dist/ui/jimboInfoCard.d.ts +31 -0
  76. package/dist/ui/jimboInfoCard.js +26 -0
  77. package/dist/ui/jimboInset.d.ts +9 -0
  78. package/dist/ui/jimboInset.js +9 -0
  79. package/dist/ui/jimboSectionHeader.d.ts +11 -0
  80. package/dist/ui/jimboSectionHeader.js +9 -0
  81. package/dist/ui/jimboStatGrid.d.ts +13 -0
  82. package/dist/ui/jimboStatGrid.js +9 -0
  83. package/dist/ui/jimboWordmark.d.ts +10 -0
  84. package/dist/ui/jimboWordmark.js +9 -0
  85. package/dist/ui/mascot/JammySpeechBox.d.ts +9 -0
  86. package/dist/ui/mascot/JammySpeechBox.js +30 -0
  87. package/dist/ui/mascot/SeedMascot.d.ts +37 -0
  88. package/dist/ui/mascot/SeedMascot.js +17 -0
  89. package/dist/ui/mascot/index.d.ts +3 -0
  90. package/dist/ui/mascot/index.js +3 -0
  91. package/dist/ui/mascot/menuConfig.d.ts +102 -0
  92. package/dist/ui/mascot/menuConfig.js +12 -0
  93. package/dist/ui/panel.d.ts +1 -1
  94. package/dist/ui/panel.js +3 -21
  95. package/dist/ui/radial/RadialBadge.d.ts +17 -0
  96. package/dist/ui/radial/RadialBadge.js +43 -0
  97. package/dist/ui/radial/RadialBreadcrumb.d.ts +12 -0
  98. package/dist/ui/radial/RadialBreadcrumb.js +18 -0
  99. package/dist/ui/radial/RadialButton.d.ts +61 -0
  100. package/dist/ui/radial/RadialButton.js +102 -0
  101. package/dist/ui/radial/RadialMenu.d.ts +38 -0
  102. package/dist/ui/radial/RadialMenu.js +168 -0
  103. package/dist/ui/radial/RadialPill.d.ts +18 -0
  104. package/dist/ui/radial/RadialPill.js +15 -0
  105. package/dist/ui/radial/index.d.ts +16 -0
  106. package/dist/ui/radial/index.js +18 -0
  107. package/dist/ui/radial/radialMenuStore.d.ts +31 -0
  108. package/dist/ui/radial/radialMenuStore.js +122 -0
  109. package/dist/ui/radial/radialMenuViewport.d.ts +6 -0
  110. package/dist/ui/radial/radialMenuViewport.js +59 -0
  111. package/dist/ui/radial/useRadialMenu.d.ts +35 -0
  112. package/dist/ui/radial/useRadialMenu.js +107 -0
  113. package/dist/ui/showcase.d.ts +14 -6
  114. package/dist/ui/showcase.js +13 -21
  115. package/dist/ui/tokens.d.ts +5 -19
  116. package/dist/ui/tokens.js +5 -21
  117. package/dist/ui.d.ts +14 -0
  118. package/dist/ui.js +15 -0
  119. package/package.json +145 -146
@@ -1,27 +1,19 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { JimboColorOption } from './tokens.js';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
3
  import { JimboButton } from './panel.js';
5
4
  import { JimboSprite } from './sprites.js';
6
- const TONE_COLOR = {
7
- blue: JimboColorOption.BLUE,
8
- red: JimboColorOption.RED,
9
- gold: JimboColorOption.GOLD,
10
- green: JimboColorOption.GREEN,
11
- };
12
- const DEFAULT_STATS = { searched: '0', matches: '0', speed: '0' };
5
+ import { JimboText } from './jimboText.js';
6
+ import { JimboApp, JimboAppFooter } from './jimboApp.js';
7
+ import { JimboSectionHeader } from './jimboSectionHeader.js';
8
+ import { JimboInfoCard, JimboInfoCardBody, JimboInfoCardTitle, JimboInfoCardSub, JimboInfoCardAside } from './jimboInfoCard.js';
13
9
  /**
14
- * Landing/showcase screen for the seed curator.
15
- * All styling via jimbo.css `.j-showcase` classes zero inline styles.
10
+ * Landing/showcase screen 375×667, NO SCROLL.
11
+ * Every pixel accounted for. No flex stretching. No gaps.
16
12
  */
17
- export function Showcase({ hotFilters = [], recentFinds = [], stats = DEFAULT_STATS, onNewSearch, onBrowseFilters, onBack, }) {
18
- const C = JimboColorOption;
19
- return (_jsxs("div", { className: "j-showcase", children: [_jsxs("div", { className: "j-showcase__scroll", children: [_jsxs("div", { className: "j-showcase__wordmark", children: [_jsx("div", { className: "j-showcase__wordmark-title", children: "Balatro" }), _jsx("div", { className: "j-showcase__wordmark-sub", children: "Seed \u00B7 Curator" })] }), _jsx("div", { className: "j-showcase__stats", children: [
20
- [stats.searched, 'searched'],
21
- [stats.matches, 'matches'],
22
- [stats.speed, 'speed'],
23
- ].map(([n, l]) => (_jsxs("div", { children: [_jsx("div", { className: "j-showcase__stat-value", children: n }), _jsx("div", { className: "j-showcase__stat-label", children: l })] }, l))) }), _jsxs("div", { className: "j-showcase__section-header", children: [_jsx("div", { className: "j-showcase__section-tag", style: { background: C.BLUE }, children: "Hot Filters" }), _jsx("div", { className: "j-showcase__section-rule", style: { background: `${C.BLUE}55` } })] }), _jsx("div", { className: "j-showcase__filter-list", children: hotFilters.map((f, i) => {
24
- const tColor = TONE_COLOR[f.tone];
25
- return (_jsxs("div", { className: "j-showcase__filter-card", style: { border: `2px solid ${tColor}` }, children: [_jsx("div", { className: "j-showcase__filter-sprites", children: f.sample.map((name, j) => (_jsx("div", { className: "j-showcase__filter-sprite", children: _jsx(JimboSprite, { name: name, width: 28 }) }, j))) }), _jsxs("div", { className: "j-showcase__filter-info", children: [_jsx("div", { className: "j-showcase__filter-name", children: f.name }), _jsxs("div", { className: "j-showcase__filter-author", children: ["by ", f.author] })] }), _jsxs("div", { className: "j-showcase__filter-hits", children: [_jsx("div", { className: "j-showcase__filter-hits-value", style: { color: tColor }, children: f.hits }), _jsx("div", { className: "j-showcase__filter-hits-label", children: "seeds" })] })] }, i));
26
- }) }), _jsxs("div", { className: "j-showcase__section-header", children: [_jsx("div", { className: "j-showcase__section-tag", style: { background: C.GREEN }, children: "Recent Finds" }), _jsx("div", { className: "j-showcase__section-rule", style: { background: `${C.GREEN}55` } })] }), _jsx("div", { className: "j-showcase__recent", children: recentFinds.length === 0 ? (_jsx("div", { children: "No recent finds yet." })) : recentFinds.map((r, i) => (_jsxs("div", { children: [_jsx("span", { style: { color: C.GOLD_TEXT }, children: r.seed }), ' · ', r.filterName, r.score > 0 && _jsxs("span", { style: { color: C.GREEN_TEXT }, children: [" +", r.score] })] }, i))) }), _jsx("div", { style: { height: 16 } })] }), _jsxs("div", { className: "j-showcase__actions", children: [_jsx(JimboButton, { tone: "green", fullWidth: true, size: "md", onClick: onNewSearch, children: "New Search" }), _jsx(JimboButton, { tone: "blue", fullWidth: true, size: "md", onClick: onBrowseFilters, children: "Browse Filters" }), _jsx(JimboButton, { tone: "orange", fullWidth: true, size: "md", onClick: onBack, children: "Back" })] })] }));
13
+ export function Showcase({ title = 'Balatro', subtitle = 'Seed Curator', hotFilters = [], recentFinds = [], mcpInfo, onNewSearch, onBrowseFilters, onFilterClick, }) {
14
+ return (_jsxs(JimboApp, { children: [_jsxs("div", { style: { padding: '12px 12px 8px', display: 'flex', flexDirection: 'column', gap: 6 }, children: [_jsxs("div", { className: "j-text-center", children: [_jsx(JimboText, { size: "lg", tone: "gold", children: title }), _jsx(JimboText, { size: "micro", tone: "grey", style: { letterSpacing: 3 }, children: subtitle })] }), mcpInfo && (_jsxs("div", { className: "j-flex j-justify-between", style: {
15
+ padding: '3px 8px',
16
+ background: 'var(--j-dark-grey)', borderRadius: 4,
17
+ border: '1px solid var(--j-panel-edge)',
18
+ }, children: [_jsx(JimboText, { size: "micro", tone: "purple", children: mcpInfo.engine }), _jsx(JimboText, { size: "micro", tone: "grey", children: mcpInfo.features })] })), hotFilters.length > 0 && (_jsxs(_Fragment, { children: [_jsx(JimboSectionHeader, { label: "Filters", tone: "blue" }), _jsx("div", { className: "j-flex-col", style: { gap: 4 }, children: hotFilters.slice(0, 4).map((f, i) => (_jsxs(JimboInfoCard, { tone: f.tone, onClick: () => onFilterClick?.(f, i), style: { cursor: onFilterClick ? 'pointer' : undefined }, children: [_jsx("div", { className: "j-flex j-gap-xs", children: f.sample.slice(0, 2).map((name, j) => (_jsx("div", { style: { width: 22, height: 28, display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: _jsx(JimboSprite, { name: name, width: 20 }) }, j))) }), _jsxs(JimboInfoCardBody, { children: [_jsx(JimboInfoCardTitle, { children: f.name }), _jsxs(JimboInfoCardSub, { children: ["by ", f.author] })] }), _jsx(JimboInfoCardAside, { children: _jsx(JimboText, { size: "xs", tone: f.tone === 'gold' ? 'gold' : f.tone, children: f.hits }) })] }, i))) })] })), recentFinds.length > 0 && (_jsxs(_Fragment, { children: [_jsx(JimboSectionHeader, { label: "Recent", tone: "green" }), _jsx("div", { style: { lineHeight: 1.5 }, children: recentFinds.slice(0, 3).map((r, i) => (_jsxs("div", { className: "j-flex j-gap-sm", children: [_jsx(JimboText, { size: "micro", tone: "gold", children: r.seed }), _jsx(JimboText, { size: "micro", tone: "grey", children: r.filterName }), r.score > 0 && _jsxs(JimboText, { size: "micro", tone: "green", children: ["+", r.score] })] }, i))) })] }))] }), _jsxs(JimboAppFooter, { children: [_jsx(JimboButton, { tone: "green", fullWidth: true, size: "lg", onClick: onNewSearch, children: "New Search" }), _jsx(JimboButton, { tone: "blue", fullWidth: true, size: "lg", onClick: onBrowseFilters, children: "Browse Filters" })] })] }));
27
19
  }
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Balatro design tokens — colors eyedropped from actual game pixels.
3
3
  * Do NOT replace with Lua HEX values; the game's shader pipeline transforms them.
4
+ *
5
+ * IMPORTANT: For DOM components, use CSS custom properties (--j-red, etc.)
6
+ * from jimbo.css. Only use these JS constants for contexts that cannot use
7
+ * CSS — such as R3F/Canvas, inline SVG fills, or imperative animation APIs.
4
8
  */
5
9
  export declare const JimboColorOption: {
6
10
  readonly RED: "#ff4c40";
@@ -34,20 +38,8 @@ export declare const JimboColorOption: {
34
38
  readonly PLANET_BUTTON_DARK: "#00657c";
35
39
  readonly SPECTRAL_BUTTON_DARK: "#14449e";
36
40
  };
37
- export declare const JAML_COLORS: {
38
- readonly RED: "#ff4c40";
39
- readonly BLUE: "#0093ff";
40
- readonly GREEN: "#429f79";
41
- readonly ORANGE: "#ff9800";
42
- readonly PURPLE: "#9e74ce";
43
- readonly WHITE: "#ffffff";
44
- readonly DARK_RED: "#a02721";
45
- readonly DARK_BLUE: "#0057a1";
46
- readonly DARK_ORANGE: "#a05b00";
47
- readonly DARK_GREEN: "#215f46";
48
- readonly DARK_PURPLE: "#5e437e";
49
- };
50
41
  export type JimboPaletteColor = keyof typeof JimboColorOption;
42
+ /** Convert hex to rgba for inline styles in Canvas/SVG/R3F contexts. */
51
43
  export declare function withAlpha(hex: string, alpha: number): string;
52
44
  export declare const JIMBO_ANIMATIONS: {
53
45
  readonly JUICE_UP_SCALE: 1.05;
@@ -65,9 +57,3 @@ export declare const JIMBO_ANIMATIONS: {
65
57
  readonly LETTER_POP_RATE: 3;
66
58
  readonly LETTER_BUMP_RATE: 2.666;
67
59
  };
68
- export type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'action' | 'back' | 'ghost';
69
- export declare const BUTTON_COLORS: Record<ButtonVariant, {
70
- bg: string;
71
- hover: string;
72
- text: string;
73
- }>;
package/dist/ui/tokens.js CHANGED
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * Balatro design tokens — colors eyedropped from actual game pixels.
3
3
  * Do NOT replace with Lua HEX values; the game's shader pipeline transforms them.
4
+ *
5
+ * IMPORTANT: For DOM components, use CSS custom properties (--j-red, etc.)
6
+ * from jimbo.css. Only use these JS constants for contexts that cannot use
7
+ * CSS — such as R3F/Canvas, inline SVG fills, or imperative animation APIs.
4
8
  */
5
9
  export const JimboColorOption = {
6
10
  RED: '#ff4c40',
@@ -34,19 +38,7 @@ export const JimboColorOption = {
34
38
  PLANET_BUTTON_DARK: '#00657c',
35
39
  SPECTRAL_BUTTON_DARK: '#14449e',
36
40
  };
37
- export const JAML_COLORS = {
38
- RED: JimboColorOption.RED,
39
- BLUE: JimboColorOption.BLUE,
40
- GREEN: JimboColorOption.GREEN,
41
- ORANGE: JimboColorOption.ORANGE,
42
- PURPLE: JimboColorOption.PURPLE,
43
- WHITE: JimboColorOption.WHITE,
44
- DARK_RED: JimboColorOption.DARK_RED,
45
- DARK_BLUE: JimboColorOption.DARK_BLUE,
46
- DARK_ORANGE: JimboColorOption.DARK_ORANGE,
47
- DARK_GREEN: JimboColorOption.DARK_GREEN,
48
- DARK_PURPLE: JimboColorOption.DARK_PURPLE,
49
- };
41
+ /** Convert hex to rgba for inline styles in Canvas/SVG/R3F contexts. */
50
42
  export function withAlpha(hex, alpha) {
51
43
  const clean = hex.replace('#', '');
52
44
  const r = parseInt(clean.slice(0, 2), 16);
@@ -70,11 +62,3 @@ export const JIMBO_ANIMATIONS = {
70
62
  LETTER_POP_RATE: 3,
71
63
  LETTER_BUMP_RATE: 2.666,
72
64
  };
73
- export const BUTTON_COLORS = {
74
- primary: { bg: JimboColorOption.RED, hover: JimboColorOption.DARK_RED, text: JimboColorOption.WHITE },
75
- secondary: { bg: JimboColorOption.BLUE, hover: JimboColorOption.DARK_BLUE, text: JimboColorOption.WHITE },
76
- danger: { bg: JimboColorOption.RED, hover: JimboColorOption.DARK_RED, text: JimboColorOption.WHITE },
77
- action: { bg: JimboColorOption.RED, hover: JimboColorOption.DARK_RED, text: JimboColorOption.WHITE },
78
- back: { bg: JimboColorOption.ORANGE, hover: JimboColorOption.DARK_ORANGE, text: JimboColorOption.WHITE },
79
- ghost: { bg: 'transparent', hover: 'rgba(255,255,255,0.1)', text: JimboColorOption.WHITE },
80
- };
package/dist/ui.d.ts CHANGED
@@ -15,3 +15,17 @@ export * from './ui/footer.js';
15
15
  export * from './ui/sprites.js';
16
16
  export * from './ui/showcase.js';
17
17
  export * from './ui/jimboCopyRow.js';
18
+ export * from './ui/jimboApp.js';
19
+ export * from './ui/jimboWordmark.js';
20
+ export * from './ui/jimboStatGrid.js';
21
+ export * from './ui/jimboSectionHeader.js';
22
+ export * from './ui/jimboInfoCard.js';
23
+ export * from './ui/jimboInset.js';
24
+ export * from './ui/ide/JamlBuilder.js';
25
+ export * from './ui/ide/JamlEditor.js';
26
+ export * from './ui/ide/WasmStatus.js';
27
+ export * from './ui/ide/AgnosticSeedCard.js';
28
+ export * from './ui/JimboIconButton.js';
29
+ export * from './ui/JimboInputModal.js';
30
+ export * from './ui/JimboSelect.js';
31
+ export * from './ui/PanelSplitter.js';
package/dist/ui.js CHANGED
@@ -16,3 +16,18 @@ export * from './ui/footer.js';
16
16
  export * from './ui/sprites.js';
17
17
  export * from './ui/showcase.js';
18
18
  export * from './ui/jimboCopyRow.js';
19
+ // Primitives
20
+ export * from './ui/jimboApp.js';
21
+ export * from './ui/jimboWordmark.js';
22
+ export * from './ui/jimboStatGrid.js';
23
+ export * from './ui/jimboSectionHeader.js';
24
+ export * from './ui/jimboInfoCard.js';
25
+ export * from './ui/jimboInset.js';
26
+ export * from './ui/ide/JamlBuilder.js';
27
+ export * from './ui/ide/JamlEditor.js';
28
+ export * from './ui/ide/WasmStatus.js';
29
+ export * from './ui/ide/AgnosticSeedCard.js';
30
+ export * from './ui/JimboIconButton.js';
31
+ export * from './ui/JimboInputModal.js';
32
+ export * from './ui/JimboSelect.js';
33
+ export * from './ui/PanelSplitter.js';
package/package.json CHANGED
@@ -1,146 +1,145 @@
1
- {
2
- "name": "jaml-ui",
3
- "version": "0.21.2",
4
- "description": "Balatro rendering components, sprite metadata, and optional Motely helpers for React apps.",
5
- "type": "module",
6
- "main": "./dist/index.js",
7
- "types": "./dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
- },
13
- "./core": {
14
- "types": "./dist/core.d.ts",
15
- "import": "./dist/core.js"
16
- },
17
- "./motely": {
18
- "types": "./dist/motely.d.ts",
19
- "import": "./dist/motely.js"
20
- },
21
- "./ui": {
22
- "types": "./dist/ui.d.ts",
23
- "import": "./dist/ui.js"
24
- },
25
- "./r3f": {
26
- "types": "./dist/r3f.d.ts",
27
- "import": "./dist/r3f.js"
28
- },
29
- "./fonts.css": "./fonts.css",
30
- "./jaml.schema.json": "./jaml.schema.json",
31
- "./package.json": "./package.json"
32
- },
33
- "sideEffects": [
34
- "./fonts.css"
35
- ],
36
- "files": [
37
- "dist",
38
- "assets/*.png",
39
- "assets/fonts",
40
- "fonts.css",
41
- "dist/ui/jimbo.css",
42
- "jaml.schema.json",
43
- "README.md",
44
- "DESIGN.md",
45
- "LICENSE"
46
- ],
47
- "scripts": {
48
- "build": "tsc --pretty false && node -e \"const fs=require('fs');fs.mkdirSync('dist/ui',{recursive:true});fs.copyFileSync('src/ui/jimbo.css','dist/ui/jimbo.css');fs.copyFileSync('node_modules/motely-wasm/jaml.schema.json','jaml.schema.json');\"",
49
- "dev": "tsc --watch",
50
- "demo": "vite --config demo/vite.config.ts",
51
- "typecheck": "tsc --noEmit --pretty false",
52
- "prepack": "npm run build",
53
- "storybook": "storybook dev -p 6006",
54
- "build-storybook": "storybook build"
55
- },
56
- "engines": {
57
- "node": ">=18"
58
- },
59
- "publishConfig": {
60
- "access": "public"
61
- },
62
- "repository": {
63
- "type": "git",
64
- "url": "https://github.com/OptimusPi/jaml-ui"
65
- },
66
- "homepage": "https://github.com/OptimusPi/jaml-ui#readme",
67
- "bugs": {
68
- "url": "https://github.com/OptimusPi/jaml-ui/issues"
69
- },
70
- "keywords": [
71
- "balatro",
72
- "jaml",
73
- "motely",
74
- "seed",
75
- "card",
76
- "sprite",
77
- "ui"
78
- ],
79
- "author": "pifreak",
80
- "license": "MIT",
81
- "peerDependencies": {
82
- "@monaco-editor/react": ">=4.0.0",
83
- "@react-spring/three": ">=9.0.0",
84
- "@react-three/drei": ">=9.0.0",
85
- "@react-three/fiber": ">=8.0.0",
86
- "monaco-editor": ">=0.50.0",
87
- "motely-wasm": "^14.3.3",
88
- "react": "^18.2.0 || ^19.0.0",
89
- "react-dom": "^18.2.0 || ^19.0.0",
90
- "react-icons": ">=5.0.0",
91
- "three": ">=0.150.0"
92
- },
93
- "peerDependenciesMeta": {
94
- "@react-spring/three": {
95
- "optional": true
96
- },
97
- "@react-three/fiber": {
98
- "optional": true
99
- },
100
- "motely-wasm": {
101
- "optional": true
102
- },
103
- "react-icons": {
104
- "optional": true
105
- },
106
- "three": {
107
- "optional": true
108
- },
109
- "@react-three/drei": {
110
- "optional": true
111
- }
112
- },
113
- "devDependencies": {
114
- "@google/design.md": "^0.1.1",
115
- "@monaco-editor/react": "^4.7.0",
116
- "@react-spring/three": "^10.0.3",
117
- "@react-three/fiber": "^9.6.0",
118
- "@types/node": "^25.6.0",
119
- "@types/react": "^19.2.14",
120
- "@types/react-dom": "^19.2.3",
121
- "@types/three": "^0.184.0",
122
- "@vitejs/plugin-react": "^5.0.4",
123
- "monaco-editor": "^0.55.1",
124
- "motely-wasm": "^14.3.3",
125
- "react": "^19.2.4",
126
- "react-dom": "^19.2.4",
127
- "react-icons": "^5.6.0",
128
- "three": "^0.184.0",
129
- "typescript": "^5.9.3",
130
- "vite": "^8.0.9",
131
- "storybook": "^10.3.6",
132
- "@storybook/react-vite": "^10.3.6",
133
- "@chromatic-com/storybook": "^5.1.2",
134
- "@storybook/addon-vitest": "^10.3.6",
135
- "@storybook/addon-a11y": "^10.3.6",
136
- "@storybook/addon-docs": "^10.3.6",
137
- "@storybook/addon-onboarding": "^10.3.6",
138
- "vitest": "^4.1.5",
139
- "playwright": "^1.59.1",
140
- "@vitest/browser-playwright": "^4.1.5",
141
- "@vitest/coverage-v8": "^4.1.5"
142
- },
143
- "dependencies": {
144
- "@react-three/drei": ">=9.0.0"
145
- }
146
- }
1
+ {
2
+ "name": "jaml-ui",
3
+ "version": "0.21.4",
4
+ "description": "Balatro rendering components, sprite metadata, and optional Motely helpers for React apps.",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./motely": {
16
+ "import": "./dist/motely.js",
17
+ "require": "./dist/motely.js",
18
+ "types": "./dist/motely.d.ts",
19
+ "default": "./dist/motely.js"
20
+ },
21
+ "./fonts.css": "./fonts.css",
22
+ "./jaml.schema.json": "./jaml.schema.json"
23
+ },
24
+ "sideEffects": [
25
+ "./fonts.css"
26
+ ],
27
+ "files": [
28
+ "dist",
29
+ "assets/*.png",
30
+ "assets/fonts",
31
+ "fonts.css",
32
+ "dist/ui/jimbo.css",
33
+ "jaml.schema.json",
34
+ "README.md",
35
+ "DESIGN.md",
36
+ "LICENSE"
37
+ ],
38
+ "scripts": {
39
+ "build": "tsc --pretty false && node -e \"const fs=require('fs');fs.mkdirSync('dist/ui',{recursive:true});fs.copyFileSync('src/ui/jimbo.css','dist/ui/jimbo.css');fs.copyFileSync('node_modules/motely-wasm/jaml.schema.json','jaml.schema.json');\"",
40
+ "dev": "tsc --watch",
41
+ "demo": "vite --config demo/vite.config.ts",
42
+ "typecheck": "tsc --noEmit --pretty false",
43
+ "prepack": "npm run build",
44
+ "storybook": "storybook dev -p 6006",
45
+ "build-storybook": "storybook build",
46
+ "lint": "eslint ."
47
+ },
48
+ "engines": {
49
+ "node": ">=18"
50
+ },
51
+ "publishConfig": {
52
+ "access": "public"
53
+ },
54
+ "repository": {
55
+ "type": "git",
56
+ "url": "https://github.com/OptimusPi/jaml-ui"
57
+ },
58
+ "homepage": "https://github.com/OptimusPi/jaml-ui#readme",
59
+ "bugs": {
60
+ "url": "https://github.com/OptimusPi/jaml-ui/issues"
61
+ },
62
+ "keywords": [
63
+ "balatro",
64
+ "jaml",
65
+ "motely",
66
+ "seed",
67
+ "card",
68
+ "sprite",
69
+ "ui"
70
+ ],
71
+ "author": "pifreak",
72
+ "license": "MIT",
73
+ "peerDependencies": {
74
+ "@monaco-editor/react": ">=4.0.0",
75
+ "@react-spring/three": ">=9.0.0",
76
+ "@react-three/drei": ">=9.0.0",
77
+ "@react-three/fiber": ">=8.0.0",
78
+ "monaco-editor": ">=0.50.0",
79
+ "motely-wasm": "^14.3.3",
80
+ "react": "^18.2.0 || ^19.0.0",
81
+ "react-dom": "^18.2.0 || ^19.0.0",
82
+ "react-icons": ">=5.0.0",
83
+ "three": ">=0.150.0"
84
+ },
85
+ "peerDependenciesMeta": {
86
+ "@react-spring/three": {
87
+ "optional": true
88
+ },
89
+ "@react-three/fiber": {
90
+ "optional": true
91
+ },
92
+ "motely-wasm": {
93
+ "optional": true
94
+ },
95
+ "react-icons": {
96
+ "optional": true
97
+ },
98
+ "three": {
99
+ "optional": true
100
+ },
101
+ "@react-three/drei": {
102
+ "optional": true
103
+ }
104
+ },
105
+ "devDependencies": {
106
+ "@chromatic-com/storybook": "^5.1.2",
107
+ "@google/design.md": "^0.1.1",
108
+ "@monaco-editor/react": "^4.7.0",
109
+ "@react-spring/three": "^10.0.3",
110
+ "@react-three/fiber": "^9.6.0",
111
+ "@storybook/addon-a11y": "^10.3.6",
112
+ "@storybook/addon-docs": "^10.3.6",
113
+ "@storybook/addon-onboarding": "^10.3.6",
114
+ "@storybook/addon-vitest": "^10.3.6",
115
+ "@storybook/react-vite": "^10.3.6",
116
+ "@types/node": "^25.6.0",
117
+ "@types/react": "^19.2.14",
118
+ "@types/react-dom": "^19.2.3",
119
+ "@types/three": "^0.184.0",
120
+ "@vitejs/plugin-react": "^5.0.4",
121
+ "@vitest/browser-playwright": "^4.1.5",
122
+ "@vitest/coverage-v8": "^4.1.5",
123
+ "monaco-editor": "^0.55.1",
124
+ "motely-wasm": "^14.3.3",
125
+ "playwright": "^1.59.1",
126
+ "react": "^19.2.4",
127
+ "react-dom": "^19.2.4",
128
+ "react-icons": "^5.6.0",
129
+ "storybook": "^10.3.6",
130
+ "three": "^0.184.0",
131
+ "typescript": "^5.9.3",
132
+ "vite": "^8.0.9",
133
+ "vitest": "^4.1.5"
134
+ },
135
+ "dependencies": {
136
+ "@json-render/core": "^0.18.0",
137
+ "@react-three/drei": ">=9.0.0",
138
+ "@types/js-yaml": "^4.0.9",
139
+ "clsx": "^2.1.1",
140
+ "js-yaml": "^4.1.1",
141
+ "lucide-react": "^1.14.0",
142
+ "tailwind-merge": "^2.6.1",
143
+ "zustand": "^5.0.0"
144
+ }
145
+ }