@fluid-app/rep-widgets 0.1.8 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/dist/AlertWidget-3Q4AK7PE.js +5 -0
  2. package/dist/{AlertWidget-2JHMNYIY.js.map → AlertWidget-3Q4AK7PE.js.map} +1 -1
  3. package/dist/AlertWidget-C3YMPF7Y.cjs +18 -0
  4. package/dist/{AlertWidget-VHXWOKM4.cjs.map → AlertWidget-C3YMPF7Y.cjs.map} +1 -1
  5. package/dist/CalendarWidget-3FLYUVHK.js +5 -0
  6. package/dist/{CalendarWidget-ZSAZG2NA.js.map → CalendarWidget-3FLYUVHK.js.map} +1 -1
  7. package/dist/CalendarWidget-MQ2ID7YS.cjs +18 -0
  8. package/dist/{CalendarWidget-3QAGQHSO.cjs.map → CalendarWidget-MQ2ID7YS.cjs.map} +1 -1
  9. package/dist/CarouselWidget-KJZHB6XK.cjs +19 -0
  10. package/dist/{CarouselWidget-ORPCX6CM.cjs.map → CarouselWidget-KJZHB6XK.cjs.map} +1 -1
  11. package/dist/CarouselWidget-M3CEN3HQ.js +6 -0
  12. package/dist/{CarouselWidget-AYDQROQ7.js.map → CarouselWidget-M3CEN3HQ.js.map} +1 -1
  13. package/dist/CatchUpWidget-ADY4ZUDD.cjs +18 -0
  14. package/dist/{CatchUpWidget-3BMRWSA7.cjs.map → CatchUpWidget-ADY4ZUDD.cjs.map} +1 -1
  15. package/dist/CatchUpWidget-PJNNL5GI.js +5 -0
  16. package/dist/{CatchUpWidget-YKKUJT4H.js.map → CatchUpWidget-PJNNL5GI.js.map} +1 -1
  17. package/dist/ChartWidget-463QVROY.cjs +17 -0
  18. package/dist/{ChartWidget-ETZEURVU.cjs.map → ChartWidget-463QVROY.cjs.map} +1 -1
  19. package/dist/ChartWidget-554S2GQF.js +4 -0
  20. package/dist/{ChartWidget-QTYGMAEV.js.map → ChartWidget-554S2GQF.js.map} +1 -1
  21. package/dist/ContainerWidget-IOXW77X7.cjs +21 -0
  22. package/dist/{ContainerWidget-WYTZPJSE.cjs.map → ContainerWidget-IOXW77X7.cjs.map} +1 -1
  23. package/dist/ContainerWidget-OLQPEXDT.js +8 -0
  24. package/dist/{ContainerWidget-CYAHQDTH.js.map → ContainerWidget-OLQPEXDT.js.map} +1 -1
  25. package/dist/EmbedWidget-ATU2WS2X.js +3 -0
  26. package/dist/{EmbedWidget-B3JEXJWZ.js.map → EmbedWidget-ATU2WS2X.js.map} +1 -1
  27. package/dist/EmbedWidget-X7FB7C45.cjs +16 -0
  28. package/dist/{EmbedWidget-CWK3I5G5.cjs.map → EmbedWidget-X7FB7C45.cjs.map} +1 -1
  29. package/dist/ImageWidget-6ATLD5II.cjs +17 -0
  30. package/dist/{ImageWidget-RSBFNR5J.cjs.map → ImageWidget-6ATLD5II.cjs.map} +1 -1
  31. package/dist/ImageWidget-BBLG66SD.js +4 -0
  32. package/dist/{ImageWidget-A5DBWFUT.js.map → ImageWidget-BBLG66SD.js.map} +1 -1
  33. package/dist/LayoutWidget-F3BDSGDP.cjs +20 -0
  34. package/dist/{LayoutWidget-VCOKZJV3.cjs.map → LayoutWidget-F3BDSGDP.cjs.map} +1 -1
  35. package/dist/{LayoutWidget-BHM4HFRZ.js → LayoutWidget-MBUJVGKA.js} +4 -4
  36. package/dist/{LayoutWidget-BHM4HFRZ.js.map → LayoutWidget-MBUJVGKA.js.map} +1 -1
  37. package/dist/ListWidget-LZ77ZSBT.js +6 -0
  38. package/dist/{ListWidget-I7I7FAW5.js.map → ListWidget-LZ77ZSBT.js.map} +1 -1
  39. package/dist/ListWidget-Q2MXWXKA.cjs +19 -0
  40. package/dist/{ListWidget-7HUFB5JZ.cjs.map → ListWidget-Q2MXWXKA.cjs.map} +1 -1
  41. package/dist/MySiteWidget-2XUSXN5I.cjs +18 -0
  42. package/dist/{MySiteWidget-JP2NWOOI.cjs.map → MySiteWidget-2XUSXN5I.cjs.map} +1 -1
  43. package/dist/MySiteWidget-L37MCRTV.js +5 -0
  44. package/dist/{MySiteWidget-RPIPPRRN.js.map → MySiteWidget-L37MCRTV.js.map} +1 -1
  45. package/dist/NestedWidget-JKEJ5ZCV.cjs +19 -0
  46. package/dist/{NestedWidget-T5MRGLSP.cjs.map → NestedWidget-JKEJ5ZCV.cjs.map} +1 -1
  47. package/dist/NestedWidget-N6V5LT4B.js +6 -0
  48. package/dist/{NestedWidget-KH7QSXN7.js.map → NestedWidget-N6V5LT4B.js.map} +1 -1
  49. package/dist/QuickShareWidget-B6TOLKM7.cjs +17 -0
  50. package/dist/{QuickShareWidget-47OABEXI.cjs.map → QuickShareWidget-B6TOLKM7.cjs.map} +1 -1
  51. package/dist/QuickShareWidget-TNW4ILJ2.js +4 -0
  52. package/dist/{QuickShareWidget-S2LJDLLJ.js.map → QuickShareWidget-TNW4ILJ2.js.map} +1 -1
  53. package/dist/RecentActivityWidget-USXCTA5W.js +5 -0
  54. package/dist/{RecentActivityWidget-FI72KYRL.js.map → RecentActivityWidget-USXCTA5W.js.map} +1 -1
  55. package/dist/RecentActivityWidget-ZYOFEB5R.cjs +18 -0
  56. package/dist/{RecentActivityWidget-CFYQ32LN.cjs.map → RecentActivityWidget-ZYOFEB5R.cjs.map} +1 -1
  57. package/dist/SpacerWidget-7KQ6UPRH.js +3 -0
  58. package/dist/{SpacerWidget-ZEHGXKOH.js.map → SpacerWidget-7KQ6UPRH.js.map} +1 -1
  59. package/dist/SpacerWidget-APJKG3DG.cjs +16 -0
  60. package/dist/{SpacerWidget-OUFZRSIN.cjs.map → SpacerWidget-APJKG3DG.cjs.map} +1 -1
  61. package/dist/TableWidget-HVBEVBC6.cjs +18 -0
  62. package/dist/{TableWidget-ZX5A4IFW.cjs.map → TableWidget-HVBEVBC6.cjs.map} +1 -1
  63. package/dist/TableWidget-PMQFL7VC.js +5 -0
  64. package/dist/{TableWidget-VMPYQU7I.js.map → TableWidget-PMQFL7VC.js.map} +1 -1
  65. package/dist/TextWidget-GNUQBLDJ.js +4 -0
  66. package/dist/{TextWidget-D72TL53O.js.map → TextWidget-GNUQBLDJ.js.map} +1 -1
  67. package/dist/TextWidget-PUZPMPOC.cjs +17 -0
  68. package/dist/{TextWidget-DYINWJGB.cjs.map → TextWidget-PUZPMPOC.cjs.map} +1 -1
  69. package/dist/ToDoWidget-5EXKPVSO.cjs +18 -0
  70. package/dist/{ToDoWidget-Y7W6TFL7.cjs.map → ToDoWidget-5EXKPVSO.cjs.map} +1 -1
  71. package/dist/ToDoWidget-MI3K365J.js +5 -0
  72. package/dist/{ToDoWidget-XQPQBDZE.js.map → ToDoWidget-MI3K365J.js.map} +1 -1
  73. package/dist/VideoWidget-DYPFWIZX.cjs +17 -0
  74. package/dist/{VideoWidget-R6WKIZFN.cjs.map → VideoWidget-DYPFWIZX.cjs.map} +1 -1
  75. package/dist/VideoWidget-KY3VZHYD.js +4 -0
  76. package/dist/{VideoWidget-OMF2XWAI.js.map → VideoWidget-KY3VZHYD.js.map} +1 -1
  77. package/dist/{chunk-B5S5Q57S.cjs → chunk-2KV26SKG.cjs} +26 -26
  78. package/dist/chunk-2KV26SKG.cjs.map +1 -0
  79. package/dist/{chunk-25GBJPZQ.js → chunk-2NPVYROG.js} +3 -3
  80. package/dist/{chunk-25GBJPZQ.js.map → chunk-2NPVYROG.js.map} +1 -1
  81. package/dist/{chunk-AJ2ZDCQU.js → chunk-2YQKGRGW.js} +3 -3
  82. package/dist/{chunk-AJ2ZDCQU.js.map → chunk-2YQKGRGW.js.map} +1 -1
  83. package/dist/{chunk-WGQS7RB4.js → chunk-3CAOLNTX.js} +3 -3
  84. package/dist/{chunk-WGQS7RB4.js.map → chunk-3CAOLNTX.js.map} +1 -1
  85. package/dist/{chunk-ER6NFOID.cjs → chunk-4Y3HAK22.cjs} +11 -12
  86. package/dist/chunk-4Y3HAK22.cjs.map +1 -0
  87. package/dist/{chunk-MNWWZGL2.js → chunk-57ZUEL25.js} +3 -3
  88. package/dist/{chunk-MNWWZGL2.js.map → chunk-57ZUEL25.js.map} +1 -1
  89. package/dist/{chunk-7B5RPA6J.js → chunk-6EKEDQJB.js} +4 -4
  90. package/dist/chunk-6EKEDQJB.js.map +1 -0
  91. package/dist/chunk-6ZECDBGI.js +3 -0
  92. package/dist/{chunk-ZS7C474P.js.map → chunk-6ZECDBGI.js.map} +1 -1
  93. package/dist/{chunk-YBTY4OMP.cjs → chunk-A5AVY3ML.cjs} +8 -10
  94. package/dist/chunk-A5AVY3ML.cjs.map +1 -0
  95. package/dist/{chunk-KVGWMJZB.js → chunk-AWEFCI4H.js} +3 -3
  96. package/dist/{chunk-KVGWMJZB.js.map → chunk-AWEFCI4H.js.map} +1 -1
  97. package/dist/{chunk-IM3VCKTO.js → chunk-BYGUUGSO.js} +10 -10
  98. package/dist/chunk-BYGUUGSO.js.map +1 -0
  99. package/dist/{chunk-3NB2PJR5.js → chunk-DPPFLZ7G.js} +12 -13
  100. package/dist/chunk-DPPFLZ7G.js.map +1 -0
  101. package/dist/{chunk-DPNUNERL.js → chunk-E5ERYB7Q.js} +4 -4
  102. package/dist/{chunk-DPNUNERL.js.map → chunk-E5ERYB7Q.js.map} +1 -1
  103. package/dist/{chunk-HLXL56YT.js → chunk-EBYQ6EXT.js} +9 -11
  104. package/dist/chunk-EBYQ6EXT.js.map +1 -0
  105. package/dist/{chunk-OFRCK7WR.js → chunk-EL6H7WGK.js} +3 -3
  106. package/dist/{chunk-OFRCK7WR.js.map → chunk-EL6H7WGK.js.map} +1 -1
  107. package/dist/{chunk-Y657NN2D.js → chunk-G45UWQDF.js} +3 -3
  108. package/dist/{chunk-Y657NN2D.js.map → chunk-G45UWQDF.js.map} +1 -1
  109. package/dist/{chunk-YRZ4AHQC.js → chunk-GWICPGTA.js} +29 -17
  110. package/dist/chunk-GWICPGTA.js.map +1 -0
  111. package/dist/{chunk-U5HD3GJ7.cjs → chunk-HA7IVIPJ.cjs} +36 -24
  112. package/dist/chunk-HA7IVIPJ.cjs.map +1 -0
  113. package/dist/{chunk-K4T2XGCW.cjs → chunk-HF7QCK7D.cjs} +9 -9
  114. package/dist/{chunk-K4T2XGCW.cjs.map → chunk-HF7QCK7D.cjs.map} +1 -1
  115. package/dist/{chunk-PEBYBSSB.cjs → chunk-HREBEVS5.cjs} +7 -7
  116. package/dist/{chunk-PEBYBSSB.cjs.map → chunk-HREBEVS5.cjs.map} +1 -1
  117. package/dist/{chunk-CM7D7WGL.cjs → chunk-J6HCPXT5.cjs} +6 -2
  118. package/dist/{chunk-CM7D7WGL.cjs.map → chunk-J6HCPXT5.cjs.map} +1 -1
  119. package/dist/{chunk-IC66PSKF.cjs → chunk-JS4NC5JR.cjs} +9 -9
  120. package/dist/{chunk-IC66PSKF.cjs.map → chunk-JS4NC5JR.cjs.map} +1 -1
  121. package/dist/{chunk-RMZFC7HF.cjs → chunk-KYCPG2DN.cjs} +5 -5
  122. package/dist/{chunk-RMZFC7HF.cjs.map → chunk-KYCPG2DN.cjs.map} +1 -1
  123. package/dist/{chunk-MUFXAD45.cjs → chunk-OGV2OPY7.cjs} +12 -12
  124. package/dist/chunk-OGV2OPY7.cjs.map +1 -0
  125. package/dist/{chunk-SDTP4TVD.cjs → chunk-OZBZOHR4.cjs} +8 -10
  126. package/dist/chunk-OZBZOHR4.cjs.map +1 -0
  127. package/dist/{chunk-PHI5YY5E.cjs → chunk-P6AKK6TA.cjs} +28 -26
  128. package/dist/chunk-P6AKK6TA.cjs.map +1 -0
  129. package/dist/{chunk-M3DV7TXA.cjs → chunk-PK7Y3Q6A.cjs} +10 -10
  130. package/dist/chunk-PK7Y3Q6A.cjs.map +1 -0
  131. package/dist/{chunk-DW6V4ZCT.cjs → chunk-PLXOZ5BH.cjs} +9 -9
  132. package/dist/{chunk-DW6V4ZCT.cjs.map → chunk-PLXOZ5BH.cjs.map} +1 -1
  133. package/dist/{chunk-VU3NEDUQ.js → chunk-QLXZEIFC.js} +17 -17
  134. package/dist/chunk-QLXZEIFC.js.map +1 -0
  135. package/dist/{chunk-VDHV7FEJ.cjs → chunk-RPNLSRUS.cjs} +7 -7
  136. package/dist/{chunk-VDHV7FEJ.cjs.map → chunk-RPNLSRUS.cjs.map} +1 -1
  137. package/dist/{chunk-BZQW7APC.cjs → chunk-SH2YPW2J.cjs} +23 -23
  138. package/dist/{chunk-BZQW7APC.cjs.map → chunk-SH2YPW2J.cjs.map} +1 -1
  139. package/dist/{chunk-QSMGUAYP.cjs → chunk-STGAGLIG.cjs} +9 -9
  140. package/dist/{chunk-QSMGUAYP.cjs.map → chunk-STGAGLIG.cjs.map} +1 -1
  141. package/dist/{chunk-Y6OP3XEQ.cjs → chunk-TMG7H4K5.cjs} +9 -9
  142. package/dist/{chunk-Y6OP3XEQ.cjs.map → chunk-TMG7H4K5.cjs.map} +1 -1
  143. package/dist/{chunk-J2FIIZSN.js → chunk-UXFD52LT.js} +3 -3
  144. package/dist/{chunk-J2FIIZSN.js.map → chunk-UXFD52LT.js.map} +1 -1
  145. package/dist/{chunk-NYL2AQJ2.js → chunk-UZF75XZJ.js} +10 -8
  146. package/dist/chunk-UZF75XZJ.js.map +1 -0
  147. package/dist/{chunk-W2U27MK2.cjs → chunk-XCHMHDYQ.cjs} +9 -9
  148. package/dist/{chunk-W2U27MK2.cjs.map → chunk-XCHMHDYQ.cjs.map} +1 -1
  149. package/dist/{chunk-LFYELLIM.cjs → chunk-XCJUKCGP.cjs} +9 -9
  150. package/dist/{chunk-LFYELLIM.cjs.map → chunk-XCJUKCGP.cjs.map} +1 -1
  151. package/dist/{chunk-GAYZNBS4.js → chunk-XX2N55EZ.js} +3 -3
  152. package/dist/{chunk-GAYZNBS4.js.map → chunk-XX2N55EZ.js.map} +1 -1
  153. package/dist/{chunk-PXWG3SDJ.js → chunk-YGATS7HW.js} +3 -3
  154. package/dist/{chunk-PXWG3SDJ.js.map → chunk-YGATS7HW.js.map} +1 -1
  155. package/dist/{chunk-SB2EVEDN.js → chunk-ZDWZKRJ4.js} +9 -11
  156. package/dist/chunk-ZDWZKRJ4.js.map +1 -0
  157. package/dist/components/index.cjs +6 -6
  158. package/dist/components/index.cjs.map +1 -1
  159. package/dist/components/index.js +8 -1
  160. package/dist/components/index.js.map +1 -1
  161. package/dist/contexts/index.d.cts +3 -3
  162. package/dist/contexts/index.d.ts +3 -3
  163. package/dist/core/index.cjs +8 -8
  164. package/dist/core/index.js +1 -1
  165. package/dist/ui/index.cjs +23 -26
  166. package/dist/ui/index.cjs.map +1 -1
  167. package/dist/ui/index.d.cts +2 -61
  168. package/dist/ui/index.d.ts +2 -61
  169. package/dist/ui/index.js +1 -4
  170. package/dist/ui/index.js.map +1 -1
  171. package/dist/widgets/index.cjs +78 -82
  172. package/dist/widgets/index.cjs.map +1 -1
  173. package/dist/widgets/index.d.cts +209 -8
  174. package/dist/widgets/index.d.ts +209 -8
  175. package/dist/widgets/index.js +39 -43
  176. package/dist/widgets/index.js.map +1 -1
  177. package/package.json +5 -4
  178. package/dist/AlertWidget-2JHMNYIY.js +0 -5
  179. package/dist/AlertWidget-VHXWOKM4.cjs +0 -18
  180. package/dist/CalendarWidget-3QAGQHSO.cjs +0 -18
  181. package/dist/CalendarWidget-ZSAZG2NA.js +0 -5
  182. package/dist/CarouselWidget-AYDQROQ7.js +0 -8
  183. package/dist/CarouselWidget-ORPCX6CM.cjs +0 -21
  184. package/dist/CatchUpWidget-3BMRWSA7.cjs +0 -18
  185. package/dist/CatchUpWidget-YKKUJT4H.js +0 -5
  186. package/dist/ChartWidget-ETZEURVU.cjs +0 -19
  187. package/dist/ChartWidget-QTYGMAEV.js +0 -6
  188. package/dist/ContainerWidget-CYAHQDTH.js +0 -8
  189. package/dist/ContainerWidget-WYTZPJSE.cjs +0 -21
  190. package/dist/EmbedWidget-B3JEXJWZ.js +0 -3
  191. package/dist/EmbedWidget-CWK3I5G5.cjs +0 -16
  192. package/dist/ImageWidget-A5DBWFUT.js +0 -4
  193. package/dist/ImageWidget-RSBFNR5J.cjs +0 -17
  194. package/dist/LayoutWidget-VCOKZJV3.cjs +0 -20
  195. package/dist/ListWidget-7HUFB5JZ.cjs +0 -19
  196. package/dist/ListWidget-I7I7FAW5.js +0 -6
  197. package/dist/MySiteWidget-JP2NWOOI.cjs +0 -18
  198. package/dist/MySiteWidget-RPIPPRRN.js +0 -5
  199. package/dist/NestedWidget-KH7QSXN7.js +0 -6
  200. package/dist/NestedWidget-T5MRGLSP.cjs +0 -19
  201. package/dist/QuickShareWidget-47OABEXI.cjs +0 -17
  202. package/dist/QuickShareWidget-S2LJDLLJ.js +0 -4
  203. package/dist/RecentActivityWidget-CFYQ32LN.cjs +0 -18
  204. package/dist/RecentActivityWidget-FI72KYRL.js +0 -5
  205. package/dist/SpacerWidget-OUFZRSIN.cjs +0 -16
  206. package/dist/SpacerWidget-ZEHGXKOH.js +0 -3
  207. package/dist/TableWidget-VMPYQU7I.js +0 -7
  208. package/dist/TableWidget-ZX5A4IFW.cjs +0 -20
  209. package/dist/TextWidget-D72TL53O.js +0 -4
  210. package/dist/TextWidget-DYINWJGB.cjs +0 -17
  211. package/dist/ToDoWidget-XQPQBDZE.js +0 -5
  212. package/dist/ToDoWidget-Y7W6TFL7.cjs +0 -18
  213. package/dist/VideoWidget-OMF2XWAI.js +0 -4
  214. package/dist/VideoWidget-R6WKIZFN.cjs +0 -17
  215. package/dist/chunk-3NB2PJR5.js.map +0 -1
  216. package/dist/chunk-5HHN5MRZ.js +0 -11
  217. package/dist/chunk-5HHN5MRZ.js.map +0 -1
  218. package/dist/chunk-6U2FEES5.js +0 -55
  219. package/dist/chunk-6U2FEES5.js.map +0 -1
  220. package/dist/chunk-7B5RPA6J.js.map +0 -1
  221. package/dist/chunk-B5S5Q57S.cjs.map +0 -1
  222. package/dist/chunk-ER6NFOID.cjs.map +0 -1
  223. package/dist/chunk-HDA2ZOV2.cjs +0 -13
  224. package/dist/chunk-HDA2ZOV2.cjs.map +0 -1
  225. package/dist/chunk-HLXL56YT.js.map +0 -1
  226. package/dist/chunk-IJHUIM34.cjs +0 -58
  227. package/dist/chunk-IJHUIM34.cjs.map +0 -1
  228. package/dist/chunk-IM3VCKTO.js.map +0 -1
  229. package/dist/chunk-IY3BNQ5Y.js +0 -24
  230. package/dist/chunk-IY3BNQ5Y.js.map +0 -1
  231. package/dist/chunk-JSC4GMQG.js +0 -318
  232. package/dist/chunk-JSC4GMQG.js.map +0 -1
  233. package/dist/chunk-M3DV7TXA.cjs.map +0 -1
  234. package/dist/chunk-MUFXAD45.cjs.map +0 -1
  235. package/dist/chunk-NOZVVD6G.cjs +0 -26
  236. package/dist/chunk-NOZVVD6G.cjs.map +0 -1
  237. package/dist/chunk-NYL2AQJ2.js.map +0 -1
  238. package/dist/chunk-PHI5YY5E.cjs.map +0 -1
  239. package/dist/chunk-SB2EVEDN.js.map +0 -1
  240. package/dist/chunk-SDTP4TVD.cjs.map +0 -1
  241. package/dist/chunk-U5HD3GJ7.cjs.map +0 -1
  242. package/dist/chunk-UH3FAS2R.cjs +0 -353
  243. package/dist/chunk-UH3FAS2R.cjs.map +0 -1
  244. package/dist/chunk-VU3NEDUQ.js.map +0 -1
  245. package/dist/chunk-YBTY4OMP.cjs.map +0 -1
  246. package/dist/chunk-YRZ4AHQC.js.map +0 -1
  247. package/dist/chunk-ZS7C474P.js +0 -3
