@shapio/cms 0.3.1 → 0.4.1

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 (319) hide show
  1. package/dist/admin/assets/AssetTile-CoNClUYS.js +2 -0
  2. package/dist/admin/assets/AssetTile-CoNClUYS.js.map +1 -0
  3. package/dist/admin/assets/{AssistError-BYR085vj.js → AssistError-BoejyShH.js} +2 -2
  4. package/dist/admin/assets/{AssistError-BYR085vj.js.map → AssistError-BoejyShH.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-BnLF3Efc.js → BlockMenuItems-B2Jugisa.js} +3 -3
  6. package/dist/admin/assets/{BlockMenuItems-BnLF3Efc.js.map → BlockMenuItems-B2Jugisa.js.map} +1 -1
  7. package/dist/admin/assets/Body-D3GwLGaB.js +2 -0
  8. package/dist/admin/assets/{Body-CCOZq2q9.js.map → Body-D3GwLGaB.js.map} +1 -1
  9. package/dist/admin/assets/Builder-CmT5-8hI.js +2 -0
  10. package/dist/admin/assets/Builder-CmT5-8hI.js.map +1 -0
  11. package/dist/admin/assets/{ConfirmDialog-Tu-gjEwm.js → ConfirmDialog-HS8Gc2t3.js} +2 -2
  12. package/dist/admin/assets/{ConfirmDialog-Tu-gjEwm.js.map → ConfirmDialog-HS8Gc2t3.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-BuBaIlCk.js → CopyButton-DS-bAA23.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-BuBaIlCk.js.map → CopyButton-DS-bAA23.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-Bvu3CXpD.js → CursorPager-C6PyD3wE.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-Bvu3CXpD.js.map → CursorPager-C6PyD3wE.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-CCr5oRXI.js → ExternalLink-KdO72pTj.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-CCr5oRXI.js.map → ExternalLink-KdO72pTj.js.map} +1 -1
  19. package/dist/admin/assets/FocalPoint-C62fRhmM.js +2 -0
  20. package/dist/admin/assets/FocalPoint-C62fRhmM.js.map +1 -0
  21. package/dist/admin/assets/Form-CLEr5Csd.js +2 -0
  22. package/dist/admin/assets/{Form-Doc0JEzF.js.map → Form-CLEr5Csd.js.map} +1 -1
  23. package/dist/admin/assets/{FormCheckboxGroup-eg39IJvf.js → FormCheckboxGroup-BrXY6qBg.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-eg39IJvf.js.map → FormCheckboxGroup-BrXY6qBg.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-ZppSTZK6.js → FormRadioGroup-BjE1Jhar.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-ZppSTZK6.js.map → FormRadioGroup-BjE1Jhar.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-Cosnxiz-.js → FormSelectField-g4zrUlhv.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-Cosnxiz-.js.map → FormSelectField-g4zrUlhv.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DsKQEZw6.js → FormSwitchField-gciThNGV.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DsKQEZw6.js.map → FormSwitchField-gciThNGV.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-BXidSgIE.js → FormTextareaField-tsS-UXym.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-BXidSgIE.js.map → FormTextareaField-tsS-UXym.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-USQku9Yt.js → HintedLabel-CVe-PIyv.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-USQku9Yt.js.map → HintedLabel-CVe-PIyv.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-Bz_yvehr.js → InfoHint-DtaHU1Cg.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-Bz_yvehr.js.map → InfoHint-DtaHU1Cg.js.map} +1 -1
  37. package/dist/admin/assets/InsertMenuItem-DlzaD9zr.js +2 -0
  38. package/dist/admin/assets/InsertMenuItem-DlzaD9zr.js.map +1 -0
  39. package/dist/admin/assets/{LinkTabs-D4U-rJyK.js → LinkTabs-stM3j4aH.js} +2 -2
  40. package/dist/admin/assets/{LinkTabs-D4U-rJyK.js.map → LinkTabs-stM3j4aH.js.map} +1 -1
  41. package/dist/admin/assets/{Match-UAw1Ss8a.js → Match-ErAxnNAY.js} +2 -2
  42. package/dist/admin/assets/{Match-UAw1Ss8a.js.map → Match-ErAxnNAY.js.map} +1 -1
  43. package/dist/admin/assets/{Panel-BdjqCkKs.js → Panel-ClY9b33D.js} +2 -2
  44. package/dist/admin/assets/{Panel-BdjqCkKs.js.map → Panel-ClY9b33D.js.map} +1 -1
  45. package/dist/admin/assets/{QueryView-Bkyizh1P.js → QueryView-C630REML.js} +2 -2
  46. package/dist/admin/assets/{QueryView-Bkyizh1P.js.map → QueryView-C630REML.js.map} +1 -1
  47. package/dist/admin/assets/{RadioTile-VHTPl88w.js → RadioTile-CD4mel7U.js} +2 -2
  48. package/dist/admin/assets/{RadioTile-VHTPl88w.js.map → RadioTile-CD4mel7U.js.map} +1 -1
  49. package/dist/admin/assets/RichTextField-CxeVX6C-.js +144 -0
  50. package/dist/admin/assets/{RichTextField-B21FqrT5.js.map → RichTextField-CxeVX6C-.js.map} +1 -1
  51. package/dist/admin/assets/{RowTitle-BD8QPs_v.js → RowTitle-B-7RptyN.js} +2 -2
  52. package/dist/admin/assets/{RowTitle-BD8QPs_v.js.map → RowTitle-B-7RptyN.js.map} +1 -1
  53. package/dist/admin/assets/{SecretReveal-BfJKUxXW.js → SecretReveal-Dhw_dYxe.js} +2 -2
  54. package/dist/admin/assets/{SecretReveal-BfJKUxXW.js.map → SecretReveal-Dhw_dYxe.js.map} +1 -1
  55. package/dist/admin/assets/{SharedGlyph-DDPdvsm_.js → SharedGlyph-97RaO6Bh.js} +2 -2
  56. package/dist/admin/assets/{SharedGlyph-DDPdvsm_.js.map → SharedGlyph-97RaO6Bh.js.map} +1 -1
  57. package/dist/admin/assets/{StepList-DKhkw1hN.js → StepList--0Fiqsq-.js} +2 -2
  58. package/dist/admin/assets/{StepList-DKhkw1hN.js.map → StepList--0Fiqsq-.js.map} +1 -1
  59. package/dist/admin/assets/Structure-CoO3iah3.js +2 -0
  60. package/dist/admin/assets/{Structure-C7dr00Bp.js.map → Structure-CoO3iah3.js.map} +1 -1
  61. package/dist/admin/assets/{SubNavLink-BAF2-wuF.js → SubNavLink-YjjaDN40.js} +2 -2
  62. package/dist/admin/assets/{SubNavLink-BAF2-wuF.js.map → SubNavLink-YjjaDN40.js.map} +1 -1
  63. package/dist/admin/assets/{SuggestAltButton-DEsbHvs4.js → SuggestAltButton-Dlyxoypu.js} +2 -2
  64. package/dist/admin/assets/{SuggestAltButton-DEsbHvs4.js.map → SuggestAltButton-Dlyxoypu.js.map} +1 -1
  65. package/dist/admin/assets/{TextLink-CegO3jom.js → TextLink-DIqr5zkJ.js} +2 -2
  66. package/dist/admin/assets/{TextLink-CegO3jom.js.map → TextLink-DIqr5zkJ.js.map} +1 -1
  67. package/dist/admin/assets/Thumbnail-BUYOr4XJ.js +2 -0
  68. package/dist/admin/assets/Thumbnail-BUYOr4XJ.js.map +1 -0
  69. package/dist/admin/assets/{UnsavedChangesGuard-Cbfg-Bgj.js → UnsavedChangesGuard-BfzHgUkF.js} +2 -2
  70. package/dist/admin/assets/{UnsavedChangesGuard-Cbfg-Bgj.js.map → UnsavedChangesGuard-BfzHgUkF.js.map} +1 -1
  71. package/dist/admin/assets/{UserAvatar-CiZ00-cr.js → UserAvatar-DNOWhSWS.js} +2 -2
  72. package/dist/admin/assets/{UserAvatar-CiZ00-cr.js.map → UserAvatar-DNOWhSWS.js.map} +1 -1
  73. package/dist/admin/assets/{auth-BaVAo0u_.js → auth-YVfK3SxF.js} +2 -2
  74. package/dist/admin/assets/{auth-BaVAo0u_.js.map → auth-YVfK3SxF.js.map} +1 -1
  75. package/dist/admin/assets/{badge-IBeVOhKd.js → badge-lJ4Ih_Zn.js} +2 -2
  76. package/dist/admin/assets/{badge-IBeVOhKd.js.map → badge-lJ4Ih_Zn.js.map} +1 -1
  77. package/dist/admin/assets/{boxes-BH0MDegO.js → boxes-DRvd25_u.js} +2 -2
  78. package/dist/admin/assets/{boxes-BH0MDegO.js.map → boxes-DRvd25_u.js.map} +1 -1
  79. package/dist/admin/assets/{calendar-clock-DKUk-w81.js → calendar-clock-VENf4s1R.js} +2 -2
  80. package/dist/admin/assets/{calendar-clock-DKUk-w81.js.map → calendar-clock-VENf4s1R.js.map} +1 -1
  81. package/dist/admin/assets/{changeSets-o_G67qPk.js → changeSets-JmSyu3tu.js} +2 -2
  82. package/dist/admin/assets/{changeSets-o_G67qPk.js.map → changeSets-JmSyu3tu.js.map} +1 -1
  83. package/dist/admin/assets/chevron-left-D2DnQyeV.js +2 -0
  84. package/dist/admin/assets/{chevron-left-D259hWJn.js.map → chevron-left-D2DnQyeV.js.map} +1 -1
  85. package/dist/admin/assets/{circle-check-Cidzt1Ww.js → circle-check-jmRQz1Jq.js} +2 -2
  86. package/dist/admin/assets/{circle-check-Cidzt1Ww.js.map → circle-check-jmRQz1Jq.js.map} +1 -1
  87. package/dist/admin/assets/{clock-BOtPNp9-.js → clock-DrSTMGjp.js} +2 -2
  88. package/dist/admin/assets/{clock-BOtPNp9-.js.map → clock-DrSTMGjp.js.map} +1 -1
  89. package/dist/admin/assets/cn-CL1YHRrS.js +2 -0
  90. package/dist/admin/assets/cn-CL1YHRrS.js.map +1 -0
  91. package/dist/admin/assets/coerce-B4MJTGg1.js +2 -0
  92. package/dist/admin/assets/{coerce-DWI5sgLW.js.map → coerce-B4MJTGg1.js.map} +1 -1
  93. package/dist/admin/assets/constants-ahk0YSYl.js +2 -0
  94. package/dist/admin/assets/{constants-CgUdkWmf.js.map → constants-ahk0YSYl.js.map} +1 -1
  95. package/dist/admin/assets/content-DcvNzKGe.js +3 -0
  96. package/dist/admin/assets/content-DcvNzKGe.js.map +1 -0
  97. package/dist/admin/assets/{contentCounts-T-LmvUf5.js → contentCounts-DzIvdeXR.js} +2 -2
  98. package/dist/admin/assets/{contentCounts-T-LmvUf5.js.map → contentCounts-DzIvdeXR.js.map} +1 -1
  99. package/dist/admin/assets/{contentTypes-BSlp81l1.js → contentTypes-YAd-AzOF.js} +2 -2
  100. package/dist/admin/assets/{contentTypes-BSlp81l1.js.map → contentTypes-YAd-AzOF.js.map} +1 -1
  101. package/dist/admin/assets/context-4Jl20mYc.js +2 -0
  102. package/dist/admin/assets/context-4Jl20mYc.js.map +1 -0
  103. package/dist/admin/assets/{copy-DT7dAzVm.js → copy-t6kAFw-O.js} +2 -2
  104. package/dist/admin/assets/{copy-DT7dAzVm.js.map → copy-t6kAFw-O.js.map} +1 -1
  105. package/dist/admin/assets/{dateTimeLocal-DRq7DuYO.js → dateTimeLocal-IDUOKulz.js} +2 -2
  106. package/dist/admin/assets/{dateTimeLocal-DRq7DuYO.js.map → dateTimeLocal-IDUOKulz.js.map} +1 -1
  107. package/dist/admin/assets/develop-DYwiTd6R.js +11 -0
  108. package/dist/admin/assets/develop-DYwiTd6R.js.map +1 -0
  109. package/dist/admin/assets/dropdown-menu-DiYSm-g3.js +2 -0
  110. package/dist/admin/assets/dropdown-menu-DiYSm-g3.js.map +1 -0
  111. package/dist/admin/assets/{ellipsis-xDmHl1SK.js → ellipsis-DEHUaCkn.js} +2 -2
  112. package/dist/admin/assets/{ellipsis-xDmHl1SK.js.map → ellipsis-DEHUaCkn.js.map} +1 -1
  113. package/dist/admin/assets/external-link-B8UFREQ_.js +2 -0
  114. package/dist/admin/assets/external-link-B8UFREQ_.js.map +1 -0
  115. package/dist/admin/assets/{fileRoute-Buucm0CU.js → fileRoute-CVQpW8cj.js} +2 -2
  116. package/dist/admin/assets/{fileRoute-Buucm0CU.js.map → fileRoute-CVQpW8cj.js.map} +1 -1
  117. package/dist/admin/assets/folder-plus-iDg1hhew.js +2 -0
  118. package/dist/admin/assets/folder-plus-iDg1hhew.js.map +1 -0
  119. package/dist/admin/assets/followPlural-BdqfEe48.js +2 -0
  120. package/dist/admin/assets/{followPlural-Cuocm4Sv.js.map → followPlural-BdqfEe48.js.map} +1 -1
  121. package/dist/admin/assets/{globe-CAhrwBgv.js → globe-TooNSp9V.js} +2 -2
  122. package/dist/admin/assets/{globe-CAhrwBgv.js.map → globe-TooNSp9V.js.map} +1 -1
  123. package/dist/admin/assets/{image-CGN6ffEu.js → image-CXZXXH58.js} +2 -2
  124. package/dist/admin/assets/{image-CGN6ffEu.js.map → image-CXZXXH58.js.map} +1 -1
  125. package/dist/admin/assets/{image-off-0zX_kODH.js → image-off-cxva5G-Y.js} +2 -2
  126. package/dist/admin/assets/{image-off-0zX_kODH.js.map → image-off-cxva5G-Y.js.map} +1 -1
  127. package/dist/admin/assets/{inbox-CukkApHK.js → inbox-B8c9Kj_z.js} +2 -2
  128. package/dist/admin/assets/{inbox-CukkApHK.js.map → inbox-B8c9Kj_z.js.map} +1 -1
  129. package/dist/admin/assets/{inbox-CWq1hHqK.js → inbox-CnzNfqt9.js} +2 -2
  130. package/dist/admin/assets/{inbox-CWq1hHqK.js.map → inbox-CnzNfqt9.js.map} +1 -1
  131. package/dist/admin/assets/index-6iVBpUhu.css +2 -0
  132. package/dist/admin/assets/index-D9KL7arJ.js +4 -0
  133. package/dist/admin/assets/index-D9KL7arJ.js.map +1 -0
  134. package/dist/admin/assets/{key-round-DnE-2gr0.js → key-round-CFJ61iCd.js} +2 -2
  135. package/dist/admin/assets/{key-round-DnE-2gr0.js.map → key-round-CFJ61iCd.js.map} +1 -1
  136. package/dist/admin/assets/languages-eh7U4anI.js +2 -0
  137. package/dist/admin/assets/languages-eh7U4anI.js.map +1 -0
  138. package/dist/admin/assets/layers-mGfmMsKE.js +2 -0
  139. package/dist/admin/assets/layers-mGfmMsKE.js.map +1 -0
  140. package/dist/admin/assets/link-2-off-DbZzRN_w.js +2 -0
  141. package/dist/admin/assets/link-2-off-DbZzRN_w.js.map +1 -0
  142. package/dist/admin/assets/{link-DPniuk00.js → link-b2pFaN-A.js} +2 -2
  143. package/dist/admin/assets/{link-DPniuk00.js.map → link-b2pFaN-A.js.map} +1 -1
  144. package/dist/admin/assets/{locales-DFLQ17ow.js → locales-oBD0q1pN.js} +2 -2
  145. package/dist/admin/assets/{locales-DFLQ17ow.js.map → locales-oBD0q1pN.js.map} +1 -1
  146. package/dist/admin/assets/{media-CKTs3j83.js → media-5ks_0Rre.js} +2 -2
  147. package/dist/admin/assets/{media-CKTs3j83.js.map → media-5ks_0Rre.js.map} +1 -1
  148. package/dist/admin/assets/media-Cs9LCQcz.js +2 -0
  149. package/dist/admin/assets/{media-CUfV74JZ.js.map → media-Cs9LCQcz.js.map} +1 -1
  150. package/dist/admin/assets/network-DS8MW3AZ.js +2 -0
  151. package/dist/admin/assets/network-DS8MW3AZ.js.map +1 -0
  152. package/dist/admin/assets/{pencil-BqAgKC9v.js → pencil-C7eD5mlZ.js} +2 -2
  153. package/dist/admin/assets/{pencil-BqAgKC9v.js.map → pencil-C7eD5mlZ.js.map} +1 -1
  154. package/dist/admin/assets/{plus-DLRcpVhJ.js → plus-BDZHQBlU.js} +2 -2
  155. package/dist/admin/assets/{plus-DLRcpVhJ.js.map → plus-BDZHQBlU.js.map} +1 -1
  156. package/dist/admin/assets/{preload-helper-BHNBIF88.js → preload-helper-CJNJ4S3k.js} +2 -2
  157. package/dist/admin/assets/{preload-helper-BHNBIF88.js.map → preload-helper-CJNJ4S3k.js.map} +1 -1
  158. package/dist/admin/assets/publishing-C4YQ4XKt.js +2 -0
  159. package/dist/admin/assets/{publishing-DaaE8PaU.js.map → publishing-C4YQ4XKt.js.map} +1 -1
  160. package/dist/admin/assets/{radio-group-CA3XlQcc.js → radio-group-zOsGAYRP.js} +2 -2
  161. package/dist/admin/assets/{radio-group-CA3XlQcc.js.map → radio-group-zOsGAYRP.js.map} +1 -1
  162. package/dist/admin/assets/{rotate-ccw-CfrkcgYa.js → rotate-ccw-DCWwb4Ga.js} +2 -2
  163. package/dist/admin/assets/{rotate-ccw-CfrkcgYa.js.map → rotate-ccw-DCWwb4Ga.js.map} +1 -1
  164. package/dist/admin/assets/{schedules-hJQkjEhN.js → schedules-DXrBSypK.js} +2 -2
  165. package/dist/admin/assets/{schedules-hJQkjEhN.js.map → schedules-DXrBSypK.js.map} +1 -1
  166. package/dist/admin/assets/{schema--xSR7cf9.js → schema-B7L9OJrX.js} +2 -2
  167. package/dist/admin/assets/{schema--xSR7cf9.js.map → schema-B7L9OJrX.js.map} +1 -1
  168. package/dist/admin/assets/{scroll-text-BA9yh7Za.js → scroll-text-BLThe4Ki.js} +2 -2
  169. package/dist/admin/assets/{scroll-text-BA9yh7Za.js.map → scroll-text-BLThe4Ki.js.map} +1 -1
  170. package/dist/admin/assets/{file-text-BJkQMeQO.js → search-CcJQqtRw.js} +2 -2
  171. package/dist/admin/assets/search-CcJQqtRw.js.map +1 -0
  172. package/dist/admin/assets/{searchSchemas-C-nQbyhd.js → searchSchemas-BCRZ1jyL.js} +2 -2
  173. package/dist/admin/assets/{searchSchemas-C-nQbyhd.js.map → searchSchemas-BCRZ1jyL.js.map} +1 -1
  174. package/dist/admin/assets/{sections-D0OZozD2.js → sections-TIN_Nl1b.js} +2 -2
  175. package/dist/admin/assets/{sections-D0OZozD2.js.map → sections-TIN_Nl1b.js.map} +1 -1
  176. package/dist/admin/assets/sections-v5Flaor9.js +2 -0
  177. package/dist/admin/assets/sections-v5Flaor9.js.map +1 -0
  178. package/dist/admin/assets/{select-De48SQdZ.js → select-CpHp3YOH.js} +2 -2
  179. package/dist/admin/assets/{select-De48SQdZ.js.map → select-CpHp3YOH.js.map} +1 -1
  180. package/dist/admin/assets/{send-NuSmLVSD.js → send-CbP0Rc9_.js} +2 -2
  181. package/dist/admin/assets/{send-NuSmLVSD.js.map → send-CbP0Rc9_.js.map} +1 -1
  182. package/dist/admin/assets/seo-1n9s7YuX.js +2 -0
  183. package/dist/admin/assets/seo-1n9s7YuX.js.map +1 -0
  184. package/dist/admin/assets/settings-CuEO5l07.js +2 -0
  185. package/dist/admin/assets/settings-CuEO5l07.js.map +1 -0
  186. package/dist/admin/assets/skeleton-DElTumgk.js +42 -0
  187. package/dist/admin/assets/skeleton-DElTumgk.js.map +1 -0
  188. package/dist/admin/assets/snapshots-DkyyrWX3.js +2 -0
  189. package/dist/admin/assets/{snapshots-BQeFK5cj.js.map → snapshots-DkyyrWX3.js.map} +1 -1
  190. package/dist/admin/assets/{sparkles-B-0I44es.js → sparkles-D88gf3vX.js} +2 -2
  191. package/dist/admin/assets/{sparkles-B-0I44es.js.map → sparkles-D88gf3vX.js.map} +1 -1
  192. package/dist/admin/assets/src-Be3Ds5Dc.js +4 -0
  193. package/dist/admin/assets/src-Be3Ds5Dc.js.map +1 -0
  194. package/dist/admin/assets/{stableId-rPnYVF-A.js → stableId-DlNKh3HM.js} +2 -2
  195. package/dist/admin/assets/{stableId-rPnYVF-A.js.map → stableId-DlNKh3HM.js.map} +1 -1
  196. package/dist/admin/assets/{store-Bqd9L9DK.js → store-jUWyOXDG.js} +2 -2
  197. package/dist/admin/assets/{store-Bqd9L9DK.js.map → store-jUWyOXDG.js.map} +1 -1
  198. package/dist/admin/assets/{switch-JmfyFAQG.js → switch-CijNGYkG.js} +2 -2
  199. package/dist/admin/assets/{switch-JmfyFAQG.js.map → switch-CijNGYkG.js.map} +1 -1
  200. package/dist/admin/assets/table-DQ5ILlSh.js +56 -0
  201. package/dist/admin/assets/table-DQ5ILlSh.js.map +1 -0
  202. package/dist/admin/assets/tabs-CSqGW9Du.js +5 -0
  203. package/dist/admin/assets/tabs-CSqGW9Du.js.map +1 -0
  204. package/dist/admin/assets/{textarea-eatLAWE_.js → textarea-FwSvwmyT.js} +2 -2
  205. package/dist/admin/assets/{textarea-eatLAWE_.js.map → textarea-FwSvwmyT.js.map} +1 -1
  206. package/dist/admin/assets/theme-CHHVK8Ps.js +2 -0
  207. package/dist/admin/assets/theme-CHHVK8Ps.js.map +1 -0
  208. package/dist/admin/assets/{titles-Bi2fWNN4.js → titles-CQYc9nDQ.js} +2 -2
  209. package/dist/admin/assets/{titles-Bi2fWNN4.js.map → titles-CQYc9nDQ.js.map} +1 -1
  210. package/dist/admin/assets/{tokens-C2E7swse.js → tokens-C-20gLAT.js} +2 -2
  211. package/dist/admin/assets/{tokens-C2E7swse.js.map → tokens-C-20gLAT.js.map} +1 -1
  212. package/dist/admin/assets/{tooltip-Bji9fmSr.js → tooltip-BXqFQv9N.js} +2 -2
  213. package/dist/admin/assets/{tooltip-Bji9fmSr.js.map → tooltip-BXqFQv9N.js.map} +1 -1
  214. package/dist/admin/assets/{undo-2-BU-uqm7e.js → undo-2-CLy2zklL.js} +2 -2
  215. package/dist/admin/assets/{undo-2-BU-uqm7e.js.map → undo-2-CLy2zklL.js.map} +1 -1
  216. package/dist/admin/assets/{useAuditLabels-D5nmbXqN.js → useAuditLabels-BJF7M5RY.js} +2 -2
  217. package/dist/admin/assets/{useAuditLabels-D5nmbXqN.js.map → useAuditLabels-BJF7M5RY.js.map} +1 -1
  218. package/dist/admin/assets/{useConfirmTarget-Y7_8kVX5.js → useConfirmTarget-BUvlrGSW.js} +2 -2
  219. package/dist/admin/assets/{useConfirmTarget-Y7_8kVX5.js.map → useConfirmTarget-BUvlrGSW.js.map} +1 -1
  220. package/dist/admin/assets/{useContentSchema-DJTqjlUk.js → useContentSchema-Cvtes34f.js} +2 -2
  221. package/dist/admin/assets/{useContentSchema-DJTqjlUk.js.map → useContentSchema-Cvtes34f.js.map} +1 -1
  222. package/dist/admin/assets/{useCursorPager-CiJroOo7.js → useCursorPager-CzB6NDOB.js} +2 -2
  223. package/dist/admin/assets/{useCursorPager-CiJroOo7.js.map → useCursorPager-CzB6NDOB.js.map} +1 -1
  224. package/dist/admin/assets/{useDiscardGuard-t_N3l9TQ.js → useDiscardGuard-BAEGkGK9.js} +2 -2
  225. package/dist/admin/assets/{useDiscardGuard-t_N3l9TQ.js.map → useDiscardGuard-BAEGkGK9.js.map} +1 -1
  226. package/dist/admin/assets/useMediaPickerDialog-CiN_pias.js +2 -0
  227. package/dist/admin/assets/useMediaPickerDialog-CiN_pias.js.map +1 -0
  228. package/dist/admin/assets/useMediaUploader-CapEHBIt.js +2 -0
  229. package/dist/admin/assets/useMediaUploader-CapEHBIt.js.map +1 -0
  230. package/dist/admin/assets/usePaletteItems-wpn3ms6o.js +2 -0
  231. package/dist/admin/assets/usePaletteItems-wpn3ms6o.js.map +1 -0
  232. package/dist/admin/assets/{usePlaces-CnSOZwtO.js → usePlaces-6iTN15Xy.js} +2 -2
  233. package/dist/admin/assets/{usePlaces-CnSOZwtO.js.map → usePlaces-6iTN15Xy.js.map} +1 -1
  234. package/dist/admin/assets/{useQueries-BRolGUiw.js → useQueries-CYfcxI0Q.js} +2 -2
  235. package/dist/admin/assets/{useQueries-BRolGUiw.js.map → useQueries-CYfcxI0Q.js.map} +1 -1
  236. package/dist/admin/assets/useResolvedScheme-i1EwGHuF.js +2 -0
  237. package/dist/admin/assets/{searchSchema-Ypl6gq9g.js.map → useResolvedScheme-i1EwGHuF.js.map} +1 -1
  238. package/dist/admin/assets/useSchemaScopeAccess-WQKmj8_3.js +2 -0
  239. package/dist/admin/assets/useSchemaScopeAccess-WQKmj8_3.js.map +1 -0
  240. package/dist/admin/assets/{users-CbErtM7w.js → users-B01EH47o.js} +2 -2
  241. package/dist/admin/assets/{users-CbErtM7w.js.map → users-B01EH47o.js.map} +1 -1
  242. package/dist/admin/assets/{users-bDGYpSXg.js → users-BgTNDPXx.js} +2 -2
  243. package/dist/admin/assets/{users-bDGYpSXg.js.map → users-BgTNDPXx.js.map} +1 -1
  244. package/dist/admin/assets/{zod-Gtw4e0qi.js → zod-79xzBIrW.js} +2 -2
  245. package/dist/admin/assets/{zod-Gtw4e0qi.js.map → zod-79xzBIrW.js.map} +1 -1
  246. package/dist/admin/index.html +57 -57
  247. package/dist/admin/theme-init.js +23 -21
  248. package/dist/cli.js +19 -9
  249. package/dist/cli.js.map +1 -1
  250. package/dist/config.d.ts +1 -1
  251. package/dist/index.d.ts +4 -4
  252. package/dist/index.js +1 -1
  253. package/dist/{public-B7fFHMNr.d.ts → public-CTK82y3t.d.ts} +20 -3
  254. package/dist/{worker-BAmQPoTJ.js → worker-BDYDbaea.js} +2165 -680
  255. package/dist/worker-BDYDbaea.js.map +1 -0
  256. package/package.json +5 -5
  257. package/dist/admin/assets/Body-CCOZq2q9.js +0 -2
  258. package/dist/admin/assets/Builder-BZy9mphs.js +0 -2
  259. package/dist/admin/assets/Builder-BZy9mphs.js.map +0 -1
  260. package/dist/admin/assets/Form-Doc0JEzF.js +0 -2
  261. package/dist/admin/assets/InsertMenuItem-DJXglsEd.js +0 -2
  262. package/dist/admin/assets/InsertMenuItem-DJXglsEd.js.map +0 -1
  263. package/dist/admin/assets/RichTextField-B21FqrT5.js +0 -144
  264. package/dist/admin/assets/Structure-C7dr00Bp.js +0 -2
  265. package/dist/admin/assets/Thumbnail-CTpKlrxR.js +0 -2
  266. package/dist/admin/assets/Thumbnail-CTpKlrxR.js.map +0 -1
  267. package/dist/admin/assets/arrow-up-DwMJqZVV.js +0 -2
  268. package/dist/admin/assets/arrow-up-DwMJqZVV.js.map +0 -1
  269. package/dist/admin/assets/chevron-left-D259hWJn.js +0 -2
  270. package/dist/admin/assets/circle-x-c1RwmC6j.js +0 -2
  271. package/dist/admin/assets/circle-x-c1RwmC6j.js.map +0 -1
  272. package/dist/admin/assets/cn-M4_WHiur.js +0 -2
  273. package/dist/admin/assets/cn-M4_WHiur.js.map +0 -1
  274. package/dist/admin/assets/coerce-DWI5sgLW.js +0 -2
  275. package/dist/admin/assets/constants-CgUdkWmf.js +0 -2
  276. package/dist/admin/assets/content-D25ainqV.js +0 -3
  277. package/dist/admin/assets/content-D25ainqV.js.map +0 -1
  278. package/dist/admin/assets/develop-qF10t9tM.js +0 -11
  279. package/dist/admin/assets/develop-qF10t9tM.js.map +0 -1
  280. package/dist/admin/assets/dropdown-menu-Cl20LCvY.js +0 -2
  281. package/dist/admin/assets/dropdown-menu-Cl20LCvY.js.map +0 -1
  282. package/dist/admin/assets/external-link-DtJAaOWk.js +0 -2
  283. package/dist/admin/assets/external-link-DtJAaOWk.js.map +0 -1
  284. package/dist/admin/assets/file-text-BJkQMeQO.js.map +0 -1
  285. package/dist/admin/assets/followPlural-Cuocm4Sv.js +0 -2
  286. package/dist/admin/assets/index-C9uJxg4J.js +0 -4
  287. package/dist/admin/assets/index-C9uJxg4J.js.map +0 -1
  288. package/dist/admin/assets/index-Cz3C-LxB.css +0 -2
  289. package/dist/admin/assets/link-2-off-Cbpvb3w4.js +0 -2
  290. package/dist/admin/assets/link-2-off-Cbpvb3w4.js.map +0 -1
  291. package/dist/admin/assets/list-CkHF_4xh.js +0 -2
  292. package/dist/admin/assets/list-CkHF_4xh.js.map +0 -1
  293. package/dist/admin/assets/media-CUfV74JZ.js +0 -2
  294. package/dist/admin/assets/network-Fri1cjMt.js +0 -2
  295. package/dist/admin/assets/network-Fri1cjMt.js.map +0 -1
  296. package/dist/admin/assets/publishing-DaaE8PaU.js +0 -2
  297. package/dist/admin/assets/search--71HzPvh.js +0 -2
  298. package/dist/admin/assets/search--71HzPvh.js.map +0 -1
  299. package/dist/admin/assets/searchSchema-Ypl6gq9g.js +0 -2
  300. package/dist/admin/assets/sections-BBN2JErq.js +0 -2
  301. package/dist/admin/assets/sections-BBN2JErq.js.map +0 -1
  302. package/dist/admin/assets/settings-CYXU73dP.js +0 -2
  303. package/dist/admin/assets/settings-CYXU73dP.js.map +0 -1
  304. package/dist/admin/assets/skeleton-CCwdO9oq.js +0 -42
  305. package/dist/admin/assets/skeleton-CCwdO9oq.js.map +0 -1
  306. package/dist/admin/assets/snapshots-BQeFK5cj.js +0 -2
  307. package/dist/admin/assets/src-CQu-YxUM.js +0 -4
  308. package/dist/admin/assets/src-CQu-YxUM.js.map +0 -1
  309. package/dist/admin/assets/table-BEDv9IRM.js +0 -56
  310. package/dist/admin/assets/table-BEDv9IRM.js.map +0 -1
  311. package/dist/admin/assets/tabs-DSS1c-Kf.js +0 -5
  312. package/dist/admin/assets/tabs-DSS1c-Kf.js.map +0 -1
  313. package/dist/admin/assets/useMediaUploader-CLHmKCwq.js +0 -2
  314. package/dist/admin/assets/useMediaUploader-CLHmKCwq.js.map +0 -1
  315. package/dist/admin/assets/usePaletteItems-BVjWCdow.js +0 -2
  316. package/dist/admin/assets/usePaletteItems-BVjWCdow.js.map +0 -1
  317. package/dist/admin/assets/useSchemaScopeAccess-bd8RQxuu.js +0 -2
  318. package/dist/admin/assets/useSchemaScopeAccess-bd8RQxuu.js.map +0 -1
  319. package/dist/worker-BAmQPoTJ.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,l as i}from"./cn-M4_WHiur.js";var a=e(t(),1),o=6e4,s=()=>{let e=n({queryKey:r.contentCounts,queryFn:()=>i.contentCounts.list(),staleTime:o,meta:{silent:!0}});return(0,a.useMemo)(()=>e.data?new Map(e.data.counts.map(e=>[e.modelId,e.total])):void 0,[e.data])};export{s as t};
