@fluid-app/portal-sdk 0.1.57 → 0.1.59

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/{AppDownloadScreen-COuwjUfa.mjs → AppDownloadScreen-B-4Om2j8.mjs} +2 -2
  2. package/dist/{AppDownloadScreen-COuwjUfa.mjs.map → AppDownloadScreen-B-4Om2j8.mjs.map} +1 -1
  3. package/dist/{AppDownloadScreen-yDs-QtRS.cjs → AppDownloadScreen-B_SwkDDi.cjs} +2 -2
  4. package/dist/{AppDownloadScreen-yDs-QtRS.cjs.map → AppDownloadScreen-B_SwkDDi.cjs.map} +1 -1
  5. package/dist/{AppDownloadScreen-DMTYrxWg.mjs → AppDownloadScreen-Dw7DyU92.mjs} +3 -3
  6. package/dist/{AppDownloadScreen-B3e3QH3E.cjs → AppDownloadScreen-NJI_UTLu.cjs} +3 -3
  7. package/dist/{ContactsScreen-EaQc1fQf.cjs → ContactsScreen-BHnAPB1v.cjs} +2 -2
  8. package/dist/{ContactsScreen-EaQc1fQf.cjs.map → ContactsScreen-BHnAPB1v.cjs.map} +1 -1
  9. package/dist/{ContactsScreen-U_UzEe8A.mjs → ContactsScreen-BSaedR34.mjs} +3 -3
  10. package/dist/{ContactsScreen-BocpRIYk.cjs → ContactsScreen-C8510XHQ.cjs} +3 -3
  11. package/dist/{ContactsScreen-1q6YYzXK.mjs → ContactsScreen-Dcx-CUNk.mjs} +2 -2
  12. package/dist/{ContactsScreen-1q6YYzXK.mjs.map → ContactsScreen-Dcx-CUNk.mjs.map} +1 -1
  13. package/dist/{FluidProvider-DDcsxdbL.cjs → FluidProvider-BcMVqXGW.cjs} +3 -3
  14. package/dist/{FluidProvider-DDcsxdbL.cjs.map → FluidProvider-BcMVqXGW.cjs.map} +1 -1
  15. package/dist/{FluidProvider-uMkUIfAA.mjs → FluidProvider-NsdWcsos.mjs} +3 -3
  16. package/dist/{FluidProvider-uMkUIfAA.mjs.map → FluidProvider-NsdWcsos.mjs.map} +1 -1
  17. package/dist/{LinkWidget-CtcSfgWD.cjs → LinkWidget-Bvw5OZwU.cjs} +11 -3
  18. package/dist/LinkWidget-Bvw5OZwU.cjs.map +1 -0
  19. package/dist/{LinkWidget-CUHpx9wn.mjs → LinkWidget-dwIVKZD0.mjs} +11 -3
  20. package/dist/LinkWidget-dwIVKZD0.mjs.map +1 -0
  21. package/dist/{LinkWidget-C_YI8H_X.cjs → LinkWidget-hhWO8yWC.cjs} +1 -1
  22. package/dist/{MessagingScreen-B8gg5qJi.cjs → MessagingScreen-BUC6-xNT.cjs} +3 -3
  23. package/dist/{MessagingScreen-DCrqjweY.mjs → MessagingScreen-CGvz_4UM.mjs} +3 -3
  24. package/dist/{MessagingScreen-DCrqjweY.mjs.map → MessagingScreen-CGvz_4UM.mjs.map} +1 -1
  25. package/dist/{MessagingScreen-CFv3DZlx.mjs → MessagingScreen-CMx7NBXH.mjs} +3 -3
  26. package/dist/{MessagingScreen-BQWcyDp7.cjs → MessagingScreen-XSXGBuM5.cjs} +3 -3
  27. package/dist/{MessagingScreen-BQWcyDp7.cjs.map → MessagingScreen-XSXGBuM5.cjs.map} +1 -1
  28. package/dist/{MySiteScreen-BQDG1MIf.cjs → MySiteScreen-6qkt1-AM.cjs} +3 -3
  29. package/dist/{MySiteScreen-BWE6kZNh.mjs → MySiteScreen-BYhZIZth.mjs} +2 -2
  30. package/dist/{MySiteScreen-BWE6kZNh.mjs.map → MySiteScreen-BYhZIZth.mjs.map} +1 -1
  31. package/dist/{MySiteScreen-CMbbIem9.mjs → MySiteScreen-CJaXSfvP.mjs} +3 -3
  32. package/dist/{MySiteScreen-Dq34cH33.cjs → MySiteScreen-armH7ZmU.cjs} +2 -2
  33. package/dist/{MySiteScreen-Dq34cH33.cjs.map → MySiteScreen-armH7ZmU.cjs.map} +1 -1
  34. package/dist/{OrdersScreen-DkMmE8c3.mjs → OrdersScreen-36U1k66t.mjs} +3 -3
  35. package/dist/{OrdersScreen-DkMmE8c3.mjs.map → OrdersScreen-36U1k66t.mjs.map} +1 -1
  36. package/dist/{OrdersScreen-DFIm1noJ.cjs → OrdersScreen-CKfSGMRB.cjs} +3 -3
  37. package/dist/{OrdersScreen-DvtDjt3L.cjs → OrdersScreen-D5qbccVE.cjs} +3 -3
  38. package/dist/{OrdersScreen-DvtDjt3L.cjs.map → OrdersScreen-D5qbccVE.cjs.map} +1 -1
  39. package/dist/{OrdersScreen-Bez4E8IX.mjs → OrdersScreen-cBlQv9h0.mjs} +3 -3
  40. package/dist/{ProductsScreen-DO54qQyx.cjs → ProductsScreen-D1TMPOpi.cjs} +3 -3
  41. package/dist/{ProductsScreen-DO54qQyx.cjs.map → ProductsScreen-D1TMPOpi.cjs.map} +1 -1
  42. package/dist/{ProductsScreen-CnywvrZt.mjs → ProductsScreen-DLysCJ9C.mjs} +3 -3
  43. package/dist/{ProductsScreen-BFsfS9XW.cjs → ProductsScreen-Y3MJJSeK.cjs} +3 -3
  44. package/dist/{ProductsScreen-CNnlXg_I.mjs → ProductsScreen-i6JTXwNY.mjs} +3 -3
  45. package/dist/{ProductsScreen-CNnlXg_I.mjs.map → ProductsScreen-i6JTXwNY.mjs.map} +1 -1
  46. package/dist/{ProfileScreen-D5_7MMej.cjs → ProfileScreen-BGOd1zyN.cjs} +3 -3
  47. package/dist/{ProfileScreen-D5_7MMej.cjs.map → ProfileScreen-BGOd1zyN.cjs.map} +1 -1
  48. package/dist/{ProfileScreen-8nnWzPcP.mjs → ProfileScreen-CFSEMg7L.mjs} +3 -3
  49. package/dist/{ProfileScreen-B6SwwR14.cjs → ProfileScreen-DARnojGI.cjs} +3 -3
  50. package/dist/{ProfileScreen-D4x5J95V.mjs → ProfileScreen-DOGhmpk-.mjs} +3 -3
  51. package/dist/{ProfileScreen-D4x5J95V.mjs.map → ProfileScreen-DOGhmpk-.mjs.map} +1 -1
  52. package/dist/{ShareablesScreen-CH9044d8.cjs → ShareablesScreen-C0OVGZ07.cjs} +3 -3
  53. package/dist/{ShareablesScreen-CH9044d8.cjs.map → ShareablesScreen-C0OVGZ07.cjs.map} +1 -1
  54. package/dist/{ShareablesScreen-vrbI04Hy.cjs → ShareablesScreen-CbcwPnLx.cjs} +3 -3
  55. package/dist/{ShareablesScreen-2smGe_qj.mjs → ShareablesScreen-Clf0Z7vk.mjs} +3 -3
  56. package/dist/{ShareablesScreen-DfGkgR72.mjs → ShareablesScreen-i1KpJcwV.mjs} +3 -3
  57. package/dist/{ShareablesScreen-DfGkgR72.mjs.map → ShareablesScreen-i1KpJcwV.mjs.map} +1 -1
  58. package/dist/{ShopScreen-DwtVHSml.mjs → ShopScreen-1HiWn8Hg.mjs} +4 -4
  59. package/dist/{ShopScreen-DwtVHSml.mjs.map → ShopScreen-1HiWn8Hg.mjs.map} +1 -1
  60. package/dist/{ShopScreen-CrbD5rZR.cjs → ShopScreen-ClGySVDF.cjs} +4 -4
  61. package/dist/{ShopScreen-CrbD5rZR.cjs.map → ShopScreen-ClGySVDF.cjs.map} +1 -1
  62. package/dist/{ShopScreen-CHvoeAxg.cjs → ShopScreen-DE1qzYW6.cjs} +3 -3
  63. package/dist/{ShopScreen-CJY1sx1J.mjs → ShopScreen-Kq0LKtBN.mjs} +3 -3
  64. package/dist/{SubscriptionsScreen-BmtUMKkL.mjs → SubscriptionsScreen-4DRQtr5m.mjs} +3 -3
  65. package/dist/{SubscriptionsScreen-vcSqCDso.cjs → SubscriptionsScreen-CPicMEVG.cjs} +3 -3
  66. package/dist/{SubscriptionsScreen-vcSqCDso.cjs.map → SubscriptionsScreen-CPicMEVG.cjs.map} +1 -1
  67. package/dist/{SubscriptionsScreen-BMVXP9cv.cjs → SubscriptionsScreen-CluHNO3J.cjs} +3 -3
  68. package/dist/{SubscriptionsScreen-5NaNwpQ1.mjs → SubscriptionsScreen-D-pb9t7Z.mjs} +3 -3
  69. package/dist/{SubscriptionsScreen-5NaNwpQ1.mjs.map → SubscriptionsScreen-D-pb9t7Z.mjs.map} +1 -1
  70. package/dist/index.cjs +35 -35
  71. package/dist/index.d.cts +2 -0
  72. package/dist/index.d.cts.map +1 -1
  73. package/dist/index.d.mts +2 -0
  74. package/dist/index.d.mts.map +1 -1
  75. package/dist/index.mjs +35 -35
  76. package/dist/{use-account-clients-yghkzBH9.mjs → use-account-clients-BNdnotPF.mjs} +2 -2
  77. package/dist/{use-account-clients-yghkzBH9.mjs.map → use-account-clients-BNdnotPF.mjs.map} +1 -1
  78. package/dist/{use-account-clients-vZftsKdf.cjs → use-account-clients-BcfCVnN1.cjs} +2 -2
  79. package/dist/{use-account-clients-vZftsKdf.cjs.map → use-account-clients-BcfCVnN1.cjs.map} +1 -1
  80. package/dist/{use-current-user-D_gOoHWA.mjs → use-current-user-BR36V_-x.mjs} +3 -3
  81. package/dist/{use-current-user-D_gOoHWA.mjs.map → use-current-user-BR36V_-x.mjs.map} +1 -1
  82. package/dist/{use-current-user-437rXIp0.cjs → use-current-user-C5ye4E_t.cjs} +3 -3
  83. package/dist/{use-current-user-437rXIp0.cjs.map → use-current-user-C5ye4E_t.cjs.map} +1 -1
  84. package/dist/{use-customer-account-BRdjIAmX.cjs → use-customer-account-BUcZbQG8.cjs} +3 -3
  85. package/dist/{use-customer-account-BRdjIAmX.cjs.map → use-customer-account-BUcZbQG8.cjs.map} +1 -1
  86. package/dist/{use-customer-account-CgmmbLJd.mjs → use-customer-account-CBRukk1K.mjs} +3 -3
  87. package/dist/{use-customer-account-CgmmbLJd.mjs.map → use-customer-account-CBRukk1K.mjs.map} +1 -1
  88. package/dist/{use-fluid-api-BA3oc4fz.mjs → use-fluid-api-ByXKmAb3.mjs} +2 -2
  89. package/dist/{use-fluid-api-BA3oc4fz.mjs.map → use-fluid-api-ByXKmAb3.mjs.map} +1 -1
  90. package/dist/{use-fluid-api-varGfwt1.cjs → use-fluid-api-Cp5NpYvl.cjs} +2 -2
  91. package/dist/{use-fluid-api-varGfwt1.cjs.map → use-fluid-api-Cp5NpYvl.cjs.map} +1 -1
  92. package/package.json +15 -15
  93. package/dist/LinkWidget-CUHpx9wn.mjs.map +0 -1
  94. package/dist/LinkWidget-CtcSfgWD.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  require("./chunk-DAgNkxik.cjs");
