@rpg-engine/long-bow 0.8.30 → 0.8.32

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 (34) hide show
  1. package/dist/components/InformationCenter/sections/bestiary/BestiaryAdvancedFilters.d.ts +13 -0
  2. package/dist/components/InformationCenter/sections/bestiary/InformationCenterBestiarySection.d.ts +2 -2
  3. package/dist/components/InformationCenter/sections/items/ItemsAdvancedFilters.d.ts +11 -0
  4. package/dist/components/shared/AdvancedFilters/AdvancedFilters.d.ts +23 -0
  5. package/dist/components/shared/PaginatedContent/PaginatedContent.d.ts +1 -0
  6. package/dist/components/shared/SearchBar/SearchBar.d.ts +1 -0
  7. package/dist/components/shared/SearchHeader/SearchHeader.d.ts +1 -0
  8. package/dist/hooks/useTooltipPosition.d.ts +15 -0
  9. package/dist/long-bow.cjs.development.js +758 -509
  10. package/dist/long-bow.cjs.development.js.map +1 -1
  11. package/dist/long-bow.cjs.production.min.js +1 -1
  12. package/dist/long-bow.cjs.production.min.js.map +1 -1
  13. package/dist/long-bow.esm.js +665 -416
  14. package/dist/long-bow.esm.js.map +1 -1
  15. package/package.json +2 -2
  16. package/src/components/InformationCenter/InformationCenter.tsx +5 -19
  17. package/src/components/InformationCenter/sections/bestiary/BestiaryAdvancedFilters.tsx +95 -0
  18. package/src/components/InformationCenter/sections/bestiary/InformationCenterBestiarySection.tsx +124 -84
  19. package/src/components/InformationCenter/sections/bestiary/InformationCenterNPCDetails.tsx +31 -7
  20. package/src/components/InformationCenter/sections/items/InformationCenterItemsSection.tsx +76 -78
  21. package/src/components/InformationCenter/sections/items/ItemsAdvancedFilters.tsx +80 -0
  22. package/src/components/InformationCenter/shared/BaseInformationDetails.tsx +34 -11
  23. package/src/components/Item/Cards/ItemInfo.tsx +1 -18
  24. package/src/components/Item/Inventory/ItemSlot.tsx +3 -15
  25. package/src/components/Item/Inventory/ItemSlotRenderer.tsx +2 -6
  26. package/src/components/shared/AdvancedFilters/AdvancedFilters.tsx +279 -0
  27. package/src/components/shared/Collapsible/Collapsible.tsx +1 -1
  28. package/src/components/shared/PaginatedContent/PaginatedContent.tsx +1 -0
  29. package/src/components/shared/SearchBar/SearchBar.tsx +15 -5
  30. package/src/components/shared/SearchHeader/SearchHeader.tsx +2 -0
  31. package/src/hooks/useTooltipPosition.ts +73 -0
  32. package/src/mocks/itemContainer.mocks.ts +0 -7
  33. package/dist/components/Item/Inventory/ItemSlotQuality.d.ts +0 -2
  34. package/src/components/Item/Inventory/ItemSlotQuality.ts +0 -18
@@ -21,8 +21,8 @@ var ReactDOM = require('react-dom');
21
21
  var ReactDOM__default = _interopDefault(ReactDOM);
22
22
  var lodash = require('lodash');
23
23
  var mobxReactLite = require('mobx-react-lite');
24
- var reactColorful = require('react-colorful');
25
24
  var ai = require('react-icons/ai');
25
+ var reactColorful = require('react-colorful');
26
26
  require('rpgui/rpgui.css');
27
27
  require('rpgui/rpgui.min.js');
28
28
  var capitalize = _interopDefault(require('lodash/capitalize'));
@@ -27525,284 +27525,6 @@ function useTouchTarget() {
27525
27525
  return getTouchTarget;
27526
27526
  }
27527
27527
 
