@shapio/cms 0.5.5 → 0.5.7

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 (360) hide show
  1. package/dist/admin/assets/{AssetTile-CaYPqR_F.js → AssetTile-H0hABhB2.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-CaYPqR_F.js.map → AssetTile-H0hABhB2.js.map} +1 -1
  3. package/dist/admin/assets/AssistError-1s3PuY0X.js +2 -0
  4. package/dist/admin/assets/{AssistError-drmpXSbS.js.map → AssistError-1s3PuY0X.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js → BlockMenuItems-a8zXdfcF.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js.map → BlockMenuItems-a8zXdfcF.js.map} +1 -1
  7. package/dist/admin/assets/Body-BzZD-TZT.js +2 -0
  8. package/dist/admin/assets/{Body-Gn_z2KPN.js.map → Body-BzZD-TZT.js.map} +1 -1
  9. package/dist/admin/assets/Builder-60jO_nbS.js +2 -0
  10. package/dist/admin/assets/Builder-60jO_nbS.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CzRU6och.js → CodeEditor-BLbJZE9v.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CzRU6och.js.map → CodeEditor-BLbJZE9v.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-h4HYhnYp.js → CopyButton-BOtR_h1H.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-h4HYhnYp.js.map → CopyButton-BOtR_h1H.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-H4SpVYw7.js → CursorPager-DwLW13ov.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-H4SpVYw7.js.map → CursorPager-DwLW13ov.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-BNq7nAYL.js → ExternalLink-BITMgS1K.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-BNq7nAYL.js.map → ExternalLink-BITMgS1K.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js → FocalPoint-n-a_AXKN.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js.map → FocalPoint-n-a_AXKN.js.map} +1 -1
  21. package/dist/admin/assets/Form-D_4fhOy0.js +2 -0
  22. package/dist/admin/assets/Form-D_4fhOy0.js.map +1 -0
  23. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js → FormCheckboxGroup-1fYisXrr.js} +2 -2
  24. package/dist/admin/assets/FormCheckboxGroup-1fYisXrr.js.map +1 -0
  25. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js → FormRadioGroup-B0VZyb1t.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js.map → FormRadioGroup-B0VZyb1t.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js → FormSelectField-Br8bkwRF.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js.map → FormSelectField-Br8bkwRF.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js → FormSwitchField-d8G-YCSX.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js.map → FormSwitchField-d8G-YCSX.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js → FormTextareaField-BSKNeTPW.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js.map → FormTextareaField-BSKNeTPW.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js → HintedLabel-CiTDE112.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js.map → HintedLabel-CiTDE112.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-bYMd_t0J.js → InfoHint-B3XcXtiN.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-bYMd_t0J.js.map → InfoHint-B3XcXtiN.js.map} +1 -1
  37. package/dist/admin/assets/InlineConfirm-BfsNH5S_.js +2 -0
  38. package/dist/admin/assets/InlineConfirm-BfsNH5S_.js.map +1 -0
  39. package/dist/admin/assets/InsertMenuItem-BGwDW_Lu.js +2 -0
  40. package/dist/admin/assets/InsertMenuItem-BGwDW_Lu.js.map +1 -0
  41. package/dist/admin/assets/{LinkTabs-ByB2eCIr.js → LinkTabs-8SmS1vCd.js} +2 -2
  42. package/dist/admin/assets/{LinkTabs-ByB2eCIr.js.map → LinkTabs-8SmS1vCd.js.map} +1 -1
  43. package/dist/admin/assets/{Match-GDx_orOH.js → Match-Dc8bXsKo.js} +2 -2
  44. package/dist/admin/assets/{Match-GDx_orOH.js.map → Match-Dc8bXsKo.js.map} +1 -1
  45. package/dist/admin/assets/NoAccess-CKEKPmqD.js +2 -0
  46. package/dist/admin/assets/NoAccess-CKEKPmqD.js.map +1 -0
  47. package/dist/admin/assets/Panel-Bcl09TtM.js +2 -0
  48. package/dist/admin/assets/Panel-Bcl09TtM.js.map +1 -0
  49. package/dist/admin/assets/{QueryView-UBO-U5Wo.js → QueryView-KFtwko9F.js} +2 -2
  50. package/dist/admin/assets/{QueryView-UBO-U5Wo.js.map → QueryView-KFtwko9F.js.map} +1 -1
  51. package/dist/admin/assets/{RadioTile-CJbIIV8t.js → RadioTile-CzfxWgHx.js} +2 -2
  52. package/dist/admin/assets/{RadioTile-CJbIIV8t.js.map → RadioTile-CzfxWgHx.js.map} +1 -1
  53. package/dist/admin/assets/{RichTextField-M7HyUhYF.js → RichTextField-BsBoOAP-.js} +5 -5
  54. package/dist/admin/assets/{RichTextField-M7HyUhYF.js.map → RichTextField-BsBoOAP-.js.map} +1 -1
  55. package/dist/admin/assets/{RowTitle-DoxDM1XL.js → RowTitle-Cn5mAU58.js} +2 -2
  56. package/dist/admin/assets/{RowTitle-DoxDM1XL.js.map → RowTitle-Cn5mAU58.js.map} +1 -1
  57. package/dist/admin/assets/SecretReveal-BCOJAisI.js +2 -0
  58. package/dist/admin/assets/SecretReveal-BCOJAisI.js.map +1 -0
  59. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js → SharedGlyph-CA8tb7UH.js} +2 -2
  60. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js.map → SharedGlyph-CA8tb7UH.js.map} +1 -1
  61. package/dist/admin/assets/StepList-sriwGP1e.js +2 -0
  62. package/dist/admin/assets/StepList-sriwGP1e.js.map +1 -0
  63. package/dist/admin/assets/{Structure-CO4aJZVP.js → Structure-B2HZ9UZu.js} +2 -2
  64. package/dist/admin/assets/{Structure-CO4aJZVP.js.map → Structure-B2HZ9UZu.js.map} +1 -1
  65. package/dist/admin/assets/{SubNavLink-CPJFIt1j.js → SubNavLink-CiCaVV8U.js} +2 -2
  66. package/dist/admin/assets/{SubNavLink-CPJFIt1j.js.map → SubNavLink-CiCaVV8U.js.map} +1 -1
  67. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js → SuggestAltButton-CqDLAuoa.js} +2 -2
  68. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js.map → SuggestAltButton-CqDLAuoa.js.map} +1 -1
  69. package/dist/admin/assets/{TextLink-DnrMaF2F.js → TextLink-HRn66VL1.js} +2 -2
  70. package/dist/admin/assets/{TextLink-DnrMaF2F.js.map → TextLink-HRn66VL1.js.map} +1 -1
  71. package/dist/admin/assets/Thumbnail-mFfESZiW.js +2 -0
  72. package/dist/admin/assets/Thumbnail-mFfESZiW.js.map +1 -0
  73. package/dist/admin/assets/UnsavedChangesGuard-C8cDQGEA.js +2 -0
  74. package/dist/admin/assets/UnsavedChangesGuard-C8cDQGEA.js.map +1 -0
  75. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js → UserAvatar-BItYDTyH.js} +2 -2
  76. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js.map → UserAvatar-BItYDTyH.js.map} +1 -1
  77. package/dist/admin/assets/auth-CQO4MBUj.js +2 -0
  78. package/dist/admin/assets/auth-CQO4MBUj.js.map +1 -0
  79. package/dist/admin/assets/badge-DNQwGXBl.js +2 -0
  80. package/dist/admin/assets/{badge-ydvfgE8a.js.map → badge-DNQwGXBl.js.map} +1 -1
  81. package/dist/admin/assets/{boxes-D6Y4Cenx.js → boxes-CAygw8zF.js} +2 -2
  82. package/dist/admin/assets/{boxes-D6Y4Cenx.js.map → boxes-CAygw8zF.js.map} +1 -1
  83. package/dist/admin/assets/{calendar-clock-DFUgXWXg.js → calendar-clock-BZGtAvWR.js} +2 -2
  84. package/dist/admin/assets/{calendar-clock-DFUgXWXg.js.map → calendar-clock-BZGtAvWR.js.map} +1 -1
  85. package/dist/admin/assets/changeSets-EMTUJT0M.js +2 -0
  86. package/dist/admin/assets/changeSets-EMTUJT0M.js.map +1 -0
  87. package/dist/admin/assets/chevron-left-DGU3HGYG.js +2 -0
  88. package/dist/admin/assets/{chevron-left-CZXrLV99.js.map → chevron-left-DGU3HGYG.js.map} +1 -1
  89. package/dist/admin/assets/{circle-check-De27poaB.js → circle-check-C37MSJqX.js} +2 -2
  90. package/dist/admin/assets/{circle-check-De27poaB.js.map → circle-check-C37MSJqX.js.map} +1 -1
  91. package/dist/admin/assets/{clock-BGAXsuo4.js → clock-2arjsgZ4.js} +2 -2
  92. package/dist/admin/assets/{clock-BGAXsuo4.js.map → clock-2arjsgZ4.js.map} +1 -1
  93. package/dist/admin/assets/{constants-esJAnNTh.js → constants-miV4q1ur.js} +2 -2
  94. package/dist/admin/assets/{constants-esJAnNTh.js.map → constants-miV4q1ur.js.map} +1 -1
  95. package/dist/admin/assets/content-CgZS_S7P.js +3 -0
  96. package/dist/admin/assets/content-CgZS_S7P.js.map +1 -0
  97. package/dist/admin/assets/contentCounts-DP7YYeZZ.js +2 -0
  98. package/dist/admin/assets/{contentCounts-DknqJ4kh.js.map → contentCounts-DP7YYeZZ.js.map} +1 -1
  99. package/dist/admin/assets/{contentTypes-C-AKiYu1.js → contentTypes-CQsHL657.js} +2 -2
  100. package/dist/admin/assets/{contentTypes-C-AKiYu1.js.map → contentTypes-CQsHL657.js.map} +1 -1
  101. package/dist/admin/assets/context-IKYdzQJ-.js +2 -0
  102. package/dist/admin/assets/{context-fImO9k99.js.map → context-IKYdzQJ-.js.map} +1 -1
  103. package/dist/admin/assets/{copy-B5owk67M.js → copy-CsSRHgKZ.js} +2 -2
  104. package/dist/admin/assets/{copy-B5owk67M.js.map → copy-CsSRHgKZ.js.map} +1 -1
  105. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js +2 -0
  106. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js.map +1 -0
  107. package/dist/admin/assets/develop-9ZeAjSIw.js +11 -0
  108. package/dist/admin/assets/develop-9ZeAjSIw.js.map +1 -0
  109. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js → dropdown-menu-0dyAtBEd.js} +2 -2
  110. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js.map → dropdown-menu-0dyAtBEd.js.map} +1 -1
  111. package/dist/admin/assets/{ellipsis-BHtU4ov6.js → ellipsis-F91991on.js} +2 -2
  112. package/dist/admin/assets/{ellipsis-BHtU4ov6.js.map → ellipsis-F91991on.js.map} +1 -1
  113. package/dist/admin/assets/entryLink-CVB-TdIn.js +2 -0
  114. package/dist/admin/assets/entryLink-CVB-TdIn.js.map +1 -0
  115. package/dist/admin/assets/es2015-BJge4oQL.js +42 -0
  116. package/dist/admin/assets/es2015-BJge4oQL.js.map +1 -0
  117. package/dist/admin/assets/{external-link-nZp2VpKw.js → external-link-CdG6kHfA.js} +2 -2
  118. package/dist/admin/assets/{external-link-nZp2VpKw.js.map → external-link-CdG6kHfA.js.map} +1 -1
  119. package/dist/admin/assets/{field-W1dB_h6d.js → field-C6NmRYUN.js} +2 -2
  120. package/dist/admin/assets/{field-W1dB_h6d.js.map → field-C6NmRYUN.js.map} +1 -1
  121. package/dist/admin/assets/{file-stack-8rRouTJj.js → file-stack-28ZtO1xW.js} +2 -2
  122. package/dist/admin/assets/{file-stack-8rRouTJj.js.map → file-stack-28ZtO1xW.js.map} +1 -1
  123. package/dist/admin/assets/{fileRoute-DzWMBrRx.js → fileRoute-Bm90K4UY.js} +2 -2
  124. package/dist/admin/assets/{fileRoute-DzWMBrRx.js.map → fileRoute-Bm90K4UY.js.map} +1 -1
  125. package/dist/admin/assets/{folder-plus-B3L3b389.js → folder-plus-DIk0pWkP.js} +2 -2
  126. package/dist/admin/assets/{folder-plus-B3L3b389.js.map → folder-plus-DIk0pWkP.js.map} +1 -1
  127. package/dist/admin/assets/followPlural-DEr2kxEc.js +2 -0
  128. package/dist/admin/assets/followPlural-DEr2kxEc.js.map +1 -0
  129. package/dist/admin/assets/{globe-DKkjr9MZ.js → globe-DFr3Gd2w.js} +2 -2
  130. package/dist/admin/assets/{globe-DKkjr9MZ.js.map → globe-DFr3Gd2w.js.map} +1 -1
  131. package/dist/admin/assets/{image-B6aL7hP8.js → image-DT79QFa_.js} +2 -2
  132. package/dist/admin/assets/{image-B6aL7hP8.js.map → image-DT79QFa_.js.map} +1 -1
  133. package/dist/admin/assets/{image-off-TVxEyb74.js → image-off-DFs5upyX.js} +2 -2
  134. package/dist/admin/assets/{image-off-TVxEyb74.js.map → image-off-DFs5upyX.js.map} +1 -1
  135. package/dist/admin/assets/inbox-B8XZ8L6s.js +2 -0
  136. package/dist/admin/assets/inbox-B8XZ8L6s.js.map +1 -0
  137. package/dist/admin/assets/{inbox-BKqu1EfP.js → inbox-CySnQydm.js} +2 -2
  138. package/dist/admin/assets/{inbox-BKqu1EfP.js.map → inbox-CySnQydm.js.map} +1 -1
  139. package/dist/admin/assets/index-DoJsnLI1.js +4 -0
  140. package/dist/admin/assets/index-DoJsnLI1.js.map +1 -0
  141. package/dist/admin/assets/index-lxe7WimO.css +2 -0
  142. package/dist/admin/assets/{key-round-Dmdr1vP5.js → key-round-D36CePnN.js} +2 -2
  143. package/dist/admin/assets/{key-round-Dmdr1vP5.js.map → key-round-D36CePnN.js.map} +1 -1
  144. package/dist/admin/assets/{labels-CHE0gg1n.js → labels-B2HIVxXg.js} +2 -2
  145. package/dist/admin/assets/{labels-CHE0gg1n.js.map → labels-B2HIVxXg.js.map} +1 -1
  146. package/dist/admin/assets/{languages-BbfFIygP.js → languages-CzbTaQv9.js} +2 -2
  147. package/dist/admin/assets/{languages-BbfFIygP.js.map → languages-CzbTaQv9.js.map} +1 -1
  148. package/dist/admin/assets/{layers-B0jT4rc4.js → layers-BmcodiaH.js} +2 -2
  149. package/dist/admin/assets/{layers-B0jT4rc4.js.map → layers-BmcodiaH.js.map} +1 -1
  150. package/dist/admin/assets/{link-2-off-DC06jLDj.js → link-2-off-CoJNwrxm.js} +2 -2
  151. package/dist/admin/assets/{link-2-off-DC06jLDj.js.map → link-2-off-CoJNwrxm.js.map} +1 -1
  152. package/dist/admin/assets/{link-B3O0VUVT.js → link-Pyr2Y35S.js} +2 -2
  153. package/dist/admin/assets/{link-B3O0VUVT.js.map → link-Pyr2Y35S.js.map} +1 -1
  154. package/dist/admin/assets/locales-Bg3htKo8.js +2 -0
  155. package/dist/admin/assets/{locales-e7B5t6id.js.map → locales-Bg3htKo8.js.map} +1 -1
  156. package/dist/admin/assets/media-BCnVhaDH.js +2 -0
  157. package/dist/admin/assets/{media-VCJUbYzJ.js.map → media-BCnVhaDH.js.map} +1 -1
  158. package/dist/admin/assets/media-CtbfNgc-.js +2 -0
  159. package/dist/admin/assets/media-CtbfNgc-.js.map +1 -0
  160. package/dist/admin/assets/network--5X46kWN.js +2 -0
  161. package/dist/admin/assets/network--5X46kWN.js.map +1 -0
  162. package/dist/admin/assets/{plus-WfYKHW7G.js → plus-BoDtdLCo.js} +2 -2
  163. package/dist/admin/assets/{plus-WfYKHW7G.js.map → plus-BoDtdLCo.js.map} +1 -1
  164. package/dist/admin/assets/publishing-DdmWXRaM.js +2 -0
  165. package/dist/admin/assets/{publishing-ClNjPLQ9.js.map → publishing-DdmWXRaM.js.map} +1 -1
  166. package/dist/admin/assets/{radio-group-rFxn7cz2.js → radio-group-BoN9R_3K.js} +2 -2
  167. package/dist/admin/assets/{radio-group-rFxn7cz2.js.map → radio-group-BoN9R_3K.js.map} +1 -1
  168. package/dist/admin/assets/{rotate-ccw-Cvc_uA58.js → rotate-ccw-DL6TzcZh.js} +2 -2
  169. package/dist/admin/assets/{rotate-ccw-Cvc_uA58.js.map → rotate-ccw-DL6TzcZh.js.map} +1 -1
  170. package/dist/admin/assets/schedules-BmB9Y73z.js +2 -0
  171. package/dist/admin/assets/{schedules-CBGpjEg7.js.map → schedules-BmB9Y73z.js.map} +1 -1
  172. package/dist/admin/assets/schema-D-qo7XSF.js +2 -0
  173. package/dist/admin/assets/schema-D-qo7XSF.js.map +1 -0
  174. package/dist/admin/assets/{scroll-text-gKYBbibb.js → scroll-text-PqeZm472.js} +2 -2
  175. package/dist/admin/assets/{scroll-text-gKYBbibb.js.map → scroll-text-PqeZm472.js.map} +1 -1
  176. package/dist/admin/assets/{search-CW3iBC4k.js → search-BdwIwOzC.js} +2 -2
  177. package/dist/admin/assets/{search-CW3iBC4k.js.map → search-BdwIwOzC.js.map} +1 -1
  178. package/dist/admin/assets/searchSchemas-DNjfDxmj.js +2 -0
  179. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js.map → searchSchemas-DNjfDxmj.js.map} +1 -1
  180. package/dist/admin/assets/{sections-CN5fIoAr.js → sections-BTS683ur.js} +2 -2
  181. package/dist/admin/assets/{sections-CN5fIoAr.js.map → sections-BTS683ur.js.map} +1 -1
  182. package/dist/admin/assets/sections-BfxPwK0u.js +2 -0
  183. package/dist/admin/assets/{sections-C7Z6Xd8r.js.map → sections-BfxPwK0u.js.map} +1 -1
  184. package/dist/admin/assets/{select-DUhL27UN.js → select-Bp8kO5Ko.js} +2 -2
  185. package/dist/admin/assets/{select-DUhL27UN.js.map → select-Bp8kO5Ko.js.map} +1 -1
  186. package/dist/admin/assets/{send-DRA-Pe46.js → send-XPWo3m4u.js} +2 -2
  187. package/dist/admin/assets/{send-DRA-Pe46.js.map → send-XPWo3m4u.js.map} +1 -1
  188. package/dist/admin/assets/seo-CceGYTIX.js +2 -0
  189. package/dist/admin/assets/{seo-l1ZORjtv.js.map → seo-CceGYTIX.js.map} +1 -1
  190. package/dist/admin/assets/settings-TEbLvC-v.js +2 -0
  191. package/dist/admin/assets/settings-TEbLvC-v.js.map +1 -0
  192. package/dist/admin/assets/settle-CFU6YpQ0.js +2 -0
  193. package/dist/admin/assets/settle-CFU6YpQ0.js.map +1 -0
  194. package/dist/admin/assets/shapes-WrYO9Spf.js +6 -0
  195. package/dist/admin/assets/shapes-WrYO9Spf.js.map +1 -0
  196. package/dist/admin/assets/{skeleton-Dyi_b1wq.js → skeleton-vXOCdnJv.js} +2 -2
  197. package/dist/admin/assets/{skeleton-Dyi_b1wq.js.map → skeleton-vXOCdnJv.js.map} +1 -1
  198. package/dist/admin/assets/slugify-rYFum3Sc.js +2 -0
  199. package/dist/admin/assets/slugify-rYFum3Sc.js.map +1 -0
  200. package/dist/admin/assets/snapshots-DUI2t-qF.js +2 -0
  201. package/dist/admin/assets/snapshots-DUI2t-qF.js.map +1 -0
  202. package/dist/admin/assets/{sparkles-DCRAqbqD.js → sparkles-CvT-jxrW.js} +2 -2
  203. package/dist/admin/assets/{sparkles-DCRAqbqD.js.map → sparkles-CvT-jxrW.js.map} +1 -1
  204. package/dist/admin/assets/src-ndgTSYLX.js +7 -0
  205. package/dist/admin/assets/src-ndgTSYLX.js.map +1 -0
  206. package/dist/admin/assets/{stableId-iRkUbVIP.js → stableId-BrtQedPy.js} +2 -2
  207. package/dist/admin/assets/{stableId-iRkUbVIP.js.map → stableId-BrtQedPy.js.map} +1 -1
  208. package/dist/admin/assets/store-CdIFG90N.js +2 -0
  209. package/dist/admin/assets/{store-DknnssoQ.js.map → store-CdIFG90N.js.map} +1 -1
  210. package/dist/admin/assets/{switch-C3dDDUIk.js → switch-B1xClhNG.js} +2 -2
  211. package/dist/admin/assets/{switch-C3dDDUIk.js.map → switch-B1xClhNG.js.map} +1 -1
  212. package/dist/admin/assets/theme-65PB8uAu.js +2 -0
  213. package/dist/admin/assets/{theme-DPe080iG.js.map → theme-65PB8uAu.js.map} +1 -1
  214. package/dist/admin/assets/titles-CQiqqDw-.js +2 -0
  215. package/dist/admin/assets/titles-CQiqqDw-.js.map +1 -0
  216. package/dist/admin/assets/tokens-ixHjAkDK.js +2 -0
  217. package/dist/admin/assets/{tokens-BlIDIMY9.js.map → tokens-ixHjAkDK.js.map} +1 -1
  218. package/dist/admin/assets/{tooltip-BEaZkRPK.js → tooltip-CS_8cJu2.js} +2 -2
  219. package/dist/admin/assets/{tooltip-BEaZkRPK.js.map → tooltip-CS_8cJu2.js.map} +1 -1
  220. package/dist/admin/assets/{undo-2-Zd1OT6qk.js → undo-2-BiTANHFz.js} +2 -2
  221. package/dist/admin/assets/{undo-2-Zd1OT6qk.js.map → undo-2-BiTANHFz.js.map} +1 -1
  222. package/dist/admin/assets/useContentSchema-DtYfhsd2.js +2 -0
  223. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js.map → useContentSchema-DtYfhsd2.js.map} +1 -1
  224. package/dist/admin/assets/useCursorPager-0zHjlm-7.js +2 -0
  225. package/dist/admin/assets/{useCursorPager-Dc-9B67j.js.map → useCursorPager-0zHjlm-7.js.map} +1 -1
  226. package/dist/admin/assets/useDiscardGuard-CMMJgkI2.js +2 -0
  227. package/dist/admin/assets/useDiscardGuard-CMMJgkI2.js.map +1 -0
  228. package/dist/admin/assets/useMediaPickerDialog-xvQ8cofO.js +2 -0
  229. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js.map → useMediaPickerDialog-xvQ8cofO.js.map} +1 -1
  230. package/dist/admin/assets/useMediaUploader-BVNTeSAU.js +2 -0
  231. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js.map → useMediaUploader-BVNTeSAU.js.map} +1 -1
  232. package/dist/admin/assets/useNetworkPermission-Cts98h9d.js +2 -0
  233. package/dist/admin/assets/{useNetworkPermission-CegwqQXR.js.map → useNetworkPermission-Cts98h9d.js.map} +1 -1
  234. package/dist/admin/assets/usePaletteItems-DtReWmkd.js +2 -0
  235. package/dist/admin/assets/{usePaletteItems-B3y2t7Ly.js.map → usePaletteItems-DtReWmkd.js.map} +1 -1
  236. package/dist/admin/assets/usePlaces-DC47wVeU.js +2 -0
  237. package/dist/admin/assets/{usePlaces-CAXr-IO9.js.map → usePlaces-DC47wVeU.js.map} +1 -1
  238. package/dist/admin/assets/useQueries-CirW3Mvp.js +2 -0
  239. package/dist/admin/assets/{useQueries-CX6eFr24.js.map → useQueries-CirW3Mvp.js.map} +1 -1
  240. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js → useResolvedScheme-CScQpr-P.js} +2 -2
  241. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js.map → useResolvedScheme-CScQpr-P.js.map} +1 -1
  242. package/dist/admin/assets/{useSchemaScopeAccess-DyfiZnzs.js → useSchemaScopeAccess-ByrxIdKM.js} +2 -2
  243. package/dist/admin/assets/{useSchemaScopeAccess-DyfiZnzs.js.map → useSchemaScopeAccess-ByrxIdKM.js.map} +1 -1
  244. package/dist/admin/assets/users-2iJYwlJb.js +2 -0
  245. package/dist/admin/assets/users-2iJYwlJb.js.map +1 -0
  246. package/dist/admin/assets/{users-ohHZnBJW.js → users-DM7CXUBJ.js} +2 -2
  247. package/dist/admin/assets/{users-ohHZnBJW.js.map → users-DM7CXUBJ.js.map} +1 -1
  248. package/dist/admin/assets/{zod-C-k48Hnc.js → zod-hUh5nXnX.js} +2 -2
  249. package/dist/admin/assets/{zod-C-k48Hnc.js.map → zod-hUh5nXnX.js.map} +1 -1
  250. package/dist/admin/index.html +59 -60
  251. package/dist/cli.js +10 -5689
  252. package/dist/cli.js.map +1 -1
  253. package/dist/cliMain-D08HeAd_.js +5771 -0
  254. package/dist/cliMain-D08HeAd_.js.map +1 -0
  255. package/dist/config.d.ts +1 -1
  256. package/dist/config.js +1 -38
  257. package/dist/contentDisposition-DOL2Xt0l.js +90 -0
  258. package/dist/contentDisposition-DOL2Xt0l.js.map +1 -0
  259. package/dist/index.d.ts +30 -8
  260. package/dist/index.js +2 -2
  261. package/dist/public-B57h4F7Y.js +39 -0
  262. package/dist/public-B57h4F7Y.js.map +1 -0
  263. package/dist/{public-BO_wneBL.d.ts → public-COKbHR-N.d.ts} +47 -3
  264. package/dist/{s3Adapter-sL1zP4Zl.js → s3Adapter-U01iEAcK.js} +2 -2
  265. package/dist/{s3Adapter-sL1zP4Zl.js.map → s3Adapter-U01iEAcK.js.map} +1 -1
  266. package/dist/{worker-DMES6pqh.js → worker-jspgh10V.js} +6384 -4527
  267. package/dist/worker-jspgh10V.js.map +1 -0
  268. package/package.json +5 -5
  269. package/dist/admin/assets/AssistError-drmpXSbS.js +0 -2
  270. package/dist/admin/assets/Body-Gn_z2KPN.js +0 -2
  271. package/dist/admin/assets/Builder-DyCcikfS.js +0 -2
  272. package/dist/admin/assets/Builder-DyCcikfS.js.map +0 -1
  273. package/dist/admin/assets/ConfirmDialog-DZRJfdvH.js +0 -2
  274. package/dist/admin/assets/ConfirmDialog-DZRJfdvH.js.map +0 -1
  275. package/dist/admin/assets/Form-DF_YmR1G.js +0 -2
  276. package/dist/admin/assets/Form-DF_YmR1G.js.map +0 -1
  277. package/dist/admin/assets/FormCheckboxGroup-V3IKrvzc.js.map +0 -1
  278. package/dist/admin/assets/InsertMenuItem-D2HGERzb.js +0 -2
  279. package/dist/admin/assets/InsertMenuItem-D2HGERzb.js.map +0 -1
  280. package/dist/admin/assets/Panel-B1TkcP8V.js +0 -2
  281. package/dist/admin/assets/Panel-B1TkcP8V.js.map +0 -1
  282. package/dist/admin/assets/SecretReveal-kCkLH5jg.js +0 -2
  283. package/dist/admin/assets/SecretReveal-kCkLH5jg.js.map +0 -1
  284. package/dist/admin/assets/StepList-BIQjDaWQ.js +0 -2
  285. package/dist/admin/assets/StepList-BIQjDaWQ.js.map +0 -1
  286. package/dist/admin/assets/Thumbnail-D1XuDElk.js +0 -2
  287. package/dist/admin/assets/Thumbnail-D1XuDElk.js.map +0 -1
  288. package/dist/admin/assets/UnsavedChangesGuard-C1n7egF6.js +0 -2
  289. package/dist/admin/assets/UnsavedChangesGuard-C1n7egF6.js.map +0 -1
  290. package/dist/admin/assets/auth-C4fHG9Iu.js +0 -2
  291. package/dist/admin/assets/auth-C4fHG9Iu.js.map +0 -1
  292. package/dist/admin/assets/badge-ydvfgE8a.js +0 -2
  293. package/dist/admin/assets/changeSets-DgfCKja3.js +0 -2
  294. package/dist/admin/assets/changeSets-DgfCKja3.js.map +0 -1
  295. package/dist/admin/assets/chevron-left-CZXrLV99.js +0 -2
  296. package/dist/admin/assets/content-DsMSB6Wb.js +0 -3
  297. package/dist/admin/assets/content-DsMSB6Wb.js.map +0 -1
  298. package/dist/admin/assets/contentCounts-DknqJ4kh.js +0 -2
  299. package/dist/admin/assets/context-fImO9k99.js +0 -2
  300. package/dist/admin/assets/createLucideIcon-CqygG5K6.js +0 -2
  301. package/dist/admin/assets/createLucideIcon-CqygG5K6.js.map +0 -1
  302. package/dist/admin/assets/develop-DL-2W9jv.js +0 -11
  303. package/dist/admin/assets/develop-DL-2W9jv.js.map +0 -1
  304. package/dist/admin/assets/es2015-DrAA1N2V.js +0 -42
  305. package/dist/admin/assets/es2015-DrAA1N2V.js.map +0 -1
  306. package/dist/admin/assets/followPlural-D-5ZJqJF.js +0 -2
  307. package/dist/admin/assets/followPlural-D-5ZJqJF.js.map +0 -1
  308. package/dist/admin/assets/inbox-DUqOrFEA.js +0 -2
  309. package/dist/admin/assets/inbox-DUqOrFEA.js.map +0 -1
  310. package/dist/admin/assets/index-BEM45u2w.css +0 -2
  311. package/dist/admin/assets/index-D03RZB7e.js +0 -4
  312. package/dist/admin/assets/index-D03RZB7e.js.map +0 -1
  313. package/dist/admin/assets/loader-circle-C-9trZPI.js +0 -2
  314. package/dist/admin/assets/loader-circle-C-9trZPI.js.map +0 -1
  315. package/dist/admin/assets/locales-e7B5t6id.js +0 -2
  316. package/dist/admin/assets/media-BUUEsWxd.js +0 -2
  317. package/dist/admin/assets/media-BUUEsWxd.js.map +0 -1
  318. package/dist/admin/assets/media-VCJUbYzJ.js +0 -2
  319. package/dist/admin/assets/network-Bolr2lmf.js +0 -2
  320. package/dist/admin/assets/network-Bolr2lmf.js.map +0 -1
  321. package/dist/admin/assets/pencil-BVSFlU14.js +0 -2
  322. package/dist/admin/assets/pencil-BVSFlU14.js.map +0 -1
  323. package/dist/admin/assets/publishing-ClNjPLQ9.js +0 -2
  324. package/dist/admin/assets/schedules-CBGpjEg7.js +0 -2
  325. package/dist/admin/assets/schema-D9BgCVzZ.js +0 -2
  326. package/dist/admin/assets/schema-D9BgCVzZ.js.map +0 -1
  327. package/dist/admin/assets/searchSchemas-C4qp-vCa.js +0 -2
  328. package/dist/admin/assets/sections-C7Z6Xd8r.js +0 -2
  329. package/dist/admin/assets/seo-l1ZORjtv.js +0 -2
  330. package/dist/admin/assets/settings-DgoG3H8C.js +0 -2
  331. package/dist/admin/assets/settings-DgoG3H8C.js.map +0 -1
  332. package/dist/admin/assets/settle-LRKtTN_e.js +0 -2
  333. package/dist/admin/assets/settle-LRKtTN_e.js.map +0 -1
  334. package/dist/admin/assets/shapes-BZ87ap5s.js +0 -6
  335. package/dist/admin/assets/shapes-BZ87ap5s.js.map +0 -1
  336. package/dist/admin/assets/snapshots-CT-zs6Up.js +0 -2
  337. package/dist/admin/assets/snapshots-CT-zs6Up.js.map +0 -1
  338. package/dist/admin/assets/src-BcLeD2-K.js +0 -7
  339. package/dist/admin/assets/src-BcLeD2-K.js.map +0 -1
  340. package/dist/admin/assets/store-DknnssoQ.js +0 -2
  341. package/dist/admin/assets/theme-DPe080iG.js +0 -2
  342. package/dist/admin/assets/titles-C5PaMgFJ.js +0 -2
  343. package/dist/admin/assets/titles-C5PaMgFJ.js.map +0 -1
  344. package/dist/admin/assets/tokens-BlIDIMY9.js +0 -2
  345. package/dist/admin/assets/useAuditLabels-DWBpLOTB.js +0 -2
  346. package/dist/admin/assets/useAuditLabels-DWBpLOTB.js.map +0 -1
  347. package/dist/admin/assets/useContentSchema-wLDa2L3f.js +0 -2
  348. package/dist/admin/assets/useCursorPager-Dc-9B67j.js +0 -2
  349. package/dist/admin/assets/useDiscardGuard-WTUINqD5.js +0 -2
  350. package/dist/admin/assets/useDiscardGuard-WTUINqD5.js.map +0 -1
  351. package/dist/admin/assets/useMediaPickerDialog-CFN9ZKfe.js +0 -2
  352. package/dist/admin/assets/useMediaUploader-B42H_CMG.js +0 -2
  353. package/dist/admin/assets/useNetworkPermission-CegwqQXR.js +0 -2
  354. package/dist/admin/assets/usePaletteItems-B3y2t7Ly.js +0 -2
  355. package/dist/admin/assets/usePlaces-CAXr-IO9.js +0 -2
  356. package/dist/admin/assets/useQueries-CX6eFr24.js +0 -2
  357. package/dist/admin/assets/users-CDoJRL24.js +0 -2
  358. package/dist/admin/assets/users-CDoJRL24.js.map +0 -1
  359. package/dist/config.js.map +0 -1
  360. package/dist/worker-DMES6pqh.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{O as n,j as r,o as i}from"./loader-circle-C-9trZPI.js";var a=e(t(),1),o=6e4,s=()=>{let e=r({queryKey:n.contentCounts,queryFn:()=>i.contentCounts.list(),staleTime:o,meta:{silent:!0}});return(0,a.useMemo)(()=>e.data?new Map(e.data.counts.map(e=>[e.modelId,e.total])):void 0,[e.data])};export{s as t};
