@shapio/cms 0.2.1 → 0.3.0

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 (302) hide show
  1. package/dist/admin/assets/{AssistError-hVUWpP3F.js → AssistError-BITJ_tpg.js} +2 -2
  2. package/dist/admin/assets/{AssistError-hVUWpP3F.js.map → AssistError-BITJ_tpg.js.map} +1 -1
  3. package/dist/admin/assets/{BlockMenuItems-B0g93m6M.js → BlockMenuItems-CcluK965.js} +2 -2
  4. package/dist/admin/assets/{BlockMenuItems-B0g93m6M.js.map → BlockMenuItems-CcluK965.js.map} +1 -1
  5. package/dist/admin/assets/Body-BXa9DhtH.js +2 -0
  6. package/dist/admin/assets/{Body-CFQKONK4.js.map → Body-BXa9DhtH.js.map} +1 -1
  7. package/dist/admin/assets/Builder-DcpRfXuc.js +2 -0
  8. package/dist/admin/assets/Builder-DcpRfXuc.js.map +1 -0
  9. package/dist/admin/assets/{ConfirmDialog-D6rs75TP.js → ConfirmDialog-B9nWhIIz.js} +2 -2
  10. package/dist/admin/assets/{ConfirmDialog-D6rs75TP.js.map → ConfirmDialog-B9nWhIIz.js.map} +1 -1
  11. package/dist/admin/assets/{CopyButton-Bc7crFDE.js → CopyButton-BoWb-xi1.js} +2 -2
  12. package/dist/admin/assets/{CopyButton-Bc7crFDE.js.map → CopyButton-BoWb-xi1.js.map} +1 -1
  13. package/dist/admin/assets/{CursorPager-BFPD_adV.js → CursorPager-BnxmTk47.js} +2 -2
  14. package/dist/admin/assets/{CursorPager-BFPD_adV.js.map → CursorPager-BnxmTk47.js.map} +1 -1
  15. package/dist/admin/assets/{ExternalLink-Cdfcyyed.js → ExternalLink-Eeb9mONJ.js} +2 -2
  16. package/dist/admin/assets/{ExternalLink-Cdfcyyed.js.map → ExternalLink-Eeb9mONJ.js.map} +1 -1
  17. package/dist/admin/assets/Form-DZRLD3vH.js +2 -0
  18. package/dist/admin/assets/Form-DZRLD3vH.js.map +1 -0
  19. package/dist/admin/assets/{FormCheckboxGroup-Bicl1CBP.js → FormCheckboxGroup-uIC2XQIL.js} +2 -2
  20. package/dist/admin/assets/{FormCheckboxGroup-Bicl1CBP.js.map → FormCheckboxGroup-uIC2XQIL.js.map} +1 -1
  21. package/dist/admin/assets/{FormRadioGroup-34iVSV4L.js → FormRadioGroup-hd95vPOu.js} +2 -2
  22. package/dist/admin/assets/{FormRadioGroup-34iVSV4L.js.map → FormRadioGroup-hd95vPOu.js.map} +1 -1
  23. package/dist/admin/assets/{FormSelectField-Ba4fIu-8.js → FormSelectField-D7VHmnx5.js} +2 -2
  24. package/dist/admin/assets/{FormSelectField-Ba4fIu-8.js.map → FormSelectField-D7VHmnx5.js.map} +1 -1
  25. package/dist/admin/assets/{FormSwitchField-DN6bfPC0.js → FormSwitchField-ft8Jbe6E.js} +2 -2
  26. package/dist/admin/assets/{FormSwitchField-DN6bfPC0.js.map → FormSwitchField-ft8Jbe6E.js.map} +1 -1
  27. package/dist/admin/assets/{FormTextareaField-WsNjLm32.js → FormTextareaField-DzyOzfZb.js} +2 -2
  28. package/dist/admin/assets/{FormTextareaField-WsNjLm32.js.map → FormTextareaField-DzyOzfZb.js.map} +1 -1
  29. package/dist/admin/assets/{HintedLabel-jKLM0ETt.js → HintedLabel-CvC46uy_.js} +2 -2
  30. package/dist/admin/assets/{HintedLabel-jKLM0ETt.js.map → HintedLabel-CvC46uy_.js.map} +1 -1
  31. package/dist/admin/assets/{InfoHint-DBqcrmZ3.js → InfoHint-GJLRVumb.js} +2 -2
  32. package/dist/admin/assets/{InfoHint-DBqcrmZ3.js.map → InfoHint-GJLRVumb.js.map} +1 -1
  33. package/dist/admin/assets/{InsertMenuItem-CRKXblK5.js → InsertMenuItem-D976G0Rj.js} +2 -2
  34. package/dist/admin/assets/{InsertMenuItem-CRKXblK5.js.map → InsertMenuItem-D976G0Rj.js.map} +1 -1
  35. package/dist/admin/assets/LinkTabs-BZSlA57U.js +2 -0
  36. package/dist/admin/assets/{LinkTabs-Bn2JVqOL.js.map → LinkTabs-BZSlA57U.js.map} +1 -1
  37. package/dist/admin/assets/Match-DdxTHHM4.js +2 -0
  38. package/dist/admin/assets/{Match-DaYgKrk7.js.map → Match-DdxTHHM4.js.map} +1 -1
  39. package/dist/admin/assets/{Panel-6wFe96Gr.js → Panel-iIKjEURi.js} +2 -2
  40. package/dist/admin/assets/{Panel-6wFe96Gr.js.map → Panel-iIKjEURi.js.map} +1 -1
  41. package/dist/admin/assets/{QueryView-DFZtm0fn.js → QueryView-D6aZQJRN.js} +2 -2
  42. package/dist/admin/assets/{QueryView-DFZtm0fn.js.map → QueryView-D6aZQJRN.js.map} +1 -1
  43. package/dist/admin/assets/{RadioTile-DsTyz7ml.js → RadioTile-BpB79rIK.js} +2 -2
  44. package/dist/admin/assets/{RadioTile-DsTyz7ml.js.map → RadioTile-BpB79rIK.js.map} +1 -1
  45. package/dist/admin/assets/{RichTextField-BGkH403g.js → RichTextField-BuHCONPu.js} +2 -2
  46. package/dist/admin/assets/{RichTextField-BGkH403g.js.map → RichTextField-BuHCONPu.js.map} +1 -1
  47. package/dist/admin/assets/{RowTitle-sFt6NjO4.js → RowTitle--uFCpx8n.js} +2 -2
  48. package/dist/admin/assets/{RowTitle-sFt6NjO4.js.map → RowTitle--uFCpx8n.js.map} +1 -1
  49. package/dist/admin/assets/{SecretReveal-Z6MOFdcL.js → SecretReveal-DFpzeNE0.js} +2 -2
  50. package/dist/admin/assets/{SecretReveal-Z6MOFdcL.js.map → SecretReveal-DFpzeNE0.js.map} +1 -1
  51. package/dist/admin/assets/SharedGlyph-Cqkx30tn.js +2 -0
  52. package/dist/admin/assets/SharedGlyph-Cqkx30tn.js.map +1 -0
  53. package/dist/admin/assets/{StepList-BTP_EMzx.js → StepList-BY5MuJPJ.js} +2 -2
  54. package/dist/admin/assets/{StepList-BTP_EMzx.js.map → StepList-BY5MuJPJ.js.map} +1 -1
  55. package/dist/admin/assets/Structure-CqRa2t7z.js +2 -0
  56. package/dist/admin/assets/{Structure-D5-hCUuF.js.map → Structure-CqRa2t7z.js.map} +1 -1
  57. package/dist/admin/assets/SubNavLink-B2o4kSZ9.js +2 -0
  58. package/dist/admin/assets/{SubNavLink-C5oN5mzB.js.map → SubNavLink-B2o4kSZ9.js.map} +1 -1
  59. package/dist/admin/assets/{SuggestAltButton-BuN35BBL.js → SuggestAltButton-4rf2xhEJ.js} +2 -2
  60. package/dist/admin/assets/{SuggestAltButton-BuN35BBL.js.map → SuggestAltButton-4rf2xhEJ.js.map} +1 -1
  61. package/dist/admin/assets/TextLink-D15oyXlc.js +2 -0
  62. package/dist/admin/assets/{TextLink-B4a6j3r6.js.map → TextLink-D15oyXlc.js.map} +1 -1
  63. package/dist/admin/assets/{Thumbnail-u8NE5NhQ.js → Thumbnail-CP5mfgNY.js} +2 -2
  64. package/dist/admin/assets/{Thumbnail-u8NE5NhQ.js.map → Thumbnail-CP5mfgNY.js.map} +1 -1
  65. package/dist/admin/assets/UnsavedChangesGuard-DgOASh0p.js +2 -0
  66. package/dist/admin/assets/{UnsavedChangesGuard-BYwMTDsE.js.map → UnsavedChangesGuard-DgOASh0p.js.map} +1 -1
  67. package/dist/admin/assets/{UserAvatar-D-yX0ozh.js → UserAvatar-BocvNVL-.js} +2 -2
  68. package/dist/admin/assets/{UserAvatar-D-yX0ozh.js.map → UserAvatar-BocvNVL-.js.map} +1 -1
  69. package/dist/admin/assets/{arrow-up-Ws7W9KsZ.js → arrow-up-gf_j6SVQ.js} +2 -2
  70. package/dist/admin/assets/{arrow-up-Ws7W9KsZ.js.map → arrow-up-gf_j6SVQ.js.map} +1 -1
  71. package/dist/admin/assets/auth-pcS9CCXu.js +2 -0
  72. package/dist/admin/assets/auth-pcS9CCXu.js.map +1 -0
  73. package/dist/admin/assets/badge-DD0mE96i.js +2 -0
  74. package/dist/admin/assets/{badge-CMox6-v3.js.map → badge-DD0mE96i.js.map} +1 -1
  75. package/dist/admin/assets/boxes-DcK-kaSa.js +2 -0
  76. package/dist/admin/assets/boxes-DcK-kaSa.js.map +1 -0
  77. package/dist/admin/assets/{calendar-clock-9W0Lkt89.js → calendar-clock-DEwACe0M.js} +2 -2
  78. package/dist/admin/assets/{calendar-clock-9W0Lkt89.js.map → calendar-clock-DEwACe0M.js.map} +1 -1
  79. package/dist/admin/assets/{changeSets-CO7JdILW.js → changeSets-BjUEfYbj.js} +2 -2
  80. package/dist/admin/assets/{changeSets-CO7JdILW.js.map → changeSets-BjUEfYbj.js.map} +1 -1
  81. package/dist/admin/assets/chevron-left-BsQYDUEC.js +2 -0
  82. package/dist/admin/assets/{chevron-left-DyqYjcMB.js.map → chevron-left-BsQYDUEC.js.map} +1 -1
  83. package/dist/admin/assets/{circle-check-aJ2DW5t4.js → circle-check-Dq1owihe.js} +2 -2
  84. package/dist/admin/assets/{circle-check-aJ2DW5t4.js.map → circle-check-Dq1owihe.js.map} +1 -1
  85. package/dist/admin/assets/{circle-x-BnRBht9z.js → circle-x-Dx6zIZko.js} +2 -2
  86. package/dist/admin/assets/{circle-x-BnRBht9z.js.map → circle-x-Dx6zIZko.js.map} +1 -1
  87. package/dist/admin/assets/{clock-DRtFQbTs.js → clock-DQvkffqQ.js} +2 -2
  88. package/dist/admin/assets/{clock-DRtFQbTs.js.map → clock-DQvkffqQ.js.map} +1 -1
  89. package/dist/admin/assets/cn-BQ3voEft.js +2 -0
  90. package/dist/admin/assets/cn-BQ3voEft.js.map +1 -0
  91. package/dist/admin/assets/coerce-OsqQRj19.js +2 -0
  92. package/dist/admin/assets/{coerce-COM3rk1i.js.map → coerce-OsqQRj19.js.map} +1 -1
  93. package/dist/admin/assets/constants-SrImR6C3.js +2 -0
  94. package/dist/admin/assets/constants-SrImR6C3.js.map +1 -0
  95. package/dist/admin/assets/content-_SLbbnfX.js +3 -0
  96. package/dist/admin/assets/content-_SLbbnfX.js.map +1 -0
  97. package/dist/admin/assets/{contentCounts-Ct0tYgHD.js → contentCounts-Ch3uMXVU.js} +2 -2
  98. package/dist/admin/assets/{contentCounts-Ct0tYgHD.js.map → contentCounts-Ch3uMXVU.js.map} +1 -1
  99. package/dist/admin/assets/contentTypes-BCOdUK_Z.js +2 -0
  100. package/dist/admin/assets/contentTypes-BCOdUK_Z.js.map +1 -0
  101. package/dist/admin/assets/{copy-B5B8RjV0.js → copy-BDc3r0fO.js} +2 -2
  102. package/dist/admin/assets/{copy-B5B8RjV0.js.map → copy-BDc3r0fO.js.map} +1 -1
  103. package/dist/admin/assets/{dateTimeLocal-BuBv3it2.js → dateTimeLocal-C92tyKwz.js} +2 -2
  104. package/dist/admin/assets/{dateTimeLocal-BuBv3it2.js.map → dateTimeLocal-C92tyKwz.js.map} +1 -1
  105. package/dist/admin/assets/develop-DS9TlDmv.js +11 -0
  106. package/dist/admin/assets/develop-DS9TlDmv.js.map +1 -0
  107. package/dist/admin/assets/{dropdown-menu-CW3fabv5.js → dropdown-menu-gmP2Rp3n.js} +2 -2
  108. package/dist/admin/assets/{dropdown-menu-CW3fabv5.js.map → dropdown-menu-gmP2Rp3n.js.map} +1 -1
  109. package/dist/admin/assets/{ellipsis-DNdmromA.js → ellipsis-NK0pWgqU.js} +2 -2
  110. package/dist/admin/assets/{ellipsis-DNdmromA.js.map → ellipsis-NK0pWgqU.js.map} +1 -1
  111. package/dist/admin/assets/{external-link-YnuWXDBk.js → external-link-D3Aoi2yX.js} +2 -2
  112. package/dist/admin/assets/{external-link-YnuWXDBk.js.map → external-link-D3Aoi2yX.js.map} +1 -1
  113. package/dist/admin/assets/{file-text-CB7Bc0GA.js → file-text-DxXAmmxL.js} +2 -2
  114. package/dist/admin/assets/{file-text-CB7Bc0GA.js.map → file-text-DxXAmmxL.js.map} +1 -1
  115. package/dist/admin/assets/fileRoute-C2tOrKhO.js +2 -0
  116. package/dist/admin/assets/{fileRoute-BYwireXG.js.map → fileRoute-C2tOrKhO.js.map} +1 -1
  117. package/dist/admin/assets/followPlural-CN6cQfNk.js +2 -0
  118. package/dist/admin/assets/followPlural-CN6cQfNk.js.map +1 -0
  119. package/dist/admin/assets/{globe-Bvs3UC3V.js → globe-CuElSilX.js} +2 -2
  120. package/dist/admin/assets/{globe-Bvs3UC3V.js.map → globe-CuElSilX.js.map} +1 -1
  121. package/dist/admin/assets/{image-CeoxwJeM.js → image-CsH8dZve.js} +2 -2
  122. package/dist/admin/assets/{image-CeoxwJeM.js.map → image-CsH8dZve.js.map} +1 -1
  123. package/dist/admin/assets/{image-off-iVqYw2Zc.js → image-off-B_uBCsYu.js} +2 -2
  124. package/dist/admin/assets/{image-off-iVqYw2Zc.js.map → image-off-B_uBCsYu.js.map} +1 -1
  125. package/dist/admin/assets/{inbox-DYbEOpaQ.js → inbox-3iAHL3pC.js} +2 -2
  126. package/dist/admin/assets/{inbox-DYbEOpaQ.js.map → inbox-3iAHL3pC.js.map} +1 -1
  127. package/dist/admin/assets/inbox-DsuXNaKE.js +2 -0
  128. package/dist/admin/assets/{inbox-wDoqym--.js.map → inbox-DsuXNaKE.js.map} +1 -1
  129. package/dist/admin/assets/index-BSzXA60W.js +4 -0
  130. package/dist/admin/assets/index-BSzXA60W.js.map +1 -0
  131. package/dist/admin/assets/{key-round-Bcw6qqcb.js → key-round-B17HiT3K.js} +2 -2
  132. package/dist/admin/assets/{key-round-Bcw6qqcb.js.map → key-round-B17HiT3K.js.map} +1 -1
  133. package/dist/admin/assets/link-2-off-hWGS8LW6.js +2 -0
  134. package/dist/admin/assets/link-2-off-hWGS8LW6.js.map +1 -0
  135. package/dist/admin/assets/{link-CKr_uUfb.js → link-bhHmG4Tc.js} +2 -2
  136. package/dist/admin/assets/{link-CKr_uUfb.js.map → link-bhHmG4Tc.js.map} +1 -1
  137. package/dist/admin/assets/{list-BElvKZw_.js → list-DRtRdjBC.js} +2 -2
  138. package/dist/admin/assets/{list-BElvKZw_.js.map → list-DRtRdjBC.js.map} +1 -1
  139. package/dist/admin/assets/{locales-Bnv3qcdZ.js → locales-BzPbz8FF.js} +2 -2
  140. package/dist/admin/assets/{locales-Bnv3qcdZ.js.map → locales-BzPbz8FF.js.map} +1 -1
  141. package/dist/admin/assets/media-WLnWaL7U.js +2 -0
  142. package/dist/admin/assets/{media-DjK3xGFN.js.map → media-WLnWaL7U.js.map} +1 -1
  143. package/dist/admin/assets/{media-BfDqe_2P.js → media-Xzot1ueY.js} +2 -2
  144. package/dist/admin/assets/{media-BfDqe_2P.js.map → media-Xzot1ueY.js.map} +1 -1
  145. package/dist/admin/assets/network-DHGqLwji.js +2 -0
  146. package/dist/admin/assets/network-DHGqLwji.js.map +1 -0
  147. package/dist/admin/assets/{pencil-Zd05MDs2.js → pencil-Bdp2z9D_.js} +2 -2
  148. package/dist/admin/assets/{pencil-Zd05MDs2.js.map → pencil-Bdp2z9D_.js.map} +1 -1
  149. package/dist/admin/assets/{plus-B0gd63Da.js → plus-BN_iSsnp.js} +2 -2
  150. package/dist/admin/assets/{plus-B0gd63Da.js.map → plus-BN_iSsnp.js.map} +1 -1
  151. package/dist/admin/assets/{preload-helper-CJKHb_rG.js → preload-helper-DAbCfXID.js} +2 -2
  152. package/dist/admin/assets/{preload-helper-CJKHb_rG.js.map → preload-helper-DAbCfXID.js.map} +1 -1
  153. package/dist/admin/assets/publishing-d9yhMwgA.js +2 -0
  154. package/dist/admin/assets/{publishing-vCVjaSGF.js.map → publishing-d9yhMwgA.js.map} +1 -1
  155. package/dist/admin/assets/{radio-group-DVR0mTpo.js → radio-group-DHIxK-IU.js} +2 -2
  156. package/dist/admin/assets/{radio-group-DVR0mTpo.js.map → radio-group-DHIxK-IU.js.map} +1 -1
  157. package/dist/admin/assets/{rotate-ccw-BOTDOdHf.js → rotate-ccw-CBoZle-b.js} +2 -2
  158. package/dist/admin/assets/{rotate-ccw-BOTDOdHf.js.map → rotate-ccw-CBoZle-b.js.map} +1 -1
  159. package/dist/admin/assets/{schedules-CG-ZphRK.js → schedules-Dy89Nm6P.js} +2 -2
  160. package/dist/admin/assets/{schedules-CG-ZphRK.js.map → schedules-Dy89Nm6P.js.map} +1 -1
  161. package/dist/admin/assets/schema-B4smPFcR.js +2 -0
  162. package/dist/admin/assets/schema-B4smPFcR.js.map +1 -0
  163. package/dist/admin/assets/{scroll-text-D-gHqYwR.js → scroll-text-UbyzpWh-.js} +2 -2
  164. package/dist/admin/assets/{scroll-text-D-gHqYwR.js.map → scroll-text-UbyzpWh-.js.map} +1 -1
  165. package/dist/admin/assets/{search-BcPL1qyc.js → search-_YlNpPvU.js} +2 -2
  166. package/dist/admin/assets/{search-BcPL1qyc.js.map → search-_YlNpPvU.js.map} +1 -1
  167. package/dist/admin/assets/searchSchema-CvOhn4FV.js +2 -0
  168. package/dist/admin/assets/{searchSchema-BGrRDBL_.js.map → searchSchema-CvOhn4FV.js.map} +1 -1
  169. package/dist/admin/assets/searchSchemas-BxRnxenn.js +2 -0
  170. package/dist/admin/assets/searchSchemas-BxRnxenn.js.map +1 -0
  171. package/dist/admin/assets/{sections-i9TeeK-h.js → sections-Bb3Q4bcY.js} +2 -2
  172. package/dist/admin/assets/{sections-i9TeeK-h.js.map → sections-Bb3Q4bcY.js.map} +1 -1
  173. package/dist/admin/assets/{sections-BrGcWOnw.js → sections-DiySZZHb.js} +2 -2
  174. package/dist/admin/assets/{sections-BrGcWOnw.js.map → sections-DiySZZHb.js.map} +1 -1
  175. package/dist/admin/assets/{select--nGB4WjU.js → select-tHVWX85X.js} +2 -2
  176. package/dist/admin/assets/{select--nGB4WjU.js.map → select-tHVWX85X.js.map} +1 -1
  177. package/dist/admin/assets/{send-Bu3RRfdI.js → send-BqECHYi6.js} +2 -2
  178. package/dist/admin/assets/{send-Bu3RRfdI.js.map → send-BqECHYi6.js.map} +1 -1
  179. package/dist/admin/assets/settings-D-v8gL8F.js +2 -0
  180. package/dist/admin/assets/settings-D-v8gL8F.js.map +1 -0
  181. package/dist/admin/assets/skeleton-C3QLIh7W.js +42 -0
  182. package/dist/admin/assets/skeleton-C3QLIh7W.js.map +1 -0
  183. package/dist/admin/assets/snapshots-BQrhsCmC.js +2 -0
  184. package/dist/admin/assets/{snapshots-CKjK-vkL.js.map → snapshots-BQrhsCmC.js.map} +1 -1
  185. package/dist/admin/assets/{sparkles-B_NX7PAY.js → sparkles-BW4CbD6W.js} +2 -2
  186. package/dist/admin/assets/{sparkles-B_NX7PAY.js.map → sparkles-BW4CbD6W.js.map} +1 -1
  187. package/dist/admin/assets/src-XaU0N8C-.js +4 -0
  188. package/dist/admin/assets/src-XaU0N8C-.js.map +1 -0
  189. package/dist/admin/assets/{stableId-Dmr2Afn_.js → stableId-C9Yq5iUw.js} +2 -2
  190. package/dist/admin/assets/{stableId-Dmr2Afn_.js.map → stableId-C9Yq5iUw.js.map} +1 -1
  191. package/dist/admin/assets/{store-B5xrQ1Ex.js → store-BphwUzV5.js} +2 -2
  192. package/dist/admin/assets/{store-B5xrQ1Ex.js.map → store-BphwUzV5.js.map} +1 -1
  193. package/dist/admin/assets/{switch-B-FbT-l8.js → switch-BVy02Vc8.js} +2 -2
  194. package/dist/admin/assets/{switch-B-FbT-l8.js.map → switch-BVy02Vc8.js.map} +1 -1
  195. package/dist/admin/assets/{table-DQzCPm7J.js → table-CZYtdoHn.js} +2 -2
  196. package/dist/admin/assets/{table-DQzCPm7J.js.map → table-CZYtdoHn.js.map} +1 -1
  197. package/dist/admin/assets/tabs-quHbeVxA.js +5 -0
  198. package/dist/admin/assets/{tabs-YThoOiE3.js.map → tabs-quHbeVxA.js.map} +1 -1
  199. package/dist/admin/assets/{textarea-_wcx8Mn1.js → textarea-B8Vl5gJ1.js} +2 -2
  200. package/dist/admin/assets/{textarea-_wcx8Mn1.js.map → textarea-B8Vl5gJ1.js.map} +1 -1
  201. package/dist/admin/assets/titles-B2z5ckxG.js +2 -0
  202. package/dist/admin/assets/{titles-DyCBLXue.js.map → titles-B2z5ckxG.js.map} +1 -1
  203. package/dist/admin/assets/{tokens-CqsxrApC.js → tokens-Fh_OeIlf.js} +2 -2
  204. package/dist/admin/assets/{tokens-CqsxrApC.js.map → tokens-Fh_OeIlf.js.map} +1 -1
  205. package/dist/admin/assets/{tooltip-BMe4HylJ.js → tooltip-DwqM3opE.js} +2 -2
  206. package/dist/admin/assets/{tooltip-BMe4HylJ.js.map → tooltip-DwqM3opE.js.map} +1 -1
  207. package/dist/admin/assets/{undo-2-DMOHOH6w.js → undo-2-D4Fz4JMZ.js} +2 -2
  208. package/dist/admin/assets/{undo-2-DMOHOH6w.js.map → undo-2-D4Fz4JMZ.js.map} +1 -1
  209. package/dist/admin/assets/{useAuditLabels-CSw_kwLs.js → useAuditLabels-DKrsrciQ.js} +2 -2
  210. package/dist/admin/assets/{useAuditLabels-CSw_kwLs.js.map → useAuditLabels-DKrsrciQ.js.map} +1 -1
  211. package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js +2 -0
  212. package/dist/admin/assets/useConfirmTarget-Dp8mCulm.js.map +1 -0
  213. package/dist/admin/assets/{useContentSchema-CS5QQcRk.js → useContentSchema-Bv4_6VJR.js} +2 -2
  214. package/dist/admin/assets/{useContentSchema-CS5QQcRk.js.map → useContentSchema-Bv4_6VJR.js.map} +1 -1
  215. package/dist/admin/assets/{useCursorPager-Dt_axwd1.js → useCursorPager-B1upg5EU.js} +2 -2
  216. package/dist/admin/assets/{useCursorPager-Dt_axwd1.js.map → useCursorPager-B1upg5EU.js.map} +1 -1
  217. package/dist/admin/assets/{useDiscardGuard-7rRGpd4q.js → useDiscardGuard-34ynGJIk.js} +2 -2
  218. package/dist/admin/assets/{useDiscardGuard-7rRGpd4q.js.map → useDiscardGuard-34ynGJIk.js.map} +1 -1
  219. package/dist/admin/assets/{useMediaUploader-CBUcNW6d.js → useMediaUploader-QXSjZStv.js} +2 -2
  220. package/dist/admin/assets/{useMediaUploader-CBUcNW6d.js.map → useMediaUploader-QXSjZStv.js.map} +1 -1
  221. package/dist/admin/assets/{usePaletteItems-bbTIqpPu.js → usePaletteItems-62-TZhy7.js} +2 -2
  222. package/dist/admin/assets/{usePaletteItems-bbTIqpPu.js.map → usePaletteItems-62-TZhy7.js.map} +1 -1
  223. package/dist/admin/assets/usePlaces-CY6f2DmI.js +2 -0
  224. package/dist/admin/assets/usePlaces-CY6f2DmI.js.map +1 -0
  225. package/dist/admin/assets/{useQueries-DKGIdq6A.js → useQueries-BuKJBA0M.js} +2 -2
  226. package/dist/admin/assets/{useQueries-DKGIdq6A.js.map → useQueries-BuKJBA0M.js.map} +1 -1
  227. package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js +2 -0
  228. package/dist/admin/assets/useSchemaScopeAccess-DUBeS9kU.js.map +1 -0
  229. package/dist/admin/assets/{users-C1ZSee3N.js → users-BOn2ohJQ.js} +2 -2
  230. package/dist/admin/assets/{users-C1ZSee3N.js.map → users-BOn2ohJQ.js.map} +1 -1
  231. package/dist/admin/assets/{users-DMfQL0s4.js → users-BkKc4MNB.js} +2 -2
  232. package/dist/admin/assets/{users-DMfQL0s4.js.map → users-BkKc4MNB.js.map} +1 -1
  233. package/dist/admin/assets/{zod-Pf5A-ax4.js → zod-BHAd1wTC.js} +2 -2
  234. package/dist/admin/assets/{zod-Pf5A-ax4.js.map → zod-BHAd1wTC.js.map} +1 -1
  235. package/dist/admin/index.html +56 -55
  236. package/dist/cli.js +383 -163
  237. package/dist/cli.js.map +1 -1
  238. package/dist/config.d.ts +1 -1
  239. package/dist/config.js.map +1 -1
  240. package/dist/index.d.ts +6 -1
  241. package/dist/index.js +1 -1
  242. package/dist/{public-CKU0Gkfq.d.ts → public-CGO8RBn3.d.ts} +10 -2
  243. package/dist/{worker-C-MSYr4l.js → worker-BLXy8aRW.js} +2307 -1220
  244. package/dist/worker-BLXy8aRW.js.map +1 -0
  245. package/package.json +5 -6
  246. package/dist/admin/assets/Body-CFQKONK4.js +0 -2
  247. package/dist/admin/assets/Builder-Do5KVHV9.js +0 -2
  248. package/dist/admin/assets/Builder-Do5KVHV9.js.map +0 -1
  249. package/dist/admin/assets/LinkTabs-Bn2JVqOL.js +0 -2
  250. package/dist/admin/assets/Match-DaYgKrk7.js +0 -2
  251. package/dist/admin/assets/Structure-D5-hCUuF.js +0 -2
  252. package/dist/admin/assets/SubNavLink-C5oN5mzB.js +0 -2
  253. package/dist/admin/assets/TextLink-B4a6j3r6.js +0 -2
  254. package/dist/admin/assets/UnsavedChangesGuard-BYwMTDsE.js +0 -2
  255. package/dist/admin/assets/auth-b3_9QbtL.js +0 -2
  256. package/dist/admin/assets/auth-b3_9QbtL.js.map +0 -1
  257. package/dist/admin/assets/badge-CMox6-v3.js +0 -2
  258. package/dist/admin/assets/chevron-left-DyqYjcMB.js +0 -2
  259. package/dist/admin/assets/cn-DnXL75B0.js +0 -2
  260. package/dist/admin/assets/cn-DnXL75B0.js.map +0 -1
  261. package/dist/admin/assets/coerce-COM3rk1i.js +0 -2
  262. package/dist/admin/assets/constants-CS1ziZO0.js +0 -2
  263. package/dist/admin/assets/constants-CS1ziZO0.js.map +0 -1
  264. package/dist/admin/assets/content-Dic2fof_.js +0 -3
  265. package/dist/admin/assets/content-Dic2fof_.js.map +0 -1
  266. package/dist/admin/assets/contentTypes-D4_Ax9rb.js +0 -2
  267. package/dist/admin/assets/contentTypes-D4_Ax9rb.js.map +0 -1
  268. package/dist/admin/assets/develop-Brnb5YPC.js +0 -11
  269. package/dist/admin/assets/develop-Brnb5YPC.js.map +0 -1
  270. package/dist/admin/assets/errors-DfoXUVDI.js +0 -2
  271. package/dist/admin/assets/errors-DfoXUVDI.js.map +0 -1
  272. package/dist/admin/assets/fileRoute-BYwireXG.js +0 -2
  273. package/dist/admin/assets/inbox-wDoqym--.js +0 -2
  274. package/dist/admin/assets/index-57Mn6XLO.js +0 -4
  275. package/dist/admin/assets/index-57Mn6XLO.js.map +0 -1
  276. package/dist/admin/assets/link-2-DhM2vi4v.js +0 -2
  277. package/dist/admin/assets/link-2-DhM2vi4v.js.map +0 -1
  278. package/dist/admin/assets/link-2-off-DpDOMsa-.js +0 -2
  279. package/dist/admin/assets/link-2-off-DpDOMsa-.js.map +0 -1
  280. package/dist/admin/assets/media-DjK3xGFN.js +0 -2
  281. package/dist/admin/assets/network-CAJ76ILr.js +0 -2
  282. package/dist/admin/assets/network-CAJ76ILr.js.map +0 -1
  283. package/dist/admin/assets/publishing-vCVjaSGF.js +0 -2
  284. package/dist/admin/assets/schema-KXXSPVJn.js +0 -2
  285. package/dist/admin/assets/schema-KXXSPVJn.js.map +0 -1
  286. package/dist/admin/assets/searchSchema-BGrRDBL_.js +0 -2
  287. package/dist/admin/assets/searchSchemas-ChN9hhuQ.js +0 -2
  288. package/dist/admin/assets/searchSchemas-ChN9hhuQ.js.map +0 -1
  289. package/dist/admin/assets/settings-68BAxrPM.js +0 -2
  290. package/dist/admin/assets/settings-68BAxrPM.js.map +0 -1
  291. package/dist/admin/assets/skeleton-DUvclBAr.js +0 -42
  292. package/dist/admin/assets/skeleton-DUvclBAr.js.map +0 -1
  293. package/dist/admin/assets/snapshots-CKjK-vkL.js +0 -2
  294. package/dist/admin/assets/src-D6DABe5J.js +0 -4
  295. package/dist/admin/assets/src-D6DABe5J.js.map +0 -1
  296. package/dist/admin/assets/tabs-YThoOiE3.js +0 -5
  297. package/dist/admin/assets/titles-DyCBLXue.js +0 -2
  298. package/dist/admin/assets/useConfirmTarget-9JmfiY2X.js +0 -2
  299. package/dist/admin/assets/useConfirmTarget-9JmfiY2X.js.map +0 -1
  300. package/dist/admin/assets/usePlaces-D1raoQ2s.js +0 -2
  301. package/dist/admin/assets/usePlaces-D1raoQ2s.js.map +0 -1
  302. package/dist/worker-C-MSYr4l.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{t as n}from"./jsx-runtime-DREnUpxT.js";import{P as r,bt as i,j as a,t as o}from"./cn-DnXL75B0.js";import{d as s,l as c,o as l,s as u}from"./errors-DfoXUVDI.js";import{_ as d,a as f,i as p,j as m,n as h,o as g,t as _}from"./badge-CMox6-v3.js";import{i as v,n as y,t as b}from"./RowTitle-sFt6NjO4.js";import{t as x}from"./fileRoute-BYwireXG.js";import{t as S}from"./UnsavedChangesGuard-BYwMTDsE.js";import{G as ee,f as te,p as ne,u as re}from"./InfoHint-DBqcrmZ3.js";import{N as C,i as w}from"./skeleton-DUvclBAr.js";import{o as T}from"./auth-b3_9QbtL.js";import{a as E,i as ie,l as ae,r as oe,u as se}from"./constants-CS1ziZO0.js";import{i as ce}from"./ConfirmDialog-D6rs75TP.js";import{a as D,i as le,n as ue,o as O,r as k,t as de}from"./Builder-Do5KVHV9.js";import{t as fe}from"./plus-B0gd63Da.js";import{u as pe}from"./changeSets-CO7JdILW.js";import{t as A}from"./radio-group-DVR0mTpo.js";import{c as j,f as M,n as N,o as P,t as F,u as I}from"./zod-Pf5A-ax4.js";import{t as L}from"./settle-LRKtTN_e.js";import{_ as R,a as z,d as B,g as me,i as V,l as he,n as ge,o as H,r as U,s as _e,t as ve}from"./table-DQzCPm7J.js";import{t as ye}from"./HintedLabel-jKLM0ETt.js";import{i as be,l as xe,o as Se,p as Ce,r as we}from"./schema-KXXSPVJn.js";import{t as Te}from"./QueryView-DFZtm0fn.js";import{H as Ee,_ as W,f as G,g as De,h as Oe}from"./src-D6DABe5J.js";import{t as ke}from"./textarea-_wcx8Mn1.js";import{c as Ae,g as je,i as Me,r as Ne,t as K}from"./AssistError-hVUWpP3F.js";import{t as q}from"./Panel-6wFe96Gr.js";import{t as Pe}from"./RadioTile-DsTyz7ml.js";import{t as Fe}from"./FormSwitchField-DN6bfPC0.js";import{t as Ie}from"./FormTextareaField-WsNjLm32.js";var J=e(n(),1),Le=({definition:e})=>(0,J.jsx)(b,{asChild:!0,children:e.kind===`component`?(0,J.jsx)(u,{to:`/models/components/$componentId`,params:{componentId:e.id},children:e.label}):(0,J.jsx)(u,{to:`/models/$modelId`,params:{modelId:e.id},children:e.label})}),Y=e(t(),1),Re=({changeId:e})=>{let{t}=a(),n=xe(e),o=i(),s=n.data?.status,c=s!==void 0&&Ce.has(s);return(0,Y.useEffect)(()=>{c&&o.invalidateQueries({queryKey:r.schema.all})},[c,o]),c||n.isError?null:(0,J.jsx)(h,{tone:`progress`,size:`sm`,label:t(`models.pendingChange`)})},ze=e=>e.kind===`collection`?`${e.apiKey} · ${G(e)}`:e.apiKey,Be=({items:e})=>{let{t}=a();return(0,J.jsx)(_e,{children:(0,J.jsxs)(ve,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(V,{children:t(`models.columns.label`)}),(0,J.jsx)(V,{children:t(`models.columns.apiKey`)}),(0,J.jsx)(V,{className:`text-right`,children:t(`models.columns.fields`)}),(0,J.jsx)(V,{className:`text-right`,children:t(`models.columns.version`)}),(0,J.jsx)(V,{children:t(`models.columns.activated`)})]})}),(0,J.jsx)(ge,{children:e.map(({definition:e,version:n,activatedAt:r,pendingChange:i})=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{children:(0,J.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(Le,{definition:e}),i?(0,J.jsx)(Re,{changeId:i.id}):null]})}),(0,J.jsx)(U,{className:`font-mono text-meta text-muted-foreground`,children:ze(e)}),(0,J.jsx)(U,{className:`text-right tabular-nums`,children:e.fields.length}),(0,J.jsx)(U,{className:`text-right text-muted-foreground tabular-nums`,children:t(`models.versionNumber`,{version:n})}),(0,J.jsx)(U,{className:`text-muted-foreground`,title:y(r),children:v(r)})]},e.id))})]})})},Ve=()=>{let{t:e}=a(),t=Se(`component`),n=T(`schema.create`),{locked:r,reason:i}=O(),o=n&&!r?(0,J.jsx)(w,{asChild:!0,children:(0,J.jsxs)(u,{to:`/develop/components/new`,children:[(0,J.jsx)(fe,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,J.jsxs)(f,{children:[(0,J.jsx)(p,{title:e(`shell.nav.components`),actions:o}),r?(0,J.jsx)(D,{reason:i}):null,(0,J.jsx)(Te,{query:t,isEmpty:e=>e.length===0,empty:(0,J.jsx)(g,{icon:se,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:o}),children:e=>(0,J.jsx)(Be,{items:e})})]})},He=()=>{let{componentId:e}=m({from:`/app/develop/components/$componentId`});return(0,J.jsx)(de,{category:`component`,id:e})},Ue={API_KEY_INVALID:`validation.apiKeyInvalid`,API_KEY_TOO_LONG:`validation.apiKeyTooLong`,API_KEY_RESERVED_PREFIX:`validation.apiKeyReservedPrefix`},X=e=>{let t=De(e);return t?Ue[t.code]??`validation.apiKeyInvalid`:null},We=()=>R().trim().min(1,`validation.required`).superRefine((e,t)=>{let n=X(e);n&&t.addIssue({code:`custom`,message:n})}),Ge=(e,t)=>X(e)?null:t===``?`validation.required`:W(t)===W(e)?`validation.pluralApiKeySameAsSingular`:X(t),Ke=(e,t,n)=>{let r=(0,Y.useRef)(e);(0,Y.useEffect)(()=>{let i=t();(i===``||i===k(r.current))&&n(k(e)),r.current=e},[e,t,n])},qe=(e,t,n)=>{let r=(0,Y.useRef)(e);(0,Y.useEffect)(()=>{let i=t(),a=ue(r.current,e,i);a!==i&&n(a),r.current=e},[e,t,n])},Je=me({kind:he([`collection`,`singleton`,`component`]),label:P(),apiKey:We(),pluralApiKey:R().trim(),description:R().trim(),localized:B()}).superRefine((e,t)=>{let n=e.kind===`collection`?Ge(e.apiKey,e.pluralApiKey):null;n&&t.addIssue({code:`custom`,path:[`pluralApiKey`],message:n})}),Ye=e=>({kind:e,label:``,apiKey:``,pluralApiKey:``,description:``,localized:!1}),Xe=({kind:e,label:t,apiKey:n,pluralApiKey:r,description:i,localized:a})=>e===`component`?{kind:e,label:t,apiKey:n,description:i,fields:[]}:e===`collection`?{kind:e,label:t,apiKey:n,pluralApiKey:r,description:i,localized:a,fields:[]}:{kind:e,label:t,apiKey:n,description:i,localized:a,fields:[]},Ze=e=>new Set((e??[]).flatMap(({definition:e})=>[e.apiKey,...Ee(e)?[G(e)]:[]].map(W))),Z=[`apiKey`,`pluralApiKey`],Qe=e=>{let t=be(),{definitions:n}=we(),r=s(),i=I({resolver:F(Je),defaultValues:Ye(e)}),{setValue:a,setError:o,getValues:c}=i;return Ke(M({control:i.control,name:`label`}),(0,Y.useCallback)(()=>c(`apiKey`),[c]),(0,Y.useCallback)(e=>a(`apiKey`,e,{shouldValidate:!1}),[a])),qe(M({control:i.control,name:`apiKey`}),(0,Y.useCallback)(()=>c(`pluralApiKey`),[c]),(0,Y.useCallback)(e=>a(`pluralApiKey`,e,{shouldValidate:!1}),[a])),{form:i,onSubmit:i.handleSubmit(async e=>{let i=Ze(n);if(i.has(W(e.apiKey))){o(`apiKey`,{message:`validation.apiKeyTaken`});return}if(e.kind===`collection`&&i.has(W(e.pluralApiKey))){o(`pluralApiKey`,{message:`validation.apiKeyTaken`});return}let a=ae(e.kind),s=await L(t.mutateAsync({category:a,input:{definition:Xe(e)}}));if(!s.ok){let e=l(t.error);for(let t of Z){let n=e.find(e=>e.path===`/${t}`);n&&o(t,{message:le(n)})}return}ee.success(C.t(`models.created`));let c=s.value.definitionId;await r(a===`component`?{to:`/models/components/$componentId`,params:{componentId:c},ignoreBlocker:!0}:{to:`/models/$modelId`,params:{modelId:c},ignoreBlocker:!0})}),pending:t.isPending,error:t.error}},Q=({label:e,names:t})=>(0,J.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,J.jsx)(`dt`,{className:`w-14 shrink-0`,children:e}),(0,J.jsx)(`dd`,{className:`flex min-w-0 flex-wrap gap-1.5`,children:t.map(e=>(0,J.jsx)(`code`,{className:`max-w-full truncate rounded bg-muted px-1.5 py-0.5 font-mono text-foreground/80`,children:e},e))})]}),$e=({apiKey:e,pluralApiKey:t,kind:n})=>{let{t:r}=a(),i=e.trim();if(i===``||n===`component`)return null;let o=t.trim()||Oe(i),s=n===`collection`?o:i,c=n===`collection`?[i,o]:[i];return(0,J.jsxs)(`dl`,{className:`flex flex-col gap-1 text-xs text-muted-foreground`,children:[(0,J.jsx)(Q,{label:r(`models.restLabel`),names:[r(`models.endpointPath`,{routeKey:s})]}),(0,J.jsx)(Q,{label:r(`models.graphqlLabel`),names:c})]})},et=({control:e,kinds:t})=>{let{t:n}=a(),{field:{ref:r,value:i,onChange:o}}=j({control:e,name:`kind`});return(0,J.jsxs)(ne,{className:`gap-3`,children:[(0,J.jsx)(te,{variant:`label`,className:`mb-0`,children:n(`models.kind`)}),(0,J.jsx)(A,{ref:r,value:i,onValueChange:o,className:`gap-3 sm:grid-cols-2`,children:t.map(e=>(0,J.jsx)(Pe,{value:e,icon:ie[e],label:n(E[e]),description:n(oe[e])},e))})]})},$=({title:e,kinds:t,back:n,backLabel:r,intro:i})=>{let{t:s}=a(),{locked:c,reason:l}=O(),{form:m,onSubmit:h,pending:g,error:_}=Qe(t[0]),[v,y,b]=M({control:m.control,name:[`kind`,`apiKey`,`pluralApiKey`]}),x=v===`collection`;return(0,J.jsxs)(f,{width:`narrow`,children:[(0,J.jsx)(S,{when:m.formState.isDirty}),(0,J.jsx)(p,{breadcrumb:[{label:r,link:n}],title:e}),c?(0,J.jsx)(D,{reason:l}):null,i,(0,J.jsx)(q,{children:(0,J.jsx)(`form`,{noValidate:!0,onSubmit:e=>void h(e),children:(0,J.jsxs)(re,{className:`gap-5`,children:[t.length>1?(0,J.jsx)(et,{control:m.control,kinds:t}):null,(0,J.jsx)(N,{control:m.control,name:`label`,label:s(`models.label`),autoComplete:`off`}),(0,J.jsxs)(`div`,{className:o(`grid items-start gap-5`,x&&`sm:grid-cols-2`),children:[(0,J.jsx)(N,{control:m.control,name:`apiKey`,label:s(`models.apiKey`),hint:s(`models.apiKeyHint`),autoComplete:`off`,spellCheck:!1,className:`font-mono`}),x?(0,J.jsx)(N,{control:m.control,name:`pluralApiKey`,label:s(`models.pluralApiKey`),hint:s(`models.pluralApiKeyHint`),autoComplete:`off`,spellCheck:!1,className:`font-mono`}):null]}),(0,J.jsx)($e,{apiKey:y,pluralApiKey:b,kind:v}),(0,J.jsx)(Ie,{control:m.control,name:`description`,label:s(`common.optionalLabel`,{label:s(`models.descriptionLabel`)}),rows:2}),v===`component`?null:(0,J.jsx)(Fe,{control:m.control,name:`localized`,label:s(`models.localized`),hint:s(`models.localizedHint`),variant:`bordered`}),(0,J.jsx)(ce,{error:_}),(0,J.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,J.jsx)(w,{variant:`outline`,asChild:!0,children:(0,J.jsx)(u,{...n,children:s(`common.cancel`)})}),(0,J.jsx)(d,{pending:g,pendingLabel:s(`models.creating`),disabled:c,children:s(`common.create`)})]})]})})})]})},tt=[`component`],nt=()=>{let{t:e}=a();return(0,J.jsx)($,{title:e(`contentTypes.newComponentTitle`),kinds:tt,back:c({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},rt=()=>{let{t:e}=a(),t=s(),[n,r]=(0,Y.useState)(``),[i,o]=(0,Y.useState)(null),c=Ae(),l=pe();return{description:n,setDescription:r,proposal:i,run:()=>{n.trim()!==``&&(o(null),l.reset(),c.mutate({description:n.trim()},{onSuccess:o}))},discard:()=>{o(null),c.reset(),l.reset()},addToChangeSet:()=>{i&&l.mutate({definitions:i.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:i.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:c.isPending,proposeError:c.error,adding:l.isPending,addError:l.error}},it=({proposal:e})=>{let{t}=a();return(0,J.jsxs)(`div`,{className:`space-y-3`,children:[(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,J.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,J.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,J.jsx)(_,{variant:`secondary`,children:t(E[e.kind])}),(0,J.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,J.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},at=()=>{let{t:e}=a(),t=(0,Y.useId)(),n=Me(),{locked:r}=O(),i=rt();return n?(0,J.jsx)(q,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,J.jsx)(`div`,{className:`space-y-3`,children:i.proposal?(0,J.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),i.addToChangeSet()},children:[(0,J.jsx)(it,{proposal:i.proposal}),(0,J.jsx)(K,{error:i.addError}),(0,J.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,J.jsx)(w,{type:`button`,variant:`outline`,onClick:i.discard,children:e(`assist.discard`)}),(0,J.jsx)(d,{pending:i.adding,pendingLabel:e(`common.saving`),disabled:r,children:e(`assist.describe.add`)})]})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(ye,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,J.jsx)(ke,{id:`${t}-description`,value:i.description,rows:4,maxLength:je,placeholder:e(`assist.describe.placeholder`),disabled:i.proposing,onChange:e=>i.setDescription(e.target.value)})]}),(0,J.jsx)(K,{error:i.proposeError}),(0,J.jsx)(`div`,{className:`flex justify-end`,children:(0,J.jsx)(Ne,{variant:`outline`,size:`default`,pending:i.proposing,pendingLabel:e(`assist.working`),disabled:i.description.trim()===``||r,onClick:i.run,children:e(`assist.describe.run`)})})]})})}):null},ot=[`collection`,`singleton`],st={newContentType:x(`/app/content/new`)({component:()=>{let{t:e}=a();return(0,J.jsx)($,{title:e(`contentTypes.newTitle`),kinds:ot,back:c({to:`/content`}),backLabel:e(`content.title`),intro:(0,J.jsx)(at,{})})}}),components:x(`/app/develop/components`)({component:Ve}),newComponent:x(`/app/develop/components/new`)({component:nt}),component:x(`/app/develop/components/$componentId`)({component:He})};export{st as contentTypesLazyRoutes};
