Picker Components
Selection widgets for types, colors, and options.
TypeSelector / TypeOptionCard
Type selection with visual cards.
from design_system import TypeSelector, TypeOptionCard
selector = TypeSelector()
selector.add_type(TypeOptionCard(
type_id="text",
title="Text Document",
description="Import text files",
icon="mdi6.file-document"
))
selector.add_type(TypeOptionCard(
type_id="audio",
title="Audio File",
description="Import audio recordings",
icon="mdi6.microphone"
))
selector.type_selected.connect(lambda type_id: handle_selection(type_id))
TypeOptionCard Properties
| Property |
Type |
Default |
Description |
type_id |
str |
required |
Unique identifier |
title |
str |
required |
Card title |
description |
str |
"" |
Card description |
icon |
str |
None |
Icon name |
TypeSelector Signals
| Signal |
Description |
type_selected(type_id) |
Type selected |
ColorSchemeSelector
Color scheme picker for visualizations.
from design_system import ColorSchemeSelector, ColorSchemeOption
selector = ColorSchemeSelector()
selector.add_scheme(ColorSchemeOption(
name="primary",
colors=["#3B82F6", "#60A5FA", "#93C5FD"]
))
selector.add_scheme(ColorSchemeOption(
name="success",
colors=["#22C55E", "#4ADE80", "#86EFAC"]
))
selector.scheme_selected.connect(lambda name: apply_scheme(name))
ColorSchemeOption Properties
| Property |
Type |
Description |
name |
str |
Scheme identifier |
colors |
list |
List of hex colors |
ColorSchemeSelector Signals
| Signal |
Description |
scheme_selected(name) |
Scheme selected |
ChartTypeSelector
Chart type picker for data visualization.
from design_system import ChartTypeSelector
selector = ChartTypeSelector()
# Includes options: bar, line, pie, scatter
selector.type_selected.connect(lambda chart_type: update_chart(chart_type))
ChartTypeSelector Signals
| Signal |
Description |
type_selected(chart_type) |
Chart type selected |
RadioCardGroup / RadioCard
Radio button selection with card layout.
from design_system import RadioCardGroup, RadioCard
group = RadioCardGroup()
group.add_card(RadioCard(
value="option1",
title="Option 1",
description="Description for option 1"
))
group.add_card(RadioCard(
value="option2",
title="Option 2",
description="Description for option 2"
))
group.value_changed.connect(lambda value: print(f"Selected: {value}"))
RadioCard Properties
| Property |
Type |
Default |
Description |
value |
str |
required |
Option value |
title |
str |
required |
Card title |
description |
str |
"" |
Card description |
RadioCardGroup Signals
| Signal |
Description |
value_changed(value) |
Selection changed |
Picker Example
File import type selector:
from design_system import (
Modal, ModalHeader, TypeSelector, TypeOptionCard,
Button
)
class ImportTypeDialog(Modal):
def __init__(self, parent=None):
super().__init__(parent, size="lg")
self.set_header(ModalHeader(title="Select Import Type"))
# Type selector
self.selector = TypeSelector()
self.selector.add_type(TypeOptionCard(
type_id="text",
title="Text Documents",
description="Import .txt, .docx, .rtf files",
icon="mdi6.file-document"
))
self.selector.add_type(TypeOptionCard(
type_id="audio",
title="Audio Files",
description="Import .mp3, .wav, .m4a files",
icon="mdi6.microphone"
))
self.selector.add_type(TypeOptionCard(
type_id="video",
title="Video Files",
description="Import .mp4, .mov, .avi files",
icon="mdi6.video"
))
self.selector.add_type(TypeOptionCard(
type_id="pdf",
title="PDF Documents",
description="Import .pdf files",
icon="mdi6.file-pdf-box"
))
self.selector.add_type(TypeOptionCard(
type_id="image",
title="Images",
description="Import .jpg, .png, .gif files",
icon="mdi6.image"
))
self.body.addWidget(self.selector)
self.selected_type = None
self.selector.type_selected.connect(self.on_type_selected)
# Buttons
self.add_button("Cancel", variant="outline", on_click=self.reject)
self.add_button("Continue", variant="primary", on_click=self.accept)
def on_type_selected(self, type_id):
self.selected_type = type_id
def get_selected_type(self):
return self.selected_type