feat: Dashboard redesign, plan permissions, and help docs improvements

Major updates including:
- Customizable dashboard with drag-and-drop widget grid layout
- Plan-based feature locking for plugins and tasks
- Comprehensive help documentation updates across all pages
- Plugin seeding in deployment process for all tenants
- Permission synchronization system for subscription plans
- QuotaOverageModal component and enhanced UX flows

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-03 13:02:44 -05:00
parent 9444e26924
commit dcb14503a2
66 changed files with 7099 additions and 1467 deletions

View File

@@ -33,3 +33,96 @@ body {
width: 100%;
min-height: 100vh;
}
/* React Grid Layout Dashboard Styling */
.layout {
position: relative;
}
.widget-container {
height: 100%;
}
.widget-container > div {
height: 100%;
}
/* Drag handle styling */
.drag-handle {
cursor: grab;
}
.drag-handle:active {
cursor: grabbing;
}
/* React Grid Layout overrides */
.react-grid-item {
transition: all 200ms ease;
transition-property: left, top;
}
.react-grid-item.cssTransforms {
transition-property: transform;
}
.react-grid-item.resizing {
z-index: 1;
will-change: width, height;
}
.react-grid-item.react-draggable-dragging {
transition: none;
z-index: 3;
will-change: transform;
}
.react-grid-item.dropping {
visibility: hidden;
}
.react-grid-item > .react-resizable-handle {
position: absolute;
width: 20px;
height: 20px;
}
.react-grid-item > .react-resizable-handle::after {
content: "";
position: absolute;
right: 3px;
bottom: 3px;
width: 6px;
height: 6px;
border-right: 2px solid rgba(0, 0, 0, 0.3);
border-bottom: 2px solid rgba(0, 0, 0, 0.3);
}
.dark .react-grid-item > .react-resizable-handle::after {
border-right-color: rgba(255, 255, 255, 0.3);
border-bottom-color: rgba(255, 255, 255, 0.3);
}
.react-resizable-handle-se {
bottom: 0;
right: 0;
cursor: se-resize;
}
.react-resizable-handle-sw {
bottom: 0;
left: 0;
cursor: sw-resize;
}
.react-resizable-handle-nw {
top: 0;
left: 0;
cursor: nw-resize;
}
.react-resizable-handle-ne {
top: 0;
right: 0;
cursor: ne-resize;
}