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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| dash_dashkit-1.5.0.tar.gz | 38.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|