Dash-Widgetbot, Dash-Mui-Charts, Dash-Flows v1.2 - Significant updates & new components across Pip-Install-Python.com component ecosystem

:rocket: What’s New at Pip Install Python: Discord Chat in Dash, Live Trading Charts & Dash Flows v1.2.0

Hey Plotly Community! :waving_hand:

Excited to share three significant updates across the Pip Install Python component ecosystem — each one documented with live, interactive examples at pip-install-python.com.


:speech_balloon: dash-widgetbot — Discord Chat Embedded Directly in Your Dash App

Your community, inside your app — no redirects, no iframes you manage yourself.

dash-widgetbot wraps WidgetBot to embed a fully functional Discord channel inside any Dash application. It goes far beyond a basic embed — the library ships a complete bot bridge that lets you handle Discord slash commands from Python callbacks, stream AI responses back to Discord, and sync user events to your Dash layout in real time.

dash-widgetbot

:sparkles: Key Features

  • Global Crate widget — floating Discord button on every page, one line of setup
  • Slash command handlers/ask, /ai, /gen, /status, /navigate all dispatched as Python callbacks
  • Crate text bridge — intercept free-text messages and route them to your own logic
  • AI bot integration — stream LLM responses back into Discord from a /api/bot-bridge-prompt endpoint
  • Event propssignedIn, message, sentMessage, unreadCount all available as Dash Output props
  • Full Dash callback support — every interaction is a standard @callback

:package: Installation

pip install dash-widgetbot

:high_voltage: Quick Setup — Global Crate on Every Page

Critical: add_discord_crate() and add_discord_interactions() must be called before Dash().

from dash_widgetbot import add_discord_crate, add_discord_interactions

# Must come BEFORE Dash()
add_discord_crate(
    server="1246197743307980940",
    channel="1449848984981213385",
)
add_discord_interactions()

app = dash.Dash(__name__, use_pages=True)

:robot: Handling Slash Commands from Python

from dash_widgetbot import add_crate_slash_command

@add_crate_slash_command("ask")
def handle_ask(user, args):
    # args is the text the user typed after /ask
    return f"You asked: {args}"

:link: Documentation & Examples

View Full Documentation →


:chart_increasing: dash-mui-charts v1.1.0 — LiveTradingChart, Built-in Date Formatting & Smarter Alerts

Professional MUI X Charts for Dash — now with real-time candlestick streaming.

dash-mui-charts wraps MUI X Charts for Python developers. Version 1.1.0 ships three major additions: a brand-new LiveTradingChart component, built-in date formatting props for time-scale axes, and swing-point alert detection that eliminates label clutter.

:sparkles: What’s New in v1.1.0

:candle: LiveTradingChart — Real-Time OHLCV Streaming

dash-mui-charts

A self-contained candlestick chart that simulates (or can be wired to real) live market data:

  • OHLCV candlestick bars with volume histogram
  • Forward forecast line with uncertainty shading
  • Swing-point alert labels — only fires at confirmed local highs and lows, not on random candles
  • All simulation parameters controllable at runtime via callbacks (volatility, drift, windowSize, intervalMs)
  • Functions-as-props for custom label formatting and custom alert detection logic
from dash_mui_charts import LiveTradingChart

LiveTradingChart(
    id="my-chart",
    running=True,
    intervalMs=200,          # tick speed
    windowSize=80,           # visible candles
    volatility=0.02,
    drift=0.001,
    # Swing-point detection — labels only at confirmed extremes
    alertLookback=5,         # neighbors on each side to confirm
    alertMinDistance=10,     # min ticks between labels
    maxVisibleAlerts=6,      # cap visible labels in the window
    alertFormatter={
        "function": "priceAlertFormatter",
        "options": {"decimals": 2},
    },
    showVolume=True,
    showSlider=True,         # zoom slider (Pro)
    height=500,
)

:date: Built-in Date Formatting — No JavaScript Required

Previously, formatting time-scale axis labels required writing a JavaScript valueFormatter. v1.1.0 adds dateFormat (tooltip) and dateTickFormat (axis ticks) as plain Python strings:

LineChart(
    xAxis=[{
        "data":           epoch_ms_timestamps,
        "scaleType":      "time",
        "dateFormat":     "MMM d, YYYY",   # tooltip: "Apr 8, 2026"
        "dateTickFormat": "M/d",            # tick:    "4/8"
        "tickMinStep":    86400 * 1000 * 7, # weekly ticks
        "tickLabelStyle": {"angle": 35, "fontSize": 11, "textAnchor": "start"},
        "height":         70,
    }],
    margin={"left": 65, "right": 20, "top": 20, "bottom": 90},
)

