@fluid-app/portal-widgets 0.1.17 → 0.1.19

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 (40) hide show
  1. package/dist/{CarouselWidget-BJvLjY7H.mjs → CarouselWidget-MOGejQHD.mjs} +24 -6
  2. package/dist/{CarouselWidget-BJvLjY7H.mjs.map → CarouselWidget-MOGejQHD.mjs.map} +1 -1
  3. package/dist/{CarouselWidget-Bdn0LVXT.cjs → CarouselWidget-PEm6vktC.cjs} +24 -6
  4. package/dist/{CarouselWidget-Bdn0LVXT.cjs.map → CarouselWidget-PEm6vktC.cjs.map} +1 -1
  5. package/dist/{ChartWidget-B3GcdLqH.mjs → ChartWidget-7jEGoije.mjs} +1 -4
  6. package/dist/{ChartWidget-B3GcdLqH.mjs.map → ChartWidget-7jEGoije.mjs.map} +1 -1
  7. package/dist/{ChartWidget-DQB7K6S0.cjs → ChartWidget-aspz2XF6.cjs} +1 -4
  8. package/dist/{ChartWidget-DQB7K6S0.cjs.map → ChartWidget-aspz2XF6.cjs.map} +1 -1
  9. package/dist/{EmbedWidget-mv5ce32s.cjs → EmbedWidget-BENxbwxX.cjs} +1 -4
  10. package/dist/{EmbedWidget-mv5ce32s.cjs.map → EmbedWidget-BENxbwxX.cjs.map} +1 -1
  11. package/dist/{EmbedWidget-ChLVA_9a.mjs → EmbedWidget-RuCm5uOj.mjs} +1 -4
  12. package/dist/{EmbedWidget-ChLVA_9a.mjs.map → EmbedWidget-RuCm5uOj.mjs.map} +1 -1
  13. package/dist/{ImageWidget-DMubcgat.mjs → ImageWidget--owpCpb0.mjs} +1 -4
  14. package/dist/{ImageWidget-DMubcgat.mjs.map → ImageWidget--owpCpb0.mjs.map} +1 -1
  15. package/dist/{ImageWidget-DFt4mJJx.cjs → ImageWidget-B2stGyqB.cjs} +1 -4
  16. package/dist/{ImageWidget-DFt4mJJx.cjs.map → ImageWidget-B2stGyqB.cjs.map} +1 -1
  17. package/dist/{NestedWidget-CNkwGwhM.mjs → NestedWidget-BaRb7Z5r.mjs} +1 -4
  18. package/dist/{NestedWidget-CNkwGwhM.mjs.map → NestedWidget-BaRb7Z5r.mjs.map} +1 -1
  19. package/dist/{NestedWidget-ofk9O-t1.cjs → NestedWidget-Dbo3dXEi.cjs} +1 -4
  20. package/dist/{NestedWidget-ofk9O-t1.cjs.map → NestedWidget-Dbo3dXEi.cjs.map} +1 -1
  21. package/dist/{SpacerWidget-Bgz6701y.cjs → SpacerWidget-BFboILmz.cjs} +25 -7
  22. package/dist/{SpacerWidget-Bgz6701y.cjs.map → SpacerWidget-BFboILmz.cjs.map} +1 -1
  23. package/dist/{SpacerWidget-DHGoW6eu.mjs → SpacerWidget-Cc0IuKda.mjs} +25 -7
  24. package/dist/{SpacerWidget-DHGoW6eu.mjs.map → SpacerWidget-Cc0IuKda.mjs.map} +1 -1
  25. package/dist/{TableWidget--yLJTqoW.mjs → TableWidget-DqAN_2sf.mjs} +19 -12
  26. package/dist/TableWidget-DqAN_2sf.mjs.map +1 -0
  27. package/dist/{TableWidget-TfQfFHft.cjs → TableWidget-iS_DwHOX.cjs} +19 -12
  28. package/dist/TableWidget-iS_DwHOX.cjs.map +1 -0
  29. package/dist/{VideoWidget-SODAPZO4.cjs → VideoWidget-D3Fw1jZE.cjs} +1 -4
  30. package/dist/{VideoWidget-SODAPZO4.cjs.map → VideoWidget-D3Fw1jZE.cjs.map} +1 -1
  31. package/dist/{VideoWidget-D6C_jHOF.mjs → VideoWidget-D_1kluGw.mjs} +1 -4
  32. package/dist/VideoWidget-D_1kluGw.mjs.map +1 -0
  33. package/dist/widgets/index.cjs +16 -16
  34. package/dist/widgets/index.d.cts.map +1 -1
  35. package/dist/widgets/index.d.mts.map +1 -1
  36. package/dist/widgets/index.mjs +16 -16
  37. package/package.json +3 -3
  38. package/dist/TableWidget--yLJTqoW.mjs.map +0 -1
  39. package/dist/TableWidget-TfQfFHft.cjs.map +0 -1
  40. package/dist/VideoWidget-D6C_jHOF.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SpacerWidget-DHGoW6eu.mjs","names":[],"sources":["../src/widgets/SpacerWidget.tsx"],"sourcesContent":["import {\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/portal-core/registries\";\nimport { faArrowsUpDown } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { ComponentProps } from \"react\";\nimport type React from \"react\";\n\ntype SpacerWidgetProps = ComponentProps<\"div\"> & {\n /**\n * Custom height as a CSS value (e.g., \"128px\", \"8rem\", \"20vh\")\n */\n customHeight?: string;\n /**\n * Not customizable, determines if we should show a preview image in the container\n */\n previewMode?: boolean;\n};\n\nexport function SpacerWidget({\n customHeight = \"128px\",\n previewMode = false,\n className,\n style,\n ...props\n}: SpacerWidgetProps): React.JSX.Element {\n return (\n <div\n className={`w-full ${className ?? \"\"}`}\n style={{ height: customHeight, ...style }}\n aria-hidden=\"true\"\n {...props}\n >\n {previewMode && (\n <div className=\"border-muted-400 bg-muted text-muted-foreground flex h-full w-full items-center justify-center gap-1 border border-dashed\">\n <FontAwesomeIcon icon={faArrowsUpDown} />\n <span>SPACER</span>\n </div>\n )}\n </div>\n );\n}\n\nexport const spacerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"SpacerWidget\",\n displayName: \"Spacer\",\n fields: [\n getHeightField({\n key: \"customHeight\",\n label: \"Height\",\n description: \"Height of the spacer\",\n min: 1,\n max: 1200,\n step: 1,\n defaultValue: \"128px\",\n group: \"Spacing\",\n }),\n ],\n};\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,aAAa,EAC3B,eAAe,SACf,cAAc,OACd,WACA,OACA,GAAG,SACoC;AACvC,QACE,oBAAC,OAAD;EACE,WAAW,UAAU,aAAa;EAClC,OAAO;GAAE,QAAQ;GAAc,GAAG;GAAO;EACzC,eAAY;EACZ,GAAI;YAEH,eACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,iBAAD,EAAiB,MAAM,gBAAkB,CAAA,EACzC,oBAAC,QAAD,EAAA,UAAM,UAAa,CAAA,CACf;;EAEJ,CAAA;;AAIV,MAAa,6BAAmD;CAC9D,YAAY;CACZ,aAAa;CACb,QAAQ,CACN,eAAe;EACb,KAAK;EACL,OAAO;EACP,aAAa;EACb,KAAK;EACL,KAAK;EACL,MAAM;EACN,cAAc;EACd,OAAO;EACR,CAAC,CACH;CACF"}
