@fluid-app/portal-sdk 0.1.49 → 0.1.51

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 (94) hide show
  1. package/dist/{ContactsScreen-CtQEXVJV.cjs → ContactsScreen-BvCjA72q.cjs} +3 -3
  2. package/dist/{ContactsScreen-CCX0O5gO.mjs → ContactsScreen-BxN-eEX8.mjs} +3 -3
  3. package/dist/{ContactsScreen-CkTLY2JR.cjs → ContactsScreen-DCHonZs2.cjs} +2 -2
  4. package/dist/{ContactsScreen-CkTLY2JR.cjs.map → ContactsScreen-DCHonZs2.cjs.map} +1 -1
  5. package/dist/{ContactsScreen-Cw2oDUbk.mjs → ContactsScreen-p2WN2k0l.mjs} +2 -2
  6. package/dist/{ContactsScreen-Cw2oDUbk.mjs.map → ContactsScreen-p2WN2k0l.mjs.map} +1 -1
  7. package/dist/{FluidProvider-Bm9_Q-Vq.cjs → FluidProvider-CfnQ1hQi.cjs} +3 -3
  8. package/dist/{FluidProvider-Bm9_Q-Vq.cjs.map → FluidProvider-CfnQ1hQi.cjs.map} +1 -1
  9. package/dist/{FluidProvider-DhhJ_tOB.mjs → FluidProvider-DxTCeF37.mjs} +3 -3
  10. package/dist/{FluidProvider-DhhJ_tOB.mjs.map → FluidProvider-DxTCeF37.mjs.map} +1 -1
  11. package/dist/{LinkWidget-CPneatEQ.cjs → LinkWidget-Bk6h0IOA.cjs} +141 -4
  12. package/dist/LinkWidget-Bk6h0IOA.cjs.map +1 -0
  13. package/dist/{LinkWidget-AxSj0c6j.cjs → LinkWidget-BnFbK1BC.cjs} +2 -1
  14. package/dist/{LinkWidget-BIGRdkyq.mjs → LinkWidget-CfgPs5G8.mjs} +141 -4
  15. package/dist/LinkWidget-CfgPs5G8.mjs.map +1 -0
  16. package/dist/{MessagingScreen-C52nvMiv.cjs → MessagingScreen-AwU6FVrk.cjs} +3 -3
  17. package/dist/{MessagingScreen-C52nvMiv.cjs.map → MessagingScreen-AwU6FVrk.cjs.map} +1 -1
  18. package/dist/{MessagingScreen-D7Gu7vJ2.mjs → MessagingScreen-Ct13M7D3.mjs} +3 -3
  19. package/dist/{MessagingScreen-CiAh61n3.cjs → MessagingScreen-DXT-R8PN.cjs} +3 -3
  20. package/dist/{MessagingScreen-D0usZTLT.mjs → MessagingScreen-G0z-kpur.mjs} +3 -3
  21. package/dist/{MessagingScreen-D0usZTLT.mjs.map → MessagingScreen-G0z-kpur.mjs.map} +1 -1
  22. package/dist/{MySiteScreen-Q9JMin6k.cjs → MySiteScreen-CK5ytiiM.cjs} +3 -3
  23. package/dist/{MySiteScreen-B_9hY9q5.mjs → MySiteScreen-CtpBEE-w.mjs} +3 -3
  24. package/dist/{MySiteScreen-B4D3PBiR.mjs → MySiteScreen-CxFT0dYI.mjs} +2 -2
  25. package/dist/{MySiteScreen-B4D3PBiR.mjs.map → MySiteScreen-CxFT0dYI.mjs.map} +1 -1
  26. package/dist/{MySiteScreen-CNp1UcGZ.cjs → MySiteScreen-mKw6Ha6i.cjs} +2 -2
  27. package/dist/{MySiteScreen-CNp1UcGZ.cjs.map → MySiteScreen-mKw6Ha6i.cjs.map} +1 -1
  28. package/dist/{OrdersScreen-BmhCU6o0.mjs → OrdersScreen-4xcHV4wN.mjs} +3 -3
  29. package/dist/{OrdersScreen-VMpNhQw9.cjs → OrdersScreen-Btxlpmyb.cjs} +3 -3
  30. package/dist/{OrdersScreen-VMpNhQw9.cjs.map → OrdersScreen-Btxlpmyb.cjs.map} +1 -1
  31. package/dist/{OrdersScreen-DsBMev3D.cjs → OrdersScreen-COJthd7g.cjs} +3 -3
  32. package/dist/{OrdersScreen-hpGhyOSh.mjs → OrdersScreen-DST1uQIZ.mjs} +3 -3
  33. package/dist/{OrdersScreen-hpGhyOSh.mjs.map → OrdersScreen-DST1uQIZ.mjs.map} +1 -1
  34. package/dist/{ProductsScreen-zpzMTDoA.mjs → ProductsScreen-BUIAM6Oj.mjs} +4 -4
  35. package/dist/{ProductsScreen-zpzMTDoA.mjs.map → ProductsScreen-BUIAM6Oj.mjs.map} +1 -1
  36. package/dist/{ProductsScreen-BnSGiylr.cjs → ProductsScreen-BrnS2fZj.cjs} +4 -4
  37. package/dist/{ProductsScreen-BnSGiylr.cjs.map → ProductsScreen-BrnS2fZj.cjs.map} +1 -1
  38. package/dist/{ProductsScreen-CJCBryCe.mjs → ProductsScreen-DbD-M3_E.mjs} +4 -4
  39. package/dist/{ProductsScreen-BMZxJgei.cjs → ProductsScreen-nMIeRMz7.cjs} +4 -4
  40. package/dist/{ProfileScreen-DtK2t6V6.mjs → ProfileScreen-C6WaqIOa.mjs} +3 -3
  41. package/dist/{ProfileScreen-DtK2t6V6.mjs.map → ProfileScreen-C6WaqIOa.mjs.map} +1 -1
  42. package/dist/{ProfileScreen-BtLOlbKg.cjs → ProfileScreen-CNqGhQIS.cjs} +3 -3
  43. package/dist/{ProfileScreen-BtLOlbKg.cjs.map → ProfileScreen-CNqGhQIS.cjs.map} +1 -1
  44. package/dist/{ProfileScreen-oZ-aRHZd.cjs → ProfileScreen-COxPODra.cjs} +3 -3
  45. package/dist/{ProfileScreen-CNZK15pW.mjs → ProfileScreen-CsjqnDHC.mjs} +3 -3
  46. package/dist/{ShareablesScreen-Bmgjw9sI.cjs → ShareablesScreen-6WYSwoae.cjs} +4 -4
  47. package/dist/{ShareablesScreen-Cbr-SymJ.mjs → ShareablesScreen-BKGi-Fxq.mjs} +4 -4
  48. package/dist/{ShareablesScreen-B603m_Vm.mjs → ShareablesScreen-DEG0RgHd.mjs} +4 -4
  49. package/dist/{ShareablesScreen-B603m_Vm.mjs.map → ShareablesScreen-DEG0RgHd.mjs.map} +1 -1
  50. package/dist/{ShareablesScreen-B7bILrTZ.cjs → ShareablesScreen-Dr54X4O1.cjs} +4 -4
  51. package/dist/{ShareablesScreen-B7bILrTZ.cjs.map → ShareablesScreen-Dr54X4O1.cjs.map} +1 -1
  52. package/dist/{ShopScreen-tank-h0f.cjs → ShopScreen-B-jG6Rem.cjs} +4 -4
  53. package/dist/{ShopScreen-tank-h0f.cjs.map → ShopScreen-B-jG6Rem.cjs.map} +1 -1
  54. package/dist/{ShopScreen-CZl3JCcH.cjs → ShopScreen-Bh3_9XNc.cjs} +3 -3
  55. package/dist/{ShopScreen-CoLFSZEV.mjs → ShopScreen-CFSFBeZn.mjs} +4 -4
  56. package/dist/{ShopScreen-CoLFSZEV.mjs.map → ShopScreen-CFSFBeZn.mjs.map} +1 -1
  57. package/dist/{ShopScreen-X6df_SJH.mjs → ShopScreen-Dwi5A1Mh.mjs} +3 -3
  58. package/dist/{SubscriptionsScreen-B7vVZdeU.cjs → SubscriptionsScreen-BHoPRbxY.cjs} +3 -3
  59. package/dist/{SubscriptionsScreen-B1gMcbTZ.mjs → SubscriptionsScreen-BbHLRNOS.mjs} +3 -3
  60. package/dist/{SubscriptionsScreen-Q_sourEi.mjs → SubscriptionsScreen-DDuDQzog.mjs} +3 -3
  61. package/dist/{SubscriptionsScreen-Q_sourEi.mjs.map → SubscriptionsScreen-DDuDQzog.mjs.map} +1 -1
  62. package/dist/{SubscriptionsScreen-DqgNoNgv.cjs → SubscriptionsScreen-OR9rLA8Q.cjs} +3 -3
  63. package/dist/{SubscriptionsScreen-DqgNoNgv.cjs.map → SubscriptionsScreen-OR9rLA8Q.cjs.map} +1 -1
  64. package/dist/WidgetInteractionContext-DAN31Alw.mjs.map +1 -1
  65. package/dist/WidgetInteractionContext-ywxCBIMm.cjs.map +1 -1
  66. package/dist/index.cjs +33 -33
  67. package/dist/index.d.cts +12 -0
  68. package/dist/index.d.cts.map +1 -1
  69. package/dist/index.d.mts +12 -0
  70. package/dist/index.d.mts.map +1 -1
  71. package/dist/index.mjs +33 -33
  72. package/dist/{products-Csja6Mz3.mjs → products-BVduBT2A.mjs} +3 -3
  73. package/dist/{products-Csja6Mz3.mjs.map → products-BVduBT2A.mjs.map} +1 -1
  74. package/dist/{products-DcoIAZKk.cjs → products-IQvKyCYT.cjs} +3 -3
  75. package/dist/{products-DcoIAZKk.cjs.map → products-IQvKyCYT.cjs.map} +1 -1
  76. package/dist/{src-BeeIRRwy.cjs → src-CqBhbo1S.cjs} +2 -2
  77. package/dist/{src-BeeIRRwy.cjs.map → src-CqBhbo1S.cjs.map} +1 -1
  78. package/dist/{src-C8lPWi5Q.mjs → src-SdohifRY.mjs} +2 -2
  79. package/dist/{src-C8lPWi5Q.mjs.map → src-SdohifRY.mjs.map} +1 -1
  80. package/dist/{use-account-clients-DInHTX3i.cjs → use-account-clients-D3Eawm5e.cjs} +2 -2
  81. package/dist/{use-account-clients-DInHTX3i.cjs.map → use-account-clients-D3Eawm5e.cjs.map} +1 -1
  82. package/dist/{use-account-clients-Do2v1HKy.mjs → use-account-clients-zeybRls8.mjs} +2 -2
  83. package/dist/{use-account-clients-Do2v1HKy.mjs.map → use-account-clients-zeybRls8.mjs.map} +1 -1
  84. package/dist/{use-customer-account-DXKadeJo.cjs → use-customer-account-BFRo6FiF.cjs} +3 -3
  85. package/dist/{use-customer-account-DXKadeJo.cjs.map → use-customer-account-BFRo6FiF.cjs.map} +1 -1
  86. package/dist/{use-customer-account-DGbCAfxl.mjs → use-customer-account-CZYDqBtL.mjs} +3 -3
  87. package/dist/{use-customer-account-DGbCAfxl.mjs.map → use-customer-account-CZYDqBtL.mjs.map} +1 -1
  88. package/dist/{use-fluid-api-BB3QhQT8.mjs → use-fluid-api-BpRkXNaT.mjs} +2 -2
  89. package/dist/{use-fluid-api-BB3QhQT8.mjs.map → use-fluid-api-BpRkXNaT.mjs.map} +1 -1
  90. package/dist/{use-fluid-api-BzIeHDnF.cjs → use-fluid-api-Df5mIIBE.cjs} +2 -2
  91. package/dist/{use-fluid-api-BzIeHDnF.cjs.map → use-fluid-api-Df5mIIBE.cjs.map} +1 -1
  92. package/package.json +16 -16
  93. package/dist/LinkWidget-BIGRdkyq.mjs.map +0 -1
  94. package/dist/LinkWidget-CPneatEQ.cjs.map +0 -1
