@rpg-engine/long-bow 0.8.72 → 0.8.74

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.
@@ -2,10 +2,10 @@ import React, { useState, useEffect, Component, useRef, useCallback, useContext,
2
2
  import styled, { css, keyframes, createGlobalStyle } from 'styled-components';
3
3
  import { BeatLoader } from 'react-spinners';
4
4
  import { v4 } from 'uuid';
5
- import { GRID_WIDTH, GRID_HEIGHT, ShortcutType, getItemTextureKeyPath, ItemContainerType, ItemType, DepotSocketEvents, ItemSocketEvents, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemQualityLevel, ItemRarities, ItemSubType, isMobile, TaskType, TaskStatus, RewardType, isMobileOrTablet, ItemSlotType, NPCSubtype, EntityAttackType, NPCAlignment, VideoGuideCategory, VideoGuideLanguage, CharacterClass, QuestStatus, getSPForLevel, getXPForLevel, MetadataType, PurchaseType, UserAccountTypes, PaymentCurrency, PeriodOfDay } from '@rpg-engine/shared';
5
+ import { GRID_WIDTH, GRID_HEIGHT, ShortcutType, getItemTextureKeyPath, ItemContainerType, ItemType, DepotSocketEvents, ItemSocketEvents, ItemSocketEventsDisplayLabels, ActionsForInventory, ActionsForEquipmentSet, ActionsForLoot, ActionsForMapContainer, ItemQualityLevel, ItemRarities, ItemSubType, isMobile, TaskType, TaskStatus, isMobileOrTablet, RewardType, ItemSlotType, NPCSubtype, EntityAttackType, NPCAlignment, VideoGuideCategory, VideoGuideLanguage, CharacterClass, QuestStatus, getSPForLevel, getXPForLevel, MetadataType, PurchaseType, UserAccountTypes, PaymentCurrency, PeriodOfDay } from '@rpg-engine/shared';
6
6
  import dayjs from 'dayjs';
7
7
  import { ErrorBoundary as ErrorBoundary$1 } from 'react-error-boundary';
8
- import { FaTimes, FaDiscord, FaWhatsapp, FaSearch, FaThumbtack, FaBoxOpen, FaChevronLeft, FaChevronRight, FaChevronUp, FaChevronDown, FaReddit, FaTrash, FaShoppingBag, FaInfoCircle, FaCartPlus, FaArrowLeft, FaHistory, FaShoppingCart } from 'react-icons/fa';
8
+ import { FaTimes, FaDiscord, FaWhatsapp, FaSearch, FaThumbtack, FaBoxOpen, FaChevronLeft, FaChevronRight, FaClipboardList, FaChevronUp, FaChevronDown, FaReddit, FaTrash, FaShoppingBag, FaInfoCircle, FaCartPlus, FaArrowLeft, FaHistory, FaShoppingCart } from 'react-icons/fa';
9
9
  import { RxMagnifyingGlass, RxCross2 } from 'react-icons/rx';
10
10
  import { IoMdContract, IoMdExpand } from 'react-icons/io';
11
11
  import Draggable from 'react-draggable';
@@ -29357,6 +29357,45 @@ var EmptyState = /*#__PURE__*/styled.div.withConfig({
29357
29357
  componentId: "sc-19q95ue-15"
29358
29358
  })(["position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:", ";width:100%;padding:2rem;svg{font-size:3rem;margin-bottom:1rem;opacity:0.7;}p{font-family:'Press Start 2P',cursive;font-size:0.9rem;margin:0;}"], uiColors.lightGray);
29359
29359
 
29360
+ var SearchBar = function SearchBar(_ref) {
29361
+ var value = _ref.value,
29362
+ _onChange = _ref.onChange,
29363
+ placeholder = _ref.placeholder,
29364
+ className = _ref.className,
29365
+ rightElement = _ref.rightElement;
29366
+ var hasRightElement = Boolean(rightElement);
29367
+ return React.createElement(Container$g, {
29368
+ className: className
29369
+ }, React.createElement(Input$1, {
29370
+ type: "text",
29371
+ value: value,
29372
+ onChange: function onChange(e) {
29373
+ return _onChange(e.target.value);
29374
+ },
29375
+ placeholder: placeholder,
29376
+ className: "rpgui-input",
29377
+ "$hasRightElement": hasRightElement
29378
+ }), React.createElement(IconContainer, null, React.createElement(SearchIcon, null), rightElement));
29379
+ };
29380
+ var Container$g = /*#__PURE__*/styled.div.withConfig({
29381
+ displayName: "SearchBar__Container",
29382
+ componentId: "sc-13n8z02-0"
29383
+ })(["position:relative;width:100%;"]);
29384
+ var Input$1 = /*#__PURE__*/styled.input.withConfig({
29385
+ displayName: "SearchBar__Input",
29386
+ componentId: "sc-13n8z02-1"
29387
+ })(["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) {
29388
+ return props.$hasRightElement ? '6rem' : '2.5rem';
29389
+ });
29390
+ var IconContainer = /*#__PURE__*/styled.div.withConfig({
29391
+ displayName: "SearchBar__IconContainer",
29392
+ componentId: "sc-13n8z02-2"
29393
+ })(["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;}"]);
29394
+ var SearchIcon = /*#__PURE__*/styled(FaSearch).withConfig({
29395
+ displayName: "SearchBar__SearchIcon",
29396
+ componentId: "sc-13n8z02-3"
29397
+ })(["font-size:1rem;color:#f59e0b;filter:drop-shadow(0 0 2px rgba(245,158,11,0.3));"]);
29398
+
29360
29399
  var formatTaskKey = function formatTaskKey(key) {
29361
29400
  var formatted = key.replace(/[-_]/g, ' ');
29362
29401
  formatted = formatted.replace(/([A-Z])/g, ' $1');
@@ -29441,6 +29480,7 @@ var DailyRewardsTooltip = function DailyRewardsTooltip(_ref) {
29441
29480
  var _React$useState = React.useState(true),
29442
29481
  isExpanded = _React$useState[0],
29443
29482
  setIsExpanded = _React$useState[1];
29483
+ var isMobile = isMobileOrTablet();
29444
29484
  var sortedRewards = React.useMemo(function () {
29445
29485
  var _REWARD_PRIORITY;
29446
29486
  if (!rewards) return [];
@@ -29458,21 +29498,28 @@ var DailyRewardsTooltip = function DailyRewardsTooltip(_ref) {
29458
29498
  };
29459
29499
  return React.createElement(TooltipContainer$1, null, React.createElement(CollapsibleHeader, {
29460
29500
  onClick: toggleExpand
29461
- }, React.createElement(HeaderText, null, "Rewards?"), React.createElement(ExpandIcon, null, isExpanded ? '▼' : '▶')), isExpanded && React.createElement(CollapsibleContent, null, React.createElement(RewardsList, null, sortedRewards.map(function (reward, index) {
29501
+ }, React.createElement(HeaderText, null, "Rewards?"), React.createElement(ExpandIcon, null, isExpanded ? '▼' : '▶')), isExpanded && React.createElement(CollapsibleContent, null, React.createElement(RewardsList, {
29502
+ isMobile: isMobile,
29503
+ rewardCount: sortedRewards.length
29504
+ }, sortedRewards.map(function (reward, index) {
29462
29505
  var _reward$texturePath, _reward$key;
29463
29506
  return React.createElement(RewardItem, {
29464
29507
  key: index
29465
- }, React.createElement(SpriteFromAtlas, {
29508
+ }, React.createElement(RewardIcon, null, React.createElement(SpriteFromAtlas, {
29466
29509
  atlasJSON: itemsAtlasJSON,
29467
29510
  atlasIMG: itemsAtlasIMG,
29468
29511
  spriteKey: (_reward$texturePath = reward.texturePath) != null ? _reward$texturePath : 'check.png',
29469
- width: 24,
29470
- height: 24,
29471
- imgScale: 1.75
29472
- }), React.createElement(ItemContent, null, React.createElement(RewardLabel, null, React.createElement(Ellipsis, {
29512
+ width: isMobile ? 16 : 18,
29513
+ height: isMobile ? 16 : 18,
29514
+ imgScale: isMobile ? 1.5 : 1.5
29515
+ })), React.createElement(RewardContent, null, React.createElement(RewardLabel, {
29516
+ isMobile: isMobile
29517
+ }, React.createElement(Ellipsis, {
29473
29518
  maxWidth: "100%",
29474
- maxLines: 2
29475
- }, formatTaskKey((_reward$key = reward.key) != null ? _reward$key : reward.type), ":"))), React.createElement(RewardValue, null, "x", reward.quantity));
29519
+ maxLines: 1
29520
+ }, formatTaskKey((_reward$key = reward.key) != null ? _reward$key : reward.type))), React.createElement(RewardValue, {
29521
+ isMobile: isMobile
29522
+ }, "\xD7", reward.quantity)));
29476
29523
  }))));
29477
29524
  };
29478
29525
  var TooltipContainer$1 = /*#__PURE__*/styled.div.withConfig({
@@ -29482,7 +29529,13 @@ var TooltipContainer$1 = /*#__PURE__*/styled.div.withConfig({
29482
29529
  var RewardsList = /*#__PURE__*/styled.div.withConfig({
29483
29530
  displayName: "DailyRewardsTooltip__RewardsList",
29484
29531
  componentId: "sc-wxzcu4-1"
29485
- })(["display:flex;flex-direction:column;gap:8px;width:100%;"]);
29532
+ })(["display:grid;grid-template-columns:", ";gap:", ";column-gap:", ";width:100%;"], function (props) {
29533
+ return props.rewardCount > 2 && !props.isMobile ? 'repeat(2, 1fr)' : '1fr';
29534
+ }, function (props) {
29535
+ return props.isMobile ? '6px' : '8px';
29536
+ }, function (props) {
29537
+ return props.rewardCount > 2 && !props.isMobile ? '16px' : '8px';
29538
+ });
29486
29539
  var CollapsibleHeader = /*#__PURE__*/styled.div.withConfig({
29487
29540
  displayName: "DailyRewardsTooltip__CollapsibleHeader",
29488
29541
  componentId: "sc-wxzcu4-2"
@@ -29490,37 +29543,45 @@ var CollapsibleHeader = /*#__PURE__*/styled.div.withConfig({
29490
29543
  var HeaderText = /*#__PURE__*/styled.span.withConfig({
29491
29544
  displayName: "DailyRewardsTooltip__HeaderText",
29492
29545
  componentId: "sc-wxzcu4-3"
29493
- })(["color:", " !important;"], uiColors.yellow);
29546
+ })(["color:", " !important;font-size:0.75rem;font-weight:500;"], uiColors.yellow);
29494
29547
  var ExpandIcon = /*#__PURE__*/styled.span.withConfig({
29495
29548
  displayName: "DailyRewardsTooltip__ExpandIcon",
29496
29549
  componentId: "sc-wxzcu4-4"
29497
- })(["color:", ";font-size:0.8rem;margin-left:8px;"], uiColors.yellow);
29550
+ })(["color:", ";font-size:0.7rem;margin-left:8px;"], uiColors.yellow);
29498
29551
  var CollapsibleContent = /*#__PURE__*/styled.div.withConfig({
29499
29552
  displayName: "DailyRewardsTooltip__CollapsibleContent",
29500
29553
  componentId: "sc-wxzcu4-5"
29501
- })(["display:block;padding-top:8px;width:100%;"]);
29554
+ })(["display:block;padding-top:6px;width:100%;"]);
29502
29555
  var RewardItem = /*#__PURE__*/styled.div.withConfig({
29503
29556
  displayName: "DailyRewardsTooltip__RewardItem",
29504
29557
  componentId: "sc-wxzcu4-6"
29505
- })(["display:flex;align-items:center;gap:12px;width:100%;min-width:200px;"]);
29506
- var ItemContent = /*#__PURE__*/styled.div.withConfig({
29507
- displayName: "DailyRewardsTooltip__ItemContent",
29558
+ })(["display:flex;align-items:center;gap:4px;width:100%;padding:2px;min-height:22px;"]);
29559
+ var RewardIcon = /*#__PURE__*/styled.div.withConfig({
29560
+ displayName: "DailyRewardsTooltip__RewardIcon",
29508
29561
  componentId: "sc-wxzcu4-7"
29509
- })(["display:flex;flex-direction:column;justify-content:center;"]);
29562
+ })(["flex-shrink:0;width:20px;height:20px;display:flex;align-items:flex-start;justify-content:flex-start;font-style:normal;margin-right:4px;*{font-style:normal !important;}position:relative;left:-0.5rem;top:-0.4rem;"]);
29563
+ var RewardContent = /*#__PURE__*/styled.div.withConfig({
29564
+ displayName: "DailyRewardsTooltip__RewardContent",
29565
+ componentId: "sc-wxzcu4-8"
29566
+ })(["display:flex;justify-content:space-between;align-items:center;flex:1;min-width:0;"]);
29510
29567
  var RewardLabel = /*#__PURE__*/styled.span.withConfig({
29511
29568
  displayName: "DailyRewardsTooltip__RewardLabel",
29512
- componentId: "sc-wxzcu4-8"
29513
- })(["color:", ";font-size:0.9rem;line-height:1.2;padding-top:15px;display:inline-flex;align-items:center;"], uiColors.yellow);
29569
+ componentId: "sc-wxzcu4-9"
29570
+ })(["color:", ";font-size:", ";line-height:1.2;display:flex;align-items:center;flex:1;min-width:0;"], uiColors.yellow, function (props) {
29571
+ return props.isMobile ? '0.65rem' : '0.7rem';
29572
+ });
29514
29573
  var RewardValue = /*#__PURE__*/styled.span.withConfig({
29515
29574
  displayName: "DailyRewardsTooltip__RewardValue",
29516
- componentId: "sc-wxzcu4-9"
29517
- })(["color:", ";font-size:0.9rem;margin-left:auto;line-height:1.2;display:inline-flex;align-items:center;min-width:50px;text-align:right;"], uiColors.yellow);
29575
+ componentId: "sc-wxzcu4-10"
29576
+ })(["color:", ";font-size:", ";line-height:1.2;display:flex;align-items:center;font-weight:600;flex-shrink:0;margin-left:8px;"], uiColors.green, function (props) {
29577
+ return props.isMobile ? '0.6rem' : '0.65rem';
29578
+ });
29518
29579
 
