@chaibuilder/sdk 4.0.0-beta.4 → 4.0.0-beta.40

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 (267) hide show
  1. package/README.md +72 -50
  2. package/dist/{2SSKDMRQ-CopJgtZb.cjs → 2SSKDMRQ-D-2rSLsq.cjs} +1 -1
  3. package/dist/{2SSKDMRQ-Difo_1pg.js → 2SSKDMRQ-DKit4bEt.js} +3 -3
  4. package/dist/{AP7HFJJL-BPuPBqj4.js → AP7HFJJL-BWruCozs.js} +1 -1
  5. package/dist/{AP7HFJJL-DYxDgaOs.cjs → AP7HFJJL-CAE2yHEv.cjs} +1 -1
  6. package/dist/{IconPicker-C0oycHbs.cjs → IconPicker-BCYCPK5M.cjs} +1 -1
  7. package/dist/{IconPicker-B2-oriq2.js → IconPicker-BOBnjfJc.js} +2 -2
  8. package/dist/STRINGS-BExFecZW.js +8 -0
  9. package/dist/STRINGS-FNnfjF5H.cjs +1 -0
  10. package/dist/{WDYDFRGG-DbejaRPK.cjs → WDYDFRGG-BNve1FlV.cjs} +1 -1
  11. package/dist/{WDYDFRGG-KK8pkcW1.js → WDYDFRGG-Bv40IVPG.js} +4 -4
  12. package/dist/{actions-registery-y_ENc8zj.js → actions-registery-CMKfEXxX.js} +3397 -3202
  13. package/dist/actions-registery-CqhNZFV3.cjs +481 -0
  14. package/dist/actions.cjs +1 -1
  15. package/dist/actions.d.ts +0 -158
  16. package/dist/actions.js +3 -3
  17. package/dist/{active-in-another-tab-Cu_ASKtx.cjs → active-in-another-tab-BPBvEwmD.cjs} +1 -1
  18. package/dist/{active-in-another-tab-DkR2HWI4.js → active-in-another-tab-C334yD2g.js} +5 -5
  19. package/dist/{add-new-language-page-BXuwluuU.cjs → add-new-language-page-BVME8b7v.cjs} +1 -1
  20. package/dist/{add-new-language-page-CBY0RR6q.js → add-new-language-page-DVL-HkWR.js} +4 -4
  21. package/dist/{add-new-page-C_PzKby8.cjs → add-new-page-BPysPck8.cjs} +1 -1
  22. package/dist/add-new-page-BQOsHkVl.js +31 -0
  23. package/dist/{ai-panel-content-rRmJdH7L.cjs → ai-panel-content-BsElc0Ke.cjs} +1 -1
  24. package/dist/{ai-panel-content--YM01Aly.js → ai-panel-content-BwX0YBGD.js} +6 -6
  25. package/dist/ai-panel-default-lang-BqhAu1iN.cjs +3 -0
  26. package/dist/ai-panel-default-lang-CYZuwSQn.js +317 -0
  27. package/dist/ai-panel-other-lang-CL83Mwha.js +132 -0
  28. package/dist/ai-panel-other-lang-CivH2s8Q.cjs +1 -0
  29. package/dist/{ai-prompt-input-N9PcYCFa.cjs → ai-prompt-input-BuP52voq.cjs} +1 -1
  30. package/dist/{ai-prompt-input-DueQYNf-.js → ai-prompt-input-C37B_jlE.js} +30 -34
  31. package/dist/{ai-translation-prompt-IAdWMNZb.cjs → ai-translation-prompt-CgZKlkF_.cjs} +1 -1
  32. package/dist/{ai-translation-prompt-B36F3d7K.js → ai-translation-prompt-V5PBEZRn.js} +2 -2
  33. package/dist/apply-binding-BuwI_Uf5.cjs +41 -0
  34. package/dist/apply-binding-RQRSIe56.js +942 -0
  35. package/dist/change-password-modal-AQU_GLqq.js +137 -0
  36. package/dist/change-password-modal-Chufk3yU.cjs +1 -0
  37. package/dist/{code-display-DloSPyPr.cjs → code-display-BR-gij5j.cjs} +1 -1
  38. package/dist/{code-display-Ck81Id9K.js → code-display-DdWcOQ_i.js} +1 -1
  39. package/dist/code-editor-D-fpas30.js +57 -0
  40. package/dist/code-editor-gqdLU-rU.cjs +1 -0
  41. package/dist/{continue-editing-in-this-client-DmGFLHXw.cjs → continue-editing-in-this-client-BNEnV0hi.cjs} +1 -1
  42. package/dist/{continue-editing-in-this-client-Dm9cCj7K.js → continue-editing-in-this-client-Dx3f64SH.js} +3 -3
  43. package/dist/core-czmLeR0h.cjs +1 -0
  44. package/dist/core-nSRy3D7z.js +54 -0
  45. package/dist/core.cjs +1 -1
  46. package/dist/core.d.ts +285 -103
  47. package/dist/core.js +71 -42
  48. package/dist/{css-import-modal-Rh1QAVxo.cjs → css-import-modal-B2NoLsdZ.cjs} +1 -1
  49. package/dist/{css-import-modal-9P_0uNa4.js → css-import-modal-c_6VH1js.js} +8 -8
  50. package/dist/default-theme-options-DN-3gIjM.cjs +22 -0
  51. package/dist/default-theme-options-saBIkWGT.js +248 -0
  52. package/dist/delete-page-B1R1w8O5.js +84 -0
  53. package/dist/delete-page-DbQDbCyB.cjs +1 -0
  54. package/dist/{design-token-usage-MNYsFlPG.js → design-token-usage-11kPk5n1.js} +26 -26
  55. package/dist/{design-token-usage-CXglXgcJ.cjs → design-token-usage-BBLfxzzo.cjs} +1 -1
  56. package/dist/digital-asset-manager-B0h5rUVQ.cjs +1 -0
  57. package/dist/{digital-asset-manager-CqCWBO0s.js → digital-asset-manager-BbEQ8cPb.js} +6 -6
  58. package/dist/{duplicate-page-BknLfqr0.js → duplicate-page-BY_Pcqbb.js} +7 -7
  59. package/dist/{duplicate-page-DzZByALW.cjs → duplicate-page-BaAzKbiX.cjs} +1 -1
  60. package/dist/{dynamic-page-selector-WA007Sni.cjs → dynamic-page-selector-DzH_gCQ4.cjs} +1 -1
  61. package/dist/{dynamic-page-selector-DoW7OyUB.js → dynamic-page-selector-bsaLGZkO.js} +16 -16
  62. package/dist/fonts/bungee/Bungee-Regular.woff2 +0 -0
  63. package/dist/fonts/dm_sans/dm-sans-variable.woff2 +0 -0
  64. package/dist/fonts/geist/Geist-VariableFont_wght.ttf +0 -0
  65. package/dist/fonts/geist/Geist-VariableFont_wght.woff2 +0 -0
  66. package/dist/fonts/geist/geist-variable.woff2 +0 -0
  67. package/dist/fonts/geist-mono/GeistMono-VariableFont_wght.woff2 +0 -0
  68. package/dist/fonts/inter/inter-latin.woff2 +0 -0
  69. package/dist/fonts/inter/inter-variable.woff2 +1449 -0
  70. package/dist/fonts/lato/lato-variable.woff2 +0 -0
  71. package/dist/fonts/lavishly_yours/lavishly-yours.woff2 +11 -0
  72. package/dist/fonts/merriweather/merriweather-variable.woff2 +11 -0
  73. package/dist/fonts/montserrat/montserrat-variable.woff2 +0 -0
  74. package/dist/fonts/nunito_sans/nunito-sans-variable.woff2 +11 -0
  75. package/dist/fonts/open_sans/open-sans-variable.woff2 +0 -0
  76. package/dist/fonts/oswald/oswald-variable.woff2 +0 -0
  77. package/dist/fonts/playfair_display/playfair-display-variable.woff2 +11 -0
  78. package/dist/fonts/poppins/poppins-variable.woff2 +0 -0
  79. package/dist/fonts/raleway/raleway-variable.woff2 +0 -0
  80. package/dist/fonts/roboto/roboto-variable.woff2 +11 -0
  81. package/dist/fonts/source_sans_3/source-sans-3-variable.woff2 +11 -0
  82. package/dist/fonts/ubuntu/ubuntu-variable.woff2 +0 -0
  83. package/dist/fonts-B3UYxuJI.js +25 -0
  84. package/dist/fonts-D5fTqvSS.cjs +1 -0
  85. package/dist/{get-chai-builder-tailwind-config-BFePCEIS.cjs → get-chai-builder-tailwind-config-7CxFxEYL.cjs} +1 -1
  86. package/dist/{get-chai-builder-tailwind-config-BXf_xLHk.js → get-chai-builder-tailwind-config-DC4sDOYK.js} +5 -5
  87. package/dist/get-chai-builder-theme-C_qofMh_.cjs +1 -0
  88. package/dist/{get-chai-builder-theme-DDVRJQ6Z.js → get-chai-builder-theme-CyOkIlte.js} +1 -1
  89. package/dist/{image-compression-DsZ1oqpb.js → image-compression-DPFITwOL.js} +2 -2
  90. package/dist/image-compression-UaU7Bwqe.cjs +1 -0
  91. package/dist/{image-editor-CqwaVxO2.cjs → image-editor-Cfn290vp.cjs} +1 -1
  92. package/dist/{image-editor-CQnNtak2.js → image-editor-CyGqVNvX.js} +1 -1
  93. package/dist/index-BpVxZOd-.js +5082 -0
  94. package/dist/index-CQf0jL1k.cjs +5 -0
  95. package/dist/{index-rAcNbjk_.js → index-DpeytsiB.js} +6145 -6091
  96. package/dist/index-P-2SvZA9.cjs +160 -0
  97. package/dist/{json-diff-viewer-CLuUHiPU.cjs → json-diff-viewer-BBERGXdt.cjs} +7 -7
  98. package/dist/{json-diff-viewer-CMvGUvJ2.js → json-diff-viewer-C-bpInzt.js} +87 -85
  99. package/dist/{lang-panel-CnwTb05j.js → lang-panel-4Q_PTmKm.js} +26 -26
  100. package/dist/lang-panel-uI149Beq.cjs +1 -0
  101. package/dist/library-blocks/bento/agency-showcase/agency-showcase.html +175 -0
  102. package/dist/library-blocks/bento/agency-showcase/agency-showcase.webp +0 -0
  103. package/dist/library-blocks/bento/creative-portfolio/creative-portfolio.html +116 -0
  104. package/dist/library-blocks/bento/creative-portfolio/creative-portfolio.webp +0 -0
  105. package/dist/library-blocks/bento/product-features/product-features.html +159 -0
  106. package/dist/library-blocks/bento/product-features/product-features.webp +0 -0
  107. package/dist/library-blocks/bento/saas-dashboard/saas-dashboard.html +182 -0
  108. package/dist/library-blocks/bento/saas-dashboard/saas-dashboard.webp +0 -0
  109. package/dist/library-blocks/bento/startup-metrics/startup-metrics.html +170 -0
  110. package/dist/library-blocks/bento/startup-metrics/startup-metrics.webp +0 -0
  111. package/dist/library-blocks/blocks-list.json +149 -0
  112. package/dist/library-blocks/feature/agency-services/agency-services.html +194 -0
  113. package/dist/library-blocks/feature/agency-services/agency-services.webp +0 -0
  114. package/dist/library-blocks/feature/consulting-firm/consulting-firm.html +219 -0
  115. package/dist/library-blocks/feature/consulting-firm/consulting-firm.webp +0 -0
  116. package/dist/library-blocks/feature/design-studio/design-studio.html +190 -0
  117. package/dist/library-blocks/feature/design-studio/design-studio.webp +0 -0
  118. package/dist/library-blocks/feature/freelancer-toolkit/freelancer-toolkit.html +195 -0
  119. package/dist/library-blocks/feature/freelancer-toolkit/freelancer-toolkit.webp +0 -0
  120. package/dist/library-blocks/feature/marketing-agency/marketing-agency.html +212 -0
  121. package/dist/library-blocks/feature/marketing-agency/marketing-agency.webp +0 -0
  122. package/dist/library-blocks/footer/creative-agency/creative-agency.html +64 -0
  123. package/dist/library-blocks/footer/creative-agency/creative-agency.webp +0 -0
  124. package/dist/library-blocks/footer/minimal-portfolio/minimal-portfolio.html +106 -0
  125. package/dist/library-blocks/footer/minimal-portfolio/minimal-portfolio.webp +0 -0
  126. package/dist/library-blocks/footer/saas-startup/saas-startup.html +117 -0
  127. package/dist/library-blocks/footer/saas-startup/saas-startup.webp +0 -0
  128. package/dist/library-blocks/hero/creative-agency/creative-agency.html +117 -0
  129. package/dist/library-blocks/hero/creative-agency/creative-agency.webp +0 -0
  130. package/dist/library-blocks/hero/developer-focused/developer-focused.html +124 -0
  131. package/dist/library-blocks/hero/developer-focused/developer-focused.webp +0 -0
  132. package/dist/library-blocks/hero/minimal-saas/minimal-saas.html +98 -0
  133. package/dist/library-blocks/hero/minimal-saas/minimal-saas.webp +0 -0
  134. package/dist/library-blocks/hero/portfolio-showcase/portfolio-showcase.html +148 -0
  135. package/dist/library-blocks/hero/portfolio-showcase/portfolio-showcase.webp +0 -0
  136. package/dist/library-blocks/hero/startup-landing/startup-landing.html +130 -0
  137. package/dist/library-blocks/hero/startup-landing/startup-landing.webp +0 -0
  138. package/dist/library-blocks/navbar/creative-agency/creative-agency.html +139 -0
  139. package/dist/library-blocks/navbar/creative-agency/creative-agency.webp +0 -0
  140. package/dist/library-blocks/navbar/minimal-portfolio/minimal-portfolio.html +164 -0
  141. package/dist/library-blocks/navbar/minimal-portfolio/minimal-portfolio.webp +0 -0
  142. package/dist/library-blocks/navbar/saas-startup/saas-startup.html +129 -0
  143. package/dist/library-blocks/navbar/saas-startup/saas-startup.webp +0 -0
  144. package/dist/manage-design-tokens-B_-TrQgu.cjs +1 -0
  145. package/dist/manage-design-tokens-CHpHE-dx.js +446 -0
  146. package/dist/manage-design-tokens-modal-Bug5H8PT.cjs +1 -0
  147. package/dist/manage-design-tokens-modal-DO_tHkgp.js +161 -0
  148. package/dist/{mark-as-template-CpWEBJGd.cjs → mark-as-template-BEnMYTql.cjs} +1 -1
  149. package/dist/{mark-as-template-DBLshWb5.js → mark-as-template-Ca3QLzX4.js} +11 -11
  150. package/dist/{nested-path-selector-content-6OBJ8LG8.js → nested-path-selector-content-5gECLoRV.js} +2 -2
  151. package/dist/{nested-path-selector-content-C2sD9dkq.cjs → nested-path-selector-content-BHPOfftZ.cjs} +1 -1
  152. package/dist/{no-language-page-content-CzENgtnu.js → no-language-page-content-Bb3nUSLv.js} +9 -9
  153. package/dist/{no-language-page-content-BvPDdccK.cjs → no-language-page-content-CKxggLC_.cjs} +1 -1
  154. package/dist/{no-language-page-dialog-CbYI2cVg.js → no-language-page-dialog-BEVRCAhM.js} +2 -2
  155. package/dist/{no-language-page-dialog-CgW4yJBC.cjs → no-language-page-dialog-DMb5Z5on.cjs} +1 -1
  156. package/dist/page-creator-C_95U8kn.cjs +1 -0
  157. package/dist/{page-creator-Cc83uQqw.js → page-creator-DQRFXhNj.js} +143 -143
  158. package/dist/{page-lock-BJUkyxdh.js → page-lock-Be5wPHz5.js} +2 -2
  159. package/dist/{page-lock-CT7SmQqp.cjs → page-lock-DKWt66MX.cjs} +1 -1
  160. package/dist/page-locked-dialog-CWyZol0i.cjs +1 -0
  161. package/dist/{page-locked-dialog-DsEbWRed.js → page-locked-dialog-CkXpQUpO.js} +22 -22
  162. package/dist/page-manager-new-2gYNPR6y.js +408 -0
  163. package/dist/page-manager-new-Bt7rBO1J.cjs +1 -0
  164. package/dist/{page-manager-search-and-filter-zq-LfhQ1.js → page-manager-search-and-filter-BotSCoAo.js} +30 -29
  165. package/dist/{page-manager-search-and-filter-Bfm0j1gg.cjs → page-manager-search-and-filter-Dkwl089C.cjs} +1 -1
  166. package/dist/{page-revisions-content-D38G2tJM.js → page-revisions-content-OigWteYc.js} +133 -122
  167. package/dist/page-revisions-content-bQ32feXp.cjs +1 -0
  168. package/dist/pages.cjs +1 -1
  169. package/dist/pages.d.ts +330 -96
  170. package/dist/pages.js +23 -19
  171. package/dist/{publish-pages-content-CS7f41Ac.js → publish-pages-content-2RcG3Ptp.js} +39 -39
  172. package/dist/publish-pages-content-Dtkal6ue.cjs +1 -0
  173. package/dist/{register-chai-top-bar-ESJHs5s-.js → register-chai-top-bar-D6GjnauV.js} +87 -87
  174. package/dist/register-chai-top-bar-DyW9GPzV.cjs +1 -0
  175. package/dist/render.cjs +2 -2
  176. package/dist/render.d.ts +20 -18
  177. package/dist/render.js +133 -132
  178. package/dist/{rte-widget-modal-BKNx2wln.cjs → rte-widget-modal-CHxO3TQR.cjs} +1 -1
  179. package/dist/{rte-widget-modal-D6Zik0Ta.js → rte-widget-modal-DmQk0Lfj.js} +10 -10
  180. package/dist/runtime-client.cjs +1 -0
  181. package/dist/runtime-client.d.ts +158 -0
  182. package/dist/runtime-client.js +32 -0
  183. package/dist/runtime.cjs +11 -1
  184. package/dist/runtime.d.ts +153 -270
  185. package/dist/runtime.js +107 -71
  186. package/dist/save-to-lib-BSsuvkZS.cjs +1 -0
  187. package/dist/{save-to-lib-WwOzbgiF.js → save-to-lib-CVqlFkRK.js} +153 -147
  188. package/dist/sdk.css +1 -1
  189. package/dist/{selected-block-display-BOgnQRLF.cjs → selected-block-display-Cr7R1ojV.cjs} +1 -1
  190. package/dist/{selected-block-display-B1SG_UXw.js → selected-block-display-DngI-pF1.js} +12 -12
  191. package/dist/seo-panel-BMYdzcoJ.cjs +2 -0
  192. package/dist/{seo-panel-BkOgRoWd.js → seo-panel-CHkFLI5b.js} +27 -27
  193. package/dist/{shared-json-ld-uka9TOgA.js → shared-json-ld-BzjOUN-P.js} +88 -88
  194. package/dist/shared-json-ld-ClIZw1aA.cjs +1 -0
  195. package/dist/{slug-input-DHLmUNrH.js → slug-input-07EKw9U5.js} +8 -8
  196. package/dist/{slug-input-Cyd6NR6J.cjs → slug-input-DHVDl_Dv.cjs} +1 -1
  197. package/dist/supabase-actions.cjs +1 -1
  198. package/dist/supabase-actions.d.ts +45 -0
  199. package/dist/supabase-actions.js +380 -275
  200. package/dist/take-over-request-BLdOZhUs.cjs +1 -0
  201. package/dist/{take-over-request-Ca0X-qyf.js → take-over-request-zqtItFSK.js} +13 -13
  202. package/dist/{translation-warning-modal-pSZVKcNW.cjs → translation-warning-modal-BxV_8mCE.cjs} +1 -1
  203. package/dist/{translation-warning-modal-DrpFeI83.js → translation-warning-modal-DnSd7lOJ.js} +9 -9
  204. package/dist/types.cjs +1 -0
  205. package/dist/types.d.ts +756 -0
  206. package/dist/types.js +1 -0
  207. package/dist/{unmark-as-template-DF1Ms4VN.cjs → unmark-as-template-C4UkGyOP.cjs} +1 -1
  208. package/dist/{unmark-as-template-BMqgelv-.js → unmark-as-template-DIKZYr01.js} +11 -11
  209. package/dist/unpublish-page-CK0sAZcB.js +28 -0
  210. package/dist/{unpublish-page-Bsq2yEqQ.cjs → unpublish-page-DFXLzJbc.cjs} +1 -1
  211. package/dist/unpublished-partials-modal-BAr1SkEG.cjs +1 -0
  212. package/dist/unpublished-partials-modal-CDaOvXgp.js +52 -0
  213. package/dist/utils.cjs +1 -1
  214. package/dist/utils.d.ts +6 -6
  215. package/dist/utils.js +2 -2
  216. package/dist/web-blocks.cjs +1 -1
  217. package/dist/web-blocks.js +360 -351
  218. package/dist/{web-preview-D6h1L2nV.js → web-preview-CRSjh2he.js} +2 -2
  219. package/dist/{web-preview-kres0aG7.cjs → web-preview-DA7_F3vv.cjs} +1 -1
  220. package/package.json +34 -35
  221. package/dist/actions-registery-JdxhXhT6.cjs +0 -418
  222. package/dist/add-new-page-DJLJFLAd.js +0 -31
  223. package/dist/ai-panel-default-lang-BZl0tPYo.js +0 -341
  224. package/dist/ai-panel-default-lang-D2zhXvKP.cjs +0 -3
  225. package/dist/ai-panel-other-lang-Bfjk2CYZ.js +0 -162
  226. package/dist/ai-panel-other-lang-Y4bEKHoG.cjs +0 -1
  227. package/dist/apply-binding-BvWfJCSZ.js +0 -841
  228. package/dist/apply-binding-IsUf6UWJ.cjs +0 -1
  229. package/dist/code-editor-Bb7JumZy.js +0 -51
  230. package/dist/code-editor-DQB8lAOk.cjs +0 -1
  231. package/dist/core-Dr7QYemB.js +0 -56
  232. package/dist/core-Y0lXLwkq.cjs +0 -1
  233. package/dist/delete-design-token-BG8yHcS5.cjs +0 -1
  234. package/dist/delete-design-token-COvR4G1S.js +0 -40
  235. package/dist/delete-page-CNucxe4P.js +0 -71
  236. package/dist/delete-page-DAvEjHwF.cjs +0 -1
  237. package/dist/digital-asset-manager-CB5MRBcW.cjs +0 -1
  238. package/dist/fonts/GeistMonoVF.woff +0 -0
  239. package/dist/fonts/GeistVF.woff +0 -0
  240. package/dist/fonts-B-Xt29pe.cjs +0 -1
  241. package/dist/fonts-DRly3Wzd.js +0 -78
  242. package/dist/get-chai-builder-theme-BApShjRz.cjs +0 -1
  243. package/dist/image-compression-DZ9WMmyn.cjs +0 -1
  244. package/dist/index-B-rSiAp_.cjs +0 -1
  245. package/dist/index-C0-pgg_p.cjs +0 -5
  246. package/dist/index-C99FhuF1.cjs +0 -160
  247. package/dist/index-Dno42B0a.js +0 -4734
  248. package/dist/index-Dxfyt4d4.js +0 -39
  249. package/dist/lang-panel-fDCYm5Jm.cjs +0 -1
  250. package/dist/manage-design-tokens-BsSZE9Vs.js +0 -241
  251. package/dist/manage-design-tokens-BvH5KTJX.cjs +0 -1
  252. package/dist/page-creator-g8GqgcKH.cjs +0 -1
  253. package/dist/page-locked-dialog-Co5b9XIZ.cjs +0 -1
  254. package/dist/page-manager-new-5rFP5DyQ.js +0 -395
  255. package/dist/page-manager-new-BOkJImo2.cjs +0 -1
  256. package/dist/page-revisions-content-ag-MHBGr.cjs +0 -1
  257. package/dist/plugin-BGlQf0iy.cjs +0 -22
  258. package/dist/plugin-C-ht41UZ.js +0 -245
  259. package/dist/publish-pages-content-BiX-GMLw.cjs +0 -1
  260. package/dist/register-chai-top-bar-BqwKw4uy.cjs +0 -1
  261. package/dist/save-to-lib-ffjCZYJ5.cjs +0 -1
  262. package/dist/seo-panel-FjS1UF_y.cjs +0 -2
  263. package/dist/shared-json-ld-yJkXjENy.cjs +0 -1
  264. package/dist/take-over-request-CmpJVe9T.cjs +0 -1
  265. package/dist/theme-panel-footer-BUXIu252.js +0 -26
  266. package/dist/theme-panel-footer-CKO9YYwZ.cjs +0 -1
  267. package/dist/unpublish-page-BJ0Bsvt2.js +0 -28