1
+ {"version":3,"file":"SpacerWidget-Cc0IuKda.mjs","names":[],"sources":["../src/widgets/SpacerWidget.tsx"],"sourcesContent":["import {\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/portal-core/registries\";\nimport { faArrowsUpDown } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { ComponentProps } from \"react\";\nimport type React from \"react\";\n\ntype SpacerWidgetProps = ComponentProps<\"div\"> & {\n /**\n * Custom height as a CSS value (e.g., \"128px\", \"8rem\", \"20vh\")\n */\n customHeight?: string;\n /**\n * Not customizable, determines if we should show a preview image in the container\n */\n previewMode?: boolean;\n};\n\nexport function SpacerWidget({\n customHeight = \"128px\",\n previewMode = false,\n className,\n style,\n ...props\n}: SpacerWidgetProps): React.JSX.Element {\n return (\n <div\n className={`w-full ${className ?? \"\"}`}\n style={{ height: customHeight, ...style }}\n aria-hidden=\"true\"\n {...props}\n >\n {previewMode && (\n <div className=\"border-muted-400 bg-muted text-muted-foreground flex h-full w-full items-center justify-center gap-1 border border-dashed\">\n <FontAwesomeIcon icon={faArrowsUpDown} />\n <span>SPACER</span>\n </div>\n )}\n </div>\n );\n}\n\nexport const spacerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"SpacerWidget\",\n displayName: \"Spacer\",\n fields: [\n {\n key: \"customHeight\",\n label: \"Height\",\n type: \"cssUnit\",\n description: \"Height of the spacer\",\n defaultValue: \"128px\",\n allowedUnits: [\"px\", \"vh\", \"rem\"],\n minByUnit: { px: 1, vh: 1, rem: 0.25 },\n maxByUnit: { px: 2000, vh: 100, rem: 125 },\n stepByUnit: { px: 1, vh: 1, rem: 0.25 },\n group: \"Spacing\",\n },\n ],\n};\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,aAAa,EAC3B,eAAe,SACf,cAAc,OACd,WACA,OACA,GAAG,SACoC;AACvC,QACE,oBAAC,OAAD;EACE,WAAW,UAAU,aAAa;EAClC,OAAO;GAAE,QAAQ;GAAc,GAAG;GAAO;EACzC,eAAY;EACZ,GAAI;YAEH,eACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,iBAAD,EAAiB,MAAM,gBAAkB,CAAA,EACzC,oBAAC,QAAD,EAAA,UAAM,UAAa,CAAA,CACf;;EAEJ,CAAA;;AAIV,MAAa,6BAAmD;CAC9D,YAAY;CACZ,aAAa;CACb,QAAQ,CACN;EACE,KAAK;EACL,OAAO;EACP,MAAM;EACN,aAAa;EACb,cAAc;EACd,cAAc;GAAC;GAAM;GAAM;GAAM;EACjC,WAAW;GAAE,IAAI;GAAG,IAAI;GAAG,KAAK;GAAM;EACtC,WAAW;GAAE,IAAI;GAAM,IAAI;GAAK,KAAK;GAAK;EAC1C,YAAY;GAAE,IAAI;GAAG,IAAI;GAAG,KAAK;GAAM;EACvC,OAAO;EACR,CACF;CACF"}
@@ -60,8 +60,15 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
60
60
  color: "background"
61
61
  }, alternatingColorEnabled = true, textColor = "foreground", headerBackgroundColor = "muted", headerTextColor = "foreground", padding = 4, borderRadius = "md", data = DEFAULT_DATA, filterEnabled = true, sortingEnabled = true, paginationEnabled = true, maxRowsPerPage = 5, className, ...props }) {
62
62
  const backgroundColor = background.color || "background";
63
- const backgroundImage = (background.resource?.image_url || background.resource?.imageUrl) && background.type === "image" ? `url(${background.resource.image_url || background.resource.imageUrl})` : "none";
63
+ const isImageBackground = background.type === "image";
64
+ const backgroundImage = (background.resource?.image_url || background.resource?.imageUrl) && isImageBackground ? `url(${background.resource.image_url || background.resource.imageUrl})` : "none";
64
65
  const pageSize = maxRowsPerPage;
66
+ const innerBg = isImageBackground ? "bg-transparent" : `bg-${backgroundColor}`;
67
+ const innerBgAlt = isImageBackground ? "bg-black/5" : `bg-${backgroundColor}-400`;
68
+ const innerBorder = isImageBackground ? "border-white/20" : `border-${backgroundColor}-600`;
69
+ const headerBg = isImageBackground ? "bg-black/10" : `bg-${headerBackgroundColor}-400`;
70
+ const headerBorder = isImageBackground ? "border-white/20" : `border-${headerBackgroundColor}-600`;
71
+ const paginationBg = isImageBackground ? "bg-black/10" : `bg-${backgroundColor}-400`;
65
72
  const [globalFilter, setGlobalFilter] = useState("");
66
73
  const [sortConfig, setSortConfig] = useState(null);
67
74
  const [currentPage, setCurrentPage] = useState(1);
@@ -129,7 +136,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
129
136
  return sortConfig.direction === "asc" ? " ↑" : " ↓";
130
137
  };
131
138
  if (data.length === 0) return /* @__PURE__ */ jsx("div", {
132
- className: `@container rounded-${borderRadius} bg-${backgroundColor} p-${padding} ${className}`,
139
+ className: `@container rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center p-${padding} ${className}`,
133
140
  style: { backgroundImage },
134
141
  ...props,
135
142
  children: /* @__PURE__ */ jsxs("div", {
@@ -151,21 +158,21 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
151
158
  })
152
159
  });
