# import gradio as gr # from caption_store import get_all_collections # def render_search(): # with gr.Column(visible=False) as page: # gr.Markdown("# ๐Ÿ” AI Search") # with gr.Row(): # search_query = gr.Textbox( # placeholder="Describe what you're looking for... (e.g. 'moody forest portrait')", # label="Search Query", scale=4 # ) # search_col_filter = gr.Dropdown( # choices=["All"] + get_all_collections(), value="All", label="Filter by Collection", scale=1 # ) # search_btn = gr.Button("Search", variant="primary", scale=1) # search_status_msg = gr.Markdown("Enter a query to start searching.") # search_gallery = gr.Gallery(label="Search Results", columns=4, height="auto") # return page, search_query, search_col_filter, search_btn, search_status_msg, search_gallery import gradio as gr from caption_store import get_all_collections def render_search(): # Selection and path tracking states for search selected_paths = gr.State([]) loaded_original_paths = gr.State([]) with gr.Column(visible=False, elem_classes="page-container") as page: gr.HTML("""

๐Ÿ” AI Search

Search your archive using natural language, select results, and bulk download.

""") with gr.Row(): search_query = gr.Textbox( placeholder="Describe what you're looking for... (e.g. 'moody forest portrait')", label="Search Query", scale=4 ) search_col_filter = gr.Dropdown( choices=["All"] + get_all_collections(), value="All", label="Filter by Collection", scale=1 ) search_btn = gr.Button("Search", variant="primary", scale=1) search_status_msg = gr.Markdown("Enter a query to start searching.") # Full-width panel for selected files output selection_status = gr.Markdown( value="**0** image(s) selected for download packaging.\n\n*No files currently selected.*", elem_classes="selection-status-box" ) # Standalone row for action buttons with gr.Row(elem_classes="selection-buttons-row"): select_all_btn = gr.Button("โœ… Select All Results", size="sm", variant="secondary") clear_selection_btn = gr.Button("๐Ÿงน Clear Selection", size="sm", variant="secondary") download_btn = gr.Button("๐Ÿ“ฆ Zip & Download Selected", variant="primary", size="sm") # Hidden file output for compilation download download_file = gr.File(label="Source Quality ZIP Archive", visible=False) search_gallery = gr.Gallery( label="Search Results", columns=4, height="auto", elem_classes="custom-gallery", allow_preview=False ) return ( page, search_query, search_col_filter, search_btn, search_status_msg, search_gallery, selected_paths, loaded_original_paths, selection_status, download_btn, download_file, clear_selection_btn, select_all_btn )