@freegamestore/games 0.7.0 → 0.9.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.
- package/dist/GameShell.d.ts.map +1 -1
- package/dist/GameShell.js +44 -43
- package/dist/GameShell.js.map +1 -1
- package/dist/GameTopbar.d.ts.map +1 -1
- package/dist/GameTopbar.js +32 -6
- package/dist/GameTopbar.js.map +1 -1
- package/dist/SoundContext.d.ts +16 -0
- package/dist/SoundContext.d.ts.map +1 -0
- package/dist/SoundContext.js +16 -0
- package/dist/SoundContext.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/GameShell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameShell.d.ts","sourceRoot":"","sources":["../src/GameShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GameShell.d.ts","sourceRoot":"","sources":["../src/GameShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,6DAA6D;IAC7D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+EjF"}
|
package/dist/GameShell.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SoundProvider } from './SoundContext.js';
|
|
2
3
|
/**
|
|
3
4
|
* Brand-consistent layout for a game.
|
|
4
5
|
*
|
|
@@ -13,48 +14,48 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
14
|
* the bar reveals. 100svh stays equal to the *visible* viewport.
|
|
14
15
|
*/
|
|
15
16
|
export function GameShell({ topbar, children }) {
|
|
16
|
-
return (_jsxs("div", { style: {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
17
|
+
return (_jsx(SoundProvider, { children: _jsxs("div", { style: {
|
|
18
|
+
position: 'fixed',
|
|
19
|
+
inset: 0,
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
background: 'var(--paper)',
|
|
23
|
+
color: 'var(--ink)',
|
|
24
|
+
overflow: 'hidden',
|
|
25
|
+
// 100svh handles iOS URL-bar height changes correctly.
|
|
26
|
+
height: '100svh',
|
|
27
|
+
width: '100vw',
|
|
28
|
+
// Games are touch-first — prevent text selection, long-press menus,
|
|
29
|
+
// and the 300ms tap delay that makes games feel sluggish.
|
|
30
|
+
WebkitUserSelect: 'none',
|
|
31
|
+
userSelect: 'none',
|
|
32
|
+
WebkitTouchCallout: 'none',
|
|
33
|
+
touchAction: 'manipulation',
|
|
34
|
+
}, children: [topbar !== undefined && (_jsx("div", { style: {
|
|
35
|
+
flexShrink: 0,
|
|
36
|
+
borderBottom: '1px solid var(--line, #e5e5e5)',
|
|
37
|
+
background: 'var(--panel, var(--paper))',
|
|
38
|
+
}, children: topbar })), _jsx("div", { style: {
|
|
39
|
+
flex: 1,
|
|
40
|
+
minHeight: 0,
|
|
41
|
+
minWidth: 0,
|
|
42
|
+
position: 'relative',
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
}, children: children }), _jsx("div", { style: {
|
|
45
|
+
flexShrink: 0,
|
|
46
|
+
paddingBottom: 'env(safe-area-inset-bottom, 0px)',
|
|
47
|
+
background: 'var(--panel, var(--paper))',
|
|
48
|
+
borderTop: '1px solid var(--line, #e5e5e5)',
|
|
49
|
+
textAlign: 'center',
|
|
50
|
+
}, children: _jsx("a", { href: "https://freegamestore.online", target: "_blank", rel: "noopener noreferrer", style: {
|
|
51
|
+
display: 'block',
|
|
52
|
+
padding: '0.15rem 0',
|
|
53
|
+
fontSize: '0.55rem',
|
|
54
|
+
fontFamily: '"Manrope", system-ui, sans-serif',
|
|
55
|
+
fontWeight: 600,
|
|
56
|
+
color: 'var(--muted, #999)',
|
|
57
|
+
textDecoration: 'none',
|
|
58
|
+
letterSpacing: '0.03em',
|
|
59
|
+
}, children: "freegamestore.online" }) })] }) }));
|
|
59
60
|
}
|
|
60
61
|
//# sourceMappingURL=GameShell.js.map
|
package/dist/GameShell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameShell.js","sourceRoot":"","sources":["../src/GameShell.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"GameShell.js","sourceRoot":"","sources":["../src/GameShell.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAYlD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAkB;IAC5D,OAAO,CACL,KAAC,aAAa,cACd,eACE,KAAK,EAAE;gBACL,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE,QAAQ;gBACvB,UAAU,EAAE,cAAc;gBAC1B,KAAK,EAAE,YAAY;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,uDAAuD;gBACvD,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,OAAO;gBACd,oEAAoE;gBACpE,0DAA0D;gBAC1D,gBAAgB,EAAE,MAAM;gBACxB,UAAU,EAAE,MAAM;gBAClB,kBAAkB,EAAE,MAAM;gBAC1B,WAAW,EAAE,cAAc;aAC5B,aAEA,MAAM,KAAK,SAAS,IAAI,CACvB,cACE,KAAK,EAAE;wBACL,UAAU,EAAE,CAAC;wBACb,YAAY,EAAE,gCAAgC;wBAC9C,UAAU,EAAE,4BAA4B;qBACzC,YAEA,MAAM,GACH,CACP,EACD,cACE,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC;wBACP,SAAS,EAAE,CAAC;wBACZ,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE,QAAQ;qBACnB,YAEA,QAAQ,GACL,EAKN,cACE,KAAK,EAAE;wBACL,UAAU,EAAE,CAAC;wBACb,aAAa,EAAE,kCAAkC;wBACjD,UAAU,EAAE,4BAA4B;wBACxC,SAAS,EAAE,gCAAgC;wBAC3C,SAAS,EAAE,QAAQ;qBACpB,YAED,YACE,IAAI,EAAC,8BAA8B,EACnC,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE;4BACL,OAAO,EAAE,OAAO;4BAChB,OAAO,EAAE,WAAW;4BACpB,QAAQ,EAAE,SAAS;4BACnB,UAAU,EAAE,kCAAkC;4BAC9C,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,oBAAoB;4BAC3B,cAAc,EAAE,MAAM;4BACtB,aAAa,EAAE,QAAQ;yBACxB,qCAGC,GACA,IACF,GACU,CACjB,CAAC;AACJ,CAAC"}
|
package/dist/GameTopbar.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameTopbar.d.ts","sourceRoot":"","sources":["../src/GameTopbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GameTopbar.d.ts","sourceRoot":"","sources":["../src/GameTopbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0ItG"}
|
package/dist/GameTopbar.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from 'react';
|
|
3
|
+
import { useSound } from './SoundContext.js';
|
|
3
4
|
/**
|
|
4
5
|
* The single allowed topbar shape for FreeGameStore games. Brand
|
|
5
6
|
* consistency: same font, same paddings, same color tokens, same stat
|
|
@@ -9,6 +10,7 @@ import { useState } from 'react';
|
|
|
9
10
|
*/
|
|
10
11
|
export function GameTopbar({ title, score, stats, actions, rules }) {
|
|
11
12
|
const [showRules, setShowRules] = useState(false);
|
|
13
|
+
const sound = useSound();
|
|
12
14
|
const resolvedStats = stats && stats.length > 0
|
|
13
15
|
? stats
|
|
14
16
|
: score !== undefined
|
|
@@ -21,21 +23,33 @@ export function GameTopbar({ title, score, stats, actions, rules }) {
|
|
|
21
23
|
gap: '0.75rem',
|
|
22
24
|
padding: '0.25rem 0.75rem',
|
|
23
25
|
height: '2rem',
|
|
24
|
-
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.
|
|
26
|
+
}, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.25rem', minWidth: 0 }, children: [_jsx("a", { href: "https://freegamestore.online", target: "_blank", rel: "noopener noreferrer", style: {
|
|
25
27
|
background: 'none',
|
|
26
28
|
border: 'none',
|
|
27
29
|
cursor: 'pointer',
|
|
28
30
|
padding: 0,
|
|
29
|
-
minWidth: '
|
|
30
|
-
minHeight: '
|
|
31
|
+
minWidth: '2rem',
|
|
32
|
+
minHeight: '2rem',
|
|
33
|
+
display: 'flex',
|
|
34
|
+
alignItems: 'center',
|
|
35
|
+
justifyContent: 'center',
|
|
36
|
+
color: 'var(--muted, #999)',
|
|
37
|
+
WebkitTapHighlightColor: 'transparent',
|
|
38
|
+
textDecoration: 'none',
|
|
39
|
+
}, "aria-label": "Browse all games", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M2 6l6-4 6 4v7a1 1 0 01-1 1H3a1 1 0 01-1-1V6z" }), _jsx("path", { d: "M6 14V9h4v5" })] }) }), rules !== undefined && (_jsx("button", { onClick: () => setShowRules(true), style: {
|
|
40
|
+
background: 'none',
|
|
41
|
+
border: 'none',
|
|
42
|
+
cursor: 'pointer',
|
|
43
|
+
padding: 0,
|
|
44
|
+
minWidth: '2rem',
|
|
45
|
+
minHeight: '2rem',
|
|
31
46
|
display: 'flex',
|
|
32
47
|
alignItems: 'center',
|
|
33
48
|
justifyContent: 'center',
|
|
34
49
|
color: 'var(--muted, #999)',
|
|
35
|
-
fontSize: '1rem',
|
|
36
50
|
lineHeight: 1,
|
|
37
51
|
WebkitTapHighlightColor: 'transparent',
|
|
38
|
-
}, "aria-label": "Game rules", children: _jsxs("svg", { width: "
|
|
52
|
+
}, "aria-label": "Game rules", children: _jsxs("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "8", cy: "8", r: "6.5" }), _jsx("path", { d: "M8 11.5v0M8 5v4" })] }) })), title !== undefined && (_jsx("span", { style: {
|
|
39
53
|
fontFamily: '"Manrope", system-ui, sans-serif',
|
|
40
54
|
fontWeight: 600,
|
|
41
55
|
fontSize: '0.8rem',
|
|
@@ -43,7 +57,19 @@ export function GameTopbar({ title, score, stats, actions, rules }) {
|
|
|
43
57
|
whiteSpace: 'nowrap',
|
|
44
58
|
overflow: 'hidden',
|
|
45
59
|
textOverflow: 'ellipsis',
|
|
46
|
-
}, children: title }))] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.75rem' }, children: [resolvedStats.map((s) => (_jsx(Stat, { stat: s }, s.label))),
|
|
60
|
+
}, children: title }))] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.75rem' }, children: [resolvedStats.map((s) => (_jsx(Stat, { stat: s }, s.label))), _jsx("button", { onClick: sound.toggle, style: {
|
|
61
|
+
background: 'none',
|
|
62
|
+
border: 'none',
|
|
63
|
+
cursor: 'pointer',
|
|
64
|
+
padding: 0,
|
|
65
|
+
minWidth: '2rem',
|
|
66
|
+
minHeight: '2rem',
|
|
67
|
+
display: 'flex',
|
|
68
|
+
alignItems: 'center',
|
|
69
|
+
justifyContent: 'center',
|
|
70
|
+
color: sound.muted ? 'var(--muted, #999)' : 'var(--accent, #10b981)',
|
|
71
|
+
WebkitTapHighlightColor: 'transparent',
|
|
72
|
+
}, "aria-label": sound.muted ? 'Unmute' : 'Mute', children: sound.muted ? (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M8 2L4 5.5H1.5v5H4L8 14V2z" }), _jsx("path", { d: "M12 5.5l4 5M16 5.5l-4 5" })] })) : (_jsxs("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("path", { d: "M8 2L4 5.5H1.5v5H4L8 14V2z" }), _jsx("path", { d: "M11.5 5a4.5 4.5 0 010 6" }), _jsx("path", { d: "M13.5 3a7.5 7.5 0 010 10" })] })) }), actions !== undefined && (_jsx("div", { style: { display: 'flex', gap: '0.4rem', alignItems: 'center' }, children: actions }))] })] }), showRules && rules !== undefined && (_jsx(RulesOverlay, { onClose: () => setShowRules(false), children: rules }))] }));
|
|
47
73
|
}
|
|
48
74
|
function RulesOverlay({ children, onClose }) {
|
|
49
75
|
return (_jsxs("div", { style: {
|
package/dist/GameTopbar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GameTopbar.js","sourceRoot":"","sources":["../src/GameTopbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GameTopbar.js","sourceRoot":"","sources":["../src/GameTopbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
interface SoundState {
|
|
4
|
+
muted: boolean;
|
|
5
|
+
toggle: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function SoundProvider({ children }: {
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
}): React.JSX.Element;
|
|
10
|
+
/**
|
|
11
|
+
* Read the platform sound state. Muted by default.
|
|
12
|
+
* Games MUST check `muted` before playing any audio.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useSound(): SoundState;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=SoundContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoundContext.d.ts","sourceRoot":"","sources":["../src/SoundContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,UAAU;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAID,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQtF;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,UAAU,CAErC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useState, useContext, useCallback } from 'react';
|
|
3
|
+
const SoundContext = createContext({ muted: true, toggle: () => { } });
|
|
4
|
+
export function SoundProvider({ children }) {
|
|
5
|
+
const [muted, setMuted] = useState(true);
|
|
6
|
+
const toggle = useCallback(() => setMuted((m) => !m), []);
|
|
7
|
+
return (_jsx(SoundContext.Provider, { value: { muted, toggle }, children: children }));
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read the platform sound state. Muted by default.
|
|
11
|
+
* Games MUST check `muted` before playing any audio.
|
|
12
|
+
*/
|
|
13
|
+
export function useSound() {
|
|
14
|
+
return useContext(SoundContext);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SoundContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SoundContext.js","sourceRoot":"","sources":["../src/SoundContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AASzE,MAAM,YAAY,GAAG,aAAa,CAAa,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC;AAElF,MAAM,UAAU,aAAa,CAAC,EAAE,QAAQ,EAA2B;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1D,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAC5C,QAAQ,GACa,CACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,4 +18,5 @@ export { GameButton, type GameButtonProps, type GameButtonVariant, type GameButt
|
|
|
18
18
|
export { GameAuth } from './GameAuth.js';
|
|
19
19
|
export { useAuth, type User } from './useAuth.js';
|
|
20
20
|
export { useLeaderboard, type LeaderboardEntry, } from './useLeaderboard.js';
|
|
21
|
+
export { useSound } from './SoundContext.js';
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,4 +18,5 @@ export { GameButton, } from './GameButton.js';
|
|
|
18
18
|
export { GameAuth } from './GameAuth.js';
|
|
19
19
|
export { useAuth } from './useAuth.js';
|
|
20
20
|
export { useLeaderboard, } from './useLeaderboard.js';
|
|
21
|
+
export { useSound } from './SoundContext.js';
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,GAIX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,cAAc,GAEf,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,UAAU,GAIX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,cAAc,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
package/package.json
CHANGED