Modern dashboard components for Dash applications
Project description
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 layoutcreate_sidebar()- Configurable sidebar with navigationcreate_header()- Two-tier header with search and actions
Table Components
Table()- Modern table using HandsontableTableWithStats()- Table with count header
UI Components
PrimaryButton()- Primary action buttonsSecondaryButton()- 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
- Bump version in
src/dashkit_table/pyproject.toml - 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 - Tag and push:
git tag dashkit_table-vX.Y.Z && git push origin dashkit_table-vX.Y.Z
- Bump version in
- dashkit_kiboui
- Bump version in
src/dashkit_kiboui/pyproject.toml - Commit and push
- Tag and push:
git tag dashkit_kiboui-vX.Y.Z && git push origin dashkit_kiboui-vX.Y.Z
- Bump version in
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.Zis also supported
- Legacy form
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_dispatchwithtag_nameif you need to re-run
Notes
- If
src/dashkit_tableis ignored in.gitignore, usegit add -for 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dash_dashkit-1.4.0.tar.gz.
File metadata
- Download URL: dash_dashkit-1.4.0.tar.gz
- Upload date:
- Size: 37.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4994d50728dec2d27f0ac99919619ce36c44ba0d587cc0ba4e07b224ee58a4d5
|
|
| MD5 |
ccd45328cde0295aeb3986149bb866c5
|
|
| BLAKE2b-256 |
237aa6dbc1e9f8a228060e020331516a7c48bcdc49460461d0a992aa21ecc0c6
|
File details
Details for the file dash_dashkit-1.4.0-py3-none-any.whl.
File metadata
- Download URL: dash_dashkit-1.4.0-py3-none-any.whl
- Upload date:
- Size: 40.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0b2219620cb0f1f90ddcc4f1e804eb2e1d4e75f488c4fce3b778d27208ea4f1
|
|
| MD5 |
1bd396a970a6d1d8a9b3a27837bc4d56
|
|
| BLAKE2b-256 |
ea1f5d2610f9b5e6f82c478a6f711dcc873056f404cf4dd3384f64ae8fca7b61
|