jaml-ui 1.0.0 → 1.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 (44) hide show
  1. package/dist/assets/{searchPoolWorker-DWobBIhl.js → searchPoolWorker-DHh9a5GD.js} +2 -2
  2. package/dist/assets/searchPoolWorker-DHh9a5GD.js.map +1 -0
  3. package/dist/chunks/{jamlSeeds-3ILzc_rj.js → jamlSeeds-CKHvpjhC.js} +1 -1
  4. package/dist/chunks/{jamlSeeds-3ILzc_rj.js.map → jamlSeeds-CKHvpjhC.js.map} +1 -1
  5. package/dist/chunks/{motelyItemFormats-CNrFzcCI.js → motelyItemFormats-Dyq1BINO.js} +275 -267
  6. package/dist/chunks/motelyItemFormats-Dyq1BINO.js.map +1 -0
  7. package/dist/chunks/{searchPoolWorker-tBaSbLZu.js → searchPoolWorker-DgRqVj_q.js} +2 -2
  8. package/dist/chunks/searchPoolWorker-DgRqVj_q.js.map +1 -0
  9. package/dist/chunks/{assets-Bb6wV80_.js → spriteMapper-C2mqQHLj.js} +2417 -2
  10. package/dist/chunks/spriteMapper-C2mqQHLj.js.map +1 -0
  11. package/dist/chunks/{ui-Dn8IIoV3.js → ui-LfKBGL5-.js} +675 -791
  12. package/dist/chunks/ui-LfKBGL5-.js.map +1 -0
  13. package/dist/core.js +7 -8
  14. package/dist/core.js.map +1 -1
  15. package/dist/index.d.ts +0 -1
  16. package/dist/index.js +1185 -1230
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/motely/runtime.d.ts +7 -0
  19. package/dist/motely.js +10 -11
  20. package/dist/motely.js.map +1 -1
  21. package/dist/ui/jimbo.css +1 -1
  22. package/dist/ui/jimboApp.d.ts +3 -6
  23. package/dist/ui/jimboBackground.d.ts +4 -8
  24. package/dist/ui/sprites.d.ts +2 -1
  25. package/dist/ui.d.ts +0 -2
  26. package/dist/ui.js +2 -3
  27. package/package.json +15 -39
  28. package/dist/assets/searchPoolWorker-DWobBIhl.js.map +0 -1
  29. package/dist/chunks/assets-Bb6wV80_.js.map +0 -1
  30. package/dist/chunks/motelyItemFormats-CNrFzcCI.js.map +0 -1
  31. package/dist/chunks/searchPoolWorker-tBaSbLZu.js.map +0 -1
  32. package/dist/chunks/spriteMapper-CajFGgUU.js +0 -2419
  33. package/dist/chunks/spriteMapper-CajFGgUU.js.map +0 -1
  34. package/dist/chunks/tokens-Qrhlekc4.js +0 -57
  35. package/dist/chunks/tokens-Qrhlekc4.js.map +0 -1
  36. package/dist/chunks/ui-Dn8IIoV3.js.map +0 -1
  37. package/dist/r3f/Card3D.d.ts +0 -25
  38. package/dist/r3f/JimboBillboard.d.ts +0 -10
  39. package/dist/r3f/JimboText3D.d.ts +0 -9
  40. package/dist/r3f.d.ts +0 -3
  41. package/dist/r3f.js +0 -235
  42. package/dist/r3f.js.map +0 -1
  43. package/dist/ui/JimboPanelSplitter.d.ts +0 -8
  44. package/dist/ui/showcase.d.ts +0 -38
