@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
@@ -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'));
@@ -30832,6 +30832,59 @@ var ContentWrapper = /*#__PURE__*/styled__default.div.withConfig({
30832
30832
  componentId: "sc-ldufv0-3"
30833
30833
  })([""]);
30834
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
+
30835
30888
  var usePagination = function usePagination(_ref) {
30836
30889
  var items = _ref.items,
30837
30890
  itemsPerPage = _ref.itemsPerPage,
@@ -30899,7 +30952,9 @@ var SearchBar = function SearchBar(_ref) {
30899
30952
  var value = _ref.value,
30900
30953
  _onChange = _ref.onChange,
30901
30954
  placeholder = _ref.placeholder,
30902
- className = _ref.className;
30955
+ className = _ref.className,
30956
+ rightElement = _ref.rightElement;
30957
+ var hasRightElement = Boolean(rightElement);
30903
30958
  return React__default.createElement(Container$m, {
30904
30959
  className: className
30905
30960
  }, React__default.createElement(Input$1, {
@@ -30909,8 +30964,9 @@ var SearchBar = function SearchBar(_ref) {
30909
30964
  return _onChange(e.target.value);
30910
30965
  },
30911
30966
  placeholder: placeholder,
30912
- className: "rpgui-input"
30913
- }), 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));
30914
30970
  };
