Introduced GPT/AI service, added dashboard widgets, drag and drop, export import.

This commit is contained in:
2025-11-09 23:56:13 +01:00
parent 8e98f5ad7d
commit 7921049f56
36 changed files with 3498 additions and 403 deletions

View File

@@ -87,3 +87,79 @@
transform: rotate(360deg);
}
}
/* React Grid Layout Overrides */
.react-grid-layout {
position: relative;
}
.react-grid-item {
transition: all 200ms ease;
transition-property: left, top, width, height;
}
.react-grid-item img {
pointer-events: none;
user-select: none;
}
.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: 5px;
height: 5px;
border-right: 2px solid hsl(var(--bc) / 0.4);
border-bottom: 2px solid hsl(var(--bc) / 0.4);
}
.react-resizable-hide > .react-resizable-handle {
display: none;
}
.react-grid-item > .react-resizable-handle.react-resizable-handle-se {
bottom: 0;
right: 0;
cursor: se-resize;
}
.react-grid-item.resizing {
transition: none;
z-index: 100;
will-change: width, height;
}
.react-grid-item.react-draggable-dragging {
transition: none;
z-index: 100;
will-change: transform;
}
.react-grid-item.dropping {
visibility: hidden;
}
.react-grid-item.react-grid-placeholder {
background: hsl(var(--p) / 0.2);
opacity: 0.2;
transition-duration: 100ms;
z-index: 2;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
border-radius: 0.5rem;
}
.react-grid-item > .react-resizable-handle::after {
border-right: 2px solid hsl(var(--p));
border-bottom: 2px solid hsl(var(--p));
}