crushdataai 1.2.13 → 1.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/.agent/workflows/data-analyst.md +23 -0
- package/assets/.claude/skills/data-analyst/SKILL.md +48 -0
- package/assets/.cursor/commands/data-analyst.md +20 -0
- package/assets/.github/prompts/data-analyst.prompt.md +18 -0
- package/assets/.kiro/steering/data-analyst.md +18 -0
- package/assets/.windsurf/workflows/data-analyst.md +18 -0
- package/dist/connectors/cloud/index.d.ts +3 -1
- package/dist/connectors/cloud/index.js +34 -6
- package/dist/connectors/index.d.ts +1 -0
- package/dist/connectors/mysql/index.d.ts +1 -0
- package/dist/connectors/mysql/index.js +23 -0
- package/dist/connectors/postgresql/index.d.ts +1 -0
- package/dist/connectors/postgresql/index.js +16 -0
- package/dist/dashboard-server.d.ts +1 -0
- package/dist/dashboard-server.js +78 -0
- package/dist/index.js +17 -1
- package/dist/routes/dashboard.d.ts +2 -0
- package/dist/routes/dashboard.js +166 -0
- package/dist/services/query-executor.d.ts +5 -0
- package/dist/services/query-executor.js +80 -0
- package/dist/types/dashboard.d.ts +48 -0
- package/dist/types/dashboard.js +3 -0
- package/package.json +4 -3
- package/ui-dashboard-dist/assets/index-SkyAs8Zl.js +4185 -0
- package/ui-dashboard-dist/assets/index-uepFwkLY.css +1 -0
- package/ui-dashboard-dist/favicon.svg +13 -0
- package/ui-dashboard-dist/index.html +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.sidebar{width:280px;min-width:280px;background:linear-gradient(180deg,#141423fa,#0f0f19fc);border-right:1px solid rgba(99,102,241,.15);display:flex;flex-direction:column;height:100vh;overflow:hidden}.sidebar-header{display:flex;align-items:center;gap:.75rem;padding:1.5rem;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-header h2{margin:0;font-size:1rem;font-weight:600;color:#f3f4f6}.sidebar-icon{width:20px;height:20px;color:#818cf8}.sidebar-nav{flex:1;overflow-y:auto;padding:1rem}.sidebar-empty{color:#6b7280;font-size:.9rem;text-align:center;padding:2rem 1rem}.sidebar-item{width:100%;display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:transparent;border:1px solid transparent;border-radius:10px;cursor:pointer;transition:all .2s ease;text-align:left;margin-bottom:.5rem}.sidebar-item:hover{background:#6366f11a;border-color:#6366f133}.sidebar-item.active{background:#6366f126;border-color:#6366f14d}.sidebar-item .item-icon{width:18px;height:18px;color:#9ca3af;flex-shrink:0}.sidebar-item.active .item-icon{color:#818cf8}.item-content{display:flex;flex-direction:column;gap:.125rem;min-width:0}.item-title{font-size:.9rem;font-weight:500;color:#e5e7eb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-meta{font-size:.75rem;color:#6b7280}.kpi-card{background:linear-gradient(135deg,#1e1e2df2,#141423fa);border:1px solid rgba(99,102,241,.2);border-radius:16px;padding:1.5rem;min-width:180px;transition:all .3s ease;box-shadow:0 4px 20px #0000004d}.kpi-card:hover{border-color:#6366f166;box-shadow:0 8px 30px #6366f126;transform:translateY(-2px)}.kpi-label{font-size:.85rem;color:#9ca3af;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.5px}.kpi-value{font-size:2rem;font-weight:700;color:#f3f4f6;background:linear-gradient(135deg,#fff,#a5b4fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.kpi-trend{display:flex;align-items:center;gap:.25rem;font-size:.9rem;font-weight:500}.kpi-trend.positive{color:#22c55e}.kpi-trend.negative{color:#ef4444}.kpi-trend.neutral{color:#9ca3af}.trend-icon{width:16px;height:16px}.trend-icon.up{color:#22c55e}.trend-icon.down{color:#ef4444}.trend-icon.neutral{color:#9ca3af}.chart-card{background:linear-gradient(135deg,#1e1e2df2,#141423fa);border:1px solid rgba(99,102,241,.2);border-radius:16px;padding:1.5rem;transition:all .3s ease;box-shadow:0 4px 20px #0000004d}.chart-card:hover{border-color:#6366f166;box-shadow:0 8px 30px #6366f126;transform:translateY(-2px)}.chart-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:1rem}.chart-card-title-group{flex:1}.chart-card-title{font-size:1.1rem;font-weight:600;color:#f3f4f6;margin:0 0 .25rem}.chart-card-description{font-size:.85rem;color:#9ca3af;margin:0}.chart-refresh-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:#6366f126;border:1px solid rgba(99,102,241,.3);border-radius:8px;color:#818cf8;cursor:pointer;transition:all .2s ease}.chart-refresh-btn:hover{background:#6366f140;border-color:#6366f180;color:#a5b4fc}.chart-refresh-btn:active{transform:scale(.95)}.chart-card-body{min-height:300px;display:flex;align-items:center;justify-content:center}.chart-card-footer{margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.1)}.last-refreshed{font-size:.75rem;color:#6b7280}.chart-table{width:100%;overflow-x:auto}.chart-table table{width:100%;border-collapse:collapse;font-size:.875rem}.chart-table th,.chart-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.1)}.chart-table th{color:#9ca3af;font-weight:500;background:#0003}.chart-table td{color:#e5e7eb}.chart-table tr:hover td{background:#6366f11a}.chart-fallback .fallback-warning{color:#fbbf24;font-size:.85rem;margin-bottom:1rem;padding:.5rem 1rem;background:#fbbf241a;border-radius:8px;border:1px solid rgba(251,191,36,.2)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:4rem 2rem;min-height:60vh}.empty-state-icon{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#6366f133,#8b5cf633);display:flex;align-items:center;justify-content:center;margin-bottom:1.5rem}.empty-state-icon svg{width:40px;height:40px;color:#818cf8}.empty-state-title{font-size:1.5rem;font-weight:600;color:#f3f4f6;margin:0 0 .5rem}.empty-state-description{color:#9ca3af;font-size:1rem;margin:0 0 2rem;max-width:400px}.empty-state-steps{background:#1e1e2dcc;border:1px solid rgba(99,102,241,.2);border-radius:12px;padding:1.5rem 2rem;text-align:left;margin-bottom:1.5rem}.empty-state-steps p{color:#9ca3af;margin:0 0 .5rem;font-size:.9rem}.empty-state-steps ol{margin:0;padding-left:1.25rem;color:#d1d5db}.empty-state-steps li{margin:.25rem 0;font-size:.9rem}.empty-state-steps code{background:#6366f126;padding:.125rem .375rem;border-radius:4px;font-size:.85rem;color:#a5b4fc}.empty-state-hint{color:#6b7280;font-size:.85rem}.empty-state-hint code{background:#6366f126;padding:.25rem .5rem;border-radius:6px;color:#818cf8}*{box-sizing:border-box}:root{--bg-primary: #0f0f17;--bg-secondary: #1a1a2e;--border-color: rgba(99, 102, 241, .2);--text-primary: #f3f4f6;--text-secondary: #9ca3af;--accent: #6366f1;--accent-light: #818cf8}body{margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh}#root{min-height:100vh}.app{display:flex;min-height:100vh;background:radial-gradient(circle at 20% 20%,rgba(99,102,241,.08) 0%,transparent 50%),radial-gradient(circle at 80% 80%,rgba(139,92,246,.06) 0%,transparent 50%),var(--bg-primary)}.app-centered{justify-content:center;align-items:center}.main-content{flex:1;padding:2rem;overflow-y:auto;max-height:100vh}.dashboard-header{margin-bottom:2rem}.header-info{display:flex;flex-direction:column;gap:.5rem}.dashboard-title{font-size:2rem;font-weight:700;margin:0;background:linear-gradient(135deg,#fff,#a5b4fc);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dashboard-meta{display:flex;align-items:center;gap:1.5rem;color:var(--text-secondary)}.meta-item{display:flex;align-items:center;gap:.375rem;font-size:.875rem}.meta-item svg{width:14px;height:14px}.kpi-section{margin-bottom:2rem}.kpi-grid{display:flex;gap:1.25rem;flex-wrap:wrap}.charts-section{margin-bottom:2rem}.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));gap:1.5rem}@media (max-width: 1200px){.charts-grid{grid-template-columns:1fr}}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;width:100%;color:var(--text-secondary)}.loading-spinner{width:32px;height:32px;color:var(--accent-light);animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;width:100%;color:#ef4444}.chart-renderer{width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#0003}::-webkit-scrollbar-thumb{background:#6366f14d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#6366f180}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#6366f1"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#8b5cf6"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect width="32" height="32" rx="6" fill="url(#grad)"/>
|
|
9
|
+
<rect x="6" y="18" width="4" height="8" rx="1" fill="white" opacity="0.9"/>
|
|
10
|
+
<rect x="12" y="12" width="4" height="14" rx="1" fill="white" opacity="0.9"/>
|
|
11
|
+
<rect x="18" y="8" width="4" height="18" rx="1" fill="white" opacity="0.9"/>
|
|
12
|
+
<rect x="24" y="14" width="2" height="12" rx="1" fill="white" opacity="0.7"/>
|
|
13
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>CrushData AI Dashboard</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-SkyAs8Zl.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-uepFwkLY.css">
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div id="root"></div>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|