

<turbo-stream action="replace" target="subscribeModalFrame">
    <template>
        <turbo-frame id="subscribeModalFrame">
            <link href="https://fonts.googleapis.com/css2?family=Barlow+Semi+Condensed:ital,wght@0,800;1,800&display=swap" rel="stylesheet">
            <div style="max-width: 625px" class="w-100 bg-white subscription-modal modal-lg"
                role="document"
                data-controller="subscriptionsection"
                
                
                
                
            >

                <div class="subscription-modal__main-content">

                        <div class="text-center">
                            

<div class="position-relative">
    
      
        <img class="rounded-circle" src="https://pv.volume.com/cache/37/74/3774d9f05d04896462f7dede938f392d.jpg?Expires=1784040840&amp;Signature=INBNcpGYy6uGeDpEZKheJ32-nRFo9Gkk1lnzW1DTuQvR0mYbc4TXR5SSCsY4AG9Q70AwMe4ovoyBu6xMX1JEH7eoYEhROn86Y5rWadJ45NOHojf97dTIuRo296nTOwBI21PEACsGJ4d-oAU2AGfh7NYYaeqfmONoBslIBw~knNQWABthdsyzI5l4JUAjsTCHY-I3ykqifeT9Ej51bWYiUL7pIs4tvk67PXE-XgUErfsHsZCG1jZzfAvxaU-xIg~WW5g4E9Izi-VaDOS7z8Fd6yyrS~xGOPcmXbkNe3Gqk3tS0Nk3fGJCnZMmn7NGWTnuBRLALwVj~8A69hrEccKZ3Q__&amp;Key-Pair-Id=K2X809AP5PLSK8" width="60" height="60">
      
    

    
</div>

                            
                            <h6 class="p-2">
                                         
                                      
                                    Join Andy Frasco's Community
                                
                            </h6>

                            


    <p class="text-gray-600">
        
            Become a community member and get access to exclusive perks. Cancel any time.
        
    </p>


                        </div>

                        
                        




<span class="d-sm-none">
    



<div id="tiers-carousel-andyfrasco" class="carousel carousel-dark slide py-3" data-bs-ride="false">
    <div class="carousel-indicators subscription-modal__carousel-indicators">
        
    </div>
    <div class="carousel-inner">
        
    </div>
</div>
</span>

<span class="d-none d-sm-block">
    <div class="carousel slider-carousel py-3 " id="tiers-carousel-andyfrasco" data-bs-ride=false
    data-controller="gridcarousel" data-gridcarousel-name-value="tiers-carousel-andyfrasco" 
>
    
    
    
    <div class="carousel-indicators subscription-modal__carousel-indicators">
      
    </div>

    <div class="carousel-inner no-scroll-bar justify-content-center" data-gridcarousel-target="inner">
        
  
  


    </div>
    <div data-action="click->gridcarousel#onPrevClick" class="card_carousel--icon-container-base card_carousel--icon-container-left"
         data-gridcarousel-target="prevBar" hidden>
        <button class="carousel-control-prev card_carousel--icon-base" type="button" data-bs-target="#tiers-carousel-andyfrasco" data-bs-slide="prev">
            <span class="carousel-control-prev-icon card_carousel--icon_image-left" aria-hidden="true"></span>
            <span class="visually-hidden">Previous</span>
        </button>
    </div>
    <div data-action="click->gridcarousel#onNextClick" class="card_carousel--icon-container-base card_carousel--icon-container-right"
         data-gridcarousel-target="nextBar" hidden>
        <button class="carousel-control-next card_carousel--icon-base" type="button" data-bs-target="#tiers-carousel-andyfrasco" data-bs-slide="next">
            <span class="carousel-control-next-icon card_carousel--icon_image-right" aria-hidden="true"></span>
            <span class="visually-hidden">Next</span>
        </button>
    </div>
</div>

</span>




<span id="subscription-modal-free-tier">
    <div class="mt-3 mx-3 mx-sm-0"
         data-subscriptionsection-target="tier"
         data-action="click->subscriptionsection#selectTier"
         data-subscriptionsection-tier-monthly-price-param="0"
         data-subscriptionsection-tier-annual-price-param="0"
         data-enable-yearly-billing="false"
         data-tier-id="free"
         >
        <div class="d-flex flex-row border border-subtle p-2 subscription-common__free-tier">
    <span class="text-white fs-sm fw-bold fst-italic rounded subscription-common__free-tier-badge">Basic</span>
    <span class="d-flex flex-row justify-content-between align-items-center gap-3">
        <span class="fs-sm fw-bold">Free Membership</span>
         
    </span>   
</div>
    </div>
</span>



<div>
    
        <div id="tier-free-details" style="display:none" data-subscriptionsection-target="tierDetails">
            <p class="fw-semibold text-center mt-4">Perks & Benefits</p>
            <ul class="fa-ul fs-xs subscription-modal__perks-list">
                <li><span class="fa-li"><i class="fas fa-check text-primary"></i></span>
                    <p>Volume Newsletter emails when I have updates and announcements</p>
                </li>
                <li><span class="fa-li"><i class="fas fa-check text-primary"></i></span>
                    <p>Notifications whenever I go live</p>
                </li>
            </ul>
            <input type="hidden" name="tier_id" value="free">
        </div>
    

    
    