@@ -1,19 +1,19 @@
1
1
  import { jsxs as n, jsx as t, Fragment as $ } from "react/jsx-runtime";
2
- import { B as L } from "./register-chai-top-bar-ESJHs5s-.js";
3
- import { d as K, e as Q, f as J, p as V, q as W } from "./index-rAcNbjk_.js";
4
- import { ar as X, as as Y, A as I, aA as O, aB as Z, k as ee, m as te, ap as se, T as U, t as le } from "./index-Dno42B0a.js";
5
- import { LanguageSelector as ae } from "./page-manager-search-and-filter-zq-LfhQ1.js";
2
+ import { B as L } from "./register-chai-top-bar-D6GjnauV.js";
3
+ import { e as K, f as Q, g as J, o as V, q as W } from "./index-DpeytsiB.js";
4
+ import { ap as X, aq as Y, A as I, az as O, aA as Z, i as ee, k as te, an as se, T as U, aB as le } from "./index-BpVxZOd-.js";
5
+ import { LanguageSelector as ae } from "./page-manager-search-and-filter-BotSCoAo.js";
6
6
  import { useQuery as ne } from "@tanstack/react-query";
7
7
  import { find as B, filter as a, map as b, keys as re, get as F, includes as C, orderBy as N, isEmpty as oe, uniq as G, first as ce, concat as ie } from "lodash-es";
