@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.
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js +160 -127
- package/dist/bigconsole/components/dashboard/CreateDashboardDialog.js.map +1 -1
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js +73 -68
- package/dist/bigconsole/components/dashboard/DashboardCanvas.js.map +1 -1
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js +144 -0
- package/dist/bigconsole/components/dashboard/StoreTemplatePicker.js.map +1 -0
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js +2 -904
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js +82 -0
- package/dist/bigconsole/components/dashboard/TemplateSetupBanner.js.map +1 -0
- package/dist/bigconsole/components/dashboard/index.js +1 -2
- package/dist/bigconsole/components/widgets/WidgetWrapper.js +2 -1
- package/dist/bigconsole/components/widgets/WidgetWrapper.js.map +1 -1
- package/dist/bigconsole/components/widgets/states/EmptyState.js +3 -3
- package/dist/bigconsole/components/widgets/states/EmptyState.js.map +1 -1
- package/dist/bigconsole/graphql/storeTemplates.js +27 -0
- package/dist/bigconsole/graphql/storeTemplates.js.map +1 -0
- package/dist/bigconsole/hooks/useDashboardTemplates.js +4 -301
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js +137 -0
- package/dist/bigconsole/hooks/useStoreDashboardTemplates.js.map +1 -0
- package/dist/generated/global-operations.js +49 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/wspace-operations.js +127 -117
- package/dist/generated/wspace-operations.js.map +1 -1
- package/package.json +1 -1
- package/dist/bigconsole/components/dashboard/TemplatePicker/TemplatePicker.js.map +0 -1
- 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"}
|