Supported tokens: YYYY, MMM, MM, M, dd, d, HH, mm

:wrench: Functions-as-Props Pattern

The same pattern Dash Mantine Components uses for JS-bridged functions is now available across all chart components. Register a function once in assets/muiChartsFunctions.js, reference it from Python:

# Python
alertFilter={"function": "swingAlertFilter", "options": {"lookback": 7}}
// assets/muiChartsFunctions.js
window.dashMuiChartsFunctions.swingAlertFilter = function(candles, idx, ctx, opts) {
    // full candle buffer available — return 'up', 'down', or null
};

:package: Installation

pip install dash-mui-charts==1.1.0

:link: Documentation & Examples

View Full Documentation →


:ocean: dash-flows v1.2.0 — Collapsible Groups, Smart Handles, Undo/Redo & More

The most feature-packed dash-flows release yet.

demo-flows-1.2

Dash Flows (React Flow for Dash) v1.2.0 ships eleven new capabilities. All are now documented with live, interactive examples.

:sparkles: New in v1.2.0

Feature Prop Description
Collapsible Groups toggleCollapseNode, collapsedGroups Double-click a group node to collapse/expand child nodes
Smart Handles smartHandles=True Edges auto-route to the closest side of each node
Floating Edges Edge type: "floating" Edges attach to node perimeters, not fixed handles
Helper Lines helperLines=True Alignment guides appear while dragging
Undo / Redo enableUndoRedo=True, undoRedoAction Full history tracking with undo/redo callbacks
Add Node on Drop addNodeOnEdgeDrop=True Drag an edge to empty canvas to create a new node
Animated Layouts animateLayout=True Smooth transitions between ELK layout changes
Computing Flows computeAction, computeResult Topological sort and data propagation through nodes
Resize Constraints Per-node resizeOptions Aspect ratio lock, min/max dimensions on resizable nodes
Accessibility ariaLabelConfig, nodesFocusable Screen reader labels and full keyboard navigation
Viewport Portal viewportOverlays Floating annotations anchored to flow coordinates

:fire: Highlight: Collapsible Group Nodes

Group nodes can now collapse to a compact size, hiding child nodes while keeping external edges connected at the group boundary:

import dash_flows
from dash import callback, Input, Output, no_update

nodes = [
    {
        "id": "pipeline",
        "type": "group",
        "data": {"label": "ETL Pipeline", "collapsedWidth": 200, "collapsedHeight": 52},
        "position": {"x": 250, "y": 50},
        "style": {"width": 350, "height": 250},
    },
    # Child nodes with parentId set
    {"id": "extract",   "parentId": "pipeline", "extent": "parent", ...},
    {"id": "transform", "parentId": "pipeline", "extent": "parent", ...},
]

# Double-click a group → collapse/expand
@callback(
    Output("my-flow", "toggleCollapseNode"),
    Input("my-flow", "doubleClickedNode"),
    prevent_initial_call=True,
)
def toggle_group(node):
    if node and node.get("type") == "group":
        return node["id"]
    return no_update

:fire: Highlight: Undo / Redo

from dash import callback, Input, Output

dash_flows.DashFlows(
    id="my-flow",
    enableUndoRedo=True,
    undoRedoMaxHistory=50,
    # undoRedoState output: {canUndo, canRedo, undoCount, redoCount}
)

@callback(
    Output("my-flow", "undoRedoAction"),
    Input("undo-btn", "n_clicks"),
    Input("redo-btn", "n_clicks"),
    prevent_initial_call=True,
)
def handle_undo_redo(_, __):
    from dash import ctx
    return {"action": "undo" if ctx.triggered_id == "undo-btn" else "redo"}

:package: Installation

pip install dash-flows

:link: Documentation & Examples

View Full Documentation →


:books: Full Documentation

Everything shown above has live, interactive examples at pip-install-python.com — copy the code, see it run, explore the props.

All components are:

:white_check_mark: Production-ready — stable, versioned, on PyPI
:white_check_mark: Fully documented — API reference + working examples
:white_check_mark: Theme-aware — light/dark mode via Dash Mantine Components
:white_check_mark: Callback-enabled — standard Dash @callback patterns throughout
:white_check_mark: Open source — MIT license, GitHub issues welcome


