List Components¶
Collection display components for files, cases, attributes, and queues.
FileList¶
File list with type icons.

from design_system import FileList
files = FileList()
files.add_file(
id="1",
name="interview.txt",
file_type="text",
size="15KB",
status="coded"
)
files.item_clicked.connect(lambda id: print(f"Selected: {id}"))
files.item_double_clicked.connect(lambda id: print(f"Open: {id}"))
FileList Methods¶
| Method | Description |
|---|---|
add_file(id, name, file_type, size, status) |
Add a file |
remove_file(id) |
Remove a file |
clear() |
Clear all files |
FileList Signals¶
| Signal | Description |
|---|---|
item_clicked(id) |
File clicked |
item_double_clicked(id) |
File double-clicked |
CaseList¶
Case/study list.

from design_system import CaseList, ListItem
cases = CaseList()
cases.add_item(ListItem(id="1", text="Case Study A", subtitle="5 files"))
AttributeList¶
Attribute list display.
from design_system import AttributeList, ListItem
attrs = AttributeList()
attrs.add_item(ListItem(id="1", text="Age", subtitle="Numeric"))
QueueList¶
Queue/task list.
from design_system import QueueList, ListItem
queue = QueueList()
queue.add_item(ListItem(
id="1",
text="Review coding",
badge="3",
badge_variant="warning"
))
ListItem¶
Data structure for list items.
from design_system import ListItem
item = ListItem(
id="unique-id",
text="Item Title",
subtitle="Optional subtitle",
icon="mdi6.file",
badge="New",
badge_variant="primary",
data={"custom": "data"}
)
ListItem Properties¶
| Property | Type | Default | Description |
|---|---|---|---|
id |
str | required | Unique identifier |
text |
str | required | Primary text |
subtitle |
str | None |
Secondary text |
icon |
str | None |
Icon name |
badge |
str | None |
Badge text |
badge_variant |
str | "default" |
Badge style |
data |
dict | None |
Custom data |
BaseList¶
Base class for all list components.
from design_system import BaseList
# Typically subclassed, provides:
# - item_clicked signal
# - item_double_clicked signal
# - Selection management
BaseList Signals¶
| Signal | Description |
|---|---|
item_clicked(id) |
Item clicked |
item_double_clicked(id) |
Item double-clicked |
List Item Widgets¶
Individual item widgets for list components.
FileListItem¶
from design_system import FileListItem
file_item = FileListItem(
id="1",
name="document.txt",
file_type="text",
size="10KB"
)
CaseListItem¶
from design_system import CaseListItem
case_item = CaseListItem(
id="1",
name="Case Study A",
file_count=5
)
AttributeListItem¶
from design_system import AttributeListItem
attr_item = AttributeListItem(
id="1",
name="Age",
value_type="numeric"
)
QueueListItem¶
from design_system import QueueListItem
queue_item = QueueListItem(
id="1",
title="Review document",
status="pending"
)
List Example¶
File browser with filtering:
from design_system import (
Panel, PanelHeader, FileList, SearchBox,
MediaTypeSelector, EmptyState
)
class FileBrowser(Panel):
def __init__(self):
super().__init__()
# Header with search
header = PanelHeader(title="Files")
self.add_widget(header)
# Search
self.search = SearchBox(placeholder="Search files...")
self.search.text_changed.connect(self.filter_files)
self.add_widget(self.search)
# Type filter
self.type_filter = MediaTypeSelector()
self.add_widget(self.type_filter)
# File list
self.file_list = FileList()
self.file_list.item_clicked.connect(self.on_file_selected)
self.file_list.item_double_clicked.connect(self.on_file_opened)
self.add_widget(self.file_list)
# Empty state (shown when no files)
self.empty = EmptyState(
icon="mdi6.file-outline",
title="No files",
description="Import files to get started"
)
self.empty.hide()
self.add_widget(self.empty)
def set_files(self, files):
self.file_list.clear()
for f in files:
self.file_list.add_file(
id=f["id"],
name=f["name"],
file_type=f["type"],
size=f["size"],
status=f.get("status", "")
)
if not files:
self.file_list.hide()
self.empty.show()
else:
self.file_list.show()
self.empty.hide()
def filter_files(self, query):
# Implement filtering logic
pass
def on_file_selected(self, file_id):
print(f"Selected: {file_id}")
def on_file_opened(self, file_id):
print(f"Opening: {file_id}")