@fishies/ui 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +60 -0
  3. package/dist/FishiesImg.d.ts +9 -0
  4. package/dist/FishiesImg.js +64 -0
  5. package/dist/Select.d.ts +22 -0
  6. package/dist/Select.js +95 -0
  7. package/dist/fx-image.d.ts +3 -0
  8. package/dist/fx-image.js +25 -0
  9. package/dist/icons.d.ts +28 -0
  10. package/dist/icons.generated.d.ts +5 -0
  11. package/dist/icons.generated.js +658 -0
  12. package/dist/icons.js +53 -0
  13. package/dist/index.d.ts +7 -0
  14. package/dist/index.js +7 -0
  15. package/dist/kit.css +267 -0
  16. package/dist/kit.d.ts +159 -0
  17. package/dist/kit.js +104 -0
  18. package/dist/loader.css +48 -0
  19. package/dist/loader.d.ts +17 -0
  20. package/dist/loader.js +27 -0
  21. package/dist/select-state.d.ts +34 -0
  22. package/dist/select-state.js +55 -0
  23. package/dist/select.css +87 -0
  24. package/dist/tokens.d.ts +17 -0
  25. package/dist/tokens.generated.css +97 -0
  26. package/dist/tokens.js +175 -0
  27. package/handbook/README.md +236 -0
  28. package/icons/add.png +0 -0
  29. package/icons/announce.png +0 -0
  30. package/icons/arrange.png +0 -0
  31. package/icons/bell.png +0 -0
  32. package/icons/block.png +0 -0
  33. package/icons/book.png +0 -0
  34. package/icons/bug.png +0 -0
  35. package/icons/camera.png +0 -0
  36. package/icons/cart-add.png +0 -0
  37. package/icons/cart.png +0 -0
  38. package/icons/chat.png +0 -0
  39. package/icons/check.png +0 -0
  40. package/icons/clean.png +0 -0
  41. package/icons/clock.png +0 -0
  42. package/icons/coin.png +0 -0
  43. package/icons/coral.png +0 -0
  44. package/icons/decorate.png +0 -0
  45. package/icons/download.png +0 -0
  46. package/icons/drop.png +0 -0
  47. package/icons/edit.png +0 -0
  48. package/icons/egg.png +0 -0
  49. package/icons/emote-food.png +0 -0
  50. package/icons/emote-heart.png +0 -0
  51. package/icons/emote-hello.png +0 -0
  52. package/icons/emote-music.png +0 -0
  53. package/icons/emote-question.png +0 -0
  54. package/icons/emote-sleep.png +0 -0
  55. package/icons/emote-sparkle.png +0 -0
  56. package/icons/emote-surprise.png +0 -0
  57. package/icons/exit.png +0 -0
  58. package/icons/explore.png +0 -0
  59. package/icons/external.png +0 -0
  60. package/icons/feed.png +0 -0
  61. package/icons/fish.png +0 -0
  62. package/icons/follow.png +0 -0
  63. package/icons/fullscreen.png +0 -0
  64. package/icons/gear.png +0 -0
  65. package/icons/gem.png +0 -0
  66. package/icons/gift.png +0 -0
  67. package/icons/globe.png +0 -0
  68. package/icons/growth.png +0 -0
  69. package/icons/heart.png +0 -0
  70. package/icons/help.png +0 -0
  71. package/icons/home.png +0 -0
  72. package/icons/idea.png +0 -0
  73. package/icons/inspect.png +0 -0
  74. package/icons/inventory.png +0 -0
  75. package/icons/keeper.png +0 -0
  76. package/icons/kelp.png +0 -0
  77. package/icons/keyboard.png +0 -0
  78. package/icons/level.png +0 -0
  79. package/icons/link.png +0 -0
  80. package/icons/lock.png +0 -0
  81. package/icons/mail.png +0 -0
  82. package/icons/map.png +0 -0
  83. package/icons/menu.png +0 -0
  84. package/icons/music.png +0 -0
  85. package/icons/mute.png +0 -0
  86. package/icons/net.png +0 -0
  87. package/icons/people.png +0 -0
  88. package/icons/pin.png +0 -0
  89. package/icons/quest.png +0 -0
  90. package/icons/quote.png +0 -0
  91. package/icons/remedy.png +0 -0
  92. package/icons/reply.png +0 -0
  93. package/icons/report.png +0 -0
  94. package/icons/search.png +0 -0
  95. package/icons/sell.png +0 -0
  96. package/icons/send.png +0 -0
  97. package/icons/share.png +0 -0
  98. package/icons/shell.png +0 -0
  99. package/icons/shop.png +0 -0
  100. package/icons/showcase.png +0 -0
  101. package/icons/smile.png +0 -0
  102. package/icons/solved.png +0 -0
  103. package/icons/sound.png +0 -0
  104. package/icons/staff.png +0 -0
  105. package/icons/star.png +0 -0
  106. package/icons/tank.png +0 -0
  107. package/icons/thermometer.png +0 -0
  108. package/icons/trash.png +0 -0
  109. package/icons/trophy.png +0 -0
  110. package/icons/updates.png +0 -0
  111. package/icons/upvote.png +0 -0
  112. package/icons/views.png +0 -0
  113. package/icons/warning.png +0 -0
  114. package/icons/wave.png +0 -0
  115. package/icons/whisper.png +0 -0
  116. package/package.json +66 -0
  117. package/src/FishiesImg.tsx +58 -0
  118. package/src/Select.tsx +119 -0
  119. package/src/css.d.ts +2 -0
  120. package/src/fx-image.ts +17 -0
  121. package/src/icons.generated.ts +658 -0
  122. package/src/icons.ts +74 -0
  123. package/src/index.ts +8 -0
  124. package/src/kit.css +267 -0
  125. package/src/kit.tsx +190 -0
  126. package/src/loader.css +48 -0
  127. package/src/loader.tsx +35 -0
  128. package/src/select-state.ts +59 -0
  129. package/src/select.css +87 -0
  130. package/src/tokens.generated.css +97 -0
  131. package/src/tokens.ts +196 -0