29519
29580
  var ReadOnlyCheckItem = function ReadOnlyCheckItem(_ref) {
29520
29581
  var labelLeft = _ref.labelLeft,
29521
29582
  labelRight = _ref.labelRight,
29522
29583
  checked = _ref.checked;
29523
- return React.createElement(Container$g, null, labelLeft && React.createElement(Label, null, labelLeft), React.createElement("div", {
29584
+ return React.createElement(Container$h, null, labelLeft && React.createElement(Label, null, labelLeft), React.createElement("div", {
29524
29585
  className: "rpgui-checkbox-container"
29525
29586
  }, React.createElement(CheckBox, {
29526
29587
  className: "rpgui-checkbox",
@@ -29531,7 +29592,7 @@ var ReadOnlyCheckItem = function ReadOnlyCheckItem(_ref) {
29531
29592
  isRight: true
29532
29593
  }, labelRight));
29533
29594
  };
29534
- var Container$g = /*#__PURE__*/styled.div.withConfig({
29595
+ var Container$h = /*#__PURE__*/styled.div.withConfig({
29535
29596
  displayName: "ReadOnlyCheckItem__Container",
29536
29597
  componentId: "sc-1peplf9-0"
29537
29598
  })(["display:flex;align-items:center;width:100%;height:20px;"]);
@@ -29618,56 +29679,6 @@ var CheckItemWrapper = /*#__PURE__*/styled.div.withConfig({
29618
29679
  componentId: "sc-hm6sp1-3"
29619
29680
  })(["display:flex;justify-content:center;width:100%;height:20px;input.rpgui-checkbox + label{margin:0 !important;padding-left:23px !important;}"]);
29620
29681
 
29621
- var TaskProgress = function TaskProgress(_ref) {
29622
- var task = _ref.task,
29623
- itemsAtlasJSON = _ref.itemsAtlasJSON,
29624
- itemsAtlasIMG = _ref.itemsAtlasIMG,
29625
- iconAtlasJSON = _ref.iconAtlasJSON,
29626
- iconAtlasIMG = _ref.iconAtlasIMG;
29627
- var difficulty = task.difficulty;
29628
- return React.createElement(ProgressContainer, null, React.createElement(ProgressList$1, null, React.createElement(ProgressItem$1, null, React.createElement(ProgressLabel, null, "Difficulty:"), React.createElement(TaskDifficulty, {
29629
- difficulty: difficulty
29630
- }, formatDifficulty(difficulty))), React.createElement(ProgressItem$1, null, React.createElement(ProgressLabel, null, "Status:"), React.createElement(StatusText, {
29631
- color: getStatusInfo(task).color
29632
- }, getStatusInfo(task).text)), React.createElement(TaskProgressDetails, {
29633
- task: task
29634
- }), task.rewards && task.rewards.length > 0 && React.createElement(ProgressItem$1, null, React.createElement(DailyRewardsTooltip, {
29635
- rewards: task.rewards,
29636
- itemsAtlasJSON: itemsAtlasJSON,
29637
- itemsAtlasIMG: itemsAtlasIMG,
29638
- iconAtlasJSON: iconAtlasJSON,
29639
- iconAtlasIMG: iconAtlasIMG
29640
- }))));
29641
- };
29642
- var ProgressContainer = /*#__PURE__*/styled.div.withConfig({
29643
- displayName: "TaskProgress__ProgressContainer",
29644
- componentId: "sc-1ejoyu-0"
29645
- })(["width:100%;position:relative;"]);
29646
- var ProgressList$1 = /*#__PURE__*/styled.div.withConfig({
29647
- displayName: "TaskProgress__ProgressList",
29648
- componentId: "sc-1ejoyu-1"
29649
- })(["display:flex;flex-direction:column;gap:6px;"]);
29650
- var ProgressItem$1 = /*#__PURE__*/styled.div.withConfig({
29651
- displayName: "TaskProgress__ProgressItem",
29652
- componentId: "sc-1ejoyu-2"
29653
- })(["display:flex;justify-content:space-between;align-items:center;"]);
29654
- var ProgressLabel = /*#__PURE__*/styled.span.withConfig({
29655
- displayName: "TaskProgress__ProgressLabel",
29656
- componentId: "sc-1ejoyu-3"
29657
- })(["color:", " !important;"], uiColors.white);
29658
- var TaskDifficulty = /*#__PURE__*/styled.span.withConfig({
29659
- displayName: "TaskProgress__TaskDifficulty",
29660
- componentId: "sc-1ejoyu-4"
29661
- })(["color:", " !important;"], function (props) {
29662
- return props.difficulty.toLowerCase() === 'challenge' ? uiColors.red : uiColors.lightGray;
29663
- });
29664
- var StatusText = /*#__PURE__*/styled.span.withConfig({
29665
- displayName: "TaskProgress__StatusText",
29666
- componentId: "sc-1ejoyu-5"
29667
- })(["color:", " !important;font-weight:bold;"], function (props) {
29668
- return props.color;
29669
- });
29670
-
29671
29682
  var DailyTaskItem = function DailyTaskItem(_ref) {
29672
29683
  var _task$name;
29673
29684
  var task = _ref.task,
@@ -29680,69 +29691,170 @@ var DailyTaskItem = function DailyTaskItem(_ref) {
29680
29691
  isRewardClaimed = _ref.isRewardClaimed;
29681
29692
  var isMobile = isMobileOrTablet();
29682
29693
  var isCompleted = task.status === TaskStatus.Completed;
29694
+ var isInProgress = task.status === TaskStatus.InProgress;
29695
+ var isNotStarted = task.status === TaskStatus.NotStarted;
29683
29696
  var isClaimed = task.claimed || isRewardClaimed;
29684
29697
  var handleClaimReward = function handleClaimReward() {
29685
29698
  onClaimReward(task.key, task.type);
29686
29699
  };
29687
- return React.createElement(TaskContainer, null, React.createElement(TaskHeader, null, iconAtlasJSON && iconAtlasIMG && React.createElement(NonInteractiveWrapper, null, React.createElement(SpriteFromAtlas, {
29700
+ return React.createElement(TaskContainer, {
29701
+ isMobile: isMobile,
29702
+ isCompleted: isCompleted,
29703
+ isInProgress: isInProgress,
29704
+ isNotStarted: isNotStarted
29705
+ }, React.createElement(TaskHeader, null, React.createElement(TaskHeaderLeft, null, iconAtlasJSON && iconAtlasIMG && React.createElement(IconWrapper, null, React.createElement(SpriteFromAtlas, {
29688
29706
  atlasJSON: iconAtlasJSON,
29689
29707
  atlasIMG: iconAtlasIMG,
29690
29708
  spriteKey: spriteKey,
29691
- width: 12,
29692
- height: 12,
29693
- imgScale: 2.75
29694
- })), React.createElement(TaskContent, null, React.createElement(TaskTitle, null, React.createElement(Ellipsis, {
29709
+ width: isMobile ? 10 : 12,
29710
+ height: isMobile ? 10 : 12,
29711
+ imgScale: 2
29712
+ })), React.createElement(TaskTitleSection, null, React.createElement(TaskTitle, {
29713
+ isMobile: isMobile
29714
+ }, React.createElement(Ellipsis, {
29695
29715
  maxWidth: "100%",
29696
- maxLines: isMobile ? 3 : 2
29697
- }, (_task$name = task.name) != null ? _task$name : formatTaskKey(task.key))), React.createElement(TaskDescription, null, React.createElement(Ellipsis, {
29716
+ maxLines: 1
29717
+ }, (_task$name = task.name) != null ? _task$name : formatTaskKey(task.key))), React.createElement(TaskMeta, {
29718
+ isMobile: isMobile
29719
+ }, React.createElement(MetaItem, null, React.createElement(MetaLabel, null, "Difficulty:"), React.createElement(TaskDifficulty, {
29720
+ difficulty: task.difficulty
29721
+ }, formatDifficulty(task.difficulty))), React.createElement(MetaDivider, null, "\u2022"), React.createElement(MetaItem, null, React.createElement(MetaLabel, null, "Status:"), React.createElement(StatusText, {
29722
+ color: getStatusInfo(task).color
29723
+ }, getStatusInfo(task).text))))), React.createElement(TaskHeaderRight, null, isClaimed && React.createElement(ClaimedBadge, {
29724
+ isMobile: isMobile
29725
+ }, "\u2713"))), React.createElement(TaskBody, null, React.createElement(TaskDescription, {
29726
+ isMobile: isMobile
29727
+ }, React.createElement(Ellipsis, {
29698
29728
  maxWidth: "100%",
29699
- maxLines: isMobile ? 5 : 3
29700
- }, task.description)))), React.createElement(TaskProgress, {
29701
- task: task,
29729
+ maxLines: isMobile ? 2 : 1
29730
+ }, task.description)), React.createElement(TaskProgressDetails, {
29731
+ task: task
29732
+ }), task.rewards && task.rewards.length > 0 && React.createElement(RewardsSection, null, React.createElement(DailyRewardsTooltip, {
29733
+ rewards: task.rewards,
29702
29734
  itemsAtlasJSON: itemsAtlasJSON,
29703
- itemsAtlasIMG: itemsAtlasIMG
29704
- }), isCompleted && !isClaimed && React.createElement(CollectWrapper, null, React.createElement(Button, {
29735
+ itemsAtlasIMG: itemsAtlasIMG,
29736
+ iconAtlasJSON: iconAtlasJSON,
29737
+ iconAtlasIMG: iconAtlasIMG
29738
+ }))), isCompleted && !isClaimed && React.createElement(TaskFooter, null, React.createElement(Button, {
29705
29739
  buttonType: ButtonTypes.RPGUIButton,
29706
29740
  onPointerDown: handleClaimReward
29707
- }, "Collect Reward")), isClaimed && React.createElement(ClaimedText, null, "Reward Claimed"));
29741
+ }, isMobile ? 'Collect Reward' : 'Collect Reward')));
29708
29742
  };
29743
+ var pulseAnimation = /*#__PURE__*/keyframes(["0%{box-shadow:0 1px 2px rgba(0,0,0,0.4);}50%{box-shadow:0 2px 8px rgba(255,215,0,0.3);}100%{box-shadow:0 1px 2px rgba(0,0,0,0.4);}"]);
29709
29744
  var TaskContainer = /*#__PURE__*/styled.div.withConfig({
29710
29745
  displayName: "DailyTaskItem__TaskContainer",
29711
29746
  componentId: "sc-45bxmt-0"
29712
- })(["background:rgba(0,0,0,0.5) !important;border:2px solid ", " !important;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px;box-shadow:0 2px 4px rgba(0,0,0,0.3);"], uiColors.darkGray);
29747
+ })(["background:rgba(0,0,0,0.6) !important;border:1px solid ", " !important;border-radius:", ";padding:", ";display:flex;flex-direction:column;gap:", ";box-shadow:0 1px 2px rgba(0,0,0,0.4);transition:all 0.2s ease;font-style:normal;width:100%;max-width:100%;box-sizing:border-box;opacity:", ";", " ", " *{font-style:normal !important;}&:hover{background:", " !important;border-color:", ";opacity:", ";}"], function (props) {
29748
+ return props.isCompleted ? uiColors.green : props.isInProgress ? uiColors.yellow : uiColors.darkGray;
29749
+ }, function (props) {
29750
+ return props.isMobile ? '4px' : '6px';
29751
+ }, function (props) {
29752
+ return props.isMobile ? '6px' : '8px';
29753
+ }, function (props) {
29754
+ return props.isMobile ? '4px' : '6px';
29755
+ }, function (props) {
29756
+ return props.isCompleted ? 1 : props.isInProgress ? 1 : 0.6;
29757
+ }, function (props) {
29758
+ return props.isNotStarted && "\n filter: grayscale(0.7);\n ";
29759
+ }, function (props) {
29760
+ return props.isInProgress && css(["animation:", " 2s ease-in-out infinite;"], pulseAnimation);
29761
+ }, function (props) {
29762
+ return props.isPinned ? 'rgba(255, 215, 0, 0.25)' : 'rgba(0, 0, 0, 0.7)';
29763
+ }, function (props) {
29764
+ return props.isPinned ? uiColors.yellow : props.isCompleted ? uiColors.green : props.isInProgress ? uiColors.yellow : uiColors.yellow;
29765
+ }, function (props) {
29766
+ return props.isNotStarted ? 0.8 : 1;
29767
+ });
29713
29768
  var TaskHeader = /*#__PURE__*/styled.div.withConfig({
29714
29769
  displayName: "DailyTaskItem__TaskHeader",
29715
29770
  componentId: "sc-45bxmt-1"
29716
- })(["display:flex;width:100%;justify-content:center;border-bottom:1.3px solid ", ";"], uiColors.darkGray);
29717
- var NonInteractiveWrapper = /*#__PURE__*/styled.div.withConfig({
29718
- displayName: "DailyTaskItem__NonInteractiveWrapper",
29771
+ })(["display:flex;width:100%;justify-content:space-between;align-items:flex-start;border-bottom:1px solid ", ";padding-bottom:6px;min-height:36px;"], uiColors.darkGray);
29772
+ var TaskHeaderLeft = /*#__PURE__*/styled.div.withConfig({
29773
+ displayName: "DailyTaskItem__TaskHeaderLeft",
29719
29774
  componentId: "sc-45bxmt-2"
29720
- })(["pointer-events:none;user-select:none;margin-top:5px;"]);
29721
- var TaskContent = /*#__PURE__*/styled.div.withConfig({
29722
- displayName: "DailyTaskItem__TaskContent",
29775
+ })(["display:flex;align-items:flex-start;gap:8px;flex:1;"]);
29776
+ var TaskHeaderRight = /*#__PURE__*/styled.div.withConfig({
29777
+ displayName: "DailyTaskItem__TaskHeaderRight",
29723
29778
  componentId: "sc-45bxmt-3"
29724
- })(["display:flex;flex-direction:column;flex:1;"]);
29725
- var TaskTitle = /*#__PURE__*/styled.h3.withConfig({
29726
- displayName: "DailyTaskItem__TaskTitle",
29779
+ })(["display:flex;align-items:center;flex-shrink:0;"]);
29780
+ var TaskTitleSection = /*#__PURE__*/styled.div.withConfig({
29781
+ displayName: "DailyTaskItem__TaskTitleSection",
29727
29782
  componentId: "sc-45bxmt-4"
29728
- })(["&&{color:", ";padding-left:10px;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,0.7);flex:1;display:block;span{color:inherit;}}"], uiColors.yellow);
29729
- var TaskDescription = /*#__PURE__*/styled.h3.withConfig({
29730
- displayName: "DailyTaskItem__TaskDescription",
29783
+ })(["display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;"]);
29784
+ var TaskMeta = /*#__PURE__*/styled.div.withConfig({
29785
+ displayName: "DailyTaskItem__TaskMeta",
29731
29786
  componentId: "sc-45bxmt-5"
29732
- })(["font-size:0.6rem !important;text-decoration:none !important;a"]);
29733
- var ClaimedText = /*#__PURE__*/styled.span.withConfig({
29734
- displayName: "DailyTaskItem__ClaimedText",
29787
+ })(["display:flex;align-items:center;gap:", ";flex-wrap:wrap;"], function (props) {
29788
+ return props.isMobile ? '6px' : '8px';
29789
+ });
29790
+ var MetaItem = /*#__PURE__*/styled.div.withConfig({
29791
+ displayName: "DailyTaskItem__MetaItem",
29735
29792
  componentId: "sc-45bxmt-6"
29736
- })(["color:", ";font-size:0.9rem;text-align:center;font-weight:bold;"], uiColors.green);
29737
- var CollectWrapper = /*#__PURE__*/styled.div.withConfig({
29738
- displayName: "DailyTaskItem__CollectWrapper",
29793
+ })(["display:flex;align-items:center;gap:4px;"]);
29794
+ var MetaLabel = /*#__PURE__*/styled.span.withConfig({
29795
+ displayName: "DailyTaskItem__MetaLabel",
29739
29796
  componentId: "sc-45bxmt-7"
29740
- })(["&&{width:100% !important;display:flex !important;justify-content:center !important;align-items:center !important;margin:5px 0 !important;}"]);
29797
+ })(["color:", ";font-size:0.65rem;opacity:0.8;"], uiColors.lightGray);
29798
+ var MetaDivider = /*#__PURE__*/styled.span.withConfig({
29799
+ displayName: "DailyTaskItem__MetaDivider",
29800
+ componentId: "sc-45bxmt-8"
29801
+ })(["color:", ";font-size:0.7rem;"], uiColors.darkGray);
29802
+ var TaskDifficulty = /*#__PURE__*/styled.span.withConfig({
29803
+ displayName: "DailyTaskItem__TaskDifficulty",
29804
+ componentId: "sc-45bxmt-9"
29805
+ })(["color:", ";font-size:0.65rem;font-weight:500;"], function (props) {
29806
+ return props.difficulty.toLowerCase() === 'challenge' ? uiColors.red : uiColors.lightGray;
29807
+ });
29808
+ var StatusText = /*#__PURE__*/styled.span.withConfig({
29809
+ displayName: "DailyTaskItem__StatusText",
29810
+ componentId: "sc-45bxmt-10"
29811
+ })(["color:", ";font-size:0.65rem;font-weight:500;"], function (props) {
29812
+ return props.color;
29813
+ });
29814
+ var ClaimedBadge = /*#__PURE__*/styled.div.withConfig({
29815
+ displayName: "DailyTaskItem__ClaimedBadge",
29816
+ componentId: "sc-45bxmt-11"
29817
+ })(["background:", ";color:white;border-radius:50%;width:", ";height:", ";display:flex;align-items:center;justify-content:center;font-size:", ";font-weight:bold;"], uiColors.green, function (props) {
29818
+ return props.isMobile ? '18px' : '20px';
29819
+ }, function (props) {
29820
+ return props.isMobile ? '18px' : '20px';
29821
+ }, function (props) {
29822
+ return props.isMobile ? '10px' : '12px';
29823
+ });
29824
+ var TaskBody = /*#__PURE__*/styled.div.withConfig({
29825
+ displayName: "DailyTaskItem__TaskBody",
29826
+ componentId: "sc-45bxmt-12"
29827
+ })(["display:flex;flex-direction:column;gap:8px;padding:6px 0;"]);
29828
+ var RewardsSection = /*#__PURE__*/styled.div.withConfig({
29829
+ displayName: "DailyTaskItem__RewardsSection",
29830
+ componentId: "sc-45bxmt-13"
29831
+ })(["margin-top:4px;"]);
29832
+ var TaskFooter = /*#__PURE__*/styled.div.withConfig({
29833
+ displayName: "DailyTaskItem__TaskFooter",
29834
+ componentId: "sc-45bxmt-14"
29835
+ })(["display:flex;justify-content:center;padding-top:6px;border-top:1px solid ", ";"], uiColors.darkGray);
29836
+ var IconWrapper = /*#__PURE__*/styled.div.withConfig({
29837
+ displayName: "DailyTaskItem__IconWrapper",
29838
+ componentId: "sc-45bxmt-15"
29839
+ })(["pointer-events:none;user-select:none;flex-shrink:0;width:28px;height:28px;display:flex;align-items:flex-start;justify-content:flex-start;margin-top:2px;margin-left:2px;font-style:normal;*{font-style:normal !important;}"]);
29840
+ var TaskTitle = /*#__PURE__*/styled.h3.withConfig({
29841
+ displayName: "DailyTaskItem__TaskTitle",
29842
+ componentId: "sc-45bxmt-16"
29843
+ })(["&&{color:", ";margin:0;padding:0;text-align:left;font-size:", ";line-height:1.2;text-shadow:1px 1px 2px rgba(0,0,0,0.7);font-weight:600;word-wrap:break-word;overflow-wrap:break-word;span{color:inherit;}}"], uiColors.yellow, function (props) {
29844
+ return props.isMobile ? '0.85rem' : '0.9rem';
29845
+ });
29846
+ var TaskDescription = /*#__PURE__*/styled.div.withConfig({
29847
+ displayName: "DailyTaskItem__TaskDescription",
29848
+ componentId: "sc-45bxmt-17"
29849
+ })(["color:", ";font-size:", ";line-height:1.4;margin:0;opacity:0.9;word-wrap:break-word;overflow-wrap:break-word;"], uiColors.lightGray, function (props) {
29850
+ return props.isMobile ? '0.7rem' : '0.75rem';
29851
+ });
29741
29852
 
29742
29853
  var GlobalDailyProgress = function GlobalDailyProgress(_ref) {
29743
29854
  var tasks = _ref.tasks,
29744
29855
  onClaimAllRewards = _ref.onClaimAllRewards,
29745
29856
  globalRewardClaimed = _ref.globalRewardClaimed;
29857
+ var isMobile = isMobileOrTablet();
29746
29858
  var totalTasks = tasks.length;
29747
29859
  var completedTasks = tasks.filter(function (task) {
29748
29860
  return task.status === TaskStatus.Completed;
@@ -29766,47 +29878,65 @@ var GlobalDailyProgress = function GlobalDailyProgress(_ref) {
29766
29878
  tasks: taskIdentifiers
29767
29879
  });
29768
29880
  };
29769
- return React.createElement(GlobalProgressContainer, null, React.createElement(HeaderContainer$1, null, React.createElement(GlobeIcon, null, "\uD83C\uDF0D"), React.createElement(ProgressText, null, "Global Tasks Completed: ", completedTasks, "/", totalTasks)), React.createElement(ProgressBar, null, React.createElement(ProgressFill, {
29881
+ return React.createElement(GlobalProgressContainer, {
29882
+ isMobile: isMobile
29883
+ }, React.createElement(HeaderContainer$1, null, React.createElement(GlobeIcon, null, "\uD83C\uDF0D"), React.createElement(ProgressText, {
29884
+ isMobile: isMobile
29885
+ }, isMobile ? completedTasks + "/" + totalTasks + " Complete" : "Global Tasks: " + completedTasks + "/" + totalTasks)), React.createElement(ProgressBar, null, React.createElement(ProgressFill, {
29770
29886
  percentage: completedTasks / totalTasks * 100
29771
- })), allCompleted && React.createElement(React.Fragment, null, shouldShowGlobalButton && React.createElement(CollectWrapper$1, null, React.createElement(Button, {
29887
+ })), allCompleted && React.createElement(React.Fragment, null, shouldShowGlobalButton && React.createElement(CollectWrapper, null, React.createElement(Button, {
29772
29888
  buttonType: ButtonTypes.RPGUIButton,
29773
29889
  onPointerDown: handleClaimAll
29774
- }, "Collect Global Rewards")), shouldShowClaimedMessage && React.createElement(ClaimedText$1, null, "Global Rewards Claimed")));
29890
+ }, isMobile ? 'Global Rewards' : 'Collect Global Rewards')), shouldShowClaimedMessage && React.createElement(ClaimedText, {
29891
+ isMobile: isMobile
29892
+ }, "\u2713 Global Rewards Claimed")));
29775
29893
  };
29776
29894
  var GlobalProgressContainer = /*#__PURE__*/styled.div.withConfig({
29777
29895
  displayName: "GlobalDailyProgress__GlobalProgressContainer",
29778
29896
  componentId: "sc-d7q4xm-0"
29779
- })(["background:rgba(0,0,0,0.5) !important;border:2px solid ", " !important;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:12px;box-shadow:0 2px 4px rgba(0,0,0,0.3);"], uiColors.darkGray);
29897
+ })(["background:rgba(0,0,0,0.6) !important;border:1px solid ", " !important;border-radius:", ";padding:", ";display:flex;flex-direction:column;gap:", ";box-shadow:0 1px 2px rgba(0,0,0,0.4);margin-bottom:", ";"], uiColors.blue, function (props) {
29898
+ return props.isMobile ? '4px' : '6px';
29899
+ }, function (props) {
29900
+ return props.isMobile ? '6px' : '8px';
29901
+ }, function (props) {
29902
+ return props.isMobile ? '6px' : '8px';
29903
+ }, function (props) {
29904
+ return props.isMobile ? '4px' : '6px';
29905
+ });
29780
29906
  var HeaderContainer$1 = /*#__PURE__*/styled.div.withConfig({
29781
29907
  displayName: "GlobalDailyProgress__HeaderContainer",
29782
29908
  componentId: "sc-d7q4xm-1"
29783
- })(["display:flex;align-items:center;gap:8px;margin-bottom:8px;"]);
29909
+ })(["display:flex;align-items:center;gap:6px;margin-bottom:2px;"]);
29784
29910
  var GlobeIcon = /*#__PURE__*/styled.span.withConfig({
29785
29911
  displayName: "GlobalDailyProgress__GlobeIcon",
29786
29912
  componentId: "sc-d7q4xm-2"
29787
- })(["font-size:1.5rem !important;line-height:1;color:", ";display:flex;align-items:center;justify-content:center;"], uiColors.blue);
29913
+ })(["font-size:1rem !important;line-height:1;color:", ";display:flex;align-items:center;justify-content:center;"], uiColors.blue);
29788
29914
  var ProgressText = /*#__PURE__*/styled.div.withConfig({
29789
29915
  displayName: "GlobalDailyProgress__ProgressText",
29790
29916
  componentId: "sc-d7q4xm-3"
29791
- })(["color:", ";text-align:center !important;margin-top:8px;line-height:1.2;"], uiColors.white);
29917
+ })(["color:", ";font-size:", ";font-weight:500;flex:1;line-height:1.2;"], uiColors.white, function (props) {
29918
+ return props.isMobile ? '0.75rem' : '0.8rem';
29919
+ });
29792
29920
  var ProgressBar = /*#__PURE__*/styled.div.withConfig({
29793
29921
  displayName: "GlobalDailyProgress__ProgressBar",
29794
29922
  componentId: "sc-d7q4xm-4"
29795
- })(["width:100%;height:8px;background:", ";border-radius:4px;overflow:hidden;"], uiColors.darkGray);
29923
+ })(["width:100%;height:4px;background:", ";border-radius:2px;overflow:hidden;"], uiColors.darkGray);
29796
29924
  var ProgressFill = /*#__PURE__*/styled.div.withConfig({
29797
29925
  displayName: "GlobalDailyProgress__ProgressFill",
29798
29926
  componentId: "sc-d7q4xm-5"
29799
29927
  })(["width:", "%;height:100%;background:", ";transition:width 0.3s ease;"], function (props) {
29800
29928
  return props.percentage;
29801
29929
  }, uiColors.green);