30915
30971
  var Container$m = /*#__PURE__*/styled__default.div.withConfig({
30916
30972
  displayName: "SearchBar__Container",
@@ -30919,11 +30975,13 @@ var Container$m = /*#__PURE__*/styled__default.div.withConfig({
30919
30975
  var Input$1 = /*#__PURE__*/styled__default.input.withConfig({
30920
30976
  displayName: "SearchBar__Input",
30921
30977
  componentId: "sc-13n8z02-1"
30922
- })(["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
+ });
30923
30981
  var IconContainer = /*#__PURE__*/styled__default.div.withConfig({
30924
30982
  displayName: "SearchBar__IconContainer",
30925
30983
  componentId: "sc-13n8z02-2"
30926
- })(["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;}"]);
30927
30985
  var SearchIcon = /*#__PURE__*/styled__default(fa.FaSearch).withConfig({
30928
30986
  displayName: "SearchBar__SearchIcon",
30929
30987
  componentId: "sc-13n8z02-3"
@@ -30939,7 +30997,8 @@ var SearchHeader = function SearchHeader(_ref) {
30939
30997
  }, React__default.createElement(HeaderContent, null, searchOptions && React__default.createElement(SearchContainer$2, null, React__default.createElement(StyledSearchBar, {
30940
30998
  value: searchOptions.value,
30941
30999
  onChange: searchOptions.onChange,
30942
- placeholder: searchOptions.placeholder || 'Search...'
31000
+ placeholder: searchOptions.placeholder || 'Search...',
31001
+ rightElement: searchOptions.rightElement
30943
31002
  })), filterOptions && React__default.createElement(FilterContainer, null, React__default.createElement(StyledDropdown, {
30944
31003
  options: filterOptions.options,
30945
31004
  onChange: filterOptions.onOptionChange,
@@ -31100,44 +31159,6 @@ var CellName = /*#__PURE__*/styled__default.h3.withConfig({
31100
31159
  componentId: "sc-w48fdf-2"
31101
31160
  })(["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%;"]);
31102
31161
 
31103
- var Collapsible = function Collapsible(_ref) {
31104
- var title = _ref.title,
31105
- children = _ref.children,
31106
- _ref$defaultOpen = _ref.defaultOpen,
31107
- defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
31108
- className = _ref.className;
31109
- var _useState = React.useState(defaultOpen),
31110
- isOpen = _useState[0],
31111
- setIsOpen = _useState[1];
31112
- return React__default.createElement(Container$o, {
31113
- className: className
31114
- }, React__default.createElement(Header$1, {
31115
- onClick: function onClick() {
31116
- return setIsOpen(!isOpen);
31117
- }
31118
- }, React__default.createElement(Title$3, null, title), React__default.createElement(Icon$1, null, isOpen ? React__default.createElement(fa.FaChevronUp, null) : React__default.createElement(fa.FaChevronDown, null))), isOpen && React__default.createElement(Content$1, null, children));
31119
- };
31120
- var Container$o = /*#__PURE__*/styled__default.div.withConfig({
31121
- displayName: "Collapsible__Container",
31122
- componentId: "sc-s4h8ey-0"
31123
- })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";"], uiColors.darkGray);
31124
- var Header$1 = /*#__PURE__*/styled__default.div.withConfig({
31125
- displayName: "Collapsible__Header",
31126
- componentId: "sc-s4h8ey-1"
31127
- })(["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);}"]);
31128
- var Title$3 = /*#__PURE__*/styled__default.h3.withConfig({
31129
- displayName: "Collapsible__Title",
31130
- componentId: "sc-s4h8ey-2"
31131
- })(["margin:0;font-size:0.6rem;color:", ";font-family:'Press Start 2P',cursive;letter-spacing:0.5px;"], uiColors.yellow);
31132
- var Icon$1 = /*#__PURE__*/styled__default.span.withConfig({
31133
- displayName: "Collapsible__Icon",
31134
- componentId: "sc-s4h8ey-3"
31135
- })(["color:", ";font-size:0.6rem;display:flex;align-items:center;"], uiColors.yellow);
31136
- var Content$1 = /*#__PURE__*/styled__default.div.withConfig({
31137
- displayName: "Collapsible__Content",
31138
- componentId: "sc-s4h8ey-4"
31139
- })(["padding:6px;"]);
31140
-
31141
31162
  var BaseInformationDetails = function BaseInformationDetails(_ref) {
31142
31163
  var name = _ref.name,
31143
31164
  spriteKey = _ref.spriteKey,
@@ -31145,20 +31166,20 @@ var BaseInformationDetails = function BaseInformationDetails(_ref) {
31145
31166
  atlasIMG = _ref.atlasIMG,
31146
31167
  onBack = _ref.onBack,
31147
31168
  children = _ref.children;
31148
- return React__default.createElement(Container$p, null, React__default.createElement(Overlay, {
31169
+ return React__default.createElement(Container$o, null, React__default.createElement(Overlay, {
31149
31170
  onClick: onBack
31150
31171
  }), React__default.createElement(Modal, null, React__default.createElement(CloseButton$5, {
31151
31172
  onClick: onBack
31152
- }, React__default.createElement(fa.FaTimes, null)), React__default.createElement(Header$2, null, React__default.createElement(SpriteContainer$2, null, React__default.createElement(SpriteFromAtlas, {
31173
+ }, React__default.createElement(fa.FaTimes, null)), React__default.createElement(Header$1, null, React__default.createElement(SpriteContainer$2, null, React__default.createElement(SpriteFromAtlas, {
31153
31174
  atlasJSON: atlasJSON,
31154
31175
  atlasIMG: atlasIMG,
31155
31176
  spriteKey: spriteKey,
31156
31177
  width: 32,
31157
31178
  height: 32,
31158
31179
  imgScale: 1
31159
- })), React__default.createElement(Title$4, null, name)), React__default.createElement(Content$2, null, children)));
31180
+ })), React__default.createElement(Title$3, null, name)), React__default.createElement(Content$1, null, children)));
31160
31181
  };
31161
- var Container$p = /*#__PURE__*/styled__default.div.withConfig({
31182
+ var Container$o = /*#__PURE__*/styled__default.div.withConfig({
31162
31183
  displayName: "BaseInformationDetails__Container",
31163
31184
  componentId: "sc-1vguuz8-0"
31164
31185
  })(["position:fixed;inset:0;display:flex;justify-content:center;align-items:center;z-index:9999;"]);
@@ -31169,20 +31190,20 @@ var Overlay = /*#__PURE__*/styled__default.div.withConfig({
31169
31190
  var Modal = /*#__PURE__*/styled__default.div.withConfig({
31170
31191
  displayName: "BaseInformationDetails__Modal",
31171
31192
  componentId: "sc-1vguuz8-2"
31172
- })(["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);
31193
+ })(["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);
31173
31194
  var CloseButton$5 = /*#__PURE__*/styled__default.button.withConfig({
31174
31195
  displayName: "BaseInformationDetails__CloseButton",
31175
31196
  componentId: "sc-1vguuz8-3"
31176
31197
  })(["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);
31177
- var Header$2 = /*#__PURE__*/styled__default.div.withConfig({
31198
+ var Header$1 = /*#__PURE__*/styled__default.div.withConfig({
31178
31199
  displayName: "BaseInformationDetails__Header",
31179
31200
  componentId: "sc-1vguuz8-4"
31180
31201
  })(["display:flex;align-items:center;gap:16px;margin-bottom:24px;"]);
31181
- var Content$2 = /*#__PURE__*/styled__default.div.withConfig({
31202
+ var Content$1 = /*#__PURE__*/styled__default.div.withConfig({
31182
31203
  displayName: "BaseInformationDetails__Content",
31183
31204
  componentId: "sc-1vguuz8-5"
31184
31205
  })(["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;}"]);
31185
- var Title$4 = /*#__PURE__*/styled__default.h2.withConfig({
31206
+ var Title$3 = /*#__PURE__*/styled__default.h2.withConfig({
31186
31207
  displayName: "BaseInformationDetails__Title",
31187
31208
  componentId: "sc-1vguuz8-6"
31188
31209
  })(["color:", ";font-size:1rem;margin:0;"], uiColors.yellow);
@@ -31191,6 +31212,44 @@ var SpriteContainer$2 = /*#__PURE__*/styled__default.div.withConfig({
31191
31212
  componentId: "sc-1vguuz8-7"
31192
31213
  })(["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;}"]);
31193
31214
 
31215
+ var Collapsible = function Collapsible(_ref) {
31216
+ var title = _ref.title,
31217
+ children = _ref.children,
31218
+ _ref$defaultOpen = _ref.defaultOpen,
31219
+ defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
31220
+ className = _ref.className;
31221
+ var _useState = React.useState(defaultOpen),
31222
+ isOpen = _useState[0],
31223
+ setIsOpen = _useState[1];
31224
+ return React__default.createElement(Container$p, {
31225
+ className: className
31226
+ }, React__default.createElement(Header$2, {
31227
+ onClick: function onClick() {
31228
+ return setIsOpen(!isOpen);
31229
+ }
31230
+ }, React__default.createElement(Title$4, null, title), React__default.createElement(Icon$1, null, isOpen ? React__default.createElement(fa.FaChevronUp, null) : React__default.createElement(fa.FaChevronDown, null))), isOpen && React__default.createElement(Content$2, null, children));
31231
+ };
31232
+ var Container$p = /*#__PURE__*/styled__default.div.withConfig({
31233
+ displayName: "Collapsible__Container",
31234
+ componentId: "sc-s4h8ey-0"
31235
+ })(["background:rgba(0,0,0,0.3);border-radius:4px;overflow:hidden;border:1px solid ", ";"], uiColors.darkGray);
31236
+ var Header$2 = /*#__PURE__*/styled__default.div.withConfig({
31237
+ displayName: "Collapsible__Header",
31238
+ componentId: "sc-s4h8ey-1"
31239
+ })(["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);}"]);
31240
+ var Title$4 = /*#__PURE__*/styled__default.h3.withConfig({
31241
+ displayName: "Collapsible__Title",
31242
+ componentId: "sc-s4h8ey-2"
31243
+ })(["margin:0;font-size:0.6rem;color:", ";font-family:'Press Start 2P',cursive;letter-spacing:0.5px;"], uiColors.yellow);
31244
+ var Icon$1 = /*#__PURE__*/styled__default.span.withConfig({
31245
+ displayName: "Collapsible__Icon",
31246
+ componentId: "sc-s4h8ey-3"
31247
+ })(["color:", ";font-size:0.6rem;display:flex;align-items:center;"], uiColors.yellow);
31248
+ var Content$2 = /*#__PURE__*/styled__default.div.withConfig({
31249
+ displayName: "Collapsible__Content",
31250
+ componentId: "sc-s4h8ey-4"
31251
+ })(["padding:6px;"]);
31252
+
31194
31253
  var InformationCenterItemDetails = function InformationCenterItemDetails(_ref) {
31195
31254
  var item = _ref.item,
31196
31255
  itemsAtlasJSON = _ref.itemsAtlasJSON,
@@ -31407,7 +31466,180 @@ var InformationCenterItemTooltip = function InformationCenterItemTooltip(_ref) {
31407
31466
  }, item.rarity)))));
31408
31467
  };
31409
31468
 
31410
- 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
+
31411
31643
  var formatItemType = function formatItemType(type) {
31412
31644
  var words = type.split(/(?=[A-Z])/);
31413
31645
  if (words.length === 1) {
@@ -31434,32 +31666,28 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31434
31666
  var _useState2 = React.useState('all'),
31435
31667
  selectedItemCategory = _useState2[0],
31436
31668
  setSelectedItemCategory = _useState2[1];
31437
- var _useState3 = React.useState(null),
31438
- hoveredItem = _useState3[0],
31439
- setHoveredItem = _useState3[1];
31440
- var _useState4 = React.useState({
31441
- x: 0,
31442
- y: 0
31443
- }),
31444
- tooltipPosition = _useState4[0],
31445
- 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];
31446
31675
  var _useState5 = React.useState(null),
31447
31676
  selectedItem = _useState5[0],
31448
31677
  setSelectedItem = _useState5[1];
31449
- var itemCategoryOptions = [{
31450
- id: 0,
31451
- value: 'all',
31452
- option: 'All Items'
31453
- }].concat(Object.values(shared.ItemType).map(function (type, index) {
31454
- return {
31455
- id: index + 1,
31456
- value: type,
31457
- option: formatItemType(type)
31458
- };
31459
- }));
31460
- var filteredItems = items.filter(function (item) {
31461
- return (selectedItemCategory === 'all' || item.type === selectedItemCategory) && item.name.toLowerCase().includes(searchQuery.toLowerCase());
31462
- });
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]);
31463
31691
  var getDroppedByNPCs = function getDroppedByNPCs(itemId, npcs) {
31464
31692
  return npcs.filter(function (npc) {
31465
31693
  var _npc$loots;
@@ -31468,35 +31696,12 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31468
31696
  });
31469
31697
  }) || [];
31470
31698
  };
31471
- var handleMouseEnter = function handleMouseEnter(e, item) {
31472
- if (!isMobile) {
31473
- setTooltipPosition({
31474
- x: e.clientX + TOOLTIP_OFFSET,
31475
- y: e.clientY
31476
- });
31477
- setHoveredItem(item);
31478
- }
31479
- };
31480
- var handleMouseMove = function handleMouseMove(e) {
31481
- if (!isMobile && hoveredItem) {
31482
- setTooltipPosition({
31483
- x: e.clientX + TOOLTIP_OFFSET,
31484
- y: e.clientY
31485
- });
31486
- }
31487
- };
31488
- var handleMouseLeave = function handleMouseLeave() {
31489
- if (!isMobile) {
31490
- setHoveredItem(null);
31491
- }
31492
- };
31493
31699
  var handleTouchStart = function handleTouchStart(e, item) {
31494
31700
  e.preventDefault();
31495
31701
  setSelectedItem(item);
31496
31702
  };
31497
31703
  var handleItemClick = function handleItemClick(item) {
31498
31704
  setSelectedItem(item);
31499
- setHoveredItem(null);
31500
31705
  };
31501
31706
  var handleSearchChange = function handleSearchChange(newQuery) {
31502
31707
  setSearchQuery(newQuery);
@@ -31512,9 +31717,8 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31512
31717
  atlasJSON: itemsAtlasJSON,
31513
31718
  atlasIMG: itemsAtlasIMG,
31514
31719
  onMouseEnter: function onMouseEnter(e) {
31515
- return handleMouseEnter(e, item);
31720
+ return handleMouseEnter(item, e);
31516
31721
  },
31517
- onMouseMove: handleMouseMove,
31518
31722
  onMouseLeave: handleMouseLeave,
31519
31723
  onTouchStart: function onTouchStart(e) {
31520
31724
  return handleTouchStart(e, item);
@@ -31524,32 +31728,48 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31524
31728
  }
31525
31729
  });
31526
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
+ }));
31527
31741
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
31528
31742
  items: filteredItems,
31529
31743
  renderItem: renderItem,
31530
31744
  emptyMessage: "No items found",
31531
- filterOptions: {
31532
- options: itemCategoryOptions,
31533
- selectedOption: selectedItemCategory,
31534
- onOptionChange: setSelectedItemCategory
31535
- },
31536
31745
  searchOptions: {
31537
31746
  value: searchQuery,
31538
31747
  onChange: handleSearchChange,
31539
- placeholder: 'Search items...'
31748
+ placeholder: 'Search items...',
31749
+ rightElement: SearchBarRightElement
31540
31750
  },
31541
- dependencies: [selectedItemCategory],
31751
+ dependencies: [selectedItemCategory, selectedTier],
31542
31752
  tabId: tabId,
31543
31753
  layout: "grid",
31544
31754
  itemHeight: "180px"
31545
- }), !isMobile && hoveredItem && React__default.createElement(TooltipWrapper, {
31755
+ }), !isMobile && tooltipState && tooltipState.item && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper, {
31756
+ width: TOOLTIP_WIDTH,
31546
31757
  style: {
31547
- top: tooltipPosition.y,
31548
- left: tooltipPosition.x
31758
+ position: 'fixed',
31759
+ left: tooltipState.position.x + "px",
31760
+ top: tooltipState.position.y + "px"
31549
31761
  }
31550
31762
  }, React__default.createElement(InformationCenterItemTooltip, {
31551
- item: hoveredItem
31552
- })), selectedItem && React__default.createElement(Portal, null, React__default.createElement(InformationCenterItemDetails, {
31763
+ item: tooltipState.item
31764
+ }))), selectedItem && React__default.createElement(Portal, null, React__default.createElement(BaseInformationDetails, {
31765
+ name: selectedItem.name,
31766
+ spriteKey: selectedItem.texturePath,
31767
+ atlasJSON: itemsAtlasJSON,
31768
+ atlasIMG: itemsAtlasIMG,
31769
+ onBack: function onBack() {
31770
+ return setSelectedItem(null);
31771
+ }
31772
+ }, React__default.createElement(InformationCenterItemDetails, {
31553
31773
  item: selectedItem,
31554
31774
  itemsAtlasJSON: itemsAtlasJSON,
31555
31775
  itemsAtlasIMG: itemsAtlasIMG,
@@ -31557,12 +31777,87 @@ var InformationCenterItemsSection = function InformationCenterItemsSection(_ref)
31557
31777
  onBack: function onBack() {
31558
31778
  return setSelectedItem(null);
31559
31779
  }
31560
- })));
31780
+ }))));
31561
31781
  };
