@fluid-app/rep-widgets 0.1.12 → 0.1.14
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/CalendarWidget-RAB5VESS.cjs +18 -0
- package/dist/{CalendarWidget-4C5V2LX7.cjs.map → CalendarWidget-RAB5VESS.cjs.map} +1 -1
- package/dist/CalendarWidget-SEYTR3AG.js +5 -0
- package/dist/{CalendarWidget-OJHI3AYU.js.map → CalendarWidget-SEYTR3AG.js.map} +1 -1
- package/dist/CarouselWidget-RAVL2526.js +6 -0
- package/dist/{CarouselWidget-M3CEN3HQ.js.map → CarouselWidget-RAVL2526.js.map} +1 -1
- package/dist/CarouselWidget-U6226DQZ.cjs +19 -0
- package/dist/{CarouselWidget-KJZHB6XK.cjs.map → CarouselWidget-U6226DQZ.cjs.map} +1 -1
- package/dist/CatchUpWidget-NEMYZ7L5.js +5 -0
- package/dist/{CatchUpWidget-RARSAVXN.js.map → CatchUpWidget-NEMYZ7L5.js.map} +1 -1
- package/dist/CatchUpWidget-XBU2GPFS.cjs +18 -0
- package/dist/{CatchUpWidget-YTMRMLWH.cjs.map → CatchUpWidget-XBU2GPFS.cjs.map} +1 -1
- package/dist/EmbedWidget-HJH4Q5EH.cjs +16 -0
- package/dist/{EmbedWidget-X7FB7C45.cjs.map → EmbedWidget-HJH4Q5EH.cjs.map} +1 -1
- package/dist/EmbedWidget-JCTT47DQ.js +3 -0
- package/dist/{EmbedWidget-ATU2WS2X.js.map → EmbedWidget-JCTT47DQ.js.map} +1 -1
- package/dist/ImageWidget-BA2V3DPL.js +4 -0
- package/dist/{ImageWidget-BBLG66SD.js.map → ImageWidget-BA2V3DPL.js.map} +1 -1
- package/dist/ImageWidget-SBC7LK7A.cjs +17 -0
- package/dist/{ImageWidget-6ATLD5II.cjs.map → ImageWidget-SBC7LK7A.cjs.map} +1 -1
- package/dist/ListWidget-AXC2WZBP.js +6 -0
- package/dist/{ListWidget-U4Z353KL.js.map → ListWidget-AXC2WZBP.js.map} +1 -1
- package/dist/ListWidget-E775MIAK.cjs +19 -0
- package/dist/{ListWidget-MP6AMXCM.cjs.map → ListWidget-E775MIAK.cjs.map} +1 -1
- package/dist/MySiteWidget-D6NFECIP.cjs +18 -0
- package/dist/{MySiteWidget-J7KD76GZ.cjs.map → MySiteWidget-D6NFECIP.cjs.map} +1 -1
- package/dist/MySiteWidget-YA4DUIG7.js +5 -0
- package/dist/{MySiteWidget-CXZTDDJM.js.map → MySiteWidget-YA4DUIG7.js.map} +1 -1
- package/dist/NestedWidget-UDNHYTMZ.cjs +19 -0
- package/dist/{NestedWidget-JKEJ5ZCV.cjs.map → NestedWidget-UDNHYTMZ.cjs.map} +1 -1
- package/dist/NestedWidget-VCZ3JBQY.js +6 -0
- package/dist/{NestedWidget-N6V5LT4B.js.map → NestedWidget-VCZ3JBQY.js.map} +1 -1
- package/dist/QuickShareWidget-LNUEJICJ.cjs +17 -0
- package/dist/{QuickShareWidget-B6TOLKM7.cjs.map → QuickShareWidget-LNUEJICJ.cjs.map} +1 -1
- package/dist/QuickShareWidget-SOQEHDR7.js +4 -0
- package/dist/{QuickShareWidget-TNW4ILJ2.js.map → QuickShareWidget-SOQEHDR7.js.map} +1 -1
- package/dist/RecentActivityWidget-HA5N4HCZ.cjs +18 -0
- package/dist/{RecentActivityWidget-5UJ4UN2Y.cjs.map → RecentActivityWidget-HA5N4HCZ.cjs.map} +1 -1
- package/dist/RecentActivityWidget-TP32GKHT.js +5 -0
- package/dist/{RecentActivityWidget-BF6AWDCX.js.map → RecentActivityWidget-TP32GKHT.js.map} +1 -1
- package/dist/SpacerWidget-DX7QRN54.cjs +16 -0
- package/dist/{SpacerWidget-APJKG3DG.cjs.map → SpacerWidget-DX7QRN54.cjs.map} +1 -1
- package/dist/SpacerWidget-H464T5YD.js +3 -0
- package/dist/{SpacerWidget-7KQ6UPRH.js.map → SpacerWidget-H464T5YD.js.map} +1 -1
- package/dist/TableWidget-D46CWY4M.cjs +18 -0
- package/dist/{TableWidget-HVBEVBC6.cjs.map → TableWidget-D46CWY4M.cjs.map} +1 -1
- package/dist/TableWidget-P4C4ZI23.js +5 -0
- package/dist/{TableWidget-PMQFL7VC.js.map → TableWidget-P4C4ZI23.js.map} +1 -1
- package/dist/ToDoWidget-AOAMWMN4.js +5 -0
- package/dist/{ToDoWidget-ZAV3YC23.js.map → ToDoWidget-AOAMWMN4.js.map} +1 -1
- package/dist/ToDoWidget-L6TXR37G.cjs +18 -0
- package/dist/{ToDoWidget-34ZHMX4G.cjs.map → ToDoWidget-L6TXR37G.cjs.map} +1 -1
- package/dist/VideoWidget-T6S2D4WS.cjs +17 -0
- package/dist/{VideoWidget-DYPFWIZX.cjs.map → VideoWidget-T6S2D4WS.cjs.map} +1 -1
- package/dist/VideoWidget-TI72FPLK.js +4 -0
- package/dist/{VideoWidget-KY3VZHYD.js.map → VideoWidget-TI72FPLK.js.map} +1 -1
- package/dist/{chunk-XCJUKCGP.cjs → chunk-22AKFT5D.cjs} +3 -3
- package/dist/{chunk-XCJUKCGP.cjs.map → chunk-22AKFT5D.cjs.map} +1 -1
- package/dist/{chunk-CMPGAQCS.cjs → chunk-3EGVZDJH.cjs} +7 -7
- package/dist/{chunk-CMPGAQCS.cjs.map → chunk-3EGVZDJH.cjs.map} +1 -1
- package/dist/{chunk-ZDWZKRJ4.js → chunk-4ODOZF7H.js} +3 -3
- package/dist/{chunk-ZDWZKRJ4.js.map → chunk-4ODOZF7H.js.map} +1 -1
- package/dist/{chunk-AWEFCI4H.js → chunk-4ZFOJT6H.js} +3 -3
- package/dist/{chunk-AWEFCI4H.js.map → chunk-4ZFOJT6H.js.map} +1 -1
- package/dist/{chunk-A5AVY3ML.cjs → chunk-5VJYKNCS.cjs} +4 -4
- package/dist/{chunk-A5AVY3ML.cjs.map → chunk-5VJYKNCS.cjs.map} +1 -1
- package/dist/{chunk-LOXFR6XC.cjs → chunk-6RNVWRDD.cjs} +3 -3
- package/dist/{chunk-LOXFR6XC.cjs.map → chunk-6RNVWRDD.cjs.map} +1 -1
- package/dist/{chunk-QV3OAAEQ.cjs → chunk-AQO2AKU2.cjs} +4 -4
- package/dist/{chunk-QV3OAAEQ.cjs.map → chunk-AQO2AKU2.cjs.map} +1 -1
- package/dist/{chunk-EEZISZ5T.js → chunk-D43XJWX3.js} +3 -3
- package/dist/{chunk-EEZISZ5T.js.map → chunk-D43XJWX3.js.map} +1 -1
- package/dist/{chunk-BC72P5EU.cjs → chunk-FDAUWHSY.cjs} +7 -7
- package/dist/{chunk-BC72P5EU.cjs.map → chunk-FDAUWHSY.cjs.map} +1 -1
- package/dist/{chunk-BYGUUGSO.js → chunk-GC4SZ75B.js} +3 -3
- package/dist/{chunk-BYGUUGSO.js.map → chunk-GC4SZ75B.js.map} +1 -1
- package/dist/{chunk-DPPFLZ7G.js → chunk-HOFHBVGL.js} +4 -4
- package/dist/{chunk-DPPFLZ7G.js.map → chunk-HOFHBVGL.js.map} +1 -1
- package/dist/{chunk-6EKEDQJB.js → chunk-IF36TB2H.js} +8 -8
- package/dist/{chunk-6EKEDQJB.js.map → chunk-IF36TB2H.js.map} +1 -1
- package/dist/{chunk-GRFCSQ2M.js → chunk-JIS2K5YR.js} +3 -3
- package/dist/{chunk-GRFCSQ2M.js.map → chunk-JIS2K5YR.js.map} +1 -1
- package/dist/{chunk-MAESFG6E.cjs → chunk-JSHU7P56.cjs} +16 -16
- package/dist/{chunk-MAESFG6E.cjs.map → chunk-JSHU7P56.cjs.map} +1 -1
- package/dist/{chunk-T6BC5TUS.js → chunk-L3HN4J2Y.js} +3 -3
- package/dist/{chunk-T6BC5TUS.js.map → chunk-L3HN4J2Y.js.map} +1 -1
- package/dist/{chunk-OGV2OPY7.cjs → chunk-LZJVUYSQ.cjs} +9 -9
- package/dist/{chunk-OGV2OPY7.cjs.map → chunk-LZJVUYSQ.cjs.map} +1 -1
- package/dist/{chunk-6JPKUUAC.js → chunk-OUA26XZV.js} +14 -14
- package/dist/{chunk-6JPKUUAC.js.map → chunk-OUA26XZV.js.map} +1 -1
- package/dist/{chunk-GXDSEJJL.cjs → chunk-P4VXS3BG.cjs} +7 -7
- package/dist/{chunk-GXDSEJJL.cjs.map → chunk-P4VXS3BG.cjs.map} +1 -1
- package/dist/{chunk-OZBZOHR4.cjs → chunk-Q5YXTDPX.cjs} +4 -4
- package/dist/{chunk-OZBZOHR4.cjs.map → chunk-Q5YXTDPX.cjs.map} +1 -1
- package/dist/{chunk-AMNYGW7I.js → chunk-QB6UW6DD.js} +3 -3
- package/dist/{chunk-AMNYGW7I.js.map → chunk-QB6UW6DD.js.map} +1 -1
- package/dist/{chunk-BQVC5IMY.js → chunk-QG2INAJC.js} +6 -6
- package/dist/{chunk-BQVC5IMY.js.map → chunk-QG2INAJC.js.map} +1 -1
- package/dist/{chunk-3CUVGQQI.cjs → chunk-QXIIJNQK.cjs} +3 -3
- package/dist/{chunk-3CUVGQQI.cjs.map → chunk-QXIIJNQK.cjs.map} +1 -1
- package/dist/{chunk-GWICPGTA.js → chunk-ROLEPF3N.js} +4 -4
- package/dist/{chunk-GWICPGTA.js.map → chunk-ROLEPF3N.js.map} +1 -1
- package/dist/{chunk-2KV26SKG.cjs → chunk-SL5YD6BQ.cjs} +10 -10
- package/dist/{chunk-2KV26SKG.cjs.map → chunk-SL5YD6BQ.cjs.map} +1 -1
- package/dist/{chunk-HA7IVIPJ.cjs → chunk-SLGOKKU7.cjs} +10 -10
- package/dist/{chunk-HA7IVIPJ.cjs.map → chunk-SLGOKKU7.cjs.map} +1 -1
- package/dist/{chunk-QLXZEIFC.js → chunk-SLNDROHP.js} +7 -7
- package/dist/{chunk-QLXZEIFC.js.map → chunk-SLNDROHP.js.map} +1 -1
- package/dist/{chunk-2QNE7OLP.cjs → chunk-U6ODF4YB.cjs} +4 -4
- package/dist/{chunk-2QNE7OLP.cjs.map → chunk-U6ODF4YB.cjs.map} +1 -1
- package/dist/{chunk-EBYQ6EXT.js → chunk-UZ7TYGUO.js} +3 -3
- package/dist/{chunk-EBYQ6EXT.js.map → chunk-UZ7TYGUO.js.map} +1 -1
- package/dist/{chunk-4Y3HAK22.cjs → chunk-VB5MPLLG.cjs} +4 -4
- package/dist/{chunk-4Y3HAK22.cjs.map → chunk-VB5MPLLG.cjs.map} +1 -1
- package/dist/{chunk-DJPXRRHL.cjs → chunk-WTQNKZKV.cjs} +4 -4
- package/dist/{chunk-DJPXRRHL.cjs.map → chunk-WTQNKZKV.cjs.map} +1 -1
- package/dist/{chunk-FM3TRTCP.js → chunk-YDLNXR7R.js} +6 -6
- package/dist/{chunk-FM3TRTCP.js.map → chunk-YDLNXR7R.js.map} +1 -1
- package/dist/{chunk-FKDPFJHH.js → chunk-YOJRRPOG.js} +4 -4
- package/dist/{chunk-FKDPFJHH.js.map → chunk-YOJRRPOG.js.map} +1 -1
- package/dist/{chunk-PK7Y3Q6A.cjs → chunk-YZATKTYO.cjs} +3 -3
- package/dist/{chunk-PK7Y3Q6A.cjs.map → chunk-YZATKTYO.cjs.map} +1 -1
- package/dist/{chunk-NUJO5V6H.js → chunk-ZLTPLVOF.js} +6 -6
- package/dist/{chunk-NUJO5V6H.js.map → chunk-ZLTPLVOF.js.map} +1 -1
- package/dist/components/index.cjs +2 -2
- package/dist/components/index.js +1 -1
- package/dist/core/index.cjs +4 -4
- package/dist/core/index.js +1 -1
- package/dist/ui/index.cjs +2 -2
- package/dist/ui/index.js +1 -1
- package/dist/widgets/index.cjs +59 -59
- package/dist/widgets/index.js +31 -31
- package/package.json +16 -18
- package/styles/globals.css +1 -0
- package/dist/CalendarWidget-4C5V2LX7.cjs +0 -18
- package/dist/CalendarWidget-OJHI3AYU.js +0 -5
- package/dist/CarouselWidget-KJZHB6XK.cjs +0 -19
- package/dist/CarouselWidget-M3CEN3HQ.js +0 -6
- package/dist/CatchUpWidget-RARSAVXN.js +0 -5
- package/dist/CatchUpWidget-YTMRMLWH.cjs +0 -18
- package/dist/EmbedWidget-ATU2WS2X.js +0 -3
- package/dist/EmbedWidget-X7FB7C45.cjs +0 -16
- package/dist/ImageWidget-6ATLD5II.cjs +0 -17
- package/dist/ImageWidget-BBLG66SD.js +0 -4
- package/dist/ListWidget-MP6AMXCM.cjs +0 -19
- package/dist/ListWidget-U4Z353KL.js +0 -6
- package/dist/MySiteWidget-CXZTDDJM.js +0 -5
- package/dist/MySiteWidget-J7KD76GZ.cjs +0 -18
- package/dist/NestedWidget-JKEJ5ZCV.cjs +0 -19
- package/dist/NestedWidget-N6V5LT4B.js +0 -6
- package/dist/QuickShareWidget-B6TOLKM7.cjs +0 -17
- package/dist/QuickShareWidget-TNW4ILJ2.js +0 -4
- package/dist/RecentActivityWidget-5UJ4UN2Y.cjs +0 -18
- package/dist/RecentActivityWidget-BF6AWDCX.js +0 -5
- package/dist/SpacerWidget-7KQ6UPRH.js +0 -3
- package/dist/SpacerWidget-APJKG3DG.cjs +0 -16
- package/dist/TableWidget-HVBEVBC6.cjs +0 -18
- package/dist/TableWidget-PMQFL7VC.js +0 -5
- package/dist/ToDoWidget-34ZHMX4G.cjs +0 -18
- package/dist/ToDoWidget-ZAV3YC23.js +0 -5
- package/dist/VideoWidget-DYPFWIZX.cjs +0 -17
- package/dist/VideoWidget-KY3VZHYD.js +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/error-state.tsx"],"names":[],"mappings":";;;AAAO,SAAS,UAAA,GAAa;AAC3B,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yEAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,oBACzD,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,yCAAA,EAE7C;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/error-state.tsx"],"names":[],"mappings":";;;AAAO,SAAS,UAAA,GAAa;AAC3B,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yEAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,oBACzD,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAgC,QAAA,EAAA,yCAAA,EAE7C;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-JIS2K5YR.js","sourcesContent":["export function ErrorState() {\n return (\n <div className=\"flex min-h-[120px] flex-col items-center justify-center p-6 text-center\">\n <p className=\"text-lg font-semibold\">Something Went Wrong</p>\n <p className=\"text-muted-foreground text-sm\">\n Please contact a company admin for help\n </p>\n </div>\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk6RNVWRDD_cjs = require('./chunk-6RNVWRDD.cjs');
|
|
4
|
+
var chunkAQO2AKU2_cjs = require('./chunk-AQO2AKU2.cjs');
|
|
5
5
|
var chunkJ6HCPXT5_cjs = require('./chunk-J6HCPXT5.cjs');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var react = require('react');
|
|
@@ -23,7 +23,7 @@ function FeaturedSection({
|
|
|
23
23
|
className: `relative h-full min-h-[300px] w-full overflow-hidden rounded-${borderRadius}`,
|
|
24
24
|
children: [
|
|
25
25
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 h-full w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26
|
-
|
|
26
|
+
chunk6RNVWRDD_cjs.MediaRenderer,
|
|
27
27
|
{
|
|
28
28
|
src: asset.url,
|
|
29
29
|
mediaType: asset.isVideo ? "video" : "image",
|
|
@@ -55,7 +55,7 @@ function FeaturedSection({
|
|
|
55
55
|
"a",
|
|
56
56
|
{
|
|
57
57
|
href: featuredButtonUrl || "#",
|
|
58
|
-
className: `bg-white px-6 py-2 font-medium
|
|
58
|
+
className: `text-foreground bg-white px-6 py-2 font-medium transition-opacity hover:opacity-90 rounded-${borderRadius}`,
|
|
59
59
|
children: featuredButtonText
|
|
60
60
|
}
|
|
61
61
|
)
|
|
@@ -159,17 +159,17 @@ function ListItemCardContent({
|
|
|
159
159
|
] });
|
|
160
160
|
}
|
|
161
161
|
function DiscountBadge({ discount }) {
|
|
162
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-2 right-2 z-10 rounded-md
|
|
162
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-destructive text-destructive-foreground absolute top-2 right-2 z-10 rounded-md px-2 py-1 text-xs font-bold", children: getStringValue(discount) });
|
|
163
163
|
}
|
|
164
164
|
function FavoriteButton({ className }) {
|
|
165
165
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
166
166
|
"button",
|
|
167
167
|
{
|
|
168
|
-
className: className || "absolute top-2 left-2 z-10 rounded-full
|
|
168
|
+
className: className || "bg-background/80 hover:bg-background absolute top-2 left-2 z-10 rounded-full p-2 backdrop-blur-sm transition-colors",
|
|
169
169
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
170
170
|
"svg",
|
|
171
171
|
{
|
|
172
|
-
className: "h-5 w-5
|
|
172
|
+
className: "text-muted-foreground h-5 w-5",
|
|
173
173
|
fill: "none",
|
|
174
174
|
stroke: "currentColor",
|
|
175
175
|
viewBox: "0 0 24 24",
|
|
@@ -236,7 +236,7 @@ function UnorderedList({
|
|
|
236
236
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
237
237
|
"div",
|
|
238
238
|
{
|
|
239
|
-
className: `relative rounded-${borderRadius} overflow-hidden
|
|
239
|
+
className: `relative rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md`,
|
|
240
240
|
children: [
|
|
241
241
|
showBadge && item.discount && /* @__PURE__ */ jsxRuntime.jsx(DiscountBadge, { discount: item.discount }),
|
|
242
242
|
showFavorite && /* @__PURE__ */ jsxRuntime.jsx(FavoriteButton, {}),
|
|
@@ -359,7 +359,7 @@ function OrderedList({
|
|
|
359
359
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
360
360
|
"div",
|
|
361
361
|
{
|
|
362
|
-
className: `relative z-10 ml-20 rounded-${borderRadius} overflow-hidden
|
|
362
|
+
className: `relative z-10 ml-20 rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md`,
|
|
363
363
|
children: [
|
|
364
364
|
showBadge && item.discount && /* @__PURE__ */ jsxRuntime.jsx(DiscountBadge, { discount: item.discount }),
|
|
365
365
|
showFavorite && /* @__PURE__ */ jsxRuntime.jsx(FavoriteButton, {}),
|
|
@@ -386,7 +386,7 @@ function OrderedList({
|
|
|
386
386
|
}
|
|
387
387
|
),
|
|
388
388
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-1/2 z-20 flex w-full -translate-y-1/2 items-center justify-between px-8", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
389
|
-
|
|
389
|
+
chunkAQO2AKU2_cjs.ScrollArrows,
|
|
390
390
|
{
|
|
391
391
|
onPrevious: () => scrollByAmount("prev"),
|
|
392
392
|
onNext: () => scrollByAmount("next")
|
|
@@ -400,7 +400,7 @@ function OrderedList({
|
|
|
400
400
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
401
401
|
"div",
|
|
402
402
|
{
|
|
403
|
-
className: `relative flex gap-${chunkJ6HCPXT5_cjs.gapValues[gap]} rounded-${borderRadius} overflow-hidden
|
|
403
|
+
className: `relative flex gap-${chunkJ6HCPXT5_cjs.gapValues[gap]} rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md ${`p-${padding}`}`,
|
|
404
404
|
children: [
|
|
405
405
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
406
406
|
"div",
|
|
@@ -418,8 +418,8 @@ function OrderedList({
|
|
|
418
418
|
}
|
|
419
419
|
) }),
|
|
420
420
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(ListItemCardContent, { item, ...contentProps }) }),
|
|
421
|
-
showBadge && item.discount && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute top-2 right-2 rounded-md
|
|
422
|
-
showFavorite && /* @__PURE__ */ jsxRuntime.jsx(FavoriteButton, { className: "absolute top-2 right-12 rounded-full
|
|
421
|
+
showBadge && item.discount && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-destructive text-destructive-foreground absolute top-2 right-2 rounded-md px-2 py-1 text-xs font-bold", children: getStringValue(item.discount) }),
|
|
422
|
+
showFavorite && /* @__PURE__ */ jsxRuntime.jsx(FavoriteButton, { className: "bg-background/80 hover:bg-background absolute top-2 right-12 rounded-full p-2 backdrop-blur-sm transition-colors" })
|
|
423
423
|
]
|
|
424
424
|
},
|
|
425
425
|
item.id
|
|
@@ -525,7 +525,7 @@ function ListWidget({
|
|
|
525
525
|
children: title
|
|
526
526
|
}
|
|
527
527
|
),
|
|
528
|
-
!hasItems ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center rounded-md border-2 border-dashed
|
|
528
|
+
!hasItems ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-border bg-muted flex items-center justify-center rounded-md border-2 border-dashed py-12 text-center", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted", children: "No items to display" }) }) : shouldShowFeaturedSection ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 @lg:flex-row @lg:gap-6", children: [
|
|
529
529
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full @lg:w-[45%]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
530
530
|
FeaturedSection,
|
|
531
531
|
{
|
|
@@ -1009,5 +1009,5 @@ var listWidgetPropertySchema = {
|
|
|
1009
1009
|
|
|
1010
1010
|
exports.ListWidget = ListWidget;
|
|
1011
1011
|
exports.listWidgetPropertySchema = listWidgetPropertySchema;
|
|
1012
|
-
//# sourceMappingURL=chunk-
|
|
1013
|
-
//# sourceMappingURL=chunk-
|
|
1012
|
+
//# sourceMappingURL=chunk-JSHU7P56.cjs.map
|
|
1013
|
+
//# sourceMappingURL=chunk-JSHU7P56.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/widgets/list-widget/FeaturedSection.tsx","../src/widgets/list-widget/ListItemCard.tsx","../src/widgets/list-widget/UnorderedList.tsx","../src/widgets/list-widget/OrderedList.tsx","../src/widgets/ListWidget.tsx"],"names":["jsxs","jsx","MediaRenderer","gapValues","getImageUrl","getAspectRatioClass","useRef","ScrollArrows","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField","getGapField"],"mappings":"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","file":"chunk-MAESFG6E.cjs","sourcesContent":["import type {\n BorderRadiusOptions,\n FontSizeOptions,\n ColorOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { MediaRenderer } from \"../../components/MediaRenderer\";\n\ninterface FeaturedSectionProps {\n borderRadius: BorderRadiusOptions;\n titleSize: FontSizeOptions;\n featuredTitle?: string | undefined;\n featuredSubtitle?: string | undefined;\n featuredButtonText?: string | undefined;\n featuredButtonUrl?: string | undefined;\n featuredSubtitleColor: ColorOptions;\n featuredSubtitleSize: FontSizeOptions;\n asset: { url: string; isVideo: boolean };\n}\n\nexport function FeaturedSection({\n borderRadius,\n titleSize,\n featuredTitle,\n featuredSubtitle,\n featuredButtonText,\n featuredButtonUrl,\n featuredSubtitleColor,\n featuredSubtitleSize,\n asset,\n}: FeaturedSectionProps) {\n return (\n <div\n className={`relative h-full min-h-[300px] w-full overflow-hidden rounded-${borderRadius}`}\n >\n <div className=\"absolute inset-0 h-full w-full\">\n <MediaRenderer\n src={asset.url}\n mediaType={asset.isVideo ? \"video\" : \"image\"}\n alt={featuredTitle || \"Featured\"}\n objectFit=\"cover\"\n autoplay={asset.isVideo}\n loop={asset.isVideo}\n muted={asset.isVideo}\n controls={false}\n />\n </div>\n\n <div className=\"absolute inset-0 bg-black/40\" />\n\n <div className=\"absolute inset-0 flex flex-col items-start justify-end p-8\">\n {featuredTitle && (\n <h3\n className={`mb-2 font-bold text-white text-${titleSize === \"md\" ? \"base\" : titleSize}`}\n >\n {featuredTitle}\n </h3>\n )}\n {featuredSubtitle && (\n <p\n className={`mb-4 text-${featuredSubtitleColor} text-${featuredSubtitleSize === \"md\" ? \"base\" : featuredSubtitleSize}`}\n >\n {featuredSubtitle}\n </p>\n )}\n {featuredButtonText && (\n <a\n href={featuredButtonUrl || \"#\"}\n className={`bg-white px-6 py-2 font-medium text-foreground transition-opacity hover:opacity-90 rounded-${borderRadius}`}\n >\n {featuredButtonText}\n </a>\n )}\n </div>\n </div>\n );\n}\n","import type {\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\n\ntype ListItem = {\n id: string;\n image?: string;\n imageUrl?: string;\n videoUrl?: string;\n title?: string;\n description?: string;\n price?: string;\n originalPrice?: string;\n discount?: string;\n qv?: string;\n cv?: string;\n};\n\nfunction getTextContent(value: string | unknown | undefined): string {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"object\" && value !== null && \"body\" in value) {\n const body = (value as { body: unknown }).body;\n return typeof body === \"string\" ? body : \"\";\n }\n if (typeof value === \"object\") return \"\";\n return String(value);\n}\n\nfunction getStringValue(value: unknown): string {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n if (typeof value === \"object\" && value !== null) {\n if (\"body\" in value) {\n const body = (value as { body: unknown }).body;\n if (typeof body === \"string\") return body;\n }\n if (\"text\" in value) {\n const text = (value as { text: unknown }).text;\n if (typeof text === \"string\") return text;\n }\n if (\"value\" in value) {\n const val = (value as { value: unknown }).value;\n if (typeof val === \"string\") return val;\n if (typeof val === \"number\") return String(val);\n }\n }\n return \"\";\n}\n\nexport interface ListItemCardContentProps {\n item: ListItem;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nexport function ListItemCardContent({\n item,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n}: ListItemCardContentProps) {\n return (\n <div className={`p-${padding}`}>\n {item.title && (\n <h3\n className={`text-${itemTitleColor} text-${itemTitleSize === \"md\" ? \"base\" : itemTitleSize} mb-1 font-semibold`}\n >\n {getTextContent(item.title)}\n </h3>\n )}\n {item.description && (\n <p\n className={`text-${descriptionColor} text-${descriptionSize === \"md\" ? \"base\" : descriptionSize} mb-2`}\n >\n {getTextContent(item.description)}\n </p>\n )}\n <div className=\"flex items-center gap-2\">\n {item.price && (\n <span\n className={`text-${priceColor} text-${priceSize === \"md\" ? \"base\" : priceSize} font-bold`}\n >\n {getStringValue(item.price)}\n </span>\n )}\n {item.originalPrice && (\n <span\n className={`text-${originalPriceColor} text-${descriptionSize === \"md\" ? \"base\" : descriptionSize} line-through`}\n >\n {getStringValue(item.originalPrice)}\n </span>\n )}\n </div>\n {showMetaText && (item.qv || item.cv) && (\n <div\n className={`mt-2 flex gap-3 text-${metaTextColor} text-${metaTextSize === \"md\" ? \"base\" : metaTextSize}`}\n >\n {item.qv && <span>QV: {getStringValue(item.qv)}</span>}\n {item.cv && <span>CV: {getStringValue(item.cv)}</span>}\n </div>\n )}\n </div>\n );\n}\n\nexport interface BadgeAndFavoriteProps {\n showBadge: boolean;\n showFavorite: boolean;\n discount?: string;\n favoritePosition?: \"default\" | \"inline\";\n}\n\nexport function DiscountBadge({ discount }: { discount: string }) {\n return (\n <div className=\"absolute top-2 right-2 z-10 rounded-md bg-destructive px-2 py-1 text-xs font-bold text-destructive-foreground\">\n {getStringValue(discount)}\n </div>\n );\n}\n\nexport function FavoriteButton({ className }: { className?: string }) {\n return (\n <button\n className={\n className ||\n \"absolute top-2 left-2 z-10 rounded-full bg-background/80 p-2 backdrop-blur-sm transition-colors hover:bg-background\"\n }\n >\n <svg\n className=\"h-5 w-5 text-muted-foreground\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\"\n />\n </svg>\n </button>\n );\n}\n\nexport { getStringValue, getTextContent };\nexport type { ListItem };\n","import type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { gapValues } from \"../../core/fields\";\nimport {\n ListItemCardContent,\n DiscountBadge,\n FavoriteButton,\n type ListItem,\n} from \"./ListItemCard\";\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\n\nconst getImageUrl = (item: ListItem): string | undefined => {\n return item.imageUrl || item.image;\n};\n\nconst getAspectRatioClass = (ratio: ImageAspectRatio): string => {\n const ratios = {\n square: \"aspect-square\",\n landscape: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n };\n return ratios[ratio];\n};\n\nconst getResponsiveGridClass = (columns: number): string => {\n const responsiveClasses: Record<number, string> = {\n 1: \"grid-cols-2 @lg:grid-cols-1\",\n 2: \"grid-cols-2 @lg:grid-cols-2\",\n 3: \"grid-cols-2 @lg:grid-cols-3\",\n 4: \"grid-cols-2 @lg:grid-cols-4\",\n 5: \"grid-cols-2 @lg:grid-cols-5\",\n 6: \"grid-cols-2 @lg:grid-cols-6\",\n };\n return responsiveClasses[columns] || \"grid-cols-2 @lg:grid-cols-3\";\n};\n\nexport interface UnorderedListProps {\n items: ListItem[];\n columns: number;\n gap: GapOptions;\n borderRadius: BorderRadiusOptions;\n imageAspectRatio: ImageAspectRatio;\n showBadge: boolean;\n showFavorite: boolean;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nexport function UnorderedList({\n items,\n columns,\n gap,\n borderRadius,\n imageAspectRatio,\n showBadge,\n showFavorite,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n}: UnorderedListProps) {\n const gridClass = getResponsiveGridClass(columns);\n\n return (\n <div className={`grid ${gridClass} gap-${gapValues[gap]}`}>\n {items.map((item) => {\n const imageUrl = getImageUrl(item);\n const aspectRatioClass = getAspectRatioClass(imageAspectRatio);\n\n return (\n <div\n key={item.id}\n className={`relative rounded-${borderRadius} overflow-hidden bg-background shadow-sm transition-shadow hover:shadow-md`}\n >\n {showBadge && item.discount && (\n <DiscountBadge discount={item.discount} />\n )}\n {showFavorite && <FavoriteButton />}\n {imageUrl && (\n <div className={`w-full ${aspectRatioClass} overflow-hidden`}>\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <ListItemCardContent\n item={item}\n padding={padding}\n itemTitleColor={itemTitleColor}\n itemTitleSize={itemTitleSize}\n descriptionColor={descriptionColor}\n descriptionSize={descriptionSize}\n priceColor={priceColor}\n priceSize={priceSize}\n originalPriceColor={originalPriceColor}\n metaTextColor={metaTextColor}\n metaTextSize={metaTextSize}\n showMetaText={showMetaText}\n />\n </div>\n );\n })}\n </div>\n );\n}\n","import { useRef } from \"react\";\nimport type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { gapValues } from \"../../core/fields\";\nimport { ScrollArrows } from \"../../ui/scroll-arrows\";\nimport {\n ListItemCardContent,\n DiscountBadge,\n FavoriteButton,\n getStringValue,\n type ListItem,\n} from \"./ListItemCard\";\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\ntype ScrollAxis = \"horizontal\" | \"vertical\";\n\nconst SCROLL_ITEM_WIDTH = 300;\n\nconst getImageUrl = (item: ListItem): string | undefined => {\n return item.imageUrl || item.image;\n};\n\nconst getAspectRatioClass = (ratio: ImageAspectRatio): string => {\n const ratios = {\n square: \"aspect-square\",\n landscape: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n };\n return ratios[ratio];\n};\n\nexport interface OrderedListProps {\n items: ListItem[];\n scrollAxis: ScrollAxis;\n gap: GapOptions;\n borderRadius: BorderRadiusOptions;\n imageAspectRatio: ImageAspectRatio;\n showBadge: boolean;\n showFavorite: boolean;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n numberColor: ColorOptions;\n numberSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nconst largeNumberSizes: Record<FontSizeOptions, string> = {\n xs: \"8rem\",\n sm: \"10rem\",\n md: \"12rem\",\n lg: \"14rem\",\n xl: \"16rem\",\n \"2xl\": \"20rem\",\n};\n\nexport function OrderedList({\n items,\n scrollAxis,\n gap,\n borderRadius,\n imageAspectRatio,\n showBadge,\n showFavorite,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n numberColor,\n numberSize,\n showMetaText,\n}: OrderedListProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const scrollByAmount = (direction: \"prev\" | \"next\") => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const computedGap = parseFloat(getComputedStyle(container).gap) || 0;\n const scrollAmount = SCROLL_ITEM_WIDTH + computedGap;\n\n container.scrollTo({\n left:\n container.scrollLeft +\n (direction === \"next\" ? scrollAmount : -scrollAmount),\n behavior: \"smooth\",\n });\n };\n\n const contentProps = {\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n };\n\n if (scrollAxis === \"horizontal\") {\n return (\n <div className=\"relative\">\n <div\n ref={scrollContainerRef}\n className={`flex gap-${gapValues[gap]} scrollbar-hide overflow-x-auto overflow-y-hidden scroll-smooth`}\n >\n {items.map((item, index) => {\n const imageUrl = getImageUrl(item);\n const aspectRatioClass = getAspectRatioClass(imageAspectRatio);\n\n return (\n <div key={item.id} className=\"relative w-[300px] flex-shrink-0\">\n <div\n className={`absolute top-0 left-0 text-${numberColor} z-0 leading-none font-bold opacity-20`}\n style={{ fontSize: largeNumberSizes[numberSize] }}\n >\n {index + 1}\n </div>\n\n <div\n className={`relative z-10 ml-20 rounded-${borderRadius} overflow-hidden bg-background shadow-sm transition-shadow hover:shadow-md`}\n >\n {showBadge && item.discount && (\n <DiscountBadge discount={item.discount} />\n )}\n {showFavorite && <FavoriteButton />}\n {imageUrl && (\n <div\n className={`w-full ${aspectRatioClass} overflow-hidden`}\n >\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <ListItemCardContent item={item} {...contentProps} />\n </div>\n </div>\n );\n })}\n </div>\n\n <div className=\"absolute inset-x-0 top-1/2 z-20 flex w-full -translate-y-1/2 items-center justify-between px-8\">\n <ScrollArrows\n onPrevious={() => scrollByAmount(\"prev\")}\n onNext={() => scrollByAmount(\"next\")}\n />\n </div>\n </div>\n );\n }\n\n if (scrollAxis === \"vertical\") {\n return (\n <div className={`flex flex-col gap-${gapValues[gap]}`}>\n {items.map((item, index) => {\n const imageUrl = getImageUrl(item);\n\n return (\n <div\n key={item.id}\n className={`relative flex gap-${gapValues[gap]} rounded-${borderRadius} overflow-hidden bg-background shadow-sm transition-shadow hover:shadow-md ${`p-${padding}`}`}\n >\n <div\n className={`flex-shrink-0 text-${numberColor} text-${numberSize === \"md\" ? \"base\" : numberSize} flex w-16 items-center justify-center font-bold`}\n >\n {index + 1}\n </div>\n {imageUrl && (\n <div className=\"h-24 w-24 flex-shrink-0 overflow-hidden rounded-md\">\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <div className=\"flex-1\">\n <ListItemCardContent item={item} {...contentProps} />\n </div>\n {showBadge && item.discount && (\n <div className=\"absolute top-2 right-2 rounded-md bg-destructive px-2 py-1 text-xs font-bold text-destructive-foreground\">\n {getStringValue(item.discount)}\n </div>\n )}\n {showFavorite && (\n <FavoriteButton className=\"absolute top-2 right-12 rounded-full bg-background/80 p-2 backdrop-blur-sm transition-colors hover:bg-background\" />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return null;\n}\n","import type { ComponentProps } from \"react\";\nimport type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n BackgroundValue,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n getGapField,\n} from \"../core/fields\";\nimport { FeaturedSection } from \"./list-widget/FeaturedSection\";\nimport { UnorderedList } from \"./list-widget/UnorderedList\";\nimport { OrderedList } from \"./list-widget/OrderedList\";\n\nconst DEFAULT_ITEMS: ListItem[] = [];\n\ntype ListItem = {\n id: string;\n image?: string;\n imageUrl?: string;\n videoUrl?: string;\n title?: string;\n description?: string;\n price?: string;\n originalPrice?: string;\n discount?: string;\n qv?: string;\n cv?: string;\n};\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\ntype ListType = \"ordered\" | \"unordered\";\ntype ScrollAxis = \"horizontal\" | \"vertical\";\n\ntype ListWidgetProps = ComponentProps<\"div\"> & {\n // List configuration\n listType?: ListType;\n scrollAxis?: ScrollAxis;\n titleEnabled?: boolean;\n title?: string;\n items?: ListItem[];\n\n // Text styling\n titleColor?: ColorOptions;\n titleSize?: FontSizeOptions;\n itemTitleColor?: ColorOptions;\n itemTitleSize?: FontSizeOptions;\n descriptionColor?: ColorOptions;\n descriptionSize?: FontSizeOptions;\n priceColor?: ColorOptions;\n priceSize?: FontSizeOptions;\n originalPriceColor?: ColorOptions;\n metaTextColor?: ColorOptions;\n metaTextSize?: FontSizeOptions;\n\n // Ordered list styling\n numberColor?: ColorOptions;\n numberSize?: FontSizeOptions;\n\n // Layout\n borderRadius?: BorderRadiusOptions;\n padding?: PaddingOptions;\n gap?: GapOptions;\n columns?: number;\n imageAspectRatio?: ImageAspectRatio;\n background?: BackgroundValue;\n\n // Behavior\n showBadge?: boolean;\n showFavorite?: boolean;\n showMetaText?: boolean;\n maxItems?: number;\n\n // Featured section\n showFeaturedSection?: boolean;\n featuredAsset?: string | { [key: string]: unknown };\n featuredTitle?: string;\n featuredSubtitle?: string;\n featuredButtonText?: string;\n featuredButtonUrl?: string;\n featuredSubtitleColor?: ColorOptions;\n featuredSubtitleSize?: FontSizeOptions;\n};\n\nfunction getFeaturedAssetUrl(\n value: string | { [key: string]: unknown } | undefined,\n): { url: string; isVideo: boolean } | undefined {\n if (!value) return undefined;\n\n // Handle string URLs\n if (typeof value === \"string\") {\n const isVideo = /\\.(mp4|webm|ogg|mov)$/i.test(value);\n return { url: value, isVideo };\n }\n\n // Handle ShareableItem objects\n if (typeof value === \"object\") {\n // Check for video URL first\n const videoUrl =\n (value.videoUrl as string) ||\n (value.video_url as string) ||\n (value.url as string);\n if (videoUrl && /\\.(mp4|webm|ogg|mov)$/i.test(videoUrl)) {\n return { url: videoUrl, isVideo: true };\n }\n\n // Fall back to image URL\n const imageUrl =\n (value.imageUrl as string) ||\n (value.image_url as string) ||\n (value.url as string);\n if (imageUrl) {\n return { url: imageUrl, isVideo: false };\n }\n }\n\n return undefined;\n}\n\nexport function ListWidget({\n listType = \"unordered\",\n scrollAxis = \"horizontal\",\n titleEnabled = true,\n title,\n items = DEFAULT_ITEMS,\n titleColor = \"foreground\",\n titleSize = \"lg\",\n itemTitleColor = \"foreground\",\n itemTitleSize = \"sm\",\n descriptionColor = \"foreground\",\n descriptionSize = \"sm\",\n priceColor = \"foreground\",\n priceSize = \"md\",\n originalPriceColor = \"muted\",\n metaTextColor = \"muted\",\n metaTextSize = \"xs\",\n numberColor = \"primary\",\n numberSize = \"2xl\",\n borderRadius = \"md\",\n padding = 4,\n gap = \"md\",\n columns = 3,\n imageAspectRatio = \"square\",\n background = { type: \"solid\", color: \"background\" },\n showBadge = true,\n showFavorite = true,\n showMetaText = true,\n maxItems = 12,\n showFeaturedSection = false,\n featuredAsset,\n featuredTitle,\n featuredSubtitle,\n featuredButtonText,\n featuredButtonUrl,\n featuredSubtitleColor = \"background\",\n featuredSubtitleSize = \"md\",\n className,\n ...props\n}: ListWidgetProps) {\n const displayItems = maxItems ? items.slice(0, maxItems) : items;\n const hasItems = displayItems.length > 0;\n\n const itemStyleProps = {\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n showBadge,\n showFavorite,\n borderRadius,\n imageAspectRatio,\n gap,\n };\n\n const hasFeaturedAsset = getFeaturedAssetUrl(featuredAsset);\n const shouldShowFeaturedSection = showFeaturedSection && hasFeaturedAsset;\n\n // Background styling\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\n return (\n <div\n className={`@container bg-${backgroundColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {titleEnabled && title && (\n <h2\n className={`text-${titleColor} text-${titleSize === \"md\" ? \"base\" : titleSize} mb-6 font-bold`}\n >\n {title}\n </h2>\n )}\n {!hasItems ? (\n <div className=\"flex items-center justify-center rounded-md border-2 border-dashed border-border bg-muted py-12 text-center\">\n <p className=\"text-muted\">No items to display</p>\n </div>\n ) : shouldShowFeaturedSection ? (\n <div className=\"flex flex-col gap-4 @lg:flex-row @lg:gap-6\">\n <div className=\"w-full @lg:w-[45%]\">\n <FeaturedSection\n borderRadius={borderRadius}\n titleSize={titleSize}\n featuredTitle={featuredTitle}\n featuredSubtitle={featuredSubtitle}\n featuredButtonText={featuredButtonText}\n featuredButtonUrl={featuredButtonUrl}\n featuredSubtitleColor={featuredSubtitleColor}\n featuredSubtitleSize={featuredSubtitleSize}\n asset={hasFeaturedAsset!}\n />\n </div>\n <div className=\"w-full @lg:w-[55%]\">\n {listType === \"unordered\" ? (\n <UnorderedList\n items={displayItems}\n columns={columns}\n {...itemStyleProps}\n />\n ) : (\n <OrderedList\n items={displayItems}\n scrollAxis={scrollAxis}\n numberColor={numberColor}\n numberSize={numberSize}\n {...itemStyleProps}\n />\n )}\n </div>\n </div>\n ) : listType === \"unordered\" ? (\n <UnorderedList\n items={displayItems}\n columns={columns}\n {...itemStyleProps}\n />\n ) : (\n <OrderedList\n items={displayItems}\n scrollAxis={scrollAxis}\n numberColor={numberColor}\n numberSize={numberSize}\n {...itemStyleProps}\n />\n )}\n </div>\n );\n}\n\nexport const listWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ListWidget\",\n displayName: \"List\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"items\"],\n fields: [\n // Styling tab - Title group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the list\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"title\",\n label: \"Title\",\n type: \"text\",\n description: \"Header text for the list\",\n defaultValue: \"List\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleSize\",\n label: \"Title Font Size\",\n description: \"Size of the list title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the list title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling tab - Design group\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding inside the container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Rounded corners for the container and images\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getGapField({\n key: \"gap\",\n label: \"Gap\",\n description: \"Spacing between items\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n type: \"background\",\n defaultValue: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background color or image for the widget\",\n tab: \"styling\",\n group: \"Design\",\n },\n\n // Styling tab - List Configuration group\n {\n key: \"listType\",\n label: \"List Type\",\n type: \"select\",\n description: \"Type of list layout\",\n defaultValue: \"unordered\",\n options: [\n { label: \"Unordered (Grid)\", value: \"unordered\" },\n { label: \"Ordered (Numbered)\", value: \"ordered\" },\n ],\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"maxItems\",\n label: \"Max Items\",\n type: \"number\",\n description: \"Maximum number of items to display\",\n min: 1,\n max: 100,\n step: 1,\n defaultValue: 12,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"imageAspectRatio\",\n label: \"Image Aspect Ratio\",\n type: \"buttonGroup\",\n description: \"Aspect ratio for item images\",\n defaultValue: \"square\",\n options: [\n { label: \"Square\", value: \"square\" },\n { label: \"Landscape\", value: \"landscape\" },\n { label: \"Portrait\", value: \"portrait\" },\n ],\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showBadge\",\n label: \"Show Discount Badge\",\n type: \"boolean\",\n description: \"Display discount badge on images\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showFavorite\",\n label: \"Show Favorite Icon\",\n type: \"boolean\",\n description: \"Display favorite/heart icon on images\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showMetaText\",\n label: \"Show QV/CV Text\",\n type: \"boolean\",\n description: \"Display QV and CV values\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n\n // Styling tab - Unordered List Configuration\n {\n key: \"columns\",\n label: \"Grid Columns\",\n type: \"number\",\n description: \"Number of columns in the grid (unordered list only)\",\n min: 1,\n max: 6,\n step: 1,\n defaultValue: 3,\n tab: \"styling\",\n group: \"Unordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"unordered\" },\n },\n\n // Styling tab - Ordered List Configuration\n {\n key: \"scrollAxis\",\n label: \"Scroll Direction\",\n type: \"select\",\n description: \"Direction for ordered list scrolling\",\n defaultValue: \"horizontal\",\n options: [\n { label: \"Horizontal\", value: \"horizontal\" },\n { label: \"Vertical\", value: \"vertical\" },\n ],\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n },\n getColorField({\n key: \"numberColor\",\n label: \"Number Color\",\n description: \"Color for ordered list numbers\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n }),\n getFontSizeField({\n key: \"numberSize\",\n label: \"Number Font Size\",\n description: \"Size of ordered list numbers\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n }),\n\n // Styling tab - Item Styling group\n getColorField({\n key: \"itemTitleColor\",\n label: \"Item Title Color\",\n description: \"Color for item titles\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"itemTitleSize\",\n label: \"Item Title Font Size\",\n description: \"Size of item titles\",\n defaultValue: \"sm\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator2\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"descriptionColor\",\n label: \"Description Color\",\n description: \"Color for descriptions\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"descriptionSize\",\n label: \"Description Font Size\",\n description: \"Size of descriptions\",\n defaultValue: \"sm\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator3\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"priceColor\",\n label: \"Price Color\",\n description: \"Color for prices\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"priceSize\",\n label: \"Price Font Size\",\n description: \"Size of prices\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getColorField({\n key: \"originalPriceColor\",\n label: \"Original Price Color\",\n description: \"Color for crossed-out original prices\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator4\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"metaTextColor\",\n label: \"Meta Text Color\",\n description: \"Color for QV/CV text\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"metaTextSize\",\n label: \"Meta Text Font Size\",\n description: \"Size of QV/CV text\",\n defaultValue: \"xs\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n\n // Styling tab - Featured Section group\n {\n key: \"showFeaturedSection\",\n label: \"Show Featured Section\",\n type: \"boolean\",\n description: \"Display a featured content section\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Featured Section\",\n },\n {\n key: \"featuredAsset\",\n label: \"Featured Asset\",\n type: \"resource\",\n description:\n \"Select a single image or video resource for the featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n allowedTypes: [\"Medium\"],\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredTitle\",\n label: \"Featured Title\",\n type: \"text\",\n description: \"Title for featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredSubtitle\",\n label: \"Featured Subtitle\",\n type: \"text\",\n description: \"Subtitle for featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredButtonText\",\n label: \"Featured Button Text\",\n type: \"text\",\n description: \"Text for featured section button\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredButtonUrl\",\n label: \"Featured Button URL\",\n type: \"text\",\n description: \"URL for featured section button\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n getColorField({\n key: \"featuredSubtitleColor\",\n label: \"Featured Subtitle Color\",\n description: \"Color for featured subtitle\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n }),\n getFontSizeField({\n key: \"featuredSubtitleSize\",\n label: \"Featured Subtitle Font Size\",\n description: \"Size of featured subtitle\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n }),\n\n // Data tab - Data Configuration\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n itemConfigSchema: {\n description: \"Configure settings for this list item\",\n fields: [\n {\n key: \"title\",\n label: \"Custom Title\",\n type: \"text\",\n description: \"Override the item's title\",\n },\n {\n key: \"description\",\n label: \"Custom Description\",\n type: \"textarea\",\n description: \"Override the item's description\",\n rows: 3,\n },\n {\n key: \"price\",\n label: \"Price\",\n type: \"text\",\n description: \"Current price\",\n },\n {\n key: \"originalPrice\",\n label: \"Original Price\",\n type: \"text\",\n description: \"Original price (will be crossed out)\",\n },\n {\n key: \"discount\",\n label: \"Discount Badge\",\n type: \"text\",\n description: \"Discount text (e.g., '40% Off')\",\n },\n {\n key: \"qv\",\n label: \"QV Value\",\n type: \"text\",\n description: \"Qualifying Volume value\",\n },\n {\n key: \"cv\",\n label: \"CV Value\",\n type: \"text\",\n description: \"Commission Volume value\",\n },\n {\n key: \"image\",\n label: \"Image URL\",\n type: \"text\",\n description: \"Custom image URL for this item\",\n },\n ],\n },\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/widgets/list-widget/FeaturedSection.tsx","../src/widgets/list-widget/ListItemCard.tsx","../src/widgets/list-widget/UnorderedList.tsx","../src/widgets/list-widget/OrderedList.tsx","../src/widgets/ListWidget.tsx"],"names":["jsxs","jsx","MediaRenderer","gapValues","getImageUrl","getAspectRatioClass","useRef","ScrollArrows","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField","getGapField"],"mappings":"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","file":"chunk-JSHU7P56.cjs","sourcesContent":["import type {\n BorderRadiusOptions,\n FontSizeOptions,\n ColorOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { MediaRenderer } from \"../../components/MediaRenderer\";\n\ninterface FeaturedSectionProps {\n borderRadius: BorderRadiusOptions;\n titleSize: FontSizeOptions;\n featuredTitle?: string | undefined;\n featuredSubtitle?: string | undefined;\n featuredButtonText?: string | undefined;\n featuredButtonUrl?: string | undefined;\n featuredSubtitleColor: ColorOptions;\n featuredSubtitleSize: FontSizeOptions;\n asset: { url: string; isVideo: boolean };\n}\n\nexport function FeaturedSection({\n borderRadius,\n titleSize,\n featuredTitle,\n featuredSubtitle,\n featuredButtonText,\n featuredButtonUrl,\n featuredSubtitleColor,\n featuredSubtitleSize,\n asset,\n}: FeaturedSectionProps) {\n return (\n <div\n className={`relative h-full min-h-[300px] w-full overflow-hidden rounded-${borderRadius}`}\n >\n <div className=\"absolute inset-0 h-full w-full\">\n <MediaRenderer\n src={asset.url}\n mediaType={asset.isVideo ? \"video\" : \"image\"}\n alt={featuredTitle || \"Featured\"}\n objectFit=\"cover\"\n autoplay={asset.isVideo}\n loop={asset.isVideo}\n muted={asset.isVideo}\n controls={false}\n />\n </div>\n\n <div className=\"absolute inset-0 bg-black/40\" />\n\n <div className=\"absolute inset-0 flex flex-col items-start justify-end p-8\">\n {featuredTitle && (\n <h3\n className={`mb-2 font-bold text-white text-${titleSize === \"md\" ? \"base\" : titleSize}`}\n >\n {featuredTitle}\n </h3>\n )}\n {featuredSubtitle && (\n <p\n className={`mb-4 text-${featuredSubtitleColor} text-${featuredSubtitleSize === \"md\" ? \"base\" : featuredSubtitleSize}`}\n >\n {featuredSubtitle}\n </p>\n )}\n {featuredButtonText && (\n <a\n href={featuredButtonUrl || \"#\"}\n className={`text-foreground bg-white px-6 py-2 font-medium transition-opacity hover:opacity-90 rounded-${borderRadius}`}\n >\n {featuredButtonText}\n </a>\n )}\n </div>\n </div>\n );\n}\n","import type {\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\n\ntype ListItem = {\n id: string;\n image?: string;\n imageUrl?: string;\n videoUrl?: string;\n title?: string;\n description?: string;\n price?: string;\n originalPrice?: string;\n discount?: string;\n qv?: string;\n cv?: string;\n};\n\nfunction getTextContent(value: string | unknown | undefined): string {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"object\" && value !== null && \"body\" in value) {\n const body = (value as { body: unknown }).body;\n return typeof body === \"string\" ? body : \"\";\n }\n if (typeof value === \"object\") return \"\";\n return String(value);\n}\n\nfunction getStringValue(value: unknown): string {\n if (!value) return \"\";\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\") return String(value);\n if (typeof value === \"object\" && value !== null) {\n if (\"body\" in value) {\n const body = (value as { body: unknown }).body;\n if (typeof body === \"string\") return body;\n }\n if (\"text\" in value) {\n const text = (value as { text: unknown }).text;\n if (typeof text === \"string\") return text;\n }\n if (\"value\" in value) {\n const val = (value as { value: unknown }).value;\n if (typeof val === \"string\") return val;\n if (typeof val === \"number\") return String(val);\n }\n }\n return \"\";\n}\n\nexport interface ListItemCardContentProps {\n item: ListItem;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nexport function ListItemCardContent({\n item,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n}: ListItemCardContentProps) {\n return (\n <div className={`p-${padding}`}>\n {item.title && (\n <h3\n className={`text-${itemTitleColor} text-${itemTitleSize === \"md\" ? \"base\" : itemTitleSize} mb-1 font-semibold`}\n >\n {getTextContent(item.title)}\n </h3>\n )}\n {item.description && (\n <p\n className={`text-${descriptionColor} text-${descriptionSize === \"md\" ? \"base\" : descriptionSize} mb-2`}\n >\n {getTextContent(item.description)}\n </p>\n )}\n <div className=\"flex items-center gap-2\">\n {item.price && (\n <span\n className={`text-${priceColor} text-${priceSize === \"md\" ? \"base\" : priceSize} font-bold`}\n >\n {getStringValue(item.price)}\n </span>\n )}\n {item.originalPrice && (\n <span\n className={`text-${originalPriceColor} text-${descriptionSize === \"md\" ? \"base\" : descriptionSize} line-through`}\n >\n {getStringValue(item.originalPrice)}\n </span>\n )}\n </div>\n {showMetaText && (item.qv || item.cv) && (\n <div\n className={`mt-2 flex gap-3 text-${metaTextColor} text-${metaTextSize === \"md\" ? \"base\" : metaTextSize}`}\n >\n {item.qv && <span>QV: {getStringValue(item.qv)}</span>}\n {item.cv && <span>CV: {getStringValue(item.cv)}</span>}\n </div>\n )}\n </div>\n );\n}\n\nexport interface BadgeAndFavoriteProps {\n showBadge: boolean;\n showFavorite: boolean;\n discount?: string;\n favoritePosition?: \"default\" | \"inline\";\n}\n\nexport function DiscountBadge({ discount }: { discount: string }) {\n return (\n <div className=\"bg-destructive text-destructive-foreground absolute top-2 right-2 z-10 rounded-md px-2 py-1 text-xs font-bold\">\n {getStringValue(discount)}\n </div>\n );\n}\n\nexport function FavoriteButton({ className }: { className?: string }) {\n return (\n <button\n className={\n className ||\n \"bg-background/80 hover:bg-background absolute top-2 left-2 z-10 rounded-full p-2 backdrop-blur-sm transition-colors\"\n }\n >\n <svg\n className=\"text-muted-foreground h-5 w-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z\"\n />\n </svg>\n </button>\n );\n}\n\nexport { getStringValue, getTextContent };\nexport type { ListItem };\n","import type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { gapValues } from \"../../core/fields\";\nimport {\n ListItemCardContent,\n DiscountBadge,\n FavoriteButton,\n type ListItem,\n} from \"./ListItemCard\";\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\n\nconst getImageUrl = (item: ListItem): string | undefined => {\n return item.imageUrl || item.image;\n};\n\nconst getAspectRatioClass = (ratio: ImageAspectRatio): string => {\n const ratios = {\n square: \"aspect-square\",\n landscape: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n };\n return ratios[ratio];\n};\n\nconst getResponsiveGridClass = (columns: number): string => {\n const responsiveClasses: Record<number, string> = {\n 1: \"grid-cols-2 @lg:grid-cols-1\",\n 2: \"grid-cols-2 @lg:grid-cols-2\",\n 3: \"grid-cols-2 @lg:grid-cols-3\",\n 4: \"grid-cols-2 @lg:grid-cols-4\",\n 5: \"grid-cols-2 @lg:grid-cols-5\",\n 6: \"grid-cols-2 @lg:grid-cols-6\",\n };\n return responsiveClasses[columns] || \"grid-cols-2 @lg:grid-cols-3\";\n};\n\nexport interface UnorderedListProps {\n items: ListItem[];\n columns: number;\n gap: GapOptions;\n borderRadius: BorderRadiusOptions;\n imageAspectRatio: ImageAspectRatio;\n showBadge: boolean;\n showFavorite: boolean;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nexport function UnorderedList({\n items,\n columns,\n gap,\n borderRadius,\n imageAspectRatio,\n showBadge,\n showFavorite,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n}: UnorderedListProps) {\n const gridClass = getResponsiveGridClass(columns);\n\n return (\n <div className={`grid ${gridClass} gap-${gapValues[gap]}`}>\n {items.map((item) => {\n const imageUrl = getImageUrl(item);\n const aspectRatioClass = getAspectRatioClass(imageAspectRatio);\n\n return (\n <div\n key={item.id}\n className={`relative rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md`}\n >\n {showBadge && item.discount && (\n <DiscountBadge discount={item.discount} />\n )}\n {showFavorite && <FavoriteButton />}\n {imageUrl && (\n <div className={`w-full ${aspectRatioClass} overflow-hidden`}>\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <ListItemCardContent\n item={item}\n padding={padding}\n itemTitleColor={itemTitleColor}\n itemTitleSize={itemTitleSize}\n descriptionColor={descriptionColor}\n descriptionSize={descriptionSize}\n priceColor={priceColor}\n priceSize={priceSize}\n originalPriceColor={originalPriceColor}\n metaTextColor={metaTextColor}\n metaTextSize={metaTextSize}\n showMetaText={showMetaText}\n />\n </div>\n );\n })}\n </div>\n );\n}\n","import { useRef } from \"react\";\nimport type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n} from \"@fluid-app/rep-core/types\";\nimport { gapValues } from \"../../core/fields\";\nimport { ScrollArrows } from \"../../ui/scroll-arrows\";\nimport {\n ListItemCardContent,\n DiscountBadge,\n FavoriteButton,\n getStringValue,\n type ListItem,\n} from \"./ListItemCard\";\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\ntype ScrollAxis = \"horizontal\" | \"vertical\";\n\nconst SCROLL_ITEM_WIDTH = 300;\n\nconst getImageUrl = (item: ListItem): string | undefined => {\n return item.imageUrl || item.image;\n};\n\nconst getAspectRatioClass = (ratio: ImageAspectRatio): string => {\n const ratios = {\n square: \"aspect-square\",\n landscape: \"aspect-video\",\n portrait: \"aspect-[3/4]\",\n };\n return ratios[ratio];\n};\n\nexport interface OrderedListProps {\n items: ListItem[];\n scrollAxis: ScrollAxis;\n gap: GapOptions;\n borderRadius: BorderRadiusOptions;\n imageAspectRatio: ImageAspectRatio;\n showBadge: boolean;\n showFavorite: boolean;\n padding: PaddingOptions;\n itemTitleColor: ColorOptions;\n itemTitleSize: FontSizeOptions;\n descriptionColor: ColorOptions;\n descriptionSize: FontSizeOptions;\n priceColor: ColorOptions;\n priceSize: FontSizeOptions;\n originalPriceColor: ColorOptions;\n metaTextColor: ColorOptions;\n metaTextSize: FontSizeOptions;\n numberColor: ColorOptions;\n numberSize: FontSizeOptions;\n showMetaText: boolean;\n}\n\nconst largeNumberSizes: Record<FontSizeOptions, string> = {\n xs: \"8rem\",\n sm: \"10rem\",\n md: \"12rem\",\n lg: \"14rem\",\n xl: \"16rem\",\n \"2xl\": \"20rem\",\n};\n\nexport function OrderedList({\n items,\n scrollAxis,\n gap,\n borderRadius,\n imageAspectRatio,\n showBadge,\n showFavorite,\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n numberColor,\n numberSize,\n showMetaText,\n}: OrderedListProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n\n const scrollByAmount = (direction: \"prev\" | \"next\") => {\n const container = scrollContainerRef.current;\n if (!container) return;\n\n const computedGap = parseFloat(getComputedStyle(container).gap) || 0;\n const scrollAmount = SCROLL_ITEM_WIDTH + computedGap;\n\n container.scrollTo({\n left:\n container.scrollLeft +\n (direction === \"next\" ? scrollAmount : -scrollAmount),\n behavior: \"smooth\",\n });\n };\n\n const contentProps = {\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n };\n\n if (scrollAxis === \"horizontal\") {\n return (\n <div className=\"relative\">\n <div\n ref={scrollContainerRef}\n className={`flex gap-${gapValues[gap]} scrollbar-hide overflow-x-auto overflow-y-hidden scroll-smooth`}\n >\n {items.map((item, index) => {\n const imageUrl = getImageUrl(item);\n const aspectRatioClass = getAspectRatioClass(imageAspectRatio);\n\n return (\n <div key={item.id} className=\"relative w-[300px] flex-shrink-0\">\n <div\n className={`absolute top-0 left-0 text-${numberColor} z-0 leading-none font-bold opacity-20`}\n style={{ fontSize: largeNumberSizes[numberSize] }}\n >\n {index + 1}\n </div>\n\n <div\n className={`relative z-10 ml-20 rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md`}\n >\n {showBadge && item.discount && (\n <DiscountBadge discount={item.discount} />\n )}\n {showFavorite && <FavoriteButton />}\n {imageUrl && (\n <div\n className={`w-full ${aspectRatioClass} overflow-hidden`}\n >\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <ListItemCardContent item={item} {...contentProps} />\n </div>\n </div>\n );\n })}\n </div>\n\n <div className=\"absolute inset-x-0 top-1/2 z-20 flex w-full -translate-y-1/2 items-center justify-between px-8\">\n <ScrollArrows\n onPrevious={() => scrollByAmount(\"prev\")}\n onNext={() => scrollByAmount(\"next\")}\n />\n </div>\n </div>\n );\n }\n\n if (scrollAxis === \"vertical\") {\n return (\n <div className={`flex flex-col gap-${gapValues[gap]}`}>\n {items.map((item, index) => {\n const imageUrl = getImageUrl(item);\n\n return (\n <div\n key={item.id}\n className={`relative flex gap-${gapValues[gap]} rounded-${borderRadius} bg-background overflow-hidden shadow-sm transition-shadow hover:shadow-md ${`p-${padding}`}`}\n >\n <div\n className={`flex-shrink-0 text-${numberColor} text-${numberSize === \"md\" ? \"base\" : numberSize} flex w-16 items-center justify-center font-bold`}\n >\n {index + 1}\n </div>\n {imageUrl && (\n <div className=\"h-24 w-24 flex-shrink-0 overflow-hidden rounded-md\">\n <img\n src={imageUrl}\n alt={item.title || \"Product\"}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <div className=\"flex-1\">\n <ListItemCardContent item={item} {...contentProps} />\n </div>\n {showBadge && item.discount && (\n <div className=\"bg-destructive text-destructive-foreground absolute top-2 right-2 rounded-md px-2 py-1 text-xs font-bold\">\n {getStringValue(item.discount)}\n </div>\n )}\n {showFavorite && (\n <FavoriteButton className=\"bg-background/80 hover:bg-background absolute top-2 right-12 rounded-full p-2 backdrop-blur-sm transition-colors\" />\n )}\n </div>\n );\n })}\n </div>\n );\n }\n\n return null;\n}\n","import type { ComponentProps } from \"react\";\nimport type {\n ColorOptions,\n FontSizeOptions,\n BorderRadiusOptions,\n PaddingOptions,\n GapOptions,\n BackgroundValue,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n getGapField,\n} from \"../core/fields\";\nimport { FeaturedSection } from \"./list-widget/FeaturedSection\";\nimport { UnorderedList } from \"./list-widget/UnorderedList\";\nimport { OrderedList } from \"./list-widget/OrderedList\";\n\nconst DEFAULT_ITEMS: ListItem[] = [];\n\ntype ListItem = {\n id: string;\n image?: string;\n imageUrl?: string;\n videoUrl?: string;\n title?: string;\n description?: string;\n price?: string;\n originalPrice?: string;\n discount?: string;\n qv?: string;\n cv?: string;\n};\n\ntype ImageAspectRatio = \"square\" | \"landscape\" | \"portrait\";\ntype ListType = \"ordered\" | \"unordered\";\ntype ScrollAxis = \"horizontal\" | \"vertical\";\n\ntype ListWidgetProps = ComponentProps<\"div\"> & {\n // List configuration\n listType?: ListType;\n scrollAxis?: ScrollAxis;\n titleEnabled?: boolean;\n title?: string;\n items?: ListItem[];\n\n // Text styling\n titleColor?: ColorOptions;\n titleSize?: FontSizeOptions;\n itemTitleColor?: ColorOptions;\n itemTitleSize?: FontSizeOptions;\n descriptionColor?: ColorOptions;\n descriptionSize?: FontSizeOptions;\n priceColor?: ColorOptions;\n priceSize?: FontSizeOptions;\n originalPriceColor?: ColorOptions;\n metaTextColor?: ColorOptions;\n metaTextSize?: FontSizeOptions;\n\n // Ordered list styling\n numberColor?: ColorOptions;\n numberSize?: FontSizeOptions;\n\n // Layout\n borderRadius?: BorderRadiusOptions;\n padding?: PaddingOptions;\n gap?: GapOptions;\n columns?: number;\n imageAspectRatio?: ImageAspectRatio;\n background?: BackgroundValue;\n\n // Behavior\n showBadge?: boolean;\n showFavorite?: boolean;\n showMetaText?: boolean;\n maxItems?: number;\n\n // Featured section\n showFeaturedSection?: boolean;\n featuredAsset?: string | { [key: string]: unknown };\n featuredTitle?: string;\n featuredSubtitle?: string;\n featuredButtonText?: string;\n featuredButtonUrl?: string;\n featuredSubtitleColor?: ColorOptions;\n featuredSubtitleSize?: FontSizeOptions;\n};\n\nfunction getFeaturedAssetUrl(\n value: string | { [key: string]: unknown } | undefined,\n): { url: string; isVideo: boolean } | undefined {\n if (!value) return undefined;\n\n // Handle string URLs\n if (typeof value === \"string\") {\n const isVideo = /\\.(mp4|webm|ogg|mov)$/i.test(value);\n return { url: value, isVideo };\n }\n\n // Handle ShareableItem objects\n if (typeof value === \"object\") {\n // Check for video URL first\n const videoUrl =\n (value.videoUrl as string) ||\n (value.video_url as string) ||\n (value.url as string);\n if (videoUrl && /\\.(mp4|webm|ogg|mov)$/i.test(videoUrl)) {\n return { url: videoUrl, isVideo: true };\n }\n\n // Fall back to image URL\n const imageUrl =\n (value.imageUrl as string) ||\n (value.image_url as string) ||\n (value.url as string);\n if (imageUrl) {\n return { url: imageUrl, isVideo: false };\n }\n }\n\n return undefined;\n}\n\nexport function ListWidget({\n listType = \"unordered\",\n scrollAxis = \"horizontal\",\n titleEnabled = true,\n title,\n items = DEFAULT_ITEMS,\n titleColor = \"foreground\",\n titleSize = \"lg\",\n itemTitleColor = \"foreground\",\n itemTitleSize = \"sm\",\n descriptionColor = \"foreground\",\n descriptionSize = \"sm\",\n priceColor = \"foreground\",\n priceSize = \"md\",\n originalPriceColor = \"muted\",\n metaTextColor = \"muted\",\n metaTextSize = \"xs\",\n numberColor = \"primary\",\n numberSize = \"2xl\",\n borderRadius = \"md\",\n padding = 4,\n gap = \"md\",\n columns = 3,\n imageAspectRatio = \"square\",\n background = { type: \"solid\", color: \"background\" },\n showBadge = true,\n showFavorite = true,\n showMetaText = true,\n maxItems = 12,\n showFeaturedSection = false,\n featuredAsset,\n featuredTitle,\n featuredSubtitle,\n featuredButtonText,\n featuredButtonUrl,\n featuredSubtitleColor = \"background\",\n featuredSubtitleSize = \"md\",\n className,\n ...props\n}: ListWidgetProps) {\n const displayItems = maxItems ? items.slice(0, maxItems) : items;\n const hasItems = displayItems.length > 0;\n\n const itemStyleProps = {\n padding,\n itemTitleColor,\n itemTitleSize,\n descriptionColor,\n descriptionSize,\n priceColor,\n priceSize,\n originalPriceColor,\n metaTextColor,\n metaTextSize,\n showMetaText,\n showBadge,\n showFavorite,\n borderRadius,\n imageAspectRatio,\n gap,\n };\n\n const hasFeaturedAsset = getFeaturedAssetUrl(featuredAsset);\n const shouldShowFeaturedSection = showFeaturedSection && hasFeaturedAsset;\n\n // Background styling\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\n return (\n <div\n className={`@container bg-${backgroundColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {titleEnabled && title && (\n <h2\n className={`text-${titleColor} text-${titleSize === \"md\" ? \"base\" : titleSize} mb-6 font-bold`}\n >\n {title}\n </h2>\n )}\n {!hasItems ? (\n <div className=\"border-border bg-muted flex items-center justify-center rounded-md border-2 border-dashed py-12 text-center\">\n <p className=\"text-muted\">No items to display</p>\n </div>\n ) : shouldShowFeaturedSection ? (\n <div className=\"flex flex-col gap-4 @lg:flex-row @lg:gap-6\">\n <div className=\"w-full @lg:w-[45%]\">\n <FeaturedSection\n borderRadius={borderRadius}\n titleSize={titleSize}\n featuredTitle={featuredTitle}\n featuredSubtitle={featuredSubtitle}\n featuredButtonText={featuredButtonText}\n featuredButtonUrl={featuredButtonUrl}\n featuredSubtitleColor={featuredSubtitleColor}\n featuredSubtitleSize={featuredSubtitleSize}\n asset={hasFeaturedAsset!}\n />\n </div>\n <div className=\"w-full @lg:w-[55%]\">\n {listType === \"unordered\" ? (\n <UnorderedList\n items={displayItems}\n columns={columns}\n {...itemStyleProps}\n />\n ) : (\n <OrderedList\n items={displayItems}\n scrollAxis={scrollAxis}\n numberColor={numberColor}\n numberSize={numberSize}\n {...itemStyleProps}\n />\n )}\n </div>\n </div>\n ) : listType === \"unordered\" ? (\n <UnorderedList\n items={displayItems}\n columns={columns}\n {...itemStyleProps}\n />\n ) : (\n <OrderedList\n items={displayItems}\n scrollAxis={scrollAxis}\n numberColor={numberColor}\n numberSize={numberSize}\n {...itemStyleProps}\n />\n )}\n </div>\n );\n}\n\nexport const listWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ListWidget\",\n displayName: \"List\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"items\"],\n fields: [\n // Styling tab - Title group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the list\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"title\",\n label: \"Title\",\n type: \"text\",\n description: \"Header text for the list\",\n defaultValue: \"List\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleSize\",\n label: \"Title Font Size\",\n description: \"Size of the list title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the list title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling tab - Design group\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding inside the container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Rounded corners for the container and images\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getGapField({\n key: \"gap\",\n label: \"Gap\",\n description: \"Spacing between items\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n type: \"background\",\n defaultValue: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background color or image for the widget\",\n tab: \"styling\",\n group: \"Design\",\n },\n\n // Styling tab - List Configuration group\n {\n key: \"listType\",\n label: \"List Type\",\n type: \"select\",\n description: \"Type of list layout\",\n defaultValue: \"unordered\",\n options: [\n { label: \"Unordered (Grid)\", value: \"unordered\" },\n { label: \"Ordered (Numbered)\", value: \"ordered\" },\n ],\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"maxItems\",\n label: \"Max Items\",\n type: \"number\",\n description: \"Maximum number of items to display\",\n min: 1,\n max: 100,\n step: 1,\n defaultValue: 12,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"imageAspectRatio\",\n label: \"Image Aspect Ratio\",\n type: \"buttonGroup\",\n description: \"Aspect ratio for item images\",\n defaultValue: \"square\",\n options: [\n { label: \"Square\", value: \"square\" },\n { label: \"Landscape\", value: \"landscape\" },\n { label: \"Portrait\", value: \"portrait\" },\n ],\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showBadge\",\n label: \"Show Discount Badge\",\n type: \"boolean\",\n description: \"Display discount badge on images\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showFavorite\",\n label: \"Show Favorite Icon\",\n type: \"boolean\",\n description: \"Display favorite/heart icon on images\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n {\n key: \"showMetaText\",\n label: \"Show QV/CV Text\",\n type: \"boolean\",\n description: \"Display QV and CV values\",\n defaultValue: true,\n tab: \"styling\",\n group: \"List Configuration\",\n },\n\n // Styling tab - Unordered List Configuration\n {\n key: \"columns\",\n label: \"Grid Columns\",\n type: \"number\",\n description: \"Number of columns in the grid (unordered list only)\",\n min: 1,\n max: 6,\n step: 1,\n defaultValue: 3,\n tab: \"styling\",\n group: \"Unordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"unordered\" },\n },\n\n // Styling tab - Ordered List Configuration\n {\n key: \"scrollAxis\",\n label: \"Scroll Direction\",\n type: \"select\",\n description: \"Direction for ordered list scrolling\",\n defaultValue: \"horizontal\",\n options: [\n { label: \"Horizontal\", value: \"horizontal\" },\n { label: \"Vertical\", value: \"vertical\" },\n ],\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n },\n getColorField({\n key: \"numberColor\",\n label: \"Number Color\",\n description: \"Color for ordered list numbers\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n }),\n getFontSizeField({\n key: \"numberSize\",\n label: \"Number Font Size\",\n description: \"Size of ordered list numbers\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Ordered List Configuration\",\n requiresKeyValue: { key: \"listType\", value: \"ordered\" },\n }),\n\n // Styling tab - Item Styling group\n getColorField({\n key: \"itemTitleColor\",\n label: \"Item Title Color\",\n description: \"Color for item titles\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"itemTitleSize\",\n label: \"Item Title Font Size\",\n description: \"Size of item titles\",\n defaultValue: \"sm\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator2\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"descriptionColor\",\n label: \"Description Color\",\n description: \"Color for descriptions\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"descriptionSize\",\n label: \"Description Font Size\",\n description: \"Size of descriptions\",\n defaultValue: \"sm\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator3\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"priceColor\",\n label: \"Price Color\",\n description: \"Color for prices\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"priceSize\",\n label: \"Price Font Size\",\n description: \"Size of prices\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getColorField({\n key: \"originalPriceColor\",\n label: \"Original Price Color\",\n description: \"Color for crossed-out original prices\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n {\n key: \"separator4\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Item Styling\",\n },\n getColorField({\n key: \"metaTextColor\",\n label: \"Meta Text Color\",\n description: \"Color for QV/CV text\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n getFontSizeField({\n key: \"metaTextSize\",\n label: \"Meta Text Font Size\",\n description: \"Size of QV/CV text\",\n defaultValue: \"xs\",\n tab: \"styling\",\n group: \"Item Styling\",\n }),\n\n // Styling tab - Featured Section group\n {\n key: \"showFeaturedSection\",\n label: \"Show Featured Section\",\n type: \"boolean\",\n description: \"Display a featured content section\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Featured Section\",\n },\n {\n key: \"featuredAsset\",\n label: \"Featured Asset\",\n type: \"resource\",\n description:\n \"Select a single image or video resource for the featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n allowedTypes: [\"Medium\"],\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredTitle\",\n label: \"Featured Title\",\n type: \"text\",\n description: \"Title for featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredSubtitle\",\n label: \"Featured Subtitle\",\n type: \"text\",\n description: \"Subtitle for featured section\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredButtonText\",\n label: \"Featured Button Text\",\n type: \"text\",\n description: \"Text for featured section button\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n {\n key: \"featuredButtonUrl\",\n label: \"Featured Button URL\",\n type: \"text\",\n description: \"URL for featured section button\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n },\n getColorField({\n key: \"featuredSubtitleColor\",\n label: \"Featured Subtitle Color\",\n description: \"Color for featured subtitle\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n }),\n getFontSizeField({\n key: \"featuredSubtitleSize\",\n label: \"Featured Subtitle Font Size\",\n description: \"Size of featured subtitle\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Featured Section\",\n requiresKeyToBeTrue: \"showFeaturedSection\",\n }),\n\n // Data tab - Data Configuration\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n itemConfigSchema: {\n description: \"Configure settings for this list item\",\n fields: [\n {\n key: \"title\",\n label: \"Custom Title\",\n type: \"text\",\n description: \"Override the item's title\",\n },\n {\n key: \"description\",\n label: \"Custom Description\",\n type: \"textarea\",\n description: \"Override the item's description\",\n rows: 3,\n },\n {\n key: \"price\",\n label: \"Price\",\n type: \"text\",\n description: \"Current price\",\n },\n {\n key: \"originalPrice\",\n label: \"Original Price\",\n type: \"text\",\n description: \"Original price (will be crossed out)\",\n },\n {\n key: \"discount\",\n label: \"Discount Badge\",\n type: \"text\",\n description: \"Discount text (e.g., '40% Off')\",\n },\n {\n key: \"qv\",\n label: \"QV Value\",\n type: \"text\",\n description: \"Qualifying Volume value\",\n },\n {\n key: \"cv\",\n label: \"CV Value\",\n type: \"text\",\n description: \"Commission Volume value\",\n },\n {\n key: \"image\",\n label: \"Image URL\",\n type: \"text\",\n description: \"Custom image URL for this item\",\n },\n ],\n },\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
@@ -20,7 +20,7 @@ function MediaRenderer({
|
|
|
20
20
|
if (!hasValidSrc) {
|
|
21
21
|
const icon = mediaType === "video" ? faVideo : faImage;
|
|
22
22
|
const label = mediaType === "video" ? "No video selected" : "No image selected";
|
|
23
|
-
return /* @__PURE__ */ jsx("div", { className: "flex h-full min-h-[200px] w-full items-center justify-center
|
|
23
|
+
return /* @__PURE__ */ jsx("div", { className: "bg-muted flex h-full min-h-[200px] w-full items-center justify-center", children: /* @__PURE__ */ jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-2", children: [
|
|
24
24
|
/* @__PURE__ */ jsx(FontAwesomeIcon, { icon, className: "h-12 w-12" }),
|
|
25
25
|
/* @__PURE__ */ jsx("p", { className: "text-sm", children: label })
|
|
26
26
|
] }) });
|
|
@@ -171,5 +171,5 @@ function getMediaPropsFromWidgetSchema(schema) {
|
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
export { MediaRenderer, getMediaPropsFromShareable, getMediaPropsFromWidgetSchema };
|
|
174
|
-
//# sourceMappingURL=chunk-
|
|
175
|
-
//# sourceMappingURL=chunk-
|
|
174
|
+
//# sourceMappingURL=chunk-L3HN4J2Y.js.map
|
|
175
|
+
//# sourceMappingURL=chunk-L3HN4J2Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MediaRenderer.tsx"],"names":["result"],"mappings":"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","file":"chunk-T6BC5TUS.js","sourcesContent":["import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faImage, faVideo } from \"@fortawesome/pro-regular-svg-icons\";\nimport type { ShareableItem, WidgetSchema } from \"@fluid-app/rep-core/types\";\n\nexport type MediaRendererProps = {\n src?: string | undefined;\n alt?: string | undefined;\n objectFit?: \"contain\" | \"cover\" | \"fill\" | \"none\" | undefined;\n focusPoint?: string | undefined;\n mediaType?: \"image\" | \"video\" | undefined;\n poster?: string | undefined;\n autoplay?: boolean | undefined;\n loop?: boolean | undefined;\n muted?: boolean | undefined;\n controls?: boolean | undefined;\n};\n\nexport function MediaRenderer({\n src,\n alt = \"Media\",\n objectFit = \"cover\",\n focusPoint,\n mediaType = \"image\",\n poster,\n autoplay = false,\n loop = false,\n muted = false,\n controls = true,\n}: MediaRendererProps) {\n const hasValidSrc = src && src.trim() !== \"\";\n const objectPosition = focusPoint?.replace(\"-\", \" \");\n\n if (!hasValidSrc) {\n const icon = mediaType === \"video\" ? faVideo : faImage;\n const label =\n mediaType === \"video\" ? \"No video selected\" : \"No image selected\";\n return (\n <div className=\"flex h-full min-h-[200px] w-full items-center justify-center bg-muted\">\n <div className=\"flex flex-col items-center gap-2 text-muted-foreground\">\n <FontAwesomeIcon icon={icon} className=\"h-12 w-12\" />\n <p className=\"text-sm\">{label}</p>\n </div>\n </div>\n );\n }\n\n const isContainMode = objectFit === \"contain\";\n const blurSrc = isContainMode ? `${src}?tr=bl-50` : undefined;\n\n if (mediaType === \"video\") {\n const blurredBgSrc = isContainMode\n ? poster\n ? `${poster}?tr=bl-50`\n : blurSrc\n : undefined;\n\n if (isContainMode && blurredBgSrc) {\n return (\n <div className=\"relative h-full w-full overflow-hidden\">\n <img\n src={blurredBgSrc}\n alt=\"\"\n className=\"absolute inset-0 h-full w-full object-cover\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-black/30\" aria-hidden=\"true\" />\n <video\n src={src}\n poster={poster}\n controls={controls}\n autoPlay={autoplay}\n loop={loop}\n muted={muted}\n className={`relative z-10 h-full w-full object-contain ${!controls ? \"pointer-events-none\" : \"\"}`}\n >\n Your browser does not support the video tag.\n </video>\n </div>\n );\n }\n\n return (\n <video\n src={src}\n poster={poster}\n controls={controls}\n autoPlay={autoplay}\n loop={loop}\n muted={muted}\n className={`h-full w-full object-${objectFit} ${!controls ? \"pointer-events-none\" : \"\"}`}\n style={objectPosition ? { objectPosition } : undefined}\n >\n Your browser does not support the video tag.\n </video>\n );\n }\n\n if (isContainMode) {\n return (\n <div className=\"relative h-full w-full overflow-hidden\">\n <img\n src={blurSrc}\n alt=\"\"\n className=\"absolute inset-0 h-full w-full object-cover\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-black/30\" aria-hidden=\"true\" />\n <img\n src={src}\n alt={alt}\n className=\"relative z-10 h-full w-full object-contain\"\n />\n </div>\n );\n }\n\n return (\n <img\n src={src}\n alt={alt}\n className={`h-full w-full object-${objectFit}`}\n style={objectPosition ? { objectPosition } : undefined}\n />\n );\n}\n\n/**\n * Converts a ShareableItem to MediaRenderer props.\n * Replaces the createWidgetFromShareable → ScreenRenderer pattern.\n */\nexport function getMediaPropsFromShareable(\n item: ShareableItem,\n): MediaRendererProps {\n const isVideo = item.kind === \"video\" || !!item.videoUrl;\n\n if (isVideo && item.videoUrl) {\n const result: MediaRendererProps = {\n mediaType: \"video\",\n src: item.videoUrl,\n alt: item.title ?? \"Video\",\n };\n if (item.imageUrl != null) result.poster = item.imageUrl;\n return result;\n }\n\n const result: MediaRendererProps = {\n mediaType: \"image\",\n alt: item.title || \"Image\",\n objectFit: \"cover\",\n };\n if (item.imageUrl != null) result.src = item.imageUrl;\n return result;\n}\n\n/**\n * Extracts media props from an ImageWidget/VideoWidget schema.\n * Used by CarouselWidget for slide.content rendering.\n */\nexport function getMediaPropsFromWidgetSchema(\n schema: WidgetSchema,\n): MediaRendererProps {\n const props = schema.props;\n\n const resource = props.resource as ShareableItem | undefined;\n const useCustomUrl = props.useCustomUrl as boolean | undefined;\n const focusPoint = props.focusPoint as string | undefined;\n const displayFit = props.displayFit as\n | MediaRendererProps[\"objectFit\"]\n | undefined;\n\n if (schema.type === \"VideoWidget\") {\n const result: MediaRendererProps = {\n mediaType: \"video\",\n autoplay: (props.autoplay as boolean | undefined) ?? false,\n loop: (props.loop as boolean | undefined) ?? false,\n muted: (props.muted as boolean | undefined) ?? false,\n controls: (props.controls as boolean | undefined) ?? true,\n objectFit: displayFit ?? \"cover\",\n focusPoint,\n };\n if (useCustomUrl) {\n if (typeof props.src === \"string\") result.src = props.src;\n if (typeof props.poster === \"string\") result.poster = props.poster;\n } else if (resource) {\n if (resource.videoUrl) result.src = resource.videoUrl;\n else if (typeof props.src === \"string\") result.src = props.src;\n if (resource.imageUrl) result.poster = resource.imageUrl;\n else if (typeof props.poster === \"string\") result.poster = props.poster;\n } else {\n if (typeof props.src === \"string\") result.src = props.src;\n if (typeof props.poster === \"string\") result.poster = props.poster;\n }\n return result;\n }\n\n const result: MediaRendererProps = {\n mediaType: \"image\",\n alt: (props.alt as string | undefined) ?? \"Image\",\n objectFit: displayFit ?? \"cover\",\n focusPoint,\n };\n if (useCustomUrl) {\n if (typeof props.src === \"string\") result.src = props.src;\n } else if (resource) {\n if (resource.imageUrl) result.src = resource.imageUrl;\n else if (typeof props.src === \"string\") result.src = props.src;\n if (resource.title) result.alt = resource.title;\n } else {\n if (typeof props.src === \"string\") result.src = props.src;\n }\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/MediaRenderer.tsx"],"names":["result"],"mappings":"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","file":"chunk-L3HN4J2Y.js","sourcesContent":["import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faImage, faVideo } from \"@fortawesome/pro-regular-svg-icons\";\nimport type { ShareableItem, WidgetSchema } from \"@fluid-app/rep-core/types\";\n\nexport type MediaRendererProps = {\n src?: string | undefined;\n alt?: string | undefined;\n objectFit?: \"contain\" | \"cover\" | \"fill\" | \"none\" | undefined;\n focusPoint?: string | undefined;\n mediaType?: \"image\" | \"video\" | undefined;\n poster?: string | undefined;\n autoplay?: boolean | undefined;\n loop?: boolean | undefined;\n muted?: boolean | undefined;\n controls?: boolean | undefined;\n};\n\nexport function MediaRenderer({\n src,\n alt = \"Media\",\n objectFit = \"cover\",\n focusPoint,\n mediaType = \"image\",\n poster,\n autoplay = false,\n loop = false,\n muted = false,\n controls = true,\n}: MediaRendererProps) {\n const hasValidSrc = src && src.trim() !== \"\";\n const objectPosition = focusPoint?.replace(\"-\", \" \");\n\n if (!hasValidSrc) {\n const icon = mediaType === \"video\" ? faVideo : faImage;\n const label =\n mediaType === \"video\" ? \"No video selected\" : \"No image selected\";\n return (\n <div className=\"bg-muted flex h-full min-h-[200px] w-full items-center justify-center\">\n <div className=\"text-muted-foreground flex flex-col items-center gap-2\">\n <FontAwesomeIcon icon={icon} className=\"h-12 w-12\" />\n <p className=\"text-sm\">{label}</p>\n </div>\n </div>\n );\n }\n\n const isContainMode = objectFit === \"contain\";\n const blurSrc = isContainMode ? `${src}?tr=bl-50` : undefined;\n\n if (mediaType === \"video\") {\n const blurredBgSrc = isContainMode\n ? poster\n ? `${poster}?tr=bl-50`\n : blurSrc\n : undefined;\n\n if (isContainMode && blurredBgSrc) {\n return (\n <div className=\"relative h-full w-full overflow-hidden\">\n <img\n src={blurredBgSrc}\n alt=\"\"\n className=\"absolute inset-0 h-full w-full object-cover\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-black/30\" aria-hidden=\"true\" />\n <video\n src={src}\n poster={poster}\n controls={controls}\n autoPlay={autoplay}\n loop={loop}\n muted={muted}\n className={`relative z-10 h-full w-full object-contain ${!controls ? \"pointer-events-none\" : \"\"}`}\n >\n Your browser does not support the video tag.\n </video>\n </div>\n );\n }\n\n return (\n <video\n src={src}\n poster={poster}\n controls={controls}\n autoPlay={autoplay}\n loop={loop}\n muted={muted}\n className={`h-full w-full object-${objectFit} ${!controls ? \"pointer-events-none\" : \"\"}`}\n style={objectPosition ? { objectPosition } : undefined}\n >\n Your browser does not support the video tag.\n </video>\n );\n }\n\n if (isContainMode) {\n return (\n <div className=\"relative h-full w-full overflow-hidden\">\n <img\n src={blurSrc}\n alt=\"\"\n className=\"absolute inset-0 h-full w-full object-cover\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-black/30\" aria-hidden=\"true\" />\n <img\n src={src}\n alt={alt}\n className=\"relative z-10 h-full w-full object-contain\"\n />\n </div>\n );\n }\n\n return (\n <img\n src={src}\n alt={alt}\n className={`h-full w-full object-${objectFit}`}\n style={objectPosition ? { objectPosition } : undefined}\n />\n );\n}\n\n/**\n * Converts a ShareableItem to MediaRenderer props.\n * Replaces the createWidgetFromShareable → ScreenRenderer pattern.\n */\nexport function getMediaPropsFromShareable(\n item: ShareableItem,\n): MediaRendererProps {\n const isVideo = item.kind === \"video\" || !!item.videoUrl;\n\n if (isVideo && item.videoUrl) {\n const result: MediaRendererProps = {\n mediaType: \"video\",\n src: item.videoUrl,\n alt: item.title ?? \"Video\",\n };\n if (item.imageUrl != null) result.poster = item.imageUrl;\n return result;\n }\n\n const result: MediaRendererProps = {\n mediaType: \"image\",\n alt: item.title || \"Image\",\n objectFit: \"cover\",\n };\n if (item.imageUrl != null) result.src = item.imageUrl;\n return result;\n}\n\n/**\n * Extracts media props from an ImageWidget/VideoWidget schema.\n * Used by CarouselWidget for slide.content rendering.\n */\nexport function getMediaPropsFromWidgetSchema(\n schema: WidgetSchema,\n): MediaRendererProps {\n const props = schema.props;\n\n const resource = props.resource as ShareableItem | undefined;\n const useCustomUrl = props.useCustomUrl as boolean | undefined;\n const focusPoint = props.focusPoint as string | undefined;\n const displayFit = props.displayFit as\n | MediaRendererProps[\"objectFit\"]\n | undefined;\n\n if (schema.type === \"VideoWidget\") {\n const result: MediaRendererProps = {\n mediaType: \"video\",\n autoplay: (props.autoplay as boolean | undefined) ?? false,\n loop: (props.loop as boolean | undefined) ?? false,\n muted: (props.muted as boolean | undefined) ?? false,\n controls: (props.controls as boolean | undefined) ?? true,\n objectFit: displayFit ?? \"cover\",\n focusPoint,\n };\n if (useCustomUrl) {\n if (typeof props.src === \"string\") result.src = props.src;\n if (typeof props.poster === \"string\") result.poster = props.poster;\n } else if (resource) {\n if (resource.videoUrl) result.src = resource.videoUrl;\n else if (typeof props.src === \"string\") result.src = props.src;\n if (resource.imageUrl) result.poster = resource.imageUrl;\n else if (typeof props.poster === \"string\") result.poster = props.poster;\n } else {\n if (typeof props.src === \"string\") result.src = props.src;\n if (typeof props.poster === \"string\") result.poster = props.poster;\n }\n return result;\n }\n\n const result: MediaRendererProps = {\n mediaType: \"image\",\n alt: (props.alt as string | undefined) ?? \"Image\",\n objectFit: displayFit ?? \"cover\",\n focusPoint,\n };\n if (useCustomUrl) {\n if (typeof props.src === \"string\") result.src = props.src;\n } else if (resource) {\n if (resource.imageUrl) result.src = resource.imageUrl;\n else if (typeof props.src === \"string\") result.src = props.src;\n if (resource.title) result.alt = resource.title;\n } else {\n if (typeof props.src === \"string\") result.src = props.src;\n }\n return result;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6RNVWRDD_cjs = require('./chunk-6RNVWRDD.cjs');
|
|
4
4
|
var chunkJ6HCPXT5_cjs = require('./chunk-J6HCPXT5.cjs');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var uiPrimitives = require('@fluid-app/ui-primitives');
|
|
@@ -9,7 +9,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
9
9
|
|
|
10
10
|
var DEFAULT_DATA = [];
|
|
11
11
|
function ImageCellRenderer(_value, item) {
|
|
12
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-10 w-10 rounded object-cover", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-10 w-10 rounded object-cover", children: /* @__PURE__ */ jsxRuntime.jsx(chunk6RNVWRDD_cjs.MediaRenderer, { ...chunk6RNVWRDD_cjs.getMediaPropsFromShareable(item) }) });
|
|
13
13
|
}
|
|
14
14
|
function PriceCellRenderer(_value, item) {
|
|
15
15
|
return (item.display_price ?? item.price) || "-";
|
|
@@ -147,10 +147,10 @@ function TableWidget({
|
|
|
147
147
|
className: `@container rounded-${borderRadius} bg-${backgroundColor} p-${padding} ${className}`,
|
|
148
148
|
style: { backgroundImage },
|
|
149
149
|
...props,
|
|
150
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-[200px] flex-col items-center justify-center gap-2
|
|
150
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-muted-foreground flex min-h-[200px] flex-col items-center justify-center gap-2", children: [
|
|
151
151
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-4xl", children: "\u{1F4CB}" }),
|
|
152
152
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: "No data available" }),
|
|
153
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
153
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground/70 text-xs", children: "Connect a data source to display table data" })
|
|
154
154
|
] })
|
|
155
155
|
}
|
|
156
156
|
);
|
|
@@ -181,7 +181,7 @@ function TableWidget({
|
|
|
181
181
|
placeholder: "Search all columns...",
|
|
182
182
|
value: globalFilter,
|
|
183
183
|
onChange: (e) => handleGlobalFilterChange(e.target.value),
|
|
184
|
-
className: `w-full rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor}-400 px-3 py-2 text-sm
|
|
184
|
+
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`
|
|
185
185
|
}
|
|
186
186
|
)
|
|
187
187
|
]
|
|
@@ -262,7 +262,7 @@ function TableWidget({
|
|
|
262
262
|
{
|
|
263
263
|
onClick: () => setCurrentPage((p) => Math.max(1, p - 1)),
|
|
264
264
|
disabled: currentPage === 1,
|
|
265
|
-
className: `rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} px-3 py-1 text-sm
|
|
265
|
+
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`,
|
|
266
266
|
children: "Previous"
|
|
267
267
|
}
|
|
268
268
|
),
|
|
@@ -277,7 +277,7 @@ function TableWidget({
|
|
|
277
277
|
{
|
|
278
278
|
onClick: () => setCurrentPage((p) => Math.min(totalPages, p + 1)),
|
|
279
279
|
disabled: currentPage === totalPages,
|
|
280
|
-
className: `rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} px-3 py-1 text-sm
|
|
280
|
+
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`,
|
|
281
281
|
children: "Next"
|
|
282
282
|
}
|
|
283
283
|
)
|
|
@@ -458,5 +458,5 @@ var tableWidgetPropertySchema = {
|
|
|
458
458
|
|
|
459
459
|
exports.TableWidget = TableWidget;
|
|
460
460
|
exports.tableWidgetPropertySchema = tableWidgetPropertySchema;
|
|
461
|
-
//# sourceMappingURL=chunk-
|
|
462
|
-
//# sourceMappingURL=chunk-
|
|
461
|
+
//# sourceMappingURL=chunk-LZJVUYSQ.cjs.map
|
|
462
|
+
//# sourceMappingURL=chunk-LZJVUYSQ.cjs.map
|