@burdenoff/microfe-bigconsole 2026.730.1 → 2026.730.3

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 (26) hide show
  1. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +160 -127
  2. package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
  3. package/dist/bigconsole/components/dashboard/DashboardCanvas.js +73 -68
  4. package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
  5. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +144 -0
  6. package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -0
  7. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +2 -904
  8. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +82 -0
  9. package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -0
  10. package/dist/bigconsole/components/dashboard/index.js +1 -2
  11. package/dist/bigconsole/components/widgets/WidgetWrapper.js +2 -1
  12. package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
  13. package/dist/bigconsole/components/widgets/states/EmptyState.js +3 -3
  14. package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
  15. package/dist/bigconsole/graphql/storeTemplates.js +27 -0
  16. package/dist/bigconsole/graphql/storeTemplates.js.map +1 -0
  17. package/dist/bigconsole/hooks/useDashboardTemplates.js +4 -301
  18. package/dist/bigconsole/hooks/useStoreDashboardTemplates.js +137 -0
  19. package/dist/bigconsole/hooks/useStoreDashboardTemplates.js.map +1 -0
  20. package/dist/generated/global-operations.js +49 -0
  21. package/dist/generated/global-operations.js.map +1 -0
  22. package/dist/generated/wspace-operations.js +127 -117
  23. package/dist/generated/wspace-operations.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js.map +0 -1
  26. package/dist/bigconsole/hooks/useDashboardTemplates.js.map +0 -1