:link: Useful Links


:speech_balloon: Questions & Feedback

Join the discord channel - 2plot.ai

Building something with any of these? Would love to see what you create.

  • :bug: Found a bug? Open an issue on GitHub
  • :light_bulb: Have a feature idea? Start a discussion
  • :star: If these save you time, a star on the repo goes a long way
  • :red_question_mark: Questions? Drop them right here in the thread

Happy building! :rocket:


Made with :heart: by Pip Install Python LLC

4 Likes

Follow up on a new dash-mui-charts==1.2.1

More comprehensive documentation and examples:

1.2.1 - 2026-04-11

Fixed

  • TreeView editableItems prop not working: isItemEditable defaulted to false (a boolean), causing typeof isItemEditable === 'boolean' to short-circuit before checking the
  • editableItems array. Changed to isItemEditable === true so per-item editing via editableItems works correctly.
  • SimpleTreeView React 18 defaultProps warning: Replaced Component.defaultProps with JavaScript default parameters in the function signature.
  • TreeView edit input dark mode: Added CSS overrides for .MuiTreeItem-labelInput input fields — dark background, white text, and blue focus underline in dark mode.

Added

  • Per-item icons in SimpleTreeView: Items now support an icon field (string) resolved via iconResolver. Renders inline MUI icon (18px, 0.7 opacity) next to the label.
  • 30+ new MUI icons in iconResolver.js: ShowChart, BarChart, PieChart, ScatterPlot, GridOn, CandlestickChart, Timeline, TrendingUp, Layers, AccountTree, Brush, Highlight, Sync, ZoomIn, TouchApp, TableChart, StackedBarChart, Palette, Rule, Mouse, CheckBox, UnfoldMore, Block, Diamond, AutoGraph, ViewList, GpsFixed, Speed, Star, PlayArrow, Tune, History.
  • Changelog page: /changelog renders CHANGELOG.md via dcc.Markdown with styled tables and dark mode support.

Changed

  • Navigation tree: Reordered (Home, Changelog, SparklineChart, PieChart, BarChart, Heatmap, ScatterChart, LineChart, CandlestickChart, LiveTradingChart, CompositeChart, TreeView). All items have unique MUI icons. Groups start collapsed. itemChildrenIndentation reduced to 8px.
  • Tree state persistence: Expanded groups saved to localStorage via clientside callback, restored on page load via dash_clientside.set_props. No circular dependency.
  • SPA navigation: Tree selection uses dcc.Location(refresh="callback-nav") — page content swaps without full reload, preserving tree state.

1.2.0 - 2026-04-10

Added

BarChart Component (New)

  • Vertical & Horizontal Bars: layout='vertical' (default) or layout='horizontal'
  • Multi-Series: Multiple data series with individual colors side by side
  • Stacking: stack group ID on series, with stackOffset (‘none’, ‘expand’, ‘diverging’) and stackOrder (‘none’, ‘appearance’, ‘ascending’, ‘descending’, ‘reverse’)
  • Bar Labels: barLabel='value' with barLabelPlacement (‘center’ or ‘outside’)
  • Border Radius: Rounded bar corners via borderRadius prop
  • Dataset Mode: dataset + dataKey pattern for table-format data (no duplication)
  • Bar Spacing: categoryGapRatio and barGapRatio on band axis for gap control
  • Reference Lines: Horizontal (y) and vertical (x) markers for targets, thresholds
  • Axis Highlight: Configurable axisHighlight with ‘band’, ‘line’, or ‘none’
  • Tooltip Modes: tooltip={'trigger': 'axis'} or tooltip={'trigger': 'item'}
  • Highlighting: highlightedItem prop (controlled, bidirectional) with per-series highlightScope
  • Custom Colors: colors palette prop for series color override
  • Batch Renderer: renderer='svg-batch' for large dataset performance
  • Click Events: clickData (bar click) and axisClickData (axis area click) output props
  • Pro Features (require licenseKey):
    • initialZoom + showSlider for zoom with range slider
    • showToolbar for zoom/export toolbar
    • brushConfig for brush selection
    • zoomInteractionConfig for pan/wheel/pinch behaviors
    • zoomData output prop for zoom state callbacks

