@dava96/osrs-icons 1.0.15 → 1.0.17
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/LICENSE +25 -0
- package/README.md +170 -5
- package/dist/cjs/animateCursor.d.ts +72 -0
- package/dist/cjs/animateCursor.d.ts.map +1 -0
- package/dist/cjs/animateCursor.js +94 -0
- package/dist/cjs/applyCursors.d.ts +64 -0
- package/dist/cjs/applyCursors.d.ts.map +1 -0
- package/dist/cjs/applyCursors.js +82 -0
- package/dist/cjs/flip.d.ts +55 -0
- package/dist/cjs/flip.d.ts.map +1 -0
- package/dist/cjs/flip.js +117 -0
- package/dist/cjs/generated/icons.d.ts +1 -0
- package/dist/cjs/generated/icons.d.ts.map +1 -0
- package/dist/cjs/generated/meta.d.ts +15 -0
- package/dist/cjs/generated/meta.d.ts.map +1 -0
- package/dist/cjs/generated/meta.js +14 -0
- package/dist/cjs/index.d.ts +16 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +20 -1
- package/dist/cjs/packs.d.ts +142 -0
- package/dist/cjs/packs.d.ts.map +1 -0
- package/dist/cjs/packs.js +192 -0
- package/dist/esm/animateCursor.d.ts +72 -0
- package/dist/esm/animateCursor.d.ts.map +1 -0
- package/dist/esm/animateCursor.js +91 -0
- package/dist/esm/applyCursors.d.ts +64 -0
- package/dist/esm/applyCursors.d.ts.map +1 -0
- package/dist/esm/applyCursors.js +79 -0
- package/dist/esm/flip.d.ts +55 -0
- package/dist/esm/flip.d.ts.map +1 -0
- package/dist/esm/flip.js +114 -0
- package/dist/esm/generated/icons.d.ts +1 -0
- package/dist/esm/generated/icons.d.ts.map +1 -0
- package/dist/esm/generated/meta.d.ts +15 -0
- package/dist/esm/generated/meta.d.ts.map +1 -0
- package/dist/esm/generated/meta.js +14 -0
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +18 -1
- package/dist/esm/packs.d.ts +142 -0
- package/dist/esm/packs.d.ts.map +1 -0
- package/dist/esm/packs.js +189 -0
- package/package.json +2 -2
- package/dist/cjs/index_test.d.ts +0 -1
- package/dist/cjs/index_test.js +0 -110
- package/dist/esm/index_test.d.ts +0 -1
- package/dist/esm/index_test.js +0 -105
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/generated/meta.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,yx4VAwgiBZ,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
// Auto-generated OSRS Icon metadata
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.iconNames = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* Alphabetically sorted array of every available OSRS icon export name.
|
|
7
|
+
*
|
|
8
|
+
* Use this list for search/autocomplete UIs, icon pickers, or validation.
|
|
9
|
+
* Each entry corresponds to a named export from `@dava96/osrs-icons`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { iconNames } from '@dava96/osrs-icons';
|
|
14
|
+
*
|
|
15
|
+
* console.log(iconNames.length); // 17,000+
|
|
16
|
+
* const matches = iconNames.filter(n => n.includes('dragon'));
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
5
19
|
exports.iconNames = [
|
|
6
20
|
'_10thBirthdayBalloons',
|
|
7
21
|
'_10thBirthdayCape',
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
export * from './generated/icons';
|
|
2
2
|
export * from './generated/meta';
|
|
3
|
+
export * from './packs';
|
|
4
|
+
export * from './flip';
|
|
5
|
+
export * from './applyCursors';
|
|
6
|
+
export * from './animateCursor';
|
|
7
|
+
/**
|
|
8
|
+
* A fun easter-egg cursor for error states — the OSRS Red Herring icon.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { errorCursor } from '@dava96/osrs-icons';
|
|
13
|
+
*
|
|
14
|
+
* document.body.style.cursor = errorCursor;
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export { redHerring as errorCursor } from './generated/icons';
|
|
3
18
|
/**
|
|
4
19
|
* Extracts the raw `data:image/png;base64,...` URL from one or more
|
|
5
20
|
* CSS cursor values.
|
|
@@ -29,3 +44,4 @@ export declare function toDataUrl(cursorValue: string): string;
|
|
|
29
44
|
export declare function toDataUrl<T extends Record<string, string>>(cursorValues: T): {
|
|
30
45
|
[K in keyof T]: string;
|
|
31
46
|
};
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC;;;;;;;;;GASG;AACH,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;AACvD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxD,YAAY,EAAE,CAAC,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CAAE,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,17 +14,36 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.errorCursor = void 0;
|
|
17
18
|
exports.toDataUrl = toDataUrl;
|
|
18
19
|
__exportStar(require("./generated/icons"), exports);
|
|
19
20
|
__exportStar(require("./generated/meta"), exports);
|
|
21
|
+
__exportStar(require("./packs"), exports);
|
|
22
|
+
__exportStar(require("./flip"), exports);
|
|
23
|
+
__exportStar(require("./applyCursors"), exports);
|
|
24
|
+
__exportStar(require("./animateCursor"), exports);
|
|
25
|
+
/**
|
|
26
|
+
* A fun easter-egg cursor for error states — the OSRS Red Herring icon.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { errorCursor } from '@dava96/osrs-icons';
|
|
31
|
+
*
|
|
32
|
+
* document.body.style.cursor = errorCursor;
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
var icons_1 = require("./generated/icons");
|
|
36
|
+
Object.defineProperty(exports, "errorCursor", { enumerable: true, get: function () { return icons_1.redHerring; } });
|
|
20
37
|
function toDataUrl(input) {
|
|
21
38
|
if (typeof input === 'string') {
|
|
22
39
|
return extractUrl(input);
|
|
23
40
|
}
|
|
24
41
|
return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, extractUrl(value)]));
|
|
25
42
|
}
|
|
43
|
+
/** Matches `url('...')` in a CSS cursor value. Precompiled for use in loops. */
|
|
44
|
+
const CURSOR_URL_REGEX = /url\('(.*)'\)/;
|
|
26
45
|
/** Extracts the URL from a single `url('...')` CSS value. */
|
|
27
46
|
function extractUrl(cursorValue) {
|
|
28
|
-
const match = cursorValue.match(
|
|
47
|
+
const match = cursorValue.match(CURSOR_URL_REGEX);
|
|
29
48
|
return match ? match[1] : cursorValue;
|
|
30
49
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata for a cursor pack, used by the documentation site to
|
|
3
|
+
* automatically display all available packs.
|
|
4
|
+
*
|
|
5
|
+
* When adding a new pack, push it onto the {@link allPacks} array
|
|
6
|
+
* so it appears on the site with zero extra work.
|
|
7
|
+
*/
|
|
8
|
+
export interface PackInfo {
|
|
9
|
+
/** Display name shown on the site (e.g. "Coins"). */
|
|
10
|
+
name: string;
|
|
11
|
+
/** CSS cursor string for a representative icon displayed beside the name. */
|
|
12
|
+
icon: string;
|
|
13
|
+
/** The variable name consumers import (e.g. "coinsPack"). */
|
|
14
|
+
importName: string;
|
|
15
|
+
/** Short description of what the pack represents. */
|
|
16
|
+
description: string;
|
|
17
|
+
/** Human-readable labels for each stage, in order. */
|
|
18
|
+
stageLabels: string[];
|
|
19
|
+
/** Ordered cursor strings for each stage. */
|
|
20
|
+
stages: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A cursor pack groups related OSRS icons by their in-game state.
|
|
24
|
+
*
|
|
25
|
+
* Each key is a semantic label and each value is the corresponding
|
|
26
|
+
* CSS cursor string, ready to apply to any element's `cursor` property.
|
|
27
|
+
*
|
|
28
|
+
* **Want to add a new pack?** See the
|
|
29
|
+
* {@link https://github.com/Dava96/osrs-icons/blob/main/CONTRIBUTING.md | Contributing Guide}
|
|
30
|
+
* for instructions on assembling and submitting your own cursor packs.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { coinsPack, animateCursor } from '@dava96/osrs-icons';
|
|
35
|
+
*
|
|
36
|
+
* // Animate the coin stack growing
|
|
37
|
+
* const stop = animateCursor(coinsPack.stages, { duration: 1200 });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* Coins cursor pack — represents increasing wealth from 1gp to 10,000gp.
|
|
42
|
+
*
|
|
43
|
+
* In OSRS, the coin stack sprite changes based on the amount.
|
|
44
|
+
* Great for progress indicators, score displays, or loading states.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* import { coinsPack } from '@dava96/osrs-icons';
|
|
49
|
+
*
|
|
50
|
+
* // Map a 0–100 progress value to a coin stack
|
|
51
|
+
* const stages = coinsPack.stages;
|
|
52
|
+
* const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
|
|
53
|
+
* element.style.cursor = stages[index];
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const coinsPack: {
|
|
57
|
+
readonly _1: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAICAMAAAD6Ou7DAAAAOVBMVEVMaXFbSgmfgRGOdBH70EL70UhwWw0AAAGxkBX70k37zzW3lRWoiRXdtBr2yB3luhrswR3QqRj7zSbkOlBfAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAADhJREFUeNpjYAACdjCAsjjAAMiDstA5QB47F5TJxAbksLBycgoJ8HIzM4LUcbKy8PEL8sCNg5oMAHx9Anyrx+YNAAAAAElFTkSuQmCC'), auto";
|
|
58
|
+
readonly _2: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAMAAACDi47UAAAARVBMVEVMaXHktAD+yADXqQD/0QD/0ABeSgAAAAG3kAD/0hfzwQD/zQDsugD/zwCkgQC9lQB0WwCSdACtiQCdfADDmgCzjgD1wgBsovB2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAFVJREFUeNpdj0kOwCAMA8Nq0n3//1MLNBKhvmWksRyiHNSQSj5TjaJCBOIPU3G+HsyClq0pCJ55HMy6R9UD9sFO7gC6clmErFhznVGPK8rj7n5w++EFukYET+thchsAAAAASUVORK5CYII='), auto";
|
|
59
|
+
readonly _3: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAALCAMAAAC53Ab8AAAAV1BMVEVMaXH/zwBeSgD+yAD/0hf/0ybktAAAAAG3kAD/0QDXqQD/0ADzwQD/zQB0WwDIngCqhgCaeQDwvgD/ygDsugCkgQC9lQCSdACtiQCdfADDmgCzjgD1wgCZ+KI0AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHlJREFUeNptkFkWgyAQBIclNKAx7prl/ufMQEAx2l/Uq3kNA9E5CDkANrAhkZHA/mSCyOWZzc5N6WxoAG6ce21ayU4kMzV5xrmh9x3XoHJa89y8yOyEUOYRb4d2lRr9ChTd+dVIK4ALlHk9JS5W5oKPf+NC/X0BEX0B4u0GeCgCBnYAAAAASUVORK5CYII='), auto";
|
|
60
|
+
readonly _4: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAANCAMAAABvheXhAAAAYFBMVEVMaXH2yB3QqRj70EL70k3701LdtBoAAAGxkBX70UhbSgn7zzylhhXCnhj7zSbswR1wWw3uwh2VeRHpvh34yh2Eaw3luhq0kxX7zzW3lRWfgRGoiRWOdBGYfBG9mhiujhUvxeaWAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIlJREFUeNp1kFcSwyAMREUxC9hJ7PSe+98yEgFMZuz9At6yKkSNAFoR4P0KZSKCmDB70sVnlk+J1ufQKbcZTr4IJUqYmfSl/vdjy1Ic0LG2OzdEZtdM7mMNCMeD3ktTJljLvtszFtb3XDg1ChuMOuvHXKmZAT8ROEC59ysuzC8Bk/4srwZ/CyH6AiYkB7WkpPmdAAAAAElFTkSuQmCC'), auto";
|
|
61
|
+
readonly _5: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAOCAMAAADpEZdPAAAAYFBMVEVMaXHdtBqfgRH70k3701JbSgnQqRgAAAGxkBX70EK3lRX2yB2OdBFwWw370UjluhrswR37zSarixXuwh2oiRX7zi6bfxFpVQmRdhGVeRF0Xg34yh2Hbg3xxB3pvh3CnhjfHVeAAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAJBJREFUeNptUFkWwyAING6A2dp03+9/y6LGSNPMByAD80aUEgDIEdQaAIjc54iCTmXsCRSNVOIadR4oJZ0TusjVeWvbJnTW2v2uueEvh3TwrE15c+qZO82M7mEReIz+7JijwRhWCZ2rFhOiTTNQO/pjcarvIP+cx7LTcL38n0UBW3z56ek2OF6k92frmkVdvL+7OQiYUyofJwAAAABJRU5ErkJggg=='), auto";
|
|
62
|
+
readonly _25: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAATCAMAAABWWYYKAAAAXVBMVEVMaXFbSgn70k370Uj70EL2yB1wWw0AAAGxkBX701LQqRjdtBqOdBGVeRGfgRHswR23lRX7zSbluhqoiRWlhhXuwh2Hbg10Xg20kxW6lxXpvh37zCDIoxj7zzX4yh1F/w8cAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAKtJREFUeNptkVcWhCAMRSkBjGAbnV72v8wJRZED+aB4ycuLYawIE4LVQV+7EDVMoMUyqmBA4JfHTbcY4vv1dHfeYh2oz9DQRERlh2WKBc3JfGEl09DV3toIcddB+EgQQtnZkfQy2Y17lrUkXHvKB1CXngzpok48Shm2jRox30RGvb9B/FGmLwdSCKowO54t7sMwQvoK6+H0/MdMehe7p/zm/ICcrs3RJoV8/wOJmwrmIGvH+wAAAABJRU5ErkJggg=='), auto";
|
|
63
|
+
readonly _100: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAXCAMAAADNyMQcAAAAhFBMVEVMaXFwWw37zSb70k32yB3701Luwh0AAAGxkBX70EL7zzWfgRGOdBFbSgm3lRXQqRj7zCDdtBrxxB34yh370UiHbg1WRgmbfxGVeRHzxh3luhrswR3nvB3pvh2oiRX7zi6lhhV0Xg20kxW6lxXIoxi9mhiLcRHgthrLpRj7zzx4Yg1pVQmh/vD3AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAANtJREFUeNp1ktkCQzAQRRExiZ3SVkvpvv3//3XIQtB5iMjJ3LmZxLImASqseQAwFXM4kgU00AwaLLBN5jubypOs3MK6EcZ2htN/1YYTiTXeD5dSVxPL9TBSmjbX8ByBoZajFTf3uHvbj5q6UptWzZNJddE3EAmvjrGFH3i3Kc7uMj/g4msPulqUEDeLQ0qpc8y6qE8cT1ZwL2FQc+4eEjT0mTImpr7szReZr/ur9qToLX5gS4EXhGCFOIx0vr58IEVf4aT6ZtyP2gZosXcaLZ8LbuLo9ARrSCqM/z+0HhDka2pQNQAAAABJRU5ErkJggg=='), auto";
|
|
64
|
+
readonly _250: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAWCAMAAAAPf7fDAAAAwFBMVEVMaXH7zSbxxB37zCD2yB3uwh3zxh0AAAGxkBXswR3iuRrluhrnvB34yh0dGADpvh3FoBiVeRHYsBrVrhrashrdtBqrixXIoxi3lRWLcRGbfxHTrBrCnhjLpRjQqRi6lxW9mhhwWw20kxV0Xg18ZQ3NqBilhhXgthpIOgltWA1pVQmoiRVgTQmujhW/nBiHbg2RdhH7zzz7zi6fgRGihBFCNQCAZw01KgBkUQkmIACYfBFbSgmEaw0uJgA8MAD7zzWLXbQwAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUZJREFUeNp1klWWwzAMRWO2w4xlZhrG7n9Xo6YnSdtp9Wdf+UlPlqZpmqhCuxtCViHq5LvcFvXhMkEYDRfyHxeC7S1mhB3XFrVUUwSu+NFSut9OL3gjAlf4QNW004tBnlGiu8srbkqJuBm0ZA6SlhqvvWs/fG+paeHaF8KKYex380XZgjhw02/FDR29YKacjtzOSoXa3pxwZUTBZP7mmIbuPss0H544RtiMiuTzHQH3E2/xQWkUdiM3zlYnzgi4H/eyL8SdsN3NVrbkUCHo5cNZOVFwD+1/W5QSysyp7/1KKNCOyxGBfwrP0gnMTCHg0Xj7c2pnsDv7V6yeqQSuF62RTZDuTl7PnBCCnGCzzEAJUcdP0qFgOEi9vqj+B0fJetcXjip1PXGzBNX6cGoRPYmzR3sEBni4eRo94KCjVDGo6t7PuF3TP1rgG9GlMDsaAAAAAElFTkSuQmCC'), auto";
|
|
65
|
+
readonly _1000: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAVCAMAAABmKa5TAAAAulBMVEVMaXHluhrYsBouJgDFoBgdGADuwh0AAAGxkBXpvh3VrhrswR3LpRiLcRHiuRqHbg2OdBGrixXashrnvB3zxh34yh2RdhGujhX2yB26lxXgthrQqRiEaw14Yg23lRXCnhjxxB2fgRGYfBHdtBrTrBptWA2AZw3NqBjIoxhwWw2VeRGoiRWlhhX7zCD7zSabfxFbSglCNQA1KgBWRgk8MABpVQl0Xg20kxV8ZQ2ihBG9mhhIOgn7zzVkUQk7597mAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAASxJREFUeNp1ktd2wjAQRC1jaZAb7p1O6DUhPfn/34pkGSeHwL6t7pnRNk27HZCh3Qt0ZeCWqKUU13aNBvwaK0HjCSubpT2FlSGYJIwEk0+BOVv41bn9R7ywLxYYrCi9k0gIX27nT2hNARa7djc0DecsMbFT70HiyCLTpKPwxpraByGCS8x8PBefIyKm0RPYioN8HbmlX4tIYfjJUeCY6zXmo1k3OYVmXj2K15DP8nFV91jjugLvyPWlIzEPy8F43mCn04xJJbJxshgc3lr1aFcM3yn2ykq06S5eJ/2mtD7N4uBjQpGJ5FtqLNHl+gXNrLGLzIFHYelDh8qcF8s0WV2GjoyVaUVx2QvCqeHXc1F4xO1t/3eXQDDcOM/4dx1qNbh7Ltjr/ur+HWl/ZT+/jxj+uQYGegAAAABJRU5ErkJggg=='), auto";
|
|
66
|
+
readonly _10000: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAdCAMAAACKeiw+AAAAwFBMVEVMaXEdGADnvB3swR3pvh3uwh3FoBgAAAGxkBXluhrYsBqVeRHxxB3ashrQqRifgRG3lRXzxh3LpRj2yB2ujhXIoxjiuRrgthpwWw3dtBrVrhr4yh2YfBGbfxGoiRWOdBGrixWRdhGLcREuJgC6lxVtWA3NqBh4Yg29mhg1KgCAZw10Xg20kxWihBFWRglpVQnTrBqEaw1CNQClhhWHbg2/nBj7zCB8ZQ08MAD7zSbCnhhMPQn7zi5kUQn7zzVgTQng0mzuAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAapJREFUeNp1k2uXmjAQhjUkGSMEhOWygCJQL6irq9Vu99LL//9XnSRQpD07n+bMEzLvDG9Goz5AxeizgIkK6E/C/3QMfT6558B+kSBsMe2Pdtj/IaKixZafPS2H2HmL+bHFzHHD+h4DYS/Jt4URBJa1KW8DTJ1cruZGEBASFZfdEGO/VjAIwa/7D+hm1GqYGzIh5181Dsrbb+hmBIVpUDBxrl41difVI/QbAPYg+JGlQY0tIRbZbLFX2KGxuhAxCqdTvvzQWDbX2uDUXb4iRuG2JaPFT1UVCQ/tseqZnHl1Ul9PZ7aTbIqD0baZeXg7+EQG3npn8ANKup1ADX5eeaZ57IaXE1gKP5OssddfALE7W3zXk5FsZa93zEd8oNPIe0RMe4yl42HHnLTx9lRyg8Xmab5tsS6xmJe1ZXKwhrhbDu1wHEzsg5Lmi4zblrFHTjBXyjXGrUJOZVRu/Ze0mY8BByu3+gclUaiWDrjmVQU5joXucWRTKRcARbxcQ+fZHN1zGcPfoCkvNW6NRoPrFnq3k5QX9TP8+0I6t4N8v8e9qd6S9yN8/qIG5T9OGikrB+sX9AAAAABJRU5ErkJggg=='), auto";
|
|
67
|
+
/** Ordered array of all coin stages, from 1gp to 10,000gp. */
|
|
68
|
+
readonly stages: readonly string[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Bucket cursor pack — represents a filling progression from empty to full.
|
|
72
|
+
*
|
|
73
|
+
* Perfect for loading indicators, progress bars, or upload states.
|
|
74
|
+
* The `stages` array orders them from empty → full for easy indexing.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* import { bucketPack } from '@dava96/osrs-icons';
|
|
79
|
+
*
|
|
80
|
+
* // Map a 0–100 progress value to a bucket fill state
|
|
81
|
+
* const stages = bucketPack.stages;
|
|
82
|
+
* const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
|
|
83
|
+
* element.style.cursor = stages[index];
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare const bucketPack: {
|
|
87
|
+
readonly empty: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA5FBMVEVMaXGLckCWe0WUeUNcRhWOdEKRdkMAAAFkTRhgSRiEenqbf0hXQxWghEpwVhpnYGCJgH+IcD+mh01OPBFSPxWjhUyDazxqYmJdV1duZmZ9ZjlzXjWPhYWegkmZfUaBeHiFfHuAaTplXl19dHSHfn1pUBp6Yzl3b25wXDSQhoZ7cnJza2s/MA1JORFsZGRjXFt1bWyFbT12YTdtWDJwaWmLgoGoik05LA00JgksIgmViomNg4N7Xh1sVBqaj49FNBFCPT1bVVVOSUhWUFBUTU2PbiR5cXCIaSKWjIt/dnaTiIirjE4aNStaAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlJREFUeNpd0teWgjAQBmBIIEMEBAREBMGO2Hvd3sv7v8+GYFn97/KdzMxJEYQ8ACDcBl5eK7cKpgfNybVCgVWP/eb/FtDyn4bDx+nAGF0UBolBFWXZmo6d02aI+3FdYanHnqRRzpCs6jQzhT54HYkqHRBAur+jR4yNim1LEkOtQ3OkVGLoOJShrUhnbD6/jZys3KEX1CqVplTMyjWNI83KJ94y6Wfo2PYJx/60L2a46AXaaLjZbLe73eDDksVChsG8W20UeSxRlq0Vw17QrZZnliUyEAk5FPiJjEaZCyGY4NRscwyqfsgJI2SGEebY65ZF1G63TdMM9yomZ8SRWtPdUklHWOa4mDcsgji6ESY5+kF1JuOo5pbeVUTq/JZh4rXKItuqrz9Raq7yqwdjmXwfwvRn/5WGKjrivNEq5NH1M7KWKFKz4W7t/MoAmM0urX/XV38Hjjmu/wC2oyMiAJCBbAAAAABJRU5ErkJggg=='), auto";
|
|
88
|
+
readonly fifth: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA5FBMVEVMaXGLckCWe0WUeUNcRhWOdEKRdkMAAAFkTRhgSRiEenqbf0hXQxWghEpwVhpnYGCJgH+IcD+mh01OPBFSPxWjhUyDazxqYmJdV1duZmZ9ZjlzXjWPhYWegkmZfUaBeHiFfHuAaTplXl19dHSHfn1pUBp6Yzl3b25wXDSQhoZ7cnJza2s/MA1JORFsZGRjXFt1bWyFbT12YTdtWDJwaWmLgoGoik05LA00JgksIgmViomNg4N7Xh1sVBqaj49FNBFCPT1bVVVOSUhWUFBUTU2PbiR5cXCIaSKWjIt/dnaTiIirjE4aNStaAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlJREFUeNpd0teWgjAQBmBIIEMEBAREBMGO2Hvd3sv7v8+GYFn97/KdzMxJEYQ8ACDcBl5eK7cKpgfNybVCgVWP/eb/FtDyn4bDx+nAGF0UBolBFWXZmo6d02aI+3FdYanHnqRRzpCs6jQzhT54HYkqHRBAur+jR4yNim1LEkOtQ3OkVGLoOJShrUhnbD6/jZys3KEX1CqVplTMyjWNI83KJ94y6Wfo2PYJx/60L2a46AXaaLjZbLe73eDDksVChsG8W20UeSxRlq0Vw17QrZZnliUyEAk5FPiJjEaZCyGY4NRscwyqfsgJI2SGEebY65ZF1G63TdMM9yomZ8SRWtPdUklHWOa4mDcsgji6ESY5+kF1JuOo5pbeVUTq/JZh4rXKItuqrz9Raq7yqwdjmXwfwvRn/5WGKjrivNEq5NH1M7KWKFKz4W7t/MoAmM0urX/XV38Hjjmu/wC2oyMiAJCBbAAAAABJRU5ErkJggg=='), auto";
|
|
89
|
+
readonly twoFifths: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA5FBMVEVMaXGLckCWe0WUeUNcRhWOdEKRdkMAAAFkTRhgSRiEenqbf0hXQxWghEpwVhpnYGCJgH+IcD+mh01OPBFSPxWjhUyDazxqYmJdV1duZmZ9ZjlzXjWPhYWegkmZfUaBeHiFfHuAaTplXl19dHSHfn1pUBp6Yzl3b25wXDSQhoZ7cnJza2s/MA1JORFsZGRjXFt1bWyFbT12YTdtWDJwaWmLgoGoik05LA00JgksIgmViomNg4N7Xh1sVBqaj49FNBFCPT1bVVVOSUhWUFBUTU2PbiR5cXCIaSKWjIt/dnaTiIirjE4aNStaAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlJREFUeNpd0teWgjAQBmBIIEMEBAREBMGO2Hvd3sv7v8+GYFn97/KdzMxJEYQ8ACDcBl5eK7cKpgfNybVCgVWP/eb/FtDyn4bDx+nAGF0UBolBFWXZmo6d02aI+3FdYanHnqRRzpCs6jQzhT54HYkqHRBAur+jR4yNim1LEkOtQ3OkVGLoOJShrUhnbD6/jZys3KEX1CqVplTMyjWNI83KJ94y6Wfo2PYJx/60L2a46AXaaLjZbLe73eDDksVChsG8W20UeSxRlq0Vw17QrZZnliUyEAk5FPiJjEaZCyGY4NRscwyqfsgJI2SGEebY65ZF1G63TdMM9yomZ8SRWtPdUklHWOa4mDcsgji6ESY5+kF1JuOo5pbeVUTq/JZh4rXKItuqrz9Raq7yqwdjmXwfwvRn/5WGKjrivNEq5NH1M7KWKFKz4W7t/MoAmM0urX/XV38Hjjmu/wC2oyMiAJCBbAAAAABJRU5ErkJggg=='), auto";
|
|
90
|
+
readonly threeFifths: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6YzkJOmQAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6FCO42AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
|
|
91
|
+
readonly fourFifths: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6YzkJOmQAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6FCO42AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
|
|
92
|
+
readonly full: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6Yzl7e5sAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6Nk9sLAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
|
|
93
|
+
/** Ordered array of all bucket stages, from empty to full. */
|
|
94
|
+
readonly stages: readonly string[];
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Free-to-Play Rune cursor pack — the 10 runes available to F2P players.
|
|
98
|
+
*
|
|
99
|
+
* Ordered by the four elemental runes, then combat/utility runes.
|
|
100
|
+
* Great for magic-themed UIs, tooltips, or decorative hover effects.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* import { runePack } from '@dava96/osrs-icons';
|
|
105
|
+
*
|
|
106
|
+
* // Pick a random rune cursor
|
|
107
|
+
* const randomIndex = Math.floor(Math.random() * runePack.stages.length);
|
|
108
|
+
* element.style.cursor = runePack.stages[randomIndex];
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare const runePack: {
|
|
112
|
+
readonly air: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXGPhYWonJtza2tsZGR1bWyVionk4eEAAAFwaWl3b259dHR5cXCEenqdkpKbkJB7cnK/trakmZiaj4+QhoaNg4OFfHuLgoF/dnavoqKmm5qpnp2rn5+WjItuZmaJgH/Cubm8srK6r6+soKC3rKy0qaiflJSjl5aYjo2TiIiBeHiHfn2xpaWvpKRbVVW2q6qhlZXFvLyyqKdlXl25rq27sbFjXFtqYmJnYGBRSkpMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFArijJsAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAcdJREFUeNpt02mbmkAMAGBBJUEEXOQ+pCtyyCHUe92z7f7/39QMSO3W5oOPT95JMgzDYHAL7GNwH4jVtl4tD48P3+4c0YucMq5X+yXx9y+OmGi8H1XlNo5XLf+4MQrzRHM9P3KcqrzyH0WONNV43qMFkbP9whiSKk2aaq7LA/h+WTPuFKWCVFWUpGlSoOA9J973jJJpBEGWzVWAhCm4blSunh+YojgzDX29FoIAgK2gSDWvqg+McTGVLcMA0NcCQJa1nDS8Ey9/4gBHk7woQkpxHP0IAVPaBV+tnklPYzuXTZNyVt+BJihaFB9Id0PJzkFumRroOv3J5krqlXvSD3EmSZSRAQoAo+0fZIrmOjXp22gynVEmB6B6i7Wn6Qqd+5b09TyeTClj26w8DBmvBdXl/Yr0chyOyWd9d7Z9XVB5z3fYA29EcdiWSzZ0u6NiNXX59rAuxwUxAJtOD8eQ09Wk0bqDfj0RUzl05TTc0DNVub6k981oIV7L2XQztDghmPcv+Ok4GrHuk3bzuVxYnL7uLwe+vJ1PLbd7t2WzoOrb1Xl52uy67sTkufz3pUR8Z86iW4H/3ufL52bz62N3ph7/+RoQ77+U36KNMyU1Bh/+AAAAAElFTkSuQmCC'), auto";
|
|
113
|
+
readonly fire: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXGaj4+kmZibkJCdkpKonJtsZGQAAAGoIhVwaWlza2uPhYWViol1bWyflJS/trajl5apnp2mm5qQhoZ9dHR3b26rn5+voqJuZmaLgoGEenqBeHiHfn2WjIvCubmYjo17cnKhlZW8srK6r695cXCsoKC3rKy0qaiFfHuNg4N/dnavpKSxpaVbVVWJgH+TiIi2q6rFvLyyqKdlXl25rq27sbFjXFtqYmJRSkpnYGBMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFD3A8DAAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAaRJREFUeNpt0+mSojAQAGAJYEdBhkuQa5FVLgFhPUfnntn3f6btoKyjTlflD1/TlXQ6vd4loIvefQAUqyaZbX8//LpzAC22y7RJNjPkP1cOoBDRiotylaZJyx8XBplTiK5ZsW0X5Zn/K0ioKhFFDRNie3XFsEQVIlUluo4ZllU2jE8Kpo/KC4ISRSohLMFONx2DmeVBEIYczwsKPZWIy+TpgSkMpllu1LUc0JDjqNBmEK1otoxhMnedPJcMg8ptBk+pokSinc4+oQf9sef7S8ehVDIopUFAKduFWCRPqPvRwnOzzEfJcdW4GJM43aKuh+bC81z2Ef+n7H+sL6hauUF9H0xNdHoVoUB0u0F97Y/nU5PehIB9X6G+HEbj+fwGZV4XrQL1uBuORuM7xZba7MDVYDC8YanmVV1sm3XcTZCv1eCViJwa/bJHHl7MX+ZGyAvnS3qr+hOs3qGbLR1JDrjugh93ffQzY+d8RzLqbjjg+fWwZ4x7x6Mv3Az7Ll1G5/mxWrfVGaN77vehBHhjzuKUAbfzfPxbVV/v6wPW+OE1ANy/lH+KczGeQmrIpwAAAABJRU5ErkJggg=='), auto";
|
|
114
|
+
readonly water: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXGaj4+onJt1bWydkpJwaWmPhYUVGqgAAAGViolsZGR9dHSQhoaWjIubkJB3b26Eenp5cXCkmZhza2uBeHiHfn17cnKTiIh/dnaFfHuLgoGNg4O/traYjo2flJSjl5amm5qpnp2JgH+hlZWrn5+voqJuZmbCubm8srK6r6+soKC3rKy0qaixpaWvpKRbVVW2q6rFvLyyqKdlXl25rq27sbFjXFtqYmJRSkpnYGBMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFDUeke0AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAapJREFUeNpt02mDmjAQBmDBSAbEKHiAsnII2Mpdz9U9e/z/37STAEu3dr4+kxdmCL1eV9BW774Ain2V7k7fH77dOUCQxHlWpccd8o8vDuCacpQU+T7LUsE/OwZVck0/iJI4LvKGPxUUVM+U5QAbknj/hWGDSkLPM30fO6IorzjXCsM5KiPEDUOPmrwhzo4tw3DpjEbrtcQYcWkdkeTp0wNXGCyWjm5ZKnZIEq0jzKCoTpxha0xWjqPouqWqlNYRbijH2e4X9EAbz+bzzWrlKIpOKRUR+BZykT6hXvr2bLJcigbU+hGMmEl2Qj1Mh/YMHQMoL3wCMvGC/Ij6PlgM0SfotGNi+nGF+qqNjcZpxwT3vkd9ufbHBrptzxpVkJkvRwXq7Tzt98XxBimOpzJcacwHLgeDqThOO7aY58tiWbfzlvPYaHGzUnTmhma96JcLMnqDOLqjrxlpPtJbqW1FukAcHQ+rI6n9wI9nTePpQnG0OUZb7eWA59frRbB4d3vC16p0V+f5sTw06cZiwTfz96UEeOPOq+6Af+/z7U9Z/n4/XDHjP38DwP2f8gHHtzWW+3HO1QAAAABJRU5ErkJggg=='), auto";
|
|
115
|
+
readonly earth: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXFsZGSEenqPhYVwaWmdkpKonJttSQ0AAAF9dHSViol5cXCbkJCkmZh/dnaBeHh7cnJ3b251bWyHfn2LgoGFfHuaj49za2uJgH+Ng4OQhoa/traflJSjl5amm5qpnp2WjIuTiIirn5+voqJuZmbCubmYjo2hlZW8srK6r6+soKC3rKy0qaixpaWvpKRbVVW2q6rFvLyyqKdlXl25rq27sbFqYmJjXFtRSkpnYGBMRka+tLRFQEBYUlJUTU1IQ0NhWlrGvr7BuLddV1dWUFAr/HOAAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAZxJREFUeNpt0+liokAMAGAVBiIyXtyUQ8DVyl3Pau923/+ZNgOiRTd/v5BkMkOncw1oonMfAPm6TFa7x4c/dw7gx1GWlsl2hfzUcgCHCmGcZ+s0TSr+ujJIukM9P4yjKM/OfFHgUF0qCD4mxNG6xWCikqXrUs/DjDDMSsa1Ql9BlQlxlkuXUpYQpduGoa9Zs9liocsycZy6RJwlLw9MgR9rlh0EEmbolxJ+Xu4Yw3zQUy2Ls+1AkpoSoihE6eobOtCdjBTFVFVL/B1EyJMX1P10OOppWstEmdA43aFujP5wNGqjqBPXz7aon/y4j97raayBxXE4wGxBqBeVqG/dyeDirH/FBPe+Rn0/TicD9CFrr5gmGy+QZE8Ic9TTwZiit9rakowrjdiBC543bobiAtn1hGpZp8Ocv1Vbdpa0XvT7fs4bxrQZDptb9kIm50v6KLpzrH4eDtlUOWmmNxf8fOiiI09qVlQ8VfM44PXtuK+4qj6szs1dn87rc7Fpqo+rz38/SoAP5izqDLh9z6e/RfHzuTlijf/8DQD3f8o/qkc1EyGPx1YAAAAASUVORK5CYII='), auto";
|
|
116
|
+
readonly chaos: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAA2FBMVEVMaXF1bWxsZGSonJt5cXB3b25waWngqBoAAAHk4eGkmZh9dHRza2t7cnKPhYWdkpKbkJC/traViompnp2mm5qEenqBeHiLgoGaj49uZmavoqKrn59IRgmHfn1/dnaFfHvCubm8srK6r6+3rKy0qaiQhoasoKCflJSWjIujl5aJgH+Ng4OxpaWvpKRbVVWhlZW2q6qTiIiYjo3FvLyyqKdlXl0VERG5rq27sbFjXFtqYmJnYGBRSkpMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFAAM/I5AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbBJREFUeNpt01ljojAQAGAFlWmUoxyiIGUrt9xU61V7btv//492wrGua+eBB75kkpkkvd45oIvedQCk68JZ7u5vf105gOIbiVs42yXyw4UDBIQ1/TRZu65T8+8zgzwLiKqYvmGkSct/FQTUiLCsggN8Y33BsEIV8ygiqoojTDMpKDcKYwtVEsUgzyNC6ADD3XYMYzsOw6qaSRJXB6bwE+f5liqMeDv2ylIOQ64NTKGkxY4yzAeaHseC53HcDQ3kIMhZw11+Qg+Y4dSyVrre4GJBGXfBps4z6qF/N9VsG//dLDrFTRLf3aFuJuO76VS70GomRkqyRf0Y8WN0rl22XjisRKIaBeobMxygN/r4WKscitj3NerrsT8coFOlSLmUJZU1U9TTftJH57lzRYInS9hSgxacjUYTOr1h/OqxUEqRytbNOu3nlIeDtlVYvOBJQU6aRr8ekOn0GjXbWsVeJYntIb1nzLzJjkhbg5PlcNYd8NOeYdrsPJauWZi67C4HvLwdDzX3a6a5deF8dV6esk2Xna+n/3spAd6p02hGwP/3+fSdZV8fmyPm+OE1AFy/lD+qgjWJ67gidwAAAABJRU5ErkJggg=='), auto";
|
|
117
|
+
readonly mind: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAA0lBMVEVMaXGLgoFwaWlsZGR5cXB7cnJ9dHQAAAFIRgngiBqEenqFfHuHfn2onJuPhYV1bWyViomdkpKbkJCBeHikmZiQhoaflJSJgH+Ng4OTiIi/trZ3b26aj49uZmZ/dnZza2ujl5ahlZXCubm8srK6r6+3rKyvoqKrn5+soKCpnp2mm5q0qaixpaWvpKRbVVWWjIuYjo3FvLy2q6qyqKdlXl27sbG5rq1jXFtqYmJRSkpMRkZnYGBFQEC+tLRYUlJUTU1IQ0NhWlrGvr7BuLdWUFBdV1d4dGkXAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAcRJREFUeNpt0+eCmkAQAGDBMrMivQiHBRNFQFBjP72a8v6vlJnljLmY+cnHTtnSaNwCrtG4D4Bqu5lN918fvtw5QJ6l5WIzO0yJv31ygMDT51lVbheLmeTvNwZrEHhFPs/StCo/+I+CQZp4up4LkWXp9hNDn9SeJIlXCKHn83kpmGuFTo9UCDuYTITwCl0XQhyuDB0tXNEH4Th2EFAKIYqsnD0/sILa1kI/Yl4PEJFTJF5ebfbMMGx1lTA0fD9CGXUKPV1Mf0ADmrHb6/UVJSSJIgtxPRg4tq1Xs2fSkzlyu5rWQ6QffKQMqzWxly32pLtxZ+SSI/YVZEeLm0zy8kD6rra5pS4iFwgNym+t1rZXpBvSl2bcanc6I8SuxvURfWKb9n1L+nox4xY5osvcr9kp9HlFej6OTTO+ssbNGb7l0JamPPBSVcdyeT2vLB45SaHLzTofh8RCyOVcXAjDd4KJV2/062moctuyOVeyWDv2xyG9LZvMdXPMfcWwVoPrAT8em03OHsc19xTDj66XA55eLifJJmcfybmN29V5elzuiNUxF5fL/76UAG/sHHK6Nvx7n88/l8tf77sL5fjPawC4fym/AWbpNUTFnNo2AAAAAElFTkSuQmCC'), auto";
|
|
118
|
+
readonly death: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAA0lBMVEVMaXGPhYWHfn1waWmLgoFsZGR5cXDk4eEAAAF7cnKViomdkpJ3b26Ng4OQhoaJgH91bWx9dHSaj4+WjIuonJu/traEenqkmZiFfHubkJCTiIhza2uvoqJuZmYVERHCubm8srKYjo2flJSpnp20qairn5+3rKy6r6+BeHijl5asoKCmm5qvpKSxpaVbVVV/dna2q6rFvLyhlZWyqKdlXl27sbFjXFtqYmK5rq1nYGBRSkpMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFBUSRUMAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbFJREFUeNpt0+di2jAQAGCMMTpb2MEjeGBoPMETl03IbNr3f6WeBAZSej/1Sac7jU7nGtBG5z4AylWTzjZPjz/uHCDK/Spu0v0M+ec3BwhtK8nLahXHKedfVwbFCO0iSnLfL6szXxQE1My2rIgQkvurbwwPqHSZZTZhkSRVw/ikoHdRXUpDZtMpsSI/3rcMuqOaZhAYSFxJUeRV+vLIFETZUTXPU0yuLJaZHZXNhjFM+qOeqgqaRtqgYbi0/Hj2BR2QBvNu96HXU/m2hJiBwaqwyvQFdTdczEeOc5owJbgFukvtPN6grsf6Yo6OCdhqTUMPDJpF1R71U5R19BH3nioInKld+A3quzToo+OykXPZ36R47ivUt8Nw0O/LvFrnnN1T3MJKStTjdjxEly8NEWxPca0o8VnDtSiOr8sJYZt7blZY/LCO2wnjwQ0Lmhsu7dNBv+2Qx0Nyk1sLXHq+pI9amogiH5bbxYpptBf8vJWkCRtmvWFnXUzttY8DXt8PO8a8dn3B+xauT+f1uV6z7Kx2WWYnd/soAT6YszjNgH/f8/FPXf/+XB8wx39+A8D9T/kLRWwzl3aLm/YAAAAASUVORK5CYII='), auto";
|
|
119
|
+
readonly law: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXFsZGSPhYWdkpJwaWmLgoGFfHsaIuAAAAGHfn13b251bWyEenqJgH9za2uonJt9dHR5cXCkmZiViom/trZ7cnKNg4OQhoapnp1uZmabkJCvoqKaj4+rn5/CubmBeHi8srK6r6+mm5qjl5a3rKysoKC0qaiflJShlZV/dnZbVVWvpKSTiIixpaWWjIu2q6rFvLxlXl2yqKeYjo27sbFjXFtqYmJRSkpnYGBMRka5rq1FQEC+tLRUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFAdIpvGAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbhJREFUeNpt0+eCmkAQAGAFYQZFaUeREiNNpMZ66tUk9/7PdLMIMRcz/+DbnZltg8EtsI/BfSAW2yZe7r8/fLtzRCfxqrSJL0viH18ccaUrQVJU2zSNW/55YzT8lR46QeJ5RdXxH0WONNIVxaEBibf9wjgl5bMo0sOQRgRB1TC+KqoSqcvzqyyLdKBwvPTSM6qiVde7HdwiTKr4+YEpjkzRssuygy6FUzR7xjjXZMGyONsuDQNg57vAwypTvHT5Cwc4HC8kaQqCxXE2gFHX4AN1oRTxM+lxsl7IoiiBIFgANpWogVhP0j3pZqauFyCLIE0FgHY+gM9HTnUhfR+Zqtp2xApYXNedHnoN6etwrJntH7lN36sSbElfTpOxBj1Ppx2HSlCQng+zyWRM31ReBrGtDoZLW+qxBeej0Yyma6a6pv+MLa50o1BpN+t8mDOm6mqXXeBsd5Xp141+ORLP+uqMLXvn8t0hveXDeZu9VdoammzUfn/Aj4ch+aw7iIUsUeqyvxz49Ho6MqbeWW/X0rer8/SYb7rsmmmypf19KRHfmLO4jsB/7/P5I89/v29OlOM/rwHx/qV8AsWdMoqwxBK4AAAAAElFTkSuQmCC'), auto";
|
|
120
|
+
readonly nature: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAAz1BMVEVMaXFsZGR1bWyEenp9dHRwaWmViokAAAERixWPhYV7cnKLgoF5cXCbkJCdkpKNg4N3b26Hfn2aj4+WjIuQhoZza2uFfHuJgH9/dnaTiIiBeHi/trakmZionJuflJSYjo2voqJuZmbCubm8srK6r6+3rKyjl5a0qaisoKCpnp2vpKSrn59bVVW2q6qmm5qxpaXFvLyhlZWyqKdlXl25rq27sbFjXFtqYmJnYGBRSkpMRka+tLRFQEBUTU1YUlJIQ0NhWlrGvr7BuLddV1dWUFA3NRYCAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAb1JREFUeNpt03ebmkAQBnARZQYVkCICR/OiNCmxe15N+f6f6WYXjLmY+YuHH/POsiy93q3gWr37Aii21Wp5+PbweOcAeRY3abXaL4m/f3GA0A/WWdFs03TF+ceNQTJCv87XWRwXTcd/FGTSxA+CnB7I4u0XhjmpukkSH7uqGLcKA51UUfFWcbq/MgxszTQjuqmoYbhJ6KLOmtXzA1MYjmzNcumeGRkUoYaIiZ8X1YExLCbiWNNIXUkyo8hQFMRwE8Tp8if0QJh6uj4nlWXLdSXTRGQRQbF6Jj31HU+0bcTxWJMtNoNGKKqfpQfS3WzgeOSIc5ogUwgNMNQkb/akH8PRgFwUbV3HMc8nVv06rkjfhOmkc2pHFk+s0r5vSV/P/emE3HE8RJ3FM1bqYF2QXo6zfr9tR7RR5ywpQb6O2QuXw+GsbUekcM6uktQB36zLccGY2hFZO7FsKeHGbzf69UTM2hFZO7FmRYrafaT3UljwdERqp1enZsk0rh/46SgILB2Rrd0TdYp2r4cDXt7OJ8587Y7IR9+OzstTuevSJyPe/vehBHhnzqp9Av49z5ffZfnrY3emjP/8DQD3f8onci40NjYnZ7EAAAAASUVORK5CYII='), auto";
|
|
121
|
+
readonly body: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAMAAACqEUSYAAAA0lBMVEVMaXF5cXCNg4NsZGSPhYV9dHR7cnIAAAEYINAVERGHfn2QhoaonJtwaWl/dnaEenqFfHuViomkmZidkpKbkJB1bWyBeHiJgH+LgoGaj493b26flJS/traWjIuTiIijl5Zza2vCubm8srK6r6+3rKyrn5+pnp2voqKsoKBuZmahlZW0qaivpKSmm5qYjo1bVVWxpaXFvLy2q6qyqKdlXl25rq27sbFjXFtqYmJRSkpMRkZnYGBFQEC+tLRYUlJUTU1IQ0NhWlrGvr7BuLdWUFBdV1esApB5AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAcpJREFUeNpt0+uamkAMBmAFJAkHQUAFWcGtclBBrefVPbbb+7+lZkBrt3b+wfvkS2YYGo3bgutq3C+AYrOejPffHh7vHCDNs9V8PdmNmb9/cYDQMZK8WG3m80nFP24MnSB0yjTJs6xYXfiPgsIaO4aRIuZ5tvnC0Gd1Z3HslIhGmiSIgmuFlsaK6IazGaJTGgYi7q4MLVsa8ovA89wwFBGcv5q8PAgFU7UlPWIeLgIi4giMnbRY7wXDtGn5kqToetQhWhDVEUY2H/+EBsiDnqb1fV9SiKKIiCMCz3WNYvLCeuy2e5Zta30ikcDM7rlOPt+zbketdo+dqF91IOqIIeN0tWP9MFV+QIsn4gaczwMMF65TZmvWV3nQVFtcb1mCRTyzy+e+YX07dwdN9na7R6K7X7FXGknBejqMut26nKjurugdj480ExtemuaoLieqmqOkRF5cGtVhnQ5TZh5MrdTWEBXdC2dOfdBvx6nJeB1OMC489/KR3pfylF9chmPm4s4wuH7gp4Mso2g+qFnzeezr5YDn1/NRFs27KJiz+75yuzrPT8stszlC5qr870sJ8C5crGp3Kvx7n0+fy+Wvj+2ZM/7zNwDc/ym/ARuUNYt5kjXZAAAAAElFTkSuQmCC'), auto";
|
|
122
|
+
/** Ordered array of all F2P runes: elementals first, then combat/utility. */
|
|
123
|
+
readonly stages: readonly string[];
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Registry of all available cursor packs.
|
|
127
|
+
*
|
|
128
|
+
* The documentation site reads this array to automatically render
|
|
129
|
+
* every pack. To add a new pack to the site, simply push your
|
|
130
|
+
* {@link PackInfo} entry here — no site code changes needed.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* import { allPacks } from '@dava96/osrs-icons';
|
|
135
|
+
*
|
|
136
|
+
* allPacks.forEach(pack => {
|
|
137
|
+
* console.log(`${pack.name}: ${pack.stages.length} stages`);
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare const allPacks: PackInfo[];
|
|
142
|
+
//# sourceMappingURL=packs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../../src/packs.ts"],"names":[],"mappings":"AA6BA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,6CAA6C;IAC7C,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;IAWpB,8DAA8D;qBAYzD,SAAS,MAAM,EAAE;CACd,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU;;;;;;;IAOrB,8DAA8D;qBAQzD,SAAS,MAAM,EAAE;CACd,CAAC;AAIX;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;IAWnB,6EAA6E;qBAYxE,SAAS,MAAM,EAAE;CACd,CAAC;AAIX;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,QAAQ,EAAE,QAAQ,EAoC9B,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allPacks = exports.runePack = exports.bucketPack = exports.coinsPack = void 0;
|
|
4
|
+
const icons_1 = require("./generated/icons");
|
|
5
|
+
/**
|
|
6
|
+
* A cursor pack groups related OSRS icons by their in-game state.
|
|
7
|
+
*
|
|
8
|
+
* Each key is a semantic label and each value is the corresponding
|
|
9
|
+
* CSS cursor string, ready to apply to any element's `cursor` property.
|
|
10
|
+
*
|
|
11
|
+
* **Want to add a new pack?** See the
|
|
12
|
+
* {@link https://github.com/Dava96/osrs-icons/blob/main/CONTRIBUTING.md | Contributing Guide}
|
|
13
|
+
* for instructions on assembling and submitting your own cursor packs.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { coinsPack, animateCursor } from '@dava96/osrs-icons';
|
|
18
|
+
*
|
|
19
|
+
* // Animate the coin stack growing
|
|
20
|
+
* const stop = animateCursor(coinsPack.stages, { duration: 1200 });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
// ── Progression Packs ──────────────────────────────────────────────
|
|
24
|
+
/**
|
|
25
|
+
* Coins cursor pack — represents increasing wealth from 1gp to 10,000gp.
|
|
26
|
+
*
|
|
27
|
+
* In OSRS, the coin stack sprite changes based on the amount.
|
|
28
|
+
* Great for progress indicators, score displays, or loading states.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { coinsPack } from '@dava96/osrs-icons';
|
|
33
|
+
*
|
|
34
|
+
* // Map a 0–100 progress value to a coin stack
|
|
35
|
+
* const stages = coinsPack.stages;
|
|
36
|
+
* const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
|
|
37
|
+
* element.style.cursor = stages[index];
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
exports.coinsPack = {
|
|
41
|
+
_1: icons_1.coins1,
|
|
42
|
+
_2: icons_1.coins2,
|
|
43
|
+
_3: icons_1.coins3,
|
|
44
|
+
_4: icons_1.coins4,
|
|
45
|
+
_5: icons_1.coins5,
|
|
46
|
+
_25: icons_1.coins25,
|
|
47
|
+
_100: icons_1.coins100,
|
|
48
|
+
_250: icons_1.coins250,
|
|
49
|
+
_1000: icons_1.coins1000,
|
|
50
|
+
_10000: icons_1.coins10000,
|
|
51
|
+
/** Ordered array of all coin stages, from 1gp to 10,000gp. */
|
|
52
|
+
stages: [
|
|
53
|
+
icons_1.coins1,
|
|
54
|
+
icons_1.coins2,
|
|
55
|
+
icons_1.coins3,
|
|
56
|
+
icons_1.coins4,
|
|
57
|
+
icons_1.coins5,
|
|
58
|
+
icons_1.coins25,
|
|
59
|
+
icons_1.coins100,
|
|
60
|
+
icons_1.coins250,
|
|
61
|
+
icons_1.coins1000,
|
|
62
|
+
icons_1.coins10000,
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Bucket cursor pack — represents a filling progression from empty to full.
|
|
67
|
+
*
|
|
68
|
+
* Perfect for loading indicators, progress bars, or upload states.
|
|
69
|
+
* The `stages` array orders them from empty → full for easy indexing.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { bucketPack } from '@dava96/osrs-icons';
|
|
74
|
+
*
|
|
75
|
+
* // Map a 0–100 progress value to a bucket fill state
|
|
76
|
+
* const stages = bucketPack.stages;
|
|
77
|
+
* const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
|
|
78
|
+
* element.style.cursor = stages[index];
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
exports.bucketPack = {
|
|
82
|
+
empty: icons_1.bucket,
|
|
83
|
+
fifth: icons_1._15thsFullBucket,
|
|
84
|
+
twoFifths: icons_1._25thsFullBucket,
|
|
85
|
+
threeFifths: icons_1._35thsFullBucket,
|
|
86
|
+
fourFifths: icons_1._45thsFullBucket,
|
|
87
|
+
full: icons_1.bucketOfWater,
|
|
88
|
+
/** Ordered array of all bucket stages, from empty to full. */
|
|
89
|
+
stages: [
|
|
90
|
+
icons_1.bucket,
|
|
91
|
+
icons_1._15thsFullBucket,
|
|
92
|
+
icons_1._25thsFullBucket,
|
|
93
|
+
icons_1._35thsFullBucket,
|
|
94
|
+
icons_1._45thsFullBucket,
|
|
95
|
+
icons_1.bucketOfWater,
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
// ── Collection Packs ───────────────────────────────────────────────
|
|
99
|
+
/**
|
|
100
|
+
* Free-to-Play Rune cursor pack — the 10 runes available to F2P players.
|
|
101
|
+
*
|
|
102
|
+
* Ordered by the four elemental runes, then combat/utility runes.
|
|
103
|
+
* Great for magic-themed UIs, tooltips, or decorative hover effects.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { runePack } from '@dava96/osrs-icons';
|
|
108
|
+
*
|
|
109
|
+
* // Pick a random rune cursor
|
|
110
|
+
* const randomIndex = Math.floor(Math.random() * runePack.stages.length);
|
|
111
|
+
* element.style.cursor = runePack.stages[randomIndex];
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
exports.runePack = {
|
|
115
|
+
air: icons_1.airRune,
|
|
116
|
+
fire: icons_1.fireRune,
|
|
117
|
+
water: icons_1.waterRune,
|
|
118
|
+
earth: icons_1.earthRune,
|
|
119
|
+
chaos: icons_1.chaosRune,
|
|
120
|
+
mind: icons_1.mindRune,
|
|
121
|
+
death: icons_1.deathRune,
|
|
122
|
+
law: icons_1.lawRune,
|
|
123
|
+
nature: icons_1.natureRune,
|
|
124
|
+
body: icons_1.bodyRune,
|
|
125
|
+
/** Ordered array of all F2P runes: elementals first, then combat/utility. */
|
|
126
|
+
stages: [
|
|
127
|
+
icons_1.airRune,
|
|
128
|
+
icons_1.fireRune,
|
|
129
|
+
icons_1.waterRune,
|
|
130
|
+
icons_1.earthRune,
|
|
131
|
+
icons_1.chaosRune,
|
|
132
|
+
icons_1.mindRune,
|
|
133
|
+
icons_1.deathRune,
|
|
134
|
+
icons_1.lawRune,
|
|
135
|
+
icons_1.natureRune,
|
|
136
|
+
icons_1.bodyRune,
|
|
137
|
+
],
|
|
138
|
+
};
|
|
139
|
+
// ── Pack Registry ──────────────────────────────────────────────────
|
|
140
|
+
/**
|
|
141
|
+
* Registry of all available cursor packs.
|
|
142
|
+
*
|
|
143
|
+
* The documentation site reads this array to automatically render
|
|
144
|
+
* every pack. To add a new pack to the site, simply push your
|
|
145
|
+
* {@link PackInfo} entry here — no site code changes needed.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* import { allPacks } from '@dava96/osrs-icons';
|
|
150
|
+
*
|
|
151
|
+
* allPacks.forEach(pack => {
|
|
152
|
+
* console.log(`${pack.name}: ${pack.stages.length} stages`);
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
exports.allPacks = [
|
|
157
|
+
{
|
|
158
|
+
name: 'Coins',
|
|
159
|
+
icon: icons_1.coins10000,
|
|
160
|
+
importName: 'coinsPack',
|
|
161
|
+
description: 'Stack grows from 1gp to 10,000gp — great for progress or score displays',
|
|
162
|
+
stageLabels: ['1', '2', '3', '4', '5', '25', '100', '250', '1K', '10K'],
|
|
163
|
+
stages: exports.coinsPack.stages,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
name: 'Bucket',
|
|
167
|
+
icon: icons_1.bucket,
|
|
168
|
+
importName: 'bucketPack',
|
|
169
|
+
description: 'Empty → Full — perfect for loading indicators or upload progress',
|
|
170
|
+
stageLabels: ['Empty', '1/5', '2/5', '3/5', '4/5', 'Full'],
|
|
171
|
+
stages: exports.bucketPack.stages,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: 'F2P Runes',
|
|
175
|
+
icon: icons_1.airRune,
|
|
176
|
+
importName: 'runePack',
|
|
177
|
+
description: 'All 10 free-to-play runes — perfect for magic-themed UIs or hover effects',
|
|
178
|
+
stageLabels: [
|
|
179
|
+
'Air',
|
|
180
|
+
'Fire',
|
|
181
|
+
'Water',
|
|
182
|
+
'Earth',
|
|
183
|
+
'Chaos',
|
|
184
|
+
'Mind',
|
|
185
|
+
'Death',
|
|
186
|
+
'Law',
|
|
187
|
+
'Nature',
|
|
188
|
+
'Body',
|
|
189
|
+
],
|
|
190
|
+
stages: exports.runePack.stages,
|
|
191
|
+
},
|
|
192
|
+
];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for {@link animateCursor}.
|
|
3
|
+
*/
|
|
4
|
+
export interface AnimateCursorOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Total duration of one full animation cycle in milliseconds.
|
|
7
|
+
* Each frame occupies `duration / frames.length` of the cycle.
|
|
8
|
+
*
|
|
9
|
+
* @default 1000
|
|
10
|
+
*/
|
|
11
|
+
duration?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Element to scope the animated cursor to.
|
|
14
|
+
* When omitted the cursor animates on the entire page (`*`).
|
|
15
|
+
*/
|
|
16
|
+
target?: HTMLElement;
|
|
17
|
+
/**
|
|
18
|
+
* How many times the cycle should repeat.
|
|
19
|
+
* Use `Infinity` (the default) for a continuous loop.
|
|
20
|
+
*
|
|
21
|
+
* @default Infinity
|
|
22
|
+
*/
|
|
23
|
+
iterations?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Animates a cursor by cycling through an ordered array of OSRS icon
|
|
27
|
+
* strings using a pure‑CSS `@keyframes` rule.
|
|
28
|
+
*
|
|
29
|
+
* Each frame is assigned an equal slice of the total `duration` and
|
|
30
|
+
* transitions are **discrete** (`step-end`), producing a clean
|
|
31
|
+
* frame‑by‑frame sprite animation — no JavaScript timers required.
|
|
32
|
+
*
|
|
33
|
+
* **Browser‑only** — in non‑browser environments (Node / SSR) this
|
|
34
|
+
* is a no‑op that returns an empty cleanup function.
|
|
35
|
+
*
|
|
36
|
+
* @param frames - An ordered array of CSS cursor strings (≥ 2).
|
|
37
|
+
* @param options - Optional configuration for duration, target, and iterations.
|
|
38
|
+
* @returns A cleanup function that removes the injected styles and
|
|
39
|
+
* stops the animation.
|
|
40
|
+
*
|
|
41
|
+
* @throws {Error} If fewer than 2 frames are provided.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import {
|
|
46
|
+
* coins1, coins2, coins3, coins4, coins5,
|
|
47
|
+
* animateCursor,
|
|
48
|
+
* } from '@dava96/osrs-icons';
|
|
49
|
+
*
|
|
50
|
+
* // Animate a growing coin stack on the whole page
|
|
51
|
+
* const stop = animateCursor(
|
|
52
|
+
* [coins1, coins2, coins3, coins4, coins5],
|
|
53
|
+
* { duration: 1200 },
|
|
54
|
+
* );
|
|
55
|
+
*
|
|
56
|
+
* // Later, stop the animation and clean up
|
|
57
|
+
* stop();
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { lobsterRaw, lobsterCooked, lobsterBurnt, animateCursor } from '@dava96/osrs-icons';
|
|
63
|
+
*
|
|
64
|
+
* // Scope to a specific element, play 3 times
|
|
65
|
+
* const stop = animateCursor(
|
|
66
|
+
* [lobsterRaw, lobsterCooked, lobsterBurnt],
|
|
67
|
+
* { duration: 900, target: document.getElementById('cooking')!, iterations: 3 },
|
|
68
|
+
* );
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function animateCursor(frames: string[], options?: AnimateCursorOptions): () => void;
|
|
72
|
+
//# sourceMappingURL=animateCursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animateCursor.d.ts","sourceRoot":"","sources":["../../src/animateCursor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,oBAAyB,GAAG,MAAM,IAAI,CAiD9F"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Animates a cursor by cycling through an ordered array of OSRS icon
|
|
3
|
+
* strings using a pure‑CSS `@keyframes` rule.
|
|
4
|
+
*
|
|
5
|
+
* Each frame is assigned an equal slice of the total `duration` and
|
|
6
|
+
* transitions are **discrete** (`step-end`), producing a clean
|
|
7
|
+
* frame‑by‑frame sprite animation — no JavaScript timers required.
|
|
8
|
+
*
|
|
9
|
+
* **Browser‑only** — in non‑browser environments (Node / SSR) this
|
|
10
|
+
* is a no‑op that returns an empty cleanup function.
|
|
11
|
+
*
|
|
12
|
+
* @param frames - An ordered array of CSS cursor strings (≥ 2).
|
|
13
|
+
* @param options - Optional configuration for duration, target, and iterations.
|
|
14
|
+
* @returns A cleanup function that removes the injected styles and
|
|
15
|
+
* stops the animation.
|
|
16
|
+
*
|
|
17
|
+
* @throws {Error} If fewer than 2 frames are provided.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import {
|
|
22
|
+
* coins1, coins2, coins3, coins4, coins5,
|
|
23
|
+
* animateCursor,
|
|
24
|
+
* } from '@dava96/osrs-icons';
|
|
25
|
+
*
|
|
26
|
+
* // Animate a growing coin stack on the whole page
|
|
27
|
+
* const stop = animateCursor(
|
|
28
|
+
* [coins1, coins2, coins3, coins4, coins5],
|
|
29
|
+
* { duration: 1200 },
|
|
30
|
+
* );
|
|
31
|
+
*
|
|
32
|
+
* // Later, stop the animation and clean up
|
|
33
|
+
* stop();
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { lobsterRaw, lobsterCooked, lobsterBurnt, animateCursor } from '@dava96/osrs-icons';
|
|
39
|
+
*
|
|
40
|
+
* // Scope to a specific element, play 3 times
|
|
41
|
+
* const stop = animateCursor(
|
|
42
|
+
* [lobsterRaw, lobsterCooked, lobsterBurnt],
|
|
43
|
+
* { duration: 900, target: document.getElementById('cooking')!, iterations: 3 },
|
|
44
|
+
* );
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export function animateCursor(frames, options = {}) {
|
|
48
|
+
if (frames.length < 2) {
|
|
49
|
+
throw new Error(`animateCursor requires at least 2 frames, received ${frames.length}.`);
|
|
50
|
+
}
|
|
51
|
+
if (typeof document === 'undefined') {
|
|
52
|
+
return () => { };
|
|
53
|
+
}
|
|
54
|
+
const { duration = 1000, target, iterations = Infinity } = options;
|
|
55
|
+
const animationName = generateAnimationName();
|
|
56
|
+
const scopeId = `${animationName}-scope`;
|
|
57
|
+
const selector = target ? `[data-osrs-anim-id="${scopeId}"]` : '*';
|
|
58
|
+
if (target) {
|
|
59
|
+
target.setAttribute('data-osrs-anim-id', scopeId);
|
|
60
|
+
}
|
|
61
|
+
const keyframeSteps = frames
|
|
62
|
+
.map((cursorValue, index) => {
|
|
63
|
+
const percentage = ((index / frames.length) * 100).toFixed(2);
|
|
64
|
+
return ` ${percentage}% { cursor: ${cursorValue}; }`;
|
|
65
|
+
})
|
|
66
|
+
.join('\n');
|
|
67
|
+
const iterationCount = iterations === Infinity ? 'infinite' : String(iterations);
|
|
68
|
+
const css = [
|
|
69
|
+
`@keyframes ${animationName} {`,
|
|
70
|
+
keyframeSteps,
|
|
71
|
+
'}',
|
|
72
|
+
`${selector} {`,
|
|
73
|
+
` animation: ${animationName} ${duration}ms step-end ${iterationCount};`,
|
|
74
|
+
'}',
|
|
75
|
+
].join('\n');
|
|
76
|
+
const styleElement = document.createElement('style');
|
|
77
|
+
styleElement.textContent = css;
|
|
78
|
+
styleElement.setAttribute('data-osrs-animate', 'true');
|
|
79
|
+
document.head.appendChild(styleElement);
|
|
80
|
+
return () => {
|
|
81
|
+
styleElement.remove();
|
|
82
|
+
if (target) {
|
|
83
|
+
target.removeAttribute('data-osrs-anim-id');
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** Generates a short unique ID for animation scoping. */
|
|
88
|
+
let animCounter = 0;
|
|
89
|
+
function generateAnimationName() {
|
|
90
|
+
return `osrs-anim-${++animCounter}-${Date.now().toString(36)}`;
|
|
91
|
+
}
|