ps99-api 2.4.0 → 2.6.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.
Files changed (92) hide show
  1. package/.github/workflows/release-on-main.yml +1 -2
  2. package/.idea/runConfigurations/test_changing.xml +1 -1
  3. package/debug_currency.json +57 -0
  4. package/debug_goals.json +271 -0
  5. package/dist/ps99-api.d.ts +2 -0
  6. package/dist/ps99-api.js +4 -1
  7. package/dist/ps99-api.js.map +1 -1
  8. package/dist/request-client/axios.js +6 -1
  9. package/dist/request-client/axios.js.map +1 -1
  10. package/dist/responses/collection/index.d.ts +1 -0
  11. package/dist/responses/collection/index.js +15 -0
  12. package/dist/responses/collection/index.js.map +1 -1
  13. package/dist/responses/collection/rarity.d.ts +1 -0
  14. package/example-web/react/package-lock.json +1504 -1470
  15. package/example-web/react2/package-lock.json +3089 -2766
  16. package/example-web/react2/package.json +6 -1
  17. package/example-web/react2/public/assets/gold_variant_icon.png +0 -0
  18. package/example-web/react2/public/assets/hot_cocoa_egg.png +0 -0
  19. package/example-web/react2/public/index.html +34 -31
  20. package/example-web/react2/src/App.tsx +15 -15
  21. package/example-web/react2/src/assets/guild_placeholder.png +0 -0
  22. package/example-web/react2/src/components/AchievementsComponent.tsx +74 -19
  23. package/example-web/react2/src/components/AutoSizer.tsx +49 -0
  24. package/example-web/react2/src/components/BoostsComponent.tsx +16 -5
  25. package/example-web/react2/src/components/BoothsComponent.tsx +22 -52
  26. package/example-web/react2/src/components/BoxesComponent.tsx +48 -16
  27. package/example-web/react2/src/components/BuffsComponent.tsx +82 -34
  28. package/example-web/react2/src/components/CharmsComponent.tsx +84 -24
  29. package/example-web/react2/src/components/CollectionConfigIndex.tsx +867 -33
  30. package/example-web/react2/src/components/CollectionsIndex.tsx +380 -27
  31. package/example-web/react2/src/components/CollectionsLayout.tsx +60 -0
  32. package/example-web/react2/src/components/CurrencyComponent.tsx +57 -39
  33. package/example-web/react2/src/components/DynamicCollectionConfigData.tsx +172 -15
  34. package/example-web/react2/src/components/EggsComponent.tsx +50 -12
  35. package/example-web/react2/src/components/EnchantsComponent.tsx +88 -42
  36. package/example-web/react2/src/components/FishingRodsComponent.tsx +36 -22
  37. package/example-web/react2/src/components/Footer.tsx +18 -8
  38. package/example-web/react2/src/components/FruitsComponent.tsx +40 -17
  39. package/example-web/react2/src/components/GenericFetchComponent.tsx +9 -1
  40. package/example-web/react2/src/components/GuildBattlesComponent.tsx +41 -34
  41. package/example-web/react2/src/components/Header.tsx +39 -52
  42. package/example-web/react2/src/components/HomePage.tsx +15 -17
  43. package/example-web/react2/src/components/HoverboardsComponent.tsx +23 -99
  44. package/example-web/react2/src/components/ImageComponent.tsx +255 -45
  45. package/example-web/react2/src/components/ItemCard.tsx +240 -0
  46. package/example-web/react2/src/components/LootboxesComponent.tsx +22 -7
  47. package/example-web/react2/src/components/MasteryComponent.tsx +165 -30
  48. package/example-web/react2/src/components/MerchantsComponent.tsx +41 -16
  49. package/example-web/react2/src/components/MiscItemsComponent.tsx +26 -31
  50. package/example-web/react2/src/components/PetsComponent.tsx +100 -61
  51. package/example-web/react2/src/components/PotionsComponent.tsx +121 -27
  52. package/example-web/react2/src/components/RandomEventsComponent.tsx +32 -23
  53. package/example-web/react2/src/components/RanksComponent.tsx +187 -62
  54. package/example-web/react2/src/components/RarityComponent.tsx +123 -5
  55. package/example-web/react2/src/components/ReactWindowMock.tsx +73 -0
  56. package/example-web/react2/src/components/RebirthsComponent.tsx +36 -19
  57. package/example-web/react2/src/components/SecretRoomsComponent.tsx +5 -4
  58. package/example-web/react2/src/components/SeedsComponent.tsx +41 -21
  59. package/example-web/react2/src/components/ShovelsComponent.tsx +21 -9
  60. package/example-web/react2/src/components/Sidebar.tsx +105 -0
  61. package/example-web/react2/src/components/SprinklersComponent.tsx +25 -10
  62. package/example-web/react2/src/components/Tooltip.tsx +36 -0
  63. package/example-web/react2/src/components/UltimatesComponent.tsx +28 -16
  64. package/example-web/react2/src/components/UpgradesComponent.tsx +97 -47
  65. package/example-web/react2/src/components/WateringCansComponent.tsx +20 -14
  66. package/example-web/react2/src/components/WorldsComponent.tsx +21 -11
  67. package/example-web/react2/src/components/XPPotionsComponent.tsx +28 -11
  68. package/example-web/react2/src/components/ZoneFlagsComponent.tsx +25 -14
  69. package/example-web/react2/src/components/ZonesComponent.tsx +43 -60
  70. package/example-web/react2/src/constants/collectionIcons.ts +29 -0
  71. package/example-web/react2/src/context/CollectionDataContext.tsx +62 -0
  72. package/example-web/react2/src/context/ScrollContext.tsx +35 -0
  73. package/example-web/react2/src/hooks/useCollapsibleHeader.ts +69 -0
  74. package/example-web/react2/src/hooks/useExpandableList.ts +38 -0
  75. package/example-web/react2/src/hooks/useItemResolution.ts +351 -0
  76. package/example-web/react2/src/index.css +257 -0
  77. package/example-web/react2/src/index.tsx +2 -1
  78. package/example-web/react2/src/utils/gigantix.ts +40 -0
  79. package/example-web/react2/temp_model.rbxm +0 -0
  80. package/example-web/react2/webpack.config.js +103 -47
  81. package/package.json +11 -11
  82. package/ranks.json +1 -0
  83. package/repro_collection_fetch.ts +33 -0
  84. package/repro_image_fetch.ts +50 -0
  85. package/src/__tests__/__snapshots__/ps99-api-changes.ts.snap +34841 -10439
  86. package/src/__tests__/__snapshots__/ps99-api-live.ts.snap +160667 -67217
  87. package/src/ps99-api.ts +9 -5
  88. package/src/request-client/axios.ts +6 -2
  89. package/src/responses/collection/index.ts +1 -0
  90. package/src/responses/collection/rarity.ts +1 -0
  91. package/tsconfig.json +1 -1
  92. package/example-web/react2/public/service-worker.js +0 -63