27528
- var generateContextMenuListOptions = function generateContextMenuListOptions(actionsByTypeList) {
27529
- var contextMenu = actionsByTypeList.map(function (action) {
27530
- return {
27531
- id: action,
27532
- text: shared.ItemSocketEventsDisplayLabels[action]
27533
- };
27534
- });
27535
- return contextMenu;
27536
- };
27537
- var generateContextMenu = function generateContextMenu(item, itemContainerType, isDepotSystem) {
27538
- var contextActionMenu = [];
27539
- if (itemContainerType === shared.ItemContainerType.Inventory) {
27540
- switch (item.type) {
27541
- case shared.ItemType.Weapon:
27542
- case shared.ItemType.Armor:
27543
- case shared.ItemType.Accessory:
27544
- case shared.ItemType.Jewelry:
27545
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Equipment);
27546
- break;
27547
- case shared.ItemType.Container:
27548
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Container);
27549
- break;
27550
- case shared.ItemType.Consumable:
27551
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Consumable);
27552
- break;
27553
- case shared.ItemType.CraftingResource:
27554
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.CraftingResource);
27555
- break;
27556
- case shared.ItemType.Tool:
27557
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Tool);
27558
- break;
27559
- default:
27560
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Other);
27561
- break;
27562
- }
27563
- if (isDepotSystem) {
27564
- contextActionMenu.push({
27565
- id: shared.DepotSocketEvents.Deposit,
27566
- text: 'Deposit'
27567
- });
27568
- }
27569
- var contextActionMenuDontHaveUseWith = !contextActionMenu.find(function (action) {
27570
- return action.text.toLowerCase().includes('use with');
27571
- });
27572
- if (item.hasUseWith && contextActionMenuDontHaveUseWith) {
27573
- contextActionMenu.push({
27574
- id: shared.ItemSocketEvents.UseWith,
27575
- text: shared.ItemSocketEvents.UseWith
27576
- });
27577
- }
27578
- }
27579
- if (itemContainerType === shared.ItemContainerType.Equipment) {
27580
- switch (item.type) {
27581
- case shared.ItemType.Container:
27582
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForEquipmentSet.Container);
27583
- break;
27584
- default:
27585
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForEquipmentSet.Equipment);
27586
- }
27587
- }
27588
- if (itemContainerType === shared.ItemContainerType.Loot) {
27589
- switch (item.type) {
27590
- case shared.ItemType.Weapon:
27591
- case shared.ItemType.Armor:
27592
- case shared.ItemType.Accessory:
27593
- case shared.ItemType.Jewelry:
27594
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Equipment);
27595
- break;
27596
- case shared.ItemType.Consumable:
27597
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Consumable);
27598
- break;
27599
- case shared.ItemType.CraftingResource:
27600
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.CraftingResource);
27601
- break;
27602
- case shared.ItemType.Tool:
27603
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Tool);
27604
- break;
27605
- default:
27606
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Other);
27607
- break;
27608
- }
27609
- }
27610
- if (itemContainerType === shared.ItemContainerType.MapContainer) {
27611
- switch (item.type) {
27612
- case shared.ItemType.Weapon:
27613
- case shared.ItemType.Armor:
27614
- case shared.ItemType.Accessory:
27615
- case shared.ItemType.Jewelry:
27616
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Equipment);
27617
- break;
27618
- case shared.ItemType.Consumable:
27619
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Consumable);
27620
- break;
27621
- case shared.ItemType.CraftingResource:
27622
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.CraftingResource);
27623
- break;
27624
- case shared.ItemType.Tool:
27625
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Tool);
27626
- break;
27627
- default:
27628
- contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Other);
27629
- break;
27630
- }
27631
- var _contextActionMenuDontHaveUseWith = !contextActionMenu.find(function (action) {
27632
- return action.text.toLowerCase().includes('use with');
27633
- });
27634
- if (item.hasUseWith && _contextActionMenuDontHaveUseWith) {
27635
- contextActionMenu.push({
27636
- id: 'use-with',
27637
- text: 'Use with...'
27638
- });
27639
- }
27640
- }
27641
- if (itemContainerType === shared.ItemContainerType.Depot) {
27642
- contextActionMenu = [{
27643
- id: shared.ItemSocketEvents.GetItemInfo,
27644
- text: shared.ItemSocketEventsDisplayLabels.GetItemInfo
27645
- }, {
27646
- id: shared.DepotSocketEvents.Withdraw,
27647
- text: 'Withdraw'
27648
- }];
27649
- }
27650
- if (item.type && item.type === shared.ItemType.Container) {
27651
- var existInContextAction = contextActionMenu.some(function (item) {
27652
- return item.text === shared.DepotSocketEvents.OpenContainer || item.id === shared.ItemSocketEvents.ContainerOpen || item.text === 'Open';
27653
- });
27654
- if (!existInContextAction) {
27655
- contextActionMenu.push({
27656
- id: shared.DepotSocketEvents.OpenContainer,
27657
- text: 'Open'
27658
- });
27659
- }
27660
- if (itemContainerType === shared.ItemContainerType.Inventory) {
27661
- if (item.textureAtlas === 'items' && item.type === shared.ItemType.Container) {
27662
- contextActionMenu.push({
27663
- id: shared.ItemSocketEvents.ItemPropertyUpdate,
27664
- text: 'Set Color...'
27665
- });
27666
- }
27667
- }
27668
- }
27669
- if (item.attachedGems && item.attachedGems.length > 0) {
27670
- contextActionMenu.push({
27671
- id: shared.ItemSocketEvents.DetachGem,
27672
- text: "Detach Gems"
27673
- });
27674
- }
27675
- return contextActionMenu;
27676
- };
27677
-
27678
- var initialDetailsState = {
27679
- item: null,
27680
- isTooltipVisible: false,
27681
- isTooltipMobileVisible: false,
27682
- isContextMenuVisible: false,
27683
- contextMenuPosition: {
27684
- x: 0,
27685
- y: 0
27686
- },
27687
- contextActions: [],
27688
- clearContextActions: function clearContextActions() {},
27689
- clearDetailsState: function clearDetailsState() {}
27690
- };
27691
- var ItemSlotDetailsContext = /*#__PURE__*/React.createContext({
27692
- detailsState: initialDetailsState,
27693
- updateDetailsState: function updateDetailsState() {},
27694
- clearDetailsState: function clearDetailsState() {},
27695
- setContextActions: function setContextActions() {},
27696
- clearContextActions: function clearContextActions() {}
27697
- });
27698
- var useItemSlotDetails = function useItemSlotDetails() {
27699
- return React.useContext(ItemSlotDetailsContext);
27700
- };
27701
- var ItemSlotDetailsProvider = function ItemSlotDetailsProvider(_ref) {
27702
- var children = _ref.children;
27703
- var _useState = React.useState(initialDetailsState),
27704
- detailsState = _useState[0],
27705
- setDetailsState = _useState[1];
27706
- var updateDetailsState = React.useCallback(function (newState) {
27707
- setDetailsState(function (prevState) {
27708
- return _extends({}, prevState, newState);
27709
- });
27710
- }, []);
27711
- var clearDetailsState = React.useCallback(function () {
27712
- setDetailsState(initialDetailsState);
27713
- }, [setDetailsState]);
27714
- var setContextActions = React.useCallback(function (item, containerType, isDepotSystem, isContextMenuDisabled) {
27715
- if (item && containerType && !isContextMenuDisabled) {
27716
- var newContextActions = generateContextMenu(item, containerType, isDepotSystem);
27717
- updateDetailsState({
27718
- contextActions: newContextActions
27719
- });
27720
- } else {
27721
- updateDetailsState({
27722
- contextActions: []
27723
- });
27724
- }
27725
- }, []);
27726
- var clearContextActions = React.useCallback(function () {
27727
- updateDetailsState({
27728
- contextActions: []
27729
- });
27730
- }, [updateDetailsState]);
27731
- var contextValue = React.useMemo(function () {
27732
- return {
27733
- detailsState: detailsState,
27734
- updateDetailsState: updateDetailsState,
27735
- clearDetailsState: clearDetailsState,
27736
- setContextActions: setContextActions,
27737
- clearContextActions: clearContextActions
27738
- };
27739
- }, [detailsState, updateDetailsState, clearDetailsState, setContextActions, clearContextActions]);
27740
- return React__default.createElement(ItemSlotDetailsContext.Provider, {
27741
- value: contextValue
27742
- }, children);
27743
- };
27744
-
27745
- var initialDraggingState = {
27746
- item: null,
27747
- isDragging: false,
27748
- position: {
27749
- x: 0,
27750
- y: 0
27751
- },
27752
- dropPosition: null,
27753
- isFocused: false,
27754
- draggingDistance: 0
27755
- };
27756
- var ItemSlotDraggingContext = /*#__PURE__*/React.createContext({
27757
- draggingState: initialDraggingState,
27758
- updateDraggingState: function updateDraggingState() {},
27759
- clearDraggingState: function clearDraggingState() {}
27760
- });
27761
- var useItemSlotDragging = function useItemSlotDragging() {
27762
- return React.useContext(ItemSlotDraggingContext);
27763
- };
27764
- var ItemSlotDraggingProvider = function ItemSlotDraggingProvider(_ref) {
27765
- var children = _ref.children;
27766
- var _useState = React.useState(initialDraggingState),
27767
- draggingState = _useState[0],
27768
- setDraggingState = _useState[1];
27769
- var updateDraggingState = React.useCallback(function (newState) {
27770
- setDraggingState(function (prevState) {
27771
- return _extends({}, prevState, newState);
27772
- });
27773
- }, []);
27774
- var clearDraggingState = React.useCallback(function () {
27775
- setDraggingState(initialDraggingState);
27776
- }, []);
27777
- var contextValue = React.useMemo(function () {
27778
- return {
27779
- draggingState: draggingState,
27780
- updateDraggingState: updateDraggingState,
27781
- clearDraggingState: clearDraggingState
27782
- };
27783
- }, [draggingState, updateDraggingState, clearDraggingState]);
27784
- return React__default.createElement(ItemSlotDraggingContext.Provider, {
27785
- value: contextValue
27786
- }, children);
27787
- };
27788
-
27789
- var qualityColorHex = function qualityColorHex(item) {
27790
- switch (item == null ? void 0 : item.quality) {
27791
- case shared.ItemQualityLevel.HighQuality:
27792
- return '#00bfff';
27793
- case shared.ItemQualityLevel.Exceptional:
27794
- return '#ff8c00';
27795
- case shared.ItemQualityLevel.Mastercrafted:
27796
- return '#ff00ff';
27797
- case shared.ItemQualityLevel.Ancient:
27798
- return '#ffd700';
27799
- case shared.ItemQualityLevel.Mythic:
27800
- return '#ff0080';
27801
- default:
27802
- return 'transparent';
27803
- }
27804
- };
27805
-
27806
27528
  var rarityColor = function rarityColor(item) {
27807
27529
  switch (item == null ? void 0 : item.rarity) {
27808
27530
  case shared.ItemRarities.Uncommon:
@@ -27929,9 +27651,7 @@ var ItemSlotRenderer = function ItemSlotRenderer(_ref) {
27929
27651
  }
27930
27652
  return React__default.createElement(ErrorBoundary, {
27931
27653
  key: item._id
27932
- }, item.quality && item.quality !== shared.ItemQualityLevel.Normal && React__default.createElement("div", {
27933
- className: "quality-star"
27934
- }, "\u2605"), React__default.createElement(SpriteFromAtlas, {
27654
+ }, React__default.createElement(SpriteFromAtlas, {
27935
27655
  atlasIMG: atlasIMG,
27936
27656
  atlasJSON: atlasJSON,
27937
27657
  spriteKey: shared.getItemTextureKeyPath({
@@ -27971,7 +27691,268 @@ var ItemSlotRenderer = function ItemSlotRenderer(_ref) {
27971
27691
  return renderItem(itemToRender);
27972
27692
  }
27973
27693
  };
27974
- return onRenderSlot(item);
27694
+ return React__default.createElement(React__default.Fragment, null, onRenderSlot(item));
27695
+ };
27696
+
27697
+ var generateContextMenuListOptions = function generateContextMenuListOptions(actionsByTypeList) {
27698
+ var contextMenu = actionsByTypeList.map(function (action) {
27699
+ return {
27700
+ id: action,
27701
+ text: shared.ItemSocketEventsDisplayLabels[action]
27702
+ };
27703
+ });
27704
+ return contextMenu;
27705
+ };
27706
+ var generateContextMenu = function generateContextMenu(item, itemContainerType, isDepotSystem) {
27707
+ var contextActionMenu = [];
27708
+ if (itemContainerType === shared.ItemContainerType.Inventory) {
27709
+ switch (item.type) {
27710
+ case shared.ItemType.Weapon:
27711
+ case shared.ItemType.Armor:
27712
+ case shared.ItemType.Accessory:
27713
+ case shared.ItemType.Jewelry:
27714
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Equipment);
27715
+ break;
27716
+ case shared.ItemType.Container:
27717
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Container);
27718
+ break;
27719
+ case shared.ItemType.Consumable:
27720
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Consumable);
27721
+ break;
27722
+ case shared.ItemType.CraftingResource:
27723
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.CraftingResource);
27724
+ break;
27725
+ case shared.ItemType.Tool:
27726
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Tool);
27727
+ break;
27728
+ default:
27729
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForInventory.Other);
27730
+ break;
27731
+ }
27732
+ if (isDepotSystem) {
27733
+ contextActionMenu.push({
27734
+ id: shared.DepotSocketEvents.Deposit,
27735
+ text: 'Deposit'
27736
+ });
27737
+ }
27738
+ var contextActionMenuDontHaveUseWith = !contextActionMenu.find(function (action) {
27739
+ return action.text.toLowerCase().includes('use with');
27740
+ });
27741
+ if (item.hasUseWith && contextActionMenuDontHaveUseWith) {
27742
+ contextActionMenu.push({
27743
+ id: shared.ItemSocketEvents.UseWith,
27744
+ text: shared.ItemSocketEvents.UseWith
27745
+ });
27746
+ }
27747
+ }
27748
+ if (itemContainerType === shared.ItemContainerType.Equipment) {
27749
+ switch (item.type) {
27750
+ case shared.ItemType.Container:
27751
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForEquipmentSet.Container);
27752
+ break;
27753
+ default:
27754
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForEquipmentSet.Equipment);
27755
+ }
27756
+ }
27757
+ if (itemContainerType === shared.ItemContainerType.Loot) {
27758
+ switch (item.type) {
27759
+ case shared.ItemType.Weapon:
27760
+ case shared.ItemType.Armor:
27761
+ case shared.ItemType.Accessory:
27762
+ case shared.ItemType.Jewelry:
27763
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Equipment);
27764
+ break;
27765
+ case shared.ItemType.Consumable:
27766
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Consumable);
27767
+ break;
27768
+ case shared.ItemType.CraftingResource:
27769
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.CraftingResource);
27770
+ break;
27771
+ case shared.ItemType.Tool:
27772
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Tool);
27773
+ break;
27774
+ default:
27775
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForLoot.Other);
27776
+ break;
27777
+ }
27778
+ }
27779
+ if (itemContainerType === shared.ItemContainerType.MapContainer) {
27780
+ switch (item.type) {
27781
+ case shared.ItemType.Weapon:
27782
+ case shared.ItemType.Armor:
27783
+ case shared.ItemType.Accessory:
27784
+ case shared.ItemType.Jewelry:
27785
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Equipment);
27786
+ break;
27787
+ case shared.ItemType.Consumable:
27788
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Consumable);
27789
+ break;
27790
+ case shared.ItemType.CraftingResource:
27791
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.CraftingResource);
27792
+ break;
27793
+ case shared.ItemType.Tool:
27794
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Tool);
27795
+ break;
27796
+ default:
27797
+ contextActionMenu = generateContextMenuListOptions(shared.ActionsForMapContainer.Other);
27798
+ break;
27799
+ }
27800
+ var _contextActionMenuDontHaveUseWith = !contextActionMenu.find(function (action) {
27801
+ return action.text.toLowerCase().includes('use with');
27802
+ });
27803
+ if (item.hasUseWith && _contextActionMenuDontHaveUseWith) {
27804
+ contextActionMenu.push({
27805
+ id: 'use-with',
27806
+ text: 'Use with...'
27807
+ });
27808
+ }
27809
+ }
27810
+ if (itemContainerType === shared.ItemContainerType.Depot) {
27811
+ contextActionMenu = [{
27812
+ id: shared.ItemSocketEvents.GetItemInfo,
27813
+ text: shared.ItemSocketEventsDisplayLabels.GetItemInfo
27814
+ }, {
27815
+ id: shared.DepotSocketEvents.Withdraw,
27816
+ text: 'Withdraw'
27817
+ }];
27818
+ }
27819
+ if (item.type && item.type === shared.ItemType.Container) {
27820
+ var existInContextAction = contextActionMenu.some(function (item) {
27821
+ return item.text === shared.DepotSocketEvents.OpenContainer || item.id === shared.ItemSocketEvents.ContainerOpen || item.text === 'Open';
27822
+ });
27823
+ if (!existInContextAction) {
27824
+ contextActionMenu.push({
27825
+ id: shared.DepotSocketEvents.OpenContainer,
27826
+ text: 'Open'
27827
+ });
27828
+ }
27829
+ if (itemContainerType === shared.ItemContainerType.Inventory) {
27830
+ if (item.textureAtlas === 'items' && item.type === shared.ItemType.Container) {
27831
+ contextActionMenu.push({
27832
+ id: shared.ItemSocketEvents.ItemPropertyUpdate,
27833
+ text: 'Set Color...'
27834
+ });
27835
+ }
27836
+ }
27837
+ }
27838
+ if (item.attachedGems && item.attachedGems.length > 0) {
27839
+ contextActionMenu.push({
27840
+ id: shared.ItemSocketEvents.DetachGem,
27841
+ text: "Detach Gems"
27842
+ });
27843
+ }
27844
+ return contextActionMenu;
27845
+ };
27846
+
27847
+ var initialDetailsState = {
27848
+ item: null,
27849
+ isTooltipVisible: false,
27850
+ isTooltipMobileVisible: false,
27851
+ isContextMenuVisible: false,
27852
+ contextMenuPosition: {
27853
+ x: 0,
27854
+ y: 0
27855
+ },
27856
+ contextActions: [],
27857
+ clearContextActions: function clearContextActions() {},
27858
+ clearDetailsState: function clearDetailsState() {}
27859
+ };
27860
+ var ItemSlotDetailsContext = /*#__PURE__*/React.createContext({
27861
+ detailsState: initialDetailsState,
27862
+ updateDetailsState: function updateDetailsState() {},
27863
+ clearDetailsState: function clearDetailsState() {},
27864
+ setContextActions: function setContextActions() {},
27865
+ clearContextActions: function clearContextActions() {}
27866
+ });
27867
+ var useItemSlotDetails = function useItemSlotDetails() {
27868
+ return React.useContext(ItemSlotDetailsContext);
27869
+ };
27870
+ var ItemSlotDetailsProvider = function ItemSlotDetailsProvider(_ref) {
27871
+ var children = _ref.children;
27872
+ var _useState = React.useState(initialDetailsState),
27873
+ detailsState = _useState[0],
27874
+ setDetailsState = _useState[1];
27875
+ var updateDetailsState = React.useCallback(function (newState) {
27876
+ setDetailsState(function (prevState) {
27877
+ return _extends({}, prevState, newState);
27878
+ });
27879
+ }, []);
27880
+ var clearDetailsState = React.useCallback(function () {
27881
+ setDetailsState(initialDetailsState);
27882
+ }, [setDetailsState]);
27883
+ var setContextActions = React.useCallback(function (item, containerType, isDepotSystem, isContextMenuDisabled) {
27884
+ if (item && containerType && !isContextMenuDisabled) {
27885
+ var newContextActions = generateContextMenu(item, containerType, isDepotSystem);
27886
+ updateDetailsState({
27887
+ contextActions: newContextActions
27888
+ });
27889
+ } else {
27890
+ updateDetailsState({
27891
+ contextActions: []
27892
+ });
27893
+ }
27894
+ }, []);
27895
+ var clearContextActions = React.useCallback(function () {
27896
+ updateDetailsState({
27897
+ contextActions: []
27898
+ });
27899
+ }, [updateDetailsState]);
27900
+ var contextValue = React.useMemo(function () {
27901
+ return {
27902
+ detailsState: detailsState,
27903
+ updateDetailsState: updateDetailsState,
27904
+ clearDetailsState: clearDetailsState,
27905
+ setContextActions: setContextActions,
27906
+ clearContextActions: clearContextActions
27907
+ };
27908
+ }, [detailsState, updateDetailsState, clearDetailsState, setContextActions, clearContextActions]);
27909
+ return React__default.createElement(ItemSlotDetailsContext.Provider, {
27910
+ value: contextValue
27911
+ }, children);
27912
+ };
27913
+
27914
+ var initialDraggingState = {
27915
+ item: null,
27916
+ isDragging: false,
27917
+ position: {
27918
+ x: 0,
27919
+ y: 0
27920
+ },
27921
+ dropPosition: null,
27922
+ isFocused: false,
27923
+ draggingDistance: 0
27924
+ };
27925
+ var ItemSlotDraggingContext = /*#__PURE__*/React.createContext({
27926
+ draggingState: initialDraggingState,
27927
+ updateDraggingState: function updateDraggingState() {},
27928
+ clearDraggingState: function clearDraggingState() {}
27929
+ });
27930
+ var useItemSlotDragging = function useItemSlotDragging() {
27931
+ return React.useContext(ItemSlotDraggingContext);
27932
+ };
27933
+ var ItemSlotDraggingProvider = function ItemSlotDraggingProvider(_ref) {
27934
+ var children = _ref.children;
27935
+ var _useState = React.useState(initialDraggingState),
27936
+ draggingState = _useState[0],
27937
+ setDraggingState = _useState[1];
27938
+ var updateDraggingState = React.useCallback(function (newState) {
27939
+ setDraggingState(function (prevState) {
27940
+ return _extends({}, prevState, newState);
27941
+ });
27942
+ }, []);
27943
+ var clearDraggingState = React.useCallback(function () {
27944
+ setDraggingState(initialDraggingState);
27945
+ }, []);
27946
+ var contextValue = React.useMemo(function () {
27947
+ return {
27948
+ draggingState: draggingState,
27949
+ updateDraggingState: updateDraggingState,
27950
+ clearDraggingState: clearDraggingState
27951
+ };
27952
+ }, [draggingState, updateDraggingState, clearDraggingState]);
27953
+ return React__default.createElement(ItemSlotDraggingContext.Provider, {
27954
+ value: contextValue
27955
+ }, children);
27975
27956
  };
27976
27957
 