CandlestickChart Component (New)

  • OHLC Candlestick Rendering: Custom SVG candles (body + wicks) built on MUI X Charts Pro composition API
  • Array Format: series=[{data: [[open,high,low,close], ...], upColor, downColor}]
  • Dataset Format: dataset + series=[{datasetKeys: {open, high, low, close}}]
  • Volume Overlay: Optional volume bars below candles via showVolume=True with volumeKey or volume array
  • Candle Styling: bodyWidthRatio (0-1) and wickWidth (px) for custom candle appearance
  • OHLC Tooltip: Built-in hover tooltip showing Open, High, Low, Close values
  • Reference Lines: Support/resistance lines, moving averages markers
  • Click Events: clickData with {dataIndex, label, open, high, low, close, timestamp}
  • Auto Y-Axis Domain: Automatically computes min/max from OHLC data with 5% padding
  • Grid Support: grid={'horizontal': True, 'vertical': True}
  • Pro Features: Zoom, slider, toolbar (via composition API)
  • No Premium Dependency: Works with existing @mui/x-charts-pro v8.24.0 (no @mui/x-charts-premium required)

Demo Pages (7 New)

  • /barchart-basic — Multi-series, stacked, horizontal, bar labels, rounded corners, negative values
  • /barchart-dataset — Dataset mode with dataKey, bar/category gap control
  • /barchart-stacking — Stack offsets (none, expand, diverging), multiple stack groups, horizontal stacked
  • /barchart-interaction — Click events, axis click, highlighting, axis highlight modes, tooltip triggers
  • /barchart-reference — Target lines, min/avg/max refs, vertical refs, animation, legend, color palette
  • /barchart-pro — Zoom+slider, toolbar, stacked zoom (Pro features)
  • /candlestick — Array format, dataset mode, volume overlay, styling, support/resistance lines, click events

Application UI/UX Redesign

  • DMC AppShell Layout: Replaced flat blue top-bar with dmc.AppShell (header + sidebar navbar + main content area)
  • Sidebar Tree Navigation: SimpleTreeView organizes all 37 demo pages into 11 component groups with expand/collapse
  • Dark/Light Mode: dmc.ColorSchemeToggle (DMC 2.6.1) with dmc.pre_render_color_scheme() to prevent theme flash on load
  • MUI Charts Dark Mode: Global CSS overrides for axis labels, tick marks, grid lines, legend labels, tooltips, bar labels, and reference lines — all auto-switch via [data-mantine-color-scheme="dark"]
  • Theme-Aware Loading Screen: Animated liquid-blob splash screen with 2plot logo, swaps between light/dark assets based on saved preference (localStorage)
  • Page Loading Overlay: /composite-render-bp uses deferred content loading via callback with dmc.LoadingOverlay — shows logo + blur overlay while heavy chart sections build server-side
  • Home Page Redesign: Responsive 3-column component card grid with dmc.Paper, dmc.Badge, dmc.CodeHighlight for installation and usage examples

Changed

  • CompositeChart: Custom tooltip components (MuiAxisTooltip, ExternalAxisTooltip) now use Mantine CSS variables (--mantine-color-body, --mantine-color-text, --mantine-color-default-border) instead of hardcoded white/#e0e0e0 — tooltips auto-adapt to dark mode
  • SimpleTreeView: Replaced Component.defaultProps with JavaScript default parameters to eliminate React 18 deprecation warning
  • Composite Render BP page: Deferred chart section building to a callback (from static layout) for instant page load with loading overlay
  • Updated component count from 7 to 9
  • src/lib/index.js exports BarChart and CandlestickChart
  • Auto-generated Python wrappers for both components via dash-generate-components
  • Upgraded dash-mantine-components from >=1.0.0 to >=2.6.0 in requirements.txt
  • All demo pages updated with Mantine CSS variables for dark mode support (card backgrounds, text colors, code blocks, tooltips, borders)
  • Pages with dmc.MantineProvider wrappers (8 files) unwrapped — single root provider in app.py

Fixed

  • Legend labels not switching in dark mode: Added CSS selectors for .MuiChartsLegend-label and .MuiChartsLabel-root (HTML span elements used by MUI X Charts v8)
  • Custom tooltip dark mode in crosshair, highlighting sync, composite, and composite render pages — replaced hardcoded white/#333/#e0e0e0 with theme-adaptive CSS variables
  • Highlighting demo: Per-Series Highlight Scope example now uses 3 series with distinct highlightScope configs to clearly demonstrate series vs item highlight and global vs none fade behaviors
  • Circular dependency: Replaced server-side nav callbacks with clientside window.location navigation to break url.pathname ↔ nav-tree.selectedItems cycle