@rpg-engine/long-bow 0.8.31 → 0.8.33

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 (25) 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 +532 -212
  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 +533 -213
  14. package/dist/long-bow.esm.js.map +1 -1
  15. package/package.json +1 -1
  16. package/src/components/InformationCenter/sections/bestiary/BestiaryAdvancedFilters.tsx +95 -0
  17. package/src/components/InformationCenter/sections/bestiary/InformationCenterBestiarySection.tsx +120 -69
  18. package/src/components/InformationCenter/sections/items/InformationCenterItemsSection.tsx +77 -75
  19. package/src/components/InformationCenter/sections/items/ItemsAdvancedFilters.tsx +80 -0
  20. package/src/components/InformationCenter/shared/BaseInformationDetails.tsx +3 -7
  21. package/src/components/shared/AdvancedFilters/AdvancedFilters.tsx +279 -0
  22. package/src/components/shared/PaginatedContent/PaginatedContent.tsx +1 -0
  23. package/src/components/shared/SearchBar/SearchBar.tsx +15 -5
  24. package/src/components/shared/SearchHeader/SearchHeader.tsx +2 -0
  25. package/src/hooks/useTooltipPosition.ts +73 -0
@@ -2,7 +2,7 @@ import React, { useState, useEffect, Component, useRef, useCallback, useContext,
2
2
  import styled, { css, keyframes } from 'styled-components';
3
3
  import { BeatLoader } from 'react-spinners';
4
4
  import { v4 } from 'uuid';
5
- import { GRID_WIDTH, GRID_HEIGHT, ShortcutType, getItemTextureKeyPath, ItemRarities, ItemContainerType, ItemType, DepotSocketEvents, ItemSocketEvents, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemSubType, isMobile, ItemSlotType, isMobileOrTablet, NPCAlignment, VideoGuideCategory, VideoGuideLanguage, CharacterClass, QuestStatus, getSPForLevel, getXPForLevel, PeriodOfDay, UserAccountTypes } from '@rpg-engine/shared';
5
+ import { GRID_WIDTH, GRID_HEIGHT, ShortcutType, getItemTextureKeyPath, ItemRarities, ItemContainerType, ItemType, DepotSocketEvents, ItemSocketEvents, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemSubType, isMobile, ItemSlotType, isMobileOrTablet, NPCSubtype, EntityAttackType, NPCAlignment, VideoGuideCategory, VideoGuideLanguage, CharacterClass, QuestStatus, getSPForLevel, getXPForLevel, PeriodOfDay, UserAccountTypes } from '@rpg-engine/shared';
6
6
  import dayjs from 'dayjs';
7
7
  import { ErrorBoundary as ErrorBoundary$1 } from 'react-error-boundary';
8
8
  import { FaTimes, FaDiscord, FaWhatsapp, FaSearch, FaThumbtack, FaBoxOpen, FaChevronLeft, FaChevronRight, FaChevronUp, FaChevronDown, FaReddit } from 'react-icons/fa';
@@ -12,8 +12,8 @@ import Draggable from 'react-draggable';
12
12
  import ReactDOM, { createPortal } from 'react-dom';
13
13
  import { camelCase, debounce } from 'lodash-es';
14
14
  import { observer } from 'mobx-react-lite';
15
+ import { AiFillFilter, AiOutlineFilter, AiFillCaretRight } from 'react-icons/ai';
15
16
  import { HexColorPicker } from 'react-colorful';
16
- import { AiFillCaretRight } from 'react-icons/ai';
17
17
  import 'rpgui/rpgui.css';
18
18
  import 'rpgui/rpgui.min.js';
19
19
  import capitalize from 'lodash-es/capitalize';
@@ -30827,6 +30827,59 @@ var ContentWrapper = /*#__PURE__*/styled.div.withConfig({
30827
30827
  componentId: "sc-ldufv0-3"
30828
30828
  })([""]);
30829
30829
 
30830
+ var TOOLTIP_WIDTH = 300;
30831
+ var TOOLTIP_OFFSET = 10;
30832
+ var MIN_VISIBLE_HEIGHT = 100;
30833
+ var useTooltipPosition = function useTooltipPosition() {
30834
+ var _useState = useState(null),
30835
+ tooltipState = _useState[0],
30836
+ setTooltipState = _useState[1];
30837
+ var calculateTooltipPosition = function calculateTooltipPosition(rect) {
30838
+ var viewportWidth = window.innerWidth;
30839
+ var viewportHeight = window.innerHeight;
30840
+ // Try to position to the right first
30841
+ var x = rect.right + TOOLTIP_OFFSET;
30842
+ // If it would overflow right, try positioning to the left
30843
+ if (x + TOOLTIP_WIDTH > viewportWidth - TOOLTIP_OFFSET) {
30844
+ x = rect.left - TOOLTIP_WIDTH - TOOLTIP_OFFSET;
30845
+ }
30846
+ // If left positioning would go off screen, position relative to viewport
30847
+ if (x < TOOLTIP_OFFSET) {
30848
+ x = TOOLTIP_OFFSET;
30849
+ }
30850
+ // Position vertically aligned with the top of the element
30851
+ var y = rect.top;
30852
+ // Ensure tooltip doesn't go above viewport
30853
+ if (y < TOOLTIP_OFFSET) {
30854
+ y = TOOLTIP_OFFSET;
30855
+ }
30856
+ // Ensure some part of tooltip is always visible if element is near bottom
30857
+ if (y > viewportHeight - MIN_VISIBLE_HEIGHT) {
30858
+ y = viewportHeight - MIN_VISIBLE_HEIGHT;
30859
+ }
30860
+ return {
30861
+ x: x,
30862
+ y: y
30863
+ };
30864
+ };
30865
+ var handleMouseEnter = function handleMouseEnter(item, event) {
30866
+ var rect = event.currentTarget.getBoundingClientRect();
30867
+ setTooltipState({
30868
+ item: item,
30869
+ position: calculateTooltipPosition(rect)
30870
+ });
30871
+ };
30872
+ var handleMouseLeave = function handleMouseLeave() {
30873
+ setTooltipState(null);
30874
+ };
30875
+ return {
30876
+ tooltipState: tooltipState,
30877
+ handleMouseEnter: handleMouseEnter,
30878
+ handleMouseLeave: handleMouseLeave,
30879
+ TOOLTIP_WIDTH: TOOLTIP_WIDTH
30880
+ };
30881
+ };
30882
+
30830
30883
  var usePagination = function usePagination(_ref) {
30831
30884
  var items = _ref.items,
30832
30885
  itemsPerPage = _ref.itemsPerPage,
@@ -30894,7 +30947,9 @@ var SearchBar = function SearchBar(_ref) {
30894
30947
  var value = _ref.value,
30895
30948
  _onChange = _ref.onChange,
30896
30949
  placeholder = _ref.placeholder,
30897
- className = _ref.className;
30950
+ className = _ref.className,
30951
+ rightElement = _ref.rightElement;
30952
+ var hasRightElement = Boolean(rightElement);
30898
30953
  return React.createElement(Container$m, {
30899
30954
  className: className
30900
30955
  }, React.createElement(Input$1, {
@@ -30904,8 +30959,9 @@ var SearchBar = function SearchBar(_ref) {
30904
30959
  return _onChange(e.target.value);
30905
30960
  },
30906
30961
  placeholder: placeholder,
30907
- className: "rpgui-input"
30908
- }), React.createElement(IconContainer, null, React.createElement(SearchIcon, null)));
30962
+ className: "rpgui-input",
30963
+ "$hasRightElement": hasRightElement
30964
+ }), React.createElement(IconContainer, null, React.createElement(SearchIcon, null), rightElement));
30909
30965
  };