@@ -1,5 +1,7 @@
1
1
  require("./chunk-DAgNkxik.cjs");
2
+ const require_WidgetInteractionContext = require("./WidgetInteractionContext-ywxCBIMm.cjs");
2
3
  const require_src = require("./src-B0dC4Lru.cjs");
4
+ let react = require("react");
3
5
  let react_jsx_runtime = require("react/jsx-runtime");
4
6
  let _fluid_app_portal_core_registries = require("@fluid-app/portal-core/registries");
5
7
  //#region ../widgets/src/widgets/LinkWidget.tsx
@@ -44,7 +46,36 @@ const alignmentClasses = {
44
46
  center: "justify-center",
45
47
  right: "justify-end"
46
48
  };
47
- function LinkWidget({ text = "Click Here", href = "", openInNewTab = true, variant = "default", size = "default", fontSize = "sm", alignment = "center", fullWidth = false, padding = 0, borderRadius, borderRadiusTL, borderRadiusTR, borderRadiusBL, borderRadiusBR, borderWidth = "none", borderColor = "muted", previewMode = false, editMode = false, className, ...props }) {
49
+ function LinkWidget({ text = "Click Here", linkType = "url", href = "", openInNewTab = true, screenSlug, shareSource, shareResource, shareUrl, variant = "default", size = "default", fontSize = "sm", alignment = "center", fullWidth = false, padding = 0, borderRadius, borderRadiusTL, borderRadiusTR, borderRadiusBL, borderRadiusBR, borderWidth = "none", borderColor = "muted", previewMode = false, editMode = false, className, ...props }) {
50
+ const { onNavigate, buildHref } = require_WidgetInteractionContext.useWidgetInteraction();
51
+ const handleShareClick = (0, react.useCallback)(async () => {
52
+ const isResourceMode = shareSource === "resource" || shareSource == null;
53
+ const url = isResourceMode ? shareResource?.share_link ?? void 0 : shareUrl ?? void 0;
54
+ if (!url) return;
55
+ if (navigator.share) try {
56
+ await navigator.share({
57
+ url,
58
+ ...isResourceMode && shareResource?.title ? { title: shareResource.title } : {}
59
+ });
60
+ return;
61
+ } catch (e) {
62
+ if (e instanceof DOMException && e.name === "AbortError") return;
63
+ }
64
+ try {
65
+ await navigator.clipboard.writeText(url);
66
+ } catch {}
67
+ }, [
68
+ shareSource,
69
+ shareUrl,
70
+ shareResource
71
+ ]);
72
+ const handleScreenClick = (0, react.useCallback)((e) => {
73
+ if (onNavigate && screenSlug) {
74
+ e.preventDefault();
75
+ onNavigate(screenSlug);
76
+ }
77
+ }, [onNavigate, screenSlug]);
78
+ const screenHref = screenSlug ? buildHref?.(screenSlug) ?? screenSlug : void 0;
48
79
  if (previewMode) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
49
80
  className: `flex justify-center p-4 ${className ?? ""}`,
50
81
  ...props,
@@ -81,6 +112,17 @@ function LinkWidget({ text = "Click Here", href = "", openInNewTab = true, varia
81
112
  children: editMode ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
82
113
  className: "cursor-default",
83
114
  children: text
115
+ }) : linkType === "share" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
116
+ type: "button",
117
+ onClick: handleShareClick,
118
+ children: text
119
+ }) : linkType === "screen" ? screenSlug ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
120
+ href: screenHref,
121
+ onClick: handleScreenClick,
122
+ children: text
123
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
124
+ className: "cursor-default",
125
+ children: text
84
126
  }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
