# Path Bar


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Path Parsing

Utilities for parsing paths into breadcrumb segments.

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-file-browser/blob/main/cjm_fasthtml_file_browser/components/path_bar.py#L40"
target="_blank" style="float:right; font-size:smaller">source</a>

### parse_path_segments

``` python

def parse_path_segments(
    path:str, # Full path to parse
    separator:str='/', # Path separator
)->List: # List of (name, full_path) tuples

```

*Parse a path into breadcrumb segments.*

``` python
# Test path parsing
segments = parse_path_segments("/home/user/Documents")
assert len(segments) == 4  # /, home, user, Documents
assert segments[0] == ("/", "/")
assert segments[1][0] == "home"
assert segments[-1][0] == "Documents"

# Test single segment
segments = parse_path_segments("/")
assert len(segments) == 1
assert segments[0] == ("/", "/")

print("Path parsing tests passed!")
```

    Path parsing tests passed!

## Breadcrumbs

Renders the path as clickable breadcrumb links.

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-file-browser/blob/main/cjm_fasthtml_file_browser/components/path_bar.py#L64"
target="_blank" style="float:right; font-size:smaller">source</a>

### render_breadcrumbs

``` python

def render_breadcrumbs(
    current_path:str, # Current directory path
    navigate_url:str, # URL for navigation
    hx_target:Optional=None, # HTMX target for swaps
    max_segments:int=5, # Max segments to show (0 = all)
    breadcrumbs_id:Optional=None, # HTML ID for breadcrumbs
)->Any: # Breadcrumbs component

```

*Render path as breadcrumb navigation.*

``` python
from fasthtml.common import to_xml

# Test breadcrumbs
bc = render_breadcrumbs("/home/user/Documents", "/navigate")
html = to_xml(bc)
assert "Root" in html  # / becomes Root
assert "home" in html
assert "user" in html
assert "Documents" in html
assert "breadcrumbs" in html

# Test with HTMX target
bc = render_breadcrumbs("/home/user", "/nav", hx_target="#browser")
html = to_xml(bc)
assert "hx-target" in html
assert "#browser" in html

print("Breadcrumbs tests passed!")
```

    Breadcrumbs tests passed!

## Path Input

Optional text input for direct path entry.

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-file-browser/blob/main/cjm_fasthtml_file_browser/components/path_bar.py#L120"
target="_blank" style="float:right; font-size:smaller">source</a>

### render_path_input

``` python

def render_path_input(
    current_path:str, # Current path to display
    navigate_url:str, # URL for navigation
    hx_target:Optional=None, # HTMX target for swaps
    input_id:Optional=None, # HTML ID for input
)->Any: # Path input component

```

*Render a text input for direct path entry.*

``` python
# Test path input
path_input = render_path_input("/home/user", "/navigate")
html = to_xml(path_input)
assert "<form" in html.lower()
assert "<input" in html.lower()
assert "/home/user" in html
assert "Go" in html

print("Path input tests passed!")
```

    Path input tests passed!

## Navigation Buttons

Quick navigation buttons (parent, home, refresh).

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-file-browser/blob/main/cjm_fasthtml_file_browser/components/path_bar.py#L156"
target="_blank" style="float:right; font-size:smaller">source</a>

### render_nav_buttons

``` python

def render_nav_buttons(
    parent_path:Optional, # Parent directory path (None if at root)
    home_path:str, # Home directory path
    navigate_url:str, # URL for navigation
    refresh_url:Optional=None, # URL for refresh (if different)
    hx_target:Optional=None, # HTMX target for swaps
)->Any: # Navigation buttons component

```

*Render quick navigation buttons.*

``` python
# Test nav buttons
nav_btns = render_nav_buttons("/home", "/home/user", "/navigate")
html = to_xml(nav_btns)
assert "<button" in html.lower()
assert "<svg" in html.lower()  # Icons

# Test with no parent (at root)
nav_btns_root = render_nav_buttons(None, "/home/user", "/navigate")
html = to_xml(nav_btns_root)
assert "disabled" in html  # Parent button disabled

print("Nav buttons tests passed!")
```

    Nav buttons tests passed!

## Path Bar

Complete path bar component combining breadcrumbs, buttons, and optional
input.

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-file-browser/blob/main/cjm_fasthtml_file_browser/components/path_bar.py#L227"
target="_blank" style="float:right; font-size:smaller">source</a>

### render_path_bar

``` python

def render_path_bar(
    current_path:str, # Current directory path
    parent_path:Optional, # Parent directory path
    home_path:str, # Home directory path
    config:FileBrowserConfig, # Browser configuration
    navigate_url:str, # URL for navigation
    refresh_url:Optional=None, # URL for refresh
    hx_target:Optional=None, # HTMX target for swaps
    path_bar_id:Optional=None, # HTML ID for path bar
)->Any: # Path bar component

```

*Render the complete path bar.*

``` python
# Test complete path bar
config = FileBrowserConfig()
path_bar = render_path_bar(
    current_path="/home/user/Documents",
    parent_path="/home/user",
    home_path="/home/user",
    config=config,
    navigate_url="/navigate"
)
html = to_xml(path_bar)
assert "breadcrumbs" in html  # Default shows breadcrumbs
assert "Documents" in html
assert "<button" in html.lower()  # Nav buttons

# Test with path input
config_input = FileBrowserConfig(show_path_input=True, show_breadcrumbs=False)
path_bar = render_path_bar(
    current_path="/home/user",
    parent_path="/home",
    home_path="/home/user",
    config=config_input,
    navigate_url="/navigate"
)
html = to_xml(path_bar)
assert "<input" in html.lower()  # Path input shown
assert "<form" in html.lower()

print("Path bar tests passed!")
```

    Path bar tests passed!
