@burdenoff/microfe-bigconsole 2026.717.5 → 2026.727.2

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.
Files changed (29) hide show
  1. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js +23 -21
  2. package/dist/bigconsole/components/builder/inspector/AppearanceSection.js.map +1 -1
  3. package/dist/bigconsole/components/widgets/PropertiesPanel.js +2 -2
  4. package/dist/bigconsole/components/widgets/PropertiesPanel.js.map +1 -1
  5. package/dist/bigconsole/components/widgets/WidgetRegistry.js +1 -0
  6. package/dist/bigconsole/components/widgets/WidgetRegistry.js.map +1 -1
  7. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js +14 -2
  8. package/dist/bigconsole/components/widgets/chart/charts/AreaChart.js.map +1 -1
  9. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js +14 -2
  10. package/dist/bigconsole/components/widgets/chart/charts/BarChart.js.map +1 -1
  11. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js +126 -0
  12. package/dist/bigconsole/components/widgets/heatmap/HeatmapConfig.js.map +1 -0
  13. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js +2 -2
  14. package/dist/bigconsole/components/widgets/heatmap/HeatmapWidget.js.map +1 -1
  15. package/dist/bigconsole/components/widgets/heatmap/index.js +2 -1
  16. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js +92 -0
  17. package/dist/bigconsole/customWidget/CustomWidgetBuilderSheet.js.map +1 -0
  18. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js +449 -0
  19. package/dist/bigconsole/customWidget/CustomWidgetProposalPanel.js.map +1 -0
  20. package/dist/bigconsole/customWidget/index.js +4 -0
  21. package/dist/bigconsole/customWidget/proposalContract.js +106 -0
  22. package/dist/bigconsole/customWidget/proposalContract.js.map +1 -0
  23. package/dist/bigconsole/customWidget/proposalSource.js +204 -0
  24. package/dist/bigconsole/customWidget/proposalSource.js.map +1 -0
  25. package/dist/bigconsole/pages/DashboardBuilderPage.js +159 -139
  26. package/dist/bigconsole/pages/DashboardBuilderPage.js.map +1 -1
  27. package/dist/bigconsole/pages/HomePage.js +47 -44
  28. package/dist/bigconsole/pages/HomePage.js.map +1 -1
  29. package/package.json +1 -1
@@ -8,24 +8,24 @@ import { useI18n as d } from "@burdenoff/fe-libs/shared/providers/shell/I18nProv
8
8
  import { AuroraBackground as f, Button as p, GlassCard as m, GradientText as h, IllustratedEmptyState as g, PagePurpose as _ } from "@burdenoff/fe-libs/ui";
9
9
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
10
10
  //#region src/bigconsole/pages/HomePage.tsx