2
- //# sourceMappingURL=contentTypes-D4_Ax9rb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contentTypes-D4_Ax9rb.js","names":["TableRoot","DefinitionBuilder","z.string","useRef","useRef","z.object","z.enum","z.string","z.boolean","zodResolver","useCallback","i18next","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","queryKeys","useQueryClient","useTranslation","cn","useNavigate","linkOptions","schemaIssuesOf","Link","SubmitButton","Page","PageHeader","useParams","StatusChip","EmptyState","Badge","formatRelativeTime","formatDateTime","RowTitle","createLazyRoute","UnsavedChangesGuard","toast","FieldLegend","FieldSet","FieldGroup","instance","Button","useHasGlobalPermission","KIND_LABEL_KEYS","KIND_ICONS","categoryOfKind","KIND_DESCRIPTION_KEYS","Blocks","FormError","LockNotice","describeIssue","followPlural","useSchemaLock","deriveApiKey","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","RadioGroup","useController","useWatch","FormTextField","requiredText","u","useForm","settle","string","TableHeader","boolean","object","TableHead","_enum","TableBody","TableRow","TableCell","TableCard","Table","HintedLabel","useCreateDefinition","useSchemaChange","useDefinitions","FINAL_CHANGE_STATUSES","useAllDefinitions","QueryView","isModelDefinition","foldApiKey","routeKeyOf","checkApiKeySyntax","suggestPlural","Textarea","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Panel","RadioTile","FormSwitchField","FormTextareaField","import_jsx_runtime","DefinitionLink","definition","import_react","require_react","PendingChip","change","changeId","queryClient","status","finished","apiIdsOf","List","items","pendingChange","activatedAt","Components","components","canCreate","createAction","locked","t","data","Builder","componentId","API_KEY_MESSAGES","syntaxMessage","problem","value","apiKeyField","message","context","pluralApiKeyMessage","apiKey","plural","useApiKeyFromLabel","previousLabel","label","current","getApiKey","setApiKey","usePluralFromApiKey","previousApiKey","getPlural","next","setPlural","createSchema","values","blank","toDefinition","kind","takenKeys","definitions","ISSUE_FIELDS","useCreateDefinitionForm","createDefinition","navigate","form","initialKind","getValues","setValue","taken","setError","category","created","issues","name","found","candidate","id","PreviewRow","names","EndpointPreview","pluralApiKey","routeKey","graphqlNames","KindPicker","onChange","kinds","Form","isCollection","backLabel","back","intro","onSubmit","event","KINDS$1","New$1","useDescribeSchema","description","setDescription","proposal","setProposal","propose","save","Proposal","field","Describe","enabled","describe","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Models/DefinitionLink/index.tsx","../../src/features/Models/PendingChip/index.tsx","../../src/features/Models/List/index.tsx","../../src/features/Components/index.tsx","../../src/features/Components/Builder/index.tsx","../../src/features/Models/helpers/apiKeyField.ts","../../src/features/Models/hooks/useApiKeyFromLabel.ts","../../src/features/Models/hooks/usePluralFromApiKey.ts","../../src/features/Models/hooks/useCreateDefinitionForm.ts","../../src/features/Content/New/EndpointPreview/index.tsx","../../src/features/Content/New/KindPicker/index.tsx","../../src/features/Content/New/Form/index.tsx","../../src/features/Components/New/index.tsx","../../src/features/Content/New/hooks/useDescribeSchema.ts","../../src/features/Content/New/Describe/Proposal/index.tsx","../../src/features/Content/New/Describe/index.tsx","../../src/features/Content/New/index.tsx","../../src/app/lazyRoutes/contentTypes.tsx"],"sourcesContent":["import type { SchemaDefinition } from '@shapio/schema';\nimport { Link } from '@tanstack/react-router';\nimport { RowTitle } from '@/components/RowTitle';\n\ntype DefinitionLinkProps = { definition: Pick<SchemaDefinition, 'id' | 'kind' | 'label'> };\n\n/** A definition's name as a list row title, linking to its builder (models and components differ). */\nexport const DefinitionLink = ({ definition }: DefinitionLinkProps) => (\n <RowTitle asChild>\n {definition.kind === 'component' ? (\n <Link to=\"/models/components/$componentId\" params={{ componentId: definition.id }}>\n {definition.label}\n </Link>\n ) : (\n <Link to=\"/models/$modelId\" params={{ modelId: definition.id }}>\n {definition.label}\n </Link>\n )}\n </RowTitle>\n);\n","import { useQueryClient } from '@tanstack/react-query';\nimport { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { queryKeys } from '@/api/queryKeys';\nimport { useSchemaChange } from '@/api/schema';\nimport { StatusChip } from '@/components/StatusChip';\nimport { FINAL_CHANGE_STATUSES } from '@/constants/schema';\n\ntype PendingChipProps = { changeId: string };\n\n/** \"Change in progress\" while a planned change runs; refreshes the schema and disappears when it ends. */\nexport const PendingChip = ({ changeId }: PendingChipProps) => {\n const { t } = useTranslation();\n const change = useSchemaChange(changeId);\n const queryClient = useQueryClient();\n const status = change.data?.status;\n const finished = status !== undefined && FINAL_CHANGE_STATUSES.has(status);\n useEffect(() => {\n if (finished) {\n void queryClient.invalidateQueries({ queryKey: queryKeys.schema.all });\n }\n }, [finished, queryClient]);\n if (finished || change.isError) {\n return null;\n }\n return <StatusChip tone=\"progress\" size=\"sm\" label={t('models.pendingChange')} />;\n};\n","import type { DefinitionListItem } from '@shapio/client';\nimport { routeKeyOf } from '@shapio/schema';\nimport { useTranslation } from 'react-i18next';\nimport { TableCard } from '@/components/TableCard';\nimport {\n Table as TableRoot,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { formatDateTime, formatRelativeTime } from '@/helpers/formatDate';\nimport { DefinitionLink } from '../DefinitionLink';\nimport { PendingChip } from '../PendingChip';\n\ntype ListProps = { items: DefinitionListItem[] };\n\n/** \"article · articles\" for a collection (singular and list names), the API ID alone otherwise. */\nconst apiIdsOf = (definition: DefinitionListItem['definition']) =>\n definition.kind === 'collection' ? `${definition.apiKey} · ${routeKeyOf(definition)}` : definition.apiKey;\n\nexport const List = ({ items }: ListProps) => {\n const { t } = useTranslation();\n return (\n <TableCard>\n <TableRoot>\n <TableHeader>\n <TableRow>\n <TableHead>{t('models.columns.label')}</TableHead>\n <TableHead>{t('models.columns.apiKey')}</TableHead>\n <TableHead className=\"text-right\">{t('models.columns.fields')}</TableHead>\n <TableHead className=\"text-right\">{t('models.columns.version')}</TableHead>\n <TableHead>{t('models.columns.activated')}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {items.map(({ definition, version, activatedAt, pendingChange }) => (\n <TableRow key={definition.id}>\n <TableCell>\n <span className=\"flex items-center gap-2\">\n <DefinitionLink definition={definition} />\n {pendingChange ? <PendingChip changeId={pendingChange.id} /> : null}\n </span>\n </TableCell>\n <TableCell className=\"font-mono text-meta text-muted-foreground\">\n {apiIdsOf(definition)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums\">{definition.fields.length}</TableCell>\n <TableCell className=\"text-right text-muted-foreground tabular-nums\">\n {t('models.versionNumber', { version })}\n </TableCell>\n <TableCell className=\"text-muted-foreground\" title={formatDateTime(activatedAt)}>\n {formatRelativeTime(activatedAt)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </TableRoot>\n </TableCard>\n );\n};\n","import { Link } from '@tanstack/react-router';\nimport { Blocks, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { List } from '@/features/Models/List';\nimport { LockNotice } from '@/features/Models/LockNotice';\n\n/** `/develop/components`: reusable field groups that content types embed (Develop → Components). */\nexport const Components = () => {\n const { t } = useTranslation();\n const components = useDefinitions('component');\n const canCreate = useHasGlobalPermission('schema.create');\n const { locked, reason } = useSchemaLock();\n const createAction =\n canCreate && !locked ? (\n <Button asChild>\n <Link to=\"/develop/components/new\">\n <Plus aria-hidden=\"true\" />\n {t('contentTypes.newComponentTitle')}\n </Link>\n </Button>\n ) : null;\n return (\n <Page>\n <PageHeader title={t('shell.nav.components')} actions={createAction} />\n {locked ? <LockNotice reason={reason} /> : null}\n <QueryView\n query={components}\n isEmpty={(data) => data.length === 0}\n empty={\n <EmptyState\n icon={Blocks}\n title={t('contentTypes.noComponents')}\n description={t('models.emptyDescription')}\n action={createAction}\n />\n }\n >\n {(data) => <List items={data} />}\n </QueryView>\n </Page>\n );\n};\n","import { useParams } from '@tanstack/react-router';\nimport { Builder as DefinitionBuilder } from '@/features/Models/Builder';\n\n/** `/develop/components/:componentId`: a component in the shared definition builder. */\nexport const Builder = () => {\n const { componentId } = useParams({ from: '/app/develop/components/$componentId' });\n return <DefinitionBuilder category=\"component\" id={componentId} />;\n};\n","import { checkApiKeySyntax, foldApiKey } from '@shapio/schema';\nimport { z } from 'zod';\nimport type { ValidationMessageKey } from '@/helpers/validation';\n\nconst API_KEY_MESSAGES: Readonly<Record<string, ValidationMessageKey>> = {\n API_KEY_INVALID: 'validation.apiKeyInvalid',\n API_KEY_TOO_LONG: 'validation.apiKeyTooLong',\n API_KEY_RESERVED_PREFIX: 'validation.apiKeyReservedPrefix',\n};\n\n/** The message for an API key's syntax problem (`checkApiKeySyntax`), or null when it is valid. */\nconst syntaxMessage = (value: string): ValidationMessageKey | null => {\n const problem = checkApiKeySyntax(value);\n return problem ? (API_KEY_MESSAGES[problem.code] ?? 'validation.apiKeyInvalid') : null;\n};\n\n/** An API key: GraphQL-name syntax, checked by @shapio/schema's own `checkApiKeySyntax`. */\nexport const apiKeyField = () =>\n z\n .string()\n .trim()\n .min(1, 'validation.required')\n .superRefine((value, context) => {\n const message = syntaxMessage(value);\n if (message) {\n context.addIssue({ code: 'custom', message });\n }\n });\n\n/**\n * What is wrong with a collection's plural API ID, or null: required, API-key syntax, not the singular.\n * Nothing while the singular itself is invalid (same rule as the server's validator).\n */\nexport const pluralApiKeyMessage = (apiKey: string, plural: string): ValidationMessageKey | null => {\n // A plural derived from an invalid API ID is invalid too; the API ID's own message says it once.\n if (syntaxMessage(apiKey)) {\n return null;\n }\n if (plural === '') {\n return 'validation.required';\n }\n if (foldApiKey(plural) === foldApiKey(apiKey)) {\n return 'validation.pluralApiKeySameAsSingular';\n }\n return syntaxMessage(plural);\n};\n","import { useEffect, useRef } from 'react';\nimport { deriveApiKey } from '../helpers/deriveApiKey';\n\n/**\n * The API key follows the label until the user types a key of their own: it is replaced only while it is\n * empty or still the key derived from the previous label. (React Hook Form's dirty state cannot tell: it\n * marks the derived key dirty as soon as the label changes again, so typing a label key by key stopped\n * the key after its first letter.)\n */\nexport const useApiKeyFromLabel = (\n label: string,\n getApiKey: () => string,\n setApiKey: (apiKey: string) => void,\n) => {\n const previousLabel = useRef(label);\n useEffect(() => {\n const current = getApiKey();\n if (current === '' || current === deriveApiKey(previousLabel.current)) {\n setApiKey(deriveApiKey(label));\n }\n previousLabel.current = label;\n }, [label, getApiKey, setApiKey]);\n};\n","import { useEffect, useRef } from 'react';\nimport { followPlural } from '../helpers/followPlural';\n\n/**\n * The plural API ID follows the singular API ID until the user types one of their own (same rule as the\n * API ID following the label, see `useApiKeyFromLabel`).\n */\nexport const usePluralFromApiKey = (\n apiKey: string,\n getPlural: () => string,\n setPlural: (plural: string) => void,\n) => {\n const previousApiKey = useRef(apiKey);\n useEffect(() => {\n const current = getPlural();\n const next = followPlural(previousApiKey.current, apiKey, current);\n if (next !== current) {\n setPlural(next);\n }\n previousApiKey.current = apiKey;\n }, [apiKey, getPlural, setPlural]);\n};\n","import { zodResolver } from '@hookform/resolvers/zod';\nimport {\n foldApiKey,\n isModelDefinition,\n routeKeyOf,\n type DefinitionInput,\n type SchemaDefinition,\n} from '@shapio/schema';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useCallback } from 'react';\nimport { useForm, useWatch } from 'react-hook-form';\nimport { toast } from 'sonner';\nimport { z } from 'zod';\nimport { schemaIssuesOf } from '@/api/errors';\nimport { useAllDefinitions, useCreateDefinition } from '@/api/schema';\nimport { i18next } from '@/app/i18n';\nimport { settle } from '@/helpers/settle';\nimport { requiredText } from '@/helpers/validation';\nimport { categoryOfKind } from '../constants';\nimport { apiKeyField, pluralApiKeyMessage } from '../helpers/apiKeyField';\nimport { describeIssue } from '../helpers/describeIssue';\nimport { useApiKeyFromLabel } from './useApiKeyFromLabel';\nimport { usePluralFromApiKey } from './usePluralFromApiKey';\n\nconst createSchema = z\n .object({\n kind: z.enum(['collection', 'singleton', 'component']),\n label: requiredText(),\n apiKey: apiKeyField(),\n /** Collections only (hidden and ignored for the other kinds). */\n pluralApiKey: z.string().trim(),\n description: z.string().trim(),\n localized: z.boolean(),\n })\n .superRefine((values, context) => {\n const message =\n values.kind === 'collection' ? pluralApiKeyMessage(values.apiKey, values.pluralApiKey) : null;\n if (message) {\n context.addIssue({ code: 'custom', path: ['pluralApiKey'], message });\n }\n });\n\nexport type CreateDefinitionValues = z.infer<typeof createSchema>;\n\nconst blank = (kind: CreateDefinitionValues['kind']): CreateDefinitionValues => ({\n kind,\n label: '',\n apiKey: '',\n pluralApiKey: '',\n description: '',\n localized: false,\n});\n\nconst toDefinition = ({\n kind,\n label,\n apiKey,\n pluralApiKey,\n description,\n localized,\n}: CreateDefinitionValues): DefinitionInput => {\n if (kind === 'component') {\n return { kind, label, apiKey, description, fields: [] };\n }\n return kind === 'collection'\n ? { kind, label, apiKey, pluralApiKey, description, localized, fields: [] }\n : { kind, label, apiKey, description, localized, fields: [] };\n};\n\n/** API IDs already claimed (case-folded): every definition's API ID and every collection's plural. */\nconst takenKeys = (definitions: ReadonlyArray<{ definition: SchemaDefinition }> | undefined) =>\n new Set(\n (definitions ?? []).flatMap(({ definition }) =>\n [definition.apiKey, ...(isModelDefinition(definition) ? [routeKeyOf(definition)] : [])].map(foldApiKey),\n ),\n );\n\n/** Server issues shown on a form field, by the definition property they point at. */\nconst ISSUE_FIELDS = ['apiKey', 'pluralApiKey'] as const;\n\n/**\n * Creates an empty model or component, live (a new definition has no content, so it activates at once),\n * then opens it in the builder. The API key follows the label, and a collection's plural API ID follows\n * the API key, until the user edits them.\n */\nexport const useCreateDefinitionForm = (initialKind: CreateDefinitionValues['kind']) => {\n const createDefinition = useCreateDefinition();\n const { definitions } = useAllDefinitions();\n const navigate = useNavigate();\n const form = useForm<CreateDefinitionValues>({\n resolver: zodResolver(createSchema),\n defaultValues: blank(initialKind),\n });\n const { setValue, setError, getValues } = form;\n const label = useWatch({ control: form.control, name: 'label' });\n useApiKeyFromLabel(\n label,\n useCallback(() => getValues('apiKey'), [getValues]),\n useCallback((apiKey: string) => setValue('apiKey', apiKey, { shouldValidate: false }), [setValue]),\n );\n const apiKey = useWatch({ control: form.control, name: 'apiKey' });\n usePluralFromApiKey(\n apiKey,\n useCallback(() => getValues('pluralApiKey'), [getValues]),\n useCallback((plural: string) => setValue('pluralApiKey', plural, { shouldValidate: false }), [setValue]),\n );\n\n const onSubmit = form.handleSubmit(async (values) => {\n const taken = takenKeys(definitions);\n if (taken.has(foldApiKey(values.apiKey))) {\n setError('apiKey', { message: 'validation.apiKeyTaken' });\n return;\n }\n if (values.kind === 'collection' && taken.has(foldApiKey(values.pluralApiKey))) {\n setError('pluralApiKey', { message: 'validation.apiKeyTaken' });\n return;\n }\n const category = categoryOfKind(values.kind);\n const created = await settle(\n createDefinition.mutateAsync({ category, input: { definition: toDefinition(values) } }),\n );\n if (!created.ok) {\n const issues = schemaIssuesOf(createDefinition.error);\n for (const name of ISSUE_FIELDS) {\n const found = issues.find((candidate) => candidate.path === `/${name}`);\n if (found) {\n setError(name, { message: describeIssue(found) });\n }\n }\n return;\n }\n toast.success(i18next.t('models.created'));\n const id = created.value.definitionId;\n // The form is still dirty: the unsaved-changes guard must not ask about what was just created.\n await (category === 'component'\n ? navigate({ to: '/models/components/$componentId', params: { componentId: id }, ignoreBlocker: true })\n : navigate({ to: '/models/$modelId', params: { modelId: id }, ignoreBlocker: true }));\n });\n return { form, onSubmit, pending: createDefinition.isPending, error: createDefinition.error };\n};\n","import { suggestPlural, type DefinitionKind } from '@shapio/schema';\nimport { useTranslation } from 'react-i18next';\n\ntype EndpointPreviewProps = { apiKey: string; pluralApiKey: string; kind: DefinitionKind };\n\ntype PreviewRowProps = { label: string; names: string[] };\n\nconst PreviewRow = ({ label, names }: PreviewRowProps) => (\n <div className=\"flex min-w-0 items-baseline gap-2\">\n <dt className=\"w-14 shrink-0\">{label}</dt>\n <dd className=\"flex min-w-0 flex-wrap gap-1.5\">\n {names.map((name) => (\n <code\n key={name}\n className=\"max-w-full truncate rounded bg-muted px-1.5 py-0.5 font-mono text-foreground/80\"\n >\n {name}\n </code>\n ))}\n </dd>\n </div>\n);\n\n/**\n * Every API name a model's API IDs produce (REST path, GraphQL queries), updated as they are typed, so it\n * is clear there is nothing else to configure. A collection is listed under its plural API ID\n * (`/api/content/articles`, `articles`) and read one by one under the singular (`article`). Nothing for\n * components or while the ID is empty.\n */\nexport const EndpointPreview = ({ apiKey, pluralApiKey, kind }: EndpointPreviewProps) => {\n const { t } = useTranslation();\n const id = apiKey.trim();\n if (id === '' || kind === 'component') {\n return null;\n }\n const plural = pluralApiKey.trim() || suggestPlural(id);\n const routeKey = kind === 'collection' ? plural : id;\n const graphqlNames = kind === 'collection' ? [id, plural] : [id];\n return (\n <dl className=\"flex flex-col gap-1 text-xs text-muted-foreground\">\n <PreviewRow label={t('models.restLabel')} names={[t('models.endpointPath', { routeKey })]} />\n <PreviewRow label={t('models.graphqlLabel')} names={graphqlNames} />\n </dl>\n );\n};\n","import type { DefinitionKind } from '@shapio/schema';\nimport { useController, type Control } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { RadioTile } from '@/components/RadioTile';\nimport { FieldLegend, FieldSet } from '@/components/ui/field';\nimport { RadioGroup } from '@/components/ui/radio-group';\nimport { KIND_DESCRIPTION_KEYS, KIND_ICONS, KIND_LABEL_KEYS } from '@/features/Models/constants';\nimport type { CreateDefinitionValues } from '@/features/Models/hooks/useCreateDefinitionForm';\n\ntype KindPickerProps = { control: Control<CreateDefinitionValues>; kinds: readonly DefinitionKind[] };\n\n/** The kinds offered here as cards (a radio group: arrow keys move between them). */\nexport const KindPicker = ({ control, kinds }: KindPickerProps) => {\n const { t } = useTranslation();\n const {\n field: { ref, value, onChange },\n } = useController({ control, name: 'kind' });\n return (\n <FieldSet className=\"gap-3\">\n <FieldLegend variant=\"label\" className=\"mb-0\">\n {t('models.kind')}\n </FieldLegend>\n <RadioGroup ref={ref} value={value} onValueChange={onChange} className=\"gap-3 sm:grid-cols-2\">\n {kinds.map((kind) => (\n <RadioTile\n key={kind}\n value={kind}\n icon={KIND_ICONS[kind]}\n label={t(KIND_LABEL_KEYS[kind])}\n description={t(KIND_DESCRIPTION_KEYS[kind])}\n />\n ))}\n </RadioGroup>\n </FieldSet>\n );\n};\n","import type { DefinitionKind } from '@shapio/schema';\nimport { Link, type LinkOptions } from '@tanstack/react-router';\nimport type { ReactNode } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { FormError } from '@/components/FormError';\nimport { FormSwitchField } from '@/components/FormSwitchField';\nimport { FormTextareaField } from '@/components/FormTextareaField';\nimport { FormTextField } from '@/components/FormTextField';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { FieldGroup } from '@/components/ui/field';\nimport { UnsavedChangesGuard } from '@/components/UnsavedChangesGuard';\nimport { useCreateDefinitionForm } from '@/features/Models/hooks/useCreateDefinitionForm';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { LockNotice } from '@/features/Models/LockNotice';\nimport { cn } from '@/helpers/cn';\nimport { EndpointPreview } from '../EndpointPreview';\nimport { KindPicker } from '../KindPicker';\n\ntype FormProps = {\n title: string;\n /** The kinds offered; the picker is hidden when there is only one. */\n kinds: readonly [DefinitionKind, ...DefinitionKind[]];\n /** Where Cancel and the breadcrumb go. */\n back: LinkOptions;\n backLabel: string;\n /** Shown above the form (content types: \"Describe it\", when assist is on). */\n intro?: ReactNode;\n};\n\n/**\n * Creates a content type (collection or single type) or a component, live, then opens it for editing.\n * Shared by `/content/new` and `/develop/components/new`.\n */\nexport const Form = ({ title, kinds, back, backLabel, intro }: FormProps) => {\n const { t } = useTranslation();\n const { locked, reason } = useSchemaLock();\n const { form, onSubmit, pending, error } = useCreateDefinitionForm(kinds[0]);\n const [kind, apiKey, pluralApiKey] = useWatch({\n control: form.control,\n name: ['kind', 'apiKey', 'pluralApiKey'],\n });\n const isCollection = kind === 'collection';\n return (\n <Page width=\"narrow\">\n <UnsavedChangesGuard when={form.formState.isDirty} />\n <PageHeader breadcrumb={[{ label: backLabel, link: back }]} title={title} />\n {locked ? <LockNotice reason={reason} /> : null}\n {intro}\n <Panel>\n <form noValidate onSubmit={(event) => void onSubmit(event)}>\n <FieldGroup className=\"gap-5\">\n {kinds.length > 1 ? <KindPicker control={form.control} kinds={kinds} /> : null}\n <FormTextField control={form.control} name=\"label\" label={t('models.label')} autoComplete=\"off\" />\n {/* A collection's two API IDs sit side by side, with the names they produce below both. */}\n <div className={cn('grid items-start gap-5', isCollection && 'sm:grid-cols-2')}>\n <FormTextField\n control={form.control}\n name=\"apiKey\"\n label={t('models.apiKey')}\n hint={t('models.apiKeyHint')}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"font-mono\"\n />\n {isCollection ? (\n <FormTextField\n control={form.control}\n name=\"pluralApiKey\"\n label={t('models.pluralApiKey')}\n hint={t('models.pluralApiKeyHint')}\n autoComplete=\"off\"\n spellCheck={false}\n className=\"font-mono\"\n />\n ) : null}\n </div>\n <EndpointPreview apiKey={apiKey} pluralApiKey={pluralApiKey} kind={kind} />\n <FormTextareaField\n control={form.control}\n name=\"description\"\n label={t('common.optionalLabel', { label: t('models.descriptionLabel') })}\n rows={2}\n />\n {kind === 'component' ? null : (\n <FormSwitchField\n control={form.control}\n name=\"localized\"\n label={t('models.localized')}\n hint={t('models.localizedHint')}\n variant=\"bordered\"\n />\n )}\n <FormError error={error} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button variant=\"outline\" asChild>\n <Link {...back}>{t('common.cancel')}</Link>\n </Button>\n <SubmitButton pending={pending} pendingLabel={t('models.creating')} disabled={locked}>\n {t('common.create')}\n </SubmitButton>\n </div>\n </FieldGroup>\n </form>\n </Panel>\n </Page>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@/features/Content/New/Form';\n\nconst KINDS = ['component'] as const;\n\n/** `/develop/components/new`: a reusable component (Develop → Components). */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newComponentTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/develop/components' })}\n backLabel={t('shell.nav.components')}\n />\n );\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useProposeSchema } from '@/api/assist';\nimport { useSaveNewDefinitionsToChangeSet } from '@/api/changeSets';\n\n/**\n * \"Describe it\": a description → proposed definitions (nothing written) → saved as schema drafts into a\n * change set, whose review opens next. Shipping them stays a person's decision there.\n */\nexport const useDescribeSchema = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [description, setDescription] = useState('');\n const [proposal, setProposal] = useState<SchemaDraftResult | null>(null);\n const propose = useProposeSchema();\n const save = useSaveNewDefinitionsToChangeSet();\n const run = () => {\n if (description.trim() === '') {\n return;\n }\n setProposal(null);\n save.reset();\n propose.mutate({ description: description.trim() }, { onSuccess: setProposal });\n };\n const discard = () => {\n setProposal(null);\n propose.reset();\n save.reset();\n };\n const addToChangeSet = () => {\n if (!proposal) {\n return;\n }\n save.mutate(\n {\n definitions: proposal.definitions,\n newSetTitle: t('assist.describe.setTitle', { model: proposal.model }),\n },\n {\n onSuccess: (changeSetId) => void navigate({ to: '/changes/$changeSetId', params: { changeSetId } }),\n },\n );\n };\n return {\n description,\n setDescription,\n proposal,\n run,\n discard,\n addToChangeSet,\n proposing: propose.isPending,\n proposeError: propose.error,\n adding: save.isPending,\n addError: save.error,\n };\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { KIND_LABEL_KEYS } from '@/features/Models/constants';\n\ntype ProposalProps = { proposal: SchemaDraftResult };\n\n/** The proposed definitions at a glance: name, kind, API ID and fields, before they go into a change set. */\nexport const Proposal = ({ proposal }: ProposalProps) => {\n const { t } = useTranslation();\n return (\n <div className=\"space-y-3\">\n <p className=\"text-meta text-muted-foreground\">\n {t('assist.describe.proposedBy', { model: proposal.model })}\n </p>\n <ul aria-label={t('assist.describe.proposalLabel')} className=\"space-y-3\">\n {proposal.definitions.map((definition) => (\n <li key={definition.id} className=\"rounded-lg border p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold\">{definition.label}</span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[definition.kind])}</Badge>\n <span className=\"font-mono text-meta text-muted-foreground\">{definition.apiKey}</span>\n </div>\n <ul className=\"mt-2 space-y-0.5 text-meta text-muted-foreground\">\n {definition.fields.map((field) => (\n <li key={field.id}>\n <span className=\"text-foreground\">{field.label}</span>{' '}\n {t('assist.describe.fieldType', { type: t(`models.dataTypes.${field.type}.name`) })}\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { HintedLabel } from '@/components/HintedLabel';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SCHEMA_DESCRIPTION_MAX } from '@/constants/assist';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { useDescribeSchema } from '../hooks/useDescribeSchema';\nimport { Proposal } from './Proposal';\n\n/** \"Describe it\" above the new content type form: a model proposes the types, a change set holds them. */\nexport const Describe = () => {\n const { t } = useTranslation();\n const id = useId();\n const enabled = useAssistEnabled();\n const { locked } = useSchemaLock();\n const describe = useDescribeSchema();\n if (!enabled) {\n return null;\n }\n return (\n <Panel title={t('assist.describe.title')} titleAs=\"h2\">\n <div className=\"space-y-3\">\n {describe.proposal ? (\n <form\n className=\"space-y-3\"\n onSubmit={(event) => {\n event.preventDefault();\n describe.addToChangeSet();\n }}\n >\n <Proposal proposal={describe.proposal} />\n <AssistError error={describe.addError} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={describe.discard}>\n {t('assist.discard')}\n </Button>\n <SubmitButton pending={describe.adding} pendingLabel={t('common.saving')} disabled={locked}>\n {t('assist.describe.add')}\n </SubmitButton>\n </div>\n </form>\n ) : (\n <>\n <div className=\"space-y-2\">\n <HintedLabel\n htmlFor={`${id}-description`}\n label={t('assist.describe.label')}\n hint={t('assist.describe.hint')}\n />\n <Textarea\n id={`${id}-description`}\n value={describe.description}\n rows={4}\n maxLength={SCHEMA_DESCRIPTION_MAX}\n placeholder={t('assist.describe.placeholder')}\n disabled={describe.proposing}\n onChange={(event) => describe.setDescription(event.target.value)}\n />\n </div>\n <AssistError error={describe.proposeError} />\n <div className=\"flex justify-end\">\n <AssistButton\n variant=\"outline\"\n size=\"default\"\n pending={describe.proposing}\n pendingLabel={t('assist.working')}\n disabled={describe.description.trim() === '' || locked}\n onClick={describe.run}\n >\n {t('assist.describe.run')}\n </AssistButton>\n </div>\n </>\n )}\n </div>\n </Panel>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Describe } from './Describe';\nimport { Form } from './Form';\n\nconst KINDS = ['collection', 'singleton'] as const;\n\n/** `/content/new`: a new content type (a place for editors), live as soon as it is created. */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/content' })}\n backLabel={t('content.title')}\n intro={<Describe />}\n />\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Components } from '@/features/Components';\nimport { Builder as ComponentBuilder } from '@/features/Components/Builder';\nimport { New as NewComponent } from '@/features/Components/New';\nimport { New as NewContentType } from '@/features/Content/New';\n\n/** Creating content types and components, and Develop → Components (with @shapio/schema's validators). */\nexport const contentTypesLazyRoutes = {\n newContentType: createLazyRoute('/app/content/new')({ component: NewContentType }),\n components: createLazyRoute('/app/develop/components')({ component: Components }),\n newComponent: createLazyRoute('/app/develop/components/new')({ component: NewComponent }),\n component: createLazyRoute('/app/develop/components/$componentId')({ component: ComponentBuilder }),\n};\n"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./View-BLsQYPow.js","./rolldown-runtime-Dd_uD5pT.js","./react-CQOZoUwg.js","./jsx-runtime-DREnUpxT.js","./w3c-keyname-BOAvb0qz.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{H as r,P as i,V as a,bt as o,d as s,f as c,i as l,j as u,l as d,p as f,r as p,s as m,t as h,u as g,ut as ee}from"./cn-DnXL75B0.js";import{t as _}from"./useQueries-DKGIdq6A.js";import{B as v,d as y,l as te,s as b,t as ne}from"./errors-DfoXUVDI.js";import{A as re,O as ie,_ as ae,a as x,i as S,j as oe,k as se,n as C,o as w,r as ce,t as T,v as E}from"./badge-CMox6-v3.js";import{c as le,f as ue,i as de,l as fe,o as pe,t as me}from"./searchSchema-BGrRDBL_.js";import{i as D,n as O,o as he,t as k}from"./RowTitle-sFt6NjO4.js";import{t as A}from"./fileRoute-BYwireXG.js";import{t as ge}from"./UnsavedChangesGuard-BYwMTDsE.js";import{B as _e,G as j,H as ve,R as ye,U as be,a as xe,d as Se,i as Ce,n as we,o as Te,t as Ee}from"./InfoHint-DBqcrmZ3.js";import{i as M,k as De,n as Oe}from"./skeleton-DUvclBAr.js";import{u as ke}from"./auth-b3_9QbtL.js";import{E as Ae,V as je,_ as Me,a as Ne,c as Pe,h as Fe,i as N,n as P,o as Ie,r as Le,s as Re,t as ze,z as Be}from"./tabs-YThoOiE3.js";import{r as Ve}from"./link-2-DhM2vi4v.js";import{t as He}from"./calendar-clock-9W0Lkt89.js";import{a as Ue,i as We,n as Ge,r as Ke,t as qe}from"./select--nGB4WjU.js";import{t as Je}from"./CursorPager-BFPD_adV.js";import{n as Ye,t as Xe}from"./preload-helper-CJKHb_rG.js";import{a as F,i as Ze,n as Qe,o as I,r as L,s as $e}from"./ConfirmDialog-D6rs75TP.js";import{t as et}from"./circle-check-aJ2DW5t4.js";import{a as tt,d as nt,f as rt,n as it,r as at,t as ot,u as st}from"./StepList-BTP_EMzx.js";import{t as ct}from"./clock-DRtFQbTs.js";import{a as lt,c as ut,d as dt,i as ft,m as pt,n as mt,o as ht,p as gt,r as _t,t as vt}from"./snapshots-CKjK-vkL.js";import{l as yt}from"./Thumbnail-u8NE5NhQ.js";import{t as bt}from"./stableId-Dmr2Afn_.js";import{t as xt}from"./image-off-iVqYw2Zc.js";import{t as St}from"./inbox-DYbEOpaQ.js";import{t as Ct}from"./pencil-Zd05MDs2.js";import{t as wt}from"./plus-B0gd63Da.js";import{_ as Tt,a as Et,c as Dt,d as Ot,f as kt,g as At,h as jt,i as Mt,l as Nt,n as Pt,o as Ft,p as It,r as Lt,s as Rt,t as zt,v as Bt}from"./changeSets-CO7JdILW.js";import{D as Vt,O as Ht,b as Ut,d as Wt,p as Gt,t as Kt}from"./useCursorPager-Dt_axwd1.js";import{t as qt}from"./rotate-ccw-BOTDOdHf.js";import{t as Jt}from"./send-Bu3RRfdI.js";import{t as Yt}from"./users-C1ZSee3N.js";import{n as Xt,o as Zt,t as Qt,u as $t}from"./zod-Pf5A-ax4.js";import{t as en}from"./settle-LRKtTN_e.js";import{_ as tn,a as R,g as nn,i as z,n as B,o as V,r as H,s as rn,t as U}from"./table-DQzCPm7J.js";import{t as an}from"./HintedLabel-jKLM0ETt.js";import{r as on}from"./sites-C6_THCVK.js";import{f as sn,o as cn,r as ln,t as un}from"./schema-KXXSPVJn.js";import{t as W}from"./QueryView-DFZtm0fn.js";import{t as dn}from"./useDebouncedValue-Dqs3wwhn.js";import{C as fn,H as G,O as pn,R as mn,V as hn,a as gn,d as _n,f as vn,n as yn,o as bn,p as xn,r as Sn,s as Cn,t as wn,v as Tn,z as En}from"./src-D6DABe5J.js";import{r as Dn}from"./locales-Bnv3qcdZ.js";import{t as K}from"./Panel-6wFe96Gr.js";import{r as On}from"./schedules-CG-ZphRK.js";import{n as kn,r as An,t as jn}from"./dateTimeLocal-BuBv3it2.js";import{t as Mn}from"./CopyButton-Bc7crFDE.js";import{t as Nn}from"./FormTextareaField-WsNjLm32.js";import{n as Pn,r as Fn,t as In}from"./SubNavLink-C5oN5mzB.js";import{n as Ln,t as Rn}from"./FormSelectField-Ba4fIu-8.js";import{t as zn}from"./tokens-CqsxrApC.js";import{c as Bn}from"./users-DMfQL0s4.js";var Vn={name:`calendar-x`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`m14 13-4 4`,key:`1gib57`}],[`path`,{d:`m10 13 4 4`,key:`153uiq`}]]};Vn.node;var Hn=l(Vn),Un={name:`file-type`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M11 18h2`,key:`12mj7e`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5`,key:`qbrxap`}]]};Un.node;var Wn=l(Un),Gn={name:`git-compare`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]};Gn.node;var Kn=l(Gn),qn={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};qn.node;var Jn=l(qn),Yn={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};Yn.node;var Xn=l(Yn),Zn={name:`pin`,size:24,node:[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]};Zn.node;var Qn=l(Zn),$n={name:`puzzle`,size:24,node:[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]};$n.node;var er=l($n),tr={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};tr.node;var nr=l(tr),rr={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};rr.node;var ir=l(rr),ar=(e,t)=>e.version===t.version||e.hash===t.hash,or=(e,t,n)=>t&&e.hash===t.hash?{action:`skip`,reason:`unchangedLocally`}:n?n.hash===e.hash?{action:`skip`,reason:`alreadyApplied`}:t?ar(n,t)?{action:`update`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnBoth`}:{action:`conflict`,reason:`existsOnTarget`}:t?{action:`conflict`,reason:`deletedOnTarget`}:{action:`create`},sr=({local:e,base:t,remote:n,prune:r})=>e?or(e,t,n):t?n?r?ar(n,t)?{action:`delete`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnTargetBeforeDelete`}:{action:`skip`,reason:`deletedLocallyWithoutPrune`}:{action:`skip`,reason:`alreadyDeleted`}:{action:`skip`,reason:`remoteOnly`},q=e(t(),1),cr={silent:!0},lr={openApi:`/api/docs/openapi.json`,typescript:`/api/docs/typescript`,playground:`api/graphql/playground`},ur={openApi:[...i.schema.all,`docs`,`openapi`],typescript:[...i.schema.all,`docs`,`typescript`],playground:[`develop`,`graphqlPlayground`]},dr=()=>r({queryKey:ur.openApi,queryFn:()=>s.request(lr.openApi),meta:cr}),fr=()=>r({queryKey:ur.typescript,queryFn:()=>s.request(lr.typescript),meta:cr}),pr=()=>new URL(lr.playground,g()).href,mr=()=>r({queryKey:ur.playground,queryFn:async()=>(await fetch(pr(),{method:`HEAD`,credentials:`same-origin`})).ok,staleTime:1/0,meta:cr}),J=e(n(),1),Y=({code:e,label:t,copyable:n=!0,className:r})=>(0,J.jsxs)(`div`,{className:h(`min-w-0 space-y-2`,r),children:[(0,J.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-2`,children:[(0,J.jsx)(`span`,{className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:t}),n?(0,J.jsx)(Mn,{value:e}):null]}),(0,J.jsx)(`pre`,{role:`region`,"aria-label":t,tabIndex:0,className:`max-h-[28rem] overflow-auto rounded-lg border bg-muted p-3 font-mono text-xs leading-5 text-foreground outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:(0,J.jsx)(`code`,{children:e})})]}),hr=()=>{let e=ke().data?.site;return e&&!e.isPrimary?e.key:void 0},gr=e=>{switch(e.type){case`richtext`:return`${e.apiKey} { html }`;case`media`:return`${e.apiKey} { url alt }`;case`relation`:return`${e.apiKey} { id }`;case`component`:case`dynamiczone`:return`${e.apiKey} { __typename }`;default:return e.apiKey}},_r=(e,t)=>[`id`,...e.fields.filter(e=>!e.deprecated).map(gr)].map(e=>`${t}${e}`).join(`
3
- `),vr=`graphql:`,yr=e=>{let t={id:`${vr}${e.apiKey}`,name:e.apiKey,modelId:e.id,list:!1,query:e.kind===`collection`?`query ($id: ID!) {\n ${e.apiKey}(id: $id) {\n${_r(e,` `)}\n }\n}\n`:`query {\n ${e.apiKey} {\n${_r(e,` `)}\n }\n}\n`};if(e.kind!==`collection`)return[t];let n=_n(e);return[{id:`${vr}${n}`,name:n,modelId:e.id,list:!0,query:`query {\n ${n}(pageSize: 10) {\n totalCount\n nodes {\n${_r(e,` `)}\n }\n }\n}\n`},t]},br=({selected:e})=>{let{t}=u(),{definitions:n}=ln(),r=mr(),i=hr(),a=(0,q.useMemo)(()=>(n??[]).map(({definition:e})=>e).filter(G).sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({model:e,operations:yr(e)})),[n]),o=a.flatMap(e=>e.operations),s=o.find(t=>t.id===e)??o[0];return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row`,children:[a.length>0?(0,J.jsx)(Pn,{label:t(`develop.api.graphql.operations`),children:a.map(({model:e,operations:t})=>(0,J.jsx)(Fn,{label:e.label,children:t.map(e=>(0,J.jsx)(In,{to:`/api-explorer`,search:{tab:`graphql`,op:e.id},"aria-current":e.id===s?.id?`page`:void 0,children:(0,J.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs`,children:e.name})},e.id))},e.id))}):null,(0,J.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-6`,children:[s?(0,J.jsx)(K,{title:t(`develop.api.graphql.example`,{name:s.name}),children:(0,J.jsx)(Y,{label:t(`develop.api.graphql.query`),code:s.query})}):null,(0,J.jsx)(K,{title:t(`develop.api.graphql.playground`),flush:!0,children:r.isPending?(0,J.jsx)(E,{rows:6,className:`p-5`}):r.data?(0,J.jsx)(`iframe`,{title:t(`develop.api.graphql.playgroundFrame`),src:on(pr(),i),className:`block h-[40rem] w-full rounded-b-xl bg-card`}):(0,J.jsx)(w,{size:`panel`,icon:ir,title:t(`develop.api.graphql.unavailable`),description:t(`develop.api.graphql.unavailableDescription`)})})]})]})},xr=`/api/content/`,Sr=e=>Object.entries(e.paths).flatMap(([e,t])=>{let n=t.get;if(!e.startsWith(`/api/content/`)||!n?.operationId)return[];let r=n.parameters??[];return[{id:n.operationId,path:e,summary:n.summary??e,tag:n.tags?.[0]??``,routeKey:e.slice(13).split(`/`)[0]??``,byId:e.includes(`{id}`),list:r.some(e=>e.name===`filters`),parameters:r}]}),Cr=(e,t)=>{let n=(e.tags??[]).map(e=>e.name);return[...new Set([...n,...t.map(e=>e.tag)])].map(e=>({tag:e,operations:t.filter(t=>t.tag===e)})).filter(e=>e.operations.length>0)},wr=(e,t)=>e.parameters.some(e=>e.name===t),Tr=`GET`,Er=({groups:e,selectedId:t})=>{let{t:n}=u();return(0,J.jsx)(Pn,{label:n(`develop.api.endpoints`),children:e.map(e=>(0,J.jsx)(Fn,{label:e.tag,children:e.operations.map(e=>(0,J.jsxs)(In,{to:`/api-explorer`,search:{tab:`rest`,op:e.id},title:e.summary,"aria-current":e.id===t?`page`:void 0,children:[(0,J.jsx)(`span`,{className:`font-mono text-2xs font-semibold text-muted-foreground`,children:Tr}),(0,J.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs`,children:e.path.slice(xr.length-1)})]},e.id))},e.tag))})},Dr={id:``,locale:``,snapshot:``,fields:``,populate:``,sort:``,page:``,pageSize:``,q:``,filters:[]},Or=[`locale`,`snapshot`,`fields`,`populate`,`sort`,`page`,`pageSize`,`q`],kr=e=>`filters${e.replace(/^filters/,``).split(/[[\].]+/).filter(e=>e!==``).map(e=>`[${e}]`).join(``)}`,Ar=(e,t)=>{let n=e.path.replace(`{id}`,t.id.trim()?encodeURIComponent(t.id.trim()):`{id}`),r=new URLSearchParams;for(let n of Or){let i=t[n].trim();i&&e.parameters.some(e=>e.name===n)&&r.append(n,i)}if(e.list)for(let e of t.filters)e.key.trim()&&e.value!==``&&r.append(kr(e.key.trim()),e.value);let i=r.toString();return i?`${n}?${i}`:n},jr=(e,t)=>!e.byId||t.id.trim()!==``,Mr=`$SHAPIO_TOKEN`,Nr=(e,t)=>[`curl '${e.replace(/'/g,`'\\''`)}'`,` -H 'accept: application/json'`].concat(t?[` -H "authorization: Bearer ${Mr}"`]:[]).join(` \\
4
- `),Pr=(e,t)=>{let n=t?`{
5
- accept: 'application/json',
6
- authorization: \`Bearer \${process.env.SHAPIO_TOKEN}\`,
7
- }`:`{ accept: 'application/json' }`;return`const response = await fetch(${JSON.stringify(e)}, {\n headers: ${n},\n});\nconst { data, meta } = await response.json();\n`},Fr=e=>{let[t,n]=(0,q.useState)({});return{draft:e&&t[e]||Dr,setDraft:t=>{e&&n(n=>({...n,[e]:t}))}}},Ir=e=>new URL(e.replace(/^\//,``),g()).href,Lr=e=>{try{return JSON.parse(e)}catch{return e}},Rr=()=>a({mutationKey:[`develop`,`explorer`,`send`],mutationFn:async({path:e,token:t})=>{let n=Ir(e),r=performance.now(),i=await fetch(n,{headers:{accept:`application/json`,...t?{authorization:`Bearer ${t}`}:{}},credentials:`omit`,cache:`no-store`}),a=await i.text();return{url:n,status:i.status,statusText:i.statusText,ok:i.ok,durationMs:Math.round(performance.now()-r),body:Lr(a),text:a}}}),zr=({rows:e,onChange:t})=>{let{t:n}=u(),r=(n,r)=>t(e.map(e=>e.id===n?{...e,...r}:e));return(0,J.jsxs)(`fieldset`,{className:`space-y-2`,children:[(0,J.jsx)(`legend`,{className:`text-sm font-semibold`,children:n(`develop.api.request.filters`)}),e.map((i,a)=>(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(Oe,{"aria-label":n(`develop.api.request.filterKey`,{index:a+1}),placeholder:n(`develop.api.request.filterKeyPlaceholder`),className:`font-mono`,value:i.key,onChange:e=>r(i.id,{key:e.target.value})}),(0,J.jsx)(Oe,{"aria-label":n(`develop.api.request.filterValue`,{index:a+1}),placeholder:n(`develop.api.request.filterValuePlaceholder`),value:i.value,onChange:e=>r(i.id,{value:e.target.value})}),(0,J.jsx)(M,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":n(`develop.api.request.removeFilter`,{index:a+1}),onClick:()=>t(e.filter(e=>e.id!==i.id)),children:(0,J.jsx)(ie,{"aria-hidden":`true`})})]},i.id)),(0,J.jsxs)(M,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t([...e,{id:bt(),key:``,value:``}]),children:[(0,J.jsx)(wt,{"aria-hidden":`true`}),n(`develop.api.request.addFilter`)]})]})},Br=f()(e=>({token:``,setToken:t=>e({token:t})}));c.subscribe((e,t)=>{t.csrfToken!==void 0&&e.csrfToken===void 0&&Br.setState({token:``})});var X=({label:e,hint:t,value:n,onChange:r,mono:i=!1,...a})=>{let o=(0,q.useId)(),s=`${o}-hint`;return(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(an,{htmlFor:o,label:e,hint:t,hintId:t?s:void 0}),(0,J.jsx)(Oe,{id:o,value:n,onChange:e=>r(e.target.value),"aria-describedby":t?s:void 0,className:h(i&&`font-mono`),spellCheck:!1,...a})]})},Vr=`__default__`,Hr=`GET`,Ur=({operation:e,draft:t,onDraftChange:n,path:r,sendable:i,sending:a,onSend:o})=>{let{t:s}=u(),c=(0,q.useId)(),l=Dn().data??[],d=Br(e=>e.token),f=Br(e=>e.setToken),p=e=>n({...t,...e});return(0,J.jsx)(K,{title:e.summary,titleAs:`h2`,children:(0,J.jsxs)(`form`,{className:`space-y-5`,onSubmit:e=>{e.preventDefault(),i&&o()},children:[(0,J.jsxs)(`p`,{className:`flex min-w-0 items-center gap-2`,children:[(0,J.jsx)(T,{variant:`outline`,className:`font-mono`,children:Hr}),(0,J.jsx)(`code`,{className:`min-w-0 font-mono text-xs break-all`,children:r})]}),(0,J.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[e.byId?(0,J.jsx)(X,{label:s(`develop.api.request.id`),value:t.id,onChange:e=>p({id:e}),required:!0,mono:!0}):null,wr(e,`locale`)?(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(an,{htmlFor:c,label:s(`develop.api.request.locale`),hint:s(`develop.api.request.localeHint`)}),(0,J.jsxs)(qe,{value:t.locale||Vr,onValueChange:e=>p({locale:e===Vr?``:e}),children:[(0,J.jsx)(We,{id:c,className:`w-full`,children:(0,J.jsx)(Ue,{})}),(0,J.jsxs)(Ge,{children:[(0,J.jsx)(Ke,{value:Vr,children:s(`develop.api.request.defaultLocale`)}),l.map(e=>(0,J.jsx)(Ke,{value:e.code,children:s(`develop.api.request.localeOption`,{label:e.label,code:e.code})},e.code))]})]})]}):null,wr(e,`snapshot`)?(0,J.jsx)(X,{label:s(`develop.api.request.snapshot`),hint:s(`develop.api.request.snapshotHint`),value:t.snapshot,onChange:e=>p({snapshot:e}),inputMode:`numeric`}):null,(0,J.jsx)(X,{label:s(`develop.api.request.fields`),hint:s(`develop.api.request.fieldsHint`),value:t.fields,onChange:e=>p({fields:e}),mono:!0}),(0,J.jsx)(X,{label:s(`develop.api.request.populate`),hint:s(`develop.api.request.populateHint`),value:t.populate,onChange:e=>p({populate:e}),mono:!0}),e.list?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(X,{label:s(`develop.api.request.sort`),hint:s(`develop.api.request.sortHint`),value:t.sort,onChange:e=>p({sort:e}),mono:!0}),(0,J.jsx)(X,{label:s(`develop.api.request.search`),value:t.q,onChange:e=>p({q:e})}),(0,J.jsx)(X,{label:s(`develop.api.request.page`),value:t.page,onChange:e=>p({page:e}),inputMode:`numeric`}),(0,J.jsx)(X,{label:s(`develop.api.request.pageSize`),value:t.pageSize,onChange:e=>p({pageSize:e}),inputMode:`numeric`})]}):null]}),e.list?(0,J.jsx)(zr,{rows:t.filters,onChange:e=>p({filters:e})}):null,(0,J.jsx)(X,{label:s(`develop.api.request.token`),hint:s(`develop.api.request.tokenHint`),value:d,onChange:f,type:`password`,autoComplete:`off`,placeholder:s(`develop.api.request.tokenPlaceholder`),mono:!0}),(0,J.jsx)(`div`,{className:`flex justify-end`,children:(0,J.jsxs)(M,{type:`submit`,disabled:!i||a,children:[(0,J.jsx)(Jt,{"aria-hidden":`true`}),s(a?`develop.api.sending`:`develop.api.send`)]})})]})})},Wr=[`title`,`name`,`label`,`heading`,`slug`],Gr=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Kr=e=>{if(!Gr(e)||typeof e.id!=`string`)return[];let t=Wr.find(t=>typeof e[t]==`string`&&e[t]!==``);return[{id:e.id,locale:typeof e.locale==`string`?e.locale:void 0,label:t?String(e[t]):void 0}]},qr=e=>Gr(e)?Array.isArray(e.data)?e.data.flatMap(Kr):Kr(e.data):[],Jr=({entries:e,modelKey:t})=>{let{t:n}=u();return(0,J.jsx)(`ul`,{"aria-label":n(`develop.api.response.entries`),className:`divide-y rounded-lg border`,children:e.map(e=>(0,J.jsxs)(`li`,{className:`flex min-w-0 items-center gap-3 px-3 py-2`,children:[(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`p`,{className:`truncate text-sm font-medium`,children:e.label??n(`content.untitled`)}),(0,J.jsx)(`p`,{className:`truncate font-mono text-2xs text-muted-foreground`,children:e.locale?n(`develop.api.response.idLocale`,{id:e.id,locale:e.locale}):e.id})]}),(0,J.jsx)(M,{asChild:!0,variant:`outline`,size:`sm`,children:(0,J.jsxs)(b,{to:`/content/$modelKey/$entryId`,params:{modelKey:t,entryId:e.id},search:e.locale?{locale:e.locale}:{},"aria-label":n(`develop.api.response.editEntryLabel`,{entry:e.label??e.id}),children:[(0,J.jsx)(Ct,{"aria-hidden":`true`}),n(`develop.api.response.editEntry`)]})})]},`${e.id}:${e.locale??``}`))})},Yr=({response:e,modelKey:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>e?.ok?qr(e.body):[],[e]),i=(0,q.useMemo)(()=>e&&typeof e.body!=`string`?JSON.stringify(e.body,null,2):e?.text,[e]);return(0,J.jsx)(K,{title:n(`develop.api.response.title`),actions:e?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(C,{tone:e.ok?`success`:`danger`,label:`${e.status} ${e.statusText}`.trim(),size:`sm`}),(0,J.jsx)(`span`,{className:`text-meta text-muted-foreground tabular-nums`,children:n(`develop.api.response.duration`,{ms:e.durationMs})})]}):null,children:e?(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(`p`,{role:`status`,className:`sr-only`,children:n(`develop.api.response.announce`,{status:e.status,ms:e.durationMs})}),r.length>0&&t?(0,J.jsx)(Jr,{entries:r,modelKey:t}):null,(0,J.jsx)(Y,{label:n(`develop.api.response.body`),code:i??``})]}):(0,J.jsx)(w,{size:`panel`,icon:nr,title:n(`develop.api.response.empty`)})})},Xr=(e,t)=>({queryKey:i.develop.usage.model(e,t),queryFn:()=>d.usage.fields({modelId:e,days:t}),meta:{silent:!0}}),Zr=e=>{let t=new Map;for(let n of e){for(let e of n.principals)t.set(e.principalKey,{...e,fields:t.get(e.principalKey)?.fields??[]});for(let e of n.fields)for(let r of e.principals)t.get(r.principalKey)?.fields.push({modelId:n.modelId,apiKeyPath:e.apiKeyPath??e.fieldPath,reads:r.reads,lastReadAt:r.lastReadAt,selection:r.selection})}return[...t.values()].sort((e,t)=>t.requests-e.requests)},Qr=(e,t,n=7)=>_({queries:e.map(e=>({...Xr(e,n),enabled:t})),combine:e=>{let n=e.flatMap(e=>e.data?[e.data]:[]);return{principals:Zr(n),tracking:n.every(e=>e.tracking),isPending:t&&e.some(e=>e.isPending),error:e.find(e=>e.error)?.error??null,refetch:()=>Promise.all(e.map(e=>e.refetch()))}}}),$r=e=>r({queryKey:i.develop.usage.model(e,7),queryFn:()=>d.usage.fields({modelId:e,days:7}),meta:{silent:!0}}),ei={required:`develop.api.shape.flags.required`,localized:`develop.api.shape.flags.localized`,private:`develop.api.shape.flags.private`,unique:`develop.api.shape.flags.unique`,filterable:`develop.api.shape.flags.filterable`,sortable:`develop.api.shape.flags.sortable`},ti=e=>[e.required&&`required`,e.localized&&`localized`,!e.public&&`private`,e.unique&&`unique`,e.filterable&&`filterable`,e.sortable&&`sortable`].filter(e=>e!==!1),ni=(e,t)=>{let n=e?.fields.find(e=>e.apiKeyPath===t);return n?{reads:n.reads,readers:n.principals}:void 0},ri=({model:e})=>{let{t}=u(),n=$r(e.id),r=(e,n)=>n??t(e===`anonymous`?`develop.api.shape.anonymous`:`develop.api.shape.appUsers`),i=e.fields.filter(e=>!e.deprecated);return(0,J.jsx)(K,{title:t(`develop.api.shape.title`),description:t(`develop.api.shape.description`,{model:e.label,days:7}),flush:!0,children:(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:t(`develop.api.shape.field`)}),(0,J.jsx)(z,{children:t(`develop.api.shape.readers`)})]})}),(0,J.jsx)(B,{children:i.map(e=>{let i=ni(n.data,e.apiKey);return(0,J.jsxs)(V,{children:[(0,J.jsxs)(H,{className:`h-auto py-2 align-top`,children:[(0,J.jsx)(`p`,{className:`font-mono text-xs font-semibold`,children:e.apiKey}),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`models.dataTypes.${e.type}.name`)}),ti(e).length>0?(0,J.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:ti(e).map(e=>(0,J.jsx)(T,{variant:`outline`,className:`text-2xs`,children:t(ei[e])},e))}):null]}),(0,J.jsx)(H,{className:`h-auto py-2 align-top text-meta`,children:i?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`p`,{className:`tabular-nums`,children:t(`develop.api.shape.reads`,{count:i.reads})}),(0,J.jsx)(`p`,{className:`text-muted-foreground`,children:i.readers.map(e=>r(e.principalKey,e.tokenName)).join(`, `)})]}):(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:n.isPending?t(`common.loading`):n.data?.tracking===!1?t(`develop.api.shape.trackingOff`):t(`develop.api.shape.noReads`)})})]},e.id)})})]})})},ii=({url:e,withToken:t})=>{let{t:n}=u();return(0,J.jsxs)(ze,{defaultValue:`curl`,children:[(0,J.jsxs)(Le,{"aria-label":n(`develop.api.copyAs`),className:`self-start`,children:[(0,J.jsx)(N,{value:`curl`,children:n(`develop.api.curl`)}),(0,J.jsx)(N,{value:`fetch`,children:n(`develop.api.fetch`)})]}),(0,J.jsx)(P,{value:`curl`,children:(0,J.jsx)(Y,{label:n(`develop.api.curlLabel`),code:Nr(e,t)})}),(0,J.jsx)(P,{value:`fetch`,children:(0,J.jsx)(Y,{label:n(`develop.api.fetchLabel`),code:Pr(e,t)})})]})},ai=({groups:e,operation:t})=>{let{draft:n,setDraft:r}=Fr(t.id),i=Br(e=>e.token),a=Rr(),{definitions:o}=ln(),s=(0,q.useMemo)(()=>o?.map(({definition:e})=>e).filter(G).find(e=>vn(e)===t.routeKey),[o,t.routeKey]),c=hr(),l=on(Ar(t,n),c),u=a.data&&a.variables?.operationId===t.id?a.data:void 0;return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row`,children:[(0,J.jsx)(Er,{groups:e,selectedId:t.id}),(0,J.jsxs)(`div`,{className:`grid min-w-0 flex-1 gap-6 2xl:grid-cols-[minmax(0,1fr)_24rem]`,children:[(0,J.jsxs)(`div`,{className:`min-w-0 space-y-6`,children:[(0,J.jsx)(Ur,{operation:t,draft:n,onDraftChange:r,path:l,sendable:jr(t,n),sending:a.isPending,onSend:()=>a.mutate({operationId:t.id,path:l,token:i})}),(0,J.jsx)(ii,{url:Ir(l),withToken:i!==``}),(0,J.jsx)(Yr,{response:u,modelKey:s?.apiKey})]}),s?(0,J.jsx)(ri,{model:s}):null]})]})},oi=ue(`/app/api-explorer`),si={rest:`develop.api.tabs.rest`,graphql:`develop.api.tabs.graphql`},ci=({document:e})=>{let{t}=u(),{tab:n=`rest`,op:r}=oi.useSearch(),i=oi.useNavigate(),a=(0,q.useMemo)(()=>Sr(e),[e]),o=(0,q.useMemo)(()=>Cr(e,a),[e,a]),s=a.find(e=>e.id===r)??o[0]?.operations[0];return(0,J.jsxs)(ze,{value:n,onValueChange:e=>void i({search:{tab:e},replace:!0}),children:[(0,J.jsx)(S,{title:t(`develop.apiExplorerTitle`),meta:t(`develop.api.meta`,{version:e.info.version,count:a.length}),tabs:(0,J.jsx)(Le,{variant:`underline`,"aria-label":t(`develop.api.tabs.label`),children:pe.map(e=>(0,J.jsx)(N,{value:e,children:t(si[e])},e))})}),(0,J.jsx)(P,{value:`rest`,className:`pt-4`,children:s?(0,J.jsx)(ai,{groups:o,operation:s}):(0,J.jsx)(w,{icon:Ve,title:t(`develop.api.empty`),description:t(`develop.api.emptyDescription`)})}),(0,J.jsx)(P,{value:`graphql`,className:`pt-4`,children:(0,J.jsx)(br,{selected:r})})]})},li=()=>{let e=dr();return(0,J.jsx)(x,{width:`full`,children:(0,J.jsx)(W,{query:e,children:e=>(0,J.jsx)(ci,{document:e})})})},ui=nn({title:Zt().max(200,`validation.tooLong`),description:tn().max(5e3,`validation.tooLong`)}),di={title:``,description:``},fi=(e,t)=>{let n=Ft(),r=$t({resolver:Qt(ui),defaultValues:di}),{reset:i}=r;return Vt(e,i,di,n.reset),{form:r,onSubmit:r.handleSubmit(async({title:e,description:r})=>{let a=await en(n.mutateAsync({title:e.trim(),description:r.trim()}));a.ok&&(i(di),t(a.value))}),createChangeSet:n}},pi=({open:e,onOpenChange:t,onCreated:n})=>{let{t:r}=u(),{form:i,onSubmit:a,createChangeSet:o}=fi(e,n);return(0,J.jsxs)(Ln,{open:e,onOpenChange:t,size:`md`,title:r(`changes.createTitle`),dirty:i.formState.isDirty,pending:o.isPending,submitLabel:r(`common.create`),pendingLabel:r(`common.saving`),onSubmit:e=>void a(e),children:[(0,J.jsx)(Xt,{control:i.control,name:`title`,label:r(`changes.fields.title`),autoComplete:`off`}),(0,J.jsx)(Nn,{control:i.control,name:`description`,label:r(`changes.fields.description`),rows:3}),(0,J.jsx)(Ze,{error:o.error})]})},mi=`changes.manage`,hi=`changes.ship`,gi=`tokens.manage`,_i={open:{labelKey:`changes.statuses.open`,tone:`neutral`},scheduled:{labelKey:`changes.statuses.scheduled`,tone:`scheduled`},shipping:{labelKey:`changes.statuses.shipping`,tone:`progress`},shipped:{labelKey:`changes.statuses.shipped`,tone:`success`},failed:{labelKey:`changes.statuses.failed`,tone:`danger`},discarded:{labelKey:`changes.statuses.discarded`,tone:`muted`}},vi=new Set([`open`,`failed`]),Z=()=>{let e=ke().data?.globalPermissions??[];return{canManageChanges:e.includes(mi),canShipChanges:e.includes(hi),canReadUsage:e.includes(gi),canManagePublishing:e.includes(`publishing.manage`),canManageWebhooks:e.includes(`webhooks.manage`)}},yi=({size:e})=>{let{t}=u();return(0,J.jsx)(w,{icon:re,size:e,title:t(`develop.noAccess`),description:t(`develop.noAccessDescription`)})},bi={admin:`develop.actors.admin`,token:`develop.actors.token`,system:`develop.actors.system`},xi=e=>e in bi,Q=()=>{let{t:e}=u();return t=>t?t.name?t.name:xi(t.type)?e(bi[t.type]):t.type:e(`develop.actors.system`)},Si=({set:e,connectionName:t})=>{let{t:n}=u(),r=Q(),i=_i[e.status],a=e.scheduledFor??e.updatedAt;return(0,J.jsxs)(V,{children:[(0,J.jsxs)(H,{className:`max-w-80`,children:[(0,J.jsx)(k,{asChild:!0,className:`block truncate`,children:(0,J.jsx)(b,{to:`/changes/$changeSetId`,params:{changeSetId:e.id},children:e.title})}),e.description?(0,J.jsx)(`span`,{className:`block truncate text-meta text-muted-foreground`,children:e.description}):null]}),(0,J.jsx)(H,{children:(0,J.jsx)(C,{tone:i.tone,label:n(i.labelKey)})}),(0,J.jsx)(H,{className:`text-right tabular-nums`,children:n(`changes.itemCount`,{count:e.entryItemCount+e.schemaItemCount})}),(0,J.jsx)(H,{className:`whitespace-nowrap`,children:r(e.createdBy)}),(0,J.jsxs)(H,{className:`whitespace-nowrap`,title:O(a),children:[e.scheduledFor?n(`changes.scheduledFor`,{at:O(e.scheduledFor)}):D(a),t?(0,J.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:n(`changes.deploysTo`,{name:t})}):null]})]})},Ci=()=>{let{t:e}=u(),t=Et(),n=Ut(),r=e=>e?n.data?.find(t=>t.id===e)?.name:void 0;return(0,J.jsx)(K,{title:e(`changes.openTitle`),flush:!0,children:(0,J.jsx)(W,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(w,{icon:rt,size:`panel`,title:e(`changes.empty`),description:e(`changes.emptyDescription`)}),children:t=>(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:e(`changes.fields.title`)}),(0,J.jsx)(z,{children:e(`changes.fields.status`)}),(0,J.jsx)(z,{className:`text-right`,children:e(`changes.fields.items`)}),(0,J.jsx)(z,{children:e(`changes.fields.author`)}),(0,J.jsx)(z,{children:e(`changes.fields.when`)})]})}),(0,J.jsx)(B,{children:t.items.map(e=>(0,J.jsx)(Si,{set:e,connectionName:r(e.deploymentConnectionId)},e.id))})]})})})},wi=()=>{let{t:e}=u(),t=On({status:`scheduled`,limit:25});return(0,J.jsx)(K,{title:e(`changes.scheduledPublications`),flush:!0,children:(0,J.jsx)(W,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(w,{icon:He,size:`panel`,title:e(`changes.noScheduledPublications`)}),children:t=>(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:e(`changes.fields.model`)}),(0,J.jsx)(z,{children:e(`changes.fields.entry`)}),(0,J.jsx)(z,{children:e(`changes.fields.locale`)}),(0,J.jsx)(z,{children:e(`changes.fields.action`)}),(0,J.jsx)(z,{children:e(`changes.fields.when`)})]})}),(0,J.jsx)(B,{children:t.items.map(t=>(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`font-mono text-xs`,children:t.modelKey??e(`common.unknown`)}),(0,J.jsx)(H,{className:`max-w-48`,children:(0,J.jsx)(`span`,{className:`block truncate font-mono text-xs`,title:t.entryId,children:t.entryId})}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:t.locale}),(0,J.jsx)(H,{children:e(Gt[t.action])}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:O(t.runAt),children:D(t.runAt)})]},t.id))})]})})})},Ti=e=>{let{t}=u(),n=zt(),r=Ft(),i={modelKey:e.modelKey??``,entryId:e.entryId,locale:e.locale,action:`publish`},a=async e=>{let r=await n.mutateAsync({id:e,input:i});j.success(t(`changes.added`,{title:r.title}))};return{addTo:a,createAndAdd:async e=>{let t=await r.mutateAsync({title:e});await a(t.id)},pending:n.isPending||r.isPending,error:n.error??r.error,reset:()=>{n.reset(),r.reset()}}},Ei=({entry:e,label:t})=>{let{t:n}=u(),r=(0,q.useId)(),i=(0,q.useId)(),[a,o]=(0,q.useState)(!1),[s,c]=(0,q.useState)(``),l=Et(`open`),{addTo:d,createAndAdd:f,pending:p,error:m,reset:h}=Ti(e),g=e=>void e().then(()=>o(!1),e=>ve(e,`adding an entry to a change set`));return(0,J.jsxs)(we,{open:a,onOpenChange:e=>{p||(o(e),e&&(h(),c(``)))},modal:!0,children:[(0,J.jsx)(xe,{asChild:!0,children:(0,J.jsxs)(M,{variant:`outline`,size:`sm`,"aria-label":t,children:[(0,J.jsx)(yt,{"aria-hidden":`true`}),n(`changes.addTo`)]})}),(0,J.jsxs)(Ce,{align:`end`,"aria-labelledby":r,className:`w-80 space-y-3`,children:[(0,J.jsx)(`p`,{id:r,className:`text-sm font-semibold`,children:n(`changes.addToTitle`)}),l.data&&l.data.items.length>0?(0,J.jsx)(`ul`,{className:`max-h-56 space-y-1 overflow-y-auto`,children:l.data.items.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsx)(M,{variant:`ghost`,size:`sm`,className:`w-full justify-start truncate`,disabled:p,onClick:()=>g(()=>d(e.id)),children:e.title})},e.id))}):(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:n(`changes.noOpenSets`)}),(0,J.jsxs)(`form`,{noValidate:!0,className:`space-y-2 border-t pt-3`,onSubmit:e=>{e.preventDefault();let t=s.trim();t&&g(()=>f(t))},children:[(0,J.jsx)(`label`,{htmlFor:i,className:`text-sm font-semibold`,children:n(`changes.newSetTitle`)}),(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsx)(Oe,{id:i,inputSize:`sm`,value:s,maxLength:200,autoComplete:`off`,onChange:e=>c(e.target.value)}),(0,J.jsx)(ae,{size:`sm`,pending:p,pendingLabel:n(`common.saving`),disabled:!s.trim(),children:n(`common.create`)})]})]}),(0,J.jsx)(Ze,{error:m})]})]})},Di={draft:{labelKey:`changes.unassigned.statuses.draft`,tone:`neutral`},modified:{labelKey:`changes.unassigned.statuses.modified`,tone:`warning`}},Oi=()=>{let{t:e}=u(),t=jt();return(0,J.jsx)(K,{title:e(`changes.unassigned.title`),flush:!0,children:(0,J.jsx)(W,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(w,{icon:St,size:`panel`,title:e(`changes.unassigned.empty`)}),children:t=>(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:e(`changes.fields.entry`)}),(0,J.jsx)(z,{children:e(`changes.fields.model`)}),(0,J.jsx)(z,{children:e(`changes.fields.locale`)}),(0,J.jsx)(z,{children:e(`changes.fields.status`)}),(0,J.jsx)(z,{children:e(`changes.fields.updated`)}),(0,J.jsx)(z,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:e(`common.actions`)})})]})}),(0,J.jsx)(B,{children:t.items.map(t=>{let n=Di[t.status],r=t.title??t.entryId;return(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`max-w-72`,children:t.modelKey?(0,J.jsx)(k,{asChild:!0,className:`block truncate`,children:(0,J.jsx)(b,{to:`/content/$modelKey/$entryId`,params:{modelKey:t.modelKey,entryId:t.entryId},search:{locale:t.locale},children:r})}):(0,J.jsx)(k,{className:`block truncate`,children:r})}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:t.modelKey??e(`common.unknown`)}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:t.locale}),(0,J.jsx)(H,{children:(0,J.jsx)(C,{tone:n.tone,label:e(n.labelKey)})}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:O(t.updatedAt),children:D(t.updatedAt)}),(0,J.jsx)(H,{className:`text-right`,children:(0,J.jsx)(Ei,{entry:t,label:e(`changes.addToLabel`,{title:r})})})]},`${t.entryId}:${t.locale}`)})})]})})})},ki=()=>{let{t:e}=u(),t=y(),{canManageChanges:n}=Z(),[r,i]=(0,q.useState)(!1);return(0,J.jsxs)(x,{children:[(0,J.jsx)(S,{title:e(`changes.title`),actions:n?(0,J.jsxs)(M,{onClick:()=>i(!0),children:[(0,J.jsx)(wt,{"aria-hidden":`true`}),e(`changes.create`)]}):void 0}),n?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ci,{}),(0,J.jsx)(Oi,{}),(0,J.jsx)(wi,{}),(0,J.jsx)(pi,{open:r,onOpenChange:i,onCreated:e=>{i(!1),t({to:`/changes/$changeSetId`,params:{changeSetId:e.id}})}})]}):(0,J.jsx)(yi,{})]})},Ai=nn({connectionId:Zt()}),ji=({flow:e,connections:t,currentConnectionId:n,disabled:r})=>{let{t:i}=u(),a=(0,q.useId)(),[o,s]=(0,q.useState)(!1),[c,l]=(0,q.useState)(null),d=(0,q.useMemo)(()=>({connectionId:n??t[0]?.id??``}),[n,t]),f=$t({resolver:Qt(Ai),values:d}),p=f.handleSubmit(async({connectionId:t})=>{l(null);try{await e.shipNow(t),s(!1)}catch(e){l(e)}});return(0,J.jsxs)(we,{open:o,onOpenChange:t=>e.shipping&&!t?void 0:s(t),modal:!0,children:[(0,J.jsx)(xe,{asChild:!0,children:(0,J.jsxs)(M,{variant:`outline`,disabled:r,children:[(0,J.jsx)(Ht,{"aria-hidden":`true`}),i(`changes.review.shipWithDeploy`)]})}),(0,J.jsx)(Ce,{align:`end`,"aria-labelledby":a,className:`w-80`,children:(0,J.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void p(e),className:`space-y-4`,children:[(0,J.jsx)(`p`,{id:a,className:`text-sm font-semibold`,children:i(`changes.review.shipWithDeployTitle`)}),(0,J.jsx)(Rn,{control:f.control,name:`connectionId`,label:i(`changes.review.connection`),options:t.map(e=>({value:e.id,label:e.name}))}),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:i(`changes.review.shipWithDeployHint`)}),(0,J.jsx)(Ze,{error:c}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>s(!1),children:i(`common.cancel`)}),(0,J.jsx)(ae,{size:`sm`,pending:e.shipping,pendingLabel:i(`changes.review.shipping`),children:i(`changes.review.shipWithDeploy`)})]})]})})]})},Mi=nn({at:jn()}),Ni=({flow:e,disabled:t})=>{let{t:n}=u(),r=(0,q.useId)(),[i,a]=(0,q.useState)(!1),o=(0,q.useMemo)(()=>({at:i?An():``}),[i]),s=$t({resolver:Qt(Mi),defaultValues:o});Vt(i,s.reset,o,e.resetSchedule);let c=s.handleSubmit(async({at:t})=>{let n=kn(t);n&&(await en(e.scheduleAt(n))).ok&&a(!1)});return(0,J.jsxs)(we,{open:i,onOpenChange:t=>e.scheduling&&!t?void 0:a(t),modal:!0,children:[(0,J.jsx)(xe,{asChild:!0,children:(0,J.jsxs)(M,{variant:`outline`,disabled:t,children:[(0,J.jsx)(He,{"aria-hidden":`true`}),n(`changes.review.schedule`)]})}),(0,J.jsx)(Ce,{align:`end`,"aria-labelledby":r,className:`w-80`,children:(0,J.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void c(e),className:`space-y-4`,children:[(0,J.jsx)(`p`,{id:r,className:`text-sm font-semibold`,children:n(`changes.review.scheduleTitle`)}),(0,J.jsx)(Xt,{control:s.control,name:`at`,type:`datetime-local`,label:n(`changes.review.scheduleAt`),description:n(`publishing.fields.localTimeHint`,{timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone})}),(0,J.jsx)(Ze,{error:e.scheduleError}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>a(!1),children:n(`common.cancel`)}),(0,J.jsx)(ae,{size:`sm`,pending:e.scheduling,pendingLabel:n(`common.saving`),children:n(`changes.review.schedule`)})]})]})})]})},Pi=({set:e,flow:t})=>{let{t:n}=u(),r=y(),i=Rt(),a=At(),o=Ut(),{canShipChanges:s}=Z(),c=(o.data??[]).filter(e=>e.enabled),l=vi.has(e.status),d=!t.canShip||!t.acknowledged||t.shipping,f=e.entryItemCount+e.schemaItemCount;return e.status===`shipped`||e.status===`discarded`||e.status===`shipping`?null:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(L,{tone:`danger`,title:n(`changes.review.discardTitle`,{title:e.title}),description:n(`changes.review.discardDescription`),confirmLabel:n(`changes.review.discard`),onConfirm:()=>i.mutateAsync(e.id,{onSuccess:()=>{j.success(n(`changes.review.discarded`)),r({to:`/changes`})}}),trigger:(0,J.jsxs)(M,{variant:`destructive-ghost`,disabled:t.shipping,children:[(0,J.jsx)(ye,{"aria-hidden":`true`}),n(`changes.review.discard`)]})}),e.status===`scheduled`?(0,J.jsxs)(M,{variant:`outline`,disabled:a.isPending,onClick:()=>a.mutate(e.id,{onSuccess:()=>j.success(n(`changes.review.unscheduled`))}),children:[(0,J.jsx)(Hn,{"aria-hidden":`true`}),n(`changes.review.unschedule`)]}):null,l&&s?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ni,{flow:t,disabled:d}),c.length>0?(0,J.jsx)(ji,{flow:t,connections:c,currentConnectionId:e.deploymentConnectionId,disabled:d}):null,(0,J.jsx)(L,{tone:`default`,title:n(`changes.review.shipTitle`,{title:e.title}),description:n(`changes.review.shipDescription`,{count:f}),confirmLabel:n(`changes.review.ship`),pendingLabel:n(`changes.review.shipping`),onConfirm:()=>t.shipNow(),trigger:(0,J.jsxs)(M,{disabled:d,"aria-busy":t.shipping||void 0,children:[t.shipping?(0,J.jsx)(p,{"aria-hidden":`true`,className:`animate-spin motion-reduce:animate-none`}):(0,J.jsx)(Jt,{"aria-hidden":`true`}),t.shipping?n(`changes.review.shipping`):n(`changes.review.ship`)]})})]}):null]})},Fi={NEW_FIELDS_AFTER_SHIP:`changes.review.notices.newFieldsAfterShip`},Ii=e=>e in Fi,Li=`font-semibold text-link underline-offset-4 hover:underline`,Ri=({set:e,flow:t,notices:n,showAcknowledgementHint:r})=>{let{t:i}=u();return(0,J.jsxs)(J.Fragment,{children:[e.status===`shipped`&&e.shippedSnapshot!==null?(0,J.jsxs)(F,{variant:`success`,role:`status`,children:[(0,J.jsx)(et,{"aria-hidden":`true`}),(0,J.jsx)(I,{children:(0,J.jsxs)(`p`,{children:[i(`changes.review.shippedIn`),` `,(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(e.shippedSnapshot)},className:Li,children:i(`snapshots.version`,{seq:e.shippedSnapshot})})]})})]}):null,e.status===`failed`&&e.error&&!t.stale?(0,J.jsxs)(F,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)($e,{children:i(`changes.review.failedTitle`)}),(0,J.jsx)(I,{children:e.error.message})]}):null,t.stale?(0,J.jsxs)(F,{variant:`warning`,className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,J.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,J.jsx)(Bt,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":`true`}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)($e,{children:i(`changes.review.staleTitle`)}),(0,J.jsx)(I,{children:i(`changes.review.staleDescription`)})]})]}),(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>void t.refresh(),children:i(`changes.review.refresh`)})]}):null,r&&(t.needsBreaking||t.needsDestructive)&&!t.acknowledged?(0,J.jsxs)(F,{variant:`warning`,role:`status`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(I,{children:(0,J.jsxs)(`p`,{children:[i(`changes.review.acknowledgeInChecks`),` `,(0,J.jsx)(b,{to:`/changes/$changeSetId`,params:{changeSetId:e.id},search:{tab:`checks`},className:Li,children:i(`changes.tabs.checks`)})]})})]}):null,n.filter(Ii).map(e=>(0,J.jsxs)(F,{variant:`info`,role:`status`,children:[(0,J.jsx)(_e,{"aria-hidden":`true`}),(0,J.jsx)(I,{children:i(Fi[e])})]},e))]})},zi=240,Bi=e=>{if(e==null)return``;let t=typeof e==`string`?e:typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e);return t.length>zi?`${t.slice(0,239)}…`:t},Vi=({value:e,side:t})=>{let{t:n}=u(),r=Bi(e);return(0,J.jsx)(H,{className:`max-w-80 align-top whitespace-normal`,children:r?(0,J.jsx)(`span`,{className:t===`before`?`text-muted-foreground line-through decoration-destructive/60`:``,children:r}):(0,J.jsx)(`span`,{className:`text-meta text-muted-foreground italic`,children:n(`changes.review.empty`)})})},Hi={unpublished:{labelKey:`changes.review.liveStates.unpublished`,tone:`neutral`},published:{labelKey:`changes.review.liveStates.published`,tone:`success`},modified:{labelKey:`changes.review.liveStates.modified`,tone:`warning`},missing:{labelKey:`changes.review.liveStates.missing`,tone:`danger`}},Ui=({item:e,onRemove:t})=>{let{t:n}=u(),r=e.title??e.entryId,i=Hi[e.liveState];return(0,J.jsxs)(K,{title:r,titleAs:`h3`,flush:!0,actions:(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(T,{variant:`outline`,className:`font-mono`,children:e.locale}),(0,J.jsx)(T,{variant:`secondary`,children:n(Gt[e.action])}),(0,J.jsx)(C,{tone:i.tone,label:n(i.labelKey),size:`sm`}),e.modelKey?(0,J.jsx)(M,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,J.jsx)(b,{to:`/content/$modelKey/$entryId`,params:{modelKey:e.modelKey,entryId:e.entryId},search:{locale:e.locale},children:n(`changes.review.openEntry`)})}):null,t?(0,J.jsx)(L,{tone:`danger`,title:n(`changes.review.removeItemTitle`,{title:r}),description:n(`changes.review.removeItemDescription`),confirmLabel:n(`common.remove`),onConfirm:t,trigger:(0,J.jsx)(M,{variant:`destructive-ghost`,size:`icon-sm`,"aria-label":n(`changes.review.removeItem`,{title:r}),children:(0,J.jsx)(ye,{"aria-hidden":`true`})})}):null]}),children:[e.fields.length===0?(0,J.jsx)(`p`,{className:`px-5 py-4 text-meta text-muted-foreground`,children:n(`changes.review.noFieldChanges`)}):(0,J.jsxs)(U,{"aria-label":n(`changes.review.fieldChangesOf`,{title:r}),children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:n(`changes.review.field`)}),(0,J.jsx)(z,{children:n(`changes.review.before`)}),(0,J.jsx)(z,{children:n(`changes.review.after`)})]})}),(0,J.jsx)(B,{children:e.fields.map(e=>(0,J.jsxs)(V,{children:[(0,J.jsxs)(H,{className:`align-top`,children:[(0,J.jsx)(`span`,{className:`block font-semibold`,children:e.label}),(0,J.jsx)(`span`,{className:`block font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,J.jsx)(Vi,{value:e.before,side:`before`}),(0,J.jsx)(Vi,{value:e.after,side:`after`})]},e.fieldId))})]}),e.issues.length>0?(0,J.jsx)(`ul`,{className:`space-y-1 border-t px-5 py-3 text-sm text-destructive`,children:e.issues.map(e=>(0,J.jsx)(`li`,{children:e.message},`${e.path}-${e.code}`))}):null]})},Wi=new Set([`requiredField`,`validation`,`constraint`,`index`]),Gi=new Set([`metadata`,`editorSwap`]),Ki=e=>e.breaking||e.destructive?`breaking`:e.category===`conversion`?`conversion`:Wi.has(e.category)?`validation`:Gi.has(e.category)?`metadata`:`additive`,qi={breaking:{labelKey:`changes.classes.breaking`,tone:`warning`},conversion:{labelKey:`changes.classes.conversion`,tone:`warning`},validation:{labelKey:`changes.classes.validation`,tone:`neutral`},additive:{labelKey:`changes.classes.additive`,tone:`success`},metadata:{labelKey:`changes.classes.metadata`,tone:`muted`}},Ji=new Set([`definition.added`,`field.added`]),Yi=new Set([`definition.removed`,`field.removed`]),Xi=e=>Ji.has(e.kind)?`+`:Yi.has(e.kind)?`−`:`~`,Zi=({changeClass:e,size:t})=>{let{t:n}=u(),r=qi[e];return(0,J.jsx)(C,{tone:r.tone,label:n(r.labelKey),size:t})},Qi=(e,t)=>{let n=kt(e,t.definitionId);return{before:r({...un(t.category,t.definitionId),enabled:t.operation!==`create`,retry:!1}).data?.definition??null,after:n.data?.definition??null}},$i={"+":`text-success`,"−":`text-destructive`,"~":`text-muted-foreground`},ea={create:`changes.review.operations.create`,update:`changes.review.operations.update`,delete:`changes.review.operations.delete`},ta=({changeSetId:e,item:t})=>{let{t:n}=u(),{before:r,after:i}=Qi(e,t),a=t.plan?.changes??[],o=i?.label??r?.label??t.apiKey;return(0,J.jsxs)(K,{title:o,titleAs:`h3`,flush:!0,actions:(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(T,{variant:`outline`,children:n(ea[t.operation])}),(0,J.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:t.apiKey})]}),children:[t.stale?(0,J.jsx)(`div`,{className:`border-b p-4`,children:(0,J.jsxs)(F,{variant:`warning`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(I,{children:n(`changes.review.schemaStale`,{base:t.baseVersion??0,active:t.activeVersion??0})})]})}):null,t.alsoChangedIn.length>0?(0,J.jsxs)(`p`,{className:`border-b px-5 py-2.5 text-meta text-muted-foreground`,children:[n(`changes.review.alsoChangedIn`),` `,t.alsoChangedIn.map((e,t)=>(0,J.jsxs)(`span`,{children:[t>0?`, `:``,(0,J.jsx)(b,{to:`/changes/$changeSetId`,params:{changeSetId:e.id},className:`text-link underline-offset-4 hover:underline`,children:e.title})]},e.id))]}):null,a.length===0?(0,J.jsx)(`p`,{className:`px-5 py-4 text-meta text-muted-foreground`,children:n(`changes.review.noSchemaChanges`)}):(0,J.jsx)(`ul`,{"aria-label":n(`changes.review.schemaChangesOf`,{name:o}),className:`divide-y text-sm`,children:a.map((e,t)=>{let n=Xi(e);return(0,J.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 px-5 py-2.5`,children:[(0,J.jsx)(`span`,{"aria-hidden":`true`,className:h(`w-3 shrink-0 font-mono font-semibold`,$i[n]),children:n}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1`,children:it(e,r,i)}),(0,J.jsx)(Zi,{changeClass:Ki(e),size:`sm`})]},`${e.kind}-${e.fieldId??``}-${e.property??``}-${t}`)})})]})},na=({review:e,editable:t})=>{let{t:n}=u(),r=Dt(),i=e.changeSet.id;return e.schema.length===0&&e.entries.length===0?(0,J.jsx)(w,{icon:Xn,title:n(`changes.review.noItems`),description:n(`changes.review.noItemsDescription`)}):(0,J.jsxs)(`div`,{className:`space-y-4`,children:[e.schema.map(e=>(0,J.jsx)(ta,{changeSetId:i,item:e},e.itemId)),e.entries.map(e=>(0,J.jsx)(Ui,{item:e,onRemove:t?()=>r.mutateAsync({id:i,itemId:e.itemId},{onSuccess:()=>j.success(n(`changes.review.itemRemoved`))}):void 0},e.itemId))]})},ra={error:{labelKey:`develop.health.error`,tone:`danger`},warning:{labelKey:`develop.health.warning`,tone:`warning`}},ia=({severity:e})=>{let{t}=u(),n=ra[e];return(0,J.jsx)(C,{tone:n.tone,label:t(n.labelKey),size:`sm`})},aa=200,oa=e=>{let t=[...new Set(e.flatMap(e=>e.modelKey?[e.modelKey]:[]))],n=new Set(e.map(e=>e.entryId));return _({queries:t.map(e=>{let t={modelKey:e,limit:aa};return{queryKey:i.develop.setHealthFindings(t),queryFn:()=>d.contentHealth.list(t),meta:{silent:!0}}}),combine:e=>({findings:e.flatMap(e=>(e.data?.items??[]).filter(e=>n.has(e.entryId))),isPending:e.some(e=>e.isPending),error:e.find(e=>e.error)?.error??null})})},sa=({issues:e})=>(0,J.jsx)(`ul`,{className:`list-disc space-y-1 pl-4`,children:e.map(e=>(0,J.jsx)(`li`,{children:e.message},`${e.path}-${e.code}`))}),ca=({changeSetId:e,item:t})=>{let{t:n}=u(),{before:r,after:i}=Qi(e,t),a=t.plan;return(0,J.jsx)(K,{title:n(`changes.review.plannerTitle`,{name:i?.label??r?.label??t.apiKey}),titleAs:`h3`,description:n(`changes.review.affected`,{count:t.impact?.affectedHeads??0}),children:(0,J.jsxs)(`div`,{className:`space-y-4`,children:[t.issues.length>0?(0,J.jsxs)(F,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(I,{children:(0,J.jsx)(sa,{issues:t.issues})})]}):null,a&&a.prerequisites.length>0?(0,J.jsxs)(`section`,{className:`space-y-3`,"aria-label":n(`models.plan.prerequisites`),children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,J.jsx)(`h4`,{className:`text-sm font-semibold`,children:n(`models.plan.prerequisites`)}),(0,J.jsx)(Ee,{about:n(`models.plan.prerequisites`),children:n(`models.plan.prerequisitesHint`)})]}),(0,J.jsx)(ot,{phase:`before`,steps:a.prerequisites,impacts:t.impact?.steps,before:r,after:i})]}):(0,J.jsxs)(`p`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,J.jsx)(et,{"aria-hidden":`true`,className:`size-4 text-success`}),n(`changes.review.noPrerequisites`)]}),a&&a.followUps.length>0?(0,J.jsxs)(`section`,{className:`space-y-3`,"aria-label":n(`models.plan.followUps`),children:[(0,J.jsx)(`h4`,{className:`text-sm font-semibold`,children:n(`models.plan.followUps`)}),(0,J.jsx)(ot,{phase:`after`,steps:a.followUps,before:r,after:i})]}):null]})})},la={entry_deleted:`changes.review.notRestorable.entry_deleted`,model_missing:`changes.review.notRestorable.model_missing`,publishing_disabled:`changes.review.notRestorable.publishing_disabled`,localization_changed:`changes.review.notRestorable.localization_changed`,locale_missing:`changes.review.notRestorable.locale_missing`,invalid:`changes.review.notRestorable.invalid`,unique_conflict:`changes.review.notRestorable.unique_conflict`},ua=({review:e,flow:t})=>{let{t:n}=u(),{findings:r}=oa(e.entries),i=e.entries.filter(e=>e.issues.length>0);return(0,J.jsxs)(`div`,{className:`space-y-4`,children:[e.checks.blocking.length>0?(0,J.jsxs)(F,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)($e,{children:n(`changes.review.blockingTitle`)}),(0,J.jsx)(I,{children:(0,J.jsx)(sa,{issues:e.checks.blocking})})]}):null,e.checks.warnings.length>0?(0,J.jsxs)(F,{variant:`warning`,children:[(0,J.jsx)(_e,{"aria-hidden":`true`}),(0,J.jsx)($e,{children:n(`changes.review.warningsTitle`)}),(0,J.jsx)(I,{children:(0,J.jsx)(sa,{issues:e.checks.warnings})})]}):null,e.schema.map(t=>(0,J.jsx)(ca,{changeSetId:e.changeSet.id,item:t},t.itemId)),(0,J.jsx)(K,{title:n(`changes.review.validationTitle`),titleAs:`h3`,children:i.length===0?(0,J.jsxs)(`p`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,J.jsx)(et,{"aria-hidden":`true`,className:`size-4 text-success`}),n(`changes.review.allEntriesValid`,{count:e.entries.length})]}):(0,J.jsx)(`ul`,{className:`space-y-3`,children:i.map(e=>(0,J.jsxs)(`li`,{className:`space-y-1 text-sm`,children:[e.modelKey?(0,J.jsx)(b,{to:`/content/$modelKey/$entryId`,params:{modelKey:e.modelKey,entryId:e.entryId},search:{locale:e.locale},className:`font-semibold text-link underline-offset-4 hover:underline`,children:e.title??e.entryId}):(0,J.jsx)(`span`,{className:`font-semibold`,children:e.title??e.entryId}),(0,J.jsx)(`div`,{className:`text-destructive`,children:(0,J.jsx)(sa,{issues:e.issues})})]},e.itemId))})}),e.notRestorable.length>0?(0,J.jsx)(K,{title:n(`changes.review.notRestorableTitle`),titleAs:`h3`,children:(0,J.jsx)(`ul`,{className:`space-y-2 text-sm`,children:e.notRestorable.map(e=>(0,J.jsxs)(`li`,{children:[(0,J.jsxs)(`span`,{className:`font-mono text-xs`,children:[e.modelKey??n(`common.unknown`),` · `,e.entryId,` · `,e.locale]}),(0,J.jsxs)(`span`,{className:`block text-muted-foreground`,children:[n(la[e.reason]),e.detail?` (${e.detail})`:``]})]},`${e.entryId}:${e.locale}`))})}):null,(0,J.jsx)(K,{title:n(`changes.review.healthTitle`),titleAs:`h3`,children:r.length===0?(0,J.jsxs)(`p`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,J.jsx)(et,{"aria-hidden":`true`,className:`size-4 text-success`}),n(`changes.review.noHealthFindings`)]}):(0,J.jsx)(`ul`,{className:`space-y-2 text-sm`,children:r.map(e=>(0,J.jsxs)(`li`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(ia,{severity:e.severity}),(0,J.jsx)(`span`,{className:`font-semibold`,children:e.entryTitle??e.entryId}),(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:n(gt[e.rule])}),e.locale===`*`?null:(0,J.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.locale})]},e.id))})}),t.needsBreaking||t.needsDestructive?(0,J.jsxs)(`fieldset`,{className:`space-y-3 rounded-lg border border-warning/40 bg-warning-muted/40 p-4`,children:[(0,J.jsx)(`legend`,{className:`px-1 text-sm font-semibold text-warning`,children:n(`models.plan.acknowledge`)}),t.needsBreaking?(0,J.jsxs)(Te,{orientation:`horizontal`,children:[(0,J.jsx)(Qe,{id:`change-set-ack-breaking`,checked:t.acknowledgedBreaking,onCheckedChange:e=>t.setAcknowledgedBreaking(e===!0)}),(0,J.jsx)(Se,{htmlFor:`change-set-ack-breaking`,className:`font-normal`,children:n(`models.plan.acknowledgeBreaking`)})]}):null,t.needsDestructive?(0,J.jsxs)(Te,{orientation:`horizontal`,children:[(0,J.jsx)(Qe,{id:`change-set-ack-destructive`,checked:t.acknowledgedDestructive,onCheckedChange:e=>t.setAcknowledgedDestructive(e===!0)}),(0,J.jsx)(Se,{htmlFor:`change-set-ack-destructive`,className:`font-normal`,children:n(`models.plan.acknowledgeDestructive`)})]}):null]}):null]})},da=()=>{let{t:e}=u();return(t,n)=>n||(t===`app_users`?e(`develop.principals.appUsers`):t===`anonymous`?e(`develop.principals.anonymous`):t.startsWith(`token:`)?e(`develop.principals.deletedToken`):t)},fa=({review:e})=>{let{t}=u(),n=da(),r=e.consumers.filter(e=>e.consumers.length>0);return r.length===0?(0,J.jsx)(w,{icon:Yt,title:e.checks.breaking?t(`changes.consumers.none`):t(`changes.consumers.notBreaking`),description:t(`changes.consumers.window`,{count:e.usageDays})}):(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`changes.consumers.window`,{count:e.usageDays})}),r.map(e=>(0,J.jsx)(K,{title:e.apiKey,titleAs:`h3`,flush:!0,description:t(`changes.consumers.readers`,{count:e.consumers.length}),children:(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:t(`changes.consumers.reader`)}),(0,J.jsx)(z,{className:`text-right`,children:t(`changes.consumers.reads`)}),(0,J.jsx)(z,{children:t(`changes.consumers.lastRead`)}),(0,J.jsx)(z,{children:t(`changes.consumers.selection`)})]})}),(0,J.jsx)(B,{children:e.consumers.map(e=>(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`font-semibold`,children:n(e.principalKey,e.label)}),(0,J.jsx)(H,{className:`text-right tabular-nums`,children:e.reads.toLocaleString()}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:O(e.lastReadAt),children:e.lastReadAt?D(e.lastReadAt):t(`common.never`)}),(0,J.jsx)(H,{children:(0,J.jsx)(T,{variant:e.selection===`explicit`?`secondary`:`outline`,children:e.selection===`explicit`?t(`changes.consumers.explicit`):t(`changes.consumers.implicit`)})})]},e.principalKey))})]})},`${e.modelId}:${e.fieldId}`))]})},pa=e=>ne(e,`CHANGE_SET_STALE`)||ne(e,`VERSION_CONFLICT`),ma=(e,t)=>{let{t:n}=u(),r=It(),i=Ot(),a=Tt(),[o,s]=(0,q.useState)(!1),[c,l]=(0,q.useState)(!1),[d,f]=(0,q.useState)(!1),[p,m]=(0,q.useState)(null),h=e.status===`failed`&&e.error?.code===`CHANGE_SET_STALE`&&p!==e.updatedAt,g=d||h,[ee,_]=(0,q.useState)(t.dataUpdatedAt);t.dataUpdatedAt!==ee&&(_(t.dataUpdatedAt),s(!1),l(!1));let v=t.data,y=v?.checks,te=y?.breaking??!1,b=y?.destructive??!1,ne=(!te||o)&&(!b||c),re=e.entryItemCount+e.schemaItemCount,ie=(y?.blocking.length??0)>0,ae=vi.has(e.status)&&v!==void 0&&re>0&&!ie&&!g,x={...te?{acknowledgeBreaking:!0}:{},...b?{acknowledgeDestructive:!0}:{}},S=async e=>{try{await e()}catch(e){if(pa(e)){f(!0);return}throw e}};return{needsBreaking:te,needsDestructive:b,acknowledgedBreaking:o,acknowledgedDestructive:c,setAcknowledgedBreaking:s,setAcknowledgedDestructive:l,acknowledged:ne,canShip:ae,shipping:r.isPending||a.isPending,shipNow:t=>S(async()=>{if(!v)return;let i=v.changeSet.version;t!==void 0&&t!==e.deploymentConnectionId&&(i=(await a.mutateAsync({id:e.id,input:{deploymentConnectionId:t,expectedVersion:i}})).version);let o=await r.mutateAsync({id:e.id,input:{expectedVersion:i,...x,itemVersions:v.entries.flatMap(e=>e.draftVersion===null?[]:[{itemId:e.itemId,draftVersion:e.draftVersion}])}});o.status===`shipped`?j.success(n(`changes.review.shipped`,{seq:o.shippedSnapshot??``})):o.status===`shipping`?j.info(n(`changes.review.shippingStarted`)):j.error(n(`changes.review.shipFailed`))}),scheduleAt:t=>S(async()=>{v&&(await i.mutateAsync({id:e.id,input:{at:t,expectedVersion:v.changeSet.version,...x}}),j.success(n(`changes.review.scheduled`)))}),scheduleError:i.error,resetSchedule:i.reset,scheduling:i.isPending,stale:g,refresh:async()=>{await t.refetch(),f(!1),m(e.updatedAt)}}},ha=({set:e})=>{let{t}=u(),n=(0,q.useId)(),r=(0,q.useId)(),[i,a]=(0,q.useState)(!1),[o,s]=(0,q.useState)(e.title),c=Tt();return(0,J.jsxs)(we,{open:i,onOpenChange:t=>{c.isPending||(a(t),t&&(s(e.title),c.reset()))},modal:!0,children:[(0,J.jsx)(xe,{asChild:!0,children:(0,J.jsx)(M,{variant:`ghost`,size:`icon-sm`,"aria-label":t(`changes.review.rename`),children:(0,J.jsx)(Ct,{"aria-hidden":`true`})})}),(0,J.jsx)(Ce,{align:`start`,"aria-labelledby":n,className:`w-80`,children:(0,J.jsxs)(`form`,{noValidate:!0,className:`space-y-3`,onSubmit:n=>{n.preventDefault();let r=o.trim();if(!r||r===e.title){a(!1);return}en(c.mutateAsync({id:e.id,input:{title:r,expectedVersion:e.version}})).then(e=>{e.ok&&(a(!1),j.success(t(`changes.review.renamed`)))})},children:[(0,J.jsx)(`label`,{id:n,htmlFor:r,className:`text-sm font-semibold`,children:t(`changes.fields.title`)}),(0,J.jsx)(Oe,{id:r,value:o,maxLength:200,autoComplete:`off`,onChange:e=>s(e.target.value)}),(0,J.jsx)(Ze,{error:c.error}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>a(!1),children:t(`common.cancel`)}),(0,J.jsx)(ae,{size:`sm`,pending:c.isPending,pendingLabel:t(`common.saving`),disabled:!o.trim(),children:t(`common.saveChanges`)})]})]})})]})},ga={created:{labelKey:`changes.timeline.created`,tone:`neutral`},updated:{labelKey:`changes.timeline.updated`,tone:`neutral`},item_added:{labelKey:`changes.timeline.itemAdded`,tone:`neutral`},item_removed:{labelKey:`changes.timeline.itemRemoved`,tone:`muted`},schema_draft_saved:{labelKey:`changes.timeline.schemaDraftSaved`,tone:`neutral`},reviewed:{labelKey:`changes.timeline.reviewed`,tone:`neutral`},scheduled:{labelKey:`changes.timeline.scheduled`,tone:`scheduled`},unscheduled:{labelKey:`changes.timeline.unscheduled`,tone:`muted`},shipping:{labelKey:`changes.timeline.shipping`,tone:`progress`},shipped:{labelKey:`changes.timeline.shipped`,tone:`success`},failed:{labelKey:`changes.timeline.failed`,tone:`danger`},discarded:{labelKey:`changes.timeline.discarded`,tone:`muted`},deploy_triggered:{labelKey:`changes.timeline.deployTriggered`,tone:`progress`},deploy_building:{labelKey:`changes.timeline.deployBuilding`,tone:`progress`},deploy_deployed:{labelKey:`changes.timeline.deployDeployed`,tone:`success`},deploy_failed:{labelKey:`changes.timeline.deployFailed`,tone:`danger`}},_a=e=>e in ga,va=({event:e,last:t})=>{let{t:n}=u(),r=Q(),i=_a(e.kind)?ga[e.kind]:void 0;return(0,J.jsxs)(`li`,{className:`flex gap-3`,children:[(0,J.jsxs)(`span`,{"aria-hidden":`true`,className:`flex flex-col items-center`,children:[(0,J.jsx)(`span`,{className:`mt-1.5 size-2.5 shrink-0 rounded-full border-2 border-primary bg-card`}),t?null:(0,J.jsx)(`span`,{className:`w-px flex-1 bg-border`})]}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1 pb-5`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(C,{tone:i?.tone??`neutral`,label:i?n(i.labelKey):e.kind,live:!1,size:`sm`}),e.message?(0,J.jsx)(`span`,{className:`text-sm`,children:e.message}):null,e.snapshot===null?null:(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(e.snapshot)},className:`text-sm font-semibold text-link underline-offset-4 hover:underline`,children:n(`snapshots.version`,{seq:e.snapshot})}),e.deploymentRunId?(0,J.jsx)(b,{to:`/publishing/deployments/runs/$runId`,params:{runId:e.deploymentRunId},className:`text-sm text-link underline-offset-4 hover:underline`,children:n(`changes.timeline.deployRun`)}):null]}),(0,J.jsxs)(`p`,{className:`text-meta text-muted-foreground`,children:[r(e.actor),` ·`,` `,(0,J.jsx)(`time`,{dateTime:e.at,title:O(e.at),children:D(e.at)})]})]})]})},ya=({changeSetId:e})=>{let{t}=u(),n=Mt(e);return(0,J.jsx)(W,{query:n,isEmpty:e=>e.length===0,empty:(0,J.jsx)(w,{icon:je,title:t(`changes.timeline.empty`)}),children:e=>(0,J.jsx)(`ol`,{"aria-label":t(`changes.tabs.timeline`),className:`rounded-xl border bg-card p-5 pb-0`,children:e.map((t,n)=>(0,J.jsx)(va,{event:t,last:n===e.length-1},`${t.at}-${t.kind}-${n}`))})})},ba={changes:`changes.tabs.changes`,checks:`changes.tabs.checks`,consumers:`changes.tabs.consumers`,timeline:`changes.tabs.timeline`},xa=({set:e})=>{let{t}=u(),n=Q(),r=he({from:`/app/changes/$changeSetId`}).tab??`changes`,i=y({from:`/changes/$changeSetId`}),a=Lt(e.id),o=ma(e,a),s=_i[e.status],c=vi.has(e.status),l=e.entryItemCount+e.schemaItemCount,d=[t(`changes.review.openedBy`,{name:n(e.createdBy),at:D(e.createdAt)}),t(`changes.itemCount`,{count:l}),e.status===`scheduled`&&e.scheduledFor?t(`changes.scheduledFor`,{at:O(e.scheduledFor)}):``].filter(Boolean).join(` · `);return(0,J.jsx)(x,{children:(0,J.jsxs)(ze,{value:r,onValueChange:e=>void i({search:{tab:e},replace:!0}),className:`gap-6`,children:[(0,J.jsx)(S,{sticky:!0,breadcrumb:[{label:t(`changes.title`),link:te({to:`/changes`})}],title:e.title,badge:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(C,{tone:s.tone,label:t(s.labelKey)}),c?(0,J.jsx)(ha,{set:e}):null]}),meta:d,actions:(0,J.jsx)(Pi,{set:e,flow:o}),tabs:(0,J.jsx)(Le,{variant:`underline`,"aria-label":t(`changes.tabs.label`),children:de.map(e=>(0,J.jsx)(N,{value:e,children:t(ba[e])},e))})}),(0,J.jsx)(Ri,{set:e,flow:o,notices:a.data?.notices??[],showAcknowledgementHint:c&&r!==`checks`}),(0,J.jsx)(W,{query:a,loadingRows:6,children:e=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(P,{value:`changes`,children:(0,J.jsx)(na,{review:e,editable:c})}),(0,J.jsx)(P,{value:`checks`,children:(0,J.jsx)(ua,{review:e,flow:o})}),(0,J.jsx)(P,{value:`consumers`,children:(0,J.jsx)(fa,{review:e})})]})}),(0,J.jsx)(P,{value:`timeline`,children:(0,J.jsx)(ya,{changeSetId:e.id})})]})})},Sa=()=>{let{changeSetId:e}=oe({from:`/app/changes/$changeSetId`}),{canManageChanges:t}=Z(),n=Pt(e);return t?(0,J.jsx)(W,{query:n,loadingRows:6,children:e=>(0,J.jsx)(xa,{set:e})}):(0,J.jsx)(x,{children:(0,J.jsx)(yi,{})})},Ca={silent:!0},wa=e=>r({queryKey:i.publishing.jobs.list(e),queryFn:()=>d.jobs.list(e),placeholderData:ee,meta:Ca}),Ta=()=>r({queryKey:i.publishing.jobs.summary,queryFn:()=>d.jobs.summary(),meta:Ca}),Ea=()=>{let e=o();return a({mutationKey:[`jobs`,`retry`],mutationFn:e=>m(()=>d.jobs.retry(e)),onSettled:()=>e.invalidateQueries({queryKey:i.publishing.jobs.all})})},Da=20,Oa=()=>{let{t:e}=u(),t=wa({status:`dead`,limit:Da}),n=Ea(),r=t=>n.mutate(t.id,{onSuccess:()=>j.success(e(`develop.live.jobRetried`,{type:t.type}))});return(0,J.jsx)(W,{query:t,loadingRows:3,children:t=>(0,J.jsx)(`ul`,{"aria-label":e(`develop.live.failedJobsTitle`),className:`mt-3 divide-y border-t`,children:t.items.map(t=>(0,J.jsxs)(`li`,{className:`flex items-start justify-between gap-3 py-2`,children:[(0,J.jsxs)(`div`,{className:`min-w-0`,children:[(0,J.jsx)(`p`,{className:`font-mono text-xs font-semibold`,children:t.type}),t.lastError?(0,J.jsx)(`p`,{className:`line-clamp-2 text-meta text-destructive`,title:t.lastError,children:t.lastError}):null]}),(0,J.jsx)(M,{variant:`outline`,size:`sm`,disabled:n.isPending,"aria-label":e(`develop.live.retryJobLabel`,{type:t.type}),onClick:()=>r(t),children:e(`develop.live.retryJob`)})]},t.id))})})},ka=()=>{let{t:e}=u(),t=Ta(),[n,r]=(0,q.useState)(!1),i=t.data?.counts.dead??0;return i===0?null:(0,J.jsxs)(K,{title:e(`develop.live.failedJobsTitle`),children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,J.jsx)(C,{tone:`danger`,label:e(`develop.live.jobsFailed`,{count:i}),size:`sm`}),(0,J.jsx)(M,{variant:`link`,size:`sm`,"aria-expanded":n,onClick:()=>r(e=>!e),children:e(n?`develop.live.hideFailedJobs`:`develop.live.showFailedJobs`)})]}),n?(0,J.jsx)(Oa,{}):null]})},Aa=()=>{let{t:e}=u(),t=ut();return(0,J.jsx)(K,{title:e(`develop.live.healthTitle`),children:(0,J.jsx)(W,{query:t,loadingRows:2,children:t=>{let n=new Map(t.rules.map(({rule:e,count:t})=>[e,t])),r=dt.filter(e=>(n.get(e)??0)>0),i=r.reduce((e,t)=>e+(n.get(t)??0),0);return(0,J.jsxs)(`div`,{className:`space-y-3`,children:[(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(C,{tone:i>0?`warning`:`success`,label:e(`develop.live.healthOpen`,{count:i})}),(0,J.jsx)(b,{to:`/`,className:`text-sm text-link underline-offset-4 hover:underline`,children:e(`develop.live.openInbox`)})]}),r.length>0?(0,J.jsx)(`ul`,{className:`space-y-1 text-sm`,children:r.map(t=>(0,J.jsxs)(`li`,{className:`flex justify-between gap-3`,children:[(0,J.jsx)(`span`,{children:e(gt[t])}),(0,J.jsx)(`span`,{className:`tabular-nums`,children:n.get(t)})]},t))}):(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:e(`develop.live.healthClean`)})]})}})})},ja=()=>{let{t:e}=u(),t=Wt();if(!t.data)return null;let n=t.data.filter(e=>e.enabled),r=n.filter(e=>e.lastDelivery?.status===`dead`).length;return(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,J.jsx)(`dt`,{children:(0,J.jsx)(b,{to:`/publishing/webhooks`,className:`text-sm font-semibold text-link underline-offset-4 hover:underline`,children:e(`develop.live.webhooks`)})}),(0,J.jsxs)(`dd`,{className:`flex flex-wrap gap-1.5`,children:[(0,J.jsx)(C,{tone:`success`,label:e(`develop.live.webhooksEnabled`,{count:n.length}),size:`sm`}),(0,J.jsx)(C,{tone:r>0?`danger`:`muted`,label:e(`develop.live.webhooksFailing`,{count:r}),size:`sm`})]})]})},Ma=()=>{let{t:e}=u(),{canManageWebhooks:t}=Z();return t?(0,J.jsx)(K,{title:e(`develop.live.webhooks`),children:(0,J.jsx)(`dl`,{className:`space-y-3`,children:(0,J.jsx)(ja,{})})}):null},Na=e=>{let t=cn(`model`),n=Qr((0,q.useMemo)(()=>(t.data??[]).map(({definition:e})=>e.id),[t.data]),e&&t.isSuccess),r=(0,q.useMemo)(()=>new Map((t.data??[]).map(({definition:e})=>[e.id,e.apiKey])),[t.data]);return{...n,isPending:t.isPending||n.isPending,error:t.error??n.error,modelKeyOf:e=>r.get(e)??e,servedReads:n.principals.reduce((e,t)=>e+t.requests,0)}},Pa=({fields:e,modelKeyOf:t})=>{let{t:n}=u(),r=new Map;for(let t of e)r.set(t.modelId,[...r.get(t.modelId)??[],t]);let i=[...r.entries()].flatMap(([e,r])=>{let i=t(e);return r.every(e=>e.selection===`implicit`)?[n(`develop.live.wholeModel`,{model:i})]:r.filter(e=>e.selection===`explicit`).map(e=>`${i}.${e.apiKeyPath}`)});return(0,J.jsx)(`span`,{className:`block truncate font-mono text-xs`,title:i.join(`, `),children:i.join(`, `)})},Fa=()=>{let{t:e}=u(),t=da(),n=Na(!0);return(0,J.jsxs)(K,{title:e(`develop.live.readersTitle`),description:e(`develop.live.servedReads`,{count:n.servedReads,days:7}),flush:!0,children:[n.tracking?null:(0,J.jsx)(`p`,{className:`border-b px-5 py-2.5 text-meta text-muted-foreground`,children:e(`develop.live.notTracking`)}),n.isPending?(0,J.jsx)(E,{rows:3}):n.error?(0,J.jsx)(ce,{error:n.error,onRetry:()=>void n.refetch()}):n.principals.length===0?(0,J.jsx)(w,{icon:Yt,size:`panel`,title:e(`develop.live.noReaders`,{count:7})}):(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:e(`changes.consumers.reader`)}),(0,J.jsx)(z,{children:e(`develop.live.fields`)}),(0,J.jsx)(z,{className:`text-right`,children:e(`develop.live.requests`)}),(0,J.jsx)(z,{children:e(`changes.consumers.lastRead`)}),(0,J.jsx)(z,{children:e(`develop.live.pinned`)})]})}),(0,J.jsx)(B,{children:n.principals.map(r=>(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`font-semibold whitespace-nowrap`,children:t(r.principalKey,r.tokenName)}),(0,J.jsx)(H,{className:`max-w-96`,children:(0,J.jsx)(Pa,{fields:r.fields,modelKeyOf:n.modelKeyOf})}),(0,J.jsx)(H,{className:`text-right tabular-nums`,children:r.requests.toLocaleString()}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:O(r.lastReadAt),children:D(r.lastReadAt)}),(0,J.jsx)(H,{className:`whitespace-nowrap`,children:r.lastSnapshot===null?e(`develop.live.followsLive`):(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(r.lastSnapshot)},className:`text-link underline-offset-4 hover:underline`,children:e(`snapshots.version`,{seq:r.lastSnapshot})})})]},r.principalKey))})]})]})},Ia={publish:`snapshots.sources.publish`,unpublish:`snapshots.sources.unpublish`,delete:`snapshots.sources.delete`,schedule:`snapshots.sources.schedule`,change_set:`snapshots.sources.change_set`,schema:`snapshots.sources.schema`,conversion:`snapshots.sources.conversion`,import:`snapshots.sources.import`,legacy:`snapshots.sources.legacy`},La={queued:{labelKey:`publishing.deployments.statuses.queued`,tone:`neutral`},triggered:{labelKey:`publishing.deployments.statuses.triggered`,tone:`progress`},building:{labelKey:`publishing.deployments.statuses.building`,tone:`progress`},deployed:{labelKey:`publishing.deployments.statuses.deployed`,tone:`success`},failed:{labelKey:`publishing.deployments.statuses.failed`,tone:`danger`},unknown:{labelKey:`publishing.deployments.statuses.unknown`,tone:`muted`}},Ra=()=>{let{t:e}=u(),t=Q(),n=ht(void 0);return(0,J.jsx)(K,{title:e(`develop.live.snapshotTitle`),children:(0,J.jsx)(W,{query:n,loadingRows:2,children:n=>{let r=n.items.find(e=>e.seq===n.current);return(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(n.current)},className:`text-title text-link underline-offset-4 hover:underline`,children:e(`snapshots.version`,{seq:n.current})}),r?(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-meta text-muted-foreground`,children:[(0,J.jsx)(T,{variant:`secondary`,children:e(Ia[r.source])}),(0,J.jsx)(`span`,{title:O(r.createdAt),children:e(`develop.live.since`,{at:D(r.createdAt),name:t({type:r.actor.type})})}),r.schemaVersion===null?null:(0,J.jsx)(`span`,{children:e(`snapshots.schemaVersion`,{version:r.schemaVersion})})]}):null]})}})})},za=()=>{let{t:e}=u(),{canManageChanges:t,canReadUsage:n,canManagePublishing:r,canManageWebhooks:i}=Z(),a=t||n||r||i;return(0,J.jsxs)(x,{children:[(0,J.jsx)(S,{title:e(`develop.live.title`)}),a?null:(0,J.jsx)(yi,{}),t?(0,J.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-2`,children:[(0,J.jsx)(Ra,{}),(0,J.jsx)(Aa,{})]}):null,n?(0,J.jsx)(Fa,{}):null,r?(0,J.jsx)(ka,{}):null,(0,J.jsx)(Ma,{})]})},Ba={changedOnBoth:`develop.schema.conflicts.reasons.changedOnBoth`,deletedOnTarget:`develop.schema.conflicts.reasons.deletedOnTarget`,existsOnTarget:`develop.schema.conflicts.reasons.existsOnTarget`,changedOnTargetBeforeDelete:`develop.schema.conflicts.reasons.changedOnTargetBeforeDelete`},Va=({label:e,before:t,after:n})=>{let r=st(Sn(t,n),{before:t,after:n});return(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(`h3`,{className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e}),(0,J.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-sm`,children:r.map((e,r)=>(0,J.jsx)(`li`,{children:it(e,t,n)},`${e.kind}:${e.fieldId??``}:${e.property??``}:${r}`))})]})},Ha=({conflicts:e,textOf:t,onTakeRemote:n,onKeepLocal:r})=>{let{t:i}=u();return(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsxs)(F,{variant:`warning`,children:[(0,J.jsx)(Jn,{"aria-hidden":`true`}),(0,J.jsx)($e,{children:i(`develop.schema.conflicts.title`,{count:e.length})}),(0,J.jsx)(I,{children:i(`develop.schema.conflicts.description`)})]}),e.map(e=>{let{file:a,local:o,remote:s}=e;return(0,J.jsxs)(K,{title:i(`develop.schema.conflicts.fileTitle`,{path:a.path}),description:i(Ba[e.reason]),actions:(0,J.jsx)(Mn,{value:t(e)}),children:[(0,J.jsxs)(`div`,{className:`grid gap-5 md:grid-cols-2`,children:[(0,J.jsx)(Va,{label:i(`develop.schema.conflicts.theirs`),before:a.base.definition,after:s?.definition??null}),(0,J.jsx)(Va,{label:i(`develop.schema.conflicts.yours`),before:a.base.definition,after:o.definition})]}),s?(0,J.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>r(s),children:i(`develop.schema.conflicts.keepLocal`)}),(0,J.jsx)(L,{tone:`danger`,title:i(`develop.schema.conflicts.takeRemoteTitle`),description:i(`develop.schema.conflicts.takeRemoteDescription`),confirmLabel:i(`develop.schema.conflicts.takeRemote`),onConfirm:()=>n(s),trigger:(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`outline`,children:i(`develop.schema.conflicts.takeRemote`)})})]}):null]},a.definitionId)})]})},Ua=`schema`,Wa=e=>e.kind===`component`?`component`:`model`,Ga=e=>`${Ua}/${e.kind===`component`?`components`:`models`}/${e.apiKey}.json`,Ka={model:0,component:1},qa=e=>e.definitions.map(({definition:e,version:t,hash:n})=>({path:Ga(e),definitionId:e.id,category:Wa(e),apiKey:e.apiKey,base:{version:t,hash:n,definition:e,text:gn(e)}})).sort((e,t)=>Ka[e.category]-Ka[t.category]||e.path.localeCompare(t.path)),$=wn,Ja=e=>({formatVersion:1,schemaVersion:e.schemaVersion,definitions:Object.fromEntries(e.definitions.map(({definition:e,version:t,hash:n})=>[e.id,{kind:e.kind,apiKey:e.apiKey,version:t,hash:n}]))}),Ya=e=>yn(Ja(e)),Xa=({path:e,dirty:t,open:n,icon:r})=>{let{t:i}=u(),a=e.slice(e.lastIndexOf(`/`)+1);return(0,J.jsxs)(In,{to:`/schema`,search:{file:e},title:e,"aria-current":n?`page`:void 0,children:[(0,J.jsx)(r,{"aria-hidden":`true`}),(0,J.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs`,children:a}),t?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`ml-auto size-2 shrink-0 rounded-full bg-warning`}),(0,J.jsx)(`span`,{className:`sr-only`,children:i(`develop.schema.modified`)})]}):null]})},Za=({files:e,openPath:t,isDirty:n})=>{let{t:r}=u(),i=e.filter(e=>e.category===`model`),a=e.filter(e=>e.category===`component`);return(0,J.jsxs)(Pn,{label:r(`develop.schema.files`),children:[i.length>0?(0,J.jsx)(Fn,{label:r(`develop.schema.modelsDir`),children:i.map(e=>(0,J.jsx)(Xa,{path:e.path,dirty:n(e),open:e.path===t,icon:Ve},e.definitionId))}):null,a.length>0?(0,J.jsx)(Fn,{label:r(`develop.schema.componentsDir`),children:a.map(e=>(0,J.jsx)(Xa,{path:e.path,dirty:n(e),open:e.path===t,icon:er},e.definitionId))}):null,(0,J.jsx)(Fn,{label:r(`develop.schema.lockDir`),children:(0,J.jsx)(Xa,{path:$,dirty:!1,open:t===$,icon:re})})]})},Qa={silent:!0},$a=`/api/admin/schema/export`,eo=[...i.schema.all,`export`],to=v({queryKey:eo,queryFn:()=>s.request($a),staleTime:0,meta:Qa}),no=()=>r({...to,refetchOnWindowFocus:!1}),ro=e=>{try{return{ok:!0,raw:JSON.parse(e)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}},io=(e,{previous:t,others:n})=>{let r=ro(e);if(!r.ok)return{status:`invalidJson`,message:r.message};let i=Cn(r.raw,{createId:bt,...t?{previous:t}:{}});if(!i.ok)return{status:`invalid`,raw:r.raw,issues:i.issues};let{definition:a}=i,o=bn([...n.filter(e=>e.id!==a.id),a]).filter(e=>e.definitionId===void 0||e.definitionId===a.id);return o.length>0?{status:`invalid`,raw:r.raw,issues:o}:{status:`valid`,raw:r.raw,definition:a}},ao=e=>e.status===`invalid`?e.issues:[],oo=(e,t)=>({definitionId:e.file.definitionId,category:e.file.category,definition:e.local.definition,baseVersion:t.action===`update`?t.expectedVersion:null}),so=(e,t)=>{let n=new Map(t.definitions.map(e=>[e.definition.id,e])),r=[],i=[],a=0;for(let t of e){let e=n.get(t.file.definitionId),o=sr({local:{definition:t.local.definition,hash:gn(t.local.definition)},base:{version:t.file.base.version,hash:t.file.base.text},remote:e?{version:e.version,hash:gn(e.definition),definition:e.definition}:void 0,prune:!1});switch(o.action){case`conflict`:r.push({file:t.file,local:t.local,remote:e,reason:o.reason});break;case`create`:case`update`:i.push(oo(t,o));break;default:a+=1}}return r.length>0?{status:`conflict`,conflicts:r}:{status:`ready`,drafts:i,skipped:a}},co=e=>{let t=[];for(let n of e.dirtyFiles){let r=io(e.textOf(n),{previous:n.base.definition,others:e.definitions.filter(e=>e.id!==n.definitionId)});if(r.status!==`valid`)return{invalid:n};t.push({file:n,local:{definition:r.definition}})}return{items:t}},lo=({onInvalid:e,onConflict:t,onApplied:n})=>{let{t:r}=u(),i=o(),a=Nt(),[s,c]=(0,q.useState)(!1),l=async e=>{let t=``;for(let{definitionId:n,...i}of e)t=await a.mutateAsync({definitionId:n,input:i,newSetTitle:r(`develop.schema.apply.newSetTitle`)});return t};return{apply:async a=>{c(!0);try{let o=co(a);if(`invalid`in o){j.error(r(`develop.schema.apply.invalid`,{path:o.invalid.path})),e(o.invalid);return}let s=await i.fetchQuery(to),c=so(o.items,s);if(c.status===`conflict`){t(c.conflicts);return}if(c.drafts.length===0){j.info(r(`develop.schema.apply.nothing`));return}n(await l(c.drafts))}catch(e){be(e,`apply schema files`)}finally{c(!1)}},pending:s}},uo=(e,t)=>({...e,definitions:e.definitions.map(e=>e.definition.id===t.definition.id?t:e)}),fo=()=>{let e=no(),[t,n]=(0,q.useState)(),[r,i]=(0,q.useState)({}),a=t??e.data,o=(0,q.useMemo)(()=>a?qa(a):[],[a]),s=(0,q.useMemo)(()=>a?Ya(a):``,[a]),c=(0,q.useMemo)(()=>o.map(e=>e.base.definition),[o]),l=(0,q.useCallback)(e=>r[e.definitionId]??e.base.text,[r]),u=(0,q.useCallback)(e=>{let t=r[e.definitionId];return t!==void 0&&t!==e.base.text},[r]),d=(0,q.useCallback)((e,t)=>{n(e=>e??a),i(n=>({...n,[e.definitionId]:t}))},[a]),f=(0,q.useCallback)(e=>{n(t=>t&&uo(t,e)),i(({[e.definition.id]:t,...n})=>n)},[]),p=(0,q.useCallback)(e=>{n(t=>t&&uo(t,e))},[]),{refetch:m}=e,h=(0,q.useCallback)(async()=>(n(void 0),i({}),m()),[m]),g=(0,q.useMemo)(()=>o.filter(u),[o,u]);return{query:e,workspace:(0,q.useMemo)(()=>a?{schemaVersion:a.schemaVersion,files:o,lockText:s,definitions:c,textOf:l,setText:d,dirtyFiles:g,isDirty:u,takeRemote:f,keepLocal:p,reload:h}:void 0,[a,o,s,c,l,d,g,u,f,p,h])}},po=(0,q.lazy)(()=>Xe(()=>import(`./View-BLsQYPow.js`).then(e=>({default:e.View})),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),mo=({className:e,...t})=>(0,J.jsx)(`div`,{className:h(`min-h-0 overflow-hidden rounded-xl border bg-card focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50`,e),children:(0,J.jsx)(q.Suspense,{fallback:(0,J.jsx)(E,{rows:8,className:`p-4`}),children:(0,J.jsx)(po,{...t})})}),ho=()=>[],go=({text:e})=>{let{t}=u();return(0,J.jsx)(K,{title:$,description:t(`develop.schema.lockDescription`),flush:!0,children:(0,J.jsx)(mo,{className:`h-[28rem] rounded-none border-0 xl:h-[40rem]`,value:e,onChange:ho,label:t(`develop.schema.editorLabel`,{path:$}),readOnly:!0,schema:void 0,lint:ho})})},_o=e=>JSON.parse(JSON.stringify(e)),vo=e=>{let t=e.properties?.fields?.items;return t&&!Array.isArray(t)&&(t.allOf=Object.entries(pn).map(([e,t])=>({if:{properties:{type:{const:e}},required:[`type`]},then:{properties:{settings:_o(t)}}}))),e},yo={model:vo(_o(En)),component:vo(_o(mn))},bo=e=>yo[e],xo=300,So=(e,t,n)=>{let r=(0,q.useMemo)(()=>e?{previous:e.base.definition,others:n.filter(t=>t.id!==e.definitionId)}:void 0,[e,n]),i=dn(t,xo);return{analysis:(0,q.useMemo)(()=>r?io(i,r):void 0,[r,i]),lint:(0,q.useCallback)(e=>r?ao(io(e,r)):[],[r])}},Co=({issues:e,id:t})=>{let{t:n}=u();return e.length===0?null:(0,J.jsxs)(`div`,{id:t,role:`status`,className:`space-y-1.5 rounded-lg border border-destructive/40 bg-destructive-muted p-3`,children:[(0,J.jsx)(`p`,{className:`text-sm font-semibold text-destructive`,children:n(`develop.schema.problems`,{count:e.length})}),(0,J.jsx)(`ul`,{className:`space-y-1 text-meta text-foreground`,children:e.map(e=>(0,J.jsxs)(`li`,{className:`break-words`,children:[(0,J.jsx)(`code`,{className:`font-mono text-xs`,children:e.path||`/`}),` `,e.message]},`${e.path}:${e.code}:${e.message}`))})]})},wo=e=>{let t=Tn(e);return[{id:`document`,kind:`document`,label:void 0,fields:[t.titleInline?t.title:void 0,t.cover,...t.canvas].filter(e=>e!==void 0)},...t.propertyGroups.map(e=>({id:`group-${e.id}`,kind:`properties`,label:e.label,fields:e.fields}))].filter(e=>e.fields.length>0)},To=e=>({id:e.id,kind:`singleton`,apiKey:e.apiKey,label:e.label,localized:!1,draftAndPublish:!1,fields:e.fields,display:{...e.display.groups?{groups:e.display.groups}:{}}}),Eo=()=>Promise.resolve(null),Do=({definition:e,definitions:t})=>{let{t:n}=u(),r=Pe(),i=(0,q.useMemo)(()=>G(e)?e:To(e),[e]),a=(0,q.useMemo)(()=>{let n=[...t.filter(t=>t.id!==e.id),e];return{idPrefix:`schema-preview-`,model:i,models:new Map(n.filter(G).map(e=>[e.id,e])),components:new Map(n.filter(hn).map(e=>[e.id,e])),locale:null,entryId:null,readOnly:!0,disabled:!1,runtimeEditors:r.editors,pickMedia:Eo}},[e,t,i,r.editors]),o=(0,q.useMemo)(()=>Fe(Ae(i.fields)),[i]);if(r.isLoading)return(0,J.jsx)(E,{rows:4});let s=wo(i);return s.length===0?(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`develop.schema.preview.noFields`)}):(0,J.jsx)(Be,{environment:a,store:o,children:(0,J.jsx)(`div`,{className:`space-y-6`,children:s.map(e=>(0,J.jsxs)(`section`,{"aria-labelledby":`schema-preview-${e.id}`,className:`space-y-3`,children:[(0,J.jsx)(`h3`,{id:`schema-preview-${e.id}`,className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e.label??(e.kind===`document`?n(`develop.schema.preview.document`):n(`develop.schema.preview.properties`))}),(0,J.jsx)(Me,{fields:e.fields})]},e.id))})})},Oo=({definition:e,lookup:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>Ne(e,t),[e,t]);return(0,J.jsx)(Y,{label:n(`develop.schema.preview.sdl`),code:r})},ko=({before:e,after:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>st(Sn(e,t),{before:e,after:t}),[e,t]);if(r.length===0)return(0,J.jsx)(w,{size:`panel`,icon:et,title:n(`develop.schema.plan.none`)});let i=nt(r);return(0,J.jsxs)(`div`,{className:`space-y-5`,children:[i.breaking||i.destructive?(0,J.jsx)(F,{variant:`warning`,children:(0,J.jsx)(I,{children:i.destructive?n(`develop.schema.plan.destructive`):n(`develop.schema.plan.breaking`)})}):null,i.supported?null:(0,J.jsx)(F,{variant:`destructive`,children:(0,J.jsx)(I,{children:n(`develop.schema.plan.unsupported`)})}),tt(r).map(n=>(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(at,{bucket:n.bucket}),(0,J.jsx)(`ul`,{className:`list-disc space-y-1 pl-5 text-sm`,children:n.changes.map((n,r)=>(0,J.jsx)(`li`,{children:it(n,e,t)},`${n.kind}:${n.fieldId??``}:${n.property??``}:${r}`))})]},n.bucket)),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:n(`develop.schema.plan.serverChecks`)})]})},Ao=({definition:e,lookup:t})=>{let{t:n}=u(),r=Ie(e),i=(0,q.useMemo)(()=>Re(e,t),[e,t]);return(0,J.jsxs)(`div`,{className:`space-y-5`,children:[G(e)?(0,J.jsx)(`ul`,{"aria-label":n(`develop.schema.preview.endpoints`),className:`space-y-1.5`,children:r.map(e=>(0,J.jsxs)(`li`,{className:`flex min-w-0 items-center gap-2`,children:[(0,J.jsx)(T,{variant:`outline`,className:`w-16 justify-center font-mono`,children:e.method}),(0,J.jsx)(`code`,{className:`min-w-0 truncate font-mono text-xs`,children:e.path}),e.scope===`admin`?(0,J.jsx)(T,{variant:`secondary`,className:`ml-auto shrink-0`,children:n(`develop.schema.preview.admin`)}):null]},`${e.method} ${e.path}`))}):(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`develop.schema.preview.componentEndpoints`)}),(0,J.jsx)(Y,{label:G(e)?n(`develop.schema.preview.responseSample`):n(`develop.schema.preview.componentSample`),code:i})]})},jo=(e,t)=>{let n=e.indexOf(`export type ${t} = `);if(n<0)return;let r=e.lastIndexOf(`/**`,n),i=e.lastIndexOf(`*/`,n),a=r>=0&&i>r&&e.slice(i+2,n).trim()===``?r:n,o=e.indexOf(`
8
- };
9
- `,n);return o<0?void 0:e.slice(a,o+4)},Mo=(e,t)=>{let n=xn(t);return[jo(e,n),jo(e,`${n}Input`)].filter(e=>e!==void 0).join(`
10
- `)},No=({apiKey:e,edited:t})=>{let{t:n}=u(),r=fr();return(0,J.jsx)(W,{query:r,children:({source:r,schemaVersion:i})=>{let a=Mo(r,e);return(0,J.jsxs)(`div`,{className:`space-y-4`,children:[t?(0,J.jsx)(F,{variant:`info`,children:(0,J.jsx)(I,{children:n(`develop.schema.preview.typesActive`,{version:i})})}):null,a?(0,J.jsx)(Y,{label:n(`develop.schema.preview.typescript`),code:a}):(0,J.jsx)(w,{size:`panel`,icon:Wn,title:n(`develop.schema.preview.noTypes`)})]})}})},Po=[`form`,`rest`,`graphql`,`types`,`plan`],Fo={form:`develop.schema.preview.tabs.form`,rest:`develop.schema.preview.tabs.rest`,graphql:`develop.schema.preview.tabs.graphql`,types:`develop.schema.preview.tabs.types`,plan:`develop.schema.preview.tabs.plan`},Io=({file:e,analysis:t,edited:n,definitions:r})=>{let{t:i}=u(),[a,o]=(0,q.useState)(`form`),s=t?.status===`valid`?t.definition:void 0,c=(0,q.useMemo)(()=>new Map([...r.filter(t=>t.id!==e.definitionId),...s?[s]:[]].map(e=>[e.id,e])),[r,s,e.definitionId]),l=(0,J.jsx)(w,{size:`panel`,icon:pt,title:i(`develop.schema.preview.invalidTitle`),description:i(`develop.schema.preview.invalidDescription`)});return(0,J.jsx)(K,{title:i(`develop.schema.preview.title`),titleAs:`h2`,children:(0,J.jsxs)(ze,{value:a,onValueChange:e=>o(e),children:[(0,J.jsx)(Le,{variant:`underline`,className:`w-full justify-start overflow-x-auto`,children:Po.map(e=>(0,J.jsx)(N,{value:e,children:i(Fo[e])},e))}),(0,J.jsx)(P,{value:`form`,className:`pt-4`,children:s?(0,J.jsx)(Do,{definition:s,definitions:r}):l}),(0,J.jsx)(P,{value:`rest`,className:`pt-4`,children:s?(0,J.jsx)(Ao,{definition:s,lookup:c}):l}),(0,J.jsx)(P,{value:`graphql`,className:`pt-4`,children:s?(0,J.jsx)(Oo,{definition:s,lookup:c}):l}),(0,J.jsx)(P,{value:`types`,className:`pt-4`,children:(0,J.jsx)(No,{apiKey:e.apiKey,edited:n})}),(0,J.jsx)(P,{value:`plan`,className:`pt-4`,children:s?(0,J.jsx)(ko,{before:e.base.definition,after:s}):l})]})})},Lo=({file:e,workspace:t})=>{let{t:n}=u(),r=(0,q.useId)(),{setText:i,textOf:a,isDirty:o,definitions:s}=t,c=a(e),l=o(e),{analysis:d,lint:f}=So(e,c,s),p=(0,q.useCallback)(t=>i(e,t),[i,e]),m=d?ao(d):[];return(0,J.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,J.jsxs)(K,{title:e.path.slice(e.path.lastIndexOf(`/`)+1),description:e.path,flush:!0,actions:l?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(C,{tone:`warning`,label:n(`develop.schema.modified`),size:`sm`}),(0,J.jsx)(L,{tone:`danger`,title:n(`develop.schema.revertTitle`),description:n(`develop.schema.revertDescription`),confirmLabel:n(`develop.schema.revert`),onConfirm:()=>i(e,e.base.text),trigger:(0,J.jsx)(M,{type:`button`,size:`sm`,variant:`ghost`,children:n(`develop.schema.revert`)})})]}):null,children:[(0,J.jsx)(mo,{className:`h-[28rem] rounded-none border-0 xl:h-[40rem]`,value:c,onChange:p,label:n(`develop.schema.editorLabel`,{path:e.path}),describedBy:r,readOnly:!1,schema:bo(e.category),lint:f}),d?.status===`invalidJson`?(0,J.jsx)(`p`,{role:`status`,className:`border-t px-5 py-3 text-meta text-destructive`,children:n(`develop.schema.invalidJson`,{message:d.message})}):null,m.length>0?(0,J.jsx)(`div`,{className:`border-t p-4`,children:(0,J.jsx)(Co,{id:r,issues:m})}):null]}),(0,J.jsx)(Io,{file:e,analysis:d,edited:l,definitions:s})]})},Ro=ue(`/app/schema`),zo=({currentPath:e,nextPath:t})=>e!==t,Bo=()=>{let{t:e}=u(),{query:t,workspace:n}=fo();return(0,J.jsx)(x,{width:`full`,children:(0,J.jsx)(W,{query:t,children:()=>n?(0,J.jsx)(Vo,{workspace:n}):(0,J.jsx)(w,{icon:le,title:e(`develop.schemaTitle`)})})})},Vo=({workspace:e})=>{let{t}=u(),n=y(),{file:r}=Ro.useSearch(),i=sn().data,[a,o]=(0,q.useState)([]),[s,c]=(0,q.useState)(),{files:l,dirtyFiles:d}=e,f=d.length>0&&s===void 0,p=lo({onInvalid:e=>void n({to:`/schema`,search:{file:e.path}}),onConflict:o,onApplied:c});(0,q.useEffect)(()=>{s&&n({to:`/changes/$changeSetId`,params:{changeSetId:s}})},[s,n]);let m=l.find(e=>e.path===r)??(r===$?void 0:l[0]),h=r===$||l.length===0,g=i!==void 0&&i!==e.schemaVersion,ee=t=>e.textOf(t.file),_=e=>o(t=>t.filter(t=>t.file.definitionId!==e)),v=(0,J.jsxs)(M,{type:`button`,variant:`outline`,disabled:p.pending,children:[(0,J.jsx)(Bt,{"aria-hidden":`true`}),t(`develop.schema.reload`)]});return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(S,{title:t(`develop.schemaTitle`),meta:t(`develop.schema.meta`,{version:e.schemaVersion,count:l.length}),actions:(0,J.jsxs)(J.Fragment,{children:[f?(0,J.jsx)(L,{tone:`danger`,title:t(`develop.schema.reloadTitle`),description:t(`develop.schema.reloadDescription`),confirmLabel:t(`develop.schema.reload`),onConfirm:()=>(o([]),e.reload()),trigger:v}):(0,J.jsxs)(M,{type:`button`,variant:`outline`,disabled:p.pending,onClick:()=>{o([]),e.reload()},children:[(0,J.jsx)(Bt,{"aria-hidden":`true`}),t(`develop.schema.reload`)]}),(0,J.jsx)(M,{type:`button`,disabled:!f||p.pending,onClick:()=>{o([]),p.apply(e)},children:p.pending?t(`develop.schema.applying`):t(`develop.schema.apply.label`,{count:d.length})})]})}),g?(0,J.jsx)(F,{variant:`info`,role:`status`,children:(0,J.jsx)(I,{children:t(`develop.schema.moved`,{loaded:e.schemaVersion,live:i})})}):null,a.length>0?(0,J.jsx)(Ha,{conflicts:a,textOf:ee,onTakeRemote:t=>{e.takeRemote(t),_(t.definition.id)},onKeepLocal:t=>{e.keepLocal(t),_(t.definition.id)}}):null,(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row`,children:[(0,J.jsx)(Za,{files:l,openPath:h||!m?$:m.path,isDirty:e.isDirty}),(0,J.jsx)(`div`,{className:`min-w-0 flex-1`,children:h||!m?(0,J.jsx)(go,{text:e.lockText}):(0,J.jsx)(Lo,{file:m,workspace:e},m.definitionId)})]}),(0,J.jsx)(ge,{when:f,shouldBlock:zo})]})},Ho=()=>{let{canReadUsage:e}=Z(),t=da(),n=cn(`model`),{principals:r}=Qr((0,q.useMemo)(()=>(n.data??[]).map(({definition:e})=>e.id),[n.data]),e),i=new Map;for(let e of r)if(e.lastSnapshot!==null){let n=i.get(e.lastSnapshot)??[];n.push(t(e.principalKey,e.tokenName)),i.set(e.lastSnapshot,n)}return{canReadUsage:e,pinnedBy:e=>i.get(e)??[]}},Uo=({seq:e,label:t,variant:n=`ghost`})=>{let{t:r}=u(),i=(0,q.useId)(),a=(0,q.useId)(),[o,s]=(0,q.useState)(!1),[c,l]=(0,q.useState)(void 0),d=zn(),f=hr(),p=(d.data??[]).filter(e=>e.revokedAt===null),m=p.find(e=>e.id===c)??p[0],h=on(`api/content/<model>?snapshot=${e}`,f),ee=`curl -H "Authorization: Bearer ${m?`${m.tokenPrefix}…`:`<token>`}" "${g()}${h}"`;return(0,J.jsxs)(we,{open:o,onOpenChange:s,modal:!0,children:[(0,J.jsx)(xe,{asChild:!0,children:(0,J.jsxs)(M,{variant:n,size:`sm`,"aria-label":t?void 0:r(`snapshots.pinLabel`,{seq:e}),children:[(0,J.jsx)(Qn,{"aria-hidden":`true`}),t??r(`snapshots.pin`)]})}),(0,J.jsxs)(Ce,{align:`end`,"aria-labelledby":i,className:`w-96 max-w-[calc(100vw-2rem)] space-y-3`,children:[(0,J.jsx)(`p`,{id:i,className:`text-sm font-semibold`,children:r(`snapshots.pinTitle`,{seq:e})}),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:r(`snapshots.pinDescription`)}),p.length>0?(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:a,className:`text-sm font-semibold`,children:r(`snapshots.pinToken`)}),(0,J.jsxs)(qe,{value:m?.id,onValueChange:l,children:[(0,J.jsx)(We,{id:a,size:`sm`,className:`w-full`,children:(0,J.jsx)(Ue,{})}),(0,J.jsx)(Ge,{children:p.map(e=>(0,J.jsx)(Ke,{value:e.id,children:e.name},e.id))})]})]}):null,(0,J.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-muted p-3 font-mono text-xs break-all whitespace-pre-wrap`,children:ee}),(0,J.jsx)(`div`,{className:`flex justify-end`,children:(0,J.jsx)(Mn,{value:ee})})]})]})},Wo=({seq:e,size:t=`sm`,label:n})=>{let{t:r}=u(),i=y(),a=mt();return(0,J.jsx)(L,{tone:`default`,title:r(`snapshots.restoreTitle`,{seq:e}),description:r(`snapshots.restoreDescription`,{seq:e}),confirmLabel:r(`snapshots.restore`),pendingLabel:r(`common.saving`),onConfirm:()=>a.mutateAsync(e,{onSuccess:e=>void i({to:`/changes/$changeSetId`,params:{changeSetId:e.id}})}),trigger:(0,J.jsxs)(M,{variant:`outline`,size:t,"aria-label":n?void 0:r(`snapshots.restoreLabel`,{seq:e}),children:[(0,J.jsx)(qt,{"aria-hidden":`true`}),n??r(`snapshots.restore`)]})})},Go=({snapshots:e,current:t,pinnedBy:n,showPins:r})=>{let{t:i}=u(),a=Q(),o=i(`common.none`);return(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:i(`snapshots.fields.version`)}),(0,J.jsx)(z,{children:i(`snapshots.fields.when`)}),(0,J.jsx)(z,{children:i(`snapshots.fields.source`)}),(0,J.jsx)(z,{className:`text-right`,children:i(`snapshots.fields.entries`)}),(0,J.jsx)(z,{children:i(`snapshots.fields.schema`)}),r?(0,J.jsx)(z,{children:i(`snapshots.fields.pinnedBy`)}):null,(0,J.jsx)(z,{children:i(`snapshots.fields.deploy`)}),(0,J.jsx)(z,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:i(`common.actions`)})})]})}),(0,J.jsx)(B,{children:e.map(e=>{let s=n(e.seq),c=e.deploymentRuns.at(-1),l=c?La[c.status]:void 0;return(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`whitespace-nowrap`,children:(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(k,{asChild:!0,children:(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(e.seq)},children:i(`snapshots.version`,{seq:e.seq})})}),e.seq===t?(0,J.jsx)(C,{tone:`success`,label:i(`snapshots.live`),size:`sm`}):null]})}),(0,J.jsxs)(H,{className:`whitespace-nowrap`,title:O(e.createdAt),children:[D(e.createdAt),(0,J.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:a({type:e.actor.type})})]}),(0,J.jsxs)(H,{className:`max-w-64`,children:[(0,J.jsx)(T,{variant:`secondary`,children:i(Ia[e.source])}),e.changeSetId&&e.changeSetTitle?(0,J.jsx)(b,{to:`/changes/$changeSetId`,params:{changeSetId:e.changeSetId},className:`block truncate text-meta text-link underline-offset-4 hover:underline`,children:e.changeSetTitle}):null]}),(0,J.jsx)(H,{className:`text-right tabular-nums`,children:e.changedEntries}),(0,J.jsx)(H,{className:`whitespace-nowrap tabular-nums`,children:e.schemaVersion===null?o:i(`snapshots.schemaVersion`,{version:e.schemaVersion})}),r?(0,J.jsx)(H,{className:`max-w-48`,children:s.length>0?(0,J.jsx)(`span`,{className:`block truncate`,children:s.join(`, `)}):o}):null,(0,J.jsx)(H,{children:c&&l?(0,J.jsx)(b,{to:`/publishing/deployments/runs/$runId`,params:{runId:c.id},className:`rounded-full`,children:(0,J.jsx)(C,{tone:l.tone,label:i(l.labelKey),size:`sm`})}):o}),(0,J.jsx)(H,{className:`text-right`,children:(0,J.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[e.seq===t?null:(0,J.jsx)(M,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,J.jsxs)(b,{to:`/snapshots/$seq`,params:{seq:String(t)},search:{from:e.seq},"aria-label":i(`snapshots.compareLabel`,{seq:e.seq,current:t}),children:[(0,J.jsx)(Kn,{"aria-hidden":`true`}),i(`snapshots.compare`)]})}),(0,J.jsx)(Uo,{seq:e.seq}),e.seq===t?null:(0,J.jsx)(Wo,{seq:e.seq})]})})]},e.seq)})})]})},Ko=()=>{let{t:e}=u(),{canManageChanges:t}=Z(),{cursor:n}=he({from:`/app/snapshots`}),r=y({from:`/snapshots`}),{pagerProps:i}=Kt(n,e=>void r({search:{cursor:e}})),a=ht(n),{canReadUsage:o,pinnedBy:s}=Ho();return t?(0,J.jsxs)(x,{width:`full`,children:[(0,J.jsx)(S,{title:e(`snapshots.title`),meta:a.data?e(`snapshots.current`,{seq:a.data.current}):void 0}),(0,J.jsx)(W,{query:a,loadingRows:6,isEmpty:e=>e.items.length===0&&n===void 0,empty:(0,J.jsx)(w,{icon:fe,title:e(`snapshots.empty`)}),children:e=>(0,J.jsx)(rn,{footer:(0,J.jsx)(Je,{...i(e.nextCursor)}),children:(0,J.jsx)(Go,{snapshots:e.items,current:e.current,pinnedBy:s,showPins:o})})})]}):(0,J.jsxs)(x,{width:`full`,children:[(0,J.jsx)(S,{title:e(`snapshots.title`)}),(0,J.jsx)(yi,{})]})},qo=({seq:e,row:t,previous:n,changedCount:r})=>{let{t:i}=u(),a=Q(),o=Bn(),s=t?.actor.type===`admin`?o.data?.find(e=>e.id===t.actor.id)?.name:void 0,c=[i(`snapshots.version`,{seq:e}),t?O(t.createdAt):``,t?i(`snapshots.timeline.shippedBy`,{name:s??a({type:t.actor.type})}):``,t?.schemaVersion==null?``:i(`snapshots.schemaVersion`,{version:t.schemaVersion}),n!==void 0&&r!==void 0?i(`snapshots.timeline.changedSince`,{count:r,seq:n}):``].filter(Boolean);return(0,J.jsx)(`p`,{"aria-live":`polite`,className:`text-sm font-semibold tabular-nums`,children:c.join(` · `)})},Jo=(e,t)=>{let n=fn(e),r=Tn(e).cover;return{modelId:e.id,modelKey:e.apiKey,routeKey:vn(e),label:e.label,singleton:e.kind===`singleton`,titleKey:n?.apiKey??null,coverKey:r?.apiKey??null,locales:t}},Yo=()=>{let e=cn(`model`),t=Dn();return{places:(0,q.useMemo)(()=>{if(!e.data||!t.data)return;let n=t.data.map(e=>e.code),r=t.data.find(e=>e.isDefault)?.code??n[0]??`en`;return e.data.flatMap(({definition:e})=>e.kind===`component`?[]:[Jo(e,e.localized?n:[r])])},[e.data,t.data]),error:e.error??t.error}},Xo=(e,t)=>t?e.length>0&&e.every(e=>e===`published`)?`added`:e.length>0?`changed`:`unchanged`:`removed`,Zo=(e,t)=>{let n=new Map;for(let t of e){let e=n.get(t.id);if(e){e.locales.includes(t.locale)||e.locales.push(t.locale),e.title??=t.title,e.coverUrl??=t.coverUrl;continue}n.set(t.id,{id:t.id,title:t.title,coverUrl:t.coverUrl,locales:[t.locale],mark:`unchanged`,revisionIds:{}})}let r=[];for(let e of t){let t=n.get(e.id),i=Object.fromEntries(e.locales.flatMap(({locale:e,revisionId:t})=>t?[[e,t]]:[])),a=Xo(e.locales.map(({change:e})=>e),t!==void 0);t?(t.mark=a,t.revisionIds=i,t.title??=e.title):a===`removed`&&r.push({id:e.id,title:e.title,coverUrl:null,locales:e.locales.map(({locale:e})=>e),mark:a,revisionIds:i})}return[...n.values(),...r]},Qo=(e,t=60)=>e<=t?1:Math.ceil(e/t),$o=10,es=({seqs:e,value:t,onChange:n})=>{let{t:r}=u(),i=(0,q.useId)(),a=Math.max(e.indexOf(t),0),o=Math.max(e.length-1,1),s=Qo(e.length),c=r=>{let i=e[Math.min(Math.max(r,0),e.length-1)];i!==void 0&&i!==t&&n(i)};return(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,J.jsx)(`label`,{htmlFor:i,className:`text-sm font-semibold`,children:r(`snapshots.scrubber.label`)}),(0,J.jsx)(`span`,{className:`text-meta text-muted-foreground tabular-nums`,children:r(`snapshots.scrubber.range`,{min:e[0]??t,max:e.at(-1)??t})})]}),(0,J.jsx)(`input`,{id:i,type:`range`,min:0,max:e.length-1,step:1,value:a,"aria-valuetext":r(`snapshots.version`,{seq:t}),onKeyDown:e=>{if(!e.shiftKey)return;let t={ArrowLeft:-1,ArrowDown:-1,ArrowRight:1,ArrowUp:1}[e.key];t!==void 0&&(e.preventDefault(),c(a+t*$o))},onChange:e=>c(Number(e.target.value)),className:`h-2 w-full cursor-pointer accent-primary focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none`}),(0,J.jsx)(`div`,{"aria-hidden":`true`,className:`relative mx-2 h-5`,children:e.map((i,a)=>a%s===0||a===e.length-1?(0,J.jsx)(`button`,{type:`button`,tabIndex:-1,title:r(`snapshots.version`,{seq:i}),onClick:()=>n(i),style:{"--tick":`${a/o*100}%`},className:h(`absolute top-0 left-(--tick) h-3 w-px -translate-x-1/2 cursor-pointer bg-border hover:bg-foreground`,i===t&&`h-4 w-0.5 bg-primary`)},i):null)})]})},ts=e=>{if(typeof e!=`object`||!e)return null;let t=e,n=t.variants?.find(e=>e.name===`thumbnail`)?.url;return typeof n==`string`?n:typeof t.url==`string`?t.url:null},ns=(e,t)=>{let n=e.titleKey?t[e.titleKey]:void 0;return{id:String(t.id),locale:String(t.locale),title:typeof n==`string`&&n.trim()!==``?n:typeof n==`number`?String(n):null,coverUrl:e.coverKey?ts(t[e.coverKey]):null}},rs=(e,t)=>t.flatMap(t=>t.locales.map(n=>({place:t,locale:n,seq:e}))),is=(e,t,n,r)=>{let i=o(),a=rs(e,r),s=ft(t??0,e,t!==void 0),c=_({queries:a.map(({place:t,locale:n})=>vt(e,t,n)),combine:e=>({data:e.map(e=>e.data),isPending:e.some(e=>e.isPending),error:e.find(e=>e.error)?.error??null,refetch:()=>Promise.all(e.map(e=>e.refetch()))})});(0,q.useEffect)(()=>{for(let e of n)for(let t of rs(e,r))i.prefetchQuery(vt(e,t.place,t.locale))},[n,r,i]);let l=s.data?.items??[];return{states:r.map(e=>({place:e,cards:Zo(a.flatMap((t,n)=>t.place===e?(c.data[n]??[]).map(t=>ns(e,t)):[]),l.filter(t=>t.modelId===e.modelId))})).filter(e=>e.cards.length>0),isPending:c.isPending||t!==void 0&&s.isPending,error:c.error??s.error,refetch:()=>Promise.all([c.refetch(),s.refetch()])}},as={unchanged:{labelKey:`snapshots.timeline.marks.unchanged`,tone:`success`},added:{labelKey:`snapshots.timeline.marks.added`,tone:`success`},changed:{labelKey:`snapshots.timeline.marks.changed`,tone:`warning`},removed:{labelKey:`snapshots.timeline.marks.removed`,tone:`muted`}},os={unchanged:``,added:`animate-in fade-in zoom-in-95 duration-500`,changed:`ring-2 ring-warning animate-in zoom-in-95 duration-500`,removed:`border-dashed bg-muted/40 animate-in fade-in duration-500`},ss=({card:e,onOpen:t})=>{let{t:n}=u(),r=as[e.mark],i=e.title??n(`snapshots.timeline.untitled`);return(0,J.jsxs)(`li`,{"data-mark":e.mark,"aria-label":n(`snapshots.timeline.cardLabel`,{title:i,state:n(r.labelKey)}),className:h(`flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card motion-reduce:animate-none`,os[e.mark]),children:[(0,J.jsx)(`div`,{className:h(`flex aspect-video items-center justify-center bg-muted transition-opacity duration-500 motion-reduce:transition-none`,e.mark===`removed`&&`opacity-40 grayscale`),children:e.coverUrl?(0,J.jsx)(`img`,{src:e.coverUrl,alt:``,loading:`lazy`,className:`size-full object-cover`}):(0,J.jsx)(xt,{"aria-hidden":`true`,className:`size-5 text-muted-foreground`})}),(0,J.jsxs)(`div`,{className:`flex flex-1 flex-col gap-2 p-3`,children:[(0,J.jsx)(`p`,{className:h(`line-clamp-2 text-sm font-semibold`,e.mark===`removed`&&`line-through`),children:i}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,J.jsx)(C,{tone:r.tone,label:n(r.labelKey),size:`sm`,live:!1}),e.locales.map(e=>(0,J.jsx)(T,{variant:`outline`,className:`font-mono`,children:e},e))]}),(0,J.jsxs)(M,{variant:`ghost`,size:`sm`,className:`mt-auto self-start`,"aria-label":n(`snapshots.timeline.openVersionOf`,{title:i}),onClick:()=>t(e),children:[(0,J.jsx)(je,{"aria-hidden":`true`}),n(`snapshots.timeline.openVersion`)]})]})]})},cs=new Set([`publish`,`restore`]),ls=(e,t)=>{let n=y(),r=o(),a=async(n,a)=>{let o=(await r.fetchQuery({queryKey:i.content.revisions(e,n,a),queryFn:()=>d.content.revisions(e,n,{locale:a})})).filter(e=>t===void 0||e.createdAt<=t),s=e=>[...e].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id;return s(o.filter(e=>cs.has(e.reason)))??s(o)};return async t=>{let r=t.locales[0];try{let i=(r?t.revisionIds[r]:void 0)??(r?await a(t.id,r):void 0);await n({to:`/content/$modelKey/$entryId`,params:{modelKey:e,entryId:t.id},search:{...r?{locale:r}:{},...i?{revision:i}:{}}})}catch(e){ve(e,`opening an entry version from the timeline`),j.error(De(e))}}},us=({state:e,seq:t,snapshotCreatedAt:n})=>{let{t:r}=u(),i=ls(e.place.modelKey,n),a=e.cards.filter(e=>e.mark!==`removed`).length;return(0,J.jsxs)(`section`,{"aria-label":e.place.label,className:`space-y-3`,children:[(0,J.jsxs)(`h3`,{className:`flex items-baseline gap-2 text-base font-semibold`,children:[e.place.label,(0,J.jsx)(`span`,{className:`text-meta font-normal text-muted-foreground`,children:r(`snapshots.timeline.liveCount`,{count:a})})]}),(0,J.jsx)(`ul`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3 xl:grid-cols-4`,children:e.cards.map(e=>(0,J.jsx)(ss,{card:e,onOpen:e=>void i(e)},e.mark===`unchanged`?e.id:`${e.id}:${t}`))})]})},ds=({seq:e,seqs:t,previous:n,places:r,createdAt:i})=>{let{t:a}=u(),o=t.indexOf(e),s=t[o-1],c=t[o+1],l=is(e,n,(0,q.useMemo)(()=>[s,c].filter(e=>e!==void 0),[s,c]),r);return l.error?(0,J.jsx)(ce,{error:l.error,onRetry:()=>void l.refetch()}):l.isPending&&l.states.length===0?(0,J.jsx)(E,{rows:4}):l.states.length===0?(0,J.jsx)(w,{icon:ct,title:a(`snapshots.timeline.nothingLive`,{seq:e})}):(0,J.jsx)(`div`,{"aria-busy":l.isPending||void 0,className:`space-y-8`,children:l.states.map(t=>(0,J.jsx)(us,{state:t,seq:e,snapshotCreatedAt:i},t.place.modelId))})},fs=150,ps=({at:e,onAtChange:t})=>{let{t:n}=u(),r=lt(),{places:i,error:a}=Yo(),[o,s]=(0,q.useState)(e),c=dn(o,fs),l=(0,q.useMemo)(()=>r.data?r.data.items.map(e=>e.seq).sort((e,t)=>e-t):[],[r.data]);(0,q.useEffect)(()=>{c!==e&&t(c)},[c,e,t]);let d=e=>l[l.indexOf(e)-1]??(e>0?e-1:void 0),f=d(c),p=ft(f??0,c,f!==void 0);if(r.isError||a)return(0,J.jsx)(ce,{error:r.error??a,onRetry:()=>void r.refetch()});if(!r.data||!i)return(0,J.jsx)(E,{rows:4});let m=r.data.items.find(e=>e.seq===o),h=r.data.items.find(e=>e.seq===c),g=r.data.current;return(0,J.jsxs)(`div`,{className:`space-y-6`,children:[(0,J.jsx)(K,{"aria-label":n(`snapshots.timeline.label`),children:(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(qo,{seq:o,row:m,previous:d(o),changedCount:o===c?p.data?.items.length:void 0}),(0,J.jsx)(es,{seqs:l,value:o,onChange:s}),(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o===g?null:(0,J.jsx)(Wo,{seq:o,size:`default`,label:n(`snapshots.timeline.restoreHere`)}),(0,J.jsx)(Uo,{seq:o,variant:`outline`,label:n(`snapshots.timeline.pinHere`)})]})]})}),(0,J.jsx)(ds,{seq:c,seqs:l,previous:f,places:i,createdAt:h?.createdAt})]})},ms={published:{labelKey:`snapshots.changes.published`,tone:`success`},updated:{labelKey:`snapshots.changes.updated`,tone:`warning`},unpublished:{labelKey:`snapshots.changes.unpublished`,tone:`muted`}},hs=({page:e})=>{let{t}=u(),{schemaVersions:n}=e,r=n.from!==n.to;return(0,J.jsx)(rn,{toolbar:(0,J.jsxs)(`p`,{className:`text-meta text-muted-foreground`,children:[t(e.nextCursor?`snapshots.diffSummaryMore`:`snapshots.diffSummary`,{from:e.from,to:e.to,count:e.items.length}),r?` · ${t(`snapshots.schemaMoved`,{from:n.from??`?`,to:n.to??`?`})}`:``]}),children:e.items.length===0?(0,J.jsx)(w,{icon:Ye,size:`panel`,title:t(`snapshots.noChanges`)}):(0,J.jsxs)(U,{children:[(0,J.jsx)(R,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(z,{children:t(`changes.fields.entry`)}),(0,J.jsx)(z,{children:t(`changes.fields.model`)}),(0,J.jsx)(z,{children:t(`snapshots.fields.locales`)})]})}),(0,J.jsx)(B,{children:e.items.map(e=>(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`max-w-72`,children:(0,J.jsx)(k,{asChild:!0,className:`block truncate font-mono text-xs`,children:(0,J.jsx)(b,{to:`/content/$modelKey/$entryId`,params:{modelKey:e.modelKey,entryId:e.id},children:e.id})})}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:e.modelKey}),(0,J.jsx)(H,{children:(0,J.jsx)(`ul`,{className:`flex flex-wrap gap-1.5`,children:e.locales.map(e=>{let n=ms[e.change];return(0,J.jsx)(`li`,{children:(0,J.jsx)(C,{tone:n.tone,size:`sm`,label:t(`snapshots.localeChange`,{locale:e.locale,change:t(n.labelKey)})})},e.locale)})})})]},e.id))})]})})},gs={diff:`snapshots.tabs.diff`,timeline:`snapshots.tabs.timeline`},_s=({snapshot:e})=>{let{t}=u(),n=Q(),r=he({from:`/app/snapshots/$seq`}),i=y({from:`/snapshots/$seq`}),a=r.tab??`diff`,o=(0,q.useCallback)(e=>void i({search:t=>({...t,at:e}),replace:!0}),[i]),s=r.from!==void 0&&r.from<e.seq?r.from:e.seq-1,c=ht(void 0).data?.current,l=ft(s,e.seq,a===`diff`),d=[O(e.createdAt),n({type:e.actor.type}),e.schemaVersion===null?``:t(`snapshots.schemaVersion`,{version:e.schemaVersion})].filter(Boolean).join(` · `);return(0,J.jsx)(x,{children:(0,J.jsxs)(ze,{value:a,onValueChange:e=>void i({search:t=>({...t,tab:e}),replace:!0}),className:`gap-6`,children:[(0,J.jsx)(S,{breadcrumb:[{label:t(`snapshots.title`),link:te({to:`/snapshots`})}],title:t(`snapshots.version`,{seq:e.seq}),badge:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(T,{variant:`secondary`,children:t(Ia[e.source])}),e.seq===c?(0,J.jsx)(C,{tone:`success`,label:t(`snapshots.live`)}):null]}),meta:d,actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Uo,{seq:e.seq}),c!==void 0&&e.seq!==c?(0,J.jsx)(Wo,{seq:e.seq,size:`default`}):null]}),tabs:(0,J.jsx)(Le,{variant:`underline`,"aria-label":t(`snapshots.tabs.label`),children:me.map(e=>(0,J.jsx)(N,{value:e,children:t(gs[e])},e))})}),(0,J.jsx)(P,{value:`diff`,children:(0,J.jsx)(W,{query:l,loadingRows:4,children:e=>(0,J.jsx)(hs,{page:e})})}),(0,J.jsx)(P,{value:`timeline`,children:(0,J.jsx)(ps,{at:r.at??e.seq,onAtChange:o})})]})})},vs={changes:A(`/app/changes`)({component:ki}),changeSet:A(`/app/changes/$changeSetId`)({component:Sa}),snapshots:A(`/app/snapshots`)({component:Ko}),snapshot:A(`/app/snapshots/$seq`)({component:()=>{let{seq:e}=oe({from:`/app/snapshots/$seq`}),{canManageChanges:t}=Z(),n=_t(Number(e));return t?(0,J.jsx)(W,{query:n,loadingRows:6,children:e=>(0,J.jsx)(_s,{snapshot:e})}):(0,J.jsx)(x,{children:(0,J.jsx)(yi,{})})}}),live:A(`/app/live`)({component:za}),schema:A(`/app/schema`)({component:Bo}),apiExplorer:A(`/app/api-explorer`)({component:li})};export{vs as developLazyRoutes};
11
- //# sourceMappingURL=develop-Brnb5YPC.js.map