85
127
  href: sanitizeHref(href),
86
128
  ...openInNewTab ? {
@@ -96,6 +138,27 @@ const linkWidgetPropertySchema = {
96
138
  widgetType: "LinkWidget",
97
139
  displayName: "Link Button",
98
140
  fields: [
141
+ {
142
+ key: "linkType",
143
+ label: "Link Type",
144
+ type: "buttonGroup",
145
+ options: [
146
+ {
147
+ label: "URL",
148
+ value: "url"
149
+ },
150
+ {
151
+ label: "Screen",
152
+ value: "screen"
153
+ },
154
+ {
155
+ label: "Share",
156
+ value: "share"
157
+ }
158
+ ],
159
+ defaultValue: "url",
160
+ group: "Link"
161
+ },
99
162
  {
100
163
  key: "text",
101
164
  label: "Text",
@@ -110,7 +173,11 @@ const linkWidgetPropertySchema = {
110
173
  type: "text",
111
174
  description: "The destination URL",
112
175
  defaultValue: "",
113
- group: "Link"
176
+ group: "Link",
177
+ requiresKeyValue: {
178
+ key: "linkType",
179
+ value: "url"
180
+ }
114
181
  },
115
182
  {
116
183
  key: "openInNewTab",
@@ -118,7 +185,77 @@ const linkWidgetPropertySchema = {
118
185
  type: "boolean",
119
186
  description: "Whether to open the link in a new tab",
120
187
  defaultValue: true,
121
- group: "Link"
188
+ group: "Link",
189
+ requiresKeyValue: {
190
+ key: "linkType",
191
+ value: "url"
192
+ }
193
+ },
194
+ {
195
+ key: "screenSlug",
196
+ label: "Screen",
197
+ type: "screenPicker",
198
+ description: "Select a screen to navigate to",
199
+ includeSystemItems: true,
200
+ group: "Link",
201
+ requiresKeyValue: {
202
+ key: "linkType",
203
+ value: "screen"
204
+ }
205
+ },
206
+ {
207
+ key: "shareSource",
208
+ label: "Share Source",
209
+ type: "buttonGroup",
210
+ options: [{
211
+ label: "Resource",
212
+ value: "resource"
213
+ }, {
214
+ label: "URL",
215
+ value: "url"
216
+ }],
217
+ defaultValue: "resource",
218
+ group: "Link",
219
+ requiresKeyValue: {
220
+ key: "linkType",
221
+ value: "share"
222
+ }
223
+ },
224
+ {
225
+ key: "shareResource",
226
+ label: "Shareable Content",
227
+ type: "resource",
228
+ description: "Select content to share",
229
+ allowedTypes: [
230
+ "Product",
231
+ "Medium",
232
+ "Library",
233
+ "Page",
234
+ "EnrollmentPack"
235
+ ],
236
+ group: "Link",
237
+ requiresKeyValue: [{
238
+ key: "linkType",
239
+ value: "share"
240
+ }, {
241
+ key: "shareSource",
242
+ value: "resource"
243
+ }]
244
+ },
245
+ {
246
+ key: "shareUrl",
247
+ label: "Share URL",
248
+ type: "text",
249
+ description: "The URL to share",
250
+ defaultValue: "",
251
+ group: "Link",
252
+ requiresKeyValue: [{
253
+ key: "linkType",
254
+ value: "share"
255
+ }, {
256
+ key: "shareSource",
257
+ value: "url"
258
+ }]
122
259
  },
123
260
  {
124
261
  key: "variant",
@@ -237,4 +374,4 @@ Object.defineProperty(exports, "linkWidgetPropertySchema", {
237
374
  }
238
375
  });
239
376
 
240
- //# sourceMappingURL=LinkWidget-CPneatEQ.cjs.map
377
+ //# sourceMappingURL=LinkWidget-Bk6h0IOA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkWidget-Bk6h0IOA.cjs","names":["useWidgetInteraction","borderWidthClasses","borderColorClasses","Button"],"sources":["../../widgets/src/widgets/LinkWidget.tsx"],"sourcesContent":["import type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport { useCallback, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { useWidgetInteraction } from \"../contexts/WidgetInteractionContext\";\nimport {\n getBorderRadiusCompositeField,\n getBorderWidthField,\n getBorderColorField,\n borderWidthClasses,\n borderColorClasses,\n getButtonSizeField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport type {\n BorderRadiusOptions,\n BorderWidthOptions,\n ButtonSizeOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { ShareableItem } from \"@fluid-app/portal-core/types\";\n\ntype LinkVariant =\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\";\n\nconst borderRadiusTLClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-tl-none\",\n sm: \"rounded-tl-sm\",\n md: \"rounded-tl-md\",\n lg: \"rounded-tl-lg\",\n xl: \"rounded-tl-xl\",\n full: \"rounded-tl-full\",\n};\n\nconst borderRadiusTRClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-tr-none\",\n sm: \"rounded-tr-sm\",\n md: \"rounded-tr-md\",\n lg: \"rounded-tr-lg\",\n xl: \"rounded-tr-xl\",\n full: \"rounded-tr-full\",\n};\n\nconst borderRadiusBLClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-bl-none\",\n sm: \"rounded-bl-sm\",\n md: \"rounded-bl-md\",\n lg: \"rounded-bl-lg\",\n xl: \"rounded-bl-xl\",\n full: \"rounded-bl-full\",\n};\n\nconst borderRadiusBRClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-br-none\",\n sm: \"rounded-br-sm\",\n md: \"rounded-br-md\",\n lg: \"rounded-br-lg\",\n xl: \"rounded-br-xl\",\n full: \"rounded-br-full\",\n};\n\nfunction sanitizeHref(url: string): string | undefined {\n if (!url) return undefined;\n if (/^(https?:|mailto:|tel:|\\/)/i.test(url)) return url;\n return undefined;\n}\n\nexport type LinkType = \"url\" | \"screen\" | \"share\";\nexport type ShareSource = \"resource\" | \"url\";\n\ntype LinkWidgetProps = ComponentProps<\"div\"> & {\n text?: string;\n linkType?: LinkType;\n // URL mode\n href?: string;\n openInNewTab?: boolean;\n // Screen mode\n screenSlug?: string;\n // Share mode\n shareSource?: ShareSource;\n shareResource?: ShareableItem;\n shareUrl?: string;\n // Styling\n variant?: LinkVariant;\n size?: ButtonSizeOptions;\n fontSize?: FontSizeOptions;\n alignment?: \"left\" | \"center\" | \"right\";\n fullWidth?: boolean;\n padding?: PaddingOptions;\n /** @deprecated Use per-corner props instead */\n borderRadius?: BorderRadiusOptions;\n borderRadiusTL?: BorderRadiusOptions;\n borderRadiusTR?: BorderRadiusOptions;\n borderRadiusBL?: BorderRadiusOptions;\n borderRadiusBR?: BorderRadiusOptions;\n borderWidth?: BorderWidthOptions;\n borderColor?: ColorOptions;\n previewMode?: boolean;\n editMode?: boolean;\n};\n\nconst alignmentClasses = {\n left: \"justify-start\",\n center: \"justify-center\",\n right: \"justify-end\",\n} as const;\n\nexport function LinkWidget({\n text = \"Click Here\",\n linkType = \"url\",\n href = \"\",\n openInNewTab = true,\n screenSlug,\n shareSource,\n shareResource,\n shareUrl,\n variant = \"default\",\n size = \"default\",\n fontSize = \"sm\",\n alignment = \"center\",\n fullWidth = false,\n padding = 0,\n borderRadius,\n borderRadiusTL,\n borderRadiusTR,\n borderRadiusBL,\n borderRadiusBR,\n borderWidth = \"none\",\n borderColor = \"muted\",\n previewMode = false,\n editMode = false,\n className,\n ...props\n}: LinkWidgetProps): React.JSX.Element {\n const { onNavigate, buildHref } = useWidgetInteraction();\n\n const handleShareClick = useCallback(async () => {\n const isResourceMode = shareSource === \"resource\" || shareSource == null;\n const url = isResourceMode\n ? (shareResource?.share_link ?? undefined)\n : (shareUrl ?? undefined);\n if (!url) return;\n\n if (navigator.share) {\n try {\n await navigator.share({\n url,\n ...(isResourceMode && shareResource?.title\n ? { title: shareResource.title }\n : {}),\n });\n return;\n } catch (e) {\n // User intentionally dismissed the share sheet — do not copy to clipboard\n if (e instanceof DOMException && e.name === \"AbortError\") return;\n // Other errors (e.g. NotAllowedError) — fall through to clipboard\n }\n }\n\n try {\n await navigator.clipboard.writeText(url);\n } catch {\n // Clipboard API not available\n }\n }, [shareSource, shareUrl, shareResource]);\n\n const handleScreenClick = useCallback(\n (e: React.MouseEvent) => {\n if (onNavigate && screenSlug) {\n e.preventDefault();\n onNavigate(screenSlug);\n }\n },\n [onNavigate, screenSlug],\n );\n\n const screenHref = screenSlug\n ? (buildHref?.(screenSlug) ?? screenSlug)\n : undefined;\n if (previewMode) {\n return (\n <div className={`flex justify-center p-4 ${className ?? \"\"}`} {...props}>\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"36px\",\n padding: \"0 16px\",\n borderRadius: \"6px\",\n backgroundColor: \"#18181b\",\n color: \"#ffffff\",\n fontSize: \"14px\",\n fontWeight: 500,\n }}\n >\n {text}\n </span>\n </div>\n );\n }\n\n const fallback = borderRadius ?? \"md\";\n const tl = borderRadiusTL ?? fallback;\n const tr = borderRadiusTR ?? fallback;\n const bl = borderRadiusBL ?? fallback;\n const br = borderRadiusBR ?? fallback;\n const borderRadiusClasses = `rounded-none ${borderRadiusTLClasses[tl]} ${borderRadiusTRClasses[tr]} ${borderRadiusBLClasses[bl]} ${borderRadiusBRClasses[br]}`;\n const buttonClasses = `text-${fontSize} ${borderRadiusClasses} ${fullWidth ? \"w-full\" : \"\"}`;\n\n return (\n <div\n className={`flex ${alignmentClasses[alignment]} p-${padding} ${borderWidthClasses[borderWidth]} ${borderWidth !== \"none\" ? borderColorClasses[borderColor] : \"\"} ${className ?? \"\"}`}\n {...props}\n >\n <Button asChild variant={variant} size={size} className={buttonClasses}>\n {editMode ? (\n <span className=\"cursor-default\">{text}</span>\n ) : linkType === \"share\" ? (\n <button type=\"button\" onClick={handleShareClick}>\n {text}\n </button>\n ) : linkType === \"screen\" ? (\n screenSlug ? (\n <a href={screenHref} onClick={handleScreenClick}>\n {text}\n </a>\n ) : (\n <span className=\"cursor-default\">{text}</span>\n )\n ) : (\n <a\n href={sanitizeHref(href)}\n {...(openInNewTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {})}\n >\n {text}\n </a>\n )}\n </Button>\n </div>\n );\n}\n\nexport const linkWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"LinkWidget\",\n displayName: \"Link Button\",\n fields: [\n // Link Group\n {\n key: \"linkType\",\n label: \"Link Type\",\n type: \"buttonGroup\",\n options: [\n { label: \"URL\", value: \"url\" },\n { label: \"Screen\", value: \"screen\" },\n { label: \"Share\", value: \"share\" },\n ],\n defaultValue: \"url\",\n group: \"Link\",\n },\n {\n key: \"text\",\n label: \"Text\",\n type: \"text\",\n description: \"The button label text\",\n defaultValue: \"Click Here\",\n group: \"Link\",\n },\n // URL mode fields\n {\n key: \"href\",\n label: \"URL\",\n type: \"text\",\n description: \"The destination URL\",\n defaultValue: \"\",\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"url\" },\n },\n {\n key: \"openInNewTab\",\n label: \"Open in New Tab\",\n type: \"boolean\",\n description: \"Whether to open the link in a new tab\",\n defaultValue: true,\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"url\" },\n },\n // Screen mode fields\n {\n key: \"screenSlug\",\n label: \"Screen\",\n type: \"screenPicker\",\n description: \"Select a screen to navigate to\",\n includeSystemItems: true,\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"screen\" },\n },\n // Share mode fields\n {\n key: \"shareSource\",\n label: \"Share Source\",\n type: \"buttonGroup\",\n options: [\n { label: \"Resource\", value: \"resource\" },\n { label: \"URL\", value: \"url\" },\n ],\n defaultValue: \"resource\",\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"share\" },\n },\n {\n key: \"shareResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select content to share\",\n allowedTypes: [\"Product\", \"Medium\", \"Library\", \"Page\", \"EnrollmentPack\"],\n group: \"Link\",\n requiresKeyValue: [\n { key: \"linkType\", value: \"share\" },\n { key: \"shareSource\", value: \"resource\" },\n ],\n },\n {\n key: \"shareUrl\",\n label: \"Share URL\",\n type: \"text\",\n description: \"The URL to share\",\n defaultValue: \"\",\n group: \"Link\",\n requiresKeyValue: [\n { key: \"linkType\", value: \"share\" },\n { key: \"shareSource\", value: \"url\" },\n ],\n },\n // Button Style Group\n {\n key: \"variant\",\n label: \"Variant\",\n type: \"select\",\n description: \"The visual style of the button\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Outline\", value: \"outline\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Ghost\", value: \"ghost\" },\n { label: \"Destructive\", value: \"destructive\" },\n ],\n defaultValue: \"default\",\n group: \"Button Style\",\n },\n getButtonSizeField({\n key: \"size\",\n label: \"Size\",\n description: \"The size of the button\",\n defaultValue: \"default\",\n group: \"Button Style\",\n }),\n getFontSizeField({\n key: \"fontSize\",\n label: \"Text Size\",\n description: \"The font size of the button text\",\n defaultValue: \"sm\",\n group: \"Button Style\",\n }),\n // Layout Group\n {\n key: \"alignment\",\n label: \"Alignment\",\n type: \"buttonGroup\",\n description: \"Horizontal alignment of the button\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"center\",\n group: \"Layout\",\n },\n {\n key: \"fullWidth\",\n label: \"Full Width\",\n type: \"boolean\",\n description: \"Makes the button stretch to full container width\",\n defaultValue: false,\n group: \"Layout\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Outer container padding\",\n defaultValue: 0,\n group: \"Layout\",\n }),\n // Design Group\n getBorderRadiusCompositeField({\n key: \"borderRadiusGroup\",\n label: \"Border Radius\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getBorderWidthField({\n key: \"borderWidth\",\n label: \"Border Width\",\n description: \"Border width for the widget\",\n defaultValue: \"none\",\n group: \"Design\",\n }),\n getBorderColorField({\n key: \"borderColor\",\n label: \"Border Color\",\n description: \"Border color for the widget\",\n defaultValue: \"muted\",\n group: \"Design\",\n }),\n ],\n};\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  require("./chunk-DAgNkxik.cjs");
2
+ require("./WidgetInteractionContext-ywxCBIMm.cjs");
2
3
  require("./fields-BCNGRVzZ.cjs");
3
4
  require("./src-B0dC4Lru.cjs");
4
- const require_LinkWidget = require("./LinkWidget-CPneatEQ.cjs");
5
+ const require_LinkWidget = require("./LinkWidget-Bk6h0IOA.cjs");
5
6
  exports.linkWidgetPropertySchema = require_LinkWidget.linkWidgetPropertySchema;
@@ -1,6 +1,8 @@
1
1
  import { n as __exportAll } from "./chunk-CRV2RMSr.mjs";
2
+ import { t as useWidgetInteraction } from "./WidgetInteractionContext-DAN31Alw.mjs";
2
3
  import { a as getBorderRadiusCompositeField, c as getButtonSizeField, i as getBorderColorField, m as getPaddingField, n as borderWidthClasses, s as getBorderWidthField, t as borderColorClasses, u as getFontSizeField } from "./fields-CjDogNNF.mjs";
3
4
  import { un as Button } from "./src-xz1CzLl_.mjs";
5
+ import { useCallback } from "react";
4
6
  import { jsx } from "react/jsx-runtime";
5
7
  //#region ../widgets/src/widgets/LinkWidget.tsx
6
8
  var LinkWidget_exports = /* @__PURE__ */ __exportAll({
@@ -48,7 +50,36 @@ const alignmentClasses = {
48
50
  center: "justify-center",
49
51
  right: "justify-end"
50
52
  };
51
- function LinkWidget({ text = "Click Here", href = "", openInNewTab = true, variant = "default", size = "default", fontSize = "sm", alignment = "center", fullWidth = false, padding = 0, borderRadius, borderRadiusTL, borderRadiusTR, borderRadiusBL, borderRadiusBR, borderWidth = "none", borderColor = "muted", previewMode = false, editMode = false, className, ...props }) {
53
+ function LinkWidget({ text = "Click Here", linkType = "url", href = "", openInNewTab = true, screenSlug, shareSource, shareResource, shareUrl, variant = "default", size = "default", fontSize = "sm", alignment = "center", fullWidth = false, padding = 0, borderRadius, borderRadiusTL, borderRadiusTR, borderRadiusBL, borderRadiusBR, borderWidth = "none", borderColor = "muted", previewMode = false, editMode = false, className, ...props }) {
54
+ const { onNavigate, buildHref } = useWidgetInteraction();
55
+ const handleShareClick = useCallback(async () => {
56
+ const isResourceMode = shareSource === "resource" || shareSource == null;
57
+ const url = isResourceMode ? shareResource?.share_link ?? void 0 : shareUrl ?? void 0;
58
+ if (!url) return;
59
+ if (navigator.share) try {
60
+ await navigator.share({
61
+ url,
62
+ ...isResourceMode && shareResource?.title ? { title: shareResource.title } : {}
63
+ });
64
+ return;
65
+ } catch (e) {
66
+ if (e instanceof DOMException && e.name === "AbortError") return;
67
+ }
68
+ try {
69
+ await navigator.clipboard.writeText(url);
70
+ } catch {}
71
+ }, [
72
+ shareSource,
73
+ shareUrl,
74
+ shareResource
75
+ ]);
76
+ const handleScreenClick = useCallback((e) => {
77
+ if (onNavigate && screenSlug) {
78
+ e.preventDefault();
79
+ onNavigate(screenSlug);
80
+ }
81
+ }, [onNavigate, screenSlug]);
82
+ const screenHref = screenSlug ? buildHref?.(screenSlug) ?? screenSlug : void 0;
52
83
  if (previewMode) return /* @__PURE__ */ jsx("div", {
53
84
  className: `flex justify-center p-4 ${className ?? ""}`,
54
85
  ...props,
@@ -85,6 +116,17 @@ function LinkWidget({ text = "Click Here", href = "", openInNewTab = true, varia
85
116
  children: editMode ? /* @__PURE__ */ jsx("span", {
86
117
  className: "cursor-default",
87
118
  children: text
119
+ }) : linkType === "share" ? /* @__PURE__ */ jsx("button", {
120
+ type: "button",
121
+ onClick: handleShareClick,
122
+ children: text
123
+ }) : linkType === "screen" ? screenSlug ? /* @__PURE__ */ jsx("a", {
124
+ href: screenHref,
125
+ onClick: handleScreenClick,
126
+ children: text
127
+ }) : /* @__PURE__ */ jsx("span", {
128
+ className: "cursor-default",
129
+ children: text
88
130
  }) : /* @__PURE__ */ jsx("a", {
89
131
  href: sanitizeHref(href),
90
132
  ...openInNewTab ? {
@@ -100,6 +142,27 @@ const linkWidgetPropertySchema = {
100
142
  widgetType: "LinkWidget",
101
143
  displayName: "Link Button",
102
144
  fields: [
145
+ {
146
+ key: "linkType",
147
+ label: "Link Type",
148
+ type: "buttonGroup",
149
+ options: [
150
+ {
151
+ label: "URL",
152
+ value: "url"
153
+ },
154
+ {
155
+ label: "Screen",
156
+ value: "screen"
157
+ },
158
+ {
159
+ label: "Share",
160
+ value: "share"
161
+ }
162
+ ],
163
+ defaultValue: "url",
164
+ group: "Link"
165
+ },
103
166
  {
104
167
  key: "text",
105
168
  label: "Text",
@@ -114,7 +177,11 @@ const linkWidgetPropertySchema = {
114
177
  type: "text",
115
178
  description: "The destination URL",
116
179
  defaultValue: "",
117
- group: "Link"
180
+ group: "Link",
181
+ requiresKeyValue: {
182
+ key: "linkType",
183
+ value: "url"
184
+ }
118
185
  },
119
186
  {
120
187
  key: "openInNewTab",
@@ -122,7 +189,77 @@ const linkWidgetPropertySchema = {
122
189
  type: "boolean",
123
190
  description: "Whether to open the link in a new tab",
124
191
  defaultValue: true,
125
- group: "Link"
192
+ group: "Link",
193
+ requiresKeyValue: {
194
+ key: "linkType",
195
+ value: "url"
196
+ }
197
+ },
198
+ {
199
+ key: "screenSlug",
200
+ label: "Screen",
201
+ type: "screenPicker",
202
+ description: "Select a screen to navigate to",
203
+ includeSystemItems: true,
204
+ group: "Link",
205
+ requiresKeyValue: {
206
+ key: "linkType",
207
+ value: "screen"
208
+ }
209
+ },
210
+ {
211
+ key: "shareSource",
212
+ label: "Share Source",
213
+ type: "buttonGroup",
214
+ options: [{
215
+ label: "Resource",
216
+ value: "resource"
217
+ }, {
218
+ label: "URL",
219
+ value: "url"
220
+ }],
221
+ defaultValue: "resource",
222
+ group: "Link",
223
+ requiresKeyValue: {
224
+ key: "linkType",
225
+ value: "share"
226
+ }
227
+ },
228
+ {
229
+ key: "shareResource",
230
+ label: "Shareable Content",
231
+ type: "resource",
232
+ description: "Select content to share",
233
+ allowedTypes: [
234
+ "Product",
235
+ "Medium",
236
+ "Library",
237
+ "Page",
238
+ "EnrollmentPack"
239
+ ],
240
+ group: "Link",
241
+ requiresKeyValue: [{
242
+ key: "linkType",
243
+ value: "share"
244
+ }, {
245
+ key: "shareSource",
246
+ value: "resource"
247
+ }]
248
+ },
249
+ {
250
+ key: "shareUrl",
251
+ label: "Share URL",
252
+ type: "text",
253
+ description: "The URL to share",
254
+ defaultValue: "",
255
+ group: "Link",
256
+ requiresKeyValue: [{
257
+ key: "linkType",
258
+ value: "share"
259
+ }, {
260
+ key: "shareSource",
261
+ value: "url"
262
+ }]
126
263
  },
127
264
  {
128
265
  key: "variant",
@@ -230,4 +367,4 @@ const linkWidgetPropertySchema = {
230
367
  //#endregion
231
368
  export { LinkWidget_exports as n, linkWidgetPropertySchema as r, LinkWidget as t };
232
369
 
233
- //# sourceMappingURL=LinkWidget-BIGRdkyq.mjs.map
370
+ //# sourceMappingURL=LinkWidget-CfgPs5G8.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkWidget-CfgPs5G8.mjs","names":[],"sources":["../../widgets/src/widgets/LinkWidget.tsx"],"sourcesContent":["import type { WidgetPropertySchema } from \"@fluid-app/portal-core/registries\";\nimport { useCallback, type ComponentProps } from \"react\";\nimport type React from \"react\";\nimport { Button } from \"@fluid-app/ui-primitives\";\nimport { useWidgetInteraction } from \"../contexts/WidgetInteractionContext\";\nimport {\n getBorderRadiusCompositeField,\n getBorderWidthField,\n getBorderColorField,\n borderWidthClasses,\n borderColorClasses,\n getButtonSizeField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport type {\n BorderRadiusOptions,\n BorderWidthOptions,\n ButtonSizeOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/portal-core/types\";\nimport type { ShareableItem } from \"@fluid-app/portal-core/types\";\n\ntype LinkVariant =\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\";\n\nconst borderRadiusTLClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-tl-none\",\n sm: \"rounded-tl-sm\",\n md: \"rounded-tl-md\",\n lg: \"rounded-tl-lg\",\n xl: \"rounded-tl-xl\",\n full: \"rounded-tl-full\",\n};\n\nconst borderRadiusTRClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-tr-none\",\n sm: \"rounded-tr-sm\",\n md: \"rounded-tr-md\",\n lg: \"rounded-tr-lg\",\n xl: \"rounded-tr-xl\",\n full: \"rounded-tr-full\",\n};\n\nconst borderRadiusBLClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-bl-none\",\n sm: \"rounded-bl-sm\",\n md: \"rounded-bl-md\",\n lg: \"rounded-bl-lg\",\n xl: \"rounded-bl-xl\",\n full: \"rounded-bl-full\",\n};\n\nconst borderRadiusBRClasses: Record<BorderRadiusOptions, string> = {\n none: \"rounded-br-none\",\n sm: \"rounded-br-sm\",\n md: \"rounded-br-md\",\n lg: \"rounded-br-lg\",\n xl: \"rounded-br-xl\",\n full: \"rounded-br-full\",\n};\n\nfunction sanitizeHref(url: string): string | undefined {\n if (!url) return undefined;\n if (/^(https?:|mailto:|tel:|\\/)/i.test(url)) return url;\n return undefined;\n}\n\nexport type LinkType = \"url\" | \"screen\" | \"share\";\nexport type ShareSource = \"resource\" | \"url\";\n\ntype LinkWidgetProps = ComponentProps<\"div\"> & {\n text?: string;\n linkType?: LinkType;\n // URL mode\n href?: string;\n openInNewTab?: boolean;\n // Screen mode\n screenSlug?: string;\n // Share mode\n shareSource?: ShareSource;\n shareResource?: ShareableItem;\n shareUrl?: string;\n // Styling\n variant?: LinkVariant;\n size?: ButtonSizeOptions;\n fontSize?: FontSizeOptions;\n alignment?: \"left\" | \"center\" | \"right\";\n fullWidth?: boolean;\n padding?: PaddingOptions;\n /** @deprecated Use per-corner props instead */\n borderRadius?: BorderRadiusOptions;\n borderRadiusTL?: BorderRadiusOptions;\n borderRadiusTR?: BorderRadiusOptions;\n borderRadiusBL?: BorderRadiusOptions;\n borderRadiusBR?: BorderRadiusOptions;\n borderWidth?: BorderWidthOptions;\n borderColor?: ColorOptions;\n previewMode?: boolean;\n editMode?: boolean;\n};\n\nconst alignmentClasses = {\n left: \"justify-start\",\n center: \"justify-center\",\n right: \"justify-end\",\n} as const;\n\nexport function LinkWidget({\n text = \"Click Here\",\n linkType = \"url\",\n href = \"\",\n openInNewTab = true,\n screenSlug,\n shareSource,\n shareResource,\n shareUrl,\n variant = \"default\",\n size = \"default\",\n fontSize = \"sm\",\n alignment = \"center\",\n fullWidth = false,\n padding = 0,\n borderRadius,\n borderRadiusTL,\n borderRadiusTR,\n borderRadiusBL,\n borderRadiusBR,\n borderWidth = \"none\",\n borderColor = \"muted\",\n previewMode = false,\n editMode = false,\n className,\n ...props\n}: LinkWidgetProps): React.JSX.Element {\n const { onNavigate, buildHref } = useWidgetInteraction();\n\n const handleShareClick = useCallback(async () => {\n const isResourceMode = shareSource === \"resource\" || shareSource == null;\n const url = isResourceMode\n ? (shareResource?.share_link ?? undefined)\n : (shareUrl ?? undefined);\n if (!url) return;\n\n if (navigator.share) {\n try {\n await navigator.share({\n url,\n ...(isResourceMode && shareResource?.title\n ? { title: shareResource.title }\n : {}),\n });\n return;\n } catch (e) {\n // User intentionally dismissed the share sheet — do not copy to clipboard\n if (e instanceof DOMException && e.name === \"AbortError\") return;\n // Other errors (e.g. NotAllowedError) — fall through to clipboard\n }\n }\n\n try {\n await navigator.clipboard.writeText(url);\n } catch {\n // Clipboard API not available\n }\n }, [shareSource, shareUrl, shareResource]);\n\n const handleScreenClick = useCallback(\n (e: React.MouseEvent) => {\n if (onNavigate && screenSlug) {\n e.preventDefault();\n onNavigate(screenSlug);\n }\n },\n [onNavigate, screenSlug],\n );\n\n const screenHref = screenSlug\n ? (buildHref?.(screenSlug) ?? screenSlug)\n : undefined;\n if (previewMode) {\n return (\n <div className={`flex justify-center p-4 ${className ?? \"\"}`} {...props}>\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"36px\",\n padding: \"0 16px\",\n borderRadius: \"6px\",\n backgroundColor: \"#18181b\",\n color: \"#ffffff\",\n fontSize: \"14px\",\n fontWeight: 500,\n }}\n >\n {text}\n </span>\n </div>\n );\n }\n\n const fallback = borderRadius ?? \"md\";\n const tl = borderRadiusTL ?? fallback;\n const tr = borderRadiusTR ?? fallback;\n const bl = borderRadiusBL ?? fallback;\n const br = borderRadiusBR ?? fallback;\n const borderRadiusClasses = `rounded-none ${borderRadiusTLClasses[tl]} ${borderRadiusTRClasses[tr]} ${borderRadiusBLClasses[bl]} ${borderRadiusBRClasses[br]}`;\n const buttonClasses = `text-${fontSize} ${borderRadiusClasses} ${fullWidth ? \"w-full\" : \"\"}`;\n\n return (\n <div\n className={`flex ${alignmentClasses[alignment]} p-${padding} ${borderWidthClasses[borderWidth]} ${borderWidth !== \"none\" ? borderColorClasses[borderColor] : \"\"} ${className ?? \"\"}`}\n {...props}\n >\n <Button asChild variant={variant} size={size} className={buttonClasses}>\n {editMode ? (\n <span className=\"cursor-default\">{text}</span>\n ) : linkType === \"share\" ? (\n <button type=\"button\" onClick={handleShareClick}>\n {text}\n </button>\n ) : linkType === \"screen\" ? (\n screenSlug ? (\n <a href={screenHref} onClick={handleScreenClick}>\n {text}\n </a>\n ) : (\n <span className=\"cursor-default\">{text}</span>\n )\n ) : (\n <a\n href={sanitizeHref(href)}\n {...(openInNewTab\n ? { target: \"_blank\", rel: \"noopener noreferrer\" }\n : {})}\n >\n {text}\n </a>\n )}\n </Button>\n </div>\n );\n}\n\nexport const linkWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"LinkWidget\",\n displayName: \"Link Button\",\n fields: [\n // Link Group\n {\n key: \"linkType\",\n label: \"Link Type\",\n type: \"buttonGroup\",\n options: [\n { label: \"URL\", value: \"url\" },\n { label: \"Screen\", value: \"screen\" },\n { label: \"Share\", value: \"share\" },\n ],\n defaultValue: \"url\",\n group: \"Link\",\n },\n {\n key: \"text\",\n label: \"Text\",\n type: \"text\",\n description: \"The button label text\",\n defaultValue: \"Click Here\",\n group: \"Link\",\n },\n // URL mode fields\n {\n key: \"href\",\n label: \"URL\",\n type: \"text\",\n description: \"The destination URL\",\n defaultValue: \"\",\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"url\" },\n },\n {\n key: \"openInNewTab\",\n label: \"Open in New Tab\",\n type: \"boolean\",\n description: \"Whether to open the link in a new tab\",\n defaultValue: true,\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"url\" },\n },\n // Screen mode fields\n {\n key: \"screenSlug\",\n label: \"Screen\",\n type: \"screenPicker\",\n description: \"Select a screen to navigate to\",\n includeSystemItems: true,\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"screen\" },\n },\n // Share mode fields\n {\n key: \"shareSource\",\n label: \"Share Source\",\n type: \"buttonGroup\",\n options: [\n { label: \"Resource\", value: \"resource\" },\n { label: \"URL\", value: \"url\" },\n ],\n defaultValue: \"resource\",\n group: \"Link\",\n requiresKeyValue: { key: \"linkType\", value: \"share\" },\n },\n {\n key: \"shareResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select content to share\",\n allowedTypes: [\"Product\", \"Medium\", \"Library\", \"Page\", \"EnrollmentPack\"],\n group: \"Link\",\n requiresKeyValue: [\n { key: \"linkType\", value: \"share\" },\n { key: \"shareSource\", value: \"resource\" },\n ],\n },\n {\n key: \"shareUrl\",\n label: \"Share URL\",\n type: \"text\",\n description: \"The URL to share\",\n defaultValue: \"\",\n group: \"Link\",\n requiresKeyValue: [\n { key: \"linkType\", value: \"share\" },\n { key: \"shareSource\", value: \"url\" },\n ],\n },\n // Button Style Group\n {\n key: \"variant\",\n label: \"Variant\",\n type: \"select\",\n description: \"The visual style of the button\",\n options: [\n { label: \"Default\", value: \"default\" },\n { label: \"Outline\", value: \"outline\" },\n { label: \"Secondary\", value: \"secondary\" },\n { label: \"Ghost\", value: \"ghost\" },\n { label: \"Destructive\", value: \"destructive\" },\n ],\n defaultValue: \"default\",\n group: \"Button Style\",\n },\n getButtonSizeField({\n key: \"size\",\n label: \"Size\",\n description: \"The size of the button\",\n defaultValue: \"default\",\n group: \"Button Style\",\n }),\n getFontSizeField({\n key: \"fontSize\",\n label: \"Text Size\",\n description: \"The font size of the button text\",\n defaultValue: \"sm\",\n group: \"Button Style\",\n }),\n // Layout Group\n {\n key: \"alignment\",\n label: \"Alignment\",\n type: \"buttonGroup\",\n description: \"Horizontal alignment of the button\",\n options: [\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ],\n defaultValue: \"center\",\n group: \"Layout\",\n },\n {\n key: \"fullWidth\",\n label: \"Full Width\",\n type: \"boolean\",\n description: \"Makes the button stretch to full container width\",\n defaultValue: false,\n group: \"Layout\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Outer container padding\",\n defaultValue: 0,\n group: \"Layout\",\n }),\n // Design Group\n getBorderRadiusCompositeField({\n key: \"borderRadiusGroup\",\n label: \"Border Radius\",\n defaultValue: \"md\",\n group: \"Design\",\n }),\n getBorderWidthField({\n key: \"borderWidth\",\n label: \"Border Width\",\n description: \"Border width for the widget\",\n defaultValue: \"none\",\n group: \"Design\",\n }),\n getBorderColorField({\n key: \"borderColor\",\n label: \"Border Color\",\n description: \"Border color for the widget\",\n defaultValue: \"muted\",\n group: \"Design\",\n }),\n ],\n};\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  const require_chunk = require("./chunk-DAgNkxik.cjs");
2
- const require_FluidProvider = require("./FluidProvider-Bm9_Q-Vq.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-CfnQ1hQi.cjs");
3
3
  const require_src = require("./src-B0dC4Lru.cjs");
4
- const require_use_fluid_api = require("./use-fluid-api-BzIeHDnF.cjs");
4
+ const require_use_fluid_api = require("./use-fluid-api-Df5mIIBE.cjs");
5
5
  const require_dist = require("./dist-CtcLRHrv.cjs");
6
6
  const require_es = require("./es-BZa0y3qY.cjs");
7
7
  let react = require("react");
@@ -59628,4 +59628,4 @@ Object.defineProperty(exports, "useMessagingConfig", {
59628
59628
  }
59629
59629
  });
59630
59630
 
59631
- //# sourceMappingURL=MessagingScreen-C52nvMiv.cjs.map
59631
+ //# sourceMappingURL=MessagingScreen-AwU6FVrk.cjs.map