11
- var b = l`
12
- query HomepageStats {
11
+ var b = "default", x = l`
12
+ query HomepageStats($globalConsoleId: ID!) {
13
13
  listDashboards(first: 0) {
14
14
  totalCount
15
15
  }
16
16
  listDataSinks(first: 0) {
17
17
  totalCount
18
18
  }
19
- listParsers {
20
- id
19
+ listParsers(filter: { consoleId: $globalConsoleId }, first: 0) {
20
+ totalCount
21
21
  }
22
- listPipelines {
23
- id
22
+ listPipelines(filter: { consoleId: $globalConsoleId }, first: 0) {
23
+ totalCount
24
24
  }
25
25
  }
26
- `, x = l`
26
+ `, S = l`
27
27
  query RecentDashboards {
28
- listDashboards(first: 5, sortBy: "updatedAt", sortOrder: "desc") {
28
+ listDashboards(first: 5, sortBy: UPDATED_AT, sortOrder: DESC) {
29
29
  edges {
30
30
  node {
31
31
  id
@@ -36,7 +36,7 @@ var b = l`
36
36
  }
37
37
  }
38
38
  }
39
- `, S = t(function({ icon: e, label: t, count: n, loading: r, path: i, onNavigate: a, hero: o = !1 }) {
39
+ `, C = t(function({ icon: e, label: t, count: n, loading: r, path: i, onNavigate: a, hero: o = !1 }) {
40
40
  return /* @__PURE__ */ v(m, {
41
41
  treatment: o ? "glass" : "metric",
42
42
  glow: o,
@@ -71,11 +71,14 @@ var b = l`
71
71
  })]
72
72
  })
73
73
  });
74
- }), C = t(function() {
75
- let t = e(), { t: l } = d(), C = n((e, t) => {
74
+ }), w = t(function() {
75
+ let t = e(), { t: l } = d(), w = n((e, t) => {
76
76
  let n = l(e);
77
77
  return n === e ? t : n;
78
- }, [l]), { data: w, loading: T } = u(b, { fetchPolicy: "cache-and-network" }), { data: E, loading: D } = u(x, { fetchPolicy: "cache-and-network" }), O = E?.listDashboards?.edges?.map((e) => e.node) || [];
78
+ }, [l]), { data: T, loading: E } = u(x, {
79
+ variables: { globalConsoleId: b },
80
+ fetchPolicy: "cache-and-network"
81
+ }), { data: D, loading: O } = u(S, { fetchPolicy: "cache-and-network" }), k = D?.listDashboards?.edges?.map((e) => e.node) || [];
79
82
  return /* @__PURE__ */ v("div", {
80
83
  style: {
81
84
  minHeight: "100vh",
@@ -106,13 +109,13 @@ var b = l`
106
109
  color: "var(--color-text-secondary)",
107
110
  marginTop: 4
108
111
  },
109
- children: C("bigconsole.home.subtitle", "AI-powered analytics platform")
112
+ children: w("bigconsole.home.subtitle", "AI-powered analytics platform")
110
113
  })
111
114
  ]
112
115
  }),
113
116
  /* @__PURE__ */ v(_, {
114
117
  className: "mb-[var(--space-sectionGap)]",
115
- children: C("bigconsole.home.purpose", "BigConsole is your analytics command center — build live dashboards, wire up data sinks and parsers, then automate it all with pipelines and workflows. Start from the quick actions below or jump back into a recent dashboard.")
118
+ children: w("bigconsole.home.purpose", "BigConsole is your analytics command center — build live dashboards, wire up data sinks and parsers, then automate it all with pipelines and workflows. Start from the quick actions below or jump back into a recent dashboard.")
116
119
  }),
117
120
  /* @__PURE__ */ y("div", {
118
121
  style: {
@@ -122,36 +125,36 @@ var b = l`
122
125
  marginBottom: "var(--space-sectionGap)"
123
126
  },
124
127
  children: [
125
- /* @__PURE__ */ v(S, {
128
+ /* @__PURE__ */ v(C, {
126
129
  hero: !0,
127
130
  icon: /* @__PURE__ */ v(s, { size: 20 }),
128
- label: C("bigconsole.home.stats.dashboards", "Dashboards"),
129
- count: w?.listDashboards?.totalCount,
130
- loading: T,
131
+ label: w("bigconsole.home.stats.dashboards", "Dashboards"),
132
+ count: T?.listDashboards?.totalCount,
133
+ loading: E,
131
134
  path: "/dashboards",
132
135
  onNavigate: t
133
136
  }),
134
- /* @__PURE__ */ v(S, {
137
+ /* @__PURE__ */ v(C, {
135
138
  icon: /* @__PURE__ */ v(i, { size: 20 }),
136
- label: C("bigconsole.home.stats.dataSinks", "Data Sinks"),
137
- count: w?.listDataSinks?.totalCount,
138
- loading: T,
139
+ label: w("bigconsole.home.stats.dataSinks", "Data Sinks"),
140
+ count: T?.listDataSinks?.totalCount,
141
+ loading: E,
139
142
  path: "/datasinks",
140
143
  onNavigate: t
141
144
  }),
142
- /* @__PURE__ */ v(S, {
145
+ /* @__PURE__ */ v(C, {
143
146
  icon: /* @__PURE__ */ v(a, { size: 20 }),
144
- label: C("bigconsole.home.stats.parsers", "Parsers"),
145
- count: w?.listParsers?.length,
146
- loading: T,
147
+ label: w("bigconsole.home.stats.parsers", "Parsers"),
148
+ count: T?.listParsers?.totalCount,
149
+ loading: E,
147
150
  path: "/parsers",
148
151
  onNavigate: t
149
152
  }),
150
- /* @__PURE__ */ v(S, {
153
+ /* @__PURE__ */ v(C, {
151
154
  icon: /* @__PURE__ */ v(o, { size: 20 }),
152
- label: C("bigconsole.home.stats.pipelines", "Pipelines"),
153
- count: w?.listPipelines?.length,
154
- loading: T,
155
+ label: w("bigconsole.home.stats.pipelines", "Pipelines"),
156
+ count: T?.listPipelines?.totalCount,
157
+ loading: E,
155
158
  path: "/pipelines",
156
159
  onNavigate: t
157
160
  })
@@ -166,7 +169,7 @@ var b = l`
166
169
  color: "var(--color-text-primary)",
167
170
  marginBottom: 12
168
171
  },
169
- children: C("bigconsole.home.quickActions.title", "Quick Actions")
172
+ children: w("bigconsole.home.quickActions.title", "Quick Actions")
170
173
  }), /* @__PURE__ */ v("div", {
171
174
  style: {
172
175
  display: "flex",
@@ -175,22 +178,22 @@ var b = l`
175
178
  },
176
179
  children: [
177
180
  {
178
- label: C("bigconsole.home.quickActions.newDashboard", "New Dashboard"),
181
+ label: w("bigconsole.home.quickActions.newDashboard", "New Dashboard"),
179
182
  path: "/dashboards",
180
183
  icon: /* @__PURE__ */ v(s, { size: 14 })
181
184
  },
182
185
  {
183
- label: C("bigconsole.home.quickActions.newDataSink", "New Data Sink"),
186
+ label: w("bigconsole.home.quickActions.newDataSink", "New Data Sink"),
184
187
  path: "/datasinks/new",
185
188
  icon: /* @__PURE__ */ v(i, { size: 14 })
186
189
  },
187
190
  {
188
- label: C("bigconsole.home.quickActions.newParser", "New Parser"),
191
+ label: w("bigconsole.home.quickActions.newParser", "New Parser"),
189
192
  path: "/parsers/new",
190
193
  icon: /* @__PURE__ */ v(a, { size: 14 })
191
194
  },
192
195
  {
193
- label: C("bigconsole.home.quickActions.newPipeline", "New Pipeline"),
196
+ label: w("bigconsole.home.quickActions.newPipeline", "New Pipeline"),
194
197
  path: "/pipelines/new",
195
198
  icon: /* @__PURE__ */ v(o, { size: 14 })
196
199
  }
@@ -229,7 +232,7 @@ var b = l`
229
232
  fontWeight: "var(--font-weight-semibold)",
230
233
  color: "var(--color-text-primary)"
231
234
  },
232
- children: C("bigconsole.home.recentDashboards.title", "Recent Dashboards")
235
+ children: w("bigconsole.home.recentDashboards.title", "Recent Dashboards")
233
236
  }), /* @__PURE__ */ y("button", {
234
237
  onClick: () => t("/dashboards"),
235
238
  style: {
@@ -245,12 +248,12 @@ var b = l`
245
248
  cursor: "pointer"
246
249
  },
247
250
  children: [
248
- C("bigconsole.home.recentDashboards.viewAll", "View all"),
251
+ w("bigconsole.home.recentDashboards.viewAll", "View all"),
249
252
  " ",
250
253
  /* @__PURE__ */ v(r, { size: 14 })
251
254
  ]
252
255
  })]
253
- }), D ? /* @__PURE__ */ v("div", {
256
+ }), O ? /* @__PURE__ */ v("div", {
254
257
  style: {
255
258
  textAlign: "center",
256
259
  padding: 24,
@@ -261,16 +264,16 @@ var b = l`
261
264
  className: "animate-spin",
262
265
  style: { margin: "0 auto" }
263
266
  })
264
- }) : O.length === 0 ? /* @__PURE__ */ v(m, {
267
+ }) : k.length === 0 ? /* @__PURE__ */ v(m, {
265
268
  treatment: "insight",
266
269
  className: "border-border-seam",
267
270
  children: /* @__PURE__ */ v(g, {
268
271
  illustration: "empty-data",
269
- title: C("bigconsole.home.recentDashboards.emptyTitle", "No dashboards yet"),
270
- description: C("bigconsole.home.recentDashboards.emptyDescription", "Create your first dashboard to get started"),
272
+ title: w("bigconsole.home.recentDashboards.emptyTitle", "No dashboards yet"),
273
+ description: w("bigconsole.home.recentDashboards.emptyDescription", "Create your first dashboard to get started"),
271
274
  action: /* @__PURE__ */ v(p, {
272
275
  onClick: () => t("/dashboards"),
273
- children: C("bigconsole.home.quickActions.newDashboard", "New Dashboard")
276
+ children: w("bigconsole.home.quickActions.newDashboard", "New Dashboard")
274
277
  })
275
278
  })
276
279
  }) : /* @__PURE__ */ v("div", {
@@ -279,7 +282,7 @@ var b = l`
279
282
  flexDirection: "column",
280
283
  gap: 8
281
284
  },
282
- children: O.map((e) => /* @__PURE__ */ y("button", {
285
+ children: k.map((e) => /* @__PURE__ */ y("button", {
283
286
  onClick: () => t(`/dashboards/${e.id}`),
284
287
  style: {
285
288
  textAlign: "left",
@@ -317,6 +320,6 @@ var b = l`
317
320
  });
318
321
  });
319
322
  //#endregion
320
- export { C as default };
323
+ export { w as default };
321
324
 
322
325
  //# sourceMappingURL=HomePage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/bigconsole/pages/HomePage.tsx"],"sourcesContent":["/**\n * HomePage\n *\n * BigConsole landing page showing workspace statistics and quick actions.\n */\n\nimport { type FC, memo, useCallback } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AuroraBackground,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Button,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { useAppNavigate } from '../contexts';\nimport { LayoutDashboard, Blocks, FileCode2, GitBranch, ArrowRight, Loader2 } from 'lucide-react';\n\n// ============================================================================\n// GRAPHQL RESPONSE TYPES\n// ============================================================================\n\ninterface HomepageStatsData {\n listDashboards: { totalCount: number };\n listDataSinks: { totalCount: number };\n // TODO: listParsers and listPipelines don't support totalCount pagination yet;\n // using array length as a fallback until the schema is updated.\n listParsers: Array<{ id: string }>;\n listPipelines: Array<{ id: string }>;\n}\n\ninterface RecentDashboardNode {\n id: string;\n name: string;\n description?: string;\n updatedAt: string;\n}\n\ninterface RecentDashboardsData {\n listDashboards: {\n edges: Array<{ node: RecentDashboardNode }>;\n };\n}\n\nconst HOMEPAGE_STATS = gql`\n query HomepageStats {\n listDashboards(first: 0) {\n totalCount\n }\n listDataSinks(first: 0) {\n totalCount\n }\n listParsers {\n id\n }\n listPipelines {\n id\n }\n }\n`;\n\nconst RECENT_DASHBOARDS = gql`\n query RecentDashboards {\n listDashboards(first: 5, sortBy: \"updatedAt\", sortOrder: \"desc\") {\n edges {\n node {\n id\n name\n description\n updatedAt\n }\n }\n }\n }\n`;\n\ninterface StatCardProps {\n icon: React.ReactNode;\n label: string;\n count: number | undefined;\n loading: boolean;\n path: string;\n onNavigate: (path: string) => void;\n}\n\nconst StatCard: FC<StatCardProps & { hero?: boolean }> = memo(function StatCard({\n icon,\n label,\n count,\n loading,\n path,\n onNavigate,\n hero = false,\n}) {\n return (\n <GlassCard treatment={hero ? 'glass' : 'metric'} glow={hero} className=\"border-border-seam p-0\">\n <button\n type=\"button\"\n onClick={() => onNavigate(path)}\n className=\"flex w-full flex-col gap-2 rounded-card p-[var(--space-cardPadding)] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <div className=\"flex items-center gap-2\">\n <div style={{ color: 'var(--color-action-primary-bg)' }}>{icon}</div>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-secondary)' }}>{label}</span>\n </div>\n <div\n className=\"tabular-nums\"\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-bold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {loading ? <Loader2 size={20} className=\"animate-spin\" /> : (count ?? 0)}\n </div>\n </button>\n </GlassCard>\n );\n});\n\nexport const HomePage: FC = memo(function HomePage() {\n const navigate = useAppNavigate();\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n const { data: stats, loading: statsLoading } = useQuery<HomepageStatsData>(HOMEPAGE_STATS, {\n fetchPolicy: 'cache-and-network',\n });\n const { data: recentData, loading: recentLoading } = useQuery<RecentDashboardsData>(RECENT_DASHBOARDS, {\n fetchPolicy: 'cache-and-network',\n });\n\n const recentDashboards = recentData?.listDashboards?.edges?.map((e) => e.node) || [];\n\n return (\n <div style={{ minHeight: '100vh', backgroundColor: 'var(--color-bg-canvas)' }}>\n <div style={{ padding: 'var(--space-pagePadding)', maxWidth: 960, margin: '0 auto' }}>\n {/* Hero Header */}\n <div className=\"relative mb-[var(--space-sectionGap)] overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6\">\n <AuroraBackground intensity=\"subtle\" />\n <h1\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-bold)',\n color: 'var(--color-text-primary)',\n }}\n >\n <GradientText>BigConsole</GradientText>\n </h1>\n <p style={{ fontSize: 'var(--font-size-body-md)', color: 'var(--color-text-secondary)', marginTop: 4 }}>\n {tr('bigconsole.home.subtitle', 'AI-powered analytics platform')}\n </p>\n </div>\n\n <PagePurpose className=\"mb-[var(--space-sectionGap)]\">\n {tr(\n 'bigconsole.home.purpose',\n 'BigConsole is your analytics command center — build live dashboards, wire up data sinks and parsers, then automate it all with pipelines and workflows. Start from the quick actions below or jump back into a recent dashboard.'\n )}\n </PagePurpose>\n\n {/* Stats Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(180px, 1fr))',\n gap: 12,\n marginBottom: 'var(--space-sectionGap)',\n }}\n >\n <StatCard\n hero\n icon={<LayoutDashboard size={20} />}\n label={tr('bigconsole.home.stats.dashboards', 'Dashboards')}\n count={stats?.listDashboards?.totalCount}\n loading={statsLoading}\n path=\"/dashboards\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<Blocks size={20} />}\n label={tr('bigconsole.home.stats.dataSinks', 'Data Sinks')}\n count={stats?.listDataSinks?.totalCount}\n loading={statsLoading}\n path=\"/datasinks\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<FileCode2 size={20} />}\n label={tr('bigconsole.home.stats.parsers', 'Parsers')}\n count={stats?.listParsers?.length}\n loading={statsLoading}\n path=\"/parsers\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<GitBranch size={20} />}\n label={tr('bigconsole.home.stats.pipelines', 'Pipelines')}\n count={stats?.listPipelines?.length}\n loading={statsLoading}\n path=\"/pipelines\"\n onNavigate={navigate}\n />\n </div>\n\n {/* Quick Actions */}\n <div style={{ marginBottom: 'var(--space-sectionGap)' }}>\n <h2\n style={{\n fontSize: 'var(--font-size-body-md)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n marginBottom: 12,\n }}\n >\n {tr('bigconsole.home.quickActions.title', 'Quick Actions')}\n </h2>\n <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap' }}>\n {[\n {\n label: tr('bigconsole.home.quickActions.newDashboard', 'New Dashboard'),\n path: '/dashboards',\n icon: <LayoutDashboard size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newDataSink', 'New Data Sink'),\n path: '/datasinks/new',\n icon: <Blocks size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newParser', 'New Parser'),\n path: '/parsers/new',\n icon: <FileCode2 size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newPipeline', 'New Pipeline'),\n path: '/pipelines/new',\n icon: <GitBranch size={14} />,\n },\n ].map((action) => (\n <button\n key={action.path}\n onClick={() => navigate(action.path)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n padding: '8px 16px',\n borderRadius: 'var(--radius-button)',\n border: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-surface)',\n color: 'var(--color-text-primary)',\n fontSize: 'var(--font-size-body-sm)',\n cursor: 'pointer',\n }}\n >\n {action.icon} {action.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Recent Dashboards */}\n <div>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12 }}>\n <h2\n style={{\n fontSize: 'var(--font-size-body-md)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {tr('bigconsole.home.recentDashboards.title', 'Recent Dashboards')}\n </h2>\n <button\n onClick={() => navigate('/dashboards')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n padding: '4px 8px',\n borderRadius: 'var(--radius-button)',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'var(--color-action-primary-bg)',\n fontSize: 'var(--font-size-body-sm)',\n cursor: 'pointer',\n }}\n >\n {tr('bigconsole.home.recentDashboards.viewAll', 'View all')} <ArrowRight size={14} />\n </button>\n </div>\n\n {recentLoading ? (\n <div style={{ textAlign: 'center', padding: 24, color: 'var(--color-text-muted)' }}>\n <Loader2 size={20} className=\"animate-spin\" style={{ margin: '0 auto' }} />\n </div>\n ) : recentDashboards.length === 0 ? (\n <GlassCard treatment=\"insight\" className=\"border-border-seam\">\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tr('bigconsole.home.recentDashboards.emptyTitle', 'No dashboards yet')}\n description={tr(\n 'bigconsole.home.recentDashboards.emptyDescription',\n 'Create your first dashboard to get started'\n )}\n action={\n <Button onClick={() => navigate('/dashboards')}>\n {tr('bigconsole.home.quickActions.newDashboard', 'New Dashboard')}\n </Button>\n }\n />\n </GlassCard>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n {recentDashboards.map((d) => (\n <button\n key={d.id}\n onClick={() => navigate(`/dashboards/${d.id}`)}\n style={{\n textAlign: 'left',\n padding: 12,\n borderRadius: 'var(--radius-card)',\n border: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-surface)',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>\n <div\n style={{\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-primary)',\n }}\n >\n {d.name}\n </div>\n {d.description && (\n <div style={{ fontSize: 11, color: 'var(--color-text-muted)', marginTop: 2 }}>\n {d.description.slice(0, 80)}\n </div>\n )}\n </div>\n <ArrowRight size={14} style={{ color: 'var(--color-text-muted)' }} />\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n});\n\nexport default HomePage;\n"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/bigconsole/pages/HomePage.tsx"],"sourcesContent":["/**\n * HomePage\n *\n * BigConsole landing page showing workspace statistics and quick actions.\n */\n\nimport { type FC, memo, useCallback } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AuroraBackground,\n GlassCard,\n GradientText,\n IllustratedEmptyState,\n Button,\n PagePurpose,\n} from '@burdenoff/fe-libs/ui';\nimport { useAppNavigate } from '../contexts';\nimport { LayoutDashboard, Blocks, FileCode2, GitBranch, ArrowRight, Loader2 } from 'lucide-react';\n\n// ============================================================================\n// GRAPHQL RESPONSE TYPES\n// ============================================================================\n\ninterface HomepageStatsData {\n listDashboards: { totalCount: number };\n listDataSinks: { totalCount: number };\n listParsers: { totalCount: number };\n listPipelines: { totalCount: number };\n}\n\ninterface RecentDashboardNode {\n id: string;\n name: string;\n description?: string;\n updatedAt: string;\n}\n\ninterface RecentDashboardsData {\n listDashboards: {\n edges: Array<{ node: RecentDashboardNode }>;\n };\n}\n\n// `listParsers` / `listPipelines` are Relay connections and their filter requires a\n// `consoleId`; GLOBAL_CONSOLE_ID counts the workspace-wide (non dashboard-scoped)\n// entries, which is what these tiles represent.\nconst GLOBAL_CONSOLE_ID = 'default';\n\nconst HOMEPAGE_STATS = gql`\n query HomepageStats($globalConsoleId: ID!) {\n listDashboards(first: 0) {\n totalCount\n }\n listDataSinks(first: 0) {\n totalCount\n }\n listParsers(filter: { consoleId: $globalConsoleId }, first: 0) {\n totalCount\n }\n listPipelines(filter: { consoleId: $globalConsoleId }, first: 0) {\n totalCount\n }\n }\n`;\n\nconst RECENT_DASHBOARDS = gql`\n query RecentDashboards {\n listDashboards(first: 5, sortBy: UPDATED_AT, sortOrder: DESC) {\n edges {\n node {\n id\n name\n description\n updatedAt\n }\n }\n }\n }\n`;\n\ninterface StatCardProps {\n icon: React.ReactNode;\n label: string;\n count: number | undefined;\n loading: boolean;\n path: string;\n onNavigate: (path: string) => void;\n}\n\nconst StatCard: FC<StatCardProps & { hero?: boolean }> = memo(function StatCard({\n icon,\n label,\n count,\n loading,\n path,\n onNavigate,\n hero = false,\n}) {\n return (\n <GlassCard treatment={hero ? 'glass' : 'metric'} glow={hero} className=\"border-border-seam p-0\">\n <button\n type=\"button\"\n onClick={() => onNavigate(path)}\n className=\"flex w-full flex-col gap-2 rounded-card p-[var(--space-cardPadding)] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]\"\n >\n <div className=\"flex items-center gap-2\">\n <div style={{ color: 'var(--color-action-primary-bg)' }}>{icon}</div>\n <span style={{ fontSize: 'var(--font-size-body-sm)', color: 'var(--color-text-secondary)' }}>{label}</span>\n </div>\n <div\n className=\"tabular-nums\"\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-bold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {loading ? <Loader2 size={20} className=\"animate-spin\" /> : (count ?? 0)}\n </div>\n </button>\n </GlassCard>\n );\n});\n\nexport const HomePage: FC = memo(function HomePage() {\n const navigate = useAppNavigate();\n const { t } = useI18n();\n const tr = useCallback(\n (key: string, fallback: string) => {\n const translated = t(key);\n return translated === key ? fallback : translated;\n },\n [t]\n );\n const { data: stats, loading: statsLoading } = useQuery<HomepageStatsData>(HOMEPAGE_STATS, {\n variables: { globalConsoleId: GLOBAL_CONSOLE_ID },\n fetchPolicy: 'cache-and-network',\n });\n const { data: recentData, loading: recentLoading } = useQuery<RecentDashboardsData>(RECENT_DASHBOARDS, {\n fetchPolicy: 'cache-and-network',\n });\n\n const recentDashboards = recentData?.listDashboards?.edges?.map((e) => e.node) || [];\n\n return (\n <div style={{ minHeight: '100vh', backgroundColor: 'var(--color-bg-canvas)' }}>\n <div style={{ padding: 'var(--space-pagePadding)', maxWidth: 960, margin: '0 auto' }}>\n {/* Hero Header */}\n <div className=\"relative mb-[var(--space-sectionGap)] overflow-hidden rounded-card border border-border-seam bg-gloss-card p-6\">\n <AuroraBackground intensity=\"subtle\" />\n <h1\n style={{\n fontSize: 'var(--font-size-heading-h4)',\n fontWeight: 'var(--font-weight-bold)',\n color: 'var(--color-text-primary)',\n }}\n >\n <GradientText>BigConsole</GradientText>\n </h1>\n <p style={{ fontSize: 'var(--font-size-body-md)', color: 'var(--color-text-secondary)', marginTop: 4 }}>\n {tr('bigconsole.home.subtitle', 'AI-powered analytics platform')}\n </p>\n </div>\n\n <PagePurpose className=\"mb-[var(--space-sectionGap)]\">\n {tr(\n 'bigconsole.home.purpose',\n 'BigConsole is your analytics command center — build live dashboards, wire up data sinks and parsers, then automate it all with pipelines and workflows. Start from the quick actions below or jump back into a recent dashboard.'\n )}\n </PagePurpose>\n\n {/* Stats Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(180px, 1fr))',\n gap: 12,\n marginBottom: 'var(--space-sectionGap)',\n }}\n >\n <StatCard\n hero\n icon={<LayoutDashboard size={20} />}\n label={tr('bigconsole.home.stats.dashboards', 'Dashboards')}\n count={stats?.listDashboards?.totalCount}\n loading={statsLoading}\n path=\"/dashboards\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<Blocks size={20} />}\n label={tr('bigconsole.home.stats.dataSinks', 'Data Sinks')}\n count={stats?.listDataSinks?.totalCount}\n loading={statsLoading}\n path=\"/datasinks\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<FileCode2 size={20} />}\n label={tr('bigconsole.home.stats.parsers', 'Parsers')}\n count={stats?.listParsers?.totalCount}\n loading={statsLoading}\n path=\"/parsers\"\n onNavigate={navigate}\n />\n <StatCard\n icon={<GitBranch size={20} />}\n label={tr('bigconsole.home.stats.pipelines', 'Pipelines')}\n count={stats?.listPipelines?.totalCount}\n loading={statsLoading}\n path=\"/pipelines\"\n onNavigate={navigate}\n />\n </div>\n\n {/* Quick Actions */}\n <div style={{ marginBottom: 'var(--space-sectionGap)' }}>\n <h2\n style={{\n fontSize: 'var(--font-size-body-md)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n marginBottom: 12,\n }}\n >\n {tr('bigconsole.home.quickActions.title', 'Quick Actions')}\n </h2>\n <div style={{ display: 'flex', gap: 12, flexWrap: 'wrap' }}>\n {[\n {\n label: tr('bigconsole.home.quickActions.newDashboard', 'New Dashboard'),\n path: '/dashboards',\n icon: <LayoutDashboard size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newDataSink', 'New Data Sink'),\n path: '/datasinks/new',\n icon: <Blocks size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newParser', 'New Parser'),\n path: '/parsers/new',\n icon: <FileCode2 size={14} />,\n },\n {\n label: tr('bigconsole.home.quickActions.newPipeline', 'New Pipeline'),\n path: '/pipelines/new',\n icon: <GitBranch size={14} />,\n },\n ].map((action) => (\n <button\n key={action.path}\n onClick={() => navigate(action.path)}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 6,\n padding: '8px 16px',\n borderRadius: 'var(--radius-button)',\n border: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-surface)',\n color: 'var(--color-text-primary)',\n fontSize: 'var(--font-size-body-sm)',\n cursor: 'pointer',\n }}\n >\n {action.icon} {action.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Recent Dashboards */}\n <div>\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 12 }}>\n <h2\n style={{\n fontSize: 'var(--font-size-body-md)',\n fontWeight: 'var(--font-weight-semibold)',\n color: 'var(--color-text-primary)',\n }}\n >\n {tr('bigconsole.home.recentDashboards.title', 'Recent Dashboards')}\n </h2>\n <button\n onClick={() => navigate('/dashboards')}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n padding: '4px 8px',\n borderRadius: 'var(--radius-button)',\n border: 'none',\n backgroundColor: 'transparent',\n color: 'var(--color-action-primary-bg)',\n fontSize: 'var(--font-size-body-sm)',\n cursor: 'pointer',\n }}\n >\n {tr('bigconsole.home.recentDashboards.viewAll', 'View all')} <ArrowRight size={14} />\n </button>\n </div>\n\n {recentLoading ? (\n <div style={{ textAlign: 'center', padding: 24, color: 'var(--color-text-muted)' }}>\n <Loader2 size={20} className=\"animate-spin\" style={{ margin: '0 auto' }} />\n </div>\n ) : recentDashboards.length === 0 ? (\n <GlassCard treatment=\"insight\" className=\"border-border-seam\">\n <IllustratedEmptyState\n illustration=\"empty-data\"\n title={tr('bigconsole.home.recentDashboards.emptyTitle', 'No dashboards yet')}\n description={tr(\n 'bigconsole.home.recentDashboards.emptyDescription',\n 'Create your first dashboard to get started'\n )}\n action={\n <Button onClick={() => navigate('/dashboards')}>\n {tr('bigconsole.home.quickActions.newDashboard', 'New Dashboard')}\n </Button>\n }\n />\n </GlassCard>\n ) : (\n <div style={{ display: 'flex', flexDirection: 'column', gap: 8 }}>\n {recentDashboards.map((d) => (\n <button\n key={d.id}\n onClick={() => navigate(`/dashboards/${d.id}`)}\n style={{\n textAlign: 'left',\n padding: 12,\n borderRadius: 'var(--radius-card)',\n border: '1px solid var(--color-border)',\n backgroundColor: 'var(--color-bg-surface)',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div>\n <div\n style={{\n fontWeight: 'var(--font-weight-medium)',\n fontSize: 'var(--font-size-body-sm)',\n color: 'var(--color-text-primary)',\n }}\n >\n {d.name}\n </div>\n {d.description && (\n <div style={{ fontSize: 11, color: 'var(--color-text-muted)', marginTop: 2 }}>\n {d.description.slice(0, 80)}\n </div>\n )}\n </div>\n <ArrowRight size={14} style={{ color: 'var(--color-text-muted)' }} />\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n});\n\nexport default HomePage;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-bigconsole",
3
- "version": "2026.717.5",
3
+ "version": "2026.727.2",
4
4
  "description": "BigConsole - AI-powered analytics and dashboard platform",
5
5
  "type": "module",
6
6
  "files": [