27977
27958
  var EquipmentSlotSpriteByType = {
@@ -28290,7 +28271,7 @@ var ItemSlot = /*#__PURE__*/mobxReactLite.observer(function (_ref) {
28290
28271
  var Container$a = /*#__PURE__*/styled__default.div.withConfig({
28291
28272
  displayName: "ItemSlot__Container",
28292
28273
  componentId: "sc-l2j5ef-0"
28293
- })(["margin:0.1rem;.react-draggable-dragging{opacity:", ";}position:relative;.sprite-from-atlas-img--item{position:relative;top:1.5rem;left:1.5rem;border-color:", ";box-shadow:", " inset,", ";}.quality-star{position:absolute;top:0.5rem;left:0.5rem;font-size:1.2rem;z-index:2;text-shadow:0 0 3px black;pointer-events:none;color:", ";}&::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-radius:12px;pointer-events:none;animation:", ";@keyframes bg-color-change{0%{background-color:rgba(255 255 255 / 0.5);}50%{background-color:transparent;}100%{background-color:rgba(255 255 255 / 0.5);}}}"], function (_ref2) {
28274
+ })(["margin:0.1rem;.react-draggable-dragging{opacity:", ";}position:relative;.sprite-from-atlas-img--item{position:relative;top:1.5rem;left:1.5rem;border-color:", ";box-shadow:", " inset,", ";}&::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-radius:12px;pointer-events:none;animation:", ";@keyframes bg-color-change{0%{background-color:rgba(255 255 255 / 0.5);}50%{background-color:transparent;}100%{background-color:rgba(255 255 255 / 0.5);}}}"], function (_ref2) {
28294
28275
  var isDraggingItem = _ref2.isDraggingItem;
28295
28276
  return isDraggingItem ? 0 : 1;
28296
28277
  }, function (_ref3) {
@@ -28303,10 +28284,7 @@ var Container$a = /*#__PURE__*/styled__default.div.withConfig({
28303
28284
  var item = _ref5.item;
28304
28285
  return "0 0 4px 3px " + rarityColor(item);
28305
28286
  }, function (_ref6) {
28306
- var item = _ref6.item;
28307
- return qualityColorHex(item);
28308
- }, function (_ref7) {
28309
- var isSelectingShortcut = _ref7.isSelectingShortcut;
28287
+ var isSelectingShortcut = _ref6.isSelectingShortcut;
28310
28288
  return isSelectingShortcut ? 'bg-color-change 1s infinite' : 'none';
28311
28289
  });
28312
28290
  var ItemContainer = /*#__PURE__*/styled__default.div.withConfig({
@@ -28423,16 +28401,10 @@ var ItemInfo = function ItemInfo(_ref) {
28423
28401
  var Container$b = /*#__PURE__*/styled__default.div.withConfig({
28424
28402
  displayName: "ItemInfo__Container",
28425
28403
  componentId: "sc-1xm4q8k-0"
28426
- })(["color:white;background-color:#222;border-radius:5px;padding:0.5rem;font-size:", ";border:3px solid ", ";box-shadow:", ";height:max-content;width:18rem;position:relative;", " @media (max-width:640px){width:80vw;}"], uiFonts.size.small, function (_ref2) {
28404
+ })(["color:white;background-color:#222;border-radius:5px;padding:0.5rem;font-size:", ";border:3px solid ", ";height:max-content;width:18rem;@media (max-width:640px){width:80vw;}"], uiFonts.size.small, function (_ref2) {
28427
28405
  var _rarityColor;
28428
28406
  var item = _ref2.item;
28429
28407
  return (_rarityColor = rarityColor(item)) != null ? _rarityColor : uiColors.lightGray;
28430
- }, function (_ref3) {
28431
- var item = _ref3.item;
28432
- return "0 0 5px 2px " + rarityColor(item);
28433
- }, function (_ref4) {
28434
- var item = _ref4.item;
28435
- return (item == null ? void 0 : item.quality) && item.quality !== shared.ItemQualityLevel.Normal && "\n &::before {\n content: '\u2605';\n position: absolute;\n top: 0.2rem;\n left: 0.5rem;\n font-size: 1.2rem;\n color: " + qualityColorHex(item) + ";\n text-shadow: 0 0 3px black;\n }\n ";
28436
28408
  });
28437
28409
  var Title$1 = /*#__PURE__*/styled__default.div.withConfig({
28438
28410
  displayName: "ItemInfo__Title",
@@ -28441,8 +28413,8 @@ var Title$1 = /*#__PURE__*/styled__default.div.withConfig({
28441
28413
  var Rarity = /*#__PURE__*/styled__default.div.withConfig({
28442
28414
  displayName: "ItemInfo__Rarity",
28443
28415
  componentId: "sc-1xm4q8k-2"
28444
- })(["font-size:", ";font-weight:normal;margin-top:0.2rem;color:", ";filter:brightness(1.5);"], uiFonts.size.small, function (_ref5) {
28445
- var item = _ref5.item;
28416
+ })(["font-size:", ";font-weight:normal;margin-top:0.2rem;color:", ";filter:brightness(1.5);"], uiFonts.size.small, function (_ref3) {
28417
+ var item = _ref3.item;
28446
28418
  return rarityColor(item);
28447
28419
  });
28448
28420
  var Type = /*#__PURE__*/styled__default.div.withConfig({
@@ -28456,8 +28428,8 @@ var LevelRequirement = /*#__PURE__*/styled__default.div.withConfig({
28456
28428
  var Statistic = /*#__PURE__*/styled__default.div.withConfig({
28457
28429
  displayName: "ItemInfo__Statistic",
28458
28430
  componentId: "sc-1xm4q8k-5"
28459
- })(["margin-bottom:0.4rem;width:100%;color:", ";.label{display:inline-block;margin-right:0.5rem;color:inherit;}.value{display:inline-block;color:inherit;}&.better,.better{color:", ";}&.worse,.worse{color:", ";}"], function (_ref6) {
28460
- var $isSpecial = _ref6.$isSpecial;
28431
+ })(["margin-bottom:0.4rem;width:100%;color:", ";.label{display:inline-block;margin-right:0.5rem;color:inherit;}.value{display:inline-block;color:inherit;}&.better,.better{color:", ";}&.worse,.worse{color:", ";}"], function (_ref4) {
28432
+ var $isSpecial = _ref4.$isSpecial;
28461
28433
  return $isSpecial ? uiColors.darkYellow : 'inherit';
28462
28434
  }, uiColors.lightGreen, uiColors.cardinal);
28463
28435
  var Description = /*#__PURE__*/styled__default.div.withConfig({
@@ -30860,6 +30832,59 @@ var ContentWrapper = /*#__PURE__*/styled__default.div.withConfig({
30860
30832
  componentId: "sc-ldufv0-3"
30861
30833
  })([""]);
30862
30834
 
30835
+ var TOOLTIP_WIDTH = 300;
30836
+ var TOOLTIP_OFFSET = 10;
30837
+ var MIN_VISIBLE_HEIGHT = 100;
30838
+ var useTooltipPosition = function useTooltipPosition() {
30839
+ var _useState = React.useState(null),
30840
+ tooltipState = _useState[0],
30841
+ setTooltipState = _useState[1];
30842
+ var calculateTooltipPosition = function calculateTooltipPosition(rect) {
30843
+ var viewportWidth = window.innerWidth;
30844
+ var viewportHeight = window.innerHeight;
30845
+ // Try to position to the right first
30846
+ var x = rect.right + TOOLTIP_OFFSET;
30847
+ // If it would overflow right, try positioning to the left
30848
+ if (x + TOOLTIP_WIDTH > viewportWidth - TOOLTIP_OFFSET) {
30849
+ x = rect.left - TOOLTIP_WIDTH - TOOLTIP_OFFSET;
30850
+ }
30851
+ // If left positioning would go off screen, position relative to viewport
30852
+ if (x < TOOLTIP_OFFSET) {
30853
+ x = TOOLTIP_OFFSET;
30854
+ }
30855
+ // Position vertically aligned with the top of the element
30856
+ var y = rect.top;
30857
+ // Ensure tooltip doesn't go above viewport
30858
+ if (y < TOOLTIP_OFFSET) {
30859
+ y = TOOLTIP_OFFSET;
30860
+ }
30861
+ // Ensure some part of tooltip is always visible if element is near bottom
30862
+ if (y > viewportHeight - MIN_VISIBLE_HEIGHT) {
30863
+ y = viewportHeight - MIN_VISIBLE_HEIGHT;
30864
+ }
30865
+ return {
30866
+ x: x,
30867
+ y: y
30868
+ };
30869
+ };
30870
+ var handleMouseEnter = function handleMouseEnter(item, event) {
30871
+ var rect = event.currentTarget.getBoundingClientRect();
30872
+ setTooltipState({
30873
+ item: item,
30874
+ position: calculateTooltipPosition(rect)
30875
+ });
30876
+ };
30877
+ var handleMouseLeave = function handleMouseLeave() {
30878
+ setTooltipState(null);
30879
+ };
30880
+ return {
30881
+ tooltipState: tooltipState,
30882
+ handleMouseEnter: handleMouseEnter,
30883
+ handleMouseLeave: handleMouseLeave,
30884
+ TOOLTIP_WIDTH: TOOLTIP_WIDTH
30885
+ };
30886
+ };
30887
+
30863
30888
  var usePagination = function usePagination(_ref) {
30864
30889
  var items = _ref.items,
30865
30890
  itemsPerPage = _ref.itemsPerPage,
@@ -30927,7 +30952,9 @@ var SearchBar = function SearchBar(_ref) {
30927
30952
  var value = _ref.value,
30928
30953
  _onChange = _ref.onChange,
30929
30954
  placeholder = _ref.placeholder,
30930
- className = _ref.className;
30955
+ className = _ref.className,
30956
+ rightElement = _ref.rightElement;
30957
+ var hasRightElement = Boolean(rightElement);
30931
30958
  return React__default.createElement(Container$m, {
30932
30959
  className: className
30933
30960
  }, React__default.createElement(Input$1, {
@@ -30937,8 +30964,9 @@ var SearchBar = function SearchBar(_ref) {
30937
30964
  return _onChange(e.target.value);
30938
30965
  },
30939
30966
  placeholder: placeholder,
30940
- className: "rpgui-input"
30941
- }), React__default.createElement(IconContainer, null, React__default.createElement(SearchIcon, null)));
30967
+ className: "rpgui-input",
30968
+ "$hasRightElement": hasRightElement
30969
+ }), React__default.createElement(IconContainer, null, React__default.createElement(SearchIcon, null), rightElement));
30942
30970
  };
30943
30971
  var Container$m = /*#__PURE__*/styled__default.div.withConfig({
30944
30972
  displayName: "SearchBar__Container",
@@ -30947,11 +30975,13 @@ var Container$m = /*#__PURE__*/styled__default.div.withConfig({
30947
30975
  var Input$1 = /*#__PURE__*/styled__default.input.withConfig({
30948
30976
  displayName: "SearchBar__Input",
30949
30977
  componentId: "sc-13n8z02-1"
30950
- })(["width:100%;padding-right:2.5rem !important;background:rgba(0,0,0,0.2) !important;border:2px solid #f59e0b !important;box-shadow:0 0 10px rgba(245,158,11,0.3);color:#ffffff !important;font-family:'Press Start 2P',cursive !important;font-size:0.875rem !important;&::placeholder{color:rgba(255,255,255,0.5) !important;}"]);
30978
+ })(["width:100%;padding-right:", " !important;background:rgba(0,0,0,0.2) !important;border:2px solid #f59e0b !important;box-shadow:0 0 10px rgba(245,158,11,0.3);color:#ffffff !important;font-family:'Press Start 2P',cursive !important;font-size:0.875rem !important;&::placeholder{color:rgba(255,255,255,0.5) !important;}"], function (props) {
30979
+ return props.$hasRightElement ? '6rem' : '2.5rem';
30980
+ });
30951
30981
  var IconContainer = /*#__PURE__*/styled__default.div.withConfig({
30952
30982
  displayName: "SearchBar__IconContainer",
30953
30983
  componentId: "sc-13n8z02-2"
30954
- })(["position:absolute;right:0.75rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:24px;height:24px;pointer-events:none;"]);
30984
+ })(["position:absolute;right:0.75rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:0.5rem;pointer-events:none;z-index:1;> *{pointer-events:auto;}"]);
30955
30985
  var SearchIcon = /*#__PURE__*/styled__default(fa.FaSearch).withConfig({
30956
30986
  displayName: "SearchBar__SearchIcon",
30957
30987
  componentId: "sc-13n8z02-3"
@@ -30967,7 +30997,8 @@ var SearchHeader = function SearchHeader(_ref) {
30967
30997
  }, React__default.createElement(HeaderContent, null, searchOptions && React__default.createElement(SearchContainer$2, null, React__default.createElement(StyledSearchBar, {
30968
30998
  value: searchOptions.value,
30969
30999
  onChange: searchOptions.onChange,
30970
- placeholder: searchOptions.placeholder || 'Search...'
31000
+ placeholder: searchOptions.placeholder || 'Search...',
31001
+ rightElement: searchOptions.rightElement
30971
31002
  })), filterOptions && React__default.createElement(FilterContainer, null, React__default.createElement(StyledDropdown, {
30972
31003
  options: filterOptions.options,
30973
31004
  onChange: filterOptions.onOptionChange,
@@ -31164,7 +31195,7 @@ var Icon$1 = /*#__PURE__*/styled__default.span.withConfig({
31164
31195
  var Content$1 = /*#__PURE__*/styled__default.div.withConfig({
31165
31196
  displayName: "Collapsible__Content",
31166
31197
  componentId: "sc-s4h8ey-4"
31167
- })(["padding:12px;"]);
31198
+ })(["padding:6px;"]);
31168
31199
 
31169
31200
  var BaseInformationDetails = function BaseInformationDetails(_ref) {
31170
31201
  var name = _ref.name,
@@ -31189,15 +31220,15 @@ var BaseInformationDetails = function BaseInformationDetails(_ref) {
31189
31220
  var Container$p = /*#__PURE__*/styled__default.div.withConfig({
31190
31221
  displayName: "BaseInformationDetails__Container",
31191
31222
  componentId: "sc-1vguuz8-0"
31192
- })(["position:absolute;inset:0;display:flex;justify-content:center;align-items:center;z-index:1000;"]);
31223
+ })(["position:fixed;inset:0;display:flex;justify-content:center;align-items:center;z-index:9999;"]);
31193
31224
  var Overlay = /*#__PURE__*/styled__default.div.withConfig({
31194
31225
  displayName: "BaseInformationDetails__Overlay",
31195
31226
  componentId: "sc-1vguuz8-1"
31196
- })(["position:absolute;inset:0;background-color:rgba(0,0,0,0.8);"]);
31227
+ })(["position:fixed;inset:0;background-color:rgba(0,0,0,0.8);"]);
31197
31228
  var Modal = /*#__PURE__*/styled__default.div.withConfig({
31198
31229
  displayName: "BaseInformationDetails__Modal",
31199
31230
  componentId: "sc-1vguuz8-2"
31200
- })(["position:relative;width:90%;height:90%;background-color:rgba(0,0,0,0.95);border-radius:4px;padding:16px;overflow-y:auto;z-index:1;font-family:'Press Start 2P',cursive;border:1px solid ", ";box-shadow:0 2px 4px rgba(0,0,0,0.2);&::-webkit-scrollbar{width:2px;}&::-webkit-scrollbar-track{background:transparent;}&::-webkit-scrollbar-thumb{background-color:", ";border-radius:4px;opacity:0.5;&:hover{opacity:1;}}scrollbar-width:thin;scrollbar-color:", " transparent;"], uiColors.darkGray, uiColors.yellow, uiColors.yellow);
31231
+ })(["position:fixed;background-color:rgba(0,0,0,0.95);border-radius:4px;padding:12px;overflow:hidden;z-index:1;font-family:'Press Start 2P',cursive;border:1px solid ", ";box-shadow:0 2px 4px rgba(0,0,0,0.2);width:90%;height:90%;top:5%;left:5%;max-width:800px;margin:0 auto;@media (max-width:768px){width:100%;height:100%;top:0;left:0;border-radius:0;padding:8px;}&::-webkit-scrollbar{width:2px;}&::-webkit-scrollbar-track{background:transparent;}&::-webkit-scrollbar-thumb{background-color:", ";border-radius:4px;opacity:0.5;&:hover{opacity:1;}}scrollbar-width:thin;scrollbar-color:", " transparent;"], uiColors.darkGray, uiColors.yellow, uiColors.yellow);
31201
31232
  var CloseButton$5 = /*#__PURE__*/styled__default.button.withConfig({
31202
31233
  displayName: "BaseInformationDetails__CloseButton",
31203
31234
  componentId: "sc-1vguuz8-3"
@@ -31209,7 +31240,7 @@ var Header$2 = /*#__PURE__*/styled__default.div.withConfig({
31209
31240
  var Content$2 = /*#__PURE__*/styled__default.div.withConfig({
31210
31241
  displayName: "BaseInformationDetails__Content",
31211
31242
  componentId: "sc-1vguuz8-5"
31212
- })(["display:flex;flex-direction:column;gap:16px;height:100%;overflow:auto;"]);
31243
+ })(["display:flex;flex-direction:column;gap:12px;height:calc(100% - 80px);overflow-y:auto;overflow-x:hidden;padding-right:6px;margin-right:-6px;@media (max-width:768px){height:calc(100% - 64px);gap:8px;padding-right:4px;margin-right:-4px;}"]);
31213
31244
  var Title$4 = /*#__PURE__*/styled__default.h2.withConfig({
31214
31245
  displayName: "BaseInformationDetails__Title",
31215
31246
  componentId: "sc-1vguuz8-6"
@@ -31435,7 +31466,180 @@ var InformationCenterItemTooltip = function InformationCenterItemTooltip(_ref) {
31435
31466
  }, item.rarity)))));
31436
31467
  };
31437
31468
 
31438
- var TOOLTIP_OFFSET = 200;
31469
+ var AdvancedFilters = function AdvancedFilters(_ref) {
31470
+ var isOpen = _ref.isOpen,
31471
+ onToggle = _ref.onToggle,
31472
+ sections = _ref.sections,
31473
+ onClearAll = _ref.onClearAll,
31474
+ hasActiveFilters = _ref.hasActiveFilters;
31475
+ var renderFilterSection = function renderFilterSection(section) {
31476
+ switch (section.type) {
31477
+ case 'range':
31478
+ var rangeValue = section.value;
31479
+ return React__default.createElement(FilterSection, {
31480
+ key: section.key
31481
+ }, React__default.createElement(Label$1, null, section.label), React__default.createElement(RangeInputs, null, React__default.createElement(Input, {
31482
+ type: "number",
31483
+ min: 0,
31484
+ placeholder: "Min",
31485
+ value: rangeValue[0] || '',
31486
+ onChange: function onChange(e) {
31487
+ return section.onChange([e.target.value ? Number(e.target.value) : undefined, rangeValue[1]]);
31488
+ }
31489
+ }), React__default.createElement(ai.AiFillCaretRight, null), React__default.createElement(Input, {
31490
+ type: "number",
31491
+ min: 0,
31492
+ placeholder: "Max",
31493
+ value: rangeValue[1] || '',
31494
+ onChange: function onChange(e) {
31495
+ return section.onChange([rangeValue[0], e.target.value ? Number(e.target.value) : undefined]);
31496
+ }
31497
+ })));
31498
+ case 'dropdown':
31499
+ return React__default.createElement(FilterSection, {
31500
+ key: section.key
31501
+ }, React__default.createElement(Label$1, null, section.label), React__default.createElement(Dropdown, {
31502
+ options: section.options || [],
31503
+ onChange: section.onChange,
31504
+ width: "100%"
31505
+ }));
31506
+ default:
31507
+ return null;
31508
+ }
31509
+ };
31510
+ return React__default.createElement(Container$q, null, React__default.createElement(FilterButton, {
31511
+ onClick: onToggle,
31512
+ "$hasActiveFilters": hasActiveFilters
31513
+ }, hasActiveFilters ? React__default.createElement(ai.AiFillFilter, {
31514
+ size: 20
31515
+ }) : React__default.createElement(ai.AiOutlineFilter, {
31516
+ size: 20
31517
+ }), React__default.createElement(FilterCount, {
31518
+ "$visible": hasActiveFilters
31519
+ }, sections.filter(function (section) {
31520
+ if (section.type === 'range') {
31521
+ var rangeValue = section.value;
31522
+ return rangeValue[0] !== undefined || rangeValue[1] !== undefined;
31523
+ }
31524
+ return section.value !== 'all';
31525
+ }).length)), isOpen && React__default.createElement(FiltersPanel, null, React__default.createElement(FilterHeader, null, React__default.createElement(FilterTitle, null, "Advanced Filters")), sections.map(renderFilterSection), hasActiveFilters && React__default.createElement(ClearFiltersButton, {
31526
+ onClick: onClearAll
31527
+ }, "Clear All Filters")));
31528
+ };
31529
+ var Container$q = /*#__PURE__*/styled__default.div.withConfig({
31530
+ displayName: "AdvancedFilters__Container",
31531
+ componentId: "sc-1xj6ldr-0"
31532
+ })(["position:relative;margin-left:0.5rem;"]);
31533
+ var FilterButton = /*#__PURE__*/styled__default.button.withConfig({
31534
+ displayName: "AdvancedFilters__FilterButton",
31535
+ componentId: "sc-1xj6ldr-1"
31536
+ })(["position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:none;color:", ";cursor:pointer;transition:all 0.2s;&:hover{color:", ";}"], function (_ref2) {
31537
+ var $hasActiveFilters = _ref2.$hasActiveFilters;
31538
+ return $hasActiveFilters ? '#ffd700' : 'rgba(255, 255, 255, 0.8)';
31539
+ }, function (_ref3) {
31540
+ var $hasActiveFilters = _ref3.$hasActiveFilters;
31541
+ return $hasActiveFilters ? '#ffd700' : '#ffffff';
31542
+ });
31543
+ var FilterCount = /*#__PURE__*/styled__default.div.withConfig({
31544
+ displayName: "AdvancedFilters__FilterCount",
31545
+ componentId: "sc-1xj6ldr-2"
31546
+ })(["position:absolute;top:-4px;right:-4px;background:#ffd700;color:#000;border-radius:50%;width:16px;height:16px;font-size:10px;font-weight:bold;display:flex;align-items:center;justify-content:center;opacity:", ";transform:scale(", ");transition:all 0.2s;"], function (_ref4) {
31547
+ var $visible = _ref4.$visible;
31548
+ return $visible ? 1 : 0;
31549
+ }, function (_ref5) {
31550
+ var $visible = _ref5.$visible;
31551
+ return $visible ? 1 : 0.5;
31552
+ });
31553
+ var FiltersPanel = /*#__PURE__*/styled__default.div.withConfig({
31554
+ displayName: "AdvancedFilters__FiltersPanel",
31555
+ componentId: "sc-1xj6ldr-3"
31556
+ })(["position:absolute;top:calc(100% + 0.75rem);right:-8px;background:#1a1a1a;border:1px solid #333;border-radius:6px;padding:1rem;z-index:1000;min-width:280px;display:flex;flex-direction:column;gap:1rem;box-shadow:0 4px 12px rgba(0,0,0,0.3);&:before{content:'';position:absolute;top:-6px;right:16px;width:12px;height:12px;background:#1a1a1a;border-left:1px solid #333;border-top:1px solid #333;transform:rotate(45deg);}"]);
31557
+ var FilterHeader = /*#__PURE__*/styled__default.div.withConfig({
31558
+ displayName: "AdvancedFilters__FilterHeader",
31559
+ componentId: "sc-1xj6ldr-4"
31560
+ })(["display:flex;align-items:center;justify-content:space-between;padding-bottom:0.75rem;margin-bottom:0.5rem;border-bottom:1px solid #333;"]);
31561
+ var FilterTitle = /*#__PURE__*/styled__default.div.withConfig({
31562
+ displayName: "AdvancedFilters__FilterTitle",
31563
+ componentId: "sc-1xj6ldr-5"
31564
+ })(["font-weight:600;color:#ffd700;font-size:0.875rem;"]);
31565
+ var FilterSection = /*#__PURE__*/styled__default.div.withConfig({
31566
+ displayName: "AdvancedFilters__FilterSection",
31567
+ componentId: "sc-1xj6ldr-6"
31568
+ })(["display:flex;flex-direction:column;gap:0.5rem;"]);
31569
+ var Label$1 = /*#__PURE__*/styled__default.div.withConfig({
31570
+ displayName: "AdvancedFilters__Label",
31571
+ componentId: "sc-1xj6ldr-7"
31572
+ })(["color:#999;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.05em;"]);
31573
+ var RangeInputs = /*#__PURE__*/styled__default.div.withConfig({
31574
+ displayName: "AdvancedFilters__RangeInputs",
31575
+ componentId: "sc-1xj6ldr-8"
31576
+ })(["display:flex;align-items:center;gap:0.5rem;input{width:80px;background:#262626 !important;border:1px solid #333 !important;color:#fff !important;}svg{color:#666;font-size:0.875rem;}"]);
31577
+ var ClearFiltersButton = /*#__PURE__*/styled__default.button.withConfig({
31578
+ displayName: "AdvancedFilters__ClearFiltersButton",
31579
+ componentId: "sc-1xj6ldr-9"
31580
+ })(["width:100%;background:transparent;color:#666;border:none;padding:0.75rem 0;margin-top:0.5rem;cursor:pointer;font-size:0.75rem;transition:all 0.2s;border-top:1px solid #333;text-transform:uppercase;letter-spacing:0.05em;&:hover{color:#ffd700;}"]);
31581
+
31582
+ var ItemsAdvancedFilters = function ItemsAdvancedFilters(_ref) {
31583
+ var isOpen = _ref.isOpen,
31584
+ onToggle = _ref.onToggle,
31585
+ onTierChange = _ref.onTierChange,
31586
+ onTypeChange = _ref.onTypeChange,
31587
+ selectedTier = _ref.selectedTier,
31588
+ selectedType = _ref.selectedType;
31589
+ var tierOptions = [{
31590
+ id: 0,
31591
+ value: 'all',
31592
+ option: 'All Tiers'
31593
+ }].concat(Array.from({
31594
+ length: 5
31595
+ }, function (_, i) {
31596
+ return {
31597
+ id: i + 1,
31598
+ value: String(i + 1),
31599
+ option: "Tier " + (i + 1)
31600
+ };
31601
+ }));
31602
+ var typeOptions = [{
31603
+ id: 0,
31604
+ value: 'all',
31605
+ option: 'All Types'
31606
+ }].concat(Object.entries(shared.ItemType).map(function (_ref2, index) {
31607
+ var value = _ref2[1];
31608
+ return {
31609
+ id: index + 1,
31610
+ value: value,
31611
+ option: formatItemType(value)
31612
+ };
31613
+ }));
31614
+ var hasActiveFilters = selectedTier !== 'all' || selectedType !== 'all';
31615
+ var handleClearFilters = function handleClearFilters() {
31616
+ onTierChange('all');
31617
+ onTypeChange('all');
31618
+ };
31619
+ var sections = [{
31620
+ type: 'dropdown',
31621
+ label: 'Tier',
31622
+ key: 'tier',
31623
+ options: tierOptions,
31624
+ value: selectedTier,
31625
+ onChange: onTierChange
31626
+ }, {
31627
+ type: 'dropdown',
31628
+ label: 'Item Type',
31629
+ key: 'type',
31630
+ options: typeOptions,
31631
+ value: selectedType,
31632
+ onChange: onTypeChange
31633
+ }];
31634
+ return React__default.createElement(AdvancedFilters, {
31635
+ isOpen: isOpen,
31636
+ onToggle: onToggle,
31637
+ sections: sections,
31638
+ onClearAll: handleClearFilters,
31639
+ hasActiveFilters: hasActiveFilters
31640
+ });
31641
+ };
31642
+
31439
31643
  var formatItemType = function formatItemType(type) {
31440
31644
  var words = type.split(/(?=[A-Z])/);
31441
31645
  if (words.length === 1) {
@@ -31455,38 +31659,35 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31455
31659
  itemsAtlasIMG = _ref.itemsAtlasIMG,
31456
31660
  initialSearchQuery = _ref.initialSearchQuery,
31457
31661
  tabId = _ref.tabId;
31662
+ var isMobile = shared.isMobileOrTablet();
31458
31663
  var _useState = React.useState(initialSearchQuery),
31459
31664
  searchQuery = _useState[0],
31460
31665
  setSearchQuery = _useState[1];
31461
31666
  var _useState2 = React.useState('all'),
31462
31667
  selectedItemCategory = _useState2[0],
31463
31668
  setSelectedItemCategory = _useState2[1];
31464
- var _useState3 = React.useState(null),
31465
- hoveredItem = _useState3[0],
31466
- setHoveredItem = _useState3[1];
31467
- var _useState4 = React.useState({
31468
- x: 0,
31469
- y: 0
31470
- }),
31471
- tooltipPosition = _useState4[0],
31472
- setTooltipPosition = _useState4[1];
31669
+ var _useState3 = React.useState('all'),
31670
+ selectedTier = _useState3[0],
31671
+ setSelectedTier = _useState3[1];
31672
+ var _useState4 = React.useState(false),
31673
+ isAdvancedFiltersOpen = _useState4[0],
31674
+ setIsAdvancedFiltersOpen = _useState4[1];
31473
31675
  var _useState5 = React.useState(null),
31474
31676
  selectedItem = _useState5[0],
31475
31677
  setSelectedItem = _useState5[1];
31476
- var itemCategoryOptions = [{
31477
- id: 0,
31478
- value: 'all',
31479
- option: 'All Items'
31480
- }].concat(Object.values(shared.ItemType).map(function (type, index) {
31481
- return {
31482
- id: index + 1,
31483
- value: type,
31484
- option: formatItemType(type)
31485
- };
31486
- }));
31487
- var filteredItems = items.filter(function (item) {
31488
- return (selectedItemCategory === 'all' || item.type === selectedItemCategory) && item.name.toLowerCase().includes(searchQuery.toLowerCase());
31489
- });
31678
+ var _useTooltipPosition = useTooltipPosition(),
31679
+ tooltipState = _useTooltipPosition.tooltipState,
31680
+ handleMouseEnter = _useTooltipPosition.handleMouseEnter,
31681
+ handleMouseLeave = _useTooltipPosition.handleMouseLeave,
31682
+ TOOLTIP_WIDTH = _useTooltipPosition.TOOLTIP_WIDTH;
31683
+ var filteredItems = React.useMemo(function () {
31684
+ return items.filter(function (item) {
31685
+ var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
31686
+ var matchesCategory = selectedItemCategory === 'all' || item.type === selectedItemCategory;
31687
+ var matchesTier = selectedTier === 'all' || String(item.tier) === selectedTier;
31688
+ return matchesSearch && matchesCategory && matchesTier;
31689
+ });
31690
+ }, [items, searchQuery, selectedItemCategory, selectedTier]);
31490
31691
  var getDroppedByNPCs = function getDroppedByNPCs(itemId, npcs) {
31491
31692
  return npcs.filter(function (npc) {
31492
31693
  var _npc$loots;
@@ -31495,35 +31696,12 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31495
31696
  });
31496
31697
  }) || [];
31497
31698
  };
31498
- var handleMouseEnter = function handleMouseEnter(e, item) {
31499
- setTooltipPosition({
31500
- x: e.clientX + TOOLTIP_OFFSET,
31501
- y: e.clientY
31502
- });
31503
- setHoveredItem(item);
31504
- };
31505
- var handleMouseMove = function handleMouseMove(e) {
31506
- if (hoveredItem) {
31507
- setTooltipPosition({
31508
- x: e.clientX + TOOLTIP_OFFSET,
31509
- y: e.clientY
31510
- });
31511
- }
31512
- };
31513
- var handleMouseLeave = function handleMouseLeave() {
31514
- setHoveredItem(null);
31515
- };
31516
31699
  var handleTouchStart = function handleTouchStart(e, item) {
31517
- var touch = e.touches[0];
31518
- setTooltipPosition({
31519
- x: touch.clientX + TOOLTIP_OFFSET,
31520
- y: touch.clientY
31521
- });
31522
- setHoveredItem(item);
31700
+ e.preventDefault();
31701
+ setSelectedItem(item);
31523
31702
  };
31524
31703
  var handleItemClick = function handleItemClick(item) {
31525
31704
  setSelectedItem(item);
31526
- setHoveredItem(null);
31527
31705
  };
31528
31706
  var handleSearchChange = function handleSearchChange(newQuery) {
31529
31707
  setSearchQuery(newQuery);
@@ -31539,9 +31717,8 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31539
31717
  atlasJSON: itemsAtlasJSON,
31540
31718
  atlasIMG: itemsAtlasIMG,
31541
31719
  onMouseEnter: function onMouseEnter(e) {
31542
- return handleMouseEnter(e, item);
31720
+ return handleMouseEnter(item, e);
31543
31721
  },
31544
- onMouseMove: handleMouseMove,
31545
31722
  onMouseLeave: handleMouseLeave,
31546
31723
  onTouchStart: function onTouchStart(e) {
31547
31724
  return handleTouchStart(e, item);
@@ -31551,32 +31728,40 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31551
31728
  }
31552
31729
  });
31553
31730
  };
31731
+ var SearchBarRightElement = React__default.createElement(SearchBarActions, null, React__default.createElement(ItemsAdvancedFilters, {
31732
+ isOpen: isAdvancedFiltersOpen,
31733
+ onToggle: function onToggle() {
31734
+ return setIsAdvancedFiltersOpen(!isAdvancedFiltersOpen);
31735
+ },
31736
+ onTierChange: setSelectedTier,
31737
+ onTypeChange: setSelectedItemCategory,
31738
+ selectedTier: selectedTier,
31739
+ selectedType: selectedItemCategory
31740
+ }));
31554
31741
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
31555
31742
  items: filteredItems,
31556
31743
  renderItem: renderItem,
31557
31744
  emptyMessage: "No items found",
31558
- filterOptions: {
31559
- options: itemCategoryOptions,
31560
- selectedOption: selectedItemCategory,
31561
- onOptionChange: setSelectedItemCategory
31562
- },
31563
31745
  searchOptions: {
31564
31746
  value: searchQuery,
31565
31747
  onChange: handleSearchChange,
31566
- placeholder: 'Search items...'
31748
+ placeholder: 'Search items...',
31749
+ rightElement: SearchBarRightElement
31567
31750
  },
31568
- dependencies: [selectedItemCategory],
31751
+ dependencies: [selectedItemCategory, selectedTier],
31569
31752
  tabId: tabId,
31570
31753
  layout: "grid",
31571
31754
  itemHeight: "180px"
31572
- }), hoveredItem && React__default.createElement(TooltipWrapper, {
31755
+ }), !isMobile && tooltipState && tooltipState.item && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper, {
31756
+ width: TOOLTIP_WIDTH,
31573
31757
  style: {
31574
- top: tooltipPosition.y,
31575
- left: tooltipPosition.x
31758
+ position: 'fixed',
31759
+ left: tooltipState.position.x + "px",
31760
+ top: tooltipState.position.y + "px"
31576
31761
  }
31577
31762
  }, React__default.createElement(InformationCenterItemTooltip, {
31578
- item: hoveredItem
31579
- })), selectedItem && React__default.createElement(InformationCenterItemDetails, {
31763
+ item: tooltipState.item
31764
+ }))), selectedItem && React__default.createElement(Portal, null, React__default.createElement(InformationCenterItemDetails, {
31580
31765
  item: selectedItem,
31581
31766
  itemsAtlasJSON: itemsAtlasJSON,
31582
31767
  itemsAtlasIMG: itemsAtlasIMG,
@@ -31584,12 +31769,87 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31584
31769
  onBack: function onBack() {
31585
31770
  return setSelectedItem(null);
31586
31771
  }
31587
- }));
31772
+ })));
31588
31773
  };
31589
31774
  var TooltipWrapper = /*#__PURE__*/styled__default.div.withConfig({
31590
31775
  displayName: "InformationCenterItemsSection__TooltipWrapper",
31591
31776
  componentId: "sc-1wmpapt-0"
31592
- })(["position:fixed;z-index:1000;pointer-events:none;transition:transform 0.1s ease;"]);
31777
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
31778
+ return props.width + "px";
31779
+ });
31780
+ var SearchBarActions = /*#__PURE__*/styled__default.div.withConfig({
31781
+ displayName: "InformationCenterItemsSection__SearchBarActions",
31782
+ componentId: "sc-1wmpapt-1"
31783
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
31784
+
31785
+ var BestiaryAdvancedFilters = function BestiaryAdvancedFilters(_ref) {
31786
+ var isOpen = _ref.isOpen,
31787
+ onToggle = _ref.onToggle,
31788
+ onLevelRangeChange = _ref.onLevelRangeChange,
31789
+ onSubtypeChange = _ref.onSubtypeChange,
31790
+ onAttackTypeChange = _ref.onAttackTypeChange,
31791
+ levelRange = _ref.levelRange,
31792
+ selectedSubtype = _ref.selectedSubtype,
31793
+ selectedAttackType = _ref.selectedAttackType;
31794
+ var subtypeOptions = [{
31795
+ id: 0,
31796
+ value: 'all',
31797
+ option: 'All Types'
31798
+ }].concat(Object.entries(shared.NPCSubtype).map(function (_ref2, index) {
31799
+ var value = _ref2[1];
31800
+ return {
31801
+ id: index + 1,
31802
+ value: value,
31803
+ option: formatItemType(value)
31804
+ };
31805
+ }));
31806
+ var attackTypeOptions = [{
31807
+ id: 0,
31808
+ value: 'all',
31809
+ option: 'All Attack Types'
31810
+ }].concat(Object.entries(shared.EntityAttackType).map(function (_ref3, index) {
31811
+ var value = _ref3[1];
31812
+ return {
31813
+ id: index + 1,
31814
+ value: value,
31815
+ option: formatItemType(value)
31816
+ };
31817
+ }));
31818
+ var hasActiveFilters = levelRange[0] !== undefined || levelRange[1] !== undefined || selectedSubtype !== 'all' || selectedAttackType !== 'all';
31819
+ var handleClearFilters = function handleClearFilters() {
31820
+ onLevelRangeChange([undefined, undefined]);
31821
+ onSubtypeChange('all');
31822
+ onAttackTypeChange('all');
31823
+ };
31824
+ var sections = [{
31825
+ type: 'range',
31826
+ label: 'Level Range',
31827
+ key: 'level',
31828
+ value: levelRange,
31829
+ onChange: onLevelRangeChange
31830
+ }, {
31831
+ type: 'dropdown',
31832
+ label: 'Monster Type',
31833
+ key: 'subtype',
31834
+ options: subtypeOptions,
31835
+ value: selectedSubtype,
31836
+ onChange: onSubtypeChange
31837
+ }, {
31838
+ type: 'dropdown',
31839
+ label: 'Attack Type',
31840
+ key: 'attackType',
31841
+ options: attackTypeOptions,
31842
+ value: selectedAttackType,
31843
+ onChange: onAttackTypeChange
31844
+ }];
31845
+ return React__default.createElement(AdvancedFilters, {
31846
+ isOpen: isOpen,
31847
+ onToggle: onToggle,
31848
+ sections: sections,
31849
+ onClearAll: handleClearFilters,
31850
+ hasActiveFilters: hasActiveFilters
31851
+ });
31852
+ };
31593
31853
 
31594
31854
  var ITEMS_PER_PAGE$1 = 5;
31595
31855
  var formatItemName = function formatItemName(itemPath) {
@@ -31653,7 +31913,7 @@ var InformationCenterNPCDetails = function InformationCenterNPCDetails(_ref) {
31653
31913
  atlasJSON: entitiesAtlasJSON,
31654
31914
  atlasIMG: entitiesAtlasIMG,
31655
31915
  onBack: onBack
31656
- }, React__default.createElement(InfoSection$1, null, React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Type:"), React__default.createElement(Value$1, null, formatText(npc.subType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Alignment:"), React__default.createElement(Value$1, null, formatText(npc.alignment))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Attack Type:"), React__default.createElement(Value$1, null, formatText(npc.attackType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Range:"), React__default.createElement(Value$1, null, formatText(npc.maxRangeAttack))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$1, null, "Speed:"), React__default.createElement(Value$1, null, formatText(npc.speed)))), React__default.createElement(StyledCollapsible$1, {
31916
+ }, React__default.createElement(InfoSection$1, null, React__default.createElement(InfoItem$1, null, React__default.createElement(Label$2, null, "Type:"), React__default.createElement(Value$1, null, formatText(npc.subType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$2, null, "Alignment:"), React__default.createElement(Value$1, null, formatText(npc.alignment))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$2, null, "Attack Type:"), React__default.createElement(Value$1, null, formatText(npc.attackType))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$2, null, "Range:"), React__default.createElement(Value$1, null, formatText(npc.maxRangeAttack))), React__default.createElement(InfoItem$1, null, React__default.createElement(Label$2, null, "Speed:"), React__default.createElement(Value$1, null, formatText(npc.speed)))), React__default.createElement(StyledCollapsible$1, {
31657
31917
  title: "Stats",
31658
31918
  defaultOpen: !isMobile
31659
31919
  }, React__default.createElement(StatGrid$1, null, React__default.createElement(StatItem$2, null, "HP: ", npc.baseHealth), React__default.createElement(StatItem$2, null, "Level: ", npc.skills.level), ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) && React__default.createElement(StatItem$2, null, "Strength: ", npc.skills.strength.level), ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) && React__default.createElement(StatItem$2, null, "Dexterity: ", npc.skills.dexterity.level), ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) && React__default.createElement(StatItem$2, null, "Resistance: ", npc.skills.resistance.level))), npc.loots && npc.loots.length > 0 && React__default.createElement(StyledCollapsible$1, {
@@ -31709,7 +31969,7 @@ var InfoItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31709
31969
  displayName: "InformationCenterNPCDetails__InfoItem",
31710
31970
  componentId: "sc-fdu3xl-1"
31711
31971
  })(["display:flex;align-items:center;gap:8px;"]);
