{{#liquid-wormhole class="unsplash"}}
    {{!-- TODO: why does this modal background not cover the PSM without style override? --}}
    <div class="fullscreen-modal-background" {{action "close"}} style="z-index: 999"></div>
    <div class="absolute top-8 right-8 bottom-8 left-8 br4 overflow-hidden bg-white z-9999" data-unsplash>
        {{!-- close button --}}
        <button type="button" class="absolute top-6 right-6" {{action "close"}}>
            {{svg-jar "close" class="w4 stroke-midlightgrey-l2"}}
        </button>

        <div class="flex flex-column h-100">
            {{!-- static header --}}
            <header class="flex-shrink-0 flex flex-row-l flex-column justify-between pt6 pr8 pb6 pl8 pt10-l pr20-l pb10-l pl20-l items-center">
                <h1 class="flex items-center darkgrey-d2 w-100 nudge-top--4">
                    <a class="dib w8 mr2" href="https://unsplash.com/?utm_source=ghost&utm_medium=referral&utm_campaign=api-credit" target="_blank">{{svg-jar "unsplash" class="fill-darkgrey-d2"}}</a>
                    Unsplash
                </h1>
                <span class="gh-input-icon mw88-l flex-auto w-100 mt3 mt0-l">
                    {{svg-jar "search"}}
                    {{gh-text-input
                        class="gh-unsplash-search"
                        name="searchKeyword"
                        placeholder="Search free high-resolution photos"
                        tabindex="1"
                        autofocus="autofocus"
                        autocorrect="off"
                        value=(readonly unsplash.searchTerm)
                        input=(action "search" value="target.value")
                        focusIn=(action "setKeyScope")
                        focus-out=(action "resetKeyScope")
                    }}
                </span>
            </header>

            {{!-- content container --}}
            <div class="relative h-100 overflow-hidden">
                {{!-- scrollable image container --}}
                <div class="overflow-auto h-100 w-100 pr8 pl8 pr20-l pl20-l">
                    {{#if unsplash.photos}}
                        <section class="gh-unsplash-grid">
                            {{#each unsplash.columns as |photos|}}
                                <div class="gh-unsplash-grid-column">
                                    {{#each photos as |photo|}}
                                        {{gh-unsplash-photo photo=photo zoom=(action "zoomPhoto") select=(action "select")}}
                                    {{/each}}
                                </div>
                            {{/each}}
                        </section>
                    {{else if (and unsplash.searchTerm (not unsplash.error unsplash.isLoading))}}
                        <section class="gh-unsplash-error h-100 flex items-center justify-center pb30">
                            <div>
                                <img class="gh-unsplash-error-404" src="assets/img/unsplash-404.png" alt="No photos found" />
                                <h4>No photos found for '{{unsplash.searchTerm}}'</h4>
                            </div>
                        </section>
                    {{/if}}

                    {{#if unsplash.error}}
                        {{!-- TODO: add better error styles? --}}
                        <section class="gh-unsplash-error h-100 flex items-center justify-center pb30">
                            <div>
                                <img class="gh-unsplash-error-404" src="assets/img/unsplash-404.png" alt="Network error" />
                                <h4>{{unsplash.error}} (<a href="#" {{action "retry"}}>retry</a>)</h4>
                            </div>
                        </section>
                    {{/if}}

                    {{#if unsplash.isLoading}}
                        <div class="gh-unsplash-loading h-100 flex items-center justify-center pb30">
                            <div class="gh-loading-spinner"></div>
                        </div>
                    {{/if}}

                    {{gh-scroll-trigger
                        enter=(action "loadNextPage")
                        triggerOffset=1000}}
                </div>

                {{!-- zoomed image overlay --}}
                {{#if zoomedPhoto}}
                    <div class="absolute flex justify-center top-0 right-0 bottom-0 left-0 pr20 pb10 pl20 bg-white overflow-hidden" {{action "closeZoom"}}>
                        {{gh-unsplash-photo
                            photo=zoomedPhoto
                            zoomed=true
                            zoom=(action "closeZoom")
                            select=(action "select")}}
                    </div>
                {{/if}}
            </div>
        </div>
    </div>

{{/liquid-wormhole}}