29802
- var ClaimedText$1 = /*#__PURE__*/styled.span.withConfig({
29930
+ var ClaimedText = /*#__PURE__*/styled.span.withConfig({
29803
29931
  displayName: "GlobalDailyProgress__ClaimedText",
29804
29932
  componentId: "sc-d7q4xm-6"
29805
- })(["color:", ";font-size:0.9rem;text-align:center;margin-top:8px;font-weight:bold;"], uiColors.green);
29806
- var CollectWrapper$1 = /*#__PURE__*/styled.div.withConfig({
29933
+ })(["color:", ";font-size:", ";text-align:center;font-weight:bold;display:flex;align-items:center;justify-content:center;gap:4px;"], uiColors.green, function (props) {
29934
+ return props.isMobile ? '0.8rem' : '0.9rem';
29935
+ });
29936
+ var CollectWrapper = /*#__PURE__*/styled.div.withConfig({
29807
29937
  displayName: "GlobalDailyProgress__CollectWrapper",
29808
29938
  componentId: "sc-d7q4xm-7"
29809
- })(["&&{width:100% !important;display:flex !important;justify-content:center !important;align-items:center !important;margin:5px 0 !important;}"]);
29939
+ })(["&&{width:100% !important;display:flex !important;justify-content:center !important;align-items:center !important;margin:4px 0 !important;}"]);
29810
29940
 