31562
31782
  var TooltipWrapper = /*#__PURE__*/styled__default.div.withConfig({
31563
31783
  displayName: "InformationCenterItemsSection__TooltipWrapper",
31564
31784
  componentId: "sc-1wmpapt-0"
31565
- })(["position:fixed;z-index:1000;pointer-events:none;transition:transform 0.1s ease;"]);
31785
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
31786
+ return props.width + "px";
31787
+ });
31788
+ var SearchBarActions = /*#__PURE__*/styled__default.div.withConfig({
31789
+ displayName: "InformationCenterItemsSection__SearchBarActions",
31790
+ componentId: "sc-1wmpapt-1"
31791
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
31792
+
31793
+ var BestiaryAdvancedFilters = function BestiaryAdvancedFilters(_ref) {
31794
+ var isOpen = _ref.isOpen,
31795
+ onToggle = _ref.onToggle,
31796
+ onLevelRangeChange = _ref.onLevelRangeChange,
31797
+ onSubtypeChange = _ref.onSubtypeChange,
31798
+ onAttackTypeChange = _ref.onAttackTypeChange,
31799
+ levelRange = _ref.levelRange,
31800
+ selectedSubtype = _ref.selectedSubtype,
31801
+ selectedAttackType = _ref.selectedAttackType;
31802
+ var subtypeOptions = [{
31803
+ id: 0,
31804
+ value: 'all',
31805
+ option: 'All Types'
31806
+ }].concat(Object.entries(shared.NPCSubtype).map(function (_ref2, index) {
31807
+ var value = _ref2[1];
31808
+ return {
31809
+ id: index + 1,
31810
+ value: value,
31811
+ option: formatItemType(value)
31812
+ };
31813
+ }));
31814
+ var attackTypeOptions = [{
31815
+ id: 0,
31816
+ value: 'all',
31817
+ option: 'All Attack Types'
31818
+ }].concat(Object.entries(shared.EntityAttackType).map(function (_ref3, index) {
31819
+ var value = _ref3[1];
31820
+ return {
31821
+ id: index + 1,
31822
+ value: value,
31823
+ option: formatItemType(value)
31824
+ };
31825
+ }));
31826
+ var hasActiveFilters = levelRange[0] !== undefined || levelRange[1] !== undefined || selectedSubtype !== 'all' || selectedAttackType !== 'all';
31827
+ var handleClearFilters = function handleClearFilters() {
31828
+ onLevelRangeChange([undefined, undefined]);
31829
+ onSubtypeChange('all');
31830
+ onAttackTypeChange('all');
31831
+ };
31832
+ var sections = [{
31833
+ type: 'range',
31834
+ label: 'Level Range',
31835
+ key: 'level',
31836
+ value: levelRange,
31837
+ onChange: onLevelRangeChange
31838
+ }, {
31839
+ type: 'dropdown',
31840
+ label: 'Monster Type',
31841
+ key: 'subtype',
31842
+ options: subtypeOptions,
31843
+ value: selectedSubtype,
31844
+ onChange: onSubtypeChange
31845
+ }, {
31846
+ type: 'dropdown',
31847
+ label: 'Attack Type',
31848
+ key: 'attackType',
31849
+ options: attackTypeOptions,
31850
+ value: selectedAttackType,
31851
+ onChange: onAttackTypeChange
31852
+ }];
31853
+ return React__default.createElement(AdvancedFilters, {
31854
+ isOpen: isOpen,
31855
+ onToggle: onToggle,
31856
+ sections: sections,
31857
+ onClearAll: handleClearFilters,
31858
+ hasActiveFilters: hasActiveFilters
31859
+ });
31860
+ };
31566
31861
 
31567
31862
  var ITEMS_PER_PAGE$1 = 5;
31568
31863
  var formatItemName = function formatItemName(itemPath) {
@@ -31626,7 +31921,7 @@ var InformationCenterNPCDetails = function InformationCenterNPCDetails(_ref) {
31626
31921
  atlasJSON: entitiesAtlasJSON,
31627
31922
  atlasIMG: entitiesAtlasIMG,
31628
31923
  onBack: onBack
31629
- }, 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, {
31924
+ }, 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, {
31630
31925
  title: "Stats",
31631
31926
  defaultOpen: !isMobile
31632
31927
  }, 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, {
@@ -31682,7 +31977,7 @@ var InfoItem$1 = /*#__PURE__*/styled__default.div.withConfig({
31682
31977
  displayName: "InformationCenterNPCDetails__InfoItem",
31683
31978
  componentId: "sc-fdu3xl-1"
31684
31979
  })(["display:flex;align-items:center;gap:8px;"]);
31685
- var Label$1 = /*#__PURE__*/styled__default.span.withConfig({
31980
+ var Label$2 = /*#__PURE__*/styled__default.span.withConfig({
31686
31981
  displayName: "InformationCenterNPCDetails__Label",
31687
31982
  componentId: "sc-fdu3xl-2"
31688
31983
  })(["color:", ";font-size:0.5rem;opacity:0.8;"], uiColors.yellow);
@@ -31891,49 +32186,36 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31891
32186
  searchQuery = _useState[0],
31892
32187
  setSearchQuery = _useState[1];
31893
32188
  var _useState2 = React.useState(null),
31894
- tooltipData = _useState2[0],
31895
- setTooltipData = _useState2[1];
31896
- var _useState3 = React.useState(null),
31897
- selectedMonster = _useState3[0],
31898
- setSelectedMonster = _useState3[1];
31899
- var handleMouseEnter = function handleMouseEnter(monster, event) {
31900
- if (!isMobile && !selectedMonster) {
31901
- setTooltipData({
31902
- npc: monster,
31903
- position: {
31904
- x: event.clientX,
31905
- y: event.clientY
31906
- }
31907
- });
31908
- }
31909
- };
31910
- var handleMouseLeave = function handleMouseLeave() {
31911
- if (!isMobile) {
31912
- setTooltipData(null);
31913
- }
31914
- };
31915
- var handleMouseMove = function handleMouseMove(event) {
31916
- if (!isMobile && tooltipData) {
31917
- setTooltipData(_extends({}, tooltipData, {
31918
- position: {
31919
- x: event.clientX,
31920
- y: event.clientY
31921
- }
31922
- }));
31923
- }
31924
- };
32189
+ selectedMonster = _useState2[0],
32190
+ setSelectedMonster = _useState2[1];
32191
+ var _useState3 = React.useState('all'),
32192
+ selectedBestiaryCategory = _useState3[0],
32193
+ setSelectedBestiaryCategory = _useState3[1];
32194
+ var _useTooltipPosition = useTooltipPosition(),
32195
+ tooltipState = _useTooltipPosition.tooltipState,
32196
+ handleMouseEnter = _useTooltipPosition.handleMouseEnter,
32197
+ handleMouseLeave = _useTooltipPosition.handleMouseLeave,
32198
+ TOOLTIP_WIDTH = _useTooltipPosition.TOOLTIP_WIDTH;
32199
+ // Advanced filters state
32200
+ var _useState4 = React.useState(false),
32201
+ isAdvancedFiltersOpen = _useState4[0],
32202
+ setIsAdvancedFiltersOpen = _useState4[1];
32203
+ var _useState5 = React.useState([undefined, undefined]),
32204
+ levelRange = _useState5[0],
32205
+ setLevelRange = _useState5[1];
32206
+ var _useState6 = React.useState('all'),
32207
+ selectedSubtype = _useState6[0],
32208
+ setSelectedSubtype = _useState6[1];
32209
+ var _useState7 = React.useState('all'),
32210
+ selectedAttackType = _useState7[0],
32211
+ setSelectedAttackType = _useState7[1];
31925
32212
  var handleTouchStart = function handleTouchStart(monster, event) {
31926
32213
  event.preventDefault();
31927
32214
  setSelectedMonster(monster);
31928
- setTooltipData(null);
31929
32215
  };
31930
32216
  var handleMonsterClick = function handleMonsterClick(monster) {
31931
32217
  setSelectedMonster(monster);
31932
- setTooltipData(null);
31933
32218
  };
31934
- var _useState4 = React.useState('all'),
31935
- selectedBestiaryCategory = _useState4[0],
31936
- setSelectedBestiaryCategory = _useState4[1];
31937
32219
  var bestiaryCategoryOptions = [{
31938
32220
  id: 0,
31939
32221
  value: 'all',
@@ -31942,10 +32224,13 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31942
32224
  id: 1,
31943
32225
  value: 'bosses',
31944
32226
  option: 'Bosses'
31945
- }].concat(Object.entries(shared.NPCAlignment).map(function (_ref2, index) {
32227
+ }].concat(Object.entries(shared.NPCAlignment).filter(function (_ref2) {
31946
32228
  var value = _ref2[1];
32229
+ return value !== shared.NPCAlignment.Friendly;
32230
+ }).map(function (_ref3, index) {
32231
+ var value = _ref3[1];
31947
32232
  return {
31948
- id: index + 1,
32233
+ id: index + 2,
31949
32234
  value: value,
31950
32235
  option: formatItemType(value)
31951
32236
  };
@@ -31964,7 +32249,6 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31964
32249
  return handleMouseEnter(item, e);
31965
32250
  },
31966
32251
  onMouseLeave: handleMouseLeave,
31967
- onMouseMove: handleMouseMove,
31968
32252
  onTouchStart: function onTouchStart(e) {
31969
32253
  return handleTouchStart(item, e);
31970
32254
  }
@@ -31972,7 +32256,9 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31972
32256
  };
31973
32257
  var filteredItems = React.useMemo(function () {
31974
32258
  return bestiaryItems.filter(function (item) {
32259
+ // Basic search filter
31975
32260
  var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
32261
+ // Category filter
31976
32262
  var matchesCategory = true;
31977
32263
  if (selectedBestiaryCategory === 'bosses') {
31978
32264
  matchesCategory = item.isBoss === true;
@@ -31981,15 +32267,33 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
31981
32267
  } else if (selectedBestiaryCategory !== 'all') {
31982
32268
  matchesCategory = item.alignment === selectedBestiaryCategory;
31983
32269
  }
31984
- return matchesSearch && matchesCategory;
32270
+ // Advanced filters
32271
+ var matchesLevel = (!levelRange[0] || item.skills.level >= levelRange[0]) && (!levelRange[1] || item.skills.level <= levelRange[1]);
32272
+ var matchesSubtype = selectedSubtype === 'all' || item.subType === selectedSubtype;
32273
+ var matchesAttackType = selectedAttackType === 'all' || item.attackType === selectedAttackType;
32274
+ // Filter out friendly NPCs
32275
+ var isNotFriendly = item.alignment !== shared.NPCAlignment.Friendly;
32276
+ return matchesSearch && matchesCategory && matchesLevel && matchesSubtype && matchesAttackType && isNotFriendly;
31985
32277
  });
31986
- }, [bestiaryItems, searchQuery, selectedBestiaryCategory]);
32278
+ }, [bestiaryItems, searchQuery, selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType]);
31987
32279
  var handleSearchChange = function handleSearchChange(newQuery) {
31988
32280
  setSearchQuery(newQuery);
31989
32281
  if (newQuery && selectedBestiaryCategory !== 'all') {
31990
32282
  setSelectedBestiaryCategory('all');
31991
32283
  }
31992
32284
  };
32285
+ var SearchBarRightElement = React__default.createElement(SearchBarActions$1, null, React__default.createElement(BestiaryAdvancedFilters, {
32286
+ isOpen: isAdvancedFiltersOpen,
32287
+ onToggle: function onToggle() {
32288
+ return setIsAdvancedFiltersOpen(!isAdvancedFiltersOpen);
32289
+ },
32290
+ onLevelRangeChange: setLevelRange,
32291
+ onSubtypeChange: setSelectedSubtype,
32292
+ onAttackTypeChange: setSelectedAttackType,
32293
+ levelRange: levelRange,
32294
+ selectedSubtype: selectedSubtype,
32295
+ selectedAttackType: selectedAttackType
32296
+ }));
31993
32297
  return React__default.createElement(React__default.Fragment, null, React__default.createElement(PaginatedContent, {
31994
32298
  items: filteredItems,
31995
32299
  renderItem: renderItem,
@@ -32004,21 +32308,31 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32004
32308
  searchOptions: {
32005
32309
  value: searchQuery,
32006
32310
  onChange: handleSearchChange,
32007
- placeholder: 'Search monsters...'
32311
+ placeholder: 'Search monsters...',
32312
+ rightElement: SearchBarRightElement
32008
32313
  },
32009
- dependencies: [selectedBestiaryCategory],
32314
+ dependencies: [selectedBestiaryCategory, levelRange, selectedSubtype, selectedAttackType],
32010
32315
  itemHeight: "180px"
32011
- }), !isMobile && tooltipData && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper$1, {
32316
+ }), !isMobile && tooltipState && tooltipState.item && React__default.createElement(Portal, null, React__default.createElement(TooltipWrapper$1, {
32317
+ width: TOOLTIP_WIDTH,
32012
32318
  style: {
32013
32319
  position: 'fixed',
32014
- left: tooltipData.position.x + 10,
32015
- top: tooltipData.position.y + 10
32320
+ left: tooltipState.position.x + "px",
32321
+ top: tooltipState.position.y + "px"
32016
32322
  }
32017
32323
  }, React__default.createElement(InformationCenterNPCTooltip, {
32018
- npc: tooltipData.npc,
32324
+ npc: tooltipState.item,
32019
32325
  itemsAtlasJSON: itemsAtlasJSON,
32020
32326
  itemsAtlasIMG: itemsAtlasIMG
32021
- }))), selectedMonster && React__default.createElement(Portal, null, React__default.createElement(InformationCenterNPCDetails, {
32327
+ }))), selectedMonster && React__default.createElement(Portal, null, React__default.createElement(BaseInformationDetails, {
32328
+ name: selectedMonster.name,
32329
+ spriteKey: selectedMonster.key,
32330
+ atlasJSON: entitiesAtlasJSON,
32331
+ atlasIMG: entitiesAtlasIMG,
32332
+ onBack: function onBack() {
32333
+ return setSelectedMonster(null);
32334
+ }
32335
+ }, React__default.createElement(InformationCenterNPCDetails, {
32022
32336
  npc: selectedMonster,
32023
32337
  itemsAtlasJSON: itemsAtlasJSON,
32024
32338
  itemsAtlasIMG: itemsAtlasIMG,
@@ -32029,12 +32343,18 @@ var InformationCenterBestiarySection = function InformationCenterBestiarySection
32029
32343
  onBack: function onBack() {
32030
32344
  return setSelectedMonster(null);
32031
32345
  }
32032
- })));
32346
+ }))));
32033
32347
  };