@@ -1,36 +1,96 @@
1
1
  import React from "react";
2
2
  import { CollectionConfigData } from "ps99-api";
3
+ import ItemCard from "./ItemCard";
3
4
  import ImageComponent from "./ImageComponent";
5
+ import { useItemResolution } from "../hooks/useItemResolution";
4
6
 
5
7
  const CharmsComponent: React.FC<{
6
8
  configData: CollectionConfigData<"Charms">;
7
9
  }> = ({ configData }) => {
10
+ const { getRarityColor } = useItemResolution();
11
+
12
+ const isSingleTier = configData.Tiers.length === 1;
13
+
14
+ if (isSingleTier) {
15
+ const tier = configData.Tiers[0];
16
+ const rarityColor = tier.Rarity ? getRarityColor(tier.Rarity) : null;
17
+
18
+ return (
19
+ <div style={{ width: '100%', height: '100%', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', alignItems: 'center', paddingTop: '20px' }}>
20
+ <div style={{
21
+ width: '120px',
22
+ height: '120px',
23
+ borderRadius: '16px',
24
+ border: rarityColor ? `4px solid ${rarityColor}` : '4px solid #eee',
25
+ padding: '10px',
26
+ backgroundColor: '#fff',
27
+ boxShadow: '0 4px 10px rgba(0,0,0,0.1)',
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ justifyContent: 'center',
31
+ marginBottom: '20px'
32
+ }}>
33
+ <ImageComponent src={configData.Icon} alt={tier.DisplayName} style={{ width: '100%', height: '100%', objectFit: 'contain' }} />
34
+ </div>
35
+
36
+ <div style={{ textAlign: 'center', maxWidth: '400px' }}>
37
+ {configData.BaseTier !== 1 && <p><strong>Base Tier:</strong> {configData.BaseTier}</p>}
38
+ {configData.MaxTier !== 1 && <p><strong>Max Tier:</strong> {configData.MaxTier}</p>}
39
+ {configData.DiminishPowerThreshold && <p><strong>Diminish:</strong> {configData.DiminishPowerThreshold}</p>}
40
+ {configData.Unique && <span className="badge" style={{ display: 'inline-block', marginBottom: '10px' }}>Unique</span>}
41
+
42
+ <h3 style={{ margin: '10px 0', fontSize: '1.5em', color: '#333' }}>{tier.DisplayName}</h3>
43
+ <p style={{ color: '#666', fontSize: '1.1em', marginBottom: '15px' }}>{tier.Desc}</p>
44
+ <p style={{ fontWeight: '900', fontSize: '1.2em', color: '#333' }}>Power: {tier.Power}</p>
45
+ </div>
46
+ </div>
47
+ );
48
+ }
49
+
8
50
  return (
9
- <div>
10
- <h2>{configData.Tiers[0].DisplayName}</h2>
11
- <ImageComponent
12
- src={configData.Icon}
13
- alt={configData.Tiers[0].DisplayName}
14
- />
15
- <p>Base Tier: {configData.BaseTier}</p>
16
- <p>Max Tier: {configData.MaxTier}</p>
17
- {configData.DiminishPowerThreshold && (
18
- <p>Diminish Power Threshold: {configData.DiminishPowerThreshold}</p>
19
- )}
20
- {configData.Unique && <p>Unique: Yes</p>}
21
- <h3>Tiers:</h3>
22
- <ul>
23
- {configData.Tiers.map((tier, index) => (
24
- <li key={index}>
25
- <p>{tier.DisplayName}</p>
26
- <p>Description: {tier.Desc}</p>
27
- <p>Power: {tier.Power}</p>
28
- <p>Rarity: {tier.Rarity.DisplayName}</p>
29
- <p>Rarity Number: {tier.Rarity.RarityNumber}</p>
30
- </li>
31
- ))}
32
- </ul>
51
+ <div style={{ width: '100%', height: '100%', boxSizing: 'border-box' }}>
52
+ <div style={{ display: 'flex', gap: '20px', justifyContent: 'center', flexWrap: 'wrap', marginBottom: '20px' }}>
53
+ <div style={{ width: '150px' }}>
54
+ <ImageComponent src={configData.Icon} alt={configData.Tiers[0].DisplayName} />
55
+ </div>
56
+ <div style={{ textAlign: 'left', minWidth: '200px' }}>
57
+ <p><strong>Base Tier:</strong> {configData.BaseTier}</p>
58
+ <p><strong>Max Tier:</strong> {configData.MaxTier}</p>
59
+ {configData.DiminishPowerThreshold && <p><strong>Diminish:</strong> {configData.DiminishPowerThreshold}</p>}
60
+ {configData.Unique && <span className="badge">Unique</span>}
61
+ </div>
62
+ </div>
63
+
64
+ <div style={{ marginTop: '20px' }}>
65
+ <h3 style={{ fontSize: '1.2em', borderBottom: '1px solid #eee', paddingBottom: '5px' }}>Tiers</h3>
66
+ <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(150px, 1fr))", gap: "15px", marginTop: '15px' }}>
67
+ {configData.Tiers.map((tier, index) => {
68
+ const rarityColor = tier.Rarity ? getRarityColor(tier.Rarity) : null;
69
+ return (
70
+ <div key={index}>
71
+ <ItemCard
72
+ id={tier.DisplayName}
73
+ amount={1}
74
+ label={tier.DisplayName}
75
+ tn={index + 1}
76
+ itemData={{
77
+ icon: configData.Icon,
78
+ rarity: tier.Rarity,
79
+ name: tier.DisplayName
80
+ }}
81
+ rarityColor={rarityColor}
82
+ />
83
+ <div style={{ marginTop: '10px', fontSize: '0.9em', color: '#666', textAlign: 'center' }}>
84
+ <p>{tier.Desc}</p>
85
+ <p style={{ fontWeight: 'bold' }}>Power: {tier.Power}</p>
86
+ </div>
87
+ </div>
88
+ );
89
+ })}
90
+ </div>
91
+ </div>
33
92
  </div>
34
93
  );
35
94
  };
95
+
36
96
  export default CharmsComponent;