@@ -1,25 +0,0 @@
1
- import { MotelySpriteData } from '../decode/motelySprite.js';
2
- export declare const CARD_DIMENSIONS: {
3
- readonly WIDTH: 0.7;
4
- readonly HEIGHT: 0.95;
5
- readonly DEPTH: 0.02;
6
- };
7
- export declare const CARD_MAGNET: {
8
- readonly MAX_TILT_X: 0.36;
9
- readonly MAX_TILT_Y: 0.42;
10
- readonly MAX_SHIFT: 0.038;
11
- readonly TWIST_Z: 0.11;
12
- readonly LERP_IN: 18;
13
- readonly LERP_OUT: 10;
14
- };
15
- export interface Card3DProps {
16
- sprite: MotelySpriteData;
17
- position?: [number, number, number];
18
- rotation?: [number, number, number];
19
- selected?: boolean;
20
- highlighted?: boolean;
21
- onClick?: () => void;
22
- onPointerEnter?: () => void;
23
- onPointerLeave?: () => void;
24
- }
25
- export declare const Card3D: import('react').NamedExoticComponent<Card3DProps>;
@@ -1,10 +0,0 @@
1
- import { MotelySpriteData } from '../decode/motelySprite.js';
2
- export interface JimboBillboardProps {
3
- sprite: MotelySpriteData | null;
4
- label?: string;
5
- width?: number;
6
- height?: number;
7
- yLockOnly?: boolean;
8
- position?: [number, number, number];
9
- }
10
- export declare function JimboBillboard(props: JimboBillboardProps): import("react/jsx-runtime").JSX.Element | null;
@@ -1,9 +0,0 @@
1
- export interface JimboText3DProps {
2
- children: string;
3
- color?: string;
4
- outlineColor?: string;
5
- outlineWidth?: number;
6
- position?: [number, number, number];
7
- fontSize?: number;
8
- }
9
- export declare function JimboText3D({ children, color, outlineColor, outlineWidth, position, fontSize }: JimboText3DProps): import("react/jsx-runtime").JSX.Element;
package/dist/r3f.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './r3f/Card3D.js';
2
- export * from './r3f/JimboBillboard.js';
3
- export * from './r3f/JimboText3D.js';
package/dist/r3f.js DELETED
@@ -1,235 +0,0 @@
1
- import { n as e } from "./chunks/tokens-Qrhlekc4.js";
2
- import { n as t } from "./chunks/assets-Bb6wV80_.js";
3
- import { memo as n, useMemo as r, useRef as i, useState as a } from "react";
4
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
- import { useFrame as c, useLoader as l } from "@react-three/fiber";
6
- import { animated as u, useSpring as d } from "@react-spring/three";
7
- import * as f from "three";
8
- import { Billboard as p, Text as m } from "@react-three/drei";
9
- //#region src/r3f/Card3D.tsx
10
- var h = {
11
- WIDTH: .7,
12
- HEIGHT: .95,
13
- DEPTH: .02
14
- }, g = {
15
- MAX_TILT_X: .36,
16
- MAX_TILT_Y: .42,
17
- MAX_SHIFT: .038,
18
- TWIST_Z: .11,
19
- LERP_IN: 18,
20
- LERP_OUT: 10
21
- };
22
- function _(e) {
23
- let t = l(f.TextureLoader, e.atlasPath);
24
- return r(() => {
25
- let n = t.clone();
26
- return n.colorSpace = f.SRGBColorSpace, n.magFilter = f.NearestFilter, n.minFilter = f.NearestFilter, n.repeat.set(1 / e.gridCols, 1 / e.gridRows), n.offset.set(e.gridCol / e.gridCols, 1 - (e.gridRow + 1) / e.gridRows), n.needsUpdate = !0, n;
27
- }, [
28
- t,
29
- e.gridCol,
30
- e.gridRow,
31
- e.gridCols,
32
- e.gridRows
33
- ]);
34
- }
35
- var v = n(function({ sprite: e, position: t = [
36
- 0,
37
- 0,
38
- 0
39
- ], rotation: n = [
40
- 0,
41
- 0,
42
- 0
43
- ], selected: l = !1, highlighted: p = !1, onClick: m, onPointerEnter: v, onPointerLeave: y }) {
44
- let b = i(null), x = i({
45
- rx: 0,
46
- ry: 0,
47
- rz: 0,
48
- ox: 0,
49
- oy: 0
50
- }), [S, C] = a(!1), w = _(e), { posY: T, scale: E } = d({
51
- posY: l ? .3 : S ? .15 : 0,
52
- scale: S ? 1.08 : l ? 1.05 : 1,
53
- config: {
54
- tension: 300,
55
- friction: 20
56
- }
57
- });
58
- c((e, t) => {
59
- let n = b.current;
60
- if (!n) return;
61
- let r = x.current, i = S ? g.LERP_IN : g.LERP_OUT, a = 1 - Math.exp(-i * t);
62
- n.rotation.x = f.MathUtils.lerp(n.rotation.x, r.rx, a), n.rotation.y = f.MathUtils.lerp(n.rotation.y, r.ry, a), n.rotation.z = f.MathUtils.lerp(n.rotation.z, r.rz, a), n.position.x = f.MathUtils.lerp(n.position.x, r.ox, a), n.position.y = f.MathUtils.lerp(n.position.y, r.oy, a);
63
- });
64
- let D = r(() => p ? "#e4b643" : "#ffffff", [p]), O = (e) => {
65
- e.stopPropagation();
66
- let t = e.uv;
67
- if (!t) return;
68
- let n = f.MathUtils.clamp((t.x - .5) * 2, -1, 1), r = f.MathUtils.clamp((t.y - .5) * 2, -1, 1);
69
- x.current.ry = -n * g.MAX_TILT_Y, x.current.rx = r * g.MAX_TILT_X, x.current.rz = -n * r * g.TWIST_Z, x.current.ox = n * g.MAX_SHIFT, x.current.oy = -r * g.MAX_SHIFT * .65;
70
- }, k = () => {
71
- x.current = {
72
- rx: 0,
73
- ry: 0,
74
- rz: 0,
75
- ox: 0,
76
- oy: 0
77
- };
78
- };
79
- return w ? /* @__PURE__ */ s(u.group, {
80
- "position-x": t[0],
81
- "position-y": T.to((e) => t[1] + e),
82
- "position-z": t[2],
83
- "rotation-x": n[0],
84
- "rotation-y": n[1],
85
- "rotation-z": n[2],
86
- scale: E,
87
- children: [/* @__PURE__ */ s("mesh", {
88
- visible: !1,
89
- onClick: (e) => {
90
- e.stopPropagation(), m?.();
91
- },
92
- onPointerMove: O,
93
- onPointerEnter: (e) => {
94
- e.stopPropagation(), C(!0), v?.(), document.body.style.cursor = "pointer";
95
- },
96
- onPointerLeave: (e) => {
97
- e.stopPropagation(), C(!1), k(), y?.(), document.body.style.cursor = "auto";
98
- },
99
- children: [/* @__PURE__ */ o("boxGeometry", { args: [
100
- h.WIDTH,
101
- h.HEIGHT,
102
- h.DEPTH * 2
103
- ] }), /* @__PURE__ */ o("meshBasicMaterial", {})]
104
- }), /* @__PURE__ */ s("group", {
105
- ref: b,
106
- children: [
107
- p && /* @__PURE__ */ o("pointLight", {
108
- color: D,
109
- intensity: 1.5,
110
- distance: 1,
111
- position: [
112
- 0,
113
- 0,
114
- .1
115
- ]
116
- }),
117
- /* @__PURE__ */ s("mesh", {
118
- castShadow: !0,
119
- receiveShadow: !0,
120
- children: [
121
- /* @__PURE__ */ o("boxGeometry", { args: [
122
- h.WIDTH,
123
- h.HEIGHT,
124
- h.DEPTH
125
- ] }),
126
- /* @__PURE__ */ o("meshBasicMaterial", {
127
- attach: "material-4",
128
- map: w,
129
- toneMapped: !1
130
- }),
131
- /* @__PURE__ */ o("meshStandardMaterial", {
132
- attach: "material-5",
133
- color: "#1a1a2e",
134
- metalness: .2,
135
- roughness: .8
136
- }),
137
- /* @__PURE__ */ o("meshStandardMaterial", {
138
- attach: "material-0",
139
- color: "#f5f5dc"
140
- }),
141
- /* @__PURE__ */ o("meshStandardMaterial", {
142
- attach: "material-1",
143
- color: "#f5f5dc"
144
- }),
145
- /* @__PURE__ */ o("meshStandardMaterial", {
146
- attach: "material-2",
147
- color: "#f5f5dc"
148
- }),
149
- /* @__PURE__ */ o("meshStandardMaterial", {
150
- attach: "material-3",
151
- color: "#f5f5dc"
152
- })
153
- ]
154
- }),
155
- l && /* @__PURE__ */ s("mesh", {
156
- position: [
157
- 0,
158
- 0,
159
- -h.DEPTH
160
- ],
161
- children: [/* @__PURE__ */ o("ringGeometry", { args: [
162
- .45,
163
- .5,
164
- 32
165
- ] }), /* @__PURE__ */ o("meshBasicMaterial", {
166
- color: "#e4b643",
167
- transparent: !0,
168
- opacity: .8
169
- })]
170
- })
171
- ]
172
- })]
173
- }) : null;
174
- });
175
- //#endregion
176
- //#region src/r3f/JimboBillboard.tsx
177
- function y(e) {
178
- return e.sprite ? /* @__PURE__ */ o(b, {
179
- ...e,
180
- sprite: e.sprite
181
- }) : null;
182
- }
183
- function b({ sprite: e, width: t = 3.4, height: n = 4.5, yLockOnly: i = !1, position: a = [
184
- 0,
185
- 0,
186
- 0
187
- ] }) {
188
- let s = l(f.TextureLoader, e.atlasPath), c = r(() => {
189
- let t = s.clone();
190
- return t.magFilter = f.NearestFilter, t.minFilter = f.NearestFilter, t.repeat.set(1 / e.gridCols, 1 / e.gridRows), t.offset.set(e.gridCol / e.gridCols, 1 - (e.gridRow + 1) / e.gridRows), t.needsUpdate = !0, t;
191
- }, [
192
- s,
193
- e.gridCol,
194
- e.gridRow,
195
- e.gridCols,
196
- e.gridRows
197
- ]);
198
- return /* @__PURE__ */ o(p, {
199
- lockY: i,
200
- lockX: !1,
201
- lockZ: !1,
202
- position: a,
203
- children: /* @__PURE__ */ o("mesh", {
204
- material: r(() => new f.MeshBasicMaterial({
205
- map: c,
206
- transparent: !0,
207
- alphaTest: .5
208
- }), [c]),
209
- children: /* @__PURE__ */ o("planeGeometry", { args: [t, n] })
210
- })
211
- });
212
- }
213
- //#endregion
214
- //#region src/r3f/JimboText3D.tsx
215
- function x({ children: n, color: r = e.WHITE, outlineColor: i = e.BLACK, outlineWidth: a = .05, position: s = [
216
- 0,
217
- 0,
218
- 0
219
- ], fontSize: c = 1 }) {
220
- return /* @__PURE__ */ o(m, {
221
- position: s,
222
- fontSize: c,
223
- color: r,
224
- outlineColor: i,
225
- outlineWidth: a,
226
- font: t("font"),
227
- anchorX: "center",
228
- anchorY: "middle",
229
- children: n
230
- });
231
- }
232
- //#endregion
233
- export { h as CARD_DIMENSIONS, g as CARD_MAGNET, v as Card3D, y as JimboBillboard, x as JimboText3D };
234
-
235
- //# sourceMappingURL=r3f.js.map
package/dist/r3f.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"r3f.js","names":[],"sources":["../src/r3f/Card3D.tsx","../src/r3f/JimboBillboard.tsx","../src/r3f/JimboText3D.tsx"],"sourcesContent":["'use client'\n\nimport { useRef, useMemo, useState, memo } from 'react'\nimport { useFrame, useLoader, type ThreeEvent } from '@react-three/fiber'\nimport { useSpring, animated } from '@react-spring/three'\nimport * as THREE from 'three'\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CARD_DIMENSIONS = { WIDTH: 0.7, HEIGHT: 0.95, DEPTH: 0.02 } as const\n// eslint-disable-next-line react-refresh/only-export-components\nexport const CARD_MAGNET = {\n MAX_TILT_X: 0.36,\n MAX_TILT_Y: 0.42,\n MAX_SHIFT: 0.038,\n TWIST_Z: 0.11,\n LERP_IN: 18,\n LERP_OUT: 10,\n} as const\n\nfunction useSpriteTexture(sprite: MotelySpriteData) {\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\n \n return useMemo(() => {\n const t = texture.clone();\n t.colorSpace = THREE.SRGBColorSpace;\n t.magFilter = THREE.NearestFilter;\n t.minFilter = THREE.NearestFilter;\n t.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\n t.offset.set(\n sprite.gridCol / sprite.gridCols,\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\n );\n t.needsUpdate = true;\n return t;\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\n}\n\nexport interface Card3DProps {\n sprite: MotelySpriteData\n position?: [number, number, number]\n rotation?: [number, number, number]\n selected?: boolean\n highlighted?: boolean\n onClick?: () => void\n onPointerEnter?: () => void\n onPointerLeave?: () => void\n}\n\nexport const Card3D = memo(function Card3D({\n sprite,\n position = [0, 0, 0],\n rotation = [0, 0, 0],\n selected = false,\n highlighted = false,\n onClick,\n onPointerEnter,\n onPointerLeave,\n}: Card3DProps) {\n const tiltRef = useRef<THREE.Group>(null)\n const target = useRef({ rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 })\n const [hovered, setHovered] = useState(false)\n\n const texture = useSpriteTexture(sprite)\n\n const { posY, scale } = useSpring({\n posY: selected ? 0.3 : hovered ? 0.15 : 0,\n scale: hovered ? 1.08 : selected ? 1.05 : 1,\n config: { tension: 300, friction: 20 },\n })\n\n useFrame((_state, dt) => {\n const g = tiltRef.current\n if (!g) return\n const t = target.current\n const rate = hovered ? CARD_MAGNET.LERP_IN : CARD_MAGNET.LERP_OUT\n const a = 1 - Math.exp(-rate * dt)\n g.rotation.x = THREE.MathUtils.lerp(g.rotation.x, t.rx, a)\n g.rotation.y = THREE.MathUtils.lerp(g.rotation.y, t.ry, a)\n g.rotation.z = THREE.MathUtils.lerp(g.rotation.z, t.rz, a)\n g.position.x = THREE.MathUtils.lerp(g.position.x, t.ox, a)\n g.position.y = THREE.MathUtils.lerp(g.position.y, t.oy, a)\n })\n\n const glowColor = useMemo(() => highlighted ? '#e4b643' : '#ffffff', [highlighted])\n\n const onMove = (e: ThreeEvent<PointerEvent>) => {\n e.stopPropagation()\n const uv = e.uv\n if (!uv) return\n const nx = THREE.MathUtils.clamp((uv.x - 0.5) * 2, -1, 1)\n const ny = THREE.MathUtils.clamp((uv.y - 0.5) * 2, -1, 1)\n target.current.ry = -nx * CARD_MAGNET.MAX_TILT_Y\n target.current.rx = ny * CARD_MAGNET.MAX_TILT_X\n target.current.rz = -nx * ny * CARD_MAGNET.TWIST_Z\n target.current.ox = nx * CARD_MAGNET.MAX_SHIFT\n target.current.oy = -ny * CARD_MAGNET.MAX_SHIFT * 0.65\n }\n\n const reset = () => { target.current = { rx: 0, ry: 0, rz: 0, ox: 0, oy: 0 } }\n\n if (!texture) return null\n\n return (\n <animated.group\n position-x={position[0]}\n position-y={posY.to((y) => position[1] + y)}\n position-z={position[2]}\n rotation-x={rotation[0]}\n rotation-y={rotation[1]}\n rotation-z={rotation[2]}\n scale={scale}\n >\n {/* Invisible hit mesh that does not shift or twist, preventing boop-cancel loops */}\n <mesh\n visible={false}\n onClick={(e) => { e.stopPropagation(); onClick?.() }}\n onPointerMove={onMove}\n onPointerEnter={(e) => { e.stopPropagation(); setHovered(true); onPointerEnter?.(); document.body.style.cursor = 'pointer' }}\n onPointerLeave={(e) => { e.stopPropagation(); setHovered(false); reset(); onPointerLeave?.(); document.body.style.cursor = 'auto' }}\n >\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH * 2]} />\n <meshBasicMaterial />\n </mesh>\n\n <group ref={tiltRef}>\n {highlighted && (\n <pointLight color={glowColor} intensity={1.5} distance={1} position={[0, 0, 0.1]} />\n )}\n <mesh castShadow receiveShadow>\n <boxGeometry args={[CARD_DIMENSIONS.WIDTH, CARD_DIMENSIONS.HEIGHT, CARD_DIMENSIONS.DEPTH]} />\n <meshBasicMaterial attach=\"material-4\" map={texture} toneMapped={false} />\n <meshStandardMaterial attach=\"material-5\" color=\"#1a1a2e\" metalness={0.2} roughness={0.8} />\n <meshStandardMaterial attach=\"material-0\" color=\"#f5f5dc\" />\n <meshStandardMaterial attach=\"material-1\" color=\"#f5f5dc\" />\n <meshStandardMaterial attach=\"material-2\" color=\"#f5f5dc\" />\n <meshStandardMaterial attach=\"material-3\" color=\"#f5f5dc\" />\n </mesh>\n {selected && (\n <mesh position={[0, 0, -CARD_DIMENSIONS.DEPTH]}>\n <ringGeometry args={[0.45, 0.5, 32]} />\n <meshBasicMaterial color=\"#e4b643\" transparent opacity={0.8} />\n </mesh>\n )}\n </group>\n </animated.group>\n )\n})\n","import React, { useMemo } from 'react'\nimport { Billboard } from '@react-three/drei'\nimport { useLoader } from '@react-three/fiber'\nimport * as THREE from 'three'\nimport type { MotelySpriteData } from '../decode/motelySprite.js'\n\nexport interface JimboBillboardProps {\n sprite: MotelySpriteData | null\n label?: string\n width?: number\n height?: number\n yLockOnly?: boolean\n position?: [number, number, number]\n}\n\nexport function JimboBillboard(props: JimboBillboardProps) {\n if (!props.sprite) return null;\n return <JimboBillboardInner {...props} sprite={props.sprite} />;\n}\n\nfunction JimboBillboardInner({\n sprite,\n width = 3.4,\n height = 4.5,\n yLockOnly = false,\n position = [0, 0, 0]\n}: Omit<JimboBillboardProps, 'sprite'> & { sprite: MotelySpriteData }) {\n // Memoize texture to avoid per-render allocation\n const texture = useLoader(THREE.TextureLoader, sprite.atlasPath);\n\n const clonedTexture = useMemo(() => {\n const tex = texture.clone();\n tex.magFilter = THREE.NearestFilter;\n tex.minFilter = THREE.NearestFilter;\n // Set up sprite cropping\n tex.repeat.set(1 / sprite.gridCols, 1 / sprite.gridRows);\n tex.offset.set(\n sprite.gridCol / sprite.gridCols,\n 1 - ((sprite.gridRow + 1) / sprite.gridRows)\n );\n tex.needsUpdate = true;\n return tex;\n }, [texture, sprite.gridCol, sprite.gridRow, sprite.gridCols, sprite.gridRows]);\n\n const material = useMemo(() => {\n return new THREE.MeshBasicMaterial({\n map: clonedTexture,\n transparent: true,\n alphaTest: 0.5\n });\n }, [clonedTexture]);\n\n return (\n <Billboard\n lockY={yLockOnly}\n lockX={false}\n lockZ={false}\n position={position}\n >\n <mesh material={material}>\n <planeGeometry args={[width, height]} />\n </mesh>\n </Billboard>\n )\n}\n","import React from 'react'\nimport { Text } from '@react-three/drei'\nimport { resolveJamlAssetUrl } from '../assets.js'\nimport { JimboColorOption } from '../ui/tokens.js'\n\nexport interface JimboText3DProps {\n children: string\n color?: string\n outlineColor?: string\n outlineWidth?: number\n position?: [number, number, number]\n fontSize?: number\n}\n\nexport function JimboText3D({\n children,\n color = JimboColorOption.WHITE,\n outlineColor = JimboColorOption.BLACK,\n outlineWidth = 0.05,\n position = [0, 0, 0],\n fontSize = 1\n}: JimboText3DProps) {\n // We use the m6x11plus font from assets if possible, or fallback\n return (\n <Text\n position={position}\n fontSize={fontSize}\n color={color}\n outlineColor={outlineColor}\n outlineWidth={outlineWidth}\n font={resolveJamlAssetUrl('font')}\n anchorX=\"center\"\n anchorY=\"middle\"\n >\n {children}\n </Text>\n )\n}\n"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export interface JimboPanelSplitterProps {
2
- "aria-label"?: string;
3
- className?: string;
4
- onDrag: (delta: number) => void;
5
- onKeyAdjust?: (delta: number) => void;
6
- orientation?: "vertical" | "horizontal";
7
- }
8
- export declare function JimboPanelSplitter({ orientation, onDrag, onKeyAdjust, className, "aria-label": ariaLabel, }: JimboPanelSplitterProps): import("react/jsx-runtime").JSX.Element;
@@ -1,38 +0,0 @@
1
- import { JimboSectionTone } from './jimboSectionHeader.js';
2
- export interface ShowcaseFilter {
3
- name: string;
4
- author: string;
5
- hits: string;
6
- tone: JimboSectionTone;
7
- sample: string[];
8
- }
9
- export interface ShowcaseRecentFind {
10
- seed: string;
11
- filterName: string;
12
- score: number;
13
- }
14
- export interface ShowcaseLiveStats {
15
- searched: string;
16
- matches: string;
17
- speed: string;
18
- }
19
- export interface ShowcaseMcpInfo {
20
- runtime: string;
21
- engine: string;
22
- features: string;
23
- }
24
- export interface ShowcaseProps {
25
- title?: string;
26
- subtitle?: string;
27
- hotFilters?: ShowcaseFilter[];
28
- recentFinds?: ShowcaseRecentFind[];
29
- mcpInfo?: ShowcaseMcpInfo;
30
- onNewSearch?: () => void;
31
- onBrowseFilters?: () => void;
32
- onFilterClick?: (filter: ShowcaseFilter, index: number) => void;
33
- }
34
- /**
35
- * Landing/showcase screen — 320×568, NO SCROLL.
36
- * Every pixel accounted for. No flex stretching. No gaps.
37
- */
38
- export declare function Showcase({ title, subtitle, hotFilters, recentFinds, mcpInfo, onNewSearch, onBrowseFilters, onFilterClick, }: ShowcaseProps): import("react/jsx-runtime").JSX.Element;