153
160
  return /* @__PURE__ */ jsxs("div", {
154
- className: `@container overflow-hidden ${paginationEnabled ? "" : "overflow-y-auto"} rounded-${borderRadius} text-${textColor} ${className}`,
161
+ className: `@container overflow-hidden ${paginationEnabled ? "" : "overflow-y-auto"} rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`,
155
162
  style: { backgroundImage },
156
163
  ...props,
157
164
  children: [
158
165
  /* @__PURE__ */ jsxs("div", {
159
- className: `flex items-center justify-between p-${padding} bg-${backgroundColor}`,
166
+ className: `flex items-center justify-between p-${padding} ${innerBg} space-x-2`,
160
167
  children: [titleEnabled && titleText && /* @__PURE__ */ jsx("h2", {
161
- className: `text-${titleFontSize === "md" ? "base" : titleFontSize} font-bold text-${titleColor}`,
168
+ className: `text-${titleFontSize === "md" ? "base" : titleFontSize} font-bold text-${titleColor} min-w-0 truncate`,
162
169
  children: titleText
163
170
  }), filterEnabled && /* @__PURE__ */ jsx(Input, {
164
171
  type: "text",
165
172
  placeholder: "Search all columns...",
166
173
  value: globalFilter,
167
174
  onChange: (e) => handleGlobalFilterChange(e.target.value),
168
- className: `w-full rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor}-400 ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
175
+ className: `w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
169
176
  })]
170
177
  }),
171
178
  /* @__PURE__ */ jsx("div", {
@@ -173,7 +180,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
173
180
  children: /* @__PURE__ */ jsxs("table", {
174
181
  className: "w-full border-collapse",
175
182
  children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", {
176
- className: `bg-${headerBackgroundColor}-400 border-${headerBackgroundColor}-600 border-y`,
183
+ className: `${headerBg} ${headerBorder} border-y`,
177
184
  children: columns.map((col) => /* @__PURE__ */ jsx("th", {
178
185
  className: `px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? "cursor-pointer select-none hover:opacity-80" : ""}`,
179
186
  ...col.sortable && sortingEnabled ? {
@@ -193,13 +200,13 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
193
200
  })
194
201
  }, col.key))
195
202
  }) }), /* @__PURE__ */ jsxs("tbody", { children: [paginatedData.map((item, index) => /* @__PURE__ */ jsx("tr", {
196
- className: `h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : ""}`,
203
+ className: `h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : ""}`,
197
204
  children: columns.map((col) => /* @__PURE__ */ jsx("td", {
198
205
  className: "px-4 py-3 text-sm",
199
206
  children: col.render ? col.render(item[col.key], item) : String(item[col.key] ?? "-")
200
207
  }, col.key))
201
208
  }, item.id ?? index)), paginationEnabled && paginatedData.length < pageSize && paginatedData.length > 0 && Array.from({ length: pageSize - paginatedData.length }).map((_, index) => /* @__PURE__ */ jsx("tr", {
202
- className: `h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : ""}`,
209
+ className: `h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : ""}`,
203
210
  children: columns.map((col) => /* @__PURE__ */ jsx("td", {
204
211
  className: "px-4 py-3 text-sm",
205
212
  children: "\xA0"
@@ -208,7 +215,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
208
215
  })
209
216
  }),
210
217
  paginatedData.length === 0 && data.length > 0 && /* @__PURE__ */ jsxs("div", {
211
- className: `py-8 text-center bg-${backgroundColor}`,
218
+ className: `py-8 text-center ${innerBg}`,
212
219
  children: [/* @__PURE__ */ jsx("p", {
213
220
  className: "text-sm",
214
221
  children: "No results found"
@@ -218,7 +225,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
218
225
  })]
219
226
  }),
220
227
  paginationEnabled && totalPages > 1 && /* @__PURE__ */ jsxs("div", {
221
- className: `flex flex-col items-center justify-between gap-2 border-t border-${backgroundColor}-600 p-${padding} @md:flex-row bg-${backgroundColor}-400 text-${textColor}`,
228
+ className: `flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`,
222
229
  children: [/* @__PURE__ */ jsxs("p", {
223
230
  className: "text-sm",
224
231
  children: [
@@ -435,4 +442,4 @@ const tableWidgetPropertySchema = {
435
442
  //#endregion
436
443
  export { TableWidget_exports as n, tableWidgetPropertySchema as r, TableWidget as t };
437
444
 
438
- //# sourceMappingURL=TableWidget--yLJTqoW.mjs.map
445
+ //# sourceMappingURL=TableWidget-DqAN_2sf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableWidget-DqAN_2sf.mjs","names":[],"sources":["../src/widgets/TableWidget.tsx"],"sourcesContent":["import { useState, useMemo, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { Input } from \"@fluid-app/ui-primitives\";\nimport {\n MediaRenderer,\n getMediaPropsFromShareable,\n} from \"../components/MediaRenderer\";\nimport { type ShareableItem } from \"@fluid-app/portal-core/types\";\n\n// Column definition for the table\ntype ColumnDef = {\n key: string;\n label: string;\n sortable: boolean;\n render?: (value: unknown, item: ShareableItem) => React.ReactNode;\n};\n\nconst DEFAULT_DATA: ShareableItem[] = [];\n\n// ---------------------------------------------------------------------------\n// Column cell renderers\n// ---------------------------------------------------------------------------\n\nfunction ImageCellRenderer(_value: unknown, item: ShareableItem) {\n return (\n <div className=\"h-10 w-10 rounded object-cover\">\n <MediaRenderer {...getMediaPropsFromShareable(item)} />\n </div>\n );\n}\n\nfunction PriceCellRenderer(_value: unknown, item: ShareableItem) {\n return ((item.display_price as string) ?? item.price) || \"-\";\n}\n\nfunction StatusCellRenderer(value: unknown) {\n const status = String(value || \"unknown\").toLowerCase();\n const statusStyles: Record<string, string> = {\n active: \"bg-primary text-primary-foreground\",\n inactive: \"bg-secondary text-secondary-foreground\",\n unknown: \"bg-muted text-muted-foreground\",\n };\n return (\n <span\n className={`inline-flex rounded-full px-2 py-1 text-xs font-medium ${statusStyles[status] || \"bg-muted text-foreground\"}`}\n >\n {String(value || \"Unknown\")}\n </span>\n );\n}\n\n// Default columns for product data\nconst defaultColumns: ColumnDef[] = [\n {\n key: \"imageUrl\",\n label: \"Image\",\n sortable: false,\n render: ImageCellRenderer,\n },\n {\n key: \"title\",\n label: \"Title\",\n sortable: true,\n },\n {\n key: \"price\",\n label: \"Price\",\n sortable: true,\n render: PriceCellRenderer,\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: StatusCellRenderer,\n },\n];\n\ntype TableWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n alternatingColorEnabled?: boolean;\n textColor?: ColorOptions;\n headerBackgroundColor?: ColorOptions;\n headerTextColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Data\n data?: ShareableItem[];\n\n // Features\n filterEnabled?: boolean;\n sortingEnabled?: boolean;\n paginationEnabled?: boolean;\n maxRowsPerPage?: number;\n};\n\nexport function TableWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Products\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n alternatingColorEnabled = true,\n textColor = \"foreground\",\n headerBackgroundColor = \"muted\",\n headerTextColor = \"foreground\",\n padding = 4,\n borderRadius = \"md\",\n\n // Data\n data = DEFAULT_DATA,\n\n // Feature defaults\n filterEnabled = true,\n sortingEnabled = true,\n paginationEnabled = true,\n maxRowsPerPage = 5,\n\n className,\n ...props\n}: TableWidgetProps): React.JSX.Element {\n const backgroundColor = background.color || \"background\";\n const isImageBackground = background.type === \"image\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n isImageBackground\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const pageSize = maxRowsPerPage;\n\n // When using an image background, inner elements should be transparent\n // so the image shows through. Otherwise use the configured colors.\n const innerBg = isImageBackground\n ? \"bg-transparent\"\n : `bg-${backgroundColor}`;\n const innerBgAlt = isImageBackground\n ? \"bg-black/5\"\n : `bg-${backgroundColor}-400`;\n const innerBorder = isImageBackground\n ? \"border-white/20\"\n : `border-${backgroundColor}-600`;\n const headerBg = isImageBackground\n ? \"bg-black/10\"\n : `bg-${headerBackgroundColor}-400`;\n const headerBorder = isImageBackground\n ? \"border-white/20\"\n : `border-${headerBackgroundColor}-600`;\n const paginationBg = isImageBackground\n ? \"bg-black/10\"\n : `bg-${backgroundColor}-400`;\n\n // State for filtering, sorting, and pagination\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [sortConfig, setSortConfig] = useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n const [currentPage, setCurrentPage] = useState(1);\n\n const columns = defaultColumns;\n\n // Filter data\n const filteredData = useMemo(() => {\n let result = [...data];\n\n if (globalFilter) {\n const lowerFilter = globalFilter.toLowerCase();\n result = result.filter((item) =>\n columns.some((col) => {\n const value = item[col.key];\n return String(value ?? \"\")\n .toLowerCase()\n .includes(lowerFilter);\n }),\n );\n }\n\n return result;\n }, [data, globalFilter, columns]);\n\n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return sortConfig.direction === \"asc\" ? 1 : -1;\n if (bValue == null) return sortConfig.direction === \"asc\" ? -1 : 1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortConfig.direction === \"asc\" ? comparison : -comparison;\n });\n }, [filteredData, sortConfig]);\n\n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginationEnabled) return sortedData;\n\n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, currentPage, pageSize, paginationEnabled]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n // Reset to page 1 when filters change\n const handleGlobalFilterChange = (value: string) => {\n setGlobalFilter(value);\n setCurrentPage(1);\n };\n\n // Handle sort\n const handleSort = (key: string) => {\n if (!sortingEnabled) return;\n\n setSortConfig((prev) => {\n if (prev?.key !== key) return { key, direction: \"asc\" };\n if (prev.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n });\n };\n\n // Get sort indicator\n const getSortIndicator = (key: string) => {\n if (sortConfig?.key !== key) return null;\n return sortConfig.direction === \"asc\" ? \" ↑\" : \" ↓\";\n };\n\n // Empty state\n if (data.length === 0) {\n return (\n <div\n className={`@container rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center p-${padding} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div className=\"text-muted-foreground flex min-h-[200px] flex-col items-center justify-center gap-2\">\n <div className=\"text-4xl\">📋</div>\n <p className=\"text-sm\">No data available</p>\n <p className=\"text-muted-foreground/70 text-xs\">\n Connect a data source to display table data\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`@container overflow-hidden ${paginationEnabled ? \"\" : \"overflow-y-auto\"} rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div\n className={`flex items-center justify-between p-${padding} ${innerBg} space-x-2`}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <h2\n className={`text-${titleFontSize === \"md\" ? \"base\" : titleFontSize} font-bold text-${titleColor} min-w-0 truncate`}\n >\n {titleText}\n </h2>\n )}\n\n {/* Global Search */}\n {filterEnabled && (\n <Input\n type=\"text\"\n placeholder=\"Search all columns...\"\n value={globalFilter}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleGlobalFilterChange(e.target.value)\n }\n className={`w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`}\n />\n )}\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className={`${headerBg} ${headerBorder} border-y`}>\n {columns.map((col) => (\n <th\n key={col.key}\n className={`px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? \"cursor-pointer select-none hover:opacity-80\" : \"\"}`}\n {...(col.sortable && sortingEnabled\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick: () => handleSort(col.key),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSort(col.key);\n }\n },\n }\n : {})}\n >\n <div className=\"flex flex-col gap-1\">\n <span>\n {col.label}\n {col.sortable &&\n sortingEnabled &&\n getSortIndicator(col.key)}\n </span>\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {paginatedData.map((item, index) => (\n <tr\n key={item.id ?? index}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n {col.render\n ? col.render(item[col.key], item)\n : String(item[col.key] ?? \"-\")}\n </td>\n ))}\n </tr>\n ))}\n {/* Empty rows to fill the last page for consistent pagination position */}\n {paginationEnabled &&\n paginatedData.length < pageSize &&\n paginatedData.length > 0 &&\n Array.from({ length: pageSize - paginatedData.length }).map(\n (_, index) => (\n <tr\n key={`empty-${index}`}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n &nbsp;\n </td>\n ))}\n </tr>\n ),\n )}\n </tbody>\n </table>\n </div>\n\n {/* No results message */}\n {paginatedData.length === 0 && data.length > 0 && (\n <div className={`py-8 text-center ${innerBg}`}>\n <p className=\"text-sm\">No results found</p>\n <p className=\"text-xs\">Try adjusting your search</p>\n </div>\n )}\n\n {/* Pagination */}\n {paginationEnabled && totalPages > 1 && (\n <div\n className={`flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`}\n >\n <p className=\"text-sm\">\n Showing {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n </p>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Previous\n </button>\n <span className=\"text-sm\">\n Page {currentPage} of {totalPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n disabled={currentPage === totalPages}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const tableWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"TableWidget\",\n displayName: \"Table Widget\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\"],\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 table\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the table\",\n defaultValue: \"Products\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n label: \"Title Font Size\",\n defaultValue: \"xl\",\n key: \"titleFontSize\",\n description: \"Font size for the widget title\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the table container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"alternatingColorEnabled\",\n label: \"Enable Alternating Colors\",\n type: \"boolean\",\n description: \"Enable alternating colors for table rows\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"headerBackgroundColor\",\n label: \"Header Background\",\n description: \"Background color for the table header\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for table content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"headerTextColor\",\n label: \"Header Text Color\",\n description: \"Text color for the table header\",\n defaultValue: \"foreground\",\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 getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the table 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 table container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Behavior Tab - Features Group\n {\n key: \"filterEnabled\",\n label: \"Enable Filters\",\n type: \"boolean\",\n description: \"Show global search and column filters\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"sortingEnabled\",\n label: \"Enable Sorting\",\n type: \"boolean\",\n description: \"Allow sorting by clicking column headers\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"paginationEnabled\",\n label: \"Enable Pagination\",\n type: \"boolean\",\n description: \"Split data into pages\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"maxRowsPerPage\",\n label: \"Max Rows Per Page\",\n type: \"number\",\n description: \"Maximum number of rows to display per page\",\n min: 1,\n max: 50,\n step: 1,\n defaultValue: 5,\n tab: \"behavior\",\n group: \"Features\",\n requiresKeyToBeTrue: \"paginationEnabled\",\n },\n\n // Data Tab\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure data source for the table\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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;EACD,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF,cAAc;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,MAAM;GACN,OAAO;GACP,KAAK;GACL,OAAO;GACR;EACD,gBAAgB;GACd,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF,qBAAqB;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EAGF;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,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAGD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACF;CACF"}
@@ -60,8 +60,15 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
60
60
  color: "background"
61
61
  }, alternatingColorEnabled = true, textColor = "foreground", headerBackgroundColor = "muted", headerTextColor = "foreground", padding = 4, borderRadius = "md", data = DEFAULT_DATA, filterEnabled = true, sortingEnabled = true, paginationEnabled = true, maxRowsPerPage = 5, className, ...props }) {
62
62
  const backgroundColor = background.color || "background";
63
- const backgroundImage = (background.resource?.image_url || background.resource?.imageUrl) && background.type === "image" ? `url(${background.resource.image_url || background.resource.imageUrl})` : "none";
63
+ const isImageBackground = background.type === "image";
64
+ const backgroundImage = (background.resource?.image_url || background.resource?.imageUrl) && isImageBackground ? `url(${background.resource.image_url || background.resource.imageUrl})` : "none";
64
65
  const pageSize = maxRowsPerPage;
66
+ const innerBg = isImageBackground ? "bg-transparent" : `bg-${backgroundColor}`;
67
+ const innerBgAlt = isImageBackground ? "bg-black/5" : `bg-${backgroundColor}-400`;
68
+ const innerBorder = isImageBackground ? "border-white/20" : `border-${backgroundColor}-600`;
69
+ const headerBg = isImageBackground ? "bg-black/10" : `bg-${headerBackgroundColor}-400`;
70
+ const headerBorder = isImageBackground ? "border-white/20" : `border-${headerBackgroundColor}-600`;
71
+ const paginationBg = isImageBackground ? "bg-black/10" : `bg-${backgroundColor}-400`;
65
72
  const [globalFilter, setGlobalFilter] = (0, react.useState)("");
66
73
  const [sortConfig, setSortConfig] = (0, react.useState)(null);
67
74
  const [currentPage, setCurrentPage] = (0, react.useState)(1);
@@ -129,7 +136,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
129
136
  return sortConfig.direction === "asc" ? " ↑" : " ↓";
130
137
  };
131
138
  if (data.length === 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
132
- className: `@container rounded-${borderRadius} bg-${backgroundColor} p-${padding} ${className}`,
139
+ className: `@container rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center p-${padding} ${className}`,
133
140
  style: { backgroundImage },
134
141
  ...props,
135
142
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -151,21 +158,21 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
151
158
  })
152
159
  });
153
160
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
154
- className: `@container overflow-hidden ${paginationEnabled ? "" : "overflow-y-auto"} rounded-${borderRadius} text-${textColor} ${className}`,
161
+ className: `@container overflow-hidden ${paginationEnabled ? "" : "overflow-y-auto"} rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`,
155
162
  style: { backgroundImage },
156
163
  ...props,
157
164
  children: [
158
165
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
159
- className: `flex items-center justify-between p-${padding} bg-${backgroundColor}`,
166
+ className: `flex items-center justify-between p-${padding} ${innerBg} space-x-2`,
160
167
  children: [titleEnabled && titleText && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("h2", {
161
- className: `text-${titleFontSize === "md" ? "base" : titleFontSize} font-bold text-${titleColor}`,
168
+ className: `text-${titleFontSize === "md" ? "base" : titleFontSize} font-bold text-${titleColor} min-w-0 truncate`,
162
169
  children: titleText
163
170
  }), filterEnabled && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_fluid_app_ui_primitives.Input, {
164
171
  type: "text",
165
172
  placeholder: "Search all columns...",
166
173
  value: globalFilter,
167
174
  onChange: (e) => handleGlobalFilterChange(e.target.value),
168
- className: `w-full rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor}-400 ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
175
+ className: `w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`
169
176
  })]
170
177
  }),
171
178
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -173,7 +180,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
173
180
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("table", {
174
181
  className: "w-full border-collapse",
175
182
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", {
176
- className: `bg-${headerBackgroundColor}-400 border-${headerBackgroundColor}-600 border-y`,
183
+ className: `${headerBg} ${headerBorder} border-y`,
177
184
  children: columns.map((col) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("th", {
178
185
  className: `px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? "cursor-pointer select-none hover:opacity-80" : ""}`,
179
186
  ...col.sortable && sortingEnabled ? {
@@ -193,13 +200,13 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
193
200
  })
194
201
  }, col.key))
195
202
  }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("tbody", { children: [paginatedData.map((item, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", {
196
- className: `h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : ""}`,
203
+ className: `h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : ""}`,
197
204
  children: columns.map((col) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
198
205
  className: "px-4 py-3 text-sm",
199
206
  children: col.render ? col.render(item[col.key], item) : String(item[col.key] ?? "-")
200
207
  }, col.key))
201
208
  }, item.id ?? index)), paginationEnabled && paginatedData.length < pageSize && paginatedData.length > 0 && Array.from({ length: pageSize - paginatedData.length }).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("tr", {
202
- className: `h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : ""}`,
209
+ className: `h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : ""}`,
203
210
  children: columns.map((col) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("td", {
204
211
  className: "px-4 py-3 text-sm",
205
212
  children: "\xA0"
@@ -208,7 +215,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
208
215
  })
209
216
  }),
210
217
  paginatedData.length === 0 && data.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
211
- className: `py-8 text-center bg-${backgroundColor}`,
218
+ className: `py-8 text-center ${innerBg}`,
212
219
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
213
220
  className: "text-sm",
214
221
  children: "No results found"
@@ -218,7 +225,7 @@ function TableWidget({ titleEnabled = true, titleText = "Products", titleFontSiz
218
225
  })]
219
226
  }),
220
227
  paginationEnabled && totalPages > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
221
- className: `flex flex-col items-center justify-between gap-2 border-t border-${backgroundColor}-600 p-${padding} @md:flex-row bg-${backgroundColor}-400 text-${textColor}`,
228
+ className: `flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`,
222
229
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
223
230
  className: "text-sm",
224
231
  children: [
@@ -452,4 +459,4 @@ Object.defineProperty(exports, "tableWidgetPropertySchema", {
452
459
  }
453
460
  });
454
461
 
455
- //# sourceMappingURL=TableWidget-TfQfFHft.cjs.map
462
+ //# sourceMappingURL=TableWidget-iS_DwHOX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableWidget-iS_DwHOX.cjs","names":["MediaRenderer","getMediaPropsFromShareable","Input"],"sources":["../src/widgets/TableWidget.tsx"],"sourcesContent":["import { useState, useMemo, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { Input } from \"@fluid-app/ui-primitives\";\nimport {\n MediaRenderer,\n getMediaPropsFromShareable,\n} from \"../components/MediaRenderer\";\nimport { type ShareableItem } from \"@fluid-app/portal-core/types\";\n\n// Column definition for the table\ntype ColumnDef = {\n key: string;\n label: string;\n sortable: boolean;\n render?: (value: unknown, item: ShareableItem) => React.ReactNode;\n};\n\nconst DEFAULT_DATA: ShareableItem[] = [];\n\n// ---------------------------------------------------------------------------\n// Column cell renderers\n// ---------------------------------------------------------------------------\n\nfunction ImageCellRenderer(_value: unknown, item: ShareableItem) {\n return (\n <div className=\"h-10 w-10 rounded object-cover\">\n <MediaRenderer {...getMediaPropsFromShareable(item)} />\n </div>\n );\n}\n\nfunction PriceCellRenderer(_value: unknown, item: ShareableItem) {\n return ((item.display_price as string) ?? item.price) || \"-\";\n}\n\nfunction StatusCellRenderer(value: unknown) {\n const status = String(value || \"unknown\").toLowerCase();\n const statusStyles: Record<string, string> = {\n active: \"bg-primary text-primary-foreground\",\n inactive: \"bg-secondary text-secondary-foreground\",\n unknown: \"bg-muted text-muted-foreground\",\n };\n return (\n <span\n className={`inline-flex rounded-full px-2 py-1 text-xs font-medium ${statusStyles[status] || \"bg-muted text-foreground\"}`}\n >\n {String(value || \"Unknown\")}\n </span>\n );\n}\n\n// Default columns for product data\nconst defaultColumns: ColumnDef[] = [\n {\n key: \"imageUrl\",\n label: \"Image\",\n sortable: false,\n render: ImageCellRenderer,\n },\n {\n key: \"title\",\n label: \"Title\",\n sortable: true,\n },\n {\n key: \"price\",\n label: \"Price\",\n sortable: true,\n render: PriceCellRenderer,\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: StatusCellRenderer,\n },\n];\n\ntype TableWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n alternatingColorEnabled?: boolean;\n textColor?: ColorOptions;\n headerBackgroundColor?: ColorOptions;\n headerTextColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Data\n data?: ShareableItem[];\n\n // Features\n filterEnabled?: boolean;\n sortingEnabled?: boolean;\n paginationEnabled?: boolean;\n maxRowsPerPage?: number;\n};\n\nexport function TableWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Products\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n alternatingColorEnabled = true,\n textColor = \"foreground\",\n headerBackgroundColor = \"muted\",\n headerTextColor = \"foreground\",\n padding = 4,\n borderRadius = \"md\",\n\n // Data\n data = DEFAULT_DATA,\n\n // Feature defaults\n filterEnabled = true,\n sortingEnabled = true,\n paginationEnabled = true,\n maxRowsPerPage = 5,\n\n className,\n ...props\n}: TableWidgetProps): React.JSX.Element {\n const backgroundColor = background.color || \"background\";\n const isImageBackground = background.type === \"image\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n isImageBackground\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const pageSize = maxRowsPerPage;\n\n // When using an image background, inner elements should be transparent\n // so the image shows through. Otherwise use the configured colors.\n const innerBg = isImageBackground\n ? \"bg-transparent\"\n : `bg-${backgroundColor}`;\n const innerBgAlt = isImageBackground\n ? \"bg-black/5\"\n : `bg-${backgroundColor}-400`;\n const innerBorder = isImageBackground\n ? \"border-white/20\"\n : `border-${backgroundColor}-600`;\n const headerBg = isImageBackground\n ? \"bg-black/10\"\n : `bg-${headerBackgroundColor}-400`;\n const headerBorder = isImageBackground\n ? \"border-white/20\"\n : `border-${headerBackgroundColor}-600`;\n const paginationBg = isImageBackground\n ? \"bg-black/10\"\n : `bg-${backgroundColor}-400`;\n\n // State for filtering, sorting, and pagination\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [sortConfig, setSortConfig] = useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n const [currentPage, setCurrentPage] = useState(1);\n\n const columns = defaultColumns;\n\n // Filter data\n const filteredData = useMemo(() => {\n let result = [...data];\n\n if (globalFilter) {\n const lowerFilter = globalFilter.toLowerCase();\n result = result.filter((item) =>\n columns.some((col) => {\n const value = item[col.key];\n return String(value ?? \"\")\n .toLowerCase()\n .includes(lowerFilter);\n }),\n );\n }\n\n return result;\n }, [data, globalFilter, columns]);\n\n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return sortConfig.direction === \"asc\" ? 1 : -1;\n if (bValue == null) return sortConfig.direction === \"asc\" ? -1 : 1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortConfig.direction === \"asc\" ? comparison : -comparison;\n });\n }, [filteredData, sortConfig]);\n\n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginationEnabled) return sortedData;\n\n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, currentPage, pageSize, paginationEnabled]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n // Reset to page 1 when filters change\n const handleGlobalFilterChange = (value: string) => {\n setGlobalFilter(value);\n setCurrentPage(1);\n };\n\n // Handle sort\n const handleSort = (key: string) => {\n if (!sortingEnabled) return;\n\n setSortConfig((prev) => {\n if (prev?.key !== key) return { key, direction: \"asc\" };\n if (prev.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n });\n };\n\n // Get sort indicator\n const getSortIndicator = (key: string) => {\n if (sortConfig?.key !== key) return null;\n return sortConfig.direction === \"asc\" ? \" ↑\" : \" ↓\";\n };\n\n // Empty state\n if (data.length === 0) {\n return (\n <div\n className={`@container rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center p-${padding} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div className=\"text-muted-foreground flex min-h-[200px] flex-col items-center justify-center gap-2\">\n <div className=\"text-4xl\">📋</div>\n <p className=\"text-sm\">No data available</p>\n <p className=\"text-muted-foreground/70 text-xs\">\n Connect a data source to display table data\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`@container overflow-hidden ${paginationEnabled ? \"\" : \"overflow-y-auto\"} rounded-${borderRadius} bg-${backgroundColor} bg-cover bg-center text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div\n className={`flex items-center justify-between p-${padding} ${innerBg} space-x-2`}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <h2\n className={`text-${titleFontSize === \"md\" ? \"base\" : titleFontSize} font-bold text-${titleColor} min-w-0 truncate`}\n >\n {titleText}\n </h2>\n )}\n\n {/* Global Search */}\n {filterEnabled && (\n <Input\n type=\"text\"\n placeholder=\"Search all columns...\"\n value={globalFilter}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleGlobalFilterChange(e.target.value)\n }\n className={`w-full rounded-md border ${headerBorder} ${headerBg} ring-offset-muted px-3 py-2 text-sm placeholder:text-${headerTextColor}-900 focus-visible:ring-primary focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`}\n />\n )}\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className={`${headerBg} ${headerBorder} border-y`}>\n {columns.map((col) => (\n <th\n key={col.key}\n className={`px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? \"cursor-pointer select-none hover:opacity-80\" : \"\"}`}\n {...(col.sortable && sortingEnabled\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick: () => handleSort(col.key),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSort(col.key);\n }\n },\n }\n : {})}\n >\n <div className=\"flex flex-col gap-1\">\n <span>\n {col.label}\n {col.sortable &&\n sortingEnabled &&\n getSortIndicator(col.key)}\n </span>\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {paginatedData.map((item, index) => (\n <tr\n key={item.id ?? index}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n {col.render\n ? col.render(item[col.key], item)\n : String(item[col.key] ?? \"-\")}\n </td>\n ))}\n </tr>\n ))}\n {/* Empty rows to fill the last page for consistent pagination position */}\n {paginationEnabled &&\n paginatedData.length < pageSize &&\n paginatedData.length > 0 &&\n Array.from({ length: pageSize - paginatedData.length }).map(\n (_, index) => (\n <tr\n key={`empty-${index}`}\n className={`h-17 border-b ${innerBorder} last:border-none ${innerBg} ${alternatingColorEnabled ? `even:${innerBgAlt}` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n &nbsp;\n </td>\n ))}\n </tr>\n ),\n )}\n </tbody>\n </table>\n </div>\n\n {/* No results message */}\n {paginatedData.length === 0 && data.length > 0 && (\n <div className={`py-8 text-center ${innerBg}`}>\n <p className=\"text-sm\">No results found</p>\n <p className=\"text-xs\">Try adjusting your search</p>\n </div>\n )}\n\n {/* Pagination */}\n {paginationEnabled && totalPages > 1 && (\n <div\n className={`flex flex-col items-center justify-between gap-2 border-t ${innerBorder} p-${padding} @md:flex-row ${paginationBg} text-${textColor}`}\n >\n <p className=\"text-sm\">\n Showing {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n </p>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Previous\n </button>\n <span className=\"text-sm\">\n Page {currentPage} of {totalPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n disabled={currentPage === totalPages}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} ring-offset-muted placeholder:text-muted-foreground focus-visible:ring-primary px-3 py-1 text-sm transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const tableWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"TableWidget\",\n displayName: \"Table Widget\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\"],\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 table\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the table\",\n defaultValue: \"Products\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n label: \"Title Font Size\",\n defaultValue: \"xl\",\n key: \"titleFontSize\",\n description: \"Font size for the widget title\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the table container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"alternatingColorEnabled\",\n label: \"Enable Alternating Colors\",\n type: \"boolean\",\n description: \"Enable alternating colors for table rows\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"headerBackgroundColor\",\n label: \"Header Background\",\n description: \"Background color for the table header\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for table content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"headerTextColor\",\n label: \"Header Text Color\",\n description: \"Text color for the table header\",\n defaultValue: \"foreground\",\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 getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the table 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 table container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Behavior Tab - Features Group\n {\n key: \"filterEnabled\",\n label: \"Enable Filters\",\n type: \"boolean\",\n description: \"Show global search and column filters\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"sortingEnabled\",\n label: \"Enable Sorting\",\n type: \"boolean\",\n description: \"Allow sorting by clicking column headers\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"paginationEnabled\",\n label: \"Enable Pagination\",\n type: \"boolean\",\n description: \"Split data into pages\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"maxRowsPerPage\",\n label: \"Max Rows Per Page\",\n type: \"number\",\n description: \"Maximum number of rows to display per page\",\n min: 1,\n max: 50,\n step: 1,\n defaultValue: 5,\n tab: \"behavior\",\n group: \"Features\",\n requiresKeyToBeTrue: \"paginationEnabled\",\n },\n\n // Data Tab\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure data source for the table\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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AE,IAAI;GAAY,OAAO;GAAY;EACrC;GAAE,IAAI;GAAQ,OAAO;GAAQ;EAC9B;CACD,uBAAuB,CAAC,OAAO;CAC/B,QAAQ;EAEN;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;GACP,qBAAqB;GACtB;0DACgB;GACf,OAAO;GACP,cAAc;GACd,KAAK;GACL,aAAa;GACb,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;uDACY;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB,CAAC;EAGF;GACE,MAAM;GACN,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;uDACa;GACZ,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;uDACY;GACZ,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,MAAM;GACN,OAAO;GACP,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,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,KAAK;GACL,KAAK;GACL,MAAM;GACN,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAGD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,KAAK;GACL,OAAO;GACR;EACF;CACF"}
@@ -104,9 +104,6 @@ const videoWidgetPropertySchema = {
104
104
  key: "fixedHeight",
105
105
  label: "Height",
106
106
  description: "Fixed height of the video container",
107
- min: 10,
108
- max: 1200,
109
- step: 10,
110
107
  defaultValue: "200px",
111
108
  tab: "styling",
112
109
  group: "Design",
@@ -206,4 +203,4 @@ Object.defineProperty(exports, "videoWidgetPropertySchema", {
206
203
  }
207
204
  });
208
205
 
209
- //# sourceMappingURL=VideoWidget-SODAPZO4.cjs.map
206
+ //# sourceMappingURL=VideoWidget-D3Fw1jZE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VideoWidget-SODAPZO4.cjs","names":["MediaRenderer"],"sources":["../src/widgets/VideoWidget.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/portal-core/registries\";\nimport type {\n BorderRadiusOptions,\n ShareableItem,\n} from \"@fluid-app/portal-core/types\";\nimport { MediaRenderer } from \"../components/MediaRenderer\";\n\ntype VideoWidgetProps = ComponentProps<\"div\"> & {\n src?: string;\n poster?: string;\n borderRadius?: BorderRadiusOptions;\n verticalSizing?: \"auto\" | \"fixed\";\n fixedHeight?: string;\n displayFit?: \"cover\" | \"contain\";\n focusPoint?: string;\n controls?: boolean;\n autoplay?: boolean;\n loop?: boolean;\n muted?: boolean;\n resource?: ShareableItem;\n useCustomUrl?: boolean;\n};\n\nexport function VideoWidget({\n src = \"\",\n poster = \"\",\n borderRadius = \"md\",\n verticalSizing = \"auto\",\n fixedHeight = \"200px\",\n displayFit = \"cover\",\n focusPoint,\n controls = true,\n autoplay = false,\n loop = false,\n muted = false,\n resource,\n useCustomUrl,\n}: VideoWidgetProps): React.JSX.Element {\n const effectiveSrc = useCustomUrl ? src : (resource?.videoUrl ?? src);\n const effectivePoster = useCustomUrl\n ? poster\n : (resource?.imageUrl ?? poster);\n\n const isFixed = verticalSizing === \"fixed\";\n\n return (\n <div\n className={`relative w-full overflow-hidden rounded-${borderRadius}`}\n style={isFixed ? { height: fixedHeight } : undefined}\n >\n <MediaRenderer\n mediaType=\"video\"\n src={effectiveSrc}\n poster={effectivePoster}\n objectFit={isFixed ? displayFit : undefined}\n focusPoint={isFixed ? focusPoint : undefined}\n controls={controls}\n autoplay={autoplay}\n loop={loop}\n muted={muted}\n />\n </div>\n );\n}\n\nexport const videoWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"VideoWidget\",\n displayName: \"Video\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n ],\n fields: [\n // Styling tab - Content group\n {\n key: \"resource\",\n label: \"Select Video\",\n type: \"resource\",\n description: \"Browse and select a video\",\n allowedTypes: [\"Medium\"],\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"useCustomUrl\",\n label: \"Use Custom URL\",\n type: \"boolean\",\n description: \"Enter a custom video URL instead of selecting media\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"src\",\n label: \"Video URL\",\n type: \"text\",\n description: \"The source URL of the video\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n {\n key: \"poster\",\n label: \"Poster Image URL\",\n type: \"text\",\n description: \"Thumbnail image displayed before video plays\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n\n // Styling tab - Design group\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"verticalSizing\",\n label: \"Vertical Sizing\",\n type: \"buttonGroup\",\n description: \"How the video height is determined\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Fixed\", value: \"fixed\" },\n ],\n defaultValue: \"auto\",\n tab: \"styling\",\n group: \"Design\",\n },\n getHeightField({\n key: \"fixedHeight\",\n label: \"Height\",\n description: \"Fixed height of the video container\",\n min: 10,\n max: 1200,\n step: 10,\n defaultValue: \"200px\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n }),\n {\n key: \"displayFit\",\n label: \"Display Fit\",\n type: \"buttonGroup\",\n description: \"How the video fills its container\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n ],\n defaultValue: \"cover\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n {\n key: \"focusPoint\",\n label: \"Focus Point\",\n type: \"contentPosition\",\n description: \"The focal point of the video within its container\",\n defaultValue: \"center\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n\n // Behavior tab\n {\n key: \"controls\",\n label: \"Show Controls\",\n type: \"boolean\",\n description: \"Display video playback controls\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"autoplay\",\n label: \"Autoplay\",\n type: \"boolean\",\n description: \"Automatically start playing the video\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"loop\",\n label: \"Loop\",\n type: \"boolean\",\n description: \"Repeat the video when it ends\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"muted\",\n label: \"Muted\",\n type: \"boolean\",\n description: \"Start with audio muted\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n ],\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"VideoWidget-D3Fw1jZE.cjs","names":["MediaRenderer"],"sources":["../src/widgets/VideoWidget.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/portal-core/registries\";\nimport type {\n BorderRadiusOptions,\n ShareableItem,\n} from \"@fluid-app/portal-core/types\";\nimport { MediaRenderer } from \"../components/MediaRenderer\";\n\ntype VideoWidgetProps = ComponentProps<\"div\"> & {\n src?: string;\n poster?: string;\n borderRadius?: BorderRadiusOptions;\n verticalSizing?: \"auto\" | \"fixed\";\n fixedHeight?: string;\n displayFit?: \"cover\" | \"contain\";\n focusPoint?: string;\n controls?: boolean;\n autoplay?: boolean;\n loop?: boolean;\n muted?: boolean;\n resource?: ShareableItem;\n useCustomUrl?: boolean;\n};\n\nexport function VideoWidget({\n src = \"\",\n poster = \"\",\n borderRadius = \"md\",\n verticalSizing = \"auto\",\n fixedHeight = \"200px\",\n displayFit = \"cover\",\n focusPoint,\n controls = true,\n autoplay = false,\n loop = false,\n muted = false,\n resource,\n useCustomUrl,\n}: VideoWidgetProps): React.JSX.Element {\n const effectiveSrc = useCustomUrl ? src : (resource?.videoUrl ?? src);\n const effectivePoster = useCustomUrl\n ? poster\n : (resource?.imageUrl ?? poster);\n\n const isFixed = verticalSizing === \"fixed\";\n\n return (\n <div\n className={`relative w-full overflow-hidden rounded-${borderRadius}`}\n style={isFixed ? { height: fixedHeight } : undefined}\n >\n <MediaRenderer\n mediaType=\"video\"\n src={effectiveSrc}\n poster={effectivePoster}\n objectFit={isFixed ? displayFit : undefined}\n focusPoint={isFixed ? focusPoint : undefined}\n controls={controls}\n autoplay={autoplay}\n loop={loop}\n muted={muted}\n />\n </div>\n );\n}\n\nexport const videoWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"VideoWidget\",\n displayName: \"Video\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n ],\n fields: [\n // Styling tab - Content group\n {\n key: \"resource\",\n label: \"Select Video\",\n type: \"resource\",\n description: \"Browse and select a video\",\n allowedTypes: [\"Medium\"],\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"useCustomUrl\",\n label: \"Use Custom URL\",\n type: \"boolean\",\n description: \"Enter a custom video URL instead of selecting media\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"src\",\n label: \"Video URL\",\n type: \"text\",\n description: \"The source URL of the video\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n {\n key: \"poster\",\n label: \"Poster Image URL\",\n type: \"text\",\n description: \"Thumbnail image displayed before video plays\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n\n // Styling tab - Design group\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"verticalSizing\",\n label: \"Vertical Sizing\",\n type: \"buttonGroup\",\n description: \"How the video height is determined\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Fixed\", value: \"fixed\" },\n ],\n defaultValue: \"auto\",\n tab: \"styling\",\n group: \"Design\",\n },\n getHeightField({\n key: \"fixedHeight\",\n label: \"Height\",\n description: \"Fixed height of the video container\",\n defaultValue: \"200px\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n }),\n {\n key: \"displayFit\",\n label: \"Display Fit\",\n type: \"buttonGroup\",\n description: \"How the video fills its container\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n ],\n defaultValue: \"cover\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n {\n key: \"focusPoint\",\n label: \"Focus Point\",\n type: \"contentPosition\",\n description: \"The focal point of the video within its container\",\n defaultValue: \"center\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n\n // Behavior tab\n {\n key: \"controls\",\n label: \"Show Controls\",\n type: \"boolean\",\n description: \"Display video playback controls\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"autoplay\",\n label: \"Autoplay\",\n type: \"boolean\",\n description: \"Automatically start playing the video\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"loop\",\n label: \"Loop\",\n type: \"boolean\",\n description: \"Repeat the video when it ends\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"muted\",\n label: \"Muted\",\n type: \"boolean\",\n description: \"Start with audio muted\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n ],\n};\n"],"mappings":";;;;;;;;;AA6BA,SAAgB,YAAY,EAC1B,MAAM,IACN,SAAS,IACT,eAAe,MACf,iBAAiB,QACjB,cAAc,SACd,aAAa,SACb,YACA,WAAW,MACX,WAAW,OACX,OAAO,OACP,QAAQ,OACR,UACA,gBACsC;CACtC,MAAM,eAAe,eAAe,MAAO,UAAU,YAAY;CACjE,MAAM,kBAAkB,eACpB,SACC,UAAU,YAAY;CAE3B,MAAM,UAAU,mBAAmB;AAEnC,QACE,iBAAA,GAAA,kBAAA,KAAC,OAAD;EACE,WAAW,2CAA2C;EACtD,OAAO,UAAU,EAAE,QAAQ,aAAa,GAAG,KAAA;YAE3C,iBAAA,GAAA,kBAAA,KAACA,sBAAAA,eAAD;GACE,WAAU;GACV,KAAK;GACL,QAAQ;GACR,WAAW,UAAU,aAAa,KAAA;GAClC,YAAY,UAAU,aAAa,KAAA;GACzB;GACA;GACJ;GACC;GACP,CAAA;EACE,CAAA;;AAIV,MAAa,4BAAkD;CAC7D,YAAY;CACZ,aAAa;CACb,YAAY,CACV;EAAE,IAAI;EAAW,OAAO;EAAW,EACnC;EAAE,IAAI;EAAY,OAAO;EAAY,CACtC;CACD,QAAQ;EAEN;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc,CAAC,SAAS;GACxB,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;GACP,qBAAqB;GACtB;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;8DAGoB;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CACP;IAAE,OAAO;IAAQ,OAAO;IAAQ,EAChC;IAAE,OAAO;IAAS,OAAO;IAAS,CACnC;GACD,cAAc;GACd,KAAK;GACL,OAAO;GACR;wDACc;GACb,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D,CAAC;EACF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CACP;IAAE,OAAO;IAAS,OAAO;IAAS,EAClC;IAAE,OAAO;IAAW,OAAO;IAAW,CACvC;GACD,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D;EAGD;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,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACF;CACF"}
@@ -104,9 +104,6 @@ const videoWidgetPropertySchema = {
104
104
  key: "fixedHeight",
105
105
  label: "Height",
106
106
  description: "Fixed height of the video container",
107
- min: 10,
108
- max: 1200,
109
- step: 10,
110
107
  defaultValue: "200px",
111
108
  tab: "styling",
112
109
  group: "Design",
@@ -189,4 +186,4 @@ const videoWidgetPropertySchema = {
189
186
  //#endregion
190
187
  export { VideoWidget_exports as n, videoWidgetPropertySchema as r, VideoWidget as t };
191
188
 
192
- //# sourceMappingURL=VideoWidget-D6C_jHOF.mjs.map
189
+ //# sourceMappingURL=VideoWidget-D_1kluGw.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoWidget-D_1kluGw.mjs","names":[],"sources":["../src/widgets/VideoWidget.tsx"],"sourcesContent":["import type { ComponentProps } from \"react\";\nimport type React from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/portal-core/registries\";\nimport type {\n BorderRadiusOptions,\n ShareableItem,\n} from \"@fluid-app/portal-core/types\";\nimport { MediaRenderer } from \"../components/MediaRenderer\";\n\ntype VideoWidgetProps = ComponentProps<\"div\"> & {\n src?: string;\n poster?: string;\n borderRadius?: BorderRadiusOptions;\n verticalSizing?: \"auto\" | \"fixed\";\n fixedHeight?: string;\n displayFit?: \"cover\" | \"contain\";\n focusPoint?: string;\n controls?: boolean;\n autoplay?: boolean;\n loop?: boolean;\n muted?: boolean;\n resource?: ShareableItem;\n useCustomUrl?: boolean;\n};\n\nexport function VideoWidget({\n src = \"\",\n poster = \"\",\n borderRadius = \"md\",\n verticalSizing = \"auto\",\n fixedHeight = \"200px\",\n displayFit = \"cover\",\n focusPoint,\n controls = true,\n autoplay = false,\n loop = false,\n muted = false,\n resource,\n useCustomUrl,\n}: VideoWidgetProps): React.JSX.Element {\n const effectiveSrc = useCustomUrl ? src : (resource?.videoUrl ?? src);\n const effectivePoster = useCustomUrl\n ? poster\n : (resource?.imageUrl ?? poster);\n\n const isFixed = verticalSizing === \"fixed\";\n\n return (\n <div\n className={`relative w-full overflow-hidden rounded-${borderRadius}`}\n style={isFixed ? { height: fixedHeight } : undefined}\n >\n <MediaRenderer\n mediaType=\"video\"\n src={effectiveSrc}\n poster={effectivePoster}\n objectFit={isFixed ? displayFit : undefined}\n focusPoint={isFixed ? focusPoint : undefined}\n controls={controls}\n autoplay={autoplay}\n loop={loop}\n muted={muted}\n />\n </div>\n );\n}\n\nexport const videoWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"VideoWidget\",\n displayName: \"Video\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n ],\n fields: [\n // Styling tab - Content group\n {\n key: \"resource\",\n label: \"Select Video\",\n type: \"resource\",\n description: \"Browse and select a video\",\n allowedTypes: [\"Medium\"],\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"useCustomUrl\",\n label: \"Use Custom URL\",\n type: \"boolean\",\n description: \"Enter a custom video URL instead of selecting media\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"src\",\n label: \"Video URL\",\n type: \"text\",\n description: \"The source URL of the video\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n {\n key: \"poster\",\n label: \"Poster Image URL\",\n type: \"text\",\n description: \"Thumbnail image displayed before video plays\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n\n // Styling tab - Design group\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"verticalSizing\",\n label: \"Vertical Sizing\",\n type: \"buttonGroup\",\n description: \"How the video height is determined\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Fixed\", value: \"fixed\" },\n ],\n defaultValue: \"auto\",\n tab: \"styling\",\n group: \"Design\",\n },\n getHeightField({\n key: \"fixedHeight\",\n label: \"Height\",\n description: \"Fixed height of the video container\",\n defaultValue: \"200px\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n }),\n {\n key: \"displayFit\",\n label: \"Display Fit\",\n type: \"buttonGroup\",\n description: \"How the video fills its container\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n ],\n defaultValue: \"cover\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n {\n key: \"focusPoint\",\n label: \"Focus Point\",\n type: \"contentPosition\",\n description: \"The focal point of the video within its container\",\n defaultValue: \"center\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n\n // Behavior tab\n {\n key: \"controls\",\n label: \"Show Controls\",\n type: \"boolean\",\n description: \"Display video playback controls\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"autoplay\",\n label: \"Autoplay\",\n type: \"boolean\",\n description: \"Automatically start playing the video\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"loop\",\n label: \"Loop\",\n type: \"boolean\",\n description: \"Repeat the video when it ends\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"muted\",\n label: \"Muted\",\n type: \"boolean\",\n description: \"Start with audio muted\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n ],\n};\n"],"mappings":";;;;;;;;;AA6BA,SAAgB,YAAY,EAC1B,MAAM,IACN,SAAS,IACT,eAAe,MACf,iBAAiB,QACjB,cAAc,SACd,aAAa,SACb,YACA,WAAW,MACX,WAAW,OACX,OAAO,OACP,QAAQ,OACR,UACA,gBACsC;CACtC,MAAM,eAAe,eAAe,MAAO,UAAU,YAAY;CACjE,MAAM,kBAAkB,eACpB,SACC,UAAU,YAAY;CAE3B,MAAM,UAAU,mBAAmB;AAEnC,QACE,oBAAC,OAAD;EACE,WAAW,2CAA2C;EACtD,OAAO,UAAU,EAAE,QAAQ,aAAa,GAAG,KAAA;YAE3C,oBAAC,eAAD;GACE,WAAU;GACV,KAAK;GACL,QAAQ;GACR,WAAW,UAAU,aAAa,KAAA;GAClC,YAAY,UAAU,aAAa,KAAA;GACzB;GACA;GACJ;GACC;GACP,CAAA;EACE,CAAA;;AAIV,MAAa,4BAAkD;CAC7D,YAAY;CACZ,aAAa;CACb,YAAY,CACV;EAAE,IAAI;EAAW,OAAO;EAAW,EACnC;EAAE,IAAI;EAAY,OAAO;EAAY,CACtC;CACD,QAAQ;EAEN;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc,CAAC,SAAS;GACxB,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;GACP,qBAAqB;GACtB;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,qBAAqB;GACtB;EAGD,qBAAqB;GACnB,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR,CAAC;EACF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CACP;IAAE,OAAO;IAAQ,OAAO;IAAQ,EAChC;IAAE,OAAO;IAAS,OAAO;IAAS,CACnC;GACD,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACD,eAAe;GACb,KAAK;GACL,OAAO;GACP,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D,CAAC;EACF;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,SAAS,CACP;IAAE,OAAO;IAAS,OAAO;IAAS,EAClC;IAAE,OAAO;IAAW,OAAO;IAAW,CACvC;GACD,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D;EACD;GACE,KAAK;GACL,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACP,kBAAkB;IAAE,KAAK;IAAkB,OAAO;IAAS;GAC5D;EAGD;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,OAAO;GACP,MAAM;GACN,aAAa;GACb,cAAc;GACd,KAAK;GACL,OAAO;GACR;EACF;CACF"}
@@ -3,44 +3,44 @@ require("../chunk-CZWwpsFl.cjs");
3
3
  const require_TextWidget = require("../TextWidget-D6Ug_2Z1.cjs");
4
4
  const require_AlertWidget = require("../AlertWidget-AS_8Jjbd.cjs");
5
5
  const require_CalendarWidget = require("../CalendarWidget-DW7q6Q7_.cjs");
6
- const require_CarouselWidget = require("../CarouselWidget-Bdn0LVXT.cjs");
6
+ const require_CarouselWidget = require("../CarouselWidget-PEm6vktC.cjs");
7
7
  const require_CatchUpWidget = require("../CatchUpWidget-CZMptzf8.cjs");
8
- const require_ChartWidget = require("../ChartWidget-DQB7K6S0.cjs");
8
+ const require_ChartWidget = require("../ChartWidget-aspz2XF6.cjs");
9
9
  const require_LayoutWidget = require("../LayoutWidget-C4-ka0Ge.cjs");
10
10
  const require_ContainerWidget = require("../ContainerWidget-rGsakG66.cjs");
11
- const require_EmbedWidget = require("../EmbedWidget-mv5ce32s.cjs");
12
- const require_ImageWidget = require("../ImageWidget-DFt4mJJx.cjs");
11
+ const require_EmbedWidget = require("../EmbedWidget-BENxbwxX.cjs");
12
+ const require_ImageWidget = require("../ImageWidget-B2stGyqB.cjs");
13
13
  const require_ListWidget = require("../ListWidget-RHQ2fQXa.cjs");
14
14
  const require_MySiteWidget = require("../MySiteWidget-A_cYFgxJ.cjs");
15
- const require_NestedWidget = require("../NestedWidget-ofk9O-t1.cjs");
15
+ const require_NestedWidget = require("../NestedWidget-Dbo3dXEi.cjs");
16
16
  const require_QuickShareWidget = require("../QuickShareWidget-DWvgEy74.cjs");
17
17
  const require_RecentActivityWidget = require("../RecentActivityWidget-wODng8dt.cjs");
18
- const require_SpacerWidget = require("../SpacerWidget-Bgz6701y.cjs");
19
- const require_TableWidget = require("../TableWidget-TfQfFHft.cjs");
18
+ const require_SpacerWidget = require("../SpacerWidget-BFboILmz.cjs");
19
+ const require_TableWidget = require("../TableWidget-iS_DwHOX.cjs");
20
20
  const require_ToDoWidget = require("../ToDoWidget-Dvs0GDkx.cjs");
21
- const require_VideoWidget = require("../VideoWidget-SODAPZO4.cjs");
21
+ const require_VideoWidget = require("../VideoWidget-D3Fw1jZE.cjs");
22
22
  let _fluid_app_portal_core_registries = require("@fluid-app/portal-core/registries");
23
23
  //#region src/widgets/index.ts
24
24
  const widgetPropertySchemas = {
25
25
  AlertWidget: () => Promise.resolve().then(() => require("../AlertWidget-AS_8Jjbd.cjs")).then((n) => n.AlertWidget_exports).then((m) => m.alertWidgetPropertySchema),
26
26
  CalendarWidget: () => Promise.resolve().then(() => require("../CalendarWidget-DW7q6Q7_.cjs")).then((n) => n.CalendarWidget_exports).then((m) => m.calendarWidgetPropertySchema),
27
- CarouselWidget: () => Promise.resolve().then(() => require("../CarouselWidget-Bdn0LVXT.cjs")).then((n) => n.CarouselWidget_exports).then((m) => m.carouselWidgetPropertySchema),
27
+ CarouselWidget: () => Promise.resolve().then(() => require("../CarouselWidget-PEm6vktC.cjs")).then((n) => n.CarouselWidget_exports).then((m) => m.carouselWidgetPropertySchema),
28
28
  CatchUpWidget: () => Promise.resolve().then(() => require("../CatchUpWidget-CZMptzf8.cjs")).then((n) => n.CatchUpWidget_exports).then((m) => m.catchUpWidgetPropertySchema),
29
- ChartWidget: () => Promise.resolve().then(() => require("../ChartWidget-DQB7K6S0.cjs")).then((n) => n.ChartWidget_exports).then((m) => m.chartWidgetPropertySchema),
29
+ ChartWidget: () => Promise.resolve().then(() => require("../ChartWidget-aspz2XF6.cjs")).then((n) => n.ChartWidget_exports).then((m) => m.chartWidgetPropertySchema),
30
30
  ContainerWidget: () => Promise.resolve().then(() => require("../ContainerWidget-CHa4gVvV.cjs")).then((m) => m.containerWidgetPropertySchema),
31
- EmbedWidget: () => Promise.resolve().then(() => require("../EmbedWidget-mv5ce32s.cjs")).then((n) => n.EmbedWidget_exports).then((m) => m.embedWidgetPropertySchema),
32
- ImageWidget: () => Promise.resolve().then(() => require("../ImageWidget-DFt4mJJx.cjs")).then((n) => n.ImageWidget_exports).then((m) => m.imageWidgetPropertySchema),
31
+ EmbedWidget: () => Promise.resolve().then(() => require("../EmbedWidget-BENxbwxX.cjs")).then((n) => n.EmbedWidget_exports).then((m) => m.embedWidgetPropertySchema),
32
+ ImageWidget: () => Promise.resolve().then(() => require("../ImageWidget-B2stGyqB.cjs")).then((n) => n.ImageWidget_exports).then((m) => m.imageWidgetPropertySchema),
33
33
  LayoutWidget: () => Promise.resolve().then(() => require("../LayoutWidget-D4haEqTQ.cjs")).then((m) => m.layoutWidgetPropertySchema),
34
34
  ListWidget: () => Promise.resolve().then(() => require("../ListWidget-RHQ2fQXa.cjs")).then((n) => n.ListWidget_exports).then((m) => m.listWidgetPropertySchema),
35
35
  MySiteWidget: () => Promise.resolve().then(() => require("../MySiteWidget-A_cYFgxJ.cjs")).then((n) => n.MySiteWidget_exports).then((m) => m.mySiteWidgetPropertySchema),
36
- NestedWidget: () => Promise.resolve().then(() => require("../NestedWidget-ofk9O-t1.cjs")).then((n) => n.NestedWidget_exports).then((m) => m.nestedWidgetPropertySchema),
36
+ NestedWidget: () => Promise.resolve().then(() => require("../NestedWidget-Dbo3dXEi.cjs")).then((n) => n.NestedWidget_exports).then((m) => m.nestedWidgetPropertySchema),
37
37
  QuickShareWidget: () => Promise.resolve().then(() => require("../QuickShareWidget-DWvgEy74.cjs")).then((n) => n.QuickShareWidget_exports).then((m) => m.quickShareWidgetPropertySchema),
38
38
  RecentActivityWidget: () => Promise.resolve().then(() => require("../RecentActivityWidget-wODng8dt.cjs")).then((n) => n.RecentActivityWidget_exports).then((m) => m.recentActivityWidgetPropertySchema),
39
- SpacerWidget: () => Promise.resolve().then(() => require("../SpacerWidget-Bgz6701y.cjs")).then((n) => n.SpacerWidget_exports).then((m) => m.spacerWidgetPropertySchema),
40
- TableWidget: () => Promise.resolve().then(() => require("../TableWidget-TfQfFHft.cjs")).then((n) => n.TableWidget_exports).then((m) => m.tableWidgetPropertySchema),
39
+ SpacerWidget: () => Promise.resolve().then(() => require("../SpacerWidget-BFboILmz.cjs")).then((n) => n.SpacerWidget_exports).then((m) => m.spacerWidgetPropertySchema),
40
+ TableWidget: () => Promise.resolve().then(() => require("../TableWidget-iS_DwHOX.cjs")).then((n) => n.TableWidget_exports).then((m) => m.tableWidgetPropertySchema),
41
41
  TextWidget: () => Promise.resolve().then(() => require("../TextWidget-D6Ug_2Z1.cjs")).then((n) => n.TextWidget_exports).then((m) => m.textWidgetPropertySchema),
42
42
  ToDoWidget: () => Promise.resolve().then(() => require("../ToDoWidget-Dvs0GDkx.cjs")).then((n) => n.ToDoWidget_exports).then((m) => m.toDoWidgetPropertySchema),
43
- VideoWidget: () => Promise.resolve().then(() => require("../VideoWidget-SODAPZO4.cjs")).then((n) => n.VideoWidget_exports).then((m) => m.videoWidgetPropertySchema)
43
+ VideoWidget: () => Promise.resolve().then(() => require("../VideoWidget-D3Fw1jZE.cjs")).then((n) => n.VideoWidget_exports).then((m) => m.videoWidgetPropertySchema)
44
44
  };
45
45
  //#endregion
46
46
  exports.AlertWidget = require_AlertWidget.AlertWidget;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/widgets/TextWidget.tsx","../../src/widgets/AlertWidget.tsx","../../src/widgets/CalendarWidget.tsx","../../src/widgets/CarouselWidget.tsx","../../src/widgets/CatchUpWidget.tsx","../../src/widgets/ChartWidget.tsx","../../src/widgets/LayoutWidget.tsx","../../src/widgets/ContainerWidget.tsx","../../src/widgets/EmbedWidget.tsx","../../src/widgets/ImageWidget.tsx","../../src/widgets/ListWidget.tsx","../../src/widgets/MySiteWidget.tsx","../../src/widgets/NestedWidget.tsx","../../src/widgets/QuickShareWidget.tsx","../../src/widgets/RecentActivityWidget.tsx","../../src/widgets/SpacerWidget.tsx","../../src/widgets/TableWidget.tsx","../../src/widgets/ToDoWidget.tsx","../../src/widgets/VideoWidget.tsx","../../src/widgets/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/widgets/TextWidget.tsx","../../src/widgets/AlertWidget.tsx","../../src/widgets/CalendarWidget.tsx","../../src/widgets/CarouselWidget.tsx","../../src/widgets/CatchUpWidget.tsx","../../src/widgets/ChartWidget.tsx","../../src/widgets/LayoutWidget.tsx","../../src/widgets/ContainerWidget.tsx","../../src/widgets/EmbedWidget.tsx","../../src/widgets/ImageWidget.tsx","../../src/widgets/ListWidget.tsx","../../src/widgets/MySiteWidget.tsx","../../src/widgets/NestedWidget.tsx","../../src/widgets/QuickShareWidget.tsx","../../src/widgets/RecentActivityWidget.tsx","../../src/widgets/SpacerWidget.tsx","../../src/widgets/TableWidget.tsx","../../src/widgets/ToDoWidget.tsx","../../src/widgets/VideoWidget.tsx","../../src/widgets/index.ts"],"mappings":"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"}