@@ -9,7 +9,7 @@ var jsxRuntime = require('react/jsx-runtime');
9
9
  function EmbedWidget({
10
10
  url = "",
11
11
  title = "Embedded Content",
12
- height,
12
+ height = "400px",
13
13
  fullScreen = false,
14
14
  allowFullscreen = true,
15
15
  loading = "lazy",
@@ -23,7 +23,7 @@ function EmbedWidget({
23
23
  "div",
24
24
  {
25
25
  className: `flex items-center justify-center rounded-${borderRadius} border-2 border-dashed border-border bg-muted text-muted-foreground ${isFullScreen ? "h-full" : ""} ${className}`,
26
- style: isFullScreen ? void 0 : { height: `${height}px` },
26
+ style: isFullScreen ? void 0 : { height },
27
27
  ...props,
28
28
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 p-6 text-center", children: [
29
29
  /* @__PURE__ */ jsxRuntime.jsx(reactFontawesome.FontAwesomeIcon, { icon: proRegularSvgIcons.faGlobe, className: "h-12 w-12 opacity-50" }),
@@ -92,21 +92,20 @@ var embedWidgetPropertySchema = {
92
92
  defaultValue: false,
93
93
  group: "Design"
94
94
  },
95
- {
95
+ registries.getHeightField({
96
96
  key: "height",
97
- label: "Height (px)",
98
- type: "number",
99
- description: "Height of the embedded iframe in pixels",
100
- min: 100,
97
+ label: "Height",
98
+ description: "Height of the embedded iframe",
99
+ min: 50,
101
100
  max: 1200,
102
- step: 50,
103
- defaultValue: 400,
101
+ step: 10,
102
+ defaultValue: "400px",
104
103
  group: "Design",
105
104
  requiresKeyValue: {
106
105
  key: "fullScreen",
107
106
  value: false
108
107
  }
109
- },
108
+ }),
110
109
  // Settings
111
110
  {
112
111
  key: "allowFullscreen",
@@ -133,5 +132,5 @@ var embedWidgetPropertySchema = {
133
132
 
134
133
  exports.EmbedWidget = EmbedWidget;
135
134
  exports.embedWidgetPropertySchema = embedWidgetPropertySchema;
136
- //# sourceMappingURL=chunk-ER6NFOID.cjs.map
137
- //# sourceMappingURL=chunk-ER6NFOID.cjs.map
135
+ //# sourceMappingURL=chunk-4Y3HAK22.cjs.map
136
+ //# sourceMappingURL=chunk-4Y3HAK22.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/widgets/EmbedWidget.tsx"],"names":["jsx","jsxs","FontAwesomeIcon","faGlobe","getBorderRadiusField","getHeightField"],"mappings":"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","file":"chunk-4Y3HAK22.cjs","sourcesContent":["import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlobe } from \"@fortawesome/pro-regular-svg-icons\";\nimport type { ComponentProps } from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/rep-core/registries\";\nimport type { BorderRadiusOptions } from \"@fluid-app/rep-core/types\";\n\ntype EmbedWidgetProps = ComponentProps<\"div\"> & {\n url?: string;\n title?: string;\n height?: string;\n fullScreen?: boolean;\n allowFullscreen?: boolean;\n loading?: \"eager\" | \"lazy\";\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function EmbedWidget({\n url = \"\",\n title = \"Embedded Content\",\n height = \"400px\",\n fullScreen = false,\n allowFullscreen = true,\n loading = \"lazy\",\n borderRadius = \"md\",\n className,\n ...props\n}: EmbedWidgetProps) {\n const isFullScreen = fullScreen;\n\n // Show placeholder if no URL is provided\n if (!url) {\n return (\n <div\n className={`flex items-center justify-center rounded-${borderRadius} border-2 border-dashed border-border bg-muted text-muted-foreground ${isFullScreen ? \"h-full\" : \"\"} ${className}`}\n style={isFullScreen ? undefined : { height }}\n {...props}\n >\n <div className=\"flex flex-col items-center gap-2 p-6 text-center\">\n <FontAwesomeIcon icon={faGlobe} className=\"h-12 w-12 opacity-50\" />\n <p className=\"text-sm font-medium\">\n Enter a URL to embed external content\n </p>\n <p className=\"text-xs opacity-75\">\n Configure the URL in the properties panel\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`w-full ${isFullScreen ? \"h-full\" : \"\"} ${className}`}\n {...props}\n >\n <iframe\n src={url}\n title={title}\n width=\"100%\"\n height={isFullScreen ? \"100%\" : height}\n loading={loading}\n allowFullScreen={allowFullscreen}\n className={`rounded-${borderRadius} border border-border`}\n sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox\"\n />\n </div>\n );\n}\n\nexport const embedWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"EmbedWidget\",\n displayName: \"Embed\",\n fields: [\n // Content\n {\n key: \"url\",\n label: \"URL\",\n type: \"text\",\n description: \"The URL of the external site to embed\",\n placeholder: \"https://example.com\",\n defaultValue: \"\",\n group: \"Content\",\n },\n {\n key: \"title\",\n label: \"Title\",\n type: \"text\",\n description: \"Accessibility title for the embedded content\",\n defaultValue: \"Embedded Content\",\n group: \"Content\",\n },\n\n // Design\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the embed container\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n {\n key: \"fullScreen\",\n label: \"Full Screen\",\n type: \"boolean\",\n description: \"When enabled, the embed fills the available space\",\n defaultValue: false,\n group: \"Design\",\n },\n getHeightField({\n key: \"height\",\n label: \"Height\",\n description: \"Height of the embedded iframe\",\n min: 50,\n max: 1200,\n step: 10,\n defaultValue: \"400px\",\n group: \"Design\",\n requiresKeyValue: {\n key: \"fullScreen\",\n value: false,\n },\n }),\n\n // Settings\n {\n key: \"allowFullscreen\",\n label: \"Allow Fullscreen\",\n type: \"boolean\",\n description: \"Allow the embedded content to use fullscreen mode\",\n defaultValue: true,\n group: \"Settings\",\n },\n {\n key: \"loading\",\n label: \"Loading\",\n type: \"select\",\n description: \"When to load the embedded content\",\n options: [\n { label: \"Lazy (on scroll)\", value: \"lazy\" },\n { label: \"Eager (immediately)\", value: \"eager\" },\n ],\n defaultValue: \"lazy\",\n group: \"Settings\",\n },\n ],\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { textWidgetPropertySchema, TextWidget } from './chunk-J2FIIZSN.js';
1
+ import { textWidgetPropertySchema, TextWidget } from './chunk-UXFD52LT.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
4
  function AlertWidget(props) {
@@ -10,5 +10,5 @@ var alertWidgetPropertySchema = {
10
10
  };
11
11
 
12
12
  export { AlertWidget, alertWidgetPropertySchema };
13
- //# sourceMappingURL=chunk-MNWWZGL2.js.map
14
- //# sourceMappingURL=chunk-MNWWZGL2.js.map
13
+ //# sourceMappingURL=chunk-57ZUEL25.js.map
14
+ //# sourceMappingURL=chunk-57ZUEL25.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/widgets/AlertWidget.tsx"],"names":[],"mappings":";;;AAOO,SAAS,YAAY,KAAA,EAA0C;AACpE,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAY,GAAG,KAAA,EAAO,CAAA;AAChC;AAEO,IAAM,yBAAA,GAAkD;AAAA,EAC7D,GAAG,wBAAA;AAAA,EACH,UAAA,EAAY;AACd","file":"chunk-MNWWZGL2.js","sourcesContent":["import { TextWidget, textWidgetPropertySchema } from \"./TextWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ComponentProps } from \"react\";\n\n/**\n * AlertWidget - Wrapper for TextWidget (for backwards compatibility)\n */\nexport function AlertWidget(props: ComponentProps<typeof TextWidget>) {\n return <TextWidget {...props} />;\n}\n\nexport const alertWidgetPropertySchema: WidgetPropertySchema = {\n ...textWidgetPropertySchema,\n widgetType: \"AlertWidget\",\n};\n"]}
1
+ {"version":3,"sources":["../src/widgets/AlertWidget.tsx"],"names":[],"mappings":";;;AAOO,SAAS,YAAY,KAAA,EAA0C;AACpE,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAY,GAAG,KAAA,EAAO,CAAA;AAChC;AAEO,IAAM,yBAAA,GAAkD;AAAA,EAC7D,GAAG,wBAAA;AAAA,EACH,UAAA,EAAY;AACd","file":"chunk-57ZUEL25.js","sourcesContent":["import { TextWidget, textWidgetPropertySchema } from \"./TextWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ComponentProps } from \"react\";\n\n/**\n * AlertWidget - Wrapper for TextWidget (for backwards compatibility)\n */\nexport function AlertWidget(props: ComponentProps<typeof TextWidget>) {\n return <TextWidget {...props} />;\n}\n\nexport const alertWidgetPropertySchema: WidgetPropertySchema = {\n ...textWidgetPropertySchema,\n widgetType: \"AlertWidget\",\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { MediaRenderer, getMediaPropsFromShareable } from './chunk-T6BC5TUS.js';
2
- import { Input } from './chunk-IY3BNQ5Y.js';
3
- import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-ZS7C474P.js';
2
+ import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-6ZECDBGI.js';
4
3
  import { useState, useMemo } from 'react';
4
+ import { Input } from '@fluid-app/ui-primitives';
5
5
  import '@fluid-app/rep-core/types';
6
6
  import { jsx, jsxs } from 'react/jsx-runtime';
7
7
 
@@ -455,5 +455,5 @@ var tableWidgetPropertySchema = {
455
455
  };
456
456
 
457
457
  export { TableWidget, tableWidgetPropertySchema };
458
- //# sourceMappingURL=chunk-7B5RPA6J.js.map
459
- //# sourceMappingURL=chunk-7B5RPA6J.js.map
458
+ //# sourceMappingURL=chunk-6EKEDQJB.js.map
459
+ //# sourceMappingURL=chunk-6EKEDQJB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/widgets/TableWidget.tsx"],"names":[],"mappings":"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","file":"chunk-6EKEDQJB.js","sourcesContent":["import { useState, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\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} from \"../core/fields\";\nimport { Input } from \"@fluid-app/ui-primitives\";\nimport {\n MediaRenderer,\n getMediaPropsFromShareable,\n} from \"../components/MediaRenderer\";\nimport { type ShareableItem } from \"@fluid-app/rep-core/types\";\n\n// Column definition for the table\ntype ColumnDef = {\n key: string;\n label: string;\n sortable: boolean;\n render?: (value: unknown, item: ShareableItem) => React.ReactNode;\n};\n\nconst DEFAULT_DATA: ShareableItem[] = [];\n\n// ---------------------------------------------------------------------------\n// Column cell renderers\n// ---------------------------------------------------------------------------\n\nfunction ImageCellRenderer(_value: unknown, item: ShareableItem) {\n return (\n <div className=\"h-10 w-10 rounded object-cover\">\n <MediaRenderer {...getMediaPropsFromShareable(item)} />\n </div>\n );\n}\n\nfunction PriceCellRenderer(_value: unknown, item: ShareableItem) {\n return ((item.display_price as string) ?? item.price) || \"-\";\n}\n\nfunction StatusCellRenderer(value: unknown) {\n const status = String(value || \"unknown\").toLowerCase();\n const statusStyles: Record<string, string> = {\n active: \"bg-primary text-primary-foreground\",\n inactive: \"bg-secondary text-secondary-foreground\",\n unknown: \"bg-muted text-muted-foreground\",\n };\n return (\n <span\n className={`inline-flex rounded-full px-2 py-1 text-xs font-medium ${statusStyles[status] || \"bg-muted text-foreground\"}`}\n >\n {String(value || \"Unknown\")}\n </span>\n );\n}\n\n// Default columns for product data\nconst defaultColumns: ColumnDef[] = [\n {\n key: \"imageUrl\",\n label: \"Image\",\n sortable: false,\n render: ImageCellRenderer,\n },\n {\n key: \"title\",\n label: \"Title\",\n sortable: true,\n },\n {\n key: \"price\",\n label: \"Price\",\n sortable: true,\n render: PriceCellRenderer,\n },\n {\n key: \"status\",\n label: \"Status\",\n sortable: true,\n render: StatusCellRenderer,\n },\n];\n\ntype TableWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n alternatingColorEnabled?: boolean;\n textColor?: ColorOptions;\n headerBackgroundColor?: ColorOptions;\n headerTextColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Data\n data?: ShareableItem[];\n\n // Features\n filterEnabled?: boolean;\n sortingEnabled?: boolean;\n paginationEnabled?: boolean;\n maxRowsPerPage?: number;\n};\n\nexport function TableWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Products\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n alternatingColorEnabled = true,\n textColor = \"foreground\",\n headerBackgroundColor = \"muted\",\n headerTextColor = \"foreground\",\n padding = 4,\n borderRadius = \"md\",\n\n // Data\n data = DEFAULT_DATA,\n\n // Feature defaults\n filterEnabled = true,\n sortingEnabled = true,\n paginationEnabled = true,\n maxRowsPerPage = 5,\n\n className,\n ...props\n}: TableWidgetProps) {\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 const pageSize = maxRowsPerPage;\n\n // State for filtering, sorting, and pagination\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [sortConfig, setSortConfig] = useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n const [currentPage, setCurrentPage] = useState(1);\n\n const columns = defaultColumns;\n\n // Filter data\n const filteredData = useMemo(() => {\n let result = [...data];\n\n if (globalFilter) {\n const lowerFilter = globalFilter.toLowerCase();\n result = result.filter((item) =>\n columns.some((col) => {\n const value = item[col.key];\n return String(value ?? \"\")\n .toLowerCase()\n .includes(lowerFilter);\n }),\n );\n }\n\n return result;\n }, [data, globalFilter, columns]);\n\n // Sort data\n const sortedData = useMemo(() => {\n if (!sortConfig) return filteredData;\n\n return [...filteredData].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return sortConfig.direction === \"asc\" ? 1 : -1;\n if (bValue == null) return sortConfig.direction === \"asc\" ? -1 : 1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortConfig.direction === \"asc\" ? comparison : -comparison;\n });\n }, [filteredData, sortConfig]);\n\n // Paginate data\n const paginatedData = useMemo(() => {\n if (!paginationEnabled) return sortedData;\n\n const startIndex = (currentPage - 1) * pageSize;\n return sortedData.slice(startIndex, startIndex + pageSize);\n }, [sortedData, currentPage, pageSize, paginationEnabled]);\n\n const totalPages = Math.ceil(sortedData.length / pageSize);\n\n // Reset to page 1 when filters change\n const handleGlobalFilterChange = (value: string) => {\n setGlobalFilter(value);\n setCurrentPage(1);\n };\n\n // Handle sort\n const handleSort = (key: string) => {\n if (!sortingEnabled) return;\n\n setSortConfig((prev) => {\n if (prev?.key !== key) return { key, direction: \"asc\" };\n if (prev.direction === \"asc\") return { key, direction: \"desc\" };\n return null;\n });\n };\n\n // Get sort indicator\n const getSortIndicator = (key: string) => {\n if (sortConfig?.key !== key) return null;\n return sortConfig.direction === \"asc\" ? \" ↑\" : \" ↓\";\n };\n\n // Empty state\n if (data.length === 0) {\n return (\n <div\n className={`@container rounded-${borderRadius} bg-${backgroundColor} p-${padding} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div className=\"flex min-h-[200px] flex-col items-center justify-center gap-2 text-muted-foreground\">\n <div className=\"text-4xl\">📋</div>\n <p className=\"text-sm\">No data available</p>\n <p className=\"text-xs text-muted-foreground/70\">\n Connect a data source to display table data\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`@container overflow-hidden ${paginationEnabled ? \"\" : \"overflow-y-auto\"} rounded-${borderRadius} text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n <div\n className={`flex items-center justify-between p-${padding} bg-${backgroundColor}`}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <h2\n className={`text-${titleFontSize === \"md\" ? \"base\" : titleFontSize} font-bold text-${titleColor}`}\n >\n {titleText}\n </h2>\n )}\n\n {/* Global Search */}\n {filterEnabled && (\n <Input\n type=\"text\"\n placeholder=\"Search all columns...\"\n value={globalFilter}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n handleGlobalFilterChange(e.target.value)\n }\n className={`w-full rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor}-400 px-3 py-2 text-sm ring-offset-muted placeholder:text-${headerTextColor}-900 focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:outline-none md:w-64`}\n />\n )}\n </div>\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr\n className={`bg-${headerBackgroundColor}-400 border-${headerBackgroundColor}-600 border-y`}\n >\n {columns.map((col) => (\n <th\n key={col.key}\n className={`px-4 py-3 text-left text-sm font-semibold text-${headerTextColor} ${col.sortable && sortingEnabled ? \"cursor-pointer select-none hover:opacity-80\" : \"\"}`}\n {...(col.sortable && sortingEnabled\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n onClick: () => handleSort(col.key),\n onKeyDown: (e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSort(col.key);\n }\n },\n }\n : {})}\n >\n <div className=\"flex flex-col gap-1\">\n <span>\n {col.label}\n {col.sortable &&\n sortingEnabled &&\n getSortIndicator(col.key)}\n </span>\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {paginatedData.map((item, index) => (\n <tr\n key={item.id ?? index}\n className={`h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n {col.render\n ? col.render(item[col.key], item)\n : String(item[col.key] ?? \"-\")}\n </td>\n ))}\n </tr>\n ))}\n {/* Empty rows to fill the last page for consistent pagination position */}\n {paginationEnabled &&\n paginatedData.length < pageSize &&\n paginatedData.length > 0 &&\n Array.from({ length: pageSize - paginatedData.length }).map(\n (_, index) => (\n <tr\n key={`empty-${index}`}\n className={`h-17 border-b border-${backgroundColor}-600 last:border-none bg-${backgroundColor} ${alternatingColorEnabled ? `even:bg-${backgroundColor}-400` : \"\"}`}\n >\n {columns.map((col) => (\n <td key={col.key} className=\"px-4 py-3 text-sm\">\n &nbsp;\n </td>\n ))}\n </tr>\n ),\n )}\n </tbody>\n </table>\n </div>\n\n {/* No results message */}\n {paginatedData.length === 0 && data.length > 0 && (\n <div className={`py-8 text-center bg-${backgroundColor}`}>\n <p className=\"text-sm\">No results found</p>\n <p className=\"text-xs\">Try adjusting your search</p>\n </div>\n )}\n\n {/* Pagination */}\n {paginationEnabled && totalPages > 1 && (\n <div\n className={`flex flex-col items-center justify-between gap-2 border-t border-${backgroundColor}-600 p-${padding} @md:flex-row bg-${backgroundColor}-400 text-${textColor}`}\n >\n <p className=\"text-sm\">\n Showing {(currentPage - 1) * pageSize + 1}-\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n </p>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n disabled={currentPage === 1}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} px-3 py-1 text-sm ring-offset-muted transition-opacity placeholder:text-muted-foreground hover:opacity-80 focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Previous\n </button>\n <span className=\"text-sm\">\n Page {currentPage} of {totalPages}\n </span>\n <button\n onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n disabled={currentPage === totalPages}\n className={`rounded-md border border-${headerBackgroundColor}-600 bg-${headerBackgroundColor} px-3 py-1 text-sm ring-offset-muted transition-opacity placeholder:text-muted-foreground hover:opacity-80 focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const tableWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"TableWidget\",\n displayName: \"Table Widget\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n { id: \"data\", label: \"Data\" },\n ],\n dataSourceTargetProps: [\"data\"],\n fields: [\n // Content Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the table\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the table\",\n defaultValue: \"Products\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n label: \"Title Font Size\",\n defaultValue: \"xl\",\n key: \"titleFontSize\",\n description: \"Font size for the widget title\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the table container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"alternatingColorEnabled\",\n label: \"Enable Alternating Colors\",\n type: \"boolean\",\n description: \"Enable alternating colors for table rows\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"headerBackgroundColor\",\n label: \"Header Background\",\n description: \"Background color for the table header\",\n defaultValue: \"muted\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for table content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"headerTextColor\",\n label: \"Header Text Color\",\n description: \"Text color for the table header\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the table container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the table container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n\n // Behavior Tab - Features Group\n {\n key: \"filterEnabled\",\n label: \"Enable Filters\",\n type: \"boolean\",\n description: \"Show global search and column filters\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"sortingEnabled\",\n label: \"Enable Sorting\",\n type: \"boolean\",\n description: \"Allow sorting by clicking column headers\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"paginationEnabled\",\n label: \"Enable Pagination\",\n type: \"boolean\",\n description: \"Split data into pages\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Features\",\n },\n {\n key: \"maxRowsPerPage\",\n label: \"Max Rows Per Page\",\n type: \"number\",\n description: \"Maximum number of rows to display per page\",\n min: 1,\n max: 50,\n step: 1,\n defaultValue: 5,\n tab: \"behavior\",\n group: \"Features\",\n requiresKeyToBeTrue: \"paginationEnabled\",\n },\n\n // Data Tab\n {\n key: \"dataSource\",\n label: \"Data Source\",\n type: \"dataSource\",\n description: \"Configure data source for the table\",\n tab: \"data\",\n group: \"Data Configuration\",\n },\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
@@ -0,0 +1,3 @@
1
+ export { gapValues, getBorderRadiusField, getButtonSizeField, getColorField, getFontSizeField, getGapField, getHeightField, getPaddingField } from '@fluid-app/rep-core/registries';
2
+ //# sourceMappingURL=chunk-6ZECDBGI.js.map
3
+ //# sourceMappingURL=chunk-6ZECDBGI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZS7C474P.js","sourcesContent":[]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-6ZECDBGI.js","sourcesContent":[]}
@@ -113,20 +113,18 @@ var videoWidgetPropertySchema = {
113
113
  tab: "styling",
114
114
  group: "Design"
115
115
  },
116
- {
116
+ registries.getHeightField({
117
117
  key: "fixedHeight",
118
118
  label: "Height",
119
- type: "slider",
120
- description: "Fixed height of the video container in pixels",
121
- min: 80,
122
- max: 500,
119
+ description: "Fixed height of the video container",
120
+ min: 10,
121
+ max: 1200,
123
122
  step: 10,
124
- defaultValue: 200,
125
- unit: "px",
123
+ defaultValue: "200px",
126
124
  tab: "styling",
127
125
  group: "Design",
128
126
  requiresKeyValue: { key: "verticalSizing", value: "fixed" }
129
- },
127
+ }),
130
128
  {
131
129
  key: "displayFit",
132
130
  label: "Display Fit",
@@ -193,5 +191,5 @@ var videoWidgetPropertySchema = {
193
191
 
194
192
  exports.VideoWidget = VideoWidget;
195
193
  exports.videoWidgetPropertySchema = videoWidgetPropertySchema;
196
- //# sourceMappingURL=chunk-YBTY4OMP.cjs.map
197
- //# sourceMappingURL=chunk-YBTY4OMP.cjs.map
194
+ //# sourceMappingURL=chunk-A5AVY3ML.cjs.map
195
+ //# sourceMappingURL=chunk-A5AVY3ML.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/widgets/VideoWidget.tsx"],"names":["jsx","MediaRenderer","getBorderRadiusField","getHeightField"],"mappings":"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","file":"chunk-A5AVY3ML.cjs","sourcesContent":["import type { ComponentProps } from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/rep-core/registries\";\nimport type {\n BorderRadiusOptions,\n ShareableItem,\n} from \"@fluid-app/rep-core/types\";\nimport { MediaRenderer } from \"../components/MediaRenderer\";\n\ntype VideoWidgetProps = ComponentProps<\"div\"> & {\n src?: string;\n poster?: string;\n borderRadius?: BorderRadiusOptions;\n verticalSizing?: \"auto\" | \"fixed\";\n fixedHeight?: string;\n displayFit?: \"cover\" | \"contain\";\n focusPoint?: string;\n controls?: boolean;\n autoplay?: boolean;\n loop?: boolean;\n muted?: boolean;\n resource?: ShareableItem;\n useCustomUrl?: boolean;\n};\n\nexport function VideoWidget({\n src = \"\",\n poster = \"\",\n borderRadius = \"md\",\n verticalSizing = \"auto\",\n fixedHeight = \"200px\",\n displayFit = \"cover\",\n focusPoint,\n controls = true,\n autoplay = false,\n loop = false,\n muted = false,\n resource,\n useCustomUrl,\n}: VideoWidgetProps) {\n const effectiveSrc = useCustomUrl ? src : (resource?.videoUrl ?? src);\n const effectivePoster = useCustomUrl\n ? poster\n : (resource?.imageUrl ?? poster);\n\n const isFixed = verticalSizing === \"fixed\";\n\n return (\n <div\n className={`relative w-full overflow-hidden rounded-${borderRadius}`}\n style={isFixed ? { height: fixedHeight } : undefined}\n >\n <MediaRenderer\n mediaType=\"video\"\n src={effectiveSrc}\n poster={effectivePoster}\n objectFit={isFixed ? displayFit : undefined}\n focusPoint={isFixed ? focusPoint : undefined}\n controls={controls}\n autoplay={autoplay}\n loop={loop}\n muted={muted}\n />\n </div>\n );\n}\n\nexport const videoWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"VideoWidget\",\n displayName: \"Video\",\n tabsConfig: [\n { id: \"styling\", label: \"Styling\" },\n { id: \"behavior\", label: \"Behavior\" },\n ],\n fields: [\n // Styling tab - Content group\n {\n key: \"resource\",\n label: \"Select Video\",\n type: \"resource\",\n description: \"Browse and select a video\",\n allowedTypes: [\"Medium\"],\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"useCustomUrl\",\n label: \"Use Custom URL\",\n type: \"boolean\",\n description: \"Enter a custom video URL instead of selecting media\",\n defaultValue: false,\n tab: \"styling\",\n group: \"Content\",\n },\n {\n key: \"src\",\n label: \"Video URL\",\n type: \"text\",\n description: \"The source URL of the video\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n {\n key: \"poster\",\n label: \"Poster Image URL\",\n type: \"text\",\n description: \"Thumbnail image displayed before video plays\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Content\",\n requiresKeyToBeTrue: \"useCustomUrl\",\n },\n\n // Styling tab - Design group\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"verticalSizing\",\n label: \"Vertical Sizing\",\n type: \"buttonGroup\",\n description: \"How the video height is determined\",\n options: [\n { label: \"Auto\", value: \"auto\" },\n { label: \"Fixed\", value: \"fixed\" },\n ],\n defaultValue: \"auto\",\n tab: \"styling\",\n group: \"Design\",\n },\n getHeightField({\n key: \"fixedHeight\",\n label: \"Height\",\n description: \"Fixed height of the video container\",\n min: 10,\n max: 1200,\n step: 10,\n defaultValue: \"200px\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n }),\n {\n key: \"displayFit\",\n label: \"Display Fit\",\n type: \"buttonGroup\",\n description: \"How the video fills its container\",\n options: [\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n ],\n defaultValue: \"cover\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n {\n key: \"focusPoint\",\n label: \"Focus Point\",\n type: \"contentPosition\",\n description: \"The focal point of the video within its container\",\n defaultValue: \"center\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyValue: { key: \"verticalSizing\", value: \"fixed\" },\n },\n\n // Behavior tab\n {\n key: \"controls\",\n label: \"Show Controls\",\n type: \"boolean\",\n description: \"Display video playback controls\",\n defaultValue: true,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"autoplay\",\n label: \"Autoplay\",\n type: \"boolean\",\n description: \"Automatically start playing the video\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"loop\",\n label: \"Loop\",\n type: \"boolean\",\n description: \"Repeat the video when it ends\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n {\n key: \"muted\",\n label: \"Muted\",\n type: \"boolean\",\n description: \"Start with audio muted\",\n defaultValue: false,\n tab: \"behavior\",\n group: \"Behavior\",\n },\n ],\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-ZS7C474P.js';
1
+ import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-6ZECDBGI.js';
2
2
  import { QRCodeSVG } from 'qrcode.react';
3
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
4
4
  import { faImage, faCopy, faCartShopping } from '@fortawesome/pro-regular-svg-icons';
@@ -267,5 +267,5 @@ var quickShareWidgetPropertySchema = {
267
267
  };
268
268
 
269
269
  export { QuickShareWidget, quickShareWidgetPropertySchema };
270
- //# sourceMappingURL=chunk-KVGWMJZB.js.map
271
- //# sourceMappingURL=chunk-KVGWMJZB.js.map
270
+ //# sourceMappingURL=chunk-AWEFCI4H.js.map
271
+ //# sourceMappingURL=chunk-AWEFCI4H.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/widgets/QuickShareWidget.tsx"],"names":[],"mappings":"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","file":"chunk-KVGWMJZB.js","sourcesContent":["import type { ComponentProps } from \"react\";\nimport type {\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ShareableItem } from \"@fluid-app/rep-core/types\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { QRCodeSVG } from \"qrcode.react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCopy,\n faCartShopping,\n faImage,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\ntype QuickShareWidgetProps = ComponentProps<\"div\"> & {\n // Resource\n shareableResource?: ShareableItem;\n\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Overlay\n overlayEnabled?: boolean;\n overlayType?: \"solid\" | \"gradient\";\n overlayIntensity?: number;\n\n // Actions\n showBuyButton?: boolean;\n};\n\nexport function QuickShareWidget({\n // Resource\n shareableResource,\n\n // Title defaults\n titleEnabled = true,\n titleText = \"\",\n titleFontSize = \"2xl\",\n titleColor = \"foreground\",\n\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n // Overlay defaults\n overlayEnabled = true,\n overlayType = \"solid\",\n overlayIntensity = 50,\n\n // Actions defaults\n showBuyButton = false,\n\n className,\n ...props\n}: QuickShareWidgetProps) {\n // Determine background styling\n const backgroundImageUrl =\n shareableResource?.image_url || shareableResource?.imageUrl;\n\n // Get share link from resource\n const shareLink = shareableResource?.share_link || \"\";\n const displayUrl = shareLink || \"Select a resource to generate link\";\n\n // Determine title - use provided title or fall back to resource title\n const displayTitle =\n titleText || shareableResource?.title || \"Select a resource to display!\";\n\n // Check if resource is a Product for buy button visibility\n const isProduct =\n shareableResource?.type === \"Product\" ||\n shareableResource?.shareableType === \"Product\";\n const shouldShowBuyButton = showBuyButton && isProduct;\n\n // Copy to clipboard handler\n const handleCopyToClipboard = async () => {\n if (shareLink) {\n try {\n await navigator.clipboard.writeText(shareLink);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n }\n };\n\n return (\n <div\n className={`relative overflow-hidden rounded-${borderRadius} bg-muted text-${textColor} ${className ?? \"\"}`}\n {...props}\n >\n {/* Background Image with Overlay */}\n {backgroundImageUrl ? (\n <div className=\"absolute inset-0\">\n <img\n src={backgroundImageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n />\n {overlayEnabled && (\n <div\n className={`absolute inset-0 ${\n overlayType === \"gradient\"\n ? \"bg-gradient-to-t from-black to-transparent\"\n : \"bg-black\"\n }`}\n style={{\n opacity:\n (Number(String(overlayIntensity).replace(\"%\", \"\")) || 50) /\n 100,\n }}\n />\n )}\n </div>\n ) : (\n <div\n className={`absolute inset-0 flex items-center justify-center bg-muted`}\n >\n <FontAwesomeIcon icon={faImage} className=\"h-16 w-16 opacity-20\" />\n </div>\n )}\n\n {/* Content Container */}\n <div className={`relative flex min-h-[400px] flex-col p-${padding}`}>\n {/* Title Overlay */}\n {titleEnabled && displayTitle && (\n <div className=\"flex flex-1 items-center justify-center\">\n <h2\n className={`text-center text-${titleFontSize} font-semibold text-${titleColor} drop-shadow-lg`}\n >\n {displayTitle}\n </h2>\n </div>\n )}\n\n {/* Bottom Section - QR Code, URL, and Buttons */}\n <div className=\"mt-auto flex flex-col gap-4\">\n <div className=\"flex items-end justify-between gap-4\">\n {/* QR Code */}\n <div className=\"shrink-0 rounded-lg bg-white p-2\">\n <QRCodeSVG\n value={shareLink || \"https://example.com\"}\n size={100}\n level=\"H\"\n />\n </div>\n\n {/* URL Display */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"mb-2 text-sm font-semibold tracking-wide drop-shadow\">\n Your Shareable URL\n </p>\n <div className=\"flex items-center justify-between rounded-md border border-white/20 bg-black/50 p-2 text-sm text-white backdrop-blur\">\n <span className=\"truncate\">{displayUrl}</span>\n <button\n type=\"button\"\n onClick={handleCopyToClipboard}\n className={`ml-2 shrink-0 rounded p-1 transition-colors hover:bg-${accentColor}/20`}\n aria-label=\"Copy link\"\n >\n <FontAwesomeIcon icon={faCopy} className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n {/* TODO: Needs button link implmented, once it is uncomment the config for showBuyButton */}\n {shouldShowBuyButton && (\n <div className=\"flex\">\n <button\n type=\"button\"\n className={`flex w-full items-center justify-center gap-2 rounded-lg bg-${accentColor} p-3 font-medium text-${accentColor}-foreground transition-all hover:bg-${accentColor}-500`}\n >\n <FontAwesomeIcon icon={faCartShopping} className=\"h-4 w-4\" />\n <span>Buy</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const quickShareWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"QuickShareWidget\",\n displayName: \"Quick Share Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Resource\n {\n key: \"shareableResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select the content to generate a share link for\",\n allowedTypes: [\"Product\", \"Page\", \"EnrollmentPack\", \"Medium\", \"Library\"],\n tab: \"styling\",\n group: \"Content\",\n },\n\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Show Title\",\n type: \"boolean\",\n description: \"Display a title overlay on the widget\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Custom title text (defaults to resource title if empty)\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the title text\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the title text\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Actions Group\n // {\n // key: \"showBuyButton\",\n // label: \"Show Buy Button\",\n // type: \"boolean\",\n // description: \"Display the buy button (only visible for Product type)\",\n // defaultValue: false,\n // tab: \"styling\",\n // group: \"Actions\",\n // },\n\n // Styling Tab - Design Group\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for the widget\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color for accent elements and buy button\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"overlayEnabled\",\n label: \"Enable Overlay\",\n type: \"boolean\",\n description: \"Add background overlay for text readability\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"overlayType\",\n label: \"Overlay Type\",\n type: \"buttonGroup\",\n description: \"Type of overlay to add to the background\",\n defaultValue: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Gradient\", value: \"gradient\" },\n ],\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"overlayIntensity\",\n label: \"Overlay Intensity\",\n type: \"slider\",\n description: \"Opacity of the overlay background (0-100)\",\n min: 0,\n max: 100,\n step: 5,\n defaultValue: 50,\n unit: \"%\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the widget content\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the widget container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
1
+ {"version":3,"sources":["../src/widgets/QuickShareWidget.tsx"],"names":[],"mappings":"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","file":"chunk-AWEFCI4H.js","sourcesContent":["import type { ComponentProps } from \"react\";\nimport type {\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ShareableItem } from \"@fluid-app/rep-core/types\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { QRCodeSVG } from \"qrcode.react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCopy,\n faCartShopping,\n faImage,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\ntype QuickShareWidgetProps = ComponentProps<\"div\"> & {\n // Resource\n shareableResource?: ShareableItem;\n\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Overlay\n overlayEnabled?: boolean;\n overlayType?: \"solid\" | \"gradient\";\n overlayIntensity?: number;\n\n // Actions\n showBuyButton?: boolean;\n};\n\nexport function QuickShareWidget({\n // Resource\n shareableResource,\n\n // Title defaults\n titleEnabled = true,\n titleText = \"\",\n titleFontSize = \"2xl\",\n titleColor = \"foreground\",\n\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n // Overlay defaults\n overlayEnabled = true,\n overlayType = \"solid\",\n overlayIntensity = 50,\n\n // Actions defaults\n showBuyButton = false,\n\n className,\n ...props\n}: QuickShareWidgetProps) {\n // Determine background styling\n const backgroundImageUrl =\n shareableResource?.image_url || shareableResource?.imageUrl;\n\n // Get share link from resource\n const shareLink = shareableResource?.share_link || \"\";\n const displayUrl = shareLink || \"Select a resource to generate link\";\n\n // Determine title - use provided title or fall back to resource title\n const displayTitle =\n titleText || shareableResource?.title || \"Select a resource to display!\";\n\n // Check if resource is a Product for buy button visibility\n const isProduct =\n shareableResource?.type === \"Product\" ||\n shareableResource?.shareableType === \"Product\";\n const shouldShowBuyButton = showBuyButton && isProduct;\n\n // Copy to clipboard handler\n const handleCopyToClipboard = async () => {\n if (shareLink) {\n try {\n await navigator.clipboard.writeText(shareLink);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n }\n };\n\n return (\n <div\n className={`relative overflow-hidden rounded-${borderRadius} bg-muted text-${textColor} ${className ?? \"\"}`}\n {...props}\n >\n {/* Background Image with Overlay */}\n {backgroundImageUrl ? (\n <div className=\"absolute inset-0\">\n <img\n src={backgroundImageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n />\n {overlayEnabled && (\n <div\n className={`absolute inset-0 ${\n overlayType === \"gradient\"\n ? \"bg-gradient-to-t from-black to-transparent\"\n : \"bg-black\"\n }`}\n style={{\n opacity:\n (Number(String(overlayIntensity).replace(\"%\", \"\")) || 50) /\n 100,\n }}\n />\n )}\n </div>\n ) : (\n <div\n className={`absolute inset-0 flex items-center justify-center bg-muted`}\n >\n <FontAwesomeIcon icon={faImage} className=\"h-16 w-16 opacity-20\" />\n </div>\n )}\n\n {/* Content Container */}\n <div className={`relative flex min-h-[400px] flex-col p-${padding}`}>\n {/* Title Overlay */}\n {titleEnabled && displayTitle && (\n <div className=\"flex flex-1 items-center justify-center\">\n <h2\n className={`text-center text-${titleFontSize} font-semibold text-${titleColor} drop-shadow-lg`}\n >\n {displayTitle}\n </h2>\n </div>\n )}\n\n {/* Bottom Section - QR Code, URL, and Buttons */}\n <div className=\"mt-auto flex flex-col gap-4\">\n <div className=\"flex items-end justify-between gap-4\">\n {/* QR Code */}\n <div className=\"shrink-0 rounded-lg bg-white p-2\">\n <QRCodeSVG\n value={shareLink || \"https://example.com\"}\n size={100}\n level=\"H\"\n />\n </div>\n\n {/* URL Display */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"mb-2 text-sm font-semibold tracking-wide drop-shadow\">\n Your Shareable URL\n </p>\n <div className=\"flex items-center justify-between rounded-md border border-white/20 bg-black/50 p-2 text-sm text-white backdrop-blur\">\n <span className=\"truncate\">{displayUrl}</span>\n <button\n type=\"button\"\n onClick={handleCopyToClipboard}\n className={`ml-2 shrink-0 rounded p-1 transition-colors hover:bg-${accentColor}/20`}\n aria-label=\"Copy link\"\n >\n <FontAwesomeIcon icon={faCopy} className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n {/* TODO: Needs button link implmented, once it is uncomment the config for showBuyButton */}\n {shouldShowBuyButton && (\n <div className=\"flex\">\n <button\n type=\"button\"\n className={`flex w-full items-center justify-center gap-2 rounded-lg bg-${accentColor} p-3 font-medium text-${accentColor}-foreground transition-all hover:bg-${accentColor}-500`}\n >\n <FontAwesomeIcon icon={faCartShopping} className=\"h-4 w-4\" />\n <span>Buy</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const quickShareWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"QuickShareWidget\",\n displayName: \"Quick Share Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Resource\n {\n key: \"shareableResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select the content to generate a share link for\",\n allowedTypes: [\"Product\", \"Page\", \"EnrollmentPack\", \"Medium\", \"Library\"],\n tab: \"styling\",\n group: \"Content\",\n },\n\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Show Title\",\n type: \"boolean\",\n description: \"Display a title overlay on the widget\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Custom title text (defaults to resource title if empty)\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the title text\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the title text\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Actions Group\n // {\n // key: \"showBuyButton\",\n // label: \"Show Buy Button\",\n // type: \"boolean\",\n // description: \"Display the buy button (only visible for Product type)\",\n // defaultValue: false,\n // tab: \"styling\",\n // group: \"Actions\",\n // },\n\n // Styling Tab - Design Group\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for the widget\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color for accent elements and buy button\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"overlayEnabled\",\n label: \"Enable Overlay\",\n type: \"boolean\",\n description: \"Add background overlay for text readability\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"overlayType\",\n label: \"Overlay Type\",\n type: \"buttonGroup\",\n description: \"Type of overlay to add to the background\",\n defaultValue: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Gradient\", value: \"gradient\" },\n ],\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"overlayIntensity\",\n label: \"Overlay Intensity\",\n type: \"slider\",\n description: \"Opacity of the overlay background (0-100)\",\n min: 0,\n max: 100,\n step: 5,\n defaultValue: 50,\n unit: \"%\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the widget content\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the widget container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
@@ -1,10 +1,11 @@
1
+ import { getHeightField } from '@fluid-app/rep-core/registries';
1
2
  import { faArrowsUpDown } from '@fortawesome/pro-regular-svg-icons';
2
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
4
  import { jsx, jsxs } from 'react/jsx-runtime';
4
5
 
5
6
  // src/widgets/SpacerWidget.tsx
6
7
  function SpacerWidget({
7
- customHeight = 32,
8
+ customHeight = "128px",
8
9
  previewMode = false,
9
10
  className,
10
11
  style,
@@ -14,7 +15,7 @@ function SpacerWidget({
14
15
  "div",
15
16
  {
16
17
  className: `w-full ${className ?? ""}`,
17
- style: { height: `calc(var(--spacing) * ${customHeight})`, ...style },
18
+ style: { height: customHeight, ...style },
18
19
  "aria-hidden": "true",
19
20
  ...props,
20
21
  children: previewMode && /* @__PURE__ */ jsxs("div", { className: "flex h-full w-full items-center justify-center gap-1 border border-dashed border-muted-400 bg-muted text-muted-foreground", children: [
@@ -28,20 +29,19 @@ var spacerWidgetPropertySchema = {
28
29
  widgetType: "SpacerWidget",
29
30
  displayName: "Spacer",
30
31
  fields: [
31
- {
32
+ getHeightField({
32
33
  key: "customHeight",
33
34
  label: "Height",
34
- type: "number",
35
- description: "Height in pixels (only used when size is 'custom')",
35
+ description: "Height of the spacer",
36
36
  min: 1,
37
- max: 500,
37
+ max: 1200,
38
38
  step: 1,
39
- defaultValue: 32,
39
+ defaultValue: "128px",
40
40
  group: "Spacing"
41
- }
41
+ })
42
42
  ]
43
43
  };
44
44
 
45
45
  export { SpacerWidget, spacerWidgetPropertySchema };
46
- //# sourceMappingURL=chunk-IM3VCKTO.js.map
47
- //# sourceMappingURL=chunk-IM3VCKTO.js.map
46
+ //# sourceMappingURL=chunk-BYGUUGSO.js.map
47
+ //# sourceMappingURL=chunk-BYGUUGSO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/widgets/SpacerWidget.tsx"],"names":[],"mappings":";;;;;;AAmBO,SAAS,YAAA,CAAa;AAAA,EAC3B,YAAA,GAAe,OAAA;AAAA,EACf,WAAA,GAAc,KAAA;AAAA,EACd,SAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAsB;AACpB,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAA,OAAA,EAAU,SAAA,IAAa,EAAE,CAAA,CAAA;AAAA,MACpC,KAAA,EAAO,EAAE,MAAA,EAAQ,YAAA,EAAc,GAAG,KAAA,EAAM;AAAA,MACxC,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,WAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2HAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,MAAM,cAAA,EAAgB,CAAA;AAAA,wBACvC,GAAA,CAAC,UAAK,QAAA,EAAA,QAAA,EAAM;AAAA,OAAA,EACd;AAAA;AAAA,GAEJ;AAEJ;AAEO,IAAM,0BAAA,GAAmD;AAAA,EAC9D,UAAA,EAAY,cAAA;AAAA,EACZ,WAAA,EAAa,QAAA;AAAA,EACb,MAAA,EAAQ;AAAA,IACN,cAAA,CAAe;AAAA,MACb,GAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAO,QAAA;AAAA,MACP,WAAA,EAAa,sBAAA;AAAA,MACb,GAAA,EAAK,CAAA;AAAA,MACL,GAAA,EAAK,IAAA;AAAA,MACL,IAAA,EAAM,CAAA;AAAA,MACN,YAAA,EAAc,OAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR;AAAA;AAEL","file":"chunk-BYGUUGSO.js","sourcesContent":["import {\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/rep-core/registries\";\nimport { faArrowsUpDown } from \"@fortawesome/pro-regular-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport type { ComponentProps } from \"react\";\n\ntype SpacerWidgetProps = ComponentProps<\"div\"> & {\n /**\n * Custom height as a CSS value (e.g., \"128px\", \"8rem\", \"20vh\")\n */\n customHeight?: string;\n /**\n * Not customizable, determines if we should show a preview image in the container\n */\n previewMode?: boolean;\n};\n\nexport function SpacerWidget({\n customHeight = \"128px\",\n previewMode = false,\n className,\n style,\n ...props\n}: SpacerWidgetProps) {\n return (\n <div\n className={`w-full ${className ?? \"\"}`}\n style={{ height: customHeight, ...style }}\n aria-hidden=\"true\"\n {...props}\n >\n {previewMode && (\n <div className=\"flex h-full w-full items-center justify-center gap-1 border border-dashed border-muted-400 bg-muted text-muted-foreground\">\n <FontAwesomeIcon icon={faArrowsUpDown} />\n <span>SPACER</span>\n </div>\n )}\n </div>\n );\n}\n\nexport const spacerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"SpacerWidget\",\n displayName: \"Spacer\",\n fields: [\n getHeightField({\n key: \"customHeight\",\n label: \"Height\",\n description: \"Height of the spacer\",\n min: 1,\n max: 1200,\n step: 1,\n defaultValue: \"128px\",\n group: \"Spacing\",\n }),\n ],\n};\n"]}
@@ -1,13 +1,13 @@
1
1
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
2
2
  import { faGlobe } from '@fortawesome/pro-regular-svg-icons';
3
- import { getBorderRadiusField } from '@fluid-app/rep-core/registries';
3
+ import { getBorderRadiusField, getHeightField } from '@fluid-app/rep-core/registries';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  // src/widgets/EmbedWidget.tsx
7
7
  function EmbedWidget({
8
8
  url = "",
9
9
  title = "Embedded Content",
10
- height,
10
+ height = "400px",
11
11
  fullScreen = false,
12
12
  allowFullscreen = true,
13
13
  loading = "lazy",
@@ -21,7 +21,7 @@ function EmbedWidget({
21
21
  "div",
22
22
  {
23
23
  className: `flex items-center justify-center rounded-${borderRadius} border-2 border-dashed border-border bg-muted text-muted-foreground ${isFullScreen ? "h-full" : ""} ${className}`,
24
- style: isFullScreen ? void 0 : { height: `${height}px` },
24
+ style: isFullScreen ? void 0 : { height },
25
25
  ...props,
26
26
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2 p-6 text-center", children: [
27
27
  /* @__PURE__ */ jsx(FontAwesomeIcon, { icon: faGlobe, className: "h-12 w-12 opacity-50" }),
@@ -90,21 +90,20 @@ var embedWidgetPropertySchema = {
90
90
  defaultValue: false,
91
91
  group: "Design"
92
92
  },
93
- {
93
+ getHeightField({
94
94
  key: "height",
95
- label: "Height (px)",
96
- type: "number",
97
- description: "Height of the embedded iframe in pixels",
98
- min: 100,
95
+ label: "Height",
96
+ description: "Height of the embedded iframe",
97
+ min: 50,
99
98
  max: 1200,
100
- step: 50,
101
- defaultValue: 400,
99
+ step: 10,
100
+ defaultValue: "400px",
102
101
  group: "Design",
103
102
  requiresKeyValue: {
104
103
  key: "fullScreen",
105
104
  value: false
106
105
  }
107
- },
106
+ }),
108
107
  // Settings
109
108
  {
110
109
  key: "allowFullscreen",
@@ -130,5 +129,5 @@ var embedWidgetPropertySchema = {
130
129
  };
131
130
 
132
131
  export { EmbedWidget, embedWidgetPropertySchema };
133
- //# sourceMappingURL=chunk-3NB2PJR5.js.map
134
- //# sourceMappingURL=chunk-3NB2PJR5.js.map
132
+ //# sourceMappingURL=chunk-DPPFLZ7G.js.map
133
+ //# sourceMappingURL=chunk-DPPFLZ7G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/widgets/EmbedWidget.tsx"],"names":[],"mappings":"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","file":"chunk-DPPFLZ7G.js","sourcesContent":["import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faGlobe } from \"@fortawesome/pro-regular-svg-icons\";\nimport type { ComponentProps } from \"react\";\nimport {\n getBorderRadiusField,\n getHeightField,\n type WidgetPropertySchema,\n} from \"@fluid-app/rep-core/registries\";\nimport type { BorderRadiusOptions } from \"@fluid-app/rep-core/types\";\n\ntype EmbedWidgetProps = ComponentProps<\"div\"> & {\n url?: string;\n title?: string;\n height?: string;\n fullScreen?: boolean;\n allowFullscreen?: boolean;\n loading?: \"eager\" | \"lazy\";\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function EmbedWidget({\n url = \"\",\n title = \"Embedded Content\",\n height = \"400px\",\n fullScreen = false,\n allowFullscreen = true,\n loading = \"lazy\",\n borderRadius = \"md\",\n className,\n ...props\n}: EmbedWidgetProps) {\n const isFullScreen = fullScreen;\n\n // Show placeholder if no URL is provided\n if (!url) {\n return (\n <div\n className={`flex items-center justify-center rounded-${borderRadius} border-2 border-dashed border-border bg-muted text-muted-foreground ${isFullScreen ? \"h-full\" : \"\"} ${className}`}\n style={isFullScreen ? undefined : { height }}\n {...props}\n >\n <div className=\"flex flex-col items-center gap-2 p-6 text-center\">\n <FontAwesomeIcon icon={faGlobe} className=\"h-12 w-12 opacity-50\" />\n <p className=\"text-sm font-medium\">\n Enter a URL to embed external content\n </p>\n <p className=\"text-xs opacity-75\">\n Configure the URL in the properties panel\n </p>\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={`w-full ${isFullScreen ? \"h-full\" : \"\"} ${className}`}\n {...props}\n >\n <iframe\n src={url}\n title={title}\n width=\"100%\"\n height={isFullScreen ? \"100%\" : height}\n loading={loading}\n allowFullScreen={allowFullscreen}\n className={`rounded-${borderRadius} border border-border`}\n sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-popups-to-escape-sandbox\"\n />\n </div>\n );\n}\n\nexport const embedWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"EmbedWidget\",\n displayName: \"Embed\",\n fields: [\n // Content\n {\n key: \"url\",\n label: \"URL\",\n type: \"text\",\n description: \"The URL of the external site to embed\",\n placeholder: \"https://example.com\",\n defaultValue: \"\",\n group: \"Content\",\n },\n {\n key: \"title\",\n label: \"Title\",\n type: \"text\",\n description: \"Accessibility title for the embedded content\",\n defaultValue: \"Embedded Content\",\n group: \"Content\",\n },\n\n // Design\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the embed container\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n {\n key: \"fullScreen\",\n label: \"Full Screen\",\n type: \"boolean\",\n description: \"When enabled, the embed fills the available space\",\n defaultValue: false,\n group: \"Design\",\n },\n getHeightField({\n key: \"height\",\n label: \"Height\",\n description: \"Height of the embedded iframe\",\n min: 50,\n max: 1200,\n step: 10,\n defaultValue: \"400px\",\n group: \"Design\",\n requiresKeyValue: {\n key: \"fullScreen\",\n value: false,\n },\n }),\n\n // Settings\n {\n key: \"allowFullscreen\",\n label: \"Allow Fullscreen\",\n type: \"boolean\",\n description: \"Allow the embedded content to use fullscreen mode\",\n defaultValue: true,\n group: \"Settings\",\n },\n {\n key: \"loading\",\n label: \"Loading\",\n type: \"select\",\n description: \"When to load the embedded content\",\n options: [\n { label: \"Lazy (on scroll)\", value: \"lazy\" },\n { label: \"Eager (immediately)\", value: \"eager\" },\n ],\n defaultValue: \"lazy\",\n group: \"Settings\",\n },\n ],\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { LayoutWidget } from './chunk-25GBJPZQ.js';
2
- import { getGapField, getPaddingField } from './chunk-ZS7C474P.js';
1
+ import { LayoutWidget } from './chunk-2NPVYROG.js';
2
+ import { getGapField, getPaddingField } from './chunk-6ZECDBGI.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function ContainerWidget(props) {
@@ -35,5 +35,5 @@ var containerWidgetPropertySchema = {
35
35
  };
36
36
 
37
37
  export { ContainerWidget, containerWidgetPropertySchema };
38
- //# sourceMappingURL=chunk-DPNUNERL.js.map
39
- //# sourceMappingURL=chunk-DPNUNERL.js.map
38
+ //# sourceMappingURL=chunk-E5ERYB7Q.js.map
39
+ //# sourceMappingURL=chunk-E5ERYB7Q.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/widgets/ContainerWidget.tsx"],"names":[],"mappings":";;;;AAgBO,SAAS,gBAAgB,KAAA,EAA6B;AAE3D,EAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,IAAM,6BAAA,GAAsD;AAAA,EACjE,UAAA,EAAY,iBAAA;AAAA,EACZ,WAAA,EAAa,iBAAA;AAAA,EACb,MAAA,EAAQ;AAAA,IACN,WAAA,CAAY;AAAA,MACV,GAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,WAAA,EAAa,qBAAA;AAAA,MACb,YAAA,EAAc,IAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD,eAAA,CAAgB;AAAA,MACd,GAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,WAAA,EAAa,2BAAA;AAAA,MACb,YAAA,EAAc,CAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EAAa,8BAAA;AAAA,MACb,YAAA,EAAc,YAAA;AAAA,MACd,KAAA,EAAO;AAAA;AACT;AAEJ","file":"chunk-DPNUNERL.js","sourcesContent":["import type { ComponentProps } from \"react\";\nimport { LayoutWidget } from \"./LayoutWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport { getGapField, getPaddingField } from \"../core/fields\";\n\n/**\n * ContainerWidget - Root container widget for screens\n *\n * This widget wraps LayoutWidget and serves as the foundational container\n * for every screen. It cannot be added, deleted, moved, or copied by users.\n *\n * Only exposes limited settings: gap, padding, and backgroundColor\n */\n\ntype ContainerWidgetProps = ComponentProps<typeof LayoutWidget>;\n\nexport function ContainerWidget(props: ContainerWidgetProps) {\n // Pass all props through to LayoutWidget\n return <LayoutWidget {...props} />;\n}\n\nexport const containerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ContainerWidget\",\n displayName: \"Canvas Settings\",\n fields: [\n getGapField({\n key: \"gapSize\",\n label: \"Gap\",\n description: \"Gap between widgets\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the container\",\n defaultValue: 4,\n group: \"Design\",\n }),\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the container\",\n defaultValue: \"background\",\n group: \"Design\",\n },\n ],\n};\n"]}
1
+ {"version":3,"sources":["../src/widgets/ContainerWidget.tsx"],"names":[],"mappings":";;;;AAgBO,SAAS,gBAAgB,KAAA,EAA6B;AAE3D,EAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,IAAM,6BAAA,GAAsD;AAAA,EACjE,UAAA,EAAY,iBAAA;AAAA,EACZ,WAAA,EAAa,iBAAA;AAAA,EACb,MAAA,EAAQ;AAAA,IACN,WAAA,CAAY;AAAA,MACV,GAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,WAAA,EAAa,qBAAA;AAAA,MACb,YAAA,EAAc,IAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD,eAAA,CAAgB;AAAA,MACd,GAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,WAAA,EAAa,2BAAA;AAAA,MACb,YAAA,EAAc,CAAA;AAAA,MACd,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,IACD;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,GAAA,EAAK,YAAA;AAAA,MACL,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EAAa,8BAAA;AAAA,MACb,YAAA,EAAc,YAAA;AAAA,MACd,KAAA,EAAO;AAAA;AACT;AAEJ","file":"chunk-E5ERYB7Q.js","sourcesContent":["import type { ComponentProps } from \"react\";\nimport { LayoutWidget } from \"./LayoutWidget\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport { getGapField, getPaddingField } from \"../core/fields\";\n\n/**\n * ContainerWidget - Root container widget for screens\n *\n * This widget wraps LayoutWidget and serves as the foundational container\n * for every screen. It cannot be added, deleted, moved, or copied by users.\n *\n * Only exposes limited settings: gap, padding, and backgroundColor\n */\n\ntype ContainerWidgetProps = ComponentProps<typeof LayoutWidget>;\n\nexport function ContainerWidget(props: ContainerWidgetProps) {\n // Pass all props through to LayoutWidget\n return <LayoutWidget {...props} />;\n}\n\nexport const containerWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"ContainerWidget\",\n displayName: \"Canvas Settings\",\n fields: [\n getGapField({\n key: \"gapSize\",\n label: \"Gap\",\n description: \"Gap between widgets\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding for the container\",\n defaultValue: 4,\n group: \"Design\",\n }),\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the container\",\n defaultValue: \"background\",\n group: \"Design\",\n },\n ],\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { MediaRenderer } from './chunk-T6BC5TUS.js';
2
- import { getBorderRadiusField } from '@fluid-app/rep-core/registries';
2
+ import { getBorderRadiusField, getHeightField } from '@fluid-app/rep-core/registries';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
 
5
5
  function ImageWidget({
@@ -97,19 +97,17 @@ var imageWidgetPropertySchema = {
97
97
  defaultValue: "auto",
98
98
  group: "Design"
99
99
  },
100
- {
100
+ getHeightField({
101
101
  key: "fixedHeight",
102
102
  label: "Height",
103
- type: "slider",
104
- description: "Fixed height of the image container in pixels",
105
- min: 80,
106
- max: 500,
103
+ description: "Fixed height of the image container",
104
+ min: 10,
105
+ max: 1200,
107
106
  step: 10,
108
- defaultValue: 200,
109
- unit: "px",
107
+ defaultValue: "200px",
110
108
  group: "Design",
111
109
  requiresKeyValue: { key: "verticalSizing", value: "fixed" }
112
- },
110
+ }),
113
111
  {
114
112
  key: "displayFit",
115
113
  label: "Display Fit",
@@ -145,5 +143,5 @@ var imageWidgetPropertySchema = {
145
143
  };
146
144
 
147
145
  export { ImageWidget, imageWidgetPropertySchema };
148
- //# sourceMappingURL=chunk-HLXL56YT.js.map
149
- //# sourceMappingURL=chunk-HLXL56YT.js.map
146
+ //# sourceMappingURL=chunk-EBYQ6EXT.js.map
147
+ //# sourceMappingURL=chunk-EBYQ6EXT.js.map