Skip to main content

MUI X components for Streamlit, built with Components v2. Includes DatePicker, TimePicker, and DateTimePicker.

Project description

st-mui

MUI X components for Streamlit, built with Components v2

PyPI version Downloads Python ≥3.10 License
Open in Streamlit


Components

Component Description License Streamlit equivalent
time_picker Clock UI, AM/PM toggle, min/max bounds MIT st.time_input
date_time_picker Combined date + time, AM/PM toggle, calendar popover MIT st.datetime_input
date_picker Calendar popover with format control MIT st.date_input
date_range_picker Date range selection with dual calendars Pro* st.date_input (range mode)
date_time_range_picker Datetime range with start/end time selection Pro* --
tree_view Hierarchical tree with checkboxes and multi-select MIT --

*Pro components work in evaluation mode without a license key (watermark shown). Set ST_MUI_LICENSE_KEY env var or pass license_key= to remove it.

Installation

uv add st-mui

or with pip:

pip install st-mui

Quick start

import streamlit as st
from datetime import time, datetime, date, timedelta
from st_mui import (
    time_picker, date_time_picker, date_picker,
    date_range_picker, date_time_range_picker,
    tree_view,
)

t = time_picker(label="Pick a time", value=time(9, 30), ampm=True, key="my_time")

dt = date_time_picker(label="Select date & time", value=datetime.now(), key="my_datetime")

d = date_picker(label="Pick a date", value=date.today(), key="my_date")

start, end = date_range_picker(
    label="Trip dates",
    value=(date.today(), date.today() + timedelta(days=7)),
    key="my_range",
)

start_dt, end_dt = date_time_range_picker(
    label="Event",
    value=(datetime.now(), datetime.now() + timedelta(hours=2)),
    key="my_dt_range",
)

selected = tree_view(
    items=[
        {"id": "docs", "label": "Documents", "children": [
            {"id": "resume", "label": "Resume.pdf"},
        ]},
        {"id": "photos", "label": "Photos"},
    ],
    checkbox_selection=True,
    multi_select=True,
    key="my_tree",
)

API

time_picker

time_picker(
    label="Select a time",
    value=None,           # time object or HH:MM string
    ampm=True,            # 12-hour vs 24-hour
    min_time=None,
    max_time=None,
    disabled=False,
    on_change=None,
    key=None,
) -> time | None

date_time_picker

date_time_picker(
    label="Select date & time",
    value=None,           # datetime object or ISO string
    min_datetime=None,
    max_datetime=None,
    ampm=True,
    disabled=False,
    on_change=None,
    key=None,
) -> datetime | None

date_picker

date_picker(
    label="Select a date",
    value=None,           # date object or YYYY-MM-DD string
    min_date=None,
    max_date=None,
    format="MM/DD/YYYY",  # MUI format tokens
    disabled=False,
    on_change=None,
    key=None,
) -> date | None

date_range_picker (Pro)

date_range_picker(
    label="Select date range",
    value=None,           # tuple of (date, date) or (str, str)
    min_date=None,
    max_date=None,
    calendars=2,          # 1 or 2 calendar panels
    disabled=False,
    license_key=None,     # or set ST_MUI_LICENSE_KEY env var
    on_change=None,
    key=None,
) -> tuple[date | None, date | None]

date_time_range_picker (Pro)

date_time_range_picker(
    label="Select date & time range",
    value=None,           # tuple of (datetime, datetime) or (str, str)
    min_datetime=None,
    max_datetime=None,
    ampm=True,
    disabled=False,
    license_key=None,     # or set ST_MUI_LICENSE_KEY env var
    on_change=None,
    key=None,
) -> tuple[datetime | None, datetime | None]

tree_view

tree_view(
    items=None,           # list of {"id", "label", "children": [...]}
    label=None,
    multi_select=False,
    checkbox_selection=True,
    default_expanded=None,
    default_selected=None,
    disabled=False,
    on_change=None,
    key=None,
) -> list[str]  # selected item IDs

MUI X Pro license

The date_range_picker and date_time_range_picker use MUI X Pro components. They work in evaluation mode without a license key (a watermark is displayed). To remove the watermark:

# Set as environment variable (recommended)
export ST_MUI_LICENSE_KEY="your-license-key"

Or pass directly:

date_range_picker(label="Dates", license_key="your-license-key")

Running the example

pip install st-mui
streamlit run examples/showcase.py

Development

# Clone and install
git clone https://github.com/lperezmo/st-mui.git
cd st-mui
uv sync --dev

# Build frontend
cd st_mui/frontend
npm install
npm run build
cd ../..

# Run showcase
uv run streamlit run examples/showcase.py

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

st_mui-0.3.2.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

st_mui-0.3.2-py3-none-any.whl (2.4 MB view details)

Uploaded Python 3

File details

Details for the file st_mui-0.3.2.tar.gz.

File metadata

  • Download URL: st_mui-0.3.2.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for st_mui-0.3.2.tar.gz
Algorithm Hash digest
SHA256 48051d808077c738d5fbea8fb73edf6006f202d078d2d3d49ef8e881260a2291
MD5 f7de16d97a3adf1d7231b3010398d0aa
BLAKE2b-256 758719c9855bbc62706a8c34517ffd99b374a3f40fe20537880f87f56eba333b

See more details on using hashes here.

File details

Details for the file st_mui-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: st_mui-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for st_mui-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7871e7d8206ad6c6cd8a8e581d13d4c5418b24a6db0f30ad1368718824b674b
MD5 9957e56495091505b32df0549b8bf080
BLAKE2b-256 2a43f3aea6e3c80ff226fbb52013a3b931a12f7443ed39fb6f7abeb478ee425b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page