@eveshipfit/ui-ingame 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -418,6 +418,29 @@
418
418
  position: absolute;
419
419
  transform: translate(-50%, -50%);
420
420
  }
421
+ .ld11eq_button {
422
+ cursor: pointer;
423
+ background: none;
424
+ border: none;
425
+ width: 100%;
426
+ height: 100%;
427
+ padding: 0;
428
+ display: block;
429
+ }
430
+
431
+ .ld11eq_button[aria-disabled="true"] {
432
+ cursor: default;
433
+ }
434
+
435
+ .ld11eq_button:focus-visible {
436
+ outline: 1px solid var(--esf-text);
437
+ }
438
+
439
+ .ld11eq_button > img {
440
+ width: 100%;
441
+ height: 100%;
442
+ display: block;
443
+ }
421
444
  .T6VD6G_slot {
422
445
  --colour: var(--esf-state-online);
423
446
  --reach: calc((var(--slot-centre) + var(--slot-size) / 2) * var(--wheel-unit));
@@ -584,28 +607,7 @@
584
607
  position: absolute;
585
608
  }
586
609
 
587
- .T6VD6G_button, .T6VD6G_module {
588
- width: 100%;
589
- height: 100%;
590
- display: block;
591
- }
592
-
593
- .T6VD6G_button {
594
- cursor: pointer;
595
- background: none;
596
- border: none;
597
- padding: 0;
598
- }
599
-
600
- .T6VD6G_button[aria-disabled="true"] {
601
- cursor: default;
602
- }
603
-
604
- .T6VD6G_button:focus-visible {
605
- outline: 1px solid var(--esf-text);
606
- }
607
-
608
- .T6VD6G_button > img, .T6VD6G_module > span {
610
+ .T6VD6G_module, .T6VD6G_module > span {
609
611
  width: 100%;
610
612
  height: 100%;
611
613
  display: block;
@@ -828,6 +830,102 @@
828
830
  border-radius: 50%;
829
831
  position: absolute;
830
832
  }
833
+ .R9jwpW_slot {
834
+ --service-unit: calc(1px * var(--esf-scale, 1));
835
+ height: calc(44 * var(--service-unit));
836
+ width: calc(44 * var(--service-unit));
837
+ position: relative;
838
+ }
839
+
840
+ .R9jwpW_slot:hover, .R9jwpW_slot:has(:focus-visible) {
841
+ z-index: 1;
842
+ }
843
+
844
+ .R9jwpW_body {
845
+ user-select: none;
846
+ position: absolute;
847
+ inset: 0;
848
+ }
849
+
850
+ .R9jwpW_body:before {
851
+ background: var(--texture) center / 100% 100%;
852
+ content: "";
853
+ position: absolute;
854
+ inset: 0;
855
+ }
856
+
857
+ .R9jwpW_icon, .R9jwpW_empty {
858
+ position: absolute;
859
+ top: 50%;
860
+ left: 50%;
861
+ translate: -50% -50%;
862
+ }
863
+
864
+ .R9jwpW_icon {
865
+ height: calc(36 * var(--service-unit));
866
+ width: calc(36 * var(--service-unit));
867
+ }
868
+
869
+ .R9jwpW_icon > span, .R9jwpW_empty > img {
870
+ width: 100%;
871
+ height: 100%;
872
+ display: block;
873
+ }
874
+
875
+ .R9jwpW_empty {
876
+ height: calc(32 * var(--service-unit));
877
+ width: calc(32 * var(--service-unit));
878
+ }
879
+
880
+ .R9jwpW_press {
881
+ cursor: pointer;
882
+ position: absolute;
883
+ inset: 0;
884
+ }
885
+
886
+ .R9jwpW_press:focus-visible {
887
+ outline: var(--service-unit) solid var(--esf-text);
888
+ }
889
+
890
+ .R9jwpW_slot[data-state="empty"] > .R9jwpW_body:before {
891
+ opacity: .4;
892
+ }
893
+
894
+ .R9jwpW_slot[data-state="offline"] > .R9jwpW_body {
895
+ opacity: .3;
896
+ }
897
+
898
+ .R9jwpW_slot[data-state="unavailable"] > .R9jwpW_body {
899
+ opacity: .1;
900
+ }
901
+
902
+ .R9jwpW_slot[data-preview] .R9jwpW_icon {
903
+ filter: sepia() hue-rotate(190deg) saturate(200%);
904
+ }
905
+
906
+ .R9jwpW_actions {
907
+ opacity: 0;
908
+ padding: 0 0 var(--service-unit);
909
+ pointer-events: none;
910
+ border: none;
911
+ flex-direction: column-reverse;
912
+ margin: 0;
913
+ display: flex;
914
+ position: absolute;
915
+ bottom: 100%;
916
+ left: 50%;
917
+ translate: -50%;
918
+ }
919
+
920
+ .R9jwpW_slot:hover > .R9jwpW_actions, .R9jwpW_slot:has(:focus-visible) > .R9jwpW_actions {
921
+ opacity: 1;
922
+ pointer-events: auto;
923
+ }
924
+
925
+ .R9jwpW_action {
926
+ height: calc(15.5 * var(--service-unit));
927
+ width: calc(15.5 * var(--service-unit));
928
+ }
831
929
  .gVdevq_panel {
832
930
  background: var(--esf-menu-bg);
833
931
  border: var(--window-unit) solid var(--esf-input-border);
@@ -1000,6 +1098,49 @@
1000
1098
  text-align: left;
1001
1099
  }
1002
1100
 
1101
+ .gVdevq_panel[data-fighters] {
1102
+ padding: calc(12 * var(--window-unit));
1103
+ width: auto;
1104
+ }
1105
+
1106
+ .gVdevq_panel[data-fighters] .gVdevq_list {
1107
+ width: calc(5 * 88 * var(--window-unit) - 2 * var(--window-unit));
1108
+ }
1109
+
1110
+ .gVdevq_kinds {
1111
+ gap: calc(22 * var(--window-unit));
1112
+ min-height: calc(16 * var(--window-unit));
1113
+ padding-left: calc(4 * var(--window-unit));
1114
+ justify-self: start;
1115
+ display: flex;
1116
+ }
1117
+
1118
+ .gVdevq_kind {
1119
+ align-items: baseline;
1120
+ gap: calc(2 * var(--window-unit));
1121
+ display: flex;
1122
+ }
1123
+
1124
+ .gVdevq_kind > img {
1125
+ height: calc(16 * var(--window-unit));
1126
+ translate: 0 calc(8 * var(--window-unit) - .5cap);
1127
+ width: calc(16 * var(--window-unit));
1128
+ }
1129
+
1130
+ .gVdevq_tubes {
1131
+ gap: calc(2 * var(--window-unit));
1132
+ display: flex;
1133
+ }
1134
+
1135
+ .gVdevq_none {
1136
+ padding: calc(6 * var(--window-unit)) calc(8 * var(--window-unit));
1137
+ justify-self: stretch;
1138
+ }
1139
+
1140
+ .gVdevq_none:hover {
1141
+ background: var(--esf-bay-row-hover);
1142
+ }
1143
+
1003
1144
  .gVdevq_selection {
1004
1145
  color: var(--esf-text-muted);
1005
1146
  align-items: center;
@@ -1076,6 +1217,178 @@
1076
1217
  .gVdevq_remove:focus-visible, .gVdevq_removeAll:focus-visible, .gVdevq_box:focus-visible {
1077
1218
  outline: var(--window-unit) solid var(--esf-text);
1078
1219
  }
1220
+ .Wlg6ma_tube {
1221
+ --tube-unit: calc(1px * var(--esf-scale, 1));
1222
+ border-image: var(--tube) 6 fill / calc(6 * var(--tube-unit));
1223
+ box-sizing: border-box;
1224
+ color: var(--esf-text-muted);
1225
+ height: calc(116 * var(--tube-unit));
1226
+ user-select: none;
1227
+ width: calc(86 * var(--tube-unit));
1228
+ position: relative;
1229
+ }
1230
+
1231
+ .Wlg6ma_tube:not([data-state="unavailable"]):hover:before {
1232
+ background: var(--esf-fighter-tube-hover);
1233
+ content: "";
1234
+ position: absolute;
1235
+ inset: 0;
1236
+ }
1237
+
1238
+ .Wlg6ma_tube[data-state="unavailable"] {
1239
+ opacity: .4;
1240
+ }
1241
+
1242
+ .Wlg6ma_number {
1243
+ color: var(--esf-text);
1244
+ font-size: calc(11 * var(--tube-unit));
1245
+ height: calc(14 * var(--tube-unit));
1246
+ left: calc(2 * var(--tube-unit));
1247
+ top: calc(2 * var(--tube-unit));
1248
+ width: calc(14 * var(--tube-unit));
1249
+ justify-content: center;
1250
+ align-items: center;
1251
+ line-height: 1;
1252
+ display: flex;
1253
+ position: absolute;
1254
+ }
1255
+
1256
+ .Wlg6ma_number:before {
1257
+ background: var(--flag) center / 100% 100%;
1258
+ content: "";
1259
+ opacity: .35;
1260
+ position: absolute;
1261
+ inset: 0;
1262
+ }
1263
+
1264
+ .Wlg6ma_empty, .Wlg6ma_squadron {
1265
+ height: calc(86 * var(--tube-unit));
1266
+ width: calc(86 * var(--tube-unit));
1267
+ position: absolute;
1268
+ top: 0;
1269
+ left: 0;
1270
+ }
1271
+
1272
+ .Wlg6ma_empty {
1273
+ background: var(--texture) center / 100% 100%;
1274
+ }
1275
+
1276
+ .Wlg6ma_squadron {
1277
+ background: var(--underlay) center / 100% 100%;
1278
+ }
1279
+
1280
+ .Wlg6ma_squadron:after {
1281
+ background: var(--overlay) center / 100% 100%;
1282
+ content: "";
1283
+ position: absolute;
1284
+ inset: 0;
1285
+ }
1286
+
1287
+ .Wlg6ma_picture {
1288
+ height: calc(54 * var(--tube-unit));
1289
+ left: calc(16 * var(--tube-unit));
1290
+ top: calc(16 * var(--tube-unit));
1291
+ width: calc(54 * var(--tube-unit));
1292
+ border-radius: 50%;
1293
+ position: absolute;
1294
+ overflow: hidden;
1295
+ }
1296
+
1297
+ .Wlg6ma_picture > span {
1298
+ width: 100%;
1299
+ height: 100%;
1300
+ display: block;
1301
+ }
1302
+
1303
+ .Wlg6ma_tube[data-preview] .Wlg6ma_picture {
1304
+ filter: sepia() hue-rotate(190deg) saturate(200%);
1305
+ }
1306
+
1307
+ .Wlg6ma_ring {
1308
+ fill: none;
1309
+ stroke: var(--esf-fighter-empty);
1310
+ stroke-width: 4.5px;
1311
+ position: absolute;
1312
+ inset: 0;
1313
+ }
1314
+
1315
+ .Wlg6ma_ring > [data-lit] {
1316
+ stroke: var(--esf-fighter-full);
1317
+ }
1318
+
1319
+ .Wlg6ma_role {
1320
+ bottom: calc(18 * var(--tube-unit));
1321
+ z-index: 1;
1322
+ position: absolute;
1323
+ left: 50%;
1324
+ translate: -50%;
1325
+ }
1326
+
1327
+ .Wlg6ma_role > img {
1328
+ height: calc(16 * var(--tube-unit));
1329
+ width: calc(16 * var(--tube-unit));
1330
+ display: block;
1331
+ }
1332
+
1333
+ .Wlg6ma_label {
1334
+ text-align: center;
1335
+ left: 0;
1336
+ right: 0;
1337
+ top: calc(79 * var(--tube-unit));
1338
+ position: absolute;
1339
+ }
1340
+
1341
+ .Wlg6ma_resize {
1342
+ gap: calc(8 * var(--tube-unit));
1343
+ left: 0;
1344
+ right: 0;
1345
+ top: calc(96 * var(--tube-unit));
1346
+ justify-content: center;
1347
+ display: flex;
1348
+ position: absolute;
1349
+ }
1350
+
1351
+ .Wlg6ma_resize > button, .Wlg6ma_remove {
1352
+ color: var(--esf-text);
1353
+ cursor: default;
1354
+ font: inherit;
1355
+ opacity: .8;
1356
+ background: none;
1357
+ border: none;
1358
+ padding: 0;
1359
+ line-height: 1;
1360
+ }
1361
+
1362
+ .Wlg6ma_resize > button {
1363
+ font-size: calc(15 * var(--tube-unit));
1364
+ width: calc(12 * var(--tube-unit));
1365
+ font-weight: 600;
1366
+ }
1367
+
1368
+ .Wlg6ma_resize > button:disabled {
1369
+ opacity: .3;
1370
+ }
1371
+
1372
+ .Wlg6ma_remove {
1373
+ right: calc(4 * var(--tube-unit));
1374
+ top: calc(3 * var(--tube-unit));
1375
+ position: absolute;
1376
+ }
1377
+
1378
+ .Wlg6ma_remove > img {
1379
+ height: calc(14 * var(--tube-unit));
1380
+ width: calc(14 * var(--tube-unit));
1381
+ display: block;
1382
+ }
1383
+
1384
+ .Wlg6ma_resize > button:enabled:hover, .Wlg6ma_remove:hover {
1385
+ opacity: 1;
1386
+ }
1387
+
1388
+ .Wlg6ma_resize > button:focus-visible, .Wlg6ma_remove:focus-visible {
1389
+ opacity: 1;
1390
+ outline: var(--tube-unit) solid var(--esf-text);
1391
+ }
1079
1392
  .L9t91q_window {
1080
1393
  --window-unit: calc(1px * var(--esf-scale, 1));
1081
1394
  --browser-width: 0px;
@@ -1083,7 +1396,7 @@
1083
1396
  color: var(--esf-text);
1084
1397
  font-family: var(--esf-font);
1085
1398
  font-size: calc(var(--esf-font-size) * var(--esf-scale, 1));
1086
- height: calc(672 * var(--window-unit));
1399
+ height: calc(694 * var(--window-unit));
1087
1400
  user-select: none;
1088
1401
  width: calc(708 * var(--window-unit) + var(--browser-width) + var(--statistics-width));
1089
1402
  transition: width .2s;
@@ -1116,7 +1429,7 @@
1116
1429
  top: 0;
1117
1430
  }
1118
1431
 
1119
- .L9t91q_name, .L9t91q_violations, .L9t91q_tools, .L9t91q_panels, .L9t91q_bays, .L9t91q_history, .L9t91q_resources {
1432
+ .L9t91q_name, .L9t91q_violations, .L9t91q_tools, .L9t91q_panels, .L9t91q_bays, .L9t91q_history, .L9t91q_services, .L9t91q_resources {
1120
1433
  position: absolute;
1121
1434
  }
1122
1435
 
@@ -1166,12 +1479,15 @@
1166
1479
  }
1167
1480
 
1168
1481
  .L9t91q_violation {
1169
- --colour: var(--esf-violation-notice);
1170
1482
  height: calc(28 * var(--window-unit));
1171
1483
  width: calc(28 * var(--window-unit));
1172
1484
  position: relative;
1173
1485
  }
1174
1486
 
1487
+ .L9t91q_violation, .L9t91q_alert {
1488
+ --colour: var(--esf-violation-notice);
1489
+ }
1490
+
1175
1491
  .L9t91q_violation:before {
1176
1492
  background: var(--colour);
1177
1493
  content: "";
@@ -1180,14 +1496,38 @@
1180
1496
  inset: 0;
1181
1497
  }
1182
1498
 
1183
- .L9t91q_violation[data-kind="error"] {
1499
+ .L9t91q_violation[data-kind="error"], .L9t91q_alert[data-kind="error"] {
1184
1500
  --colour: var(--esf-violation-error);
1185
1501
  }
1186
1502
 
1187
- .L9t91q_violation[data-kind="skill"] {
1503
+ .L9t91q_violation[data-kind="skill"], .L9t91q_alert[data-kind="skill"] {
1188
1504
  --colour: var(--esf-violation-skill);
1189
1505
  }
1190
1506
 
1507
+ .L9t91q_alert {
1508
+ display: contents;
1509
+ }
1510
+
1511
+ .L9t91q_alertTitle {
1512
+ color: var(--colour);
1513
+ text-transform: uppercase;
1514
+ }
1515
+
1516
+ .L9t91q_alertLine {
1517
+ align-items: center;
1518
+ gap: 8px;
1519
+ display: flex;
1520
+ }
1521
+
1522
+ .L9t91q_alertLine:before {
1523
+ background: var(--colour);
1524
+ content: "";
1525
+ height: 1.4em;
1526
+ mask: var(--texture) center / 100% 100%;
1527
+ flex: none;
1528
+ width: 1.4em;
1529
+ }
1530
+
1191
1531
  .L9t91q_count {
1192
1532
  left: calc(100% - 2 * var(--window-unit));
1193
1533
  top: calc(-2 * var(--window-unit));
@@ -1248,8 +1588,8 @@
1248
1588
 
1249
1589
  .L9t91q_bays {
1250
1590
  gap: calc(4 * var(--window-unit));
1591
+ bottom: calc(17 * var(--window-unit));
1251
1592
  left: calc(19 * var(--window-unit));
1252
- top: calc(560 * var(--window-unit));
1253
1593
  display: grid;
1254
1594
  }
1255
1595
 
@@ -1304,16 +1644,23 @@
1304
1644
  }
1305
1645
 
1306
1646
  .L9t91q_history {
1647
+ bottom: calc(17 * var(--window-unit));
1307
1648
  left: calc(199 * var(--window-unit));
1308
- top: calc(590 * var(--window-unit));
1649
+ }
1650
+
1651
+ .L9t91q_services {
1652
+ gap: calc(4 * var(--window-unit));
1653
+ bottom: calc(38 * var(--window-unit));
1654
+ left: calc(164 * var(--window-unit));
1655
+ display: flex;
1309
1656
  }
1310
1657
 
1311
1658
  .L9t91q_resources {
1312
1659
  gap: calc(10 * var(--window-unit));
1313
1660
  line-height: calc(16 * var(--window-unit));
1314
1661
  right: calc(13 * var(--window-unit));
1662
+ bottom: calc(17 * var(--window-unit));
1315
1663
  text-align: right;
1316
- top: calc(546 * var(--window-unit));
1317
1664
  display: grid;
1318
1665
  }
1319
1666
 
@@ -1645,11 +1992,11 @@
1645
1992
  color: var(--esf-bad);
1646
1993
  }
1647
1994
 
1648
- .lebA7G_attribute[data-change="better"] {
1995
+ .lebA7G_attribute[data-change="better"], .lebA7G_price[data-change="better"] {
1649
1996
  color: var(--esf-good);
1650
1997
  }
1651
1998
 
1652
- .lebA7G_attribute[data-change="worse"] {
1999
+ .lebA7G_attribute[data-change="worse"], .lebA7G_price[data-change="worse"] {
1653
2000
  color: var(--esf-bad);
1654
2001
  }
1655
2002
 
@@ -1679,6 +2026,29 @@
1679
2026
  width: calc(16 * var(--statistics-unit));
1680
2027
  }
1681
2028
 
2029
+ .lebA7G_fighters {
2030
+ --fighters-unit: calc(1px * var(--esf-scale, 1));
2031
+ padding: calc(4 * var(--fighters-unit)) calc(10 * var(--fighters-unit)) calc(4 * var(--fighters-unit))
2032
+ calc(4 * var(--fighters-unit));
2033
+ justify-content: space-between;
2034
+ align-items: center;
2035
+ display: flex;
2036
+ }
2037
+
2038
+ .lebA7G_manage {
2039
+ background: var(--esf-button);
2040
+ border: var(--fighters-unit) solid var(--esf-button-edge);
2041
+ color: inherit;
2042
+ cursor: default;
2043
+ font: inherit;
2044
+ height: calc(30 * var(--fighters-unit));
2045
+ padding: 0 calc(16 * var(--fighters-unit));
2046
+ }
2047
+
2048
+ .lebA7G_manage:focus-visible {
2049
+ outline: var(--fighters-unit) solid var(--esf-text);
2050
+ }
2051
+
1682
2052
  .lebA7G_defense {
1683
2053
  --defense-unit: calc(1px * var(--esf-scale, 1));
1684
2054
  align-items: center;
package/dist/theme.css CHANGED
@@ -57,6 +57,9 @@
57
57
  --esf-spinner-edge: #161718;
58
58
  --esf-spinner-focus: #1a2629;
59
59
  --esf-spinner-focus-edge: #273437;
60
+ --esf-fighter-tube-hover: rgb(255 255 255 / 4%);
61
+ --esf-fighter-full: #78bf42;
62
+ --esf-fighter-empty: #070707;
60
63
 
61
64
  /* EVE's UI scale; 1 is 100%. */
62
65
  --esf-scale: 1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eveshipfit/ui-ingame",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "EVE Online ship fitting UI that looks like the in-game one",
5
5
  "license": "MIT",
6
6
  "author": "EVEShipFit Team <info@eveship.fit>",
@@ -27,11 +27,11 @@
27
27
  "access": "public"
28
28
  },
29
29
  "dependencies": {
30
- "@eveshipfit/react-hooks": "1.3.0"
30
+ "@eveshipfit/react-hooks": "2.0.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@babel/core": "^7.29.0",
34
- "@eveshipfit/images": "^1.3552227.1",
34
+ "@eveshipfit/images": "^1.3552227.2",
35
35
  "@rolldown/plugin-babel": "^0.2.4",
36
36
  "@storybook/react-vite": "^10.6.0",
37
37
  "@tsdown/css": "^0.23.0",
@@ -43,11 +43,11 @@
43
43
  "storybook": "^10.6.0",
44
44
  "tsdown": "^0.23.0",
45
45
  "vite": "^8.3.0",
46
- "@eveshipfit/fitting": "1.2.0",
47
- "@eveshipfit/sde-loader": "1.2.0"
46
+ "@eveshipfit/fitting": "2.0.0",
47
+ "@eveshipfit/sde-loader": "1.3.0"
48
48
  },
49
49
  "peerDependencies": {
50
- "@eveshipfit/images": "^1.3552227.1",
50
+ "@eveshipfit/images": "^1.3552227.2",
51
51
  "react": "^19.0.0",
52
52
  "react-dom": "^19.0.0"
53
53
  },