defmodule Examples.FileBrowser.Renderer do @moduledoc """ Rendering components for the file browser explorer. Handles all UI rendering including file list, preview pane, status bar, and bookmarks sidebar. """ use Raxol.UI, framework: :react alias Examples.FileBrowser.Helpers def render_top_bar(state) do div do div class: "breadcrumbs" do state.current_path |> Path.split() |> Enum.intersperse(" / ") |> Enum.map(fn part -> span do part end end) end div class: "controls", style: [float: :right] do "#{length(state.entries)} items | " <> "Sort: #{state.sort_by} | " <> "Preview: #{state.preview_mode}" end end end def render_bookmarks(state) do div class: "bookmarks-list" do h3 do "Bookmarks" end state.bookmarks |> Enum.with_index() |> Enum.map(fn {bookmark, idx} -> div class: "bookmark-item", style: [cursor: :pointer, padding: 1] do "#{idx + 1}. #{bookmark.name}" end end) end end def render_file_list(state) do ~H"""
| Icon | Name | Size | Modified | Permissions |
|---|---|---|---|---|
| <%= Helpers.file_icon(entry) %> | <%= if entry.type == :directory do %> <%= entry.name %> <% else %> <%= entry.name %> <% end %> | <%= Helpers.format_size(entry.size) %> | <%= Helpers.format_time(entry.modified) %> |