30910
30966
  var Container$m = /*#__PURE__*/styled.div.withConfig({
30911
30967
  displayName: "SearchBar__Container",
@@ -30914,11 +30970,13 @@ var Container$m = /*#__PURE__*/styled.div.withConfig({
30914
30970
  var Input$1 = /*#__PURE__*/styled.input.withConfig({
30915
30971
  displayName: "SearchBar__Input",
30916
30972
  componentId: "sc-13n8z02-1"
30917
- })(["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;}"]);
30973
+ })(["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) {
30974
+ return props.$hasRightElement ? '6rem' : '2.5rem';
30975
+ });
30918
30976
  var IconContainer = /*#__PURE__*/styled.div.withConfig({
30919
30977
  displayName: "SearchBar__IconContainer",
30920
30978
  componentId: "sc-13n8z02-2"
30921
- })(["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;"]);
30979
+ })(["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;}"]);
30922
30980
  var SearchIcon = /*#__PURE__*/styled(FaSearch).withConfig({
30923
30981
  displayName: "SearchBar__SearchIcon",
30924
30982
  componentId: "sc-13n8z02-3"
@@ -30934,7 +30992,8 @@ var SearchHeader = function SearchHeader(_ref) {
30934
30992
  }, React.createElement(HeaderContent, null, searchOptions && React.createElement(SearchContainer$2, null, React.createElement(StyledSearchBar, {
30935
30993
  value: searchOptions.value,
30936
30994
  onChange: searchOptions.onChange,
30937
- placeholder: searchOptions.placeholder || 'Search...'
30995
+ placeholder: searchOptions.placeholder || 'Search...',
30996
+ rightElement: searchOptions.rightElement
30938
30997
  })), filterOptions && React.createElement(FilterContainer, null, React.createElement(StyledDropdown, {
30939
30998
  options: filterOptions.options,
30940
30999
  onChange: filterOptions.onOptionChange,
@@ -31095,44 +31154,6 @@ var CellName = /*#__PURE__*/styled.h3.withConfig({
31095
31154
  componentId: "sc-w48fdf-2"
31096
31155
  })(["font-size:0.7rem;color:#fef08a;margin:0;text-align:center;font-family:'Press Start 2P',cursive;line-height:1.2;word-break:break-word;max-width:100%;"]);
31097
31156
 
31098
- var Collapsible = function Collapsible(_ref) {
31099
- var title = _ref.title,
31100
- children = _ref.children,
31101
- _ref$defaultOpen = _ref.defaultOpen,
31102
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
31103
- className = _ref.className;
31104
- var _useState = useState(defaultOpen),
31105
- isOpen = _useState[0],
31106
- setIsOpen = _useState[1];
31107
- return React.createElement(Container$o, {
31108
- className: className
31109
- }, React.createElement(Header$1, {
31110
- onClick: function onClick() {
31111
- return setIsOpen(!isOpen);
31112
- }
31113
- }, React.createElement(Title$3, null, title), React.createElement(Icon$1, null, isOpen ? React.createElement(FaChevronUp, null) : React.createElement(FaChevronDown, null))), isOpen && React.createElement(Content$1, null, children));
31114
- };
31115
- var Container$o = /*#__PURE__*/styled.div.withConfig({
31116
- displayName: "Collapsible__Container",
31117
- componentId: "sc-s4h8ey-0"
31118
- })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";"], uiColors.darkGray);
31119
- var Header$1 = /*#__PURE__*/styled.div.withConfig({
31120
- displayName: "Collapsible__Header",
31121
- componentId: "sc-s4h8ey-1"
31122
- })(["padding:10px 12px;background:rgba(0,0,0,0.2);display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color 0.2s ease;&:hover{background:rgba(0,0,0,0.4);}"]);
31123
- var Title$3 = /*#__PURE__*/styled.h3.withConfig({
31124
- displayName: "Collapsible__Title",
31125
- componentId: "sc-s4h8ey-2"
31126
- })(["margin:0;font-size:0.6rem;color:", ";font-family:'Press Start 2P',cursive;letter-spacing:0.5px;"], uiColors.yellow);
31127
- var Icon$1 = /*#__PURE__*/styled.span.withConfig({
31128
- displayName: "Collapsible__Icon",
31129
- componentId: "sc-s4h8ey-3"
31130
- })(["color:", ";font-size:0.6rem;display:flex;align-items:center;"], uiColors.yellow);
31131
- var Content$1 = /*#__PURE__*/styled.div.withConfig({
31132
- displayName: "Collapsible__Content",
31133
- componentId: "sc-s4h8ey-4"
31134
- })(["padding:6px;"]);
31135
-
31136
31157
  var BaseInformationDetails = function BaseInformationDetails(_ref) {
31137
31158
  var name = _ref.name,
31138
31159
  spriteKey = _ref.spriteKey,
@@ -31140,20 +31161,20 @@ var BaseInformationDetails = function BaseInformationDetails(_ref) {
31140
31161
  atlasIMG = _ref.atlasIMG,
31141
31162
  onBack = _ref.onBack,
31142
31163
  children = _ref.children;
31143
- return React.createElement(Container$p, null, React.createElement(Overlay, {
31164
+ return React.createElement(Container$o, null, React.createElement(Overlay, {
31144
31165
  onClick: onBack
31145
31166
  }), React.createElement(Modal, null, React.createElement(CloseButton$5, {
31146
31167
  onClick: onBack
31147
- }, React.createElement(FaTimes, null)), React.createElement(Header$2, null, React.createElement(SpriteContainer$2, null, React.createElement(SpriteFromAtlas, {
31168
+ }, React.createElement(FaTimes, null)), React.createElement(Header$1, null, React.createElement(SpriteContainer$2, null, React.createElement(SpriteFromAtlas, {
31148
31169
  atlasJSON: atlasJSON,
31149
31170
  atlasIMG: atlasIMG,
31150
31171
  spriteKey: spriteKey,
31151
31172
  width: 32,
31152
31173
  height: 32,
31153
31174
  imgScale: 1
31154
- })), React.createElement(Title$4, null, name)), React.createElement(Content$2, null, children)));
31175
+ })), React.createElement(Title$3, null, name)), React.createElement(Content$1, null, children)));
31155
31176
  };
31156
- var Container$p = /*#__PURE__*/styled.div.withConfig({
31177
+ var Container$o = /*#__PURE__*/styled.div.withConfig({
31157
31178
  displayName: "BaseInformationDetails__Container",
31158
31179
  componentId: "sc-1vguuz8-0"
31159
31180
  })(["position:fixed;inset:0;display:flex;justify-content:center;align-items:center;z-index:9999;"]);
@@ -31164,20 +31185,20 @@ var Overlay = /*#__PURE__*/styled.div.withConfig({
31164
31185
  var Modal = /*#__PURE__*/styled.div.withConfig({
31165
31186
  displayName: "BaseInformationDetails__Modal",
31166
31187
  componentId: "sc-1vguuz8-2"
31167
- })(["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);
31188
+ })(["position:relative;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:90vh;max-width:800px;max-height:800px;@media (max-width:768px){width:100%;height:100%;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);
31168
31189
  var CloseButton$5 = /*#__PURE__*/styled.button.withConfig({
31169
31190
  displayName: "BaseInformationDetails__CloseButton",
31170
31191
  componentId: "sc-1vguuz8-3"
31171
31192
  })(["position:absolute;top:20px;right:20px;background:none;border:none;color:", ";font-size:1.2rem;cursor:pointer;padding:0;z-index:1;transition:transform 0.2s ease;&:hover{transform:scale(1.1);}"], uiColors.yellow);
31172
- var Header$2 = /*#__PURE__*/styled.div.withConfig({
31193
+ var Header$1 = /*#__PURE__*/styled.div.withConfig({
31173
31194
  displayName: "BaseInformationDetails__Header",
31174
31195
  componentId: "sc-1vguuz8-4"
31175
31196
  })(["display:flex;align-items:center;gap:16px;margin-bottom:24px;"]);
31176
- var Content$2 = /*#__PURE__*/styled.div.withConfig({
31197
+ var Content$1 = /*#__PURE__*/styled.div.withConfig({
31177
31198
  displayName: "BaseInformationDetails__Content",
31178
31199
  componentId: "sc-1vguuz8-5"
31179
31200
  })(["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;}"]);
31180
- var Title$4 = /*#__PURE__*/styled.h2.withConfig({
31201
+ var Title$3 = /*#__PURE__*/styled.h2.withConfig({
31181
31202
  displayName: "BaseInformationDetails__Title",
31182
31203
  componentId: "sc-1vguuz8-6"
31183
31204
  })(["color:", ";font-size:1rem;margin:0;"], uiColors.yellow);
@@ -31186,6 +31207,44 @@ var SpriteContainer$2 = /*#__PURE__*/styled.div.withConfig({
31186
31207
  componentId: "sc-1vguuz8-7"
31187
31208
  })(["width:64px;height:64px;background:rgba(0,0,0,0.3);border-radius:4px;display:flex;justify-content:center;align-items:center;position:relative;.sprite-from-atlas-img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(2);transform-origin:center;}"]);
31188
31209
 
31210
+ var Collapsible = function Collapsible(_ref) {
31211
+ var title = _ref.title,
31212
+ children = _ref.children,
31213
+ _ref$defaultOpen = _ref.defaultOpen,
31214
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
31215
+ className = _ref.className;
31216
+ var _useState = useState(defaultOpen),
31217
+ isOpen = _useState[0],
31218
+ setIsOpen = _useState[1];
31219
+ return React.createElement(Container$p, {
31220
+ className: className
31221
+ }, React.createElement(Header$2, {
31222
+ onClick: function onClick() {
31223
+ return setIsOpen(!isOpen);
31224
+ }
31225
+ }, React.createElement(Title$4, null, title), React.createElement(Icon$1, null, isOpen ? React.createElement(FaChevronUp, null) : React.createElement(FaChevronDown, null))), isOpen && React.createElement(Content$2, null, children));
31226
+ };
31227
+ var Container$p = /*#__PURE__*/styled.div.withConfig({
31228
+ displayName: "Collapsible__Container",
31229
+ componentId: "sc-s4h8ey-0"
31230
+ })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";"], uiColors.darkGray);
31231
+ var Header$2 = /*#__PURE__*/styled.div.withConfig({
31232
+ displayName: "Collapsible__Header",
31233
+ componentId: "sc-s4h8ey-1"
31234
+ })(["padding:10px 12px;background:rgba(0,0,0,0.2);display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:background-color 0.2s ease;&:hover{background:rgba(0,0,0,0.4);}"]);
31235
+ var Title$4 = /*#__PURE__*/styled.h3.withConfig({
31236
+ displayName: "Collapsible__Title",
31237
+ componentId: "sc-s4h8ey-2"
31238
+ })(["margin:0;font-size:0.6rem;color:", ";font-family:'Press Start 2P',cursive;letter-spacing:0.5px;"], uiColors.yellow);
31239
+ var Icon$1 = /*#__PURE__*/styled.span.withConfig({
31240
+ displayName: "Collapsible__Icon",
31241
+ componentId: "sc-s4h8ey-3"
31242
+ })(["color:", ";font-size:0.6rem;display:flex;align-items:center;"], uiColors.yellow);
31243
+ var Content$2 = /*#__PURE__*/styled.div.withConfig({
31244
+ displayName: "Collapsible__Content",
31245
+ componentId: "sc-s4h8ey-4"
31246
+ })(["padding:6px;"]);
31247
+
31189
31248
  var InformationCenterItemDetails = function InformationCenterItemDetails(_ref) {
31190
31249
  var item = _ref.item,
31191
31250
  itemsAtlasJSON = _ref.itemsAtlasJSON,
@@ -31402,7 +31461,180 @@ var InformationCenterItemTooltip = function InformationCenterItemTooltip(_ref) {
31402
31461
  }, item.rarity)))));
31403
31462
  };
31404
31463
 
31405
- var TOOLTIP_OFFSET = 200;
31464
+ var AdvancedFilters = function AdvancedFilters(_ref) {
31465
+ var isOpen = _ref.isOpen,
31466
+ onToggle = _ref.onToggle,
31467
+ sections = _ref.sections,
31468
+ onClearAll = _ref.onClearAll,
31469
+ hasActiveFilters = _ref.hasActiveFilters;
31470
+ var renderFilterSection = function renderFilterSection(section) {
31471
+ switch (section.type) {
31472
+ case 'range':
31473
+ var rangeValue = section.value;
31474
+ return React.createElement(FilterSection, {
31475
+ key: section.key
31476
+ }, React.createElement(Label$1, null, section.label), React.createElement(RangeInputs, null, React.createElement(Input, {
31477
+ type: "number",
31478
+ min: 0,
31479
+ placeholder: "Min",
31480
+ value: rangeValue[0] || '',
31481
+ onChange: function onChange(e) {
31482
+ return section.onChange([e.target.value ? Number(e.target.value) : undefined, rangeValue[1]]);
31483
+ }
31484
+ }), React.createElement(AiFillCaretRight, null), React.createElement(Input, {
31485
+ type: "number",
31486
+ min: 0,
31487
+ placeholder: "Max",
31488
+ value: rangeValue[1] || '',
31489
+ onChange: function onChange(e) {
31490
+ return section.onChange([rangeValue[0], e.target.value ? Number(e.target.value) : undefined]);
31491
+ }
31492
+ })));
31493
+ case 'dropdown':
31494
+ return React.createElement(FilterSection, {
31495
+ key: section.key
31496
+ }, React.createElement(Label$1, null, section.label), React.createElement(Dropdown, {
31497
+ options: section.options || [],
31498
+ onChange: section.onChange,
31499
+ width: "100%"
31500
+ }));
31501
+ default:
31502
+ return null;
31503
+ }
31504
+ };
31505
+ return React.createElement(Container$q, null, React.createElement(FilterButton, {
31506
+ onClick: onToggle,
31507
+ "$hasActiveFilters": hasActiveFilters
31508
+ }, hasActiveFilters ? React.createElement(AiFillFilter, {
31509
+ size: 20
31510
+ }) : React.createElement(AiOutlineFilter, {
31511
+ size: 20
31512
+ }), React.createElement(FilterCount, {
31513
+ "$visible": hasActiveFilters
31514
+ }, sections.filter(function (section) {
31515
+ if (section.type === 'range') {
31516
+ var rangeValue = section.value;
31517
+ return rangeValue[0] !== undefined || rangeValue[1] !== undefined;
31518
+ }
31519
+ return section.value !== 'all';
31520
+ }).length)), isOpen && React.createElement(FiltersPanel, null, React.createElement(FilterHeader, null, React.createElement(FilterTitle, null, "Advanced Filters")), sections.map(renderFilterSection), hasActiveFilters && React.createElement(ClearFiltersButton, {
31521
+ onClick: onClearAll
31522
+ }, "Clear All Filters")));
31523
+ };
31524
+ var Container$q = /*#__PURE__*/styled.div.withConfig({
31525
+ displayName: "AdvancedFilters__Container",
31526
+ componentId: "sc-1xj6ldr-0"
31527
+ })(["position:relative;margin-left:0.5rem;"]);
31528
+ var FilterButton = /*#__PURE__*/styled.button.withConfig({
31529
+ displayName: "AdvancedFilters__FilterButton",
31530
+ componentId: "sc-1xj6ldr-1"
31531
+ })(["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) {
31532
+ var $hasActiveFilters = _ref2.$hasActiveFilters;
31533
+ return $hasActiveFilters ? '#ffd700' : 'rgba(255, 255, 255, 0.8)';
31534
+ }, function (_ref3) {
31535
+ var $hasActiveFilters = _ref3.$hasActiveFilters;
31536
+ return $hasActiveFilters ? '#ffd700' : '#ffffff';
31537
+ });
31538
+ var FilterCount = /*#__PURE__*/styled.div.withConfig({
31539
+ displayName: "AdvancedFilters__FilterCount",
31540
+ componentId: "sc-1xj6ldr-2"
31541
+ })(["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) {
31542
+ var $visible = _ref4.$visible;
31543
+ return $visible ? 1 : 0;
31544
+ }, function (_ref5) {
31545
+ var $visible = _ref5.$visible;
31546
+ return $visible ? 1 : 0.5;
31547
+ });
31548
+ var FiltersPanel = /*#__PURE__*/styled.div.withConfig({
31549
+ displayName: "AdvancedFilters__FiltersPanel",
31550
+ componentId: "sc-1xj6ldr-3"
31551
+ })(["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);}"]);
31552
+ var FilterHeader = /*#__PURE__*/styled.div.withConfig({
31553
+ displayName: "AdvancedFilters__FilterHeader",
31554
+ componentId: "sc-1xj6ldr-4"
31555
+ })(["display:flex;align-items:center;justify-content:space-between;padding-bottom:0.75rem;margin-bottom:0.5rem;border-bottom:1px solid #333;"]);
31556
+ var FilterTitle = /*#__PURE__*/styled.div.withConfig({
31557
+ displayName: "AdvancedFilters__FilterTitle",
31558
+ componentId: "sc-1xj6ldr-5"
31559
+ })(["font-weight:600;color:#ffd700;font-size:0.875rem;"]);
31560
+ var FilterSection = /*#__PURE__*/styled.div.withConfig({
31561
+ displayName: "AdvancedFilters__FilterSection",
31562
+ componentId: "sc-1xj6ldr-6"
31563
+ })(["display:flex;flex-direction:column;gap:0.5rem;"]);
31564
+ var Label$1 = /*#__PURE__*/styled.div.withConfig({
31565
+ displayName: "AdvancedFilters__Label",
31566
+ componentId: "sc-1xj6ldr-7"
31567
+ })(["color:#999;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.05em;"]);
31568
+ var RangeInputs = /*#__PURE__*/styled.div.withConfig({
31569
+ displayName: "AdvancedFilters__RangeInputs",
31570
+ componentId: "sc-1xj6ldr-8"
31571
+ })(["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;}"]);
31572
+ var ClearFiltersButton = /*#__PURE__*/styled.button.withConfig({
31573
+ displayName: "AdvancedFilters__ClearFiltersButton",
31574
+ componentId: "sc-1xj6ldr-9"
31575
+ })(["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;}"]);
31576
+
31577
+ var ItemsAdvancedFilters = function ItemsAdvancedFilters(_ref) {
31578
+ var isOpen = _ref.isOpen,
31579
+ onToggle = _ref.onToggle,
31580
+ onTierChange = _ref.onTierChange,
31581
+ onTypeChange = _ref.onTypeChange,
31582
+ selectedTier = _ref.selectedTier,
31583
+ selectedType = _ref.selectedType;
31584
+ var tierOptions = [{
31585
+ id: 0,
31586
+ value: 'all',
31587
+ option: 'All Tiers'
31588
+ }].concat(Array.from({
31589
+ length: 5
31590
+ }, function (_, i) {
31591
+ return {
31592
+ id: i + 1,
31593
+ value: String(i + 1),
31594
+ option: "Tier " + (i + 1)
31595
+ };
31596
+ }));
31597
+ var typeOptions = [{
31598
+ id: 0,
31599
+ value: 'all',
31600
+ option: 'All Types'
31601
+ }].concat(Object.entries(ItemType).map(function (_ref2, index) {
31602
+ var value = _ref2[1];
31603
+ return {
31604
+ id: index + 1,
31605
+ value: value,
31606
+ option: formatItemType(value)
31607
+ };
31608
+ }));
31609
+ var hasActiveFilters = selectedTier !== 'all' || selectedType !== 'all';
31610
+ var handleClearFilters = function handleClearFilters() {
31611
+ onTierChange('all');
31612
+ onTypeChange('all');
31613
+ };
31614
+ var sections = [{
31615
+ type: 'dropdown',
31616
+ label: 'Tier',
31617
+ key: 'tier',
31618
+ options: tierOptions,
31619
+ value: selectedTier,
31620
+ onChange: onTierChange
31621
+ }, {
31622
+ type: 'dropdown',
31623
+ label: 'Item Type',
31624
+ key: 'type',
31625
+ options: typeOptions,
31626
+ value: selectedType,
31627
+ onChange: onTypeChange
31628
+ }];
31629
+ return React.createElement(AdvancedFilters, {
31630
+ isOpen: isOpen,
31631
+ onToggle: onToggle,
31632
+ sections: sections,
31633
+ onClearAll: handleClearFilters,
31634
+ hasActiveFilters: hasActiveFilters
31635
+ });
31636
+ };
31637
+
31406
31638
  var formatItemType = function formatItemType(type) {
31407
31639
  var words = type.split(/(?=[A-Z])/);
31408
31640
  if (words.length === 1) {
@@ -31429,32 +31661,28 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31429
31661
  var _useState2 = useState('all'),
31430
31662
  selectedItemCategory = _useState2[0],
31431
31663
  setSelectedItemCategory = _useState2[1];
31432
- var _useState3 = useState(null),
31433
- hoveredItem = _useState3[0],
31434
- setHoveredItem = _useState3[1];
31435
- var _useState4 = useState({
31436
- x: 0,
31437
- y: 0
31438
- }),
31439
- tooltipPosition = _useState4[0],
31440
- setTooltipPosition = _useState4[1];
31664
+ var _useState3 = useState('all'),
31665
+ selectedTier = _useState3[0],
31666
+ setSelectedTier = _useState3[1];
31667
+ var _useState4 = useState(false),
31668
+ isAdvancedFiltersOpen = _useState4[0],
31669
+ setIsAdvancedFiltersOpen = _useState4[1];
31441
31670
  var _useState5 = useState(null),
31442
31671
  selectedItem = _useState5[0],
31443
31672
  setSelectedItem = _useState5[1];
31444
- var itemCategoryOptions = [{
31445
- id: 0,
31446
- value: 'all',
31447
- option: 'All Items'
31448
- }].concat(Object.values(ItemType).map(function (type, index) {
31449
- return {
31450
- id: index + 1,
31451
- value: type,
31452
- option: formatItemType(type)
31453
- };
31454
- }));
31455
- var filteredItems = items.filter(function (item) {
31456
- return (selectedItemCategory === 'all' || item.type === selectedItemCategory) && item.name.toLowerCase().includes(searchQuery.toLowerCase());
31457
- });
31673
+ var _useTooltipPosition = useTooltipPosition(),
31674
+ tooltipState = _useTooltipPosition.tooltipState,
31675
+ handleMouseEnter = _useTooltipPosition.handleMouseEnter,
31676
+ handleMouseLeave = _useTooltipPosition.handleMouseLeave,
31677
+ TOOLTIP_WIDTH = _useTooltipPosition.TOOLTIP_WIDTH;
31678
+ var filteredItems = useMemo(function () {
31679
+ return items.filter(function (item) {
31680
+ var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
31681
+ var matchesCategory = selectedItemCategory === 'all' || item.type === selectedItemCategory;
31682
+ var matchesTier = selectedTier === 'all' || String(item.tier) === selectedTier;
31683
+ return matchesSearch && matchesCategory && matchesTier;
31684
+ });
31685
+ }, [items, searchQuery, selectedItemCategory, selectedTier]);
31458
31686
  var getDroppedByNPCs = function getDroppedByNPCs(itemId, npcs) {
31459
31687
  return npcs.filter(function (npc) {
31460
31688
  var _npc$loots;
@@ -31463,35 +31691,12 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31463
31691
  });
31464
31692
  }) || [];
31465
31693
  };
31466
- var handleMouseEnter = function handleMouseEnter(e, item) {
31467
- if (!isMobile) {
31468
- setTooltipPosition({
31469
- x: e.clientX + TOOLTIP_OFFSET,
31470
- y: e.clientY
31471
- });
31472
- setHoveredItem(item);
31473
- }
31474
- };
31475
- var handleMouseMove = function handleMouseMove(e) {
31476
- if (!isMobile && hoveredItem) {
31477
- setTooltipPosition({
31478
- x: e.clientX + TOOLTIP_OFFSET,
31479
- y: e.clientY
31480
- });
31481
- }
31482
- };
31483
- var handleMouseLeave = function handleMouseLeave() {
31484
- if (!isMobile) {
31485
- setHoveredItem(null);
31486
- }
31487
- };
31488
31694
  var handleTouchStart = function handleTouchStart(e, item) {
31489
31695
  e.preventDefault();
31490
31696
  setSelectedItem(item);
31491
31697
  };
31492
31698
  var handleItemClick = function handleItemClick(item) {
31493
31699
  setSelectedItem(item);
31494
- setHoveredItem(null);
31495
31700
  };
31496
31701
  var handleSearchChange = function handleSearchChange(newQuery) {
31497
31702
  setSearchQuery(newQuery);
@@ -31507,9 +31712,8 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31507
31712
  atlasJSON: itemsAtlasJSON,
31508
31713
  atlasIMG: itemsAtlasIMG,
31509
31714
  onMouseEnter: function onMouseEnter(e) {
31510
- return handleMouseEnter(e, item);
31715
+ return handleMouseEnter(item, e);
31511
31716
  },
31512
- onMouseMove: handleMouseMove,
31513
31717
  onMouseLeave: handleMouseLeave,
31514
31718
  onTouchStart: function onTouchStart(e) {
31515
31719
  return handleTouchStart(e, item);
@@ -31519,32 +31723,48 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31519
31723
  }
31520
31724
  });
31521
31725
  };
31726
+ var SearchBarRightElement = React.createElement(SearchBarActions, null, React.createElement(ItemsAdvancedFilters, {
31727
+ isOpen: isAdvancedFiltersOpen,
31728
+ onToggle: function onToggle() {
31729
+ return setIsAdvancedFiltersOpen(!isAdvancedFiltersOpen);
31730
+ },
31731
+ onTierChange: setSelectedTier,
31732
+ onTypeChange: setSelectedItemCategory,
31733
+ selectedTier: selectedTier,
31734
+ selectedType: selectedItemCategory
31735
+ }));
31522
31736
  return React.createElement(React.Fragment, null, React.createElement(PaginatedContent, {
31523
31737
  items: filteredItems,
31524
31738
  renderItem: renderItem,
31525
31739
  emptyMessage: "No items found",
31526
- filterOptions: {
31527
- options: itemCategoryOptions,
31528
- selectedOption: selectedItemCategory,
31529
- onOptionChange: setSelectedItemCategory
31530
- },
31531
31740
  searchOptions: {
31532
31741
  value: searchQuery,
31533
31742
  onChange: handleSearchChange,
31534
- placeholder: 'Search items...'
31743
+ placeholder: 'Search items...',
31744
+ rightElement: SearchBarRightElement
31535
31745
  },
31536
- dependencies: [selectedItemCategory],
31746
+ dependencies: [selectedItemCategory, selectedTier],
31537
31747
  tabId: tabId,
31538
31748
  layout: "grid",
31539
31749
  itemHeight: "180px"
31540
- }), !isMobile && hoveredItem && React.createElement(TooltipWrapper, {
31750
+ }), !isMobile && tooltipState && tooltipState.item && React.createElement(Portal, null, React.createElement(TooltipWrapper, {
31751
+ width: TOOLTIP_WIDTH,
31541
31752
  style: {
31542
- top: tooltipPosition.y,
31543
- left: tooltipPosition.x
31753
+ position: 'fixed',
31754
+ left: tooltipState.position.x + "px",
31755
+ top: tooltipState.position.y + "px"
31544
31756
  }
31545
31757
  }, React.createElement(InformationCenterItemTooltip, {
31546
- item: hoveredItem
31547
- })), selectedItem && React.createElement(Portal, null, React.createElement(InformationCenterItemDetails, {
31758
+ item: tooltipState.item
31759
+ }))), selectedItem && React.createElement(Portal, null, React.createElement(BaseInformationDetails, {
31760
+ name: selectedItem.name,
31761
+ spriteKey: selectedItem.texturePath,
31762
+ atlasJSON: itemsAtlasJSON,
31763
+ atlasIMG: itemsAtlasIMG,
31764
+ onBack: function onBack() {
31765
+ return setSelectedItem(null);
31766
+ }
31767
+ }, React.createElement(InformationCenterItemDetails, {
31548
31768
  item: selectedItem,
31549
31769
  itemsAtlasJSON: itemsAtlasJSON,
31550
31770
  itemsAtlasIMG: itemsAtlasIMG,
@@ -31552,12 +31772,87 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31552
31772
  onBack: function onBack() {
31553
31773
  return setSelectedItem(null);
31554
31774
  }
31555
- })));
31775
+ }))));
31556
31776
  };
31557
31777
  var TooltipWrapper = /*#__PURE__*/styled.div.withConfig({
31558
31778
  displayName: "InformationCenterItemsSection__TooltipWrapper",
31559
31779
  componentId: "sc-1wmpapt-0"
31560
- })(["position:fixed;z-index:1000;pointer-events:none;transition:transform 0.1s ease;"]);
31780
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
31781
+ return props.width + "px";
31782
+ });
31783
+ var SearchBarActions = /*#__PURE__*/styled.div.withConfig({
31784
+ displayName: "InformationCenterItemsSection__SearchBarActions",
31785
+ componentId: "sc-1wmpapt-1"
31786
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
31787
+
31788
+ var BestiaryAdvancedFilters = function BestiaryAdvancedFilters(_ref) {
31789
+ var isOpen = _ref.isOpen,
31790
+ onToggle = _ref.onToggle,
31791
+ onLevelRangeChange = _ref.onLevelRangeChange,
31792
+ onSubtypeChange = _ref.onSubtypeChange,
31793
+ onAttackTypeChange = _ref.onAttackTypeChange,
31794
+ levelRange = _ref.levelRange,
31795
+ selectedSubtype = _ref.selectedSubtype,
31796
+ selectedAttackType = _ref.selectedAttackType;
31797
+ var subtypeOptions = [{
31798
+ id: 0,
31799
+ value: 'all',
31800
+ option: 'All Types'
31801
+ }].concat(Object.entries(NPCSubtype).map(function (_ref2, index) {
31802
+ var value = _ref2[1];
31803
+ return {
31804
+ id: index + 1,
31805
+ value: value,
31806
+ option: formatItemType(value)
31807
+ };
31808
+ }));
31809
+ var attackTypeOptions = [{
31810
+ id: 0,
31811
+ value: 'all',
31812
+ option: 'All Attack Types'
31813
+ }].concat(Object.entries(EntityAttackType).map(function (_ref3, index) {
31814
+ var value = _ref3[1];
31815
+ return {
31816
+ id: index + 1,
31817
+ value: value,
31818
+ option: formatItemType(value)
31819
+ };
31820
+ }));
31821
+ var hasActiveFilters = levelRange[0] !== undefined || levelRange[1] !== undefined || selectedSubtype !== 'all' || selectedAttackType !== 'all';
31822
+ var handleClearFilters = function handleClearFilters() {
31823
+ onLevelRangeChange([undefined, undefined]);
31824
+ onSubtypeChange('all');
31825
+ onAttackTypeChange('all');
31826
+ };
31827
+ var sections = [{
31828
+ type: 'range',
31829
+ label: 'Level Range',
31830
+ key: 'level',
31831
+ value: levelRange,
31832
+ onChange: onLevelRangeChange
31833
+ }, {
31834
+ type: 'dropdown',
31835
+ label: 'Monster Type',
31836
+ key: 'subtype',
31837
+ options: subtypeOptions,
31838
+ value: selectedSubtype,
31839
+ onChange: onSubtypeChange
31840
+ }, {
31841
+ type: 'dropdown',
31842
+ label: 'Attack Type',
31843
+ key: 'attackType',
31844
+ options: attackTypeOptions,
31845
+ value: selectedAttackType,
31846
+ onChange: onAttackTypeChange
31847
+ }];
31848
+ return React.createElement(AdvancedFilters, {
31849
+ isOpen: isOpen,
31850
+ onToggle: onToggle,
31851
+ sections: sections,
31852
+ onClearAll: handleClearFilters,
31853
+ hasActiveFilters: hasActiveFilters
31854
+ });
31855
+ };
31561
31856
 
31562
31857
  var ITEMS_PER_PAGE$1 = 5;
31563
31858
  var formatItemName = function formatItemName(itemPath) {
@@ -31621,7 +31916,7 @@ var InformationCenterNPCDetails = function InformationCenterNPCDetails(_ref) {
31621
31916
  atlasJSON: entitiesAtlasJSON,
31622
31917
  atlasIMG: entitiesAtlasIMG,
31623
31918
  onBack: onBack
31624
- }, React.createElement(InfoSection$1, null, React.createElement(InfoItem$1, null, React.createElement(Label$1, null, "Type:"), React.createElement(Value$1, null, formatText(npc.subType))), React.createElement(InfoItem$1, null, React.createElement(Label$1, null, "Alignment:"), React.createElement(Value$1, null, formatText(npc.alignment))), React.createElement(InfoItem$1, null, React.createElement(Label$1, null, "Attack Type:"), React.createElement(Value$1, null, formatText(npc.attackType))), React.createElement(InfoItem$1, null, React.createElement(Label$1, null, "Range:"), React.createElement(Value$1, null, formatText(npc.maxRangeAttack))), React.createElement(InfoItem$1, null, React.createElement(Label$1, null, "Speed:"), React.createElement(Value$1, null, formatText(npc.speed)))), React.createElement(StyledCollapsible$1, {
31919
+ }, React.createElement(InfoSection$1, null, React.createElement(InfoItem$1, null, React.createElement(Label$2, null, "Type:"), React.createElement(Value$1, null, formatText(npc.subType))), React.createElement(InfoItem$1, null, React.createElement(Label$2, null, "Alignment:"), React.createElement(Value$1, null, formatText(npc.alignment))), React.createElement(InfoItem$1, null, React.createElement(Label$2, null, "Attack Type:"), React.createElement(Value$1, null, formatText(npc.attackType))), React.createElement(InfoItem$1, null, React.createElement(Label$2, null, "Range:"), React.createElement(Value$1, null, formatText(npc.maxRangeAttack))), React.createElement(InfoItem$1, null, React.createElement(Label$2, null, "Speed:"), React.createElement(Value$1, null, formatText(npc.speed)))), React.createElement(StyledCollapsible$1, {
31625
31920
  title: "Stats",
31626
31921
  defaultOpen: !isMobile
31627
31922
  }, React.createElement(StatGrid$1, null, React.createElement(StatItem$2, null, "HP: ", npc.baseHealth), React.createElement(StatItem$2, null, "Level: ", npc.skills.level), ((_npc$skills$strength = npc.skills.strength) == null ? void 0 : _npc$skills$strength.level) && React.createElement(StatItem$2, null, "Strength: ", npc.skills.strength.level), ((_npc$skills$dexterity = npc.skills.dexterity) == null ? void 0 : _npc$skills$dexterity.level) && React.createElement(StatItem$2, null, "Dexterity: ", npc.skills.dexterity.level), ((_npc$skills$resistanc = npc.skills.resistance) == null ? void 0 : _npc$skills$resistanc.level) && React.createElement(StatItem$2, null, "Resistance: ", npc.skills.resistance.level))), npc.loots && npc.loots.length > 0 && React.createElement(StyledCollapsible$1, {
@@ -31677,7 +31972,7 @@ var InfoItem$1 = /*#__PURE__*/styled.div.withConfig({
31677
31972
  displayName: "InformationCenterNPCDetails__InfoItem",
31678
31973
  componentId: "sc-fdu3xl-1"
31679
31974
  })(["display:flex;align-items:center;gap:8px;"]);
31680
- var Label$1 = /*#__PURE__*/styled.span.withConfig({
31975
+ var Label$2 = /*#__PURE__*/styled.span.withConfig({
31681
31976
  displayName: "InformationCenterNPCDetails__Label",
31682
31977
  componentId: "sc-fdu3xl-2"
31683
31978
  })(["color:", ";font-size:0.5rem;opacity:0.8;"], uiColors.yellow);
@@ -31886,49 +32181,36 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31886
32181
  searchQuery = _useState[0],
31887
32182
  setSearchQuery = _useState[1];
31888
32183
  var _useState2 = useState(null),
31889
- tooltipData = _useState2[0],
31890
- setTooltipData = _useState2[1];
31891
- var _useState3 = useState(null),
31892
- selectedMonster = _useState3[0],
31893
- setSelectedMonster = _useState3[1];
31894
- var handleMouseEnter = function handleMouseEnter(monster, event) {
31895
- if (!isMobile && !selectedMonster) {
31896
- setTooltipData({
31897
- npc: monster,
31898
- position: {
31899
- x: event.clientX,
31900
- y: event.clientY
31901
- }
31902
- });
31903
- }
31904
- };
31905
- var handleMouseLeave = function handleMouseLeave() {
31906
- if (!isMobile) {
31907
- setTooltipData(null);
31908
- }
31909
- };
31910
- var handleMouseMove = function handleMouseMove(event) {
31911
- if (!isMobile && tooltipData) {
31912
- setTooltipData(_extends({}, tooltipData, {
31913
- position: {
31914
- x: event.clientX,
31915
- y: event.clientY
31916
- }
31917
- }));
31918
- }
31919
- };
32184
+ selectedMonster = _useState2[0],
32185
+ setSelectedMonster = _useState2[1];
32186
+ var _useState3 = useState('all'),
32187
+ selectedBestiaryCategory = _useState3[0],
32188
+ setSelectedBestiaryCategory = _useState3[1];
32189
+ var _useTooltipPosition = useTooltipPosition(),
32190
+ tooltipState = _useTooltipPosition.tooltipState,
32191
+ handleMouseEnter = _useTooltipPosition.handleMouseEnter,
32192
+ handleMouseLeave = _useTooltipPosition.handleMouseLeave,
32193
+ TOOLTIP_WIDTH = _useTooltipPosition.TOOLTIP_WIDTH;
32194
+ // Advanced filters state
32195
+ var _useState4 = useState(false),
32196
+ isAdvancedFiltersOpen = _useState4[0],
32197
+ setIsAdvancedFiltersOpen = _useState4[1];
32198
+ var _useState5 = useState([undefined, undefined]),
32199
+ levelRange = _useState5[0],
32200
+ setLevelRange = _useState5[1];
32201
+ var _useState6 = useState('all'),
32202
+ selectedSubtype = _useState6[0],
32203
+ setSelectedSubtype = _useState6[1];
32204
+ var _useState7 = useState('all'),
32205
+ selectedAttackType = _useState7[0],
32206
+ setSelectedAttackType = _useState7[1];
31920
32207
  var handleTouchStart = function handleTouchStart(monster, event) {
31921
32208
  event.preventDefault();
31922
32209
  setSelectedMonster(monster);
31923
- setTooltipData(null);
31924
32210
  };
31925
32211
  var handleMonsterClick = function handleMonsterClick(monster) {
31926
32212
  setSelectedMonster(monster);
31927
- setTooltipData(null);
31928
32213
  };
31929
- var _useState4 = useState('all'),
31930
- selectedBestiaryCategory = _useState4[0],
31931
- setSelectedBestiaryCategory = _useState4[1];
31932
32214
  var bestiaryCategoryOptions = [{
31933
32215
  id: 0,
31934
32216
  value: 'all',
@@ -31937,10 +32219,13 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31937
32219
  id: 1,
31938
32220
  value: 'bosses',
31939
32221
  option: 'Bosses'
31940
- }].concat(Object.entries(NPCAlignment).map(function (_ref2, index) {
32222
+ }].concat(Object.entries(NPCAlignment).filter(function (_ref2) {
31941
32223
  var value = _ref2[1];
32224
+ return value !== NPCAlignment.Friendly;
32225
+ }).map(function (_ref3, index) {
32226
+ var value = _ref3[1];
31942
32227
  return {
31943
- id: index + 1,
32228
+ id: index + 2,
31944
32229
  value: value,
31945
32230
  option: formatItemType(value)
31946
32231
  };
@@ -31959,7 +32244,6 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31959
32244
  return handleMouseEnter(item, e);
31960
32245
  },
31961
32246
  onMouseLeave: handleMouseLeave,
31962
- onMouseMove: handleMouseMove,
31963
32247
  onTouchStart: function onTouchStart(e) {
31964
32248
  return handleTouchStart(item, e);
31965
32249
  }
@@ -31967,7 +32251,9 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31967
32251
  };
31968
32252
  var filteredItems = useMemo(function () {
31969
32253
  return bestiaryItems.filter(function (item) {
32254
+ // Basic search filter
31970
32255
  var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
32256
+ // Category filter
31971
32257
  var matchesCategory = true;
31972
32258
  if (selectedBestiaryCategory === 'bosses') {
31973
32259
  matchesCategory = item.isBoss === true;
@@ -31976,15 +32262,33 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31976
32262
  } else if (selectedBestiaryCategory !== 'all') {
31977
32263
  matchesCategory = item.alignment === selectedBestiaryCategory;
31978
32264
  }
31979
- return matchesSearch && matchesCategory;
32265
+ // Advanced filters
32266
+ var matchesLevel = (!levelRange[0] || item.skills.level >= levelRange[0]) && (!levelRange[1] || item.skills.level <= levelRange[1]);
32267
+ var matchesSubtype = selectedSubtype === 'all' || item.subType === selectedSubtype;
32268
+ var matchesAttackType = selectedAttackType === 'all' || item.attackType === selectedAttackType;
32269
+ // Filter out friendly NPCs
32270
+ var isNotFriendly = item.alignment !== NPCAlignment.Friendly;
32271
+ return matchesSearch && matchesCategory && matchesLevel && matchesSubtype && matchesAttackType && isNotFriendly;
31980
32272
  });
31981
- }, [bestiaryItems, searchQuery, selectedBestiaryCategory]);
32273
+ }, [bestiaryItems, searchQuery, selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType]);
31982
32274
  var handleSearchChange = function handleSearchChange(newQuery) {
31983
32275
  setSearchQuery(newQuery);
31984
32276
  if (newQuery && selectedBestiaryCategory !== 'all') {
31985
32277
  setSelectedBestiaryCategory('all');
31986
32278
  }
31987
32279
  };
32280
+ var SearchBarRightElement = React.createElement(SearchBarActions$1, null, React.createElement(BestiaryAdvancedFilters, {
32281
+ isOpen: isAdvancedFiltersOpen,
32282
+ onToggle: function onToggle() {
32283
+ return setIsAdvancedFiltersOpen(!isAdvancedFiltersOpen);
32284
+ },
32285
+ onLevelRangeChange: setLevelRange,
32286
+ onSubtypeChange: setSelectedSubtype,
32287
+ onAttackTypeChange: setSelectedAttackType,
32288
+ levelRange: levelRange,
32289
+ selectedSubtype: selectedSubtype,
32290
+ selectedAttackType: selectedAttackType
32291
+ }));
31988
32292
  return React.createElement(React.Fragment, null, React.createElement(PaginatedContent, {
31989
32293
  items: filteredItems,
31990
32294
  renderItem: renderItem,
@@ -31999,21 +32303,31 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31999
32303
  searchOptions: {
32000
32304
  value: searchQuery,
32001
32305
  onChange: handleSearchChange,
32002
- placeholder: 'Search monsters...'
32306
+ placeholder: 'Search monsters...',
32307
+ rightElement: SearchBarRightElement
32003
32308
  },
32004
- dependencies: [selectedBestiaryCategory],
32309
+ dependencies: [selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType],
32005
32310
  itemHeight: "180px"
32006
- }), !isMobile && tooltipData && React.createElement(Portal, null, React.createElement(TooltipWrapper$1, {
32311
+ }), !isMobile && tooltipState && tooltipState.item && React.createElement(Portal, null, React.createElement(TooltipWrapper$1, {
32312
+ width: TOOLTIP_WIDTH,
32007
32313
  style: {
32008
32314
  position: 'fixed',
32009
- left: tooltipData.position.x + 10,
32010
- top: tooltipData.position.y + 10
32315
+ left: tooltipState.position.x + "px",
32316
+ top: tooltipState.position.y + "px"
32011
32317
  }
32012
32318
  }, React.createElement(InformationCenterNPCTooltip, {
32013
- npc: tooltipData.npc,
32319
+ npc: tooltipState.item,
32014
32320
  itemsAtlasJSON: itemsAtlasJSON,
32015
32321
  itemsAtlasIMG: itemsAtlasIMG
32016
- }))), selectedMonster && React.createElement(Portal, null, React.createElement(InformationCenterNPCDetails, {
32322
+ }))), selectedMonster && React.createElement(Portal, null, React.createElement(BaseInformationDetails, {
32323
+ name: selectedMonster.name,
32324
+ spriteKey: selectedMonster.key,
32325
+ atlasJSON: entitiesAtlasJSON,
32326
+ atlasIMG: entitiesAtlasIMG,
32327
+ onBack: function onBack() {
32328
+ return setSelectedMonster(null);
32329
+ }
32330
+ }, React.createElement(InformationCenterNPCDetails, {
32017
32331
  npc: selectedMonster,
32018
32332
  itemsAtlasJSON: itemsAtlasJSON,
32019
32333
  itemsAtlasIMG: itemsAtlasIMG,
@@ -32024,12 +32338,18 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32024
32338
  onBack: function onBack() {
32025
32339
  return setSelectedMonster(null);
32026
32340
  }
32027
- })));
32341
+ }))));
32028
32342
  };
32029
32343
  var TooltipWrapper$1 = /*#__PURE__*/styled.div.withConfig({
32030
32344
  displayName: "InformationCenterBestiarySection__TooltipWrapper",
32031
32345
  componentId: "sc-e3h0p2-0"
32032
- })(["position:fixed;z-index:1000;pointer-events:none;width:300px;"]);
32346
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
32347
+ return props.width + "px";
32348
+ });
32349
+ var SearchBarActions$1 = /*#__PURE__*/styled.div.withConfig({
32350
+ displayName: "InformationCenterBestiarySection__SearchBarActions",
32351
+ componentId: "sc-e3h0p2-1"
32352
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
32033
32353
 
32034
32354
  var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32035
32355
  var faqItems = _ref.faqItems,
@@ -32052,7 +32372,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32052
32372
  title: item.question
32053
32373
  }, React.createElement(Answer$1, null, item.answer));
32054
32374
  };
