@swipefindercom/finder-sdk 1.0.25 → 1.0.27

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.
@@ -1,4 +1,4 @@
1
- (function(){if(typeof document!=="undefined"){var s=document.createElement("style");s.textContent="._card_doqsx_2{position:absolute;width:100%;height:100%;left:0;top:0;background-color:#fff;box-shadow:0 2px 8px #0003;overflow:hidden;transition:transform .3s ease;cursor:default;transform-origin:50% 100%;will-change:transform;z-index:1}._cardContent_doqsx_18{position:absolute;z-index:2;bottom:0;left:0;width:100%;height:100%;color:#fff}._gradientBottom_doqsx_29{position:absolute;z-index:1;bottom:0;left:0;width:100%;height:120px;background:linear-gradient(transparent,#000);pointer-events:none}._gradientTop_doqsx_41{position:absolute;z-index:1;top:0;left:0;width:100%;height:120px;background:linear-gradient(rgba(0,0,0,1),transparent);pointer-events:none}._cardName_doqsx_52{position:absolute;left:0;bottom:10%;font-weight:700;font-size:22px;padding:0 20px;text-shadow:1px 1px 2px rgba(0,0,0,.8);width:100%;text-align:left;white-space:pre-wrap}._image_trs4h_2{width:100%;height:100%;object-fit:cover}._videoContainer_119iz_3{width:100%;height:100%;position:relative;overflow:hidden}._cardVideo_119iz_10{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0;z-index:1}._swipeableCard_14c6z_1{position:relative;width:100%;height:100%;will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;touch-action:none;user-select:none;-webkit-user-select:none;pointer-events:auto}._swipeableCard_14c6z_1>*{pointer-events:none}._swipeableCard_14c6z_1 video,._swipeableCard_14c6z_1 img{pointer-events:none}._swipeHeadline_14c6z_25{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:24px;font-weight:700;color:#fff;z-index:200000}._ctaTooltip_1mai4_2{position:absolute;z-index:110;font-size:12px;top:0;right:-2px;background-color:#fff;color:#333;padding:10px 14px;border-radius:8px;font-weight:800;text-align:center;width:max-content;transition:opacity .3s ease;pointer-events:none;animation:_ctaTooltipBounce_1mai4_1 2s infinite;box-shadow:0 0 16px 1px #000;white-space:pre-line}._ctaTooltipArrow_1mai4_22{position:absolute;bottom:-8px;width:16px;height:16px;transform:translate(50%) rotate(45deg);z-index:0}@keyframes _ctaTooltipBounce_1mai4_1{0%,20%,50%,80%,to{transform:translateY(calc(-100% - 16px))}40%{transform:translateY(calc(-100% - 24px))}60%{transform:translateY(calc(-100% - 20px))}}._verticalEmojisButtons_14t5d_2{position:absolute;display:flex;flex-direction:column;align-items:center;z-index:100}._buttonContainer_14t5d_11{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:8px 0}._button_14t5d_11{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 5px #0003;background-color:#fff;position:relative;-webkit-user-select:none;user-select:none;transition:transform .2s ease,background-color .2s ease;outline:none;border:none;-webkit-tap-highlight-color:transparent}._button_14t5d_11:focus,._button_14t5d_11:active{outline:none;border:none}._emojiIcon_14t5d_45{width:35px;height:35px;display:block;outline:none;pointer-events:none;position:relative;z-index:2}._buttonLabel_14t5d_56{white-space:pre-wrap;margin-top:5px}._buttonAnimation_14t5d_62{transform:scale(1.3);z-index:101;position:relative}._buttonAnimation_14t5d_62:before{content:\"\";position:absolute;top:-5px;left:-5px;right:-5px;bottom:-5px;border-radius:50%;border:5px solid rgba(255,255,255,.5);z-index:1}._buttonLikeAnimation_14t5d_80{background-color:#4cd964!important;transform:scale(1.3)!important}._buttonDislikeAnimation_14t5d_85{background-color:#ff3b30!important;transform:scale(1.3)!important}._buttonMaybeAnimation_14t5d_90{background-color:#fc0!important;transform:scale(1.3)!important}._buttonSeenAnimation_14t5d_95{background-color:#007aff!important;transform:scale(1.3)!important}._contrastMode_14t5d_101 ._buttonContainer_14t5d_11{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:8px 0}._contrastModeButton_14t5d_109{background-color:#fffc!important;border:2px solid black!important;box-shadow:0 0 8px #00000080!important}._contrastModeButton_14t5d_109:hover{background-color:#fff!important}._contrastModeLabel_14t5d_119{color:#fff!important;text-shadow:1px 1px 3px black,-1px -1px 3px black,1px -1px 3px black,-1px 1px 3px black!important;font-weight:700!important;font-size:12px!important;text-align:center!important;display:block!important;margin-top:5px!important;text-transform:uppercase}._contrastModeLike_14t5d_130,._contrastModeDislike_14t5d_135,._contrastModeMaybe_14t5d_140,._contrastModeSeen_14t5d_145{color:#fff!important;filter:brightness(1.5)!important}._sideButtonsContainer_jjr9u_2{position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:100;pointer-events:none}._sideButtonsWrapper_jjr9u_16{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto 1fr auto;padding:15px;box-sizing:border-box}._sideButtonContainer_jjr9u_28{display:flex;align-items:center;flex-direction:column;gap:4px}._sideButtonLeft_jjr9u_36{grid-column:1;grid-row:2;margin-right:auto;justify-self:start;align-self:center}._sideButtonRight_jjr9u_45{grid-column:3;grid-row:2;margin-left:auto;justify-self:end;align-self:center}._sideButtonTop_jjr9u_54{grid-column:2;grid-row:1;justify-self:center;align-self:start}._sideButtonBottom_jjr9u_62{grid-column:2;grid-row:3;justify-self:center;align-self:end}._sideButton_jjr9u_2{border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.4);background-color:#ffffffb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 12px #0000004d;transition:all .3s ease;-webkit-tap-highlight-color:transparent;pointer-events:auto;padding:0;margin:0;gap:4px}._sideButton_jjr9u_2:hover{border-color:#fff;background-color:#ffffffe6}._buttonContent_jjr9u_95{position:relative;display:flex;align-items:center;justify-content:center}._arrowWrapper_jjr9u_103,._emojiWrapper_jjr9u_104{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}._arrowWrapper_jjr9u_103 svg{color:#000}._arrowRight_jjr9u_120{transform:rotate(0)}._arrowLeft_jjr9u_124{transform:rotate(180deg)}._arrowUp_jjr9u_128{transform:rotate(-90deg)}._arrowDown_jjr9u_132{transform:rotate(90deg)}._emojiIcon_jjr9u_137{pointer-events:none;user-select:none;-webkit-user-select:none}._buttonLabel_jjr9u_144{white-space:pre-wrap;text-align:center;color:#000;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;line-height:1.2;user-select:none;-webkit-user-select:none;margin-top:0}@keyframes _moveRight_jjr9u_1{0%{transform:rotate(0) translate(0);opacity:.7}10%{transform:rotate(0) translate(6px);opacity:1}15%{transform:rotate(0) translate(12px);opacity:1}20%{transform:rotate(0) translate(12px);opacity:1}25%{transform:rotate(0) translate(0);opacity:.7}25.01%,to{transform:rotate(0) translate(0);opacity:.7}}@keyframes _moveLeft_jjr9u_1{0%,24.99%{transform:rotate(180deg) translate(0);opacity:.7}25%{transform:rotate(180deg) translate(0);opacity:.7}35%{transform:rotate(180deg) translate(6px);opacity:1}40%{transform:rotate(180deg) translate(12px);opacity:1}45%{transform:rotate(180deg) translate(12px);opacity:1}50%{transform:rotate(180deg) translate(0);opacity:.7}50.01%,to{transform:rotate(180deg) translate(0);opacity:.7}}@keyframes _moveUp_jjr9u_1{0%,49.99%{transform:rotate(-90deg) translate(0);opacity:.7}50%{transform:rotate(-90deg) translate(0);opacity:.7}60%{transform:rotate(-90deg) translate(6px);opacity:1}65%{transform:rotate(-90deg) translate(12px);opacity:1}70%{transform:rotate(-90deg) translate(12px);opacity:1}75%{transform:rotate(-90deg) translate(0);opacity:.7}75.01%,to{transform:rotate(-90deg) translate(0);opacity:.7}}@keyframes _moveDown_jjr9u_1{0%,74.99%{transform:rotate(90deg) translate(0);opacity:.7}75%{transform:rotate(90deg) translate(0);opacity:.7}85%{transform:rotate(90deg) translate(6px);opacity:1}90%{transform:rotate(90deg) translate(12px);opacity:1}95%{transform:rotate(90deg) translate(12px);opacity:1}to{transform:rotate(90deg) translate(0);opacity:.7}}._sideButton_jjr9u_2.like-btn ._arrowWrapper_jjr9u_103 svg._arrowRight_jjr9u_120{animation:_moveRight_jjr9u_1 8s infinite}._sideButton_jjr9u_2.dislike-btn ._arrowWrapper_jjr9u_103 svg._arrowLeft_jjr9u_124{animation:_moveLeft_jjr9u_1 8s infinite}._sideButton_jjr9u_2.maybe-btn ._arrowWrapper_jjr9u_103 svg._arrowUp_jjr9u_128{animation:_moveUp_jjr9u_1 8s infinite}._sideButton_jjr9u_2.seen-btn ._arrowWrapper_jjr9u_103 svg._arrowDown_jjr9u_132{animation:_moveDown_jjr9u_1 8s infinite}._horizontalCtaTooltip_1slua_1{position:absolute;transform:translate(-50%) translateY(-25%);left:50%;padding:10px 15px;border-radius:6px;font-weight:500;text-align:center;z-index:100;transition:opacity .3s ease;box-shadow:0 2px 8px #0003;animation:_horizontalCtaTooltipPulse_1slua_1 2s infinite ease-in-out;white-space:pre-line;background-color:#fff;color:#333;font-size:12px}._contrastMode_1slua_19 ._horizontalCtaTooltip_1slua_1{background-color:#00000080;color:#fff;border:1px solid white;font-weight:600}@keyframes _horizontalCtaTooltipPulse_1slua_1{0%{transform:translate(-50%) translateY(-25%) scale(1)}50%{transform:translate(-50%) translateY(-25%) scale(1.1)}to{transform:translate(-50%) translateY(-25%) scale(1)}}._sideButtonsContainer_1kkly_2{position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:100;pointer-events:none}._sideButtonsWrapper_1kkly_16{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto 1fr auto;padding:15px;box-sizing:border-box}._sideButtonContainer_1kkly_28{display:flex;align-items:center;flex-direction:column;gap:4px}._sideButtonLeft_1kkly_36{grid-column:1;grid-row:2;margin-right:auto;justify-self:start;align-self:center}._sideButtonRight_1kkly_45{grid-column:3;grid-row:2;margin-left:auto;justify-self:end;align-self:center}._sideButtonTop_1kkly_54{grid-column:2;grid-row:1;justify-self:center;align-self:start}._sideButtonBottom_1kkly_62{grid-column:2;grid-row:3;justify-self:center;align-self:end}._sideButton_1kkly_2{border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.4);background-color:#ffffffb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 12px #0000004d;transition:all .3s ease;-webkit-tap-highlight-color:transparent;pointer-events:auto;padding:0;margin:0;gap:4px;-webkit-touch-callout:none;-webkit-user-select:none;touch-action:manipulation;cursor:pointer}._sideButton_1kkly_2:hover{border-color:#fff;background-color:#ffffffe6}._buttonContent_1kkly_99{position:relative;display:flex;align-items:center;justify-content:center}._buttonContent_1kkly_99 svg{color:#000}._buttonLabel_1kkly_111{white-space:pre-wrap;text-align:center;color:#000;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;line-height:1.2;user-select:none;-webkit-user-select:none;margin-top:0}._arrowRight_1kkly_126{transform:rotate(0)}._arrowLeft_1kkly_130{transform:rotate(180deg)}._arrowUp_1kkly_134{transform:rotate(-90deg)}._arrowDown_1kkly_138{transform:rotate(90deg)}@keyframes _moveRight_1kkly_1{0%{transform:rotate(0) translate(0);opacity:.7}10%{transform:rotate(0) translate(6px);opacity:1}15%{transform:rotate(0) translate(12px);opacity:1}20%{transform:rotate(0) translate(12px);opacity:1}25%{transform:rotate(0) translate(0);opacity:.7}25.01%,to{transform:rotate(0) translate(0);opacity:.7}}@keyframes _moveLeft_1kkly_1{0%,24.99%{transform:rotate(180deg) translate(0);opacity:.7}25%{transform:rotate(180deg) translate(0);opacity:.7}35%{transform:rotate(180deg) translate(6px);opacity:1}40%{transform:rotate(180deg) translate(12px);opacity:1}45%{transform:rotate(180deg) translate(12px);opacity:1}50%{transform:rotate(180deg) translate(0);opacity:.7}50.01%,to{transform:rotate(180deg) translate(0);opacity:.7}}@keyframes _moveUp_1kkly_1{0%,49.99%{transform:rotate(-90deg) translate(0);opacity:.7}50%{transform:rotate(-90deg) translate(0);opacity:.7}60%{transform:rotate(-90deg) translate(6px);opacity:1}65%{transform:rotate(-90deg) translate(12px);opacity:1}70%{transform:rotate(-90deg) translate(12px);opacity:1}75%{transform:rotate(-90deg) translate(0);opacity:.7}75.01%,to{transform:rotate(-90deg) translate(0);opacity:.7}}@keyframes _moveDown_1kkly_1{0%,74.99%{transform:rotate(90deg) translate(0);opacity:.7}75%{transform:rotate(90deg) translate(0);opacity:.7}85%{transform:rotate(90deg) translate(6px);opacity:1}90%{transform:rotate(90deg) translate(12px);opacity:1}95%{transform:rotate(90deg) translate(12px);opacity:1}to{transform:rotate(90deg) translate(0);opacity:.7}}._sideButton_1kkly_2.like-btn ._buttonContent_1kkly_99 svg._arrowRight_1kkly_126{animation:_moveRight_1kkly_1 8s infinite}._sideButton_1kkly_2.dislike-btn ._buttonContent_1kkly_99 svg._arrowLeft_1kkly_130{animation:_moveLeft_1kkly_1 8s infinite}._sideButton_1kkly_2.maybe-btn ._buttonContent_1kkly_99 svg._arrowUp_1kkly_134{animation:_moveUp_1kkly_1 8s infinite}._sideButton_1kkly_2.seen-btn ._buttonContent_1kkly_99 svg._arrowDown_1kkly_138{animation:_moveDown_1kkly_1 8s infinite}._tooltipWrapper_1kkly_277{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center}._swipeTutorialOverlay_1dy8n_2{position:relative;width:100%;height:100%;left:0;top:0;z-index:100;pointer-events:none}._handContainer_1dy8n_16{position:relative;height:100%}._handWrapper_1dy8n_25{position:relative;left:50%;transform:translate(-50%,-50%)}._handIcon_1dy8n_32{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));opacity:.9;width:100%;height:100%}._handLabelWrapper_1dy8n_39{position:absolute;top:55%;left:40%;width:50%;height:38%;display:flex;align-items:center;justify-content:center;z-index:1;overflow:hidden}._handLabel_1dy8n_39{display:block;line-height:1;text-wrap:wrap;text-align:center;word-wrap:normal;overflow:hidden;font-weight:600}._swipeableFeed_jamse_1{position:relative;width:100%;height:100%;overflow:hidden}._swipeableFeedCards_jamse_8{position:relative;width:100%;height:100%}._swipeableFeedCards_jamse_8>*{position:absolute;top:0;left:0;width:100%;height:100%}._swipeableFeedEmpty_jamse_22{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#666;font-size:16px;text-align:center}._swipeTutorialContainer_jamse_33{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:150}._volumeControl_r52gg_2{position:absolute;z-index:1100;display:flex;align-items:center;gap:8px;margin:0}._volumeControlTopLeft_r52gg_12{top:10px;left:10px}._volumeControlTopRight_r52gg_17{top:10px;right:10px;flex-direction:row-reverse}._volumeControlBottomLeft_r52gg_23{bottom:80px;left:15px}._volumeControlBottomRight_r52gg_28{bottom:80px;right:15px;flex-direction:row-reverse}._volumeControlButton_r52gg_34{width:auto;height:30px;cursor:pointer;background-color:#0006;border-radius:50%;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center;padding:4px;box-sizing:border-box;flex-shrink:0}._volumeControlButton_r52gg_34:hover{background-color:#000000b3}._volumeControlButton_r52gg_34 img{width:100%;height:100%;object-fit:contain}._volumeSlider_r52gg_60{background-color:#0006;border-radius:20px;padding:8px 12px;display:flex;align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .2s ease}._volumeSlider_r52gg_60:hover{background-color:#000000b3}._volumeControl_r52gg_2:hover ._volumeSlider_r52gg_60{opacity:1;pointer-events:auto}._volumeSliderInput_r52gg_81{width:100px;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff4d;border-radius:2px;outline:none;cursor:pointer}._volumeSliderInput_r52gg_81::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;transition:transform .1s ease}._volumeSliderInput_r52gg_81::-webkit-slider-thumb:hover{transform:scale(1.2)}._volumeSliderInput_r52gg_81::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;border:none;transition:transform .1s ease}._volumeSliderInput_r52gg_81::-moz-range-thumb:hover{transform:scale(1.2)}._historyButton_1xf6c_1{border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1000;box-shadow:16px 20px 8px #00000026,inset -4px -4px 10px #0003;background-image:linear-gradient(135deg,#fff3,#0003);outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}._historyCardsContent_1xf6c_17{margin:12px 0}._historyButton_1xf6c_1:focus{outline:none}._historyButton_1xf6c_1:active{outline:none;-webkit-tap-highlight-color:transparent}._historyButton_1xf6c_1:focus-visible{outline:none}._historyButton_1xf6c_1 img{pointer-events:none}._tooltip_1xf6c_39{display:flex;z-index:110;line-height:1.2;padding:10px 14px;position:absolute;top:0;border-radius:8px;font-weight:800;text-align:center;width:max-content;transition:opacity .3s ease;box-shadow:0 0 16px 1px #000;left:50%;white-space:pre-line;transform:translate(-50%) translateY(calc(-100% - 16px));animation:_historyButtonTooltipBounce_1xf6c_1 2s infinite}._tooltipArrow_1xf6c_59{position:absolute;bottom:-8px;left:50%;width:16px;height:16px;transform:translate(-50%) rotate(45deg);z-index:0}@keyframes _historyButtonTooltipBounce_1xf6c_1{0%,20%,50%,80%,to{transform:translate(-50%) translateY(calc(-100% - 16px))}40%{transform:translate(-50%) translateY(calc(-100% - 24px))}60%{transform:translate(-50%) translateY(calc(-100% - 20px))}}._drawerOverlay_1eftt_2{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:999;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility .5s ease}._drawerOverlayScoped_1eftt_16{position:absolute;top:0;left:0;right:0;bottom:0}._drawerOverlayVisible_1eftt_24{opacity:1;visibility:visible}._drawer_1eftt_2{position:fixed;bottom:0;left:0;right:0;height:80%;background:#fff;border-radius:20px 20px 0 0;z-index:1000;transform:translateY(100%);transition:transform .6s cubic-bezier(.25,.46,.45,.94);box-shadow:0 -8px 32px #0003;display:flex;flex-direction:column;overflow:hidden}._drawerScoped_1eftt_48{position:absolute;bottom:0;left:0;right:0}._drawerOpen_1eftt_55{transform:translateY(0)}._drawerHandle_1eftt_60{width:40px;height:4px;background-color:#0003;border-radius:2px;margin:12px auto 8px;flex-shrink:0;transition:background-color .2s ease}._drawerHandle_1eftt_60:hover{background-color:#0000004d}._drawerEmojisContainer_1eftt_75{display:flex;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(0,0,0,.1);flex-shrink:0}._drawerEmojiItem_1eftt_84{display:flex;flex-direction:column;align-items:center;gap:8px}._drawerEmojiItemActive_1eftt_91 ._drawerEmojiLabel_1eftt_91{color:#000;font-weight:700}._drawerEmojiButton_1eftt_97{display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;background:#fffc;border:2px solid rgba(0,0,0,.2);cursor:pointer;transition:all .3s ease;width:50px;height:50px;box-shadow:0 2px 8px #00000026;-webkit-tap-highlight-color:transparent}._drawerEmojiButtonActive_1eftt_113{background:#fff;border:3px solid rgba(0,0,0,.6);box-shadow:0 4px 12px #00000040;transform:scale(1.1)}._drawerEmojiLikeActive_1eftt_125{border-color:#4caf50;background:#4caf5026;box-shadow:0 4px 12px #4caf504d}._drawerEmojiDislikeActive_1eftt_135{border-color:#f44336;background:#f4433626;box-shadow:0 4px 12px #f443364d}._drawerEmojiMaybeActive_1eftt_145{border-color:#ff9800;background:#ff980026;box-shadow:0 4px 12px #ff98004d}._drawerEmojiSeenActive_1eftt_155{border-color:#2196f3;background:#2196f326;box-shadow:0 4px 12px #2196f34d}._drawerEmojiIcon_1eftt_162{width:32px;height:32px;object-fit:contain}._drawerEmojiLabel_1eftt_91{font-size:11px;font-weight:600;color:#000c;text-align:center;line-height:1.2;text-transform:uppercase;letter-spacing:.5px;white-space:pre-wrap}._drawerEmojiLike_1eftt_121:hover{border-color:#4caf50;background:#4caf501a}._drawerEmojiDislike_1eftt_131:hover{border-color:#f44336;background:#f443361a}._drawerEmojiMaybe_1eftt_141:hover{border-color:#ff9800;background:#ff98001a}._drawerEmojiSeen_1eftt_151:hover{border-color:#2196f3;background:#2196f31a}._drawerContent_1eftt_202{flex:1;padding:20px;-webkit-overflow-scrolling:touch;overflow-y:auto}._drawerCloseButton_1eftt_210{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff;border:none;padding:12px 24px;margin:20px;border-radius:25px;font-size:16px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .3s ease;box-shadow:0 4px 16px #ff6b6b4d;outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-self:center;min-height:48px;white-space:pre-wrap}._drawerCloseButton_1eftt_210:hover{transform:translateY(-2px);box-shadow:0 6px 20px #ff6b6b66}._drawerCloseButton_1eftt_210:active{transform:translateY(0);box-shadow:0 2px 8px #ff6b6b4d}._drawerCloseButton_1eftt_210:focus{outline:none}._drawerCloseButton_1eftt_210:focus-visible{outline:2px solid rgba(255,107,107,.5);outline-offset:2px}._drawerCloseIcon_1eftt_255{width:16px;height:16px;filter:brightness(0) invert(1)}@media (max-width: 768px){._drawer_1eftt_2{height:80%;border-radius:30px 30px 0 0}._drawerContent_1eftt_202{padding:16px}._drawerCloseButton_1eftt_210{margin:16px;padding:10px 20px;font-size:14px}}@media (max-width: 480px){._drawer_1eftt_2{height:80%;border-radius:30px 30px 0 0}._drawerContent_1eftt_202{padding:12px}._drawerCloseButton_1eftt_210{margin:12px;font-size:14px}}._cardListContainer_zrmnf_2{padding:20px;overscroll-behavior-y:contain;touch-action:pan-y;overflow-y:auto;height:100%;box-sizing:border-box}._cardListContainerNoPadding_zrmnf_11{padding:0;box-sizing:border-box}._summaryGridContainer_zrmnf_17{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px;box-sizing:border-box}._summaryGridItem_zrmnf_26{aspect-ratio:1;border-radius:8px;overflow:hidden;background:#0000000d;cursor:default}._summaryGridItemClickable_zrmnf_34{cursor:pointer}._gridPlaceholder_zrmnf_39{width:100%;height:100%;background:#f2f2f2;display:flex;align-items:center;justify-content:center;font-size:12px;color:#181818}._gridItemImage_zrmnf_51{width:100%;height:100%;object-fit:cover}._summaryCardItem_zrmnf_58{display:flex;gap:8px;padding:12px;border-radius:8px;background:#f2f2f2;color:#181818;margin-bottom:8px;align-items:center;cursor:default}._summaryCardItemClickable_zrmnf_70{cursor:pointer}._cardItemImage_zrmnf_75{width:60px;height:60px;border-radius:6px;object-fit:cover;flex-shrink:0}._cardItemPlaceholder_zrmnf_84{width:60px;height:60px;border-radius:6px;background:#d9d9d9;display:flex;align-items:center;justify-content:center;font-size:12px;color:#00000080;flex-shrink:0}._cardItemContent_zrmnf_98{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}._cardItemTitle_zrmnf_107{margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.2;text-align:left}._cardItemPrice_zrmnf_116{margin:0;font-size:12px;color:#000000b3;line-height:1.2}._summaryContainer_1gtok_3{display:flex;flex-direction:column;height:100%;width:100%;background-color:#fff;overflow:hidden;position:relative}._summaryShareButtonFixed_1gtok_14{position:absolute;bottom:10px;right:10px;width:45px;height:45px;font-size:12px;text-transform:uppercase;border-radius:50%;background-color:#2196f3;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:all .3s ease;z-index:1000;-webkit-tap-highlight-color:transparent}._summaryShareButtonFixed_1gtok_14:hover{background-color:#1976d2;box-shadow:0 6px 16px #0003;transform:scale(1.05)}._summaryShareButtonFixed_1gtok_14:active{transform:scale(.95);box-shadow:0 2px 8px #00000026}._summaryShareButtonFixed_1gtok_14 ._shareIcon_1gtok_47{width:24px;height:24px;filter:brightness(0) invert(1)}._summaryExplaination_1gtok_54{gap:8px;padding:12px;border-radius:8px;align-items:center;margin:12px 20px 0;font-size:14px;font-weight:600;line-height:1.2;text-align:center;justify-content:center;white-space:pre-wrap;background:#f2f2f2;color:#181818}._summaryTabs_1gtok_71{display:flex;justify-content:center;padding:16px 20px;background-color:#f5f5f5;border-bottom:1px solid #e0e0e0}._summaryTab_1gtok_71{display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:all .3s ease;text-align:center;padding:0 5px;-webkit-tap-highlight-color:transparent}._summaryEmojiItem_1gtok_96{display:flex;flex-direction:column;align-items:center;gap:8px}._summaryEmojiButton_1gtok_108{display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;background:#fffc;border:2px solid rgba(0,0,0,.2);cursor:pointer;transition:all .3s ease;width:40px;height:40px;box-shadow:0 2px 8px #00000026;-webkit-tap-highlight-color:transparent}._summaryEmojiButtonActive_1gtok_124{background:#fff;border:3px solid rgba(0,0,0,.6);box-shadow:0 4px 12px #00000040;transform:scale(1.1)}._summaryEmojiLikeActive_1gtok_136{border-color:#4caf50;background:#4caf5026;box-shadow:0 4px 12px #4caf504d}._summaryEmojiDislikeActive_1gtok_146{border-color:#f44336;background:#f4433626;box-shadow:0 4px 12px #f443364d}._summaryEmojiMaybeActive_1gtok_156{border-color:#ff9800;background:#ff980026;box-shadow:0 4px 12px #ff98004d}._summaryEmojiSeenActive_1gtok_166{border-color:#2196f3;background:#2196f326;box-shadow:0 4px 12px #2196f34d}._summaryEmojiLike_1gtok_132:hover{border-color:#4caf50;background:#4caf501a}._summaryEmojiDislike_1gtok_142:hover{border-color:#f44336;background:#f443361a}._summaryEmojiMaybe_1gtok_152:hover{border-color:#ff9800;background:#ff98001a}._summaryEmojiSeen_1gtok_162:hover{border-color:#2196f3;background:#2196f31a}._summaryEmojiIcon_1gtok_194{width:28px;height:28px;object-fit:contain}._summaryEmojiLabel_1gtok_201{font-size:11px;font-weight:600;color:#000c;text-align:center;line-height:1.2;text-transform:uppercase;letter-spacing:.5px}._summaryEmojiItemActive_1gtok_103 ._summaryEmojiLabel_1gtok_201{color:#000;font-weight:700}._summaryContent_1gtok_217{flex:1;overflow:hidden;position:relative;background-color:#fff;min-height:0}._summaryPanel_1gtok_226{display:none;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow-y:auto;min-height:0;box-sizing:border-box;overscroll-behavior:contain}._summaryPanelActive_1gtok_241{display:block}._summaryEmptyState_1gtok_246{text-align:center;padding:40px 20px;color:#181818}._summaryEmptyStateText_1gtok_252{margin:0 0 16px;font-size:18px;font-weight:600}._historyDrawerContent_x0jj6_1,._historyDrawerContent_x0jj6_1 .summary-container{height:100%;display:flex;flex-direction:column;overflow:hidden}._historyDrawerEmpty_x0jj6_15{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:40px 20px;text-align:center;color:#666}._historyDrawerEmpty_x0jj6_15 p{margin:8px 0;font-size:16px}._historyDrawerEmptyHint_x0jj6_31{font-size:14px;color:#999}._historyDrawerTitle_x0jj6_36{margin:0 0 16px;padding:20px 20px 0;font-size:20px;font-weight:700;color:#333}._historyDrawerList_x0jj6_44{height:100%;display:flex;flex-direction:column;overflow:hidden}._historyDrawerList_x0jj6_44 .card-list-container{flex:1;overflow-y:auto}._historyDrawerGrouped_x0jj6_56{height:100%;display:flex;flex-direction:column;overflow-y:auto}._historyDrawerGroup_x0jj6_56{margin-bottom:24px}._historyDrawerGroup_x0jj6_56:last-child{margin-bottom:0}._historyDrawerGroupTitle_x0jj6_71{margin:0 0 12px;padding:20px 20px 0;font-size:18px;font-weight:700;color:#333}._historyDrawerGroup_x0jj6_56:first-child ._historyDrawerGroupTitle_x0jj6_71{padding-top:20px}._historyDrawerGroup_x0jj6_56 .card-list-container{padding-top:0}._historyDrawer_x0jj6_1 .drawer-content{padding:20px 0}._historyDrawer_x0jj6_1 .drawer-content .summary-tabs,._historyDrawer_x0jj6_1 .drawer-content .summary-content{background-color:transparent!important}._filtersButton_qio2f_1{position:absolute;z-index:1000;min-width:80px;height:40px;padding:8px 16px;border:none;border-radius:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:14px;font-weight:500;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-align:center;white-space:pre-wrap;background-image:linear-gradient(135deg,#ffffff1a,#0000001a);transition:all .3s ease;box-shadow:0 4px 8px #00000026}._filtersButton_qio2f_1:hover{box-shadow:0 6px 12px #0003;transform:translateY(-1px)}._filtersButton_qio2f_1:active{transform:translateY(1px);box-shadow:0 2px 4px #00000026}._filtersButton_qio2f_1:focus{outline:none}._filtersButton_qio2f_1:focus-visible{outline:none}._filtersLeft_qio2f_46{left:20px;right:auto}._filtersMiddle_qio2f_51{left:50%;right:auto;transform:translate(-50%)}._filtersRight_qio2f_57{left:auto;right:20px}._filtersIcon_qio2f_63{pointer-events:none;flex-shrink:0}._content_hci8k_2{padding:12px 20px}._title_hci8k_7{margin:0 0 12px;font-size:16px;font-weight:600;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;white-space:pre-wrap}._categories_hci8k_17{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0}._pill_hci8k_25{display:inline-flex;align-items:center;padding:6px 12px;border-radius:20px;cursor:pointer;font-size:13px;font-weight:500;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;transition:all .2s ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}._noCategories_hci8k_40{width:100%;color:#999;font-style:italic;text-align:center;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._cardsCounter_1h26d_1{width:100%;text-align:left;font-size:14px;font-weight:700;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.8);padding:5px 5px 5px 21px;pointer-events:none;white-space:pre-wrap}._logo_1rzq2_1{display:block;height:auto;max-width:100%;-webkit-user-select:none;user-select:none;pointer-events:none}._container_18bki_1{position:absolute}._interactiveFeed_1wsuw_1,._swippingJourney_15509_1{position:relative;width:100%;height:100%;overflow:hidden}._mainBootstrap_1rzog_1{width:100%;height:100%;position:relative}:root{--media-object-fit: cover}*{margin:0;padding:0;box-sizing:border-box;font-family:Arial,sans-serif}body{touch-action:pan-y;-webkit-user-select:none;user-select:none}";document.head.appendChild(s);}})();import React, { createContext, useRef, useContext, useId, useEffect, useCallback, useLayoutEffect, useMemo, useInsertionEffect, forwardRef, Fragment, createElement, Component, useState, useImperativeHandle } from "react";
1
+ (function(){if(typeof document!=="undefined"){var s=document.createElement("style");s.textContent="._card_doqsx_2{position:absolute;width:100%;height:100%;left:0;top:0;background-color:#fff;box-shadow:0 2px 8px #0003;overflow:hidden;transition:transform .3s ease;cursor:default;transform-origin:50% 100%;will-change:transform;z-index:1}._cardContent_doqsx_18{position:absolute;z-index:2;bottom:0;left:0;width:100%;height:100%;color:#fff}._gradientBottom_doqsx_29{position:absolute;z-index:1;bottom:0;left:0;width:100%;height:120px;background:linear-gradient(transparent,#000);pointer-events:none}._gradientTop_doqsx_41{position:absolute;z-index:1;top:0;left:0;width:100%;height:120px;background:linear-gradient(rgba(0,0,0,1),transparent);pointer-events:none}._cardName_doqsx_52{position:absolute;left:0;bottom:10%;font-weight:700;font-size:22px;padding:0 20px;text-shadow:1px 1px 2px rgba(0,0,0,.8);width:100%;text-align:left;white-space:pre-wrap}._categories_1237w_1{display:flex;flex-wrap:wrap;gap:6px;padding:0 20px 12px;position:absolute;left:0;bottom:0;width:100%;box-sizing:border-box}._categoryBadge_1237w_13{display:inline-block;padding:3px 10px;background-color:#fff3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:12px;font-size:11px;font-weight:500;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5);white-space:nowrap;line-height:1.4}._filterButton_1237w_28{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background-color:#fff3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:12px;cursor:pointer;flex-shrink:0;pointer-events:auto}._filterIcon_1237w_45{width:12px;height:12px;filter:brightness(0) invert(1)}._image_trs4h_2{width:100%;height:100%;object-fit:cover}._videoContainer_119iz_3{width:100%;height:100%;position:relative;overflow:hidden}._cardVideo_119iz_10{width:100%;height:100%;object-fit:cover;position:absolute;top:0;left:0;z-index:1}._swipeableCard_14c6z_1{position:relative;width:100%;height:100%;will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;touch-action:none;user-select:none;-webkit-user-select:none;pointer-events:auto}._swipeableCard_14c6z_1>*{pointer-events:none}._swipeableCard_14c6z_1 video,._swipeableCard_14c6z_1 img{pointer-events:none}._swipeHeadline_14c6z_25{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:24px;font-weight:700;color:#fff;z-index:200000}._ctaTooltip_1mai4_2{position:absolute;z-index:110;font-size:12px;top:0;right:-2px;background-color:#fff;color:#333;padding:10px 14px;border-radius:8px;font-weight:800;text-align:center;width:max-content;transition:opacity .3s ease;pointer-events:none;animation:_ctaTooltipBounce_1mai4_1 2s infinite;box-shadow:0 0 16px 1px #000;white-space:pre-line}._ctaTooltipArrow_1mai4_22{position:absolute;bottom:-8px;width:16px;height:16px;transform:translate(50%) rotate(45deg);z-index:0}@keyframes _ctaTooltipBounce_1mai4_1{0%,20%,50%,80%,to{transform:translateY(calc(-100% - 16px))}40%{transform:translateY(calc(-100% - 24px))}60%{transform:translateY(calc(-100% - 20px))}}._verticalEmojisButtons_14t5d_2{position:absolute;display:flex;flex-direction:column;align-items:center;z-index:100}._buttonContainer_14t5d_11{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:8px 0}._button_14t5d_11{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 5px #0003;background-color:#fff;position:relative;-webkit-user-select:none;user-select:none;transition:transform .2s ease,background-color .2s ease;outline:none;border:none;-webkit-tap-highlight-color:transparent}._button_14t5d_11:focus,._button_14t5d_11:active{outline:none;border:none}._emojiIcon_14t5d_45{width:35px;height:35px;display:block;outline:none;pointer-events:none;position:relative;z-index:2}._buttonLabel_14t5d_56{white-space:pre-wrap;margin-top:5px}._buttonAnimation_14t5d_62{transform:scale(1.3);z-index:101;position:relative}._buttonAnimation_14t5d_62:before{content:\"\";position:absolute;top:-5px;left:-5px;right:-5px;bottom:-5px;border-radius:50%;border:5px solid rgba(255,255,255,.5);z-index:1}._buttonLikeAnimation_14t5d_80{background-color:#4cd964!important;transform:scale(1.3)!important}._buttonDislikeAnimation_14t5d_85{background-color:#ff3b30!important;transform:scale(1.3)!important}._buttonMaybeAnimation_14t5d_90{background-color:#fc0!important;transform:scale(1.3)!important}._buttonSeenAnimation_14t5d_95{background-color:#007aff!important;transform:scale(1.3)!important}._contrastMode_14t5d_101 ._buttonContainer_14t5d_11{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:8px 0}._contrastModeButton_14t5d_109{background-color:#fffc!important;border:2px solid black!important;box-shadow:0 0 8px #00000080!important}._contrastModeButton_14t5d_109:hover{background-color:#fff!important}._contrastModeLabel_14t5d_119{color:#fff!important;text-shadow:1px 1px 3px black,-1px -1px 3px black,1px -1px 3px black,-1px 1px 3px black!important;font-weight:700!important;font-size:12px!important;text-align:center!important;display:block!important;margin-top:5px!important;text-transform:uppercase}._contrastModeLike_14t5d_130,._contrastModeDislike_14t5d_135,._contrastModeMaybe_14t5d_140,._contrastModeSeen_14t5d_145{color:#fff!important;filter:brightness(1.5)!important}._sideButtonsContainer_jjr9u_2{position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:100;pointer-events:none}._sideButtonsWrapper_jjr9u_16{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto 1fr auto;padding:15px;box-sizing:border-box}._sideButtonContainer_jjr9u_28{display:flex;align-items:center;flex-direction:column;gap:4px}._sideButtonLeft_jjr9u_36{grid-column:1;grid-row:2;margin-right:auto;justify-self:start;align-self:center}._sideButtonRight_jjr9u_45{grid-column:3;grid-row:2;margin-left:auto;justify-self:end;align-self:center}._sideButtonTop_jjr9u_54{grid-column:2;grid-row:1;justify-self:center;align-self:start}._sideButtonBottom_jjr9u_62{grid-column:2;grid-row:3;justify-self:center;align-self:end}._sideButton_jjr9u_2{border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.4);background-color:#ffffffb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 12px #0000004d;transition:all .3s ease;-webkit-tap-highlight-color:transparent;pointer-events:auto;padding:0;margin:0;gap:4px}._sideButton_jjr9u_2:hover{border-color:#fff;background-color:#ffffffe6}._buttonContent_jjr9u_95{position:relative;display:flex;align-items:center;justify-content:center}._arrowWrapper_jjr9u_103,._emojiWrapper_jjr9u_104{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}._arrowWrapper_jjr9u_103 svg{color:#000}._arrowRight_jjr9u_120{transform:rotate(0)}._arrowLeft_jjr9u_124{transform:rotate(180deg)}._arrowUp_jjr9u_128{transform:rotate(-90deg)}._arrowDown_jjr9u_132{transform:rotate(90deg)}._emojiIcon_jjr9u_137{pointer-events:none;user-select:none;-webkit-user-select:none}._buttonLabel_jjr9u_144{white-space:pre-wrap;text-align:center;color:#000;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;line-height:1.2;user-select:none;-webkit-user-select:none;margin-top:0}@keyframes _moveRight_jjr9u_1{0%{transform:rotate(0) translate(0);opacity:.7}10%{transform:rotate(0) translate(6px);opacity:1}15%{transform:rotate(0) translate(12px);opacity:1}20%{transform:rotate(0) translate(12px);opacity:1}25%{transform:rotate(0) translate(0);opacity:.7}25.01%,to{transform:rotate(0) translate(0);opacity:.7}}@keyframes _moveLeft_jjr9u_1{0%,24.99%{transform:rotate(180deg) translate(0);opacity:.7}25%{transform:rotate(180deg) translate(0);opacity:.7}35%{transform:rotate(180deg) translate(6px);opacity:1}40%{transform:rotate(180deg) translate(12px);opacity:1}45%{transform:rotate(180deg) translate(12px);opacity:1}50%{transform:rotate(180deg) translate(0);opacity:.7}50.01%,to{transform:rotate(180deg) translate(0);opacity:.7}}@keyframes _moveUp_jjr9u_1{0%,49.99%{transform:rotate(-90deg) translate(0);opacity:.7}50%{transform:rotate(-90deg) translate(0);opacity:.7}60%{transform:rotate(-90deg) translate(6px);opacity:1}65%{transform:rotate(-90deg) translate(12px);opacity:1}70%{transform:rotate(-90deg) translate(12px);opacity:1}75%{transform:rotate(-90deg) translate(0);opacity:.7}75.01%,to{transform:rotate(-90deg) translate(0);opacity:.7}}@keyframes _moveDown_jjr9u_1{0%,74.99%{transform:rotate(90deg) translate(0);opacity:.7}75%{transform:rotate(90deg) translate(0);opacity:.7}85%{transform:rotate(90deg) translate(6px);opacity:1}90%{transform:rotate(90deg) translate(12px);opacity:1}95%{transform:rotate(90deg) translate(12px);opacity:1}to{transform:rotate(90deg) translate(0);opacity:.7}}._sideButton_jjr9u_2.like-btn ._arrowWrapper_jjr9u_103 svg._arrowRight_jjr9u_120{animation:_moveRight_jjr9u_1 8s infinite}._sideButton_jjr9u_2.dislike-btn ._arrowWrapper_jjr9u_103 svg._arrowLeft_jjr9u_124{animation:_moveLeft_jjr9u_1 8s infinite}._sideButton_jjr9u_2.maybe-btn ._arrowWrapper_jjr9u_103 svg._arrowUp_jjr9u_128{animation:_moveUp_jjr9u_1 8s infinite}._sideButton_jjr9u_2.seen-btn ._arrowWrapper_jjr9u_103 svg._arrowDown_jjr9u_132{animation:_moveDown_jjr9u_1 8s infinite}._horizontalCtaTooltip_1slua_1{position:absolute;transform:translate(-50%) translateY(-25%);left:50%;padding:10px 15px;border-radius:6px;font-weight:500;text-align:center;z-index:100;transition:opacity .3s ease;box-shadow:0 2px 8px #0003;animation:_horizontalCtaTooltipPulse_1slua_1 2s infinite ease-in-out;white-space:pre-line;background-color:#fff;color:#333;font-size:12px}._contrastMode_1slua_19 ._horizontalCtaTooltip_1slua_1{background-color:#00000080;color:#fff;border:1px solid white;font-weight:600}@keyframes _horizontalCtaTooltipPulse_1slua_1{0%{transform:translate(-50%) translateY(-25%) scale(1)}50%{transform:translate(-50%) translateY(-25%) scale(1.1)}to{transform:translate(-50%) translateY(-25%) scale(1)}}._sideButtonsContainer_1kkly_2{position:absolute;width:100%;height:100%;left:0;top:0;display:flex;justify-content:center;align-items:center;z-index:100;pointer-events:none}._sideButtonsWrapper_1kkly_16{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto 1fr auto;padding:15px;box-sizing:border-box}._sideButtonContainer_1kkly_28{display:flex;align-items:center;flex-direction:column;gap:4px}._sideButtonLeft_1kkly_36{grid-column:1;grid-row:2;margin-right:auto;justify-self:start;align-self:center}._sideButtonRight_1kkly_45{grid-column:3;grid-row:2;margin-left:auto;justify-self:end;align-self:center}._sideButtonTop_1kkly_54{grid-column:2;grid-row:1;justify-self:center;align-self:start}._sideButtonBottom_1kkly_62{grid-column:2;grid-row:3;justify-self:center;align-self:end}._sideButton_1kkly_2{border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.4);background-color:#ffffffb3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 12px #0000004d;transition:all .3s ease;-webkit-tap-highlight-color:transparent;pointer-events:auto;padding:0;margin:0;gap:4px;-webkit-touch-callout:none;-webkit-user-select:none;touch-action:manipulation;cursor:pointer}._sideButton_1kkly_2:hover{border-color:#fff;background-color:#ffffffe6}._buttonContent_1kkly_99{position:relative;display:flex;align-items:center;justify-content:center}._buttonContent_1kkly_99 svg{color:#000}._buttonLabel_1kkly_111{white-space:pre-wrap;text-align:center;color:#000;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;line-height:1.2;user-select:none;-webkit-user-select:none;margin-top:0}._arrowRight_1kkly_126{transform:rotate(0)}._arrowLeft_1kkly_130{transform:rotate(180deg)}._arrowUp_1kkly_134{transform:rotate(-90deg)}._arrowDown_1kkly_138{transform:rotate(90deg)}@keyframes _moveRight_1kkly_1{0%{transform:rotate(0) translate(0);opacity:.7}10%{transform:rotate(0) translate(6px);opacity:1}15%{transform:rotate(0) translate(12px);opacity:1}20%{transform:rotate(0) translate(12px);opacity:1}25%{transform:rotate(0) translate(0);opacity:.7}25.01%,to{transform:rotate(0) translate(0);opacity:.7}}@keyframes _moveLeft_1kkly_1{0%,24.99%{transform:rotate(180deg) translate(0);opacity:.7}25%{transform:rotate(180deg) translate(0);opacity:.7}35%{transform:rotate(180deg) translate(6px);opacity:1}40%{transform:rotate(180deg) translate(12px);opacity:1}45%{transform:rotate(180deg) translate(12px);opacity:1}50%{transform:rotate(180deg) translate(0);opacity:.7}50.01%,to{transform:rotate(180deg) translate(0);opacity:.7}}@keyframes _moveUp_1kkly_1{0%,49.99%{transform:rotate(-90deg) translate(0);opacity:.7}50%{transform:rotate(-90deg) translate(0);opacity:.7}60%{transform:rotate(-90deg) translate(6px);opacity:1}65%{transform:rotate(-90deg) translate(12px);opacity:1}70%{transform:rotate(-90deg) translate(12px);opacity:1}75%{transform:rotate(-90deg) translate(0);opacity:.7}75.01%,to{transform:rotate(-90deg) translate(0);opacity:.7}}@keyframes _moveDown_1kkly_1{0%,74.99%{transform:rotate(90deg) translate(0);opacity:.7}75%{transform:rotate(90deg) translate(0);opacity:.7}85%{transform:rotate(90deg) translate(6px);opacity:1}90%{transform:rotate(90deg) translate(12px);opacity:1}95%{transform:rotate(90deg) translate(12px);opacity:1}to{transform:rotate(90deg) translate(0);opacity:.7}}._sideButton_1kkly_2.like-btn ._buttonContent_1kkly_99 svg._arrowRight_1kkly_126{animation:_moveRight_1kkly_1 8s infinite}._sideButton_1kkly_2.dislike-btn ._buttonContent_1kkly_99 svg._arrowLeft_1kkly_130{animation:_moveLeft_1kkly_1 8s infinite}._sideButton_1kkly_2.maybe-btn ._buttonContent_1kkly_99 svg._arrowUp_1kkly_134{animation:_moveUp_1kkly_1 8s infinite}._sideButton_1kkly_2.seen-btn ._buttonContent_1kkly_99 svg._arrowDown_1kkly_138{animation:_moveDown_1kkly_1 8s infinite}._tooltipWrapper_1kkly_277{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center}._swipeTutorialOverlay_1dy8n_2{position:relative;width:100%;height:100%;left:0;top:0;z-index:100;pointer-events:none}._handContainer_1dy8n_16{position:relative;height:100%}._handWrapper_1dy8n_25{position:relative;left:50%;transform:translate(-50%,-50%)}._handIcon_1dy8n_32{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));opacity:.9;width:100%;height:100%}._handLabelWrapper_1dy8n_39{position:absolute;top:55%;left:40%;width:50%;height:38%;display:flex;align-items:center;justify-content:center;z-index:1;overflow:hidden}._handLabel_1dy8n_39{display:block;line-height:1;text-wrap:wrap;text-align:center;word-wrap:normal;overflow:hidden;font-weight:600}._swipeableFeed_jamse_1{position:relative;width:100%;height:100%;overflow:hidden}._swipeableFeedCards_jamse_8{position:relative;width:100%;height:100%}._swipeableFeedCards_jamse_8>*{position:absolute;top:0;left:0;width:100%;height:100%}._swipeableFeedEmpty_jamse_22{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#666;font-size:16px;text-align:center}._swipeTutorialContainer_jamse_33{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:150}._volumeControl_r52gg_2{position:absolute;z-index:1100;display:flex;align-items:center;gap:8px;margin:0}._volumeControlTopLeft_r52gg_12{top:10px;left:10px}._volumeControlTopRight_r52gg_17{top:10px;right:10px;flex-direction:row-reverse}._volumeControlBottomLeft_r52gg_23{bottom:80px;left:15px}._volumeControlBottomRight_r52gg_28{bottom:80px;right:15px;flex-direction:row-reverse}._volumeControlButton_r52gg_34{width:auto;height:30px;cursor:pointer;background-color:#0006;border-radius:50%;transition:background-color .2s ease;display:flex;align-items:center;justify-content:center;padding:4px;box-sizing:border-box;flex-shrink:0}._volumeControlButton_r52gg_34:hover{background-color:#000000b3}._volumeControlButton_r52gg_34 img{width:100%;height:100%;object-fit:contain}._volumeSlider_r52gg_60{background-color:#0006;border-radius:20px;padding:8px 12px;display:flex;align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .2s ease}._volumeSlider_r52gg_60:hover{background-color:#000000b3}._volumeControl_r52gg_2:hover ._volumeSlider_r52gg_60{opacity:1;pointer-events:auto}._volumeSliderInput_r52gg_81{width:100px;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff4d;border-radius:2px;outline:none;cursor:pointer}._volumeSliderInput_r52gg_81::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;transition:transform .1s ease}._volumeSliderInput_r52gg_81::-webkit-slider-thumb:hover{transform:scale(1.2)}._volumeSliderInput_r52gg_81::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;border:none;transition:transform .1s ease}._volumeSliderInput_r52gg_81::-moz-range-thumb:hover{transform:scale(1.2)}._historyButton_1xf6c_1{border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1000;box-shadow:16px 20px 8px #00000026,inset -4px -4px 10px #0003;background-image:linear-gradient(135deg,#fff3,#0003);outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}._historyCardsContent_1xf6c_17{margin:12px 0}._historyButton_1xf6c_1:focus{outline:none}._historyButton_1xf6c_1:active{outline:none;-webkit-tap-highlight-color:transparent}._historyButton_1xf6c_1:focus-visible{outline:none}._historyButton_1xf6c_1 img{pointer-events:none}._tooltip_1xf6c_39{display:flex;z-index:110;line-height:1.2;padding:10px 14px;position:absolute;top:0;border-radius:8px;font-weight:800;text-align:center;width:max-content;transition:opacity .3s ease;box-shadow:0 0 16px 1px #000;left:50%;white-space:pre-line;transform:translate(-50%) translateY(calc(-100% - 16px));animation:_historyButtonTooltipBounce_1xf6c_1 2s infinite}._tooltipArrow_1xf6c_59{position:absolute;bottom:-8px;left:50%;width:16px;height:16px;transform:translate(-50%) rotate(45deg);z-index:0}@keyframes _historyButtonTooltipBounce_1xf6c_1{0%,20%,50%,80%,to{transform:translate(-50%) translateY(calc(-100% - 16px))}40%{transform:translate(-50%) translateY(calc(-100% - 24px))}60%{transform:translate(-50%) translateY(calc(-100% - 20px))}}._drawerOverlay_1eftt_2{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:999;opacity:0;visibility:hidden;transition:opacity .5s ease,visibility .5s ease}._drawerOverlayScoped_1eftt_16{position:absolute;top:0;left:0;right:0;bottom:0}._drawerOverlayVisible_1eftt_24{opacity:1;visibility:visible}._drawer_1eftt_2{position:fixed;bottom:0;left:0;right:0;height:80%;background:#fff;border-radius:20px 20px 0 0;z-index:1000;transform:translateY(100%);transition:transform .6s cubic-bezier(.25,.46,.45,.94);box-shadow:0 -8px 32px #0003;display:flex;flex-direction:column;overflow:hidden}._drawerScoped_1eftt_48{position:absolute;bottom:0;left:0;right:0}._drawerOpen_1eftt_55{transform:translateY(0)}._drawerHandle_1eftt_60{width:40px;height:4px;background-color:#0003;border-radius:2px;margin:12px auto 8px;flex-shrink:0;transition:background-color .2s ease}._drawerHandle_1eftt_60:hover{background-color:#0000004d}._drawerEmojisContainer_1eftt_75{display:flex;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(0,0,0,.1);flex-shrink:0}._drawerEmojiItem_1eftt_84{display:flex;flex-direction:column;align-items:center;gap:8px}._drawerEmojiItemActive_1eftt_91 ._drawerEmojiLabel_1eftt_91{color:#000;font-weight:700}._drawerEmojiButton_1eftt_97{display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;background:#fffc;border:2px solid rgba(0,0,0,.2);cursor:pointer;transition:all .3s ease;width:50px;height:50px;box-shadow:0 2px 8px #00000026;-webkit-tap-highlight-color:transparent}._drawerEmojiButtonActive_1eftt_113{background:#fff;border:3px solid rgba(0,0,0,.6);box-shadow:0 4px 12px #00000040;transform:scale(1.1)}._drawerEmojiLikeActive_1eftt_125{border-color:#4caf50;background:#4caf5026;box-shadow:0 4px 12px #4caf504d}._drawerEmojiDislikeActive_1eftt_135{border-color:#f44336;background:#f4433626;box-shadow:0 4px 12px #f443364d}._drawerEmojiMaybeActive_1eftt_145{border-color:#ff9800;background:#ff980026;box-shadow:0 4px 12px #ff98004d}._drawerEmojiSeenActive_1eftt_155{border-color:#2196f3;background:#2196f326;box-shadow:0 4px 12px #2196f34d}._drawerEmojiIcon_1eftt_162{width:32px;height:32px;object-fit:contain}._drawerEmojiLabel_1eftt_91{font-size:11px;font-weight:600;color:#000c;text-align:center;line-height:1.2;text-transform:uppercase;letter-spacing:.5px;white-space:pre-wrap}._drawerEmojiLike_1eftt_121:hover{border-color:#4caf50;background:#4caf501a}._drawerEmojiDislike_1eftt_131:hover{border-color:#f44336;background:#f443361a}._drawerEmojiMaybe_1eftt_141:hover{border-color:#ff9800;background:#ff98001a}._drawerEmojiSeen_1eftt_151:hover{border-color:#2196f3;background:#2196f31a}._drawerContent_1eftt_202{flex:1;padding:20px;-webkit-overflow-scrolling:touch;overflow-y:auto}._drawerCloseButton_1eftt_210{background:linear-gradient(135deg,#ff6b6b,#ee5a52);color:#fff;border:none;padding:12px 24px;margin:20px;border-radius:25px;font-size:16px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .3s ease;box-shadow:0 4px 16px #ff6b6b4d;outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-self:center;min-height:48px;white-space:pre-wrap}._drawerCloseButton_1eftt_210:hover{transform:translateY(-2px);box-shadow:0 6px 20px #ff6b6b66}._drawerCloseButton_1eftt_210:active{transform:translateY(0);box-shadow:0 2px 8px #ff6b6b4d}._drawerCloseButton_1eftt_210:focus{outline:none}._drawerCloseButton_1eftt_210:focus-visible{outline:2px solid rgba(255,107,107,.5);outline-offset:2px}._drawerCloseIcon_1eftt_255{width:16px;height:16px;filter:brightness(0) invert(1)}@media (max-width: 768px){._drawer_1eftt_2{height:80%;border-radius:30px 30px 0 0}._drawerContent_1eftt_202{padding:16px}._drawerCloseButton_1eftt_210{margin:16px;padding:10px 20px;font-size:14px}}@media (max-width: 480px){._drawer_1eftt_2{height:80%;border-radius:30px 30px 0 0}._drawerContent_1eftt_202{padding:12px}._drawerCloseButton_1eftt_210{margin:12px;font-size:14px}}._cardListContainer_zrmnf_2{padding:20px;overscroll-behavior-y:contain;touch-action:pan-y;overflow-y:auto;height:100%;box-sizing:border-box}._cardListContainerNoPadding_zrmnf_11{padding:0;box-sizing:border-box}._summaryGridContainer_zrmnf_17{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px;box-sizing:border-box}._summaryGridItem_zrmnf_26{aspect-ratio:1;border-radius:8px;overflow:hidden;background:#0000000d;cursor:default}._summaryGridItemClickable_zrmnf_34{cursor:pointer}._gridPlaceholder_zrmnf_39{width:100%;height:100%;background:#f2f2f2;display:flex;align-items:center;justify-content:center;font-size:12px;color:#181818}._gridItemImage_zrmnf_51{width:100%;height:100%;object-fit:cover}._summaryCardItem_zrmnf_58{display:flex;gap:8px;padding:12px;border-radius:8px;background:#f2f2f2;color:#181818;margin-bottom:8px;align-items:center;cursor:default}._summaryCardItemClickable_zrmnf_70{cursor:pointer}._cardItemImage_zrmnf_75{width:60px;height:60px;border-radius:6px;object-fit:cover;flex-shrink:0}._cardItemPlaceholder_zrmnf_84{width:60px;height:60px;border-radius:6px;background:#d9d9d9;display:flex;align-items:center;justify-content:center;font-size:12px;color:#00000080;flex-shrink:0}._cardItemContent_zrmnf_98{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}._cardItemTitle_zrmnf_107{margin:0 0 2px;font-size:14px;font-weight:600;line-height:1.2;text-align:left}._cardItemPrice_zrmnf_116{margin:0;font-size:12px;color:#000000b3;line-height:1.2}._summaryContainer_1gtok_3{display:flex;flex-direction:column;height:100%;width:100%;background-color:#fff;overflow:hidden;position:relative}._summaryShareButtonFixed_1gtok_14{position:absolute;bottom:10px;right:10px;width:45px;height:45px;font-size:12px;text-transform:uppercase;border-radius:50%;background-color:#2196f3;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #00000026;transition:all .3s ease;z-index:1000;-webkit-tap-highlight-color:transparent}._summaryShareButtonFixed_1gtok_14:hover{background-color:#1976d2;box-shadow:0 6px 16px #0003;transform:scale(1.05)}._summaryShareButtonFixed_1gtok_14:active{transform:scale(.95);box-shadow:0 2px 8px #00000026}._summaryShareButtonFixed_1gtok_14 ._shareIcon_1gtok_47{width:24px;height:24px;filter:brightness(0) invert(1)}._summaryExplaination_1gtok_54{gap:8px;padding:12px;border-radius:8px;align-items:center;margin:12px 20px 0;font-size:14px;font-weight:600;line-height:1.2;text-align:center;justify-content:center;white-space:pre-wrap;background:#f2f2f2;color:#181818}._summaryTabs_1gtok_71{display:flex;justify-content:center;padding:16px 20px;background-color:#f5f5f5;border-bottom:1px solid #e0e0e0}._summaryTab_1gtok_71{display:flex;flex-direction:column;align-items:center;cursor:pointer;transition:all .3s ease;text-align:center;padding:0 5px;-webkit-tap-highlight-color:transparent}._summaryEmojiItem_1gtok_96{display:flex;flex-direction:column;align-items:center;gap:8px}._summaryEmojiButton_1gtok_108{display:flex;align-items:center;justify-content:center;padding:0;border-radius:50%;background:#fffc;border:2px solid rgba(0,0,0,.2);cursor:pointer;transition:all .3s ease;width:40px;height:40px;box-shadow:0 2px 8px #00000026;-webkit-tap-highlight-color:transparent}._summaryEmojiButtonActive_1gtok_124{background:#fff;border:3px solid rgba(0,0,0,.6);box-shadow:0 4px 12px #00000040;transform:scale(1.1)}._summaryEmojiLikeActive_1gtok_136{border-color:#4caf50;background:#4caf5026;box-shadow:0 4px 12px #4caf504d}._summaryEmojiDislikeActive_1gtok_146{border-color:#f44336;background:#f4433626;box-shadow:0 4px 12px #f443364d}._summaryEmojiMaybeActive_1gtok_156{border-color:#ff9800;background:#ff980026;box-shadow:0 4px 12px #ff98004d}._summaryEmojiSeenActive_1gtok_166{border-color:#2196f3;background:#2196f326;box-shadow:0 4px 12px #2196f34d}._summaryEmojiLike_1gtok_132:hover{border-color:#4caf50;background:#4caf501a}._summaryEmojiDislike_1gtok_142:hover{border-color:#f44336;background:#f443361a}._summaryEmojiMaybe_1gtok_152:hover{border-color:#ff9800;background:#ff98001a}._summaryEmojiSeen_1gtok_162:hover{border-color:#2196f3;background:#2196f31a}._summaryEmojiIcon_1gtok_194{width:28px;height:28px;object-fit:contain}._summaryEmojiLabel_1gtok_201{font-size:11px;font-weight:600;color:#000c;text-align:center;line-height:1.2;text-transform:uppercase;letter-spacing:.5px}._summaryEmojiItemActive_1gtok_103 ._summaryEmojiLabel_1gtok_201{color:#000;font-weight:700}._summaryContent_1gtok_217{flex:1;overflow:hidden;position:relative;background-color:#fff;min-height:0}._summaryPanel_1gtok_226{display:none;position:absolute;top:0;left:0;right:0;bottom:0;height:100%;width:100%;overflow-y:auto;min-height:0;box-sizing:border-box;overscroll-behavior:contain}._summaryPanelActive_1gtok_241{display:block}._summaryEmptyState_1gtok_246{text-align:center;padding:40px 20px;color:#181818}._summaryEmptyStateText_1gtok_252{margin:0 0 16px;font-size:18px;font-weight:600}._historyDrawerContent_x0jj6_1,._historyDrawerContent_x0jj6_1 .summary-container{height:100%;display:flex;flex-direction:column;overflow:hidden}._historyDrawerEmpty_x0jj6_15{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:40px 20px;text-align:center;color:#666}._historyDrawerEmpty_x0jj6_15 p{margin:8px 0;font-size:16px}._historyDrawerEmptyHint_x0jj6_31{font-size:14px;color:#999}._historyDrawerTitle_x0jj6_36{margin:0 0 16px;padding:20px 20px 0;font-size:20px;font-weight:700;color:#333}._historyDrawerList_x0jj6_44{height:100%;display:flex;flex-direction:column;overflow:hidden}._historyDrawerList_x0jj6_44 .card-list-container{flex:1;overflow-y:auto}._historyDrawerGrouped_x0jj6_56{height:100%;display:flex;flex-direction:column;overflow-y:auto}._historyDrawerGroup_x0jj6_56{margin-bottom:24px}._historyDrawerGroup_x0jj6_56:last-child{margin-bottom:0}._historyDrawerGroupTitle_x0jj6_71{margin:0 0 12px;padding:20px 20px 0;font-size:18px;font-weight:700;color:#333}._historyDrawerGroup_x0jj6_56:first-child ._historyDrawerGroupTitle_x0jj6_71{padding-top:20px}._historyDrawerGroup_x0jj6_56 .card-list-container{padding-top:0}._historyDrawer_x0jj6_1 .drawer-content{padding:20px 0}._historyDrawer_x0jj6_1 .drawer-content .summary-tabs,._historyDrawer_x0jj6_1 .drawer-content .summary-content{background-color:transparent!important}._filtersButton_qio2f_1{position:absolute;z-index:1000;min-width:80px;height:40px;padding:8px 16px;border:none;border-radius:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;outline:none;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:14px;font-weight:500;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-align:center;white-space:pre-wrap;background-image:linear-gradient(135deg,#ffffff1a,#0000001a);transition:all .3s ease;box-shadow:0 4px 8px #00000026}._filtersButton_qio2f_1:hover{box-shadow:0 6px 12px #0003;transform:translateY(-1px)}._filtersButton_qio2f_1:active{transform:translateY(1px);box-shadow:0 2px 4px #00000026}._filtersButton_qio2f_1:focus{outline:none}._filtersButton_qio2f_1:focus-visible{outline:none}._filtersLeft_qio2f_46{left:20px;right:auto}._filtersMiddle_qio2f_51{left:50%;right:auto;transform:translate(-50%)}._filtersRight_qio2f_57{left:auto;right:20px}._filtersIcon_qio2f_63{pointer-events:none;flex-shrink:0}._content_bjs2p_2{padding:12px 20px}._title_bjs2p_7{margin:0 0 12px;font-size:16px;font-weight:600;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;white-space:pre-wrap}._categories_bjs2p_17{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0}._pill_bjs2p_25{display:inline-flex;align-items:center;padding:6px 12px;border-radius:20px;cursor:pointer;font-size:13px;font-weight:500;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;transition:all .2s ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}._noCategories_bjs2p_40{width:100%;color:#999;font-style:italic;text-align:center;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}._confirmButton_bjs2p_50{display:block;width:100%;margin-top:16px;padding:12px 0;border:none;border-radius:12px;background-color:#007bff;color:#fff;font-size:14px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;cursor:pointer;transition:background-color .2s ease;-webkit-tap-highlight-color:transparent}._confirmButton_bjs2p_50:hover{background-color:#0056b3}._cardsCounter_1h26d_1{width:100%;text-align:left;font-size:14px;font-weight:700;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.8);padding:5px 5px 5px 21px;pointer-events:none;white-space:pre-wrap}._logo_1rzq2_1{display:block;height:auto;max-width:100%;-webkit-user-select:none;user-select:none;pointer-events:none}._container_18bki_1{position:absolute}._interactiveFeed_1wsuw_1,._swippingJourney_15509_1{position:relative;width:100%;height:100%;overflow:hidden}._mainBootstrap_1rzog_1{width:100%;height:100%;position:relative}:root{--media-object-fit: cover}*{margin:0;padding:0;box-sizing:border-box;font-family:Arial,sans-serif}body{touch-action:pan-y;-webkit-user-select:none;user-select:none}";document.head.appendChild(s);}})();import React, { createContext, useRef, useContext, useId, useEffect, useCallback, useLayoutEffect, useMemo, useInsertionEffect, forwardRef, Fragment, createElement, Component, useState, useImperativeHandle } from "react";
2
2
  import { createRoot } from "react-dom/client";