8
- import { Lock as de, GlobeIcon as ue, File as me, Edit as he } from "lucide-react";
9
- import { useState as D, useCallback as pe, useMemo as g, useEffect as j, startTransition as q } from "react";
10
- const ge = () => {
8
+ import { Lock as de, GlobeIcon as ue, File as he, Edit as me } from "lucide-react";
9
+ import { useState as q, useCallback as ge, useMemo as p, useEffect as D, startTransition as j } from "react";
10
+ const pe = () => {
11
11
  const s = X(), d = Y();
12
12
  return ne({
13
13
  queryKey: [I.GET_CHANGES],
14
14
  queryFn: async () => d(s, { action: I.GET_CHANGES })
15
15
  });
16
- }, fe = ({ page: s, selectedPages: d, handleCheckboxChange: k, getPageType: f, hasSlug: m, currentOwnerId: r }) => {
16
+ }, fe = ({ page: s, selectedPages: d, handleCheckboxChange: k, getPageType: f, hasSlug: h, currentOwnerId: r }) => {
17
17
  const u = O(), { data: i } = se(r), o = r === u ? null : i == null ? void 0 : i.name;
18
18
  return /* @__PURE__ */ n("tr", { className: "group relative border-b last:border-b-0 hover:bg-gray-50", children: [
19
19
  /* @__PURE__ */ n(
@@ -34,7 +34,7 @@ const ge = () => {
34
34
  }
35
35
  ),
36
36
  " ",
37
- m(s.pageType) ? /* @__PURE__ */ t(me, { className: "h-4 w-4" }) : /* @__PURE__ */ t(ue, { className: "h-4 w-4" }),
37
+ h(s.pageType) ? /* @__PURE__ */ t(he, { className: "h-4 w-4" }) : /* @__PURE__ */ t(ue, { className: "h-4 w-4" }),
38
38
  /* @__PURE__ */ t(U, { content: s.name, side: "top", showTooltip: s.name.length > 25, children: /* @__PURE__ */ t("span", { className: "max-w-[200px] truncate font-medium text-black", children: s.name }) }),
39
39
  s.slug && /* @__PURE__ */ t(U, { content: s.slug, side: "top", showTooltip: s.slug.length > 25, children: /* @__PURE__ */ t("span", { className: "max-w-[200px] truncate font-mono text-xs text-muted-foreground", children: s.slug }) })
40
40
  ]
@@ -43,7 +43,7 @@ const ge = () => {
43
43
  /* @__PURE__ */ t("td", { className: "px-2", children: f(s == null ? void 0 : s.pageType) }),
44
44
  /* @__PURE__ */ t("td", { className: "px-4 text-right", children: ce(s.changes) || "" }),
45
45
  /* @__PURE__ */ t($, { children: o && /* @__PURE__ */ n("button", { className: "absolute right-0 top-0 flex h-full items-center gap-x-1 rounded bg-red-50 px-2 py-0.5 text-xs font-light text-red-500 opacity-0 group-hover:opacity-100", children: [
46
- /* @__PURE__ */ t(he, { size: 12, className: "stroke-[3]" }),
46
+ /* @__PURE__ */ t(me, { size: 12, className: "stroke-[3]" }),
47
47
  " ",
48
48
  /* @__PURE__ */ t("span", { className: "font-medium", children: o }),
49
49
  " is editing this page"
@@ -55,34 +55,34 @@ const ge = () => {
55
55
  isPending: d,
56
56
  publishPage: k
57
57
  }) => {
58
- const f = O(), { pageToUser: m } = Z(), [r, u] = D([]), i = ee(), [o, x] = D(i), { data: w, isFetching: v } = ge(), { data: h } = te(), T = pe((e) => {
58
+ const f = O(), { pageToUser: h } = Z(), [r, u] = q([]), i = ee(), [o, x] = q(i), { data: T, isFetching: v } = pe(), { data: g } = te(), w = ge((e) => {
59
59
  var l;
60
- return (l = B(h, { key: e })) == null ? void 0 : l.hasSlug;
61
- }, [h]), y = g(
62
- () => a(h, (e) => !T(e.key)).map((e) => e.key),
63
- [T, h]
64
- ), E = G(b(w, "lang")).filter(Boolean), c = g(
65
- () => a(w, (e) => e.pageType === "theme" ? !1 : o === i ? e.lang === o || e.lang === "" : e.lang === o),
66
- [w, o, i]
67
- ), S = g(
60
+ return (l = B(g, { key: e })) == null ? void 0 : l.hasSlug;
61
+ }, [g]), y = p(
62
+ () => a(g, (e) => !w(e.key)).map((e) => e.key),
63
+ [w, g]
64
+ ), E = G(b(T, "lang")).filter(Boolean), c = p(
65
+ () => a(T, (e) => e.pageType === "theme" || e.pageType === "design_tokens" ? !1 : o === i ? e.lang === o || e.lang === "" : e.lang === o),
66
+ [T, o, i]
67
+ ), S = p(
68
68
  () => a(c, (e) => !y.includes(e.pageType)),
69
69
  [c, y]
70
- ), P = g(
70
+ ), P = p(
71
71
  () => a(c, (e) => y.includes(e.pageType)),
72
72
  [c, y]
73
73
  );
74
- j(() => {
74
+ D(() => {
75
75
  const e = b(a(c, { online: !0 }), "id");
76
- q(() => u(e));
77
- }, [c]), j(() => {
78
- const e = a(re(m), (l) => F(m, [l, "userId"]) !== f);
79
- q(() => u((l) => a(l, (p) => !C(e, p))));
80
- }, [m, f]);
81
- const A = r.length === (c == null ? void 0 : c.length), H = (e) => {
82
- u((l) => C(l, e) ? a(l, (p) => p !== e) : ie(l, e));
76
+ j(() => u(e));
77
+ }, [c]), D(() => {
78
+ const e = a(re(h), (l) => F(h, [l, "userId"]) !== f);
79
+ j(() => u((l) => a(l, (m) => !C(e, m))));
80
+ }, [h, f]);
81
+ const A = r.length === (c == null ? void 0 : c.length), _ = (e) => {
82
+ u((l) => C(l, e) ? a(l, (m) => m !== e) : ie(l, e));
83
83
  }, z = () => {
84
84
  u(A ? [] : b(c, "id"));
85
- }, M = () => {
85
+ }, H = () => {
86
86
  k(
87
87
  { ids: G(r) },
88
88
  {
@@ -91,16 +91,16 @@ const ge = () => {
91
91
  }
92
92
  }
93
93
  );
94
- }, R = (e) => {
94
+ }, M = (e) => {
95
95
  if (e === "theme") return "Theme";
96
- const l = B(h, { key: e });
96
+ const l = B(g, { key: e });
97
97
  return l ? l == null ? void 0 : l.name : e;
98
- }, _ = g(() => {
98
+ }, R = p(() => {
99
99
  const e = [
100
100
  { label: "Updated", top: "pt-2" },
101
101
  ...N(a(S, { online: !0 }), "pageType"),
102
102
  ...N(a(P, { online: !0 }), "pageType")
103
- ].filter((p) => p.pageType !== "theme"), l = [
103
+ ].filter((m) => m.pageType !== "theme" && m.pageType !== "design_tokens"), l = [
104
104
  { label: "Offline", top: "pt-6" },
105
105
  ...N(a(S, { online: !1 }), "pageType"),
106
106
  ...N(a(P, { online: !1 }), "pageType")
@@ -145,7 +145,7 @@ const ge = () => {
145
145
  /* @__PURE__ */ t("th", { scope: "col", className: "w-[150px] px-4 py-3 text-right", children: "Status" })
146
146
  ] }) }),
147
147
  /* @__PURE__ */ t("tbody", { children: b(
148
- _,
148
+ R,
149
149
  (e) => e.label ? /* @__PURE__ */ t("tr", { children: /* @__PURE__ */ n("td", { colSpan: 3, className: `relative px-6 py-2 text-xs font-medium text-gray-800 ${e.top}`, children: [
150
150
  /* @__PURE__ */ t("div", { className: "absolute inset-0 left-6 flex items-center", children: /* @__PURE__ */ t("div", { className: "order-gray-300 w-full" }) }),
151
151
  /* @__PURE__ */ t("div", { className: "relative flex justify-start", children: /* @__PURE__ */ t("span", { className: "bg-gray-50 pr-2", children: e.label }) })
@@ -154,10 +154,10 @@ const ge = () => {
154
154
  {
155
155
  page: e,
156
156
  selectedPages: r,
157
- handleCheckboxChange: H,
158
- getPageType: R,
159
- hasSlug: T,
160
- currentOwnerId: F(m, [(e == null ? void 0 : e.primaryPage) || (e == null ? void 0 : e.id), "userId"])
157
+ handleCheckboxChange: _,
158
+ getPageType: M,
159
+ hasSlug: w,
160
+ currentOwnerId: F(h, [(e == null ? void 0 : e.primaryPage) || (e == null ? void 0 : e.id), "userId"])
161
161
  }
162
162
  )
163
163
  ) })
@@ -170,7 +170,7 @@ const ge = () => {
170
170
  " Selected"
171
171
  ] }),
172
172
  /* @__PURE__ */ t(L, { disabled: d, variant: "outline", onClick: s, children: "Cancel" }),
173
- /* @__PURE__ */ t(L, { disabled: d || v || oe(r), onClick: M, children: d ? "Publishing..." : "Publish Selected" })
173
+ /* @__PURE__ */ t(L, { disabled: d || v || oe(r), onClick: H, children: d ? "Publishing..." : "Publish Selected" })
174
174
  ] })
175
175
  ] });
176
176
  };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),q=require("./register-chai-top-bar-DyW9GPzV.cjs"),f=require("./index-P-2SvZA9.cjs"),r=require("./index-CQf0jL1k.cjs"),U=require("./page-manager-search-and-filter-Dkwl089C.cjs"),F=require("@tanstack/react-query"),t=require("lodash-es"),b=require("lucide-react"),a=require("react"),M=()=>{const l=r.useApiUrl(),u=r.useFetch();return F.useQuery({queryKey:[r.ACTIONS.GET_CHANGES],queryFn:async()=>u(l,{action:r.ACTIONS.GET_CHANGES})})},G=({page:l,selectedPages:u,handleCheckboxChange:N,getPageType:y,hasSlug:h,currentOwnerId:c})=>{const x=r.useUserId(),{data:d}=r.useChaiUserInfo(c),o=c===x?null:d==null?void 0:d.name;return e.jsxs("tr",{className:"group relative border-b last:border-b-0 hover:bg-gray-50",children:[e.jsxs("td",{scope:"row",className:`flex items-center gap-x-1 whitespace-nowrap px-6 py-2 text-gray-900 dark:text-white ${o?"opacity-50":""}`,children:[o?e.jsx(b.Lock,{className:"h-4 w-4 fill-red-200 text-red-500"}):e.jsx("input",{checked:t.includes(u,l==null?void 0:l.id),onClick:p=>{p.stopPropagation(),N(l==null?void 0:l.id)},type:"checkbox",className:"cursor-pointer rounded focus:outline-none focus:ring-0"})," ",h(l.pageType)?e.jsx(b.File,{className:"h-4 w-4"}):e.jsx(b.GlobeIcon,{className:"h-4 w-4"}),e.jsx(r.Tooltip,{content:l.name,side:"top",showTooltip:l.name.length>25,children:e.jsx("span",{className:"max-w-[200px] truncate font-medium text-black",children:l.name})}),l.slug&&e.jsx(r.Tooltip,{content:l.slug,side:"top",showTooltip:l.slug.length>25,children:e.jsx("span",{className:"max-w-[200px] truncate font-mono text-xs text-muted-foreground",children:l.slug})})]}),e.jsx("td",{className:"px-2",children:y(l==null?void 0:l.pageType)}),e.jsx("td",{className:"px-4 text-right",children:t.first(l.changes)||""}),e.jsx(e.Fragment,{children:o&&e.jsxs("button",{className:"absolute right-0 top-0 flex h-full items-center gap-x-1 rounded bg-red-50 px-2 py-0.5 text-xs font-light text-red-500 opacity-0 group-hover:opacity-100",children:[e.jsx(b.Edit,{size:12,className:"stroke-[3]"})," ",e.jsx("span",{className:"font-medium",children:o})," is editing this page"]})})]},l==null?void 0:l.id)},O=({onClose:l=()=>{},isPending:u,publishPage:N})=>{const y=r.useUserId(),{pageToUser:h}=r.usePageToUser(),[c,x]=a.useState([]),d=r.useFallbackLang(),[o,p]=a.useState(d),{data:T,isFetching:C}=M(),{data:g}=r.usePageTypes(),k=a.useCallback(s=>{var n;return(n=t.find(g,{key:s}))==null?void 0:n.hasSlug},[g]),j=a.useMemo(()=>t.filter(g,s=>!k(s.key)).map(s=>s.key),[k,g]),P=t.uniq(t.map(T,"lang")).filter(Boolean),i=a.useMemo(()=>t.filter(T,s=>s.pageType==="theme"||s.pageType==="design_tokens"?!1:o===d?s.lang===o||s.lang==="":s.lang===o),[T,o,d]),w=a.useMemo(()=>t.filter(i,s=>!j.includes(s.pageType)),[i,j]),S=a.useMemo(()=>t.filter(i,s=>j.includes(s.pageType)),[i,j]);a.useEffect(()=>{const s=t.map(t.filter(i,{online:!0}),"id");a.startTransition(()=>x(s))},[i]),a.useEffect(()=>{const s=t.filter(t.keys(h),n=>t.get(h,[n,"userId"])!==y);a.startTransition(()=>x(n=>t.filter(n,m=>!t.includes(s,m))))},[h,y]);const v=c.length===(i==null?void 0:i.length),E=s=>{x(n=>t.includes(n,s)?t.filter(n,m=>m!==s):t.concat(n,s))},B=()=>{x(v?[]:t.map(i,"id"))},I=()=>{N({ids:t.uniq(c)},{onSuccess:()=>{l(),r.throwConfetti("CENTER_CENTER"),p(d)}})},A=s=>{if(s==="theme")return"Theme";const n=t.find(g,{key:s});return n?n==null?void 0:n.name:s},L=a.useMemo(()=>{const s=[{label:"Updated",top:"pt-2"},...t.orderBy(t.filter(w,{online:!0}),"pageType"),...t.orderBy(t.filter(S,{online:!0}),"pageType")].filter(m=>m.pageType!=="theme"&&m.pageType!=="design_tokens"),n=[{label:"Offline",top:"pt-6"},...t.orderBy(t.filter(w,{online:!1}),"pageType"),...t.orderBy(t.filter(S,{online:!1}),"pageType")];return[...s,...n]},[w,S]);return e.jsxs(f.DialogContent,{className:"flex max-h-[80%] max-w-4xl flex-col",children:[e.jsxs(f.DialogHeader,{children:[e.jsx(f.DialogTitle,{children:"Publish changes"}),e.jsx(f.DialogDescription,{className:"text-xs",children:"Select the pages you want to publish. Click publish when you're done."})]}),P.length>0&&e.jsx("div",{className:"my-[2px] mt-0",children:e.jsx(U.LanguageSelector,{languages:[d,...P],selectedLanguage:o,setSelectedLanguage:p})}),e.jsx("div",{className:"no-scrollbar relative -mx-4 -mt-4 h-full max-h-full overflow-y-auto",children:C?e.jsxs("div",{className:"space-y-2 px-1",children:[e.jsx("div",{className:"mt-2 h-6 w-full animate-pulse rounded bg-gray-200"}),e.jsx("div",{className:"h-6 w-full animate-pulse rounded bg-gray-200"}),e.jsx("div",{className:"h-6 w-full animate-pulse rounded bg-gray-200"}),e.jsx("div",{className:"h-6 w-full animate-pulse rounded bg-gray-200"})]}):e.jsxs("table",{className:"w-full text-left text-xs text-gray-500 dark:text-gray-400 rtl:text-right",children:[e.jsx("thead",{className:"sticky top-0 z-10 border-b bg-gray-50 text-gray-700 dark:bg-gray-700 dark:text-gray-400",children:e.jsxs("tr",{children:[e.jsxs("th",{scope:"col",className:"w-[1 50px] flex items-center gap-x-2 px-6 py-3",children:[e.jsx("input",{checked:v,onClick:s=>{s.stopPropagation(),B()},type:"checkbox",className:"mt-1 cursor-pointer rounded focus:outline-none focus:ring-0"}),"Name"]}),e.jsx("th",{scope:"col",className:"w-[150px] px-2 py-3",children:"Type"}),e.jsx("th",{scope:"col",className:"w-[150px] px-4 py-3 text-right",children:"Status"})]})}),e.jsx("tbody",{children:t.map(L,s=>s.label?e.jsx("tr",{children:e.jsxs("td",{colSpan:3,className:`relative px-6 py-2 text-xs font-medium text-gray-800 ${s.top}`,children:[e.jsx("div",{className:"absolute inset-0 left-6 flex items-center",children:e.jsx("div",{className:"order-gray-300 w-full"})}),e.jsx("div",{className:"relative flex justify-start",children:e.jsx("span",{className:"bg-gray-50 pr-2",children:s.label})})]})},"separator"):e.jsx(G,{page:s,selectedPages:c,handleCheckboxChange:E,getPageType:A,hasSlug:k,currentOwnerId:t.get(h,[(s==null?void 0:s.primaryPage)||(s==null?void 0:s.id),"userId"])}))})]})}),e.jsxs(f.DialogFooter,{className:"mt-10 flex items-center justify-center",children:[c.length>0&&e.jsxs("span",{className:"text-center text-sm text-muted-foreground",children:[c.length," Page",c.length!==1?"s":""," Selected"]}),e.jsx(q.Button,{disabled:u,variant:"outline",onClick:l,children:"Cancel"}),e.jsx(q.Button,{disabled:u||C||t.isEmpty(c),onClick:I,children:u?"Publishing...":"Publish Selected"})]})]})};exports.default=O;
@@ -3,7 +3,7 @@ import * as o from "react";
3
3
  import { useMemo as i, useState as u } from "react";
4
4
  import { useAtom as R } from "jotai";
5
5
  import { atomWithStorage as U } from "jotai/utils";
6
- import { jsx as s, jsxs as g } from "react/jsx-runtime";
6
+ import { jsx as a, jsxs as g } from "react/jsx-runtime";
7
7
  import { cva as S } from "class-variance-authority";
8
8
  import { clsx as j } from "clsx";
9
9
  import { twMerge as H } from "tailwind-merge";
@@ -13,6 +13,56 @@ import { useTranslation as G } from "react-i18next";
13
13
  function l(...e) {
14
14
  return H(j(e));
15
15
  }
16
+ const _ = o.forwardRef(
17
+ ({ className: e, type: t, ...r }, s) => /* @__PURE__ */ a(
18
+ "input",
19
+ {
20
+ type: t,
21
+ className: l(
22
+ "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
23
+ e
24
+ ),
25
+ ref: s,
26
+ ...r
27
+ }
28
+ )
29
+ );
30
+ _.displayName = "Input";
31
+ const W = S(
32
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
33
+ {
34
+ variants: {
35
+ variant: {
36
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
37
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
38
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
39
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
40
+ ghost: "hover:bg-accent hover:text-accent-foreground",
41
+ link: "text-primary underline-offset-4 hover:underline"
42
+ },
43
+ size: {
44
+ default: "h-9 px-4 py-2",
45
+ sm: "h-8 rounded-md px-3 text-xs",
46
+ lg: "h-10 rounded-md px-8",
47
+ icon: "h-9 w-9"
48
+ }
49
+ },
50
+ defaultVariants: {
51
+ variant: "default",
52
+ size: "default"
53
+ }
54
+ }
55
+ ), C = o.forwardRef(
56
+ ({ className: e, variant: t, size: r, asChild: s = !1, ...n }, h) => /* @__PURE__ */ a(
57
+ s ? $ : "button",
58
+ {
59
+ className: l(W({ variant: t, size: r, className: e })),
60
+ ref: h,
61
+ ...n
62
+ }
63
+ )
64
+ );
65
+ C.displayName = "Button";
16
66
  const p = {}, de = (e, t) => {
17
67
  p[e] = {
18
68
  id: e,
@@ -36,7 +86,7 @@ const p = {}, de = (e, t) => {
36
86
  {}
37
87
  ), y = {}, me = (e, t) => {
38
88
  E(y, e) && console.warn(`Add block tab with id ${e} already registered`), N(y, e, { id: e, ...t });
39
- }, pe = () => i(() => w(y), []), f = {}, W = (e, t) => {
89
+ }, pe = () => i(() => w(y), []), f = {}, q = (e, t) => {
40
90
  if (f[e])
41
91
  throw new Error(`Flag ${e} already exists`);
42
92
  f[e] = { key: e, value: !1, ...t };
@@ -44,21 +94,21 @@ const p = {}, de = (e, t) => {
44
94
  Object.entries(e).forEach(([t, r]) => {
45
95
  if (f[t])
46
96
  throw new Error(`Flag ${t} already exists`);
47
- W(t, r);
97
+ q(t, r);
48
98
  });
49
- }, ve = () => f, _ = U("chai-feature-flags", []), q = (e) => {
50
- const [t] = R(_);
99
+ }, ve = () => f, B = U("chai-feature-flags", []), J = (e) => {
100
+ const [t] = R(B);
51
101
  return t.includes(e);
52
102
  }, be = (e) => {
53
- const [t, r] = R(_);
103
+ const [t, r] = R(B);
54
104
  return () => {
55
105
  t.includes(e) ? r(t.filter((n) => n !== e)) : r([...t, e]);
56
106
  };
57
- }, xe = ({ flagKey: e, children: t }) => q(e) ? t : null;
107
+ }, xe = ({ flagKey: e, children: t }) => J(e) ? t : null;
58
108
  let A = {};
59
- const ye = (e, t) => {
109
+ const Ce = (e, t) => {
60
110
  A[e] = { ...t, id: e };
61
- }, Ce = (e) => A[e], we = () => w(A), J = S(
111
+ }, ye = (e) => A[e], we = () => w(A), K = S(
62
112
  "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
63
113
  {
64
114
  variants: {
@@ -71,68 +121,18 @@ const ye = (e, t) => {
71
121
  variant: "default"
72
122
  }
73
123
  }
74
- ), B = o.forwardRef(({ className: e, variant: t, ...r }, a) => /* @__PURE__ */ s("div", { ref: a, role: "alert", className: l(J({ variant: t }), e), ...r }));
75
- B.displayName = "Alert";
76
- const K = o.forwardRef(
77
- ({ className: e, ...t }, r) => /* @__PURE__ */ s("h5", { ref: r, className: l("mb-1 font-medium leading-none tracking-tight", e), ...t })
124
+ ), L = o.forwardRef(({ className: e, variant: t, ...r }, s) => /* @__PURE__ */ a("div", { ref: s, role: "alert", className: l(K({ variant: t }), e), ...r }));
125
+ L.displayName = "Alert";
126
+ const X = o.forwardRef(
127
+ ({ className: e, ...t }, r) => /* @__PURE__ */ a("h5", { ref: r, className: l("mb-1 font-medium leading-none tracking-tight", e), ...t })
78
128
  );
79
- K.displayName = "AlertTitle";
80
- const L = o.forwardRef(
81
- ({ className: e, ...t }, r) => /* @__PURE__ */ s("div", { ref: r, className: l("text-sm [&_p]:leading-relaxed", e), ...t })
82
- );
83
- L.displayName = "AlertDescription";
84
- const X = S(
85
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
86
- {
87
- variants: {
88
- variant: {
89
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
90
- destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
91
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
92
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
93
- ghost: "hover:bg-accent hover:text-accent-foreground",
94
- link: "text-primary underline-offset-4 hover:underline"
95
- },
96
- size: {
97
- default: "h-9 px-4 py-2",
98
- sm: "h-8 rounded-md px-3 text-xs",
99
- lg: "h-10 rounded-md px-8",
100
- icon: "h-9 w-9"
101
- }
102
- },
103
- defaultVariants: {
104
- variant: "default",
105
- size: "default"
106
- }
107
- }
108
- ), C = o.forwardRef(
109
- ({ className: e, variant: t, size: r, asChild: a = !1, ...n }, h) => /* @__PURE__ */ s(
110
- a ? $ : "button",
111
- {
112
- className: l(X({ variant: t, size: r, className: e })),
113
- ref: h,
114
- ...n
115
- }
116
- )
117
- );
118
- C.displayName = "Button";
129
+ X.displayName = "AlertTitle";
119
130
  const I = o.forwardRef(
120
- ({ className: e, type: t, ...r }, a) => /* @__PURE__ */ s(
121
- "input",
122
- {
123
- type: t,
124
- className: l(
125
- "flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
126
- e
127
- ),
128
- ref: a,
129
- ...r
130
- }
131
- )
131
+ ({ className: e, ...t }, r) => /* @__PURE__ */ a("div", { ref: r, className: l("text-sm [&_p]:leading-relaxed", e), ...t })
132
132
  );
133
- I.displayName = "Input";
133
+ I.displayName = "AlertDescription";
134
134
  const Y = ({ close: e, onSelect: t, mode: r = "image" }) => {
135
- const [a, n] = u(""), [h, v] = u(!1), [P, b] = u(!1), [F, c] = u(null), D = async (x) => {
135
+ const [s, n] = u(""), [h, v] = u(!1), [P, b] = u(!1), [F, c] = u(null), D = async (x) => {
136
136
  if (!x.trim()) {
137
137
  b(!1), c("Please enter a URL");
138
138
  return;
@@ -146,27 +146,27 @@ const Y = ({ close: e, onSelect: t, mode: r = "image" }) => {
146
146
  }
147
147
  }, { t: d } = G();
148
148
  return /* @__PURE__ */ g("div", { className: "flex w-96 flex-col gap-4 p-4", children: [
149
- /* @__PURE__ */ s("h2", { className: "text-xl font-semibold", children: d(`${r.charAt(0).toUpperCase() + r.slice(1)} Manager`) }),
150
- F && /* @__PURE__ */ g(B, { variant: "destructive", children: [
151
- /* @__PURE__ */ s(z, { className: "h-4 w-4" }),
152
- /* @__PURE__ */ s(L, { children: F })
149
+ /* @__PURE__ */ a("h2", { className: "text-xl font-semibold", children: d(`${r.charAt(0).toUpperCase() + r.slice(1)} Manager`) }),
150
+ F && /* @__PURE__ */ g(L, { variant: "destructive", children: [
151
+ /* @__PURE__ */ a(z, { className: "h-4 w-4" }),
152
+ /* @__PURE__ */ a(I, { children: F })
153
153
  ] }),
154
154
  /* @__PURE__ */ g("div", { className: "flex flex-col gap-4", children: [
155
- /* @__PURE__ */ s(
156
- I,
155
+ /* @__PURE__ */ a(
156
+ _,
157
157
  {
158
158
  placeholder: d(`Enter ${r} URL`),
159
- value: a,
159
+ value: s,
160
160
  onChange: (x) => n(x.target.value),
161
- onKeyUp: () => D(a)
161
+ onKeyUp: () => D(s)
162
162
  }
163
163
  ),
164
164
  /* @__PURE__ */ g("div", { className: "flex justify-end gap-2", children: [
165
- /* @__PURE__ */ s(C, { variant: "outline", onClick: e, children: d("Cancel") }),
166
- /* @__PURE__ */ s(
165
+ /* @__PURE__ */ a(C, { variant: "outline", onClick: e, children: d("Cancel") }),
166
+ /* @__PURE__ */ a(
167
167
  C,
168
168
  {
169
- onClick: () => t({ id: "dam-id", url: a, width: 600, height: 400, description: "This is image description" }),
169
+ onClick: () => t({ id: "dam-id", url: s, width: 600, height: 400, description: "This is image description" }),
170
170
  disabled: !P || h,
171
171
  children: d("Insert")
172
172
  }
@@ -193,7 +193,7 @@ const Ne = (e) => {
193
193
  }, Be = (e) => i(
194
194
  () => V(w(m), (t) => t.position === e),
195
195
  [e, m]
196
- ), Q = () => /* @__PURE__ */ s("div", {}), O = {
196
+ ), Q = () => /* @__PURE__ */ a("div", {}), O = {
197
197
  component: Q
198
198
  }, Le = (e) => {
199
199
  O.component = e;
@@ -202,23 +202,23 @@ export {
202
202
  y as A,
203
203
  C as B,
204
204
  m as C,
205
- B as D,
205
+ L as D,
206
206
  l as E,
207
- L as F,
208
- X as G,
207
+ I as F,
208
+ W as G,
209
209
  xe as I,
210
210
  p as R,
211
211
  ue as a,
212
212
  ge as b,
213
213
  me as c,
214
214
  pe as d,
215
- W as e,
215
+ q as e,
216
216
  he as f,
217
217
  ve as g,
218
- q as h,
218
+ J as h,
219
219
  be as i,
220
- ye as j,
221
- Ce as k,
220
+ Ce as j,
221
+ ye as k,
222
222
  we as l,
223
223
  Ae as m,
224
224
  Te as n,
@@ -233,5 +233,5 @@ export {
233
233
  Be as w,
234
234
  Le as x,
235
235
  Ie as y,
236
- I as z
236
+ _ as z
237
237
  };
@@ -0,0 +1 @@
1
+ "use strict";const i=require("lodash-es"),n=require("react"),B=require("jotai"),P=require("jotai/utils"),a=require("react/jsx-runtime"),L=require("class-variance-authority"),D=require("clsx"),q=require("tailwind-merge"),H=require("@radix-ui/react-slot"),V=require("@radix-ui/react-icons"),U=require("react-i18next");function $(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const u=$(n);function o(...e){return q.twMerge(D.clsx(e))}const y=u.forwardRef(({className:e,type:t,...r},s)=>a.jsx("input",{type:t,className:o("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",e),ref:s,...r}));y.displayName="Input";const M=L.cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),p=u.forwardRef(({className:e,variant:t,size:r,asChild:s=!1,...l},b)=>{const g=s?H.Slot:"button";return a.jsx(g,{className:o(M({variant:t,size:r,className:e})),ref:b,...l})});p.displayName="Button";const d={},z=(e,t)=>{d[e]={id:e,component:t,type:"widget"}},G=(e,t)=>{d[e]={id:e,component:t,type:"field"}},W=(e,t)=>{d[e]={id:e,component:t,type:"template"}},J=e=>Object.values(d).filter(t=>t.type===e).reduce((t,r)=>(t[r.id]=r.component,t),{}),m={},K=(e,t)=>{i.has(m,e)&&console.warn(`Add block tab with id ${e} already registered`),i.set(m,e,{id:e,...t})},X=()=>n.useMemo(()=>i.values(m),[]),v={},_=(e,t)=>{if(v[e])throw new Error(`Flag ${e} already exists`);v[e]={key:e,value:!1,...t}},Y=e=>{Object.entries(e).forEach(([t,r])=>{if(v[t])throw new Error(`Flag ${t} already exists`);_(t,r)})},Q=()=>v,j=P.atomWithStorage("chai-feature-flags",[]),E=e=>{const[t]=B.useAtom(j);return t.includes(e)},Z=e=>{const[t,r]=B.useAtom(j);return()=>{t.includes(e)?r(t.filter(l=>l!==e)):r([...t,e])}},ee=({flagKey:e,children:t})=>E(e)?t:null;let S={};const te=(e,t)=>{S[e]={...t,id:e}},re=e=>S[e],ae=()=>i.values(S),se=L.cva("relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"}},defaultVariants:{variant:"default"}}),T=u.forwardRef(({className:e,variant:t,...r},s)=>a.jsx("div",{ref:s,role:"alert",className:o(se({variant:t}),e),...r}));T.displayName="Alert";const ne=u.forwardRef(({className:e,...t},r)=>a.jsx("h5",{ref:r,className:o("mb-1 font-medium leading-none tracking-tight",e),...t}));ne.displayName="AlertTitle";const A=u.forwardRef(({className:e,...t},r)=>a.jsx("div",{ref:r,className:o("text-sm [&_p]:leading-relaxed",e),...t}));A.displayName="AlertDescription";const ie=({close:e,onSelect:t,mode:r="image"})=>{const[s,l]=n.useState(""),[b,g]=n.useState(!1),[k,C]=n.useState(!1),[w,f]=n.useState(null),O=async x=>{if(!x.trim()){C(!1),f("Please enter a URL");return}try{g(!0),f(null),C(!0),f(null)}catch{C(!1),f("Error validating URL")}finally{g(!1)}},{t:h}=U.useTranslation();return a.jsxs("div",{className:"flex w-96 flex-col gap-4 p-4",children:[a.jsx("h2",{className:"text-xl font-semibold",children:h(`${r.charAt(0).toUpperCase()+r.slice(1)} Manager`)}),w&&a.jsxs(T,{variant:"destructive",children:[a.jsx(V.ExclamationTriangleIcon,{className:"h-4 w-4"}),a.jsx(A,{children:w})]}),a.jsxs("div",{className:"flex flex-col gap-4",children:[a.jsx(y,{placeholder:h(`Enter ${r} URL`),value:s,onChange:x=>l(x.target.value),onKeyUp:()=>O(s)}),a.jsxs("div",{className:"flex justify-end gap-2",children:[a.jsx(p,{variant:"outline",onClick:e,children:h("Cancel")}),a.jsx(p,{onClick:()=>t({id:"dam-id",url:s,width:600,height:400,description:"This is image description"}),disabled:!k||b,children:h("Insert")})]})]})]})},I={component:ie},oe=e=>{I.component=e},le=()=>n.useMemo(()=>I.component,[]);let N=async e=>e;const ce=e=>{N=e},ue=async e=>await N(e);let F=null;const de=e=>{F=e},ge=()=>n.useMemo(()=>F,[]),fe=()=>{F=null},c={},he=(e,t)=>{i.has(c,e)&&console.warn(`Panel ${e} already registered. Overriding...`),i.set(c,e,{id:e,...t})},pe=e=>n.useMemo(()=>i.filter(i.values(c),t=>t.position===e),[e,c]),me=()=>a.jsx("div",{}),R={component:me},ve=e=>{R.component=e},be=()=>n.useMemo(()=>R.component,[]);exports.ADD_BLOCK_TABS=m;exports.Alert=T;exports.AlertDescription=A;exports.Button=p;exports.CHAI_BUILDER_PANELS=c;exports.IfChaiFeatureFlag=ee;exports.Input=y;exports.RJSF_EXTENSIONS=d;exports.buttonVariants=M;exports.cn=o;exports.getChaiLibrary=re;exports.getPreImportHTML=ue;exports.registerChaiAddBlockTab=K;exports.registerChaiBlockSettingField=G;exports.registerChaiBlockSettingTemplate=W;exports.registerChaiBlockSettingWidget=z;exports.registerChaiFeatureFlag=_;exports.registerChaiFeatureFlags=Y;exports.registerChaiLibrary=te;exports.registerChaiMediaManager=oe;exports.registerChaiPreImportHTMLHook=ce;exports.registerChaiSaveToLibrary=de;exports.registerChaiSidebarPanel=he;exports.registerChaiTopBar=ve;exports.resetSaveToLibrary=fe;exports.useChaiAddBlockTabs=X;exports.useChaiBlockSettingComponents=J;exports.useChaiFeatureFlag=E;exports.useChaiFeatureFlags=Q;exports.useChaiLibraries=ae;exports.useChaiSidebarPanels=pe;exports.useMediaManagerComponent=le;exports.useSaveToLibraryComponent=ge;exports.useToggleChaiFeatureFlag=Z;exports.useTopBarComponent=be;
package/dist/render.cjs CHANGED
@@ -1,3 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("./plugin-BGlQf0iy.cjs"),d=require("./apply-binding-IsUf6UWJ.cjs"),m=require("react/jsx-runtime"),t=require("lodash-es"),g=require("react"),b=require("./core-Y0lXLwkq.cjs"),F=require("@mhsdesign/jit-browser-tailwindcss"),j=require("@tailwindcss/aspect-ratio"),q=require("@tailwindcss/container-queries"),K=require("@tailwindcss/forms"),M=require("@tailwindcss/typography"),L=require("./get-chai-builder-theme-BApShjRz.cjs");async function O(e){const a={pageProps:e.pageProps,block:e.block,lang:e.lang,draft:e.draft,inBuilder:!1},n=await e.dataProvider(a);return t.has(n,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,n.$metadata),e.children({...t.omit(n,"$metadata")})}const N=()=>m.jsx("div",{}),H=e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:l,blocks:o,draft:r,pageProps:c,dataProviderMetadataCallback:f}=e,u=b.getRegisteredChaiBlock(a._type),p=t.get(u,"component",null),_=t.get(e.repeaterData,"index",-1),k=t.get(e.repeaterData,"dataKey",""),w=n===s?"":n??"",y=d.applyBindingToBlockProps(d.applyLanguage(a,w,u),l??{},{index:_,key:k}),h=d.getBlockTagAttributes(a,!1),I=D(o,a._id,d.getBlockRuntimeProps(a._type)),T=t.has(u,"dataProvider")&&t.isFunction(u.dataProvider),B={...y,...h,...I},P={blockProps:{},inBuilder:!1,lang:n||s||"en",draft:r??!1,pageData:l??{},...B},v=t.get(B,"_show",!0);if(t.isNull(p)||!v)return null;if(T){const S=t.get(u,"suspenseFallback",N);return m.jsx(g.Suspense,{fallback:g.createElement(S),children:m.jsx(O,{lang:n??"",pageProps:c,block:B,dataProvider:u.dataProvider,...f?{dataProviderMetadataCallback:f}:{},draft:r??!1,children:$=>g.createElement(p,{...P,...$,children:i({_id:a._id,_type:a._type,...t.isArray(y.repeaterItems)?{repeaterItems:d.applyLimit(y.repeaterItems,a),$repeaterItemsKey:y.$repeaterItemsKey,repeaterTotalItems:y.repeaterTotalItems??-1}:{}})})})})}return m.jsx(g.Suspense,{children:g.createElement(p,{...P,children:i({_id:a._id,_type:a._type,...t.isArray(y.repeaterItems)?{repeaterItems:d.applyLimit(y.repeaterItems,a),$repeaterItemsKey:y.$repeaterItemsKey,repeaterTotalItems:y.repeaterTotalItems??-1}:{}})})})},x=e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let l=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const o=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link"||i==="Span")&&(l=d.adjustSpacingInContentBlocks(l)),t.map(l,r=>r?g.createElement(H,{...e,key:r._id,block:r},({_id:c,_type:f,repeaterItems:u,$repeaterItemsKey:p})=>f==="Repeater"?t.isArray(u)&&u.map((_,k)=>g.createElement(x,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${k}`,repeaterData:{index:k,dataKey:p}})):o(c)?g.createElement(x,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)},D=(e,a,n)=>t.isEmpty(n)?{}:Object.entries(n).reduce((s,[i,l])=>{const o=[];let r=t.find(e,{_id:a});for(;r;)o.push(r),r=t.find(e,{_id:r._parent});const c=t.find(o,{_type:l.block});return c&&(s[i]=t.get(c,t.get(l,"prop"),null)),s},{});function J(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;return m.jsx(x,{...e,lang:a,fallbackLang:n})}async function V(e){const a=await e.dataProvider;return t.has(a,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,a.$metadata),e.children({...t.omit(a,"$metadata")})}const W=()=>m.jsx("div",{}),U=async e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:l,blocks:o,draft:r,pageProps:c,dataProviderMetadataCallback:f,dataProviders:u}=e,p=b.getRegisteredChaiBlock(a._type),_=t.get(p,"component",null),k=t.get(e.repeaterData,"index",-1),w=t.get(e.repeaterData,"dataKey",""),y=n===s?"":n??"en",h=d.applyBindingToBlockProps(d.applyLanguage(a,y,p),l??{},{index:k,key:w}),I=d.getBlockTagAttributes(a,!1),T=D(o,a._id,d.getBlockRuntimeProps(a._type)),B=t.has(p,"dataProvider")&&t.isFunction(p.dataProvider),P={...h,...I,...T},v={blockProps:{},inBuilder:!1,lang:n||s||"en",draft:r??!1,pageData:l??{},...P},S=t.get(P,"_show",!0);if(t.isNull(_)||!S)return null;if(B){const $=t.get(u,a._id,Promise.resolve({})),R=t.get(p,"suspenseFallback",W);return m.jsx(g.Suspense,{fallback:g.createElement(R),children:m.jsx(V,{lang:n??"",pageProps:c,block:P,dataProvider:$,...f?{dataProviderMetadataCallback:f}:{},draft:r??!1,children:A=>g.createElement(_,{...v,...A,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})})}return g.createElement(_,{...v,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})},C=async e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let l=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const o=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(l=d.adjustSpacingInContentBlocks(l)),t.map(l,r=>r?g.createElement(U,{...e,dataProviders:e.dataProviders,key:r._id,block:r},({_id:c,_type:f,repeaterItems:u,$repeaterItemsKey:p})=>f==="Repeater"?t.isArray(u)&&u.map((_,k)=>g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${k}`,repeaterData:{index:k,dataKey:p}})):o(c)?g.createElement(C,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)};async function G(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;if(e.dataProviders)return m.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:e.dataProviders});const i=e.blocks.filter(l=>{const o=b.getRegisteredChaiBlock(l._type);return!!(t.has(o,"dataProvider")&&t.isFunction(o.dataProvider))}).reduce((l,o)=>{const r=b.getRegisteredChaiBlock(o._type);if(!r||!r.dataProvider)return l;const c={pageProps:e.pageProps,block:o,lang:e.lang,draft:e.draft,inBuilder:!1};return l[o._id]=r.dataProvider(c),l},{});return m.jsx(C,{...e,lang:a,fallbackLang:n,dataProviders:i})}function Q(e,a){const n=e.filter(s=>s._type==="GlobalBlock"||s._type==="PartialBlock");for(let s=0;s<n.length;s++){const i=n[s],l=t.get(i,"partialBlockId",t.get(i,"globalBlock",""));if(l==="")continue;let o=t.cloneDeep(t.get(a,l,[]));i._parent&&(o==null?void 0:o.length)>0&&(o=o.map(c=>(t.isEmpty(c._parent)&&(c._parent=i._parent),c)));const r=e.indexOf(i);e.splice(r,1,...o)}return e}const z=e=>{if(!e)return[];try{return JSON.parse(X(e)).filter(n=>!n._type.startsWith("@chai"))}catch{return[{_type:"Paragraph",_id:"error",content:"Invalid JSON. Please check the JSON string."}]}};function X(e){const a=/(asset:\/\/|https:\/\/asset\.localhost\/)(?:localhost\/)?[^"']+/g;return e.replace(a,n=>{const s=decodeURIComponent(n),i=s.indexOf("public");return i!==-1?s.substring(i+6):s})}async function Y(e,a=[],n=!1){return await F.createTailwindcss({tailwindConfig:{darkMode:"class",safelist:a,theme:{extend:{...L.getChaiBuilderTheme(),keyframes:{"accordion-down":{from:{height:"0"},to:{height:"var(--radix-accordion-content-height)"}},"accordion-up":{from:{height:"var(--radix-accordion-content-height)"},to:{height:"0"}}},animation:{"accordion-down":"accordion-down 0.2s ease-out","accordion-up":"accordion-up 0.2s ease-out"}}},plugins:[K,M,j,q,L.chaiBuilderPlugin],corePlugins:{preflight:n}}}).generateStylesFromContent(` ${n?"@tailwind base;":""}
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("./default-theme-options-DN-3gIjM.cjs"),d=require("./apply-binding-BuwI_Uf5.cjs"),m=require("react/jsx-runtime"),t=require("lodash-es"),g=require("react"),T=require("./core-czmLeR0h.cjs"),F=require("@mhsdesign/jit-browser-tailwindcss"),j=require("@tailwindcss/aspect-ratio"),q=require("@tailwindcss/container-queries"),K=require("@tailwindcss/forms"),M=require("@tailwindcss/typography"),x=require("./get-chai-builder-theme-C_qofMh_.cjs");async function O(e){const a={pageProps:e.pageProps,block:e.block,lang:e.lang,draft:e.draft,inBuilder:!1},n=await e.dataProvider(a);return t.has(n,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,n.$metadata),e.children({...t.omit(n,"$metadata")})}const N=()=>m.jsx("div",{}),H=e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:l,blocks:o,draft:r,pageProps:c,dataProviderMetadataCallback:f}=e,p=T.getRegisteredChaiBlock(a._type),u=t.get(p,"component",null),k=t.get(e.repeaterData,"index",-1),P=t.get(e.repeaterData,"dataKey",""),B=n===s?"":n??"",y=d.applyBindingToBlockProps(d.applyLanguage(a,B,p),l??{},{index:k,key:P}),h=d.getBlockTagAttributes(a,!1),$=D(o,a._id,d.getBlockRuntimeProps(a._type)),w=t.has(p,"dataProvider")&&t.isFunction(p.dataProvider),C={...y,...h,...$},v={blockProps:{},inBuilder:!1,lang:n||s||"en",draft:r??!1,pageData:l??{},...C};let _=t.get(C,"_show",!0);if(t.isString(_)&&_.startsWith("{{")&&(_=d.resolveBinding(_,l)!=="false"),t.isNull(u)||!_)return null;if(w){const b=t.get(p,"suspenseFallback",N);return m.jsx(g.Suspense,{fallback:g.createElement(b),children:m.jsx(O,{lang:n??"",pageProps:c,block:C,dataProvider:p.dataProvider,...f?{dataProviderMetadataCallback:f}:{},draft:r??!1,children:S=>g.createElement(u,{...v,...S,children:i({_id:a._id,_type:a._type,...t.isArray(y.repeaterItems)?{repeaterItems:d.applyLimit(y.repeaterItems,a),$repeaterItemsKey:y.$repeaterItemsKey,repeaterTotalItems:y.repeaterTotalItems??-1}:{}})})})})}return m.jsx(g.Suspense,{children:g.createElement(u,{...v,children:i({_id:a._id,_type:a._type,...t.isArray(y.repeaterItems)?{repeaterItems:d.applyLimit(y.repeaterItems,a),$repeaterItemsKey:y.$repeaterItemsKey,repeaterTotalItems:y.repeaterTotalItems??-1}:{}})})})},E=e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let l=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const o=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link"||i==="Span")&&(l=d.adjustSpacingInContentBlocks(l)),t.map(l,(r,c)=>r?g.createElement(H,{...e,key:r._id?`${r._id}-${c}`:`block-${c}`,block:r},({_id:f,_type:p,repeaterItems:u,$repeaterItemsKey:k})=>p==="Repeater"?t.isArray(u)&&u.map((P,B)=>g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${c}-${B}`,repeaterData:{index:B,dataKey:k}})):o(f)?g.createElement(E,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${c}`,repeaterData:s,type:r._type}):null):null)},D=(e,a,n)=>t.isEmpty(n)?{}:Object.entries(n).reduce((s,[i,l])=>{const o=[];let r=t.find(e,{_id:a});for(;r;)o.push(r),r=t.find(e,{_id:r._parent});const c=t.find(o,{_type:l.block});return c&&(s[i]=t.get(c,t.get(l,"prop"),null)),s},{});function J(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;return m.jsx(E,{...e,lang:a,fallbackLang:n})}async function W(e){const a=await e.dataProvider;return t.has(a,"$metadata")&&t.isFunction(e.dataProviderMetadataCallback)&&e.dataProviderMetadataCallback(e.block,a.$metadata),e.children({...t.omit(a,"$metadata")})}const V=()=>m.jsx("div",{}),U=async e=>{const{block:a,lang:n,fallbackLang:s,children:i,externalData:l,blocks:o,draft:r,pageProps:c,dataProviderMetadataCallback:f,dataProviders:p}=e,u=T.getRegisteredChaiBlock(a._type),k=t.get(u,"component",null),P=t.get(e.repeaterData,"index",-1),B=t.get(e.repeaterData,"dataKey",""),y=n===s?"":n??"en",h=d.applyBindingToBlockProps(d.applyLanguage(a,y,u),l??{},{index:P,key:B}),$=d.getBlockTagAttributes(a,!1),w=D(o,a._id,d.getBlockRuntimeProps(a._type)),C=t.has(u,"dataProvider")&&t.isFunction(u.dataProvider),v={...h,...$,...w},_={blockProps:{},inBuilder:!1,lang:n||s||"en",draft:r??!1,pageData:l??{},...v},b=t.get(v,"_show",!0);if(t.isNull(k)||!b)return null;if(C){const S=t.get(p,a._id,Promise.resolve({})),R=t.get(u,"suspenseFallback",V);return m.jsx(g.Suspense,{fallback:g.createElement(R),children:m.jsx(W,{lang:n??"",pageProps:c,block:v,dataProvider:S,...f?{dataProviderMetadataCallback:f}:{},draft:r??!1,children:A=>g.createElement(k,{..._,...A,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})})})}return g.createElement(k,{..._,children:i({_id:a._id,_type:a._type,...t.isArray(h.repeaterItems)?{repeaterItems:d.applyLimit(h.repeaterItems,a),$repeaterItemsKey:h.$repeaterItemsKey,repeaterTotalItems:h.repeaterTotalItems??-1}:{}})})},I=async e=>{const{blocks:a,parent:n,repeaterData:s,type:i}=e;let l=t.uniqBy(t.filter(a,r=>t.has(r,"_id")&&(t.isEmpty(n)?!r._parent:r._parent===n)),"_id");const o=r=>t.filter(a,c=>c._parent===r).length>0;return(i==="Heading"||i==="Paragraph"||i==="Link")&&(l=d.adjustSpacingInContentBlocks(l)),t.map(l,r=>r?g.createElement(U,{...e,dataProviders:e.dataProviders,key:r._id,block:r},({_id:c,_type:f,repeaterItems:p,$repeaterItemsKey:u})=>f==="Repeater"?t.isArray(p)&&p.map((k,P)=>g.createElement(I,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}-${P}`,repeaterData:{index:P,dataKey:u}})):o(c)?g.createElement(I,{...e,parent:r._id,key:`${t.get(r,"_parent","root")}-${r._id}`,repeaterData:s,type:r._type}):null):null)};async function G(e){if(t.isEmpty(e.lang)&&!t.isEmpty(e.fallbackLang))throw new Error("lang prop is required when fallbackLang is provided");if(t.isEmpty(e.blocks))return null;const a=e.lang??"en",n=e.fallbackLang??a;if(e.dataProviders)return m.jsx(I,{...e,lang:a,fallbackLang:n,dataProviders:e.dataProviders});const i=e.blocks.filter(l=>{const o=T.getRegisteredChaiBlock(l._type);return!!(t.has(o,"dataProvider")&&t.isFunction(o.dataProvider))}).reduce((l,o)=>{const r=T.getRegisteredChaiBlock(o._type);if(!r||!r.dataProvider)return l;const c={pageProps:e.pageProps,block:o,lang:e.lang,draft:e.draft,inBuilder:!1};return l[o._id]=Promise.resolve(r.dataProvider(c)),l},{});return m.jsx(I,{...e,lang:a,fallbackLang:n,dataProviders:i})}function Q(e,a){const n=e.filter(s=>s._type==="GlobalBlock"||s._type==="PartialBlock");for(let s=0;s<n.length;s++){const i=n[s],l=t.get(i,"partialBlockId",t.get(i,"globalBlock",""));if(l==="")continue;let o=t.cloneDeep(t.get(a,l,[]));i._parent&&(o==null?void 0:o.length)>0&&(o=o.map(c=>(t.isEmpty(c._parent)&&(c._parent=i._parent),c)));const r=e.indexOf(i);e.splice(r,1,...o)}return e}const z=e=>{if(!e)return[];try{return JSON.parse(X(e)).filter(n=>!n._type.startsWith("@chai"))}catch{return[{_type:"Paragraph",_id:"error",content:"Invalid JSON. Please check the JSON string."}]}};function X(e){const a=/(asset:\/\/|https:\/\/asset\.localhost\/)(?:localhost\/)?[^"']+/g;return e.replace(a,n=>{const s=decodeURIComponent(n),i=s.indexOf("public");return i!==-1?s.substring(i+6):s})}async function Y(e,a=[],n=!1){return await F.createTailwindcss({tailwindConfig:{darkMode:"class",safelist:a,theme:{extend:{...x.getChaiBuilderTheme(),keyframes:{"accordion-down":{from:{height:"0"},to:{height:"var(--radix-accordion-content-height)"}},"accordion-up":{from:{height:"var(--radix-accordion-content-height)"},to:{height:"0"}}},animation:{"accordion-down":"accordion-down 0.2s ease-out","accordion-up":"accordion-up 0.2s ease-out"}}},plugins:[K,M,j,q,x.chaiBuilderPlugin],corePlugins:{preflight:n}}}).generateStylesFromContent(` ${n?"@tailwind base;":""}
2
2
  @tailwind components;
3
- @tailwind utilities;`,e)}const Z=(e,a)=>{const n=JSON.stringify(e).replace(/#styles:([^"]*)/g,(s,i)=>`#styles:${i.replace(/,/g," ")}`.replace(/#styles:/g,""));return Y([n],[],a)},ee=async(e,a=!1)=>await Z(e,a);exports.getChaiThemeCssVariables=E.getChaiThemeCssVariables;exports.getThemeFontsCSSImport=E.getThemeFontsCSSImport;exports.getThemeFontsLinkMarkup=E.getThemeFontsLinkMarkup;exports.applyChaiDataBinding=d.applyChaiDataBinding;exports.applyDesignTokens=d.applyDesignTokens;exports.convertHTMLToChaiBlocks=d.getBlocksFromHTML;exports.AsyncRenderChaiBlocks=G;exports.RenderChaiBlocks=J;exports.convertToBlocks=z;exports.getMergedPartialBlocks=Q;exports.getStylesForBlocks=ee;
3
+ @tailwind utilities;`,e)}const Z=(e,a)=>{const n=JSON.stringify(e).replace(/#styles:([^"]*)/g,(s,i)=>`#styles:${i.replace(/^,/g," ")}`.replace(/#styles:/g,""));return Y([n],[],a)},ee=async(e,a=!1)=>await Z(e,a);exports.getChaiThemeCssVariables=L.getChaiThemeCssVariables;exports.getThemeFontsCSSImport=L.getThemeFontsCSSImport;exports.getThemeFontsLinkMarkup=L.getThemeFontsLinkMarkup;exports.applyChaiDataBinding=d.applyChaiDataBinding;exports.applyDesignTokens=d.applyDesignTokens;exports.convertHTMLToChaiBlocks=d.getBlocksFromHTML;exports.AsyncRenderChaiBlocks=G;exports.RenderChaiBlocks=J;exports.convertToBlocks=z;exports.getMergedPartialBlocks=Q;exports.getStylesForBlocks=ee;
package/dist/render.d.ts CHANGED
@@ -2,7 +2,7 @@ import { JSX } from 'react/jsx-runtime';
2
2
 
3
3
  export declare const applyChaiDataBinding: (block: Record<string, string>, pageExternalData: Record<string, any>) => Record<string, string>;
4
4
 
5
- export declare const applyDesignTokens: (blocks: ChaiBlock[], designTokens: DesignTokens) => ChaiBlock[];
5
+ export declare const applyDesignTokens: (blocks: ChaiBlock[], designTokens: ChaiDesignTokens) => ChaiBlock[];
6
6
 
7
7
  export declare function AsyncRenderChaiBlocks(props: RenderChaiBlocksProps): Promise<JSX.Element | null>;
8
8
 
@@ -10,23 +10,31 @@ declare type ChaiBlock<T = Record<string, any>> = {
10
10
  _id: string;
11
11
  _name?: string;
12
12
  _parent?: string | null | undefined;
13
- _type: string;
14
13
  _libBlock?: string;
14
+ _type: string;
15
+ partialBlockId?: string;
15
16
  } & T;
16
17
 
17
- declare type ChaiFontViaUrl = {
18
+ declare interface ChaiDesignTokens {
19
+ [uniqueId: string]: {
20
+ name: string;
21
+ value: string;
22
+ archived?: boolean;
23
+ };
24
+ }
25
+
26
+ declare type ChaiFontByUrl = {
18
27
  family: string;
19
28
  url: string;
20
29
  fallback: string;
21
30
  };
22
31
 
23
- declare interface ChaiPageProps {
32
+ declare type ChaiPageProps<T = Record<string, any>> = {
24
33
  slug: string;
25
34
  searchParams?: Record<string, string>;
26
- [key: string]: any;
27
- }
35
+ } & T;
28
36
 
29
- declare type ChaiThemeValues = {
37
+ declare type ChaiTheme = {
30
38
  fontFamily: {
31
39
  heading: string;
32
40
  body: string;
@@ -52,7 +60,6 @@ declare type ChaiThemeValues = {
52
60
  "card-foreground": [HexColor, HexColor];
53
61
  popover: [HexColor, HexColor];
54
62
  "popover-foreground": [HexColor, HexColor];
55
- [key: string]: [HexColor, HexColor];
56
63
  };
57
64
  };
58
65
 
@@ -69,14 +76,9 @@ export declare const convertHTMLToChaiBlocks: (html: string) => ChaiBlock[];
69
76
  */
70
77
  export declare const convertToBlocks: (chaiFormatContent: string) => ChaiBlock[];
71
78
 
72
- declare interface DesignTokens {
73
- [uniqueId: string]: {
74
- name: string;
75
- value: string;
76
- };
77
- }
78
-
79
- export declare const getChaiThemeCssVariables: (chaiTheme: ChaiThemeValues) => string;
79
+ export declare const getChaiThemeCssVariables: ({ theme }: {
80
+ theme: ChaiTheme;
81
+ }) => string;
80
82
 
81
83
  export declare function getMergedPartialBlocks(blocks: ChaiBlock[], partials: Record<string, ChaiBlock[]>): ChaiBlock[];
82
84
 
@@ -88,9 +90,9 @@ export declare function getMergedPartialBlocks(blocks: ChaiBlock[], partials: Re
88
90
  */
89
91
  export declare const getStylesForBlocks: (blocks: ChaiBlock[], includeBaseStyles?: boolean) => Promise<string>;
90
92
 
91
- export declare const getThemeFontsCSSImport: (fonts: ChaiFontViaUrl[]) => string;
93
+ export declare const getThemeFontsCSSImport: (fonts: ChaiFontByUrl[]) => string;
92
94
 
93
- export declare const getThemeFontsLinkMarkup: (fonts: ChaiFontViaUrl[]) => string;
95
+ export declare const getThemeFontsLinkMarkup: (fonts: ChaiFontByUrl[]) => string;
94
96
 
95
97
  declare type HexColor = string;
96
98