</div>


                        
                        

                        

                </div>
                
                





<form id="subscribe-form-andyfrasco-modal"
      action="/communities/subscribe/andyfrasco/?origin_url=/andyfrasco/v/u/NjnA2B/"
      method="post"
      data-turbo-frame="subscribeModalFrame"
      class="w-100"
>
  <input type="hidden" name="csrfmiddlewaretoken" value="AM0piWLRDEsOnWkQQRLFkrLdaDSVsFUQjcWxGe8yJ7IMDpL7T6vjbZVqPmjEH71P">

  
  <input type="hidden" name="in_modal" value="true">
  
  <input type="hidden" name="modal_id" value="subscribeModal">
  <input type="hidden" name="tier_id"
         value=""
         data-subscriptionsection-target="subscribeFormTierId"
  >
  <input type="hidden" name="term" id="subscription-term" value="M" data-subscriptionsection-target="termInput">
  
  
      <span 
        
          id="free-trial-code-entry-modal"
        
      >
      
      
      

      <turbo-frame id="free_trial_code_entry_frame-andyfrasco"
                  src="/communities/validate_free_trial_code/andyfrasco/">
        Loading...
      </turbo-frame>

    </span>
  

  <!-- Yearly Subscription Toggle -->

  
  


  
  
    <div id="annual-toggle-container-modal" class="d-flex justify-content-start px-2 mb-2">
    <div class="form-check form-switch my-2" style="display:none"> 
        <input class="form-check-input form-check-input-annual-sub form-check-input-medium enable-yearly-subscription me-3"
            type="checkbox"
            id="enable-yearly-subscription"
            name="enable_yearly_subscription"
            data-subscriptionsection-target="yearlyToggle"
            data-action="change->subscriptionsection#yearlyCheckboxChanged"
        >
        <label class="form-check-label" for="enable-yearly-subscription">
            <p class="fw-semibold fs-md">Purchase Annual Membership <span class="annual_discount" id="annual_discount"></span></p>
        </label>
    </div>
</div>
  

  
    <button type="submit" id="subscribe-button-andyfrasco" data-subscriptionsection-target="button subscribeFormSubmitButton" class="btn btn-primary w-100 text-truncate"
            >
      Join
    </button>
  