29811
29941
  var DailyTasks = function DailyTasks(_ref) {
29812
29942
  var tasks = _ref.tasks,
@@ -29823,13 +29953,23 @@ var DailyTasks = function DailyTasks(_ref) {
29823
29953
  globalRewardClaimed = _ref$globalRewardClai === void 0 ? false : _ref$globalRewardClai;
29824
29954
  var _React$useState = React.useState(tasks),
29825
29955
  localTasks = _React$useState[0];
29826
- var size = useResponsiveSize(scale);
29956
+ var isMobile = isMobileOrTablet();
29827
29957
  var _useState = useState([]),
29828
29958
  claimedTasks = _useState[0],
29829
29959
  setClaimedTasks = _useState[1];
29830
29960
  var _useState2 = useState(false),
29831
29961
  globalRewardClaimedLocal = _useState2[0],
29832
29962
  setGlobalRewardClaimedLocal = _useState2[1];
29963
+ // Search and filter state
29964
+ var _useState3 = useState(''),
29965
+ searchQuery = _useState3[0],
29966
+ setSearchQuery = _useState3[1];
29967
+ var _useState4 = useState('all'),
29968
+ selectedStatus = _useState4[0],
29969
+ setSelectedStatus = _useState4[1];
29970
+ var _useLocalStorage = useLocalStorage('dailyTasks.pinned', []),
29971
+ pinnedTasks = _useLocalStorage[0],
29972
+ setPinnedTasks = _useLocalStorage[1];
29833
29973
  var handleClaimReward = function handleClaimReward(taskKey, taskType) {
29834
29974
  onClaimReward({
29835
29975
  taskKey: taskKey,
@@ -29846,23 +29986,83 @@ var DailyTasks = function DailyTasks(_ref) {
29846
29986
  var isTaskRewardClaimed = function isTaskRewardClaimed(taskKey) {
29847
29987
  return claimedTasks.includes(taskKey);
29848
29988
  };
29849
- if (!size) return null;
29989
+ var togglePinTask = function togglePinTask(taskKey) {
29990
+ setPinnedTasks(function (prev) {
29991
+ return prev.includes(taskKey) ? prev.filter(function (key) {
29992
+ return key !== taskKey;
29993
+ }) : [].concat(prev, [taskKey]);
29994
+ });
29995
+ };
29996
+ // Filter options using Store pattern
29997
+ var statusOptions = [{
29998
+ id: 0,
29999
+ value: 'all',
30000
+ option: 'All'
30001
+ }, {
30002
+ id: 1,
30003
+ value: 'pinned',
30004
+ option: 'Pinned'
30005
+ }, {
30006
+ id: 2,
30007
+ value: 'completed',
30008
+ option: 'Completed'
30009
+ }, {
30010
+ id: 3,
30011
+ value: 'inprogress',
30012
+ option: 'In Progress'
30013
+ }, {
30014
+ id: 4,
30015
+ value: 'notstarted',
30016
+ option: 'Not Started'
30017
+ }];
30018
+ // Filtered tasks using InformationCenter pattern
30019
+ var filteredTasks = useMemo(function () {
30020
+ var filtered = localTasks.filter(function (task) {
30021
+ var _task$name, _task$description;
30022
+ var matchesSearch = ((_task$name = task.name) == null ? void 0 : _task$name.toLowerCase().includes(searchQuery.toLowerCase())) || ((_task$description = task.description) == null ? void 0 : _task$description.toLowerCase().includes(searchQuery.toLowerCase())) || task.key.toLowerCase().includes(searchQuery.toLowerCase());
30023
+ var matchesStatus = selectedStatus === 'all' || selectedStatus === 'pinned' && pinnedTasks.includes(task.key) || selectedStatus === 'completed' && task.status === TaskStatus.Completed || selectedStatus === 'inprogress' && task.status === TaskStatus.InProgress || selectedStatus === 'notstarted' && task.status === TaskStatus.NotStarted;
30024
+ return matchesSearch && matchesStatus;
30025
+ });
30026
+ // Sort with pinned tasks first
30027
+ return filtered.sort(function (a, b) {
30028
+ var aIsPinned = pinnedTasks.includes(a.key);
30029
+ var bIsPinned = pinnedTasks.includes(b.key);
30030
+ if (aIsPinned && !bIsPinned) return -1;
30031
+ if (!aIsPinned && bIsPinned) return 1;
30032
+ return 0;
30033
+ });
30034
+ }, [localTasks, searchQuery, selectedStatus, pinnedTasks]);
29850
30035
  return React.createElement(TasksContainer, {
29851
30036
  type: RPGUIContainerTypes.Framed,
29852
30037
  onCloseButton: onClose,
29853
30038
  cancelDrag: ".tasks-container",
29854
30039
  scale: scale,
29855
- width: size.width,
29856
- height: size.height
29857
- }, React.createElement(TaskTitle$1, null, "Daily Tasks"), React.createElement(Container$h, null, React.createElement(TasksList, {
29858
- className: "tasks-container"
29859
- }, React.createElement(GlobalDailyProgress, {
30040
+ width: isMobile ? '100vw' : 'max(50vw, 900px)',
30041
+ height: isMobile ? '100vh' : 'min(85vh, 800px)',
30042
+ isMobile: isMobile
30043
+ }, React.createElement(TaskTitle$1, {
30044
+ isMobile: isMobile
30045
+ }, "Daily Tasks"), React.createElement(Container$i, {
30046
+ isMobile: isMobile
30047
+ }, React.createElement(GlobalProgressFixed, null, React.createElement(GlobalDailyProgress, {
29860
30048
  tasks: localTasks,
29861
30049
  onClaimAllRewards: handleClaimGlobalRewards,
29862
30050
  globalRewardClaimed: globalRewardClaimed || globalRewardClaimedLocal
29863
- }), localTasks.map(function (task) {
29864
- return React.createElement(DailyTaskItem, {
29865
- key: task.key,
30051
+ })), React.createElement(SearchHeader, null, React.createElement(SearchBarContainer, null, React.createElement(SearchBar, {
30052
+ value: searchQuery,
30053
+ onChange: setSearchQuery,
30054
+ placeholder: "Search tasks..."
30055
+ })), React.createElement(DropdownContainer, null, React.createElement(Dropdown, {
30056
+ options: statusOptions,
30057
+ onChange: setSelectedStatus,
30058
+ width: "100%"
30059
+ }))), React.createElement(TasksList, {
30060
+ className: "tasks-container",
30061
+ isMobile: isMobile
30062
+ }, filteredTasks.length > 0 ? filteredTasks.map(function (task) {
30063
+ return React.createElement(TaskWrapper, {
30064
+ key: task.key
30065
+ }, React.createElement(DailyTaskItem, {
29866
30066
  task: task,
29867
30067
  spriteKey: getTaskIcon(task.type, task.difficulty),
29868
30068
  onClaimReward: handleClaimReward,
@@ -29870,26 +30070,86 @@ var DailyTasks = function DailyTasks(_ref) {
29870
30070
  itemsAtlasIMG: itemsAtlasIMG,
29871
30071
  iconAtlasJSON: iconAtlasJSON,
29872
30072
  iconAtlasIMG: iconAtlasIMG,
29873
- isRewardClaimed: task.claimed || isTaskRewardClaimed(task.key)
29874
- });
29875
- }))));
30073
+ isRewardClaimed: task.claimed || isTaskRewardClaimed(task.key),
30074
+ isPinned: pinnedTasks.includes(task.key)
30075
+ }), React.createElement(PinButton$1, {
30076
+ onClick: function onClick() {
30077
+ return togglePinTask(task.key);
30078
+ },
30079
+ isPinned: pinnedTasks.includes(task.key)
30080
+ }, React.createElement(FaThumbtack, {
30081
+ size: 10
30082
+ })));
30083
+ }) : React.createElement(EmptyState$1, null, React.createElement(FaClipboardList, {
30084
+ size: 48
30085
+ }), React.createElement("p", null, searchQuery || selectedStatus !== 'all' ? 'No tasks match your criteria.' : 'No daily tasks available.')))));
29876
30086
  };
29877
30087
  var TasksContainer = /*#__PURE__*/styled(DraggableContainer).withConfig({
29878
30088
  displayName: "DailyTasks__TasksContainer",
29879
30089
  componentId: "sc-ittn77-0"
29880
- })(["min-width:450px;max-width:550px;margin:0 auto;.rpgui-container-title{width:100%;display:flex;justify-content:center;align-items:center;text-align:center;}.rpgui-container{padding:0 !important;overflow:hidden !important;background-color:rgba(30,30,30,0.9) !important;}"]);
29881
- var Container$h = /*#__PURE__*/styled.div.withConfig({
30090
+ })(["", " .rpgui-container-title{width:100%;display:flex;justify-content:center;align-items:center;text-align:center;", "}.rpgui-container{padding:0 !important;overflow:hidden !important;background-color:rgba(30,30,30,0.98) !important;", "}"], function (props) {
30091
+ return props.isMobile ? "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n bottom: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n margin: 0 !important;\n z-index: 1000 !important;\n " : "\n margin: 0 auto;\n min-width: 50vw;\n ";
30092
+ }, function (props) {
30093
+ return props.isMobile ? 'padding: 8px 0;' : '';
30094
+ }, function (props) {
30095
+ return props.isMobile ? "\n border-radius: 0 !important;\n height: 100vh !important;\n width: 100vw !important;\n " : '';
30096
+ });
30097
+ var Container$i = /*#__PURE__*/styled.div.withConfig({
29882
30098
  displayName: "DailyTasks__Container",
29883
30099
  componentId: "sc-ittn77-1"
29884
- })(["width:100%;max-width:100%;margin:0 auto;padding:0.125rem;overflow-y:auto;box-sizing:border-box;@media (min-width:320px){padding:0.25rem;}@media (min-width:360px){padding:0.5rem;}@media (min-width:480px){padding:0.75rem;}"]);
30100
+ })(["width:100%;height:100%;margin:0;padding:0;overflow:hidden;box-sizing:border-box;background-color:transparent;display:flex;flex-direction:column;"]);
29885
30101
  var TasksList = /*#__PURE__*/styled.div.withConfig({
29886
30102
  displayName: "DailyTasks__TasksList",
29887
30103
  componentId: "sc-ittn77-2"
29888
- })(["display:flex;flex-direction:column;gap:12px;padding:15px;max-height:70vh;"]);
30104
+ })(["display:flex;flex-direction:column;gap:", ";padding:", ";overflow-y:auto;flex:1;background-color:transparent;", ""], function (props) {
30105
+ return props.isMobile ? '8px' : '12px';
30106
+ }, function (props) {
30107
+ return props.isMobile ? '8px' : '12px';
30108
+ }, function (props) {
30109
+ return props.isMobile ? "\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n " : '';
30110
+ });
30111
+ var GlobalProgressFixed = /*#__PURE__*/styled.div.withConfig({
30112
+ displayName: "DailyTasks__GlobalProgressFixed",
30113
+ componentId: "sc-ittn77-3"
30114
+ })(["flex-shrink:0;padding:8px 12px;background-color:transparent;"]);
30115
+ var SearchHeader = /*#__PURE__*/styled.div.withConfig({
30116
+ displayName: "DailyTasks__SearchHeader",
30117
+ componentId: "sc-ittn77-4"
30118
+ })(["display:flex;gap:12px;padding:12px 12px 8px 12px;border-bottom:1px solid ", ";background:rgba(0,0,0,0.3);"], uiColors.darkGray);
30119
+ var SearchBarContainer = /*#__PURE__*/styled.div.withConfig({
30120
+ displayName: "DailyTasks__SearchBarContainer",
30121
+ componentId: "sc-ittn77-5"
30122
+ })(["flex:3;"]);
30123
+ var DropdownContainer = /*#__PURE__*/styled.div.withConfig({
30124
+ displayName: "DailyTasks__DropdownContainer",
30125
+ componentId: "sc-ittn77-6"
30126
+ })(["flex:1;min-width:120px;"]);
30127
+ var TaskWrapper = /*#__PURE__*/styled.div.withConfig({
30128
+ displayName: "DailyTasks__TaskWrapper",
30129
+ componentId: "sc-ittn77-7"
30130
+ })(["position:relative;width:100%;"]);
30131
+ var PinButton$1 = /*#__PURE__*/styled.button.withConfig({
30132
+ displayName: "DailyTasks__PinButton",
30133
+ componentId: "sc-ittn77-8"
30134
+ })(["position:absolute;top:8px;right:8px;background:rgba(0,0,0,0.7);color:", ";border:1px solid ", ";cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:3px;transition:all 0.2s ease;z-index:10;width:20px;height:20px;&:hover{color:", ";background:rgba(0,0,0,0.9);border-color:", ";}", ""], function (props) {
30135
+ return props.isPinned ? uiColors.yellow : uiColors.lightGray;
30136
+ }, function (props) {
30137
+ return props.isPinned ? uiColors.yellow : 'transparent';
30138
+ }, uiColors.yellow, uiColors.yellow, function (props) {
30139
+ return props.isPinned && "\n transform: rotate(45deg);\n ";
30140
+ });
30141
+ var EmptyState$1 = /*#__PURE__*/styled.div.withConfig({
30142
+ displayName: "DailyTasks__EmptyState",
30143
+ componentId: "sc-ittn77-9"
30144
+ })(["display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:", ";opacity:0.7;gap:16px;p{margin:0;font-size:0.9rem;line-height:1.4;}"], uiColors.lightGray);
29889
30145
  var TaskTitle$1 = /*#__PURE__*/styled.h2.withConfig({
29890
30146
  displayName: "DailyTasks__TaskTitle",
29891
- componentId: "sc-ittn77-3"
29892
- })(["color:", " !important;text-align:center;padding-right:30px !important;font-size:1.4rem !important;width:100%;"], uiColors.yellow);
30147
+ componentId: "sc-ittn77-10"
30148
+ })(["color:", " !important;text-align:center;padding-right:30px !important;font-size:", " !important;width:100%;margin:", " !important;font-weight:600;"], uiColors.yellow, function (props) {
30149
+ return props.isMobile ? '1rem' : '1.2rem';
30150
+ }, function (props) {
30151
+ return props.isMobile ? '4px 0' : '8px 0';
30152
+ });
29893
30153
 