@@ -0,0 +1,658 @@
1
+ export const ICON_FACTS = {
2
+ "feed": {
3
+ "px": 56,
4
+ "sharpTo": 28,
5
+ "usedBy": [
6
+ "Game",
7
+ "Reef Journal"
8
+ ]
9
+ },
10
+ "net": {
11
+ "px": 56,
12
+ "sharpTo": 28,
13
+ "usedBy": [
14
+ "Game",
15
+ "Keeper OS",
16
+ "Reef Journal"
17
+ ]
18
+ },
19
+ "clean": {
20
+ "px": 56,
21
+ "sharpTo": 28,
22
+ "usedBy": [
23
+ "Game",
24
+ "Keeper OS",
25
+ "Reef Journal"
26
+ ]
27
+ },
28
+ "decorate": {
29
+ "px": 56,
30
+ "sharpTo": 28,
31
+ "usedBy": [
32
+ "Game",
33
+ "Reef Journal"
34
+ ]
35
+ },
36
+ "arrange": {
37
+ "px": 168,
38
+ "sharpTo": 84,
39
+ "usedBy": [
40
+ "Game"
41
+ ]
42
+ },
43
+ "remedy": {
44
+ "px": 168,
45
+ "sharpTo": 84,
46
+ "usedBy": [
47
+ "Game",
48
+ "Keeper OS",
49
+ "Reef Journal"
50
+ ]
51
+ },
52
+ "inspect": {
53
+ "px": 168,
54
+ "sharpTo": 84,
55
+ "usedBy": [
56
+ "Game",
57
+ "Keeper OS",
58
+ "Reef Journal"
59
+ ]
60
+ },
61
+ "home": {
62
+ "px": 168,
63
+ "sharpTo": 84,
64
+ "usedBy": [
65
+ "Game",
66
+ "Keeper OS",
67
+ "Reef Journal"
68
+ ]
69
+ },
70
+ "explore": {
71
+ "px": 56,
72
+ "sharpTo": 28,
73
+ "usedBy": [
74
+ "Game",
75
+ "Keeper OS",
76
+ "Reef Journal"
77
+ ]
78
+ },
79
+ "map": {
80
+ "px": 320,
81
+ "sharpTo": 160,
82
+ "usedBy": [
83
+ "Game",
84
+ "Keeper OS",
85
+ "Reef Journal"
86
+ ]
87
+ },
88
+ "shop": {
89
+ "px": 56,
90
+ "sharpTo": 28,
91
+ "usedBy": [
92
+ "Game",
93
+ "Keeper OS",
94
+ "Reef Journal"
95
+ ]
96
+ },
97
+ "cart": {
98
+ "px": 168,
99
+ "sharpTo": 84,
100
+ "usedBy": [
101
+ "Game",
102
+ "Keeper OS",
103
+ "Reef Journal"
104
+ ]
105
+ },
106
+ "cart-add": {
107
+ "px": 168,
108
+ "sharpTo": 84,
109
+ "usedBy": [
110
+ "Game",
111
+ "Keeper OS"
112
+ ]
113
+ },
114
+ "inventory": {
115
+ "px": 56,
116
+ "sharpTo": 28,
117
+ "usedBy": [
118
+ "Game",
119
+ "Keeper OS",
120
+ "Reef Journal"
121
+ ]
122
+ },
123
+ "book": {
124
+ "px": 168,
125
+ "sharpTo": 84,
126
+ "usedBy": [
127
+ "Game",
128
+ "Keeper OS"
129
+ ]
130
+ },
131
+ "people": {
132
+ "px": 168,
133
+ "sharpTo": 84,
134
+ "usedBy": [
135
+ "Game",
136
+ "Keeper OS",
137
+ "Reef Journal"
138
+ ]
139
+ },
140
+ "share": {
141
+ "px": 168,
142
+ "sharpTo": 84,
143
+ "usedBy": [
144
+ "Game",
145
+ "Keeper OS"
146
+ ]
147
+ },
148
+ "pin": {
149
+ "px": 40,
150
+ "sharpTo": 20,
151
+ "usedBy": [
152
+ "Game",
153
+ "Keeper OS"
154
+ ]
155
+ },
156
+ "menu": {
157
+ "px": 52,
158
+ "sharpTo": 26,
159
+ "usedBy": [
160
+ "Game",
161
+ "Keeper OS",
162
+ "Reef Journal"
163
+ ]
164
+ },
165
+ "bell": {
166
+ "px": 52,
167
+ "sharpTo": 26,
168
+ "usedBy": [
169
+ "Game",
170
+ "Keeper OS",
171
+ "Reef Journal"
172
+ ]
173
+ },
174
+ "gear": {
175
+ "px": 168,
176
+ "sharpTo": 84,
177
+ "usedBy": [
178
+ "Game",
179
+ "Keeper OS",
180
+ "Reef Journal",
181
+ "Video player"
182
+ ]
183
+ },
184
+ "help": {
185
+ "px": 168,
186
+ "sharpTo": 84,
187
+ "usedBy": [
188
+ "Game",
189
+ "Keeper OS",
190
+ "Reef Journal"
191
+ ]
192
+ },
193
+ "sound": {
194
+ "px": 52,
195
+ "sharpTo": 26,
196
+ "usedBy": [
197
+ "Game",
198
+ "Keeper OS",
199
+ "Reef Journal",
200
+ "Video player"
201
+ ]
202
+ },
203
+ "mute": {
204
+ "px": 52,
205
+ "sharpTo": 26,
206
+ "usedBy": [
207
+ "Game",
208
+ "Keeper OS",
209
+ "Video player"
210
+ ]
211
+ },
212
+ "music": {
213
+ "px": 52,
214
+ "sharpTo": 26,
215
+ "usedBy": [
216
+ "Game"
217
+ ]
218
+ },
219
+ "fullscreen": {
220
+ "px": 52,
221
+ "sharpTo": 26,
222
+ "usedBy": [
223
+ "Game",
224
+ "Video player"
225
+ ]
226
+ },
227
+ "camera": {
228
+ "px": 168,
229
+ "sharpTo": 84,
230
+ "usedBy": [
231
+ "Game",
232
+ "Keeper OS"
233
+ ]
234
+ },
235
+ "coin": {
236
+ "px": 80,
237
+ "sharpTo": 40,
238
+ "usedBy": [
239
+ "Game",
240
+ "Keeper OS",
241
+ "Reef Journal"
242
+ ]
243
+ },
244
+ "fish": {
245
+ "px": 168,
246
+ "sharpTo": 84,
247
+ "usedBy": [
248
+ "Game",
249
+ "Keeper OS",
250
+ "Reef Journal",
251
+ "Video player"
252
+ ]
253
+ },
254
+ "egg": {
255
+ "px": 168,
256
+ "sharpTo": 84,
257
+ "usedBy": [
258
+ "Game",
259
+ "Keeper OS",
260
+ "Reef Journal"
261
+ ]
262
+ },
263
+ "growth": {
264
+ "px": 168,
265
+ "sharpTo": 84,
266
+ "usedBy": [
267
+ "Game",
268
+ "Keeper OS",
269
+ "Reef Journal"
270
+ ]
271
+ },
272
+ "heart": {
273
+ "px": 168,
274
+ "sharpTo": 84,
275
+ "usedBy": [
276
+ "Game",
277
+ "Keeper OS",
278
+ "Reef Journal"
279
+ ]
280
+ },
281
+ "star": {
282
+ "px": 168,
283
+ "sharpTo": 84,
284
+ "usedBy": [
285
+ "Game",
286
+ "Keeper OS",
287
+ "Reef Journal"
288
+ ]
289
+ },
290
+ "shell": {
291
+ "px": 168,
292
+ "sharpTo": 84,
293
+ "usedBy": [
294
+ "Game",
295
+ "Keeper OS",
296
+ "Reef Journal"
297
+ ]
298
+ },
299
+ "kelp": {
300
+ "px": 168,
301
+ "sharpTo": 84,
302
+ "usedBy": [
303
+ "Game",
304
+ "Keeper OS"
305
+ ]
306
+ },
307
+ "coral": {
308
+ "px": 168,
309
+ "sharpTo": 84,
310
+ "usedBy": [
311
+ "Game",
312
+ "Keeper OS"
313
+ ]
314
+ },
315
+ "lock": {
316
+ "px": 168,
317
+ "sharpTo": 84,
318
+ "usedBy": [
319
+ "Game"
320
+ ]
321
+ },
322
+ "solved": {
323
+ "px": 168,
324
+ "sharpTo": 84,
325
+ "usedBy": []
326
+ },
327
+ "staff": {
328
+ "px": 168,
329
+ "sharpTo": 84,
330
+ "usedBy": []
331
+ },
332
+ "edit": {
333
+ "px": 168,
334
+ "sharpTo": 84,
335
+ "usedBy": [
336
+ "Game"
337
+ ]
338
+ },
339
+ "upvote": {
340
+ "px": 168,
341
+ "sharpTo": 84,
342
+ "usedBy": []
343
+ },
344
+ "report": {
345
+ "px": 168,
346
+ "sharpTo": 84,
347
+ "usedBy": []
348
+ },
349
+ "follow": {
350
+ "px": 168,
351
+ "sharpTo": 84,
352
+ "usedBy": [
353
+ "Game",
354
+ "Reef Journal"
355
+ ]
356
+ },
357
+ "views": {
358
+ "px": 168,
359
+ "sharpTo": 84,
360
+ "usedBy": [
361
+ "Game"
362
+ ]
363
+ },
364
+ "chat": {
365
+ "px": 168,
366
+ "sharpTo": 84,
367
+ "usedBy": [
368
+ "Game",
369
+ "Reef Journal"
370
+ ]
371
+ },
372
+ "announce": {
373
+ "px": 168,
374
+ "sharpTo": 84,
375
+ "usedBy": []
376
+ },
377
+ "updates": {
378
+ "px": 168,
379
+ "sharpTo": 84,
380
+ "usedBy": [
381
+ "Game",
382
+ "Reef Journal"
383
+ ]
384
+ },
385
+ "bug": {
386
+ "px": 168,
387
+ "sharpTo": 84,
388
+ "usedBy": []
389
+ },
390
+ "idea": {
391
+ "px": 168,
392
+ "sharpTo": 84,
393
+ "usedBy": []
394
+ },
395
+ "reply": {
396
+ "px": 168,
397
+ "sharpTo": 84,
398
+ "usedBy": []
399
+ },
400
+ "quote": {
401
+ "px": 168,
402
+ "sharpTo": 84,
403
+ "usedBy": []
404
+ },
405
+ "clock": {
406
+ "px": 168,
407
+ "sharpTo": 84,
408
+ "usedBy": [
409
+ "Game",
410
+ "Reef Journal"
411
+ ]
412
+ },
413
+ "showcase": {
414
+ "px": 168,
415
+ "sharpTo": 84,
416
+ "usedBy": [
417
+ "Game"
418
+ ]
419
+ },
420
+ "tank": {
421
+ "px": 168,
422
+ "sharpTo": 84,
423
+ "usedBy": [
424
+ "Game"
425
+ ]
426
+ },
427
+ "block": {
428
+ "px": 168,
429
+ "sharpTo": 84,
430
+ "usedBy": [
431
+ "Reef Journal"
432
+ ]
433
+ },
434
+ "trash": {
435
+ "px": 168,
436
+ "sharpTo": 84,
437
+ "usedBy": []
438
+ },
439
+ "link": {
440
+ "px": 168,
441
+ "sharpTo": 84,
442
+ "usedBy": [
443
+ "Game",
444
+ "Reef Journal"
445
+ ]
446
+ },
447
+ "smile": {
448
+ "px": 168,
449
+ "sharpTo": 84,
450
+ "usedBy": []
451
+ },
452
+ "send": {
453
+ "px": 168,
454
+ "sharpTo": 84,
455
+ "usedBy": [
456
+ "Reef Journal"
457
+ ]
458
+ },
459
+ "whisper": {
460
+ "px": 168,
461
+ "sharpTo": 84,
462
+ "usedBy": []
463
+ },
464
+ "wave": {
465
+ "px": 168,
466
+ "sharpTo": 84,
467
+ "usedBy": [
468
+ "Reef Journal"
469
+ ]
470
+ },
471
+ "thermometer": {
472
+ "px": 168,
473
+ "sharpTo": 84,
474
+ "usedBy": [
475
+ "Game"
476
+ ]
477
+ },
478
+ "drop": {
479
+ "px": 168,
480
+ "sharpTo": 84,
481
+ "usedBy": [
482
+ "Game",
483
+ "Reef Journal"
484
+ ]
485
+ },
486
+ "warning": {
487
+ "px": 168,
488
+ "sharpTo": 84,
489
+ "usedBy": [
490
+ "Game"
491
+ ]
492
+ },
493
+ "gift": {
494
+ "px": 168,
495
+ "sharpTo": 84,
496
+ "usedBy": [
497
+ "Game",
498
+ "Reef Journal"
499
+ ]
500
+ },
501
+ "gem": {
502
+ "px": 168,
503
+ "sharpTo": 84,
504
+ "usedBy": []
505
+ },
506
+ "trophy": {
507
+ "px": 168,
508
+ "sharpTo": 84,
509
+ "usedBy": [
510
+ "Reef Journal"
511
+ ]
512
+ },
513
+ "level": {
514
+ "px": 168,
515
+ "sharpTo": 84,
516
+ "usedBy": [
517
+ "Game",
518
+ "Keeper OS"
519
+ ]
520
+ },
521
+ "quest": {
522
+ "px": 168,
523
+ "sharpTo": 84,
524
+ "usedBy": [
525
+ "Game"
526
+ ]
527
+ },
528
+ "check": {
529
+ "px": 168,
530
+ "sharpTo": 84,
531
+ "usedBy": [
532
+ "Game",
533
+ "Video player"
534
+ ]
535
+ },
536
+ "keeper": {
537
+ "px": 168,
538
+ "sharpTo": 84,
539
+ "usedBy": [
540
+ "Game",
541
+ "Keeper OS"
542
+ ]
543
+ },
544
+ "exit": {
545
+ "px": 168,
546
+ "sharpTo": 84,
547
+ "usedBy": [
548
+ "Game"
549
+ ]
550
+ },
551
+ "globe": {
552
+ "px": 168,
553
+ "sharpTo": 84,
554
+ "usedBy": []
555
+ },
556
+ "search": {
557
+ "px": 168,
558
+ "sharpTo": 84,
559
+ "usedBy": [
560
+ "Game",
561
+ "Keeper OS",
562
+ "Reef Journal"
563
+ ]
564
+ },
565
+ "sell": {
566
+ "px": 168,
567
+ "sharpTo": 84,
568
+ "usedBy": [
569
+ "Game",
570
+ "Reef Journal"
571
+ ]
572
+ },
573
+ "keyboard": {
574
+ "px": 168,
575
+ "sharpTo": 84,
576
+ "usedBy": []
577
+ },
578
+ "external": {
579
+ "px": 168,
580
+ "sharpTo": 84,
581
+ "usedBy": []
582
+ },
583
+ "add": {
584
+ "px": 168,
585
+ "sharpTo": 84,
586
+ "usedBy": [
587
+ "Game"
588
+ ]
589
+ },
590
+ "download": {
591
+ "px": 168,
592
+ "sharpTo": 84,
593
+ "usedBy": []
594
+ },
595
+ "mail": {
596
+ "px": 168,
597
+ "sharpTo": 84,
598
+ "usedBy": [
599
+ "Game"
600
+ ]
601
+ },
602
+ "emote-hello": {
603
+ "px": 128,
604
+ "sharpTo": 64,
605
+ "usedBy": [
606
+ "Game"
607
+ ]
608
+ },
609
+ "emote-heart": {
610
+ "px": 128,
611
+ "sharpTo": 64,
612
+ "usedBy": [
613
+ "Game"
614
+ ]
615
+ },
616
+ "emote-question": {
617
+ "px": 128,
618
+ "sharpTo": 64,
619
+ "usedBy": [
620
+ "Game"
621
+ ]
622
+ },
623
+ "emote-surprise": {
624
+ "px": 128,
625
+ "sharpTo": 64,
626
+ "usedBy": [
627
+ "Game"
628
+ ]
629
+ },
630
+ "emote-food": {
631
+ "px": 128,
632
+ "sharpTo": 64,
633
+ "usedBy": [
634
+ "Game"
635
+ ]
636
+ },
637
+ "emote-sleep": {
638
+ "px": 128,
639
+ "sharpTo": 64,
640
+ "usedBy": [
641
+ "Game"
642
+ ]
643
+ },
644
+ "emote-music": {
645
+ "px": 128,
646
+ "sharpTo": 64,
647
+ "usedBy": [
648
+ "Game"
649
+ ]
650
+ },
651
+ "emote-sparkle": {
652
+ "px": 128,
653
+ "sharpTo": 64,
654
+ "usedBy": [
655
+ "Game"
656
+ ]
657
+ }
658
+ };
package/dist/icons.js ADDED
@@ -0,0 +1,53 @@
1
+ export const ICON_GROUPS = [
2
+ { id: 'care', title: 'Care tools', use: 'The verbs of keeping fish: the dock’s tools and the cursors they become.' },
3
+ { id: 'places', title: 'Places and lists', use: 'Where you can go and what you can open: rooms, shop, stash, map, people.' },
4
+ { id: 'system', title: 'System', use: 'Settings, sound, notices and the frame: the same in the game, the OS and the player.' },
5
+ { id: 'things', title: 'Things', use: 'Nouns of the reef: coins, fish, eggs, plants, rewards.' },
6
+ { id: 'expressions', title: 'Expressions', use: 'The emotes keepers send in Open Water and the chat.' },
7
+ ];
8
+ const ui = (name, label, group, meaning) => ({ name, file: `/game/ui-icons/${name}.png`, label, group, meaning });
9
+ const emote = (name, label, meaning) => ({ name: `emote-${name}`, file: `/game/emotes/${name}.png`, label, group: 'expressions', meaning });
10
+ export const SYSTEM_ICONS = [
11
+ ui('feed', 'Feed', 'care', 'give fish food'), ui('net', 'Net', 'care', 'catch a fish to sell or move'), ui('clean', 'Clean', 'care', 'wipe the glass'),
12
+ ui('decorate', 'Decorate', 'care', 'place a new decoration'), ui('arrange', 'Arrange', 'care', 'move what is already placed'),
13
+ ui('remedy', 'Remedy', 'care', 'heal a sick fish'), ui('inspect', 'Inspect', 'care', 'look closer at a fish'),
14
+ ui('home', 'Home', 'places', 'your own aquarium'), ui('explore', 'Explore', 'places', 'find other keepers'), ui('map', 'Map', 'places', 'the ocean map and its places'),
15
+ ui('shop', 'Shop', 'places', 'buy fish, decor and care'), ui('cart', 'Cart', 'places', 'open the basket'), ui('cart-add', 'Add to cart', 'places', 'put something in the basket'),
16
+ ui('inventory', 'Stash', 'places', 'what you own but have not placed'), ui('book', 'Book', 'places', 'the Reef Journal and guides'),
17
+ ui('people', 'People', 'places', 'keepers, friends, followers'), ui('share', 'Share', 'places', 'send a link elsewhere'), ui('pin', 'Pin', 'places', 'keep it on top'),
18
+ ui('menu', 'Menu', 'system', 'more choices'), ui('bell', 'Notices', 'system', 'what happened while you were away'), ui('gear', 'Settings', 'system', 'change how it works'),
19
+ ui('help', 'Help', 'system', 'ask or learn how'), ui('sound', 'Sound', 'system', 'sound is on'), ui('mute', 'Muted', 'system', 'sound is off'),
20
+ ui('music', 'Music', 'system', 'the soundtrack'), ui('fullscreen', 'Full screen', 'system', 'fill the screen'), ui('camera', 'Camera', 'system', 'take a picture or a video'),
21
+ ui('coin', 'Coin', 'things', 'money in the game'), ui('fish', 'Fish', 'things', 'a fish, the game itself'), ui('egg', 'Egg', 'things', 'an egg, something hatching'),
22
+ ui('growth', 'Growth', 'things', 'growing up, rising numbers'), ui('heart', 'Heart', 'things', 'a like, kindness'), ui('star', 'Star', 'things', 'level, favourite, reward'),
23
+ ui('shell', 'Shell', 'things', 'a shell, reef chat'), ui('kelp', 'Kelp', 'things', 'plants'), ui('coral', 'Coral', 'things', 'coral and ornaments'),
24
+ ui('lock', 'Locked', 'system', 'closed, cannot be changed or answered'), ui('solved', 'Solved', 'things', 'answered, done, approved'),
25
+ ui('staff', 'Staff', 'things', 'someone from the Fishies team'), ui('edit', 'Edit', 'system', 'change words, or was changed'),
26
+ ui('upvote', 'Upvote', 'things', 'this is useful, raise it'), ui('report', 'Report', 'system', 'tell the team something is wrong'),
27
+ ui('follow', 'Follow', 'system', 'get notices about it'), ui('views', 'Views', 'things', 'how many looked, who can see it'),
28
+ ui('chat', 'Chat', 'places', 'a conversation, replies, general talk'),
29
+ ui('announce', 'Announcements', 'places', 'news from the team'), ui('updates', 'Updates', 'places', 'patch notes and what changed'),
30
+ ui('bug', 'Bugs', 'places', 'something broken'), ui('idea', 'Ideas', 'places', 'a suggestion'),
31
+ ui('reply', 'Reply', 'system', 'answer this'), ui('quote', 'Quote', 'system', "repeat someone's words in yours"),
32
+ ui('clock', 'Time', 'system', 'when, how long, last activity, away'), ui('showcase', 'Showcase', 'places', 'show what you made'),
33
+ ui('tank', 'Aquarium', 'things', 'an aquarium you own or buy'), ui('block', 'Block', 'system', 'block a keeper, ban'),
34
+ ui('trash', 'Remove', 'system', 'remove, delete'), ui('link', 'Link', 'system', 'copy or open a link'),
35
+ ui('smile', 'Emoji', 'system', 'pick an emoji'), ui('send', 'Send', 'system', 'send a message or post'),
36
+ ui('whisper', 'Whisper', 'places', 'a private message'), ui('wave', 'Open water', 'places', 'open water, the reef lane'),
37
+ ui('thermometer', 'Temperature', 'care', 'water temperature, the heater'), ui('drop', 'Water', 'care', 'water quality'),
38
+ ui('warning', 'Warning', 'system', 'warning, danger'), ui('gift', 'Gift', 'things', 'gifts, something given'),
39
+ ui('gem', 'Grade', 'things', 'quality tier, grade'), ui('trophy', 'Trophy', 'things', 'achievements, badges'),
40
+ ui('level', 'Level', 'things', 'level, XP, level-up'), ui('quest', 'Quest', 'things', 'a quest, a goal'),
41
+ ui('check', 'Done', 'system', 'done, selected, met'), ui('keeper', 'Keeper', 'places', 'an account, a person'),
42
+ ui('exit', 'Leave', 'system', 'sign out, quit, leave'), ui('globe', 'Language', 'system', 'language, all languages'),
43
+ ui('search', 'Search', 'system', 'search'), ui('sell', 'Sell', 'care', 'sell, a price'),
44
+ ui('keyboard', 'Keys', 'system', 'shortcuts and keys'), ui('external', 'Opens elsewhere', 'system', 'opens in a new tab'),
45
+ ui('add', 'New', 'system', 'new, create'), ui('download', 'Download', 'system', 'download'), ui('mail', 'Mail', 'system', 'email, the newsletter'),
46
+ emote('hello', 'Hello', 'wave hello'), emote('heart', 'Love', 'send love'), emote('question', 'Question', 'wonder aloud'), emote('surprise', 'Surprise', 'be surprised'),
47
+ emote('food', 'Food', 'ask for food'), emote('sleep', 'Sleepy', 'feel sleepy'), emote('music', 'Music', 'enjoy the music'), emote('sparkle', 'Sparkle', 'something wonderful'),
48
+ ];
49
+ export const ICON_SIZES = { xs: 16, sm: 20, md: 28, lg: 46, xl: 84 };
50
+ export const iconByName = (name) => SYSTEM_ICONS.find(icon => icon.name === name);
51
+ let resolveUrl = (icon) => icon.file;
52
+ export function configureIcons(options) { resolveUrl = options.url; }
53
+ export const iconUrl = (icon) => resolveUrl(icon);