2
- //# sourceMappingURL=contentCounts-T-LmvUf5.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{H as n,P as r,l as i}from"./cn-CL1YHRrS.js";var a=e(t(),1),o=6e4,s=()=>{let e=n({queryKey:r.contentCounts,queryFn:()=>i.contentCounts.list(),staleTime:o,meta:{silent:!0}});return(0,a.useMemo)(()=>e.data?new Map(e.data.counts.map(e=>[e.modelId,e.total])):void 0,[e.data])};export{s as t};
2
+ //# sourceMappingURL=contentCounts-DzIvdeXR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentCounts-T-LmvUf5.js","names":["useMemo","__toESM","useQuery","queryKeys","adminApi","import_react","require_react","COUNTS_STALE_MS","useContentCounts","query","count"],"sources":["../../src/api/contentCounts.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\n/** The server caches counts for 60s; asking more often would only return the same numbers. */\nconst COUNTS_STALE_MS = 60_000;\n\n/** Entries per model (readable models only), keyed by model ID; undefined while loading or on failure. */\nexport const useContentCounts = () => {\n const query = useQuery({\n queryKey: queryKeys.contentCounts,\n queryFn: () => adminApi.contentCounts.list(),\n staleTime: COUNTS_STALE_MS,\n meta: { silent: true },\n });\n return useMemo(\n () =>\n query.data\n ? new Map(query.data.counts.map((count) => [count.modelId, count.total] as const))\n : undefined,\n [query.data],\n );\n};\n"],"mappings":"wJAMMO,EAAkB,IAGXC,MAAyB,CACpC,IAAMC,EAAQP,EAAS,CACrB,SAAUC,EAAU,cACpB,YAAeC,EAAS,cAAc,KAAK,EAC3C,UAAWG,EACX,KAAM,CAAE,OAAQ,EAAK,CACvB,CAAC,EACD,OAAA,EAAOP,EAAAA,QAAAA,KAEHS,EAAM,KACF,IAAI,IAAIA,EAAM,KAAK,OAAO,IAAK,GAAU,CAACC,EAAM,QAASA,EAAM,KAAK,CAAU,CAAC,EAC/E,IAAA,GACN,CAACD,EAAM,IAAI,CACb,CACF"}
1
+ {"version":3,"file":"contentCounts-DzIvdeXR.js","names":["useMemo","__toESM","useQuery","queryKeys","adminApi","import_react","require_react","COUNTS_STALE_MS","useContentCounts","query","count"],"sources":["../../src/api/contentCounts.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\n/** The server caches counts for 60s; asking more often would only return the same numbers. */\nconst COUNTS_STALE_MS = 60_000;\n\n/** Entries per model (readable models only), keyed by model ID; undefined while loading or on failure. */\nexport const useContentCounts = () => {\n const query = useQuery({\n queryKey: queryKeys.contentCounts,\n queryFn: () => adminApi.contentCounts.list(),\n staleTime: COUNTS_STALE_MS,\n meta: { silent: true },\n });\n return useMemo(\n () =>\n query.data\n ? new Map(query.data.counts.map((count) => [count.modelId, count.total] as const))\n : undefined,\n [query.data],\n );\n};\n"],"mappings":"wJAMMO,EAAkB,IAGXC,MAAyB,CACpC,IAAMC,EAAQP,EAAS,CACrB,SAAUC,EAAU,cACpB,YAAeC,EAAS,cAAc,KAAK,EAC3C,UAAWG,EACX,KAAM,CAAE,OAAQ,EAAK,CACvB,CAAC,EACD,OAAA,EAAOP,EAAAA,QAAAA,KAEHS,EAAM,KACF,IAAI,IAAIA,EAAM,KAAK,OAAO,IAAK,GAAU,CAACC,EAAM,QAASA,EAAM,KAAK,CAAU,CAAC,EAC/E,IAAA,GACN,CAACD,EAAM,IAAI,CACb,CACF"}
@@ -1,2 +1,2 @@
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{j as r}from"./cn-M4_WHiur.js";import{C as i,T as a,o,x as s}from"./auth-BaVAo0u_.js";import{_ as c,a as l,i as u,j as d,o as f,t as p}from"./badge-IBeVOhKd.js";import{t as m}from"./fileRoute-Buucm0CU.js";import{i as h}from"./skeleton-CCwdO9oq.js";import{n as g,t as _}from"./Form-Doc0JEzF.js";import{a as v,d as y}from"./constants-CgUdkWmf.js";import{t as b}from"./Builder-BZy9mphs.js";import{t as x}from"./plus-DLRcpVhJ.js";import{u as S}from"./changeSets-o_G67qPk.js";import{t as C}from"./HintedLabel-USQku9Yt.js";import{s as w}from"./schema--xSR7cf9.js";import{t as T}from"./QueryView-Bkyizh1P.js";import{t as E}from"./textarea-eatLAWE_.js";import{c as D,g as O,i as k,r as A,t as j}from"./AssistError-BYR085vj.js";import{t as M}from"./Panel-BdjqCkKs.js";import{a as N,i as P}from"./followPlural-Cuocm4Sv.js";var F=e(n(),1),I=()=>{let{t:e}=r(),t=w(`component`),n=o(`schema.create`),{locked:i,reason:a}=N(),c=n&&!i?(0,F.jsx)(h,{asChild:!0,children:(0,F.jsxs)(s,{to:`/develop/components/new`,children:[(0,F.jsx)(x,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,F.jsxs)(l,{children:[(0,F.jsx)(u,{title:e(`shell.nav.components`),actions:c}),i?(0,F.jsx)(P,{reason:a}):null,(0,F.jsx)(T,{query:t,isEmpty:e=>e.length===0,empty:(0,F.jsx)(f,{icon:y,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:c}),children:e=>(0,F.jsx)(g,{items:e})})]})},L=()=>{let{componentId:e}=d({from:`/app/develop/components/$componentId`});return(0,F.jsx)(b,{category:`component`,id:e})},R=[`component`],z=()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newComponentTitle`),kinds:R,back:i({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},B=e(t(),1),V=()=>{let{t:e}=r(),t=a(),[n,i]=(0,B.useState)(``),[o,s]=(0,B.useState)(null),c=D(),l=S();return{description:n,setDescription:i,proposal:o,run:()=>{n.trim()!==``&&(s(null),l.reset(),c.mutate({description:n.trim()},{onSuccess:s}))},discard:()=>{s(null),c.reset(),l.reset()},addToChangeSet:()=>{o&&l.mutate({definitions:o.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:o.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:c.isPending,proposeError:c.error,adding:l.isPending,addError:l.error}},H=({proposal:e})=>{let{t}=r();return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,F.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,F.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,F.jsx)(p,{variant:`secondary`,children:t(v[e.kind])}),(0,F.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,F.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},U=()=>{let{t:e}=r(),t=(0,B.useId)(),n=k(),{locked:i}=N(),a=V();return n?(0,F.jsx)(M,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,F.jsx)(`div`,{className:`space-y-3`,children:a.proposal?(0,F.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),a.addToChangeSet()},children:[(0,F.jsx)(H,{proposal:a.proposal}),(0,F.jsx)(j,{error:a.addError}),(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,F.jsx)(h,{type:`button`,variant:`outline`,onClick:a.discard,children:e(`assist.discard`)}),(0,F.jsx)(c,{pending:a.adding,pendingLabel:e(`common.saving`),disabled:i,children:e(`assist.describe.add`)})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(C,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,F.jsx)(E,{id:`${t}-description`,value:a.description,rows:4,maxLength:O,placeholder:e(`assist.describe.placeholder`),disabled:a.proposing,onChange:e=>a.setDescription(e.target.value)})]}),(0,F.jsx)(j,{error:a.proposeError}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsx)(A,{variant:`outline`,size:`default`,pending:a.proposing,pendingLabel:e(`assist.working`),disabled:a.description.trim()===``||i,onClick:a.run,children:e(`assist.describe.run`)})})]})})}):null},W=[`collection`,`singleton`],G={newContentType:m(`/app/content/new`)({component:()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newTitle`),kinds:W,back:i({to:`/content`}),backLabel:e(`content.title`),intro:(0,F.jsx)(U,{})})}}),components:m(`/app/develop/components`)({component:I}),newComponent:m(`/app/develop/components/new`)({component:z}),component:m(`/app/develop/components/$componentId`)({component:L})};export{G as contentTypesLazyRoutes};
2
- //# sourceMappingURL=contentTypes-BSlp81l1.js.map
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{j as r}from"./cn-CL1YHRrS.js";import{C as i,T as a,o,x as s}from"./auth-YVfK3SxF.js";import{_ as c,a as l,i as u,j as d,o as f,t as p}from"./badge-lJ4Ih_Zn.js";import{t as m}from"./fileRoute-CVQpW8cj.js";import{i as h}from"./skeleton-DElTumgk.js";import{n as g,t as _}from"./Form-CLEr5Csd.js";import{a as v,d as y}from"./constants-ahk0YSYl.js";import{t as b}from"./Builder-CmT5-8hI.js";import{t as x}from"./plus-BDZHQBlU.js";import{u as S}from"./changeSets-JmSyu3tu.js";import{t as C}from"./HintedLabel-CVe-PIyv.js";import{s as w}from"./schema-B7L9OJrX.js";import{t as T}from"./QueryView-C630REML.js";import{t as E}from"./textarea-FwSvwmyT.js";import{c as D,g as O,i as k,r as A,t as j}from"./AssistError-BoejyShH.js";import{t as M}from"./Panel-ClY9b33D.js";import{a as N,i as P}from"./followPlural-BdqfEe48.js";var F=e(n(),1),I=()=>{let{t:e}=r(),t=w(`component`),n=o(`schema.create`),{locked:i,reason:a}=N(),c=n&&!i?(0,F.jsx)(h,{asChild:!0,children:(0,F.jsxs)(s,{to:`/develop/components/new`,children:[(0,F.jsx)(x,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,F.jsxs)(l,{children:[(0,F.jsx)(u,{title:e(`shell.nav.components`),actions:c}),i?(0,F.jsx)(P,{reason:a}):null,(0,F.jsx)(T,{query:t,isEmpty:e=>e.length===0,empty:(0,F.jsx)(f,{icon:y,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:c}),children:e=>(0,F.jsx)(g,{items:e})})]})},L=()=>{let{componentId:e}=d({from:`/app/develop/components/$componentId`});return(0,F.jsx)(b,{category:`component`,id:e})},R=[`component`],z=()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newComponentTitle`),kinds:R,back:i({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},B=e(t(),1),V=()=>{let{t:e}=r(),t=a(),[n,i]=(0,B.useState)(``),[o,s]=(0,B.useState)(null),c=D(),l=S();return{description:n,setDescription:i,proposal:o,run:()=>{n.trim()!==``&&(s(null),l.reset(),c.mutate({description:n.trim()},{onSuccess:s}))},discard:()=>{s(null),c.reset(),l.reset()},addToChangeSet:()=>{o&&l.mutate({definitions:o.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:o.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:c.isPending,proposeError:c.error,adding:l.isPending,addError:l.error}},H=({proposal:e})=>{let{t}=r();return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,F.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,F.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,F.jsx)(p,{variant:`secondary`,children:t(v[e.kind])}),(0,F.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,F.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},U=()=>{let{t:e}=r(),t=(0,B.useId)(),n=k(),{locked:i}=N(),a=V();return n?(0,F.jsx)(M,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,F.jsx)(`div`,{className:`space-y-3`,children:a.proposal?(0,F.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),a.addToChangeSet()},children:[(0,F.jsx)(H,{proposal:a.proposal}),(0,F.jsx)(j,{error:a.addError}),(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,F.jsx)(h,{type:`button`,variant:`outline`,onClick:a.discard,children:e(`assist.discard`)}),(0,F.jsx)(c,{pending:a.adding,pendingLabel:e(`common.saving`),disabled:i,children:e(`assist.describe.add`)})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(C,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,F.jsx)(E,{id:`${t}-description`,value:a.description,rows:4,maxLength:O,placeholder:e(`assist.describe.placeholder`),disabled:a.proposing,onChange:e=>a.setDescription(e.target.value)})]}),(0,F.jsx)(j,{error:a.proposeError}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsx)(A,{variant:`outline`,size:`default`,pending:a.proposing,pendingLabel:e(`assist.working`),disabled:a.description.trim()===``||i,onClick:a.run,children:e(`assist.describe.run`)})})]})})}):null},W=[`collection`,`singleton`],G={newContentType:m(`/app/content/new`)({component:()=>{let{t:e}=r();return(0,F.jsx)(_,{title:e(`contentTypes.newTitle`),kinds:W,back:i({to:`/content`}),backLabel:e(`content.title`),intro:(0,F.jsx)(U,{})})}}),components:m(`/app/develop/components`)({component:I}),newComponent:m(`/app/develop/components/new`)({component:z}),component:m(`/app/develop/components/$componentId`)({component:L})};export{G as contentTypesLazyRoutes};
2
+ //# sourceMappingURL=contentTypes-YAd-AzOF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentTypes-BSlp81l1.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","useTranslation","linkOptions","useNavigate","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","createLazyRoute","Button","List","Form","KIND_LABEL_KEYS","Blocks","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","Textarea","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","useHasGlobalPermission","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/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 { 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 { 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
+ {"version":3,"file":"contentTypes-YAd-AzOF.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","useTranslation","linkOptions","useNavigate","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","createLazyRoute","Button","List","Form","KIND_LABEL_KEYS","Blocks","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","Textarea","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","useHasGlobalPermission","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/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 { 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 { 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":"s8BAea2C,MAAmB,CAC9B,GAAM,CAAE,KAAMhC,EAAe,EACvBiC,EAAab,EAAe,WAAW,EACvCc,EAAYC,EAAuB,eAAe,EAClD,CAAE,SAAQ,UAAWN,EAAc,EACnCO,EACJF,GAAa,CAACG,GACZ,EAAAN,EAAA,IAAA,CAACpB,EAAD,CAAQ,QAAA,GACN,UAAA,EAAAoB,EAAA,KAAA,CAAC5B,EAAD,CAAM,GAAG,0BAAT,SAAA,EACE,EAAA4B,EAAA,IAAA,CAACd,EAAD,CAAM,cAAY,MAAQ,CAAA,EACzBqB,EAAE,gCAAgC,CAC/B,GACA,CAAA,EACN,KACN,OACE,EAAAP,EAAA,KAAA,CAAC1B,EAAD,CAAA,SAAA,EACE,EAAA0B,EAAA,IAAA,CAACzB,EAAD,CAAY,MAAOgC,EAAE,sBAAsB,EAAG,QAASF,CAAe,CAAA,EACrEC,GAAS,EAAAN,EAAA,IAAA,CAACD,EAAD,CAAoB,QAAS,CAAA,EAAI,MAC3C,EAAAC,EAAA,IAAA,CAACV,EAAD,CACE,MAAOY,EACP,QAAU,GAASM,EAAK,SAAW,EACnC,OACE,EAAAR,EAAA,IAAA,CAACvB,EAAD,CACE,KAAMO,EACN,MAAOuB,EAAE,2BAA2B,EACpC,YAAaA,EAAE,yBAAyB,EACxC,OAAQF,CACT,CAAA,EAGD,SAAA,IAAS,EAAAL,EAAA,IAAA,CAACnB,EAAD,CAAM,MAAO2B,CAAO,CAAA,CACtB,CAAA,CACP,CAAA,CAAA,CAEV,EC7CaC,MAAgB,CAC3B,GAAM,CAAE,eAAgBjC,EAAU,CAAE,KAAM,sCAAuC,CAAC,EAClF,OAAO,EAAAwB,EAAA,IAAA,CAAC1C,EAAD,CAAmB,SAAS,YAAY,GAAIoD,CAAc,CAAA,CACnE,ECHMnD,EAAQ,CAAC,WAAW,EAGbC,MAAY,CACvB,GAAM,CAAE,KAAMS,EAAe,EAC7B,OACE,EAAA+B,EAAA,IAAA,CAAClB,EAAD,CACE,MAAOyB,EAAE,gCAAgC,EACzC,MAAOhD,EACP,KAAMW,EAAY,CAAE,GAAI,qBAAsB,CAAC,EAC/C,UAAWqC,EAAE,sBAAsB,CACpC,CAAA,CAEL,aCNaQ,MAA0B,CACrC,GAAM,CAAE,KAAM9C,EAAe,EACvB+C,EAAW7C,EAAY,EACvB,CAAC8C,EAAaC,IAAA,EAAkBzD,EAAAA,SAAAA,CAAS,EAAE,EAC3C,CAAC0D,EAAUC,IAAA,EAAe3D,EAAAA,SAAAA,CAAmC,IAAI,EACjE4D,EAAU7B,EAAiB,EAC3B8B,EAAOnC,EAAiC,EA4B9C,MAAO,CACL,cACA,iBACA,WACA,QA/BgB,CACZ8B,EAAY,KAAK,IAAM,KAG3BG,EAAY,IAAI,EAChBE,EAAK,MAAM,EACXD,EAAQ,OAAO,CAAE,YAAaJ,EAAY,KAAK,CAAE,EAAG,CAAE,UAAWG,CAAY,CAAC,EAChF,EAyBE,YAxBoB,CACpBA,EAAY,IAAI,EAChBC,EAAQ,MAAM,EACdC,EAAK,MAAM,CACb,EAqBE,mBApB2B,CACtBH,GAGLG,EAAK,OACH,CACE,YAAaH,EAAS,YACtB,YAAaZ,EAAE,2BAA4B,CAAE,MAAOY,EAAS,KAAM,CAAC,CACtE,EACA,CACE,UAAY,GAAgB,KAAKH,EAAS,CAAE,GAAI,wBAAyB,OAAQ,CAAE,aAAY,CAAE,CAAC,CACpG,CACF,CACF,EAQE,UAAWK,EAAQ,UACnB,aAAcA,EAAQ,MACtB,OAAQC,EAAK,UACb,SAAUA,EAAK,KACjB,CACF,ECjDaC,GAAY,CAAE,cAA8B,CACvD,GAAM,CAAE,GAAMtD,EAAe,EAC7B,OACE,EAAA+B,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,YAAf,SAAA,EACE,EAAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,kCACV,SAAA,EAAE,6BAA8B,CAAE,MAAOmB,EAAS,KAAM,CAAC,CACzD,CAAA,GACH,EAAAnB,EAAA,IAAA,CAAC,KAAD,CAAI,aAAY,EAAE,+BAA+B,EAAG,UAAU,YAC3D,SAAAmB,EAAS,YAAY,IAAK,IACzB,EAAAnB,EAAA,KAAA,CAAC,KAAD,CAAwB,UAAU,wBAAlC,SAAA,EACE,EAAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,oCAAf,SAAA,EACE,EAAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,wBAAyB,SAAAwB,EAAW,KAAY,CAAA,GAChE,EAAAxB,EAAA,IAAA,CAACtB,EAAD,CAAO,QAAQ,YAAa,SAAA,EAAEK,EAAgByC,EAAW,KAAK,CAAS,CAAA,GACvE,EAAAxB,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,4CAA6C,SAAAwB,EAAW,MAAa,CAAA,CAClF,CACL,CAAA,GAAA,EAAAxB,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,mDACX,SAAAwB,EAAW,OAAO,IAAK,IACtB,EAAAxB,EAAA,KAAA,CAAC,KAAD,CAAA,SAAA,EACE,EAAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,kBAAmB,SAAAyB,EAAM,KAAY,CAAA,EAAE,IACtD,EAAE,4BAA6B,CAAE,KAAM,EAAE,oBAAoBA,EAAM,KAAK,MAAM,CAAE,CAAC,CAChF,CAAA,EAHKA,EAAM,EAGX,CACL,CACC,CAAA,CACF,CAdK,EAAAD,EAAW,EAchB,CACL,CACC,CAAA,CACD,GAET,ECpBaE,MAAiB,CAC5B,GAAM,CAAE,KAAMzD,EAAe,EACvB0D,GAAA,EAAKjE,EAAAA,MAAAA,CAAM,EACXkE,EAAUlC,EAAiB,EAC3B,CAAE,UAAWI,EAAc,EAC3B+B,EAAWd,EAAkB,EAInC,OAHKa,GAIH,EAAA5B,EAAA,IAAA,CAACH,EAAD,CAAO,MAAOU,EAAE,uBAAuB,EAAG,QAAQ,KAChD,UAAA,EAAAP,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,YACZ,SAAA6B,EAAS,UACR,EAAA7B,EAAA,KAAA,CAAC,OAAD,CACE,UAAU,YACV,SAAW,GAAU,CACnB8B,EAAM,eAAe,EACrBD,EAAS,eAAe,CAC1B,EALF,SAAA,EAOE,EAAA7B,EAAA,IAAA,CAACuB,EAAD,CAAU,SAAUM,EAAS,QAAW,CAAA,GACxC,EAAA7B,EAAA,IAAA,CAACJ,EAAD,CAAa,MAAOiC,EAAS,QAAW,CAAA,GACxC,EAAA7B,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,mCAAf,SAAA,EACE,EAAAA,EAAA,IAAA,CAACpB,EAAD,CAAQ,KAAK,SAAS,QAAQ,UAAU,QAASiD,EAAS,QACvD,SAAAtB,EAAE,gBAAgB,CACb,CAAA,GACR,EAAAP,EAAA,IAAA,CAAC3B,EAAD,CAAc,QAASwD,EAAS,OAAQ,aAActB,EAAE,eAAe,EAAG,SAAUD,EACjF,SAAAC,EAAE,qBAAqB,CACZ,CAAA,CACX,GACD,CAEN,CAAA,GAAA,EAAAP,EAAA,KAAA,CAAArC,EAAAA,SAAA,CAAA,SAAA,EACE,EAAAqC,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,YAAf,SAAA,EACE,EAAAA,EAAA,IAAA,CAACZ,EAAD,CACE,QAAS,GAAGuC,EAAG,cACf,MAAOpB,EAAE,uBAAuB,EAChC,KAAMA,EAAE,sBAAsB,CAC/B,CAAA,GACD,EAAAP,EAAA,IAAA,CAACT,EAAD,CACE,GAAI,GAAGoC,EAAG,cACV,MAAOE,EAAS,YAChB,KAAM,EACN,UAAWpC,EACX,YAAac,EAAE,6BAA6B,EAC5C,SAAUsB,EAAS,UACnB,SAAW,GAAUA,EAAS,eAAeC,EAAM,OAAO,KAAK,CAChE,CAAA,CACE,KACL,EAAA9B,EAAA,IAAA,CAACJ,EAAD,CAAa,MAAOiC,EAAS,YAAe,CAAA,GAC5C,EAAA7B,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,mBACb,UAAA,EAAAA,EAAA,IAAA,CAACL,EAAD,CACE,QAAQ,UACR,KAAK,UACL,QAASkC,EAAS,UAClB,aAActB,EAAE,gBAAgB,EAChC,SAAUsB,EAAS,YAAY,KAAK,IAAM,IAAMvB,EAChD,QAASuB,EAAS,IAEjB,SAAAtB,EAAE,qBAAqB,CACZ,CAAA,CACX,CAAA,CACL,CAAA,CAAA,CAED,CAAA,CACA,CAAA,EA1DA,IA4DX,EC9EMwB,EAAQ,CAAC,aAAc,WAAW,ECE3BC,EAAyB,CACpC,eAAgBrD,EAAgB,kBAAkB,CAAC,CAAC,CAAE,cDA/B,CACvB,GAAM,CAAE,KAAMV,EAAe,EAC7B,OACE,EAAA+B,EAAA,IAAA,CAAClB,EAAD,CACE,MAAOyB,EAAE,uBAAuB,EAChC,MAAOwB,EACP,KAAM7D,EAAY,CAAE,GAAI,UAAW,CAAC,EACpC,UAAWqC,EAAE,eAAe,EAC5B,OAAO,EAAAP,EAAA,IAAA,CAAC0B,EAAD,CAAW,CAAA,CACnB,CAAA,CAEL,CCXkF,CAAC,EACjF,WAAY/C,EAAgB,yBAAyB,CAAC,CAAC,CAAE,UAAWsB,CAAW,CAAC,EAChF,aAActB,EAAgB,6BAA6B,CAAC,CAAC,CAAE,UAAWd,CAAa,CAAC,EACxF,UAAWc,EAAgB,sCAAsC,CAAC,CAAC,CAAE,UAAWb,CAAiB,CAAC,CACpG"}
@@ -0,0 +1,2 @@
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{m as n}from"./cn-CL1YHRrS.js";var r=e(t(),1),i=(0,r.createContext)(null),a=(0,r.createContext)(null),o=()=>{let e=(0,r.useContext)(i);if(!e)throw Error(`useFieldsEnvironment must be used inside <FieldsProvider>`);return e},s=()=>{let e=(0,r.useContext)(a);if(!e)throw Error(`useEntryFormStore must be used inside <FieldsProvider>`);return e},c=e=>n(s(),e),l=(0,r.createContext)(null),u=()=>(0,r.useContext)(l);export{s as a,c as i,i as n,o,l as r,u as s,a as t};
2
+ //# sourceMappingURL=context-4Jl20mYc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-4Jl20mYc.js","names":["createContext","useContext","__toESM","useStore","import_react","require_react","FieldsEnvironmentContext","EntryFormStoreContext","useFieldsEnvironment","environment","useEntryFormStore","store","useEntryForm","selector","SiblingValuesContext","useSiblingValues"],"sources":["../../src/fields/form/context.ts"],"sourcesContent":["import type { EditorDefinition, PickedMedia, MediaPickOptions } from '@shapio/editor-sdk';\nimport type { ComponentDefinition, ModelDefinition, SchemaDefinition } from '@shapio/schema';\nimport { createContext, useContext } from 'react';\nimport { useStore } from 'zustand';\nimport type { UploadedMedia } from '@/hooks/useMediaUploader';\nimport type { EntryFormState, EntryFormStore } from './store';\n\n/** What every field editor in a form shares: the schema, the entry, and capabilities. */\nexport type FieldsEnvironment = {\n /** Prefix for DOM ids, unique per form on the page (the page's form and an inline-create drawer). */\n idPrefix: string;\n /** The model the entry belongs to. */\n model: ModelDefinition;\n /** Components by stable ID (for component and dynamic-zone fields). */\n components: ReadonlyMap<string, ComponentDefinition>;\n /** Every model by stable ID (relation targets). */\n models: ReadonlyMap<string, ModelDefinition>;\n /** The locale being edited, or null when the model is not localized. */\n locale: string | null;\n entryId: string | null;\n /** Nothing can be changed (no update permission, viewing history). */\n readOnly: boolean;\n /** Temporarily unavailable (saving a conflict resolution, reloading). */\n disabled: boolean;\n runtimeEditors: ReadonlyMap<string, EditorDefinition>;\n pickMedia: (options?: MediaPickOptions) => Promise<PickedMedia[] | null>;\n /**\n * Uploads one file into the library (public, root folder) and resolves with the new asset, for files\n * dropped or pasted into rich text. Absent without `media.write`: editors then don't accept files.\n */\n uploadMedia?: (file: File) => Promise<UploadedMedia>;\n};\n\nexport const FieldsEnvironmentContext = createContext<FieldsEnvironment | null>(null);\nexport const EntryFormStoreContext = createContext<EntryFormStore | null>(null);\n\nexport const useFieldsEnvironment = (): FieldsEnvironment => {\n const environment = useContext(FieldsEnvironmentContext);\n if (!environment) {\n throw new Error('useFieldsEnvironment must be used inside <FieldsProvider>');\n }\n return environment;\n};\n\nexport const useEntryFormStore = (): EntryFormStore => {\n const store = useContext(EntryFormStoreContext);\n if (!store) {\n throw new Error('useEntryFormStore must be used inside <FieldsProvider>');\n }\n return store;\n};\n\nexport const useEntryForm = <T>(selector: (state: EntryFormState) => T): T =>\n useStore(useEntryFormStore(), selector);\n\n/** The definition and values of the level a field sits in (the entry, or one component item). */\nexport type SiblingValues = { definition: SchemaDefinition; values: Readonly<Record<string, unknown>> };\n\nexport const SiblingValuesContext = createContext<SiblingValues | null>(null);\n\nexport const useSiblingValues = () => useContext(SiblingValuesContext);\n"],"mappings":"0IAiCaM,GAAA,EAA2BN,EAAAA,cAAAA,CAAwC,IAAI,EACvEO,GAAA,EAAwBP,EAAAA,cAAAA,CAAqC,IAAI,EAEjEQ,MAAgD,CAC3D,IAAMC,GAAA,EAAcR,EAAAA,WAAAA,CAAWK,CAAwB,EACvD,GAAI,CAACG,EACH,MAAU,MAAM,2DAA2D,EAE7E,OAAOA,CACT,EAEaC,MAA0C,CACrD,IAAMC,GAAA,EAAQV,EAAAA,WAAAA,CAAWM,CAAqB,EAC9C,GAAI,CAACI,EACH,MAAU,MAAM,wDAAwD,EAE1E,OAAOA,CACT,EAEaC,EAAmB,GAC9BT,EAASO,EAAkB,EAAGG,CAAQ,EAK3BC,GAAA,EAAuBd,EAAAA,cAAAA,CAAoC,IAAI,EAE/De,OAAA,EAAyBd,EAAAA,WAAAA,CAAWa,CAAoB"}
@@ -1,2 +1,2 @@
1
- import{i as e}from"./cn-M4_WHiur.js";var t={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=copy-DT7dAzVm.js.map
1
+ import{i as e}from"./cn-CL1YHRrS.js";var t={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=copy-t6kAFw-O.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-DT7dAzVm.js","names":["createLucideIcon","__iconData","Copy"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/copy.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"copy\",\n size: 24,\n node: [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n ]\n};\n__iconData.node;\nconst Copy = createLucideIcon(__iconData);\n\nexport { __iconData, Copy as default };\n//# sourceMappingURL=copy.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,OACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAS,CAAC,CAC1F,CACF,EACAA,EAAW,KACX,IAAMC,EAAOF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"copy-t6kAFw-O.js","names":["createLucideIcon","__iconData","Copy"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/copy.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"copy\",\n size: 24,\n node: [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n ]\n};\n__iconData.node;\nconst Copy = createLucideIcon(__iconData);\n\nexport { __iconData, Copy as default };\n//# sourceMappingURL=copy.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,OACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,OAAQ,CAAE,EAAG,0DAA2D,IAAK,QAAS,CAAC,CAC1F,CACF,EACAA,EAAW,KACX,IAAMC,EAAOF,EAAiBC,CAAU"}
@@ -1,2 +1,2 @@
1
- import{_ as e}from"./table-BEDv9IRM.js";var t=e=>String(e).padStart(2,`0`),n=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/,r=36e5,i=e=>`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}`,a=e=>{let t=n.exec(e);if(!t)return;let[r=0,i=0,a=0,o=0,s=0,c=0]=t.slice(1).map(e=>e===void 0?0:Number(e)),l=new Date(r,i-1,a,o,s,c);return l.getFullYear()===r&&l.getMonth()===i-1&&l.getDate()===a&&l.getHours()===o&&l.getMinutes()===s?l.toISOString():void 0},o=(e=new Date)=>{let t=new Date(e.getTime()+r/2);return t.setMinutes(0,0,0),i(new Date(t.getTime()+r))},s=()=>e().refine(e=>a(e)!==void 0,`validation.dateTime`);export{a as n,o as r,s as t};
2
- //# sourceMappingURL=dateTimeLocal-DRq7DuYO.js.map
1
+ import{v as e}from"./table-DQ5ILlSh.js";var t=e=>String(e).padStart(2,`0`),n=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/,r=36e5,i=e=>`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}T${t(e.getHours())}:${t(e.getMinutes())}`,a=e=>{let t=n.exec(e);if(!t)return;let[r=0,i=0,a=0,o=0,s=0,c=0]=t.slice(1).map(e=>e===void 0?0:Number(e)),l=new Date(r,i-1,a,o,s,c);return l.getFullYear()===r&&l.getMonth()===i-1&&l.getDate()===a&&l.getHours()===o&&l.getMinutes()===s?l.toISOString():void 0},o=(e=new Date)=>{let t=new Date(e.getTime()+r/2);return t.setMinutes(0,0,0),i(new Date(t.getTime()+r))},s=()=>e().refine(e=>a(e)!==void 0,`validation.dateTime`);export{a as n,o as r,s as t};
2
+ //# sourceMappingURL=dateTimeLocal-IDUOKulz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateTimeLocal-DRq7DuYO.js","names":["z.string","string","pad","value","DATE_TIME_LOCAL","HOUR_MS","toDateTimeLocalValue","date","dateTimeLocalToIso","match","year","month","day","hours","minutes","seconds","part","defaultScheduleValue","next","now","dateTimeLocalField"],"sources":["../../src/features/Publishing/helpers/dateTimeLocal.ts"],"sourcesContent":["import { z } from 'zod';\n\nconst pad = (value: number) => String(value).padStart(2, '0');\n\nconst DATE_TIME_LOCAL = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\nconst HOUR_MS = 60 * 60 * 1000;\n\n/** `YYYY-MM-DDTHH:mm` in the browser's time zone: the value format of `<input type=\"datetime-local\">`. */\nexport const toDateTimeLocalValue = (date: Date): string =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n\n/**\n * The instant a `datetime-local` value means (read in the browser's time zone) as an ISO string for the\n * API, or `undefined` when the value is not a real date and time (e.g. 31 February).\n */\nexport const dateTimeLocalToIso = (value: string): string | undefined => {\n const match = DATE_TIME_LOCAL.exec(value);\n if (!match) {\n return undefined;\n }\n // Seconds are optional in the value; a missing group reads as 0.\n const [year = 0, month = 0, day = 0, hours = 0, minutes = 0, seconds = 0] = match\n .slice(1)\n .map((part) => (part === undefined ? 0 : Number(part)));\n const date = new Date(year, month - 1, day, hours, minutes, seconds);\n const roundTrips =\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n date.getDate() === day &&\n date.getHours() === hours &&\n date.getMinutes() === minutes;\n return roundTrips ? date.toISOString() : undefined;\n};\n\n/** The default time offered for a new schedule: the start of the next hour, at least 30 minutes away. */\nexport const defaultScheduleValue = (now: Date = new Date()): string => {\n const next = new Date(now.getTime() + HOUR_MS / 2);\n next.setMinutes(0, 0, 0);\n return toDateTimeLocalValue(new Date(next.getTime() + HOUR_MS));\n};\n\n/** A form field holding a `datetime-local` value that must be a real date and time. */\nexport const dateTimeLocalField = () =>\n z.string().refine((value) => dateTimeLocalToIso(value) !== undefined, 'validation.dateTime');\n"],"mappings":"wCAEA,IAAME,EAAO,GAAkB,OAAOC,CAAK,CAAC,CAAC,SAAS,EAAG,GAAG,EAEtDC,EAAkB,yDAElBC,EAAU,KAGHC,EAAwB,GACnC,GAAGC,EAAK,YAAY,EAAE,GAAGL,EAAIK,EAAK,SAAS,EAAI,CAAC,EAAE,GAAGL,EAAIK,EAAK,QAAQ,CAAC,EAAE,GAAGL,EAAIK,EAAK,SAAS,CAAC,EAAE,GAAGL,EAAIK,EAAK,WAAW,CAAC,IAM9GC,EAAsB,GAAsC,CACvE,IAAMC,EAAQL,EAAgB,KAAKD,CAAK,EACxC,GAAI,CAACM,EACH,OAGF,GAAM,CAACC,EAAO,EAAGC,EAAQ,EAAGC,EAAM,EAAGC,EAAQ,EAAGC,EAAU,EAAGC,EAAU,GAAKN,EACzE,MAAM,CAAC,CAAC,CACR,IAAK,GAAUO,IAAS,IAAA,GAAY,EAAI,OAAOA,CAAI,CAAE,EAClDT,EAAO,IAAI,KAAKG,EAAMC,EAAQ,EAAGC,EAAKC,EAAOC,EAASC,CAAO,EAOnE,OALER,EAAK,YAAY,IAAMG,GACvBH,EAAK,SAAS,IAAMI,EAAQ,GAC5BJ,EAAK,QAAQ,IAAMK,GACnBL,EAAK,SAAS,IAAMM,GACpBN,EAAK,WAAW,IAAMO,EACJP,EAAK,YAAY,EAAI,IAAA,EAC3C,EAGaU,GAAwB,EAAY,IAAI,OAAmB,CACtE,IAAMC,EAAO,IAAI,KAAKC,EAAI,QAAQ,EAAId,EAAU,CAAC,EAEjD,OADAa,EAAK,WAAW,EAAG,EAAG,CAAC,EAChBZ,EAAqB,IAAI,KAAKY,EAAK,QAAQ,EAAIb,CAAO,CAAC,CAChE,EAGae,MACXpB,EAAS,CAAC,CAAC,OAAQ,GAAUQ,EAAmBL,CAAK,IAAM,IAAA,GAAW,qBAAqB"}
1
+ {"version":3,"file":"dateTimeLocal-IDUOKulz.js","names":["z.string","string","pad","value","DATE_TIME_LOCAL","HOUR_MS","toDateTimeLocalValue","date","dateTimeLocalToIso","match","year","month","day","hours","minutes","seconds","part","defaultScheduleValue","next","now","dateTimeLocalField"],"sources":["../../src/features/Publishing/helpers/dateTimeLocal.ts"],"sourcesContent":["import { z } from 'zod';\n\nconst pad = (value: number) => String(value).padStart(2, '0');\n\nconst DATE_TIME_LOCAL = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\n\nconst HOUR_MS = 60 * 60 * 1000;\n\n/** `YYYY-MM-DDTHH:mm` in the browser's time zone: the value format of `<input type=\"datetime-local\">`. */\nexport const toDateTimeLocalValue = (date: Date): string =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}T${pad(date.getHours())}:${pad(date.getMinutes())}`;\n\n/**\n * The instant a `datetime-local` value means (read in the browser's time zone) as an ISO string for the\n * API, or `undefined` when the value is not a real date and time (e.g. 31 February).\n */\nexport const dateTimeLocalToIso = (value: string): string | undefined => {\n const match = DATE_TIME_LOCAL.exec(value);\n if (!match) {\n return undefined;\n }\n // Seconds are optional in the value; a missing group reads as 0.\n const [year = 0, month = 0, day = 0, hours = 0, minutes = 0, seconds = 0] = match\n .slice(1)\n .map((part) => (part === undefined ? 0 : Number(part)));\n const date = new Date(year, month - 1, day, hours, minutes, seconds);\n const roundTrips =\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n date.getDate() === day &&\n date.getHours() === hours &&\n date.getMinutes() === minutes;\n return roundTrips ? date.toISOString() : undefined;\n};\n\n/** The default time offered for a new schedule: the start of the next hour, at least 30 minutes away. */\nexport const defaultScheduleValue = (now: Date = new Date()): string => {\n const next = new Date(now.getTime() + HOUR_MS / 2);\n next.setMinutes(0, 0, 0);\n return toDateTimeLocalValue(new Date(next.getTime() + HOUR_MS));\n};\n\n/** A form field holding a `datetime-local` value that must be a real date and time. */\nexport const dateTimeLocalField = () =>\n z.string().refine((value) => dateTimeLocalToIso(value) !== undefined, 'validation.dateTime');\n"],"mappings":"wCAEA,IAAME,EAAO,GAAkB,OAAOC,CAAK,CAAC,CAAC,SAAS,EAAG,GAAG,EAEtDC,EAAkB,yDAElBC,EAAU,KAGHC,EAAwB,GACnC,GAAGC,EAAK,YAAY,EAAE,GAAGL,EAAIK,EAAK,SAAS,EAAI,CAAC,EAAE,GAAGL,EAAIK,EAAK,QAAQ,CAAC,EAAE,GAAGL,EAAIK,EAAK,SAAS,CAAC,EAAE,GAAGL,EAAIK,EAAK,WAAW,CAAC,IAM9GC,EAAsB,GAAsC,CACvE,IAAMC,EAAQL,EAAgB,KAAKD,CAAK,EACxC,GAAI,CAACM,EACH,OAGF,GAAM,CAACC,EAAO,EAAGC,EAAQ,EAAGC,EAAM,EAAGC,EAAQ,EAAGC,EAAU,EAAGC,EAAU,GAAKN,EACzE,MAAM,CAAC,CAAC,CACR,IAAK,GAAUO,IAAS,IAAA,GAAY,EAAI,OAAOA,CAAI,CAAE,EAClDT,EAAO,IAAI,KAAKG,EAAMC,EAAQ,EAAGC,EAAKC,EAAOC,EAASC,CAAO,EAOnE,OALER,EAAK,YAAY,IAAMG,GACvBH,EAAK,SAAS,IAAMI,EAAQ,GAC5BJ,EAAK,QAAQ,IAAMK,GACnBL,EAAK,SAAS,IAAMM,GACpBN,EAAK,WAAW,IAAMO,EACJP,EAAK,YAAY,EAAI,IAAA,EAC3C,EAGaU,GAAwB,EAAY,IAAI,OAAmB,CACtE,IAAMC,EAAO,IAAI,KAAKC,EAAI,QAAQ,EAAId,EAAU,CAAC,EAEjD,OADAa,EAAK,WAAW,EAAG,EAAG,CAAC,EAChBZ,EAAqB,IAAI,KAAKY,EAAK,QAAQ,EAAIb,CAAO,CAAC,CAChE,EAGae,MACXpB,EAAS,CAAC,CAAC,OAAQ,GAAUQ,EAAmBL,CAAK,IAAM,IAAA,GAAW,qBAAqB"}
@@ -0,0 +1,11 @@
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-CL1YHRrS.js";import{t as _}from"./useQueries-CYfcxI0Q.js";import{C as v,T as y,et as te,h as ne,u as re,x as b}from"./auth-YVfK3SxF.js";import{A as ie,O as ae,_ as x,a as S,i as C,j as oe,k as se,n as w,o as T,r as ce,t as E,v as D}from"./badge-lJ4Ih_Zn.js";import{a as le,l as ue,n as de,p as fe,s as pe,t as me,u as he}from"./useResolvedScheme-i1EwGHuF.js";import{i as O,n as k,o as ge,t as _e}from"./RowTitle-B-7RptyN.js";import{t as A}from"./fileRoute-CVQpW8cj.js";import{t as ve}from"./UnsavedChangesGuard-BfzHgUkF.js";import{D as ye,K as be,N as xe,U as Se,W as Ce,a as we,c as Te,g as Ee,h as De,i as Oe,l as ke,m as Ae,o as je,q as j,u as Me,x as Ne}from"./src-Be3Ds5Dc.js";import{E as Pe,V as Fe,_ as Ie,a as Le,c as Re,h as ze,i as M,n as N,o as Be,r as Ve,s as He,t as Ue,z as We}from"./tabs-CSqGW9Du.js";import{B as Ge,G as P,H as Ke,R as qe,U as Je,a as Ye,d as Xe,i as Ze,n as Qe,o as $e,t as et}from"./InfoHint-DtaHU1Cg.js";import{i as F,k as tt,n as nt}from"./skeleton-DElTumgk.js";import{u as rt}from"./constants-ahk0YSYl.js";import{r as it,t as at}from"./useSchemaScopeAccess-WQKmj8_3.js";import{t as ot}from"./calendar-clock-VENf4s1R.js";import{a as st,i as ct,n as lt,r as ut,t as dt}from"./select-CpHp3YOH.js";import{t as ft}from"./CursorPager-C6PyD3wE.js";import{n as pt,t as mt}from"./preload-helper-CJNJ4S3k.js";import{a as I,i as ht,n as gt,o as L,r as R,s as _t}from"./ConfirmDialog-HS8Gc2t3.js";import{t as vt}from"./circle-check-jmRQz1Jq.js";import{a as yt,d as bt,f as xt,n as St,r as Ct,t as wt,u as Tt}from"./StepList--0Fiqsq-.js";import{t as Et}from"./clock-DrSTMGjp.js";import{a as Dt,c as Ot,d as kt,i as At,m as jt,n as Mt,o as Nt,p as Pt,r as Ft,t as It}from"./snapshots-DkyyrWX3.js";import{t as Lt}from"./folder-plus-iDg1hhew.js";import{t as Rt}from"./stableId-DlNKh3HM.js";import{t as zt}from"./image-off-cxva5G-Y.js";import{t as Bt}from"./inbox-B8c9Kj_z.js";import{t as Vt}from"./pencil-C7eD5mlZ.js";import{t as Ht}from"./plus-BDZHQBlU.js";import{_ as Ut,a as Wt,c as Gt,d as Kt,f as qt,g as Jt,h as Yt,i as Xt,l as Zt,n as Qt,o as $t,p as en,r as tn,s as nn,t as rn,v as an}from"./changeSets-JmSyu3tu.js";import{D as on,O as sn,b as cn,d as ln,p as un,t as dn}from"./useCursorPager-CzB6NDOB.js";import{t as fn}from"./rotate-ccw-DCWwb4Ga.js";import{t as pn}from"./send-CbP0Rc9_.js";import{t as mn}from"./users-B01EH47o.js";import{n as hn,o as gn,t as _n,u as vn}from"./zod-79xzBIrW.js";import{t as yn}from"./settle-LRKtTN_e.js";import{a as z,g as bn,i as B,n as V,o as H,r as U,s as xn,t as W,v as Sn}from"./table-DQ5ILlSh.js";import{t as Cn}from"./HintedLabel-CVe-PIyv.js";import{r as wn}from"./sites-C6_THCVK.js";import{p as Tn,r as En,s as Dn,t as On}from"./schema-B7L9OJrX.js";import{t as G}from"./QueryView-C630REML.js";import{t as kn}from"./useDebouncedValue-Dqs3wwhn.js";import{r as An}from"./locales-oBD0q1pN.js";import{t as K}from"./Panel-ClY9b33D.js";import{r as jn}from"./schedules-DXrBSypK.js";import{n as Mn,r as Nn,t as Pn}from"./dateTimeLocal-IDUOKulz.js";import{t as Fn}from"./CopyButton-DS-bAA23.js";import{t as In}from"./FormTextareaField-tsS-UXym.js";import{n as Ln,r as Rn,t as zn}from"./SubNavLink-YjjaDN40.js";import{n as Bn,t as Vn}from"./FormSelectField-g4zrUlhv.js";import{t as Hn}from"./tokens-C-20gLAT.js";import{c as Un}from"./users-BgTNDPXx.js";var Wn={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`}]]};Wn.node;var Gn=l(Wn),Kn={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`}]]};Kn.node;var qn=l(Kn),Jn={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`}]]};Jn.node;var Yn=l(Jn),Xn={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`}]]};Xn.node;var Zn=l(Xn),Qn={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`}]]};Qn.node;var $n=l(Qn),er={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`}]]};er.node;var tr=l(er),nr={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`}]]};nr.node;var rr=l(nr),ir={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`}]]};ir.node;var ar=l(ir),or={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`}]]};or.node;var sr=l(or),cr=(e,t)=>e.version===t.version||e.hash===t.hash,lr=(e,t,n)=>t&&e.hash===t.hash?{action:`skip`,reason:`unchangedLocally`}:n?n.hash===e.hash?{action:`skip`,reason:`alreadyApplied`}:t?cr(n,t)?{action:`update`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnBoth`}:{action:`conflict`,reason:`existsOnTarget`}:t?{action:`conflict`,reason:`deletedOnTarget`}:{action:`create`},ur=({local:e,base:t,remote:n,prune:r})=>e?lr(e,t,n):t?n?r?cr(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),dr={silent:!0},fr={openApi:`/api/docs/openapi.json`,typescript:`/api/docs/typescript`,playground:`api/graphql/playground`},pr={openApi:[...i.schema.all,`docs`,`openapi`],typescript:[...i.schema.all,`docs`,`typescript`],playground:[`develop`,`graphqlPlayground`]},mr=()=>r({queryKey:pr.openApi,queryFn:()=>s.request(fr.openApi),meta:dr}),hr=()=>r({queryKey:pr.typescript,queryFn:()=>s.request(fr.typescript),meta:dr}),gr=()=>new URL(fr.playground,g()).href,_r=()=>r({queryKey:pr.playground,queryFn:async()=>(await fetch(gr(),{method:`HEAD`,credentials:`same-origin`})).ok,staleTime:1/0,meta:dr}),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)(Fn,{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})})]}),vr={id:``,locale:``,snapshot:``,fields:``,populate:``,sort:``,page:``,pageSize:``,q:``,filters:[]},yr=[`locale`,`snapshot`,`fields`,`populate`,`sort`,`page`,`pageSize`,`q`],br=e=>`filters${e.replace(/^filters/,``).split(/[[\].]+/).filter(e=>e!==``).map(e=>`[${e}]`).join(``)}`,xr=(e,t)=>{let n=e.path.replace(`{id}`,t.id.trim()?encodeURIComponent(t.id.trim()):`{id}`),r=new URLSearchParams;for(let n of yr){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(br(e.key.trim()),e.value);let i=r.toString();return i?`${n}?${i}`:n},Sr=(e,t)=>!e.byId||t.id.trim()!==``,Cr=`$SHAPIO_TOKEN`,wr=(e,t)=>[`curl '${e.replace(/'/g,`'\\''`)}'`,` -H 'accept: application/json'`].concat(t?[` -H "authorization: Bearer ${Cr}"`]:[]).join(` \\
3
+ `),Tr=(e,t)=>{let n=t?`{
4
+ accept: 'application/json',
5
+ authorization: \`Bearer \${process.env.SHAPIO_TOKEN}\`,
6
+ }`:`{ accept: 'application/json' }`;return`const response = await fetch(${JSON.stringify(e)}, {\n headers: ${n},\n});\nconst { data, meta } = await response.json();\n`},Er=`graphql:`,Dr=e=>{let t={id:`${Er}${e.apiKey}`,name:e.apiKey,modelId:e.id,list:!1};if(e.kind!==`collection`)return[t];let n=Ae(e);return[{id:`${Er}${n}`,name:n,modelId:e.id,list:!0},t]},Or=(e,t,n)=>n.find(n=>n.routeKey===De(e)&&(t.list?n.list:e.kind===`collection`?n.byId:!n.byId)),kr=(e,t,n,r)=>{if(e===`graphql`){let e=r.find(e=>e.id===t),i=e&&n.find(t=>De(t)===e.routeKey);return i&&Dr(i).find(t=>t.list===e.list)?.id}for(let e of n){let n=Dr(e).find(e=>e.id===t);if(n)return Or(e,n,r)?.id}},Ar=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}},jr=e=>e.split(`,`).map(e=>e.trim()).filter(e=>e!==``),Mr=/^-?\d+(\.\d+)?$/,Nr=/^\d+$/,Pr=new Set([`id`,`createdAt`,`updatedAt`]),Fr=new Set([`$eq`,`$ne`,`$in`,`$nin`,`$lt`,`$lte`,`$gt`,`$gte`,`$contains`,`$notContains`,`$containsi`,`$startsWith`,`$endsWith`,`$null`,`$notNull`]),Ir=new Set([`$in`,`$nin`]),Lr=new Set([`$null`,`$notNull`]),Rr=e=>e===`true`||e===`false`,zr=(e,t)=>(e?.type===`number`||e?.type===`integer`)&&Mr.test(t)||e?.type===`boolean`&&Rr(t)?t:JSON.stringify(t),Br=e=>{let[t,n=`$eq`,r,...i]=[...br(e).matchAll(/\[([^\]]*)\]/g)].map(e=>e[1]??``);if(!(!t||t.startsWith(`$`)||!Fr.has(n)||i.length>0)&&(r===void 0||Ir.has(n)&&Nr.test(r)))return{name:t,operator:n}},Vr=(e,{field:t,values:n})=>{if(Lr.has(e)){let e=n.at(-1)??``;return Rr(e)?e:JSON.stringify(e)}return Ir.has(e)?`[${n.map(e=>zr(t,e)).join(`, `)}]`:zr(t,n.at(-1)??``)},Hr=(e,t)=>{let n=new Map(e.fields.filter(e=>!e.deprecated).map(e=>[e.apiKey,e])),r=new Map,i=[];for(let e of t.filters){let t=e.key.trim();if(!t||e.value===``)continue;let a=Br(t),o=a?n.get(a.name):void 0;if(!a||!o&&!Pr.has(a.name)){i.push(br(t));continue}let s=r.get(a.name)??new Map;r.set(a.name,s);let c=Ir.has(a.operator)?jr(e.value):[e.value],l=s.get(a.operator);s.set(a.operator,{field:o,values:l&&Ir.has(a.operator)?[...l.values,...c]:c})}return r.size===0?{argument:void 0,skipped:i}:{argument:`{ ${[...r].map(([e,t])=>`${e}: { ${[...t].map(([e,t])=>`${e.slice(1)}: ${Vr(e,t)}`).join(`, `)} }`).join(`, `)} }`,skipped:i}},Ur=(e,t)=>{let n=t=>Pr.has(t)||e.fields.some(e=>!e.deprecated&&e.apiKey===t),r=jr(t).map(e=>{let[t=``,r=`asc`,i]=e.split(`:`);return i===void 0&&n(t)&&(r===`asc`||r===`desc`)?`{ ${t}: ${r.toUpperCase()} }`:void 0});return r.length>0&&r.every(e=>e!==void 0)?`[${r.join(`, `)}]`:void 0},Wr=(e,t)=>{let n=e.fields.filter(e=>!e.deprecated),r=new Set(jr(t.fields)),i=n.filter(e=>r.has(e.apiKey));return i.length>0?i:n},Gr=(e,t)=>[`id`,...e.map(Ar)].map(e=>`${t}${e}`).join(`
7
+ `),Kr=e=>{let t=[];return e.locale.trim()&&t.push([`locale`,JSON.stringify(e.locale.trim())]),Nr.test(e.snapshot.trim())&&t.push([`snapshot`,e.snapshot.trim()]),t},qr=(e,t,n)=>{let r=[],i=Hr(e,t);if(n.push(...i.skipped),i.argument&&r.push([`filter`,i.argument]),t.sort.trim()){let i=Ur(e,t.sort);i?r.push([`sort`,i]):n.push(`sort`)}t.q.trim()&&r.push([`search`,JSON.stringify(t.q.trim())]);for(let e of[`page`,`pageSize`])Nr.test(t[e].trim())&&r.push([e,t[e].trim()]);return r},Jr=(e,t)=>t.length===0?e:`${e}(${t.map(([e,t])=>`${e}: ${t}`).join(`, `)})`,Yr=(e,t,n)=>{let r=[];n.populate.trim()&&r.push(`populate`);let i=Wr(e,n);if(t.list){let a=[...qr(e,n,r),...Kr(n)];return{query:`query {\n${` ${Jr(t.name,a)} {\n totalCount\n nodes {\n${Gr(i,` `)}\n }\n }`}\n}\n`,skipped:r}}let a=n.id.trim(),o=e.kind===`collection`,s=[...o?[[`id`,a?JSON.stringify(a):`$id`]]:[],...Kr(n)];return{query:`${o&&!a?`query ($id: ID!) {`:`query {`}\n${` ${Jr(t.name,s)} {\n${Gr(i,` `)}\n }`}\n}\n`,skipped:r}},Xr=({selected:e,restOperations:t,draftOf:n})=>{let{t:r}=u(),{definitions:i}=En(),a=(0,q.useMemo)(()=>(i??[]).map(({definition:e})=>e).filter(j).sort((e,t)=>e.label.localeCompare(t.label)).map(e=>({model:e,operations:Dr(e)})),[i]),o=(0,q.useMemo)(()=>a.flatMap(({model:e,operations:t})=>t.map(t=>({model:e,operation:t}))),[a]),s=o.find(t=>t.operation.id===e)??o[0],c=(0,q.useMemo)(()=>{if(!s)return;let e=Or(s.model,s.operation,t);return Yr(s.model,s.operation,n(e?.id))},[s,t,n]);return(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row`,children:[a.length>0?(0,J.jsx)(Ln,{label:r(`develop.api.graphql.operations`),children:a.map(({model:e,operations:t})=>(0,J.jsx)(Rn,{label:e.label,children:t.map(e=>(0,J.jsx)(zn,{to:`/api-explorer`,search:{tab:`graphql`,op:e.id},"aria-current":e.id===s?.operation.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.jsx)(`div`,{className:`min-w-0 flex-1`,children:s&&c?(0,J.jsx)(K,{title:r(`develop.api.graphql.example`,{name:s.operation.name}),description:c.skipped.length>0?r(`develop.api.graphql.skipped`,{params:c.skipped.join(`, `)}):r(`develop.api.graphql.fromRest`),actions:(0,J.jsx)(F,{asChild:!0,variant:`outline`,size:`sm`,children:(0,J.jsxs)(b,{to:`/develop/graphql`,search:{query:c.query},children:[(0,J.jsx)(it,{"aria-hidden":`true`}),r(`develop.api.graphql.openInPlayground`)]})}),children:(0,J.jsx)(Y,{label:r(`develop.api.graphql.query`),code:c.query})}):null})]})},Zr=`/api/content/`,Qr=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}]}),$r=(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)},ei=(e,t)=>e.parameters.some(e=>e.name===t),ti=()=>{let[e,t]=(0,q.useState)({});return{draftOf:(0,q.useCallback)(t=>t&&e[t]||vr,[e]),setDraft:(0,q.useCallback)((e,n)=>{t(t=>({...t,[e]:n}))},[])}},ni=fe(`/app/api-explorer`),ri=(e,t)=>{let n=ni.useNavigate(),{definitions:r}=En();return i=>{let a=kr(i,t,(r??[]).map(({definition:e})=>e).filter(j),e);n({search:{tab:i,...a?{op:a}:{}},replace:!0})}},ii=()=>{let e=re().data?.site;return e&&!e.isPrimary?e.key:void 0},ai=`GET`,oi=({groups:e,selectedId:t})=>{let{t:n}=u();return(0,J.jsx)(Ln,{label:n(`develop.api.endpoints`),children:e.map(e=>(0,J.jsx)(Rn,{label:e.tag,children:e.operations.map(e=>(0,J.jsxs)(zn,{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:ai}),(0,J.jsx)(`span`,{className:`min-w-0 truncate font-mono text-xs`,children:e.path.slice(Zr.length-1)})]},e.id))},e.tag))})},si=e=>new URL(e.replace(/^\//,``),g()).href,ci=e=>{try{return JSON.parse(e)}catch{return e}},li=()=>a({mutationKey:[`develop`,`explorer`,`send`],mutationFn:async({path:e,token:t})=>{let n=si(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:ci(a),text:a}}}),ui=({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)(nt,{"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)(nt,{"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)(F,{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)(ae,{"aria-hidden":`true`})})]},i.id)),(0,J.jsxs)(F,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>t([...e,{id:Rt(),key:``,value:``}]),children:[(0,J.jsx)(Ht,{"aria-hidden":`true`}),n(`develop.api.request.addFilter`)]})]})},di=f()(e=>({token:``,setToken:t=>e({token:t})}));c.subscribe((e,t)=>{t.csrfToken!==void 0&&e.csrfToken===void 0&&di.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)(Cn,{htmlFor:o,label:e,hint:t,hintId:t?s:void 0}),(0,J.jsx)(nt,{id:o,value:n,onChange:e=>r(e.target.value),"aria-describedby":t?s:void 0,className:h(i&&`font-mono`),spellCheck:!1,...a})]})},fi=`__default__`,pi=`GET`,mi=({operation:e,draft:t,onDraftChange:n,path:r,sendable:i,sending:a,onSend:o})=>{let{t:s}=u(),c=(0,q.useId)(),l=An().data??[],d=di(e=>e.token),f=di(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)(E,{variant:`outline`,className:`font-mono`,children:pi}),(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,ei(e,`locale`)?(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(Cn,{htmlFor:c,label:s(`develop.api.request.locale`),hint:s(`develop.api.request.localeHint`)}),(0,J.jsxs)(dt,{value:t.locale||fi,onValueChange:e=>p({locale:e===fi?``:e}),children:[(0,J.jsx)(ct,{id:c,className:`w-full`,children:(0,J.jsx)(st,{})}),(0,J.jsxs)(lt,{children:[(0,J.jsx)(ut,{value:fi,children:s(`develop.api.request.defaultLocale`)}),l.map(e=>(0,J.jsx)(ut,{value:e.code,children:s(`develop.api.request.localeOption`,{label:e.label,code:e.code})},e.code))]})]})]}):null,ei(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)(ui,{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)(F,{type:`submit`,disabled:!i||a,children:[(0,J.jsx)(pn,{"aria-hidden":`true`}),s(a?`develop.api.sending`:`develop.api.send`)]})})]})})},hi=[`title`,`name`,`label`,`heading`,`slug`],gi=e=>typeof e==`object`&&!!e&&!Array.isArray(e),_i=e=>{if(!gi(e)||typeof e.id!=`string`)return[];let t=hi.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}]},vi=e=>gi(e)?Array.isArray(e.data)?e.data.flatMap(_i):_i(e.data):[],yi=({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)(F,{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)(Vt,{"aria-hidden":`true`}),n(`develop.api.response.editEntry`)]})})]},`${e.id}:${e.locale??``}`))})},bi=({response:e,modelKey:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>e?.ok?vi(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)(w,{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)(yi,{entries:r,modelKey:t}):null,(0,J.jsx)(Y,{label:n(`develop.api.response.body`),code:i??``})]}):(0,J.jsx)(T,{size:`panel`,icon:ar,title:n(`develop.api.response.empty`)})})},xi=(e,t)=>({queryKey:i.develop.usage.model(e,t),queryFn:()=>d.usage.fields({modelId:e,days:t}),meta:{silent:!0}}),Si=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)},Ci=(e,t,n=7)=>_({queries:e.map(e=>({...xi(e,n),enabled:t})),combine:e=>{let n=e.flatMap(e=>e.data?[e.data]:[]);return{principals:Si(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()))}}}),wi=e=>r({queryKey:i.develop.usage.model(e,7),queryFn:()=>d.usage.fields({modelId:e,days:7}),meta:{silent:!0}}),Ti={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`},Ei=e=>[e.required&&`required`,e.localized&&`localized`,!e.public&&`private`,e.unique&&`unique`,e.filterable&&`filterable`,e.sortable&&`sortable`].filter(e=>e!==!1),Di=(e,t)=>{let n=e?.fields.find(e=>e.apiKeyPath===t);return n?{reads:n.reads,readers:n.principals}:void 0},Oi=({model:e})=>{let{t}=u(),n=wi(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)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:t(`develop.api.shape.field`)}),(0,J.jsx)(B,{children:t(`develop.api.shape.readers`)})]})}),(0,J.jsx)(V,{children:i.map(e=>{let i=Di(n.data,e.apiKey);return(0,J.jsxs)(H,{children:[(0,J.jsxs)(U,{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`)}),Ei(e).length>0?(0,J.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:Ei(e).map(e=>(0,J.jsx)(E,{variant:`outline`,className:`text-2xs`,children:t(Ti[e])},e))}):null]}),(0,J.jsx)(U,{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)})})]})})},ki=({url:e,withToken:t})=>{let{t:n}=u();return(0,J.jsxs)(Ue,{defaultValue:`curl`,children:[(0,J.jsxs)(Ve,{"aria-label":n(`develop.api.copyAs`),className:`self-start`,children:[(0,J.jsx)(M,{value:`curl`,children:n(`develop.api.curl`)}),(0,J.jsx)(M,{value:`fetch`,children:n(`develop.api.fetch`)})]}),(0,J.jsx)(N,{value:`curl`,children:(0,J.jsx)(Y,{label:n(`develop.api.curlLabel`),code:wr(e,t)})}),(0,J.jsx)(N,{value:`fetch`,children:(0,J.jsx)(Y,{label:n(`develop.api.fetchLabel`),code:Tr(e,t)})})]})},Ai=({groups:e,operation:t,draft:n,onDraftChange:r})=>{let i=di(e=>e.token),a=li(),{definitions:o}=En(),s=(0,q.useMemo)(()=>o?.map(({definition:e})=>e).filter(j).find(e=>De(e)===t.routeKey),[o,t.routeKey]),c=ii(),l=wn(xr(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)(oi,{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)(mi,{operation:t,draft:n,onDraftChange:r,path:l,sendable:Sr(t,n),sending:a.isPending,onSend:()=>a.mutate({operationId:t.id,path:l,token:i})}),(0,J.jsx)(ki,{url:si(l),withToken:i!==``}),(0,J.jsx)(bi,{response:u,modelKey:s?.apiKey})]}),s?(0,J.jsx)(Oi,{model:s}):null]})]})},ji=fe(`/app/api-explorer`),Mi={rest:`develop.api.tabs.rest`,graphql:`develop.graphql.title`},Ni=({document:e})=>{let{t}=u(),{tab:n=`rest`,op:r}=ji.useSearch(),i=(0,q.useMemo)(()=>Qr(e),[e]),a=(0,q.useMemo)(()=>$r(e,i),[e,i]),o=i.find(e=>e.id===r)??a[0]?.operations[0],{draftOf:s,setDraft:c}=ti(),l=ri(i,n===`rest`?o?.id:r);return(0,J.jsxs)(Ue,{value:n,onValueChange:e=>l(e),children:[(0,J.jsx)(C,{title:t(`develop.apiExplorerTitle`),meta:t(`develop.api.meta`,{version:e.info.version,count:i.length}),tabs:(0,J.jsx)(Ve,{variant:`underline`,"aria-label":t(`develop.api.tabs.label`),children:pe.map(e=>(0,J.jsx)(M,{value:e,children:t(Mi[e])},e))})}),(0,J.jsx)(N,{value:`rest`,className:`pt-4`,children:o?(0,J.jsx)(Ai,{groups:a,operation:o,draft:s(o.id),onDraftChange:e=>c(o.id,e)}):(0,J.jsx)(T,{icon:it,title:t(`develop.api.empty`),description:t(`develop.api.emptyDescription`)})}),(0,J.jsx)(N,{value:`graphql`,className:`pt-4`,children:(0,J.jsx)(Xr,{selected:r,restOperations:i,draftOf:s})})]})},Pi=()=>{let e=mr();return(0,J.jsx)(S,{width:`full`,children:(0,J.jsx)(G,{query:e,children:e=>(0,J.jsx)(Ni,{document:e})})})},Fi=bn({title:gn().max(200,`validation.tooLong`),description:Sn().max(5e3,`validation.tooLong`)}),Ii={title:``,description:``},Li=(e,t)=>{let n=$t(),r=vn({resolver:_n(Fi),defaultValues:Ii}),{reset:i}=r;return on(e,i,Ii,n.reset),{form:r,onSubmit:r.handleSubmit(async({title:e,description:r})=>{let a=await yn(n.mutateAsync({title:e.trim(),description:r.trim()}));a.ok&&(i(Ii),t(a.value))}),createChangeSet:n}},Ri=({open:e,onOpenChange:t,onCreated:n})=>{let{t:r}=u(),{form:i,onSubmit:a,createChangeSet:o}=Li(e,n);return(0,J.jsxs)(Bn,{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)(hn,{control:i.control,name:`title`,label:r(`changes.fields.title`),autoComplete:`off`}),(0,J.jsx)(In,{control:i.control,name:`description`,label:r(`changes.fields.description`),rows:3}),(0,J.jsx)(ht,{error:o.error})]})},zi=`changes.manage`,Bi=`changes.ship`,Vi=`tokens.manage`,Hi={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`}},Ui=new Set([`open`,`failed`]),Z=()=>{let e=re().data?.globalPermissions??[];return{canManageChanges:e.includes(zi),canShipChanges:e.includes(Bi),canReadUsage:e.includes(Vi),canManagePublishing:e.includes(`publishing.manage`),canManageWebhooks:e.includes(`webhooks.manage`)}},Wi=({size:e})=>{let{t}=u();return(0,J.jsx)(T,{icon:ie,size:e,title:t(`develop.noAccess`),description:t(`develop.noAccessDescription`)})},Gi={admin:`develop.actors.admin`,token:`develop.actors.token`,system:`develop.actors.system`},Ki=e=>e in Gi,Q=()=>{let{t:e}=u();return t=>t?t.name?t.name:Ki(t.type)?e(Gi[t.type]):t.type:e(`develop.actors.system`)},qi=({set:e,connectionName:t})=>{let{t:n}=u(),r=Q(),i=Hi[e.status],a=e.scheduledFor??e.updatedAt;return(0,J.jsxs)(H,{children:[(0,J.jsxs)(U,{className:`max-w-80`,children:[(0,J.jsx)(_e,{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)(U,{children:(0,J.jsx)(w,{tone:i.tone,label:n(i.labelKey)})}),(0,J.jsx)(U,{className:`text-right tabular-nums`,children:n(`changes.itemCount`,{count:e.entryItemCount+e.schemaItemCount})}),(0,J.jsx)(U,{className:`whitespace-nowrap`,children:r(e.createdBy)}),(0,J.jsxs)(U,{className:`whitespace-nowrap`,title:k(a),children:[e.scheduledFor?n(`changes.scheduledFor`,{at:k(e.scheduledFor)}):O(a),t?(0,J.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:n(`changes.deploysTo`,{name:t})}):null]})]})},Ji=()=>{let{t:e}=u(),t=Wt(),n=cn(),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)(G,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(T,{icon:xt,size:`panel`,title:e(`changes.empty`),description:e(`changes.emptyDescription`)}),children:t=>(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:e(`changes.fields.title`)}),(0,J.jsx)(B,{children:e(`changes.fields.status`)}),(0,J.jsx)(B,{className:`text-right`,children:e(`changes.fields.items`)}),(0,J.jsx)(B,{children:e(`changes.fields.author`)}),(0,J.jsx)(B,{children:e(`changes.fields.when`)})]})}),(0,J.jsx)(V,{children:t.items.map(e=>(0,J.jsx)(qi,{set:e,connectionName:r(e.deploymentConnectionId)},e.id))})]})})})},Yi=()=>{let{t:e}=u(),t=jn({status:`scheduled`,limit:25});return(0,J.jsx)(K,{title:e(`changes.scheduledPublications`),flush:!0,children:(0,J.jsx)(G,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(T,{icon:ot,size:`panel`,title:e(`changes.noScheduledPublications`)}),children:t=>(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:e(`changes.fields.model`)}),(0,J.jsx)(B,{children:e(`changes.fields.entry`)}),(0,J.jsx)(B,{children:e(`changes.fields.locale`)}),(0,J.jsx)(B,{children:e(`changes.fields.action`)}),(0,J.jsx)(B,{children:e(`changes.fields.when`)})]})}),(0,J.jsx)(V,{children:t.items.map(t=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`font-mono text-xs`,children:t.modelKey??e(`common.unknown`)}),(0,J.jsx)(U,{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)(U,{className:`font-mono text-xs`,children:t.locale}),(0,J.jsx)(U,{children:e(un[t.action])}),(0,J.jsx)(U,{className:`whitespace-nowrap`,title:k(t.runAt),children:O(t.runAt)})]},t.id))})]})})})},Xi=e=>{let{t}=u(),n=rn(),r=$t(),i={modelKey:e.modelKey??``,entryId:e.entryId,locale:e.locale,action:`publish`},a=async e=>{let r=await n.mutateAsync({id:e,input:i});P.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()}}},Zi=({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=Wt(`open`),{addTo:d,createAndAdd:f,pending:p,error:m,reset:h}=Xi(e),g=e=>void e().then(()=>o(!1),e=>Ke(e,`adding an entry to a change set`));return(0,J.jsxs)(Qe,{open:a,onOpenChange:e=>{p||(o(e),e&&(h(),c(``)))},modal:!0,children:[(0,J.jsx)(Ye,{asChild:!0,children:(0,J.jsxs)(F,{variant:`outline`,size:`sm`,"aria-label":t,children:[(0,J.jsx)(Lt,{"aria-hidden":`true`}),n(`changes.addTo`)]})}),(0,J.jsxs)(Ze,{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)(F,{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)(nt,{id:i,inputSize:`sm`,value:s,maxLength:200,autoComplete:`off`,onChange:e=>c(e.target.value)}),(0,J.jsx)(x,{size:`sm`,pending:p,pendingLabel:n(`common.saving`),disabled:!s.trim(),children:n(`common.create`)})]})]}),(0,J.jsx)(ht,{error:m})]})]})},Qi={draft:{labelKey:`changes.unassigned.statuses.draft`,tone:`neutral`},modified:{labelKey:`changes.unassigned.statuses.modified`,tone:`warning`}},$i=()=>{let{t:e}=u(),t=Yt();return(0,J.jsx)(K,{title:e(`changes.unassigned.title`),flush:!0,children:(0,J.jsx)(G,{query:t,isEmpty:e=>e.items.length===0,empty:(0,J.jsx)(T,{icon:Bt,size:`panel`,title:e(`changes.unassigned.empty`)}),children:t=>(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:e(`changes.fields.entry`)}),(0,J.jsx)(B,{children:e(`changes.fields.model`)}),(0,J.jsx)(B,{children:e(`changes.fields.locale`)}),(0,J.jsx)(B,{children:e(`changes.fields.status`)}),(0,J.jsx)(B,{children:e(`changes.fields.updated`)}),(0,J.jsx)(B,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:e(`common.actions`)})})]})}),(0,J.jsx)(V,{children:t.items.map(t=>{let n=Qi[t.status],r=t.title??t.entryId;return(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`max-w-72`,children:t.modelKey?(0,J.jsx)(_e,{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)(_e,{className:`block truncate`,children:r})}),(0,J.jsx)(U,{className:`font-mono text-xs`,children:t.modelKey??e(`common.unknown`)}),(0,J.jsx)(U,{className:`font-mono text-xs`,children:t.locale}),(0,J.jsx)(U,{children:(0,J.jsx)(w,{tone:n.tone,label:e(n.labelKey)})}),(0,J.jsx)(U,{className:`whitespace-nowrap`,title:k(t.updatedAt),children:O(t.updatedAt)}),(0,J.jsx)(U,{className:`text-right`,children:(0,J.jsx)(Zi,{entry:t,label:e(`changes.addToLabel`,{title:r})})})]},`${t.entryId}:${t.locale}`)})})]})})})},ea=()=>{let{t:e}=u(),t=y(),{canManageChanges:n}=Z(),[r,i]=(0,q.useState)(!1);return(0,J.jsxs)(S,{children:[(0,J.jsx)(C,{title:e(`changes.title`),actions:n?(0,J.jsxs)(F,{onClick:()=>i(!0),children:[(0,J.jsx)(Ht,{"aria-hidden":`true`}),e(`changes.create`)]}):void 0}),n?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ji,{}),(0,J.jsx)($i,{}),(0,J.jsx)(Yi,{}),(0,J.jsx)(Ri,{open:r,onOpenChange:i,onCreated:e=>{i(!1),t({to:`/changes/$changeSetId`,params:{changeSetId:e.id}})}})]}):(0,J.jsx)(Wi,{})]})},ta=bn({connectionId:gn()}),na=({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=vn({resolver:_n(ta),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)(Qe,{open:o,onOpenChange:t=>e.shipping&&!t?void 0:s(t),modal:!0,children:[(0,J.jsx)(Ye,{asChild:!0,children:(0,J.jsxs)(F,{variant:`outline`,disabled:r,children:[(0,J.jsx)(sn,{"aria-hidden":`true`}),i(`changes.review.shipWithDeploy`)]})}),(0,J.jsx)(Ze,{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)(Vn,{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)(ht,{error:c}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(F,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>s(!1),children:i(`common.cancel`)}),(0,J.jsx)(x,{size:`sm`,pending:e.shipping,pendingLabel:i(`changes.review.shipping`),children:i(`changes.review.shipWithDeploy`)})]})]})})]})},ra=bn({at:Pn()}),ia=({flow:e,disabled:t})=>{let{t:n}=u(),r=(0,q.useId)(),[i,a]=(0,q.useState)(!1),o=(0,q.useMemo)(()=>({at:i?Nn():``}),[i]),s=vn({resolver:_n(ra),defaultValues:o});on(i,s.reset,o,e.resetSchedule);let c=s.handleSubmit(async({at:t})=>{let n=Mn(t);n&&(await yn(e.scheduleAt(n))).ok&&a(!1)});return(0,J.jsxs)(Qe,{open:i,onOpenChange:t=>e.scheduling&&!t?void 0:a(t),modal:!0,children:[(0,J.jsx)(Ye,{asChild:!0,children:(0,J.jsxs)(F,{variant:`outline`,disabled:t,children:[(0,J.jsx)(ot,{"aria-hidden":`true`}),n(`changes.review.schedule`)]})}),(0,J.jsx)(Ze,{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)(hn,{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)(ht,{error:e.scheduleError}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(F,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>a(!1),children:n(`common.cancel`)}),(0,J.jsx)(x,{size:`sm`,pending:e.scheduling,pendingLabel:n(`common.saving`),children:n(`changes.review.schedule`)})]})]})})]})},aa=({set:e,flow:t})=>{let{t:n}=u(),r=y(),i=nn(),a=Jt(),o=cn(),{canShipChanges:s}=Z(),c=(o.data??[]).filter(e=>e.enabled),l=Ui.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)(R,{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:()=>{P.success(n(`changes.review.discarded`)),r({to:`/changes`})}}),trigger:(0,J.jsxs)(F,{variant:`destructive-ghost`,disabled:t.shipping,children:[(0,J.jsx)(qe,{"aria-hidden":`true`}),n(`changes.review.discard`)]})}),e.status===`scheduled`?(0,J.jsxs)(F,{variant:`outline`,disabled:a.isPending,onClick:()=>a.mutate(e.id,{onSuccess:()=>P.success(n(`changes.review.unscheduled`))}),children:[(0,J.jsx)(Gn,{"aria-hidden":`true`}),n(`changes.review.unschedule`)]}):null,l&&s?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ia,{flow:t,disabled:d}),c.length>0?(0,J.jsx)(na,{flow:t,connections:c,currentConnectionId:e.deploymentConnectionId,disabled:d}):null,(0,J.jsx)(R,{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)(F,{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)(pn,{"aria-hidden":`true`}),t.shipping?n(`changes.review.shipping`):n(`changes.review.ship`)]})})]}):null]})},oa={NEW_FIELDS_AFTER_SHIP:`changes.review.notices.newFieldsAfterShip`},sa=e=>e in oa,ca=`font-semibold text-link underline-offset-4 hover:underline`,la=({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)(I,{variant:`success`,role:`status`,children:[(0,J.jsx)(vt,{"aria-hidden":`true`}),(0,J.jsx)(L,{children:(0,J.jsxs)(`p`,{children:[i(`changes.review.shippedIn`),` `,(0,J.jsx)(b,{to:`/snapshots/$seq`,params:{seq:String(e.shippedSnapshot)},className:ca,children:i(`snapshots.version`,{seq:e.shippedSnapshot})})]})})]}):null,e.status===`failed`&&e.error&&!t.stale?(0,J.jsxs)(I,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(_t,{children:i(`changes.review.failedTitle`)}),(0,J.jsx)(L,{children:e.error.message})]}):null,t.stale?(0,J.jsxs)(I,{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)(an,{className:`mt-0.5 size-4 shrink-0`,"aria-hidden":`true`}),(0,J.jsxs)(`div`,{children:[(0,J.jsx)(_t,{children:i(`changes.review.staleTitle`)}),(0,J.jsx)(L,{children:i(`changes.review.staleDescription`)})]})]}),(0,J.jsx)(F,{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)(I,{variant:`warning`,role:`status`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(L,{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:ca,children:i(`changes.tabs.checks`)})]})})]}):null,n.filter(sa).map(e=>(0,J.jsxs)(I,{variant:`info`,role:`status`,children:[(0,J.jsx)(Ge,{"aria-hidden":`true`}),(0,J.jsx)(L,{children:i(oa[e])})]},e))]})},ua=240,da=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>ua?`${t.slice(0,239)}…`:t},fa=({value:e,side:t})=>{let{t:n}=u(),r=da(e);return(0,J.jsx)(U,{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`)})})},pa={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`}},ma=({item:e,onRemove:t})=>{let{t:n}=u(),r=e.title??e.entryId,i=pa[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)(E,{variant:`outline`,className:`font-mono`,children:e.locale}),(0,J.jsx)(E,{variant:`secondary`,children:n(un[e.action])}),(0,J.jsx)(w,{tone:i.tone,label:n(i.labelKey),size:`sm`}),e.modelKey?(0,J.jsx)(F,{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)(R,{tone:`danger`,title:n(`changes.review.removeItemTitle`,{title:r}),description:n(`changes.review.removeItemDescription`),confirmLabel:n(`common.remove`),onConfirm:t,trigger:(0,J.jsx)(F,{variant:`destructive-ghost`,size:`icon-sm`,"aria-label":n(`changes.review.removeItem`,{title:r}),children:(0,J.jsx)(qe,{"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)(W,{"aria-label":n(`changes.review.fieldChangesOf`,{title:r}),children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:n(`changes.review.field`)}),(0,J.jsx)(B,{children:n(`changes.review.before`)}),(0,J.jsx)(B,{children:n(`changes.review.after`)})]})}),(0,J.jsx)(V,{children:e.fields.map(e=>(0,J.jsxs)(H,{children:[(0,J.jsxs)(U,{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)(fa,{value:e.before,side:`before`}),(0,J.jsx)(fa,{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]})},ha=new Set([`requiredField`,`validation`,`constraint`,`index`]),ga=new Set([`metadata`,`editorSwap`]),_a=e=>e.breaking||e.destructive?`breaking`:e.category===`conversion`?`conversion`:ha.has(e.category)?`validation`:ga.has(e.category)?`metadata`:`additive`,va={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`}},ya=new Set([`definition.added`,`field.added`]),ba=new Set([`definition.removed`,`field.removed`]),xa=e=>ya.has(e.kind)?`+`:ba.has(e.kind)?`−`:`~`,Sa=({changeClass:e,size:t})=>{let{t:n}=u(),r=va[e];return(0,J.jsx)(w,{tone:r.tone,label:n(r.labelKey),size:t})},Ca=(e,t)=>{let n=qt(e,t.definitionId),i=r({...On(t.category,t.definitionId),enabled:t.operation!==`create`,retry:!1});return{before:i.data?.definition??null,after:n.data?.definition??null,shared:i.data?i.data.scope===`network`:n.data?.shared??!1}},wa={"+":`text-success`,"−":`text-destructive`,"~":`text-muted-foreground`},Ta={create:`changes.review.operations.create`,update:`changes.review.operations.update`,delete:`changes.review.operations.delete`},Ea=({changeSetId:e,item:t})=>{let{t:n}=u(),{before:r,after:i,shared:a}=Ca(e,t),{multiSite:o}=at(),s=t.plan?.changes??[],c=i?.label??r?.label??t.apiKey;return(0,J.jsxs)(K,{title:c,titleAs:`h3`,flush:!0,actions:(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(E,{variant:`outline`,children:n(Ta[t.operation])}),o&&a?(0,J.jsxs)(E,{variant:`outline`,"data-shared":!0,children:[(0,J.jsx)(rt,{"aria-hidden":`true`}),n(`changes.review.shared`)]}):null,(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)(I,{variant:`warning`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(L,{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,s.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:c}),className:`divide-y text-sm`,children:s.map((e,t)=>{let n=xa(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`,wa[n]),children:n}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1`,children:St(e,r,i)}),(0,J.jsx)(Sa,{changeClass:_a(e),size:`sm`})]},`${e.kind}-${e.fieldId??``}-${e.property??``}-${t}`)})})]})},Da=({review:e,editable:t})=>{let{t:n}=u(),r=Gt(),i=e.changeSet.id;return e.schema.length===0&&e.entries.length===0?(0,J.jsx)(T,{icon:$n,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)(Ea,{changeSetId:i,item:e},e.itemId)),e.entries.map(e=>(0,J.jsx)(ma,{item:e,onRemove:t?()=>r.mutateAsync({id:i,itemId:e.itemId},{onSuccess:()=>P.success(n(`changes.review.itemRemoved`))}):void 0},e.itemId))]})},Oa={error:{labelKey:`develop.health.error`,tone:`danger`},warning:{labelKey:`develop.health.warning`,tone:`warning`}},ka=({severity:e})=>{let{t}=u(),n=Oa[e];return(0,J.jsx)(w,{tone:n.tone,label:t(n.labelKey),size:`sm`})},Aa=200,ja=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})})},Ma=({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}`))}),Na=({changeSetId:e,item:t})=>{let{t:n}=u(),{before:r,after:i}=Ca(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)(I,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(L,{children:(0,J.jsx)(Ma,{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)(et,{about:n(`models.plan.prerequisites`),children:n(`models.plan.prerequisitesHint`)})]}),(0,J.jsx)(wt,{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)(vt,{"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)(wt,{phase:`after`,steps:a.followUps,before:r,after:i})]}):null]})})},Pa={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`},Fa=({review:e,flow:t})=>{let{t:n}=u(),{findings:r}=ja(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)(I,{variant:`destructive`,children:[(0,J.jsx)(se,{"aria-hidden":`true`}),(0,J.jsx)(_t,{children:n(`changes.review.blockingTitle`)}),(0,J.jsx)(L,{children:(0,J.jsx)(Ma,{issues:e.checks.blocking})})]}):null,e.checks.warnings.length>0?(0,J.jsxs)(I,{variant:`warning`,children:[(0,J.jsx)(Ge,{"aria-hidden":`true`}),(0,J.jsx)(_t,{children:n(`changes.review.warningsTitle`)}),(0,J.jsx)(L,{children:(0,J.jsx)(Ma,{issues:e.checks.warnings})})]}):null,e.schema.map(t=>(0,J.jsx)(Na,{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)(vt,{"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)(Ma,{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(Pa[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)(vt,{"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)(ka,{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(Pt[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)($e,{orientation:`horizontal`,children:[(0,J.jsx)(gt,{id:`change-set-ack-breaking`,checked:t.acknowledgedBreaking,onCheckedChange:e=>t.setAcknowledgedBreaking(e===!0)}),(0,J.jsx)(Xe,{htmlFor:`change-set-ack-breaking`,className:`font-normal`,children:n(`models.plan.acknowledgeBreaking`)})]}):null,t.needsDestructive?(0,J.jsxs)($e,{orientation:`horizontal`,children:[(0,J.jsx)(gt,{id:`change-set-ack-destructive`,checked:t.acknowledgedDestructive,onCheckedChange:e=>t.setAcknowledgedDestructive(e===!0)}),(0,J.jsx)(Xe,{htmlFor:`change-set-ack-destructive`,className:`font-normal`,children:n(`models.plan.acknowledgeDestructive`)})]}):null]}):null]})},Ia=()=>{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)},La=({review:e})=>{let{t}=u(),n=Ia(),{multiSite:r}=at(),i=e.consumers.filter(e=>e.consumers.length>0||(e.otherSites?.consumers??0)>0);return i.length===0?(0,J.jsx)(T,{icon:mn,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})}),i.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)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:t(`changes.consumers.reader`)}),r?(0,J.jsx)(B,{children:t(`changes.consumers.site`)}):null,(0,J.jsx)(B,{className:`text-right`,children:t(`changes.consumers.reads`)}),(0,J.jsx)(B,{children:t(`changes.consumers.lastRead`)}),(0,J.jsx)(B,{children:t(`changes.consumers.selection`)})]})}),(0,J.jsxs)(V,{children:[e.consumers.map(e=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`font-semibold`,children:n(e.principalKey,e.label)}),r?(0,J.jsx)(U,{className:`font-mono text-meta text-muted-foreground`,children:e.site.key}):null,(0,J.jsx)(U,{className:`text-right tabular-nums`,children:e.reads.toLocaleString()}),(0,J.jsx)(U,{className:`whitespace-nowrap`,title:k(e.lastReadAt),children:e.lastReadAt?O(e.lastReadAt):t(`common.never`)}),(0,J.jsx)(U,{children:(0,J.jsx)(E,{variant:e.selection===`explicit`?`secondary`:`outline`,children:e.selection===`explicit`?t(`changes.consumers.explicit`):t(`changes.consumers.implicit`)})})]},`${e.site.id}:${e.principalKey}`)),e.otherSites&&e.otherSites.consumers>0?(0,J.jsx)(H,{"data-other-sites":!0,children:(0,J.jsx)(U,{colSpan:r?5:4,className:`text-muted-foreground`,children:t(`changes.consumers.otherSites`,{count:e.otherSites.consumers,reads:e.otherSites.reads.toLocaleString()})})}):null]})]})},`${e.modelId}:${e.fieldId}`))]})},Ra=e=>ne(e,`CHANGE_SET_STALE`)||ne(e,`VERSION_CONFLICT`),za=(e,t)=>{let{t:n}=u(),r=en(),i=Kt(),a=Ut(),[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,ne=y?.destructive??!1,re=(!te||o)&&(!ne||c),b=e.entryItemCount+e.schemaItemCount,ie=(y?.blocking.length??0)>0,ae=Ui.has(e.status)&&v!==void 0&&b>0&&!ie&&!g,x={...te?{acknowledgeBreaking:!0}:{},...ne?{acknowledgeDestructive:!0}:{}},S=async e=>{try{await e()}catch(e){if(Ra(e)){f(!0);return}throw e}};return{needsBreaking:te,needsDestructive:ne,acknowledgedBreaking:o,acknowledgedDestructive:c,setAcknowledgedBreaking:s,setAcknowledgedDestructive:l,acknowledged:re,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`?P.success(n(`changes.review.shipped`,{seq:o.shippedSnapshot??``})):o.status===`shipping`?P.info(n(`changes.review.shippingStarted`)):P.error(n(`changes.review.shipFailed`))}),scheduleAt:t=>S(async()=>{v&&(await i.mutateAsync({id:e.id,input:{at:t,expectedVersion:v.changeSet.version,...x}}),P.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)}}},Ba=({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=Ut();return(0,J.jsxs)(Qe,{open:i,onOpenChange:t=>{c.isPending||(a(t),t&&(s(e.title),c.reset()))},modal:!0,children:[(0,J.jsx)(Ye,{asChild:!0,children:(0,J.jsx)(F,{variant:`ghost`,size:`icon-sm`,"aria-label":t(`changes.review.rename`),children:(0,J.jsx)(Vt,{"aria-hidden":`true`})})}),(0,J.jsx)(Ze,{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}yn(c.mutateAsync({id:e.id,input:{title:r,expectedVersion:e.version}})).then(e=>{e.ok&&(a(!1),P.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)(nt,{id:r,value:o,maxLength:200,autoComplete:`off`,onChange:e=>s(e.target.value)}),(0,J.jsx)(ht,{error:c.error}),(0,J.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,J.jsx)(F,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>a(!1),children:t(`common.cancel`)}),(0,J.jsx)(x,{size:`sm`,pending:c.isPending,pendingLabel:t(`common.saving`),disabled:!o.trim(),children:t(`common.saveChanges`)})]})]})})]})},Va={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`}},Ha=e=>e in Va,Ua=({event:e,last:t})=>{let{t:n}=u(),r=Q(),i=Ha(e.kind)?Va[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)(w,{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:k(e.at),children:O(e.at)})]})]})]})},Wa=({changeSetId:e})=>{let{t}=u(),n=Xt(e);return(0,J.jsx)(G,{query:n,isEmpty:e=>e.length===0,empty:(0,J.jsx)(T,{icon:Fe,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)(Ua,{event:t,last:n===e.length-1},`${t.at}-${t.kind}-${n}`))})})},Ga={changes:`changes.tabs.changes`,checks:`changes.tabs.checks`,consumers:`changes.tabs.consumers`,timeline:`changes.tabs.timeline`},Ka=({set:e})=>{let{t}=u(),n=Q(),r=ge({from:`/app/changes/$changeSetId`}).tab??`changes`,i=y({from:`/changes/$changeSetId`}),a=tn(e.id),o=za(e,a),s=Hi[e.status],c=Ui.has(e.status),l=e.entryItemCount+e.schemaItemCount,d=[t(`changes.review.openedBy`,{name:n(e.createdBy),at:O(e.createdAt)}),t(`changes.itemCount`,{count:l}),e.status===`scheduled`&&e.scheduledFor?t(`changes.scheduledFor`,{at:k(e.scheduledFor)}):``].filter(Boolean).join(` · `);return(0,J.jsx)(S,{children:(0,J.jsxs)(Ue,{value:r,onValueChange:e=>void i({search:{tab:e},replace:!0}),className:`gap-6`,children:[(0,J.jsx)(C,{sticky:!0,breadcrumb:[{label:t(`changes.title`),link:v({to:`/changes`})}],title:e.title,badge:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(w,{tone:s.tone,label:t(s.labelKey)}),c?(0,J.jsx)(Ba,{set:e}):null]}),meta:d,actions:(0,J.jsx)(aa,{set:e,flow:o}),tabs:(0,J.jsx)(Ve,{variant:`underline`,"aria-label":t(`changes.tabs.label`),children:le.map(e=>(0,J.jsx)(M,{value:e,children:t(Ga[e])},e))})}),(0,J.jsx)(la,{set:e,flow:o,notices:a.data?.notices??[],showAcknowledgementHint:c&&r!==`checks`}),(0,J.jsx)(G,{query:a,loadingRows:6,children:e=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(N,{value:`changes`,children:(0,J.jsx)(Da,{review:e,editable:c})}),(0,J.jsx)(N,{value:`checks`,children:(0,J.jsx)(Fa,{review:e,flow:o})}),(0,J.jsx)(N,{value:`consumers`,children:(0,J.jsx)(La,{review:e})})]})}),(0,J.jsx)(N,{value:`timeline`,children:(0,J.jsx)(Wa,{changeSetId:e.id})})]})})},qa=()=>{let{changeSetId:e}=oe({from:`/app/changes/$changeSetId`}),{canManageChanges:t}=Z(),n=Qt(e);return t?(0,J.jsx)(G,{query:n,loadingRows:6,children:e=>(0,J.jsx)(Ka,{set:e})}):(0,J.jsx)(S,{children:(0,J.jsx)(Wi,{})})},Ja=(e,{siteKey:t,query:n,theme:r})=>{let i=new URL(e);return t&&i.searchParams.set(`site`,t),n?.trim()&&i.searchParams.set(`query`,n),i.searchParams.set(`theme`,r),i.href},Ya=e=>{let t=ii(),n=me();return Ja(gr(),{siteKey:t,query:e,theme:n})},Xa=fe(`/app/develop/graphql`),Za=()=>{let{t:e}=u(),{query:t}=Xa.useSearch(),n=Ya(t),r=_r(),i=e(`develop.graphql.title`);return(0,J.jsxs)(S,{width:`full`,children:[(0,J.jsx)(C,{title:i,badge:(0,J.jsx)(et,{about:i,children:e(`develop.graphql.hint`)})}),r.isPending?(0,J.jsx)(D,{rows:6}):r.data?(0,J.jsx)(`iframe`,{title:e(`develop.graphql.frame`),src:n,className:`block h-[calc(100dvh-10.25rem)] min-h-[28rem] w-full rounded-xl border bg-card md:h-[calc(100dvh-12.25rem)] lg:h-[calc(100dvh-9.25rem)]`}):(0,J.jsx)(T,{icon:sr,title:e(`develop.graphql.unavailable`),description:e(`develop.graphql.unavailableDescription`)})]})},Qa={silent:!0},$a=e=>r({queryKey:i.publishing.jobs.list(e),queryFn:()=>d.jobs.list(e),placeholderData:ee,meta:Qa}),eo=()=>r({queryKey:i.publishing.jobs.summary,queryFn:()=>d.jobs.summary(),meta:Qa}),to=()=>{let e=o();return a({mutationKey:[`jobs`,`retry`],mutationFn:e=>m(()=>d.jobs.retry(e)),onSettled:()=>e.invalidateQueries({queryKey:i.publishing.jobs.all})})},no=20,ro=()=>{let{t:e}=u(),t=$a({status:`dead`,limit:no}),n=to(),r=t=>n.mutate(t.id,{onSuccess:()=>P.success(e(`develop.live.jobRetried`,{type:t.type}))});return(0,J.jsx)(G,{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)(F,{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))})})},io=()=>{let{t:e}=u(),t=eo(),[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)(w,{tone:`danger`,label:e(`develop.live.jobsFailed`,{count:i}),size:`sm`}),(0,J.jsx)(F,{variant:`link`,size:`sm`,"aria-expanded":n,onClick:()=>r(e=>!e),children:e(n?`develop.live.hideFailedJobs`:`develop.live.showFailedJobs`)})]}),n?(0,J.jsx)(ro,{}):null]})},ao=()=>{let{t:e}=u(),t=Ot();return(0,J.jsx)(K,{title:e(`develop.live.healthTitle`),children:(0,J.jsx)(G,{query:t,loadingRows:2,children:t=>{let n=new Map(t.rules.map(({rule:e,count:t})=>[e,t])),r=kt.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)(w,{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(Pt[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`)})]})}})})},oo=()=>{let{t:e}=u(),t=ln();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)(w,{tone:`success`,label:e(`develop.live.webhooksEnabled`,{count:n.length}),size:`sm`}),(0,J.jsx)(w,{tone:r>0?`danger`:`muted`,label:e(`develop.live.webhooksFailing`,{count:r}),size:`sm`})]})]})},so=()=>{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)(oo,{})})}):null},co=e=>{let t=Dn(`model`),n=Ci((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)}},lo=({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(`, `)})},uo=()=>{let{t:e}=u(),t=Ia(),n=co(!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)(D,{rows:3}):n.error?(0,J.jsx)(ce,{error:n.error,onRetry:()=>void n.refetch()}):n.principals.length===0?(0,J.jsx)(T,{icon:mn,size:`panel`,title:e(`develop.live.noReaders`,{count:7})}):(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:e(`changes.consumers.reader`)}),(0,J.jsx)(B,{children:e(`develop.live.fields`)}),(0,J.jsx)(B,{className:`text-right`,children:e(`develop.live.requests`)}),(0,J.jsx)(B,{children:e(`changes.consumers.lastRead`)}),(0,J.jsx)(B,{children:e(`develop.live.pinned`)})]})}),(0,J.jsx)(V,{children:n.principals.map(r=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`font-semibold whitespace-nowrap`,children:t(r.principalKey,r.tokenName)}),(0,J.jsx)(U,{className:`max-w-96`,children:(0,J.jsx)(lo,{fields:r.fields,modelKeyOf:n.modelKeyOf})}),(0,J.jsx)(U,{className:`text-right tabular-nums`,children:r.requests.toLocaleString()}),(0,J.jsx)(U,{className:`whitespace-nowrap`,title:k(r.lastReadAt),children:O(r.lastReadAt)}),(0,J.jsx)(U,{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))})]})]})},fo={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`},po={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`}},mo=()=>{let{t:e}=u(),t=Q(),n=Nt(void 0);return(0,J.jsx)(K,{title:e(`develop.live.snapshotTitle`),children:(0,J.jsx)(G,{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)(E,{variant:`secondary`,children:e(fo[r.source])}),(0,J.jsx)(`span`,{title:k(r.createdAt),children:e(`develop.live.since`,{at:O(r.createdAt),name:t({type:r.actor.type})})}),r.schemaVersion===null?null:(0,J.jsx)(`span`,{children:e(`snapshots.schemaVersion`,{version:r.schemaVersion})})]}):null]})}})})},ho=()=>{let{t:e}=u(),{canManageChanges:t,canReadUsage:n,canManagePublishing:r,canManageWebhooks:i}=Z(),a=t||n||r||i;return(0,J.jsxs)(S,{children:[(0,J.jsx)(C,{title:e(`develop.live.title`)}),a?null:(0,J.jsx)(Wi,{}),t?(0,J.jsxs)(`div`,{className:`grid gap-6 lg:grid-cols-2`,children:[(0,J.jsx)(mo,{}),(0,J.jsx)(ao,{})]}):null,n?(0,J.jsx)(uo,{}):null,r?(0,J.jsx)(io,{}):null,(0,J.jsx)(so,{})]})},go={changedOnBoth:`develop.schema.conflicts.reasons.changedOnBoth`,deletedOnTarget:`develop.schema.conflicts.reasons.deletedOnTarget`,existsOnTarget:`develop.schema.conflicts.reasons.existsOnTarget`,changedOnTargetBeforeDelete:`develop.schema.conflicts.reasons.changedOnTargetBeforeDelete`},_o=({label:e,before:t,after:n})=>{let r=Tt(je(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:St(e,t,n)},`${e.kind}:${e.fieldId??``}:${e.property??``}:${r}`))})]})},vo=({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)(I,{variant:`warning`,children:[(0,J.jsx)(Zn,{"aria-hidden":`true`}),(0,J.jsx)(_t,{children:i(`develop.schema.conflicts.title`,{count:e.length})}),(0,J.jsx)(L,{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(go[e.reason]),actions:(0,J.jsx)(Fn,{value:t(e)}),children:[(0,J.jsxs)(`div`,{className:`grid gap-5 md:grid-cols-2`,children:[(0,J.jsx)(_o,{label:i(`develop.schema.conflicts.theirs`),before:a.base.definition,after:s?.definition??null}),(0,J.jsx)(_o,{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)(F,{type:`button`,size:`sm`,variant:`outline`,onClick:()=>r(s),children:i(`develop.schema.conflicts.keepLocal`)}),(0,J.jsx)(R,{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)(F,{type:`button`,size:`sm`,variant:`outline`,children:i(`develop.schema.conflicts.takeRemote`)})})]}):null]},a.definitionId)})]})},yo=`schema`,bo=e=>e.kind===`component`?`component`:`model`,xo=e=>`${yo}/${e.kind===`component`?`components`:`models`}/${e.apiKey}.json`,So={model:0,component:1},Co=e=>e.definitions.map(({definition:e,version:t,hash:n})=>({path:xo(e),definitionId:e.id,category:bo(e),apiKey:e.apiKey,base:{version:t,hash:n,definition:e,text:Te(e)}})).sort((e,t)=>So[e.category]-So[t.category]||e.path.localeCompare(t.path)),$=Oe,wo=e=>({formatVersion:2,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}]))}),To=e=>we(wo(e)),Eo=({path:e,dirty:t,open:n,icon:r})=>{let{t:i}=u(),a=e.slice(e.lastIndexOf(`/`)+1);return(0,J.jsxs)(zn,{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]})},Do=({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)(Ln,{label:r(`develop.schema.files`),children:[i.length>0?(0,J.jsx)(Rn,{label:r(`develop.schema.modelsDir`),children:i.map(e=>(0,J.jsx)(Eo,{path:e.path,dirty:n(e),open:e.path===t,icon:it},e.definitionId))}):null,a.length>0?(0,J.jsx)(Rn,{label:r(`develop.schema.componentsDir`),children:a.map(e=>(0,J.jsx)(Eo,{path:e.path,dirty:n(e),open:e.path===t,icon:rr},e.definitionId))}):null,(0,J.jsx)(Rn,{label:r(`develop.schema.lockDir`),children:(0,J.jsx)(Eo,{path:$,dirty:!1,open:t===$,icon:ie})})]})},Oo={silent:!0},ko=`/api/admin/schema/export`,Ao=[...i.schema.all,`export`],jo=te({queryKey:Ao,queryFn:()=>s.request(ko),staleTime:0,meta:Oo}),Mo=()=>r({...jo,refetchOnWindowFocus:!1}),No=e=>{try{return{ok:!0,raw:JSON.parse(e)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}},Po=(e,{previous:t,others:n})=>{let r=No(e);if(!r.ok)return{status:`invalidJson`,message:r.message};let i=Me(r.raw,{createId:Rt,...t?{previous:t}:{}});if(!i.ok)return{status:`invalid`,raw:r.raw,issues:i.issues};let{definition:a}=i,o=ke([...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}},Fo=e=>e.status===`invalid`?e.issues:[],Io=(e,t)=>({definitionId:e.file.definitionId,category:e.file.category,definition:e.local.definition,baseVersion:t.action===`update`?t.expectedVersion:null}),Lo=(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=ur({local:{definition:t.local.definition,hash:Te(t.local.definition)},base:{version:t.file.base.version,hash:t.file.base.text},remote:e?{version:e.version,hash:Te(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(Io(t,o));break;default:a+=1}}return r.length>0?{status:`conflict`,conflicts:r}:{status:`ready`,drafts:i,skipped:a}},Ro=e=>{let t=[];for(let n of e.dirtyFiles){let r=Po(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}},zo=({onInvalid:e,onConflict:t,onApplied:n})=>{let{t:r}=u(),i=o(),a=Zt(),[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=Ro(a);if(`invalid`in o){P.error(r(`develop.schema.apply.invalid`,{path:o.invalid.path})),e(o.invalid);return}let s=await i.fetchQuery(jo),c=Lo(o.items,s);if(c.status===`conflict`){t(c.conflicts);return}if(c.drafts.length===0){P.info(r(`develop.schema.apply.nothing`));return}n(await l(c.drafts))}catch(e){Je(e,`apply schema files`)}finally{c(!1)}},pending:s}},Bo=(e,t)=>({...e,definitions:e.definitions.map(e=>e.definition.id===t.definition.id?t:e)}),Vo=()=>{let e=Mo(),[t,n]=(0,q.useState)(),[r,i]=(0,q.useState)({}),a=t??e.data,o=(0,q.useMemo)(()=>a?Co(a):[],[a]),s=(0,q.useMemo)(()=>a?To(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&&Bo(t,e)),i(({[e.definition.id]:t,...n})=>n)},[]),p=(0,q.useCallback)(e=>{n(t=>t&&Bo(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])}},Ho=(0,q.lazy)(()=>mt(()=>import(`./View-BLsQYPow.js`).then(e=>({default:e.View})),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),Uo=({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)(D,{rows:8,className:`p-4`}),children:(0,J.jsx)(Ho,{...t})})}),Wo=()=>[],Go=({text:e})=>{let{t}=u();return(0,J.jsx)(K,{title:$,description:t(`develop.schema.lockDescription`),flush:!0,children:(0,J.jsx)(Uo,{className:`h-[28rem] rounded-none border-0 xl:h-[40rem]`,value:e,onChange:Wo,label:t(`develop.schema.editorLabel`,{path:$}),readOnly:!0,schema:void 0,lint:Wo})})},Ko=e=>JSON.parse(JSON.stringify(e)),qo=e=>{let t=e.properties?.fields?.items;return t&&!Array.isArray(t)&&(t.allOf=Object.entries(xe).map(([e,t])=>({if:{properties:{type:{const:e}},required:[`type`]},then:{properties:{settings:Ko(t)}}}))),e},Jo={model:qo(Ko(Ce)),component:qo(Ko(Se))},Yo=e=>Jo[e],Xo=300,Zo=(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=kn(t,Xo);return{analysis:(0,q.useMemo)(()=>r?Po(i,r):void 0,[r,i]),lint:(0,q.useCallback)(e=>r?Fo(Po(e,r)):[],[r])}},Qo=({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}`))})]})},$o=e=>{let t=Ne(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)},es=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}:{}}}),ts=()=>Promise.resolve(null),ns=({definition:e,definitions:t})=>{let{t:n}=u(),r=Re(),i=(0,q.useMemo)(()=>j(e)?e:es(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(j).map(e=>[e.id,e])),components:new Map(n.filter(be).map(e=>[e.id,e])),locale:null,entryId:null,readOnly:!0,disabled:!1,runtimeEditors:r.editors,pickMedia:ts}},[e,t,i,r.editors]),o=(0,q.useMemo)(()=>ze(Pe(i.fields)),[i]);if(r.isLoading)return(0,J.jsx)(D,{rows:4});let s=$o(i);return s.length===0?(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:n(`develop.schema.preview.noFields`)}):(0,J.jsx)(We,{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)(Ie,{fields:e.fields})]},e.id))})})},rs=({definition:e,lookup:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>Le(e,t),[e,t]);return(0,J.jsx)(Y,{label:n(`develop.schema.preview.sdl`),code:r})},is=({before:e,after:t})=>{let{t:n}=u(),r=(0,q.useMemo)(()=>Tt(je(e,t),{before:e,after:t}),[e,t]);if(r.length===0)return(0,J.jsx)(T,{size:`panel`,icon:vt,title:n(`develop.schema.plan.none`)});let i=bt(r);return(0,J.jsxs)(`div`,{className:`space-y-5`,children:[i.breaking||i.destructive?(0,J.jsx)(I,{variant:`warning`,children:(0,J.jsx)(L,{children:i.destructive?n(`develop.schema.plan.destructive`):n(`develop.schema.plan.breaking`)})}):null,i.supported?null:(0,J.jsx)(I,{variant:`destructive`,children:(0,J.jsx)(L,{children:n(`develop.schema.plan.unsupported`)})}),yt(r).map(n=>(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(Ct,{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:St(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`)})]})},as=({definition:e,lookup:t})=>{let{t:n}=u(),r=Be(e),i=(0,q.useMemo)(()=>He(e,t),[e,t]);return(0,J.jsxs)(`div`,{className:`space-y-5`,children:[j(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)(E,{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)(E,{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:j(e)?n(`develop.schema.preview.responseSample`):n(`develop.schema.preview.componentSample`),code:i})]})},os=(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)},ss=(e,t)=>{let n=Ee(t);return[os(e,n),os(e,`${n}Input`)].filter(e=>e!==void 0).join(`
10
+ `)},cs=({apiKey:e,edited:t})=>{let{t:n}=u(),r=hr();return(0,J.jsx)(G,{query:r,children:({source:r,schemaVersion:i})=>{let a=ss(r,e);return(0,J.jsxs)(`div`,{className:`space-y-4`,children:[t?(0,J.jsx)(I,{variant:`info`,children:(0,J.jsx)(L,{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)(T,{size:`panel`,icon:qn,title:n(`develop.schema.preview.noTypes`)})]})}})},ls=[`form`,`rest`,`graphql`,`types`,`plan`],us={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`},ds=({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)(T,{size:`panel`,icon:jt,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)(Ue,{value:a,onValueChange:e=>o(e),children:[(0,J.jsx)(Ve,{variant:`underline`,className:`w-full justify-start overflow-x-auto`,children:ls.map(e=>(0,J.jsx)(M,{value:e,children:i(us[e])},e))}),(0,J.jsx)(N,{value:`form`,className:`pt-4`,children:s?(0,J.jsx)(ns,{definition:s,definitions:r}):l}),(0,J.jsx)(N,{value:`rest`,className:`pt-4`,children:s?(0,J.jsx)(as,{definition:s,lookup:c}):l}),(0,J.jsx)(N,{value:`graphql`,className:`pt-4`,children:s?(0,J.jsx)(rs,{definition:s,lookup:c}):l}),(0,J.jsx)(N,{value:`types`,className:`pt-4`,children:(0,J.jsx)(cs,{apiKey:e.apiKey,edited:n})}),(0,J.jsx)(N,{value:`plan`,className:`pt-4`,children:s?(0,J.jsx)(is,{before:e.base.definition,after:s}):l})]})})},fs=({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}=Zo(e,c,s),p=(0,q.useCallback)(t=>i(e,t),[i,e]),m=d?Fo(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)(w,{tone:`warning`,label:n(`develop.schema.modified`),size:`sm`}),(0,J.jsx)(R,{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)(F,{type:`button`,size:`sm`,variant:`ghost`,children:n(`develop.schema.revert`)})})]}):null,children:[(0,J.jsx)(Uo,{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:Yo(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)(Qo,{id:r,issues:m})}):null]}),(0,J.jsx)(ds,{file:e,analysis:d,edited:l,definitions:s})]})},ps=fe(`/app/schema`),ms=({currentPath:e,nextPath:t})=>e!==t,hs=()=>{let{t:e}=u(),{query:t,workspace:n}=Vo();return(0,J.jsx)(S,{width:`full`,children:(0,J.jsx)(G,{query:t,children:()=>n?(0,J.jsx)(gs,{workspace:n}):(0,J.jsx)(T,{icon:ue,title:e(`develop.schemaTitle`)})})})},gs=({workspace:e})=>{let{t}=u(),n=y(),{file:r}=ps.useSearch(),i=Tn().data,[a,o]=(0,q.useState)([]),[s,c]=(0,q.useState)(),{files:l,dirtyFiles:d}=e,f=d.length>0&&s===void 0,p=zo({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)(F,{type:`button`,variant:`outline`,disabled:p.pending,children:[(0,J.jsx)(an,{"aria-hidden":`true`}),t(`develop.schema.reload`)]});return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(C,{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)(R,{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)(F,{type:`button`,variant:`outline`,disabled:p.pending,onClick:()=>{o([]),e.reload()},children:[(0,J.jsx)(an,{"aria-hidden":`true`}),t(`develop.schema.reload`)]}),(0,J.jsx)(F,{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)(I,{variant:`info`,role:`status`,children:(0,J.jsx)(L,{children:t(`develop.schema.moved`,{loaded:e.schemaVersion,live:i})})}):null,a.length>0?(0,J.jsx)(vo,{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)(Do,{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)(fs,{file:m,workspace:e},m.definitionId)})]}),(0,J.jsx)(ve,{when:f,shouldBlock:ms})]})},_s=()=>{let{canReadUsage:e}=Z(),t=Ia(),n=Dn(`model`),{principals:r}=Ci((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)??[]}},vs=({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=Hn(),f=ii(),p=(d.data??[]).filter(e=>e.revokedAt===null),m=p.find(e=>e.id===c)??p[0],h=wn(`api/content/<model>?snapshot=${e}`,f),ee=`curl -H "Authorization: Bearer ${m?`${m.tokenPrefix}…`:`<token>`}" "${g()}${h}"`;return(0,J.jsxs)(Qe,{open:o,onOpenChange:s,modal:!0,children:[(0,J.jsx)(Ye,{asChild:!0,children:(0,J.jsxs)(F,{variant:n,size:`sm`,"aria-label":t?void 0:r(`snapshots.pinLabel`,{seq:e}),children:[(0,J.jsx)(tr,{"aria-hidden":`true`}),t??r(`snapshots.pin`)]})}),(0,J.jsxs)(Ze,{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)(dt,{value:m?.id,onValueChange:l,children:[(0,J.jsx)(ct,{id:a,size:`sm`,className:`w-full`,children:(0,J.jsx)(st,{})}),(0,J.jsx)(lt,{children:p.map(e=>(0,J.jsx)(ut,{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)(Fn,{value:ee})})]})]})},ys=({seq:e,size:t=`sm`,label:n})=>{let{t:r}=u(),i=y(),a=Mt();return(0,J.jsx)(R,{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)(F,{variant:`outline`,size:t,"aria-label":n?void 0:r(`snapshots.restoreLabel`,{seq:e}),children:[(0,J.jsx)(fn,{"aria-hidden":`true`}),n??r(`snapshots.restore`)]})})},bs=({snapshots:e,current:t,pinnedBy:n,showPins:r})=>{let{t:i}=u(),a=Q(),o=i(`common.none`);return(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:i(`snapshots.fields.version`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.when`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.source`)}),(0,J.jsx)(B,{className:`text-right`,children:i(`snapshots.fields.entries`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.schema`)}),r?(0,J.jsx)(B,{children:i(`snapshots.fields.pinnedBy`)}):null,(0,J.jsx)(B,{children:i(`snapshots.fields.deploy`)}),(0,J.jsx)(B,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:i(`common.actions`)})})]})}),(0,J.jsx)(V,{children:e.map(e=>{let s=n(e.seq),c=e.deploymentRuns.at(-1),l=c?po[c.status]:void 0;return(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`whitespace-nowrap`,children:(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(_e,{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)(w,{tone:`success`,label:i(`snapshots.live`),size:`sm`}):null]})}),(0,J.jsxs)(U,{className:`whitespace-nowrap`,title:k(e.createdAt),children:[O(e.createdAt),(0,J.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:a({type:e.actor.type})})]}),(0,J.jsxs)(U,{className:`max-w-64`,children:[(0,J.jsx)(E,{variant:`secondary`,children:i(fo[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)(U,{className:`text-right tabular-nums`,children:e.changedEntries}),(0,J.jsx)(U,{className:`whitespace-nowrap tabular-nums`,children:e.schemaVersion===null?o:i(`snapshots.schemaVersion`,{version:e.schemaVersion})}),r?(0,J.jsx)(U,{className:`max-w-48`,children:s.length>0?(0,J.jsx)(`span`,{className:`block truncate`,children:s.join(`, `)}):o}):null,(0,J.jsx)(U,{children:c&&l?(0,J.jsx)(b,{to:`/publishing/deployments/runs/$runId`,params:{runId:c.id},className:`rounded-full`,children:(0,J.jsx)(w,{tone:l.tone,label:i(l.labelKey),size:`sm`})}):o}),(0,J.jsx)(U,{className:`text-right`,children:(0,J.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[e.seq===t?null:(0,J.jsx)(F,{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)(Yn,{"aria-hidden":`true`}),i(`snapshots.compare`)]})}),(0,J.jsx)(vs,{seq:e.seq}),e.seq===t?null:(0,J.jsx)(ys,{seq:e.seq})]})})]},e.seq)})})]})},xs=()=>{let{t:e}=u(),{canManageChanges:t}=Z(),{cursor:n}=ge({from:`/app/snapshots`}),r=y({from:`/snapshots`}),{pagerProps:i}=dn(n,e=>void r({search:{cursor:e}})),a=Nt(n),{canReadUsage:o,pinnedBy:s}=_s();return t?(0,J.jsxs)(S,{width:`full`,children:[(0,J.jsx)(C,{title:e(`snapshots.title`),meta:a.data?e(`snapshots.current`,{seq:a.data.current}):void 0}),(0,J.jsx)(G,{query:a,loadingRows:6,isEmpty:e=>e.items.length===0&&n===void 0,empty:(0,J.jsx)(T,{icon:he,title:e(`snapshots.empty`)}),children:e=>(0,J.jsx)(xn,{footer:(0,J.jsx)(ft,{...i(e.nextCursor)}),children:(0,J.jsx)(bs,{snapshots:e.items,current:e.current,pinnedBy:s,showPins:o})})})]}):(0,J.jsxs)(S,{width:`full`,children:[(0,J.jsx)(C,{title:e(`snapshots.title`)}),(0,J.jsx)(Wi,{})]})},Ss=({seq:e,row:t,previous:n,changedCount:r})=>{let{t:i}=u(),a=Q(),o=Un(),s=t?.actor.type===`admin`?o.data?.find(e=>e.id===t.actor.id)?.name:void 0,c=[i(`snapshots.version`,{seq:e}),t?k(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(` · `)})},Cs=(e,t)=>{let n=ye(e),r=Ne(e).cover;return{modelId:e.id,modelKey:e.apiKey,routeKey:De(e),label:e.label,singleton:e.kind===`singleton`,titleKey:n?.apiKey??null,coverKey:r?.apiKey??null,locales:t}},ws=()=>{let e=Dn(`model`),t=An();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`?[]:[Cs(e,e.localized?n:[r])])},[e.data,t.data]),error:e.error??t.error}},Ts=(e,t)=>t?e.length>0&&e.every(e=>e===`published`)?`added`:e.length>0?`changed`:`unchanged`:`removed`,Es=(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=Ts(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]},Ds=(e,t=60)=>e<=t?1:Math.ceil(e/t),Os=10,ks=({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=Ds(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*Os))},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)})]})},As=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},js=(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?As(t[e.coverKey]):null}},Ms=(e,t)=>t.flatMap(t=>t.locales.map(n=>({place:t,locale:n,seq:e}))),Ns=(e,t,n,r)=>{let i=o(),a=Ms(e,r),s=At(t??0,e,t!==void 0),c=_({queries:a.map(({place:t,locale:n})=>It(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 Ms(e,r))i.prefetchQuery(It(e,t.place,t.locale))},[n,r,i]);let l=s.data?.items??[];return{states:r.map(e=>({place:e,cards:Es(a.flatMap((t,n)=>t.place===e?(c.data[n]??[]).map(t=>js(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()])}},Ps={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`}},Fs={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`},Is=({card:e,onOpen:t})=>{let{t:n}=u(),r=Ps[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`,Fs[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)(zt,{"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)(w,{tone:r.tone,label:n(r.labelKey),size:`sm`,live:!1}),e.locales.map(e=>(0,J.jsx)(E,{variant:`outline`,className:`font-mono`,children:e},e))]}),(0,J.jsxs)(F,{variant:`ghost`,size:`sm`,className:`mt-auto self-start`,"aria-label":n(`snapshots.timeline.openVersionOf`,{title:i}),onClick:()=>t(e),children:[(0,J.jsx)(Fe,{"aria-hidden":`true`}),n(`snapshots.timeline.openVersion`)]})]})]})},Ls=new Set([`publish`,`restore`]),Rs=(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=>Ls.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){Ke(e,`opening an entry version from the timeline`),P.error(tt(e))}}},zs=({state:e,seq:t,snapshotCreatedAt:n})=>{let{t:r}=u(),i=Rs(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)(Is,{card:e,onOpen:e=>void i(e)},e.mark===`unchanged`?e.id:`${e.id}:${t}`))})]})},Bs=({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=Ns(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)(D,{rows:4}):l.states.length===0?(0,J.jsx)(T,{icon:Et,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)(zs,{state:t,seq:e,snapshotCreatedAt:i},t.place.modelId))})},Vs=150,Hs=({at:e,onAtChange:t})=>{let{t:n}=u(),r=Dt(),{places:i,error:a}=ws(),[o,s]=(0,q.useState)(e),c=kn(o,Vs),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=At(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)(D,{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)(Ss,{seq:o,row:m,previous:d(o),changedCount:o===c?p.data?.items.length:void 0}),(0,J.jsx)(ks,{seqs:l,value:o,onChange:s}),(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o===g?null:(0,J.jsx)(ys,{seq:o,size:`default`,label:n(`snapshots.timeline.restoreHere`)}),(0,J.jsx)(vs,{seq:o,variant:`outline`,label:n(`snapshots.timeline.pinHere`)})]})]})}),(0,J.jsx)(Bs,{seq:c,seqs:l,previous:f,places:i,createdAt:h?.createdAt})]})},Us={published:{labelKey:`snapshots.changes.published`,tone:`success`},updated:{labelKey:`snapshots.changes.updated`,tone:`warning`},unpublished:{labelKey:`snapshots.changes.unpublished`,tone:`muted`}},Ws=({page:e})=>{let{t}=u(),{schemaVersions:n}=e,r=n.from!==n.to;return(0,J.jsx)(xn,{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)(T,{icon:pt,size:`panel`,title:t(`snapshots.noChanges`)}):(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:t(`changes.fields.entry`)}),(0,J.jsx)(B,{children:t(`changes.fields.model`)}),(0,J.jsx)(B,{children:t(`snapshots.fields.locales`)})]})}),(0,J.jsx)(V,{children:e.items.map(e=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`max-w-72`,children:(0,J.jsx)(_e,{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)(U,{className:`font-mono text-xs`,children:e.modelKey}),(0,J.jsx)(U,{children:(0,J.jsx)(`ul`,{className:`flex flex-wrap gap-1.5`,children:e.locales.map(e=>{let n=Us[e.change];return(0,J.jsx)(`li`,{children:(0,J.jsx)(w,{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`},Ks=({snapshot:e})=>{let{t}=u(),n=Q(),r=ge({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=Nt(void 0).data?.current,l=At(s,e.seq,a===`diff`),d=[k(e.createdAt),n({type:e.actor.type}),e.schemaVersion===null?``:t(`snapshots.schemaVersion`,{version:e.schemaVersion})].filter(Boolean).join(` · `);return(0,J.jsx)(S,{children:(0,J.jsxs)(Ue,{value:a,onValueChange:e=>void i({search:t=>({...t,tab:e}),replace:!0}),className:`gap-6`,children:[(0,J.jsx)(C,{breadcrumb:[{label:t(`snapshots.title`),link:v({to:`/snapshots`})}],title:t(`snapshots.version`,{seq:e.seq}),badge:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(E,{variant:`secondary`,children:t(fo[e.source])}),e.seq===c?(0,J.jsx)(w,{tone:`success`,label:t(`snapshots.live`)}):null]}),meta:d,actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(vs,{seq:e.seq}),c!==void 0&&e.seq!==c?(0,J.jsx)(ys,{seq:e.seq,size:`default`}):null]}),tabs:(0,J.jsx)(Ve,{variant:`underline`,"aria-label":t(`snapshots.tabs.label`),children:de.map(e=>(0,J.jsx)(M,{value:e,children:t(Gs[e])},e))})}),(0,J.jsx)(N,{value:`diff`,children:(0,J.jsx)(G,{query:l,loadingRows:4,children:e=>(0,J.jsx)(Ws,{page:e})})}),(0,J.jsx)(N,{value:`timeline`,children:(0,J.jsx)(Hs,{at:r.at??e.seq,onAtChange:o})})]})})},qs={changes:A(`/app/changes`)({component:ea}),changeSet:A(`/app/changes/$changeSetId`)({component:qa}),snapshots:A(`/app/snapshots`)({component:xs}),snapshot:A(`/app/snapshots/$seq`)({component:()=>{let{seq:e}=oe({from:`/app/snapshots/$seq`}),{canManageChanges:t}=Z(),n=Ft(Number(e));return t?(0,J.jsx)(G,{query:n,loadingRows:6,children:e=>(0,J.jsx)(Ks,{snapshot:e})}):(0,J.jsx)(S,{children:(0,J.jsx)(Wi,{})})}}),live:A(`/app/live`)({component:ho}),schema:A(`/app/schema`)({component:hs}),apiExplorer:A(`/app/api-explorer`)({component:Pi}),graphql:A(`/app/develop/graphql`)({component:Za})};export{qs as developLazyRoutes};
11
+ //# sourceMappingURL=develop-DYwiTd6R.js.map