@shapio/cms 0.5.5 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/dist/admin/assets/{AssetTile-CaYPqR_F.js → AssetTile-H0hABhB2.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-CaYPqR_F.js.map → AssetTile-H0hABhB2.js.map} +1 -1
  3. package/dist/admin/assets/AssistError-1s3PuY0X.js +2 -0
  4. package/dist/admin/assets/{AssistError-drmpXSbS.js.map → AssistError-1s3PuY0X.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js → BlockMenuItems-a8zXdfcF.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js.map → BlockMenuItems-a8zXdfcF.js.map} +1 -1
  7. package/dist/admin/assets/Body-BzZD-TZT.js +2 -0
  8. package/dist/admin/assets/{Body-Gn_z2KPN.js.map → Body-BzZD-TZT.js.map} +1 -1
  9. package/dist/admin/assets/Builder-60jO_nbS.js +2 -0
  10. package/dist/admin/assets/Builder-60jO_nbS.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CzRU6och.js → CodeEditor-BLbJZE9v.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CzRU6och.js.map → CodeEditor-BLbJZE9v.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-h4HYhnYp.js → CopyButton-BOtR_h1H.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-h4HYhnYp.js.map → CopyButton-BOtR_h1H.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-H4SpVYw7.js → CursorPager-DwLW13ov.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-H4SpVYw7.js.map → CursorPager-DwLW13ov.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-BNq7nAYL.js → ExternalLink-BITMgS1K.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-BNq7nAYL.js.map → ExternalLink-BITMgS1K.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js → FocalPoint-n-a_AXKN.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js.map → FocalPoint-n-a_AXKN.js.map} +1 -1
  21. package/dist/admin/assets/Form-D_4fhOy0.js +2 -0
  22. package/dist/admin/assets/Form-D_4fhOy0.js.map +1 -0
  23. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js → FormCheckboxGroup-1fYisXrr.js} +2 -2
  24. package/dist/admin/assets/FormCheckboxGroup-1fYisXrr.js.map +1 -0
  25. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js → FormRadioGroup-B0VZyb1t.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js.map → FormRadioGroup-B0VZyb1t.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js → FormSelectField-Br8bkwRF.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js.map → FormSelectField-Br8bkwRF.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js → FormSwitchField-d8G-YCSX.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js.map → FormSwitchField-d8G-YCSX.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js → FormTextareaField-BSKNeTPW.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js.map → FormTextareaField-BSKNeTPW.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js → HintedLabel-CiTDE112.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js.map → HintedLabel-CiTDE112.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-bYMd_t0J.js → InfoHint-B3XcXtiN.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-bYMd_t0J.js.map → InfoHint-B3XcXtiN.js.map} +1 -1
  37. package/dist/admin/assets/InlineConfirm-BfsNH5S_.js +2 -0
  38. package/dist/admin/assets/InlineConfirm-BfsNH5S_.js.map +1 -0
  39. package/dist/admin/assets/InsertMenuItem-BGwDW_Lu.js +2 -0
  40. package/dist/admin/assets/InsertMenuItem-BGwDW_Lu.js.map +1 -0
  41. package/dist/admin/assets/{LinkTabs-ByB2eCIr.js → LinkTabs-8SmS1vCd.js} +2 -2
  42. package/dist/admin/assets/{LinkTabs-ByB2eCIr.js.map → LinkTabs-8SmS1vCd.js.map} +1 -1
  43. package/dist/admin/assets/{Match-GDx_orOH.js → Match-Dc8bXsKo.js} +2 -2
  44. package/dist/admin/assets/{Match-GDx_orOH.js.map → Match-Dc8bXsKo.js.map} +1 -1
  45. package/dist/admin/assets/NoAccess-CKEKPmqD.js +2 -0
  46. package/dist/admin/assets/NoAccess-CKEKPmqD.js.map +1 -0
  47. package/dist/admin/assets/Panel-Bcl09TtM.js +2 -0
  48. package/dist/admin/assets/Panel-Bcl09TtM.js.map +1 -0
  49. package/dist/admin/assets/{QueryView-UBO-U5Wo.js → QueryView-KFtwko9F.js} +2 -2
  50. package/dist/admin/assets/{QueryView-UBO-U5Wo.js.map → QueryView-KFtwko9F.js.map} +1 -1
  51. package/dist/admin/assets/{RadioTile-CJbIIV8t.js → RadioTile-CzfxWgHx.js} +2 -2
  52. package/dist/admin/assets/{RadioTile-CJbIIV8t.js.map → RadioTile-CzfxWgHx.js.map} +1 -1
  53. package/dist/admin/assets/{RichTextField-M7HyUhYF.js → RichTextField-BsBoOAP-.js} +5 -5
  54. package/dist/admin/assets/{RichTextField-M7HyUhYF.js.map → RichTextField-BsBoOAP-.js.map} +1 -1
  55. package/dist/admin/assets/{RowTitle-DoxDM1XL.js → RowTitle-Cn5mAU58.js} +2 -2
  56. package/dist/admin/assets/{RowTitle-DoxDM1XL.js.map → RowTitle-Cn5mAU58.js.map} +1 -1
  57. package/dist/admin/assets/SecretReveal-BCOJAisI.js +2 -0
  58. package/dist/admin/assets/SecretReveal-BCOJAisI.js.map +1 -0
  59. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js → SharedGlyph-CA8tb7UH.js} +2 -2
  60. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js.map → SharedGlyph-CA8tb7UH.js.map} +1 -1
  61. package/dist/admin/assets/StepList-sriwGP1e.js +2 -0
  62. package/dist/admin/assets/StepList-sriwGP1e.js.map +1 -0
  63. package/dist/admin/assets/{Structure-CO4aJZVP.js → Structure-B2HZ9UZu.js} +2 -2
  64. package/dist/admin/assets/{Structure-CO4aJZVP.js.map → Structure-B2HZ9UZu.js.map} +1 -1
  65. package/dist/admin/assets/{SubNavLink-CPJFIt1j.js → SubNavLink-CiCaVV8U.js} +2 -2
  66. package/dist/admin/assets/{SubNavLink-CPJFIt1j.js.map → SubNavLink-CiCaVV8U.js.map} +1 -1
  67. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js → SuggestAltButton-CqDLAuoa.js} +2 -2
  68. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js.map → SuggestAltButton-CqDLAuoa.js.map} +1 -1
  69. package/dist/admin/assets/{TextLink-DnrMaF2F.js → TextLink-HRn66VL1.js} +2 -2
  70. package/dist/admin/assets/{TextLink-DnrMaF2F.js.map → TextLink-HRn66VL1.js.map} +1 -1
  71. package/dist/admin/assets/Thumbnail-mFfESZiW.js +2 -0
  72. package/dist/admin/assets/Thumbnail-mFfESZiW.js.map +1 -0
  73. package/dist/admin/assets/UnsavedChangesGuard-C8cDQGEA.js +2 -0
  74. package/dist/admin/assets/UnsavedChangesGuard-C8cDQGEA.js.map +1 -0
  75. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js → UserAvatar-BItYDTyH.js} +2 -2
  76. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js.map → UserAvatar-BItYDTyH.js.map} +1 -1
  77. package/dist/admin/assets/auth-CQO4MBUj.js +2 -0
  78. package/dist/admin/assets/auth-CQO4MBUj.js.map +1 -0
  79. package/dist/admin/assets/badge-DNQwGXBl.js +2 -0
  80. package/dist/admin/assets/{badge-ydvfgE8a.js.map → badge-DNQwGXBl.js.map} +1 -1
  81. package/dist/admin/assets/{boxes-D6Y4Cenx.js → boxes-CAygw8zF.js} +2 -2
  82. package/dist/admin/assets/{boxes-D6Y4Cenx.js.map → boxes-CAygw8zF.js.map} +1 -1
  83. package/dist/admin/assets/{calendar-clock-DFUgXWXg.js → calendar-clock-BZGtAvWR.js} +2 -2
  84. package/dist/admin/assets/{calendar-clock-DFUgXWXg.js.map → calendar-clock-BZGtAvWR.js.map} +1 -1
  85. package/dist/admin/assets/changeSets-EMTUJT0M.js +2 -0
  86. package/dist/admin/assets/changeSets-EMTUJT0M.js.map +1 -0
  87. package/dist/admin/assets/chevron-left-DGU3HGYG.js +2 -0
  88. package/dist/admin/assets/{chevron-left-CZXrLV99.js.map → chevron-left-DGU3HGYG.js.map} +1 -1
  89. package/dist/admin/assets/{circle-check-De27poaB.js → circle-check-C37MSJqX.js} +2 -2
  90. package/dist/admin/assets/{circle-check-De27poaB.js.map → circle-check-C37MSJqX.js.map} +1 -1
  91. package/dist/admin/assets/{clock-BGAXsuo4.js → clock-2arjsgZ4.js} +2 -2
  92. package/dist/admin/assets/{clock-BGAXsuo4.js.map → clock-2arjsgZ4.js.map} +1 -1
  93. package/dist/admin/assets/{constants-esJAnNTh.js → constants-miV4q1ur.js} +2 -2
  94. package/dist/admin/assets/{constants-esJAnNTh.js.map → constants-miV4q1ur.js.map} +1 -1
  95. package/dist/admin/assets/content-CgZS_S7P.js +3 -0
  96. package/dist/admin/assets/content-CgZS_S7P.js.map +1 -0
  97. package/dist/admin/assets/contentCounts-DP7YYeZZ.js +2 -0
  98. package/dist/admin/assets/{contentCounts-DknqJ4kh.js.map → contentCounts-DP7YYeZZ.js.map} +1 -1
  99. package/dist/admin/assets/{contentTypes-C-AKiYu1.js → contentTypes-CQsHL657.js} +2 -2
  100. package/dist/admin/assets/{contentTypes-C-AKiYu1.js.map → contentTypes-CQsHL657.js.map} +1 -1
  101. package/dist/admin/assets/context-IKYdzQJ-.js +2 -0
  102. package/dist/admin/assets/{context-fImO9k99.js.map → context-IKYdzQJ-.js.map} +1 -1
  103. package/dist/admin/assets/{copy-B5owk67M.js → copy-CsSRHgKZ.js} +2 -2
  104. package/dist/admin/assets/{copy-B5owk67M.js.map → copy-CsSRHgKZ.js.map} +1 -1
  105. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js +2 -0
  106. package/dist/admin/assets/createLucideIcon-CLmh7Go-.js.map +1 -0
  107. package/dist/admin/assets/develop-9ZeAjSIw.js +11 -0
  108. package/dist/admin/assets/develop-9ZeAjSIw.js.map +1 -0
  109. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js → dropdown-menu-0dyAtBEd.js} +2 -2
  110. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js.map → dropdown-menu-0dyAtBEd.js.map} +1 -1
  111. package/dist/admin/assets/{ellipsis-BHtU4ov6.js → ellipsis-F91991on.js} +2 -2
  112. package/dist/admin/assets/{ellipsis-BHtU4ov6.js.map → ellipsis-F91991on.js.map} +1 -1
  113. package/dist/admin/assets/entryLink-CVB-TdIn.js +2 -0
  114. package/dist/admin/assets/entryLink-CVB-TdIn.js.map +1 -0
  115. package/dist/admin/assets/es2015-BJge4oQL.js +42 -0
  116. package/dist/admin/assets/es2015-BJge4oQL.js.map +1 -0
  117. package/dist/admin/assets/{external-link-nZp2VpKw.js → external-link-CdG6kHfA.js} +2 -2
  118. package/dist/admin/assets/{external-link-nZp2VpKw.js.map → external-link-CdG6kHfA.js.map} +1 -1
  119. package/dist/admin/assets/{field-W1dB_h6d.js → field-C6NmRYUN.js} +2 -2
  120. package/dist/admin/assets/{field-W1dB_h6d.js.map → field-C6NmRYUN.js.map} +1 -1
  121. package/dist/admin/assets/{file-stack-8rRouTJj.js → file-stack-28ZtO1xW.js} +2 -2
  122. package/dist/admin/assets/{file-stack-8rRouTJj.js.map → file-stack-28ZtO1xW.js.map} +1 -1
  123. package/dist/admin/assets/{fileRoute-DzWMBrRx.js → fileRoute-Bm90K4UY.js} +2 -2
  124. package/dist/admin/assets/{fileRoute-DzWMBrRx.js.map → fileRoute-Bm90K4UY.js.map} +1 -1
  125. package/dist/admin/assets/{folder-plus-B3L3b389.js → folder-plus-DIk0pWkP.js} +2 -2
  126. package/dist/admin/assets/{folder-plus-B3L3b389.js.map → folder-plus-DIk0pWkP.js.map} +1 -1
  127. package/dist/admin/assets/followPlural-DEr2kxEc.js +2 -0
  128. package/dist/admin/assets/followPlural-DEr2kxEc.js.map +1 -0
  129. package/dist/admin/assets/{globe-DKkjr9MZ.js → globe-DFr3Gd2w.js} +2 -2
  130. package/dist/admin/assets/{globe-DKkjr9MZ.js.map → globe-DFr3Gd2w.js.map} +1 -1
  131. package/dist/admin/assets/{image-B6aL7hP8.js → image-DT79QFa_.js} +2 -2
  132. package/dist/admin/assets/{image-B6aL7hP8.js.map → image-DT79QFa_.js.map} +1 -1
  133. package/dist/admin/assets/{image-off-TVxEyb74.js → image-off-DFs5upyX.js} +2 -2
  134. package/dist/admin/assets/{image-off-TVxEyb74.js.map → image-off-DFs5upyX.js.map} +1 -1
  135. package/dist/admin/assets/inbox-B8XZ8L6s.js +2 -0
  136. package/dist/admin/assets/inbox-B8XZ8L6s.js.map +1 -0
  137. package/dist/admin/assets/{inbox-BKqu1EfP.js → inbox-CySnQydm.js} +2 -2
  138. package/dist/admin/assets/{inbox-BKqu1EfP.js.map → inbox-CySnQydm.js.map} +1 -1
  139. package/dist/admin/assets/index-DoJsnLI1.js +4 -0
  140. package/dist/admin/assets/index-DoJsnLI1.js.map +1 -0
  141. package/dist/admin/assets/index-lxe7WimO.css +2 -0
  142. package/dist/admin/assets/{key-round-Dmdr1vP5.js → key-round-D36CePnN.js} +2 -2
  143. package/dist/admin/assets/{key-round-Dmdr1vP5.js.map → key-round-D36CePnN.js.map} +1 -1
  144. package/dist/admin/assets/{labels-CHE0gg1n.js → labels-B2HIVxXg.js} +2 -2
  145. package/dist/admin/assets/{labels-CHE0gg1n.js.map → labels-B2HIVxXg.js.map} +1 -1
  146. package/dist/admin/assets/{languages-BbfFIygP.js → languages-CzbTaQv9.js} +2 -2
  147. package/dist/admin/assets/{languages-BbfFIygP.js.map → languages-CzbTaQv9.js.map} +1 -1
  148. package/dist/admin/assets/{layers-B0jT4rc4.js → layers-BmcodiaH.js} +2 -2
  149. package/dist/admin/assets/{layers-B0jT4rc4.js.map → layers-BmcodiaH.js.map} +1 -1
  150. package/dist/admin/assets/{link-2-off-DC06jLDj.js → link-2-off-CoJNwrxm.js} +2 -2
  151. package/dist/admin/assets/{link-2-off-DC06jLDj.js.map → link-2-off-CoJNwrxm.js.map} +1 -1
  152. package/dist/admin/assets/{link-B3O0VUVT.js → link-Pyr2Y35S.js} +2 -2
  153. package/dist/admin/assets/{link-B3O0VUVT.js.map → link-Pyr2Y35S.js.map} +1 -1
  154. package/dist/admin/assets/locales-Bg3htKo8.js +2 -0
  155. package/dist/admin/assets/{locales-e7B5t6id.js.map → locales-Bg3htKo8.js.map} +1 -1
  156. package/dist/admin/assets/media-BCnVhaDH.js +2 -0
  157. package/dist/admin/assets/{media-VCJUbYzJ.js.map → media-BCnVhaDH.js.map} +1 -1
  158. package/dist/admin/assets/media-CtbfNgc-.js +2 -0
  159. package/dist/admin/assets/media-CtbfNgc-.js.map +1 -0
  160. package/dist/admin/assets/network--5X46kWN.js +2 -0
  161. package/dist/admin/assets/network--5X46kWN.js.map +1 -0
  162. package/dist/admin/assets/{plus-WfYKHW7G.js → plus-BoDtdLCo.js} +2 -2
  163. package/dist/admin/assets/{plus-WfYKHW7G.js.map → plus-BoDtdLCo.js.map} +1 -1
  164. package/dist/admin/assets/publishing-DdmWXRaM.js +2 -0
  165. package/dist/admin/assets/{publishing-ClNjPLQ9.js.map → publishing-DdmWXRaM.js.map} +1 -1
  166. package/dist/admin/assets/{radio-group-rFxn7cz2.js → radio-group-BoN9R_3K.js} +2 -2
  167. package/dist/admin/assets/{radio-group-rFxn7cz2.js.map → radio-group-BoN9R_3K.js.map} +1 -1
  168. package/dist/admin/assets/{rotate-ccw-Cvc_uA58.js → rotate-ccw-DL6TzcZh.js} +2 -2
  169. package/dist/admin/assets/{rotate-ccw-Cvc_uA58.js.map → rotate-ccw-DL6TzcZh.js.map} +1 -1
  170. package/dist/admin/assets/schedules-BmB9Y73z.js +2 -0
  171. package/dist/admin/assets/{schedules-CBGpjEg7.js.map → schedules-BmB9Y73z.js.map} +1 -1
  172. package/dist/admin/assets/schema-D-qo7XSF.js +2 -0
  173. package/dist/admin/assets/schema-D-qo7XSF.js.map +1 -0
  174. package/dist/admin/assets/{scroll-text-gKYBbibb.js → scroll-text-PqeZm472.js} +2 -2
  175. package/dist/admin/assets/{scroll-text-gKYBbibb.js.map → scroll-text-PqeZm472.js.map} +1 -1
  176. package/dist/admin/assets/{search-CW3iBC4k.js → search-BdwIwOzC.js} +2 -2
  177. package/dist/admin/assets/{search-CW3iBC4k.js.map → search-BdwIwOzC.js.map} +1 -1
  178. package/dist/admin/assets/searchSchemas-DNjfDxmj.js +2 -0
  179. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js.map → searchSchemas-DNjfDxmj.js.map} +1 -1
  180. package/dist/admin/assets/{sections-CN5fIoAr.js → sections-BTS683ur.js} +2 -2
  181. package/dist/admin/assets/{sections-CN5fIoAr.js.map → sections-BTS683ur.js.map} +1 -1
  182. package/dist/admin/assets/sections-BfxPwK0u.js +2 -0
  183. package/dist/admin/assets/{sections-C7Z6Xd8r.js.map → sections-BfxPwK0u.js.map} +1 -1
  184. package/dist/admin/assets/{select-DUhL27UN.js → select-Bp8kO5Ko.js} +2 -2
  185. package/dist/admin/assets/{select-DUhL27UN.js.map → select-Bp8kO5Ko.js.map} +1 -1
  186. package/dist/admin/assets/{send-DRA-Pe46.js → send-XPWo3m4u.js} +2 -2
  187. package/dist/admin/assets/{send-DRA-Pe46.js.map → send-XPWo3m4u.js.map} +1 -1
  188. package/dist/admin/assets/seo-CceGYTIX.js +2 -0
  189. package/dist/admin/assets/{seo-l1ZORjtv.js.map → seo-CceGYTIX.js.map} +1 -1
  190. package/dist/admin/assets/settings-TEbLvC-v.js +2 -0
  191. package/dist/admin/assets/settings-TEbLvC-v.js.map +1 -0
  192. package/dist/admin/assets/settle-CFU6YpQ0.js +2 -0
  193. package/dist/admin/assets/settle-CFU6YpQ0.js.map +1 -0
  194. package/dist/admin/assets/shapes-WrYO9Spf.js +6 -0
  195. package/dist/admin/assets/shapes-WrYO9Spf.js.map +1 -0
  196. package/dist/admin/assets/{skeleton-Dyi_b1wq.js → skeleton-vXOCdnJv.js} +2 -2
  197. package/dist/admin/assets/{skeleton-Dyi_b1wq.js.map → skeleton-vXOCdnJv.js.map} +1 -1
  198. package/dist/admin/assets/slugify-rYFum3Sc.js +2 -0
  199. package/dist/admin/assets/slugify-rYFum3Sc.js.map +1 -0
  200. package/dist/admin/assets/snapshots-DUI2t-qF.js +2 -0
  201. package/dist/admin/assets/snapshots-DUI2t-qF.js.map +1 -0
  202. package/dist/admin/assets/{sparkles-DCRAqbqD.js → sparkles-CvT-jxrW.js} +2 -2
  203. package/dist/admin/assets/{sparkles-DCRAqbqD.js.map → sparkles-CvT-jxrW.js.map} +1 -1
  204. package/dist/admin/assets/src-ndgTSYLX.js +7 -0
  205. package/dist/admin/assets/src-ndgTSYLX.js.map +1 -0
  206. package/dist/admin/assets/{stableId-iRkUbVIP.js → stableId-BrtQedPy.js} +2 -2
  207. package/dist/admin/assets/{stableId-iRkUbVIP.js.map → stableId-BrtQedPy.js.map} +1 -1
  208. package/dist/admin/assets/store-CdIFG90N.js +2 -0
  209. package/dist/admin/assets/{store-DknnssoQ.js.map → store-CdIFG90N.js.map} +1 -1
  210. package/dist/admin/assets/{switch-C3dDDUIk.js → switch-B1xClhNG.js} +2 -2
  211. package/dist/admin/assets/{switch-C3dDDUIk.js.map → switch-B1xClhNG.js.map} +1 -1
  212. package/dist/admin/assets/theme-65PB8uAu.js +2 -0
  213. package/dist/admin/assets/{theme-DPe080iG.js.map → theme-65PB8uAu.js.map} +1 -1
  214. package/dist/admin/assets/titles-CQiqqDw-.js +2 -0
  215. package/dist/admin/assets/titles-CQiqqDw-.js.map +1 -0
  216. package/dist/admin/assets/tokens-ixHjAkDK.js +2 -0
  217. package/dist/admin/assets/{tokens-BlIDIMY9.js.map → tokens-ixHjAkDK.js.map} +1 -1
  218. package/dist/admin/assets/{tooltip-BEaZkRPK.js → tooltip-CS_8cJu2.js} +2 -2
  219. package/dist/admin/assets/{tooltip-BEaZkRPK.js.map → tooltip-CS_8cJu2.js.map} +1 -1
  220. package/dist/admin/assets/{undo-2-Zd1OT6qk.js → undo-2-BiTANHFz.js} +2 -2
  221. package/dist/admin/assets/{undo-2-Zd1OT6qk.js.map → undo-2-BiTANHFz.js.map} +1 -1
  222. package/dist/admin/assets/useContentSchema-DtYfhsd2.js +2 -0
  223. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js.map → useContentSchema-DtYfhsd2.js.map} +1 -1
  224. package/dist/admin/assets/useCursorPager-0zHjlm-7.js +2 -0
  225. package/dist/admin/assets/{useCursorPager-Dc-9B67j.js.map → useCursorPager-0zHjlm-7.js.map} +1 -1
  226. package/dist/admin/assets/useDiscardGuard-CMMJgkI2.js +2 -0
  227. package/dist/admin/assets/useDiscardGuard-CMMJgkI2.js.map +1 -0
  228. package/dist/admin/assets/useMediaPickerDialog-xvQ8cofO.js +2 -0
  229. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js.map → useMediaPickerDialog-xvQ8cofO.js.map} +1 -1
  230. package/dist/admin/assets/useMediaUploader-BVNTeSAU.js +2 -0
  231. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js.map → useMediaUploader-BVNTeSAU.js.map} +1 -1
  232. package/dist/admin/assets/useNetworkPermission-Cts98h9d.js +2 -0
  233. package/dist/admin/assets/{useNetworkPermission-CegwqQXR.js.map → useNetworkPermission-Cts98h9d.js.map} +1 -1
  234. package/dist/admin/assets/usePaletteItems-DtReWmkd.js +2 -0
  235. package/dist/admin/assets/{usePaletteItems-B3y2t7Ly.js.map → usePaletteItems-DtReWmkd.js.map} +1 -1
  236. package/dist/admin/assets/usePlaces-DC47wVeU.js +2 -0
  237. package/dist/admin/assets/{usePlaces-CAXr-IO9.js.map → usePlaces-DC47wVeU.js.map} +1 -1
  238. package/dist/admin/assets/useQueries-CirW3Mvp.js +2 -0
  239. package/dist/admin/assets/{useQueries-CX6eFr24.js.map → useQueries-CirW3Mvp.js.map} +1 -1
  240. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js → useResolvedScheme-CScQpr-P.js} +2 -2
  241. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js.map → useResolvedScheme-CScQpr-P.js.map} +1 -1
  242. package/dist/admin/assets/{useSchemaScopeAccess-DyfiZnzs.js → useSchemaScopeAccess-ByrxIdKM.js} +2 -2
  243. package/dist/admin/assets/{useSchemaScopeAccess-DyfiZnzs.js.map → useSchemaScopeAccess-ByrxIdKM.js.map} +1 -1
  244. package/dist/admin/assets/users-2iJYwlJb.js +2 -0
  245. package/dist/admin/assets/users-2iJYwlJb.js.map +1 -0
  246. package/dist/admin/assets/{users-ohHZnBJW.js → users-DM7CXUBJ.js} +2 -2
  247. package/dist/admin/assets/{users-ohHZnBJW.js.map → users-DM7CXUBJ.js.map} +1 -1
  248. package/dist/admin/assets/{zod-C-k48Hnc.js → zod-hUh5nXnX.js} +2 -2
  249. package/dist/admin/assets/{zod-C-k48Hnc.js.map → zod-hUh5nXnX.js.map} +1 -1
  250. package/dist/admin/index.html +59 -60
  251. package/dist/cli.js +10 -5689
  252. package/dist/cli.js.map +1 -1
  253. package/dist/cliMain-D08HeAd_.js +5771 -0
  254. package/dist/cliMain-D08HeAd_.js.map +1 -0
  255. package/dist/config.d.ts +1 -1
  256. package/dist/config.js +1 -38
  257. package/dist/contentDisposition-DOL2Xt0l.js +90 -0
  258. package/dist/contentDisposition-DOL2Xt0l.js.map +1 -0
  259. package/dist/index.d.ts +30 -8
  260. package/dist/index.js +2 -2
  261. package/dist/public-B57h4F7Y.js +39 -0
  262. package/dist/public-B57h4F7Y.js.map +1 -0
  263. package/dist/{public-BO_wneBL.d.ts → public-COKbHR-N.d.ts} +47 -3
  264. package/dist/{s3Adapter-sL1zP4Zl.js → s3Adapter-U01iEAcK.js} +2 -2
  265. package/dist/{s3Adapter-sL1zP4Zl.js.map → s3Adapter-U01iEAcK.js.map} +1 -1
  266. package/dist/{worker-DMES6pqh.js → worker-jspgh10V.js} +6384 -4527
  267. package/dist/worker-jspgh10V.js.map +1 -0
  268. package/package.json +5 -5
  269. package/dist/admin/assets/AssistError-drmpXSbS.js +0 -2
  270. package/dist/admin/assets/Body-Gn_z2KPN.js +0 -2
  271. package/dist/admin/assets/Builder-DyCcikfS.js +0 -2
  272. package/dist/admin/assets/Builder-DyCcikfS.js.map +0 -1
  273. package/dist/admin/assets/ConfirmDialog-DZRJfdvH.js +0 -2
  274. package/dist/admin/assets/ConfirmDialog-DZRJfdvH.js.map +0 -1
  275. package/dist/admin/assets/Form-DF_YmR1G.js +0 -2
  276. package/dist/admin/assets/Form-DF_YmR1G.js.map +0 -1
  277. package/dist/admin/assets/FormCheckboxGroup-V3IKrvzc.js.map +0 -1
  278. package/dist/admin/assets/InsertMenuItem-D2HGERzb.js +0 -2
  279. package/dist/admin/assets/InsertMenuItem-D2HGERzb.js.map +0 -1
  280. package/dist/admin/assets/Panel-B1TkcP8V.js +0 -2
  281. package/dist/admin/assets/Panel-B1TkcP8V.js.map +0 -1
  282. package/dist/admin/assets/SecretReveal-kCkLH5jg.js +0 -2
  283. package/dist/admin/assets/SecretReveal-kCkLH5jg.js.map +0 -1
  284. package/dist/admin/assets/StepList-BIQjDaWQ.js +0 -2
  285. package/dist/admin/assets/StepList-BIQjDaWQ.js.map +0 -1
  286. package/dist/admin/assets/Thumbnail-D1XuDElk.js +0 -2
  287. package/dist/admin/assets/Thumbnail-D1XuDElk.js.map +0 -1
  288. package/dist/admin/assets/UnsavedChangesGuard-C1n7egF6.js +0 -2
  289. package/dist/admin/assets/UnsavedChangesGuard-C1n7egF6.js.map +0 -1
  290. package/dist/admin/assets/auth-C4fHG9Iu.js +0 -2
  291. package/dist/admin/assets/auth-C4fHG9Iu.js.map +0 -1
  292. package/dist/admin/assets/badge-ydvfgE8a.js +0 -2
  293. package/dist/admin/assets/changeSets-DgfCKja3.js +0 -2
  294. package/dist/admin/assets/changeSets-DgfCKja3.js.map +0 -1
  295. package/dist/admin/assets/chevron-left-CZXrLV99.js +0 -2
  296. package/dist/admin/assets/content-DsMSB6Wb.js +0 -3
  297. package/dist/admin/assets/content-DsMSB6Wb.js.map +0 -1
  298. package/dist/admin/assets/contentCounts-DknqJ4kh.js +0 -2
  299. package/dist/admin/assets/context-fImO9k99.js +0 -2
  300. package/dist/admin/assets/createLucideIcon-CqygG5K6.js +0 -2
  301. package/dist/admin/assets/createLucideIcon-CqygG5K6.js.map +0 -1
  302. package/dist/admin/assets/develop-DL-2W9jv.js +0 -11
  303. package/dist/admin/assets/develop-DL-2W9jv.js.map +0 -1
  304. package/dist/admin/assets/es2015-DrAA1N2V.js +0 -42
  305. package/dist/admin/assets/es2015-DrAA1N2V.js.map +0 -1
  306. package/dist/admin/assets/followPlural-D-5ZJqJF.js +0 -2
  307. package/dist/admin/assets/followPlural-D-5ZJqJF.js.map +0 -1
  308. package/dist/admin/assets/inbox-DUqOrFEA.js +0 -2
  309. package/dist/admin/assets/inbox-DUqOrFEA.js.map +0 -1
  310. package/dist/admin/assets/index-BEM45u2w.css +0 -2
  311. package/dist/admin/assets/index-D03RZB7e.js +0 -4
  312. package/dist/admin/assets/index-D03RZB7e.js.map +0 -1
  313. package/dist/admin/assets/loader-circle-C-9trZPI.js +0 -2
  314. package/dist/admin/assets/loader-circle-C-9trZPI.js.map +0 -1
  315. package/dist/admin/assets/locales-e7B5t6id.js +0 -2
  316. package/dist/admin/assets/media-BUUEsWxd.js +0 -2
  317. package/dist/admin/assets/media-BUUEsWxd.js.map +0 -1
  318. package/dist/admin/assets/media-VCJUbYzJ.js +0 -2
  319. package/dist/admin/assets/network-Bolr2lmf.js +0 -2
  320. package/dist/admin/assets/network-Bolr2lmf.js.map +0 -1
  321. package/dist/admin/assets/pencil-BVSFlU14.js +0 -2
  322. package/dist/admin/assets/pencil-BVSFlU14.js.map +0 -1
  323. package/dist/admin/assets/publishing-ClNjPLQ9.js +0 -2
  324. package/dist/admin/assets/schedules-CBGpjEg7.js +0 -2
  325. package/dist/admin/assets/schema-D9BgCVzZ.js +0 -2
  326. package/dist/admin/assets/schema-D9BgCVzZ.js.map +0 -1
  327. package/dist/admin/assets/searchSchemas-C4qp-vCa.js +0 -2
  328. package/dist/admin/assets/sections-C7Z6Xd8r.js +0 -2
  329. package/dist/admin/assets/seo-l1ZORjtv.js +0 -2
  330. package/dist/admin/assets/settings-DgoG3H8C.js +0 -2
  331. package/dist/admin/assets/settings-DgoG3H8C.js.map +0 -1
  332. package/dist/admin/assets/settle-LRKtTN_e.js +0 -2
  333. package/dist/admin/assets/settle-LRKtTN_e.js.map +0 -1
  334. package/dist/admin/assets/shapes-BZ87ap5s.js +0 -6
  335. package/dist/admin/assets/shapes-BZ87ap5s.js.map +0 -1
  336. package/dist/admin/assets/snapshots-CT-zs6Up.js +0 -2
  337. package/dist/admin/assets/snapshots-CT-zs6Up.js.map +0 -1
  338. package/dist/admin/assets/src-BcLeD2-K.js +0 -7
  339. package/dist/admin/assets/src-BcLeD2-K.js.map +0 -1
  340. package/dist/admin/assets/store-DknnssoQ.js +0 -2
  341. package/dist/admin/assets/theme-DPe080iG.js +0 -2
  342. package/dist/admin/assets/titles-C5PaMgFJ.js +0 -2
  343. package/dist/admin/assets/titles-C5PaMgFJ.js.map +0 -1
  344. package/dist/admin/assets/tokens-BlIDIMY9.js +0 -2
  345. package/dist/admin/assets/useAuditLabels-DWBpLOTB.js +0 -2
  346. package/dist/admin/assets/useAuditLabels-DWBpLOTB.js.map +0 -1
  347. package/dist/admin/assets/useContentSchema-wLDa2L3f.js +0 -2
  348. package/dist/admin/assets/useCursorPager-Dc-9B67j.js +0 -2
  349. package/dist/admin/assets/useDiscardGuard-WTUINqD5.js +0 -2
  350. package/dist/admin/assets/useDiscardGuard-WTUINqD5.js.map +0 -1
  351. package/dist/admin/assets/useMediaPickerDialog-CFN9ZKfe.js +0 -2
  352. package/dist/admin/assets/useMediaUploader-B42H_CMG.js +0 -2
  353. package/dist/admin/assets/useNetworkPermission-CegwqQXR.js +0 -2
  354. package/dist/admin/assets/usePaletteItems-B3y2t7Ly.js +0 -2
  355. package/dist/admin/assets/usePlaces-CAXr-IO9.js +0 -2
  356. package/dist/admin/assets/useQueries-CX6eFr24.js +0 -2
  357. package/dist/admin/assets/users-CDoJRL24.js +0 -2
  358. package/dist/admin/assets/users-CDoJRL24.js.map +0 -1
  359. package/dist/config.js.map +0 -1
  360. package/dist/worker-DMES6pqh.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{t as e}from"./createLucideIcon-CqygG5K6.js";var t={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=globe-DKkjr9MZ.js.map
1
+ import{t as e}from"./createLucideIcon-CLmh7Go-.js";var t={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=globe-DFr3Gd2w.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globe-DKkjr9MZ.js","names":["createLucideIcon","__iconData","Globe"],"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/globe.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: \"globe\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n ]\n};\n__iconData.node;\nconst Globe = createLucideIcon(__iconData);\n\nexport { __iconData, Globe as default };\n//# sourceMappingURL=globe.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,QAAS,CAAC,EACzD,CAAC,OAAQ,CAAE,EAAG,kDAAmD,IAAK,QAAS,CAAC,EAChF,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAC3C,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"globe-DFr3Gd2w.js","names":["createLucideIcon","__iconData","Globe"],"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/globe.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: \"globe\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n ]\n};\n__iconData.node;\nconst Globe = createLucideIcon(__iconData);\n\nexport { __iconData, Globe as default };\n//# sourceMappingURL=globe.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,QAAS,CAAC,EACzD,CAAC,OAAQ,CAAE,EAAG,kDAAmD,IAAK,QAAS,CAAC,EAChF,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAC3C,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./createLucideIcon-CqygG5K6.js";var t={name:`image`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=image-B6aL7hP8.js.map
1
+ import{t as e}from"./createLucideIcon-CLmh7Go-.js";var t={name:`image`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=image-DT79QFa_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-B6aL7hP8.js","names":["createLucideIcon","__iconData","Image"],"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/image.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: \"image\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n ]\n};\n__iconData.node;\nconst Image = createLucideIcon(__iconData);\n\nexport { __iconData, Image as default };\n//# sourceMappingURL=image.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,QAAS,CAAC,EACtD,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAS,CAAC,CAC5E,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"image-DT79QFa_.js","names":["createLucideIcon","__iconData","Image"],"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/image.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: \"image\",\n size: 24,\n node: [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n ]\n};\n__iconData.node;\nconst Image = createLucideIcon(__iconData);\n\nexport { __iconData, Image as default };\n//# sourceMappingURL=image.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EACvF,CAAC,SAAU,CAAE,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,QAAS,CAAC,EACtD,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAS,CAAC,CAC5E,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./createLucideIcon-CqygG5K6.js";var t={name:`image-off`,size:24,node:[[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}],[`path`,{d:`M10.41 10.41a2 2 0 1 1-2.83-2.83`,key:`1bzlo9`}],[`line`,{x1:`13.5`,x2:`6`,y1:`13.5`,y2:`21`,key:`1q0aeu`}],[`line`,{x1:`18`,x2:`21`,y1:`12`,y2:`15`,key:`5mozeu`}],[`path`,{d:`M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59`,key:`mmje98`}],[`path`,{d:`M21 15V5a2 2 0 0 0-2-2H9`,key:`43el77`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=image-off-TVxEyb74.js.map
1
+ import{t as e}from"./createLucideIcon-CLmh7Go-.js";var t={name:`image-off`,size:24,node:[[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}],[`path`,{d:`M10.41 10.41a2 2 0 1 1-2.83-2.83`,key:`1bzlo9`}],[`line`,{x1:`13.5`,x2:`6`,y1:`13.5`,y2:`21`,key:`1q0aeu`}],[`line`,{x1:`18`,x2:`21`,y1:`12`,y2:`15`,key:`5mozeu`}],[`path`,{d:`M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59`,key:`mmje98`}],[`path`,{d:`M21 15V5a2 2 0 0 0-2-2H9`,key:`43el77`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=image-off-DFs5upyX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-off-TVxEyb74.js","names":["createLucideIcon","__iconData","ImageOff"],"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/image-off.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: \"image-off\",\n size: 24,\n node: [\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }],\n [\"path\", { d: \"M10.41 10.41a2 2 0 1 1-2.83-2.83\", key: \"1bzlo9\" }],\n [\"line\", { x1: \"13.5\", x2: \"6\", y1: \"13.5\", y2: \"21\", key: \"1q0aeu\" }],\n [\"line\", { x1: \"18\", x2: \"21\", y1: \"12\", y2: \"15\", key: \"5mozeu\" }],\n [\n \"path\",\n {\n d: \"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59\",\n key: \"mmje98\"\n }\n ],\n [\"path\", { d: \"M21 15V5a2 2 0 0 0-2-2H9\", key: \"43el77\" }]\n ]\n};\n__iconData.node;\nconst ImageOff = createLucideIcon(__iconData);\n\nexport { __iconData, ImageOff as default };\n//# sourceMappingURL=image-off.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,YACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAS,CAAC,EAChE,CAAC,OAAQ,CAAE,EAAG,mCAAoC,IAAK,QAAS,CAAC,EACjE,CAAC,OAAQ,CAAE,GAAI,OAAQ,GAAI,IAAK,GAAI,OAAQ,GAAI,KAAM,IAAK,QAAS,CAAC,EACrE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAS,CAAC,EAClE,CACE,OACA,CACE,EAAG,8EACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAS,CAAC,CAC3D,CACF,EACAA,EAAW,KACX,IAAMC,EAAWF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"image-off-DFs5upyX.js","names":["createLucideIcon","__iconData","ImageOff"],"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/image-off.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: \"image-off\",\n size: 24,\n node: [\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }],\n [\"path\", { d: \"M10.41 10.41a2 2 0 1 1-2.83-2.83\", key: \"1bzlo9\" }],\n [\"line\", { x1: \"13.5\", x2: \"6\", y1: \"13.5\", y2: \"21\", key: \"1q0aeu\" }],\n [\"line\", { x1: \"18\", x2: \"21\", y1: \"12\", y2: \"15\", key: \"5mozeu\" }],\n [\n \"path\",\n {\n d: \"M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59\",\n key: \"mmje98\"\n }\n ],\n [\"path\", { d: \"M21 15V5a2 2 0 0 0-2-2H9\", key: \"43el77\" }]\n ]\n};\n__iconData.node;\nconst ImageOff = createLucideIcon(__iconData);\n\nexport { __iconData, ImageOff as default };\n//# sourceMappingURL=image-off.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,YACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,GAAI,IAAK,GAAI,KAAM,GAAI,IAAK,GAAI,KAAM,IAAK,QAAS,CAAC,EAChE,CAAC,OAAQ,CAAE,EAAG,mCAAoC,IAAK,QAAS,CAAC,EACjE,CAAC,OAAQ,CAAE,GAAI,OAAQ,GAAI,IAAK,GAAI,OAAQ,GAAI,KAAM,IAAK,QAAS,CAAC,EACrE,CAAC,OAAQ,CAAE,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,GAAI,KAAM,IAAK,QAAS,CAAC,EAClE,CACE,OACA,CACE,EAAG,8EACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAS,CAAC,CAC3D,CACF,EACAA,EAAW,KACX,IAAMC,EAAWF,EAAiBC,CAAU"}
@@ -0,0 +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{$ as r,Ht as i,Pt as a,bn as o,ft as s}from"./src-ndgTSYLX.js";import{l as c}from"./media-BCnVhaDH.js";import{t as l}from"./useQueries-CirW3Mvp.js";import{S as u,o as d,u as f,v as p,w as m}from"./auth-CQO4MBUj.js";import{O as ee,_ as te,a as ne,c as re,d as ie,f as ae,i as oe,l as se,m as ce,n as h,o as g,p as le,r as _,s as v,t as y,u as ue,v as b}from"./badge-DNQwGXBl.js";import{n as x,t as de}from"./createLucideIcon-CLmh7Go-.js";import{i as S,n as C,t as w}from"./RowTitle-Cn5mAU58.js";import{t as fe}from"./fileRoute-Bm90K4UY.js";import{x as pe}from"./es2015-BJge4oQL.js";import{n as me}from"./link-2-off-CoJNwrxm.js";import{t as T}from"./boxes-CAygw8zF.js";import{t as he}from"./calendar-clock-BZGtAvWR.js";import{c as E,i as D,n as ge,r as _e,s as ve}from"./skeleton-vXOCdnJv.js";import{t as ye}from"./circle-check-C37MSJqX.js";import{c as be,d as xe,f as Se,l as Ce,m as O,n as k,p as A,u as we}from"./snapshots-DUI2t-qF.js";import{n as Te,t as Ee}from"./usePlaces-DC47wVeU.js";import{t as De}from"./globe-DFr3Gd2w.js";import{t as Oe}from"./key-round-D36CePnN.js";import{t as ke}from"./plus-BoDtdLCo.js";import{t as Ae}from"./scroll-text-PqeZm472.js";import{t as je}from"./send-XPWo3m4u.js";import{t as Me}from"./sparkles-CvT-jxrW.js";import{c as j,d as Ne,f as M,l as Pe,t as N,u as Fe}from"./users-2iJYwlJb.js";import{t as Ie}from"./users-DM7CXUBJ.js";import{t as P}from"./cn-DVhJ55Mo.js";import{t as Le}from"./UserAvatar-BItYDTyH.js";import{t as Re}from"./TextLink-HRn66VL1.js";import{l as F}from"./schema-D-qo7XSF.js";import{t as I}from"./QueryView-KFtwko9F.js";import{a as ze,o as Be,r as Ve}from"./titles-CQiqqDw-.js";import{r as L}from"./locales-Bg3htKo8.js";import{i as He,n as Ue,o as We,r as Ge,s as Ke,t as qe}from"./AssistError-1s3PuY0X.js";import{t as R}from"./Panel-Bcl09TtM.js";import{r as Je}from"./schedules-BmB9Y73z.js";import{n as z,t as B}from"./useContentSchema-DtYfhsd2.js";import{t as V}from"./tokens-ixHjAkDK.js";import{t as H}from"./entryLink-CVB-TdIn.js";var Ye=[`altMissing`,`localeMissing`],U={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};U.node;var Xe=de(U),W=e(t(),1),Ze=new Set([`entry`,`model`,`component`,`admin_user`,`app_user`]),Qe=(e,t)=>e.charAt(0).toLocaleLowerCase(t)+e.slice(1),G=e(n(),1),$e=({event:e})=>{let{t,i18n:n}=x(),{actionLabel:r,targetLabel:i}=Pe(),a=e.actorName??e.actorEmail??t(`audit.actorTypes.${e.actorType}`),o=r(e.action),s=e.targetType&&Ze.has(e.targetType)?Fe(e.metadata):void 0,c=e.targetType?i(e.targetType):void 0;return(0,G.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,G.jsx)(Le,{name:a,size:`sm`}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,G.jsxs)(`p`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1 text-sm`,title:e.action,children:[(0,G.jsx)(`span`,{className:`font-semibold`,children:a}),o?(0,G.jsx)(`span`,{children:Qe(o,n.language)}):(0,G.jsx)(`span`,{className:`font-mono text-xs`,children:e.action}),e.outcome===`failure`?(0,G.jsx)(h,{tone:`danger`,size:`sm`,label:t(`audit.failure`)}):null]}),s?(0,G.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:c?t(`home.activityTarget`,{type:c,name:s}):s}):null]}),(0,G.jsx)(`time`,{dateTime:e.occurredAt,title:C(e.occurredAt),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(e.occurredAt)})]})},et=()=>{let{t:e}=x(),t=Ne({limit:8});return(0,G.jsx)(R,{title:e(`home.activity`),flush:!0,actions:(0,G.jsx)(D,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,G.jsx)(u,{to:`/network/audit-log`,children:e(`home.viewAuditLog`)})}),children:(0,G.jsx)(I,{query:t,loadingRows:4,isEmpty:e=>e.items.length===0,empty:(0,G.jsx)(g,{size:`panel`,icon:Ae,title:e(`home.noActivity`)}),children:e=>(0,G.jsx)(`ul`,{className:`divide-y`,children:e.items.map(e=>(0,G.jsx)($e,{event:e},e.id))})})})},K=()=>{let e=F(`model`);return{query:e,models:(0,W.useMemo)(()=>e.data?.flatMap(({definition:e,version:t})=>r(e)?[{id:e.id,label:e.label,apiKey:e.apiKey,kind:e.kind,version:t}]:[]).sort((e,t)=>e.label.localeCompare(t.label)),[e.data])}},tt=e=>{let[t]=e;return e.length!==1||!t?m({to:`/content`}):t.kind===`collection`?m({to:`/content/$modelKey/new`,params:{modelKey:t.apiKey}}):m({to:`/content/$modelKey`,params:{modelKey:t.apiKey}})},nt=e=>{let{t}=x(),n=d(`schema.create`),r=d(`media.write`),i=d(`users.manage`);return[...e&&e.length>0?[{key:`entry`,label:t(`home.createEntry`),icon:Te,link:tt(e)}]:[],...n?[{key:`model`,label:t(`home.newModel`),icon:T,link:m({to:`/content/new`})}]:[],...r?[{key:`media`,label:t(`home.uploadMedia`),icon:Xe,link:m({to:`/media`})}]:[],...i?[{key:`invite`,label:t(`home.invite`),icon:M,link:m({to:`/network/users`})}]:[]]},rt={collection:`home.kinds.collection`,singleton:`home.kinds.singleton`},it=({query:e,models:t})=>{let{t:n}=x(),r=d(`schema.create`);return(0,G.jsx)(R,{title:n(`home.models`),flush:!0,actions:t&&t.length>0?(0,G.jsx)(D,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,G.jsx)(u,{to:`/content`,children:n(`home.allModels`)})}):null,children:(0,G.jsx)(I,{query:e,loadingRows:3,isEmpty:()=>t?.length===0,empty:(0,G.jsx)(g,{size:`panel`,icon:T,title:n(`home.noModels`),action:r?(0,G.jsx)(D,{asChild:!0,children:(0,G.jsxs)(u,{to:`/content/new`,children:[(0,G.jsx)(ke,{"aria-hidden":`true`}),n(`home.newModel`)]})}):null}),children:()=>(0,G.jsx)(`ul`,{className:`divide-y`,children:t?.slice(0,6).map(e=>(0,G.jsxs)(`li`,{className:`flex h-11 items-center gap-3 px-5`,children:[(0,G.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-baseline gap-2`,children:[(0,G.jsx)(w,{asChild:!0,className:`truncate`,children:(0,G.jsx)(u,{to:`/content/$modelKey`,params:{modelKey:e.apiKey},search:{tab:`structure`},children:e.label})}),(0,G.jsx)(`span`,{className:`truncate font-mono text-xs text-muted-foreground`,children:e.apiKey})]}),(0,G.jsx)(y,{variant:`secondary`,children:n(rt[e.kind])}),(0,G.jsx)(`span`,{className:`w-10 text-right text-meta text-muted-foreground tabular-nums`,children:n(`home.version`,{version:e.version})})]},e.id))})})})},q=({to:e,icon:t,title:n,description:r})=>(0,G.jsxs)(u,{to:e,className:`group flex items-start gap-4 rounded-xl border bg-card p-5 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,G.jsx)(v,{icon:t,size:`lg`}),(0,G.jsxs)(`span`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,G.jsxs)(`span`,{className:`flex items-center gap-1 font-semibold`,children:[n,(0,G.jsx)(me,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":`true`})]}),(0,G.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:r})]})]}),at=()=>{let{t:e}=x(),t=j(),n=N();return t.data!==void 0&&t.data.length<=1&&n.data?.length===0?(0,G.jsx)(q,{to:`/network/users`,icon:M,title:e(`home.inviteTeam`),description:e(`home.inviteTeamDescription`)}):null},ot=()=>{let{t:e}=x(),t=V();return t.data!==void 0&&t.data.every(e=>e.revokedAt!==null)?(0,G.jsx)(q,{to:`/settings/api-tokens`,icon:Oe,title:e(`home.createToken`),description:e(`home.createTokenDescription`)}):null},st=()=>{let e=d(`users.manage`),t=d(`tokens.manage`);return(0,G.jsxs)(`div`,{className:`grid gap-4 empty:hidden md:grid-cols-2`,children:[e?(0,G.jsx)(at,{}):null,t?(0,G.jsx)(ot,{}):null]})},ct=({label:e,icon:t,link:n})=>(0,G.jsxs)(u,{...n,className:`group flex items-center gap-3 rounded-lg px-2 py-1.5 text-sm font-semibold outline-none hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,G.jsx)(v,{icon:t,size:`sm`}),(0,G.jsx)(`span`,{className:`flex-1`,children:e}),(0,G.jsx)(ve,{"aria-hidden":`true`,className:`size-4 text-muted-foreground transition-transform group-hover:translate-x-0.5`})]}),lt=({shortcuts:e})=>{let{t}=x();return e.length===0?null:(0,G.jsx)(R,{title:t(`home.shortcuts`),children:(0,G.jsx)(`ul`,{className:`-mx-2 space-y-0.5`,children:e.map(({key:e,label:t,icon:n,link:r})=>(0,G.jsx)(`li`,{children:(0,G.jsx)(ct,{label:t,icon:n,link:r})},e))})})},ut=()=>{let{t:e}=x(),t=(0,W.useId)(),n=d(`audit.read`),r=K(),i=nt(r.models);return(0,G.jsxs)(`section`,{"aria-labelledby":t,className:`space-y-6 pt-2`,children:[(0,G.jsx)(`h2`,{id:t,className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:e(`inbox.overview`)}),(0,G.jsx)(st,{}),(0,G.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 space-y-6 xl:col-span-2`,children:[n?(0,G.jsx)(et,{}):null,(0,G.jsx)(it,{...r})]}),(0,G.jsx)(lt,{shortcuts:i})]})]})},J=({label:e,value:t,icon:n,link:r})=>(0,G.jsxs)(u,{...r,className:`flex items-center gap-3 rounded-xl border bg-card px-4 py-4 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:[(0,G.jsx)(v,{icon:n,size:`md`}),(0,G.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm font-medium text-muted-foreground`,children:e}),(0,G.jsx)(`span`,{className:`text-xl leading-7 font-bold tabular-nums`,children:t??`–`})]}),dt=()=>{let{t:e}=x(),t=j();return(0,G.jsx)(J,{label:e(`home.admins`),value:t.data?.length,icon:Ie,link:m({to:`/network/users`})})},ft=({modelCount:e})=>{let{t}=x(),n=L(),r=d(`users.manage`);return(0,G.jsxs)(`div`,{className:P(`grid gap-3 sm:grid-cols-2`,r&&`sm:grid-cols-3`),children:[(0,G.jsx)(J,{label:t(`home.models`),value:e,icon:T,link:m({to:`/content`})}),(0,G.jsx)(J,{label:t(`home.locales`),value:n.data?.length,icon:De,link:m({to:`/settings/locales`})}),r?(0,G.jsx)(dt,{}):null]})},Y=({title:e,description:t,action:n,link:r,done:i})=>{let{t:a}=x(),o=(0,W.useId)();return(0,G.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 px-5 py-3.5 [counter-increment:step] sm:flex-nowrap`,children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,className:P(`flex size-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold tabular-nums`,i?`border-transparent bg-success-muted text-success`:`text-muted-foreground before:content-[counter(step)]`),children:i?(0,G.jsx)(E,{className:`size-4`}):null}),(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,G.jsx)(`p`,{id:o,className:P(`text-sm font-semibold`,i&&`text-muted-foreground`),children:e}),(0,G.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t})]}),(0,G.jsx)(`div`,{className:`basis-full pl-12 sm:basis-auto sm:pl-0`,children:i?(0,G.jsx)(h,{tone:`success`,label:a(`inbox.getStarted.done`)}):(0,G.jsx)(D,{variant:`outline`,size:`sm`,asChild:!0,children:(0,G.jsx)(u,{...r,"aria-describedby":o,children:n})})})]})},pt=()=>{let{t:e}=x(),t=j(),n=N(),r=(t.data?.length??0)>1||(n.data?.length??0)>0;return(0,G.jsx)(Y,{title:e(`inbox.getStarted.invite.title`),description:e(`inbox.getStarted.invite.description`),action:e(`inbox.getStarted.invite.action`),link:m({to:`/network/users`}),done:r})},mt=()=>{let{t:e}=x(),t=V().data?.some(e=>e.revokedAt===null)??!1;return(0,G.jsx)(Y,{title:e(`inbox.getStarted.token.title`),description:e(`inbox.getStarted.token.description`),action:e(`inbox.getStarted.token.action`),link:m({to:`/settings/api-tokens`}),done:t})},ht=({places:e})=>{let{t}=x(),n=d(`schema.create`),r=d(`users.manage`),i=d(`tokens.manage`),a=e.find(e=>e.canCreate),o=e.length>0,s=n||!!a||r||i;return(0,G.jsx)(R,{title:t(`inbox.getStarted.title`),flush:!0,children:s?(0,G.jsxs)(`ol`,{className:`divide-y [counter-reset:step]`,children:[n?(0,G.jsx)(Y,{title:t(`inbox.getStarted.type.title`),description:t(`inbox.getStarted.type.description`),action:t(`shell.nav.newType`),link:m({to:`/content/new`}),done:o}):null,o&&a?(0,G.jsx)(Y,{title:t(`inbox.getStarted.entry.title`),description:t(`inbox.getStarted.entry.description`,{place:a.label}),action:t(`palette.newEntry`,{name:a.label}),link:a.kind===`collection`?m({to:`/content/$modelKey/new`,params:{modelKey:a.apiKey}}):m({to:`/content/$modelKey`,params:{modelKey:a.apiKey}}),done:!1}):null,r?(0,G.jsx)(pt,{}):null,i?(0,G.jsx)(mt,{}):null]}):(0,G.jsx)(g,{compact:!0,icon:Me,title:t(`inbox.getStarted.waiting`),description:t(`inbox.getStarted.waitingDescription`)})})},gt=()=>{let e=be({limit:100}),t=Ce();return{findings:e,groups:(0,W.useMemo)(()=>{let n=new Map;for(let t of e.data?.pages.flatMap(e=>e.items)??[])n.set(t.rule,[...n.get(t.rule)??[],t]);let r=new Map(t.data?.rules.map(({rule:e,count:t})=>[e,t]));return Se.flatMap(e=>{let t=n.get(e)??[],i=Math.max(r.get(e)??0,t.length);return t.length>0?[{rule:e,count:i,findings:t}]:[]})},[e.data,t.data]),total:t.data?.rules.reduce((e,{count:t})=>e+t,0)}},_t=e=>{let t=o(),n=Ke(),[r,i]=(0,W.useState)(),s=We(r),[c,l]=(0,W.useState)({}),u=s.data?.status;return{propose:()=>{l({}),n.mutate({rule:e},{onSuccess:({runId:e})=>i(e)})},running:n.isPending||r!==void 0&&(u===void 0||u===`queued`||u===`running`),run:s.data,error:n.error??s.error,decisions:c,decide:(e,t)=>l(n=>({...n,[e]:t})),finishReview:()=>{Object.values(c).includes(`accepted`)&&t.invalidateQueries({queryKey:a.contentHealth.all})}}},vt=({proposal:e,decision:t,onDecide:n})=>{let{t:r}=x(),i=(0,W.useId)(),[a,o]=(0,W.useState)(e.proposedAlt),s=c();return(0,G.jsxs)(`li`,{className:`space-y-2 py-4 first:pt-0`,children:[(0,G.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,G.jsx)(`p`,{className:`min-w-0 truncate text-sm font-semibold`,children:e.filename}),t?(0,G.jsx)(h,{size:`sm`,tone:t===`accepted`?`success`:`muted`,label:r(t===`accepted`?`assist.fixes.accepted`:`assist.fixes.rejected`)}):null]}),t?null:(0,G.jsxs)(`form`,{className:`space-y-2`,onSubmit:t=>{t.preventDefault(),s.mutate({id:e.assetId,input:{alt:a.trim(),expectedVersion:e.assetVersion}},{onSuccess:()=>n(`accepted`)})},children:[(0,G.jsx)(_e,{htmlFor:i,children:r(`content.media.altLabel`)}),(0,G.jsx)(ge,{id:i,value:a,onChange:e=>o(e.target.value)}),s.error?(0,G.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:pe(s.error)}):null,(0,G.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,G.jsxs)(D,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n(`rejected`),children:[(0,G.jsx)(ee,{"aria-hidden":`true`}),r(`assist.fixes.reject`)]}),(0,G.jsxs)(te,{size:`sm`,pending:s.isPending,pendingLabel:r(`common.saving`),disabled:a.trim()===``,children:[(0,G.jsx)(E,{"aria-hidden":`true`}),r(`assist.fixes.accept`)]})]})]})]})},yt=({open:e,onOpenChange:t,model:n,proposals:r,decisions:i,onDecide:a})=>{let{t:o}=x();return(0,G.jsx)(re,{open:e,onOpenChange:t,children:(0,G.jsxs)(ue,{size:`md`,children:[(0,G.jsxs)(le,{children:[(0,G.jsx)(ce,{children:o(`assist.fixes.altTitle`)}),(0,G.jsx)(ie,{children:o(`assist.fixes.altDescription`,{model:n})})]}),(0,G.jsx)(se,{children:(0,G.jsx)(`ul`,{"aria-label":o(`assist.fixes.altTitle`),className:`divide-y`,children:r.map(e=>(0,G.jsx)(vt,{proposal:e,decision:i[e.assetId],onDecide:t=>a(e.assetId,t)},e.assetId))})}),(0,G.jsx)(ae,{children:(0,G.jsx)(D,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:o(`common.close`)})})]})})},bt=({result:e})=>{let{t}=x();return(0,G.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-meta text-muted-foreground`,children:[e.changeSetId?(0,G.jsx)(Re,{to:`/changes/$changeSetId`,params:{changeSetId:e.changeSetId},children:t(`assist.fixes.openSet`,{count:e.written.length})}):(0,G.jsx)(`span`,{children:t(`assist.fixes.nothingWritten`)}),e.skipped.length>0?(0,G.jsx)(`span`,{children:t(`assist.fixes.skipped`,{count:e.skipped.length})}):null]})},xt=({rule:e})=>{let{t}=x(),n=_t(e),[r,i]=(0,W.useState)(!1),{run:a}=n,o=a?.status===`succeeded`?a.result:null;return(0,G.jsxs)(`div`,{className:`space-y-1 px-5 pb-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsx)(Ge,{variant:`outline`,pending:n.running,pendingLabel:t(`assist.fixes.running`),onClick:n.propose,children:t(a?`assist.fixes.again`:`assist.fixes.propose`)}),o?.rule===`altMissing`?o.proposals.length>0?(0,G.jsx)(D,{type:`button`,size:`sm`,onClick:()=>i(!0),children:t(`assist.fixes.review`,{count:o.proposals.length})}):(0,G.jsx)(`span`,{className:`text-meta text-muted-foreground`,children:t(`assist.fixes.none`)}):null,o?.rule===`localeMissing`?(0,G.jsx)(bt,{result:o}):null]}),(0,G.jsx)(qe,{error:n.error}),a?.status===`failed`?(0,G.jsx)(`p`,{role:`alert`,className:`text-meta text-destructive`,children:Ue(a.error?.code??`INTERNAL_ERROR`)}):null,o?.rule===`altMissing`&&a?(0,G.jsx)(yt,{open:r,onOpenChange:e=>{i(e),e||n.finishReview()},model:a.model,proposals:o.proposals,decisions:n.decisions,onDecide:n.decide}):null]})},St=(e,t)=>{let n=t?.split(`/`)[1];if(e&&n)return e.fields.find(e=>e.apiKey===decodeURIComponent(n))?.label},X=(e,t,n,r)=>{let i=typeof e.params.locale==`string`?e.params.locale:e.locale;return{field:St(t,e.path)??r,locale:i===`*`?``:n(i),count:typeof e.params.days==`number`?e.params.days:0}},Ct=({finding:e,model:t,localeLabel:n,showLocale:r})=>{let{t:i}=x(),a=(0,W.useId)(),o=X(e,t,n,i(`inbox.aField`)),s=e.entryTitle??i(`content.untitled`);return(0,G.jsxs)(`li`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2 px-5 py-3 sm:flex-nowrap`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,G.jsx)(`p`,{id:a,className:`truncate text-sm font-semibold`,children:s}),(0,G.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t?i(`inbox.findingMeta`,{place:t.label,sentence:i(A[e.rule],o)}):i(A[e.rule],o)})]}),r&&e.locale!==`*`?(0,G.jsx)(y,{variant:`outline`,title:n(e.locale),className:`uppercase`,children:e.locale}):null,(0,G.jsx)(D,{variant:`outline`,size:`sm`,asChild:!0,children:(0,G.jsx)(u,{...H(e.modelKey,e.entryId,t?.kind,{locale:e.locale,...e.path?{path:e.path}:{}}),"aria-describedby":a,children:i(we[e.rule],o)})})]})},wt=e=>Ye.includes(e),Tt=({group:e,models:t,localeLabel:n,showLocale:r})=>{let{t:i}=x(),a=(0,W.useId)(),[o,s]=(0,W.useState)(!1),c=He(),l=o?e.findings:e.findings.slice(0,5),u=e.findings.length-l.length;return(0,G.jsxs)(`section`,{"aria-labelledby":a,className:`py-1`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-3 px-5 pt-3 pb-1`,children:[(0,G.jsx)(v,{icon:xe[e.rule],size:`sm`,tone:`warning`}),(0,G.jsx)(`h3`,{id:a,className:`min-w-0 flex-1 truncate text-sm font-semibold`,children:i(O[e.rule])}),(0,G.jsx)(y,{variant:`secondary`,className:`tabular-nums`,children:e.count.toLocaleString()})]}),c&&wt(e.rule)?(0,G.jsx)(xt,{rule:e.rule}):null,(0,G.jsx)(`ul`,{className:`divide-y`,children:l.map(e=>(0,G.jsx)(Ct,{finding:e,model:t?.get(e.modelId),localeLabel:n,showLocale:r},e.id))}),u>0?(0,G.jsx)(`div`,{className:`px-5 pb-2`,children:(0,G.jsx)(D,{variant:`ghost`,size:`sm`,onClick:()=>s(!0),children:i(`inbox.showAll`,{count:e.findings.length})})}):null]})},Et=({findings:e,groups:t})=>{let{t:n}=x(),{schema:r}=z(),i=L(),a=(0,W.useMemo)(()=>new Map((i.data??[]).map(e=>[e.code,e.label])),[i.data]),o=(0,W.useCallback)(e=>a.get(e)??e,[a]),s=a.size>1;return(0,G.jsx)(R,{title:n(`inbox.needsYou`),flush:!0,children:(0,G.jsx)(I,{query:e,loadingRows:4,isEmpty:()=>t.length===0,empty:(0,G.jsx)(g,{compact:!0,icon:ye,title:n(`inbox.allClear`),description:n(`inbox.allClearDescription`)}),children:()=>(0,G.jsxs)(`div`,{className:`divide-y`,children:[t.map(e=>(0,G.jsx)(Tt,{group:e,models:r?.models,localeLabel:o,showLocale:s},e.rule)),e.hasNextPage?(0,G.jsx)(`div`,{className:`px-5 py-3`,children:(0,G.jsx)(D,{variant:`outline`,size:`sm`,disabled:e.isFetchingNextPage,onClick:()=>void e.fetchNextPage(),children:e.isFetchingNextPage?n(`common.loading`):n(`inbox.loadMore`)})}):null]})})})},Z=({title:e,meta:t,link:n,at:r})=>(0,G.jsxs)(`li`,{className:`flex items-center gap-3 px-5 py-2.5`,children:[(0,G.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-0.5`,children:[(0,G.jsx)(w,{asChild:!0,className:`block truncate text-sm`,children:(0,G.jsx)(u,{...n,children:e})}),(0,G.jsx)(`p`,{className:`truncate text-meta text-muted-foreground`,children:t})]}),r?(0,G.jsx)(`time`,{dateTime:r,title:C(r),className:`shrink-0 text-meta whitespace-nowrap text-muted-foreground`,children:S(r)}):null]}),Q=e=>{let{t}=x(),{schema:n}=z(),r=(0,W.useMemo)(()=>{let t=new Map;for(let{modelKey:n,entryId:r}of e)t.set(n,[...new Set([...t.get(n)??[],r])]);return[...t].flatMap(([e,t])=>{let r=n?B(n,e):void 0;return r?[{model:r,entryIds:t}]:[]})},[e,n]),i=(0,W.useCallback)(e=>new Map(e.flatMap((e,n)=>{let i=r[n]?.model;return i&&e.data?e.data.items.map(e=>[e.id,Ve(i,e,t(`content.untitled`))]):[]})),[r,t]);return l({queries:r.map(({model:e,entryIds:t})=>{let n=ze(e);return Be(e.apiKey,{filters:{id:{$in:t}},pageSize:t.length,...n?{fields:[n.apiKey]}:{}})}),combine:i})},Dt=()=>{let{schema:e}=z(),t=i({queryKey:a.currentSnapshot,queryFn:()=>s.snapshots.current(),meta:{silent:!0}}),n=t.data?.snapshot??0,r=k(6,n,n>0),o=(0,W.useMemo)(()=>(r.data?.items??[]).flatMap(e=>{let t=e.locales.find(e=>e.change!==`unpublished`)?.change;return t===`published`||t===`updated`?[{item:e,change:t}]:[]}),[r.data]),c=Q((0,W.useMemo)(()=>o.slice(0,6).map(({item:e})=>({modelKey:e.modelKey,entryId:e.id})),[o])),l=(0,W.useMemo)(()=>o.slice(0,6).flatMap(({item:t,change:n})=>{let r=e?.models.get(t.modelId),i=c.get(t.id);return r&&i!==void 0?[{id:t.id,title:i,modelKey:r.apiKey,modelLabel:r.label,kind:r.kind,change:n}]:[]}),[o,e,c]),u=t.error??r.error,d=p(u),f=t.isSuccess&&n===0||d;return{items:d?[]:l,isPending:!f&&(t.isPending||r.isPending||e===void 0),error:d?null:u}},Ot={published:`inbox.wentLive`,updated:`inbox.liveUpdated`},$=()=>{let{t:e}=x(),{items:t,isPending:n,error:r}=Dt();return(0,G.jsx)(R,{title:e(`inbox.recentlyPublished`),flush:!0,children:r?(0,G.jsx)(_,{error:r}):n?(0,G.jsx)(b,{rows:3,className:`p-5`}):t.length===0?(0,G.jsx)(g,{compact:!0,icon:je,title:e(`inbox.nothingPublished`),description:e(`inbox.nothingPublishedDescription`)}):(0,G.jsx)(`ul`,{className:`divide-y`,children:t.map(t=>(0,G.jsx)(Z,{title:t.title,meta:e(Ot[t.change],{place:t.modelLabel}),link:H(t.modelKey,t.id,t.kind)},`${t.modelKey}:${t.id}`))})})},kt={publish:`inbox.scheduledPublish`,unpublish:`inbox.scheduledUnpublish`},At=()=>{let{t:e}=x(),t=Je({status:`scheduled`,limit:50}),{schema:n}=z(),r=(0,W.useMemo)(()=>(t.data?.items??[]).filter(e=>e.modelKey!==null).sort((e,t)=>e.runAt.localeCompare(t.runAt)).slice(0,5),[t.data]),i=Q((0,W.useMemo)(()=>r.map(e=>({modelKey:e.modelKey??``,entryId:e.entryId})),[r]));return(0,G.jsx)(R,{title:e(`inbox.scheduledSoon`),flush:!0,actions:(0,G.jsx)(D,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,G.jsx)(u,{to:`/publishing/scheduled`,children:e(`inbox.viewAll`)})}),children:(0,G.jsx)(I,{query:t,loadingRows:3,isEmpty:()=>r.length===0,empty:(0,G.jsx)(g,{compact:!0,icon:he,title:e(`inbox.nothingScheduled`),description:e(`inbox.nothingScheduledDescription`)}),children:()=>(0,G.jsx)(`ul`,{className:`divide-y`,children:r.map(t=>{let r=t.modelKey??``,a=n?B(n,r):void 0;return(0,G.jsx)(Z,{title:i.get(t.entryId)??e(`content.untitled`),meta:e(kt[t.action],{place:a?.label??r}),link:H(r,t.entryId,a?.kind,{locale:t.locale}),at:t.runAt},t.id)})})})})},jt=({isAdmin:e,canSeeSchedules:t,findingGroups:n})=>{let r=(0,G.jsx)(Et,{...n});return e?(0,G.jsxs)(G.Fragment,{children:[r,(0,G.jsxs)(`div`,{className:`grid items-start gap-6 lg:grid-cols-2`,children:[t?(0,G.jsx)(At,{}):null,(0,G.jsx)($,{})]}),(0,G.jsx)(ut,{})]}):(0,G.jsxs)(`div`,{className:`grid items-start gap-6 xl:grid-cols-3`,children:[(0,G.jsx)(`div`,{className:`min-w-0 xl:col-span-2`,children:r}),(0,G.jsx)(`div`,{className:`min-w-0`,children:(0,G.jsx)($,{})})]})},Mt=fe(`/app/`)({component:()=>{let{t:e}=x(),{data:t}=f(),n=F(`model`),r=Ee(),{models:i}=K(),a=gt(),o=d(`publishing.manage`),s=d(`users.manage`),c=o||s,l=t?.user.name,u=n.data?.length===0,{total:p}=a,m=u||p===void 0?void 0:p===0?e(`inbox.metaClear`):e(`inbox.meta`,{count:p});return(0,G.jsxs)(ne,{children:[(0,G.jsx)(oe,{title:l?e(`inbox.title`,{name:l}):e(`inbox.titleFallback`),meta:m}),c?(0,G.jsx)(ft,{modelCount:i?.length}):null,n.isPending||u&&r===void 0?(0,G.jsx)(b,{rows:3}):u?(0,G.jsx)(ht,{places:r??[]}):(0,G.jsx)(jt,{isAdmin:c,canSeeSchedules:o,findingGroups:a})]})}});export{Mt as inboxLazyRoute};
2
+ //# sourceMappingURL=inbox-B8XZ8L6s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox-B8XZ8L6s.js","names":["Row","useMemo","FilePlus2","InviteStep","TokenStep","useId","useId","useMemo","useState","useId","useState","useState","useId","useId","useState","useMemo","useCallback","useMemo","useCallback","useMemo","useMemo","_Fragment","__toESM","require_jsx_runtime","isModelDefinition","useQuery","queryKeys","useQueryClient","apiClient","useUpdateMediaAsset","useQueries","Link","useHasGlobalPermission","useMe","isForbidden","linkOptions","X","SubmitButton","Page","Sheet","SheetDescription","SheetFooter","PageHeader","SheetBody","SheetTitle","StatusChip","EmptyState","SheetHeader","ErrorState","IconTile","Badge","SheetContent","LoadingState","useTranslation","createLucideIcon","formatRelativeTime","formatDateTime","RowTitle","createLazyRoute","describeError","ArrowRight","Boxes","CalendarClock","Check","Button","Input","Label","ChevronRight","CircleCheck","useContentHealthFindings","RULE_ICONS","RULE_ORDER","useContentHealthSummary","RULE_TITLE_KEYS","useRecentSnapshotChanges","RULE_SENTENCE_KEYS","RULE_FIX_KEYS","FilePlusCorner","usePlaces","Globe","KeyRound","Plus","ScrollText","Send","Sparkles","useUsers","useAuditEvents","UserPlus","useAuditLabels","useInvitations","auditTargetName","Users","cn","UserAvatar","TextLink","useDefinitions","QueryView","titleFieldOf","entryListQueryOptions","labelOf","useLocales","useAssistEnabled","describeAssistErrorCode","useContentOpsRun","AssistButton","useProposeContentOps","AssistError","Panel","useSchedules","useContentSchema","findModelByKey","useApiTokens","entryLink","CONTENT_OPS_RULES","__iconData","ImageUp","import_react","require_react","NAMED_TARGET_TYPES","lowerFirst","text","language","import_jsx_runtime","Row$1","actor","event","action","actionLabel","targetName","targetType","targetLabel","i18n","Activity","events","t","data","useModelSummaries","query","definition","a","b","createEntryLink","only","models","useShortcuts","canCreateModels","canUpload","canInvite","KIND_LABEL_KEYS","Models","canCreate","model","NextStep","title","description","InviteStep$1","users","invitations","TokenStep$1","tokens","token","SetupSteps","canCreateTokens","Shortcut","link","label","Shortcuts","shortcuts","key","Dashboard","headingId","canReadAudit","modelSummaries","Stat","value","Admins","Stats","locales","canSeeUsers","modelCount","Step","titleId","done","InviteStep","TokenStep","GetStarted","canCreateType","firstPlace","places","place","hasType","anyStep","useFindingGroups","findings","summary","byRule","finding","page","counts","rule","count","items","sum","useContentOpsProposal","queryClient","start","runId","setRunId","run","decisions","setDecisions","status","id","current","assetId","decision","Row","alt","setAlt","proposal","update","onDecide","AltReview","proposals","onOpenChange","LocaleResult","result","ProposeFixes","reviewOpen","setReviewOpen","next","fieldLabelOf","apiKey","path","field","findingParams","locale","fallbackField","localeLabel","Finding","params","showLocale","isContentOpsRule","RuleGroup","expanded","setExpanded","assistEnabled","shown","group","hidden","NeedsYou","names","code","groups","schema","EntryRow","meta","at","useEntryTitles","byModel","ids","refs","modelKey","entryId","entryIds","combine","results","index","item","useRecentlyPublished","to","changes","live","change","titles","error","forbidden","nothingYet","CHANGE_KEYS","RecentlyPublished","isPending","ACTION_KEYS","ScheduledSoon","schedules","soonest","schedule","ContentInbox","needsYou","findingGroups","isAdmin","canSeeSchedules","inboxLazyRoute","me","definitions","canManageUsers","name","empty","total"],"sources":["../../../../packages/client/src/admin/assistTypes.ts","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/image-up.mjs","../../src/features/Home/constants.ts","../../src/features/Home/helpers/lowerFirst.ts","../../src/features/Home/Activity/index.tsx","../../src/features/Home/hooks/useModelSummaries.ts","../../src/features/Home/hooks/useShortcuts.ts","../../src/features/Home/Models/index.tsx","../../src/features/Home/NextStep/index.tsx","../../src/features/Home/SetupSteps/index.tsx","../../src/features/Home/Shortcut/index.tsx","../../src/features/Home/Shortcuts/index.tsx","../../src/features/Home/index.tsx","../../src/features/Home/Stat/index.tsx","../../src/features/Home/Stats/index.tsx","../../src/features/Inbox/GetStarted/Step/index.tsx","../../src/features/Inbox/GetStarted/index.tsx","../../src/features/Inbox/hooks/useFindingGroups.ts","../../src/features/Inbox/hooks/useContentOpsProposal.ts","../../src/features/Inbox/ProposeFixes/AltReview/Row/index.tsx","../../src/features/Inbox/ProposeFixes/AltReview/index.tsx","../../src/features/Inbox/ProposeFixes/LocaleResult/index.tsx","../../src/features/Inbox/ProposeFixes/index.tsx","../../src/features/Inbox/helpers/findingParams.ts","../../src/features/Inbox/NeedsYou/Finding/index.tsx","../../src/features/Inbox/NeedsYou/RuleGroup/index.tsx","../../src/features/Inbox/NeedsYou/index.tsx","../../src/features/Inbox/EntryRow/index.tsx","../../src/features/Inbox/hooks/useEntryTitles.ts","../../src/features/Inbox/hooks/useRecentlyPublished.ts","../../src/features/Inbox/RecentlyPublished/index.tsx","../../src/features/Inbox/ScheduledSoon/index.tsx","../../src/features/Inbox/index.tsx","../../src/app/lazyRoutes/inbox.tsx"],"sourcesContent":["import type { SchemaDefinition } from '@shapio/schema';\n\n/** Editor assists (plan agentic-ecosystem §A0). Agents propose, people ship: nothing here publishes. */\nexport type AssistProvider = 'anthropic' | 'openai' | 'openai-compatible';\n\nexport type AssistUsage = { month: string; runs: number; inputTokens: number; outputTokens: number };\n\n/** `usage` only for admins with `changes.manage`; provider and model only while assist is on. */\nexport type AssistStatus = {\n enabled: boolean;\n provider?: AssistProvider;\n model?: string;\n usage?: AssistUsage;\n};\n\nexport type AltTextInput = { assetId: string; locale?: string };\nexport type AltTextResult = { alt: string; model: string };\n\n/** A model-written text; `truncated` when it was cut to the field's or the request's limit. */\nexport type AssistTextResult = { text: string; truncated: boolean; model: string };\n\nexport type SummarizeInput = { modelKey: string; entryId: string; locale?: string; fieldApiKey: string };\n\nexport type TranslateInput = { modelKey: string; entryId: string; from: string; to: string };\nexport type AssistIssue = { path: string; code: string; message: string };\n/** `data` is in the editor's save format: save it as the `to` locale's draft. */\nexport type TranslateResult = { data: Record<string, unknown>; issues: AssistIssue[]; model: string };\n\nexport type RewriteInput = { text: string; instruction: string; maxLength?: number };\n\nexport type SchemaDraftInput = { description: string };\n/** New definitions with new stable IDs, in save order (references first). Nothing is written. */\nexport type SchemaDraftResult = { definitions: SchemaDefinition[]; model: string };\n\nexport const CONTENT_OPS_RULES = ['altMissing', 'localeMissing'] as const;\nexport type ContentOpsRule = (typeof CONTENT_OPS_RULES)[number];\nexport type ContentOpsInput = { rule: ContentOpsRule; modelKey?: string; fromLocale?: string };\nexport type ContentOpsStatus = 'queued' | 'running' | 'succeeded' | 'failed';\n\n/** One library asset's proposed alt text; apply it with the media update at `assetVersion`. */\nexport type AltProposal = {\n assetId: string;\n filename: string;\n currentAlt: string | null;\n proposedAlt: string;\n assetVersion: number;\n findingCount: number;\n};\n\n/** A finding the run left alone, and why (an error code or a reason such as `publishesOnSave`). */\nexport type ContentOpsSkip = {\n key: string;\n entryId?: string;\n assetId?: string;\n locale?: string;\n reason: string;\n detail?: unknown;\n};\nexport type ContentOpsWritten = { entryId: string; modelKey: string; locale: string; version: number };\n\nexport type AltMissingResult = { rule: 'altMissing'; proposals: AltProposal[]; skipped: ContentOpsSkip[] };\n/** The drafts were written into the change set `changeSetId` (null when nothing was written). */\nexport type LocaleMissingResult = {\n rule: 'localeMissing';\n changeSetId: string | null;\n fromLocale: string;\n written: ContentOpsWritten[];\n skipped: ContentOpsSkip[];\n};\nexport type ContentOpsResult = AltMissingResult | LocaleMissingResult;\n\nexport type ContentOpsRun = {\n runId: string;\n rule: ContentOpsRule;\n status: ContentOpsStatus;\n model: string;\n createdAt: string;\n finishedAt: string | null;\n error: { code: string } | null;\n /** Once succeeded (null before, or partial progress while running). */\n result: ContentOpsResult | null;\n};\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"image-up\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21\",\n key: \"9csbqa\"\n }\n ],\n [\"path\", { d: \"m14 19.5 3-3 3 3\", key: \"9vmjn0\" }],\n [\"path\", { d: \"M17 22v-5.5\", key: \"1aa6fl\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }]\n ]\n};\n__iconData.node;\nconst ImageUp = createLucideIcon(__iconData);\n\nexport { __iconData, ImageUp as default };\n//# sourceMappingURL=image-up.mjs.map\n","/** Audit events in the Recent activity panel. */\nexport const RECENT_ACTIVITY_LIMIT = 8;\n\n/** Models listed in the Models panel; the rest are one click away. */\nexport const MODELS_PANEL_LIMIT = 6;\n\n/** Target types whose name is worth a second line in Recent activity (entries, models, people). */\nexport const NAMED_TARGET_TYPES: ReadonlySet<string> = new Set([\n 'entry',\n 'model',\n 'component',\n 'admin_user',\n 'app_user',\n]);\n","/**\n * \"Signed in\" → \"signed in\", so an action label reads on after the actor's name (\"Ada Lovelace signed in\").\n * Labels start with a verb, so only the first letter changes (\"Created API token\" → \"created API token\").\n */\nexport const lowerFirst = (text: string, language: string): string =>\n text.charAt(0).toLocaleLowerCase(language) + text.slice(1);\n","import type { AuditEvent } from '@shapio/client';\nimport { Link } from '@tanstack/react-router';\nimport { ScrollText } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useAuditEvents } from '@/api/audit';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Panel } from '@/components/Panel';\nimport { QueryView } from '@/components/QueryView';\nimport { StatusChip } from '@/components/StatusChip';\nimport { Button } from '@/components/ui/button';\nimport { UserAvatar } from '@/components/UserAvatar';\nimport { auditTargetName } from '@/helpers/auditTargetName';\nimport { formatDateTime, formatRelativeTime } from '@/helpers/formatDate';\nimport { useAuditLabels } from '@/hooks/useAuditLabels';\nimport { NAMED_TARGET_TYPES, RECENT_ACTIVITY_LIMIT } from '../constants';\nimport { lowerFirst } from '../helpers/lowerFirst';\n\ntype RowProps = { event: AuditEvent };\n\n/** \"Ada Lovelace signed in\", with the entry, model or user it touched beneath when it has a name. */\nconst Row = ({ event }: RowProps) => {\n const { t, i18n } = useTranslation();\n const { actionLabel, targetLabel } = useAuditLabels();\n const actor = event.actorName ?? event.actorEmail ?? t(`audit.actorTypes.${event.actorType}`);\n const action = actionLabel(event.action);\n const targetName =\n event.targetType && NAMED_TARGET_TYPES.has(event.targetType)\n ? auditTargetName(event.metadata)\n : undefined;\n const targetType = event.targetType ? targetLabel(event.targetType) : undefined;\n return (\n <li className=\"flex items-center gap-3 px-5 py-2.5\">\n <UserAvatar name={actor} size=\"sm\" />\n <div className=\"min-w-0 flex-1 space-y-0.5\">\n <p className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 gap-y-1 text-sm\" title={event.action}>\n <span className=\"font-semibold\">{actor}</span>\n {action ? (\n <span>{lowerFirst(action, i18n.language)}</span>\n ) : (\n <span className=\"font-mono text-xs\">{event.action}</span>\n )}\n {event.outcome === 'failure' ? (\n <StatusChip tone=\"danger\" size=\"sm\" label={t('audit.failure')} />\n ) : null}\n </p>\n {targetName ? (\n <p className=\"truncate text-meta text-muted-foreground\">\n {targetType ? t('home.activityTarget', { type: targetType, name: targetName }) : targetName}\n </p>\n ) : null}\n </div>\n <time\n dateTime={event.occurredAt}\n title={formatDateTime(event.occurredAt)}\n className=\"shrink-0 text-meta whitespace-nowrap text-muted-foreground\"\n >\n {formatRelativeTime(event.occurredAt)}\n </time>\n </li>\n );\n};\n\n/** The last few audit events. Mounted only for admins who may read the audit log. */\nexport const Activity = () => {\n const { t } = useTranslation();\n const events = useAuditEvents({ limit: RECENT_ACTIVITY_LIMIT });\n return (\n <Panel\n title={t('home.activity')}\n flush\n actions={\n <Button variant=\"ghost\" size=\"sm\" asChild>\n <Link to=\"/network/audit-log\">{t('home.viewAuditLog')}</Link>\n </Button>\n }\n >\n <QueryView\n query={events}\n loadingRows={4}\n isEmpty={(data) => data.items.length === 0}\n empty={<EmptyState size=\"panel\" icon={ScrollText} title={t('home.noActivity')} />}\n >\n {(data) => (\n <ul className=\"divide-y\">\n {data.items.map((event) => (\n <Row key={event.id} event={event} />\n ))}\n </ul>\n )}\n </QueryView>\n </Panel>\n );\n};\n","import type { ModelKind } from '@shapio/schema';\nimport { isModelDefinition } from '@shapio/schema';\nimport { useMemo } from 'react';\nimport { useDefinitions } from '@/api/schema';\n\nexport type ModelSummary = { id: string; label: string; apiKey: string; kind: ModelKind; version: number };\n\n/** Collections and singletons, by label, with their active version; `models` is undefined while loading. */\nexport const useModelSummaries = () => {\n const query = useDefinitions('model');\n const models = useMemo<ModelSummary[] | undefined>(\n () =>\n query.data\n ?.flatMap(({ definition, version }) =>\n isModelDefinition(definition)\n ? [\n {\n id: definition.id,\n label: definition.label,\n apiKey: definition.apiKey,\n kind: definition.kind,\n version,\n },\n ]\n : [],\n )\n .sort((a, b) => a.label.localeCompare(b.label)),\n [query.data],\n );\n return { query, models };\n};\n","import { linkOptions, type LinkOptions } from '@tanstack/react-router';\nimport { Boxes, FilePlus2, ImageUp, UserPlus, type LucideIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport type { ModelSummary } from './useModelSummaries';\n\nexport type ShortcutItem = { key: string; label: string; icon: LucideIcon; link: LinkOptions };\n\n/** \"Create entry\" goes straight to the model when there is exactly one; otherwise to the content screen. */\nconst createEntryLink = (models: readonly ModelSummary[]): LinkOptions => {\n const [only] = models;\n if (models.length !== 1 || !only) {\n return linkOptions({ to: '/content' });\n }\n return only.kind === 'collection'\n ? linkOptions({ to: '/content/$modelKey/new', params: { modelKey: only.apiKey } })\n : linkOptions({ to: '/content/$modelKey', params: { modelKey: only.apiKey } });\n};\n\n/** The shortcuts this admin can use: entries need a model; the rest need their permission. */\nexport const useShortcuts = (models: readonly ModelSummary[] | undefined): ShortcutItem[] => {\n const { t } = useTranslation();\n const canCreateModels = useHasGlobalPermission('schema.create');\n const canUpload = useHasGlobalPermission('media.write');\n const canInvite = useHasGlobalPermission('users.manage');\n return [\n ...(models && models.length > 0\n ? [{ key: 'entry', label: t('home.createEntry'), icon: FilePlus2, link: createEntryLink(models) }]\n : []),\n ...(canCreateModels\n ? [{ key: 'model', label: t('home.newModel'), icon: Boxes, link: linkOptions({ to: '/content/new' }) }]\n : []),\n ...(canUpload\n ? [{ key: 'media', label: t('home.uploadMedia'), icon: ImageUp, link: linkOptions({ to: '/media' }) }]\n : []),\n ...(canInvite\n ? [\n {\n key: 'invite',\n label: t('home.invite'),\n icon: UserPlus,\n link: linkOptions({ to: '/network/users' }),\n },\n ]\n : []),\n ];\n};\n","import { Link } from '@tanstack/react-router';\nimport { Boxes, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Panel } from '@/components/Panel';\nimport { QueryView } from '@/components/QueryView';\nimport { RowTitle } from '@/components/RowTitle';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { MODELS_PANEL_LIMIT } from '../constants';\nimport type { useModelSummaries } from '../hooks/useModelSummaries';\n\ntype ModelsProps = ReturnType<typeof useModelSummaries>;\n\nconst KIND_LABEL_KEYS = { collection: 'home.kinds.collection', singleton: 'home.kinds.singleton' } as const;\n\n/** The first few content types with their kind and version, linking to their structure. */\nexport const Models = ({ query, models }: ModelsProps) => {\n const { t } = useTranslation();\n const canCreate = useHasGlobalPermission('schema.create');\n return (\n <Panel\n title={t('home.models')}\n flush\n actions={\n models && models.length > 0 ? (\n <Button variant=\"ghost\" size=\"sm\" asChild>\n <Link to=\"/content\">{t('home.allModels')}</Link>\n </Button>\n ) : null\n }\n >\n <QueryView\n query={query}\n loadingRows={3}\n isEmpty={() => models?.length === 0}\n empty={\n <EmptyState\n size=\"panel\"\n icon={Boxes}\n title={t('home.noModels')}\n action={\n canCreate ? (\n <Button asChild>\n <Link to=\"/content/new\">\n <Plus aria-hidden=\"true\" />\n {t('home.newModel')}\n </Link>\n </Button>\n ) : null\n }\n />\n }\n >\n {() => (\n <ul className=\"divide-y\">\n {models?.slice(0, MODELS_PANEL_LIMIT).map((model) => (\n <li key={model.id} className=\"flex h-11 items-center gap-3 px-5\">\n <span className=\"flex min-w-0 flex-1 items-baseline gap-2\">\n <RowTitle asChild className=\"truncate\">\n <Link\n to=\"/content/$modelKey\"\n params={{ modelKey: model.apiKey }}\n search={{ tab: 'structure' }}\n >\n {model.label}\n </Link>\n </RowTitle>\n <span className=\"truncate font-mono text-xs text-muted-foreground\">{model.apiKey}</span>\n </span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[model.kind])}</Badge>\n <span className=\"w-10 text-right text-meta text-muted-foreground tabular-nums\">\n {t('home.version', { version: model.version })}\n </span>\n </li>\n ))}\n </ul>\n )}\n </QueryView>\n </Panel>\n );\n};\n","import { Link, type LinkProps } from '@tanstack/react-router';\nimport { ArrowRight, type LucideIcon } from 'lucide-react';\nimport { IconTile } from '@/components/IconTile';\n\ntype NextStepProps = { to: LinkProps['to']; icon: LucideIcon; title: string; description: string };\n\n/** A setup card: shown on Home only while the step still needs doing. */\nexport const NextStep = ({ to, icon, title, description }: NextStepProps) => (\n <Link\n to={to}\n className=\"group flex items-start gap-4 rounded-xl border bg-card p-5 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <IconTile icon={icon} size=\"lg\" />\n <span className=\"min-w-0 flex-1 space-y-1\">\n <span className=\"flex items-center gap-1 font-semibold\">\n {title}\n <ArrowRight className=\"size-4 transition-transform group-hover:translate-x-0.5\" aria-hidden=\"true\" />\n </span>\n <span className=\"block text-meta text-muted-foreground\">{description}</span>\n </span>\n </Link>\n);\n","import { KeyRound, UserPlus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useApiTokens } from '@/api/tokens';\nimport { useInvitations, useUsers } from '@/api/users';\nimport { NextStep } from '../NextStep';\n\n/** Until a second admin exists or is invited. Mounted only for admins who manage users. */\nconst InviteStep = () => {\n const { t } = useTranslation();\n const users = useUsers();\n const invitations = useInvitations();\n const alone = users.data !== undefined && users.data.length <= 1 && invitations.data?.length === 0;\n return alone ? (\n <NextStep\n to=\"/network/users\"\n icon={UserPlus}\n title={t('home.inviteTeam')}\n description={t('home.inviteTeamDescription')}\n />\n ) : null;\n};\n\n/** Until a working API token exists. Mounted only for admins who manage tokens. */\nconst TokenStep = () => {\n const { t } = useTranslation();\n const tokens = useApiTokens();\n const none = tokens.data !== undefined && tokens.data.every((token) => token.revokedAt !== null);\n return none ? (\n <NextStep\n to=\"/settings/api-tokens\"\n icon={KeyRound}\n title={t('home.createToken')}\n description={t('home.createTokenDescription')}\n />\n ) : null;\n};\n\n/** Setup cards that disappear once done; the row collapses when none is left. */\nexport const SetupSteps = () => {\n const canInvite = useHasGlobalPermission('users.manage');\n const canCreateTokens = useHasGlobalPermission('tokens.manage');\n return (\n <div className=\"grid gap-4 empty:hidden md:grid-cols-2\">\n {canInvite ? <InviteStep /> : null}\n {canCreateTokens ? <TokenStep /> : null}\n </div>\n );\n};\n","import { Link, type LinkOptions } from '@tanstack/react-router';\nimport { ChevronRight, type LucideIcon } from 'lucide-react';\nimport { IconTile } from '@/components/IconTile';\n\ntype ShortcutProps = { label: string; icon: LucideIcon; link: LinkOptions };\n\n/** One row of the Shortcuts panel. */\nexport const Shortcut = ({ label, icon, link }: ShortcutProps) => (\n <Link\n {...link}\n className=\"group flex items-center gap-3 rounded-lg px-2 py-1.5 text-sm font-semibold outline-none hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <IconTile icon={icon} size=\"sm\" />\n <span className=\"flex-1\">{label}</span>\n <ChevronRight\n aria-hidden=\"true\"\n className=\"size-4 text-muted-foreground transition-transform group-hover:translate-x-0.5\"\n />\n </Link>\n);\n","import { useTranslation } from 'react-i18next';\nimport { Panel } from '@/components/Panel';\nimport type { ShortcutItem } from '../hooks/useShortcuts';\nimport { Shortcut } from '../Shortcut';\n\ntype ShortcutsProps = { shortcuts: readonly ShortcutItem[] };\n\nexport const Shortcuts = ({ shortcuts }: ShortcutsProps) => {\n const { t } = useTranslation();\n if (shortcuts.length === 0) {\n return null;\n }\n return (\n <Panel title={t('home.shortcuts')}>\n <ul className=\"-mx-2 space-y-0.5\">\n {shortcuts.map(({ key, label, icon, link }) => (\n <li key={key}>\n <Shortcut label={label} icon={icon} link={link} />\n </li>\n ))}\n </ul>\n </Panel>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { Activity } from './Activity';\nimport { useModelSummaries } from './hooks/useModelSummaries';\nimport { useShortcuts } from './hooks/useShortcuts';\nimport { Models } from './Models';\nimport { SetupSteps } from './SetupSteps';\nimport { Shortcuts } from './Shortcuts';\n\n/**\n * The rest of the workspace dashboard, a section at the end of the Inbox for admins who run publishing or\n * the team: setup steps while they matter, recent activity, content types and shortcuts. Its numbers\n * (`Stats`) head the Inbox.\n */\nexport const Dashboard = () => {\n const { t } = useTranslation();\n const headingId = useId();\n const canReadAudit = useHasGlobalPermission('audit.read');\n const modelSummaries = useModelSummaries();\n const shortcuts = useShortcuts(modelSummaries.models);\n return (\n <section aria-labelledby={headingId} className=\"space-y-6 pt-2\">\n <h2 id={headingId} className=\"text-xs font-semibold tracking-wide text-muted-foreground uppercase\">\n {t('inbox.overview')}\n </h2>\n <SetupSteps />\n <div className=\"grid items-start gap-6 xl:grid-cols-3\">\n <div className=\"min-w-0 space-y-6 xl:col-span-2\">\n {canReadAudit ? <Activity /> : null}\n <Models {...modelSummaries} />\n </div>\n <Shortcuts shortcuts={shortcuts} />\n </div>\n </section>\n );\n};\n","import { Link, type LinkOptions } from '@tanstack/react-router';\nimport type { LucideIcon } from 'lucide-react';\nimport { IconTile } from '@/components/IconTile';\n\ntype StatProps = {\n label: string;\n /** Undefined while loading. */\n value: number | undefined;\n icon: LucideIcon;\n link: LinkOptions;\n};\n\n/** A slim dashboard number (one line, about 68px) that links to the screen behind it. */\nexport const Stat = ({ label, value, icon, link }: StatProps) => (\n <Link\n {...link}\n className=\"flex items-center gap-3 rounded-xl border bg-card px-4 py-4 text-card-foreground transition-colors outline-none hover:border-primary/40 hover:bg-muted/40 focus-visible:ring-[3px] focus-visible:ring-ring/50\"\n >\n <IconTile icon={icon} size=\"md\" />\n <span className=\"min-w-0 flex-1 truncate text-sm font-medium text-muted-foreground\">{label}</span>\n <span className=\"text-xl leading-7 font-bold tabular-nums\">{value ?? '–'}</span>\n </Link>\n);\n","import { linkOptions } from '@tanstack/react-router';\nimport { Boxes, Globe, Users } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useLocales } from '@/api/locales';\nimport { useUsers } from '@/api/users';\nimport { cn } from '@/helpers/cn';\nimport { Stat } from '../Stat';\n\ntype StatsProps = { modelCount: number | undefined };\n\n/** The admin list comes from a users.manage endpoint, so this only mounts for admins who hold it. */\nconst Admins = () => {\n const { t } = useTranslation();\n const users = useUsers();\n return (\n <Stat\n label={t('home.admins')}\n value={users.data?.length}\n icon={Users}\n link={linkOptions({ to: '/network/users' })}\n />\n );\n};\n\n/** Content types, locales and (for user managers) admins, in one slim row. */\nexport const Stats = ({ modelCount }: StatsProps) => {\n const { t } = useTranslation();\n const locales = useLocales();\n const canSeeUsers = useHasGlobalPermission('users.manage');\n return (\n <div className={cn('grid gap-3 sm:grid-cols-2', canSeeUsers && 'sm:grid-cols-3')}>\n <Stat label={t('home.models')} value={modelCount} icon={Boxes} link={linkOptions({ to: '/content' })} />\n <Stat\n label={t('home.locales')}\n value={locales.data?.length}\n icon={Globe}\n link={linkOptions({ to: '/settings/locales' })}\n />\n {canSeeUsers ? <Admins /> : null}\n </div>\n );\n};\n","import { Link, type LinkOptions } from '@tanstack/react-router';\nimport { Check } from 'lucide-react';\nimport { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { StatusChip } from '@/components/StatusChip';\nimport { Button } from '@/components/ui/button';\nimport { cn } from '@/helpers/cn';\n\ntype StepProps = {\n title: string;\n /** One line: what the step gets you. */\n description: string;\n action: string;\n link: LinkOptions;\n done: boolean;\n};\n\n/**\n * One numbered row of \"Get started\" (the number comes from the list's CSS counter): a tick and \"Done\" once\n * it is done, otherwise the button that does it.\n */\nexport const Step = ({ title, description, action, link, done }: StepProps) => {\n const { t } = useTranslation();\n const titleId = useId();\n return (\n <li className=\"flex flex-wrap items-center gap-x-4 gap-y-2 px-5 py-3.5 [counter-increment:step] sm:flex-nowrap\">\n <span\n aria-hidden=\"true\"\n className={cn(\n 'flex size-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold tabular-nums',\n done\n ? 'border-transparent bg-success-muted text-success'\n : 'text-muted-foreground before:content-[counter(step)]',\n )}\n >\n {done ? <Check className=\"size-4\" /> : null}\n </span>\n <div className=\"min-w-0 flex-1 space-y-0.5\">\n <p id={titleId} className={cn('text-sm font-semibold', done && 'text-muted-foreground')}>\n {title}\n </p>\n <p className=\"text-meta text-muted-foreground\">{description}</p>\n </div>\n {/* On phones the action goes under the text, lined up with it. */}\n <div className=\"basis-full pl-12 sm:basis-auto sm:pl-0\">\n {done ? (\n <StatusChip tone=\"success\" label={t('inbox.getStarted.done')} />\n ) : (\n <Button variant=\"outline\" size=\"sm\" asChild>\n <Link {...link} aria-describedby={titleId}>\n {action}\n </Link>\n </Button>\n )}\n </div>\n </li>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { Sparkles } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useApiTokens } from '@/api/tokens';\nimport { useInvitations, useUsers } from '@/api/users';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Panel } from '@/components/Panel';\nimport type { Place } from '@/features/Shell/hooks/usePlaces';\nimport { Step } from './Step';\n\ntype GetStartedProps = { places: readonly Place[] };\n\n/** Ticked once a second admin exists or someone is invited. Mounted only for admins who manage users. */\nconst InviteStep = () => {\n const { t } = useTranslation();\n const users = useUsers();\n const invitations = useInvitations();\n const done = (users.data?.length ?? 0) > 1 || (invitations.data?.length ?? 0) > 0;\n return (\n <Step\n title={t('inbox.getStarted.invite.title')}\n description={t('inbox.getStarted.invite.description')}\n action={t('inbox.getStarted.invite.action')}\n link={linkOptions({ to: '/network/users' })}\n done={done}\n />\n );\n};\n\n/** Ticked once a token that still works exists. Mounted only for admins who manage tokens. */\nconst TokenStep = () => {\n const { t } = useTranslation();\n const tokens = useApiTokens();\n const done = tokens.data?.some((token) => token.revokedAt === null) ?? false;\n return (\n <Step\n title={t('inbox.getStarted.token.title')}\n description={t('inbox.getStarted.token.description')}\n action={t('inbox.getStarted.token.action')}\n link={linkOptions({ to: '/settings/api-tokens' })}\n done={done}\n />\n );\n};\n\n/**\n * The Inbox of an empty workspace: the few steps that make Shapio useful, in order, each with the button\n * that does it. Steps the admin can't take are left out; a step that needs an earlier one waits for it.\n */\nexport const GetStarted = ({ places }: GetStartedProps) => {\n const { t } = useTranslation();\n const canCreateType = useHasGlobalPermission('schema.create');\n const canInvite = useHasGlobalPermission('users.manage');\n const canCreateTokens = useHasGlobalPermission('tokens.manage');\n const firstPlace = places.find((place) => place.canCreate);\n const hasType = places.length > 0;\n const anyStep = canCreateType || Boolean(firstPlace) || canInvite || canCreateTokens;\n return (\n <Panel title={t('inbox.getStarted.title')} flush>\n {anyStep ? (\n <ol className=\"divide-y [counter-reset:step]\">\n {canCreateType ? (\n <Step\n title={t('inbox.getStarted.type.title')}\n description={t('inbox.getStarted.type.description')}\n action={t('shell.nav.newType')}\n link={linkOptions({ to: '/content/new' })}\n done={hasType}\n />\n ) : null}\n {hasType && firstPlace ? (\n <Step\n title={t('inbox.getStarted.entry.title')}\n description={t('inbox.getStarted.entry.description', { place: firstPlace.label })}\n action={t('palette.newEntry', { name: firstPlace.label })}\n link={\n firstPlace.kind === 'collection'\n ? linkOptions({ to: '/content/$modelKey/new', params: { modelKey: firstPlace.apiKey } })\n : linkOptions({ to: '/content/$modelKey', params: { modelKey: firstPlace.apiKey } })\n }\n done={false}\n />\n ) : null}\n {canInvite ? <InviteStep /> : null}\n {canCreateTokens ? <TokenStep /> : null}\n </ol>\n ) : (\n <EmptyState\n compact\n icon={Sparkles}\n title={t('inbox.getStarted.waiting')}\n description={t('inbox.getStarted.waitingDescription')}\n />\n )}\n </Panel>\n );\n};\n","import type { ContentHealthFinding, HealthRule } from '@shapio/client';\nimport { useMemo } from 'react';\nimport { useContentHealthFindings, useContentHealthSummary } from '@/api/contentHealth';\nimport { FINDINGS_PAGE_SIZE, RULE_ORDER } from '../constants';\n\nexport type FindingGroup = {\n rule: HealthRule;\n /** Open findings of the rule (from the summary; at least the loaded ones). */\n count: number;\n findings: ContentHealthFinding[];\n};\n\n/** Open findings grouped by rule, in RULE_ORDER, with the query state the Inbox needs. */\nexport const useFindingGroups = () => {\n const findings = useContentHealthFindings({ limit: FINDINGS_PAGE_SIZE });\n const summary = useContentHealthSummary();\n const groups = useMemo((): FindingGroup[] => {\n const byRule = new Map<HealthRule, ContentHealthFinding[]>();\n for (const finding of findings.data?.pages.flatMap((page) => page.items) ?? []) {\n byRule.set(finding.rule, [...(byRule.get(finding.rule) ?? []), finding]);\n }\n const counts = new Map(summary.data?.rules.map(({ rule, count }) => [rule, count]));\n return RULE_ORDER.flatMap((rule) => {\n const items = byRule.get(rule) ?? [];\n const count = Math.max(counts.get(rule) ?? 0, items.length);\n return items.length > 0 ? [{ rule, count, findings: items }] : [];\n });\n }, [findings.data, summary.data]);\n const total = summary.data?.rules.reduce((sum, { count }) => sum + count, 0);\n return { findings, groups, total };\n};\n","import type { ContentOpsRule } from '@shapio/client';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useState } from 'react';\nimport { useContentOpsRun, useProposeContentOps } from '@/api/assist';\nimport { queryKeys } from '@/api/queryKeys';\n\nexport type AltDecision = 'accepted' | 'rejected';\n\n/**\n * \"Propose fixes\" for one rule group: starts a content-ops run, follows it until it finishes, and keeps\n * the person's accept/reject decisions on its alt-text proposals (for this visit to the Inbox).\n */\nexport const useContentOpsProposal = (rule: ContentOpsRule) => {\n const queryClient = useQueryClient();\n const start = useProposeContentOps();\n const [runId, setRunId] = useState<string>();\n const run = useContentOpsRun(runId);\n const [decisions, setDecisions] = useState<Readonly<Record<string, AltDecision>>>({});\n const status = run.data?.status;\n return {\n propose: () => {\n setDecisions({});\n start.mutate({ rule }, { onSuccess: ({ runId: id }) => setRunId(id) });\n },\n running:\n start.isPending ||\n (runId !== undefined && (status === undefined || status === 'queued' || status === 'running')),\n run: run.data,\n error: start.error ?? run.error,\n decisions,\n decide: (assetId: string, decision: AltDecision) =>\n setDecisions((current) => ({ ...current, [assetId]: decision })),\n /**\n * After the review: accepted images' findings resolve, so the Inbox re-reads them (not during the\n * review, which would unmount the group, and this list, once the last finding goes).\n */\n finishReview: () => {\n if (Object.values(decisions).includes('accepted')) {\n void queryClient.invalidateQueries({ queryKey: queryKeys.contentHealth.all });\n }\n },\n };\n};\n","import type { AltProposal } from '@shapio/client';\nimport { Check, X } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useUpdateMediaAsset } from '@/api/media';\nimport { StatusChip } from '@/components/StatusChip';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Label } from '@/components/ui/label';\nimport { describeError } from '@/helpers/describeError';\nimport type { AltDecision } from '../../../hooks/useContentOpsProposal';\n\ntype RowProps = {\n proposal: AltProposal;\n decision: AltDecision | undefined;\n onDecide: (decision: AltDecision) => void;\n};\n\n/** One image's proposed alt text: editable, then Accept (the library update, with its version) or Reject. */\nexport const Row = ({ proposal, decision, onDecide }: RowProps) => {\n const { t } = useTranslation();\n const id = useId();\n const [alt, setAlt] = useState(proposal.proposedAlt);\n const update = useUpdateMediaAsset();\n return (\n <li className=\"space-y-2 py-4 first:pt-0\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className=\"min-w-0 truncate text-sm font-semibold\">{proposal.filename}</p>\n {decision ? (\n <StatusChip\n size=\"sm\"\n tone={decision === 'accepted' ? 'success' : 'muted'}\n label={decision === 'accepted' ? t('assist.fixes.accepted') : t('assist.fixes.rejected')}\n />\n ) : null}\n </div>\n {decision ? null : (\n <form\n className=\"space-y-2\"\n onSubmit={(event) => {\n event.preventDefault();\n update.mutate(\n { id: proposal.assetId, input: { alt: alt.trim(), expectedVersion: proposal.assetVersion } },\n { onSuccess: () => onDecide('accepted') },\n );\n }}\n >\n <Label htmlFor={id}>{t('content.media.altLabel')}</Label>\n <Input id={id} value={alt} onChange={(event) => setAlt(event.target.value)} />\n {update.error ? (\n <p role=\"alert\" className=\"text-meta text-destructive\">\n {describeError(update.error)}\n </p>\n ) : null}\n <div className=\"flex justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={() => onDecide('rejected')}>\n <X aria-hidden=\"true\" />\n {t('assist.fixes.reject')}\n </Button>\n <SubmitButton\n size=\"sm\"\n pending={update.isPending}\n pendingLabel={t('common.saving')}\n disabled={alt.trim() === ''}\n >\n <Check aria-hidden=\"true\" />\n {t('assist.fixes.accept')}\n </SubmitButton>\n </div>\n </form>\n )}\n </li>\n );\n};\n","import type { AltProposal } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@/components/ui/button';\nimport {\n Sheet,\n SheetBody,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\nimport type { AltDecision } from '../../hooks/useContentOpsProposal';\nimport { Row } from './Row';\n\ntype AltReviewProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n model: string;\n proposals: readonly AltProposal[];\n decisions: Readonly<Record<string, AltDecision>>;\n onDecide: (assetId: string, decision: AltDecision) => void;\n};\n\n/** Proposed library alt texts, one per image: edit, accept (saved to the file) or reject, one at a time. */\nexport const AltReview = ({ open, onOpenChange, model, proposals, decisions, onDecide }: AltReviewProps) => {\n const { t } = useTranslation();\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent size=\"md\">\n <SheetHeader>\n <SheetTitle>{t('assist.fixes.altTitle')}</SheetTitle>\n <SheetDescription>{t('assist.fixes.altDescription', { model })}</SheetDescription>\n </SheetHeader>\n <SheetBody>\n <ul aria-label={t('assist.fixes.altTitle')} className=\"divide-y\">\n {proposals.map((proposal) => (\n <Row\n key={proposal.assetId}\n proposal={proposal}\n decision={decisions[proposal.assetId]}\n onDecide={(decision) => onDecide(proposal.assetId, decision)}\n />\n ))}\n </ul>\n </SheetBody>\n <SheetFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => onOpenChange(false)}>\n {t('common.close')}\n </Button>\n </SheetFooter>\n </SheetContent>\n </Sheet>\n );\n};\n","import type { LocaleMissingResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { TextLink } from '@/components/TextLink';\n\ntype LocaleResultProps = { result: LocaleMissingResult };\n\n/** Where the proposed locale drafts went (a change set to review) and how many were left alone. */\nexport const LocaleResult = ({ result }: LocaleResultProps) => {\n const { t } = useTranslation();\n return (\n <span className=\"flex flex-wrap items-center gap-x-2 text-meta text-muted-foreground\">\n {result.changeSetId ? (\n <TextLink to=\"/changes/$changeSetId\" params={{ changeSetId: result.changeSetId }}>\n {t('assist.fixes.openSet', { count: result.written.length })}\n </TextLink>\n ) : (\n <span>{t('assist.fixes.nothingWritten')}</span>\n )}\n {result.skipped.length > 0 ? (\n <span>{t('assist.fixes.skipped', { count: result.skipped.length })}</span>\n ) : null}\n </span>\n );\n};\n","import type { ContentOpsRule } from '@shapio/client';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { Button } from '@/components/ui/button';\nimport { describeAssistErrorCode } from '@/helpers/describeAssistError';\nimport { useContentOpsProposal } from '../hooks/useContentOpsProposal';\nimport { AltReview } from './AltReview';\nimport { LocaleResult } from './LocaleResult';\n\ntype ProposeFixesProps = { rule: ContentOpsRule };\n\n/**\n * \"Propose fixes\" under a rule group (missing alt text, locales not started): a model drafts the fixes in\n * the background. Alt texts come back as a list to accept or reject; locale drafts land in a change set.\n */\nexport const ProposeFixes = ({ rule }: ProposeFixesProps) => {\n const { t } = useTranslation();\n const proposal = useContentOpsProposal(rule);\n const [reviewOpen, setReviewOpen] = useState(false);\n const { run } = proposal;\n const result = run?.status === 'succeeded' ? run.result : null;\n return (\n <div className=\"space-y-1 px-5 pb-2\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <AssistButton\n variant=\"outline\"\n pending={proposal.running}\n pendingLabel={t('assist.fixes.running')}\n onClick={proposal.propose}\n >\n {run ? t('assist.fixes.again') : t('assist.fixes.propose')}\n </AssistButton>\n {result?.rule === 'altMissing' ? (\n result.proposals.length > 0 ? (\n <Button type=\"button\" size=\"sm\" onClick={() => setReviewOpen(true)}>\n {t('assist.fixes.review', { count: result.proposals.length })}\n </Button>\n ) : (\n <span className=\"text-meta text-muted-foreground\">{t('assist.fixes.none')}</span>\n )\n ) : null}\n {result?.rule === 'localeMissing' ? <LocaleResult result={result} /> : null}\n </div>\n <AssistError error={proposal.error} />\n {run?.status === 'failed' ? (\n <p role=\"alert\" className=\"text-meta text-destructive\">\n {describeAssistErrorCode(run.error?.code ?? 'INTERNAL_ERROR')}\n </p>\n ) : null}\n {result?.rule === 'altMissing' && run ? (\n <AltReview\n open={reviewOpen}\n onOpenChange={(next) => {\n setReviewOpen(next);\n if (!next) {\n proposal.finishReview();\n }\n }}\n model={run.model}\n proposals={result.proposals}\n decisions={proposal.decisions}\n onDecide={proposal.decide}\n />\n ) : null}\n </div>\n );\n};\n","import type { ContentHealthFinding } from '@shapio/client';\nimport type { ModelDefinition } from '@shapio/schema';\n\n/** The label of the top-level field a JSON pointer (API keys) starts with: `/sections/2/title` → \"Sections\". */\nexport const fieldLabelOf = (\n model: ModelDefinition | undefined,\n path: string | undefined,\n): string | undefined => {\n const apiKey = path?.split('/')[1];\n if (!model || !apiKey) {\n return undefined;\n }\n return model.fields.find((field) => field.apiKey === decodeURIComponent(apiKey))?.label;\n};\n\ntype SentenceParams = { field: string; locale: string; count: number };\n\n/**\n * The values a finding's sentence needs: the field's label (or \"a field\"), the locale's name, and a day\n * count for the staleness rules.\n */\nexport const findingParams = (\n finding: Pick<ContentHealthFinding, 'path' | 'locale' | 'params'>,\n model: ModelDefinition | undefined,\n localeLabel: (code: string) => string,\n fallbackField: string,\n): SentenceParams => {\n const locale = typeof finding.params.locale === 'string' ? finding.params.locale : finding.locale;\n return {\n field: fieldLabelOf(model, finding.path) ?? fallbackField,\n locale: locale === '*' ? '' : localeLabel(locale),\n count: typeof finding.params.days === 'number' ? finding.params.days : 0,\n };\n};\n","import type { ContentHealthFinding } from '@shapio/client';\nimport type { ModelDefinition } from '@shapio/schema';\nimport { Link } from '@tanstack/react-router';\nimport { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { RULE_FIX_KEYS, RULE_SENTENCE_KEYS } from '../../constants';\nimport { entryLink } from '../../helpers/entryLink';\nimport { findingParams } from '../../helpers/findingParams';\n\ntype FindingProps = {\n finding: ContentHealthFinding;\n model: ModelDefinition | undefined;\n localeLabel: (code: string) => string;\n /** Show the locale beside the sentence (more than one locale is configured). */\n showLocale: boolean;\n};\n\n/** One finding: the entry, one sentence about what is wrong, and a fix that opens the entry at the value. */\nexport const Finding = ({ finding, model, localeLabel, showLocale }: FindingProps) => {\n const { t } = useTranslation();\n const titleId = useId();\n const params = findingParams(finding, model, localeLabel, t('inbox.aField'));\n const title = finding.entryTitle ?? t('content.untitled');\n return (\n <li className=\"flex flex-wrap items-center gap-x-3 gap-y-2 px-5 py-3 sm:flex-nowrap\">\n <div className=\"min-w-0 flex-1 space-y-0.5\">\n <p id={titleId} className=\"truncate text-sm font-semibold\">\n {title}\n </p>\n <p className=\"text-meta text-muted-foreground\">\n {model\n ? t('inbox.findingMeta', {\n place: model.label,\n sentence: t(RULE_SENTENCE_KEYS[finding.rule], params),\n })\n : t(RULE_SENTENCE_KEYS[finding.rule], params)}\n </p>\n </div>\n {showLocale && finding.locale !== '*' ? (\n <Badge variant=\"outline\" title={localeLabel(finding.locale)} className=\"uppercase\">\n {finding.locale}\n </Badge>\n ) : null}\n <Button variant=\"outline\" size=\"sm\" asChild>\n <Link\n {...entryLink(finding.modelKey, finding.entryId, model?.kind, {\n locale: finding.locale,\n ...(finding.path ? { path: finding.path } : {}),\n })}\n aria-describedby={titleId}\n >\n {t(RULE_FIX_KEYS[finding.rule], params)}\n </Link>\n </Button>\n </li>\n );\n};\n","import { CONTENT_OPS_RULES, type ContentOpsRule } from '@shapio/client';\nimport type { ModelDefinition } from '@shapio/schema';\nimport { useId, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { IconTile } from '@/components/IconTile';\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { GROUP_PREVIEW, RULE_ICONS, RULE_TITLE_KEYS } from '../../constants';\nimport type { FindingGroup } from '../../hooks/useFindingGroups';\nimport { ProposeFixes } from '../../ProposeFixes';\nimport { Finding } from '../Finding';\n\ntype RuleGroupProps = {\n group: FindingGroup;\n models: ReadonlyMap<string, ModelDefinition> | undefined;\n localeLabel: (code: string) => string;\n showLocale: boolean;\n};\n\nconst isContentOpsRule = (rule: string): rule is ContentOpsRule =>\n (CONTENT_OPS_RULES as readonly string[]).includes(rule);\n\n/** One rule's findings: a heading with the count, the first few rows, and \"Show all\" in place. */\nexport const RuleGroup = ({ group, models, localeLabel, showLocale }: RuleGroupProps) => {\n const { t } = useTranslation();\n const headingId = useId();\n const [expanded, setExpanded] = useState(false);\n const assistEnabled = useAssistEnabled();\n const shown = expanded ? group.findings : group.findings.slice(0, GROUP_PREVIEW);\n const hidden = group.findings.length - shown.length;\n return (\n <section aria-labelledby={headingId} className=\"py-1\">\n <div className=\"flex items-center gap-3 px-5 pt-3 pb-1\">\n <IconTile icon={RULE_ICONS[group.rule]} size=\"sm\" tone=\"warning\" />\n <h3 id={headingId} className=\"min-w-0 flex-1 truncate text-sm font-semibold\">\n {t(RULE_TITLE_KEYS[group.rule])}\n </h3>\n <Badge variant=\"secondary\" className=\"tabular-nums\">\n {group.count.toLocaleString()}\n </Badge>\n </div>\n {assistEnabled && isContentOpsRule(group.rule) ? <ProposeFixes rule={group.rule} /> : null}\n <ul className=\"divide-y\">\n {shown.map((finding) => (\n <Finding\n key={finding.id}\n finding={finding}\n model={models?.get(finding.modelId)}\n localeLabel={localeLabel}\n showLocale={showLocale}\n />\n ))}\n </ul>\n {hidden > 0 ? (\n <div className=\"px-5 pb-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setExpanded(true)}>\n {t('inbox.showAll', { count: group.findings.length })}\n </Button>\n </div>\n ) : null}\n </section>\n );\n};\n","import { CircleCheck } from 'lucide-react';\nimport { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocales } from '@/api/locales';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Panel } from '@/components/Panel';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useContentSchema } from '@/features/Content/hooks/useContentSchema';\nimport type { useFindingGroups } from '../hooks/useFindingGroups';\nimport { RuleGroup } from './RuleGroup';\n\ntype NeedsYouProps = ReturnType<typeof useFindingGroups>;\n\n/**\n * Content health findings the admin can act on, grouped by rule. Findings resolve by themselves when the\n * content is fixed, so there is nothing to dismiss.\n */\nexport const NeedsYou = ({ findings, groups }: NeedsYouProps) => {\n const { t } = useTranslation();\n const { schema } = useContentSchema();\n const locales = useLocales();\n const names = useMemo(\n () => new Map((locales.data ?? []).map((locale) => [locale.code, locale.label])),\n [locales.data],\n );\n const localeLabel = useCallback((code: string) => names.get(code) ?? code, [names]);\n const showLocale = names.size > 1;\n return (\n <Panel title={t('inbox.needsYou')} flush>\n <QueryView\n query={findings}\n loadingRows={4}\n isEmpty={() => groups.length === 0}\n empty={\n <EmptyState\n compact\n icon={CircleCheck}\n title={t('inbox.allClear')}\n description={t('inbox.allClearDescription')}\n />\n }\n >\n {() => (\n <div className=\"divide-y\">\n {groups.map((group) => (\n <RuleGroup\n key={group.rule}\n group={group}\n models={schema?.models}\n localeLabel={localeLabel}\n showLocale={showLocale}\n />\n ))}\n {findings.hasNextPage ? (\n <div className=\"px-5 py-3\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n disabled={findings.isFetchingNextPage}\n onClick={() => void findings.fetchNextPage()}\n >\n {findings.isFetchingNextPage ? t('common.loading') : t('inbox.loadMore')}\n </Button>\n </div>\n ) : null}\n </div>\n )}\n </QueryView>\n </Panel>\n );\n};\n","import { Link, type LinkOptions } from '@tanstack/react-router';\nimport { RowTitle } from '@/components/RowTitle';\nimport { formatDateTime, formatRelativeTime } from '@/helpers/formatDate';\n\ntype EntryRowProps = {\n title: string;\n /** One line under the title: the place, and what happens or happened. */\n meta: string;\n link: LinkOptions;\n /** When it happens or happened, shown relative on the right. */\n at?: string;\n};\n\n/** An entry in the Inbox's side lists: title linking to the document, a meta line and a relative time. */\nexport const EntryRow = ({ title, meta, link, at }: EntryRowProps) => (\n <li className=\"flex items-center gap-3 px-5 py-2.5\">\n <div className=\"min-w-0 flex-1 space-y-0.5\">\n <RowTitle asChild className=\"block truncate text-sm\">\n <Link {...link}>{title}</Link>\n </RowTitle>\n <p className=\"truncate text-meta text-muted-foreground\">{meta}</p>\n </div>\n {at ? (\n <time\n dateTime={at}\n title={formatDateTime(at)}\n className=\"shrink-0 text-meta whitespace-nowrap text-muted-foreground\"\n >\n {formatRelativeTime(at)}\n </time>\n ) : null}\n </li>\n);\n","import type { AdminEntryPage } from '@shapio/client';\nimport { useQueries, type UseQueryResult } from '@tanstack/react-query';\nimport { useCallback, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { entryListQueryOptions } from '@/api/content';\nimport { findModelByKey, useContentSchema } from '@/features/Content/hooks/useContentSchema';\nimport { labelOf, titleFieldOf } from '@/fields/helpers/titles';\n\ntype EntryRef = { modelKey: string; entryId: string };\n\n/**\n * Titles of a few entries known only by ID (scheduled publications): one list request per model with an\n * `id` filter, never an entry read (the document owns that cache).\n */\nexport const useEntryTitles = (refs: readonly EntryRef[]): ReadonlyMap<string, string> => {\n const { t } = useTranslation();\n const { schema } = useContentSchema();\n const byModel = useMemo(() => {\n const ids = new Map<string, string[]>();\n for (const { modelKey, entryId } of refs) {\n ids.set(modelKey, [...new Set([...(ids.get(modelKey) ?? []), entryId])]);\n }\n return [...ids].flatMap(([modelKey, entryIds]) => {\n const model = schema ? findModelByKey(schema, modelKey) : undefined;\n return model ? [{ model, entryIds }] : [];\n });\n }, [refs, schema]);\n const combine = useCallback(\n (results: UseQueryResult<AdminEntryPage>[]): ReadonlyMap<string, string> =>\n new Map(\n results.flatMap((result, index) => {\n const model = byModel[index]?.model;\n return model && result.data\n ? result.data.items.map((item) => [item.id, labelOf(model, item, t('content.untitled'))] as const)\n : [];\n }),\n ),\n [byModel, t],\n );\n return useQueries({\n queries: byModel.map(({ model, entryIds }) => {\n const title = titleFieldOf(model);\n return entryListQueryOptions(model.apiKey, {\n filters: { id: { $in: entryIds } },\n pageSize: entryIds.length,\n ...(title ? { fields: [title.apiKey] } : {}),\n });\n }),\n combine,\n });\n};\n","import type { SnapshotChangeKind } from '@shapio/client';\nimport { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\nimport { apiClient } from '@/api/client';\nimport { isForbidden } from '@/api/errors';\nimport { queryKeys } from '@/api/queryKeys';\nimport { useRecentSnapshotChanges } from '@/api/snapshots';\nimport { useContentSchema } from '@/features/Content/hooks/useContentSchema';\nimport { RECENT_SHOWN } from '../constants';\nimport { useEntryTitles } from './useEntryTitles';\n\nexport type RecentEntry = {\n id: string;\n title: string;\n modelKey: string;\n modelLabel: string;\n kind: 'collection' | 'singleton';\n change: Extract<SnapshotChangeKind, 'published' | 'updated'>;\n};\n\n/**\n * What went live most recently: the snapshot diff up to the current snapshot that covers the last\n * `RECENT_SHOWN` entries the admin may read that were published or updated (schema-only snapshots never\n * push them out), titles from the list API.\n * Reading no model is not an error here: the server answers with an empty list (an older server's 403 is\n * read the same way), so the panel shows its empty state, never a permission lock.\n */\nexport const useRecentlyPublished = () => {\n const { schema } = useContentSchema();\n const current = useQuery({\n queryKey: queryKeys.currentSnapshot,\n queryFn: () => apiClient.snapshots.current(),\n meta: { silent: true },\n });\n const to = current.data?.snapshot ?? 0;\n const changes = useRecentSnapshotChanges(RECENT_SHOWN, to, to > 0);\n const live = useMemo(\n () =>\n (changes.data?.items ?? []).flatMap((item) => {\n const change = item.locales.find((locale) => locale.change !== 'unpublished')?.change;\n return change === 'published' || change === 'updated' ? [{ item, change }] : [];\n }),\n [changes.data],\n );\n const refs = useMemo(\n () => live.slice(0, RECENT_SHOWN).map(({ item }) => ({ modelKey: item.modelKey, entryId: item.id })),\n [live],\n );\n const titles = useEntryTitles(refs);\n const items = useMemo(\n () =>\n live.slice(0, RECENT_SHOWN).flatMap(({ item, change }): RecentEntry[] => {\n const model = schema?.models.get(item.modelId);\n const title = titles.get(item.id);\n return model && title !== undefined\n ? [\n {\n id: item.id,\n title,\n modelKey: model.apiKey,\n modelLabel: model.label,\n kind: model.kind,\n change,\n },\n ]\n : [];\n }),\n [live, schema, titles],\n );\n const error = current.error ?? changes.error;\n const forbidden = isForbidden(error);\n const nothingYet = (current.isSuccess && to === 0) || forbidden;\n return {\n items: forbidden ? [] : items,\n isPending: !nothingYet && (current.isPending || changes.isPending || schema === undefined),\n error: forbidden ? null : error,\n };\n};\n","import { Send } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { EmptyState } from '@/components/EmptyState';\nimport { ErrorState } from '@/components/ErrorState';\nimport { LoadingState } from '@/components/LoadingState';\nimport { Panel } from '@/components/Panel';\nimport { EntryRow } from '../EntryRow';\nimport { entryLink } from '../helpers/entryLink';\nimport { useRecentlyPublished } from '../hooks/useRecentlyPublished';\n\nconst CHANGE_KEYS = { published: 'inbox.wentLive', updated: 'inbox.liveUpdated' } as const;\n\n/** What went live lately, across every place the admin can read. */\nexport const RecentlyPublished = () => {\n const { t } = useTranslation();\n const { items, isPending, error } = useRecentlyPublished();\n return (\n <Panel title={t('inbox.recentlyPublished')} flush>\n {error ? (\n <ErrorState error={error} />\n ) : isPending ? (\n <LoadingState rows={3} className=\"p-5\" />\n ) : items.length === 0 ? (\n <EmptyState\n compact\n icon={Send}\n title={t('inbox.nothingPublished')}\n description={t('inbox.nothingPublishedDescription')}\n />\n ) : (\n <ul className=\"divide-y\">\n {items.map((item) => (\n <EntryRow\n key={`${item.modelKey}:${item.id}`}\n title={item.title}\n meta={t(CHANGE_KEYS[item.change], { place: item.modelLabel })}\n link={entryLink(item.modelKey, item.id, item.kind)}\n />\n ))}\n </ul>\n )}\n </Panel>\n );\n};\n","import { Link } from '@tanstack/react-router';\nimport { CalendarClock } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSchedules } from '@/api/schedules';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Panel } from '@/components/Panel';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useContentSchema, findModelByKey } from '@/features/Content/hooks/useContentSchema';\nimport { SCHEDULED_SHOWN, SCHEDULES_SCANNED } from '../constants';\nimport { EntryRow } from '../EntryRow';\nimport { entryLink } from '../helpers/entryLink';\nimport { useEntryTitles } from '../hooks/useEntryTitles';\n\nconst ACTION_KEYS = { publish: 'inbox.scheduledPublish', unpublish: 'inbox.scheduledUnpublish' } as const;\n\n/**\n * The next scheduled publications. Listing every schedule needs `publishing.manage`, so the Inbox mounts\n * this only for admins who hold it.\n */\nexport const ScheduledSoon = () => {\n const { t } = useTranslation();\n const schedules = useSchedules({ status: 'scheduled', limit: SCHEDULES_SCANNED });\n const { schema } = useContentSchema();\n const soonest = useMemo(\n () =>\n (schedules.data?.items ?? [])\n .filter((schedule) => schedule.modelKey !== null)\n .sort((a, b) => a.runAt.localeCompare(b.runAt))\n .slice(0, SCHEDULED_SHOWN),\n [schedules.data],\n );\n const refs = useMemo(\n () => soonest.map((schedule) => ({ modelKey: schedule.modelKey ?? '', entryId: schedule.entryId })),\n [soonest],\n );\n const titles = useEntryTitles(refs);\n return (\n <Panel\n title={t('inbox.scheduledSoon')}\n flush\n actions={\n <Button variant=\"ghost\" size=\"sm\" asChild>\n <Link to=\"/publishing/scheduled\">{t('inbox.viewAll')}</Link>\n </Button>\n }\n >\n <QueryView\n query={schedules}\n loadingRows={3}\n isEmpty={() => soonest.length === 0}\n empty={\n <EmptyState\n compact\n icon={CalendarClock}\n title={t('inbox.nothingScheduled')}\n description={t('inbox.nothingScheduledDescription')}\n />\n }\n >\n {() => (\n <ul className=\"divide-y\">\n {soonest.map((schedule) => {\n const modelKey = schedule.modelKey ?? '';\n const model = schema ? findModelByKey(schema, modelKey) : undefined;\n return (\n <EntryRow\n key={schedule.id}\n title={titles.get(schedule.entryId) ?? t('content.untitled')}\n meta={t(ACTION_KEYS[schedule.action], { place: model?.label ?? modelKey })}\n link={entryLink(modelKey, schedule.entryId, model?.kind, { locale: schedule.locale })}\n at={schedule.runAt}\n />\n );\n })}\n </ul>\n )}\n </QueryView>\n </Panel>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission, useMe } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { LoadingState } from '@/components/LoadingState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { Dashboard } from '@/features/Home';\nimport { useModelSummaries } from '@/features/Home/hooks/useModelSummaries';\nimport { Stats } from '@/features/Home/Stats';\nimport { usePlaces } from '@/features/Shell/hooks/usePlaces';\nimport { GetStarted } from './GetStarted';\nimport { useFindingGroups } from './hooks/useFindingGroups';\nimport { NeedsYou } from './NeedsYou';\nimport { RecentlyPublished } from './RecentlyPublished';\nimport { ScheduledSoon } from './ScheduledSoon';\n\ntype ContentInboxProps = {\n isAdmin: boolean;\n canSeeSchedules: boolean;\n findingGroups: ReturnType<typeof useFindingGroups>;\n};\n\n/** A workspace with content: what needs you, what goes live soon, what went live lately. */\nconst ContentInbox = ({ isAdmin, canSeeSchedules, findingGroups }: ContentInboxProps) => {\n const needsYou = <NeedsYou {...findingGroups} />;\n // Editors: what needs them beside what went live. Admins: everything full width, side lists paired.\n return isAdmin ? (\n <>\n {needsYou}\n <div className=\"grid items-start gap-6 lg:grid-cols-2\">\n {canSeeSchedules ? <ScheduledSoon /> : null}\n <RecentlyPublished />\n </div>\n <Dashboard />\n </>\n ) : (\n <div className=\"grid items-start gap-6 xl:grid-cols-3\">\n <div className=\"min-w-0 xl:col-span-2\">{needsYou}</div>\n <div className=\"min-w-0\">\n <RecentlyPublished />\n </div>\n </div>\n );\n};\n\n/**\n * `/`, home for everyone. An empty workspace (no content types yet) shows only the steps to get started;\n * otherwise the content inbox. Admins who run publishing or the team get the workspace numbers on top and\n * the rest of the dashboard underneath.\n */\nexport const Inbox = () => {\n const { t } = useTranslation();\n const { data: me } = useMe();\n const definitions = useDefinitions('model');\n const places = usePlaces();\n const { models } = useModelSummaries();\n const findingGroups = useFindingGroups();\n const canSeeSchedules = useHasGlobalPermission('publishing.manage');\n const canManageUsers = useHasGlobalPermission('users.manage');\n const isAdmin = canSeeSchedules || canManageUsers;\n const name = me?.user.name;\n // A registry that fails to load is not \"empty\": the content inbox shows its own errors.\n const empty = definitions.data?.length === 0;\n const { total } = findingGroups;\n const meta =\n empty || total === undefined\n ? undefined\n : total === 0\n ? t('inbox.metaClear')\n : t('inbox.meta', { count: total });\n return (\n <Page>\n <PageHeader title={name ? t('inbox.title', { name }) : t('inbox.titleFallback')} meta={meta} />\n {isAdmin ? <Stats modelCount={models?.length} /> : null}\n {definitions.isPending || (empty && places === undefined) ? (\n <LoadingState rows={3} />\n ) : empty ? (\n <GetStarted places={places ?? []} />\n ) : (\n <ContentInbox isAdmin={isAdmin} canSeeSchedules={canSeeSchedules} findingGroups={findingGroups} />\n )}\n </Page>\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Inbox } from '@/features/Inbox';\n\n/** The Inbox (home), loaded on first visit with the schema helpers it labels entries with. */\nexport const inboxLazyRoute = createLazyRoute('/app/')({ component: Inbox });\n"],"ignoreList":[1],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./createLucideIcon-CqygG5K6.js";var t={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=inbox-BKqu1EfP.js.map
1
+ import{t as e}from"./createLucideIcon-CLmh7Go-.js";var t={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};t.node;var n=e(t);export{n as t};
2
+ //# sourceMappingURL=inbox-CySnQydm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox-BKqu1EfP.js","names":["createLucideIcon","__iconData","Inbox"],"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/inbox.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: \"inbox\",\n size: 24,\n node: [\n [\"polyline\", { points: \"22 12 16 12 14 15 10 15 8 12 2 12\", key: \"o97t9d\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Inbox = createLucideIcon(__iconData);\n\nexport { __iconData, Inbox as default };\n//# sourceMappingURL=inbox.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,WAAY,CAAE,OAAQ,oCAAqC,IAAK,QAAS,CAAC,EAC3E,CACE,OACA,CACE,EAAG,6GACH,IAAK,QACP,CACF,CACF,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}
1
+ {"version":3,"file":"inbox-CySnQydm.js","names":["createLucideIcon","__iconData","Inbox"],"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/inbox.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: \"inbox\",\n size: 24,\n node: [\n [\"polyline\", { points: \"22 12 16 12 14 15 10 15 8 12 2 12\", key: \"o97t9d\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Inbox = createLucideIcon(__iconData);\n\nexport { __iconData, Inbox as default };\n//# sourceMappingURL=inbox.mjs.map\n"],"ignoreList":[0],"mappings":"mDASA,IAAMC,EAAa,CACjB,KAAM,QACN,KAAM,GACN,KAAM,CACJ,CAAC,WAAY,CAAE,OAAQ,oCAAqC,IAAK,QAAS,CAAC,EAC3E,CACE,OACA,CACE,EAAG,6GACH,IAAK,QACP,CACF,CACF,CACF,EACAA,EAAW,KACX,IAAMC,EAAQF,EAAiBC,CAAU"}