3
3
  import { jsxs, jsx, Fragment as Fragment$1 } from "react/jsx-runtime";
4
4
  const LayoutGroupContext = createContext({});
@@ -7593,19 +7593,227 @@ const cardContent = "_cardContent_doqsx_18";
7593
7593
  const gradientBottom = "_gradientBottom_doqsx_29";
7594
7594
  const gradientTop = "_gradientTop_doqsx_41";
7595
7595
  const cardName = "_cardName_doqsx_52";
7596
- const styles$o = {
7596
+ const styles$p = {
7597
7597
  card,
7598
7598
  cardContent,
7599
7599
  gradientBottom,
7600
7600
  gradientTop,
7601
7601
  cardName
7602
7602
  };
7603
+ const DataContext = createContext(void 0);
7604
+ const DataProvider = ({
7605
+ children,
7606
+ dataService,
7607
+ finderId,
7608
+ backendUrl,
7609
+ presetCategoryIds,
7610
+ initialCards = [],
7611
+ initialFinder = null,
7612
+ initialCategories = []
7613
+ }) => {
7614
+ const hasPresetCategories = Array.isArray(presetCategoryIds) && presetCategoryIds.length > 0;
7615
+ const isInitiallyLoaded = useRef(false);
7616
+ const [cards, setCards] = useState(initialCards);
7617
+ const [finder, setFinder] = useState(initialFinder);
7618
+ const [categories2, setCategories] = useState(initialCategories);
7619
+ const [loading, setLoading] = useState(false);
7620
+ const [error, setError] = useState(null);
7621
+ const loadFinder = useCallback(async () => {
7622
+ if (!finderId || !backendUrl) {
7623
+ setError("finderId and backendUrl are required to load finder");
7624
+ return;
7625
+ }
7626
+ setLoading(true);
7627
+ setError(null);
7628
+ try {
7629
+ const result = await dataService.loadFinderFromApi(finderId, backendUrl, presetCategoryIds);
7630
+ setFinder(result.finder);
7631
+ setCards(result.cards);
7632
+ setCategories(result.categories);
7633
+ } catch (err) {
7634
+ const errorMessage = err instanceof Error ? err.message : "Failed to load finder";
7635
+ setError(errorMessage);
7636
+ console.error("Error loading finder:", err);
7637
+ } finally {
7638
+ setLoading(false);
7639
+ isInitiallyLoaded.current = true;
7640
+ }
7641
+ }, [dataService, finderId, backendUrl, presetCategoryIds]);
7642
+ useEffect(() => {
7643
+ loadFinder();
7644
+ }, [loadFinder]);
7645
+ const loadCardsByCategories = useCallback(async (categoryIds) => {
7646
+ if (!finderId || !backendUrl) {
7647
+ return;
7648
+ }
7649
+ setLoading(true);
7650
+ setError(null);
7651
+ try {
7652
+ const result = await dataService.loadCardsByCategories(finderId, backendUrl, categoryIds);
7653
+ setCards(result.cards);
7654
+ setCategories(result.categories);
7655
+ } catch (err) {
7656
+ const errorMessage = err instanceof Error ? err.message : "Failed to load cards";
7657
+ setError(errorMessage);
7658
+ console.error("Error loading cards by categories:", err);
7659
+ } finally {
7660
+ setLoading(false);
7661
+ }
7662
+ }, [dataService, finderId, backendUrl]);
7663
+ const value = {
7664
+ cards,
7665
+ finder,
7666
+ categories: categories2,
7667
+ loading,
7668
+ error,
7669
+ isInitiallyLoaded: isInitiallyLoaded.current,
7670
+ hasPresetCategories,
7671
+ setCards,
7672
+ setFinder,
7673
+ setCategories,
7674
+ loadFinder,
7675
+ loadCardsByCategories
7676
+ };
7677
+ return /* @__PURE__ */ jsx(DataContext.Provider, { value, children });
7678
+ };
7679
+ const useData = () => {
7680
+ const context = useContext(DataContext);
7681
+ if (context === void 0) {
7682
+ throw new Error("useData must be used within a DataProvider");
7683
+ }
7684
+ return context;
7685
+ };
7686
+ const UIContext = createContext(void 0);
7687
+ const UIProvider = ({ children }) => {
7688
+ var _a, _b, _c, _d;
7689
+ const { finder } = useData();
7690
+ const [buttonsVisible, setButtonsVisible] = useState(false);
7691
+ const [summaryVisible, setSummaryVisible] = useState(false);
7692
+ const [ctaTooltipVisible, setCtaTooltipVisible] = useState(false);
7693
+ const [selectedCategories, setSelectedCategories] = useState([]);
7694
+ const [logoVisible, setLogoVisible] = useState(true);
7695
+ const [tutorialVisible, setTutorialVisible] = useState(false);
7696
+ const [isFiltersDrawerOpen, setIsFiltersDrawerOpen] = useState(false);
7697
+ useEffect(() => {
7698
+ var _a2;
7699
+ console.log("finder?.navigation?.tutorial", finder == null ? void 0 : finder.tutorial);
7700
+ setTutorialVisible(((_a2 = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _a2.enabled) ?? false);
7701
+ }, [
7702
+ (_a = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _a.enabled,
7703
+ (_b = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _b.size,
7704
+ (_c = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _c.color,
7705
+ (_d = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _d.opacity
7706
+ ]);
7707
+ console.log("tutorialVisible3", tutorialVisible);
7708
+ const showButtons = useCallback(() => {
7709
+ setButtonsVisible(true);
7710
+ }, []);
7711
+ const hideButtons = useCallback(() => {
7712
+ setButtonsVisible(false);
7713
+ }, []);
7714
+ const showSummary = useCallback(() => {
7715
+ setSummaryVisible(true);
7716
+ }, []);
7717
+ const hideSummary = useCallback(() => {
7718
+ setSummaryVisible(false);
7719
+ }, []);
7720
+ const showCtaTooltip = useCallback(() => {
7721
+ setCtaTooltipVisible(true);
7722
+ }, []);
7723
+ const hideCtaTooltip = useCallback(() => {
7724
+ setCtaTooltipVisible(false);
7725
+ }, []);
7726
+ const toggleLogo = useCallback((visible) => {
7727
+ setLogoVisible(visible);
7728
+ }, []);
7729
+ const showTutorial = useCallback(() => {
7730
+ setTutorialVisible(true);
7731
+ }, []);
7732
+ const hideTutorial = useCallback(() => {
7733
+ setTutorialVisible(false);
7734
+ }, []);
7735
+ const openFiltersDrawer = useCallback(() => {
7736
+ setIsFiltersDrawerOpen(true);
7737
+ }, []);
7738
+ const closeFiltersDrawer = useCallback(() => {
7739
+ setIsFiltersDrawerOpen(false);
7740
+ }, []);
7741
+ const value = {
7742
+ buttonsVisible,
7743
+ summaryVisible,
7744
+ ctaTooltipVisible,
7745
+ selectedCategories,
7746
+ logoVisible,
7747
+ tutorialVisible,
7748
+ isFiltersDrawerOpen,
7749
+ showButtons,
7750
+ hideButtons,
7751
+ showSummary,
7752
+ hideSummary,
7753
+ showCtaTooltip,
7754
+ hideCtaTooltip,
7755
+ setSelectedCategories,
7756
+ toggleLogo,
7757
+ showTutorial,
7758
+ hideTutorial,
7759
+ openFiltersDrawer,
7760
+ closeFiltersDrawer
7761
+ };
7762
+ return /* @__PURE__ */ jsx(UIContext.Provider, { value, children });
7763
+ };
7764
+ const useUI = () => {
7765
+ const context = useContext(UIContext);
7766
+ if (context === void 0) {
7767
+ throw new Error("useUI must be used within a UIProvider");
7768
+ }
7769
+ return context;
7770
+ };
7771
+ const filterIcon$1 = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='currentColor'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3e%3cpolygon%20points='22,3%202,3%2010,12.46%2010,19%2014,21%2014,12.46'%3e%3c/polygon%3e%3c/svg%3e";
7772
+ const categories$1 = "_categories_1237w_1";
7773
+ const categoryBadge = "_categoryBadge_1237w_13";
7774
+ const filterButton = "_filterButton_1237w_28";
7775
+ const filterIcon = "_filterIcon_1237w_45";
7776
+ const styles$o = {
7777
+ categories: categories$1,
7778
+ categoryBadge,
7779
+ filterButton,
7780
+ filterIcon
7781
+ };
7782
+ const CardCategories = ({
7783
+ categoryIds,
7784
+ categories: categories2
7785
+ }) => {
7786
+ const { openFiltersDrawer } = useUI();
7787
+ const { hasPresetCategories } = useData();
7788
+ const resolved = useMemo(() => {
7789
+ return categoryIds.slice(0, 3).map((id2) => categories2.find((c) => c.id === id2)).filter((c) => Boolean(c));
7790
+ }, [categoryIds, categories2]);
7791
+ if (resolved.length === 0) return null;
7792
+ return /* @__PURE__ */ jsxs("div", { className: styles$o.categories, children: [
7793
+ resolved.map((category) => /* @__PURE__ */ jsx("span", { className: styles$o.categoryBadge, children: category.name }, category.id)),
7794
+ !hasPresetCategories && /* @__PURE__ */ jsx(
7795
+ "button",
7796
+ {
7797
+ type: "button",
7798
+ className: styles$o.filterButton,
7799
+ onPointerDown: (e) => e.stopPropagation(),
7800
+ onClick: (e) => {
7801
+ e.stopPropagation();
7802
+ openFiltersDrawer();
7803
+ },
7804
+ "aria-label": "Filters",
7805
+ children: /* @__PURE__ */ jsx("img", { src: filterIcon$1, alt: "", className: styles$o.filterIcon })
7806
+ }
7807
+ )
7808
+ ] });
7809
+ };
7603
7810
  const CardWrapper = ({
7604
7811
  card: card2,
7605
7812
  cardUIConfig,
7606
7813
  className = "",
7607
7814
  children
7608
7815
  }) => {
7816
+ const { categories: categories2 } = useData();
7609
7817
  const { gradient, title: title2 } = cardUIConfig;
7610
7818
  const gradientColor = gradient.color || "rgba(0, 0, 0, 1)";
7611
7819
  const getGradientClasses = () => {
@@ -7623,13 +7831,13 @@ const CardWrapper = ({
7623
7831
  "div",
7624
7832
  {
7625
7833
  id: card2.id || void 0,
7626
- className: `${styles$o.card} ${className}`.trim(),
7834
+ className: `${styles$p.card} ${className}`.trim(),
7627
7835
  children: [
7628
7836
  children,
7629
7837
  gradients.showBottom && /* @__PURE__ */ jsx(
7630
7838
  "div",
7631
7839
  {
7632
- className: styles$o.gradientBottom,
7840
+ className: styles$p.gradientBottom,
7633
7841
  style: {
7634
7842
  background: `linear-gradient(transparent, ${gradientColor})`
7635
7843
  }
@@ -7638,23 +7846,32 @@ const CardWrapper = ({
7638
7846
  gradients.showTop && /* @__PURE__ */ jsx(
7639
7847
  "div",
7640
7848
  {
7641
- className: styles$o.gradientTop,
7849
+ className: styles$p.gradientTop,
7642
7850
  style: {
7643
7851
  background: `linear-gradient(${gradientColor}, transparent)`
7644
7852
  }
7645
7853
  }
7646
7854
  ),
7647
- title2.enabled && /* @__PURE__ */ jsx("div", { className: styles$o.cardContent, children: /* @__PURE__ */ jsx(
7648
- "div",
7649
- {
7650
- className: styles$o.cardName,
7651
- style: {
7652
- fontSize: `${title2.textSize}px`,
7653
- bottom: `${title2.positionBottom}%`
7654
- },
7655
- children: card2.title || ""
7656
- }
7657
- ) })
7855
+ /* @__PURE__ */ jsxs("div", { className: styles$p.cardContent, children: [
7856
+ card2.categoryIds && card2.categoryIds.length > 0 && /* @__PURE__ */ jsx(
7857
+ CardCategories,
7858
+ {
7859
+ categoryIds: card2.categoryIds,
7860
+ categories: categories2
7861
+ }
7862
+ ),
7863
+ title2.enabled && /* @__PURE__ */ jsx(
7864
+ "div",
7865
+ {
7866
+ className: styles$p.cardName,
7867
+ style: {
7868
+ fontSize: `${title2.textSize}px`,
7869
+ bottom: `${title2.positionBottom}%`
7870
+ },
7871
+ children: card2.title || ""
7872
+ }
7873
+ )
7874
+ ] })
7658
7875
  ]
7659
7876
  }
7660
7877
  );
@@ -26409,17 +26626,19 @@ const FiltersButton = ({
26409
26626
  }
26410
26627
  );
26411
26628
  };
26412
- const content = "_content_hci8k_2";
26413
- const title = "_title_hci8k_7";
26414
- const categories = "_categories_hci8k_17";
26415
- const pill = "_pill_hci8k_25";
26416
- const noCategories = "_noCategories_hci8k_40";
26629
+ const content = "_content_bjs2p_2";
26630
+ const title = "_title_bjs2p_7";
26631
+ const categories = "_categories_bjs2p_17";
26632
+ const pill = "_pill_bjs2p_25";
26633
+ const noCategories = "_noCategories_bjs2p_40";
26634
+ const confirmButton = "_confirmButton_bjs2p_50";
26417
26635
  const styles$6 = {
26418
26636
  content,
26419
26637
  title,
26420
26638
  categories,
26421
26639
  pill,
26422
- noCategories
26640
+ noCategories,
26641
+ confirmButton
26423
26642
  };
26424
26643
  const FiltersDrawer = ({
26425
26644
  isOpen,
@@ -26432,26 +26651,37 @@ const FiltersDrawer = ({
26432
26651
  className = ""
26433
26652
  }) => {
26434
26653
  const { drawerCategoriesTitle, drawerCloseButtonText } = filtersUIConfig;
26435
- const selectedCategoriesSet = new Set(externalSelectedCategories);
26654
+ const [localSelected, setLocalSelected] = useState(externalSelectedCategories);
26436
26655
  const [hoveredPillId, setHoveredPillId] = useState(null);
26656
+ useEffect(() => {
26657
+ if (isOpen) {
26658
+ setLocalSelected(externalSelectedCategories);
26659
+ }
26660
+ }, [isOpen]);
26661
+ const localSelectedSet = new Set(localSelected);
26437
26662
  const toggleCategorySelection = (categoryId) => {
26438
- const newSelected = new Set(externalSelectedCategories);
26439
- if (categoryId === "all") {
26440
- newSelected.clear();
26441
- } else {
26442
- if (newSelected.has(categoryId)) {
26443
- newSelected.delete(categoryId);
26663
+ setLocalSelected((prev) => {
26664
+ if (categoryId === "all") {
26665
+ return [];
26666
+ }
26667
+ const set = new Set(prev);
26668
+ if (set.has(categoryId)) {
26669
+ set.delete(categoryId);
26444
26670
  } else {
26445
- newSelected.add(categoryId);
26671
+ set.add(categoryId);
26446
26672
  }
26447
- }
26673
+ return Array.from(set);
26674
+ });
26675
+ };
26676
+ const handleConfirm = () => {
26448
26677
  if (onFilterChange) {
26449
- onFilterChange(Array.from(newSelected));
26678
+ onFilterChange(localSelected);
26450
26679
  }
26680
+ onClose();
26451
26681
  };
26452
26682
  const getPillStyle = (categoryId, isActive) => {
26453
26683
  const isHovered = hoveredPillId === categoryId;
26454
- const isAllActive = categoryId === "all" && selectedCategoriesSet.size === 0;
26684
+ const isAllActive = categoryId === "all" && localSelectedSet.size === 0;
26455
26685
  return {
26456
26686
  background: isActive || isAllActive ? "#007bff" : isHovered ? "#e9ecef" : "#f5f5f5",
26457
26687
  color: isActive || isAllActive ? "white" : "#666",
@@ -26468,8 +26698,7 @@ const FiltersDrawer = ({
26468
26698
  maxHeight: "70%",
26469
26699
  className,
26470
26700
  showHandle: true,
26471
- showCloseButton: true,
26472
- closeButtonText: drawerCloseButtonText,
26701
+ showCloseButton: false,
26473
26702
  scoped,
26474
26703
  children: /* @__PURE__ */ jsxs("div", { className: styles$6.content, children: [
26475
26704
  /* @__PURE__ */ jsx("h3", { className: styles$6.title, children: drawerCategoriesTitle }),
@@ -26478,7 +26707,7 @@ const FiltersDrawer = ({
26478
26707
  "div",
26479
26708
  {
26480
26709
  className: styles$6.pill,
26481
- style: getPillStyle("all", selectedCategoriesSet.size === 0),
26710
+ style: getPillStyle("all", localSelectedSet.size === 0),
26482
26711
  onMouseEnter: () => setHoveredPillId("all"),
26483
26712
  onMouseLeave: () => setHoveredPillId(null),
26484
26713
  onClick: () => toggleCategorySelection("all"),
@@ -26489,7 +26718,7 @@ const FiltersDrawer = ({
26489
26718
  "div",
26490
26719
  {
26491
26720
  className: styles$6.pill,
26492
- style: getPillStyle(category.id, selectedCategoriesSet.has(category.id)),
26721
+ style: getPillStyle(category.id, localSelectedSet.has(category.id)),
26493
26722
  onMouseEnter: () => setHoveredPillId(category.id),
26494
26723
  onMouseLeave: () => setHoveredPillId(null),
26495
26724
  onClick: () => toggleCategorySelection(category.id),
@@ -26497,7 +26726,16 @@ const FiltersDrawer = ({
26497
26726
  },
26498
26727
  category.id
26499
26728
  ))
26500
- ] }) })
26729
+ ] }) }),
26730
+ /* @__PURE__ */ jsx(
26731
+ "button",
26732
+ {
26733
+ type: "button",
26734
+ className: styles$6.confirmButton,
26735
+ onClick: handleConfirm,
26736
+ children: drawerCloseButtonText
26737
+ }
26738
+ )
26501
26739
  ] })
26502
26740
  }
26503
26741
  );
@@ -26585,67 +26823,6 @@ const Positioned = ({
26585
26823
  };
26586
26824
  return /* @__PURE__ */ jsx("div", { className: `${styles$3.container} ${className}`.trim(), style: containerStyle, children });
26587
26825
  };
26588
- const DataContext = createContext(void 0);
26589
- const DataProvider = ({
26590
- children,
26591
- dataService,
26592
- finderId,
26593
- backendUrl,
26594
- initialCards = [],
26595
- initialFinder = null,
26596
- initialCategories = []
26597
- }) => {
26598
- const isInitiallyLoaded = useRef(false);
26599
- const [cards, setCards] = useState(initialCards);
26600
- const [finder, setFinder] = useState(initialFinder);
26601
- const [categories2, setCategories] = useState(initialCategories);
26602
- const [loading, setLoading] = useState(false);
26603
- const [error, setError] = useState(null);
26604
- const loadFinder = useCallback(async () => {
26605
- if (!finderId || !backendUrl) {
26606
- setError("finderId and backendUrl are required to load finder");
26607
- return;
26608
- }
26609
- setLoading(true);
26610
- setError(null);
26611
- try {
26612
- const result = await dataService.loadFinderFromApi(finderId, backendUrl);
26613
- setFinder(result.finder);
26614
- setCards(result.cards);
26615
- setCategories(result.categories);
26616
- } catch (err) {
26617
- const errorMessage = err instanceof Error ? err.message : "Failed to load finder";
26618
- setError(errorMessage);
26619
- console.error("Error loading finder:", err);
26620
- } finally {
26621
- setLoading(false);
26622
- isInitiallyLoaded.current = true;
26623
- }
26624
- }, [dataService, finderId, backendUrl]);
26625
- useEffect(() => {
26626
- loadFinder();
26627
- }, [loadFinder]);
26628
- const value = {
26629
- cards,
26630
- finder,
26631
- categories: categories2,
26632
- loading,
26633
- error,
26634
- isInitiallyLoaded: isInitiallyLoaded.current,
26635
- setCards,
26636
- setFinder,
26637
- setCategories,
26638
- loadFinder
26639
- };
26640
- return /* @__PURE__ */ jsx(DataContext.Provider, { value, children });
26641
- };
26642
- const useData = () => {
26643
- const context = useContext(DataContext);
26644
- if (context === void 0) {
26645
- throw new Error("useData must be used within a DataProvider");
26646
- }
26647
- return context;
26648
- };
26649
26826
  const AppStateContext = createContext(void 0);
26650
26827
  const AppStateProvider = ({
26651
26828
  children
@@ -26710,22 +26887,12 @@ const AppStateProvider = ({
26710
26887
  const setCards = useCallback((cards) => {
26711
26888
  setAllCards(cards);
26712
26889
  setFilteredCards(cards);
26713
- setSelectedCategories([]);
26890
+ setCurrentCardIndex(0);
26891
+ setNoMoreCards(false);
26892
+ }, []);
26893
+ const handleSetSelectedCategories = useCallback((categoryIds) => {
26894
+ setSelectedCategories(categoryIds);
26714
26895
  }, []);
26715
- useEffect(() => {
26716
- let newFilteredCards;
26717
- if (selectedCategories.length === 0) {
26718
- newFilteredCards = [...allCards];
26719
- } else {
26720
- newFilteredCards = allCards.filter((card2) => {
26721
- return card2.categoryIds && card2.categoryIds.some((categoryId) => selectedCategories.includes(categoryId));
26722
- });
26723
- }
26724
- setFilteredCards(newFilteredCards);
26725
- if (allCards.length > 0) {
26726
- setCurrentCardIndex(0);
26727
- }
26728
- }, [selectedCategories, allCards]);
26729
26896
  const value = {
26730
26897
  currentCardIndex,
26731
26898
  swipeHistory,
@@ -26752,7 +26919,7 @@ const AppStateProvider = ({
26752
26919
  toggleMute,
26753
26920
  showLogo,
26754
26921
  setCards,
26755
- setSelectedCategories
26922
+ setSelectedCategories: handleSetSelectedCategories
26756
26923
  };
26757
26924
  return /* @__PURE__ */ jsx(AppStateContext.Provider, { value, children });
26758
26925
  };
@@ -26767,11 +26934,12 @@ const MonitoringContext = createContext(void 0);
26767
26934
  const MonitoringProvider = ({
26768
26935
  children,
26769
26936
  monitorService,
26770
- finderId
26937
+ finderId,
26938
+ collectEvents = true
26771
26939
  }) => {
26772
26940
  const [sessionId] = useState(() => crypto.randomUUID());
26773
26941
  const cardImpressionStartTimesRef = useRef({});
26774
- const [lastConsentState, setLastConsentState] = useState(false);
26942
+ const [lastConsentState, setLastConsentState] = useState(collectEvents);
26775
26943
  const eventBufferRef = useRef([]);
26776
26944
  const flushEventBuffer = useCallback(() => {
26777
26945
  const eventBufferCopy = [...eventBufferRef.current];
@@ -26892,81 +27060,6 @@ const interactiveFeed = "_interactiveFeed_1wsuw_1";
26892
27060
  const styles$2 = {
26893
27061
  interactiveFeed
26894
27062
  };
26895
- const UIContext = createContext(void 0);
26896
- const UIProvider = ({ children }) => {
26897
- var _a, _b, _c, _d;
26898
- const { finder } = useData();
26899
- const [buttonsVisible, setButtonsVisible] = useState(false);
26900
- const [summaryVisible, setSummaryVisible] = useState(false);
26901
- const [ctaTooltipVisible, setCtaTooltipVisible] = useState(false);
26902
- const [selectedCategories, setSelectedCategories] = useState([]);
26903
- const [logoVisible, setLogoVisible] = useState(true);
26904
- const [tutorialVisible, setTutorialVisible] = useState(false);
26905
- useEffect(() => {
26906
- var _a2;
26907
- console.log("finder?.navigation?.tutorial", finder == null ? void 0 : finder.tutorial);
26908
- setTutorialVisible(((_a2 = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _a2.enabled) ?? false);
26909
- }, [
26910
- (_a = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _a.enabled,
26911
- (_b = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _b.size,
26912
- (_c = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _c.color,
26913
- (_d = finder == null ? void 0 : finder.tutorial) == null ? void 0 : _d.opacity
26914
- ]);
26915
- console.log("tutorialVisible3", tutorialVisible);
26916
- const showButtons = useCallback(() => {
26917
- setButtonsVisible(true);
26918
- }, []);
26919
- const hideButtons = useCallback(() => {
26920
- setButtonsVisible(false);
26921
- }, []);
26922
- const showSummary = useCallback(() => {
26923
- setSummaryVisible(true);
26924
- }, []);
26925
- const hideSummary = useCallback(() => {
26926
- setSummaryVisible(false);
26927
- }, []);
26928
- const showCtaTooltip = useCallback(() => {
26929
- setCtaTooltipVisible(true);
26930
- }, []);
26931
- const hideCtaTooltip = useCallback(() => {
26932
- setCtaTooltipVisible(false);
26933
- }, []);
26934
- const toggleLogo = useCallback((visible) => {
26935
- setLogoVisible(visible);
26936
- }, []);
26937
- const showTutorial = useCallback(() => {
26938
- setTutorialVisible(true);
26939
- }, []);
26940
- const hideTutorial = useCallback(() => {
26941
- setTutorialVisible(false);
26942
- }, []);
26943
- const value = {
26944
- buttonsVisible,
26945
- summaryVisible,
26946
- ctaTooltipVisible,
26947
- selectedCategories,
26948
- logoVisible,
26949
- tutorialVisible,
26950
- showButtons,
26951
- hideButtons,
26952
- showSummary,
26953
- hideSummary,
26954
- showCtaTooltip,
26955
- hideCtaTooltip,
26956
- setSelectedCategories,
26957
- toggleLogo,
26958
- showTutorial,
26959
- hideTutorial
26960
- };
26961
- return /* @__PURE__ */ jsx(UIContext.Provider, { value, children });
26962
- };
26963
- const useUI = () => {
26964
- const context = useContext(UIContext);
26965
- if (context === void 0) {
26966
- throw new Error("useUI must be used within a UIProvider");
26967
- }
26968
- return context;
26969
- };
26970
27063
  const InteractiveFeed = ({
26971
27064
  cards: initialCards,
26972
27065
  categories: categories2 = [],
@@ -27011,7 +27104,8 @@ const InteractiveFeed = ({
27011
27104
  sendImpressionEvent,
27012
27105
  startCardImpression
27013
27106
  } = useMonitoring();
27014
- const { tutorialVisible, hideTutorial } = useUI();
27107
+ const { tutorialVisible, hideTutorial, isFiltersDrawerOpen, openFiltersDrawer, closeFiltersDrawer } = useUI();
27108
+ const { loadCardsByCategories, hasPresetCategories } = useData();
27015
27109
  useEffect(() => {
27016
27110
  if ((logoUIConfig == null ? void 0 : logoUIConfig.url) && logoUIConfig.autoHideTimeout > 0) {
27017
27111
  showLogo(logoUIConfig.autoHideTimeout);
@@ -27021,13 +27115,13 @@ const InteractiveFeed = ({
27021
27115
  setCards(initialCards);
27022
27116
  }, [initialCards, setCards]);
27023
27117
  const [isHistoryDrawerOpen, setIsHistoryDrawerOpen] = useState(false);
27024
- const [isFiltersDrawerOpen, setIsFiltersDrawerOpen] = useState(false);
27025
- const handleFilterChange = useCallback((selectedCategoryIds) => {
27118
+ const handleFilterChange = useCallback(async (selectedCategoryIds) => {
27026
27119
  setSelectedCategories(selectedCategoryIds);
27120
+ await loadCardsByCategories(selectedCategoryIds);
27027
27121
  if (onFilterChange) {
27028
27122
  onFilterChange(selectedCategoryIds);
27029
27123
  }
27030
- }, [setSelectedCategories, onFilterChange]);
27124
+ }, [setSelectedCategories, loadCardsByCategories, onFilterChange]);
27031
27125
  const shouldShowHistoryButton = useMemo(() => {
27032
27126
  return currentCardIndex > 0;
27033
27127
  }, [currentCardIndex]);
@@ -27044,11 +27138,11 @@ const InteractiveFeed = ({
27044
27138
  setIsHistoryDrawerOpen(false);
27045
27139
  }, []);
27046
27140
  const handleOpenFilters = useCallback(() => {
27047
- setIsFiltersDrawerOpen(true);
27048
- }, []);
27141
+ openFiltersDrawer();
27142
+ }, [openFiltersDrawer]);
27049
27143
  const handleCloseFiltersDrawer = useCallback(() => {
27050
- setIsFiltersDrawerOpen(false);
27051
- }, []);
27144
+ closeFiltersDrawer();
27145
+ }, [closeFiltersDrawer]);
27052
27146
  return /* @__PURE__ */ jsxs("div", { className: styles$2.interactiveFeed, children: [
27053
27147
  /* @__PURE__ */ jsx(
27054
27148
  SwipeableFeed,
@@ -27101,7 +27195,7 @@ const InteractiveFeed = ({
27101
27195
  )
27102
27196
  }
27103
27197
  ),
27104
- filtersUIConfig.enabled && /* @__PURE__ */ jsx(
27198
+ filtersUIConfig.enabled && !hasPresetCategories && /* @__PURE__ */ jsx(
27105
27199
  Positioned,
27106
27200
  {
27107
27201
  x: `${filtersUIConfig.buttonLeftPosition}%`,
@@ -27117,7 +27211,7 @@ const InteractiveFeed = ({
27117
27211
  )
27118
27212
  }
27119
27213
  ),
27120
- filtersUIConfig.enabled && /* @__PURE__ */ jsx(
27214
+ !hasPresetCategories && /* @__PURE__ */ jsx(
27121
27215
  FiltersDrawer,
27122
27216
  {
27123
27217
  isOpen: isFiltersDrawerOpen,
@@ -27250,16 +27344,13 @@ const SwippingJourney = ({
27250
27344
  };
27251
27345
  class MonitorService {
27252
27346
  /**
27253
- * Get monitor URL from window
27347
+ * Get monitor URL from window or environment variable
27254
27348
  */
27255
27349
  getMonitorUrl() {
27256
- if (typeof window === "undefined") {
27257
- throw new Error("window is not available");
27350
+ if (typeof window !== "undefined" && window.SWIPEFINDER_CAMPAIGN_MONITOR_URL) {
27351
+ return window.SWIPEFINDER_CAMPAIGN_MONITOR_URL;
27258
27352
  }
27259
- if (!window.SWIPEFINDER_CAMPAIGN_MONITOR_URL) {
27260
- throw new Error("SWIPEFINDER_CAMPAIGN_MONITOR_URL is not set");
27261
- }
27262
- return window.SWIPEFINDER_CAMPAIGN_MONITOR_URL;
27353
+ throw new Error("SWIPEFINDER_CAMPAIGN_MONITOR_URL is not set.");
27263
27354
  }
27264
27355
  /**
27265
27356
  * Send monitoring event to API
@@ -27273,9 +27364,9 @@ class MonitorService {
27273
27364
  "Content-Type": "application/json"
27274
27365
  },
27275
27366
  body: JSON.stringify({
27367
+ session_id: params.sessionId,
27276
27368
  finder_id: params.finderId,
27277
27369
  event_type: params.event,
27278
- session_id: params.sessionId,
27279
27370
  card_id: params.cardId,
27280
27371
  card_view_duration: params.cardViewDuration,
27281
27372
  swipe_direction: params.direction
@@ -27356,7 +27447,9 @@ const AppProviders = ({
27356
27447
  monitorService,
27357
27448
  dataService,
27358
27449
  backendUrl,
27359
- finderId
27450
+ finderId,
27451
+ presetCategoryIds,
27452
+ collectEvents
27360
27453
  }) => {
27361
27454
  return /* @__PURE__ */ jsx(
27362
27455
  DataProvider,
@@ -27364,11 +27457,13 @@ const AppProviders = ({
27364
27457
  dataService,
27365
27458
  finderId,
27366
27459
  backendUrl,
27460
+ presetCategoryIds,
27367
27461
  children: /* @__PURE__ */ jsx(AppStateProvider, { children: /* @__PURE__ */ jsx(UIProvider, { children: /* @__PURE__ */ jsx(
27368
27462
  MonitoringProvider,
27369
27463
  {
27370
27464
  monitorService,
27371
27465
  finderId,
27466
+ collectEvents,
27372
27467
  children
27373
27468
  }
27374
27469
  ) }) })
@@ -27380,7 +27475,9 @@ const MainBootstrap = ({
27380
27475
  dataService,
27381
27476
  backendUrl,
27382
27477
  finderId,
27383
- className = ""
27478
+ categories: categories2,
27479
+ className = "",
27480
+ collectEvents = true
27384
27481
  }) => {
27385
27482
  return /* @__PURE__ */ jsx("div", { className: classNames(styles.mainBootstrap, className), children: /* @__PURE__ */ jsx(
27386
27483
  AppProviders,
@@ -27389,15 +27486,38 @@ const MainBootstrap = ({
27389
27486
  dataService,
27390
27487
  backendUrl,
27391
27488
  finderId,
27489
+ presetCategoryIds: categories2,
27490
+ collectEvents,
27392
27491
  children: /* @__PURE__ */ jsx(SwippingJourney, {})
27393
27492
  }
27394
27493
  ) });
27395
27494
  };
27396
27495
  class DataService {
27496
+ /**
27497
+ * Map raw API card items to Card types
27498
+ */
27499
+ mapCards(items) {
27500
+ return items.map((card2) => {
27501
+ if (card2.type === "image") {
27502
+ const { image: image2, ...rest } = card2;
27503
+ return {
27504
+ ...rest,
27505
+ imageUrl: image2 || card2.imageUrl || ""
27506
+ };
27507
+ } else if (card2.type === "video") {
27508
+ const { video, ...rest } = card2;
27509
+ return {
27510
+ ...rest,
27511
+ videoUrl: video || card2.videoUrl || ""
27512
+ };
27513
+ }
27514
+ return card2;
27515
+ });
27516
+ }
27397
27517
  /**
27398
27518
  * Load finder from API
27399
27519
  */
27400
- async loadFinderFromApi(finderId, backendUrl) {
27520
+ async loadFinderFromApi(finderId, backendUrl, categoryIds) {
27401
27521
  try {
27402
27522
  const apiUrl = `${backendUrl}/api/finders/${finderId}/queue`;
27403
27523
  const response = await fetch(apiUrl, {
@@ -27405,31 +27525,15 @@ class DataService {
27405
27525
  headers: {
27406
27526
  "Content-Type": "application/json"
27407
27527
  },
27408
- body: JSON.stringify({ categories: [], exclude: [] })
27528
+ body: JSON.stringify({ categories: categoryIds && categoryIds.length > 0 ? categoryIds : [], exclude: [] })
27409
27529
  });
27410
27530
  if (!response.ok) {
27411
27531
  throw new Error(`API returned status: ${response.status}`);
27412
27532
  }
27413
27533
  const apiData = await response.json();
27414
- const mappedCards = apiData.cards.items.map((card2) => {
27415
- if (card2.type === "image") {
27416
- const { image: image2, ...rest } = card2;
27417
- return {
27418
- ...rest,
27419
- imageUrl: image2 || card2.imageUrl || ""
27420
- };
27421
- } else if (card2.type === "video") {
27422
- const { video, ...rest } = card2;
27423
- return {
27424
- ...rest,
27425
- videoUrl: video || card2.videoUrl || ""
27426
- };
27427
- }
27428
- return card2;
27429
- });
27430
27534
  return {
27431
27535
  finder: apiData.finder,
27432
- cards: mappedCards,
27536
+ cards: this.mapCards(apiData.cards.items),
27433
27537
  categories: apiData.categories
27434
27538
  };
27435
27539
  } catch (error) {
@@ -27441,6 +27545,27 @@ class DataService {
27441
27545
  };
27442
27546
  }
27443
27547
  }
27548
+ /**
27549
+ * Load cards filtered by categories from API
27550
+ */
27551
+ async loadCardsByCategories(finderId, backendUrl, categoryIds) {
27552
+ const apiUrl = `${backendUrl}/api/finders/${finderId}/queue`;
27553
+ const response = await fetch(apiUrl, {
27554
+ method: "POST",
27555
+ headers: {
27556
+ "Content-Type": "application/json"
27557
+ },
27558
+ body: JSON.stringify({ categories: categoryIds, exclude: [] })
27559
+ });
27560
+ if (!response.ok) {
27561
+ throw new Error(`API returned status: ${response.status}`);
27562
+ }
27563
+ const apiData = await response.json();
27564
+ return {
27565
+ cards: this.mapCards(apiData.cards.items),
27566
+ categories: apiData.categories
27567
+ };
27568
+ }
27444
27569
  }
27445
27570
  function initSwipeFinder(options) {
27446
27571
  const { backendUrl, finderId, element, ...config } = options;