2
- //# sourceMappingURL=contentCounts-DknqJ4kh.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{d as n}from"./loader-circle-C-9trZPI.js";var r=e(t(),1),i=(0,r.createContext)(null),a=(0,r.createContext)(null),o=()=>{let e=(0,r.useContext)(i);if(!e)throw Error(`useFieldsEnvironment must be used inside <FieldsProvider>`);return e},s=()=>{let e=(0,r.useContext)(a);if(!e)throw Error(`useEntryFormStore must be used inside <FieldsProvider>`);return e},c=e=>n(s(),e),l=(0,r.createContext)(null),u=()=>(0,r.useContext)(l);export{s as a,c as i,i as n,o,l as r,u as s,a as t};
2
- //# sourceMappingURL=context-fImO9k99.js.map
@@ -1,2 +0,0 @@
1
- import{i as e,t}from"./rolldown-runtime-Dd_uD5pT.js";import{t as n}from"./react-CQOZoUwg.js";var r=t((e=>{var t=n();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=t.useState,o=t.useEffect,s=t.useLayoutEffect,c=t.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),i=t(((e,t)=>{t.exports=r()})),a={setup:`/api/admin/setup`,csrf:`/api/admin/auth/csrf`,login:`/api/admin/auth/login`,logout:`/api/admin/auth/logout`,me:`/api/admin/auth/me`,password:`/api/admin/auth/me/password`,sessions:`/api/admin/auth/sessions`,passwordReset:`/api/admin/auth/password-reset`,passwordResetConfirm:`/api/admin/auth/password-reset/confirm`,users:`/api/admin/users`,invitations:`/api/admin/invitations`,inspectInvitation:`/api/admin/invitations/inspect`,acceptInvitation:`/api/admin/invitations/accept`,roles:`/api/admin/roles`,tokens:`/api/admin/tokens`,audit:`/api/admin/audit`,models:`/api/admin/models`,components:`/api/admin/components`,schema:`/api/admin/schema`,schemaChanges:`/api/admin/schema/changes`,schemaExport:`/api/admin/schema/export`,schemaApply:`/api/admin/schema/apply`,schemaSettings:`/api/admin/schema/settings`,locales:`/api/admin/locales`,mediaFolders:`/api/admin/media/folders`,mediaAssets:`/api/admin/media/assets`,mediaUploads:`/api/admin/media/uploads`,appUsers:`/api/admin/app-users`,appRoles:`/api/admin/app-roles`,content:`/api/admin/content`,contentCounts:`/api/admin/content-counts`,contentHealth:`/api/admin/content-health`,presence:`/api/admin/presence`,editorManifest:`/api/admin/extensions/editors`,extensionThemes:`/api/admin/extensions/themes`,jobs:`/api/admin/jobs`,schedules:`/api/admin/publishing/schedules`,changeSets:`/api/admin/change-sets`,snapshots:`/api/admin/snapshots`,webhooks:`/api/admin/webhooks`,deploymentConnections:`/api/admin/deployments/connections`,deploymentRuns:`/api/admin/deployments/runs`,preview:`/api/admin/preview`,previewTokens:`/api/admin/preview/tokens`},o=(e,t)=>`${e}/${encodeURIComponent(t)}`,s=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!=null&&r!==``&&t.set(n,String(r));let n=t.toString();return n?`?${n}`:``},c=e=>({appUsers:{list:(t={})=>e(`${a.appUsers}${s(t)}`),get:t=>e(o(a.appUsers,t)),update:(t,n)=>e(o(a.appUsers,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.appUsers,t),{method:`DELETE`}),resendConfirmation:t=>e(`${o(a.appUsers,t)}/resend-confirmation`,{method:`POST`})},appRoles:{list:()=>e(a.appRoles),get:t=>e(o(a.appRoles,t)),create:t=>e(a.appRoles,{method:`POST`,body:t}),update:(t,n)=>e(o(a.appRoles,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.appRoles,t),{method:`DELETE`})}}),l={status:`/api/admin/assist/status`,altText:`/api/admin/assist/alt-text`,summarize:`/api/admin/assist/summarize`,translate:`/api/admin/assist/translate`,rewrite:`/api/admin/assist/rewrite`,schemaDraft:`/api/admin/assist/schema/draft`,contentOpsPropose:`/api/admin/assist/content-ops/propose`,contentOps:`/api/admin/assist/content-ops`},u=e=>({assist:{status:()=>e(l.status),altText:t=>e(l.altText,{method:`POST`,body:t}),summarize:t=>e(l.summarize,{method:`POST`,body:t}),translate:t=>e(l.translate,{method:`POST`,body:t}),rewrite:t=>e(l.rewrite,{method:`POST`,body:t}),schemaDraft:t=>e(l.schemaDraft,{method:`POST`,body:t}),proposeContentOps:t=>e(l.contentOpsPropose,{method:`POST`,body:t}),contentOpsRun:t=>e(o(l.contentOps,t))}}),d=e=>o(a.changeSets,e),f=(e,t)=>`${d(e)}/schema/${encodeURIComponent(t)}`,p=e=>({changeSets:{list:(t={})=>e(`${a.changeSets}${s(t)}`),get:t=>e(d(t)),create:t=>e(a.changeSets,{method:`POST`,body:t}),update:(t,n)=>e(d(t),{method:`PATCH`,body:n}),discard:t=>e(`${d(t)}/discard`,{method:`POST`}),addEntry:(t,n)=>e(`${d(t)}/items`,{method:`POST`,body:n}),removeItem:(t,n)=>e(`${d(t)}/items/${encodeURIComponent(n)}`,{method:`DELETE`}),getSchemaDraft:(t,n)=>e(f(t,n)),putSchemaDraft:(t,n,r)=>e(f(t,n),{method:`PUT`,body:r}),removeSchemaDraft:(t,n)=>e(f(t,n),{method:`DELETE`}),review:t=>e(`${d(t)}/review`),ship:(t,n)=>e(`${d(t)}/ship`,{method:`POST`,body:n}),schedule:(t,n)=>e(`${d(t)}/schedule`,{method:`POST`,body:n}),unschedule:t=>e(`${d(t)}/unschedule`,{method:`POST`}),timeline:async t=>(await e(`${d(t)}/timeline`)).items,unassigned:(t={})=>e(`${a.changeSets}/unassigned${s(t)}`)},snapshots:{list:(t={})=>e(`${a.snapshots}${s(t)}`),get:t=>e(`${a.snapshots}/${t}`),restore:t=>e(`${a.snapshots}/${t}/restore`,{method:`POST`})}}),m=(e,t,n)=>{if(n!=null){if(Array.isArray(n)){n.forEach((n,r)=>{typeof n==`object`&&n?m(e,`${t}[${r}]`,n):e.append(t,String(n))});return}if(typeof n==`object`){for(let[r,i]of Object.entries(n))m(e,`${t}[${r}]`,i);return}(typeof n==`string`||typeof n==`number`||typeof n==`boolean`)&&e.append(t,String(n))}},h=(e={})=>{let t=new URLSearchParams;e.filters&&m(t,`filters`,e.filters);for(let n of e.sort??[])t.append(`sort`,`${n.field}:${n.direction}`);e.page!==void 0&&t.set(`page`,String(e.page)),e.pageSize!==void 0&&t.set(`pageSize`,String(e.pageSize)),e.q&&t.set(`q`,e.q),e.locale&&t.set(`locale`,e.locale);for(let n of e.fields??[])t.append(`fields`,n);for(let n of e.populate??[])t.append(`populate`,n);e.status&&t.set(`status`,e.status),e.author&&t.set(`author`,e.author);let n=t.toString();return n?`?${n}`:``},g=e=>o(a.content,e),_=(e,t)=>o(g(e),t),v=(e,t)=>`${_(e,t)}/revisions`,y=e=>({content:{list:(t,n={})=>e(`${g(t)}${h(n)}`),get:(t,n,{locale:r}={})=>e(`${_(t,n)}${s({locale:r})}`),create:(t,n)=>e(g(t),{method:`POST`,body:n}),update:(t,n,r)=>e(_(t,n),{method:`PUT`,body:r}),remove:(t,n)=>e(_(t,n),{method:`DELETE`}),duplicate:(t,n)=>e(`${_(t,n)}/duplicate`,{method:`POST`}),publish:(t,n,r={})=>e(`${_(t,n)}/publish`,{method:`POST`,body:r}),unpublish:(t,n,r={})=>e(`${_(t,n)}/unpublish`,{method:`POST`,body:r}),revisions:async(t,n,{locale:r}={})=>(await e(`${v(t,n)}${s({locale:r})}`)).items,revision:(t,n,r)=>e(o(v(t,n),r)),restore:(t,n,r,i)=>e(`${o(v(t,n),r)}/restore`,{method:`POST`,body:{expectedVersion:i}})},extensions:{editors:()=>e(a.editorManifest),themes:()=>e(a.extensionThemes)}}),b=(e,t,n)=>o(o(e,t),n),x=e=>({preflight:{run:(t,n,r={})=>e(`${b(a.content,t,n)}/preflight`,{method:`POST`,body:r})},contentHealth:{list:(t={})=>e(`${a.contentHealth}${s(t)}`),summary:()=>e(`${a.contentHealth}/summary`)},presence:{heartbeat:(t,n,r)=>e(b(a.presence,t,n),{method:`PUT`,body:r}),entry:(t,n)=>e(b(a.presence,t,n)),model:t=>e(o(a.presence,t)),leave:(t,n,r)=>e(`${b(a.presence,t,n)}${s({tabId:r})}`,{method:`DELETE`})},contentCounts:{list:()=>e(a.contentCounts)}}),S=e=>({media:{folders:{list:async()=>(await e(a.mediaFolders)).items,create:t=>e(a.mediaFolders,{method:`POST`,body:t}),update:(t,n)=>e(o(a.mediaFolders,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.mediaFolders,t),{method:`DELETE`})},assets:{list:(t={})=>e(`${a.mediaAssets}${s(t)}`),get:t=>e(o(a.mediaAssets,t)),update:(t,n)=>e(o(a.mediaAssets,t),{method:`PATCH`,body:n}),remove:(t,{force:n=!1}={})=>e(`${o(a.mediaAssets,t)}${s({force:n||void 0})}`,{method:`DELETE`}),move:t=>e(`${a.mediaAssets}/move`,{method:`POST`,body:t}),usage:t=>e(`${o(a.mediaAssets,t)}/usage`),replace:(t,n)=>e(`${o(a.mediaAssets,t)}/replace`,{method:`POST`,body:n})},uploads:{create:t=>e(a.mediaUploads,{method:`POST`,body:t}),confirm:t=>e(`${o(a.mediaUploads,t)}/confirm`,{method:`POST`})}}}),C=(e,t,n)=>{let r=new FormData;for(let[t,n]of Object.entries(e.upload.fields))r.append(t,n);return r.append(e.upload.fileField,t,n),r},w=(e,t)=>{let n=`/api/media/uploads/${encodeURIComponent(e.grantId)}`,r=new URL(e.upload.url),i=t.endsWith(`/`)?t:`${t}/`;return r.pathname.endsWith(n)?new URL(n.slice(1),i).href:e.upload.url},T=e=>({jobs:{list:(t={})=>e(`${a.jobs}${s(t)}`),summary:()=>e(`${a.jobs}/summary`),get:t=>e(o(a.jobs,t)),retry:t=>e(`${o(a.jobs,t)}/retry`,{method:`POST`})},schedules:{list:(t={})=>e(`${a.schedules}${s(t)}`),create:t=>e(a.schedules,{method:`POST`,body:t}),cancel:t=>e(o(a.schedules,t),{method:`DELETE`})},webhooks:{list:()=>e(a.webhooks),events:async()=>(await e(`${a.webhooks}/events`)).items,get:t=>e(o(a.webhooks,t)),create:t=>e(a.webhooks,{method:`POST`,body:t}),update:(t,n)=>e(o(a.webhooks,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.webhooks,t),{method:`DELETE`}),rotateSecret:t=>e(`${o(a.webhooks,t)}/rotate-secret`,{method:`POST`}),test:t=>e(`${o(a.webhooks,t)}/test`,{method:`POST`}),deliveries:(t,n={})=>e(`${o(a.webhooks,t)}/deliveries${s(n)}`),redeliver:(t,n)=>e(`${o(a.webhooks,t)}/deliveries/${encodeURIComponent(n)}/redeliver`,{method:`POST`})},deployments:{connections:{list:()=>e(a.deploymentConnections),get:t=>e(o(a.deploymentConnections,t)),create:t=>e(a.deploymentConnections,{method:`POST`,body:t}),update:(t,n)=>e(o(a.deploymentConnections,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.deploymentConnections,t),{method:`DELETE`}),test:t=>e(`${o(a.deploymentConnections,t)}/test`,{method:`POST`}),trigger:t=>e(`${o(a.deploymentConnections,t)}/runs`,{method:`POST`})},runs:{list:(t={})=>e(`${a.deploymentRuns}${s(t)}`),get:t=>e(o(a.deploymentRuns,t)),retry:t=>e(`${o(a.deploymentRuns,t)}/retry`,{method:`POST`})}},preview:{tokens:{list:(t={})=>e(`${a.previewTokens}${s(t)}`),create:t=>e(a.previewTokens,{method:`POST`,body:t}),revoke:t=>e(o(a.previewTokens,t),{method:`DELETE`})},targets:()=>e(`${a.preview}/targets`),open:t=>e(`${a.preview}/open`,{method:`POST`,body:t})}}),ee={model:a.models,component:a.components},te=(e,t)=>{let n=ee[t];return{list:async(t={})=>(await e(`${n}${s(t)}`)).items,get:t=>e(o(n,t)),create:t=>e(n,{method:`POST`,body:t}),planCreate:(t,r)=>e(`${n}/plan`,{method:`POST`,body:r?{definition:t,scope:r}:{definition:t}}),changeScope:(t,r)=>e(`${o(n,t)}/scope`,{method:`PUT`,body:r}),update:(t,r)=>e(o(n,t),{method:`PUT`,body:r}),planUpdate:(t,r)=>e(`${o(n,t)}/plan`,{method:`POST`,body:r}),remove:(t,r)=>e(`${o(n,t)}${s({expectedVersion:r})}`,{method:`DELETE`}),revisions:async t=>(await e(`${o(n,t)}/revisions`)).items,changes:async t=>(await e(`${o(n,t)}/changes`)).items}},ne=e=>({models:te(e,`model`),components:te(e,`component`),schema:{summary:()=>e(a.schema),change:t=>e(o(a.schemaChanges,t)),export:(t={})=>e(`${a.schemaExport}${s(t)}`),apply:t=>e(a.schemaApply,{method:`POST`,body:t}),settings:()=>e(a.schemaSettings),updateSettings:t=>e(a.schemaSettings,{method:`PUT`,body:t})},locales:{list:async()=>(await e(a.locales)).items,create:t=>e(a.locales,{method:`POST`,body:t}),update:(t,n)=>e(o(a.locales,t),{method:`PUT`,body:n}),setDefault:(t,n)=>e(`${o(a.locales,t)}/default`,{method:`POST`,body:{acknowledgeBreaking:n}}),remove:(t,n)=>e(`${o(a.locales,t)}${s({acknowledgeDestructive:n||void 0})}`,{method:`DELETE`})}}),E={sites:`/api/admin/sites`},re=`shapio-site`,D=e=>`${E.sites}/${encodeURIComponent(e)}`,ie=e=>({sites:{list:()=>e(E.sites),get:t=>e(D(t)),create:t=>e(E.sites,{method:`POST`,body:t}),update:(t,n)=>e(D(t),{method:`PATCH`,body:n}),remove:t=>e(D(t),{method:`DELETE`}),appRoles:{get:t=>e(`${D(t)}/app-roles`),set:(t,n)=>e(`${D(t)}/app-roles`,{method:`PUT`,body:n})}}}),ae={fields:`/api/admin/usage/fields`},oe=e=>({usage:{fields:t=>e(`${ae.fields}${s(t)}`)}}),se=e=>({setup:{status:()=>e(a.setup),complete:t=>e(a.setup,{method:`POST`,body:t})},auth:{csrf:()=>e(a.csrf),login:t=>e(a.login,{method:`POST`,body:t}),logout:()=>e(a.logout,{method:`POST`}),me:()=>e(a.me),updateProfile:t=>e(a.me,{method:`PATCH`,body:t}),changePassword:t=>e(a.password,{method:`POST`,body:t}),requestPasswordReset:t=>e(a.passwordReset,{method:`POST`,body:t}),confirmPasswordReset:t=>e(a.passwordResetConfirm,{method:`POST`,body:t})},sessions:{list:()=>e(a.sessions),revoke:t=>e(o(a.sessions,t),{method:`DELETE`})},users:{list:()=>e(a.users),get:t=>e(o(a.users,t)),update:(t,n)=>e(o(a.users,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.users,t),{method:`DELETE`}),revokeSessions:t=>e(`${o(a.users,t)}/sessions`,{method:`DELETE`})},invitations:{list:()=>e(a.invitations),create:t=>e(a.invitations,{method:`POST`,body:t}),revoke:t=>e(o(a.invitations,t),{method:`DELETE`}),link:t=>e(`${o(a.invitations,t)}/link`,{method:`POST`}),inspect:t=>e(a.inspectInvitation,{method:`POST`,body:{token:t}}),accept:t=>e(a.acceptInvitation,{method:`POST`,body:t})},roles:{list:()=>e(a.roles),get:t=>e(o(a.roles,t)),create:t=>e(a.roles,{method:`POST`,body:t}),update:(t,n)=>e(o(a.roles,t),{method:`PATCH`,body:n}),remove:t=>e(o(a.roles,t),{method:`DELETE`})},tokens:{list:()=>e(a.tokens),create:t=>e(a.tokens,{method:`POST`,body:t}),revoke:t=>e(o(a.tokens,t),{method:`DELETE`})},audit:{list:(t={})=>e(`${a.audit}${s(t)}`)},...ne(e),...S(e),...y(e),...x(e),...T(e),...c(e),...p(e),...oe(e),...ie(e),...u(e)}),O={register:`/api/app-auth/register`,login:`/api/app-auth/login`,refresh:`/api/app-auth/refresh`,logout:`/api/app-auth/logout`,me:`/api/app-auth/me`,password:`/api/app-auth/me/password`,confirmEmail:`/api/app-auth/confirm-email`,resendConfirmation:`/api/app-auth/confirm-email/resend`,passwordReset:`/api/app-auth/password-reset`,passwordResetConfirm:`/api/app-auth/password-reset/confirm`,providers:`/api/app-auth/providers`,oauthExchange:`/api/app-auth/oauth/exchange`},ce=(e,t)=>({register:t=>e(O.register,{method:`POST`,body:t}),login:t=>e(O.login,{method:`POST`,body:t}),refresh:t=>e(O.refresh,{method:`POST`,body:{refreshToken:t}}),logout:t=>e(O.logout,{method:`POST`,body:{refreshToken:t}}),me:()=>e(O.me),updateMe:t=>e(O.me,{method:`PATCH`,body:t}),changePassword:t=>e(O.password,{method:`POST`,body:t}),deleteMe:(t={})=>e(O.me,{method:`DELETE`,body:t}),confirmEmail:t=>e(O.confirmEmail,{method:`POST`,body:{token:t}}),resendConfirmation:t=>e(O.resendConfirmation,{method:`POST`,body:{email:t}}),requestPasswordReset:t=>e(O.passwordReset,{method:`POST`,body:{email:t}}),confirmPasswordReset:t=>e(O.passwordResetConfirm,{method:`POST`,body:t}),providers:async()=>(await e(O.providers)).providers,oauthStartUrl:(e,n,r)=>`${t.replace(/\/+$/,``)}/api/app-auth/oauth/${e}/start?redirectTo=${encodeURIComponent(n)}&codeChallenge=${encodeURIComponent(r)}`,exchangeCode:(t,n)=>e(O.oauthExchange,{method:`POST`,body:{code:t,codeVerifier:n}})}),k=`shapio`,A={site:e=>e===void 0?`${k}:site`:`${k}:site:${e}`,model:e=>`${k}:${e}`,entry:(e,t)=>`${k}:${e}:${t}`},le=()=>{try{return typeof process<`u`&&!!{}.NEXT_RUNTIME}catch{return!1}},j=({client:e,read:t,tags:n,pinned:r,drafts:i=!1})=>{if(i)return e!==void 0&&e!==!1||t!==void 0&&t!==!1||le()?{cache:`no-store`}:{};if(t===!1||t===void 0&&e===!1)return{};let a=e===!1?t:t===void 0?e:{...e,...t};if(a===void 0&&!le())return{};if(r&&t?.cache===void 0)return{cache:`force-cache`,next:{tags:n}};let o=a?.cache,s=a?.revalidate;return{...o===void 0?{}:{cache:o},next:{tags:n,...s===void 0?{}:{revalidate:s}}}},M=`/api/content`,N=e=>`${M}/${encodeURIComponent(e)}`,ue=({snapshot:e,richText:t,seo:n,...r},i)=>{let a=[...e===void 0?[]:[`snapshot=${encodeURIComponent(String(e))}`],...t===void 0?[]:[`richText=${encodeURIComponent(t)}`],...n===void 0?[]:[`seo=${encodeURIComponent(n)}`],...i?[`publicationState=draft`]:[]],o=h(r);return a.length===0?o:o?`${o}&${a.join(`&`)}`:`?${a.join(`&`)}`},de=()=>Promise.reject(Error("Drafts mode reads saved drafts, which have no publication snapshot: leave `snapshot` out when the client has `drafts: true`")),fe=(e,t)=>{let{drafts:n}=t,r=(e,r,{next:i})=>j({client:t.next,read:i,tags:e,pinned:r.snapshot!==void 0,drafts:n}),i=(t,i,a,o)=>n&&a.snapshot!==void 0?de():e(`${t}${ue(a,n)}`,r(i,a,o)),a=A.site(t.site);return{list:(e,t={},n={})=>i(N(e),[a,A.model(e)],t,n),singleton:(e,t={},n={})=>i(N(e),[a,A.model(e)],t,n),get:(e,t,n={},r={})=>i(`${N(e)}/${encodeURIComponent(t)}`,[a,A.model(e),A.entry(e,t)],n,r)}},P=`/api/site`,pe=(e,t)=>({get:({next:n}={})=>e(P,j({client:t.next,read:n,tags:[A.site(t.site)],pinned:!1,drafts:t.drafts}))}),F={current:`/api/snapshots/current`,changes:`/api/snapshots/changes`},me=e=>{let t=t=>e(`${F.changes}${s(t)}`);return{current:()=>e(F.current),changes:t,allChanges:async e=>{let n=[],r=await t(e);for(n.push(...r.items);r.nextCursor!==null;)r=await t({...e,to:r.to,after:r.nextCursor}),n.push(...r.items);return{from:r.from,to:r.to,schemaVersions:r.schemaVersions,items:n}}}},he=(e,{site:t,next:n,drafts:r=!1}={})=>{let i={site:t,next:n,drafts:r};return{delivery:fe(e,i),site:pe(e,i),snapshots:me(e)}},ge=e=>{if(typeof e!=`object`||!e||!(`error`in e))return!1;let{error:t}=e;return typeof t==`object`&&!!t&&typeof t.code==`string`&&typeof t.message==`string`},I=class extends Error{status;code;details;constructor(e,t){let n=ge(t)?t.error:void 0;super(n?.message??`Request failed with status ${e}`),this.name=`ShapioApiError`,this.status=e,this.code=n?.code??`HTTP_${e}`,this.details=n?.details}},_e=`site`,ve=[`${M}/`,`${M}?`,`/api/snapshots/`,`${P}?`],ye=(e,t)=>e===`GET`&&(t===`/api/content`||t===`/api/site`||Object.values(F).some(e=>t===e)||ve.some(e=>t.startsWith(e))),be=e=>{let t=e.indexOf(`?`);return t!==-1&&new URLSearchParams(e.slice(t+1)).has(`site`)},xe=(e,t,n)=>{if(e===void 0||be(n))return{path:n,headers:{}};if(ye(t,n)){let t=`${_e}=${encodeURIComponent(e)}`;return{path:`${n}${n.includes(`?`)?`&`:`?`}${t}`,headers:{}}}return{path:n,headers:{[re]:e}}},Se=async e=>{let t=await e.text();if(t.length!==0)try{return JSON.parse(t)}catch{return t}},Ce=({baseUrl:e,token:t,fetch:n,credentials:r,headers:i,site:a})=>{let o=e.replace(/\/+$/,``);return async(e,{method:s=`GET`,body:c,signal:l,cache:u,next:d}={})=>{let{path:f,headers:p}=xe(a,s,e),m={accept:`application/json`,...p,...i?.()};t&&(m.authorization=`Bearer ${t}`),c!==void 0&&(m[`content-type`]=`application/json`);let h={method:s,headers:m,...c===void 0?{}:{body:JSON.stringify(c)},...l?{signal:l}:{},...r?{credentials:r}:{},...u?{cache:u}:{},...d?{next:d}:{}},g=await n(`${o}${f}`,h),_=await Se(g);if(!g.ok)throw new I(g.status,_);return _}},we=({baseUrl:e,token:t,fetch:n=globalThis.fetch,credentials:r,headers:i,site:a,next:o,drafts:s})=>{let c=Ce({baseUrl:e,token:t,fetch:n,credentials:r,headers:i,site:a}),l=he(c,{site:a,next:o,...s===void 0?{}:{drafts:s}});return{request:c,system:{health:e=>c(`/api/health`,e?{signal:e}:{}),ready:e=>c(`/api/ready`,e?{signal:e}:{}),version:e=>c(`/api/version`,e?{signal:e}:{})},delivery:l.delivery,site:l.site,admin:se(c),snapshots:l.snapshots,appAuth:ce(c,e)}},L=e(n()),Te=i(),R=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);W(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},z={},B=(e,t,n,r)=>{W(n)&&z[n]||(W(n)&&(z[n]=new Date),R(e,t,n,r))},V=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},H=(e,t,n)=>{e.loadNamespaces(t,V(e,n))},U=(e,t,n,r)=>{if(W(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return H(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,V(e,r))},Ee=(e,t,n={})=>!t.languages||!t.languages.length?(B(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),W=e=>typeof e==`string`,G=e=>typeof e==`object`&&!!e,De=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Oe={"&amp;":`&`,"&#38;":`&`,"&lt;":`<`,"&#60;":`<`,"&gt;":`>`,"&#62;":`>`,"&apos;":`'`,"&#39;":`'`,"&quot;":`"`,"&#34;":`"`,"&nbsp;":` `,"&#160;":` `,"&copy;":`©`,"&#169;":`©`,"&reg;":`®`,"&#174;":`®`,"&hellip;":`…`,"&#8230;":`…`,"&#x2F;":`/`,"&#47;":`/`},ke=e=>Oe[e],K=e=>e.replace(De,ke),q={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:K,transDefaultProps:void 0},Ae=(e={})=>{q={...q,...e}},J=()=>q,Y,je=e=>{Y=e},X=()=>Y,Me=(0,L.createContext)(),Ne=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Pe={t:(e,t)=>{if(W(t))return t;if(G(t)&&W(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Fe=()=>()=>{},Ie=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,L.useContext)(Me)||{},a=n||r||X();a&&!a.reportNamespaces&&(a.reportNamespaces=new Ne),a||B(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`);let o=(0,L.useMemo)(()=>({...J(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=W(l)?[l]:l||[`translation`],d=(0,L.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,L.useRef)(0),p=(0,L.useCallback)(e=>{if(!a)return Fe;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,L.useRef)(),h=(0,L.useCallback)(()=>{if(!a)return Pe;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>Ee(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,L.useState)(0),{t:v,ready:y}=(0,Te.useSyncExternalStore)(p,h,h);(0,L.useEffect)(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?U(a,t.lng,d,e):H(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=(0,L.useRef)(null),S=(0,L.useRef)(),C=e=>`${e.language}|${e.resolvedLanguage}|${e.languages?.join(`,`)}`,w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,L.useMemo)(()=>{let e=b,t=e&&C(e),n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=w(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(B(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y){let e=!1;try{e=!1}catch{}throw e&&B(a,`SUSPENDED_WHILE_LOADING`,`useTranslation: suspended while translations are loading (useSuspense is true by default). Add a <Suspense> boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook`),new Promise(e=>{let n=()=>e();t.lng?U(a,t.lng,d,n):H(a,d,n)})}return T},Le=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function Re(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:Le(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var ze=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},Be=e=>{let t=ze(e);return t.charAt(0).toUpperCase()+t.slice(1)},Z=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Q={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function $(e){return e!=null}function Ve(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Q.width,a=e.size??e.height??Q.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Z(...c):Z(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Q[`stroke-width`])*Number(e.size??e.width??Q.width)/Number(t.size??t.width??Q.width):t.strokeWidth??Q[`stroke-width`];return[`svg`,{...Object.entries(Q).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&$(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&$(t.width)&&{[r(`width`)]:t.width},...`height`in t&&$(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function He(e,t={}){return Ve(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Ue=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},We=(0,L.createContext)({}),Ge=()=>(0,L.useContext)(We),Ke=(0,L.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=Ge()??{},y=!!c||Ue(d),[b,x,S=[]]=He(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:Z(v,s),hasA11yProp:y,attributes:d});return(0,L.createElement)(b,{ref:f,...x},[...S.map(([e,t])=>(0,L.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function qe(e,t=[],n=[]){let r=typeof e==`string`?Re(e,t,n):e,i=(0,L.forwardRef)(({className:e,...t},n)=>(0,L.createElement)(Ke,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=Be(r.name)),i}export{a as _,je as a,K as c,R as d,B as f,w as g,C as h,X as i,G as l,I as m,Ie as n,J as o,we as p,Me as r,Ae as s,qe as t,W as u,i as v};
2
- //# sourceMappingURL=createLucideIcon-CqygG5K6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createLucideIcon-CqygG5K6.js","names":["entryPath","createContext","useContext","useMemo","useRef","useCallback","useState","useSyncExternalStore","createContext","useContext","forwardRef","createElement","forwardRef","createElement","__toESM","require_react","require_use_sync_external_store_shim_production","__commonJSMin","React","is","x","y","objectIs","useState","useEffect","useLayoutEffect","useDebugValue","useSyncExternalStore$2","value","getSnapshot","_useState","inst","forceUpdate","checkIfSnapshotChanged","subscribe","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","require_shim","ADMIN_PATHS","withId","base","id","toQueryString","params","key","query","serialised","createAppUsersApi","request","ASSIST_PATHS","createAssistApi","runId","setPath","draftPath","definitionId","createChangeSetsApi","itemId","seq","appendFilter","item","prefix","index","child","toContentQueryString","term","field","path","modelPath","modelKey","entryPath$1","revisionsPath","createContentApi","revisionId","entryPath","createEditingApi","createMediaApi","force","grantId","buildUploadForm","form","name","grant","file","filename","resolveUploadUrl","ownRoute","url","apiBaseUrl","createPublishingApi","deliveryId","DEFINITION_PATHS","createDefinitionApi","category","options","scope","createSchemaApi","changeId","code","acknowledgeDestructive","SITES_PATHS","SITE_HEADER","sitePath","createSitesApi","USAGE_PATHS","createUsageApi","createAdminApi","APP_AUTH_PATHS","createAppAuthApi","baseUrl","provider","redirectTo","codeChallenge","TAG_PREFIX","shapioTags","siteKey","routeKey","entryId","isNextRuntime","nextFetchInit","drafts","client","read","configured","pinned","cache","revalidate","DELIVERY_PATH","routePath","deliveryQueryString","extra","snapshot","richText","seo","draftsPinned","createDeliveryApi","cacheContext","fetchInit","next","tags","siteTag","apiKey","DELIVERY_SITE_PATH","createSiteApi","SNAPSHOT_PATHS","createSnapshotsApi","changes","items","page","createDeliveryClient","isErrorBody","error","ShapioApiError","parsed","body","status","SITE_QUERY_PARAMETER","DELIVERY_READ_PREFIXES","isDeliveryRead","method","snapshotPath","namesSite","applySite","site","parameter","parseBody","text","response","createRequest","origin","siteHeaders","requestPath","requestHeaders","headers","token","init","signal","credentials","fetch","createClient","reads","import_react","import_shim","warn","args","msg","rest","i18n","isString","alreadyWarned","warnOnce","loadedClb","cb","initialized","loadNamespaces","ns","loadLanguages","lng","n","hasLoadedNamespace","i18nInstance","loadNotPending","obj","isObject","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","m","unescape","defaultOptions","setDefaults","getDefaults","setI18n","instance","getI18n","I18nContext","ReportNamespaces","namespaces","notReadySnapshot","optsOrDefaultValue","k","last","dummySubscribe","useTranslation","i18nFromProps","props","i18nFromContext","defaultNSFromContext","i18nOptions","nsOrContext","unstableNamespaces","revisionRef","wrappedCallback","callback","bindI18n","bindI18nStore","snapshotRef","calculatedReady","currentLng","currentRevision","lastSnapshot","keyPrefix","newSnapshot","loadCount","setLoadCount","ready","useSuspense","onLoaded","c","finalI18n","wrapperRef","wrapperLangRef","languageKey","createI18nWrapper","descriptors","original","wrapper","ret","lang","i18nWrapper","effectiveT","t","arr","inDevelopment","resolve","toKebabCase","string","toLucideIconData","iconNode","iconName","aliases","toCamelCase","out","upperNext","ch","toPascalCase","camelCase","mergeClasses","classes","className","array","defaultAttributes","isDefined","buildLucideIconNode","attributeNames","getAttributeName","attributeName","viewBoxWidth","icon","\"width\"","viewBoxHeight","\"height\"","aliasClassNames","alias","iconClassNames","classNamesFromClassName","calculatedStrokeWidth","attrName","attrs","children","nextAttrs","buildLucideIconForReact","hasA11yProp","prop","LucideContext","useLucideContext","Icon","contextSize","contextStrokeWidth","contextAbsoluteStrokeWidth","contextNonScalingStroke","contextColor","contextClass","hasAccessibleProp","svgAttributes","builtIconNode","color","width","size","height","strokeWidth","absoluteStrokeWidth","nonScalingStroke","tag","createLucideIcon","iconData","iconDataOrName","Component"],"sources":["../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../../node_modules/.pnpm/use-sync-external-store@1.7.0_react@19.3.0/node_modules/use-sync-external-store/shim/index.js","../../../../packages/client/src/admin/paths.ts","../../../../packages/client/src/admin/query.ts","../../../../packages/client/src/admin/appUsers.ts","../../../../packages/client/src/admin/assist.ts","../../../../packages/client/src/admin/changeSets.ts","../../../../packages/client/src/admin/contentQuery.ts","../../../../packages/client/src/admin/content.ts","../../../../packages/client/src/admin/editing.ts","../../../../packages/client/src/admin/media.ts","../../../../packages/client/src/admin/publishing.ts","../../../../packages/client/src/admin/schema.ts","../../../../packages/client/src/admin/sites.ts","../../../../packages/client/src/admin/usage.ts","../../../../packages/client/src/admin/index.ts","../../../../packages/client/src/appAuth/index.ts","../../../../packages/client/src/nextCache.ts","../../../../packages/client/src/delivery.ts","../../../../packages/client/src/siteDelivery.ts","../../../../packages/client/src/snapshots.ts","../../../../packages/client/src/deliveryClient.ts","../../../../packages/client/src/errors.ts","../../../../packages/client/src/site.ts","../../../../packages/client/src/request.ts","../../../../packages/client/src/client.ts","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/utils.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/unescape.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/defaults.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/i18nInstance.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/context.js","../../../../node_modules/.pnpm/react-i18next@17.0.15_i18next@26.4.2_typescript@6.0.3__react-dom@19.3.0_react@19.3.0__react@19.3.0_typescript@6.0.3/node_modules/react-i18next/dist/es/useTranslation.js","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/toLucideIconData.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/build/defaultAttributes.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconNode.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/build/buildLucideIconForReact.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/context.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/Icon.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/createLucideIcon.mjs"],"sourcesContent":["/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/** Every admin route the client calls (packages B, D, F and G, `apps/api/src/routes/admin/**`). */\nexport const ADMIN_PATHS = {\n setup: '/api/admin/setup',\n csrf: '/api/admin/auth/csrf',\n login: '/api/admin/auth/login',\n logout: '/api/admin/auth/logout',\n me: '/api/admin/auth/me',\n password: '/api/admin/auth/me/password',\n sessions: '/api/admin/auth/sessions',\n passwordReset: '/api/admin/auth/password-reset',\n passwordResetConfirm: '/api/admin/auth/password-reset/confirm',\n users: '/api/admin/users',\n invitations: '/api/admin/invitations',\n inspectInvitation: '/api/admin/invitations/inspect',\n acceptInvitation: '/api/admin/invitations/accept',\n roles: '/api/admin/roles',\n tokens: '/api/admin/tokens',\n audit: '/api/admin/audit',\n models: '/api/admin/models',\n components: '/api/admin/components',\n schema: '/api/admin/schema',\n schemaChanges: '/api/admin/schema/changes',\n schemaExport: '/api/admin/schema/export',\n schemaApply: '/api/admin/schema/apply',\n schemaSettings: '/api/admin/schema/settings',\n locales: '/api/admin/locales',\n mediaFolders: '/api/admin/media/folders',\n mediaAssets: '/api/admin/media/assets',\n mediaUploads: '/api/admin/media/uploads',\n appUsers: '/api/admin/app-users',\n appRoles: '/api/admin/app-roles',\n content: '/api/admin/content',\n contentCounts: '/api/admin/content-counts',\n contentHealth: '/api/admin/content-health',\n presence: '/api/admin/presence',\n editorManifest: '/api/admin/extensions/editors',\n extensionThemes: '/api/admin/extensions/themes',\n jobs: '/api/admin/jobs',\n schedules: '/api/admin/publishing/schedules',\n changeSets: '/api/admin/change-sets',\n snapshots: '/api/admin/snapshots',\n webhooks: '/api/admin/webhooks',\n deploymentConnections: '/api/admin/deployments/connections',\n deploymentRuns: '/api/admin/deployments/runs',\n preview: '/api/admin/preview',\n previewTokens: '/api/admin/preview/tokens',\n} as const;\n\nexport const withId = (base: string, id: string) => `${base}/${encodeURIComponent(id)}`;\n","type QueryValue = string | number | boolean | null | undefined;\n\n/** Serialises defined values into a `?a=1&b=2` string (empty when nothing is set). */\nexport const toQueryString = (query: Readonly<Record<string, QueryValue>>): string => {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null && value !== '') {\n params.set(key, String(value));\n }\n }\n const serialised = params.toString();\n return serialised ? `?${serialised}` : '';\n};\n","import type { RequestFn } from '../request.js';\nimport type {\n AdminAppUser,\n AppRole,\n AppUserPage,\n AppUserQuery,\n CreateAppRoleInput,\n UpdateAppRoleInput,\n UpdateAppUserInput,\n} from './appUsersTypes.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { toQueryString } from './query.js';\n\n/** App users (Users → App users) and app roles (Settings → Roles → App roles). */\nexport const createAppUsersApi = (request: RequestFn) => ({\n appUsers: {\n list: (query: AppUserQuery = {}) =>\n request<AppUserPage>(`${ADMIN_PATHS.appUsers}${toQueryString(query)}`),\n get: (id: string) => request<AdminAppUser>(withId(ADMIN_PATHS.appUsers, id)),\n /** Block/unblock and replace custom roles. Blocking takes effect on the user's next request. */\n update: (id: string, body: UpdateAppUserInput) =>\n request<AdminAppUser>(withId(ADMIN_PATHS.appUsers, id), { method: 'PATCH', body }),\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.appUsers, id), { method: 'DELETE' }),\n /** 409 NOT_CONFIGURED without APP_AUTH_CONFIRM_EMAIL_URL; 409 ALREADY_CONFIRMED. */\n resendConfirmation: (id: string) =>\n request<void>(`${withId(ADMIN_PATHS.appUsers, id)}/resend-confirmation`, { method: 'POST' }),\n },\n appRoles: {\n list: () => request<AppRole[]>(ADMIN_PATHS.appRoles),\n get: (id: string) => request<AppRole>(withId(ADMIN_PATHS.appRoles, id)),\n create: (body: CreateAppRoleInput) => request<AppRole>(ADMIN_PATHS.appRoles, { method: 'POST', body }),\n /** 409 VERSION_CONFLICT when `expectedVersion` is stale. */\n update: (id: string, body: UpdateAppRoleInput) =>\n request<AppRole>(withId(ADMIN_PATHS.appRoles, id), { method: 'PATCH', body }),\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.appRoles, id), { method: 'DELETE' }),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport type {\n AltTextInput,\n AltTextResult,\n AssistStatus,\n AssistTextResult,\n ContentOpsInput,\n ContentOpsRun,\n RewriteInput,\n SchemaDraftInput,\n SchemaDraftResult,\n SummarizeInput,\n TranslateInput,\n TranslateResult,\n} from './assistTypes.js';\nimport { withId } from './paths.js';\n\nexport const ASSIST_PATHS = {\n status: '/api/admin/assist/status',\n altText: '/api/admin/assist/alt-text',\n summarize: '/api/admin/assist/summarize',\n translate: '/api/admin/assist/translate',\n rewrite: '/api/admin/assist/rewrite',\n schemaDraft: '/api/admin/assist/schema/draft',\n contentOpsPropose: '/api/admin/assist/content-ops/propose',\n contentOps: '/api/admin/assist/content-ops',\n} as const;\n\n/** Editor assists with the instance's own model provider (documentation/assist.md). */\nexport const createAssistApi = (request: RequestFn) => ({\n assist: {\n status: () => request<AssistStatus>(ASSIST_PATHS.status),\n altText: (body: AltTextInput) => request<AltTextResult>(ASSIST_PATHS.altText, { method: 'POST', body }),\n summarize: (body: SummarizeInput) =>\n request<AssistTextResult>(ASSIST_PATHS.summarize, { method: 'POST', body }),\n translate: (body: TranslateInput) =>\n request<TranslateResult>(ASSIST_PATHS.translate, { method: 'POST', body }),\n rewrite: (body: RewriteInput) =>\n request<AssistTextResult>(ASSIST_PATHS.rewrite, { method: 'POST', body }),\n schemaDraft: (body: SchemaDraftInput) =>\n request<SchemaDraftResult>(ASSIST_PATHS.schemaDraft, { method: 'POST', body }),\n /** Starts a background run (202); poll it with `contentOpsRun`. */\n proposeContentOps: (body: ContentOpsInput) =>\n request<{ runId: string }>(ASSIST_PATHS.contentOpsPropose, { method: 'POST', body }),\n contentOpsRun: (runId: string) => request<ContentOpsRun>(withId(ASSIST_PATHS.contentOps, runId)),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport type {\n AddChangeSetEntryInput,\n ChangeSet,\n ChangeSetQuery,\n ChangeSetReview,\n ChangeSetSummary,\n ChangeSetTimelineEvent,\n CreateChangeSetInput,\n PutSchemaDraftInput,\n ScheduleChangeSetInput,\n SchemaDraft,\n ShipChangeSetInput,\n Snapshot,\n SnapshotPage,\n SnapshotQuery,\n UnassignedEntry,\n UpdateChangeSetInput,\n} from './changeSetTypes.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport type { Page } from './publishingTypes.js';\nimport { toQueryString } from './query.js';\n\nconst setPath = (id: string) => withId(ADMIN_PATHS.changeSets, id);\nconst draftPath = (id: string, definitionId: string) =>\n `${setPath(id)}/schema/${encodeURIComponent(definitionId)}`;\n\n/** Change sets (schema + content shipped as one snapshot) and the snapshot ledger. */\nexport const createChangeSetsApi = (request: RequestFn) => ({\n changeSets: {\n list: (query: ChangeSetQuery = {}) =>\n request<Page<ChangeSetSummary>>(`${ADMIN_PATHS.changeSets}${toQueryString(query)}`),\n get: (id: string) => request<ChangeSet>(setPath(id)),\n create: (body: CreateChangeSetInput) =>\n request<ChangeSet>(ADMIN_PATHS.changeSets, { method: 'POST', body }),\n update: (id: string, body: UpdateChangeSetInput) =>\n request<ChangeSet>(setPath(id), { method: 'PATCH', body }),\n /** Keeps the set as history (`discarded`) and deletes its schema drafts. */\n discard: (id: string) => request<ChangeSet>(`${setPath(id)}/discard`, { method: 'POST' }),\n addEntry: (id: string, body: AddChangeSetEntryInput) =>\n request<ChangeSet>(`${setPath(id)}/items`, { method: 'POST', body }),\n removeItem: (id: string, itemId: string) =>\n request<ChangeSet>(`${setPath(id)}/items/${encodeURIComponent(itemId)}`, { method: 'DELETE' }),\n getSchemaDraft: (id: string, definitionId: string) => request<SchemaDraft>(draftPath(id, definitionId)),\n putSchemaDraft: (id: string, definitionId: string, body: PutSchemaDraftInput) =>\n request<SchemaDraft>(draftPath(id, definitionId), { method: 'PUT', body }),\n removeSchemaDraft: (id: string, definitionId: string) =>\n request<ChangeSet>(draftPath(id, definitionId), { method: 'DELETE' }),\n review: (id: string) => request<ChangeSetReview>(`${setPath(id)}/review`),\n /**\n * Resolves with the set: `shipped` (or `failed`) when it shipped inline, `shipping` (HTTP 202) when\n * prerequisites run in the background. Poll `get` until it leaves `shipping`.\n */\n ship: (id: string, body: ShipChangeSetInput) =>\n request<ChangeSet>(`${setPath(id)}/ship`, { method: 'POST', body }),\n schedule: (id: string, body: ScheduleChangeSetInput) =>\n request<ChangeSet>(`${setPath(id)}/schedule`, { method: 'POST', body }),\n unschedule: (id: string) => request<ChangeSet>(`${setPath(id)}/unschedule`, { method: 'POST' }),\n timeline: async (id: string) =>\n (await request<{ items: ChangeSetTimelineEvent[] }>(`${setPath(id)}/timeline`)).items,\n unassigned: (query: { cursor?: string; limit?: number } = {}) =>\n request<Page<UnassignedEntry>>(`${ADMIN_PATHS.changeSets}/unassigned${toQueryString(query)}`),\n },\n snapshots: {\n list: (query: SnapshotQuery = {}) =>\n request<SnapshotPage>(`${ADMIN_PATHS.snapshots}${toQueryString(query)}`),\n get: (seq: number) => request<Snapshot>(`${ADMIN_PATHS.snapshots}/${seq}`),\n /** Creates an open restore change set (reviewable); nothing goes live until it ships. */\n restore: (seq: number) =>\n request<ChangeSet>(`${ADMIN_PATHS.snapshots}/${seq}/restore`, { method: 'POST' }),\n },\n});\n","import type { ContentFilter, ContentListQuery } from './contentTypes.js';\n\n/**\n * Serialises a content list query into the bracket querystring the content compiler parses\n * (`filters[title][$eq]=A&sort=title:asc&page=2`). Lists repeat the key (`filters[id][$in]=a&filters[id][$in]=b`).\n */\nconst appendFilter = (params: URLSearchParams, prefix: string, value: unknown) => {\n if (value === undefined || value === null) {\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((item: unknown, index) => {\n if (typeof item === 'object' && item !== null) {\n appendFilter(params, `${prefix}[${index}]`, item);\n } else {\n params.append(prefix, String(item));\n }\n });\n return;\n }\n if (typeof value === 'object') {\n for (const [key, child] of Object.entries(value as ContentFilter)) {\n appendFilter(params, `${prefix}[${key}]`, child);\n }\n return;\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n params.append(prefix, String(value));\n }\n};\n\nexport const toContentQueryString = (query: ContentListQuery = {}): string => {\n const params = new URLSearchParams();\n if (query.filters) {\n appendFilter(params, 'filters', query.filters);\n }\n for (const term of query.sort ?? []) {\n params.append('sort', `${term.field}:${term.direction}`);\n }\n if (query.page !== undefined) {\n params.set('page', String(query.page));\n }\n if (query.pageSize !== undefined) {\n params.set('pageSize', String(query.pageSize));\n }\n if (query.q) {\n params.set('q', query.q);\n }\n if (query.locale) {\n params.set('locale', query.locale);\n }\n for (const field of query.fields ?? []) {\n params.append('fields', field);\n }\n for (const path of query.populate ?? []) {\n params.append('populate', path);\n }\n if (query.status) {\n params.set('status', query.status);\n }\n if (query.author) {\n params.set('author', query.author);\n }\n const serialised = params.toString();\n return serialised ? `?${serialised}` : '';\n};\n","import type { RequestFn } from '../request.js';\nimport { toContentQueryString } from './contentQuery.js';\nimport type {\n AdminEntry,\n AdminEntryPage,\n ContentListQuery,\n CreateEntryInput,\n EditorManifest,\n EntryLocalesInput,\n ExtensionThemeList,\n RevisionDetail,\n RevisionSummary,\n UpdateEntryInput,\n} from './contentTypes.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { toQueryString } from './query.js';\n\nconst modelPath = (modelKey: string) => withId(ADMIN_PATHS.content, modelKey);\nconst entryPath = (modelKey: string, id: string) => withId(modelPath(modelKey), id);\nconst revisionsPath = (modelKey: string, id: string) => `${entryPath(modelKey, id)}/revisions`;\n\n/**\n * Content of any model through the generic admin routes (`/api/admin/content/:modelKey`, where `modelKey`\n * is the model's singular API ID for collections too; only the delivery API uses the plural). Drafts are read\n * and written here; publishing is per locale. Writes carry the draft `version` the editor saw and fail with\n * 409 CONTENT_VERSION_CONFLICT (or SCHEMA_CHANGED) when it moved.\n */\nexport const createContentApi = (request: RequestFn) => ({\n content: {\n list: (modelKey: string, query: ContentListQuery = {}) =>\n request<AdminEntryPage>(`${modelPath(modelKey)}${toContentQueryString(query)}`),\n get: (modelKey: string, id: string, { locale }: { locale?: string } = {}) =>\n request<AdminEntry>(`${entryPath(modelKey, id)}${toQueryString({ locale })}`),\n /** Fully validated (`required` included); 422 CONTENT_INVALID with `details.issues`. */\n create: (modelKey: string, body: CreateEntryInput) =>\n request<AdminEntry>(modelPath(modelKey), { method: 'POST', body }),\n /** Saves a patch of one locale's draft; `autosave` skips `required` and creates no revision. */\n update: (modelKey: string, id: string, body: UpdateEntryInput) =>\n request<AdminEntry>(entryPath(modelKey, id), { method: 'PUT', body }),\n /** 409 ENTRY_REFERENCED with `details.referrers` while other entries point at it. */\n remove: (modelKey: string, id: string) => request<void>(entryPath(modelKey, id), { method: 'DELETE' }),\n duplicate: (modelKey: string, id: string) =>\n request<AdminEntry>(`${entryPath(modelKey, id)}/duplicate`, { method: 'POST' }),\n publish: (modelKey: string, id: string, body: EntryLocalesInput = {}) =>\n request<AdminEntry>(`${entryPath(modelKey, id)}/publish`, { method: 'POST', body }),\n unpublish: (modelKey: string, id: string, body: EntryLocalesInput = {}) =>\n request<AdminEntry>(`${entryPath(modelKey, id)}/unpublish`, { method: 'POST', body }),\n revisions: async (modelKey: string, id: string, { locale }: { locale?: string } = {}) =>\n (\n await request<{ items: RevisionSummary[] }>(\n `${revisionsPath(modelKey, id)}${toQueryString({ locale })}`,\n )\n ).items,\n revision: (modelKey: string, id: string, revisionId: string) =>\n request<RevisionDetail>(withId(revisionsPath(modelKey, id), revisionId)),\n /** Brings an older revision back as the new draft of its locale (a new revision). */\n restore: (modelKey: string, id: string, revisionId: string, expectedVersion: number) =>\n request<AdminEntry>(`${withId(revisionsPath(modelKey, id), revisionId)}/restore`, {\n method: 'POST',\n body: { expectedVersion },\n }),\n },\n extensions: {\n /** Custom field editors the project installed (`shapio.config` + `extensions/editors/*.js`). */\n editors: () => request<EditorManifest>(ADMIN_PATHS.editorManifest),\n /** Admin colour themes the project declares (`shapio.config` `themes`). Public: no session needed. */\n themes: () => request<ExtensionThemeList>(ADMIN_PATHS.extensionThemes),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport type {\n ContentCounts,\n ContentHealthPage,\n ContentHealthQuery,\n ContentHealthSummary,\n EntryPresence,\n ModelPresence,\n PresenceHeartbeatInput,\n PreflightInput,\n PreflightResponse,\n} from './editingTypes.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { toQueryString } from './query.js';\n\nconst entryPath = (base: string, modelKey: string, id: string) => withId(withId(base, modelKey), id);\n\n/** The entry document's endpoints: pre-flight, content health (the Inbox), presence and counts. */\nexport const createEditingApi = (request: RequestFn) => ({\n preflight: {\n /** What publishing these locales would run into, without publishing (no hooks, no locks). */\n run: (modelKey: string, id: string, body: PreflightInput = {}) =>\n request<PreflightResponse>(`${entryPath(ADMIN_PATHS.content, modelKey, id)}/preflight`, {\n method: 'POST',\n body,\n }),\n },\n contentHealth: {\n list: (query: ContentHealthQuery = {}) =>\n request<ContentHealthPage>(`${ADMIN_PATHS.contentHealth}${toQueryString(query)}`),\n summary: () => request<ContentHealthSummary>(`${ADMIN_PATHS.contentHealth}/summary`),\n },\n presence: {\n /** Heartbeat (every 15s while the document is visible); returns who else has the entry open. */\n heartbeat: (modelKey: string, id: string, body: PresenceHeartbeatInput) =>\n request<EntryPresence>(entryPath(ADMIN_PATHS.presence, modelKey, id), { method: 'PUT', body }),\n entry: (modelKey: string, id: string) =>\n request<EntryPresence>(entryPath(ADMIN_PATHS.presence, modelKey, id)),\n /** Everyone editing an entry of the model (list rows). */\n model: (modelKey: string) => request<ModelPresence>(withId(ADMIN_PATHS.presence, modelKey)),\n leave: (modelKey: string, id: string, tabId: string) =>\n request<void>(`${entryPath(ADMIN_PATHS.presence, modelKey, id)}${toQueryString({ tabId })}`, {\n method: 'DELETE',\n }),\n },\n contentCounts: {\n list: () => request<ContentCounts>(ADMIN_PATHS.contentCounts),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport type {\n CreateMediaFolderInput,\n CreateUploadInput,\n MediaAsset,\n MediaAssetPage,\n MediaAssetQuery,\n MediaFolder,\n MediaUsagePage,\n MoveMediaAssetsInput,\n MoveMediaAssetsResult,\n ReplaceUploadInput,\n UpdateMediaAssetInput,\n UpdateMediaFolderInput,\n UploadGrant,\n} from './mediaTypes.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { toQueryString } from './query.js';\n\n/** The media library: folders, assets, and the two-step upload (grant, then confirm). */\nexport const createMediaApi = (request: RequestFn) => ({\n media: {\n folders: {\n /** The whole tree, flat: build it from `parentId`. */\n list: async () => (await request<{ items: MediaFolder[] }>(ADMIN_PATHS.mediaFolders)).items,\n create: (body: CreateMediaFolderInput) =>\n request<MediaFolder>(ADMIN_PATHS.mediaFolders, { method: 'POST', body }),\n /** Rename and/or move; 409 VERSION_CONFLICT when `expectedVersion` is stale. */\n update: (id: string, body: UpdateMediaFolderInput) =>\n request<MediaFolder>(withId(ADMIN_PATHS.mediaFolders, id), { method: 'PATCH', body }),\n /** Only empty folders: 409 FOLDER_NOT_EMPTY otherwise. */\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.mediaFolders, id), { method: 'DELETE' }),\n },\n assets: {\n list: (query: MediaAssetQuery = {}) =>\n request<MediaAssetPage>(`${ADMIN_PATHS.mediaAssets}${toQueryString(query)}`),\n get: (id: string) => request<MediaAsset>(withId(ADMIN_PATHS.mediaAssets, id)),\n update: (id: string, body: UpdateMediaAssetInput) =>\n request<MediaAsset>(withId(ADMIN_PATHS.mediaAssets, id), { method: 'PATCH', body }),\n /** 409 MEDIA_IN_USE when content references the asset; owners may pass `force`. */\n remove: (id: string, { force = false }: { force?: boolean } = {}) =>\n request<void>(\n `${withId(ADMIN_PATHS.mediaAssets, id)}${toQueryString({ force: force || undefined })}`,\n {\n method: 'DELETE',\n },\n ),\n move: (body: MoveMediaAssetsInput) =>\n request<MoveMediaAssetsResult>(`${ADMIN_PATHS.mediaAssets}/move`, { method: 'POST', body }),\n /** \"Used in\": the entries that reference the asset. */\n usage: (id: string) => request<MediaUsagePage>(`${withId(ADMIN_PATHS.mediaAssets, id)}/usage`),\n /** An upload grant that replaces the asset's file and keeps its ID; confirm it like any upload. */\n replace: (id: string, body: ReplaceUploadInput) =>\n request<UploadGrant>(`${withId(ADMIN_PATHS.mediaAssets, id)}/replace`, { method: 'POST', body }),\n },\n uploads: {\n create: (body: CreateUploadInput) =>\n request<UploadGrant>(ADMIN_PATHS.mediaUploads, { method: 'POST', body }),\n /** Step 3: the server checks the stored bytes and records the asset (201 new, 200 replaced). */\n confirm: (grantId: string) =>\n request<MediaAsset>(`${withId(ADMIN_PATHS.mediaUploads, grantId)}/confirm`, { method: 'POST' }),\n },\n },\n});\n\n/** The form for step 2 of an upload: the grant's fields in order, then the file. */\nexport const buildUploadForm = (grant: UploadGrant, file: Blob, filename: string): FormData => {\n const form = new FormData();\n for (const [name, value] of Object.entries(grant.upload.fields)) {\n form.append(name, value);\n }\n form.append(grant.upload.fileField, file, filename);\n return form;\n};\n\n/**\n * Where to send a grant's bytes. Shapio's own upload route (local storage) is addressed through the base URL\n * the caller already talks to, which keeps it reachable when PUBLIC_URL differs from that address (the\n * admin's dev server, a proxy, a container network). Bucket URLs (presigned POST) are used as given.\n */\nexport const resolveUploadUrl = (grant: UploadGrant, apiBaseUrl: string): string => {\n const ownRoute = `/api/media/uploads/${encodeURIComponent(grant.grantId)}`;\n const url = new URL(grant.upload.url);\n const base = apiBaseUrl.endsWith('/') ? apiBaseUrl : `${apiBaseUrl}/`;\n return url.pathname.endsWith(ownRoute) ? new URL(ownRoute.slice(1), base).href : grant.upload.url;\n};\n","import type { RequestFn } from '../request.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport type {\n ConnectionTestResult,\n CreateDeploymentConnectionInput,\n CreatePreviewTokenInput,\n CreateScheduleInput,\n CreateWebhookInput,\n DeploymentConnection,\n DeploymentConnectionCreated,\n DeploymentConnectionUpdated,\n DeploymentRun,\n DeploymentRunQuery,\n Job,\n JobQuery,\n JobSummary,\n OpenPreviewInput,\n OpenPreviewResult,\n PreviewTarget,\n Page,\n PreviewToken,\n PreviewTokenCreated,\n ScheduledPublication,\n ScheduleQuery,\n UpdateDeploymentConnectionInput,\n UpdateWebhookInput,\n Webhook,\n WebhookDelivery,\n WebhookEventType,\n WebhookWithSecret,\n} from './publishingTypes.js';\nimport { toQueryString } from './query.js';\n\n/** Jobs, scheduled publications, webhooks, deployment connections and runs, preview (package H). */\nexport const createPublishingApi = (request: RequestFn) => ({\n jobs: {\n list: (query: JobQuery = {}) => request<Page<Job>>(`${ADMIN_PATHS.jobs}${toQueryString(query)}`),\n summary: () => request<JobSummary>(`${ADMIN_PATHS.jobs}/summary`),\n get: (id: string) => request<Job>(withId(ADMIN_PATHS.jobs, id)),\n /** Dead jobs only: runs again from attempt 1. 409 JOB_NOT_RETRYABLE otherwise. */\n retry: (id: string) => request<Job>(`${withId(ADMIN_PATHS.jobs, id)}/retry`, { method: 'POST' }),\n },\n schedules: {\n list: (query: ScheduleQuery = {}) =>\n request<Page<ScheduledPublication>>(`${ADMIN_PATHS.schedules}${toQueryString(query)}`),\n create: (body: CreateScheduleInput) =>\n request<ScheduledPublication>(ADMIN_PATHS.schedules, { method: 'POST', body }),\n cancel: (id: string) => request<void>(withId(ADMIN_PATHS.schedules, id), { method: 'DELETE' }),\n },\n webhooks: {\n list: () => request<Webhook[]>(ADMIN_PATHS.webhooks),\n events: async () =>\n (await request<{ items: WebhookEventType[] }>(`${ADMIN_PATHS.webhooks}/events`)).items,\n get: (id: string) => request<Webhook>(withId(ADMIN_PATHS.webhooks, id)),\n create: (body: CreateWebhookInput) =>\n request<WebhookWithSecret>(ADMIN_PATHS.webhooks, { method: 'POST', body }),\n update: (id: string, body: UpdateWebhookInput) =>\n request<Webhook>(withId(ADMIN_PATHS.webhooks, id), { method: 'PATCH', body }),\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.webhooks, id), { method: 'DELETE' }),\n rotateSecret: (id: string) =>\n request<WebhookWithSecret>(`${withId(ADMIN_PATHS.webhooks, id)}/rotate-secret`, { method: 'POST' }),\n /** Queues a `webhook.test` delivery; poll the delivery log for its outcome. */\n test: (id: string) =>\n request<WebhookDelivery>(`${withId(ADMIN_PATHS.webhooks, id)}/test`, { method: 'POST' }),\n deliveries: (id: string, query: { cursor?: string; limit?: number } = {}) =>\n request<Page<WebhookDelivery>>(`${withId(ADMIN_PATHS.webhooks, id)}/deliveries${toQueryString(query)}`),\n /** Sends the same payload again as a new delivery. */\n redeliver: (id: string, deliveryId: string) =>\n request<WebhookDelivery>(\n `${withId(ADMIN_PATHS.webhooks, id)}/deliveries/${encodeURIComponent(deliveryId)}/redeliver`,\n { method: 'POST' },\n ),\n },\n deployments: {\n connections: {\n list: () => request<DeploymentConnection[]>(ADMIN_PATHS.deploymentConnections),\n get: (id: string) => request<DeploymentConnection>(withId(ADMIN_PATHS.deploymentConnections, id)),\n create: (body: CreateDeploymentConnectionInput) =>\n request<DeploymentConnectionCreated>(ADMIN_PATHS.deploymentConnections, { method: 'POST', body }),\n update: (id: string, body: UpdateDeploymentConnectionInput) =>\n request<DeploymentConnectionUpdated>(withId(ADMIN_PATHS.deploymentConnections, id), {\n method: 'PATCH',\n body,\n }),\n remove: (id: string) =>\n request<void>(withId(ADMIN_PATHS.deploymentConnections, id), { method: 'DELETE' }),\n test: (id: string) =>\n request<ConnectionTestResult>(`${withId(ADMIN_PATHS.deploymentConnections, id)}/test`, {\n method: 'POST',\n }),\n /** A manual run at the current publication snapshot. */\n trigger: (id: string) =>\n request<DeploymentRun>(`${withId(ADMIN_PATHS.deploymentConnections, id)}/runs`, { method: 'POST' }),\n },\n runs: {\n list: (query: DeploymentRunQuery = {}) =>\n request<Page<DeploymentRun>>(`${ADMIN_PATHS.deploymentRuns}${toQueryString(query)}`),\n get: (id: string) => request<DeploymentRun>(withId(ADMIN_PATHS.deploymentRuns, id)),\n /** A new run (linked by `retryOf`) at the current snapshot. */\n retry: (id: string) =>\n request<DeploymentRun>(`${withId(ADMIN_PATHS.deploymentRuns, id)}/retry`, { method: 'POST' }),\n },\n },\n preview: {\n tokens: {\n list: (query: { entryId?: string } = {}) =>\n request<PreviewToken[]>(`${ADMIN_PATHS.previewTokens}${toQueryString(query)}`),\n create: (body: CreatePreviewTokenInput) =>\n request<PreviewTokenCreated>(ADMIN_PATHS.previewTokens, { method: 'POST', body }),\n revoke: (id: string) => request<void>(withId(ADMIN_PATHS.previewTokens, id), { method: 'DELETE' }),\n },\n /** The site's connections with a preview URL (the entry form's Preview pane). */\n targets: () => request<PreviewTarget[]>(`${ADMIN_PATHS.preview}/targets`),\n /** The entry form's Preview action: a short-lived entry token and the rendered preview URL. */\n open: (body: OpenPreviewInput) =>\n request<OpenPreviewResult>(`${ADMIN_PATHS.preview}/open`, { method: 'POST', body }),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { toQueryString } from './query.js';\nimport type { SchemaApplyInput, SchemaApplyResult, SchemaExport } from './schemaSyncTypes.js';\nimport type {\n ChangeOutcome,\n ChangeScopeInput,\n ChangeScopeOutcome,\n CreateDefinitionInput,\n CreateLocaleInput,\n DefinitionCategory,\n DefinitionPayload,\n DefinitionDetail,\n DefinitionScope,\n DefinitionListItem,\n DefinitionRevision,\n DeleteLocaleResult,\n Locale,\n PlanPreview,\n PlanUpdateInput,\n SchemaChangeJob,\n SchemaSettings,\n SchemaSummary,\n SetDefaultLocaleResult,\n UpdateDefinitionInput,\n UpdateLocaleInput,\n UpdateSchemaSettingsInput,\n} from './schemaTypes.js';\n\nconst DEFINITION_PATHS = {\n model: ADMIN_PATHS.models,\n component: ADMIN_PATHS.components,\n} as const satisfies Record<DefinitionCategory, string>;\n\n/** Models (collections and singletons) and components share one set of endpoints under their own base. */\nexport const createDefinitionApi = (request: RequestFn, category: DefinitionCategory) => {\n const base = DEFINITION_PATHS[category];\n return {\n /** The site's view (shared definitions and its own); `{ scope: 'network' }` lists the shared ones. */\n list: async (options: { scope?: DefinitionScope } = {}) =>\n (await request<{ items: DefinitionListItem[] }>(`${base}${toQueryString(options)}`)).items,\n get: (id: string) => request<DefinitionDetail>(withId(base, id)),\n /** Creates and activates a definition (`pending` when prerequisites must run first). */\n create: (body: CreateDefinitionInput) => request<ChangeOutcome>(base, { method: 'POST', body }),\n /** Plan preview of a create: classification and impact, nothing written. */\n planCreate: (definition: DefinitionPayload, scope?: DefinitionScope) =>\n request<PlanPreview>(`${base}/plan`, {\n method: 'POST',\n body: scope ? { definition, scope } : { definition },\n }),\n /** Shares a definition with all sites, or keeps it on one (needs schema.create on every site). */\n changeScope: (id: string, body: ChangeScopeInput) =>\n request<ChangeScopeOutcome>(`${withId(base, id)}/scope`, { method: 'PUT', body }),\n /** Changes a definition; 409 SCHEMA_VERSION_CONFLICT when `expectedVersion` is stale. */\n update: (id: string, body: UpdateDefinitionInput) =>\n request<ChangeOutcome>(withId(base, id), { method: 'PUT', body }),\n planUpdate: (id: string, body: PlanUpdateInput) =>\n request<PlanPreview>(`${withId(base, id)}/plan`, { method: 'POST', body }),\n /** Soft delete: entries are kept and reappear if the definition is applied again. */\n remove: (id: string, expectedVersion: number) =>\n request<ChangeOutcome>(`${withId(base, id)}${toQueryString({ expectedVersion })}`, {\n method: 'DELETE',\n }),\n revisions: async (id: string) =>\n (await request<{ items: DefinitionRevision[] }>(`${withId(base, id)}/revisions`)).items,\n changes: async (id: string) =>\n (await request<{ items: SchemaChangeJob[] }>(`${withId(base, id)}/changes`)).items,\n };\n};\n\n/** Schema-wide endpoints: the version summary, planned-change status, the read-only lock, locales. */\nexport const createSchemaApi = (request: RequestFn) => ({\n models: createDefinitionApi(request, 'model'),\n components: createDefinitionApi(request, 'component'),\n schema: {\n /** The global schema version and every visible definition's version (cheap; poll it for changes). */\n summary: () => request<SchemaSummary>(ADMIN_PATHS.schema),\n change: (changeId: string) => request<SchemaChangeJob>(withId(ADMIN_PATHS.schemaChanges, changeId)),\n /** Every definition in the pull format, with the schema version they come from (`shapio schema pull`). */\n export: (options: { scope?: DefinitionScope } = {}) =>\n request<SchemaExport>(`${ADMIN_PATHS.schemaExport}${toQueryString(options)}`),\n /** Applies definition files live through the change planner; refuses when the base moved (409). */\n apply: (body: SchemaApplyInput) =>\n request<SchemaApplyResult>(ADMIN_PATHS.schemaApply, { method: 'POST', body }),\n settings: () => request<SchemaSettings>(ADMIN_PATHS.schemaSettings),\n updateSettings: (body: UpdateSchemaSettingsInput) =>\n request<SchemaSettings>(ADMIN_PATHS.schemaSettings, { method: 'PUT', body }),\n },\n locales: {\n list: async () => (await request<{ items: Locale[] }>(ADMIN_PATHS.locales)).items,\n create: (body: CreateLocaleInput) => request<Locale>(ADMIN_PATHS.locales, { method: 'POST', body }),\n update: (code: string, body: UpdateLocaleInput) =>\n request<Locale>(withId(ADMIN_PATHS.locales, code), { method: 'PUT', body }),\n /** A contract change: without `acknowledgeBreaking` the server answers 409 SCHEMA_CHANGE_NOT_ACKNOWLEDGED. */\n setDefault: (code: string, acknowledgeBreaking: boolean) =>\n request<SetDefaultLocaleResult>(`${withId(ADMIN_PATHS.locales, code)}/default`, {\n method: 'POST',\n body: { acknowledgeBreaking },\n }),\n /**\n * Deletes a locale and purges its content. When content exists and `acknowledgeDestructive` is false,\n * the server answers 409 SCHEMA_CHANGE_NOT_ACKNOWLEDGED with `details.plan.impact.affectedHeads`.\n */\n remove: (code: string, acknowledgeDestructive: boolean) =>\n request<DeleteLocaleResult>(\n `${withId(ADMIN_PATHS.locales, code)}${toQueryString({ acknowledgeDestructive: acknowledgeDestructive || undefined })}`,\n { method: 'DELETE' },\n ),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport type {\n CreateSiteInput,\n SetSiteAppRolesInput,\n Site,\n SiteAppRoles,\n UpdateSiteInput,\n} from './sitesTypes.js';\n\nexport const SITES_PATHS = { sites: '/api/admin/sites' } as const;\n\n/** The admin API header that names the site a site-scoped request is about (default: the primary site). */\nexport const SITE_HEADER = 'shapio-site';\n\nconst sitePath = (id: string) => `${SITES_PATHS.sites}/${encodeURIComponent(id)}`;\n\n/** Sites (network routes): listing shows the sites the caller holds a role on; changes need `sites.manage`. */\nexport const createSitesApi = (request: RequestFn) => ({\n sites: {\n list: () => request<Site[]>(SITES_PATHS.sites),\n get: (id: string) => request<Site>(sitePath(id)),\n create: (body: CreateSiteInput) => request<Site>(SITES_PATHS.sites, { method: 'POST', body }),\n update: (id: string, body: UpdateSiteInput) => request<Site>(sitePath(id), { method: 'PATCH', body }),\n /** Only an empty site (409 `SITE_NOT_EMPTY`); never the primary site (409 `SITE_IS_PRIMARY`). */\n remove: (id: string) => request<void>(sitePath(id), { method: 'DELETE' }),\n /** The app roles bound to the site's anonymous callers (`public`) and signed-in app users (`authenticated`). */\n appRoles: {\n get: (id: string) => request<SiteAppRoles>(`${sitePath(id)}/app-roles`),\n /** Replaces both bindings (`roles.manage`). */\n set: (id: string, body: SetSiteAppRolesInput) =>\n request<SiteAppRoles>(`${sitePath(id)}/app-roles`, { method: 'PUT', body }),\n },\n },\n});\n","import type { RequestFn } from '../request.js';\nimport { toQueryString } from './query.js';\nimport type { FieldUsageQuery, FieldUsageResponse } from './usageTypes.js';\n\nexport const USAGE_PATHS = { fields: '/api/admin/usage/fields' } as const;\n\n/** Who reads which fields (needs `tokens.manage`). */\nexport const createUsageApi = (request: RequestFn) => ({\n usage: {\n fields: (query: FieldUsageQuery) =>\n request<FieldUsageResponse>(`${USAGE_PATHS.fields}${toQueryString(query)}`),\n },\n});\n","import type { RequestFn } from '../request.js';\nimport { createAppUsersApi } from './appUsers.js';\nimport { createAssistApi } from './assist.js';\nimport { createChangeSetsApi } from './changeSets.js';\nimport { createContentApi } from './content.js';\nimport { createEditingApi } from './editing.js';\nimport { createMediaApi } from './media.js';\nimport { ADMIN_PATHS, withId } from './paths.js';\nimport { createPublishingApi } from './publishing.js';\nimport { toQueryString } from './query.js';\nimport { createSchemaApi } from './schema.js';\nimport { createSitesApi } from './sites.js';\nimport type {\n AcceptInvitationInput,\n AdminSession,\n AdminUser,\n ApiToken,\n AuditPage,\n AuditQuery,\n ChangePasswordInput,\n CreateApiTokenInput,\n CreatedApiToken,\n CreateRoleInput,\n CsrfResponse,\n InspectInvitationResponse,\n Invitation,\n InvitationLink,\n InviteUserInput,\n LoginInput,\n MeResponse,\n PasswordResetConfirmInput,\n PasswordResetRequestInput,\n Role,\n SessionStarted,\n SetupInput,\n SetupStatusResponse,\n UpdateAdminUserInput,\n UpdateProfileInput,\n UpdateRoleInput,\n} from './types.js';\nimport { createUsageApi } from './usage.js';\n\n/**\n * Admin endpoints: identity (setup, auth, sessions, users, invitations, roles, tokens, audit) and the schema\n * registry (models, components, schema, locales), the media library and content.\n */\nexport const createAdminApi = (request: RequestFn) => ({\n setup: {\n status: () => request<SetupStatusResponse>(ADMIN_PATHS.setup),\n complete: (body: SetupInput) => request<SessionStarted>(ADMIN_PATHS.setup, { method: 'POST', body }),\n },\n auth: {\n csrf: () => request<CsrfResponse>(ADMIN_PATHS.csrf),\n login: (body: LoginInput) => request<SessionStarted>(ADMIN_PATHS.login, { method: 'POST', body }),\n logout: () => request<void>(ADMIN_PATHS.logout, { method: 'POST' }),\n me: () => request<MeResponse>(ADMIN_PATHS.me),\n updateProfile: (body: UpdateProfileInput) =>\n request<AdminUser>(ADMIN_PATHS.me, { method: 'PATCH', body }),\n /** The session is rotated: the response carries the new session's CSRF token. */\n changePassword: (body: ChangePasswordInput) =>\n request<CsrfResponse>(ADMIN_PATHS.password, { method: 'POST', body }),\n requestPasswordReset: (body: PasswordResetRequestInput) =>\n request<void>(ADMIN_PATHS.passwordReset, { method: 'POST', body }),\n confirmPasswordReset: (body: PasswordResetConfirmInput) =>\n request<void>(ADMIN_PATHS.passwordResetConfirm, { method: 'POST', body }),\n },\n sessions: {\n list: () => request<AdminSession[]>(ADMIN_PATHS.sessions),\n revoke: (id: string) => request<void>(withId(ADMIN_PATHS.sessions, id), { method: 'DELETE' }),\n },\n users: {\n list: () => request<AdminUser[]>(ADMIN_PATHS.users),\n get: (id: string) => request<AdminUser>(withId(ADMIN_PATHS.users, id)),\n update: (id: string, body: UpdateAdminUserInput) =>\n request<AdminUser>(withId(ADMIN_PATHS.users, id), { method: 'PATCH', body }),\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.users, id), { method: 'DELETE' }),\n revokeSessions: (id: string) =>\n request<void>(`${withId(ADMIN_PATHS.users, id)}/sessions`, { method: 'DELETE' }),\n },\n invitations: {\n list: () => request<Invitation[]>(ADMIN_PATHS.invitations),\n create: (body: InviteUserInput) => request<Invitation>(ADMIN_PATHS.invitations, { method: 'POST', body }),\n revoke: (id: string) => request<void>(withId(ADMIN_PATHS.invitations, id), { method: 'DELETE' }),\n /** A fresh link to send by hand; any earlier link for this invitation stops working. */\n link: (id: string) =>\n request<InvitationLink>(`${withId(ADMIN_PATHS.invitations, id)}/link`, { method: 'POST' }),\n /** Public: the token travels in the body, never in a URL the server logs. */\n inspect: (token: string) =>\n request<InspectInvitationResponse>(ADMIN_PATHS.inspectInvitation, { method: 'POST', body: { token } }),\n accept: (body: AcceptInvitationInput) =>\n request<SessionStarted>(ADMIN_PATHS.acceptInvitation, { method: 'POST', body }),\n },\n roles: {\n list: () => request<Role[]>(ADMIN_PATHS.roles),\n get: (id: string) => request<Role>(withId(ADMIN_PATHS.roles, id)),\n create: (body: CreateRoleInput) => request<Role>(ADMIN_PATHS.roles, { method: 'POST', body }),\n update: (id: string, body: UpdateRoleInput) =>\n request<Role>(withId(ADMIN_PATHS.roles, id), { method: 'PATCH', body }),\n remove: (id: string) => request<void>(withId(ADMIN_PATHS.roles, id), { method: 'DELETE' }),\n },\n tokens: {\n list: () => request<ApiToken[]>(ADMIN_PATHS.tokens),\n create: (body: CreateApiTokenInput) =>\n request<CreatedApiToken>(ADMIN_PATHS.tokens, { method: 'POST', body }),\n revoke: (id: string) => request<void>(withId(ADMIN_PATHS.tokens, id), { method: 'DELETE' }),\n },\n audit: {\n list: (query: AuditQuery = {}) => request<AuditPage>(`${ADMIN_PATHS.audit}${toQueryString(query)}`),\n },\n ...createSchemaApi(request),\n ...createMediaApi(request),\n ...createContentApi(request),\n ...createEditingApi(request),\n ...createPublishingApi(request),\n ...createAppUsersApi(request),\n ...createChangeSetsApi(request),\n ...createUsageApi(request),\n ...createSitesApi(request),\n ...createAssistApi(request),\n});\n\nexport type AdminApi = ReturnType<typeof createAdminApi>;\nexport { ADMIN_PATHS } from './paths.js';\nexport * from './types.js';\nexport * from './schemaTypes.js';\nexport * from './schemaSyncTypes.js';\nexport * from './mediaTypes.js';\nexport * from './contentTypes.js';\nexport * from './publishingTypes.js';\nexport * from './appUsersTypes.js';\nexport * from './changeSetTypes.js';\nexport * from './usageTypes.js';\nexport * from './sitesTypes.js';\nexport { SITE_HEADER, SITES_PATHS } from './sites.js';\nexport { toContentQueryString } from './contentQuery.js';\nexport { buildUploadForm, resolveUploadUrl } from './media.js';\nexport { HEALTH_RULES } from './editingTypes.js';\nexport { ASSIST_PATHS } from './assist.js';\nexport { CONTENT_OPS_RULES } from './assistTypes.js';\n","import type { RequestFn } from '../request.js';\nimport type {\n AppChangePasswordInput,\n AppLoginInput,\n AppOAuthProvider,\n AppRegisterInput,\n AppRegisterResult,\n AppSession,\n AppUser,\n} from './types.js';\n\nexport const APP_AUTH_PATHS = {\n register: '/api/app-auth/register',\n login: '/api/app-auth/login',\n refresh: '/api/app-auth/refresh',\n logout: '/api/app-auth/logout',\n me: '/api/app-auth/me',\n password: '/api/app-auth/me/password',\n confirmEmail: '/api/app-auth/confirm-email',\n resendConfirmation: '/api/app-auth/confirm-email/resend',\n passwordReset: '/api/app-auth/password-reset',\n passwordResetConfirm: '/api/app-auth/password-reset/confirm',\n providers: '/api/app-auth/providers',\n oauthExchange: '/api/app-auth/oauth/exchange',\n} as const;\n\n/**\n * App-user endpoints. Calls that act as the signed-in user need a client created with `token: accessToken`.\n * `baseUrl` is the client's base URL, used to build the OAuth start link the browser navigates to.\n */\nexport const createAppAuthApi = (request: RequestFn, baseUrl: string) => ({\n register: (body: AppRegisterInput) =>\n request<AppRegisterResult>(APP_AUTH_PATHS.register, { method: 'POST', body }),\n login: (body: AppLoginInput) => request<AppSession>(APP_AUTH_PATHS.login, { method: 'POST', body }),\n refresh: (refreshToken: string) =>\n request<AppSession>(APP_AUTH_PATHS.refresh, { method: 'POST', body: { refreshToken } }),\n /**\n * Signs the account out everywhere: this login's refresh tokens are revoked, and every access token the\n * account holds (on any device) is refused from the next request. Other logins recover with their own\n * refresh token.\n */\n logout: (refreshToken: string) =>\n request<void>(APP_AUTH_PATHS.logout, { method: 'POST', body: { refreshToken } }),\n /** The signed-in user. Answers 401 once the account logged out anywhere, changed its password or was blocked. */\n me: () => request<AppUser>(APP_AUTH_PATHS.me),\n updateMe: (body: { name: string }) => request<AppUser>(APP_AUTH_PATHS.me, { method: 'PATCH', body }),\n /** Returns a new session; every other sign-in of the account is revoked. */\n changePassword: (body: AppChangePasswordInput) =>\n request<AppSession>(APP_AUTH_PATHS.password, { method: 'POST', body }),\n deleteMe: (body: { password?: string } = {}) =>\n request<void>(APP_AUTH_PATHS.me, { method: 'DELETE', body }),\n /** The token from the `#token=` fragment of the confirmation link. */\n confirmEmail: (token: string) =>\n request<void>(APP_AUTH_PATHS.confirmEmail, { method: 'POST', body: { token } }),\n resendConfirmation: (email: string) =>\n request<void>(APP_AUTH_PATHS.resendConfirmation, { method: 'POST', body: { email } }),\n requestPasswordReset: (email: string) =>\n request<void>(APP_AUTH_PATHS.passwordReset, { method: 'POST', body: { email } }),\n confirmPasswordReset: (body: { token: string; password: string }) =>\n request<void>(APP_AUTH_PATHS.passwordResetConfirm, { method: 'POST', body }),\n providers: async () =>\n (await request<{ providers: AppOAuthProvider[] }>(APP_AUTH_PATHS.providers)).providers,\n /**\n * Where to send the browser to sign in with a provider. `codeChallenge` comes from `createPkcePair()`;\n * keep its `codeVerifier` until the browser returns. It comes back to `redirectTo` (an allowed return URL,\n * by default an origin listed in CORS_ORIGINS) with `?code=` (pass it to `exchangeCode`) or `?error=`.\n */\n oauthStartUrl: (provider: AppOAuthProvider, redirectTo: string, codeChallenge: string) =>\n `${baseUrl.replace(/\\/+$/, '')}/api/app-auth/oauth/${provider}/start?redirectTo=${encodeURIComponent(redirectTo)}&codeChallenge=${encodeURIComponent(codeChallenge)}`,\n /** Trades the one-time code for a session. A wrong verifier spends the code: start the sign-in again. */\n exchangeCode: (code: string, codeVerifier: string) =>\n request<AppSession>(APP_AUTH_PATHS.oauthExchange, { method: 'POST', body: { code, codeVerifier } }),\n});\n\nexport type AppAuthApi = ReturnType<typeof createAppAuthApi>;\n","/**\n * Next.js data-cache support for delivery reads. Under Next (`process.env.NEXT_RUNTIME` is set) or when the\n * client is given a `next` option, every delivery read passes `next: { tags }` to `fetch`, so a site can\n * refresh exactly what changed with `revalidateTag`. The cache mode is only set when asked for, except that a\n * read pinned to a publication snapshot is immutable and always `force-cache`, and a drafts-mode read is never\n * cached or tagged (`no-store`). Elsewhere nothing is added.\n */\n\n/** Next's `fetch` cache modes the client passes through. */\nexport type NextCacheMode = 'force-cache' | 'no-store';\n\nexport type NextCacheOptions = {\n /** Next's `fetch` `cache` option. Unset: Next's own default, except pinned snapshot reads (`force-cache`). */\n cache?: NextCacheMode;\n /** Seconds a cached response stays fresh (`next.revalidate`); `false` keeps it until a tag is revalidated. */\n revalidate?: number | false;\n};\n\n/** The last argument of every delivery read: overrides the client's `next` option; `false` adds nothing. */\nexport type DeliveryReadOptions = { next?: NextCacheOptions | false };\n\n/** What a delivery read adds to its `fetch` init. */\nexport type NextFetchInit = {\n cache?: NextCacheMode;\n next?: { tags: string[]; revalidate?: number | false };\n};\n\nconst TAG_PREFIX = 'shapio';\n\n/**\n * The cache tags delivery reads carry (`revalidateTag(shapioTags.entry('articles', id), { expire: 0 })`).\n * Models are named by their route key: a collection's plural API ID, a singleton's API ID.\n */\nexport const shapioTags = {\n /** Every delivery read of the site; `shapio:site` when the client names no site. */\n site: (siteKey?: string) =>\n siteKey === undefined ? `${TAG_PREFIX}:site` : `${TAG_PREFIX}:site:${siteKey}`,\n /** Every read of one model (lists, singletons and its entries). */\n model: (routeKey: string) => `${TAG_PREFIX}:${routeKey}`,\n /** Reads of one entry by its ID. */\n entry: (routeKey: string, entryId: string) => `${TAG_PREFIX}:${routeKey}:${entryId}`,\n} as const;\n\n/** Spelled out so bundlers that inline `process.env.NEXT_RUNTIME` see it; guarded for browsers. */\nconst isNextRuntime = (): boolean => {\n try {\n return typeof process !== 'undefined' && Boolean(process.env.NEXT_RUNTIME);\n } catch {\n return false;\n }\n};\n\n/** What every delivery read needs to tag itself: the client's site, `next` option and drafts mode. */\nexport type DeliveryCacheContext = {\n site: string | undefined;\n next: NextCacheOptions | false | undefined;\n /** Drafts mode (`drafts: true`): reads ask for drafts, which are never cached. */\n drafts: boolean;\n};\n\nexport type NextReadInput = {\n /** The client's `next` option. */\n client: NextCacheOptions | false | undefined;\n /** The read's own `next` option. */\n read: NextCacheOptions | false | undefined;\n tags: string[];\n /** The read names a publication snapshot (immutable). */\n pinned: boolean;\n /** Drafts mode: under Next (or with any `next` option) the read is `no-store` and untagged. */\n drafts?: boolean;\n};\n\n/** The `cache` and `next` fetch options of one delivery read; empty outside Next unless asked for. */\nexport const nextFetchInit = ({\n client,\n read,\n tags,\n pinned,\n drafts = false,\n}: NextReadInput): NextFetchInit => {\n if (drafts) {\n // Drafts change on every save: never in Next's data cache, never tagged, whatever the `next` options say.\n const asked = (client !== undefined && client !== false) || (read !== undefined && read !== false);\n return asked || isNextRuntime() ? { cache: 'no-store' } : {};\n }\n if (read === false || (read === undefined && client === false)) {\n return {};\n }\n const configured = client === false ? read : read === undefined ? client : { ...client, ...read };\n if (configured === undefined && !isNextRuntime()) {\n return {};\n }\n if (pinned && read?.cache === undefined) {\n return { cache: 'force-cache', next: { tags } };\n }\n const cache = configured?.cache;\n const revalidate = configured?.revalidate;\n return {\n ...(cache === undefined ? {} : { cache }),\n next: { tags, ...(revalidate === undefined ? {} : { revalidate }) },\n };\n};\n","import { toContentQueryString } from './admin/contentQuery.js';\nimport type { DeliveryGetQuery, DeliveryItem, DeliveryList, DeliveryListQuery } from './deliveryTypes.js';\nimport {\n nextFetchInit,\n shapioTags,\n type DeliveryCacheContext,\n type DeliveryReadOptions,\n} from './nextCache.js';\nimport type { RequestFn } from './request.js';\n\nexport const DELIVERY_PATH = '/api/content';\n\nconst routePath = (routeKey: string) => `${DELIVERY_PATH}/${encodeURIComponent(routeKey)}`;\n\n/**\n * The content query string plus `snapshot`, `richText` and `seo`, which only delivery reads take, and\n * `publicationState=draft` in drafts mode.\n */\nconst deliveryQueryString = (\n { snapshot, richText, seo, ...query }: DeliveryListQuery,\n drafts: boolean,\n): string => {\n const extra = [\n ...(snapshot === undefined ? [] : [`snapshot=${encodeURIComponent(String(snapshot))}`]),\n ...(richText === undefined ? [] : [`richText=${encodeURIComponent(richText)}`]),\n ...(seo === undefined ? [] : [`seo=${encodeURIComponent(seo)}`]),\n ...(drafts ? ['publicationState=draft'] : []),\n ];\n const base = toContentQueryString(query);\n if (extra.length === 0) {\n return base;\n }\n return base ? `${base}&${extra.join('&')}` : `?${extra.join('&')}`;\n};\n\n/** Drafts cannot be pinned: the server refuses `snapshot` with drafts, and so does the client, before sending. */\nconst draftsPinned = () =>\n Promise.reject(\n new Error(\n 'Drafts mode reads saved drafts, which have no publication snapshot: leave `snapshot` out when the client has `drafts: true`',\n ),\n );\n\n/**\n * Published content, typed by the caller (`delivery.list<Article>('articles', { locale: 'fr', snapshot })`).\n * A collection is read with `list` (a page) and `get` (one entry); a singleton with `singleton`. Each read\n * takes Next.js cache options last and is tagged for `revalidateTag` (nextCache.ts): lists and singletons with\n * the site and model tags, `get` with the entry's tag too. In drafts mode (`drafts: true`) every read asks for\n * drafts (`publicationState=draft`), is never cached or tagged under Next, and refuses a pinned snapshot.\n */\nexport const createDeliveryApi = (request: RequestFn, cacheContext: DeliveryCacheContext) => {\n const { drafts } = cacheContext;\n const fetchInit = (tags: string[], query: DeliveryGetQuery, { next }: DeliveryReadOptions) =>\n nextFetchInit({\n client: cacheContext.next,\n read: next,\n tags,\n pinned: query.snapshot !== undefined,\n drafts,\n });\n const read = <R>(path: string, tags: string[], query: DeliveryListQuery, options: DeliveryReadOptions) =>\n drafts && query.snapshot !== undefined\n ? draftsPinned()\n : request<R>(`${path}${deliveryQueryString(query, drafts)}`, fetchInit(tags, query, options));\n const siteTag = shapioTags.site(cacheContext.site);\n return {\n list: <T = Record<string, unknown>>(\n routeKey: string,\n query: DeliveryListQuery = {},\n options: DeliveryReadOptions = {},\n ) => read<DeliveryList<T>>(routePath(routeKey), [siteTag, shapioTags.model(routeKey)], query, options),\n singleton: <T = Record<string, unknown>>(\n apiKey: string,\n query: DeliveryGetQuery = {},\n options: DeliveryReadOptions = {},\n ) => read<DeliveryItem<T>>(routePath(apiKey), [siteTag, shapioTags.model(apiKey)], query, options),\n get: <T = Record<string, unknown>>(\n routeKey: string,\n id: string,\n query: DeliveryGetQuery = {},\n options: DeliveryReadOptions = {},\n ) =>\n read<DeliveryItem<T>>(\n `${routePath(routeKey)}/${encodeURIComponent(id)}`,\n [siteTag, shapioTags.model(routeKey), shapioTags.entry(routeKey, id)],\n query,\n options,\n ),\n };\n};\n\nexport type DeliveryApi = ReturnType<typeof createDeliveryApi>;\n","import {\n nextFetchInit,\n shapioTags,\n type DeliveryCacheContext,\n type DeliveryReadOptions,\n} from './nextCache.js';\nimport type { RequestFn } from './request.js';\nimport type { DeliverySite } from './seoTypes.js';\n\nexport const DELIVERY_SITE_PATH = '/api/site';\n\n/**\n * The request's site as delivery sees it (key, name, SEO defaults), with the client's token and site. Under\n * Next.js the read carries the site tag (nextCache.ts); in drafts mode it is `no-store` and untagged instead\n * (the site has no draft state, so no `publicationState` is sent).\n */\nexport const createSiteApi = (request: RequestFn, cacheContext: DeliveryCacheContext) => ({\n get: ({ next }: DeliveryReadOptions = {}) =>\n request<DeliverySite>(\n DELIVERY_SITE_PATH,\n nextFetchInit({\n client: cacheContext.next,\n read: next,\n tags: [shapioTags.site(cacheContext.site)],\n pinned: false,\n drafts: cacheContext.drafts,\n }),\n ),\n});\n\nexport type SiteApi = ReturnType<typeof createSiteApi>;\n","import { toQueryString } from './admin/query.js';\nimport type { RequestFn } from './request.js';\nimport type {\n CurrentSnapshot,\n SnapshotChange,\n SnapshotChangesPage,\n SnapshotChangesQuery,\n} from './snapshotTypes.js';\n\nexport const SNAPSHOT_PATHS = {\n current: '/api/snapshots/current',\n changes: '/api/snapshots/changes',\n} as const;\n\n/** Snapshots and the diff between two of them, for incremental site builds (delivery credentials). */\nexport const createSnapshotsApi = (request: RequestFn) => {\n const changes = (query: SnapshotChangesQuery) =>\n request<SnapshotChangesPage>(`${SNAPSHOT_PATHS.changes}${toQueryString(query)}`);\n return {\n current: () => request<CurrentSnapshot>(SNAPSHOT_PATHS.current),\n changes,\n /** Every change between `from` and `to`, following `nextCursor` until the last page. */\n allChanges: async (query: Omit<SnapshotChangesQuery, 'after'>) => {\n const items: SnapshotChange[] = [];\n let page = await changes(query);\n items.push(...page.items);\n while (page.nextCursor !== null) {\n page = await changes({ ...query, to: page.to, after: page.nextCursor });\n items.push(...page.items);\n }\n return { from: page.from, to: page.to, schemaVersions: page.schemaVersions, items };\n },\n };\n};\n","import { createDeliveryApi } from './delivery.js';\nimport type { NextCacheOptions } from './nextCache.js';\nimport type { RequestFn } from './request.js';\nimport { createSiteApi } from './siteDelivery.js';\nimport { createSnapshotsApi } from './snapshots.js';\n\nexport type DeliveryClientOptions = {\n /** The site key the reads are tagged with (`shapioTags.site`); the transport names the site itself. */\n site?: string;\n /** Next.js data-cache options, as `createClient`'s `next` option. */\n next?: NextCacheOptions | false;\n /** Drafts mode, as `createClient`'s `drafts` option. */\n drafts?: boolean;\n};\n\n/**\n * The read side of the client over any transport: published content (`delivery`), the site (`site`) and\n * publication snapshots (`snapshots`). `createClient` builds it over HTTP; `@shapio/local` over the delivery\n * API running in the same process. The transport receives exactly the paths the HTTP client sends.\n */\nexport const createDeliveryClient = (\n request: RequestFn,\n { site, next, drafts = false }: DeliveryClientOptions = {},\n) => {\n const cacheContext = { site, next, drafts };\n return {\n /** Published content (the delivery API; drafts in drafts mode), typed by the caller. */\n delivery: createDeliveryApi(request, cacheContext),\n /** The site as delivery sees it: key, name and SEO defaults (`GET /api/site`). */\n site: createSiteApi(request, cacheContext),\n /** Publication snapshots and the diff between two (incremental builds). */\n snapshots: createSnapshotsApi(request),\n };\n};\n\nexport type ShapioDeliveryClient = ReturnType<typeof createDeliveryClient>;\n","/** The body every Shapio endpoint returns on failure. */\nexport type ShapioErrorBody = { error: { code: string; message: string; details?: unknown } };\n\nconst isErrorBody = (value: unknown): value is ShapioErrorBody => {\n if (typeof value !== 'object' || value === null || !('error' in value)) {\n return false;\n }\n const { error } = value;\n return (\n typeof error === 'object' &&\n error !== null &&\n typeof (error as { code?: unknown }).code === 'string' &&\n typeof (error as { message?: unknown }).message === 'string'\n );\n};\n\n/** Thrown for any non-2xx response. `code` is Shapio's error code, or `HTTP_<status>` if the body had none. */\nexport class ShapioApiError extends Error {\n readonly status: number;\n readonly code: string;\n readonly details: unknown;\n\n constructor(status: number, body: unknown) {\n const parsed = isErrorBody(body) ? body.error : undefined;\n super(parsed?.message ?? `Request failed with status ${status}`);\n this.name = 'ShapioApiError';\n this.status = status;\n this.code = parsed?.code ?? `HTTP_${status}`;\n this.details = parsed?.details;\n }\n}\n","import { SITE_HEADER } from './admin/sites.js';\nimport { DELIVERY_PATH } from './delivery.js';\nimport { DELIVERY_SITE_PATH } from './siteDelivery.js';\nimport { SNAPSHOT_PATHS } from './snapshots.js';\n\n/** Delivery reads name their site with `?site=`; everything else with the `Shapio-Site` header. */\nexport const SITE_QUERY_PARAMETER = 'site';\n\n/** Delivery reads (content, snapshots, the site): a GET there carries the site in its URL. */\nconst DELIVERY_READ_PREFIXES = [\n `${DELIVERY_PATH}/`,\n `${DELIVERY_PATH}?`,\n '/api/snapshots/',\n `${DELIVERY_SITE_PATH}?`,\n] as const;\n\nconst isDeliveryRead = (method: string, path: string) =>\n method === 'GET' &&\n (path === DELIVERY_PATH ||\n path === DELIVERY_SITE_PATH ||\n Object.values(SNAPSHOT_PATHS).some((snapshotPath) => path === snapshotPath) ||\n DELIVERY_READ_PREFIXES.some((prefix) => path.startsWith(prefix)));\n\nconst namesSite = (path: string) => {\n const index = path.indexOf('?');\n return index !== -1 && new URLSearchParams(path.slice(index + 1)).has(SITE_QUERY_PARAMETER);\n};\n\n/**\n * Where a request names the client's site (sites plan §H). Delivery GETs put it in the query string: a\n * simple cross-origin GET needs no CORS preflight, and URL-keyed CDN caches keep sites apart. Every other\n * request sends the `Shapio-Site` header. A path that already names a site is left as it is.\n */\nexport const applySite = (\n site: string | undefined,\n method: string,\n path: string,\n): { path: string; headers: Record<string, string> } => {\n if (site === undefined || namesSite(path)) {\n return { path, headers: {} };\n }\n if (isDeliveryRead(method, path)) {\n const parameter = `${SITE_QUERY_PARAMETER}=${encodeURIComponent(site)}`;\n return { path: `${path}${path.includes('?') ? '&' : '?'}${parameter}`, headers: {} };\n }\n return { path, headers: { [SITE_HEADER]: site } };\n};\n","import { ShapioApiError } from './errors.js';\nimport type { NextFetchInit } from './nextCache.js';\nimport { applySite } from './site.js';\n\n/** Fetch's `credentials` mode (spelled out: the DOM lib type is not available to Node consumers). */\nexport type FetchCredentials = 'omit' | 'same-origin' | 'include';\n\nexport type RequestOptions = {\n method?: string;\n body?: unknown;\n signal?: AbortSignal;\n} & NextFetchInit;\n\nexport type RequestFn = <T>(path: string, options?: RequestOptions) => Promise<T>;\n\nexport type RequestConfig = {\n baseUrl: string;\n token: string | undefined;\n fetch: typeof globalThis.fetch;\n credentials: FetchCredentials | undefined;\n headers: (() => Readonly<Record<string, string>>) | undefined;\n /** The site key every request names (see site.ts); undefined: the credential's site, else the primary. */\n site: string | undefined;\n};\n\nconst parseBody = async (response: Response): Promise<unknown> => {\n const text = await response.text();\n if (text.length === 0) {\n return undefined;\n }\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n};\n\n/** Builds the JSON request function every endpoint group uses. Non-2xx responses throw ShapioApiError. */\nexport const createRequest = ({\n baseUrl,\n token,\n fetch,\n credentials,\n headers,\n site,\n}: RequestConfig): RequestFn => {\n const origin = baseUrl.replace(/\\/+$/, '');\n return async <T>(\n requestPath: string,\n { method = 'GET', body, signal, cache, next }: RequestOptions = {},\n ): Promise<T> => {\n const { path, headers: siteHeaders } = applySite(site, method, requestPath);\n const requestHeaders: Record<string, string> = {\n accept: 'application/json',\n ...siteHeaders,\n ...headers?.(),\n };\n if (token) {\n requestHeaders.authorization = `Bearer ${token}`;\n }\n if (body !== undefined) {\n requestHeaders['content-type'] = 'application/json';\n }\n // `next` is Next.js's extension of fetch (cache tags); other runtimes ignore it, and it is only set there.\n const init: RequestInit & Pick<NextFetchInit, 'next'> = {\n method,\n headers: requestHeaders,\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n ...(signal ? { signal } : {}),\n ...(credentials ? { credentials } : {}),\n ...(cache ? { cache } : {}),\n ...(next ? { next } : {}),\n };\n const response = await fetch(`${origin}${path}`, init);\n const parsed = await parseBody(response);\n if (!response.ok) {\n throw new ShapioApiError(response.status, parsed);\n }\n return parsed as T;\n };\n};\n","import { createAdminApi } from './admin/index.js';\nimport { createAppAuthApi } from './appAuth/index.js';\nimport { createDeliveryClient } from './deliveryClient.js';\nimport type { NextCacheOptions } from './nextCache.js';\nimport { createRequest, type FetchCredentials } from './request.js';\nimport type { HealthResponse, ReadyResponse, VersionResponse } from './types.js';\n\nexport type ShapioClientOptions = {\n /** Base URL of the Shapio server including any BASE_PATH, e.g. `https://cms.example.com/cms`. */\n baseUrl: string;\n /** API token sent as a bearer token. */\n token?: string;\n /** Defaults to the global fetch; injectable for tests and custom agents. */\n fetch?: typeof globalThis.fetch;\n /** Fetch credentials mode. The admin uses `same-origin` so its session cookie is sent. */\n credentials?: FetchCredentials;\n /** Extra headers computed per request (the admin's CSRF token). */\n headers?: () => Readonly<Record<string, string>>;\n /**\n * The site key (multi-site instances). Delivery reads send it as `?site=`, every other request as the\n * `Shapio-Site` header. Leave it out to use the token's site, else the primary site. A site token only\n * ever reads its own site: naming another one is refused (403 `SITE_MISMATCH`).\n */\n site?: string;\n /**\n * Next.js data-cache options for delivery reads (`delivery.*`, `site.get`), e.g. `{ cache: 'force-cache' }`.\n * Under Next the reads are tagged for `revalidateTag` whether or not this is set; the cache mode is only\n * passed when asked for, and reads pinned to a snapshot are always `force-cache`. Set it outside Next to send\n * the same fetch options; `false` sends none. A read's own `next` option overrides this one.\n */\n next?: NextCacheOptions | false;\n /**\n * Drafts mode, for a site's development server: every delivery read asks for drafts\n * (`publicationState=draft`) instead of published content, and under Next is never cached or tagged. Needs\n * a delivery token whose role grants Read drafts (the server refuses others with 403 `DRAFTS_FORBIDDEN`);\n * never set it on a production build. Reads pinned to a `snapshot` are refused. `snapshots` is unaffected.\n */\n drafts?: boolean;\n};\n\nexport const createClient = ({\n baseUrl,\n token,\n fetch = globalThis.fetch,\n credentials,\n headers,\n site,\n next,\n drafts,\n}: ShapioClientOptions) => {\n const request = createRequest({ baseUrl, token, fetch, credentials, headers, site });\n const reads = createDeliveryClient(request, { site, next, ...(drafts !== undefined ? { drafts } : {}) });\n\n return {\n /**\n * Any Shapio route, e.g. the delivery API. Delivery paths use the model's route key: a collection's\n * plural API ID (`request('/api/content/articles')`, `/api/content/articles/<id>`), a singleton's API ID\n * (`/api/content/homepage`). The admin API (`admin.*`) always uses the singular API ID.\n */\n request,\n system: {\n health: (signal?: AbortSignal) => request<HealthResponse>('/api/health', signal ? { signal } : {}),\n ready: (signal?: AbortSignal) => request<ReadyResponse>('/api/ready', signal ? { signal } : {}),\n version: (signal?: AbortSignal) => request<VersionResponse>('/api/version', signal ? { signal } : {}),\n },\n /** Published content (the delivery API), typed by the caller. */\n delivery: reads.delivery,\n /** The site as delivery sees it: key, name and SEO defaults (`GET /api/site`). */\n site: reads.site,\n admin: createAdminApi(request),\n /** Publication snapshots and the diff between two (incremental builds). */\n snapshots: reads.snapshots,\n /** End users of your sites and apps: sign-up, sign-in, tokens, OAuth. */\n appAuth: createAppAuthApi(request, baseUrl),\n };\n};\n\nexport type ShapioClient = ReturnType<typeof createClient>;\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&amp;': '&',\n '&#38;': '&',\n '&lt;': '<',\n '&#60;': '<',\n '&gt;': '>',\n '&#62;': '>',\n '&apos;': \"'\",\n '&#39;': \"'\",\n '&quot;': '\"',\n '&#34;': '\"',\n '&nbsp;': ' ',\n '&#160;': ' ',\n '&copy;': '©',\n '&#169;': '©',\n '&reg;': '®',\n '&#174;': '®',\n '&hellip;': '…',\n '&#8230;': '…',\n '&#x2F;': '/',\n '&#47;': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape,\n transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n if (!i18n) {\n console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n return {};\n }\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n if (typeof k === 'function') return '';\n if (Array.isArray(k)) {\n const last = k[k.length - 1];\n return typeof last === 'function' ? '' : last;\n }\n return k;\n};\nconst notReadySnapshot = {\n t: notReadyT,\n ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.');\n }\n const i18nOptions = useMemo(() => ({\n ...getDefaults(),\n ...i18n?.options?.react,\n ...props\n }), [i18n, props]);\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n const revisionRef = useRef(0);\n const subscribe = useCallback(callback => {\n if (!i18n) return dummySubscribe;\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n const wrappedCallback = () => {\n revisionRef.current += 1;\n callback();\n };\n if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n return () => {\n if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n };\n }, [i18n, i18nOptions]);\n const snapshotRef = useRef();\n const getSnapshot = useCallback(() => {\n if (!i18n) {\n return notReadySnapshot;\n }\n const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const currentLng = props.lng || i18n.language;\n const currentRevision = revisionRef.current;\n const lastSnapshot = snapshotRef.current;\n if (lastSnapshot && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.keyPrefix === keyPrefix && lastSnapshot.revision === currentRevision) {\n return lastSnapshot;\n }\n const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix, {\n scopeNs: namespaces\n });\n const newSnapshot = {\n t: calculatedT,\n ready: calculatedReady,\n lng: currentLng,\n keyPrefix,\n revision: currentRevision\n };\n snapshotRef.current = newSnapshot;\n return newSnapshot;\n }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n const [loadCount, setLoadCount] = useState(0);\n const {\n t,\n ready\n } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (i18n && !ready && !useSuspense) {\n const onLoaded = () => setLoadCount(c => c + 1);\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n }\n }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n const finalI18n = i18n || {};\n const wrapperRef = useRef(null);\n const wrapperLangRef = useRef();\n const languageKey = inst => `${inst.language}|${inst.resolvedLanguage}|${inst.languages?.join(',')}`;\n const createI18nWrapper = original => {\n const descriptors = Object.getOwnPropertyDescriptors(original);\n if (descriptors.__original) delete descriptors.__original;\n const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n try {\n Object.defineProperty(wrapper, '__original', {\n value: original,\n writable: false,\n enumerable: false,\n configurable: false\n });\n } catch (_) {}\n }\n return wrapper;\n };\n const ret = useMemo(() => {\n const original = finalI18n;\n const lang = original && languageKey(original);\n let i18nWrapper = original;\n if (original) {\n if (wrapperRef.current && wrapperRef.current.__original === original) {\n if (wrapperLangRef.current !== lang) {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n } else {\n i18nWrapper = wrapperRef.current;\n }\n } else {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n }\n }\n const effectiveT = !ready && !useSuspense ? (...args) => {\n warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n return t(...args);\n } : t;\n const arr = [effectiveT, i18nWrapper, ready];\n arr.t = effectiveT;\n arr.i18n = i18nWrapper;\n arr.ready = ready;\n return arr;\n }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n if (i18n && useSuspense && !ready) {\n let inDevelopment = false;\n try {\n inDevelopment = process.env.NODE_ENV !== 'production';\n } catch (e) {}\n if (inDevelopment) {\n warnOnce(i18n, 'SUSPENDED_WHILE_LOADING', 'useTranslation: suspended while translations are loading (useSuspense is true by default). Add a <Suspense> boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook');\n }\n throw new Promise(resolve => {\n const onLoaded = () => resolve();\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n });\n }\n return ret;\n};","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string?.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toKebabCase } from './toKebabCase.mjs';\n\nfunction toLucideIconData(iconName, iconNode, aliases = []) {\n if (iconNode == null) {\n throw new Error(\"[lucide]: iconNode is required when icon name is used\");\n }\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...aliases.length > 0 ? { aliases } : {}\n };\n}\n\nexport { toLucideIconData };\n//# sourceMappingURL=toLucideIconData.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => {\n let out = \"\";\n let upperNext = false;\n for (const ch of string) {\n if (ch === \"-\" || ch === \"_\" || ch <= \" \") {\n upperNext = out.length > 0;\n continue;\n }\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n upperNext = false;\n }\n return out;\n};\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": 2,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { mergeClasses } from '../utils/mergeClasses.mjs';\n\nfunction isDefined(value) {\n return value !== null && value !== void 0;\n}\nfunction buildLucideIconNode(icon, params = {}) {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName) => attributeNames[attributeName] ?? attributeName;\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes[\"width\"];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes[\"height\"];\n const aliasClassNames = icon.aliases?.filter((alias) => typeof alias === \"string\" && alias.trim() !== \"\").map((alias) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...icon.name ? [`lucide-${icon.name}`] : [], ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(\" \").filter(Boolean) ?? [];\n const className = params.includeDefaultClasses === false ? mergeClasses(...classNamesFromClassName) : mergeClasses(\"lucide\", ...iconClassNames, ...classNamesFromClassName);\n const calculatedStrokeWidth = params.absoluteStrokeWidth ? Number(params.strokeWidth ?? defaultAttributes[\"stroke-width\"]) * Number(icon.size ?? icon.width ?? defaultAttributes[\"width\"]) / Number(params.size ?? params.width ?? defaultAttributes[\"width\"]) : params.strokeWidth ?? defaultAttributes[\"stroke-width\"];\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {}),\n ...\"color\" in params && params.color && {\n [getAttributeName(\"stroke\")]: params.color\n },\n ...\"size\" in params && isDefined(params.size) && {\n [getAttributeName(\"width\")]: params.size,\n [getAttributeName(\"height\")]: params.size\n },\n ...\"width\" in params && isDefined(params.width) && {\n [getAttributeName(\"width\")]: params.width\n },\n ...\"height\" in params && isDefined(params.height) && {\n [getAttributeName(\"height\")]: params.height\n },\n [getAttributeName(\"stroke-width\")]: calculatedStrokeWidth,\n ...className && {\n [getAttributeName(\"class\")]: className\n },\n [getAttributeName(\"viewBox\")]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...params.hasA11yProp === false ? {\n [getAttributeName(\"aria-hidden\")]: \"true\"\n } : {},\n ...\"attributes\" in params && params.attributes\n };\n return [\n \"svg\",\n attributes,\n icon.node.map((child) => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke ? { [getAttributeName(\"vector-effect\")]: \"non-scaling-stroke\", ...attrs } : attrs;\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n })\n ];\n}\n\nexport { buildLucideIconNode as default };\n//# sourceMappingURL=buildLucideIconNode.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport buildLucideIconNode from './buildLucideIconNode.mjs';\n\nfunction buildLucideIconForReact(icon, params = {}) {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: \"className\",\n \"stroke-width\": \"strokeWidth\",\n \"stroke-linecap\": \"strokeLinecap\",\n \"stroke-linejoin\": \"strokeLinejoin\",\n \"vector-effect\": \"vectorEffect\"\n }\n });\n}\n\nexport { buildLucideIconForReact as default };\n//# sourceMappingURL=buildLucideIconForReact.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport buildLucideIconForReact from './shared/src/build/buildLucideIconForReact.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = \"\",\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24\n },\n ...rest\n }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest\n });\n return createElement(\n name,\n {\n ref,\n ...svgAttributes\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { toLucideIconData } from './shared/src/utils/toLucideIconData.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nfunction createLucideIcon(iconDataOrName, iconNode = [], aliases = []) {\n const iconData = typeof iconDataOrName === \"string\" ? toLucideIconData(iconDataOrName, iconNode, aliases) : iconDataOrName;\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props\n })\n );\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n return Component;\n}\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n"],"ignoreList":[0,1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"mappings":"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"}