32034
32348
  var TooltipWrapper$1 = /*#__PURE__*/styled__default.div.withConfig({
32035
32349
  displayName: "InformationCenterBestiarySection__TooltipWrapper",
32036
32350
  componentId: "sc-e3h0p2-0"
32037
- })(["position:fixed;z-index:1000;pointer-events:none;width:300px;"]);
32351
+ })(["z-index:1000;pointer-events:none;width:", ";"], function (props) {
32352
+ return props.width + "px";
32353
+ });
32354
+ var SearchBarActions$1 = /*#__PURE__*/styled__default.div.withConfig({
32355
+ displayName: "InformationCenterBestiarySection__SearchBarActions",
32356
+ componentId: "sc-e3h0p2-1"
32357
+ })(["display:flex;align-items:center;gap:0.5rem;"]);
32038
32358
 
32039
32359
  var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32040
32360
  var faqItems = _ref.faqItems,
@@ -32057,7 +32377,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32057
32377
  title: item.question
32058
32378
  }, React__default.createElement(Answer$1, null, item.answer));
32059
32379
  };
32060
- return React__default.createElement(Container$q, null, React__default.createElement(SearchHeader, {
32380
+ return React__default.createElement(Container$r, null, React__default.createElement(SearchHeader, {
32061
32381
  searchOptions: {
32062
32382
  value: searchQuery,
32063
32383
  onChange: setSearchQuery,
@@ -32072,7 +32392,7 @@ var InformationCenterFAQSection = function InformationCenterFAQSection(_ref) {
32072
32392
  itemsPerPage: 10
32073
32393
  }));
32074
32394
  };
32075
- var Container$q = /*#__PURE__*/styled__default.div.withConfig({
32395
+ var Container$r = /*#__PURE__*/styled__default.div.withConfig({
32076
32396
  displayName: "InformationCenterFaqSection__Container",
32077
32397
  componentId: "sc-ofmaa9-0"
32078
32398
  })(["display:flex;flex-direction:column;gap:1rem;width:100%;"]);
@@ -32291,7 +32611,7 @@ var InformationCenter = function InformationCenter(_ref) {
32291
32611
  return React__default.createElement(DraggableContainer, {
32292
32612
  title: "Information Center",
32293
32613
  type: exports.RPGUIContainerTypes.Framed
32294
- }, React__default.createElement(Container$r, null, React__default.createElement(InternalTabs, {
32614
+ }, React__default.createElement(Container$s, null, React__default.createElement(InternalTabs, {
32295
32615
  tabs: tabs,
32296
32616
  activeTextColor: "#000000",
32297
32617
  activeTab: activeTab,
@@ -32302,7 +32622,7 @@ var InformationCenter = function InformationCenter(_ref) {
32302
32622
  hoverColor: "#fef3c7"
32303
32623
  })));
32304
32624
  };
32305
- var Container$r = /*#__PURE__*/styled__default.div.withConfig({
32625
+ var Container$s = /*#__PURE__*/styled__default.div.withConfig({
32306
32626
  displayName: "InformationCenter__Container",
32307
32627
  componentId: "sc-1ttl62e-0"
32308
32628
  })(["width:100%;max-width:800px;margin:0 auto;padding:1rem;"]);
@@ -32473,7 +32793,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32473
32793
  }
32474
32794
  return null;
32475
32795
  };
32476
- return React__default.createElement(Container$s, null, React__default.createElement("p", null, "Shortcuts:"), React__default.createElement(List, {
32796
+ return React__default.createElement(Container$t, null, React__default.createElement("p", null, "Shortcuts:"), React__default.createElement(List, {
32477
32797
  id: "shortcuts_list"
32478
32798
  }, Array.from({
32479
32799
  length: 12
@@ -32491,7 +32811,7 @@ var ShortcutsSetter = function ShortcutsSetter(_ref) {
32491
32811
  }, getContent(i));
32492
32812
  })));
32493
32813
  };
32494
- var Container$s = /*#__PURE__*/styled__default.div.withConfig({
32814
+ var Container$t = /*#__PURE__*/styled__default.div.withConfig({
32495
32815
  displayName: "ShortcutsSetter__Container",
32496
32816
  componentId: "sc-xuouuf-0"
32497
32817
  })(["p{margin:0;margin-left:0.5rem;font-size:10px;}width:100%;"]);
@@ -32935,7 +33255,7 @@ var ConfirmModal = function ConfirmModal(_ref) {
32935
33255
  e.stopPropagation();
32936
33256
  onClose();
32937
33257
  };
32938
- return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$t, {
33258
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Background, null), React__default.createElement(Container$u, {
32939
33259
  onClick: handleClose
32940
33260
  }, React__default.createElement(DraggableContainer, {
32941
33261
  width: "auto",
@@ -32958,7 +33278,7 @@ var Background = /*#__PURE__*/styled__default.div.withConfig({
32958
33278
  displayName: "ConfirmModal__Background",
32959
33279
  componentId: "sc-11qkyu1-0"
32960
33280
  })(["position:absolute;width:100%;height:100%;background-color:#000000;opacity:0.5;left:0;top:0;z-index:1000;"]);
32961
- var Container$t = /*#__PURE__*/styled__default.div.withConfig({
33281
+ var Container$u = /*#__PURE__*/styled__default.div.withConfig({
32962
33282
  displayName: "ConfirmModal__Container",
32963
33283
  componentId: "sc-11qkyu1-1"
32964
33284
  })(["position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:1001;"]);
@@ -33013,7 +33333,7 @@ var ColorSelector = function ColorSelector(_ref) {
33013
33333
  cancelDrag: ".react-colorful",
33014
33334
  width: "25rem",
33015
33335
  onCloseButton: onClose
33016
- }, React__default.createElement(Container$u, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(ColorPickerWrapper, null, React__default.createElement(reactColorful.HexColorPicker, {
33336
+ }, React__default.createElement(Container$v, null, React__default.createElement(Header$3, null, "Select Color"), React__default.createElement(ColorPickerWrapper, null, React__default.createElement(reactColorful.HexColorPicker, {
33017
33337
  color: currentColor,
33018
33338
  onChange: function onChange(color) {
33019
33339
  setCurrentColor(color);
@@ -33029,7 +33349,7 @@ var ColorSelector = function ColorSelector(_ref) {
33029
33349
  onClose: handleClose
33030
33350
  }));
33031
33351
  };
33032
- var Container$u = /*#__PURE__*/styled__default.div.withConfig({
33352
+ var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33033
33353
  displayName: "ItemPropertyColorSelector__Container",
33034
33354
  componentId: "sc-me1r4z-0"
33035
33355
  })(["text-align:center;background:inherit;display:flex;flex-direction:column;gap:1.5rem;align-items:center;width:100%;max-width:24rem;margin:0 auto;"]);
@@ -33385,7 +33705,7 @@ var ListMenu = function ListMenu(_ref) {
33385
33705
  onSelected = _ref.onSelected,
33386
33706
  x = _ref.x,
33387
33707
  y = _ref.y;
33388
- return React__default.createElement(Container$v, {
33708
+ return React__default.createElement(Container$w, {
33389
33709
  x: x,
33390
33710
  y: y
33391
33711
  }, React__default.createElement("ul", {
@@ -33402,7 +33722,7 @@ var ListMenu = function ListMenu(_ref) {
33402
33722
  }, (params == null ? void 0 : params.text) || 'No text');
33403
33723
  })));
33404
33724
  };
33405
- var Container$v = /*#__PURE__*/styled__default.div.withConfig({
33725
+ var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33406
33726
  displayName: "ListMenu__Container",
33407
33727
  componentId: "sc-i9097t-0"
33408
33728
  })(["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) {
@@ -33421,7 +33741,7 @@ var Pager = function Pager(_ref) {
33421
33741
  itemsPerPage = _ref.itemsPerPage,
33422
33742
  onPageChange = _ref.onPageChange;
33423
33743
  var totalPages = Math.ceil(totalItems / itemsPerPage);
33424
- return React__default.createElement(Container$w, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33744
+ return React__default.createElement(Container$x, null, React__default.createElement("p", null, "Total items: ", totalItems), React__default.createElement(PagerContainer, null, React__default.createElement("button", {
33425
33745
  disabled: currentPage === 1,
33426
33746
  onPointerDown: function onPointerDown() {
33427
33747
  return onPageChange(Math.max(currentPage - 1, 1));
@@ -33435,7 +33755,7 @@ var Pager = function Pager(_ref) {
33435
33755
  }
33436
33756
  }, '>')));
33437
33757
  };
33438
- var Container$w = /*#__PURE__*/styled__default.div.withConfig({
33758
+ var Container$x = /*#__PURE__*/styled__default.div.withConfig({
33439
33759
  displayName: "Pager__Container",
33440
33760
  componentId: "sc-1ekmf50-0"
33441
33761
  })(["display:flex;flex-direction:column;align-items:center;p{margin:0;font-size:", ";}"], uiFonts.size.xsmall);
@@ -33956,13 +34276,13 @@ var TabBody = function TabBody(_ref) {
33956
34276
  children = _ref.children,
33957
34277
  styles = _ref.styles,
33958
34278
  centerContent = _ref.centerContent;
33959
- return React__default.createElement(Container$x, {
34279
+ return React__default.createElement(Container$y, {
33960
34280
  styles: styles,
33961
34281
  "data-tab-id": id,
33962
34282
  centerContent: centerContent
33963
34283
  }, children);
33964
34284
  };
33965
- var Container$x = /*#__PURE__*/styled__default.div.withConfig({
34285
+ var Container$y = /*#__PURE__*/styled__default.div.withConfig({
33966
34286
  displayName: "TabBody__Container",
33967
34287
  componentId: "sc-196oof2-0"
33968
34288
  })(["width:", ";height:", ";overflow-y:auto;display:", ";justify-content:", ";align-items:", ";"], function (props) {
@@ -34614,7 +34934,7 @@ var ProgressBar = function ProgressBar(_ref) {
34614
34934
  }
34615
34935
  return value * 100 / max;
34616
34936
  };
34617
- return React__default.createElement(Container$y, {
34937
+ return React__default.createElement(Container$z, {
34618
34938
  className: "rpgui-progress",
34619
34939
  "data-value": calculatePercentageValue(max, value) / 100,
34620
34940
  "data-rpguitype": "progress",
@@ -34644,7 +34964,7 @@ var TextOverlay$1 = /*#__PURE__*/styled__default.div.withConfig({
34644
34964
  displayName: "ProgressBar__TextOverlay",
34645
34965
  componentId: "sc-qa6fzh-1"
34646
34966
  })(["width:100%;position:relative;"]);
34647
- var Container$y = /*#__PURE__*/styled__default.div.withConfig({
34967
+ var Container$z = /*#__PURE__*/styled__default.div.withConfig({
34648
34968
  displayName: "ProgressBar__Container",
34649
34969
  componentId: "sc-qa6fzh-2"
34650
34970
  })(["display:flex;flex-direction:column;min-width:", "px;width:", "%;justify-content:start;align-items:flex-start;", " @media (max-width:950px){transform:scale(", ");}"], function (props) {
@@ -34785,17 +35105,17 @@ var QuestList = function QuestList(_ref) {
34785
35105
  return React__default.createElement(QuestCard, {
34786
35106
  key: i,
34787
35107
  style: styles == null ? void 0 : styles.card
34788
- }, React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35108
+ }, React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34789
35109
  style: styles == null ? void 0 : styles.label
34790
35110
  }, "Title:"), React__default.createElement(Value$2, {
34791
35111
  style: styles == null ? void 0 : styles.value
34792
- }, formatQuestText(quest.title))), React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35112
+ }, formatQuestText(quest.title))), React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34793
35113
  style: styles == null ? void 0 : styles.label
34794
35114
  }, "Status:"), React__default.createElement(Value$2, {
34795
35115
  style: _extends({}, styles == null ? void 0 : styles.value, {
34796
35116
  color: getQuestStatusColor(quest.status)
34797
35117
  })
34798
- }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React__default.createElement(QuestItem, null, React__default.createElement(Label$2, {
35118
+ }, (_formatQuestStatus = formatQuestStatus(quest.status)) != null ? _formatQuestStatus : 'Unknown')), React__default.createElement(QuestItem, null, React__default.createElement(Label$3, {
34799
35119
  style: styles == null ? void 0 : styles.label
34800
35120
  }, "Description:"), React__default.createElement(Value$2, {
34801
35121
  style: styles == null ? void 0 : styles.value
@@ -34814,7 +35134,7 @@ var QuestItem = /*#__PURE__*/styled__default.div.withConfig({
34814
35134
  displayName: "QuestList__QuestItem",
34815
35135
  componentId: "sc-1c1y8sp-2"
34816
35136
  })(["display:flex;margin-bottom:5px;flex-wrap:wrap;&:last-child{margin-bottom:0;}"]);
34817
- var Label$2 = /*#__PURE__*/styled__default.span.withConfig({
35137
+ var Label$3 = /*#__PURE__*/styled__default.span.withConfig({
34818
35138
  displayName: "QuestList__Label",
34819
35139
  componentId: "sc-1c1y8sp-3"
34820
35140
  })(["font-weight:bold;color:", " !important;margin-right:10px;"], uiColors.yellow);
@@ -34885,9 +35205,9 @@ var InputRadio = function InputRadio(_ref) {
34885
35205
 
34886
35206
  var RPGUIScrollbar = function RPGUIScrollbar(_ref) {
34887
35207
  var children = _ref.children;
34888
- return React__default.createElement(Container$z, null, children);
35208
+ return React__default.createElement(Container$A, null, children);
34889
35209
  };
34890
- var Container$z = /*#__PURE__*/styled__default.div.withConfig({
35210
+ var Container$A = /*#__PURE__*/styled__default.div.withConfig({
34891
35211
  displayName: "RPGUIScrollbar__Container",
34892
35212
  componentId: "sc-p3msmb-0"
34893
35213
  })([".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;}"]);
@@ -35043,7 +35363,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35043
35363
  margin = _ref$margin === void 0 ? 20 : _ref$margin;
35044
35364
  // Ensure the width is at least 1% if value is greater than 0
35045
35365
  var width = value > 0 ? Math.max(1, Math.min(100, value)) : 0;
35046
- return React__default.createElement(Container$A, {
35366
+ return React__default.createElement(Container$B, {
35047
35367
  className: "simple-progress-bar"
35048
35368
  }, React__default.createElement(ProgressBarContainer, {
35049
35369
  margin: margin
@@ -35052,7 +35372,7 @@ var SimpleProgressBar = function SimpleProgressBar(_ref) {
35052
35372
  bgColor: bgColor
35053
35373
  }))));
35054
35374
  };
35055
- var Container$A = /*#__PURE__*/styled__default.div.withConfig({
35375
+ var Container$B = /*#__PURE__*/styled__default.div.withConfig({
35056
35376
  displayName: "SimpleProgressBar__Container",
35057
35377
  componentId: "sc-mbeil3-0"
35058
35378
  })(["display:flex;justify-content:center;align-items:center;width:100%;"]);
@@ -35385,7 +35705,7 @@ var SocialModal = function SocialModal(_ref) {
35385
35705
  title: "Social Channels",
35386
35706
  width: "500px",
35387
35707
  onCloseButton: onClose
35388
- }, React__default.createElement(Container$B, null, React__default.createElement(HeaderImage, {
35708
+ }, React__default.createElement(Container$C, null, React__default.createElement(HeaderImage, {
35389
35709
  src: img$9,
35390
35710
  alt: ""
35391
35711
  }), React__default.createElement(ButtonsContainer$1, null, React__default.createElement(MainButtons, null, React__default.createElement(SocialButton$1, {
@@ -35403,7 +35723,7 @@ var SocialModal = function SocialModal(_ref) {
35403
35723
  onClick: handleWhatsAppClick
35404
35724
  }, React__default.createElement(fa.FaWhatsapp, null), " Join WhatsApp")))));
35405
35725
  };
35406
- var Container$B = /*#__PURE__*/styled__default.div.withConfig({
35726
+ var Container$C = /*#__PURE__*/styled__default.div.withConfig({
35407
35727
  displayName: "SocialModal__Container",
35408
35728
  componentId: "sc-tbjhp9-0"
35409
35729
  })(["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% );}"]);
@@ -35449,7 +35769,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35449
35769
  castingType = spell.castingType,
35450
35770
  cooldown = spell.cooldown,
35451
35771
  maxDistanceGrid = spell.maxDistanceGrid;
35452
- 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", {
35772
+ 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", {
35453
35773
  className: "label"
35454
35774
  }, "Casting Type:"), React__default.createElement("div", {
35455
35775
  className: "value"
@@ -35475,7 +35795,7 @@ var SpellInfo$1 = function SpellInfo(_ref) {
35475
35795
  className: "value"
35476
35796
  }, requiredItem))), React__default.createElement(Description$4, null, description));
35477
35797
  };
35478
- var Container$C = /*#__PURE__*/styled__default.div.withConfig({
35798
+ var Container$D = /*#__PURE__*/styled__default.div.withConfig({
35479
35799
  displayName: "SpellInfo__Container",
35480
35800
  componentId: "sc-4hbw3q-0"
35481
35801
  })(["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);
@@ -35529,7 +35849,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35529
35849
  var _ref$current;
35530
35850
  (_ref$current = ref.current) == null ? void 0 : _ref$current.classList.add('fadeOut');
35531
35851
  };
35532
- return React__default.createElement(ModalPortal, null, React__default.createElement(Container$D, {
35852
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Container$E, {
35533
35853
  ref: ref,
35534
35854
  onTouchEnd: function onTouchEnd() {
35535
35855
  handleFadeOut();
@@ -35554,7 +35874,7 @@ var MobileSpellTooltip = function MobileSpellTooltip(_ref) {
35554
35874
  }, option.text);
35555
35875
  }))));
35556
35876
  };
35557
- var Container$D = /*#__PURE__*/styled__default.div.withConfig({
35877
+ var Container$E = /*#__PURE__*/styled__default.div.withConfig({
35558
35878
  displayName: "MobileSpellTooltip__Container",
35559
35879
  componentId: "sc-6p7uvr-0"
35560
35880
  })(["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;}"]);
@@ -35595,13 +35915,13 @@ var MagicTooltip = function MagicTooltip(_ref) {
35595
35915
  }
35596
35916
  return;
35597
35917
  }, []);
35598
- return React__default.createElement(ModalPortal, null, React__default.createElement(Container$E, {
35918
+ return React__default.createElement(ModalPortal, null, React__default.createElement(Container$F, {
35599
35919
  ref: ref
35600
35920
  }, React__default.createElement(SpellInfoDisplay, {
35601
35921
  spell: spell
35602
35922
  })));
35603
35923
  };
35604
- var Container$E = /*#__PURE__*/styled__default.div.withConfig({
35924
+ var Container$F = /*#__PURE__*/styled__default.div.withConfig({
35605
35925
  displayName: "SpellTooltip__Container",
35606
35926
  componentId: "sc-1go0gwg-0"
35607
35927
  })(["position:absolute;z-index:100;pointer-events:none;left:0;top:0;opacity:0;transition:opacity 0.08s;"]);
@@ -35674,7 +35994,7 @@ var Spell = function Spell(_ref) {
35674
35994
  var IMAGE_SCALE = 2;
35675
35995
  return React__default.createElement(SpellInfoWrapper, {
35676
35996
  spell: spell
35677
- }, React__default.createElement(Container$F, {
35997
+ }, React__default.createElement(Container$G, {
35678
35998
  onPointerUp: onPointerUp == null ? void 0 : onPointerUp.bind(null, spellKey),
35679
35999
  isSettingShortcut: isSettingShortcut && !disabled,
35680
36000
  className: "spell"
@@ -35693,7 +36013,7 @@ var Spell = function Spell(_ref) {
35693
36013
  className: "mana"
35694
36014
  }, manaCost))));
35695
36015
  };
35696
- var Container$F = /*#__PURE__*/styled__default.button.withConfig({
36016
+ var Container$G = /*#__PURE__*/styled__default.button.withConfig({
35697
36017
  displayName: "Spell__Container",
35698
36018
  componentId: "sc-j96fa2-0"
35699
36019
  })(["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) {
@@ -35772,7 +36092,7 @@ var Spellbook = function Spellbook(_ref) {
35772
36092
  height: "inherit",
35773
36093
  cancelDrag: "#spellbook-search, #shortcuts_list, .spell",
35774
36094
  scale: scale
35775
- }, React__default.createElement(Container$G, null, React__default.createElement(Title$d, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
36095
+ }, React__default.createElement(Container$H, null, React__default.createElement(Title$d, null, "Learned Spells"), React__default.createElement(ShortcutsSetter, {
35776
36096
  setSettingShortcutIndex: setSettingShortcutIndex,
35777
36097
  settingShortcutIndex: settingShortcutIndex,
35778
36098
  shortcuts: shortcuts,
@@ -35808,7 +36128,7 @@ var Title$d = /*#__PURE__*/styled__default.h1.withConfig({
35808
36128
  displayName: "Spellbook__Title",
35809
36129
  componentId: "sc-r02nfq-0"
35810
36130
  })(["font-size:", " !important;margin-bottom:0 !important;"], uiFonts.size.large);
35811
- var Container$G = /*#__PURE__*/styled__default.div.withConfig({
36131
+ var Container$H = /*#__PURE__*/styled__default.div.withConfig({
35812
36132
  displayName: "Spellbook__Container",
35813
36133
  componentId: "sc-r02nfq-1"
35814
36134
  })(["width:100%;height:100%;color:white;display:flex;flex-direction:column;"]);
@@ -36290,7 +36610,7 @@ var TradingMenu = function TradingMenu(_ref) {
36290
36610
  width: "500px",
36291
36611
  cancelDrag: "#TraderContainer",
36292
36612
  scale: scale
36293
- }, React__default.createElement(Container$H, null, React__default.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
36613
+ }, React__default.createElement(Container$I, null, React__default.createElement(Title$e, null, type.charAt(0).toUpperCase() + type.slice(1), " Menu"), React__default.createElement("hr", {
36294
36614
  className: "golden"
36295
36615
  }), React__default.createElement(ScrollWrapper, {
36296
36616
  id: "TraderContainer"
@@ -36318,7 +36638,7 @@ var TradingMenu = function TradingMenu(_ref) {
36318
36638
  onPointerDown: onClose
36319
36639
  }, "Cancel"))));
36320
36640
  };
36321
- var Container$H = /*#__PURE__*/styled__default.div.withConfig({
36641
+ var Container$I = /*#__PURE__*/styled__default.div.withConfig({
36322
36642
  displayName: "TradingMenu__Container",
36323
36643
  componentId: "sc-1wjsz1l-0"
36324
36644
  })(["width:100%;"]);
@@ -36352,11 +36672,11 @@ var Truncate = function Truncate(_ref) {
36352
36672
  var _ref$maxLines = _ref.maxLines,
36353
36673
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
36354
36674
  children = _ref.children;
36355
- return React__default.createElement(Container$I, {
36675
+ return React__default.createElement(Container$J, {
36356
36676
  maxLines: maxLines
36357
36677
  }, children);
36358
36678
  };
36359
- var Container$I = /*#__PURE__*/styled__default.div.withConfig({
36679
+ var Container$J = /*#__PURE__*/styled__default.div.withConfig({
36360
36680
  displayName: "Truncate__Container",
36361
36681
  componentId: "sc-6x00qb-0"
36362
36682
  })(["display:-webkit-box;max-width:100%;max-height:100%;-webkit-line-clamp:", ";-webkit-box-orient:vertical;overflow:hidden;"], function (props) {
@@ -36464,7 +36784,7 @@ var TutorialStepper = /*#__PURE__*/React__default.memo(function (_ref) {
36464
36784
  };
36465
36785
  });
36466
36786
  }, [lessons, imageStyle]);
36467
- return React__default.createElement(Container$J, null, React__default.createElement(Stepper, {
36787
+ return React__default.createElement(Container$K, null, React__default.createElement(Stepper, {
36468
36788
  steps: generateLessons,
36469
36789
  finalCTAButton: {
36470
36790
  label: 'Close',
@@ -36481,7 +36801,7 @@ var LessonBody = /*#__PURE__*/styled__default.div.withConfig({
36481
36801
  displayName: "TutorialStepper__LessonBody",
36482
36802
  componentId: "sc-7tgzv2-1"
36483
36803
  })([""]);
36484
- var Container$J = /*#__PURE__*/styled__default.div.withConfig({
36804
+ var Container$K = /*#__PURE__*/styled__default.div.withConfig({
36485
36805
  displayName: "TutorialStepper__Container",
36486
36806
  componentId: "sc-7tgzv2-2"
36487
36807
  })(["width:80%;max-width:600px;@media (max-width:600px){width:95%;}"]);