</form>

                
                         
                            <a href="/communities/subscribe/andyfrasco/?origin_url=/andyfrasco/v/u/NjnA2B/&tier_id=free"
                                id="join-community-from-modal-button-andyfrasco" 
                                class="btn btn-primary w-100" style="display:none;"
                                data-turbo-method="post"
                            >
                                Join Community
                            </a>
                        
                        
                        <button class="btn btn-secondary w-100 mt-2" data-action='click->dialog#close'>Close</button>                      

            </div>


            
            
            <script type="text/javascript">
                $(function () {
                    const carouselItems = $(".carousel-item");
                    const carouselIndicators = $(".carousel-indicators button");
                    const freeTier = $("#subscription-modal-free-tier");
                    const formTierId = $("#subscribe-form-andyfrasco-modal").find("input[name='tier_id']");
                    const freeTrialCodeEntry = $("#free-trial-code-entry-modal");
                    const joinCommunityButton = $("#join-community-from-modal-button-andyfrasco");
                    const subscribeButton = $("#subscribe-button-andyfrasco");
                    const viewSubscriptionButton = $("#view-subscription-button-andyfrasco");

                    function showSelectedTierDetails(selectedTierId) {
                        $("[id^='tier-']").each(function() {
                            $(this).hide();
                        });
                        $(`#tier-${selectedTierId}-details`).show();

                        // Set the form tier id to the selected tier id
                        formTierId.val(selectedTierId);

                        
                        
                        
                            [joinCommunityButton, subscribeButton, viewSubscriptionButton].forEach((button) => {
                                button.hide();
                            });

                            freeTrialCodeEntry.hide();

                            if (formTierId.val() === "free") {
                                joinCommunityButton.show();
                            }
                            else if (formTierId.val() === "") {
                                viewSubscriptionButton.show();
                            }
                            else {
                                subscribeButton.show();
                                freeTrialCodeEntry.show();
                            }
                        
                    }

                    function highlightMobileCarouselSelectedTier(selectedTier) {
                        
                        carouselItems.removeClass("active-item");
                        carouselItems.filter(`[data-slide-to="${selectedTier}"]`).addClass("active-item");
                        carouselIndicators.removeClass("active-item");
                        carouselIndicators.filter(`[data-bs-slide-to="${selectedTier}"]`).addClass("active-item");
                    }

                    
                    const tiersCarousel = $("#tiers-carousel-andyfrasco");

                    
                    tiersCarousel.on("slide.bs.carousel", function (ev) {
                        if (ev.relatedTarget.classList.contains("d-none")) {
                            ev.preventDefault();
                        }
                        else {
                            highlightMobileCarouselSelectedTier(ev.to);
                            showSelectedTierDetails(ev.to);
                        }
                    });

                    // track if the last carousel slide was triggered by a finger swipe (applies to indicator click as well on mobile)
                    var carouselEl = document.getElementById("tiers-carousel-andyfrasco");
                    var lastCarouselSwipe = false;
                    if (carouselEl) {
                        carouselEl.addEventListener("touchstart", function() {
                            lastCarouselSwipe = true;
                        }, { passive: true });
                    }

                    // On slide event (after sliding completes), ensure correct tier is highlighted, details shown, pricing/annual toggle/submit btn copy updated
                    tiersCarousel.on("slid.bs.carousel", function (ev) {
                        freeTier.removeClass("active-item");
                        highlightMobileCarouselSelectedTier(ev.to);
                        showSelectedTierDetails(ev.to);
                        // only dispatch programmatic click if last slide was a finger swipe
                        if (lastCarouselSwipe) {
                            var activeItem = $(ev.relatedTarget);
                            var tierEl = activeItem.get(0);
                            if (tierEl) {
                                var clickEvent = new Event('click', { bubbles: true });
                                tierEl.dispatchEvent(clickEvent);
                            }
                        }
                        lastCarouselSwipe = false;
                    });

                    
                    let selectedCarouselItem = $(".carousel-item.active:visible");

                    // Get nudged_tier_id from context (Django template variable) this is for if a piece of content
                    // is exclusive for certain tiers and we want to nudge user to that tier in the modal
                    const nudgedTierId = "";
                    // Find the carousel item with matching data-tier-id
                    if (nudgedTierId) {
                        selectedCarouselItem = $(".carousel-item[data-tier-id='" + nudgedTierId + "']");
                    }
                    const slideTo = selectedCarouselItem.attr("data-slide-to");

                    
                    
                    tiersCarousel.carousel(parseInt(slideTo));  

                    
                    
                    

                    // When a carousel item is selected, unselect the free tier box
                    carouselItems.on("click", function (ev) {
                        const slideTo = ev.currentTarget.getAttribute("data-slide-to");
                        highlightMobileCarouselSelectedTier(slideTo);
                        freeTier.removeClass("active-item"); // unselect free tier
                        showSelectedTierDetails(slideTo);
                    });


                    // when a carousel indicator is selected, act clicking the card, but only if not already active
                    carouselIndicators.on("click", function (ev) {
                        const slideTo = ev.currentTarget.getAttribute("data-bs-slide-to");
                        // always unselect free tier
                        freeTier.removeClass("active-item");
                        var card = carouselItems.filter(`[data-slide-to='${slideTo}']`).get(0);
                        if (card) {
                            card.click(); // this will trigger the Stimulus action on the card
                        }
                    });

                    
                    // when the free tier is clicked, deactivate all carousel items/indicators and highlight only the free tier box.
                    freeTier.on("click", function (ev) {
                        carouselItems.removeClass("active-item");
                        carouselIndicators.removeClass("active-item");
                        freeTier.addClass("active-item");
                        // pass 'free' as the selectedTier to showSelectedTierDetails for clarity
                        showSelectedTierDetails('free');
                    });

                    // Prevent subscribe form submission on enter key - allow free trial code input submission on enter
                    $("#subscribe-form-andyfrasco-modal").bind("keypress", function(e) {
                        if (e.keyCode == 13) {
                            if ($("#free-trial-code-input").is(":focus")) {
                                $("#free-trial-code-apply-btn").trigger('click');
                                return false;
                            } else {
                                return false;
                            }
                        }
                    });
                });
            </script>
            
        </turbo-frame>
    </template>
</turbo-stream>


<turbo-stream action="replace" target="num_members_330378">
  <template>
    <p id="num_members_330378">2510&nbsp;members</p>
  </template>
</turbo-stream>

<turbo-stream action="replace" targets=".community-button-330378">
  <template>
    

<span class="community-button-330378 d-flex">

    
    
      <a data-turbo-method="POST" href="/follow/api/follow/330378" class="btn btn-primary text-nowrap flex-fill">
        <i class="fa-regular fa-heart"></i> &nbsp; Join Community
      </a>
    

</span>
  </template>
</turbo-stream>
<turbo-stream action="replace" targets=".leave-community-menu-item-330378">
  <template>
    

<span class="leave-community-menu-item-330378">
  
</span>
  </template>
</turbo-stream>
<turbo-stream action="replace" target="subscription-section-component-330378">
  <template>
    <style>
  .tier-details-arrow {
    background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="13" height="15" viewBox="0 0 13 15" fill="none"><path d="M12.2734 7.23028L0.0546875 14.2848L0.0546881 0.175781L12.2734 7.23028Z" fill="%238391F9"/></svg>');
    background-repeat: no-repeat;
    background-position: left;
 }
</style>

<div id="subscription-section-component-330378">
  
</div>

  </template>
</turbo-stream>
