@dava96/osrs-icons 1.0.15 → 1.0.16

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.
@@ -0,0 +1,36 @@
1
+ import assert from 'node:assert';
2
+ import { applyCursors } from './applyCursors';
3
+ // ── applyCursors tests (Node.js — no DOM) ──────────────────────────
4
+ function testApplyCursorsIsExported() {
5
+ assert.strictEqual(typeof applyCursors, 'function');
6
+ console.log('✓ applyCursors: is a function export');
7
+ }
8
+ function testApplyCursorsReturnsCleanupInNode() {
9
+ const cleanup = applyCursors({ default: 'test-cursor' });
10
+ assert.strictEqual(typeof cleanup, 'function', 'should return a cleanup function');
11
+ cleanup();
12
+ console.log('✓ applyCursors: returns no-op cleanup function in Node.js');
13
+ }
14
+ function testCursorStateTypeIsExported() {
15
+ const validStates = [
16
+ 'default', 'pointer', 'wait', 'text', 'move',
17
+ 'crosshair', 'grab', 'grabbing', 'not-allowed', 'help',
18
+ ];
19
+ assert.ok(validStates.length > 0, 'CursorState type should compile');
20
+ console.log('✓ CursorState: type is exported and usable');
21
+ }
22
+ function testCursorMappingTypeAcceptsPartialStates() {
23
+ const mapping = {
24
+ default: 'cursor-a',
25
+ pointer: 'cursor-b',
26
+ };
27
+ assert.strictEqual(Object.keys(mapping).length, 2);
28
+ console.log('✓ CursorMapping: accepts partial state mappings');
29
+ }
30
+ // ── Runner ─────────────────────────────────────────────────────────
31
+ console.log('\nRunning applyCursors tests...\n');
32
+ testApplyCursorsIsExported();
33
+ testApplyCursorsReturnsCleanupInNode();
34
+ testCursorStateTypeIsExported();
35
+ testCursorMappingTypeAcceptsPartialStates();
36
+ console.log('\nAll applyCursors tests passed!\n');
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Horizontally flips a CSS cursor icon so it points in the opposite direction.
3
+ *
4
+ * Many OSRS inventory icons face right, but cursor conventions typically
5
+ * expect left-facing images. This helper mirrors the embedded base64 PNG
6
+ * using the Canvas API and returns a new, ready-to-use CSS cursor string.
7
+ *
8
+ * Results are cached internally — flipping the same icon twice returns
9
+ * the cached value instantly.
10
+ *
11
+ * **Browser-only** — requires the Canvas API. In non-browser environments
12
+ * (Node.js, SSR) the original cursor string is returned unchanged.
13
+ *
14
+ * @param cursorValue - A CSS cursor string (e.g. `url('data:image/png;base64,...'), auto`).
15
+ * @returns A promise that resolves to a new cursor string with the image flipped.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { abyssalWhip, flipCursor } from '@dava96/osrs-icons';
20
+ *
21
+ * const leftFacingWhip = await flipCursor(abyssalWhip);
22
+ * document.body.style.cursor = leftFacingWhip;
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { dragonDaggerPack, flipCursor } from '@dava96/osrs-icons';
28
+ *
29
+ * // Flip an entire pack
30
+ * const flippedDagger = await flipCursor(dragonDaggerPack.base);
31
+ * ```
32
+ */
33
+ export declare function flipCursor(cursorValue: string): Promise<string>;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Horizontally flips a CSS cursor icon so it points in the opposite direction.
3
+ *
4
+ * Many OSRS inventory icons face right, but cursor conventions typically
5
+ * expect left-facing images. This helper mirrors the embedded base64 PNG
6
+ * using the Canvas API and returns a new, ready-to-use CSS cursor string.
7
+ *
8
+ * Results are cached internally — flipping the same icon twice returns
9
+ * the cached value instantly.
10
+ *
11
+ * **Browser-only** — requires the Canvas API. In non-browser environments
12
+ * (Node.js, SSR) the original cursor string is returned unchanged.
13
+ *
14
+ * @param cursorValue - A CSS cursor string (e.g. `url('data:image/png;base64,...'), auto`).
15
+ * @returns A promise that resolves to a new cursor string with the image flipped.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * import { abyssalWhip, flipCursor } from '@dava96/osrs-icons';
20
+ *
21
+ * const leftFacingWhip = await flipCursor(abyssalWhip);
22
+ * document.body.style.cursor = leftFacingWhip;
23
+ * ```
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import { dragonDaggerPack, flipCursor } from '@dava96/osrs-icons';
28
+ *
29
+ * // Flip an entire pack
30
+ * const flippedDagger = await flipCursor(dragonDaggerPack.base);
31
+ * ```
32
+ */
33
+ export async function flipCursor(cursorValue) {
34
+ if (flipCache.has(cursorValue)) {
35
+ return flipCache.get(cursorValue);
36
+ }
37
+ if (typeof document === 'undefined') {
38
+ return cursorValue;
39
+ }
40
+ const dataUrlMatch = cursorValue.match(/url\('(.*?)'\)/);
41
+ if (!dataUrlMatch) {
42
+ return cursorValue;
43
+ }
44
+ const originalDataUrl = dataUrlMatch[1];
45
+ const flippedDataUrl = await mirrorImage(originalDataUrl);
46
+ const flippedCursor = cursorValue.replace(originalDataUrl, flippedDataUrl);
47
+ flipCache.set(cursorValue, flippedCursor);
48
+ return flippedCursor;
49
+ }
50
+ /** Internal cache to avoid re-processing the same icon. */
51
+ const flipCache = new Map();
52
+ /**
53
+ * Loads a data URL into an off-screen canvas, mirrors it horizontally,
54
+ * and returns the flipped image as a new data URL.
55
+ */
56
+ function mirrorImage(dataUrl) {
57
+ return new Promise((resolve, reject) => {
58
+ const img = new Image();
59
+ img.onload = () => {
60
+ const canvas = document.createElement('canvas');
61
+ canvas.width = img.width;
62
+ canvas.height = img.height;
63
+ const ctx = canvas.getContext('2d');
64
+ if (!ctx) {
65
+ resolve(dataUrl);
66
+ return;
67
+ }
68
+ ctx.translate(canvas.width, 0);
69
+ ctx.scale(-1, 1);
70
+ ctx.drawImage(img, 0, 0);
71
+ resolve(canvas.toDataURL('image/png'));
72
+ };
73
+ img.onerror = () => reject(new Error('Failed to load cursor image for flipping'));
74
+ img.src = dataUrl;
75
+ });
76
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import assert from 'node:assert';
2
+ import { flipCursor } from './flip';
3
+ // ── flipCursor tests (Node.js — no Canvas API) ────────────────────
4
+ function testFlipCursorIsExported() {
5
+ assert.strictEqual(typeof flipCursor, 'function');
6
+ console.log('✓ flipCursor: is a function export');
7
+ }
8
+ async function testFlipCursorFallsBackInNode() {
9
+ const input = "url('data:image/png;base64,abc123'), auto";
10
+ const result = await flipCursor(input);
11
+ assert.strictEqual(result, input, 'should return original in non-browser environment');
12
+ console.log('✓ flipCursor: returns original value in Node.js (no Canvas)');
13
+ }
14
+ async function testFlipCursorHandlesPlainString() {
15
+ const input = 'not-a-cursor-value';
16
+ const result = await flipCursor(input);
17
+ assert.strictEqual(result, input, 'should return as-is when no url() pattern');
18
+ console.log('✓ flipCursor: returns plain strings unchanged');
19
+ }
20
+ async function testFlipCursorReturnsSamePromiseType() {
21
+ const input = "url('data:image/png;base64,test'), auto";
22
+ const result = flipCursor(input);
23
+ assert.ok(result instanceof Promise, 'should return a Promise');
24
+ console.log('✓ flipCursor: returns a Promise');
25
+ }
26
+ // ── Runner ─────────────────────────────────────────────────────────
27
+ console.log('\nRunning flip tests...\n');
28
+ testFlipCursorIsExported();
29
+ (async () => {
30
+ await testFlipCursorFallsBackInNode();
31
+ await testFlipCursorHandlesPlainString();
32
+ await testFlipCursorReturnsSamePromiseType();
33
+ console.log('\nAll flip tests passed!\n');
34
+ })();
@@ -1,5 +1,9 @@
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 { redHerring as errorCursor } from './generated/icons';
3
7
  /**
4
8
  * Extracts the raw `data:image/png;base64,...` URL from one or more
5
9
  * CSS cursor values.
package/dist/esm/index.js CHANGED
@@ -1,5 +1,9 @@
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 { redHerring as errorCursor } from './generated/icons';
3
7
  export function toDataUrl(input) {
4
8
  if (typeof input === 'string') {
5
9
  return extractUrl(input);
@@ -0,0 +1,168 @@
1
+ /**
2
+ * A cursor pack groups related OSRS icons by their in-game state.
3
+ *
4
+ * Each key is a semantic label (e.g. `raw`, `cooked`, `burnt`) and
5
+ * each value is the corresponding CSS cursor string, ready to apply
6
+ * to any element's `cursor` property.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { sharkPack } from '@dava96/osrs-icons';
11
+ *
12
+ * // Use the raw shark as the cursor
13
+ * document.body.style.cursor = sharkPack.raw;
14
+ *
15
+ * // Swap to the cooked variant on click
16
+ * button.addEventListener('click', () => {
17
+ * document.body.style.cursor = sharkPack.cooked;
18
+ * });
19
+ * ```
20
+ */
21
+ /**
22
+ * Shark cursor pack — raw, cooked, and burnt states.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * import { sharkPack } from '@dava96/osrs-icons';
27
+ * element.style.cursor = sharkPack.cooked;
28
+ * ```
29
+ */
30
+ export declare const sharkPack: {
31
+ readonly raw: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAMAAADn2eWTAAAAzFBMVEVMaXF/dnZ9dHSJgH93b26QhoZ7cnIAAAGYjo15cXCViomHfn2BeHhhWlpsZGRuZmZjXFt1bWxqYmKLgoFnYGCWjIuFfHuaj4+EenqdkpKNg4OPhYWTiIhza2tlXl1waWlUTU2bkJCkmZihlZVWUFA/Ojqjl5ZdV1eflJRCPT20qaivoqI8Nzc1MDBMRkZFQEBIQ0Omm5qpnp2vpKSrn58VERGonJtYUlK/tra7sbG3rKy5rq2yqKcyLi4kIiIsKipOSUg5NDRRSkpbVVU/eB25AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbVJREFUeNp109l2mzAQBmALJAYhmU3sa4ztxE2afenedHn/d8oIhYJ7kv/K5hvmaMbyajUGAFbvBgqnfb8AbEKD7i/AmyVQZVa7251g9vB/DeSNLcMwXL/m6vJxwVCmbYDxMbEfJCf7n0s9dTiGRhGl3KHB+ubHUrNCEssissiEEIT6fz7OCkqjY1mFqFiKB4zW188wz6PRcTFZ5TUKh//1e1aFyEfFpExJHn6YFOoKkRuzmevVtqRXlzApczg1Wog6dZtKkHA/KWu4nsScufJy7J1ZN0bB8xoaabUIIaCaXPcuQjMUeCmLIr0IyjlgJ3eTYm95bTTNWdQHQd/3bQv6e5l7zJadVnDzktHAjzG+Kd+ULrNJoIeCvDw80iBOujCcjnlAtfxPWsvtk+J+nITrs0k/G8WXYTvkNvfx1bN/6/nyjQkn3u1QTwf9MenW82a/nteCJz2Ww1DWGcfGM55/v78QNIs63TlVkibd4ge9v3i4e8qVE6NuPEWiZHkXHu5uByiZ7Ee1SXukt8MWn3sZ1SOhwtEl2x7GPSjH6NENh3JjVsbkuMvj6w/utBTx1l9nHm31AmvNJCtEE0JRAAAAAElFTkSuQmCC'), auto";
32
+ readonly cooked: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAMAAADn2eWTAAAA/FBMVEVMaXGVe2WTeWOkh2+PdWCsj3WXfGYAAAFrUjyQd2J1YVCDa1ixkXdzXk2AaVaihW6Mc16bgGqafmeFbVqoi3J9Z1W3lny5mH17ZVKyk3mJcV14Y1GegmughGyvj3aniXG1lXqrjXN5XUVxVj9nVUZlUkN0WEK+nYFuVD28m4BQPSxXQjBbRTRdSDWHb1t2W0NMPTJ8YEa7mn5hSjfCoIRkTTlUQC5nUDpwXEyCZEl/YkiFZUpANSpcTD1WRjpIOjBSQzdOQDU/MCRDNCbBn4JMOioYEQ2HZ0yKak45LiYqIho0KiJiUUJYSTxDNy5eTkBrV0jGo4YVERFINyhtd8KWAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAcpJREFUeNp102dzozAQBmADEmvRMc10DLjG3Y6dfrmUu+R6+f//5QQMMb5x3k+MHrGjXUSrVQYAWu8GZmeT9zfAZrp7fnwAOLkFzunLeZ73+/0l/L8HRvvNVCgil7m9+dRgyNqeIZZRFNHo9pdfmjpgCSFI8zREWIYY8t1rUwO9wzN8Rw9ClVN5JH77cFCIC2QZRlfNyO2FjCbff31j4Apk2zShKUlmwHo/fzSUIimVJolinQgfa4WeSZFUxuHExVwH3d5ArZglqFJd7bm2ZKq8sKwVRwQVrZSHNiXHxXHIfK8UJClCZaMMz/MQR7Yt9bhAqJoCKcEaDaIhQCsl6yQyVf2u0sTBmkEzn889ugLu2ikO5hcKtjPGyFAsS1GUarsztjHHi/dQPg//IFHp+oJfH3NIlRF/FTp++h0T0eoK8kWtLzZWGSWnE4Hh1uaIYvnCxdt4Pl9jlbXyB6pPWxyytLB8mOz1JVaJNXmkul2bAaGFD3h5dbVSyWb3t6jsxh1k+Y0PulqlaTo6P3um6kgc73WbdyFNFwvI9tPJSV0MBnS9PdsVLVGFo0uWZcUyLV3p0Q2HbFSNbD8tZ3l8/aFdD2V26tc5tNb6B4niLWTURBJwAAAAAElFTkSuQmCC'), auto";
33
+ readonly burnt: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAeCAMAAADn2eWTAAAAb1BMVEVMaXE8NzdYUlJbVVVIQ0NOSUhUTU0AAAFMRkZhWlpRSko/OjpCPT1dV1dWUFBFQEA1MDBlXl1jXFsoJiY5NDQkIiIsKipqYmJnYGAyLi5za2sgHR1sZGRuZmZwaWkVEREaGBh5cXB7cnJ1bWx3b25PGaM2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVtJREFUeNp1k+16gyAMhRWQIygg1lbbteu+7v8al8BUuqc9f0ReTkxCrKokANVLQTfq9QF424ZuAJ4egSDzkHTA/zMw0tt61/l4LzBGp0LoV3XD4aOksWlJisTPUJ/eSqqtbUjWWq0pg/58RJkxQTJZ7YXkBEszUYaGZL2UXF1hhk9Ok+UE4fqArVixQy1cir2FhpCcb4KWqJNeN5sZUraplpS0lzn2CSuUuVAuCkwptq1zXpBOqFWg7zjDsW0ODWeEojYGFvh9NJxYjQxHoai5rHzcjI5oz2Zax7siSHeD7VKYDkzHuPhEp2mlX0Tbnq6aqaMlWaetPZ8/RLuBzIiRl90OK3xfeCtMTA3VTnSHl8v7TSutao4sqa0FrPB+u86z8W0PnindhK6chet1XjAKG57SeYm077TikoiWE4olxtQH32T6MOGI41//berl4/jDrE3Rz36dvbTqF468FMgJpWphAAAAAElFTkSuQmCC'), auto";
34
+ };
35
+ /**
36
+ * Herring cursor pack — raw, cooked, burnt, and the infamous red herring.
37
+ *
38
+ * The `error` alias points to `redHerring` — a fun easter egg for
39
+ * error states. Also available as the top-level `errorCursor` export.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * import { herringPack } from '@dava96/osrs-icons';
44
+ * element.style.cursor = herringPack.error; // 🐟 Red herring!
45
+ * ```
46
+ */
47
+ export declare const herringPack: {
48
+ readonly raw: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAWCAMAAAALimf+AAABC1BMVEVMaXGJgH+Ng4OTiIiLgoHa1NSvpKQAAAHLxMO6r6/d2Njk4eHDu7qVionW0M+QhoaWjIuHfn3NxsWsoKDUzs7h3dzo5eWPhYXQysqBeHiFfHuEenp9dHTOx8akmZjFvLzPyMja1tahlZXTzc2xpaXg29u7sbFnYGCbkJBuZmZ7cnJlXl1dV1eaj49waWl3b26voqKrn5/Gvr6jl5bKw8KyqKeYjo1hWlq/trbe2trl4uLv7e329fWmm5pWUFDRy8tCPT1MRkZ1bWydkpJYUlLHv7+2q6psZGS+tLRRSkqflJRqYmK8srLIwcHc19epnp23rKy5rq3r5+fj4ODs6enz8fHn4+P8+/vw7u6NwyjkAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAQdJREFUeNp90WVTw0AQBuAoGyGephpPjbpRheLu/v9/CZdOGeg15P24z+zN7i1BJAeIlACdwkClKJBZKUWZFIUCo6j/KeQ1althnVJRo+h9wOzo+Pqs2bhtl4okpgCHzUb1st7u7OULmkYyDMCvVesnqEwylEJLasvpPkWPg7VDBz2WlVq105tg4DjG0PSG7uR5ZMBqO0WtBQc9o7sT5477GW+FQW9kRBd8pcLH4fSNaSHix/ee3HfdXRTdw1aZjG2ZtXUujp0LN1v7uskKGTMss7nzq6WJtYbIRMtnZ4hlGftAiO1tnilPBeHB93EVrZf5++JjJopTgK3LoNLX4tN6TaA/10mSbwIeHHHZ7IVWAAAAAElFTkSuQmCC'), auto";
49
+ readonly cooked: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAWCAMAAAALimf+AAAAulBMVEVMaXFqV1SQd3NvW1emiYV/aWVxXVoAAAGWfHiIcGxnVVJiUU1sWFZkUlCsjol2YV1eTkybgHudgn1zYFyjhoGyk41KPTqZfnmkh4N9Z2OghYCqjYeuj4pWSEW1lZC5mZO+oJs8MjBANTJGOjlNPz2fg35URUJRQkBcTEmKcm6EbWl7ZWJhWlqCa2aPdXGVe3a7nJbDp6I5LiwwKCYsJCKFb2uTeXR4Y2BaSUaNdHC3l5Goi4XBpJ7GrKggq2psAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAOdJREFUeNp90elygjAUhmEogY9VISAU0Grdd2s3bbX3f1s9ATuViLw/zzOZOUkUpT4oDUFrYLjGfYXarNp9hd2gcEhDWXHJd2xXVuD97fV5OIpnvme7RkUBAfF4Nu3NfcfxPBv4t3hcjGmqqq7W1r+sTXpx9I6+2MQwwjaVmiziyW67WAqGR5cPD6tUL1qYf+sVuNpYqb78sMrMpLItrO06yNhDWRJIV9mtM5abZUnAq0fpXN7tcN5pRcEnn0hHhT31o+ibeJJJDwhhL4MTY+yRklXYed+iGHDzMzQa7H+6eQ1d/U6d/AKDWRNouCnhLwAAAABJRU5ErkJggg=='), auto";
50
+ readonly burnt: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAWCAMAAAALimf+AAAAeFBMVEVMaXE5NDQ/OjpUTU1FQEBCPT1hWloAAAFYUlJIQ0M8NzdOSUhbVVVlXl1MRkYyLi4sKipqYmJsZGRwaWlza2tdV1djXFskIiIoJiY1MDB3b25RSkp1bWx5cXB9dHQgHR0aGBhWUFBnYGCBeHh7cnIVERF/dnaEenpIDAZ3AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAMVJREFUeNqd0dkWgiAUhWEcYqNBjlBpg2XD+79hB7JVGnnRf3k+z5IFjPkDmwnJDCOeUSz+VsLfitCnGEo9Cly77rheb3KryUgBC5s8z7Jt4ALeZudbmqdpGtLqSp6idnDYBTde0B/jRJSFMlyKk2UE7vuEWlGteB3PYRsJGi+HhBidFkJzVZTRswkycF6UlRiScryqzmVV76Ssq0LxCTJYa/ZaN8RaTy4Q1i4HY7hrqtZuvVLKGODrZWh06O9n5aGP1/HJAzprDYzLyS2fAAAAAElFTkSuQmCC'), auto";
51
+ readonly error: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAWCAMAAAALimf+AAAA2FBMVEVMaXGUQ0mtUFa/TUWDPEDCTkaWRUoAAAGoTVSbSE2FPUKLQEWAOj+yUlhzNTmOQkZ2Nzp9OT26SkOIP0ORQ0i9TEO4SkKjTFHpcmvqfHXnZ2C0VFq2VVttMjVwNDd6OTyrTlW2SUDqeXKgSlDrgnznXVTulpGySEDobGPrhX91bWzsiILZV07pdW7gWlHSVUzXVk3LUknsi4WvUVftkYy5Vlzvn5pjLDBmLjJqMDSZRkyeSU7rf3jnYVfsjojeWlDpb2biW1HcWE7QVErnZFvVVk3wp6PumZVGDfX+AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAOtJREFUeNp90elygkAQRtEBlW8CBjCgoixREbe4xqhJ3LLn/d8ojYUVHZH7s09NVU81Y+mBZYRcBqNcuK64y9bcdUUlQ9FMUyR1m5WyqMDq+cX3A928VMAPAl03zftSqVjMU8C/6TSOp6qqWpZmK8Pvz1niIMmrlqZphmHYtsSd3lc0/phOYkYshi1RCrXmx/UOOJsMJeX1Jonzs20x3Q+2PadKhWHIG8JX3gd1p8WTGvL504hs05bl2qgejQVkeGvV2g+7+bxPLAvIQPb41HFd9zZO1D7Z73LheZ4LXFyGRp3lz8JLoZPrpMkfUhEW8s27VDAAAAAASUVORK5CYII='), auto";
52
+ };
53
+ /**
54
+ * Anglerfish cursor pack — raw, cooked, and burnt states.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * import { anglerfishPack } from '@dava96/osrs-icons';
59
+ * element.style.cursor = anglerfishPack.raw;
60
+ * ```
61
+ */
62
+ export declare const anglerfishPack: {
63
+ readonly raw: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAMAAAB61OwbAAABp1BMVEVMaXFGTCpKUCxbVypOVC5IRiBRVzAAAAFDSChDQh0/PR1GZ1FgWyw5ORo9XEgockpejG1ReF1jXSxKblVUUCZAXko8WEVVfWIkZ0M8PyQma0YgVzpMSCIyTDo6VkIuQzVMcFdmYS4/QyZwazQNGBEwSDdCYkw3PCJMSiIqdU0wiVpXVCgyjFwqeVAoPC45nWcgXDx9eGM3m2Zzb1w/rnI3UkA1Tj0iNCgaKiAmOSouLhVIQyBdZDkwhVhhZzp4c2BahWdkYVBbh2okZEIYQipNc1oJJBhdiWwmb0koLBgqQDJQTCRVWzQgLiQ5Nxo/PB1XXTUsfFJIa1SCfGY0kmAug1Z9djltZzJSe2B7dmKDjYetubJ2f3o0j154gXxQdVwaUDQiYD81lWIugFRiXU1/emUYRi5KSDpGQzlbYTdWgGQdVDcaSjARMCBxbVqPiXENKhoJGhGFgWsmJiBDPx1jk3NllXRYg2VDZU52cTduon8uMhp6dDlqZDBsoH1zbjW5wr3KxK1WVEXMxrE/sHRsdEJmbj27tZa/uZy7s5WqpIdnY1Kup4qE/T3jAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAddJREFUeNp9k2dbo1AQhYEAhwBBiYIgphtTTE+sa++6vbm6vffeu24v+qP3grgxPEnOt3vP+8zMnblDUbZAtRVwH0Abe7EQCSnR/4QHxYXLsBXev8dgI4HzF+0L6BJc3+fJt3eCormAT5Z93U0qwoATApCDwVZAlMT+gqADgPK+CzgVXX79/vOyqqokx2HwfGMlwXMbM68+vttKJOZ6CMDzLNtQLGKJ9bmZN59iVkc2ljhBbIaJyb46gamJe6p6ZTHaS8SxRAwtD4oHgGp5lZEk6e32jXyGIwkYWhDEQKDe353Vr8K0GdavT/r9XNoB4n19qLcfpvkhldLUdJrzE3EcFyBacbv3F9gV4nEzJXQRxwb0UHh8/KUbAb/+AL9pklSImxJxRTFJnnjs+KF94MdP4BtNO4g2IIriyF7XXQCdte+1WqctdoLXFCXQj4NzpFAsVirFSg/R1BFGU/Qh7xRyZy7lctlsFxErMPpwvxcwJs+ezGcyHbaEoeSa1z9dLeVXeo35ecMwwkpkzBuAlIKr1yzrQalkDYdCR0eb/W8s3F54aBWSkUih6f/Hzbsvnj6rPno8NtJ8PTB7B1gqL02PtvA3Z+1pPQdutQDKTmefoOWOos0G/wOfdD9Z7Ze6gAAAAABJRU5ErkJggg=='), auto";
64
+ readonly cooked: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAMAAAB61OwbAAABNVBMVEVMaXE/MA1FNBFdUDVQQyxbTTRUQh0AAAE8LAA1KABQPxpOPBFINQlJORFURi4dFQAuIgBXSTBbSio0JgksIglGNxhpUBpgTSxXQxU5LA1cRhVKPBpjUSxRPQlMQCpURSZgSRhSPxVMPSIkHQlXRSBIPShmVC5wXDQmHQBXSChCMABMOQl9eGNzb1xbQwlkVTk/NSRcSSBIOiA8MBV4c2BkTRhkYVBuXT1DOSYsJBhQQCRxYD9hUjc5LhqCfGY/Mh1tWDJ9ZjlsVBp7dmJ3XB1zWB1zXjV2YTdqVjC5wr16YznKxK1iXU1KSDpGQzlxbVqPiXGFgWsmJiB/emVnVzpDNx2DjYdrWzytubJ2f3o3Lh14gXzMxrFWVEV/bEhgSAm7tZZ2ZEO/uZy7s5WqpIdnY1Kup4pa0IZ9AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAbJJREFUeNp9k3l7mkAQh1nA/aEgiICAWAPxTDzT3L3TJj1z9r7PpN//I3RAUiOP+v63O+8zMzu7KwgxEJYCVAEsCUe2bTH1v5FR8fELYtj1PtZmDbz/FG+AFZHGy5l6kxVEMRXKrltemdMRikkKwK3VFgiqSrlfoZYIELLnAtRo+/Hh0bbneVTjDiRptpPaIy+svHz2tNMJqyRIUi430yzanYMwDJ+3S4rW7owobJpttzw1sPvhredFUZQneI4wdXctuCEM+vtmkXixriicCpi6LAeOM53v1f43eavls57GC7yZCPXVVUzHj9be5/Ge6G1sNHmhUOCcO4SSTu8S+Fuv11tjWW02eSwwi21uvksz4Ocf4LdORckpUjgILDri/Ye3r4Xvv4Cvuh4rsigGgdOYTD0VUBn+GA4rMdLuPVFkjoGb9yjgVkKVuDsySWDZW9B6PY1QiZxsMt/ICnlNo+lMkH3LysYfDErrSn4CE207m4BaQTdfSvB9v9GY975hdLvdkm1Zlj33/eP49LVhDIwz257/PbBzAhh9Y6uxIP5kJ76tC+DNAqGfTPYcC/8olvzgfzmYLKgAoRgsAAAAAElFTkSuQmCC'), auto";
65
+ readonly burnt: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAMAAAB61OwbAAAA5FBMVEVMaXEgHR0sKiowMDU1MDAoJiY8NzcAAAEuLgA1NQAyLi5FQEAkIiImJgA0OTQ3PDc5NDQ0NDlOSUgVEREwNTAuLjIqKiwaGBgqLCo/Ojo6PzpARUBMRkZCPT03NzwmKCZIQ0NCQAA8OgBzb1x9eGMdHQAiIiRbVVVDSENUTU09Qj14c2BkYVAuMi4dIB0iJCK5wr3KxK1GTEaCfGZ7dmJKSDpGQzliXU0mJiBxbVqPiXGFgWt/emWtubKDjYd2f3p4gXxITkjMxrFMTAm7tZZIRgm/uZy7s5WqpIdnY1JWVEWup4ptg9gsAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAYVJREFUeNp9k+eawiAQRUMkuYRAijG61rVv7733/v7vs0PM6ppPPf/CPUxgAMsywFoJ0AWwIm4z5Uh3ahRU3D3CIP/GUZk3cP9gBiCjyTiCoPC/yRc4nwpBUFmwIkRZCSAMwyWC61Lto1yAVdwX4NbLWxsbZd/3ydiD582vJNz2W1vHm5vNZqtLgkfMLRaN5lOr1d1uMIc3mn2Te40wmBno9fvtdrted4g4y0VYSf8Jg+FIRMShtO1MEEKk1eqsv1+jb7GjbenyUinuZLleW8Os/dB6pDX3O524RMRxXCXsvHufwI/QhKhTYgTpyPF4Pa+A1w/gXRi0dilNU4e2uH8wFV7egGcxgUdpmrJJ13MBpnl+2eD1PM55NcH/c7TgZhir5wnOpSyeAo8imseNJYQn7aQoODTLzhG2o4r5yUBJ6q9SylG2VKxYgJYCplgGebXaovuNGsEYFWEL7z8uzi+TZJBcMbb4eWD3DEiGyU5tSX66a07rBrhdIgyzzl5j6RvFihf8C5EGHf38oNssAAAAAElFTkSuQmCC'), auto";
66
+ };
67
+ /**
68
+ * Dragon dagger cursor pack — base through poisoned++ variants.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { dragonDaggerPack } from '@dava96/osrs-icons';
73
+ *
74
+ * // Start with the base dagger
75
+ * element.style.cursor = dragonDaggerPack.base;
76
+ *
77
+ * // Upgrade to poisoned++
78
+ * element.style.cursor = dragonDaggerPack.poisonedPlusPlus;
79
+ * ```
80
+ */
81
+ export declare const dragonDaggerPack: {
82
+ readonly base: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAMAAACw0Z1uAAAAdVBMVEVMaXGEGg1WEQlREQlRSkppFQlkFQkAAAFWOgmAGg18Gg1gEQlbEQlwGA1tFQ1WUFBwTA1MDQlYUlI8NzdMRkaHGg1IQ0N4GA10GA1UTU1bVVVFQEBlXl1CDQBhWlpIDQk5NDQoJiZza2tjXFtCPT1OSUhdV1cz9zMQAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIVJREFUeNpV0McSwyAMBFBiyhKMsePu9P7/nxhyACRub1arGSQEeRBMhhmaEj4w1g0hpFkpK70U4uaDIzzUzT4Tl8qshDKGO+RRH4r+a10SAKndlDRuMMuUe8Oo+jiR+Bhm1V/P2fY+q/aYutba7tSW0HakGkP6MS71elJ+vuxC742fk+oHRxUGbUCEKNMAAAAASUVORK5CYII='), auto";
83
+ readonly poisoned: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAMAAACw0Z1uAAAAolBMVEVMaXFwTA1YUlI8NzeEGg2AGg1WUFAAAAFWOglRSkppFQlMRkaHGg18Gg1IQ0NREQlWEQlkFQlUTU0RlRUVsRoVqxoVpRhbVVVFQEBlXl1hWlpbEQlMDQk5NDQoJiZ4GA1tFQ1CDQBgEQkNdBFwGA0NcBF0GA0RjhVza2sYyyARixVjXFsYxR0NhBVCPT1OSUhdV1cYvx0RohgVuh0RmxgVtxo1dBhZAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIxJREFUeNpV0EcWgzAMBFADgbHpPT2k917uf7WwsS1p9580C40QZCCYWmY0lKhqxu+PELf3h/LcviyxOzRXwk1Vnwyxyou9b5mtt/5AE7Pp0kogDxMtAFmYxFpRiaKLTc6LlNtfaC68VLmTsbGcpyoY6qyU0hkFdikdEu2X9DEudTlSPp6soXvJ66T6A66HCIAqDAySAAAAAElFTkSuQmCC'), auto";
84
+ readonly poisonedPlus: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAMAAACw0Z1uAAAAolBMVEVMaXFwTA1YUlI8NzeEGg2AGg1WUFAAAAFWOglRSkppFQlMRkaHGg18Gg1IQ0NREQlWEQlkFQlUTU0RlRUVsRoVqxoVpRhbVVVFQEBlXl1hWlpbEQlMDQk5NDQoJiZ4GA1tFQ1CDQBgEQkNdBFwGA0NcBF0GA0RjhVza2sYyyARixVjXFsYxR0NhBVCPT1OSUhdV1cYvx0RohgVuh0RmxgVtxo1dBhZAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIxJREFUeNpV0EcWgzAMBFADgbHpPT2k917uf7WwsS1p9580C40QZCCYWmY0lKhqxu+PELf3h/LcviyxOzRXwk1Vnwyxyou9b5mtt/5AE7Pp0kogDxMtAFmYxFpRiaKLTc6LlNtfaC68VLmTsbGcpyoY6qyU0hkFdikdEu2X9DEudTlSPp6soXvJ66T6A66HCIAqDAySAAAAAElFTkSuQmCC'), auto";
85
+ readonly poisonedPlusPlus: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAaCAMAAACw0Z1uAAAAolBMVEVMaXFwTA1YUlI8NzeEGg2AGg1WUFAAAAFWOglRSkppFQlMRkaHGg18Gg1IQ0NREQlWEQlkFQlUTU0RlRUVsRoVqxoVpRhbVVVFQEBlXl1hWlpbEQlMDQk5NDQoJiZ4GA1tFQ1CDQBgEQkNdBFwGA0NcBF0GA0RjhVza2sYyyARixVjXFsYxR0NhBVCPT1OSUhdV1cYvx0RohgVuh0RmxgVtxo1dBhZAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIxJREFUeNpV0EcWgzAMBFADgbHpPT2k917uf7WwsS1p9580C40QZCCYWmY0lKhqxu+PELf3h/LcviyxOzRXwk1Vnwyxyou9b5mtt/5AE7Pp0kogDxMtAFmYxFpRiaKLTc6LlNtfaC68VLmTsbGcpyoY6qyU0hkFdikdEu2X9DEudTlSPp6soXvJ66T6A66HCIAqDAySAAAAAElFTkSuQmCC'), auto";
86
+ };
87
+ /**
88
+ * Gold ore/bar cursor pack — represents the smelting progression.
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * import { goldPack } from '@dava96/osrs-icons';
93
+ * element.style.cursor = isComplete ? goldPack.bar : goldPack.ore;
94
+ * ```
95
+ */
96
+ export declare const goldPack: {
97
+ readonly ore: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAMAAAA3HE0QAAAAvVBMVEVMaXFhTjd/ZkhxWz9uWD1bSTR8ZEYAAAF5YkV2YEPIoxiHbUyCaUnFoBhdTDVkUTlnVDrLpRhXRjDTrBp0XUJUQy5rVjy6lxU/NCTVrhpMPSrQqRjCnhifgRGxkBWujhWFa0o8MCJDNyZQQCzNqBiihBGRdhG9mhi3lRWLcRGYfBGVeRE3LB1IOiirixW/nBiAZw2lhhVwWw2OdBEyKBqHbg3ashqbfxFtWA1kUQl4Yg10Xg2Eaw18ZQ2oiRU+gGzEAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAaRJREFUeNp9k+eSozAQhEFIagSIHIwB4xw3714O7/9YK4nlynVre35R9Dc9QZJlnQUA61ZgmjIY7DKIZcEELGyP3emAiwZMCODp26aqjxcBpQt83272TfYM63Mh6Hw8dTOvaWZAGlPnf0J3uH1okyTZYcEcl6f4N95oiE3l6cCSCeKLAcDdYnI/XaVmxJmUUtMrRnw/GJLeipSFUah2gJfnDyuk1FcAN993BQvt2A4V8KefbYaskM/9OTH6YpEyO6KRrYDffbV7MH8dN/DnAzuZKIMyjyMFvPbS8/a6GSqCoQWlL1UBlRAr4NTLJsta6D0RfzBY3k9VAREEpfr7t0q+1lnSVhjWYk5gVdhxTgihCpjtkrpuvMezPUPNGFFOCNeLRSWzei3xcnjdjlvUHbqEc54b23adrfHj5+m4HgE7igTnrgpla8dIMuDXoWu9EYjLnA8qCrukuji+dJUnR4BSI+tu7NIxJ4yuT+Tj7mOKfJAtrJQuzPlhn8izMcZ5GXUEd3H1eiPUAL9+8WErgBDnKoGI5i4JbjjENOfB/MbbwsUn9Q5Gix6anIsZKQAAAABJRU5ErkJggg=='), auto";
98
+ readonly bar: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAWCAMAAADkSAzAAAAAFVBMVEVMaXF0Xg3dtBpbSgnYsBoAAAGxkBW1pwQ1AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGlJREFUeNp90ksSwCAIBUH8kPsfOQIaH0icndUFGyGCWKI8fqTczdQv1nucRhu57cGEv+2ZVV5WTps4TApmOE1CUwQrNyuHSYjbiFtr270pbve2cLkzQHM0/WF0Z9GjOa/5nZj/3ZA6vl8xFgYYbQNsWgAAAABJRU5ErkJggg=='), auto";
99
+ };
100
+ /**
101
+ * Iron ore/bar cursor pack — represents the smelting progression.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * import { ironPack } from '@dava96/osrs-icons';
106
+ * element.style.cursor = ironPack.ore;
107
+ * ```
108
+ */
109
+ export declare const ironPack: {
110
+ readonly ore: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAcCAMAAAA3HE0QAAAAclBMVEVMaXFDKB1bSTQ0IBh5YkV2YENuWD0AAAFILCBMLiJhTjd8ZEY/Jh1/ZkhxWz85IhqHbUyCaUldTDVkUTlnVDpXRjB0XUJUQy5rVjxQMCQ/NCQoGBEuHRVMPSqFa0o8MCJDNyZQQCw3LB1IOigiFQ0yKBoPjeROAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAXJJREFUeNp9k9mWwiAQRAMGKmwhe6Imxm3+/xenAXU8jtpPOalL9QZZ9hQAsm+BpeeI2HsQx5ELZNiEwFsDLgQwbzxT/i1AusB+461SFtn/RAjnMXtbKMWAvpPlKxEqDAmUKrDyMjc9Hu3dDeFZQaFw5MJVIgE4r7vLcupji5bkQJ+4q6o6HfoZe960Dc0AV3+zQi8rAkz8Po+80Z1uCNhbmzpEYw7VwUV9XXuuW9lqAmbLmI1/y7yuDond7chgGro2TDGUwEIxUtSpBNKPlIAOdAmITYY5uSoZHC8LJRB1PdFfywq1VQWLJrcel9Oou8E5J5+ApzmDemylcc6EwSIBtJHHQhEqzJ0xZoi2AcCVAHUHdNsKY3IKstUd1BbYz57meQO6aTBJxagnGZLTStkfIGWUQzV6KuOG4cM4bgSGJGc4kS7i/sDiwl6uMrgshcnx8XqjCYD5fPGhCXCu/EiglUPu6i8OnRxMffjytvD2Sf0C/E0W93PlKLcAAAAASUVORK5CYII='), auto";
111
+ readonly bar: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAWCAMAAADkSAzAAAAAFVBMVEVMaXFjXFs1MDBlXl0AAAEoJiZRSkobUqUAAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGlJREFUeNp90kESwCAIBEFUzP+fHAGNCxLnZnXBRYggliiPHyl3M/WLlRKn0UZuezDhb3tmjZfV0yYOk4IZTpPQFMHqzephEuI24t77dm+K270tXO4M0BxNfxjdWfRozlt+J+Z/N6SO7xdp3QXrG2PKFgAAAABJRU5ErkJggg=='), auto";
112
+ };
113
+ /**
114
+ * Coins cursor pack — represents increasing wealth from 1gp to 10,000gp.
115
+ *
116
+ * In OSRS, the coin stack sprite changes based on the amount.
117
+ * Great for progress indicators, score displays, or loading states.
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * import { coinsPack } from '@dava96/osrs-icons';
122
+ *
123
+ * // Map a 0–100 progress value to a coin stack
124
+ * const stages = coinsPack.stages;
125
+ * const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
126
+ * element.style.cursor = stages[index];
127
+ * ```
128
+ */
129
+ export declare const coinsPack: {
130
+ readonly _1: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAICAMAAAD6Ou7DAAAAOVBMVEVMaXFbSgmfgRGOdBH70EL70UhwWw0AAAGxkBX70k37zzW3lRWoiRXdtBr2yB3luhrswR3QqRj7zSbkOlBfAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAADhJREFUeNpjYAACdjCAsjjAAMiDstA5QB47F5TJxAbksLBycgoJ8HIzM4LUcbKy8PEL8sCNg5oMAHx9Anyrx+YNAAAAAElFTkSuQmCC'), auto";
131
+ readonly _2: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAMAAACDi47UAAAARVBMVEVMaXHktAD+yADXqQD/0QD/0ABeSgAAAAG3kAD/0hfzwQD/zQDsugD/zwCkgQC9lQB0WwCSdACtiQCdfADDmgCzjgD1wgBsovB2AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAFVJREFUeNpdj0kOwCAMA8Nq0n3//1MLNBKhvmWksRyiHNSQSj5TjaJCBOIPU3G+HsyClq0pCJ55HMy6R9UD9sFO7gC6clmErFhznVGPK8rj7n5w++EFukYET+thchsAAAAASUVORK5CYII='), auto";
132
+ readonly _3: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAALCAMAAAC53Ab8AAAAV1BMVEVMaXH/zwBeSgD+yAD/0hf/0ybktAAAAAG3kAD/0QDXqQD/0ADzwQD/zQB0WwDIngCqhgCaeQDwvgD/ygDsugCkgQC9lQCSdACtiQCdfADDmgCzjgD1wgCZ+KI0AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHlJREFUeNptkFkWgyAQBIclNKAx7prl/ufMQEAx2l/Uq3kNA9E5CDkANrAhkZHA/mSCyOWZzc5N6WxoAG6ce21ayU4kMzV5xrmh9x3XoHJa89y8yOyEUOYRb4d2lRr9ChTd+dVIK4ALlHk9JS5W5oKPf+NC/X0BEX0B4u0GeCgCBnYAAAAASUVORK5CYII='), auto";
133
+ readonly _4: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAANCAMAAABvheXhAAAAYFBMVEVMaXH2yB3QqRj70EL70k3701LdtBoAAAGxkBX70UhbSgn7zzylhhXCnhj7zSbswR1wWw3uwh2VeRHpvh34yh2Eaw3luhq0kxX7zzW3lRWfgRGoiRWOdBGYfBG9mhiujhUvxeaWAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAIlJREFUeNp1kFcSwyAMREUxC9hJ7PSe+98yEgFMZuz9At6yKkSNAFoR4P0KZSKCmDB70sVnlk+J1ufQKbcZTr4IJUqYmfSl/vdjy1Ic0LG2OzdEZtdM7mMNCMeD3ktTJljLvtszFtb3XDg1ChuMOuvHXKmZAT8ROEC59ysuzC8Bk/4srwZ/CyH6AiYkB7WkpPmdAAAAAElFTkSuQmCC'), auto";
134
+ readonly _5: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAOCAMAAADpEZdPAAAAYFBMVEVMaXHdtBqfgRH70k3701JbSgnQqRgAAAGxkBX70EK3lRX2yB2OdBFwWw370UjluhrswR37zSarixXuwh2oiRX7zi6bfxFpVQmRdhGVeRF0Xg34yh2Hbg3xxB3pvh3CnhjfHVeAAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAJBJREFUeNptUFkWwyAING6A2dp03+9/y6LGSNPMByAD80aUEgDIEdQaAIjc54iCTmXsCRSNVOIadR4oJZ0TusjVeWvbJnTW2v2uueEvh3TwrE15c+qZO82M7mEReIz+7JijwRhWCZ2rFhOiTTNQO/pjcarvIP+cx7LTcL38n0UBW3z56ek2OF6k92frmkVdvL+7OQiYUyofJwAAAABJRU5ErkJggg=='), auto";
135
+ readonly _25: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAATCAMAAABWWYYKAAAAXVBMVEVMaXFbSgn70k370Uj70EL2yB1wWw0AAAGxkBX701LQqRjdtBqOdBGVeRGfgRHswR23lRX7zSbluhqoiRWlhhXuwh2Hbg10Xg20kxW6lxXpvh37zCDIoxj7zzX4yh1F/w8cAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAKtJREFUeNptkVcWhCAMRSkBjGAbnV72v8wJRZED+aB4ycuLYawIE4LVQV+7EDVMoMUyqmBA4JfHTbcY4vv1dHfeYh2oz9DQRERlh2WKBc3JfGEl09DV3toIcddB+EgQQtnZkfQy2Y17lrUkXHvKB1CXngzpok48Shm2jRox30RGvb9B/FGmLwdSCKowO54t7sMwQvoK6+H0/MdMehe7p/zm/ICcrs3RJoV8/wOJmwrmIGvH+wAAAABJRU5ErkJggg=='), auto";
136
+ readonly _100: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAXCAMAAADNyMQcAAAAhFBMVEVMaXFwWw37zSb70k32yB3701Luwh0AAAGxkBX70EL7zzWfgRGOdBFbSgm3lRXQqRj7zCDdtBrxxB34yh370UiHbg1WRgmbfxGVeRHzxh3luhrswR3nvB3pvh2oiRX7zi6lhhV0Xg20kxW6lxXIoxi9mhiLcRHgthrLpRj7zzx4Yg1pVQmh/vD3AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAANtJREFUeNp1ktkCQzAQRRExiZ3SVkvpvv3//3XIQtB5iMjJ3LmZxLImASqseQAwFXM4kgU00AwaLLBN5jubypOs3MK6EcZ2htN/1YYTiTXeD5dSVxPL9TBSmjbX8ByBoZajFTf3uHvbj5q6UptWzZNJddE3EAmvjrGFH3i3Kc7uMj/g4msPulqUEDeLQ0qpc8y6qE8cT1ZwL2FQc+4eEjT0mTImpr7szReZr/ur9qToLX5gS4EXhGCFOIx0vr58IEVf4aT6ZtyP2gZosXcaLZ8LbuLo9ARrSCqM/z+0HhDka2pQNQAAAABJRU5ErkJggg=='), auto";
137
+ readonly _250: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAWCAMAAAAPf7fDAAAAwFBMVEVMaXH7zSbxxB37zCD2yB3uwh3zxh0AAAGxkBXswR3iuRrluhrnvB34yh0dGADpvh3FoBiVeRHYsBrVrhrashrdtBqrixXIoxi3lRWLcRGbfxHTrBrCnhjLpRjQqRi6lxW9mhhwWw20kxV0Xg18ZQ3NqBilhhXgthpIOgltWA1pVQmoiRVgTQmujhW/nBiHbg2RdhH7zzz7zi6fgRGihBFCNQCAZw01KgBkUQkmIACYfBFbSgmEaw0uJgA8MAD7zzWLXbQwAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUZJREFUeNp1klWWwzAMRWO2w4xlZhrG7n9Xo6YnSdtp9Wdf+UlPlqZpmqhCuxtCViHq5LvcFvXhMkEYDRfyHxeC7S1mhB3XFrVUUwSu+NFSut9OL3gjAlf4QNW004tBnlGiu8srbkqJuBm0ZA6SlhqvvWs/fG+paeHaF8KKYex380XZgjhw02/FDR29YKacjtzOSoXa3pxwZUTBZP7mmIbuPss0H544RtiMiuTzHQH3E2/xQWkUdiM3zlYnzgi4H/eyL8SdsN3NVrbkUCHo5cNZOVFwD+1/W5QSysyp7/1KKNCOyxGBfwrP0gnMTCHg0Xj7c2pnsDv7V6yeqQSuF62RTZDuTl7PnBCCnGCzzEAJUcdP0qFgOEi9vqj+B0fJetcXjip1PXGzBNX6cGoRPYmzR3sEBni4eRo94KCjVDGo6t7PuF3TP1rgG9GlMDsaAAAAAElFTkSuQmCC'), auto";
138
+ readonly _1000: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAVCAMAAABmKa5TAAAAulBMVEVMaXHluhrYsBouJgDFoBgdGADuwh0AAAGxkBXpvh3VrhrswR3LpRiLcRHiuRqHbg2OdBGrixXashrnvB3zxh34yh2RdhGujhX2yB26lxXgthrQqRiEaw14Yg23lRXCnhjxxB2fgRGYfBHdtBrTrBptWA2AZw3NqBjIoxhwWw2VeRGoiRWlhhX7zCD7zSabfxFbSglCNQA1KgBWRgk8MABpVQl0Xg20kxV8ZQ2ihBG9mhhIOgn7zzVkUQk7597mAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAASxJREFUeNp1ktd2wjAQRC1jaZAb7p1O6DUhPfn/34pkGSeHwL6t7pnRNk27HZCh3Qt0ZeCWqKUU13aNBvwaK0HjCSubpT2FlSGYJIwEk0+BOVv41bn9R7ywLxYYrCi9k0gIX27nT2hNARa7djc0DecsMbFT70HiyCLTpKPwxpraByGCS8x8PBefIyKm0RPYioN8HbmlX4tIYfjJUeCY6zXmo1k3OYVmXj2K15DP8nFV91jjugLvyPWlIzEPy8F43mCn04xJJbJxshgc3lr1aFcM3yn2ykq06S5eJ/2mtD7N4uBjQpGJ5FtqLNHl+gXNrLGLzIFHYelDh8qcF8s0WV2GjoyVaUVx2QvCqeHXc1F4xO1t/3eXQDDcOM/4dx1qNbh7Ltjr/ur+HWl/ZT+/jxj+uQYGegAAAABJRU5ErkJggg=='), auto";
139
+ 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";
140
+ /** Ordered array of all coin stages, from 1gp to 10,000gp. */
141
+ readonly stages: readonly string[];
142
+ };
143
+ /**
144
+ * Bucket cursor pack — represents a filling progression from empty to full.
145
+ *
146
+ * Perfect for loading indicators, progress bars, or upload states.
147
+ * The `stages` array orders them from empty → full for easy indexing.
148
+ *
149
+ * @example
150
+ * ```ts
151
+ * import { bucketPack } from '@dava96/osrs-icons';
152
+ *
153
+ * // Map a 0–100 progress value to a bucket fill state
154
+ * const stages = bucketPack.stages;
155
+ * const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
156
+ * element.style.cursor = stages[index];
157
+ * ```
158
+ */
159
+ export declare const bucketPack: {
160
+ 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";
161
+ 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";
162
+ 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";
163
+ readonly threeFifths: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6YzkJOmQAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6FCO42AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
164
+ readonly fourFifths: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6YzkJOmQAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6FCO42AAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
165
+ readonly full: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdCAMAAACdWLz3AAAA6lBMVEVMaXFJORGWe0Wbf0iEenqDazx6Yzl7e5sAAAFcRhVSPxWghEqAaTpwVhp9ZjlzXjV9dHR1bWyUeUOmh012YTdOPBFnYGBwXDRgSRijhUyFbT1qYmJdV1dlXl1waWmRdkNtWDKegkmOdEKZfUaLckBFNBE/MA1sZGR/dnZkTRhXQxVuZmaIcD+BeHh5cXCJgH80Jglza2tjXFuQhoaPhYWoik0sIgk5LA2FfHuViolpUBp3b26LgoF7cnKaj49bVVVCPT1OSUhWUFB7Xh1UTU1sVBqPbiSIaSKWjIuTiIiNg4OrjE6Hfn1mVC6Nk9sLAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVJJREFUeNpd0teWgjAUQFHpN4BSFEQQUFGKBexldHpv//87EwLq6Hljr5tkEahUigCgch08PrWvFTIH3PmlAotXRyP3/xagRg9hONBmJnVW8DTXshJP1SLxOAxxqsYIt504aGgRBi2bDKk8485JkJXcQAXQ67MRToW8idkeUAhhFBNqI5RhFEULo2EJp9z7F0rMl4vojEK77aIqxqF4NnPuePtbgoZxxGik3Y5TjJ2mgoxBuJlO1+tZatv8JEelwdfkKonjOP73UEzmytnjfg+bxpI3Ms8s82z2Q1CpjbySeXUZ6ASbPNen2VhNtRm7Y3T/hHrAdKVWvS7Reo9gpyGPfZpgK9D9AkdKze7pQbdVf2Nof0tuGeaOyvXxqLR6pxfZobh6ML19/LVcfO4+FkuGLrEhq2yRJJ0Qb0kHTH54q3v6ygA6Pru++l5d/DtQVj7/AW6fJZqMVLzGAAAAAElFTkSuQmCC'), auto";
166
+ /** Ordered array of all bucket stages, from empty to full. */
167
+ readonly stages: readonly string[];
168
+ };
@@ -0,0 +1,179 @@
1
+ import { rawShark, shark, burntShark, rawHerring, herring, burntFishHerring, redHerring, rawAnglerfish, anglerfish, burntAnglerfish, dragonDagger, dragonDaggerp, dragonDaggerpplus, dragonDaggerpplusplus, goldOre, goldBar, ironOre, ironBar, coins1, coins2, coins3, coins4, coins5, coins25, coins100, coins250, coins1000, coins10000, bucket, _15thsFullBucket, _25thsFullBucket, _35thsFullBucket, _45thsFullBucket, bucketOfWater, } from './generated/icons';
2
+ /**
3
+ * A cursor pack groups related OSRS icons by their in-game state.
4
+ *
5
+ * Each key is a semantic label (e.g. `raw`, `cooked`, `burnt`) and
6
+ * each value is the corresponding CSS cursor string, ready to apply
7
+ * to any element's `cursor` property.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { sharkPack } from '@dava96/osrs-icons';
12
+ *
13
+ * // Use the raw shark as the cursor
14
+ * document.body.style.cursor = sharkPack.raw;
15
+ *
16
+ * // Swap to the cooked variant on click
17
+ * button.addEventListener('click', () => {
18
+ * document.body.style.cursor = sharkPack.cooked;
19
+ * });
20
+ * ```
21
+ */
22
+ // ── Fish Packs ─────────────────────────────────────────────────────
23
+ /**
24
+ * Shark cursor pack — raw, cooked, and burnt states.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { sharkPack } from '@dava96/osrs-icons';
29
+ * element.style.cursor = sharkPack.cooked;
30
+ * ```
31
+ */
32
+ export const sharkPack = {
33
+ raw: rawShark,
34
+ cooked: shark,
35
+ burnt: burntShark,
36
+ };
37
+ /**
38
+ * Herring cursor pack — raw, cooked, burnt, and the infamous red herring.
39
+ *
40
+ * The `error` alias points to `redHerring` — a fun easter egg for
41
+ * error states. Also available as the top-level `errorCursor` export.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * import { herringPack } from '@dava96/osrs-icons';
46
+ * element.style.cursor = herringPack.error; // 🐟 Red herring!
47
+ * ```
48
+ */
49
+ export const herringPack = {
50
+ raw: rawHerring,
51
+ cooked: herring,
52
+ burnt: burntFishHerring,
53
+ error: redHerring,
54
+ };
55
+ /**
56
+ * Anglerfish cursor pack — raw, cooked, and burnt states.
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * import { anglerfishPack } from '@dava96/osrs-icons';
61
+ * element.style.cursor = anglerfishPack.raw;
62
+ * ```
63
+ */
64
+ export const anglerfishPack = {
65
+ raw: rawAnglerfish,
66
+ cooked: anglerfish,
67
+ burnt: burntAnglerfish,
68
+ };
69
+ // ── Weapon Packs ───────────────────────────────────────────────────
70
+ /**
71
+ * Dragon dagger cursor pack — base through poisoned++ variants.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * import { dragonDaggerPack } from '@dava96/osrs-icons';
76
+ *
77
+ * // Start with the base dagger
78
+ * element.style.cursor = dragonDaggerPack.base;
79
+ *
80
+ * // Upgrade to poisoned++
81
+ * element.style.cursor = dragonDaggerPack.poisonedPlusPlus;
82
+ * ```
83
+ */
84
+ export const dragonDaggerPack = {
85
+ base: dragonDagger,
86
+ poisoned: dragonDaggerp,
87
+ poisonedPlus: dragonDaggerpplus,
88
+ poisonedPlusPlus: dragonDaggerpplusplus,
89
+ };
90
+ // ── Ore & Bar Packs ────────────────────────────────────────────────
91
+ /**
92
+ * Gold ore/bar cursor pack — represents the smelting progression.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * import { goldPack } from '@dava96/osrs-icons';
97
+ * element.style.cursor = isComplete ? goldPack.bar : goldPack.ore;
98
+ * ```
99
+ */
100
+ export const goldPack = {
101
+ ore: goldOre,
102
+ bar: goldBar,
103
+ };
104
+ /**
105
+ * Iron ore/bar cursor pack — represents the smelting progression.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * import { ironPack } from '@dava96/osrs-icons';
110
+ * element.style.cursor = ironPack.ore;
111
+ * ```
112
+ */
113
+ export const ironPack = {
114
+ ore: ironOre,
115
+ bar: ironBar,
116
+ };
117
+ // ── Progression Packs ──────────────────────────────────────────────
118
+ /**
119
+ * Coins cursor pack — represents increasing wealth from 1gp to 10,000gp.
120
+ *
121
+ * In OSRS, the coin stack sprite changes based on the amount.
122
+ * Great for progress indicators, score displays, or loading states.
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { coinsPack } from '@dava96/osrs-icons';
127
+ *
128
+ * // Map a 0–100 progress value to a coin stack
129
+ * const stages = coinsPack.stages;
130
+ * const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
131
+ * element.style.cursor = stages[index];
132
+ * ```
133
+ */
134
+ export const coinsPack = {
135
+ _1: coins1,
136
+ _2: coins2,
137
+ _3: coins3,
138
+ _4: coins4,
139
+ _5: coins5,
140
+ _25: coins25,
141
+ _100: coins100,
142
+ _250: coins250,
143
+ _1000: coins1000,
144
+ _10000: coins10000,
145
+ /** Ordered array of all coin stages, from 1gp to 10,000gp. */
146
+ stages: [
147
+ coins1, coins2, coins3, coins4, coins5,
148
+ coins25, coins100, coins250, coins1000, coins10000,
149
+ ],
150
+ };
151
+ /**
152
+ * Bucket cursor pack — represents a filling progression from empty to full.
153
+ *
154
+ * Perfect for loading indicators, progress bars, or upload states.
155
+ * The `stages` array orders them from empty → full for easy indexing.
156
+ *
157
+ * @example
158
+ * ```ts
159
+ * import { bucketPack } from '@dava96/osrs-icons';
160
+ *
161
+ * // Map a 0–100 progress value to a bucket fill state
162
+ * const stages = bucketPack.stages;
163
+ * const index = Math.min(Math.floor(progress / 100 * stages.length), stages.length - 1);
164
+ * element.style.cursor = stages[index];
165
+ * ```
166
+ */
167
+ export const bucketPack = {
168
+ empty: bucket,
169
+ fifth: _15thsFullBucket,
170
+ twoFifths: _25thsFullBucket,
171
+ threeFifths: _35thsFullBucket,
172
+ fourFifths: _45thsFullBucket,
173
+ full: bucketOfWater,
174
+ /** Ordered array of all bucket stages, from empty to full. */
175
+ stages: [
176
+ bucket, _15thsFullBucket, _25thsFullBucket,
177
+ _35thsFullBucket, _45thsFullBucket, bucketOfWater,
178
+ ],
179
+ };
@@ -0,0 +1 @@
1
+ export {};