29894
30154
  // Memoize the styled components since they don't depend on props that change frequently
29895
30155
  var DPadButton = /*#__PURE__*/memo( /*#__PURE__*/styled.div.withConfig({
@@ -30250,7 +30510,7 @@ var DraggedItem = function DraggedItem(_ref) {
30250
30510
  var centeredX = x - OFFSET$1;
30251
30511
  var centeredY = y - OFFSET$1;
30252
30512
  var stackInfo = onRenderStackInfo((_item$_id = item == null ? void 0 : item._id) != null ? _item$_id : '', (_item$stackQty = item == null ? void 0 : item.stackQty) != null ? _item$stackQty : 0);
30253
- return React.createElement(Container$i, null, React.createElement(SpriteContainer, {
30513
+ return React.createElement(Container$j, null, React.createElement(SpriteContainer, {
30254
30514
  x: centeredX,
30255
30515
  y: centeredY
30256
30516
  }, React.createElement(SpriteFromAtlas, {
@@ -30268,7 +30528,7 @@ var DraggedItem = function DraggedItem(_ref) {
30268
30528
  }), stackInfo));
30269
30529
  };
30270
30530
  var pulse = "\n @keyframes pulse {\n 0%, 100% {\n transform: scale(1) rotate(-3deg);\n }\n 50% {\n transform: scale(0.95) rotate(-3deg);\n }\n }\n";
30271
- var Container$i = /*#__PURE__*/styled.div.withConfig({
30531
+ var Container$j = /*#__PURE__*/styled.div.withConfig({
30272
30532
  displayName: "DraggedItem__Container",
30273
30533
  componentId: "sc-mlzzcp-0"
30274
30534
  })(["position:relative;"]);
@@ -30306,7 +30566,7 @@ var RelativeListMenu = function RelativeListMenu(_ref) {
30306
30566
  document.removeEventListener('clickOutside', function (_e) {});
30307
30567
  };
30308
30568
  }, []);
30309
- return React.createElement(ModalPortal, null, React.createElement(Container$j, Object.assign({
30569
+ return React.createElement(ModalPortal, null, React.createElement(Container$k, Object.assign({
30310
30570
  fontSize: fontSize,
30311
30571
  ref: ref
30312
30572
  }, pos), React.createElement("ul", {
@@ -30323,7 +30583,7 @@ var RelativeListMenu = function RelativeListMenu(_ref) {
30323
30583
  }, (params == null ? void 0 : params.text) || 'No text');
30324
30584
  }))));
30325
30585
  };
30326
- var Container$j = /*#__PURE__*/styled.div.withConfig({
30586
+ var Container$k = /*#__PURE__*/styled.div.withConfig({
30327
30587
  displayName: "RelativeListMenu__Container",
30328
30588
  componentId: "sc-7hohf-0"
30329
30589
  })(["position:absolute;top:", "px;left:", "px;display:flex;flex-direction:column;width:max-content;justify-content:start;align-items:flex-start;li{font-size:", "em;}"], function (props) {
@@ -30597,7 +30857,7 @@ var SearchFriend = function SearchFriend(_ref) {
30597
30857
  title: "Requests (" + friendRequests.length + ")",
30598
30858
  content: requestsTabContent
30599
30859
  }];
30600
- return React.createElement(Container$k, null, React.createElement(InternalTabs, {
30860
+ return React.createElement(Container$l, null, React.createElement(InternalTabs, {
30601
30861
  tabs: tabs,
30602
30862
  activeTextColor: "#000",
30603
30863
  inactiveColor: "#777",
@@ -30639,7 +30899,7 @@ var FriendRequestSection = function FriendRequestSection(_ref3) {
30639
30899
  }, "Reject")));
30640
30900
  })));
30641
30901
  };
30642
- var Container$k = /*#__PURE__*/styled.div.withConfig({
30902
+ var Container$l = /*#__PURE__*/styled.div.withConfig({
30643
30903
  displayName: "SearchFriend__Container",
30644
30904
  componentId: "sc-1lt1ols-0"
30645
30905
  })(["display:flex;flex-direction:column;gap:1rem;"]);
@@ -30842,7 +31102,7 @@ var NPCDialogText = function NPCDialogText(_ref) {
30842
31102
  var _useState2 = useState(false),
30843
31103
  showGoNextIndicator = _useState2[0],
30844
31104
  setShowGoNextIndicator = _useState2[1];
30845
- return React.createElement(Container$l, null, React.createElement(DynamicText, {
31105
+ return React.createElement(Container$m, null, React.createElement(DynamicText, {
30846
31106
  text: (textChunks == null ? void 0 : textChunks[chunkIndex]) || '',
30847
31107
  onFinish: function onFinish() {
30848
31108
  setShowGoNextIndicator(true);
@@ -30860,7 +31120,7 @@ var NPCDialogText = function NPCDialogText(_ref) {
30860
31120
  }
30861
31121
  }));
30862
31122
  };
30863
- var Container$l = /*#__PURE__*/styled.div.withConfig({
31123
+ var Container$m = /*#__PURE__*/styled.div.withConfig({
30864
31124
  displayName: "NPCDialogText__Container",
30865
31125
  componentId: "sc-1cxkdh9-0"
30866
31126
  })([""]);
@@ -31012,7 +31272,7 @@ var QuestionDialog = function QuestionDialog(_ref) {
31012
31272
  return null;
31013
31273
  });
31014
31274
  };
31015
- return React.createElement(Container$m, null, React.createElement(QuestionContainer, null, React.createElement(DynamicText, {
31275
+ return React.createElement(Container$n, null, React.createElement(QuestionContainer, null, React.createElement(DynamicText, {
31016
31276
  text: currentQuestion.text,
31017
31277
  onStart: function onStart() {
31018
31278
  return setCanShowAnswers(false);
@@ -31022,7 +31282,7 @@ var QuestionDialog = function QuestionDialog(_ref) {
31022
31282
  }
31023
31283
  })), canShowAnswers && React.createElement(AnswersContainer, null, onRenderCurrentAnswers()));
31024
31284
  };
31025
- var Container$m = /*#__PURE__*/styled.div.withConfig({
31285
+ var Container$n = /*#__PURE__*/styled.div.withConfig({
31026
31286
  displayName: "QuestionDialog__Container",
31027
31287
  componentId: "sc-bxc5u0-0"
31028
31288
  })(["display:flex;word-break:break-all;box-sizing:border-box;justify-content:flex-start;align-items:flex-start;flex-wrap:wrap;"]);
@@ -31083,7 +31343,7 @@ var NPCDialog = function NPCDialog(_ref) {
31083
31343
  }
31084
31344
  })), type === NPCDialogType.TextAndThumbnail && React.createElement(ThumbnailContainer, null, React.createElement(NPCThumbnail, {
31085
31345
  src: imagePath || img$7
31086
- }))) : React.createElement(React.Fragment, null, React.createElement(Container$n, null, React.createElement(CloseIcon, {
31346
+ }))) : React.createElement(React.Fragment, null, React.createElement(Container$o, null, React.createElement(CloseIcon, {
31087
31347
  onPointerDown: _onClose
31088
31348
  }, "X"), React.createElement(TextContainer$1, {
31089
31349
  flex: type === NPCDialogType.TextAndThumbnail ? '70%' : '100%'
@@ -31099,7 +31359,7 @@ var NPCDialog = function NPCDialog(_ref) {
31099
31359
  src: imagePath || img$7
31100
31360
  })))));
31101
31361
  };
31102
- var Container$n = /*#__PURE__*/styled.div.withConfig({
31362
+ var Container$o = /*#__PURE__*/styled.div.withConfig({
31103
31363
  displayName: "NPCDialog__Container",
31104
31364
  componentId: "sc-1b4aw74-0"
31105
31365
  })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
@@ -31160,7 +31420,7 @@ var NPCMultiDialog = function NPCMultiDialog(_ref) {
31160
31420
  type: RPGUIContainerTypes.FramedGold,
31161
31421
  width: '50%',
31162
31422
  height: '180px'
31163
- }, React.createElement(React.Fragment, null, React.createElement(Container$o, null, ((_textAndTypeArray$sli = textAndTypeArray[slide]) == null ? void 0 : _textAndTypeArray$sli.imageSide) === 'right' && React.createElement(React.Fragment, null, React.createElement(TextContainer$2, {
31423
+ }, React.createElement(React.Fragment, null, React.createElement(Container$p, null, ((_textAndTypeArray$sli = textAndTypeArray[slide]) == null ? void 0 : _textAndTypeArray$sli.imageSide) === 'right' && React.createElement(React.Fragment, null, React.createElement(TextContainer$2, {
31164
31424
  flex: '70%'
31165
31425
  }, React.createElement(NPCDialogText, {
31166
31426
  onStartStep: function onStartStep() {
@@ -31202,7 +31462,7 @@ var NPCMultiDialog = function NPCMultiDialog(_ref) {
31202
31462
  src: img$6
31203
31463
  }))), ")"));
31204
31464
  };
31205
- var Container$o = /*#__PURE__*/styled.div.withConfig({
31465
+ var Container$p = /*#__PURE__*/styled.div.withConfig({
31206
31466
  displayName: "NPCMultiDialog__Container",
31207
31467
  componentId: "sc-rvu5wg-0"
31208
31468
  })(["display:flex;width:100%;height:100%;box-sizing:border-box;justify-content:center;align-items:flex-start;position:relative;"]);
@@ -31634,7 +31894,7 @@ var Pagination = function Pagination(_ref) {
31634
31894
  totalPages = _ref.totalPages,
31635
31895
  onPageChange = _ref.onPageChange,
31636
31896
  className = _ref.className;
31637
- return React.createElement(Container$p, {
31897
+ return React.createElement(Container$q, {
31638
31898
  className: className
31639
31899
  }, React.createElement(PaginationButton$1, {
31640
31900
  onClick: function onClick() {
@@ -31652,7 +31912,7 @@ var Pagination = function Pagination(_ref) {
31652
31912
  size: 12
31653
31913
  })));
31654
31914
  };
31655
- var Container$p = /*#__PURE__*/styled.div.withConfig({
31915
+ var Container$q = /*#__PURE__*/styled.div.withConfig({
31656
31916
  displayName: "Pagination__Container",
31657
31917
  componentId: "sc-3k4m4u-0"
31658
31918
  })(["display:flex;align-items:center;justify-content:center;gap:16px;padding:8px;"]);
@@ -31671,46 +31931,7 @@ var PageInfo$1 = /*#__PURE__*/styled.div.withConfig({
31671
31931
  componentId: "sc-3k4m4u-2"
31672
31932
  })(["color:", ";font-size:0.8rem;font-family:'Press Start 2P',cursive;"], uiColors.lightGray);
31673
31933
 
31674
- var SearchBar = function SearchBar(_ref) {
31675
- var value = _ref.value,
31676
- _onChange = _ref.onChange,
31677
- placeholder = _ref.placeholder,
31678
- className = _ref.className,
31679
- rightElement = _ref.rightElement;
31680
- var hasRightElement = Boolean(rightElement);
31681
- return React.createElement(Container$q, {
31682
- className: className
31683
- }, React.createElement(Input$1, {
31684
- type: "text",
31685
- value: value,
31686
- onChange: function onChange(e) {
31687
- return _onChange(e.target.value);
31688
- },
31689
- placeholder: placeholder,
31690
- className: "rpgui-input",
31691
- "$hasRightElement": hasRightElement
31692
- }), React.createElement(IconContainer, null, React.createElement(SearchIcon, null), rightElement));
31693
- };
31694
- var Container$q = /*#__PURE__*/styled.div.withConfig({
31695
- displayName: "SearchBar__Container",
31696
- componentId: "sc-13n8z02-0"
31697
- })(["position:relative;width:100%;"]);
31698
- var Input$1 = /*#__PURE__*/styled.input.withConfig({
31699
- displayName: "SearchBar__Input",
31700
- componentId: "sc-13n8z02-1"
31701
- })(["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) {
31702
- return props.$hasRightElement ? '6rem' : '2.5rem';
31703
- });
31704
- var IconContainer = /*#__PURE__*/styled.div.withConfig({
31705
- displayName: "SearchBar__IconContainer",
31706
- componentId: "sc-13n8z02-2"
31707
- })(["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;}"]);
31708
- var SearchIcon = /*#__PURE__*/styled(FaSearch).withConfig({
31709
- displayName: "SearchBar__SearchIcon",
31710
- componentId: "sc-13n8z02-3"
31711
- })(["font-size:1rem;color:#f59e0b;filter:drop-shadow(0 0 2px rgba(245,158,11,0.3));"]);
31712
-
31713
- var SearchHeader = function SearchHeader(_ref) {
31934
+ var SearchHeader$1 = function SearchHeader(_ref) {
31714
31935
  var searchOptions = _ref.searchOptions,
31715
31936
  filterOptions = _ref.filterOptions,
31716
31937
  className = _ref.className;
@@ -31801,7 +32022,7 @@ var PaginatedContent = function PaginatedContent(_ref) {
31801
32022
  totalPages = _usePagination.totalPages;
31802
32023
  return React.createElement(Container$r, {
31803
32024
  className: className
31804
- }, (searchOptions || filterOptions) && React.createElement(SearchHeader, {
32025
+ }, (searchOptions || filterOptions) && React.createElement(SearchHeader$1, {
31805
32026
  searchOptions: searchOptions,
31806
32027
  filterOptions: filterOptions
31807
32028
  }), items.length === 0 ? React.createElement(EmptyMessage, null, emptyMessage) : React.createElement(React.Fragment, null, React.createElement(Content, {
@@ -36587,7 +36808,7 @@ var SocialModal = function SocialModal(_ref) {
36587
36808
  onClick: handleRedditClick
36588
36809
  }, React.createElement(FaReddit, null), " Reddit")), React.createElement(Divider, {
36589
36810
  margin: "8px 0"
36590
- }), React.createElement(DropdownContainer, null, React.createElement(Dropdown, {
36811
+ }), React.createElement(DropdownContainer$1, null, React.createElement(Dropdown, {
36591
36812
  options: whatsAppGroups,
36592
36813
  onChange: handleLanguageChange,
36593
36814
  width: "100%",
@@ -36620,7 +36841,7 @@ var WhatsAppButton = /*#__PURE__*/styled(SocialButton$1).withConfig({
36620
36841
  displayName: "SocialModal__WhatsAppButton",
36621
36842
  componentId: "sc-tbjhp9-5"
36622
36843
  })(["width:100%;background-color:#0f1f0f;border:1px solid #1a2f1a;padding:14px;&:hover{background-color:#162716;}margin-top:8px;"]);
36623
- var DropdownContainer = /*#__PURE__*/styled.div.withConfig({
36844
+ var DropdownContainer$1 = /*#__PURE__*/styled.div.withConfig({
36624
36845
  displayName: "SocialModal__DropdownContainer",
36625
36846
  componentId: "sc-tbjhp9-6"
36626
36847
  })(["background-color:rgba(0,0,0,0.2);padding:8px;border-radius:4px;border:1px solid rgba(0,0,0,0.3);"]);
@@ -57392,7 +57613,7 @@ var CTAButton = function CTAButton(_ref) {
57392
57613
  "$fullWidth": fullWidth,
57393
57614
  "$disabled": disabled,
57394
57615
  "$color": textColor
57395
- }, React.createElement(ButtonContent, null, React.createElement(IconWrapper, {
57616
+ }, React.createElement(ButtonContent, null, React.createElement(IconWrapper$1, {
57396
57617
  "$color": iconColor,
57397
57618
  "$disabled": disabled
57398
57619
  }, icon), label && React.createElement(ButtonLabel, {
@@ -57426,7 +57647,7 @@ var ButtonContent = /*#__PURE__*/styled.div.withConfig({
57426
57647
  displayName: "CTAButton__ButtonContent",
57427
57648
  componentId: "sc-1azvwn5-1"
57428
57649
  })(["display:flex;align-items:center;gap:0.75rem;"]);
57429
- var IconWrapper = /*#__PURE__*/styled.div.withConfig({
57650
+ var IconWrapper$1 = /*#__PURE__*/styled.div.withConfig({
57430
57651
  displayName: "CTAButton__IconWrapper",
57431
57652
  componentId: "sc-1azvwn5-2"
57432
57653
  })(["svg{font-size:1.25rem;color:", ";filter:drop-shadow(0 0 2px rgba(245,158,11,0.5));opacity:", ";}"], function (props) {
@@ -57963,25 +58184,13 @@ var EmptyMessage$1 = /*#__PURE__*/styled.div.withConfig({
57963
58184
  componentId: "sc-xhh2um-8"
57964
58185
  })(["text-align:center;color:#9ca3af;padding:2rem;flex:1;display:flex;align-items:center;justify-content:center;"]);
57965
58186
 
57966
- var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
57967
- var _item$metadataConfig, _item$metadataConfig2, _item$metadataConfig3, _item$requiredAccount;
57968
- var item = _ref.item,
57969
- atlasJSON = _ref.atlasJSON,
57970
- atlasIMG = _ref.atlasIMG,
57971
- onAddToCart = _ref.onAddToCart,
57972
- userAccountType = _ref.userAccountType;
58187
+ var useCharacterSkinNavigation = function useCharacterSkinNavigation(availableCharacters, itemKey) {
57973
58188
  var _useState = useState(0),
57974
58189
  currentIndex = _useState[0],
57975
58190
  setCurrentIndex = _useState[1];
57976
- // Get available characters from metadata
57977
- var availableCharacters = item.metadataType === MetadataType.CharacterSkin && ((_item$metadataConfig = item.metadataConfig) == null ? void 0 : _item$metadataConfig.availableCharacters) || [];
57978
- // Get the active character entity atlas info
57979
- var entityAtlasJSON = (_item$metadataConfig2 = item.metadataConfig) == null ? void 0 : _item$metadataConfig2.atlasJSON;
57980
- var entityAtlasIMG = (_item$metadataConfig3 = item.metadataConfig) == null ? void 0 : _item$metadataConfig3.atlasIMG;
57981
- // Effect to reset currentIndex when switching items
57982
58191
  useEffect(function () {
57983
58192
  setCurrentIndex(0);
57984
- }, [item.key]);
58193
+ }, [itemKey]);
57985
58194
  var handlePreviousSkin = function handlePreviousSkin() {
57986
58195
  setCurrentIndex(function (prevIndex) {
57987
58196
  return prevIndex === 0 ? availableCharacters.length - 1 : prevIndex - 1;
@@ -57992,6 +58201,31 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
57992
58201
  return prevIndex === availableCharacters.length - 1 ? 0 : prevIndex + 1;
57993
58202
  });
57994
58203
  };
58204
+ var currentCharacter = availableCharacters[currentIndex];
58205
+ return {
58206
+ currentIndex: currentIndex,
58207
+ currentCharacter: currentCharacter,
58208
+ handlePreviousSkin: handlePreviousSkin,
58209
+ handleNextSkin: handleNextSkin
58210
+ };
58211
+ };
58212
+
58213
+ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
58214
+ var _item$metadataConfig, _item$metadataConfig2, _item$metadataConfig3, _item$requiredAccount, _item$store;
58215
+ var item = _ref.item,
58216
+ atlasJSON = _ref.atlasJSON,
58217
+ atlasIMG = _ref.atlasIMG,
58218
+ onAddToCart = _ref.onAddToCart,
58219
+ userAccountType = _ref.userAccountType;
58220
+ // Get available characters from metadata
58221
+ var availableCharacters = item.metadataType === MetadataType.CharacterSkin && ((_item$metadataConfig = item.metadataConfig) == null ? void 0 : _item$metadataConfig.availableCharacters) || [];
58222
+ // Get the active character entity atlas info
58223
+ var entityAtlasJSON = (_item$metadataConfig2 = item.metadataConfig) == null ? void 0 : _item$metadataConfig2.atlasJSON;
58224
+ var entityAtlasIMG = (_item$metadataConfig3 = item.metadataConfig) == null ? void 0 : _item$metadataConfig3.atlasIMG;
58225
+ var _useCharacterSkinNavi = useCharacterSkinNavigation(availableCharacters, item.key),
58226
+ currentCharacter = _useCharacterSkinNavi.currentCharacter,
58227
+ handlePreviousSkin = _useCharacterSkinNavi.handlePreviousSkin,
58228
+ handleNextSkin = _useCharacterSkinNavi.handleNextSkin;
57995
58229
  var hasRequiredAccount = !((_item$requiredAccount = item.requiredAccountType) != null && _item$requiredAccount.length) || item.requiredAccountType.includes(userAccountType);
57996
58230
  var handleAddToCart = function handleAddToCart() {
57997
58231
  if (!hasRequiredAccount) return;
@@ -58008,8 +58242,9 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
58008
58242
  var getSpriteKey = function getSpriteKey(textureKey) {
58009
58243
  return textureKey + '/down/standing/0.png';
58010
58244
  };
58011
- var currentCharacter = availableCharacters[currentIndex];
58012
- return React.createElement(ItemWrapper, null, React.createElement(ItemIconContainer$2, null, entityAtlasJSON && entityAtlasIMG && currentCharacter ? React.createElement(SpriteFromAtlas, {
58245
+ return React.createElement(ItemWrapper, {
58246
+ "$isHighlighted": ((_item$store = item.store) == null ? void 0 : _item$store.isHighlighted) || false
58247
+ }, React.createElement(ItemIconContainer$2, null, entityAtlasJSON && entityAtlasIMG && currentCharacter ? React.createElement(SpriteFromAtlas, {
58013
58248
  atlasJSON: entityAtlasJSON,
58014
58249
  atlasIMG: entityAtlasIMG,
58015
58250
  spriteKey: getSpriteKey(currentCharacter.textureKey),
@@ -58017,7 +58252,7 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
58017
58252
  height: 32,
58018
58253
  imgScale: 2,
58019
58254
  centered: true
58020
- }) : React.createElement(SpriteFromAtlas, {
58255
+ }) : item.texturePath ? React.createElement(SpriteFromAtlas, {
58021
58256
  atlasJSON: atlasJSON,
58022
58257
  atlasIMG: atlasIMG,
58023
58258
  spriteKey: item.texturePath,
@@ -58025,7 +58260,7 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
58025
58260
  height: 32,
58026
58261
  imgScale: 2,
58027
58262
  centered: true
58028
- })), React.createElement(ItemDetails$1, null, React.createElement(Header$8, null, React.createElement(ItemName$1, null, item.name)), availableCharacters.length > 0 && currentCharacter && React.createElement(SelectedSkinNav, null, React.createElement(SelectedSkin, null, "Selected:"), React.createElement(SkinNavArrow, {
58263
+ }) : React.createElement(DefaultIcon, null, "\uD83D\uDC64")), React.createElement(ItemDetails$1, null, React.createElement(Header$8, null, React.createElement(ItemName$1, null, item.name)), availableCharacters.length > 0 && currentCharacter && React.createElement(SelectedSkinNav, null, React.createElement(SelectedSkin, null, "Selected:"), React.createElement(SkinNavArrow, {
58029
58264
  direction: "left",
58030
58265
  onPointerDown: handlePreviousSkin,
58031
58266
  size: 24
@@ -58043,7 +58278,11 @@ var StoreCharacterSkinRow = function StoreCharacterSkinRow(_ref) {
58043
58278
  var ItemWrapper = /*#__PURE__*/styled.div.withConfig({
58044
58279
  displayName: "StoreCharacterSkinRow__ItemWrapper",
58045
58280
  componentId: "sc-81xqsx-0"
58046
- })(["display:flex;align-items:center;gap:1rem;padding:1rem;border-bottom:1px solid rgba(255,255,255,0.1);&:last-child{border-bottom:none;}"]);
58281
+ })(["display:flex;align-items:center;gap:0.75rem;padding:0.5rem 1rem;border-bottom:1px solid rgba(255,255,255,0.1);background:", ";border-left:", ";&:last-child{border-bottom:none;}"], function (props) {
58282
+ return props.$isHighlighted ? 'rgba(255, 215, 0, 0.1)' : 'transparent';
58283
+ }, function (props) {
58284
+ return props.$isHighlighted ? '3px solid #ffd700' : '3px solid transparent';
58285
+ });
58047
58286
  var ItemIconContainer$2 = /*#__PURE__*/styled.div.withConfig({
58048
58287
  displayName: "StoreCharacterSkinRow__ItemIconContainer",
58049
58288
  componentId: "sc-81xqsx-1"
@@ -58051,23 +58290,23 @@ var ItemIconContainer$2 = /*#__PURE__*/styled.div.withConfig({
58051
58290
  var ItemDetails$1 = /*#__PURE__*/styled.div.withConfig({
58052
58291
  displayName: "StoreCharacterSkinRow__ItemDetails",
58053
58292
  componentId: "sc-81xqsx-2"
58054
- })(["flex:1;display:flex;flex-direction:column;gap:0.5rem;"]);
58293
+ })(["flex:1;display:flex;flex-direction:column;gap:0.25rem;"]);
58055
58294
  var ItemName$1 = /*#__PURE__*/styled.div.withConfig({
58056
58295
  displayName: "StoreCharacterSkinRow__ItemName",
58057
58296
  componentId: "sc-81xqsx-3"
58058
- })(["font-family:'Press Start 2P',cursive;font-size:0.875rem;color:#ffffff;"]);
58297
+ })(["font-family:'Press Start 2P',cursive;font-size:0.75rem;color:#ffffff;"]);
58059
58298
  var SelectedSkin = /*#__PURE__*/styled.div.withConfig({
58060
58299
  displayName: "StoreCharacterSkinRow__SelectedSkin",
58061
58300
  componentId: "sc-81xqsx-4"
58062
- })(["font-family:'Press Start 2P',cursive;font-size:0.65rem;color:#fef08a;"]);
58301
+ })(["font-family:'Press Start 2P',cursive;font-size:0.5rem;color:#fef08a;"]);
58063
58302
  var ItemPrice = /*#__PURE__*/styled.div.withConfig({
58064
58303
  displayName: "StoreCharacterSkinRow__ItemPrice",
58065
58304
  componentId: "sc-81xqsx-5"
58066
- })(["font-family:'Press Start 2P',cursive;font-size:0.75rem;color:#fef08a;"]);
58305
+ })(["font-family:'Press Start 2P',cursive;font-size:0.625rem;color:#fef08a;"]);
58067
58306
  var Controls = /*#__PURE__*/styled.div.withConfig({
58068
58307
  displayName: "StoreCharacterSkinRow__Controls",
58069
58308
  componentId: "sc-81xqsx-6"
58070
- })(["display:flex;align-items:center;gap:1rem;min-width:fit-content;"]);
58309
+ })(["display:flex;align-items:center;gap:0.5rem;min-width:fit-content;"]);
58071
58310
  // Styled arrow override for inline nav arrows
58072
58311
  var SkinNavArrow = /*#__PURE__*/styled(SelectArrow).withConfig({
58073
58312
  displayName: "StoreCharacterSkinRow__SkinNavArrow",
@@ -58081,42 +58320,77 @@ var SelectedSkinNav = /*#__PURE__*/styled.div.withConfig({
58081
58320
  displayName: "StoreCharacterSkinRow__SelectedSkinNav",
58082
58321
  componentId: "sc-81xqsx-9"
58083
58322
  })(["display:flex;align-items:center;gap:0.5rem;"]);
58323
+ var DefaultIcon = /*#__PURE__*/styled.div.withConfig({
58324
+ displayName: "StoreCharacterSkinRow__DefaultIcon",
58325
+ componentId: "sc-81xqsx-10"
58326
+ })(["font-size:1.5rem;display:flex;align-items:center;justify-content:center;width:32px;height:32px;"]);
58084
58327
 
58085
- var StoreItemRow = function StoreItemRow(_ref) {
58086
- var _item$requiredAccount;
58087
- var item = _ref.item,
58088
- atlasJSON = _ref.atlasJSON,
58089
- atlasIMG = _ref.atlasIMG,
58090
- onAddToCart = _ref.onAddToCart,
58091
- userAccountType = _ref.userAccountType,
58092
- _ref$showTextInput = _ref.showTextInput,
58093
- showTextInput = _ref$showTextInput === void 0 ? false : _ref$showTextInput,
58094
- _ref$textInputPlaceho = _ref.textInputPlaceholder,
58095
- textInputPlaceholder = _ref$textInputPlaceho === void 0 ? item.inputPlaceholder : _ref$textInputPlaceho;
58096
- var _useState = useState(1),
58328
+ var useQuantityControl = function useQuantityControl(initialQuantity, min, max) {
58329
+ if (initialQuantity === void 0) {
58330
+ initialQuantity = 1;
58331
+ }
58332
+ if (min === void 0) {
58333
+ min = 1;
58334
+ }
58335
+ if (max === void 0) {
58336
+ max = 99;
58337
+ }
58338
+ var _useState = useState(initialQuantity),
58097
58339
  quantity = _useState[0],
58098
58340
  setQuantity = _useState[1];
58099
- var _useState2 = useState(''),
58100
- textInputValue = _useState2[0],
58101
- setTextInputValue = _useState2[1];
58102
58341
  var handleQuantityChange = function handleQuantityChange(e) {
58103
- var value = parseInt(e.target.value) || 1;
58104
- setQuantity(Math.min(Math.max(1, value), 99));
58342
+ var value = parseInt(e.target.value) || min;
58343
+ setQuantity(Math.min(Math.max(min, value), max));
58105
58344
  };
58106
58345
  var handleBlur = function handleBlur() {
58107
- if (quantity < 1) setQuantity(1);
58108
- if (quantity > 99) setQuantity(99);
58346
+ if (quantity < min) setQuantity(min);
58347
+ if (quantity > max) setQuantity(max);
58109
58348
  };
58110
58349
  var incrementQuantity = function incrementQuantity() {
58111
58350
  setQuantity(function (prev) {
58112
- return Math.min(prev + 1, 99);
58351
+ return Math.min(prev + 1, max);
58113
58352
  });
58114
58353
  };
58115
58354
  var decrementQuantity = function decrementQuantity() {
58116
58355
  setQuantity(function (prev) {
58117
- return Math.max(1, prev - 1);
58356
+ return Math.max(min, prev - 1);
58118
58357
  });
58119
58358
  };
58359
+ var resetQuantity = function resetQuantity() {
58360
+ setQuantity(initialQuantity);
58361
+ };
58362
+ return {
58363
+ quantity: quantity,
58364
+ setQuantity: setQuantity,
58365
+ handleQuantityChange: handleQuantityChange,
58366
+ handleBlur: handleBlur,
58367
+ incrementQuantity: incrementQuantity,
58368
+ decrementQuantity: decrementQuantity,
58369
+ resetQuantity: resetQuantity
58370
+ };
58371
+ };
58372
+
58373
+ var StoreItemRow = function StoreItemRow(_ref) {
58374
+ var _item$requiredAccount, _item$store;
58375
+ var item = _ref.item,
58376
+ atlasJSON = _ref.atlasJSON,
58377
+ atlasIMG = _ref.atlasIMG,
58378
+ onAddToCart = _ref.onAddToCart,
58379
+ userAccountType = _ref.userAccountType,
58380
+ _ref$showTextInput = _ref.showTextInput,
58381
+ showTextInput = _ref$showTextInput === void 0 ? false : _ref$showTextInput,
58382
+ _ref$textInputPlaceho = _ref.textInputPlaceholder,
58383
+ textInputPlaceholder = _ref$textInputPlaceho === void 0 ? item.inputPlaceholder : _ref$textInputPlaceho;
58384
+ var _useState = useState(''),
58385
+ textInputValue = _useState[0],
58386
+ setTextInputValue = _useState[1];
58387
+ var _useQuantityControl = useQuantityControl(),
58388
+ quantity = _useQuantityControl.quantity,
58389
+ handleQuantityChange = _useQuantityControl.handleQuantityChange,
58390
+ handleBlur = _useQuantityControl.handleBlur,
58391
+ incrementQuantity = _useQuantityControl.incrementQuantity,
58392
+ decrementQuantity = _useQuantityControl.decrementQuantity,
58393
+ resetQuantity = _useQuantityControl.resetQuantity;
58120
58394
  var hasRequiredAccount = !((_item$requiredAccount = item.requiredAccountType) != null && _item$requiredAccount.length) || item.requiredAccountType.includes(userAccountType);
58121
58395
  var handleAddToCartInternal = function handleAddToCartInternal() {
58122
58396
  if (!hasRequiredAccount) return;
@@ -58127,10 +58401,12 @@ var StoreItemRow = function StoreItemRow(_ref) {
58127
58401
  setTextInputValue('');
58128
58402
  } else {
58129
58403
  onAddToCart(item, quantity);
58130
- setQuantity(1);
58404
+ resetQuantity();
58131
58405
  }
58132
58406
  };
58133
- return React.createElement(ItemWrapper$1, null, React.createElement(ItemIconContainer$3, null, React.createElement(SpriteFromAtlas, {
58407
+ return React.createElement(ItemWrapper$1, {
58408
+ "$isHighlighted": ((_item$store = item.store) == null ? void 0 : _item$store.isHighlighted) || false
58409
+ }, React.createElement(ItemIconContainer$3, null, React.createElement(SpriteFromAtlas, {
58134
58410
  atlasJSON: atlasJSON,
58135
58411
  atlasIMG: atlasIMG,
58136
58412
  spriteKey: item.texturePath,
@@ -58172,7 +58448,11 @@ var StoreItemRow = function StoreItemRow(_ref) {
58172
58448
  var ItemWrapper$1 = /*#__PURE__*/styled.div.withConfig({
58173
58449
  displayName: "StoreItemRow__ItemWrapper",
58174
58450
  componentId: "sc-ptotuo-0"
58175
- })(["display:flex;align-items:center;gap:1rem;padding:1rem;border-bottom:1px solid rgba(255,255,255,0.1);&:last-child{border-bottom:none;}"]);
58451
+ })(["display:flex;align-items:center;gap:0.75rem;padding:0.5rem 1rem;border-bottom:1px solid rgba(255,255,255,0.1);background:", ";border-left:", ";&:last-child{border-bottom:none;}"], function (props) {
58452
+ return props.$isHighlighted ? 'rgba(255, 215, 0, 0.1)' : 'transparent';
58453
+ }, function (props) {
58454
+ return props.$isHighlighted ? '3px solid #ffd700' : '3px solid transparent';
58455
+ });
58176
58456
  var ItemIconContainer$3 = /*#__PURE__*/styled.div.withConfig({
58177
58457
  displayName: "StoreItemRow__ItemIconContainer",
58178
58458
  componentId: "sc-ptotuo-1"
@@ -58180,15 +58460,15 @@ var ItemIconContainer$3 = /*#__PURE__*/styled.div.withConfig({
58180
58460
  var ItemDetails$2 = /*#__PURE__*/styled.div.withConfig({
58181
58461
  displayName: "StoreItemRow__ItemDetails",
58182
58462
  componentId: "sc-ptotuo-2"
58183
- })(["flex:1;display:flex;flex-direction:column;gap:0.5rem;"]);
58463
+ })(["flex:1;display:flex;flex-direction:column;gap:0.25rem;"]);
58184
58464
  var ItemName$2 = /*#__PURE__*/styled.div.withConfig({
58185
58465
  displayName: "StoreItemRow__ItemName",
58186
58466
  componentId: "sc-ptotuo-3"
58187
- })(["font-family:'Press Start 2P',cursive;font-size:0.875rem;color:#ffffff;"]);
58467
+ })(["font-family:'Press Start 2P',cursive;font-size:0.75rem;color:#ffffff;"]);
58188
58468
  var ItemPrice$1 = /*#__PURE__*/styled.div.withConfig({
58189
58469
  displayName: "StoreItemRow__ItemPrice",
58190
58470
  componentId: "sc-ptotuo-4"
58191
- })(["font-family:'Press Start 2P',cursive;font-size:0.75rem;color:#fef08a;"]);
58471
+ })(["font-family:'Press Start 2P',cursive;font-size:0.625rem;color:#fef08a;"]);
58192
58472
  var ItemDescription = /*#__PURE__*/styled.div.withConfig({
58193
58473
  displayName: "StoreItemRow__ItemDescription",
58194
58474
  componentId: "sc-ptotuo-5"
@@ -58196,7 +58476,7 @@ var ItemDescription = /*#__PURE__*/styled.div.withConfig({
58196
58476
  var Controls$1 = /*#__PURE__*/styled.div.withConfig({
58197
58477
  displayName: "StoreItemRow__Controls",
58198
58478
  componentId: "sc-ptotuo-6"
58199
- })(["display:flex;align-items:center;gap:1rem;min-width:fit-content;"]);
58479
+ })(["display:flex;align-items:center;gap:0.5rem;min-width:fit-content;"]);
58200
58480
  var ArrowsContainer = /*#__PURE__*/styled.div.withConfig({
58201
58481
  displayName: "StoreItemRow__ArrowsContainer",
58202
58482
  componentId: "sc-ptotuo-7"
@@ -58210,6 +58490,50 @@ var TextInput = /*#__PURE__*/styled.input.withConfig({
58210
58490
  componentId: "sc-ptotuo-9"
58211
58491
  })(["width:120px;text-align:center;margin:0 auto;font-size:0.875rem;background:rgba(0,0,0,0.2);color:#ffffff;border:none;padding:0.25rem;"]);
58212
58492
 
58493
+ var useStoreFiltering = function useStoreFiltering(items) {
58494
+ var _useState = useState(''),
58495
+ searchQuery = _useState[0],
58496
+ setSearchQuery = _useState[1];
58497
+ var _useState2 = useState('all'),
58498
+ selectedCategory = _useState2[0],
58499
+ setSelectedCategory = _useState2[1];
58500
+ var categoryOptions = useMemo(function () {
58501
+ var uniqueCategories = Array.from(new Set(items.map(function (item) {
58502
+ return item.itemType;
58503
+ })));
58504
+ var allCategories = ['all'].concat(uniqueCategories);
58505
+ return allCategories.map(function (category, index) {
58506
+ return {
58507
+ id: index,
58508
+ value: category,
58509
+ option: category === 'all' ? 'All' : category
58510
+ };
58511
+ });
58512
+ }, [items]);
58513
+ var filteredItems = useMemo(function () {
58514
+ return items.filter(function (item) {
58515
+ var matchesSearch = item.name.toLowerCase().includes(searchQuery.toLowerCase());
58516
+ var matchesCategory = selectedCategory === 'all' || item.itemType === selectedCategory;
58517
+ return matchesSearch && matchesCategory;
58518
+ }).sort(function (a, b) {
58519
+ var _a$store, _b$store;
58520
+ var aHighlighted = ((_a$store = a.store) == null ? void 0 : _a$store.isHighlighted) || false;
58521
+ var bHighlighted = ((_b$store = b.store) == null ? void 0 : _b$store.isHighlighted) || false;
58522
+ if (aHighlighted && !bHighlighted) return -1;
58523
+ if (!aHighlighted && bHighlighted) return 1;
58524
+ return 0;
58525
+ });
58526
+ }, [items, searchQuery, selectedCategory]);
58527
+ return {
58528
+ searchQuery: searchQuery,
58529
+ setSearchQuery: setSearchQuery,
58530
+ selectedCategory: selectedCategory,
58531
+ setSelectedCategory: setSelectedCategory,
58532
+ categoryOptions: categoryOptions,
58533
+ filteredItems: filteredItems
58534
+ };
58535
+ };
58536
+
58213
58537
  var StoreItemsSection = function StoreItemsSection(_ref) {
58214
58538
  var items = _ref.items,
58215
58539
  onAddToCart = _ref.onAddToCart,
@@ -58218,12 +58542,12 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
58218
58542
  userAccountType = _ref.userAccountType,
58219
58543
  _ref$textInputItemKey = _ref.textInputItemKeys,
58220
58544
  textInputItemKeys = _ref$textInputItemKey === void 0 ? [] : _ref$textInputItemKey;
58221
- var _useState = useState(''),
58222
- searchQuery = _useState[0],
58223
- setSearchQuery = _useState[1];
58224
- var filteredItems = items.filter(function (item) {
58225
- return item.name.toLowerCase().includes(searchQuery.toLowerCase());
58226
- });
58545
+ var _useStoreFiltering = useStoreFiltering(items),
58546
+ searchQuery = _useStoreFiltering.searchQuery,
58547
+ setSearchQuery = _useStoreFiltering.setSearchQuery,
58548
+ setSelectedCategory = _useStoreFiltering.setSelectedCategory,
58549
+ categoryOptions = _useStoreFiltering.categoryOptions,
58550
+ filteredItems = _useStoreFiltering.filteredItems;
58227
58551
  var renderStoreItem = function renderStoreItem(item) {
58228
58552
  // Prefer a specialized character skin row when needed
58229
58553
  if (item.metadataType === MetadataType.CharacterSkin) {
@@ -58258,19 +58582,40 @@ var StoreItemsSection = function StoreItemsSection(_ref) {
58258
58582
  userAccountType: userAccountType || UserAccountTypes.Free
58259
58583
  });
58260
58584
  };
58261
- return React.createElement(ScrollableContent, {
58585
+ return React.createElement(StoreContainer, null, React.createElement(SearchHeader$2, null, React.createElement(SearchBarContainer$1, null, React.createElement(SearchBar, {
58586
+ value: searchQuery,
58587
+ onChange: setSearchQuery,
58588
+ placeholder: "Search items..."
58589
+ })), React.createElement(DropdownContainer$2, null, React.createElement(Dropdown, {
58590
+ options: categoryOptions,
58591
+ onChange: function onChange(value) {
58592
+ return setSelectedCategory(value);
58593
+ },
58594
+ width: "100%"
58595
+ }))), React.createElement(ScrollableContent, {
58262
58596
  items: filteredItems,
58263
58597
  renderItem: renderStoreItem,
58264
- emptyMessage: "No items available.",
58265
- searchOptions: {
58266
- value: searchQuery,
58267
- onChange: setSearchQuery,
58268
- placeholder: 'Search items...'
58269
- },
58598
+ emptyMessage: "No items match your filters.",
58270
58599
  layout: "list",
58271
- maxHeight: "400px"
58272
- });
58600
+ maxHeight: "350px"
58601
+ }));
58273
58602
  };
58603
+ var StoreContainer = /*#__PURE__*/styled.div.withConfig({
58604
+ displayName: "StoreItemsSection__StoreContainer",
58605
+ componentId: "sc-l6f466-0"
58606
+ })(["display:flex;flex-direction:column;height:100%;gap:0.5rem;"]);
58607
+ var SearchHeader$2 = /*#__PURE__*/styled.div.withConfig({
58608
+ displayName: "StoreItemsSection__SearchHeader",
58609
+ componentId: "sc-l6f466-1"
58610
+ })(["display:flex;gap:0.5rem;align-items:center;padding-top:0.25rem;"]);
58611
+ var SearchBarContainer$1 = /*#__PURE__*/styled.div.withConfig({
58612
+ displayName: "StoreItemsSection__SearchBarContainer",
58613
+ componentId: "sc-l6f466-2"
58614
+ })(["flex:0.75;"]);
58615
+ var DropdownContainer$2 = /*#__PURE__*/styled.div.withConfig({
58616
+ displayName: "StoreItemsSection__DropdownContainer",
58617
+ componentId: "sc-l6f466-3"
58618
+ })(["flex:0.25;min-width:140px;"]);
58274
58619
 
58275
58620
  var ShoppingCardHorizontal = function ShoppingCardHorizontal(_ref) {
58276
58621
  var title = _ref.title,
@@ -58335,13 +58680,30 @@ var CardFooter = /*#__PURE__*/styled.div.withConfig({
58335
58680
  componentId: "sc-ngkh06-6"
58336
58681
  })(["margin-top:auto;padding-top:8px;border-top:1px solid rgba(255,255,255,0.1);"]);
58337
58682
 
58683
+ var usePackFiltering = function usePackFiltering(packs) {
58684
+ var _useState = useState(''),
58685
+ searchQuery = _useState[0],
58686
+ setSearchQuery = _useState[1];
58687
+ var filteredPacks = useMemo(function () {
58688
+ return packs.filter(function (pack) {
58689
+ return pack.title.toLowerCase().includes(searchQuery.toLowerCase());
58690
+ });
58691
+ }, [packs, searchQuery]);
58692
+ return {
58693
+ searchQuery: searchQuery,
58694
+ setSearchQuery: setSearchQuery,
58695
+ filteredPacks: filteredPacks
58696
+ };
58697
+ };
58698
+
58338
58699
  var StorePacksSection = function StorePacksSection(_ref) {
58339
58700
  var packs = _ref.packs,
58340
58701
  onAddToCart = _ref.onAddToCart,
58341
58702
  onSelectPack = _ref.onSelectPack;
58342
- var _useState = useState(''),
58343
- searchQuery = _useState[0],
58344
- setSearchQuery = _useState[1];
58703
+ var _usePackFiltering = usePackFiltering(packs),
58704
+ searchQuery = _usePackFiltering.searchQuery,
58705
+ setSearchQuery = _usePackFiltering.setSearchQuery,
58706
+ filteredPacks = _usePackFiltering.filteredPacks;
58345
58707
  var renderPackFooter = useCallback(function (pack) {
58346
58708
  return React.createElement(FooterContainer, null, React.createElement(Price, null, "$", pack.priceUSD), React.createElement(CTAButton, {
58347
58709
  icon: React.createElement(FaCartPlus, null),
@@ -58364,11 +58726,6 @@ var StorePacksSection = function StorePacksSection(_ref) {
58364
58726
  }
58365
58727
  });
58366
58728
  }, [onSelectPack, renderPackFooter]);
58367
- var filteredPacks = useMemo(function () {
58368
- return packs.filter(function (pack) {
58369
- return pack.title.toLowerCase().includes(searchQuery.toLowerCase());
58370
- });
58371
- }, [packs, searchQuery]);
58372
58729
  return React.createElement(ScrollableContent, {
58373
58730
  items: filteredPacks,
58374
58731
  renderItem: renderPack,