31712
- var Label$1 = /*#__PURE__*/styled__default.span.withConfig({
31972
+ var Label$2 = /*#__PURE__*/styled__default.span.withConfig({
31713
31973
  displayName: "InformationCenterNPCDetails__Label",
31714
31974
  componentId: "sc-fdu3xl-2"
31715
31975
  })(["color:", ";font-size:0.5rem;opacity:0.8;"], uiColors.yellow);
@@ -31720,7 +31980,7 @@ var Value$1 = /*#__PURE__*/styled__default.span.withConfig({
31720
31980
  var StyledCollapsible$1 = /*#__PURE__*/styled__default(Collapsible).withConfig({
31721
31981
  displayName: "InformationCenterNPCDetails__StyledCollapsible",
31722
31982
  componentId: "sc-fdu3xl-4"
31723
- })(["background:rgba(255,255,255,0.05);border-radius:4px;overflow:auto;scrollbar-width:thin;scrollbar-color:", " transparent;"], uiColors.darkGray);
31983
+ })(["background:rgba(255,255,255,0.05);border-radius:4px;overflow:visible;scrollbar-width:thin;scrollbar-color:", " transparent;width:100%;box-sizing:border-box;"], uiColors.darkGray);
31724
31984
  var StatGrid$1 = /*#__PURE__*/styled__default.div.withConfig({
31725
31985
  displayName: "InformationCenterNPCDetails__StatGrid",
31726
31986
  componentId: "sc-fdu3xl-5"
@@ -31772,19 +32032,19 @@ var Separator = /*#__PURE__*/styled__default.span.withConfig({
31772
32032
  var LootSearchContainer = /*#__PURE__*/styled__default.div.withConfig({
31773
32033
  displayName: "InformationCenterNPCDetails__LootSearchContainer",
31774
32034
  componentId: "sc-fdu3xl-17"
31775
- })(["padding:12px 12px 0;"]);
32035
+ })(["padding:8px;background:rgba(0,0,0,0.2);border-radius:4px;margin:8px 8px 4px;box-sizing:border-box;"]);
31776
32036
  var StyledSearchBar$1 = /*#__PURE__*/styled__default(SearchBar).withConfig({
31777
32037
  displayName: "InformationCenterNPCDetails__StyledSearchBar",
31778
32038
  componentId: "sc-fdu3xl-18"
31779
- })(["width:100%;"]);
32039
+ })(["width:100%;box-sizing:border-box;input{background:rgba(0,0,0,0.2) !important;border:1px solid rgba(255,255,255,0.1) !important;box-sizing:border-box;&:focus{border-color:", " !important;}}"], uiColors.yellow);
31780
32040
  var LootGrid = /*#__PURE__*/styled__default.div.withConfig({
31781
32041
  displayName: "InformationCenterNPCDetails__LootGrid",
31782
32042
  componentId: "sc-fdu3xl-19"
31783
- })(["display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:12px;"]);
32043
+ })(["display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:4px;padding:4px 8px;width:100%;max-width:100%;box-sizing:border-box;@media (max-width:768px){grid-template-columns:1fr;padding:4px;}"]);
31784
32044
  var LootItem = /*#__PURE__*/styled__default.div.withConfig({
31785
32045
  displayName: "InformationCenterNPCDetails__LootItem",
31786
32046
  componentId: "sc-fdu3xl-20"
31787
- })(["display:flex;align-items:center;gap:8px;background:rgba(255,255,255,0.05);padding:8px;border-radius:4px;"]);
32047
+ })(["display:flex;align-items:center;gap:4px;background:rgba(255,255,255,0.05);padding:4px;border-radius:4px;min-width:0;"]);
31788
32048
  var LootDetails = /*#__PURE__*/styled__default.div.withConfig({
31789
32049
  displayName: "InformationCenterNPCDetails__LootDetails",
31790
32050
  componentId: "sc-fdu3xl-21"
@@ -31913,67 +32173,41 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31913
32173
  entitiesAtlasIMG = _ref.entitiesAtlasIMG,
31914
32174
  initialSearchQuery = _ref.initialSearchQuery,
31915
32175
  tabId = _ref.tabId;
32176
+ var isMobile = shared.isMobileOrTablet();
31916
32177
  var _useState = React.useState(initialSearchQuery),
31917
32178
  searchQuery = _useState[0],
31918
32179
  setSearchQuery = _useState[1];
31919
32180
  var _useState2 = React.useState(null),
31920
- tooltipData = _useState2[0],
31921
- setTooltipData = _useState2[1];
31922
- var _useState3 = React.useState(null),
31923
- selectedMonster = _useState3[0],
31924
- setSelectedMonster = _useState3[1];
31925
- var _useState4 = React.useState('ontouchstart' in window),
31926
- isTouchDevice = _useState4[0];
31927
- var handleMouseEnter = function handleMouseEnter(monster, event) {
31928
- if (!isTouchDevice && !selectedMonster) {
31929
- setTooltipData({
31930
- npc: monster,
31931
- position: {
31932
- x: event.clientX,
31933
- y: event.clientY
31934
- }
31935
- });
31936
- }
31937
- };
31938
- var handleMouseLeave = function handleMouseLeave() {
31939
- if (!isTouchDevice) {
31940
- setTooltipData(null);
31941
- }
31942
- };
31943
- var handleMouseMove = function handleMouseMove(event) {
31944
- if (!isTouchDevice && tooltipData) {
31945
- setTooltipData(_extends({}, tooltipData, {
31946
- position: {
31947
- x: event.clientX,
31948
- y: event.clientY
31949
- }
31950
- }));
31951
- }
31952
- };
32181
+ selectedMonster = _useState2[0],
32182
+ setSelectedMonster = _useState2[1];
32183
+ var _useState3 = React.useState('all'),
32184
+ selectedBestiaryCategory = _useState3[0],
32185
+ setSelectedBestiaryCategory = _useState3[1];
32186
+ var _useTooltipPosition = useTooltipPosition(),
32187
+ tooltipState = _useTooltipPosition.tooltipState,
32188
+ handleMouseEnter = _useTooltipPosition.handleMouseEnter,
32189
+ handleMouseLeave = _useTooltipPosition.handleMouseLeave,
32190
+ TOOLTIP_WIDTH = _useTooltipPosition.TOOLTIP_WIDTH;
32191
+ // Advanced filters state
32192
+ var _useState4 = React.useState(false),
32193
+ isAdvancedFiltersOpen = _useState4[0],
32194
+ setIsAdvancedFiltersOpen = _useState4[1];
32195
+ var _useState5 = React.useState([undefined, undefined]),
32196
+ levelRange = _useState5[0],
32197
+ setLevelRange = _useState5[1];
32198
+ var _useState6 = React.useState('all'),
32199
+ selectedSubtype = _useState6[0],
32200
+ setSelectedSubtype = _useState6[1];
32201
+ var _useState7 = React.useState('all'),
32202
+ selectedAttackType = _useState7[0],
32203
+ setSelectedAttackType = _useState7[1];
31953
32204
  var handleTouchStart = function handleTouchStart(monster, event) {
31954
- if (isTouchDevice) {
31955
- event.preventDefault();
31956
- var touch = event.touches[0];
31957
- if ((tooltipData == null ? void 0 : tooltipData.npc.id) === monster.id) {
31958
- setTooltipData(null);
31959
- } else {
31960
- setTooltipData({
31961
- npc: monster,
31962
- position: {
31963
- x: touch.clientX,
31964
- y: touch.clientY
31965
- }
31966
- });
31967
- }
31968
- }
32205
+ event.preventDefault();
32206
+ setSelectedMonster(monster);
31969
32207
  };
31970
32208
  var handleMonsterClick = function handleMonsterClick(monster) {
31971
32209
  setSelectedMonster(monster);
31972
- setTooltipData(null);
31973
32210
  };
31974
- var _useState5 = React.useState('all'),
31975
- selectedBestiaryCategory = _useState5[0],
31976
- setSelectedBestiaryCategory = _useState5[1];
31977
32211
  var bestiaryCategoryOptions = [{
31978
32212
  id: 0,
31979
32213
  value: 'all',
@@ -31982,10 +32216,13 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31982
32216
  id: 1,
31983
32217
  value: 'bosses',
31984
32218
  option: 'Bosses'
31985
- }].concat(Object.entries(shared.NPCAlignment).map(function (_ref2, index) {
32219
+ }].concat(Object.entries(shared.NPCAlignment).filter(function (_ref2) {
31986
32220
  var value = _ref2[1];
32221
+ return value !== shared.NPCAlignment.Friendly;
32222
+ }).map(function (_ref3, index) {
32223
+ var value = _ref3[1];
31987
32224
  return {
31988
- id: index + 1,
32225
+ id: index + 2,
31989
32226
  value: value,
31990
32227
  option: formatItemType(value)
31991
32228
  };
@@ -32004,7 +32241,6 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32004
32241
  return handleMouseEnter(item, e);
32005
32242
  },
32006
32243
  onMouseLeave: handleMouseLeave,
32007
- onMouseMove: handleMouseMove,
32008
32244
  onTouchStart: function onTouchStart(e) {
32009
32245
  return handleTouchStart(item, e);
32010
32246
  }
@@ -32012,7 +32248,9 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32012
32248
  };
32013
32249
  var filteredItems = React.useMemo(function () {
32014
32250
  return bestiaryItems.filter(function (item) {
32251
+ // Basic search filter
32015
32252
  var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
32253
+ // Category filter
32016
32254
  var matchesCategory = true;
32017
32255
  if (selectedBestiaryCategory === 'bosses') {
32018
32256
  matchesCategory = item.isBoss === true;
@@ -32021,15 +32259,33 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32021
32259
  } else if (selectedBestiaryCategory !== 'all') {
32022
32260
  matchesCategory = item.alignment === selectedBestiaryCategory;
32023
32261
  }
32024
- return matchesSearch && matchesCategory;
32262
+ // Advanced filters
32263
+ var matchesLevel = (!levelRange[0] || item.skills.level >= levelRange[0]) && (!levelRange[1] || item.skills.level <= levelRange[1]);
32264
+ var matchesSubtype = selectedSubtype === 'all' || item.subType === selectedSubtype;
32265
+ var matchesAttackType = selectedAttackType === 'all' || item.attackType === selectedAttackType;
32266
+ // Filter out friendly NPCs
32267
+ var isNotFriendly = item.alignment !== shared.NPCAlignment.Friendly;
32268
+ return matchesSearch && matchesCategory && matchesLevel && matchesSubtype && matchesAttackType && isNotFriendly;
32025
32269
  });
32026
- }, [bestiaryItems, searchQuery, selectedBestiaryCategory]);
32270
+ }, [bestiaryItems, searchQuery, selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType]);
32027
32271
  var handleSearchChange = function handleSearchChange(newQuery) {
32028
32272
  setSearchQuery(newQuery);
32029
32273
  if (newQuery && selectedBestiaryCategory !== 'all') {
32030
32274
  setSelectedBestiaryCategory('all');
32031
32275
  }
32032
32276
  };
32277
+ var SearchBarRightElement = React__default.createElement(SearchBarActions$1, null, React__default.createElement(BestiaryAdvancedFilters, {
32278
+ isOpen: isAdvancedFiltersOpen,
32279
+ onToggle: function onToggle() {
32280
+ return setIsAdvancedFiltersOpen(!isAdvancedFiltersOpen);
32281
+ },
32282
+ onLevelRangeChange: setLevelRange,
32283
+ onSubtypeChange: setSelectedSubtype,
32284
+ onAttackTypeChange: setSelectedAttackType,
32285
+ levelRange: levelRange,
32286
+ selectedSubtype: selectedSubtype,
32287
+ selectedAttackType: selectedAttackType
32288
+ }));
32033
32289
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
32034
32290
  items: filteredItems,
32035
32291
  renderItem: renderItem,
@@ -32044,21 +32300,23 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32044
32300
  searchOptions: {
32045
32301
  value: searchQuery,
32046
32302
  onChange: handleSearchChange,
32047
- placeholder: 'Search monsters...'
32303
+ placeholder: 'Search monsters...',
32304
+ rightElement: SearchBarRightElement
32048
32305
  },
32049
- dependencies: [selectedBestiaryCategory],
32306
+ dependencies: [selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType],
32050
32307
  itemHeight: "180px"
32051
- }), tooltipData && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper$1, {
32308
+ }), !isMobile && tooltipState && tooltipState.item && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper$1, {
32309
+ width: TOOLTIP_WIDTH,
32052
32310
  style: {
32053
32311
  position: 'fixed',
32054
- left: tooltipData.position.x + 10,
32055
- top: tooltipData.position.y + 10
32312
+ left: tooltipState.position.x + "px",
32313
+ top: tooltipState.position.y + "px"
32056
32314
  }
32057
32315
  }, React__default.createElement(InformationCenterNPCTooltip, {
32058
- npc: tooltipData.npc,
32316
+ npc: tooltipState.item,
32059
32317
  itemsAtlasJSON: itemsAtlasJSON,
32060
32318
  itemsAtlasIMG: itemsAtlasIMG
32061
- }))), selectedMonster && React__default.createElement(InformationCenterNPCDetails, {
32319
+ }))), selectedMonster && React__default.createElement(Portal, null, React__default.createElement(InformationCenterNPCDetails, {
32062
32320
  npc: selectedMonster,
32063
32321
  itemsAtlasJSON: itemsAtlasJSON,
32064
32322
  itemsAtlasIMG: itemsAtlasIMG,
@@ -32069,12 +32327,18 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32069
32327
  onBack: function onBack() {
32070
32328
  return setSelectedMonster(null);
32071
32329
  }
32072
- }));
32330
+ })));
32073
32331
  };