2
- const require_FluidProvider = require("./FluidProvider-DDcsxdbL.cjs");
3
- const require_use_account_clients = require("./use-account-clients-vZftsKdf.cjs");
2
+ const require_FluidProvider = require("./FluidProvider-BcMVqXGW.cjs");
3
+ const require_use_account_clients = require("./use-account-clients-BcfCVnN1.cjs");
4
4
  let _tanstack_react_query = require("@tanstack/react-query");
5
5
  //#region src/account/use-customer-account.ts
6
6
  function useCustomerAccount({ enabled = true } = {}) {
@@ -26,4 +26,4 @@ Object.defineProperty(exports, "useCustomerAccount", {
26
26
  }
27
27
  });
28
28
 
29
- //# sourceMappingURL=use-customer-account-BRdjIAmX.cjs.map
29
+ //# sourceMappingURL=use-customer-account-BUcZbQG8.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-customer-account-BRdjIAmX.cjs","names":["useFluidAuth","useFluidPayClient"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAASA,4BAAAA,cAAc;CACtC,MAAM,iBAAiBC,4BAAAA,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,SAAA,GAAA,sBAAA,UAAiB;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAA,sBAAA,qBAAiD,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
1
+ {"version":3,"file":"use-customer-account-BUcZbQG8.cjs","names":["useFluidAuth","useFluidPayClient"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAASA,4BAAAA,cAAc;CACtC,MAAM,iBAAiBC,4BAAAA,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,SAAA,GAAA,sBAAA,UAAiB;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAA,sBAAA,qBAAiD,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
@@ -1,5 +1,5 @@
1
- import { W as fetchCustomerAccount } from "./FluidProvider-uMkUIfAA.mjs";
2
- import { n as useFluidPayClient, o as useFluidAuth } from "./use-account-clients-yghkzBH9.mjs";
1
+ import { W as fetchCustomerAccount } from "./FluidProvider-NsdWcsos.mjs";
2
+ import { n as useFluidPayClient, o as useFluidAuth } from "./use-account-clients-BNdnotPF.mjs";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  //#region src/account/use-customer-account.ts
5
5
  function useCustomerAccount({ enabled = true } = {}) {
@@ -20,4 +20,4 @@ function useCustomerAccount({ enabled = true } = {}) {
20
20
  //#endregion
21
21
  export { useCustomerAccount as t };
22
22
 
23
- //# sourceMappingURL=use-customer-account-CgmmbLJd.mjs.map
23
+ //# sourceMappingURL=use-customer-account-CBRukk1K.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-customer-account-CgmmbLJd.mjs","names":["customersApi.fetchCustomerAccount"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAAS,cAAc;CACtC,MAAM,iBAAiB,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,QAAQ,SAAS;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAeA,qBAAkC,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
1
+ {"version":3,"file":"use-customer-account-CBRukk1K.mjs","names":["customersApi.fetchCustomerAccount"],"sources":["../src/account/use-customer-account.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { customersApi } from \"@fluid-app/fluid-pay-api-client\";\nimport { useFluidAuth } from \"../hooks/use-fluid-auth\";\nimport { useFluidPayClient } from \"./use-account-clients\";\n\nexport function useCustomerAccount({\n enabled = true,\n}: { enabled?: boolean } = {}) {\n const { token, user } = useFluidAuth();\n const fluidPayClient = useFluidPayClient();\n const jwt = token ?? \"\";\n\n const query = useQuery({\n queryKey: [\"fluidPayAccount\", user?.id],\n queryFn: () => customersApi.fetchCustomerAccount(fluidPayClient, jwt),\n enabled: !!jwt && enabled,\n });\n\n return {\n customerId: query.data?.customer?.id,\n isLoadingCustomer: query.isLoading,\n isCustomerError: query.isError,\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,mBAAmB,EACjC,UAAU,SACe,EAAE,EAAE;CAC7B,MAAM,EAAE,OAAO,SAAS,cAAc;CACtC,MAAM,iBAAiB,mBAAmB;CAC1C,MAAM,MAAM,SAAS;CAErB,MAAM,QAAQ,SAAS;EACrB,UAAU,CAAC,mBAAmB,MAAM,GAAG;EACvC,eAAeA,qBAAkC,gBAAgB,IAAI;EACrE,SAAS,CAAC,CAAC,OAAO;EACnB,CAAC;AAEF,QAAO;EACL,YAAY,MAAM,MAAM,UAAU;EAClC,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACxB"}
@@ -1,4 +1,4 @@
1
- import { n as useFluidContext } from "./FluidProvider-uMkUIfAA.mjs";
1
+ import { n as useFluidContext } from "./FluidProvider-NsdWcsos.mjs";
2
2
  //#region src/hooks/use-fluid-api.ts
3
3
  /**
4
4
  * Hook to access the Fluid API client
@@ -24,4 +24,4 @@ function useFluidApi() {
24
24
  //#endregion
25
25
  export { useFluidApi as t };
26
26
 
27
- //# sourceMappingURL=use-fluid-api-BA3oc4fz.mjs.map
27
+ //# sourceMappingURL=use-fluid-api-ByXKmAb3.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-fluid-api-BA3oc4fz.mjs","names":[],"sources":["../src/hooks/use-fluid-api.ts"],"sourcesContent":["import { useFluidContext } from \"../providers/FluidProvider\";\nimport type { FluidClient } from \"../client/fluid-client\";\n\n/**\n * Hook to access the Fluid API client\n *\n * @example\n * ```tsx\n * function ProductList() {\n * const api = useFluidApi();\n *\n * const { data: products } = useQuery({\n * queryKey: [\"products\"],\n * queryFn: () => api.products.list(),\n * });\n *\n * return <ul>{products?.map(p => <li key={p.id}>{p.name}</li>)}</ul>;\n * }\n * ```\n */\nexport function useFluidApi(): FluidClient {\n const { client } = useFluidContext();\n return client;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,cAA2B;CACzC,MAAM,EAAE,WAAW,iBAAiB;AACpC,QAAO"}
1
+ {"version":3,"file":"use-fluid-api-ByXKmAb3.mjs","names":[],"sources":["../src/hooks/use-fluid-api.ts"],"sourcesContent":["import { useFluidContext } from \"../providers/FluidProvider\";\nimport type { FluidClient } from \"../client/fluid-client\";\n\n/**\n * Hook to access the Fluid API client\n *\n * @example\n * ```tsx\n * function ProductList() {\n * const api = useFluidApi();\n *\n * const { data: products } = useQuery({\n * queryKey: [\"products\"],\n * queryFn: () => api.products.list(),\n * });\n *\n * return <ul>{products?.map(p => <li key={p.id}>{p.name}</li>)}</ul>;\n * }\n * ```\n */\nexport function useFluidApi(): FluidClient {\n const { client } = useFluidContext();\n return client;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,cAA2B;CACzC,MAAM,EAAE,WAAW,iBAAiB;AACpC,QAAO"}
@@ -1,4 +1,4 @@
1
- const require_FluidProvider = require("./FluidProvider-DDcsxdbL.cjs");
1
+ const require_FluidProvider = require("./FluidProvider-BcMVqXGW.cjs");
2
2
  //#region src/hooks/use-fluid-api.ts
3
3
  /**
4
4
  * Hook to access the Fluid API client
@@ -29,4 +29,4 @@ Object.defineProperty(exports, "useFluidApi", {
29
29
  }
30
30
  });
31
31
 
32
- //# sourceMappingURL=use-fluid-api-varGfwt1.cjs.map
32
+ //# sourceMappingURL=use-fluid-api-Cp5NpYvl.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-fluid-api-varGfwt1.cjs","names":["useFluidContext"],"sources":["../src/hooks/use-fluid-api.ts"],"sourcesContent":["import { useFluidContext } from \"../providers/FluidProvider\";\nimport type { FluidClient } from \"../client/fluid-client\";\n\n/**\n * Hook to access the Fluid API client\n *\n * @example\n * ```tsx\n * function ProductList() {\n * const api = useFluidApi();\n *\n * const { data: products } = useQuery({\n * queryKey: [\"products\"],\n * queryFn: () => api.products.list(),\n * });\n *\n * return <ul>{products?.map(p => <li key={p.id}>{p.name}</li>)}</ul>;\n * }\n * ```\n */\nexport function useFluidApi(): FluidClient {\n const { client } = useFluidContext();\n return client;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,cAA2B;CACzC,MAAM,EAAE,WAAWA,sBAAAA,iBAAiB;AACpC,QAAO"}
1
+ {"version":3,"file":"use-fluid-api-Cp5NpYvl.cjs","names":["useFluidContext"],"sources":["../src/hooks/use-fluid-api.ts"],"sourcesContent":["import { useFluidContext } from \"../providers/FluidProvider\";\nimport type { FluidClient } from \"../client/fluid-client\";\n\n/**\n * Hook to access the Fluid API client\n *\n * @example\n * ```tsx\n * function ProductList() {\n * const api = useFluidApi();\n *\n * const { data: products } = useQuery({\n * queryKey: [\"products\"],\n * queryFn: () => api.products.list(),\n * });\n *\n * return <ul>{products?.map(p => <li key={p.id}>{p.name}</li>)}</ul>;\n * }\n * ```\n */\nexport function useFluidApi(): FluidClient {\n const { client } = useFluidContext();\n return client;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAoBA,SAAgB,cAA2B;CACzC,MAAM,EAAE,WAAWA,sBAAAA,iBAAiB;AACpC,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluid-app/portal-sdk",
3
- "version": "0.1.57",
3
+ "version": "0.1.59",
4
4
  "description": "SDK for building custom Fluid portals",
5
5
  "files": [
6
6
  "dist",
@@ -62,43 +62,43 @@
62
62
  "tsdown": "^0.21.0",
63
63
  "typescript": "^5",
64
64
  "zod": "4.3.5",
65
- "@fluid-app/api-client-core": "0.1.0",
66
65
  "@fluid-app/auth": "0.1.0",
67
- "@fluid-app/company-switcher-core": "0.1.0",
66
+ "@fluid-app/api-client-core": "0.1.0",
68
67
  "@fluid-app/company-switcher-ui": "0.1.0",
68
+ "@fluid-app/company-switcher-core": "0.1.0",
69
69
  "@fluid-app/contacts-ui": "0.1.0",
70
- "@fluid-app/fluid-pay-api-client": "0.1.0",
71
70
  "@fluid-app/file-picker-api-client": "0.1.0",
72
- "@fluid-app/messaging-api-client": "0.1.0",
71
+ "@fluid-app/fluid-pay-api-client": "0.1.0",
73
72
  "@fluid-app/fluidos-api-client": "0.1.0",
73
+ "@fluid-app/messaging-api-client": "0.1.0",
74
74
  "@fluid-app/messaging-ui": "0.1.0",
75
- "@fluid-app/mysite-ui": "0.1.0",
76
75
  "@fluid-app/messaging-core": "0.1.0",
76
+ "@fluid-app/mysite-ui": "0.1.0",
77
77
  "@fluid-app/orders-api-client": "0.1.0",
78
78
  "@fluid-app/orders-core": "0.1.0",
79
- "@fluid-app/orders-ui": "0.1.0",
80
79
  "@fluid-app/permissions": "0.1.0",
80
+ "@fluid-app/orders-ui": "0.1.0",
81
81
  "@fluid-app/portal-core": "0.1.23",
82
- "@fluid-app/portal-pro-upgrade-ui": "0.1.0",
83
- "@fluid-app/portal-app-download-ui": "0.1.0",
84
82
  "@fluid-app/portal-preview": "0.1.0",
85
- "@fluid-app/portal-react": "0.1.0",
83
+ "@fluid-app/portal-app-download-ui": "0.1.0",
84
+ "@fluid-app/portal-pro-upgrade-ui": "0.1.0",
86
85
  "@fluid-app/portal-widgets": "0.1.22",
87
86
  "@fluid-app/products-api-client": "0.1.0",
87
+ "@fluid-app/portal-react": "0.1.0",
88
88
  "@fluid-app/products-core": "0.1.0",
89
- "@fluid-app/profile-core": "0.1.0",
90
89
  "@fluid-app/profile-ui": "0.1.0",
90
+ "@fluid-app/profile-core": "0.1.0",
91
91
  "@fluid-app/query-persister": "0.1.0",
92
- "@fluid-app/shareables-core": "0.1.0",
93
92
  "@fluid-app/shareables-api-client": "0.1.0",
94
- "@fluid-app/shareables-ui": "0.1.0",
95
- "@fluid-app/subscriptions-core": "0.1.0",
93
+ "@fluid-app/shareables-core": "0.1.0",
96
94
  "@fluid-app/shop-ui": "0.1.0",
97
95
  "@fluid-app/subscriptions-api-client": "0.1.0",
96
+ "@fluid-app/subscriptions-core": "0.1.0",
98
97
  "@fluid-app/subscriptions-ui": "0.1.0",
98
+ "@fluid-app/shareables-ui": "0.1.0",
99
+ "@fluid-app/typescript-config": "0.0.0",
99
100
  "@fluid-app/ui-primitives": "0.1.13",
100
101
  "@fluid-app/user-notes-api-client": "0.1.0",
101
- "@fluid-app/typescript-config": "0.0.0",
102
102
  "@fluid-app/user-tasks-api-client": "0.1.0",
103
103
  "@fluid-app/user-contacts-api-client": "0.1.0"
104
104
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkWidget-CUHpx9wn.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 +0,0 @@
1
- {"version":3,"file":"LinkWidget-CtcSfgWD.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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"}