Skip to main content

Dashkit

Production-ready UI components for Dash applications with modern dashboard styling. All components are configurable and can be used across different projects.

Project Structure

dashkit/
├── src/
│   ├── dashkit/                   # Reusable components package
│   │   ├── __init__.py
│   │   ├── layout.py              # Main layout component
│   │   ├── sidebar.py             # Configurable sidebar
│   │   ├── header.py              # Configurable header
│   │   ├── table.py               # Dashkit-style tables
│   │   ├── buttons.py             # Button components
│   │   ├── logo.py                # Logo components
│   │   ├── navigation.py          # Navigation components
│   │   └── dashkit_table/         # Advanced table components
│   └── assets/
│       ├── style.css              # Compiled styles
│       └── input.css              # Tailwind source
├── run.py                         # Quick demo runner
└── pyproject.toml                 # Dependencies

Installation

pip install dash-dashkit
# Also ensure these dependencies are available (they install automatically):
# dashkit_table, dashkit_shadcn, dashkit_kiboui

Quick Start

Minimal app

from dash import Dash, html
import dashkit

app = Dash(__name__)
dashkit.setup_app(app)

rows = [{"name":"Alice","score":10},{"name":"Bob","score":20}]
cols = [{"data":"name","title":"Name"},{"data":"score","title":"Score"}]

app.layout = dashkit.create_layout(
    content=html.Div([
        html.H3("Example"),
        dashkit.Table(id="t", data=rows, columns=cols, height=240),
    ])
)

if __name__ == "__main__":
    app.run(debug=True)
  • Install core: pip install dash-dashkit
  • With table: pip install dash-dashkit[table]
  • With everything: pip install dash-dashkit[all]

Using Components in Your Project

from dashkit import create_layout, setup_app, Table

app = Dash(__name__)

# Configure app with dashkit styling (handles CSS and theme injection)
setup_app(app)

# Configure sidebar
sidebar_config = {
    "brand_name": "Your App",
    "brand_initial": "Y",
    "nav_items": [
        {"icon": "fas fa-home", "label": "Dashboard"},
    ],
    "sections": [
        {
            "title": "Records",
            "items": [
                {"type": "nav_item", "icon": "fas fa-users", "label": "Users"}
            ]
        }
    ]
}

# Configure header
header_config = {
    "page_title": "Dashboard",
    "page_icon": "📊",
    "actions": [
        {"type": "primary", "label": "New Item", "icon": "fas fa-plus"}
    ]
}

# Create your content
table = Table(id="my-table", data=your_data, columns=your_columns)

# Build the layout
app.layout = create_layout(
    content=table,
    sidebar_config=sidebar_config,
    header_config=header_config
)

Available Components

Layout Components

  • create_layout() - Main application layout
  • create_sidebar() - Configurable sidebar with navigation
  • create_header() - Two-tier header with search and actions

Table Components

  • Table() - Modern table using Handsontable
  • TableWithStats() - Table with count header

UI Components

  • PrimaryButton() - Primary action buttons
  • SecondaryButton() - Secondary action buttons

Features

  • ✅ Fully configurable components
  • ✅ Modern dashboard design system
  • ✅ TypeScript support for tables
  • ✅ Modern Handsontable v16.0.1 integration
  • ✅ Responsive layout
  • ✅ Font Awesome icons
  • ✅ Inter font typography
  • ✅ Clean, linted code (ruff + basedpyright)

Development

Available Tasks

This project uses taskipy for common development tasks:

# Complete setup (install npm deps, build table component, install Python package)
uv run task setup

# Build only the table component
uv run task build-table

# Install only the table component
uv run task install-table

# Run linting and formatting
uv run task lint

# Run type checking
uv run task typecheck

# Run both linting and type checking
uv run task check

# Start the development server
uv run task dev

Manual Development Commands

# Run linting
ruff check .
ruff format .

# Run type checking
basedpyright src

# Build CSS (if modified)
npx tailwindcss -i src/assets/input.css -o src/assets/style.css --watch

# Manual table component build
cd src/dashkit_table
npm install
npm run build
uv pip install -e .

Releasing (manual tags)

Releases are driven by tags. Publishing runs in CI and a smoke test validates PyPI install.

Prerequisites:

  • GitHub Actions secret: PYPI_API_TOKEN (PyPI API token with upload permission)

Subpackages

  • dashkit_table
    1. Bump version in src/dashkit_table/pyproject.toml
    2. Commit and push (if ignored, force add): git add -f src/dashkit_table/pyproject.toml && git commit -m "release(table): X.Y.Z" && git push
    3. Tag and push: git tag dashkit_table-vX.Y.Z && git push origin dashkit_table-vX.Y.Z
  • dashkit_kiboui
    1. Bump version in src/dashkit_kiboui/pyproject.toml
    2. Commit and push
    3. Tag and push: git tag dashkit_kiboui-vX.Y.Z && git push origin dashkit_kiboui-vX.Y.Z

Main package (dash-dashkit)

  • Bump version in pyproject.toml (update subpackage minimums as needed)
  • Commit and push
  • Tag and push: git tag dashkit-vX.Y.Z && git push origin dashkit-vX.Y.Z
    • Legacy form vX.Y.Z is also supported

CI workflows

  • Publish: builds the package for the matching tag and uploads to PyPI
  • Smoke: installs the just-published version in a clean venv and imports/instantiates components
  • Manual fallback: both workflows support workflow_dispatch with tag_name if you need to re-run

Notes

  • If src/dashkit_table is ignored in .gitignore, use git add -f or remove the ignore entry
  • Tag patterns must match exactly as above (component-vX.Y.Z)

Configuration Examples

See src/dashkit_demo/app.py for complete configuration examples including:

  • Sidebar navigation structure
  • Header actions and filters
  • Table data formatting
  • Component styling options

Metadata

Release files for dash-dashkit 1.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dash-dashkit 1.5.0
File Size Uploaded
dash_dashkit-1.5.0.tar.gz 38.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-dashkit 1.5.0
File Interpreter ABI Platform
dash_dashkit-1.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 78.5 kB

Release files / dash_dashkit-1.5.0.tar.gz

Download URL dash_dashkit-1.5.0.tar.gz
Size 38.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5065ea4a127a5571c6f8ec234829d6794c37a408c0df721b2265a01c284cd288
BLAKE2b-256 checksum
How to use checksums
1233ce6beb2bbbf0957ee18f2a010e50bb74632cceaecf5170142882ce6f4c10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / dash_dashkit-1.5.0-py3-none-any.whl

Download URL dash_dashkit-1.5.0-py3-none-any.whl
Size 40.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c3c58c7dbe020c996a05657ef7fef311cbd39550ec85a20338e7c7872f6dea3e
BLAKE2b-256 checksum
How to use checksums
5aca64b0e80f227a53403d3572fe88140a2ebb21184bf69a8f2ace72896dea82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

1.5.0 This release

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page