32074
32332
  var TooltipWrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
32075
32333
  displayName: "InformationCenterBestiarySection__TooltipWrapper",
32076
32334
  componentId: "sc-e3h0p2-0"
32077
- })(["position:fixed;z-index:1000;pointer-events:none;width:300px;"]);
32335
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
32336
+ return props.width + "px";
32337
+ });
32338
+ var SearchBarActions$1 = /*#__PURE__*/styled__default.div.withConfig({
32339
+ displayName: "InformationCenterBestiarySection__SearchBarActions",
32340
+ componentId: "sc-e3h0p2-1"
32341
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
32078
32342
 
32079
32343
  var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32080
32344
  var faqItems = _ref.faqItems,
@@ -32097,7 +32361,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32097
32361
  title: item.question
32098
32362
  }, React__default.createElement(Answer$1, null, item.answer));
32099
32363
  };
32100
- return React__default.createElement(Container$q, null, React__default.createElement(SearchHeader, {
32364
+ return React__default.createElement(Container$r, null, React__default.createElement(SearchHeader, {
32101
32365
  searchOptions: {
32102
32366
  value: searchQuery,
32103
32367
  onChange: setSearchQuery,
@@ -32112,7 +32376,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32112
32376
  itemsPerPage: 10
32113
32377
  }));
32114
32378
  };
32115
- var Container$q = /*#__PURE__*/styled__default.div.withConfig({
32379
+ var Container$r = /*#__PURE__*/styled__default.div.withConfig({
32116
32380
  displayName: "InformationCenterFaqSection__Container",
32117
32381
  componentId: "sc-ofmaa9-0"
32118
32382
  })(["display:flex;flex-direction:column;gap:1rem;width:100%;"]);
@@ -32280,9 +32544,6 @@ var InformationCenter = function InformationCenter(_ref) {
32280
32544
  var _useState = React.useState('bestiary'),
32281
32545
  activeTab = _useState[0],
32282
32546
  setActiveTab = _useState[1];
32283
- var _useState2 = React.useState(null),
32284
- selectedItem = _useState2[0],
32285
- setSelectedItem = _useState2[1];
32286
32547
  if (loading) {
32287
32548
  return React__default.createElement(LoadingMessage, null, "Loading...");
32288
32549
  }
@@ -32332,8 +32593,9 @@ var InformationCenter = function InformationCenter(_ref) {
32332
32593
  })
32333
32594
  }];
32334
32595
  return React__default.createElement(DraggableContainer, {
32335
- title: "Information Center"
32336
- }, React__default.createElement(Container$r, null, React__default.createElement(InternalTabs, {
32596
+ title: "Information Center",
32597
+ type: exports.RPGUIContainerTypes.Framed
32598
+ }, React__default.createElement(Container$s, null, React__default.createElement(InternalTabs, {
32337
32599
  tabs: tabs,
32338
32600
  activeTextColor: "#000000",
32339
32601
  activeTab: activeTab,
@@ -32342,22 +32604,9 @@ var InformationCenter = function InformationCenter(_ref) {
32342
32604
  inactiveColor: "#6b7280",
32343
32605
  borderColor: "#f59e0b",
32344
32606
  hoverColor: "#fef3c7"
32345
- }), selectedItem && React__default.createElement(InformationCenterItemDetails, {
32346
- item: selectedItem,
32347
- itemsAtlasJSON: itemsAtlasJSON,
32348
- itemsAtlasIMG: itemsAtlasIMG,
32349
- droppedBy: bestiaryItems.filter(function (npc) {
32350
- var _npc$loots;
32351
- return (_npc$loots = npc.loots) == null ? void 0 : _npc$loots.some(function (loot) {
32352
- return loot.itemBlueprintKey === selectedItem.key;
32353
- });
32354
- }),
32355
- onBack: function onBack() {
32356
- return setSelectedItem(null);
32357
- }
32358
32607
  })));
32359
32608
  };
32360
- var Container$r = /*#__PURE__*/styled__default.div.withConfig({
32609
+ var Container$s = /*#__PURE__*/styled__default.div.withConfig({
32361
32610
  displayName: "InformationCenter__Container",
32362
32611
  componentId: "sc-1ttl62e-0"
32363
32612
  })(["width:100%;max-width:800px;margin:0 auto;padding:1rem;"]);
@@ -32528,7 +32777,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32528
32777
  }
32529
32778
  return null;
32530
32779
  };
32531
- return React__default.createElement(Container$s, null, React__default.createElement("p", null, "Shortcuts:"), React__default.createElement(List, {
32780
+ return React__default.createElement(Container$t, null, React__default.createElement("p", null, "Shortcuts:"), React__default.createElement(List, {
32532
32781
  id: "shortcuts_list"
32533
32782
  }, Array.from({
32534
32783
  length: 12
@@ -32546,7 +32795,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32546
32795
  }, getContent(i));
32547
32796
  })));
32548
32797
  };
32549
- var Container$s = /*#__PURE__*/styled__default.div.withConfig({
32798
+ var Container$t = /*#__PURE__*/styled__default.div.withConfig({
32550
32799
  displayName: "ShortcutsSetter__Container",
32551
32800
  componentId: "sc-xuouuf-0"
32552
32801
  })(["p{margin:0;margin-left:0.5rem;font-size:10px;}width:100%;"]);
@@ -32990,7 +33239,7 @@ var ConfirmModal = function ConfirmModal(_ref) {
32990
33239
  e.stopPropagation();
32991
33240
  onClose();
32992
33241
  };
32993
- return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$t, {
33242
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$u, {
32994
33243
  onClick: handleClose
32995
33244
  }, React__default.createElement(DraggableContainer, {
32996
33245
  width: "auto",
@@ -33013,7 +33262,7 @@ var Background = /*#__PURE__*/styled__default.div.withConfig({
33013
33262
  displayName: "ConfirmModal__Background",
33014
33263
  componentId: "sc-11qkyu1-0"
33015
33264
  })(["position:absolute;width:100%;height:100%;background-color:#000000;opacity:0.5;left:0;top:0;z-index:1000;"]);
33016
- var Container$t = /*#__PURE__*/styled__default.div.withConfig({
33265
+ var Container$u = /*#__PURE__*/styled__default.div.withConfig({
33017
33266
  displayName: "ConfirmModal__Container",
33018
33267
  componentId: "sc-11qkyu1-1"
33019
33268
  })(["position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:1001;"]);
@@ -33068,7 +33317,7 @@ var ColorSelector = function ColorSelector(_ref) {
33068
33317
  cancelDrag: ".react-colorful",
33069
33318
  width: "25rem",
33070
33319
  onCloseButton: onClose
33071
- }, React__default.createElement(Container$u, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(ColorPickerWrapper, null, React__default.createElement(reactColorful.HexColorPicker, {
33320
+ }, React__default.createElement(Container$v, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(ColorPickerWrapper, null, React__default.createElement(reactColorful.HexColorPicker, {
33072
33321
  color: currentColor,
33073
33322
  onChange: function onChange(color) {
33074
33323
  setCurrentColor(color);
@@ -33084,7 +33333,7 @@ var ColorSelector = function ColorSelector(_ref) {
33084
33333
  onClose: handleClose
33085
33334
  }));
33086
33335
  };
33087
- var Container$u = /*#__PURE__*/styled__default.div.withConfig({
33336
+ var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33088
33337
  displayName: "ItemPropertyColorSelector__Container",
33089
33338
  componentId: "sc-me1r4z-0"
33090
33339
  })(["text-align:center;background:inherit;display:flex;flex-direction:column;gap:1.5rem;align-items:center;width:100%;max-width:24rem;margin:0 auto;"]);
@@ -33440,7 +33689,7 @@ var ListMenu = function ListMenu(_ref) {
33440
33689
  onSelected = _ref.onSelected,
33441
33690
  x = _ref.x,
33442
33691
  y = _ref.y;
33443
- return React__default.createElement(Container$v, {
33692
+ return React__default.createElement(Container$w, {
33444
33693
  x: x,
33445
33694
  y: y
33446
33695
  }, React__default.createElement("ul", {
@@ -33457,7 +33706,7 @@ var ListMenu = function ListMenu(_ref) {
33457
33706
  }, (params == null ? void 0 : params.text) || 'No text');
33458
33707
  })));
33459
33708
  };
33460
- var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33709
+ var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33461
33710
  displayName: "ListMenu__Container",
33462
33711
  componentId: "sc-i9097t-0"
33463
33712
  })(["display:flex;flex-direction:column;width:100%;justify-content:start;align-items:flex-start;position:absolute;top:", "px;left:", "px;li{font-size:", ";}"], function (props) {
@@ -33476,7 +33725,7 @@ var Pager = function Pager(_ref) {
33476
33725
  itemsPerPage = _ref.itemsPerPage,
33477
33726
  onPageChange = _ref.onPageChange;
33478
33727
  var totalPages = Math.ceil(totalItems / itemsPerPage);
33479
- return React__default.createElement(Container$w, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33728
+ return React__default.createElement(Container$x, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33480
33729
  disabled: currentPage === 1,
33481
33730
  onPointerDown: function onPointerDown() {
33482
33731
  return onPageChange(Math.max(currentPage - 1, 1));
@@ -33490,7 +33739,7 @@ var Pager = function Pager(_ref) {
33490
33739
  }
33491
33740
  }, '>')));
33492
33741
  };
33493
- var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33742
+ var Container$x = /*#__PURE__*/styled__default.div.withConfig({
33494
33743
  displayName: "Pager__Container",
33495
33744
  componentId: "sc-1ekmf50-0"
33496
33745
  })(["display:flex;flex-direction:column;align-items:center;p{margin:0;font-size:", ";}"], uiFonts.size.xsmall);
@@ -34011,13 +34260,13 @@ var TabBody = function TabBody(_ref) {
34011
34260
  children = _ref.children,
34012
34261
  styles = _ref.styles,
34013
34262
  centerContent = _ref.centerContent;
34014
- return React__default.createElement(Container$x, {
34263
+ return React__default.createElement(Container$y, {
34015
34264
  styles: styles,
34016
34265
  "data-tab-id": id,
34017
34266
  centerContent: centerContent
34018
34267
  }, children);
34019
34268
  };
34020
- var Container$x = /*#__PURE__*/styled__default.div.withConfig({
34269
+ var Container$y = /*#__PURE__*/styled__default.div.withConfig({
34021
34270
  displayName: "TabBody__Container",
34022
34271
  componentId: "sc-196oof2-0"
34023
34272
  })(["width:", ";height:", ";overflow-y:auto;display:", ";justify-content:", ";align-items:", ";"], function (props) {
@@ -34669,7 +34918,7 @@ var ProgressBar = function ProgressBar(_ref) {
34669
34918
  }
34670
34919
  return value * 100 / max;
34671
34920
  };
34672
- return React__default.createElement(Container$y, {
34921
+ return React__default.createElement(Container$z, {
34673
34922
  className: "rpgui-progress",
34674
34923
  "data-value": calculatePercentageValue(max, value) / 100,
34675
34924
  "data-rpguitype": "progress",
@@ -34699,7 +34948,7 @@ var TextOverlay$1 = /*#__PURE__*/styled__default.div.withConfig({
34699
34948
  displayName: "ProgressBar__TextOverlay",
34700
34949
  componentId: "sc-qa6fzh-1"
34701
34950
  })(["width:100%;position:relative;"]);
34702
- var Container$y = /*#__PURE__*/styled__default.div.withConfig({
34951
+ var Container$z = /*#__PURE__*/styled__default.div.withConfig({
34703
34952
  displayName: "ProgressBar__Container",
34704
34953
  componentId: "sc-qa6fzh-2"
34705
34954
  })(["display:flex;flex-direction:column;min-width:", "px;width:", "%;justify-content:start;align-items:flex-start;", " @media (max-width:950px){transform:scale(", ");}"], function (props) {
@@ -34840,17 +35089,17 @@ var QuestList = function QuestList(_ref) {
34840
35089
  return React__default.createElement(QuestCard, {
34841
35090
  key: i,
34842
35091
  style: styles == null ? void 0 : styles.card
34843
- }, React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35092
+ }, React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34844
35093
  style: styles == null ? void 0 : styles.label
34845
35094
  }, "Title:"), React__default.createElement(Value$2, {
34846
35095
  style: styles == null ? void 0 : styles.value
34847
- }, formatQuestText(quest.title))), React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35096
+ }, formatQuestText(quest.title))), React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34848
35097
  style: styles == null ? void 0 : styles.label
34849
35098
  }, "Status:"), React__default.createElement(Value$2, {
34850
35099
  style: _extends({}, styles == null ? void 0 : styles.value, {
34851
35100
  color: getQuestStatusColor(quest.status)
34852
35101
  })
34853
- }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35102
+ }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34854
35103
  style: styles == null ? void 0 : styles.label
34855
35104
  }, "Description:"), React__default.createElement(Value$2, {
34856
35105
  style: styles == null ? void 0 : styles.value
@@ -34869,7 +35118,7 @@ var QuestItem = /*#__PURE__*/styled__default.div.withConfig({
34869
35118
  displayName: "QuestList__QuestItem",
34870
35119
  componentId: "sc-1c1y8sp-2"
34871
35120
  })(["display:flex;margin-bottom:5px;flex-wrap:wrap;&:last-child{margin-bottom:0;}"]);
34872
- var Label$2 = /*#__PURE__*/styled__default.span.withConfig({
35121
+ var Label$3 = /*#__PURE__*/styled__default.span.withConfig({
34873
35122
  displayName: "QuestList__Label",
34874
35123
  componentId: "sc-1c1y8sp-3"
34875
35124
  })(["font-weight:bold;color:", " !important;margin-right:10px;"], uiColors.yellow);
@@ -34940,9 +35189,9 @@ var InputRadio = function InputRadio(_ref) {
34940
35189
 
34941
35190
  var RPGUIScrollbar = function RPGUIScrollbar(_ref) {
34942
35191
  var children = _ref.children;
34943
- return React__default.createElement(Container$z, null, children);
35192
+ return React__default.createElement(Container$A, null, children);
34944
35193
  };
34945
- var Container$z = /*#__PURE__*/styled__default.div.withConfig({
35194
+ var Container$A = /*#__PURE__*/styled__default.div.withConfig({
34946
35195
  displayName: "RPGUIScrollbar__Container",
34947
35196
  componentId: "sc-p3msmb-0"
34948
35197
  })([".rpgui-content ::-webkit-scrollbar,.rpgui-content::-webkit-scrollbar{width:25px !important;}.rpgui-content ::-webkit-scrollbar-track,.rpgui-content::-webkit-scrollbar-track{background-size:25px 60px !important;}"]);
@@ -35098,7 +35347,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35098
35347
  margin = _ref$margin === void 0 ? 20 : _ref$margin;
35099
35348
  // Ensure the width is at least 1% if value is greater than 0
35100
35349
  var width = value > 0 ? Math.max(1, Math.min(100, value)) : 0;
35101
- return React__default.createElement(Container$A, {
35350
+ return React__default.createElement(Container$B, {
35102
35351
  className: "simple-progress-bar"
35103
35352
  }, React__default.createElement(ProgressBarContainer, {
35104
35353
  margin: margin
@@ -35107,7 +35356,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35107
35356
  bgColor: bgColor
35108
35357
  }))));
35109
35358
  };
35110
- var Container$A = /*#__PURE__*/styled__default.div.withConfig({
35359
+ var Container$B = /*#__PURE__*/styled__default.div.withConfig({
35111
35360
  displayName: "SimpleProgressBar__Container",
35112
35361
  componentId: "sc-mbeil3-0"
35113
35362
  })(["display:flex;justify-content:center;align-items:center;width:100%;"]);
@@ -35440,7 +35689,7 @@ var SocialModal = function SocialModal(_ref) {
35440
35689
  title: "Social Channels",
35441
35690
  width: "500px",
35442
35691
  onCloseButton: onClose
35443
- }, React__default.createElement(Container$B, null, React__default.createElement(HeaderImage, {
35692
+ }, React__default.createElement(Container$C, null, React__default.createElement(HeaderImage, {
35444
35693
  src: img$9,
35445
35694
  alt: ""
35446
35695
  }), React__default.createElement(ButtonsContainer$1, null, React__default.createElement(MainButtons, null, React__default.createElement(SocialButton$1, {
@@ -35458,7 +35707,7 @@ var SocialModal = function SocialModal(_ref) {
35458
35707
  onClick: handleWhatsAppClick
35459
35708
  }, React__default.createElement(fa.FaWhatsapp, null), " Join WhatsApp")))));
35460
35709
  };
35461
- var Container$B = /*#__PURE__*/styled__default.div.withConfig({
35710
+ var Container$C = /*#__PURE__*/styled__default.div.withConfig({
35462
35711
  displayName: "SocialModal__Container",
35463
35712
  componentId: "sc-tbjhp9-0"
35464
35713
  })(["width:100%;display:flex;flex-direction:column;gap:16px;background-color:#5c4132;position:relative;border-radius:8px;overflow:hidden;&:before,&:after{content:'';position:absolute;left:0;right:0;height:3px;}&:before{bottom:0;background:linear-gradient( to right,#5c4132 0%,#2b1810 2%,#2b1810 98%,#5c4132 100% );}"]);
@@ -35504,7 +35753,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35504
35753
  castingType = spell.castingType,
35505
35754
  cooldown = spell.cooldown,
35506
35755
  maxDistanceGrid = spell.maxDistanceGrid;
35507
- return React__default.createElement(Container$C, null, React__default.createElement(Header$5, null, React__default.createElement("div", null, React__default.createElement(Title$b, null, name), React__default.createElement(Type$1, null, magicWords))), React__default.createElement(Statistic$1, null, React__default.createElement("div", {
35756
+ return React__default.createElement(Container$D, null, React__default.createElement(Header$5, null, React__default.createElement("div", null, React__default.createElement(Title$b, null, name), React__default.createElement(Type$1, null, magicWords))), React__default.createElement(Statistic$1, null, React__default.createElement("div", {
35508
35757
  className: "label"
35509
35758
  }, "Casting Type:"), React__default.createElement("div", {
35510
35759
  className: "value"
@@ -35530,7 +35779,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35530
35779
  className: "value"
35531
35780
  }, requiredItem))), React__default.createElement(Description$4, null, description));
35532
35781
  };
35533
- var Container$C = /*#__PURE__*/styled__default.div.withConfig({
35782
+ var Container$D = /*#__PURE__*/styled__default.div.withConfig({
35534
35783
  displayName: "SpellInfo__Container",
35535
35784
  componentId: "sc-4hbw3q-0"
35536
35785
  })(["color:white;background-color:#222;border-radius:5px;padding:0.5rem;font-size:", ";border:3px solid ", ";height:max-content;width:30rem;@media (max-width:580px){width:80vw;}"], uiFonts.size.small, uiColors.lightGray);
@@ -35584,7 +35833,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35584
35833
  var _ref$current;
35585
35834
  (_ref$current = ref.current) == null ? void 0 : _ref$current.classList.add('fadeOut');
35586
35835
  };
35587
- return React__default.createElement(ModalPortal, null, React__default.createElement(Container$D, {
35836
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Container$E, {
35588
35837
  ref: ref,
35589
35838
  onTouchEnd: function onTouchEnd() {
35590
35839
  handleFadeOut();
@@ -35609,7 +35858,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35609
35858
  }, option.text);
35610
35859
  }))));
35611
35860
  };
35612
- var Container$D = /*#__PURE__*/styled__default.div.withConfig({
35861
+ var Container$E = /*#__PURE__*/styled__default.div.withConfig({
35613
35862
  displayName: "MobileSpellTooltip__Container",
35614
35863
  componentId: "sc-6p7uvr-0"
35615
35864
  })(["position:absolute;z-index:100;left:0;top:0;width:100vw;height:100vh;background-color:rgba(0 0 0 / 0.5);display:flex;justify-content:center;align-items:center;gap:0.5rem;transition:opacity 0.08s;animation:fadeIn 0.1s forwards;@keyframes fadeIn{0%{opacity:0;}100%{opacity:0.92;}}@keyframes fadeOut{0%{opacity:0.92;}100%{opacity:0;}}&.fadeOut{animation:fadeOut 0.1s forwards;}@media (max-width:580px){flex-direction:column;}"]);
@@ -35650,13 +35899,13 @@ var MagicTooltip = function MagicTooltip(_ref) {
35650
35899
  }
35651
35900
  return;
35652
35901
  }, []);
35653
- return React__default.createElement(ModalPortal, null, React__default.createElement(Container$E, {
35902
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Container$F, {
35654
35903
  ref: ref
35655
35904
  }, React__default.createElement(SpellInfoDisplay, {
35656
35905
  spell: spell
35657
35906
  })));
35658
35907
  };
35659
- var Container$E = /*#__PURE__*/styled__default.div.withConfig({
35908
+ var Container$F = /*#__PURE__*/styled__default.div.withConfig({
35660
35909
  displayName: "SpellTooltip__Container",
35661
35910
  componentId: "sc-1go0gwg-0"
35662
35911
  })(["position:absolute;z-index:100;pointer-events:none;left:0;top:0;opacity:0;transition:opacity 0.08s;"]);
@@ -35729,7 +35978,7 @@ var Spell = function Spell(_ref) {
35729
35978
  var IMAGE_SCALE = 2;
35730
35979
  return React__default.createElement(SpellInfoWrapper, {
35731
35980
  spell: spell
35732
- }, React__default.createElement(Container$F, {
35981
+ }, React__default.createElement(Container$G, {
35733
35982
  onPointerUp: onPointerUp == null ? void 0 : onPointerUp.bind(null, spellKey),
35734
35983
  isSettingShortcut: isSettingShortcut && !disabled,
35735
35984
  className: "spell"
@@ -35748,7 +35997,7 @@ var Spell = function Spell(_ref) {
35748
35997
  className: "mana"
35749
35998
  }, manaCost))));
35750
35999
  };
35751
- var Container$F = /*#__PURE__*/styled__default.button.withConfig({
36000
+ var Container$G = /*#__PURE__*/styled__default.button.withConfig({
35752
36001
  displayName: "Spell__Container",
35753
36002
  componentId: "sc-j96fa2-0"
35754
36003
  })(["display:block;background:none;border:2px solid transparent;border-radius:1rem;width:100%;display:flex;gap:1rem;align-items:center;padding:0 1rem;text-align:left;position:relative;animation:", ";@keyframes border-color-change{0%{border-color:", ";}50%{border-color:transparent;}100%{border-color:", ";}}&:hover,&:focus{background-color:", ";}&:active{background:none;}"], function (_ref2) {
@@ -35827,7 +36076,7 @@ var Spellbook = function Spellbook(_ref) {
35827
36076
  height: "inherit",
35828
36077
  cancelDrag: "#spellbook-search, #shortcuts_list, .spell",
35829
36078
  scale: scale
35830
- }, React__default.createElement(Container$G, null, React__default.createElement(Title$d, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
36079
+ }, React__default.createElement(Container$H, null, React__default.createElement(Title$d, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
35831
36080
  setSettingShortcutIndex: setSettingShortcutIndex,
35832
36081
  settingShortcutIndex: settingShortcutIndex,
35833
36082
  shortcuts: shortcuts,
@@ -35863,7 +36112,7 @@ var Title$d = /*#__PURE__*/styled__default.h1.withConfig({
35863
36112
  displayName: "Spellbook__Title",
35864
36113
  componentId: "sc-r02nfq-0"
35865
36114
  })(["font-size:", " !important;margin-bottom:0 !important;"], uiFonts.size.large);
35866
- var Container$G = /*#__PURE__*/styled__default.div.withConfig({
36115
+ var Container$H = /*#__PURE__*/styled__default.div.withConfig({
35867
36116
  displayName: "Spellbook__Container",
35868
36117
  componentId: "sc-r02nfq-1"
35869
36118
  })(["width:100%;height:100%;color:white;display:flex;flex-direction:column;"]);
@@ -36345,7 +36594,7 @@ var TradingMenu = function TradingMenu(_ref) {
36345
36594
  width: "500px",
36346
36595
  cancelDrag: "#TraderContainer",
36347
36596
  scale: scale
36348
- }, React__default.createElement(Container$H, null, React__default.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
36597
+ }, React__default.createElement(Container$I, null, React__default.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
36349
36598
  className: "golden"
36350
36599
  }), React__default.createElement(ScrollWrapper, {
36351
36600
  id: "TraderContainer"
@@ -36373,7 +36622,7 @@ var TradingMenu = function TradingMenu(_ref) {
36373
36622
  onPointerDown: onClose
36374
36623
  }, "Cancel"))));
36375
36624
  };
36376
- var Container$H = /*#__PURE__*/styled__default.div.withConfig({
36625
+ var Container$I = /*#__PURE__*/styled__default.div.withConfig({
36377
36626
  displayName: "TradingMenu__Container",
36378
36627
  componentId: "sc-1wjsz1l-0"
36379
36628
  })(["width:100%;"]);
@@ -36407,11 +36656,11 @@ var Truncate = function Truncate(_ref) {
36407
36656
  var _ref$maxLines = _ref.maxLines,
36408
36657
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
36409
36658
  children = _ref.children;
36410
- return React__default.createElement(Container$I, {
36659
+ return React__default.createElement(Container$J, {
36411
36660
  maxLines: maxLines
36412
36661
  }, children);
36413
36662
  };
36414
- var Container$I = /*#__PURE__*/styled__default.div.withConfig({
36663
+ var Container$J = /*#__PURE__*/styled__default.div.withConfig({
36415
36664
  displayName: "Truncate__Container",
36416
36665
  componentId: "sc-6x00qb-0"
36417
36666
  })(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
@@ -36519,7 +36768,7 @@ var TutorialStepper = /*#__PURE__*/React__default.memo(function (_ref) {
36519
36768
  };
36520
36769
  });
36521
36770
  }, [lessons, imageStyle]);
36522
- return React__default.createElement(Container$J, null, React__default.createElement(Stepper, {
36771
+ return React__default.createElement(Container$K, null, React__default.createElement(Stepper, {
36523
36772
  steps: generateLessons,
36524
36773
  finalCTAButton: {
36525
36774
  label: 'Close',
@@ -36536,7 +36785,7 @@ var LessonBody = /*#__PURE__*/styled__default.div.withConfig({
36536
36785
  displayName: "TutorialStepper__LessonBody",
36537
36786
  componentId: "sc-7tgzv2-1"
36538
36787
  })([""]);
36539
- var Container$J = /*#__PURE__*/styled__default.div.withConfig({
36788
+ var Container$K = /*#__PURE__*/styled__default.div.withConfig({
36540
36789
  displayName: "TutorialStepper__Container",
36541
36790
  componentId: "sc-7tgzv2-2"
36542
36791
  })(["width:80%;max-width:600px;@media (max-width:600px){width:95%;}"]);