@fluid-app/portal-widgets 0.1.17
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/AlertWidget-AS_8Jjbd.cjs +39 -0
- package/dist/AlertWidget-AS_8Jjbd.cjs.map +1 -0
- package/dist/AlertWidget-Dy6pBmXm.mjs +22 -0
- package/dist/AlertWidget-Dy6pBmXm.mjs.map +1 -0
- package/dist/CalendarWidget-DAHnT9Wn.mjs +424 -0
- package/dist/CalendarWidget-DAHnT9Wn.mjs.map +1 -0
- package/dist/CalendarWidget-DW7q6Q7_.cjs +441 -0
- package/dist/CalendarWidget-DW7q6Q7_.cjs.map +1 -0
- package/dist/CarouselWidget-BJvLjY7H.mjs +436 -0
- package/dist/CarouselWidget-BJvLjY7H.mjs.map +1 -0
- package/dist/CarouselWidget-Bdn0LVXT.cjs +453 -0
- package/dist/CarouselWidget-Bdn0LVXT.cjs.map +1 -0
- package/dist/CatchUpWidget-CZMptzf8.cjs +264 -0
- package/dist/CatchUpWidget-CZMptzf8.cjs.map +1 -0
- package/dist/CatchUpWidget-vEP5scfy.mjs +247 -0
- package/dist/CatchUpWidget-vEP5scfy.mjs.map +1 -0
- package/dist/ChartWidget-B3GcdLqH.mjs +415 -0
- package/dist/ChartWidget-B3GcdLqH.mjs.map +1 -0
- package/dist/ChartWidget-DQB7K6S0.cjs +432 -0
- package/dist/ChartWidget-DQB7K6S0.cjs.map +1 -0
- package/dist/ContainerWidget-B-4hcPKJ.mjs +44 -0
- package/dist/ContainerWidget-B-4hcPKJ.mjs.map +1 -0
- package/dist/ContainerWidget-CHa4gVvV.cjs +2 -0
- package/dist/ContainerWidget-rGsakG66.cjs +51 -0
- package/dist/ContainerWidget-rGsakG66.cjs.map +1 -0
- package/dist/EmbedWidget-ChLVA_9a.mjs +156 -0
- package/dist/EmbedWidget-ChLVA_9a.mjs.map +1 -0
- package/dist/EmbedWidget-mv5ce32s.cjs +173 -0
- package/dist/EmbedWidget-mv5ce32s.cjs.map +1 -0
- package/dist/ImageWidget-DFt4mJJx.cjs +167 -0
- package/dist/ImageWidget-DFt4mJJx.cjs.map +1 -0
- package/dist/ImageWidget-DMubcgat.mjs +150 -0
- package/dist/ImageWidget-DMubcgat.mjs.map +1 -0
- package/dist/LayoutWidget-BEi0yFpz.mjs +107 -0
- package/dist/LayoutWidget-BEi0yFpz.mjs.map +1 -0
- package/dist/LayoutWidget-C4-ka0Ge.cjs +114 -0
- package/dist/LayoutWidget-C4-ka0Ge.cjs.map +1 -0
- package/dist/LayoutWidget-D4haEqTQ.cjs +2 -0
- package/dist/ListWidget-C-jcsCb4.mjs +901 -0
- package/dist/ListWidget-C-jcsCb4.mjs.map +1 -0
- package/dist/ListWidget-RHQ2fQXa.cjs +919 -0
- package/dist/ListWidget-RHQ2fQXa.cjs.map +1 -0
- package/dist/MediaRenderer-CcJvyOJ1.cjs +181 -0
- package/dist/MediaRenderer-CcJvyOJ1.cjs.map +1 -0
- package/dist/MediaRenderer-Uq90PZcY.mjs +163 -0
- package/dist/MediaRenderer-Uq90PZcY.mjs.map +1 -0
- package/dist/MySiteWidget-A_cYFgxJ.cjs +279 -0
- package/dist/MySiteWidget-A_cYFgxJ.cjs.map +1 -0
- package/dist/MySiteWidget-DariqlfU.mjs +262 -0
- package/dist/MySiteWidget-DariqlfU.mjs.map +1 -0
- package/dist/NestedWidget-CNkwGwhM.mjs +330 -0
- package/dist/NestedWidget-CNkwGwhM.mjs.map +1 -0
- package/dist/NestedWidget-ofk9O-t1.cjs +346 -0
- package/dist/NestedWidget-ofk9O-t1.cjs.map +1 -0
- package/dist/QuickShareWidget-DWvgEy74.cjs +262 -0
- package/dist/QuickShareWidget-DWvgEy74.cjs.map +1 -0
- package/dist/QuickShareWidget-DXq5lcDn.mjs +245 -0
- package/dist/QuickShareWidget-DXq5lcDn.mjs.map +1 -0
- package/dist/RecentActivityWidget-BvncOdax.mjs +391 -0
- package/dist/RecentActivityWidget-BvncOdax.mjs.map +1 -0
- package/dist/RecentActivityWidget-wODng8dt.cjs +408 -0
- package/dist/RecentActivityWidget-wODng8dt.cjs.map +1 -0
- package/dist/RegistryContext-CscXrsRa.mjs +36 -0
- package/dist/RegistryContext-CscXrsRa.mjs.map +1 -0
- package/dist/RegistryContext-xjea4xVV.cjs +55 -0
- package/dist/RegistryContext-xjea4xVV.cjs.map +1 -0
- package/dist/ScreenRenderer-D52h5VQr.mjs +76 -0
- package/dist/ScreenRenderer-D52h5VQr.mjs.map +1 -0
- package/dist/ScreenRenderer-DZAxcg7x.cjs +82 -0
- package/dist/ScreenRenderer-DZAxcg7x.cjs.map +1 -0
- package/dist/ScreenRendererContext-CK1IsFTn.cjs +36 -0
- package/dist/ScreenRendererContext-CK1IsFTn.cjs.map +1 -0
- package/dist/ScreenRendererContext-DKcdcmiT.mjs +23 -0
- package/dist/ScreenRendererContext-DKcdcmiT.mjs.map +1 -0
- package/dist/SpacerWidget-Bgz6701y.cjs +60 -0
- package/dist/SpacerWidget-Bgz6701y.cjs.map +1 -0
- package/dist/SpacerWidget-DHGoW6eu.mjs +43 -0
- package/dist/SpacerWidget-DHGoW6eu.mjs.map +1 -0
- package/dist/TableWidget--yLJTqoW.mjs +438 -0
- package/dist/TableWidget--yLJTqoW.mjs.map +1 -0
- package/dist/TableWidget-TfQfFHft.cjs +455 -0
- package/dist/TableWidget-TfQfFHft.cjs.map +1 -0
- package/dist/TextWidget-CL2H3vei.mjs +129 -0
- package/dist/TextWidget-CL2H3vei.mjs.map +1 -0
- package/dist/TextWidget-D6Ug_2Z1.cjs +146 -0
- package/dist/TextWidget-D6Ug_2Z1.cjs.map +1 -0
- package/dist/ToDoWidget-D8YIsl7y.mjs +274 -0
- package/dist/ToDoWidget-D8YIsl7y.mjs.map +1 -0
- package/dist/ToDoWidget-Dvs0GDkx.cjs +291 -0
- package/dist/ToDoWidget-Dvs0GDkx.cjs.map +1 -0
- package/dist/VideoWidget-D6C_jHOF.mjs +192 -0
- package/dist/VideoWidget-D6C_jHOF.mjs.map +1 -0
- package/dist/VideoWidget-SODAPZO4.cjs +209 -0
- package/dist/VideoWidget-SODAPZO4.cjs.map +1 -0
- package/dist/chunk-CZWwpsFl.cjs +43 -0
- package/dist/components/index.cjs +14 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +11 -0
- package/dist/components/index.d.cts.map +1 -0
- package/dist/components/index.d.mts +11 -0
- package/dist/components/index.d.mts.map +1 -0
- package/dist/components/index.mjs +11 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/contexts/index.cjs +8 -0
- package/dist/contexts/index.d.cts +77 -0
- package/dist/contexts/index.d.cts.map +1 -0
- package/dist/contexts/index.d.mts +77 -0
- package/dist/contexts/index.d.mts.map +1 -0
- package/dist/contexts/index.mjs +3 -0
- package/dist/core/index.cjs +51 -0
- package/dist/core/index.d.cts +77 -0
- package/dist/core/index.d.cts.map +1 -0
- package/dist/core/index.d.mts +77 -0
- package/dist/core/index.d.mts.map +1 -0
- package/dist/core/index.mjs +4 -0
- package/dist/error-state-DErSxZwH.mjs +18 -0
- package/dist/error-state-DErSxZwH.mjs.map +1 -0
- package/dist/error-state-DSzVUtEl.cjs +24 -0
- package/dist/error-state-DSzVUtEl.cjs.map +1 -0
- package/dist/fields-4FC6JUNH.d.mts +2 -0
- package/dist/fields-DjLFJmz6.d.cts +2 -0
- package/dist/fields-wPOk-SmZ.mjs +2 -0
- package/dist/rolldown-runtime-wcPFST8Q.mjs +13 -0
- package/dist/scroll-arrows-BZIlsE_x.cjs +35 -0
- package/dist/scroll-arrows-BZIlsE_x.cjs.map +1 -0
- package/dist/scroll-arrows-BevCYRNT.mjs +29 -0
- package/dist/scroll-arrows-BevCYRNT.mjs.map +1 -0
- package/dist/ui/index.cjs +101 -0
- package/dist/ui/index.d.cts +15 -0
- package/dist/ui/index.d.cts.map +1 -0
- package/dist/ui/index.d.mts +15 -0
- package/dist/ui/index.d.mts.map +1 -0
- package/dist/ui/index.mjs +3 -0
- package/dist/widgets/index.cjs +92 -0
- package/dist/widgets/index.cjs.map +1 -0
- package/dist/widgets/index.d.cts +689 -0
- package/dist/widgets/index.d.cts.map +1 -0
- package/dist/widgets/index.d.mts +689 -0
- package/dist/widgets/index.d.mts.map +1 -0
- package/dist/widgets/index.mjs +46 -0
- package/dist/widgets/index.mjs.map +1 -0
- package/package.json +104 -0
- package/src/styles/globals.css +23 -0
- package/src/styles/index.ts +1 -0
- package/tailwind.config.ts +61 -0
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
const require_chunk = require("./chunk-CZWwpsFl.cjs");
|
|
2
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
3
|
+
let _fluid_app_ui_primitives = require("@fluid-app/ui-primitives");
|
|
4
|
+
let recharts = require("recharts");
|
|
5
|
+
let _fluid_app_portal_core_registries = require("@fluid-app/portal-core/registries");
|
|
6
|
+
//#region src/widgets/ChartWidget.tsx
|
|
7
|
+
var ChartWidget_exports = /* @__PURE__ */ require_chunk.__exportAll({
|
|
8
|
+
ChartWidget: () => ChartWidget,
|
|
9
|
+
chartWidgetPropertySchema: () => chartWidgetPropertySchema
|
|
10
|
+
});
|
|
11
|
+
const defaultData = [
|
|
12
|
+
{
|
|
13
|
+
name: "Jan",
|
|
14
|
+
value: 186
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "Feb",
|
|
18
|
+
value: 305
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "Mar",
|
|
22
|
+
value: 237
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Apr",
|
|
26
|
+
value: 273
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "May",
|
|
30
|
+
value: 209
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "Jun",
|
|
34
|
+
value: 214
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
const defaultPieData = [
|
|
38
|
+
{
|
|
39
|
+
name: "Jan",
|
|
40
|
+
value: 186,
|
|
41
|
+
fill: "var(--chart-1)"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "Feb",
|
|
45
|
+
value: 305,
|
|
46
|
+
fill: "var(--chart-2)"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "Mar",
|
|
50
|
+
value: 237,
|
|
51
|
+
fill: "var(--chart-3)"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Apr",
|
|
55
|
+
value: 273,
|
|
56
|
+
fill: "var(--chart-4)"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "May",
|
|
60
|
+
value: 209,
|
|
61
|
+
fill: "var(--chart-5)"
|
|
62
|
+
}
|
|
63
|
+
];
|
|
64
|
+
const defaultChartConfig = { value: {
|
|
65
|
+
label: "Value",
|
|
66
|
+
color: "var(--chart-1)"
|
|
67
|
+
} };
|
|
68
|
+
function ChartWidget({ titleEnabled = true, title = "Chart Widget", titleFontSize = "lg", titleColor = "foreground", description = "Displaying sample data", descriptionFontSize = "md", descriptionColor = "foreground", chartType = "bar", showLegend = false, showTooltip = true, showGrid = true, width = "100%", height = "300px", background = {
|
|
69
|
+
type: "solid",
|
|
70
|
+
color: "background"
|
|
71
|
+
}, padding = 4, borderRadius = "md", dataKey = "value", xAxisKey = "name", data, chartConfig, className, ...props }) {
|
|
72
|
+
const backgroundColor = background.color || "background";
|
|
73
|
+
const backgroundImage = (background.resource?.image_url || background.resource?.imageUrl) && background.type === "image" ? `url(${background.resource.image_url || background.resource.imageUrl})` : "none";
|
|
74
|
+
const chartData = data ?? defaultData;
|
|
75
|
+
const chartPieData = chartType === "pie" && data ? data.map((item, index) => ({
|
|
76
|
+
...item,
|
|
77
|
+
fill: `var(--chart-${index % 5 + 1})`
|
|
78
|
+
})) : defaultPieData;
|
|
79
|
+
const config = chartConfig ?? defaultChartConfig;
|
|
80
|
+
const chartElement = (() => {
|
|
81
|
+
switch (chartType) {
|
|
82
|
+
case "bar": return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
|
|
83
|
+
data: chartData,
|
|
84
|
+
children: [
|
|
85
|
+
showGrid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
86
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, { dataKey: xAxisKey }),
|
|
87
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {}),
|
|
88
|
+
showTooltip && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltip, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltipContent, {}) }),
|
|
89
|
+
showLegend && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegend, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegendContent, {}) }),
|
|
90
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
|
|
91
|
+
dataKey,
|
|
92
|
+
fill: "var(--color-value)",
|
|
93
|
+
radius: 8
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
});
|
|
97
|
+
case "line": return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.LineChart, {
|
|
98
|
+
data: chartData,
|
|
99
|
+
children: [
|
|
100
|
+
showGrid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
101
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, { dataKey: xAxisKey }),
|
|
102
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {}),
|
|
103
|
+
showTooltip && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltip, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltipContent, {}) }),
|
|
104
|
+
showLegend && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegend, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegendContent, {}) }),
|
|
105
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Line, {
|
|
106
|
+
type: "monotone",
|
|
107
|
+
dataKey,
|
|
108
|
+
stroke: "var(--color-value)",
|
|
109
|
+
strokeWidth: 2,
|
|
110
|
+
dot: { r: 4 }
|
|
111
|
+
})
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
case "area": return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.AreaChart, {
|
|
115
|
+
data: chartData,
|
|
116
|
+
children: [
|
|
117
|
+
showGrid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
118
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, { dataKey: xAxisKey }),
|
|
119
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {}),
|
|
120
|
+
showTooltip && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltip, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltipContent, {}) }),
|
|
121
|
+
showLegend && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegend, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegendContent, {}) }),
|
|
122
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Area, {
|
|
123
|
+
type: "monotone",
|
|
124
|
+
dataKey,
|
|
125
|
+
stroke: "var(--color-value)",
|
|
126
|
+
fill: "var(--color-value)",
|
|
127
|
+
fillOpacity: .6
|
|
128
|
+
})
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
case "pie": return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.PieChart, { children: [
|
|
132
|
+
showTooltip && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltip, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltipContent, { hideLabel: true }) }),
|
|
133
|
+
showLegend && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegend, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegendContent, {}) }),
|
|
134
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Pie, {
|
|
135
|
+
data: chartPieData,
|
|
136
|
+
dataKey,
|
|
137
|
+
nameKey: xAxisKey,
|
|
138
|
+
cx: "50%",
|
|
139
|
+
cy: "50%",
|
|
140
|
+
outerRadius: 80,
|
|
141
|
+
label: true
|
|
142
|
+
})
|
|
143
|
+
] });
|
|
144
|
+
default: return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(recharts.BarChart, {
|
|
145
|
+
data: chartData,
|
|
146
|
+
children: [
|
|
147
|
+
showGrid && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.CartesianGrid, { strokeDasharray: "3 3" }),
|
|
148
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.XAxis, { dataKey: xAxisKey }),
|
|
149
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.YAxis, {}),
|
|
150
|
+
showTooltip && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltip, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartTooltipContent, {}) }),
|
|
151
|
+
showLegend && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegend, { content: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartLegendContent, {}) }),
|
|
152
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(recharts.Bar, {
|
|
153
|
+
dataKey,
|
|
154
|
+
fill: "var(--color-value)",
|
|
155
|
+
radius: 8
|
|
156
|
+
})
|
|
157
|
+
]
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
})();
|
|
161
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.Card, {
|
|
162
|
+
className: `bg-${backgroundColor} p-${padding} rounded-${borderRadius} ${className}`,
|
|
163
|
+
style: {
|
|
164
|
+
width,
|
|
165
|
+
maxWidth: "100%",
|
|
166
|
+
backgroundImage
|
|
167
|
+
},
|
|
168
|
+
...props,
|
|
169
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
170
|
+
className: "p-6",
|
|
171
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
172
|
+
className: "mb-4",
|
|
173
|
+
children: [titleEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
174
|
+
className: `text-${titleFontSize} text-${titleColor} font-bold`,
|
|
175
|
+
children: title
|
|
176
|
+
}), description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
177
|
+
className: `text-${descriptionFontSize} text-${descriptionColor}`,
|
|
178
|
+
children: description
|
|
179
|
+
})]
|
|
180
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.ChartContainer, {
|
|
181
|
+
config,
|
|
182
|
+
style: { height },
|
|
183
|
+
children: chartElement
|
|
184
|
+
})]
|
|
185
|
+
})
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const chartWidgetPropertySchema = {
|
|
189
|
+
widgetType: "ChartWidget",
|
|
190
|
+
displayName: "Chart",
|
|
191
|
+
tabsConfig: [{
|
|
192
|
+
id: "styling",
|
|
193
|
+
label: "Styling"
|
|
194
|
+
}, {
|
|
195
|
+
id: "data",
|
|
196
|
+
label: "Data"
|
|
197
|
+
}],
|
|
198
|
+
dataSourceTargetProps: ["data", "chartConfig"],
|
|
199
|
+
fields: [
|
|
200
|
+
{
|
|
201
|
+
key: "titleEnabled",
|
|
202
|
+
label: "Widget Title",
|
|
203
|
+
type: "boolean",
|
|
204
|
+
description: "Enable the title displayed above the chart",
|
|
205
|
+
defaultValue: true,
|
|
206
|
+
tab: "styling",
|
|
207
|
+
group: "Title"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
key: "title",
|
|
211
|
+
label: "Title",
|
|
212
|
+
type: "text",
|
|
213
|
+
description: "The chart title",
|
|
214
|
+
defaultValue: "Chart Widget",
|
|
215
|
+
tab: "styling",
|
|
216
|
+
group: "Title",
|
|
217
|
+
requiresKeyToBeTrue: "titleEnabled"
|
|
218
|
+
},
|
|
219
|
+
(0, _fluid_app_portal_core_registries.getFontSizeField)({
|
|
220
|
+
key: "titleFontSize",
|
|
221
|
+
label: "Title Font Size",
|
|
222
|
+
description: "Font size for the chart title",
|
|
223
|
+
defaultValue: "lg",
|
|
224
|
+
tab: "styling",
|
|
225
|
+
group: "Title",
|
|
226
|
+
requiresKeyToBeTrue: "titleEnabled"
|
|
227
|
+
}),
|
|
228
|
+
(0, _fluid_app_portal_core_registries.getColorField)({
|
|
229
|
+
key: "titleColor",
|
|
230
|
+
label: "Title Color",
|
|
231
|
+
description: "Color for the chart title",
|
|
232
|
+
defaultValue: "foreground",
|
|
233
|
+
tab: "styling",
|
|
234
|
+
group: "Title",
|
|
235
|
+
requiresKeyToBeTrue: "titleEnabled"
|
|
236
|
+
}),
|
|
237
|
+
{
|
|
238
|
+
key: "description",
|
|
239
|
+
label: "Description",
|
|
240
|
+
type: "textarea",
|
|
241
|
+
description: "The chart description",
|
|
242
|
+
rows: 2,
|
|
243
|
+
defaultValue: "Displaying sample data",
|
|
244
|
+
tab: "styling",
|
|
245
|
+
group: "Description"
|
|
246
|
+
},
|
|
247
|
+
(0, _fluid_app_portal_core_registries.getFontSizeField)({
|
|
248
|
+
key: "descriptionFontSize",
|
|
249
|
+
label: "Description Font Size",
|
|
250
|
+
description: "Font size for the chart description",
|
|
251
|
+
defaultValue: "md",
|
|
252
|
+
tab: "styling",
|
|
253
|
+
group: "Description"
|
|
254
|
+
}),
|
|
255
|
+
(0, _fluid_app_portal_core_registries.getColorField)({
|
|
256
|
+
key: "descriptionColor",
|
|
257
|
+
label: "Description Color",
|
|
258
|
+
description: "Color for the chart description",
|
|
259
|
+
defaultValue: "foreground",
|
|
260
|
+
tab: "styling",
|
|
261
|
+
group: "Description"
|
|
262
|
+
}),
|
|
263
|
+
{
|
|
264
|
+
key: "chartType",
|
|
265
|
+
label: "Chart Type",
|
|
266
|
+
type: "select",
|
|
267
|
+
description: "Type of chart to display",
|
|
268
|
+
options: [
|
|
269
|
+
{
|
|
270
|
+
label: "Bar Chart",
|
|
271
|
+
value: "bar"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
label: "Line Chart",
|
|
275
|
+
value: "line"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
label: "Area Chart",
|
|
279
|
+
value: "area"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
label: "Pie Chart",
|
|
283
|
+
value: "pie"
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
defaultValue: "bar",
|
|
287
|
+
tab: "styling",
|
|
288
|
+
group: "Design"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
key: "showLegend",
|
|
292
|
+
label: "Show Legend",
|
|
293
|
+
type: "boolean",
|
|
294
|
+
description: "Display chart legend",
|
|
295
|
+
defaultValue: false,
|
|
296
|
+
tab: "styling",
|
|
297
|
+
group: "Design"
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
key: "showTooltip",
|
|
301
|
+
label: "Show Tooltip",
|
|
302
|
+
type: "boolean",
|
|
303
|
+
description: "Display tooltip on hover",
|
|
304
|
+
defaultValue: true,
|
|
305
|
+
tab: "styling",
|
|
306
|
+
group: "Design"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
key: "showGrid",
|
|
310
|
+
label: "Show Grid",
|
|
311
|
+
type: "boolean",
|
|
312
|
+
description: "Display background grid lines",
|
|
313
|
+
defaultValue: true,
|
|
314
|
+
tab: "styling",
|
|
315
|
+
group: "Design"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
key: "separator",
|
|
319
|
+
type: "separator",
|
|
320
|
+
label: "Separator",
|
|
321
|
+
tab: "styling",
|
|
322
|
+
group: "Design"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
key: "width",
|
|
326
|
+
label: "Width",
|
|
327
|
+
type: "text",
|
|
328
|
+
description: "Width of the chart container (CSS value, e.g., 100%, 600px)",
|
|
329
|
+
defaultValue: "100%",
|
|
330
|
+
tab: "styling",
|
|
331
|
+
group: "Design"
|
|
332
|
+
},
|
|
333
|
+
(0, _fluid_app_portal_core_registries.getHeightField)({
|
|
334
|
+
key: "height",
|
|
335
|
+
label: "Height",
|
|
336
|
+
description: "Height of the chart",
|
|
337
|
+
min: 50,
|
|
338
|
+
max: 1200,
|
|
339
|
+
step: 10,
|
|
340
|
+
defaultValue: "300px",
|
|
341
|
+
tab: "styling",
|
|
342
|
+
group: "Design"
|
|
343
|
+
}),
|
|
344
|
+
{
|
|
345
|
+
key: "separator2",
|
|
346
|
+
type: "separator",
|
|
347
|
+
label: "Separator",
|
|
348
|
+
tab: "styling",
|
|
349
|
+
group: "Design"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
type: "background",
|
|
353
|
+
key: "background",
|
|
354
|
+
label: "Background",
|
|
355
|
+
description: "Background for the chart container",
|
|
356
|
+
defaultValue: "background",
|
|
357
|
+
tab: "styling",
|
|
358
|
+
group: "Design"
|
|
359
|
+
},
|
|
360
|
+
(0, _fluid_app_portal_core_registries.getPaddingField)({
|
|
361
|
+
key: "padding",
|
|
362
|
+
label: "Padding",
|
|
363
|
+
description: "Padding for the chart container",
|
|
364
|
+
defaultValue: 4,
|
|
365
|
+
tab: "styling",
|
|
366
|
+
group: "Design"
|
|
367
|
+
}),
|
|
368
|
+
(0, _fluid_app_portal_core_registries.getBorderRadiusField)({
|
|
369
|
+
key: "borderRadius",
|
|
370
|
+
label: "Border Radius",
|
|
371
|
+
description: "Border radius for the chart container",
|
|
372
|
+
defaultValue: "md",
|
|
373
|
+
tab: "styling",
|
|
374
|
+
group: "Design"
|
|
375
|
+
}),
|
|
376
|
+
{
|
|
377
|
+
key: "dataSource",
|
|
378
|
+
label: "Data Source",
|
|
379
|
+
type: "dataSource",
|
|
380
|
+
description: "Configure dynamic data fetching from an API",
|
|
381
|
+
tab: "data",
|
|
382
|
+
group: "Data"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
key: "dataKey",
|
|
386
|
+
label: "Data Key",
|
|
387
|
+
type: "select",
|
|
388
|
+
description: "Key in the data to use for chart values",
|
|
389
|
+
options: [{
|
|
390
|
+
label: "value",
|
|
391
|
+
value: "value"
|
|
392
|
+
}],
|
|
393
|
+
defaultValue: "value",
|
|
394
|
+
tab: "data",
|
|
395
|
+
group: "Data"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
key: "xAxisKey",
|
|
399
|
+
label: "X-Axis Key",
|
|
400
|
+
type: "select",
|
|
401
|
+
description: "Key in the data to use for X-axis labels",
|
|
402
|
+
options: [{
|
|
403
|
+
label: "name",
|
|
404
|
+
value: "name"
|
|
405
|
+
}],
|
|
406
|
+
defaultValue: "name",
|
|
407
|
+
tab: "data",
|
|
408
|
+
group: "Data"
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
};
|
|
412
|
+
//#endregion
|
|
413
|
+
Object.defineProperty(exports, "ChartWidget", {
|
|
414
|
+
enumerable: true,
|
|
415
|
+
get: function() {
|
|
416
|
+
return ChartWidget;
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
Object.defineProperty(exports, "ChartWidget_exports", {
|
|
420
|
+
enumerable: true,
|
|
421
|
+
get: function() {
|
|
422
|
+
return ChartWidget_exports;
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
Object.defineProperty(exports, "chartWidgetPropertySchema", {
|
|
426
|
+
enumerable: true,
|
|
427
|
+
get: function() {
|
|
428
|
+
return chartWidgetPropertySchema;
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
//# sourceMappingURL=ChartWidget-DQB7K6S0.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartWidget-DQB7K6S0.cjs","names":["RechartsBarChart","CartesianGrid","XAxis","YAxis","ChartTooltip","ChartTooltipContent","ChartLegend","ChartLegendContent","Bar","RechartsLineChart","Line","RechartsAreaChart","Area","RechartsPieChart","Pie","Card","ChartContainer"],"sources":["../src/widgets/ChartWidget.tsx"],"sourcesContent":["import type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport {\n Card,\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartTooltip,\n ChartTooltipContent,\n} from \"@fluid-app/ui-primitives\";\nimport type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport {\n Bar,\n BarChart as RechartsBarChart,\n Line,\n LineChart as RechartsLineChart,\n Area,\n AreaChart as RechartsAreaChart,\n Pie,\n PieChart as RechartsPieChart,\n XAxis,\n YAxis,\n CartesianGrid,\n} from \"recharts\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getHeightField,\n getPaddingField,\n} from \"../core/fields\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\n\ntype ChartDataPoint = Record<string, unknown>;\n\ntype ChartWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n title?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Description\n description?: string;\n descriptionFontSize?: FontSizeOptions;\n descriptionColor?: ColorOptions;\n\n // Design\n chartType?: \"bar\" | \"line\" | \"area\" | \"pie\";\n showLegend?: boolean;\n showTooltip?: boolean;\n showGrid?: boolean;\n width?: string;\n height?: string;\n background?: BackgroundValue;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Data\n dataKey?: string;\n xAxisKey?: string;\n /** Chart data - when provided via dataSource, this overrides defaultData */\n data?: ChartDataPoint[];\n /** Chart configuration - can be dynamically provided via dataSource */\n chartConfig?: Record<string, { label: string; color: string }>;\n};\n\n// Default sample data for demonstration\nconst defaultData = [\n { name: \"Jan\", value: 186 },\n { name: \"Feb\", value: 305 },\n { name: \"Mar\", value: 237 },\n { name: \"Apr\", value: 273 },\n { name: \"May\", value: 209 },\n { name: \"Jun\", value: 214 },\n];\n\n// Pie chart data with individual fill properties\nconst defaultPieData = [\n { name: \"Jan\", value: 186, fill: \"var(--chart-1)\" },\n { name: \"Feb\", value: 305, fill: \"var(--chart-2)\" },\n { name: \"Mar\", value: 237, fill: \"var(--chart-3)\" },\n { name: \"Apr\", value: 273, fill: \"var(--chart-4)\" },\n { name: \"May\", value: 209, fill: \"var(--chart-5)\" },\n];\n\nconst defaultChartConfig = {\n value: {\n label: \"Value\",\n color: \"var(--chart-1)\",\n },\n};\n\nexport function ChartWidget({\n titleEnabled = true,\n title = \"Chart Widget\",\n titleFontSize = \"lg\",\n titleColor = \"foreground\",\n\n description = \"Displaying sample data\",\n descriptionFontSize = \"md\",\n descriptionColor = \"foreground\",\n\n chartType = \"bar\",\n showLegend = false,\n showTooltip = true,\n showGrid = true,\n width = \"100%\",\n height = \"300px\",\n background = {\n type: \"solid\",\n color: \"background\",\n },\n padding = 4,\n borderRadius = \"md\",\n\n dataKey = \"value\",\n xAxisKey = \"name\",\n data,\n chartConfig,\n className,\n ...props\n}: ChartWidgetProps): React.JSX.Element {\n const backgroundColor = background.color || \"background\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n background.type === \"image\"\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n // Use provided data or fall back to default\n const chartData = data ?? defaultData;\n const chartPieData =\n chartType === \"pie\" && data\n ? data.map((item, index) => ({\n ...item,\n fill: `var(--chart-${(index % 5) + 1})`,\n }))\n : defaultPieData;\n const config = chartConfig ?? defaultChartConfig;\n const chartElement = (() => {\n switch (chartType) {\n case \"bar\":\n return (\n <RechartsBarChart data={chartData}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" />}\n <XAxis dataKey={xAxisKey} />\n <YAxis />\n {showTooltip && <ChartTooltip content={<ChartTooltipContent />} />}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <Bar dataKey={dataKey} fill=\"var(--color-value)\" radius={8} />\n </RechartsBarChart>\n );\n\n case \"line\":\n return (\n <RechartsLineChart data={chartData}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" />}\n <XAxis dataKey={xAxisKey} />\n <YAxis />\n {showTooltip && <ChartTooltip content={<ChartTooltipContent />} />}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <Line\n type=\"monotone\"\n dataKey={dataKey}\n stroke=\"var(--color-value)\"\n strokeWidth={2}\n dot={{ r: 4 }}\n />\n </RechartsLineChart>\n );\n\n case \"area\":\n return (\n <RechartsAreaChart data={chartData}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" />}\n <XAxis dataKey={xAxisKey} />\n <YAxis />\n {showTooltip && <ChartTooltip content={<ChartTooltipContent />} />}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <Area\n type=\"monotone\"\n dataKey={dataKey}\n stroke=\"var(--color-value)\"\n fill=\"var(--color-value)\"\n fillOpacity={0.6}\n />\n </RechartsAreaChart>\n );\n\n case \"pie\":\n return (\n <RechartsPieChart>\n {showTooltip && (\n <ChartTooltip content={<ChartTooltipContent hideLabel />} />\n )}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <Pie\n data={chartPieData}\n dataKey={dataKey}\n nameKey={xAxisKey}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={80}\n label\n />\n </RechartsPieChart>\n );\n\n default:\n // Fallback to bar chart for unknown chart types\n return (\n <RechartsBarChart data={chartData}>\n {showGrid && <CartesianGrid strokeDasharray=\"3 3\" />}\n <XAxis dataKey={xAxisKey} />\n <YAxis />\n {showTooltip && <ChartTooltip content={<ChartTooltipContent />} />}\n {showLegend && <ChartLegend content={<ChartLegendContent />} />}\n <Bar dataKey={dataKey} fill=\"var(--color-value)\" radius={8} />\n </RechartsBarChart>\n );\n }\n })();\n\n return (\n <Card\n className={`bg-${backgroundColor} p-${padding} rounded-${borderRadius} ${className}`}\n style={{\n width,\n maxWidth: \"100%\",\n backgroundImage,\n }}\n {...props}\n >\n <div className=\"p-6\">\n <div className=\"mb-4\">\n {titleEnabled && (\n <h3\n className={`text-${titleFontSize} text-${titleColor} font-bold`}\n >\n {title}\n </h3>\n )}\n {description && (\n <p\n className={`text-${descriptionFontSize} text-${descriptionColor}`}\n >\n {description}\n </p>\n )}\n </div>\n <ChartContainer config={config} style={{ height }}>\n {chartElement}\n </ChartContainer>\n </div>\n </Card>\n );\n}\n\nexport const chartWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ChartWidget\",\n displayName: \"Chart\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\", \"chartConfig\"],\n fields: [\n // Content Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the chart\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"title\",\n label: \"Title\",\n type: \"text\",\n description: \"The chart title\",\n defaultValue: \"Chart Widget\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the chart title\",\n defaultValue: \"lg\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the chart title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Content Tab - Description Group\n {\n key: \"description\",\n label: \"Description\",\n type: \"textarea\",\n description: \"The chart description\",\n rows: 2,\n defaultValue: \"Displaying sample data\",\n tab: \"styling\",\n group: \"Description\",\n },\n getFontSizeField({\n key: \"descriptionFontSize\",\n label: \"Description Font Size\",\n description: \"Font size for the chart description\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Description\",\n }),\n getColorField({\n key: \"descriptionColor\",\n label: \"Description Color\",\n description: \"Color for the chart description\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Description\",\n }),\n\n // Styling Tab - Design Group\n {\n key: \"chartType\",\n label: \"Chart Type\",\n type: \"select\",\n description: \"Type of chart to display\",\n options: [\n { label: \"Bar Chart\", value: \"bar\" },\n { label: \"Line Chart\", value: \"line\" },\n { label: \"Area Chart\", value: \"area\" },\n { label: \"Pie Chart\", value: \"pie\" },\n ],\n defaultValue: \"bar\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"showLegend\",\n label: \"Show Legend\",\n type: \"boolean\",\n description: \"Display chart legend\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"showTooltip\",\n label: \"Show Tooltip\",\n type: \"boolean\",\n description: \"Display tooltip on hover\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"showGrid\",\n label: \"Show Grid\",\n type: \"boolean\",\n description: \"Display background grid lines\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"width\",\n label: \"Width\",\n type: \"text\",\n description:\n \"Width of the chart container (CSS value, e.g., 100%, 600px)\",\n defaultValue: \"100%\",\n tab: \"styling\",\n group: \"Design\",\n },\n getHeightField({\n key: \"height\",\n label: \"Height\",\n description: \"Height of the chart\",\n min: 50,\n max: 1200,\n step: 10,\n defaultValue: \"300px\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator2\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the chart container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the chart container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the chart container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Data Tab - Data Group\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure dynamic data fetching from an API\",\n tab: \"data\",\n group: \"Data\",\n },\n {\n key: \"dataKey\",\n label: \"Data Key\",\n type: \"select\",\n description: \"Key in the data to use for chart values\",\n options: [{ label: \"value\", value: \"value\" }],\n defaultValue: \"value\",\n tab: \"data\",\n group: \"Data\",\n },\n {\n key: \"xAxisKey\",\n label: \"X-Axis Key\",\n type: \"select\",\n description: \"Key in the data to use for X-axis labels\",\n options: [{ label: \"name\", value: \"name\" }],\n defaultValue: \"name\",\n tab: \"data\",\n group: \"Data\",\n },\n ],\n} satisfies WidgetPropertySchema;\n"],"mappings":"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AAC;EAGF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACR;0DACgB;GACf,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;uDACY;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EAGF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS;IACP;KAAE,OAAO;KAAa,OAAO;KAAO;IACpC;KAAE,OAAO;KAAc,OAAO;KAAQ;IACtC;KAAE,OAAO;KAAc,OAAO;KAAQ;IACtC;KAAE,OAAO;KAAa,OAAO;KAAO;IACrC;GACD,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,MAAM;GACN,OAAO;GACP,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aACE;GACF,cAAc;GACd,KAAK;GACL,OAAO;GACR;wDACc;GACb,KAAK;GACL,OAAO;GACP,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,MAAM;GACN,OAAO;GACP,KAAK;GACL,OAAO;GACR;EACD;GACE,MAAM;GACN,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;yDACe;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;8DACmB;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EAGF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CAAC;IAAE,OAAO;IAAS,OAAO;IAAS,CAAC;GAC7C,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CAAC;IAAE,OAAO;IAAQ,OAAO;IAAQ,CAAC;GAC3C,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACF;CACF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-wcPFST8Q.mjs";
|
|
2
|
+
import { c as getPaddingField, o as getGapField } from "./fields-wPOk-SmZ.mjs";
|
|
3
|
+
import { t as LayoutWidget } from "./LayoutWidget-BEi0yFpz.mjs";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/widgets/ContainerWidget.tsx
|
|
6
|
+
var ContainerWidget_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
+
ContainerWidget: () => ContainerWidget,
|
|
8
|
+
containerWidgetPropertySchema: () => containerWidgetPropertySchema
|
|
9
|
+
});
|
|
10
|
+
function ContainerWidget(props) {
|
|
11
|
+
return /* @__PURE__ */ jsx(LayoutWidget, { ...props });
|
|
12
|
+
}
|
|
13
|
+
const containerWidgetPropertySchema = {
|
|
14
|
+
widgetType: "ContainerWidget",
|
|
15
|
+
displayName: "Canvas Settings",
|
|
16
|
+
fields: [
|
|
17
|
+
getGapField({
|
|
18
|
+
key: "gapSize",
|
|
19
|
+
label: "Gap",
|
|
20
|
+
description: "Gap between widgets",
|
|
21
|
+
defaultValue: "md",
|
|
22
|
+
group: "Design"
|
|
23
|
+
}),
|
|
24
|
+
getPaddingField({
|
|
25
|
+
key: "padding",
|
|
26
|
+
label: "Padding",
|
|
27
|
+
description: "Padding for the container",
|
|
28
|
+
defaultValue: 4,
|
|
29
|
+
group: "Design"
|
|
30
|
+
}),
|
|
31
|
+
{
|
|
32
|
+
type: "background",
|
|
33
|
+
key: "background",
|
|
34
|
+
label: "Background",
|
|
35
|
+
description: "Background for the container",
|
|
36
|
+
defaultValue: "background",
|
|
37
|
+
group: "Design"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
//#endregion
|
|
42
|
+
export { ContainerWidget_exports as n, containerWidgetPropertySchema as r, ContainerWidget as t };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=ContainerWidget-B-4hcPKJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerWidget-B-4hcPKJ.mjs","names":[],"sources":["../src/widgets/ContainerWidget.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport { LayoutWidget } from \"./LayoutWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport { getGapField, getPaddingField } from \"../core/fields\";\n\n/**\n * ContainerWidget - Root container widget for screens\n *\n * This widget wraps LayoutWidget and serves as the foundational container\n * for every screen. It cannot be added, deleted, moved, or copied by users.\n *\n * Only exposes limited settings: gap, padding, and backgroundColor\n */\n\ntype ContainerWidgetProps = ComponentProps<typeof LayoutWidget>;\n\nexport function ContainerWidget(\n props: ContainerWidgetProps,\n): React.JSX.Element {\n // Pass all props through to LayoutWidget\n return <LayoutWidget {...props} />;\n}\n\nexport const containerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ContainerWidget\",\n displayName: \"Canvas Settings\",\n fields: [\n getGapField({\n key: \"gapSize\",\n label: \"Gap\",\n description: \"Gap between widgets\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the container\",\n defaultValue: 4,\n group: \"Design\",\n }),\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the container\",\n defaultValue: \"background\",\n group: \"Design\",\n },\n ],\n};\n"],"mappings":";;;;;;;;;AAiBA,SAAgB,gBACd,OACmB;AAEnB,QAAO,oBAAC,cAAD,EAAc,GAAI,OAAS,CAAA;;AAGpC,MAAa,gCAAsD;CACjE,YAAY;CACZ,aAAa;CACb,QAAQ;EACN,YAAY;GACV,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR,CAAC;EACF,gBAAgB;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR,CAAC;EACF;GACE,MAAM;GACN,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR;EACF;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require("./chunk-CZWwpsFl.cjs");
|
|
2
|
+
const require_LayoutWidget = require("./LayoutWidget-C4-ka0Ge.cjs");
|
|
3
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
4
|
+
let _fluid_app_portal_core_registries = require("@fluid-app/portal-core/registries");
|
|
5
|
+
//#region src/widgets/ContainerWidget.tsx
|
|
6
|
+
function ContainerWidget(props) {
|
|
7
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_LayoutWidget.LayoutWidget, { ...props });
|
|
8
|
+
}
|
|
9
|
+
const containerWidgetPropertySchema = {
|
|
10
|
+
widgetType: "ContainerWidget",
|
|
11
|
+
displayName: "Canvas Settings",
|
|
12
|
+
fields: [
|
|
13
|
+
(0, _fluid_app_portal_core_registries.getGapField)({
|
|
14
|
+
key: "gapSize",
|
|
15
|
+
label: "Gap",
|
|
16
|
+
description: "Gap between widgets",
|
|
17
|
+
defaultValue: "md",
|
|
18
|
+
group: "Design"
|
|
19
|
+
}),
|
|
20
|
+
(0, _fluid_app_portal_core_registries.getPaddingField)({
|
|
21
|
+
key: "padding",
|
|
22
|
+
label: "Padding",
|
|
23
|
+
description: "Padding for the container",
|
|
24
|
+
defaultValue: 4,
|
|
25
|
+
group: "Design"
|
|
26
|
+
}),
|
|
27
|
+
{
|
|
28
|
+
type: "background",
|
|
29
|
+
key: "background",
|
|
30
|
+
label: "Background",
|
|
31
|
+
description: "Background for the container",
|
|
32
|
+
defaultValue: "background",
|
|
33
|
+
group: "Design"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
};
|
|
37
|
+
//#endregion
|
|
38
|
+
Object.defineProperty(exports, "ContainerWidget", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function() {
|
|
41
|
+
return ContainerWidget;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "containerWidgetPropertySchema", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function() {
|
|
47
|
+
return containerWidgetPropertySchema;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=ContainerWidget-rGsakG66.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContainerWidget-rGsakG66.cjs","names":["LayoutWidget"],"sources":["../src/widgets/ContainerWidget.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport { LayoutWidget } from \"./LayoutWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport { getGapField, getPaddingField } from \"../core/fields\";\n\n/**\n * ContainerWidget - Root container widget for screens\n *\n * This widget wraps LayoutWidget and serves as the foundational container\n * for every screen. It cannot be added, deleted, moved, or copied by users.\n *\n * Only exposes limited settings: gap, padding, and backgroundColor\n */\n\ntype ContainerWidgetProps = ComponentProps<typeof LayoutWidget>;\n\nexport function ContainerWidget(\n props: ContainerWidgetProps,\n): React.JSX.Element {\n // Pass all props through to LayoutWidget\n return <LayoutWidget {...props} />;\n}\n\nexport const containerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ContainerWidget\",\n displayName: \"Canvas Settings\",\n fields: [\n getGapField({\n key: \"gapSize\",\n label: \"Gap\",\n description: \"Gap between widgets\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the container\",\n defaultValue: 4,\n group: \"Design\",\n }),\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the container\",\n defaultValue: \"background\",\n group: \"Design\",\n },\n ],\n};\n"],"mappings":";;;;;AAiBA,SAAgB,gBACd,OACmB;AAEnB,QAAO,iBAAA,GAAA,kBAAA,KAACA,qBAAAA,cAAD,EAAc,GAAI,OAAS,CAAA;;AAGpC,MAAa,gCAAsD;CACjE,YAAY;CACZ,aAAa;CACb,QAAQ;qDACM;GACV,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR,CAAC;yDACc;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR,CAAC;EACF;GACE,MAAM;GACN,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,OAAO;GACR;EACF;CACF"}
|