32055
- return React.createElement(Container$q, null, React.createElement(SearchHeader, {
32375
+ return React.createElement(Container$r, null, React.createElement(SearchHeader, {
32056
32376
  searchOptions: {
32057
32377
  value: searchQuery,
32058
32378
  onChange: setSearchQuery,
@@ -32067,7 +32387,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32067
32387
  itemsPerPage: 10
32068
32388
  }));
32069
32389
  };
32070
- var Container$q = /*#__PURE__*/styled.div.withConfig({
32390
+ var Container$r = /*#__PURE__*/styled.div.withConfig({
32071
32391
  displayName: "InformationCenterFaqSection__Container",
32072
32392
  componentId: "sc-ofmaa9-0"
32073
32393
  })(["display:flex;flex-direction:column;gap:1rem;width:100%;"]);
@@ -32286,7 +32606,7 @@ var InformationCenter = function InformationCenter(_ref) {
32286
32606
  return React.createElement(DraggableContainer, {
32287
32607
  title: "Information Center",
32288
32608
  type: RPGUIContainerTypes.Framed
32289
- }, React.createElement(Container$r, null, React.createElement(InternalTabs, {
32609
+ }, React.createElement(Container$s, null, React.createElement(InternalTabs, {
32290
32610
  tabs: tabs,
32291
32611
  activeTextColor: "#000000",
32292
32612
  activeTab: activeTab,
@@ -32297,7 +32617,7 @@ var InformationCenter = function InformationCenter(_ref) {
32297
32617
  hoverColor: "#fef3c7"
32298
32618
  })));
32299
32619
  };
32300
- var Container$r = /*#__PURE__*/styled.div.withConfig({
32620
+ var Container$s = /*#__PURE__*/styled.div.withConfig({
32301
32621
  displayName: "InformationCenter__Container",
32302
32622
  componentId: "sc-1ttl62e-0"
32303
32623
  })(["width:100%;max-width:800px;margin:0 auto;padding:1rem;"]);
@@ -32468,7 +32788,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32468
32788
  }
32469
32789
  return null;
32470
32790
  };
32471
- return React.createElement(Container$s, null, React.createElement("p", null, "Shortcuts:"), React.createElement(List, {
32791
+ return React.createElement(Container$t, null, React.createElement("p", null, "Shortcuts:"), React.createElement(List, {
32472
32792
  id: "shortcuts_list"
32473
32793
  }, Array.from({
32474
32794
  length: 12
@@ -32486,7 +32806,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32486
32806
  }, getContent(i));
32487
32807
  })));
32488
32808
  };
32489
- var Container$s = /*#__PURE__*/styled.div.withConfig({
32809
+ var Container$t = /*#__PURE__*/styled.div.withConfig({
32490
32810
  displayName: "ShortcutsSetter__Container",
32491
32811
  componentId: "sc-xuouuf-0"
32492
32812
  })(["p{margin:0;margin-left:0.5rem;font-size:10px;}width:100%;"]);
@@ -32931,7 +33251,7 @@ var ConfirmModal = function ConfirmModal(_ref) {
32931
33251
  e.stopPropagation();
32932
33252
  onClose();
32933
33253
  };
32934
- return React.createElement(ModalPortal, null, React.createElement(Background, null), React.createElement(Container$t, {
33254
+ return React.createElement(ModalPortal, null, React.createElement(Background, null), React.createElement(Container$u, {
32935
33255
  onClick: handleClose
32936
33256
  }, React.createElement(DraggableContainer, {
32937
33257
  width: "auto",
@@ -32954,7 +33274,7 @@ var Background = /*#__PURE__*/styled.div.withConfig({
32954
33274
  displayName: "ConfirmModal__Background",
32955
33275
  componentId: "sc-11qkyu1-0"
32956
33276
  })(["position:absolute;width:100%;height:100%;background-color:#000000;opacity:0.5;left:0;top:0;z-index:1000;"]);
32957
- var Container$t = /*#__PURE__*/styled.div.withConfig({
33277
+ var Container$u = /*#__PURE__*/styled.div.withConfig({
32958
33278
  displayName: "ConfirmModal__Container",
32959
33279
  componentId: "sc-11qkyu1-1"
32960
33280
  })(["position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:1001;"]);
@@ -33009,7 +33329,7 @@ var ColorSelector = function ColorSelector(_ref) {
33009
33329
  cancelDrag: ".react-colorful",
33010
33330
  width: "25rem",
33011
33331
  onCloseButton: onClose
33012
- }, React.createElement(Container$u, null, React.createElement(Header$3, null, "Select Color"), React.createElement(ColorPickerWrapper, null, React.createElement(HexColorPicker, {
33332
+ }, React.createElement(Container$v, null, React.createElement(Header$3, null, "Select Color"), React.createElement(ColorPickerWrapper, null, React.createElement(HexColorPicker, {
33013
33333
  color: currentColor,
33014
33334
  onChange: function onChange(color) {
33015
33335
  setCurrentColor(color);
@@ -33025,7 +33345,7 @@ var ColorSelector = function ColorSelector(_ref) {
33025
33345
  onClose: handleClose
33026
33346
  }));
33027
33347
  };
33028
- var Container$u = /*#__PURE__*/styled.div.withConfig({
33348
+ var Container$v = /*#__PURE__*/styled.div.withConfig({
33029
33349
  displayName: "ItemPropertyColorSelector__Container",
33030
33350
  componentId: "sc-me1r4z-0"
33031
33351
  })(["text-align:center;background:inherit;display:flex;flex-direction:column;gap:1.5rem;align-items:center;width:100%;max-width:24rem;margin:0 auto;"]);
@@ -33381,7 +33701,7 @@ var ListMenu = function ListMenu(_ref) {
33381
33701
  onSelected = _ref.onSelected,
33382
33702
  x = _ref.x,
33383
33703
  y = _ref.y;
33384
- return React.createElement(Container$v, {
33704
+ return React.createElement(Container$w, {
33385
33705
  x: x,
33386
33706
  y: y
33387
33707
  }, React.createElement("ul", {
@@ -33398,7 +33718,7 @@ var ListMenu = function ListMenu(_ref) {
33398
33718
  }, (params == null ? void 0 : params.text) || 'No text');
33399
33719
  })));
33400
33720
  };
33401
- var Container$v = /*#__PURE__*/styled.div.withConfig({
33721
+ var Container$w = /*#__PURE__*/styled.div.withConfig({
33402
33722
  displayName: "ListMenu__Container",
33403
33723
  componentId: "sc-i9097t-0"
33404
33724
  })(["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) {
@@ -33417,7 +33737,7 @@ var Pager = function Pager(_ref) {
33417
33737
  itemsPerPage = _ref.itemsPerPage,
33418
33738
  onPageChange = _ref.onPageChange;
33419
33739
  var totalPages = Math.ceil(totalItems / itemsPerPage);
33420
- return React.createElement(Container$w, null, React.createElement("p", null, "Total items: ", totalItems), React.createElement(PagerContainer, null, React.createElement("button", {
33740
+ return React.createElement(Container$x, null, React.createElement("p", null, "Total items: ", totalItems), React.createElement(PagerContainer, null, React.createElement("button", {
33421
33741
  disabled: currentPage === 1,
33422
33742
  onPointerDown: function onPointerDown() {
33423
33743
  return onPageChange(Math.max(currentPage - 1, 1));
@@ -33431,7 +33751,7 @@ var Pager = function Pager(_ref) {
33431
33751
  }
33432
33752
  }, '>')));
33433
33753
  };
33434
- var Container$w = /*#__PURE__*/styled.div.withConfig({
33754
+ var Container$x = /*#__PURE__*/styled.div.withConfig({
33435
33755
  displayName: "Pager__Container",
33436
33756
  componentId: "sc-1ekmf50-0"
33437
33757
  })(["display:flex;flex-direction:column;align-items:center;p{margin:0;font-size:", ";}"], uiFonts.size.xsmall);
@@ -33952,13 +34272,13 @@ var TabBody = function TabBody(_ref) {
33952
34272
  children = _ref.children,
33953
34273
  styles = _ref.styles,
33954
34274
  centerContent = _ref.centerContent;
33955
- return React.createElement(Container$x, {
34275
+ return React.createElement(Container$y, {
33956
34276
  styles: styles,
33957
34277
  "data-tab-id": id,
33958
34278
  centerContent: centerContent
33959
34279
  }, children);
33960
34280
  };
33961
- var Container$x = /*#__PURE__*/styled.div.withConfig({
34281
+ var Container$y = /*#__PURE__*/styled.div.withConfig({
33962
34282
  displayName: "TabBody__Container",
33963
34283
  componentId: "sc-196oof2-0"
33964
34284
  })(["width:", ";height:", ";overflow-y:auto;display:", ";justify-content:", ";align-items:", ";"], function (props) {
@@ -34611,7 +34931,7 @@ var ProgressBar = function ProgressBar(_ref) {
34611
34931
  }
34612
34932
  return value * 100 / max;
34613
34933
  };
34614
- return React.createElement(Container$y, {
34934
+ return React.createElement(Container$z, {
34615
34935
  className: "rpgui-progress",
34616
34936
  "data-value": calculatePercentageValue(max, value) / 100,
34617
34937
  "data-rpguitype": "progress",
@@ -34641,7 +34961,7 @@ var TextOverlay$1 = /*#__PURE__*/styled.div.withConfig({
34641
34961
  displayName: "ProgressBar__TextOverlay",
34642
34962
  componentId: "sc-qa6fzh-1"
34643
34963
  })(["width:100%;position:relative;"]);
34644
- var Container$y = /*#__PURE__*/styled.div.withConfig({
34964
+ var Container$z = /*#__PURE__*/styled.div.withConfig({
34645
34965
  displayName: "ProgressBar__Container",
34646
34966
  componentId: "sc-qa6fzh-2"
34647
34967
  })(["display:flex;flex-direction:column;min-width:", "px;width:", "%;justify-content:start;align-items:flex-start;", " @media (max-width:950px){transform:scale(", ");}"], function (props) {
@@ -34782,17 +35102,17 @@ var QuestList = function QuestList(_ref) {
34782
35102
  return React.createElement(QuestCard, {
34783
35103
  key: i,
34784
35104
  style: styles == null ? void 0 : styles.card
34785
- }, React.createElement(QuestItem, null, React.createElement(Label$2, {
35105
+ }, React.createElement(QuestItem, null, React.createElement(Label$3, {
34786
35106
  style: styles == null ? void 0 : styles.label
34787
35107
  }, "Title:"), React.createElement(Value$2, {
34788
35108
  style: styles == null ? void 0 : styles.value
34789
- }, formatQuestText(quest.title))), React.createElement(QuestItem, null, React.createElement(Label$2, {
35109
+ }, formatQuestText(quest.title))), React.createElement(QuestItem, null, React.createElement(Label$3, {
34790
35110
  style: styles == null ? void 0 : styles.label
34791
35111
  }, "Status:"), React.createElement(Value$2, {
34792
35112
  style: _extends({}, styles == null ? void 0 : styles.value, {
34793
35113
  color: getQuestStatusColor(quest.status)
34794
35114
  })
34795
- }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React.createElement(QuestItem, null, React.createElement(Label$2, {
35115
+ }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React.createElement(QuestItem, null, React.createElement(Label$3, {
34796
35116
  style: styles == null ? void 0 : styles.label
34797
35117
  }, "Description:"), React.createElement(Value$2, {
34798
35118
  style: styles == null ? void 0 : styles.value
@@ -34811,7 +35131,7 @@ var QuestItem = /*#__PURE__*/styled.div.withConfig({
34811
35131
  displayName: "QuestList__QuestItem",
34812
35132
  componentId: "sc-1c1y8sp-2"
34813
35133
  })(["display:flex;margin-bottom:5px;flex-wrap:wrap;&:last-child{margin-bottom:0;}"]);
34814
- var Label$2 = /*#__PURE__*/styled.span.withConfig({
35134
+ var Label$3 = /*#__PURE__*/styled.span.withConfig({
34815
35135
  displayName: "QuestList__Label",
34816
35136
  componentId: "sc-1c1y8sp-3"
34817
35137
  })(["font-weight:bold;color:", " !important;margin-right:10px;"], uiColors.yellow);
@@ -34882,9 +35202,9 @@ var InputRadio = function InputRadio(_ref) {
34882
35202
 
34883
35203
  var RPGUIScrollbar = function RPGUIScrollbar(_ref) {
34884
35204
  var children = _ref.children;
34885
- return React.createElement(Container$z, null, children);
35205
+ return React.createElement(Container$A, null, children);
34886
35206
  };
34887
- var Container$z = /*#__PURE__*/styled.div.withConfig({
35207
+ var Container$A = /*#__PURE__*/styled.div.withConfig({
34888
35208
  displayName: "RPGUIScrollbar__Container",
34889
35209
  componentId: "sc-p3msmb-0"
34890
35210
  })([".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;}"]);
@@ -35040,7 +35360,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35040
35360
  margin = _ref$margin === void 0 ? 20 : _ref$margin;
35041
35361
  // Ensure the width is at least 1% if value is greater than 0
35042
35362
  var width = value > 0 ? Math.max(1, Math.min(100, value)) : 0;
35043
- return React.createElement(Container$A, {
35363
+ return React.createElement(Container$B, {
35044
35364
  className: "simple-progress-bar"
35045
35365
  }, React.createElement(ProgressBarContainer, {
35046
35366
  margin: margin
@@ -35049,7 +35369,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35049
35369
  bgColor: bgColor
35050
35370
  }))));
35051
35371
  };
35052
- var Container$A = /*#__PURE__*/styled.div.withConfig({
35372
+ var Container$B = /*#__PURE__*/styled.div.withConfig({
35053
35373
  displayName: "SimpleProgressBar__Container",
35054
35374
  componentId: "sc-mbeil3-0"
35055
35375
  })(["display:flex;justify-content:center;align-items:center;width:100%;"]);
@@ -35382,7 +35702,7 @@ var SocialModal = function SocialModal(_ref) {
35382
35702
  title: "Social Channels",
35383
35703
  width: "500px",
35384
35704
  onCloseButton: onClose
35385
- }, React.createElement(Container$B, null, React.createElement(HeaderImage, {
35705
+ }, React.createElement(Container$C, null, React.createElement(HeaderImage, {
35386
35706
  src: img$9,
35387
35707
  alt: ""
35388
35708
  }), React.createElement(ButtonsContainer$1, null, React.createElement(MainButtons, null, React.createElement(SocialButton$1, {
@@ -35400,7 +35720,7 @@ var SocialModal = function SocialModal(_ref) {
35400
35720
  onClick: handleWhatsAppClick
35401
35721
  }, React.createElement(FaWhatsapp, null), " Join WhatsApp")))));
35402
35722
  };
35403
- var Container$B = /*#__PURE__*/styled.div.withConfig({
35723
+ var Container$C = /*#__PURE__*/styled.div.withConfig({
35404
35724
  displayName: "SocialModal__Container",
35405
35725
  componentId: "sc-tbjhp9-0"
35406
35726
  })(["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% );}"]);
@@ -35446,7 +35766,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35446
35766
  castingType = spell.castingType,
35447
35767
  cooldown = spell.cooldown,
35448
35768
  maxDistanceGrid = spell.maxDistanceGrid;
35449
- return React.createElement(Container$C, null, React.createElement(Header$5, null, React.createElement("div", null, React.createElement(Title$b, null, name), React.createElement(Type$1, null, magicWords))), React.createElement(Statistic$1, null, React.createElement("div", {
35769
+ return React.createElement(Container$D, null, React.createElement(Header$5, null, React.createElement("div", null, React.createElement(Title$b, null, name), React.createElement(Type$1, null, magicWords))), React.createElement(Statistic$1, null, React.createElement("div", {
35450
35770
  className: "label"
35451
35771
  }, "Casting Type:"), React.createElement("div", {
35452
35772
  className: "value"
@@ -35472,7 +35792,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35472
35792
  className: "value"
35473
35793
  }, requiredItem))), React.createElement(Description$4, null, description));
35474
35794
  };
35475
- var Container$C = /*#__PURE__*/styled.div.withConfig({
35795
+ var Container$D = /*#__PURE__*/styled.div.withConfig({
35476
35796
  displayName: "SpellInfo__Container",
35477
35797
  componentId: "sc-4hbw3q-0"
35478
35798
  })(["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);
@@ -35526,7 +35846,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35526
35846
  var _ref$current;
35527
35847
  (_ref$current = ref.current) == null ? void 0 : _ref$current.classList.add('fadeOut');
35528
35848
  };
35529
- return React.createElement(ModalPortal, null, React.createElement(Container$D, {
35849
+ return React.createElement(ModalPortal, null, React.createElement(Container$E, {
35530
35850
  ref: ref,
35531
35851
  onTouchEnd: function onTouchEnd() {
35532
35852
  handleFadeOut();
@@ -35551,7 +35871,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35551
35871
  }, option.text);
35552
35872
  }))));
35553
35873
  };
35554
- var Container$D = /*#__PURE__*/styled.div.withConfig({
35874
+ var Container$E = /*#__PURE__*/styled.div.withConfig({
35555
35875
  displayName: "MobileSpellTooltip__Container",
35556
35876
  componentId: "sc-6p7uvr-0"
35557
35877
  })(["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;}"]);
@@ -35592,13 +35912,13 @@ var MagicTooltip = function MagicTooltip(_ref) {
35592
35912
  }
35593
35913
  return;
35594
35914
  }, []);
35595
- return React.createElement(ModalPortal, null, React.createElement(Container$E, {
35915
+ return React.createElement(ModalPortal, null, React.createElement(Container$F, {
35596
35916
  ref: ref
35597
35917
  }, React.createElement(SpellInfoDisplay, {
35598
35918
  spell: spell
35599
35919
  })));
35600
35920
  };
35601
- var Container$E = /*#__PURE__*/styled.div.withConfig({
35921
+ var Container$F = /*#__PURE__*/styled.div.withConfig({
35602
35922
  displayName: "SpellTooltip__Container",
35603
35923
  componentId: "sc-1go0gwg-0"
35604
35924
  })(["position:absolute;z-index:100;pointer-events:none;left:0;top:0;opacity:0;transition:opacity 0.08s;"]);
@@ -35671,7 +35991,7 @@ var Spell = function Spell(_ref) {
35671
35991
  var IMAGE_SCALE = 2;
35672
35992
  return React.createElement(SpellInfoWrapper, {
35673
35993
  spell: spell
35674
- }, React.createElement(Container$F, {
35994
+ }, React.createElement(Container$G, {
35675
35995
  onPointerUp: onPointerUp == null ? void 0 : onPointerUp.bind(null, spellKey),
35676
35996
  isSettingShortcut: isSettingShortcut && !disabled,
35677
35997
  className: "spell"
@@ -35690,7 +36010,7 @@ var Spell = function Spell(_ref) {
35690
36010
  className: "mana"
35691
36011
  }, manaCost))));
35692
36012
  };
35693
- var Container$F = /*#__PURE__*/styled.button.withConfig({
36013
+ var Container$G = /*#__PURE__*/styled.button.withConfig({
35694
36014
  displayName: "Spell__Container",
35695
36015
  componentId: "sc-j96fa2-0"
35696
36016
  })(["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) {
@@ -35769,7 +36089,7 @@ var Spellbook = function Spellbook(_ref) {
35769
36089
  height: "inherit",
35770
36090
  cancelDrag: "#spellbook-search, #shortcuts_list, .spell",
35771
36091
  scale: scale
35772
- }, React.createElement(Container$G, null, React.createElement(Title$d, null, "Learned Spells"), React.createElement(ShortcutsSetter, {
36092
+ }, React.createElement(Container$H, null, React.createElement(Title$d, null, "Learned Spells"), React.createElement(ShortcutsSetter, {
35773
36093
  setSettingShortcutIndex: setSettingShortcutIndex,
35774
36094
  settingShortcutIndex: settingShortcutIndex,
35775
36095
  shortcuts: shortcuts,
@@ -35805,7 +36125,7 @@ var Title$d = /*#__PURE__*/styled.h1.withConfig({
35805
36125
  displayName: "Spellbook__Title",
35806
36126
  componentId: "sc-r02nfq-0"
35807
36127
  })(["font-size:", " !important;margin-bottom:0 !important;"], uiFonts.size.large);
35808
- var Container$G = /*#__PURE__*/styled.div.withConfig({
36128
+ var Container$H = /*#__PURE__*/styled.div.withConfig({
35809
36129
  displayName: "Spellbook__Container",
35810
36130
  componentId: "sc-r02nfq-1"
35811
36131
  })(["width:100%;height:100%;color:white;display:flex;flex-direction:column;"]);
@@ -36287,7 +36607,7 @@ var TradingMenu = function TradingMenu(_ref) {
36287
36607
  width: "500px",
36288
36608
  cancelDrag: "#TraderContainer",
36289
36609
  scale: scale
36290
- }, React.createElement(Container$H, null, React.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React.createElement("hr", {
36610
+ }, React.createElement(Container$I, null, React.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React.createElement("hr", {
36291
36611
  className: "golden"
36292
36612
  }), React.createElement(ScrollWrapper, {
36293
36613
  id: "TraderContainer"
@@ -36315,7 +36635,7 @@ var TradingMenu = function TradingMenu(_ref) {
36315
36635
  onPointerDown: onClose
36316
36636
  }, "Cancel"))));
36317
36637
  };
36318
- var Container$H = /*#__PURE__*/styled.div.withConfig({
36638
+ var Container$I = /*#__PURE__*/styled.div.withConfig({
36319
36639
  displayName: "TradingMenu__Container",
36320
36640
  componentId: "sc-1wjsz1l-0"
36321
36641
  })(["width:100%;"]);
@@ -36349,11 +36669,11 @@ var Truncate = function Truncate(_ref) {
36349
36669
  var _ref$maxLines = _ref.maxLines,
36350
36670
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
36351
36671
  children = _ref.children;
36352
- return React.createElement(Container$I, {
36672
+ return React.createElement(Container$J, {
36353
36673
  maxLines: maxLines
36354
36674
  }, children);
36355
36675
  };
36356
- var Container$I = /*#__PURE__*/styled.div.withConfig({
36676
+ var Container$J = /*#__PURE__*/styled.div.withConfig({
36357
36677
  displayName: "Truncate__Container",
36358
36678
  componentId: "sc-6x00qb-0"
36359
36679
  })(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
@@ -36461,7 +36781,7 @@ var TutorialStepper = /*#__PURE__*/React.memo(function (_ref) {
36461
36781
  };
36462
36782
  });
36463
36783
  }, [lessons, imageStyle]);
36464
- return React.createElement(Container$J, null, React.createElement(Stepper, {
36784
+ return React.createElement(Container$K, null, React.createElement(Stepper, {
36465
36785
  steps: generateLessons,
36466
36786
  finalCTAButton: {
36467
36787
  label: 'Close',
@@ -36478,7 +36798,7 @@ var LessonBody = /*#__PURE__*/styled.div.withConfig({
36478
36798
  displayName: "TutorialStepper__LessonBody",
36479
36799
  componentId: "sc-7tgzv2-1"
36480
36800
  })([""]);
36481
- var Container$J = /*#__PURE__*/styled.div.withConfig({
36801
+ var Container$K = /*#__PURE__*/styled.div.withConfig({
36482
36802
  displayName: "TutorialStepper__Container",
36483
36803
  componentId: "sc-7tgzv2-2"
36484
36804
  })(["width:80%;max-width:600px;@media (max-width:600px){width:95%;}"]);