@@ -0,0 +1,144 @@
1
+ import { memo as e } from "react";
2
+ import { Download as t, LayoutTemplate as n, Star as r } from "lucide-react";
3
+ import { Badge as i, Spinner as a } from "@burdenoff/fe-libs/ui";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ //#region src/bigconsole/components/dashboard/StoreTemplatePicker.tsx
6
+ var c = {
7
+ textAlign: "left",
8
+ padding: "var(--space-md)",
9
+ borderRadius: "var(--radius-md)",
10
+ border: "1px solid var(--color-border-default)",
11
+ background: "var(--color-surface-default)",
12
+ cursor: "pointer",
13
+ display: "flex",
14
+ flexDirection: "column",
15
+ gap: "var(--space-xs)",
16
+ transition: "all 0.15s ease"
17
+ }, l = e(function({ templates: e, loading: l, error: u, selectedTemplateId: d, onSelect: f }) {
18
+ return l ? /* @__PURE__ */ o("div", {
19
+ style: {
20
+ display: "flex",
21
+ justifyContent: "center",
22
+ padding: "var(--space-xl)"
23
+ },
24
+ children: /* @__PURE__ */ o(a, {})
25
+ }) : u ? /* @__PURE__ */ s("div", {
26
+ style: {
27
+ padding: "var(--space-lg)",
28
+ color: "var(--color-text-danger)"
29
+ },
30
+ children: ["Could not load templates from the store: ", u]
31
+ }) : e.length === 0 ? /* @__PURE__ */ s("div", {
32
+ style: {
33
+ padding: "var(--space-xl)",
34
+ textAlign: "center",
35
+ color: "var(--color-text-muted)"
36
+ },
37
+ children: [
38
+ /* @__PURE__ */ o(n, { style: {
39
+ height: "var(--size-icon-lg)",
40
+ width: "var(--size-icon-lg)",
41
+ margin: "0 auto var(--space-sm)"
42
+ } }),
43
+ /* @__PURE__ */ o("div", { children: "No dashboard templates published yet" }),
44
+ /* @__PURE__ */ o("div", {
45
+ style: {
46
+ fontSize: "var(--font-size-sm)",
47
+ marginTop: "var(--space-2xs)"
48
+ },
49
+ children: "Templates published to the store will appear here."
50
+ })
51
+ ]
52
+ }) : /* @__PURE__ */ o("div", {
53
+ style: {
54
+ display: "grid",
55
+ gridTemplateColumns: "repeat(auto-fill, minmax(220px, 1fr))",
56
+ gap: "var(--space-sm)"
57
+ },
58
+ children: e.map((e) => {
59
+ let a = e.id === d;
60
+ return /* @__PURE__ */ s("button", {
61
+ type: "button",
62
+ onClick: () => f(e),
63
+ "aria-pressed": a,
64
+ style: {
65
+ ...c,
66
+ borderColor: a ? "var(--color-border-brand)" : "var(--color-border-default)",
67
+ boxShadow: a ? "var(--shadow-elevation-1)" : "none"
68
+ },
69
+ children: [
70
+ /* @__PURE__ */ s("div", {
71
+ style: {
72
+ display: "flex",
73
+ alignItems: "center",
74
+ gap: "var(--space-2xs)"
75
+ },
76
+ children: [/* @__PURE__ */ o(n, { style: {
77
+ height: "var(--size-icon-sm)",
78
+ width: "var(--size-icon-sm)"
79
+ } }), /* @__PURE__ */ o("span", {
80
+ style: { fontWeight: "var(--font-weight-medium)" },
81
+ children: e.name
82
+ })]
83
+ }),
84
+ /* @__PURE__ */ o("div", {
85
+ style: {
86
+ fontSize: "var(--font-size-sm)",
87
+ color: "var(--color-text-muted)",
88
+ display: "-webkit-box",
89
+ WebkitLineClamp: 2,
90
+ WebkitBoxOrient: "vertical",
91
+ overflow: "hidden"
92
+ },
93
+ children: e.description || "No description provided"
94
+ }),
95
+ /* @__PURE__ */ s("div", {
96
+ style: {
97
+ display: "flex",
98
+ alignItems: "center",
99
+ gap: "var(--space-xs)",
100
+ marginTop: "auto",
101
+ fontSize: "var(--font-size-xs)",
102
+ color: "var(--color-text-muted)"
103
+ },
104
+ children: [
105
+ e.requiresPurchase ? /* @__PURE__ */ s(i, {
106
+ variant: "secondary",
107
+ children: ["$", e.price]
108
+ }) : /* @__PURE__ */ o(i, {
109
+ variant: "secondary",
110
+ children: "Free"
111
+ }),
112
+ e.downloads > 0 && /* @__PURE__ */ s("span", {
113
+ style: {
114
+ display: "inline-flex",
115
+ alignItems: "center",
116
+ gap: "2px"
117
+ },
118
+ children: [/* @__PURE__ */ o(t, { style: {
119
+ height: "12px",
120
+ width: "12px"
121
+ } }), e.downloads]
122
+ }),
123
+ e.rating ? /* @__PURE__ */ s("span", {
124
+ style: {
125
+ display: "inline-flex",
126
+ alignItems: "center",
127
+ gap: "2px"
128
+ },
129
+ children: [/* @__PURE__ */ o(r, { style: {
130
+ height: "12px",
131
+ width: "12px"
132
+ } }), e.rating.toFixed(1)]
133
+ }) : null
134
+ ]
135
+ })
136
+ ]
137
+ }, e.id);
138
+ })
139
+ });
140
+ });
141
+ //#endregion
142
+ export { l as default };
143
+
144
+ //# sourceMappingURL=StoreTemplatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreTemplatePicker.js","names":[],"sources":["../../../../src/bigconsole/components/dashboard/StoreTemplatePicker.tsx"],"sourcesContent":["/**\n * StoreTemplatePicker\n *\n * Renders dashboard templates published to the global store as selectable\n * cards. Replaces the workspace-table-backed TemplatePicker for the \"From\n * Template\" flow, which surfaced nothing because no workspace templates have\n * ever been authored.\n *\n * @module bigconsole/components/dashboard/StoreTemplatePicker\n */\nimport { Badge, Spinner } from '@burdenoff/fe-libs/ui';\nimport { Download, LayoutTemplate, Star } from 'lucide-react';\nimport { type FC, memo } from 'react';\n\nimport type { StoreDashboardTemplate } from '../../hooks/useStoreDashboardTemplates';\n\nexport interface StoreTemplatePickerProps {\n templates: StoreDashboardTemplate[];\n loading: boolean;\n error: string | null;\n selectedTemplateId?: string;\n onSelect: (template: StoreDashboardTemplate) => void;\n}\n\nconst cardBase: React.CSSProperties = {\n textAlign: 'left',\n padding: 'var(--space-md)',\n borderRadius: 'var(--radius-md)',\n border: '1px solid var(--color-border-default)',\n background: 'var(--color-surface-default)',\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--space-xs)',\n transition: 'all 0.15s ease',\n};\n\nexport const StoreTemplatePicker: FC<StoreTemplatePickerProps> = memo(function StoreTemplatePicker({\n templates,\n loading,\n error,\n selectedTemplateId,\n onSelect,\n}) {\n if (loading) {\n return (\n <div style={{ display: 'flex', justifyContent: 'center', padding: 'var(--space-xl)' }}>\n <Spinner />\n </div>\n );\n }\n\n if (error) {\n return (\n <div style={{ padding: 'var(--space-lg)', color: 'var(--color-text-danger)' }}>\n Could not load templates from the store: {error}\n </div>\n );\n }\n\n if (templates.length === 0) {\n return (\n <div\n style={{\n padding: 'var(--space-xl)',\n textAlign: 'center',\n color: 'var(--color-text-muted)',\n }}\n >\n <LayoutTemplate\n style={{\n height: 'var(--size-icon-lg)',\n width: 'var(--size-icon-lg)',\n margin: '0 auto var(--space-sm)',\n }}\n />\n <div>No dashboard templates published yet</div>\n <div style={{ fontSize: 'var(--font-size-sm)', marginTop: 'var(--space-2xs)' }}>\n Templates published to the store will appear here.\n </div>\n </div>\n );\n }\n\n return (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(220px, 1fr))',\n gap: 'var(--space-sm)',\n }}\n >\n {templates.map((template) => {\n const selected = template.id === selectedTemplateId;\n return (\n <button\n key={template.id}\n type=\"button\"\n onClick={() => onSelect(template)}\n aria-pressed={selected}\n style={{\n ...cardBase,\n borderColor: selected ? 'var(--color-border-brand)' : 'var(--color-border-default)',\n boxShadow: selected ? 'var(--shadow-elevation-1)' : 'none',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-2xs)' }}>\n <LayoutTemplate style={{ height: 'var(--size-icon-sm)', width: 'var(--size-icon-sm)' }} />\n <span style={{ fontWeight: 'var(--font-weight-medium)' }}>{template.name}</span>\n </div>\n\n <div\n style={{\n fontSize: 'var(--font-size-sm)',\n color: 'var(--color-text-muted)',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {template.description || 'No description provided'}\n </div>\n\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-xs)',\n marginTop: 'auto',\n fontSize: 'var(--font-size-xs)',\n color: 'var(--color-text-muted)',\n }}\n >\n {template.requiresPurchase ? (\n <Badge variant=\"secondary\">${template.price}</Badge>\n ) : (\n <Badge variant=\"secondary\">Free</Badge>\n )}\n {template.downloads > 0 && (\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: '2px' }}>\n <Download style={{ height: '12px', width: '12px' }} />\n {template.downloads}\n </span>\n )}\n {template.rating ? (\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: '2px' }}>\n <Star style={{ height: '12px', width: '12px' }} />\n {template.rating.toFixed(1)}\n </span>\n ) : null}\n </div>\n </button>\n );\n })}\n </div>\n );\n});\n\nexport default StoreTemplatePicker;\n"],"mappings":";;;;;AAwBA,IAAM,IAAgC;CACpC,WAAW;CACX,SAAS;CACT,cAAc;CACd,QAAQ;CACR,YAAY;CACZ,QAAQ;CACR,SAAS;CACT,eAAe;CACf,KAAK;CACL,YAAY;CACb,EAEY,IAAoD,EAAK,SAA6B,EACjG,cACA,YACA,UACA,uBACA,eACC;AAyCD,QAxCI,IAEA,kBAAC,OAAD;EAAK,OAAO;GAAE,SAAS;GAAQ,gBAAgB;GAAU,SAAS;GAAmB;YACnF,kBAAC,GAAD,EAAW,CAAA;EACP,CAAA,GAIN,IAEA,kBAAC,OAAD;EAAK,OAAO;GAAE,SAAS;GAAmB,OAAO;GAA4B;YAA7E,CAA+E,6CACnC,EACtC;MAIN,EAAU,WAAW,IAErB,kBAAC,OAAD;EACE,OAAO;GACL,SAAS;GACT,WAAW;GACX,OAAO;GACR;YALH;GAOE,kBAAC,GAAD,EACE,OAAO;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACT,EACD,CAAA;GACF,kBAAC,OAAD,EAAA,UAAK,wCAA0C,CAAA;GAC/C,kBAAC,OAAD;IAAK,OAAO;KAAE,UAAU;KAAuB,WAAW;KAAoB;cAAE;IAE1E,CAAA;GACF;MAKR,kBAAC,OAAD;EACE,OAAO;GACL,SAAS;GACT,qBAAqB;GACrB,KAAK;GACN;YAEA,EAAU,KAAK,MAAa;GAC3B,IAAM,IAAW,EAAS,OAAO;AACjC,UACE,kBAAC,UAAD;IAEE,MAAK;IACL,eAAe,EAAS,EAAS;IACjC,gBAAc;IACd,OAAO;KACL,GAAG;KACH,aAAa,IAAW,8BAA8B;KACtD,WAAW,IAAW,8BAA8B;KACrD;cATH;KAWE,kBAAC,OAAD;MAAK,OAAO;OAAE,SAAS;OAAQ,YAAY;OAAU,KAAK;OAAoB;gBAA9E,CACE,kBAAC,GAAD,EAAgB,OAAO;OAAE,QAAQ;OAAuB,OAAO;OAAuB,EAAI,CAAA,EAC1F,kBAAC,QAAD;OAAM,OAAO,EAAE,YAAY,6BAA6B;iBAAG,EAAS;OAAY,CAAA,CAC5E;;KAEN,kBAAC,OAAD;MACE,OAAO;OACL,UAAU;OACV,OAAO;OACP,SAAS;OACT,iBAAiB;OACjB,iBAAiB;OACjB,UAAU;OACX;gBAEA,EAAS,eAAe;MACrB,CAAA;KAEN,kBAAC,OAAD;MACE,OAAO;OACL,SAAS;OACT,YAAY;OACZ,KAAK;OACL,WAAW;OACX,UAAU;OACV,OAAO;OACR;gBARH;OAUG,EAAS,mBACR,kBAAC,GAAD;QAAO,SAAQ;kBAAf,CAA2B,KAAE,EAAS,MAAc;YAEpD,kBAAC,GAAD;QAAO,SAAQ;kBAAY;QAAY,CAAA;OAExC,EAAS,YAAY,KACpB,kBAAC,QAAD;QAAM,OAAO;SAAE,SAAS;SAAe,YAAY;SAAU,KAAK;SAAO;kBAAzE,CACE,kBAAC,GAAD,EAAU,OAAO;SAAE,QAAQ;SAAQ,OAAO;SAAQ,EAAI,CAAA,EACrD,EAAS,UACL;;OAER,EAAS,SACR,kBAAC,QAAD;QAAM,OAAO;SAAE,SAAS;SAAe,YAAY;SAAU,KAAK;SAAO;kBAAzE,CACE,kBAAC,GAAD,EAAM,OAAO;SAAE,QAAQ;SAAQ,OAAO;SAAQ,EAAI,CAAA,EACjD,EAAS,OAAO,QAAQ,EAAE,CACtB;YACL;OACA;;KACC;MAxDF,EAAS,GAwDP;IAEX;EACE,CAAA;EAER"}