@shapio/cms 0.5.5 → 0.5.6

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 (156) hide show
  1. package/dist/admin/assets/{AssetTile-CaYPqR_F.js → AssetTile-_qRYsivK.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-CaYPqR_F.js.map → AssetTile-_qRYsivK.js.map} +1 -1
  3. package/dist/admin/assets/{AssistError-drmpXSbS.js → AssistError-CMXQWiQo.js} +2 -2
  4. package/dist/admin/assets/{AssistError-drmpXSbS.js.map → AssistError-CMXQWiQo.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js → BlockMenuItems-WIrbyv1a.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js.map → BlockMenuItems-WIrbyv1a.js.map} +1 -1
  7. package/dist/admin/assets/{Body-Gn_z2KPN.js → Body-BYc1IVsQ.js} +2 -2
  8. package/dist/admin/assets/{Body-Gn_z2KPN.js.map → Body-BYc1IVsQ.js.map} +1 -1
  9. package/dist/admin/assets/Builder-CwHpRhZN.js +2 -0
  10. package/dist/admin/assets/Builder-CwHpRhZN.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CzRU6och.js → CodeEditor-NMvrWgxT.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CzRU6och.js.map → CodeEditor-NMvrWgxT.js.map} +1 -1
  13. package/dist/admin/assets/{ConfirmDialog-DZRJfdvH.js → ConfirmDialog-Rd6WDt6q.js} +2 -2
  14. package/dist/admin/assets/{ConfirmDialog-DZRJfdvH.js.map → ConfirmDialog-Rd6WDt6q.js.map} +1 -1
  15. package/dist/admin/assets/{CopyButton-h4HYhnYp.js → CopyButton-B0RuxynJ.js} +2 -2
  16. package/dist/admin/assets/{CopyButton-h4HYhnYp.js.map → CopyButton-B0RuxynJ.js.map} +1 -1
  17. package/dist/admin/assets/{CursorPager-H4SpVYw7.js → CursorPager-CQZsKNxR.js} +2 -2
  18. package/dist/admin/assets/{CursorPager-H4SpVYw7.js.map → CursorPager-CQZsKNxR.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js → FocalPoint-BYu2fOTb.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js.map → FocalPoint-BYu2fOTb.js.map} +1 -1
  21. package/dist/admin/assets/{Form-DF_YmR1G.js → Form-CiZUsLPp.js} +2 -2
  22. package/dist/admin/assets/{Form-DF_YmR1G.js.map → Form-CiZUsLPp.js.map} +1 -1
  23. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js → FormCheckboxGroup-Bz8KERs1.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js.map → FormCheckboxGroup-Bz8KERs1.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js → FormRadioGroup-c-wyx7dq.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js.map → FormRadioGroup-c-wyx7dq.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js → FormSelectField-ijG9qPpb.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js.map → FormSelectField-ijG9qPpb.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js → FormSwitchField-Bp3hNpeP.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js.map → FormSwitchField-Bp3hNpeP.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js → FormTextareaField-BSKMqHcW.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js.map → FormTextareaField-BSKMqHcW.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js → HintedLabel-BrLH4NQW.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js.map → HintedLabel-BrLH4NQW.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-bYMd_t0J.js → InfoHint-Dyzyf59c.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-bYMd_t0J.js.map → InfoHint-Dyzyf59c.js.map} +1 -1
  37. package/dist/admin/assets/{InsertMenuItem-D2HGERzb.js → InsertMenuItem-BvRDuXtd.js} +2 -2
  38. package/dist/admin/assets/{InsertMenuItem-D2HGERzb.js.map → InsertMenuItem-BvRDuXtd.js.map} +1 -1
  39. package/dist/admin/assets/{Match-GDx_orOH.js → Match-Bixf1ygj.js} +2 -2
  40. package/dist/admin/assets/{Match-GDx_orOH.js.map → Match-Bixf1ygj.js.map} +1 -1
  41. package/dist/admin/assets/{QueryView-UBO-U5Wo.js → QueryView--_vvV7dC.js} +2 -2
  42. package/dist/admin/assets/{QueryView-UBO-U5Wo.js.map → QueryView--_vvV7dC.js.map} +1 -1
  43. package/dist/admin/assets/{RadioTile-CJbIIV8t.js → RadioTile-BCp6auUz.js} +2 -2
  44. package/dist/admin/assets/{RadioTile-CJbIIV8t.js.map → RadioTile-BCp6auUz.js.map} +1 -1
  45. package/dist/admin/assets/{RichTextField-M7HyUhYF.js → RichTextField-fWNjndUc.js} +2 -2
  46. package/dist/admin/assets/{RichTextField-M7HyUhYF.js.map → RichTextField-fWNjndUc.js.map} +1 -1
  47. package/dist/admin/assets/{RowTitle-DoxDM1XL.js → RowTitle-B4CE8tt7.js} +2 -2
  48. package/dist/admin/assets/{RowTitle-DoxDM1XL.js.map → RowTitle-B4CE8tt7.js.map} +1 -1
  49. package/dist/admin/assets/{SecretReveal-kCkLH5jg.js → SecretReveal-BhSqdWqh.js} +2 -2
  50. package/dist/admin/assets/{SecretReveal-kCkLH5jg.js.map → SecretReveal-BhSqdWqh.js.map} +1 -1
  51. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js → SharedGlyph-71FTypoi.js} +2 -2
  52. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js.map → SharedGlyph-71FTypoi.js.map} +1 -1
  53. package/dist/admin/assets/StepList-CZJmwy9e.js +2 -0
  54. package/dist/admin/assets/StepList-CZJmwy9e.js.map +1 -0
  55. package/dist/admin/assets/Structure-Dk87778W.js +2 -0
  56. package/dist/admin/assets/{Structure-CO4aJZVP.js.map → Structure-Dk87778W.js.map} +1 -1
  57. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js → SuggestAltButton-CxS8IR6m.js} +2 -2
  58. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js.map → SuggestAltButton-CxS8IR6m.js.map} +1 -1
  59. package/dist/admin/assets/{Thumbnail-D1XuDElk.js → Thumbnail-BwbCNpgQ.js} +2 -2
  60. package/dist/admin/assets/{Thumbnail-D1XuDElk.js.map → Thumbnail-BwbCNpgQ.js.map} +1 -1
  61. package/dist/admin/assets/{UnsavedChangesGuard-C1n7egF6.js → UnsavedChangesGuard-C6nD55Fn.js} +2 -2
  62. package/dist/admin/assets/{UnsavedChangesGuard-C1n7egF6.js.map → UnsavedChangesGuard-C6nD55Fn.js.map} +1 -1
  63. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js → UserAvatar-D7IbSpsP.js} +2 -2
  64. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js.map → UserAvatar-D7IbSpsP.js.map} +1 -1
  65. package/dist/admin/assets/{badge-ydvfgE8a.js → badge-vLiQczOd.js} +2 -2
  66. package/dist/admin/assets/{badge-ydvfgE8a.js.map → badge-vLiQczOd.js.map} +1 -1
  67. package/dist/admin/assets/{changeSets-DgfCKja3.js → changeSets-D5VevASj.js} +2 -2
  68. package/dist/admin/assets/{changeSets-DgfCKja3.js.map → changeSets-D5VevASj.js.map} +1 -1
  69. package/dist/admin/assets/{constants-esJAnNTh.js → constants-CKGh8uwT.js} +2 -2
  70. package/dist/admin/assets/{constants-esJAnNTh.js.map → constants-CKGh8uwT.js.map} +1 -1
  71. package/dist/admin/assets/{content-DsMSB6Wb.js → content-Cbavyq0x.js} +3 -3
  72. package/dist/admin/assets/{content-DsMSB6Wb.js.map → content-Cbavyq0x.js.map} +1 -1
  73. package/dist/admin/assets/{contentTypes-C-AKiYu1.js → contentTypes-DzQ_0v36.js} +2 -2
  74. package/dist/admin/assets/{contentTypes-C-AKiYu1.js.map → contentTypes-DzQ_0v36.js.map} +1 -1
  75. package/dist/admin/assets/{develop-DL-2W9jv.js → develop-BDqMOEql.js} +2 -2
  76. package/dist/admin/assets/{develop-DL-2W9jv.js.map → develop-BDqMOEql.js.map} +1 -1
  77. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js → dropdown-menu-CVAnm22s.js} +2 -2
  78. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js.map → dropdown-menu-CVAnm22s.js.map} +1 -1
  79. package/dist/admin/assets/es2015-BKfbx3rz.js +42 -0
  80. package/dist/admin/assets/es2015-BKfbx3rz.js.map +1 -0
  81. package/dist/admin/assets/{field-W1dB_h6d.js → field-Bg-JRgsB.js} +2 -2
  82. package/dist/admin/assets/{field-W1dB_h6d.js.map → field-Bg-JRgsB.js.map} +1 -1
  83. package/dist/admin/assets/{fileRoute-DzWMBrRx.js → fileRoute-DQCI1nMN.js} +2 -2
  84. package/dist/admin/assets/{fileRoute-DzWMBrRx.js.map → fileRoute-DQCI1nMN.js.map} +1 -1
  85. package/dist/admin/assets/{followPlural-D-5ZJqJF.js → followPlural-D0bENI5E.js} +2 -2
  86. package/dist/admin/assets/{followPlural-D-5ZJqJF.js.map → followPlural-D0bENI5E.js.map} +1 -1
  87. package/dist/admin/assets/{inbox-DUqOrFEA.js → inbox-Dfy4YBZ2.js} +2 -2
  88. package/dist/admin/assets/{inbox-DUqOrFEA.js.map → inbox-Dfy4YBZ2.js.map} +1 -1
  89. package/dist/admin/assets/{index-D03RZB7e.js → index-M4TUI1dl.js} +4 -4
  90. package/dist/admin/assets/{index-D03RZB7e.js.map → index-M4TUI1dl.js.map} +1 -1
  91. package/dist/admin/assets/{labels-CHE0gg1n.js → labels-BrwwGWnv.js} +2 -2
  92. package/dist/admin/assets/{labels-CHE0gg1n.js.map → labels-BrwwGWnv.js.map} +1 -1
  93. package/dist/admin/assets/{media-BUUEsWxd.js → media-DBdx-UmR.js} +2 -2
  94. package/dist/admin/assets/{media-BUUEsWxd.js.map → media-DBdx-UmR.js.map} +1 -1
  95. package/dist/admin/assets/{network-Bolr2lmf.js → network-BpbMYp6D.js} +2 -2
  96. package/dist/admin/assets/{network-Bolr2lmf.js.map → network-BpbMYp6D.js.map} +1 -1
  97. package/dist/admin/assets/{publishing-ClNjPLQ9.js → publishing-CpSDO3M7.js} +2 -2
  98. package/dist/admin/assets/{publishing-ClNjPLQ9.js.map → publishing-CpSDO3M7.js.map} +1 -1
  99. package/dist/admin/assets/{radio-group-rFxn7cz2.js → radio-group-DQ3sC1ol.js} +2 -2
  100. package/dist/admin/assets/{radio-group-rFxn7cz2.js.map → radio-group-DQ3sC1ol.js.map} +1 -1
  101. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js → searchSchemas-D4S2ceA0.js} +2 -2
  102. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js.map → searchSchemas-D4S2ceA0.js.map} +1 -1
  103. package/dist/admin/assets/{sections-C7Z6Xd8r.js → sections-Cl1LrzqH.js} +2 -2
  104. package/dist/admin/assets/{sections-C7Z6Xd8r.js.map → sections-Cl1LrzqH.js.map} +1 -1
  105. package/dist/admin/assets/{select-DUhL27UN.js → select-DjCAH45V.js} +2 -2
  106. package/dist/admin/assets/{select-DUhL27UN.js.map → select-DjCAH45V.js.map} +1 -1
  107. package/dist/admin/assets/{seo-l1ZORjtv.js → seo-DJ4k3LtY.js} +2 -2
  108. package/dist/admin/assets/{seo-l1ZORjtv.js.map → seo-DJ4k3LtY.js.map} +1 -1
  109. package/dist/admin/assets/{settings-DgoG3H8C.js → settings-DRZ33PTg.js} +2 -2
  110. package/dist/admin/assets/{settings-DgoG3H8C.js.map → settings-DRZ33PTg.js.map} +1 -1
  111. package/dist/admin/assets/{shapes-BZ87ap5s.js → shapes-BJe3IMuj.js} +5 -5
  112. package/dist/admin/assets/{shapes-BZ87ap5s.js.map → shapes-BJe3IMuj.js.map} +1 -1
  113. package/dist/admin/assets/{skeleton-Dyi_b1wq.js → skeleton-D4eOLKLY.js} +2 -2
  114. package/dist/admin/assets/{skeleton-Dyi_b1wq.js.map → skeleton-D4eOLKLY.js.map} +1 -1
  115. package/dist/admin/assets/src-DUpL-qwG.js +7 -0
  116. package/dist/admin/assets/src-DUpL-qwG.js.map +1 -0
  117. package/dist/admin/assets/{switch-C3dDDUIk.js → switch-B2R13aVU.js} +2 -2
  118. package/dist/admin/assets/{switch-C3dDDUIk.js.map → switch-B2R13aVU.js.map} +1 -1
  119. package/dist/admin/assets/{theme-DPe080iG.js → theme-X-qeg74W.js} +2 -2
  120. package/dist/admin/assets/{theme-DPe080iG.js.map → theme-X-qeg74W.js.map} +1 -1
  121. package/dist/admin/assets/{titles-C5PaMgFJ.js → titles-CLh5ftA2.js} +2 -2
  122. package/dist/admin/assets/{titles-C5PaMgFJ.js.map → titles-CLh5ftA2.js.map} +1 -1
  123. package/dist/admin/assets/{tooltip-BEaZkRPK.js → tooltip-u2epXfJF.js} +2 -2
  124. package/dist/admin/assets/{tooltip-BEaZkRPK.js.map → tooltip-u2epXfJF.js.map} +1 -1
  125. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js → useContentSchema-DaQHlL19.js} +2 -2
  126. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js.map → useContentSchema-DaQHlL19.js.map} +1 -1
  127. package/dist/admin/assets/{useDiscardGuard-WTUINqD5.js → useDiscardGuard-BVJGUCiH.js} +2 -2
  128. package/dist/admin/assets/{useDiscardGuard-WTUINqD5.js.map → useDiscardGuard-BVJGUCiH.js.map} +1 -1
  129. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js → useMediaPickerDialog-C23eOHQR.js} +2 -2
  130. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js.map → useMediaPickerDialog-C23eOHQR.js.map} +1 -1
  131. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js → useMediaUploader-CTViR0LX.js} +2 -2
  132. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js.map → useMediaUploader-CTViR0LX.js.map} +1 -1
  133. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js → useResolvedScheme-Cg8TdO85.js} +2 -2
  134. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js.map → useResolvedScheme-Cg8TdO85.js.map} +1 -1
  135. package/dist/admin/assets/{zod-C-k48Hnc.js → zod-D5i60ErJ.js} +2 -2
  136. package/dist/admin/assets/{zod-C-k48Hnc.js.map → zod-D5i60ErJ.js.map} +1 -1
  137. package/dist/admin/index.html +27 -27
  138. package/dist/cli.js +10 -3
  139. package/dist/cli.js.map +1 -1
  140. package/dist/index.d.ts +7 -2
  141. package/dist/index.js +1 -1
  142. package/dist/{s3Adapter-sL1zP4Zl.js → s3Adapter-CtPzkzf0.js} +2 -2
  143. package/dist/{s3Adapter-sL1zP4Zl.js.map → s3Adapter-CtPzkzf0.js.map} +1 -1
  144. package/dist/{worker-DMES6pqh.js → worker-DRCCGGjl.js} +3823 -3719
  145. package/dist/worker-DRCCGGjl.js.map +1 -0
  146. package/package.json +5 -5
  147. package/dist/admin/assets/Builder-DyCcikfS.js +0 -2
  148. package/dist/admin/assets/Builder-DyCcikfS.js.map +0 -1
  149. package/dist/admin/assets/StepList-BIQjDaWQ.js +0 -2
  150. package/dist/admin/assets/StepList-BIQjDaWQ.js.map +0 -1
  151. package/dist/admin/assets/Structure-CO4aJZVP.js +0 -2
  152. package/dist/admin/assets/es2015-DrAA1N2V.js +0 -42
  153. package/dist/admin/assets/es2015-DrAA1N2V.js.map +0 -1
  154. package/dist/admin/assets/src-BcLeD2-K.js +0 -7
  155. package/dist/admin/assets/src-BcLeD2-K.js.map +0 -1
  156. package/dist/worker-DMES6pqh.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{C as r,T as i,o as a,x as o}from"./auth-C4fHG9Iu.js";import{_ as s,a as c,i as l,j as u,o as d,t as f}from"./badge-ydvfgE8a.js";import{n as p}from"./createLucideIcon-CqygG5K6.js";import{t as m}from"./fileRoute-DzWMBrRx.js";import{n as h,t as g}from"./Form-DF_YmR1G.js";import{a as _,d as v}from"./constants-esJAnNTh.js";import{i as y}from"./skeleton-Dyi_b1wq.js";import{t as b}from"./Builder-DyCcikfS.js";import{t as x}from"./plus-WfYKHW7G.js";import{u as S}from"./changeSets-DgfCKja3.js";import{t as C}from"./HintedLabel-BlLtqVVz.js";import{s as w}from"./schema-D9BgCVzZ.js";import{t as T}from"./QueryView-UBO-U5Wo.js";import{c as E,g as D,i as O,r as k,t as A}from"./AssistError-drmpXSbS.js";import{t as j}from"./textarea-BBjqMF-Y.js";import{t as M}from"./Panel-B1TkcP8V.js";import{a as N,i as P}from"./followPlural-D-5ZJqJF.js";var F=e(n(),1),I=()=>{let{t:e}=p(),t=w(`component`),n=a(`schema.create`),{locked:r,reason:i}=N(),s=n&&!r?(0,F.jsx)(y,{asChild:!0,children:(0,F.jsxs)(o,{to:`/develop/components/new`,children:[(0,F.jsx)(x,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,F.jsxs)(c,{children:[(0,F.jsx)(l,{title:e(`shell.nav.components`),actions:s}),r?(0,F.jsx)(P,{reason:i}):null,(0,F.jsx)(T,{query:t,isEmpty:e=>e.length===0,empty:(0,F.jsx)(d,{icon:v,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:s}),children:e=>(0,F.jsx)(h,{items:e})})]})},L=()=>{let{componentId:e}=u({from:`/app/develop/components/$componentId`});return(0,F.jsx)(b,{category:`component`,id:e})},R=[`component`],z=()=>{let{t:e}=p();return(0,F.jsx)(g,{title:e(`contentTypes.newComponentTitle`),kinds:R,back:r({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},B=e(t(),1),V=()=>{let{t:e}=p(),t=i(),[n,r]=(0,B.useState)(``),[a,o]=(0,B.useState)(null),s=E(),c=S();return{description:n,setDescription:r,proposal:a,run:()=>{n.trim()!==``&&(o(null),c.reset(),s.mutate({description:n.trim()},{onSuccess:o}))},discard:()=>{o(null),s.reset(),c.reset()},addToChangeSet:()=>{a&&c.mutate({definitions:a.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:a.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:s.isPending,proposeError:s.error,adding:c.isPending,addError:c.error}},H=({proposal:e})=>{let{t}=p();return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,F.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,F.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,F.jsx)(f,{variant:`secondary`,children:t(_[e.kind])}),(0,F.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,F.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},U=()=>{let{t:e}=p(),t=(0,B.useId)(),n=O(),{locked:r}=N(),i=V();return n?(0,F.jsx)(M,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,F.jsx)(`div`,{className:`space-y-3`,children:i.proposal?(0,F.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),i.addToChangeSet()},children:[(0,F.jsx)(H,{proposal:i.proposal}),(0,F.jsx)(A,{error:i.addError}),(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,F.jsx)(y,{type:`button`,variant:`outline`,onClick:i.discard,children:e(`assist.discard`)}),(0,F.jsx)(s,{pending:i.adding,pendingLabel:e(`common.saving`),disabled:r,children:e(`assist.describe.add`)})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(C,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,F.jsx)(j,{id:`${t}-description`,value:i.description,rows:4,maxLength:D,placeholder:e(`assist.describe.placeholder`),disabled:i.proposing,onChange:e=>i.setDescription(e.target.value)})]}),(0,F.jsx)(A,{error:i.proposeError}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsx)(k,{variant:`outline`,size:`default`,pending:i.proposing,pendingLabel:e(`assist.working`),disabled:i.description.trim()===``||r,onClick:i.run,children:e(`assist.describe.run`)})})]})})}):null},W=[`collection`,`singleton`],G={newContentType:m(`/app/content/new`)({component:()=>{let{t:e}=p();return(0,F.jsx)(g,{title:e(`contentTypes.newTitle`),kinds:W,back:r({to:`/content`}),backLabel:e(`content.title`),intro:(0,F.jsx)(U,{})})}}),components:m(`/app/develop/components`)({component:I}),newComponent:m(`/app/develop/components/new`)({component:z}),component:m(`/app/develop/components/$componentId`)({component:L})};export{G as contentTypesLazyRoutes};
2
- //# sourceMappingURL=contentTypes-C-AKiYu1.js.map
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{C as r,T as i,o as a,x as o}from"./auth-C4fHG9Iu.js";import{_ as s,a as c,i as l,j as u,o as d,t as f}from"./badge-vLiQczOd.js";import{n as p}from"./createLucideIcon-CqygG5K6.js";import{t as m}from"./fileRoute-DQCI1nMN.js";import{n as h,t as g}from"./Form-CiZUsLPp.js";import{a as _,d as v}from"./constants-CKGh8uwT.js";import{i as y}from"./skeleton-D4eOLKLY.js";import{t as b}from"./Builder-CwHpRhZN.js";import{t as x}from"./plus-WfYKHW7G.js";import{u as S}from"./changeSets-D5VevASj.js";import{t as C}from"./HintedLabel-BrLH4NQW.js";import{s as w}from"./schema-D9BgCVzZ.js";import{t as T}from"./QueryView--_vvV7dC.js";import{c as E,g as D,i as O,r as k,t as A}from"./AssistError-CMXQWiQo.js";import{t as j}from"./textarea-BBjqMF-Y.js";import{t as M}from"./Panel-B1TkcP8V.js";import{a as N,i as P}from"./followPlural-D0bENI5E.js";var F=e(n(),1),I=()=>{let{t:e}=p(),t=w(`component`),n=a(`schema.create`),{locked:r,reason:i}=N(),s=n&&!r?(0,F.jsx)(y,{asChild:!0,children:(0,F.jsxs)(o,{to:`/develop/components/new`,children:[(0,F.jsx)(x,{"aria-hidden":`true`}),e(`contentTypes.newComponentTitle`)]})}):null;return(0,F.jsxs)(c,{children:[(0,F.jsx)(l,{title:e(`shell.nav.components`),actions:s}),r?(0,F.jsx)(P,{reason:i}):null,(0,F.jsx)(T,{query:t,isEmpty:e=>e.length===0,empty:(0,F.jsx)(d,{icon:v,title:e(`contentTypes.noComponents`),description:e(`models.emptyDescription`),action:s}),children:e=>(0,F.jsx)(h,{items:e})})]})},L=()=>{let{componentId:e}=u({from:`/app/develop/components/$componentId`});return(0,F.jsx)(b,{category:`component`,id:e})},R=[`component`],z=()=>{let{t:e}=p();return(0,F.jsx)(g,{title:e(`contentTypes.newComponentTitle`),kinds:R,back:r({to:`/develop/components`}),backLabel:e(`shell.nav.components`)})},B=e(t(),1),V=()=>{let{t:e}=p(),t=i(),[n,r]=(0,B.useState)(``),[a,o]=(0,B.useState)(null),s=E(),c=S();return{description:n,setDescription:r,proposal:a,run:()=>{n.trim()!==``&&(o(null),c.reset(),s.mutate({description:n.trim()},{onSuccess:o}))},discard:()=>{o(null),s.reset(),c.reset()},addToChangeSet:()=>{a&&c.mutate({definitions:a.definitions,newSetTitle:e(`assist.describe.setTitle`,{model:a.model})},{onSuccess:e=>void t({to:`/changes/$changeSetId`,params:{changeSetId:e}})})},proposing:s.isPending,proposeError:s.error,adding:c.isPending,addError:c.error}},H=({proposal:e})=>{let{t}=p();return(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`assist.describe.proposedBy`,{model:e.model})}),(0,F.jsx)(`ul`,{"aria-label":t(`assist.describe.proposalLabel`),className:`space-y-3`,children:e.definitions.map(e=>(0,F.jsxs)(`li`,{className:`rounded-lg border p-3`,children:[(0,F.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,F.jsx)(`span`,{className:`text-sm font-semibold`,children:e.label}),(0,F.jsx)(f,{variant:`secondary`,children:t(_[e.kind])}),(0,F.jsx)(`span`,{className:`font-mono text-meta text-muted-foreground`,children:e.apiKey})]}),(0,F.jsx)(`ul`,{className:`mt-2 space-y-0.5 text-meta text-muted-foreground`,children:e.fields.map(e=>(0,F.jsxs)(`li`,{children:[(0,F.jsx)(`span`,{className:`text-foreground`,children:e.label}),` `,t(`assist.describe.fieldType`,{type:t(`models.dataTypes.${e.type}.name`)})]},e.id))})]},e.id))})]})},U=()=>{let{t:e}=p(),t=(0,B.useId)(),n=O(),{locked:r}=N(),i=V();return n?(0,F.jsx)(M,{title:e(`assist.describe.title`),titleAs:`h2`,children:(0,F.jsx)(`div`,{className:`space-y-3`,children:i.proposal?(0,F.jsxs)(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),i.addToChangeSet()},children:[(0,F.jsx)(H,{proposal:i.proposal}),(0,F.jsx)(A,{error:i.addError}),(0,F.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,F.jsx)(y,{type:`button`,variant:`outline`,onClick:i.discard,children:e(`assist.discard`)}),(0,F.jsx)(s,{pending:i.adding,pendingLabel:e(`common.saving`),disabled:r,children:e(`assist.describe.add`)})]})]}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)(`div`,{className:`space-y-2`,children:[(0,F.jsx)(C,{htmlFor:`${t}-description`,label:e(`assist.describe.label`),hint:e(`assist.describe.hint`)}),(0,F.jsx)(j,{id:`${t}-description`,value:i.description,rows:4,maxLength:D,placeholder:e(`assist.describe.placeholder`),disabled:i.proposing,onChange:e=>i.setDescription(e.target.value)})]}),(0,F.jsx)(A,{error:i.proposeError}),(0,F.jsx)(`div`,{className:`flex justify-end`,children:(0,F.jsx)(k,{variant:`outline`,size:`default`,pending:i.proposing,pendingLabel:e(`assist.working`),disabled:i.description.trim()===``||r,onClick:i.run,children:e(`assist.describe.run`)})})]})})}):null},W=[`collection`,`singleton`],G={newContentType:m(`/app/content/new`)({component:()=>{let{t:e}=p();return(0,F.jsx)(g,{title:e(`contentTypes.newTitle`),kinds:W,back:r({to:`/content`}),backLabel:e(`content.title`),intro:(0,F.jsx)(U,{})})}}),components:m(`/app/develop/components`)({component:I}),newComponent:m(`/app/develop/components/new`)({component:z}),component:m(`/app/develop/components/$componentId`)({component:L})};export{G as contentTypesLazyRoutes};
2
+ //# sourceMappingURL=contentTypes-DzQ_0v36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentTypes-C-AKiYu1.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","linkOptions","useNavigate","useHasGlobalPermission","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","useTranslation","createLazyRoute","List","Form","KIND_LABEL_KEYS","Blocks","Button","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Textarea","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/index.tsx","../../src/features/Components/New/index.tsx","../../src/features/Content/New/hooks/useDescribeSchema.ts","../../src/features/Content/New/Describe/Proposal/index.tsx","../../src/features/Content/New/Describe/index.tsx","../../src/features/Content/New/index.tsx","../../src/app/lazyRoutes/contentTypes.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\nimport { Blocks, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { List } from '@/features/Models/List';\nimport { LockNotice } from '@/features/Models/LockNotice';\n\n/** `/develop/components`: reusable field groups that content types embed (Develop → Components). */\nexport const Components = () => {\n const { t } = useTranslation();\n const components = useDefinitions('component');\n const canCreate = useHasGlobalPermission('schema.create');\n const { locked, reason } = useSchemaLock();\n const createAction =\n canCreate && !locked ? (\n <Button asChild>\n <Link to=\"/develop/components/new\">\n <Plus aria-hidden=\"true\" />\n {t('contentTypes.newComponentTitle')}\n </Link>\n </Button>\n ) : null;\n return (\n <Page>\n <PageHeader title={t('shell.nav.components')} actions={createAction} />\n {locked ? <LockNotice reason={reason} /> : null}\n <QueryView\n query={components}\n isEmpty={(data) => data.length === 0}\n empty={\n <EmptyState\n icon={Blocks}\n title={t('contentTypes.noComponents')}\n description={t('models.emptyDescription')}\n action={createAction}\n />\n }\n >\n {(data) => <List items={data} />}\n </QueryView>\n </Page>\n );\n};\n","import { useParams } from '@tanstack/react-router';\nimport { Builder as DefinitionBuilder } from '@/features/Models/Builder';\n\n/** `/develop/components/:componentId`: a component in the shared definition builder. */\nexport const Builder = () => {\n const { componentId } = useParams({ from: '/app/develop/components/$componentId' });\n return <DefinitionBuilder category=\"component\" id={componentId} />;\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@/features/Content/New/Form';\n\nconst KINDS = ['component'] as const;\n\n/** `/develop/components/new`: a reusable component (Develop → Components). */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newComponentTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/develop/components' })}\n backLabel={t('shell.nav.components')}\n />\n );\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useProposeSchema } from '@/api/assist';\nimport { useSaveNewDefinitionsToChangeSet } from '@/api/changeSets';\n\n/**\n * \"Describe it\": a description → proposed definitions (nothing written) → saved as schema drafts into a\n * change set, whose review opens next. Shipping them stays a person's decision there.\n */\nexport const useDescribeSchema = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [description, setDescription] = useState('');\n const [proposal, setProposal] = useState<SchemaDraftResult | null>(null);\n const propose = useProposeSchema();\n const save = useSaveNewDefinitionsToChangeSet();\n const run = () => {\n if (description.trim() === '') {\n return;\n }\n setProposal(null);\n save.reset();\n propose.mutate({ description: description.trim() }, { onSuccess: setProposal });\n };\n const discard = () => {\n setProposal(null);\n propose.reset();\n save.reset();\n };\n const addToChangeSet = () => {\n if (!proposal) {\n return;\n }\n save.mutate(\n {\n definitions: proposal.definitions,\n newSetTitle: t('assist.describe.setTitle', { model: proposal.model }),\n },\n {\n onSuccess: (changeSetId) => void navigate({ to: '/changes/$changeSetId', params: { changeSetId } }),\n },\n );\n };\n return {\n description,\n setDescription,\n proposal,\n run,\n discard,\n addToChangeSet,\n proposing: propose.isPending,\n proposeError: propose.error,\n adding: save.isPending,\n addError: save.error,\n };\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { KIND_LABEL_KEYS } from '@/features/Models/constants';\n\ntype ProposalProps = { proposal: SchemaDraftResult };\n\n/** The proposed definitions at a glance: name, kind, API ID and fields, before they go into a change set. */\nexport const Proposal = ({ proposal }: ProposalProps) => {\n const { t } = useTranslation();\n return (\n <div className=\"space-y-3\">\n <p className=\"text-meta text-muted-foreground\">\n {t('assist.describe.proposedBy', { model: proposal.model })}\n </p>\n <ul aria-label={t('assist.describe.proposalLabel')} className=\"space-y-3\">\n {proposal.definitions.map((definition) => (\n <li key={definition.id} className=\"rounded-lg border p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold\">{definition.label}</span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[definition.kind])}</Badge>\n <span className=\"font-mono text-meta text-muted-foreground\">{definition.apiKey}</span>\n </div>\n <ul className=\"mt-2 space-y-0.5 text-meta text-muted-foreground\">\n {definition.fields.map((field) => (\n <li key={field.id}>\n <span className=\"text-foreground\">{field.label}</span>{' '}\n {t('assist.describe.fieldType', { type: t(`models.dataTypes.${field.type}.name`) })}\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { HintedLabel } from '@/components/HintedLabel';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SCHEMA_DESCRIPTION_MAX } from '@/constants/assist';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { useDescribeSchema } from '../hooks/useDescribeSchema';\nimport { Proposal } from './Proposal';\n\n/** \"Describe it\" above the new content type form: a model proposes the types, a change set holds them. */\nexport const Describe = () => {\n const { t } = useTranslation();\n const id = useId();\n const enabled = useAssistEnabled();\n const { locked } = useSchemaLock();\n const describe = useDescribeSchema();\n if (!enabled) {\n return null;\n }\n return (\n <Panel title={t('assist.describe.title')} titleAs=\"h2\">\n <div className=\"space-y-3\">\n {describe.proposal ? (\n <form\n className=\"space-y-3\"\n onSubmit={(event) => {\n event.preventDefault();\n describe.addToChangeSet();\n }}\n >\n <Proposal proposal={describe.proposal} />\n <AssistError error={describe.addError} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={describe.discard}>\n {t('assist.discard')}\n </Button>\n <SubmitButton pending={describe.adding} pendingLabel={t('common.saving')} disabled={locked}>\n {t('assist.describe.add')}\n </SubmitButton>\n </div>\n </form>\n ) : (\n <>\n <div className=\"space-y-2\">\n <HintedLabel\n htmlFor={`${id}-description`}\n label={t('assist.describe.label')}\n hint={t('assist.describe.hint')}\n />\n <Textarea\n id={`${id}-description`}\n value={describe.description}\n rows={4}\n maxLength={SCHEMA_DESCRIPTION_MAX}\n placeholder={t('assist.describe.placeholder')}\n disabled={describe.proposing}\n onChange={(event) => describe.setDescription(event.target.value)}\n />\n </div>\n <AssistError error={describe.proposeError} />\n <div className=\"flex justify-end\">\n <AssistButton\n variant=\"outline\"\n size=\"default\"\n pending={describe.proposing}\n pendingLabel={t('assist.working')}\n disabled={describe.description.trim() === '' || locked}\n onClick={describe.run}\n >\n {t('assist.describe.run')}\n </AssistButton>\n </div>\n </>\n )}\n </div>\n </Panel>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Describe } from './Describe';\nimport { Form } from './Form';\n\nconst KINDS = ['collection', 'singleton'] as const;\n\n/** `/content/new`: a new content type (a place for editors), live as soon as it is created. */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/content' })}\n backLabel={t('content.title')}\n intro={<Describe />}\n />\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Components } from '@/features/Components';\nimport { Builder as ComponentBuilder } from '@/features/Components/Builder';\nimport { New as NewComponent } from '@/features/Components/New';\nimport { New as NewContentType } from '@/features/Content/New';\n\n/** Creating content types and components, and Develop → Components (with @shapio/schema's validators). */\nexport const contentTypesLazyRoutes = {\n newContentType: createLazyRoute('/app/content/new')({ component: NewContentType }),\n components: createLazyRoute('/app/develop/components')({ component: Components }),\n newComponent: createLazyRoute('/app/develop/components/new')({ component: NewComponent }),\n component: createLazyRoute('/app/develop/components/$componentId')({ component: ComponentBuilder }),\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"contentTypes-DzQ_0v36.js","names":["DefinitionBuilder","KINDS","New","useState","useId","_Fragment","NewContentType","NewComponent","ComponentBuilder","__toESM","require_jsx_runtime","linkOptions","useNavigate","useHasGlobalPermission","Link","SubmitButton","Page","PageHeader","useParams","EmptyState","Badge","useTranslation","createLazyRoute","List","Form","KIND_LABEL_KEYS","Blocks","Button","Builder$1","Plus","useSaveNewDefinitionsToChangeSet","HintedLabel","useDefinitions","QueryView","useProposeSchema","SCHEMA_DESCRIPTION_MAX","useAssistEnabled","AssistButton","AssistError","Textarea","Panel","useSchemaLock","LockNotice","import_jsx_runtime","Components","components","canCreate","createAction","locked","t","data","Builder","componentId","KINDS$1","New$1","import_react","require_react","useDescribeSchema","navigate","description","setDescription","proposal","setProposal","propose","save","Proposal","definition","field","Describe","id","enabled","describe","event","KINDS","contentTypesLazyRoutes"],"sources":["../../src/features/Components/index.tsx","../../src/features/Components/Builder/index.tsx","../../src/features/Components/New/index.tsx","../../src/features/Content/New/hooks/useDescribeSchema.ts","../../src/features/Content/New/Describe/Proposal/index.tsx","../../src/features/Content/New/Describe/index.tsx","../../src/features/Content/New/index.tsx","../../src/app/lazyRoutes/contentTypes.tsx"],"sourcesContent":["import { Link } from '@tanstack/react-router';\nimport { Blocks, Plus } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasGlobalPermission } from '@/api/auth';\nimport { useDefinitions } from '@/api/schema';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Page } from '@/components/Page';\nimport { PageHeader } from '@/components/PageHeader';\nimport { QueryView } from '@/components/QueryView';\nimport { Button } from '@/components/ui/button';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { List } from '@/features/Models/List';\nimport { LockNotice } from '@/features/Models/LockNotice';\n\n/** `/develop/components`: reusable field groups that content types embed (Develop → Components). */\nexport const Components = () => {\n const { t } = useTranslation();\n const components = useDefinitions('component');\n const canCreate = useHasGlobalPermission('schema.create');\n const { locked, reason } = useSchemaLock();\n const createAction =\n canCreate && !locked ? (\n <Button asChild>\n <Link to=\"/develop/components/new\">\n <Plus aria-hidden=\"true\" />\n {t('contentTypes.newComponentTitle')}\n </Link>\n </Button>\n ) : null;\n return (\n <Page>\n <PageHeader title={t('shell.nav.components')} actions={createAction} />\n {locked ? <LockNotice reason={reason} /> : null}\n <QueryView\n query={components}\n isEmpty={(data) => data.length === 0}\n empty={\n <EmptyState\n icon={Blocks}\n title={t('contentTypes.noComponents')}\n description={t('models.emptyDescription')}\n action={createAction}\n />\n }\n >\n {(data) => <List items={data} />}\n </QueryView>\n </Page>\n );\n};\n","import { useParams } from '@tanstack/react-router';\nimport { Builder as DefinitionBuilder } from '@/features/Models/Builder';\n\n/** `/develop/components/:componentId`: a component in the shared definition builder. */\nexport const Builder = () => {\n const { componentId } = useParams({ from: '/app/develop/components/$componentId' });\n return <DefinitionBuilder category=\"component\" id={componentId} />;\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@/features/Content/New/Form';\n\nconst KINDS = ['component'] as const;\n\n/** `/develop/components/new`: a reusable component (Develop → Components). */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newComponentTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/develop/components' })}\n backLabel={t('shell.nav.components')}\n />\n );\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useNavigate } from '@tanstack/react-router';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useProposeSchema } from '@/api/assist';\nimport { useSaveNewDefinitionsToChangeSet } from '@/api/changeSets';\n\n/**\n * \"Describe it\": a description → proposed definitions (nothing written) → saved as schema drafts into a\n * change set, whose review opens next. Shipping them stays a person's decision there.\n */\nexport const useDescribeSchema = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [description, setDescription] = useState('');\n const [proposal, setProposal] = useState<SchemaDraftResult | null>(null);\n const propose = useProposeSchema();\n const save = useSaveNewDefinitionsToChangeSet();\n const run = () => {\n if (description.trim() === '') {\n return;\n }\n setProposal(null);\n save.reset();\n propose.mutate({ description: description.trim() }, { onSuccess: setProposal });\n };\n const discard = () => {\n setProposal(null);\n propose.reset();\n save.reset();\n };\n const addToChangeSet = () => {\n if (!proposal) {\n return;\n }\n save.mutate(\n {\n definitions: proposal.definitions,\n newSetTitle: t('assist.describe.setTitle', { model: proposal.model }),\n },\n {\n onSuccess: (changeSetId) => void navigate({ to: '/changes/$changeSetId', params: { changeSetId } }),\n },\n );\n };\n return {\n description,\n setDescription,\n proposal,\n run,\n discard,\n addToChangeSet,\n proposing: propose.isPending,\n proposeError: propose.error,\n adding: save.isPending,\n addError: save.error,\n };\n};\n","import type { SchemaDraftResult } from '@shapio/client';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@/components/ui/badge';\nimport { KIND_LABEL_KEYS } from '@/features/Models/constants';\n\ntype ProposalProps = { proposal: SchemaDraftResult };\n\n/** The proposed definitions at a glance: name, kind, API ID and fields, before they go into a change set. */\nexport const Proposal = ({ proposal }: ProposalProps) => {\n const { t } = useTranslation();\n return (\n <div className=\"space-y-3\">\n <p className=\"text-meta text-muted-foreground\">\n {t('assist.describe.proposedBy', { model: proposal.model })}\n </p>\n <ul aria-label={t('assist.describe.proposalLabel')} className=\"space-y-3\">\n {proposal.definitions.map((definition) => (\n <li key={definition.id} className=\"rounded-lg border p-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-semibold\">{definition.label}</span>\n <Badge variant=\"secondary\">{t(KIND_LABEL_KEYS[definition.kind])}</Badge>\n <span className=\"font-mono text-meta text-muted-foreground\">{definition.apiKey}</span>\n </div>\n <ul className=\"mt-2 space-y-0.5 text-meta text-muted-foreground\">\n {definition.fields.map((field) => (\n <li key={field.id}>\n <span className=\"text-foreground\">{field.label}</span>{' '}\n {t('assist.describe.fieldType', { type: t(`models.dataTypes.${field.type}.name`) })}\n </li>\n ))}\n </ul>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAssistEnabled } from '@/api/assist';\nimport { AssistButton } from '@/components/AssistButton';\nimport { AssistError } from '@/components/AssistError';\nimport { HintedLabel } from '@/components/HintedLabel';\nimport { Panel } from '@/components/Panel';\nimport { SubmitButton } from '@/components/SubmitButton';\nimport { Button } from '@/components/ui/button';\nimport { Textarea } from '@/components/ui/textarea';\nimport { SCHEMA_DESCRIPTION_MAX } from '@/constants/assist';\nimport { useSchemaLock } from '@/features/Models/hooks/useSchemaLock';\nimport { useDescribeSchema } from '../hooks/useDescribeSchema';\nimport { Proposal } from './Proposal';\n\n/** \"Describe it\" above the new content type form: a model proposes the types, a change set holds them. */\nexport const Describe = () => {\n const { t } = useTranslation();\n const id = useId();\n const enabled = useAssistEnabled();\n const { locked } = useSchemaLock();\n const describe = useDescribeSchema();\n if (!enabled) {\n return null;\n }\n return (\n <Panel title={t('assist.describe.title')} titleAs=\"h2\">\n <div className=\"space-y-3\">\n {describe.proposal ? (\n <form\n className=\"space-y-3\"\n onSubmit={(event) => {\n event.preventDefault();\n describe.addToChangeSet();\n }}\n >\n <Proposal proposal={describe.proposal} />\n <AssistError error={describe.addError} />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" onClick={describe.discard}>\n {t('assist.discard')}\n </Button>\n <SubmitButton pending={describe.adding} pendingLabel={t('common.saving')} disabled={locked}>\n {t('assist.describe.add')}\n </SubmitButton>\n </div>\n </form>\n ) : (\n <>\n <div className=\"space-y-2\">\n <HintedLabel\n htmlFor={`${id}-description`}\n label={t('assist.describe.label')}\n hint={t('assist.describe.hint')}\n />\n <Textarea\n id={`${id}-description`}\n value={describe.description}\n rows={4}\n maxLength={SCHEMA_DESCRIPTION_MAX}\n placeholder={t('assist.describe.placeholder')}\n disabled={describe.proposing}\n onChange={(event) => describe.setDescription(event.target.value)}\n />\n </div>\n <AssistError error={describe.proposeError} />\n <div className=\"flex justify-end\">\n <AssistButton\n variant=\"outline\"\n size=\"default\"\n pending={describe.proposing}\n pendingLabel={t('assist.working')}\n disabled={describe.description.trim() === '' || locked}\n onClick={describe.run}\n >\n {t('assist.describe.run')}\n </AssistButton>\n </div>\n </>\n )}\n </div>\n </Panel>\n );\n};\n","import { linkOptions } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { Describe } from './Describe';\nimport { Form } from './Form';\n\nconst KINDS = ['collection', 'singleton'] as const;\n\n/** `/content/new`: a new content type (a place for editors), live as soon as it is created. */\nexport const New = () => {\n const { t } = useTranslation();\n return (\n <Form\n title={t('contentTypes.newTitle')}\n kinds={KINDS}\n back={linkOptions({ to: '/content' })}\n backLabel={t('content.title')}\n intro={<Describe />}\n />\n );\n};\n","import { createLazyRoute } from '@tanstack/react-router';\nimport { Components } from '@/features/Components';\nimport { Builder as ComponentBuilder } from '@/features/Components/Builder';\nimport { New as NewComponent } from '@/features/Components/New';\nimport { New as NewContentType } from '@/features/Content/New';\n\n/** Creating content types and components, and Develop → Components (with @shapio/schema's validators). */\nexport const contentTypesLazyRoutes = {\n newContentType: createLazyRoute('/app/content/new')({ component: NewContentType }),\n components: createLazyRoute('/app/develop/components')({ component: Components }),\n newComponent: createLazyRoute('/app/develop/components/new')({ component: NewComponent }),\n component: createLazyRoute('/app/develop/components/$componentId')({ component: ComponentBuilder }),\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./View-BpglupFF.js","./rolldown-runtime-Dd_uD5pT.js","./react-CQOZoUwg.js","./jsx-runtime-DREnUpxT.js","./dist-Cfu6KUZc.js","./w3c-keyname-BOAvb0qz.js","./baseExtensions-TVKN1UwW.js","./cn-DVhJ55Mo.js","./dist-BhQ65Acq.js","./dist-Bj80Zlqp.js","./dist-HPrLaCdJ.js"])))=>i.map(i=>d[i]);
2
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{$ as r,A as i,O as a,c as o,i as s,j as c,l,lt as u,o as d,s as f,t as p,u as m}from"./loader-circle-C-9trZPI.js";import{t as h}from"./useQueries-CX6eFr24.js";import{C as g,T as _,et as v,h as ee,u as te,x as y}from"./auth-C4fHG9Iu.js";import{A as ne,O as re,_ as ie,a as b,i as x,j as ae,k as oe,n as S,o as C,r as se,t as w,v as ce}from"./badge-ydvfgE8a.js";import{a as le,l as ue,n as de,p as fe,s as pe,t as me,u as he}from"./useResolvedScheme-aV0QDPi3.js";import{n as T,t as E}from"./createLucideIcon-CqygG5K6.js";import{i as D,n as O,o as ge,t as _e}from"./RowTitle-DoxDM1XL.js";import{t as k}from"./fileRoute-DzWMBrRx.js";import{t as ve}from"./UnsavedChangesGuard-C1n7egF6.js";import{$ as A,C as ye,L as be,Q as xe,S as Se,X as Ce,_ as we,a as Te,d as Ee,g as De,h as Oe,j as ke,l as Ae,o as je,q as Me,s as Ne,u as Pe,w as Fe}from"./src-BcLeD2-K.js";import{B as j,E as Ie,F as Le,L as Re,R as M,V as ze,d as Be,i as Ve,n as He,p as Ue,r as We,t as Ge,x as Ke,z as qe}from"./shapes-BZ87ap5s.js";import{C as Je,E as N,S as Ye,a as Xe,i as Ze,n as Qe,t as $e,w as et}from"./InfoHint-bYMd_t0J.js";import{x as tt}from"./es2015-DrAA1N2V.js";import{u as nt}from"./constants-esJAnNTh.js";import{r as rt,t as it}from"./useSchemaScopeAccess-DyfiZnzs.js";import{t as at}from"./calendar-clock-DFUgXWXg.js";import{a as ot,i as P,n as st,s as ct}from"./skeleton-Dyi_b1wq.js";import{a as lt,i as ut,n as dt,r as ft,t as pt}from"./select-DUhL27UN.js";import{t as mt}from"./CursorPager-H4SpVYw7.js";import{t as ht}from"./file-stack-8rRouTJj.js";import{a as F,i as gt,n as _t,o as I,r as L,s as vt}from"./ConfirmDialog-DZRJfdvH.js";import{t as yt}from"./circle-check-De27poaB.js";import{a as bt,c as xt,l as St,n as Ct,r as wt,s as Tt,t as Et}from"./StepList-BIQjDaWQ.js";import{_ as Dt,o as Ot,t as kt}from"./field-W1dB_h6d.js";import{t as At}from"./clock-BGAXsuo4.js";import{a as jt,c as Mt,d as Nt,i as Pt,m as Ft,n as It,o as Lt,p as Rt,r as zt,t as Bt}from"./snapshots-CT-zs6Up.js";import{t as Vt}from"./folder-plus-B3L3b389.js";import{t as Ht}from"./stableId-iRkUbVIP.js";import{t as Ut}from"./image-off-TVxEyb74.js";import{t as Wt}from"./inbox-BKqu1EfP.js";import{t as Gt}from"./pencil-BVSFlU14.js";import{t as Kt}from"./plus-WfYKHW7G.js";import{_ as qt,a as Jt,c as Yt,d as Xt,f as Zt,g as Qt,h as $t,i as en,l as tn,n as nn,o as rn,p as an,r as on,s as sn,t as cn,v as ln}from"./changeSets-DgfCKja3.js";import{D as un,O as dn,b as fn,d as pn,p as mn,t as hn}from"./useCursorPager-Dc-9B67j.js";import{t as gn}from"./rotate-ccw-Cvc_uA58.js";import{t as _n}from"./send-DRA-Pe46.js";import{t as vn}from"./users-ohHZnBJW.js";import{t as R}from"./cn-DVhJ55Mo.js";import{n as yn,o as bn,t as xn,u as Sn}from"./zod-C-k48Hnc.js";import{t as Cn}from"./settle-LRKtTN_e.js";import{a as z,g as wn,i as B,n as V,o as H,r as U,s as Tn,t as W,v as En}from"./table-zG68ipQc.js";import{t as Dn}from"./HintedLabel-BlLtqVVz.js";import{r as On}from"./sites-C6_THCVK.js";import{p as kn,r as An,s as jn,t as Mn}from"./schema-D9BgCVzZ.js";import{t as Nn}from"./preload-helper-BaNbYf_w.js";import{t as G}from"./QueryView-UBO-U5Wo.js";import{t as Pn}from"./useDebouncedValue-Dqs3wwhn.js";import{r as Fn}from"./locales-e7B5t6id.js";import{t as K}from"./Panel-B1TkcP8V.js";import{r as In}from"./schedules-CBGpjEg7.js";import{n as Ln,r as Rn,t as zn}from"./dateTimeLocal-DVGpM23x.js";import{t as Bn}from"./CopyButton-h4HYhnYp.js";import{t as Vn}from"./FormTextareaField-DbqZ-MwI.js";import{n as Hn,r as Un,t as Wn}from"./SubNavLink-CPJFIt1j.js";import{n as Gn,t as Kn}from"./FormSelectField-CUhaPIMY.js";import{t as qn}from"./tokens-BlIDIMY9.js";import{c as Jn}from"./users-CDoJRL24.js";var Yn={name:`calendar-x`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`m14 13-4 4`,key:`1gib57`}],[`path`,{d:`m10 13 4 4`,key:`153uiq`}]]};Yn.node;var Xn=E(Yn),Zn={name:`file-type`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M11 18h2`,key:`12mj7e`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5`,key:`qbrxap`}]]};Zn.node;var Qn=E(Zn),$n={name:`git-compare`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]};$n.node;var er=E($n),tr={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};tr.node;var nr=E(tr),rr={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};rr.node;var ir=E(rr),ar={name:`pin`,size:24,node:[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]};ar.node;var or=E(ar),sr={name:`puzzle`,size:24,node:[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]};sr.node;var cr=E(sr),lr={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};lr.node;var ur=E(lr),dr={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};dr.node;var fr=E(dr),pr=(e,t)=>e.version===t.version||e.hash===t.hash,mr=(e,t,n)=>t&&e.hash===t.hash?{action:`skip`,reason:`unchangedLocally`}:n?n.hash===e.hash?{action:`skip`,reason:`alreadyApplied`}:t?pr(n,t)?{action:`update`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnBoth`}:{action:`conflict`,reason:`existsOnTarget`}:t?{action:`conflict`,reason:`deletedOnTarget`}:{action:`create`},hr=({local:e,base:t,remote:n,prune:r})=>e?mr(e,t,n):t?n?r?pr(n,t)?{action:`delete`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnTargetBeforeDelete`}:{action:`skip`,reason:`deletedLocallyWithoutPrune`}:{action:`skip`,reason:`alreadyDeleted`}:{action:`skip`,reason:`remoteOnly`},q=e(t(),1),gr={silent:!0},_r={openApi:`/api/docs/openapi.json`,typescript:`/api/docs/typescript`,playground:`api/graphql/playground`},vr={openApi:[...a.schema.all,`docs`,`openapi`],typescript:[...a.schema.all,`docs`,`typescript`],playground:[`develop`,`graphqlPlayground`]},yr=()=>c({queryKey:vr.openApi,queryFn:()=>o.request(_r.openApi),meta:gr}),br=()=>c({queryKey:vr.typescript,queryFn:()=>o.request(_r.typescript),meta:gr}),xr=()=>new URL(_r.playground,f()).href,Sr=()=>c({queryKey:vr.playground,queryFn:async()=>(await fetch(xr(),{method:`HEAD`,credentials:`same-origin`})).ok,staleTime:1/0,meta:gr}),J=e(n(),1),Y=({code:e,label:t,copyable:n=!0,className:r})=>(0,J.jsxs)(`div`,{className:R(`min-w-0 space-y-2`,r),children:[(0,J.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-2`,children:[(0,J.jsx)(`span`,{className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:t}),n?(0,J.jsx)(Bn,{value:e}):null]}),(0,J.jsx)(`pre`,{role:`region`,"aria-label":t,tabIndex:0,className:`max-h-[28rem] overflow-auto rounded-lg border bg-muted p-3 font-mono text-xs leading-5 text-foreground outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:(0,J.jsx)(`code`,{children:e})})]}),Cr={id:``,locale:``,snapshot:``,fields:``,populate:``,sort:``,page:``,pageSize:``,q:``,filters:[]},wr=[`locale`,`snapshot`,`fields`,`populate`,`sort`,`page`,`pageSize`,`q`],Tr=e=>`filters${e.replace(/^filters/,``).split(/[[\].]+/).filter(e=>e!==``).map(e=>`[${e}]`).join(``)}`,Er=(e,t)=>{let n=e.path.replace(`{id}`,t.id.trim()?encodeURIComponent(t.id.trim()):`{id}`),r=new URLSearchParams;for(let n of wr){let i=t[n].trim();i&&e.parameters.some(e=>e.name===n)&&r.append(n,i)}if(e.list)for(let e of t.filters)e.key.trim()&&e.value!==``&&r.append(Tr(e.key.trim()),e.value);let i=r.toString();return i?`${n}?${i}`:n},Dr=(e,t)=>!e.byId||t.id.trim()!==``,Or=`$SHAPIO_TOKEN`,kr=(e,t)=>[`curl '${e.replace(/'/g,`'\\''`)}'`,` -H 'accept: application/json'`].concat(t?[` -H "authorization: Bearer ${Or}"`]:[]).join(` \\
2
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{$ as r,A as i,O as a,c as o,i as s,j as c,l,lt as u,o as d,s as f,t as p,u as m}from"./loader-circle-C-9trZPI.js";import{t as h}from"./useQueries-CX6eFr24.js";import{C as g,T as _,et as v,h as ee,u as te,x as y}from"./auth-C4fHG9Iu.js";import{A as ne,O as re,_ as ie,a as b,i as x,j as ae,k as oe,n as S,o as C,r as se,t as w,v as ce}from"./badge-vLiQczOd.js";import{a as le,l as ue,n as de,p as fe,s as pe,t as me,u as he}from"./useResolvedScheme-Cg8TdO85.js";import{n as T,t as E}from"./createLucideIcon-CqygG5K6.js";import{i as D,n as O,o as ge,t as _e}from"./RowTitle-B4CE8tt7.js";import{t as k}from"./fileRoute-DQCI1nMN.js";import{t as ve}from"./UnsavedChangesGuard-C6nD55Fn.js";import{$ as A,C as ye,L as be,Q as xe,S as Se,X as Ce,_ as we,a as Te,d as Ee,g as De,h as Oe,j as ke,l as Ae,o as je,q as Me,s as Ne,u as Pe,w as Fe}from"./src-DUpL-qwG.js";import{B as j,E as Ie,F as Le,L as Re,R as M,V as ze,d as Be,i as Ve,n as He,p as Ue,r as We,t as Ge,x as Ke,z as qe}from"./shapes-BJe3IMuj.js";import{C as Je,E as N,S as Ye,a as Xe,i as Ze,n as Qe,t as $e,w as et}from"./InfoHint-Dyzyf59c.js";import{x as tt}from"./es2015-BKfbx3rz.js";import{u as nt}from"./constants-CKGh8uwT.js";import{r as rt,t as it}from"./useSchemaScopeAccess-DyfiZnzs.js";import{t as at}from"./calendar-clock-DFUgXWXg.js";import{a as ot,i as P,n as st,s as ct}from"./skeleton-D4eOLKLY.js";import{a as lt,i as ut,n as dt,r as ft,t as pt}from"./select-DjCAH45V.js";import{t as mt}from"./CursorPager-CQZsKNxR.js";import{t as ht}from"./file-stack-8rRouTJj.js";import{a as F,i as gt,n as _t,o as I,r as L,s as vt}from"./ConfirmDialog-Rd6WDt6q.js";import{t as yt}from"./circle-check-De27poaB.js";import{a as bt,c as xt,l as St,n as Ct,r as wt,s as Tt,t as Et}from"./StepList-CZJmwy9e.js";import{_ as Dt,o as Ot,t as kt}from"./field-Bg-JRgsB.js";import{t as At}from"./clock-BGAXsuo4.js";import{a as jt,c as Mt,d as Nt,i as Pt,m as Ft,n as It,o as Lt,p as Rt,r as zt,t as Bt}from"./snapshots-CT-zs6Up.js";import{t as Vt}from"./folder-plus-B3L3b389.js";import{t as Ht}from"./stableId-iRkUbVIP.js";import{t as Ut}from"./image-off-TVxEyb74.js";import{t as Wt}from"./inbox-BKqu1EfP.js";import{t as Gt}from"./pencil-BVSFlU14.js";import{t as Kt}from"./plus-WfYKHW7G.js";import{_ as qt,a as Jt,c as Yt,d as Xt,f as Zt,g as Qt,h as $t,i as en,l as tn,n as nn,o as rn,p as an,r as on,s as sn,t as cn,v as ln}from"./changeSets-D5VevASj.js";import{D as un,O as dn,b as fn,d as pn,p as mn,t as hn}from"./useCursorPager-Dc-9B67j.js";import{t as gn}from"./rotate-ccw-Cvc_uA58.js";import{t as _n}from"./send-DRA-Pe46.js";import{t as vn}from"./users-ohHZnBJW.js";import{t as R}from"./cn-DVhJ55Mo.js";import{n as yn,o as bn,t as xn,u as Sn}from"./zod-D5i60ErJ.js";import{t as Cn}from"./settle-LRKtTN_e.js";import{a as z,g as wn,i as B,n as V,o as H,r as U,s as Tn,t as W,v as En}from"./table-zG68ipQc.js";import{t as Dn}from"./HintedLabel-BrLH4NQW.js";import{r as On}from"./sites-C6_THCVK.js";import{p as kn,r as An,s as jn,t as Mn}from"./schema-D9BgCVzZ.js";import{t as Nn}from"./preload-helper-BaNbYf_w.js";import{t as G}from"./QueryView--_vvV7dC.js";import{t as Pn}from"./useDebouncedValue-Dqs3wwhn.js";import{r as Fn}from"./locales-e7B5t6id.js";import{t as K}from"./Panel-B1TkcP8V.js";import{r as In}from"./schedules-CBGpjEg7.js";import{n as Ln,r as Rn,t as zn}from"./dateTimeLocal-DVGpM23x.js";import{t as Bn}from"./CopyButton-B0RuxynJ.js";import{t as Vn}from"./FormTextareaField-BSKMqHcW.js";import{n as Hn,r as Un,t as Wn}from"./SubNavLink-CPJFIt1j.js";import{n as Gn,t as Kn}from"./FormSelectField-ijG9qPpb.js";import{t as qn}from"./tokens-BlIDIMY9.js";import{c as Jn}from"./users-CDoJRL24.js";var Yn={name:`calendar-x`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`m14 13-4 4`,key:`1gib57`}],[`path`,{d:`m10 13 4 4`,key:`153uiq`}]]};Yn.node;var Xn=E(Yn),Zn={name:`file-type`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M11 18h2`,key:`12mj7e`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`M9 13v-.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 .5.5v.5`,key:`qbrxap`}]]};Zn.node;var Qn=E(Zn),$n={name:`git-compare`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]};$n.node;var er=E($n),tr={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};tr.node;var nr=E(tr),rr={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};rr.node;var ir=E(rr),ar={name:`pin`,size:24,node:[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]};ar.node;var or=E(ar),sr={name:`puzzle`,size:24,node:[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]};sr.node;var cr=E(sr),lr={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};lr.node;var ur=E(lr),dr={name:`workflow`,size:24,node:[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]};dr.node;var fr=E(dr),pr=(e,t)=>e.version===t.version||e.hash===t.hash,mr=(e,t,n)=>t&&e.hash===t.hash?{action:`skip`,reason:`unchangedLocally`}:n?n.hash===e.hash?{action:`skip`,reason:`alreadyApplied`}:t?pr(n,t)?{action:`update`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnBoth`}:{action:`conflict`,reason:`existsOnTarget`}:t?{action:`conflict`,reason:`deletedOnTarget`}:{action:`create`},hr=({local:e,base:t,remote:n,prune:r})=>e?mr(e,t,n):t?n?r?pr(n,t)?{action:`delete`,expectedVersion:n.version}:{action:`conflict`,reason:`changedOnTargetBeforeDelete`}:{action:`skip`,reason:`deletedLocallyWithoutPrune`}:{action:`skip`,reason:`alreadyDeleted`}:{action:`skip`,reason:`remoteOnly`},q=e(t(),1),gr={silent:!0},_r={openApi:`/api/docs/openapi.json`,typescript:`/api/docs/typescript`,playground:`api/graphql/playground`},vr={openApi:[...a.schema.all,`docs`,`openapi`],typescript:[...a.schema.all,`docs`,`typescript`],playground:[`develop`,`graphqlPlayground`]},yr=()=>c({queryKey:vr.openApi,queryFn:()=>o.request(_r.openApi),meta:gr}),br=()=>c({queryKey:vr.typescript,queryFn:()=>o.request(_r.typescript),meta:gr}),xr=()=>new URL(_r.playground,f()).href,Sr=()=>c({queryKey:vr.playground,queryFn:async()=>(await fetch(xr(),{method:`HEAD`,credentials:`same-origin`})).ok,staleTime:1/0,meta:gr}),J=e(n(),1),Y=({code:e,label:t,copyable:n=!0,className:r})=>(0,J.jsxs)(`div`,{className:R(`min-w-0 space-y-2`,r),children:[(0,J.jsxs)(`div`,{className:`flex min-h-9 items-center justify-between gap-2`,children:[(0,J.jsx)(`span`,{className:`text-xs font-semibold tracking-wide text-muted-foreground uppercase`,children:t}),n?(0,J.jsx)(Bn,{value:e}):null]}),(0,J.jsx)(`pre`,{role:`region`,"aria-label":t,tabIndex:0,className:`max-h-[28rem] overflow-auto rounded-lg border bg-muted p-3 font-mono text-xs leading-5 text-foreground outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,children:(0,J.jsx)(`code`,{children:e})})]}),Cr={id:``,locale:``,snapshot:``,fields:``,populate:``,sort:``,page:``,pageSize:``,q:``,filters:[]},wr=[`locale`,`snapshot`,`fields`,`populate`,`sort`,`page`,`pageSize`,`q`],Tr=e=>`filters${e.replace(/^filters/,``).split(/[[\].]+/).filter(e=>e!==``).map(e=>`[${e}]`).join(``)}`,Er=(e,t)=>{let n=e.path.replace(`{id}`,t.id.trim()?encodeURIComponent(t.id.trim()):`{id}`),r=new URLSearchParams;for(let n of wr){let i=t[n].trim();i&&e.parameters.some(e=>e.name===n)&&r.append(n,i)}if(e.list)for(let e of t.filters)e.key.trim()&&e.value!==``&&r.append(Tr(e.key.trim()),e.value);let i=r.toString();return i?`${n}?${i}`:n},Dr=(e,t)=>!e.byId||t.id.trim()!==``,Or=`$SHAPIO_TOKEN`,kr=(e,t)=>[`curl '${e.replace(/'/g,`'\\''`)}'`,` -H 'accept: application/json'`].concat(t?[` -H "authorization: Bearer ${Or}"`]:[]).join(` \\
3
3
  `),Ar=(e,t)=>{let n=t?`{
4
4
  accept: 'application/json',
5
5
  authorization: \`Bearer \${process.env.SHAPIO_TOKEN}\`,
@@ -8,4 +8,4 @@ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUw
8
8
  };
9
9
  `,n);return o<0?void 0:e.slice(a,o+4)},ps=(e,t)=>{let n=we(t);return[fs(e,n),fs(e,`${n}Input`)].filter(e=>e!==void 0).join(`
10
10
  `)},ms=({apiKey:e,edited:t})=>{let{t:n}=T(),r=br();return(0,J.jsx)(G,{query:r,children:({source:r,schemaVersion:i})=>{let a=ps(r,e);return(0,J.jsxs)(`div`,{className:`space-y-4`,children:[t?(0,J.jsx)(F,{variant:`info`,children:(0,J.jsx)(I,{children:n(`develop.schema.preview.typesActive`,{version:i})})}):null,a?(0,J.jsx)(Y,{label:n(`develop.schema.preview.typescript`),code:a}):(0,J.jsx)(C,{size:`panel`,icon:Qn,title:n(`develop.schema.preview.noTypes`)})]})}})},hs=[`form`,`rest`,`graphql`,`types`,`plan`],gs={form:`develop.schema.preview.tabs.form`,rest:`develop.schema.preview.tabs.rest`,graphql:`develop.schema.preview.tabs.graphql`,types:`develop.schema.preview.tabs.types`,plan:`develop.schema.preview.tabs.plan`},_s=({file:e,analysis:t,edited:n,definitions:r})=>{let{t:i}=T(),[a,o]=(0,q.useState)(`form`),s=t?.status===`valid`?t.definition:void 0,c=(0,q.useMemo)(()=>new Map([...r.filter(t=>t.id!==e.definitionId),...s?[s]:[]].map(e=>[e.id,e])),[r,s,e.definitionId]),l=(0,J.jsx)(C,{size:`panel`,icon:Ft,title:i(`develop.schema.preview.invalidTitle`),description:i(`develop.schema.preview.invalidDescription`)});return(0,J.jsx)(K,{title:i(`develop.schema.preview.title`),titleAs:`h2`,children:(0,J.jsxs)(Re,{value:a,onValueChange:e=>o(e),children:[(0,J.jsx)(qe,{variant:`underline`,className:`w-full justify-start overflow-x-auto`,children:hs.map(e=>(0,J.jsx)(j,{value:e,children:i(gs[e])},e))}),(0,J.jsx)(M,{value:`form`,className:`pt-4`,children:s?(0,J.jsx)(cs,{definition:s,definitions:r}):l}),(0,J.jsx)(M,{value:`rest`,className:`pt-4`,children:s?(0,J.jsx)(ds,{definition:s,lookup:c}):l}),(0,J.jsx)(M,{value:`graphql`,className:`pt-4`,children:s?(0,J.jsx)(ls,{definition:s,lookup:c}):l}),(0,J.jsx)(M,{value:`types`,className:`pt-4`,children:(0,J.jsx)(ms,{apiKey:e.apiKey,edited:n})}),(0,J.jsx)(M,{value:`plan`,className:`pt-4`,children:s?(0,J.jsx)(us,{before:e.base.definition,after:s}):l})]})})},vs=({file:e,workspace:t})=>{let{t:n}=T(),r=(0,q.useId)(),{setText:i,textOf:a,isDirty:o,definitions:s}=t,c=a(e),l=o(e),{analysis:u,lint:d}=rs(e,c,s),f=(0,q.useCallback)(t=>i(e,t),[i,e]),p=u?Vo(u):[];return(0,J.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,J.jsxs)(K,{title:e.path.slice(e.path.lastIndexOf(`/`)+1),description:e.path,flush:!0,actions:l?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(S,{tone:`warning`,label:n(`develop.schema.modified`),size:`sm`}),(0,J.jsx)(L,{tone:`danger`,title:n(`develop.schema.revertTitle`),description:n(`develop.schema.revertDescription`),confirmLabel:n(`develop.schema.revert`),onConfirm:()=>i(e,e.base.text),trigger:(0,J.jsx)(P,{type:`button`,size:`sm`,variant:`ghost`,children:n(`develop.schema.revert`)})})]}):null,children:[(0,J.jsx)(Yo,{className:`h-[28rem] rounded-none border-0 xl:h-[40rem]`,value:c,onChange:f,label:n(`develop.schema.editorLabel`,{path:e.path}),describedBy:r,readOnly:!1,schema:ts(e.category),lint:d}),u?.status===`invalidJson`?(0,J.jsx)(`p`,{role:`status`,className:`border-t px-5 py-3 text-meta text-destructive`,children:n(`develop.schema.invalidJson`,{message:u.message})}):null,p.length>0?(0,J.jsx)(`div`,{className:`border-t p-4`,children:(0,J.jsx)(is,{id:r,issues:p})}):null]}),(0,J.jsx)(_s,{file:e,analysis:u,edited:l,definitions:s})]})},ys=fe(`/app/schema`),bs=({currentPath:e,nextPath:t})=>e!==t,xs=()=>{let{t:e}=T(),{query:t,workspace:n}=qo();return(0,J.jsx)(b,{width:`full`,children:(0,J.jsx)(G,{query:t,children:()=>n?(0,J.jsx)(Ss,{workspace:n}):(0,J.jsx)(C,{icon:ue,title:e(`develop.schemaTitle`)})})})},Ss=({workspace:e})=>{let{t}=T(),n=_(),{file:r}=ys.useSearch(),i=kn().data,[a,o]=(0,q.useState)([]),[s,c]=(0,q.useState)(),{files:l,dirtyFiles:u}=e,d=u.length>0&&s===void 0,f=Go({onInvalid:e=>void n({to:`/schema`,search:{file:e.path}}),onConflict:o,onApplied:c});(0,q.useEffect)(()=>{s&&n({to:`/changes/$changeSetId`,params:{changeSetId:s}})},[s,n]);let p=l.find(e=>e.path===r)??(r===$?void 0:l[0]),m=r===$||l.length===0,h=i!==void 0&&i!==e.schemaVersion,g=t=>e.textOf(t.file),v=e=>o(t=>t.filter(t=>t.file.definitionId!==e)),ee=(0,J.jsxs)(P,{type:`button`,variant:`outline`,disabled:f.pending,children:[(0,J.jsx)(ln,{"aria-hidden":`true`}),t(`develop.schema.reload`)]});return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(x,{title:t(`develop.schemaTitle`),meta:t(`develop.schema.meta`,{version:e.schemaVersion,count:l.length}),actions:(0,J.jsxs)(J.Fragment,{children:[d?(0,J.jsx)(L,{tone:`danger`,title:t(`develop.schema.reloadTitle`),description:t(`develop.schema.reloadDescription`),confirmLabel:t(`develop.schema.reload`),onConfirm:()=>(o([]),e.reload()),trigger:ee}):(0,J.jsxs)(P,{type:`button`,variant:`outline`,disabled:f.pending,onClick:()=>{o([]),e.reload()},children:[(0,J.jsx)(ln,{"aria-hidden":`true`}),t(`develop.schema.reload`)]}),(0,J.jsx)(P,{type:`button`,disabled:!d||f.pending,onClick:()=>{o([]),f.apply(e)},children:f.pending?t(`develop.schema.applying`):t(`develop.schema.apply.label`,{count:u.length})})]})}),h?(0,J.jsx)(F,{variant:`info`,role:`status`,children:(0,J.jsx)(I,{children:t(`develop.schema.moved`,{loaded:e.schemaVersion,live:i})})}):null,a.length>0?(0,J.jsx)(wo,{conflicts:a,textOf:g,onTakeRemote:t=>{e.takeRemote(t),v(t.definition.id)},onKeepLocal:t=>{e.keepLocal(t),v(t.definition.id)}}):null,(0,J.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row`,children:[(0,J.jsx)(No,{files:l,openPath:m||!p?$:p.path,isDirty:e.isDirty}),(0,J.jsx)(`div`,{className:`min-w-0 flex-1`,children:m||!p?(0,J.jsx)(Zo,{text:e.lockText}):(0,J.jsx)(vs,{file:p,workspace:e},p.definitionId)})]}),(0,J.jsx)(ve,{when:d,shouldBlock:bs})]})},Cs=()=>{let{canReadUsage:e}=Z(),t=Ha(),n=jn(`model`),{principals:r}=Oi((0,q.useMemo)(()=>(n.data??[]).map(({definition:e})=>e.id),[n.data]),e),i=new Map;for(let e of r)if(e.lastSnapshot!==null){let n=i.get(e.lastSnapshot)??[];n.push(t(e.principalKey,e.tokenName)),i.set(e.lastSnapshot,n)}return{canReadUsage:e,pinnedBy:e=>i.get(e)??[]}},ws=({seq:e,label:t,variant:n=`ghost`})=>{let{t:r}=T(),i=(0,q.useId)(),a=(0,q.useId)(),[o,s]=(0,q.useState)(!1),[c,l]=(0,q.useState)(void 0),u=qn(),d=li(),p=(u.data??[]).filter(e=>e.revokedAt===null),m=p.find(e=>e.id===c)??p[0],h=On(`api/content/<model>?snapshot=${e}`,d),g=`curl -H "Authorization: Bearer ${m?`${m.tokenPrefix}…`:`<token>`}" "${f()}${h}"`;return(0,J.jsxs)(Qe,{open:o,onOpenChange:s,modal:!0,children:[(0,J.jsx)(Xe,{asChild:!0,children:(0,J.jsxs)(P,{variant:n,size:`sm`,"aria-label":t?void 0:r(`snapshots.pinLabel`,{seq:e}),children:[(0,J.jsx)(or,{"aria-hidden":`true`}),t??r(`snapshots.pin`)]})}),(0,J.jsxs)(Ze,{align:`end`,"aria-labelledby":i,className:`w-96 max-w-[calc(100vw-2rem)] space-y-3`,children:[(0,J.jsx)(`p`,{id:i,className:`text-sm font-semibold`,children:r(`snapshots.pinTitle`,{seq:e})}),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:r(`snapshots.pinDescription`)}),p.length>0?(0,J.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,J.jsx)(`label`,{htmlFor:a,className:`text-sm font-semibold`,children:r(`snapshots.pinToken`)}),(0,J.jsxs)(pt,{value:m?.id,onValueChange:l,children:[(0,J.jsx)(ut,{id:a,size:`sm`,className:`w-full`,children:(0,J.jsx)(lt,{})}),(0,J.jsx)(dt,{children:p.map(e=>(0,J.jsx)(ft,{value:e.id,children:e.name},e.id))})]})]}):null,(0,J.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-muted p-3 font-mono text-xs break-all whitespace-pre-wrap`,children:g}),(0,J.jsx)(`div`,{className:`flex justify-end`,children:(0,J.jsx)(Bn,{value:g})})]})]})},Ts=({seq:e,size:t=`sm`,label:n})=>{let{t:r}=T(),i=_(),a=It();return(0,J.jsx)(L,{tone:`default`,title:r(`snapshots.restoreTitle`,{seq:e}),description:r(`snapshots.restoreDescription`,{seq:e}),confirmLabel:r(`snapshots.restore`),pendingLabel:r(`common.saving`),onConfirm:()=>a.mutateAsync(e,{onSuccess:e=>void i({to:`/changes/$changeSetId`,params:{changeSetId:e.id}})}),trigger:(0,J.jsxs)(P,{variant:`outline`,size:t,"aria-label":n?void 0:r(`snapshots.restoreLabel`,{seq:e}),children:[(0,J.jsx)(gn,{"aria-hidden":`true`}),n??r(`snapshots.restore`)]})})},Es=({snapshots:e,current:t,pinnedBy:n,showPins:r})=>{let{t:i}=T(),a=Q(),o=i(`common.none`);return(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:i(`snapshots.fields.version`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.when`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.source`)}),(0,J.jsx)(B,{className:`text-right`,children:i(`snapshots.fields.entries`)}),(0,J.jsx)(B,{children:i(`snapshots.fields.schema`)}),r?(0,J.jsx)(B,{children:i(`snapshots.fields.pinnedBy`)}):null,(0,J.jsx)(B,{children:i(`snapshots.fields.deploy`)}),(0,J.jsx)(B,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:i(`common.actions`)})})]})}),(0,J.jsx)(V,{children:e.map(e=>{let s=n(e.seq),c=e.deploymentRuns.at(-1),l=c?yo[c.status]:void 0;return(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`whitespace-nowrap`,children:(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(_e,{asChild:!0,children:(0,J.jsx)(y,{to:`/snapshots/$seq`,params:{seq:String(e.seq)},children:i(`snapshots.version`,{seq:e.seq})})}),e.seq===t?(0,J.jsx)(S,{tone:`success`,label:i(`snapshots.live`),size:`sm`}):null]})}),(0,J.jsxs)(U,{className:`whitespace-nowrap`,title:O(e.createdAt),children:[D(e.createdAt),(0,J.jsx)(`span`,{className:`block text-meta text-muted-foreground`,children:a({type:e.actor.type})})]}),(0,J.jsxs)(U,{className:`max-w-64`,children:[(0,J.jsx)(w,{variant:`secondary`,children:i(vo[e.source])}),e.changeSetId&&e.changeSetTitle?(0,J.jsx)(y,{to:`/changes/$changeSetId`,params:{changeSetId:e.changeSetId},className:`block truncate text-meta text-link underline-offset-4 hover:underline`,children:e.changeSetTitle}):null]}),(0,J.jsx)(U,{className:`text-right tabular-nums`,children:e.changedEntries}),(0,J.jsx)(U,{className:`whitespace-nowrap tabular-nums`,children:e.schemaVersion===null?o:i(`snapshots.schemaVersion`,{version:e.schemaVersion})}),r?(0,J.jsx)(U,{className:`max-w-48`,children:s.length>0?(0,J.jsx)(`span`,{className:`block truncate`,children:s.join(`, `)}):o}):null,(0,J.jsx)(U,{children:c&&l?(0,J.jsx)(y,{to:`/publishing/deployments/runs/$runId`,params:{runId:c.id},className:`rounded-full`,children:(0,J.jsx)(S,{tone:l.tone,label:i(l.labelKey),size:`sm`})}):o}),(0,J.jsx)(U,{className:`text-right`,children:(0,J.jsxs)(`div`,{className:`flex justify-end gap-1`,children:[e.seq===t?null:(0,J.jsx)(P,{variant:`ghost`,size:`sm`,asChild:!0,children:(0,J.jsxs)(y,{to:`/snapshots/$seq`,params:{seq:String(t)},search:{from:e.seq},"aria-label":i(`snapshots.compareLabel`,{seq:e.seq,current:t}),children:[(0,J.jsx)(er,{"aria-hidden":`true`}),i(`snapshots.compare`)]})}),(0,J.jsx)(ws,{seq:e.seq}),e.seq===t?null:(0,J.jsx)(Ts,{seq:e.seq})]})})]},e.seq)})})]})},Ds=()=>{let{t:e}=T(),{canManageChanges:t}=Z(),{cursor:n}=ge({from:`/app/snapshots`}),r=_({from:`/snapshots`}),{pagerProps:i}=hn(n,e=>void r({search:{cursor:e}})),a=Lt(n),{canReadUsage:o,pinnedBy:s}=Cs();return t?(0,J.jsxs)(b,{width:`full`,children:[(0,J.jsx)(x,{title:e(`snapshots.title`),meta:a.data?e(`snapshots.current`,{seq:a.data.current}):void 0}),(0,J.jsx)(G,{query:a,loadingRows:6,isEmpty:e=>e.items.length===0&&n===void 0,empty:(0,J.jsx)(C,{icon:he,title:e(`snapshots.empty`)}),children:e=>(0,J.jsx)(Tn,{footer:(0,J.jsx)(mt,{...i(e.nextCursor)}),children:(0,J.jsx)(Es,{snapshots:e.items,current:e.current,pinnedBy:s,showPins:o})})})]}):(0,J.jsxs)(b,{width:`full`,children:[(0,J.jsx)(x,{title:e(`snapshots.title`)}),(0,J.jsx)(Yi,{})]})},Os=({seq:e,row:t,previous:n,changedCount:r})=>{let{t:i}=T(),a=Q(),o=Jn(),s=t?.actor.type===`admin`?o.data?.find(e=>e.id===t.actor.id)?.name:void 0,c=[i(`snapshots.version`,{seq:e}),t?O(t.createdAt):``,t?i(`snapshots.timeline.shippedBy`,{name:s??a({type:t.actor.type})}):``,t?.schemaVersion==null?``:i(`snapshots.schemaVersion`,{version:t.schemaVersion}),n!==void 0&&r!==void 0?i(`snapshots.timeline.changedSince`,{count:r,seq:n}):``].filter(Boolean);return(0,J.jsx)(`p`,{"aria-live":`polite`,className:`text-sm font-semibold tabular-nums`,children:c.join(` · `)})},ks=(e,t)=>{let n=ke(e),r=ye(e).cover;return{modelId:e.id,modelKey:e.apiKey,routeKey:De(e),label:e.label,singleton:e.kind===`singleton`,titleKey:n?.apiKey??null,coverKey:r?.apiKey??null,locales:t}},As=()=>{let e=jn(`model`),t=Fn();return{places:(0,q.useMemo)(()=>{if(!e.data||!t.data)return;let n=t.data.map(e=>e.code),r=t.data.find(e=>e.isDefault)?.code??n[0]??`en`;return e.data.flatMap(({definition:e})=>e.kind===`component`?[]:[ks(e,e.localized?n:[r])])},[e.data,t.data]),error:e.error??t.error}},js=(e,t)=>t?e.length>0&&e.every(e=>e===`published`)?`added`:e.length>0?`changed`:`unchanged`:`removed`,Ms=(e,t)=>{let n=new Map;for(let t of e){let e=n.get(t.id);if(e){e.locales.includes(t.locale)||e.locales.push(t.locale),e.title??=t.title,e.coverUrl??=t.coverUrl;continue}n.set(t.id,{id:t.id,title:t.title,coverUrl:t.coverUrl,locales:[t.locale],mark:`unchanged`,revisionIds:{}})}let r=[];for(let e of t){let t=n.get(e.id),i=Object.fromEntries(e.locales.flatMap(({locale:e,revisionId:t})=>t?[[e,t]]:[])),a=js(e.locales.map(({change:e})=>e),t!==void 0);t?(t.mark=a,t.revisionIds=i,t.title??=e.title):a===`removed`&&r.push({id:e.id,title:e.title,coverUrl:null,locales:e.locales.map(({locale:e})=>e),mark:a,revisionIds:i})}return[...n.values(),...r]},Ns=(e,t=60)=>e<=t?1:Math.ceil(e/t),Ps=10,Fs=({seqs:e,value:t,onChange:n})=>{let{t:r}=T(),i=(0,q.useId)(),a=Math.max(e.indexOf(t),0),o=Math.max(e.length-1,1),s=Ns(e.length),c=r=>{let i=e[Math.min(Math.max(r,0),e.length-1)];i!==void 0&&i!==t&&n(i)};return(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,J.jsx)(`label`,{htmlFor:i,className:`text-sm font-semibold`,children:r(`snapshots.scrubber.label`)}),(0,J.jsx)(`span`,{className:`text-meta text-muted-foreground tabular-nums`,children:r(`snapshots.scrubber.range`,{min:e[0]??t,max:e.at(-1)??t})})]}),(0,J.jsx)(`input`,{id:i,type:`range`,min:0,max:e.length-1,step:1,value:a,"aria-valuetext":r(`snapshots.version`,{seq:t}),onKeyDown:e=>{if(!e.shiftKey)return;let t={ArrowLeft:-1,ArrowDown:-1,ArrowRight:1,ArrowUp:1}[e.key];t!==void 0&&(e.preventDefault(),c(a+t*Ps))},onChange:e=>c(Number(e.target.value)),className:`h-2 w-full cursor-pointer accent-primary focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none`}),(0,J.jsx)(`div`,{"aria-hidden":`true`,className:`relative mx-2 h-5`,children:e.map((i,a)=>a%s===0||a===e.length-1?(0,J.jsx)(`button`,{type:`button`,tabIndex:-1,title:r(`snapshots.version`,{seq:i}),onClick:()=>n(i),style:{"--tick":`${a/o*100}%`},className:R(`absolute top-0 left-(--tick) h-3 w-px -translate-x-1/2 cursor-pointer bg-border hover:bg-foreground`,i===t&&`h-4 w-0.5 bg-primary`)},i):null)})]})},Is=e=>{if(typeof e!=`object`||!e)return null;let t=e,n=t.variants?.find(e=>e.name===`thumbnail`)?.url;return typeof n==`string`?n:typeof t.url==`string`?t.url:null},Ls=(e,t)=>{let n=e.titleKey?t[e.titleKey]:void 0;return{id:String(t.id),locale:String(t.locale),title:typeof n==`string`&&n.trim()!==``?n:typeof n==`number`?String(n):null,coverUrl:e.coverKey?Is(t[e.coverKey]):null}},Rs=(e,t)=>t.flatMap(t=>t.locales.map(n=>({place:t,locale:n,seq:e}))),zs=(e,t,n,r)=>{let i=u(),a=Rs(e,r),o=Pt(t??0,e,t!==void 0),s=h({queries:a.map(({place:t,locale:n})=>Bt(e,t,n)),combine:e=>({data:e.map(e=>e.data),isPending:e.some(e=>e.isPending),error:e.find(e=>e.error)?.error??null,refetch:()=>Promise.all(e.map(e=>e.refetch()))})});(0,q.useEffect)(()=>{for(let e of n)for(let t of Rs(e,r))i.prefetchQuery(Bt(e,t.place,t.locale))},[n,r,i]);let c=o.data?.items??[];return{states:r.map(e=>({place:e,cards:Ms(a.flatMap((t,n)=>t.place===e?(s.data[n]??[]).map(t=>Ls(e,t)):[]),c.filter(t=>t.modelId===e.modelId))})).filter(e=>e.cards.length>0),isPending:s.isPending||t!==void 0&&o.isPending,error:s.error??o.error,refetch:()=>Promise.all([s.refetch(),o.refetch()])}},Bs={unchanged:{labelKey:`snapshots.timeline.marks.unchanged`,tone:`success`},added:{labelKey:`snapshots.timeline.marks.added`,tone:`success`},changed:{labelKey:`snapshots.timeline.marks.changed`,tone:`warning`},removed:{labelKey:`snapshots.timeline.marks.removed`,tone:`muted`}},Vs={unchanged:``,added:`animate-in fade-in zoom-in-95 duration-500`,changed:`ring-2 ring-warning animate-in zoom-in-95 duration-500`,removed:`border-dashed bg-muted/40 animate-in fade-in duration-500`},Hs=({card:e,onOpen:t})=>{let{t:n}=T(),r=Bs[e.mark],i=e.title??n(`snapshots.timeline.untitled`);return(0,J.jsxs)(`li`,{"data-mark":e.mark,"aria-label":n(`snapshots.timeline.cardLabel`,{title:i,state:n(r.labelKey)}),className:R(`flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card motion-reduce:animate-none`,Vs[e.mark]),children:[(0,J.jsx)(`div`,{className:R(`flex aspect-video items-center justify-center bg-muted transition-opacity duration-500 motion-reduce:transition-none`,e.mark===`removed`&&`opacity-40 grayscale`),children:e.coverUrl?(0,J.jsx)(`img`,{src:e.coverUrl,alt:``,loading:`lazy`,className:`size-full object-cover`}):(0,J.jsx)(Ut,{"aria-hidden":`true`,className:`size-5 text-muted-foreground`})}),(0,J.jsxs)(`div`,{className:`flex flex-1 flex-col gap-2 p-3`,children:[(0,J.jsx)(`p`,{className:R(`line-clamp-2 text-sm font-semibold`,e.mark===`removed`&&`line-through`),children:i}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,J.jsx)(S,{tone:r.tone,label:n(r.labelKey),size:`sm`,live:!1}),e.locales.map(e=>(0,J.jsx)(w,{variant:`outline`,className:`font-mono`,children:e},e))]}),(0,J.jsxs)(P,{variant:`ghost`,size:`sm`,className:`mt-auto self-start`,"aria-label":n(`snapshots.timeline.openVersionOf`,{title:i}),onClick:()=>t(e),children:[(0,J.jsx)(ze,{"aria-hidden":`true`}),n(`snapshots.timeline.openVersion`)]})]})]})},Us=new Set([`publish`,`restore`]),Ws=(e,t)=>{let n=_(),r=u(),i=async(n,i)=>{let o=(await r.fetchQuery({queryKey:a.content.revisions(e,n,i),queryFn:()=>d.content.revisions(e,n,{locale:i})})).filter(e=>t===void 0||e.createdAt<=t),s=e=>[...e].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))[0]?.id;return s(o.filter(e=>Us.has(e.reason)))??s(o)};return async t=>{let r=t.locales[0];try{let a=(r?t.revisionIds[r]:void 0)??(r?await i(t.id,r):void 0);await n({to:`/content/$modelKey/$entryId`,params:{modelKey:e,entryId:t.id},search:{...r?{locale:r}:{},...a?{revision:a}:{}}})}catch(e){Je(e,`opening an entry version from the timeline`),N.error(tt(e))}}},Gs=({state:e,seq:t,snapshotCreatedAt:n})=>{let{t:r}=T(),i=Ws(e.place.modelKey,n),a=e.cards.filter(e=>e.mark!==`removed`).length;return(0,J.jsxs)(`section`,{"aria-label":e.place.label,className:`space-y-3`,children:[(0,J.jsxs)(`h3`,{className:`flex items-baseline gap-2 text-base font-semibold`,children:[e.place.label,(0,J.jsx)(`span`,{className:`text-meta font-normal text-muted-foreground`,children:r(`snapshots.timeline.liveCount`,{count:a})})]}),(0,J.jsx)(`ul`,{className:`grid grid-cols-2 gap-3 md:grid-cols-3 xl:grid-cols-4`,children:e.cards.map(e=>(0,J.jsx)(Hs,{card:e,onOpen:e=>void i(e)},e.mark===`unchanged`?e.id:`${e.id}:${t}`))})]})},Ks=({seq:e,seqs:t,previous:n,places:r,createdAt:i})=>{let{t:a}=T(),o=t.indexOf(e),s=t[o-1],c=t[o+1],l=zs(e,n,(0,q.useMemo)(()=>[s,c].filter(e=>e!==void 0),[s,c]),r);return l.error?(0,J.jsx)(se,{error:l.error,onRetry:()=>void l.refetch()}):l.isPending&&l.states.length===0?(0,J.jsx)(ce,{rows:4}):l.states.length===0?(0,J.jsx)(C,{icon:At,title:a(`snapshots.timeline.nothingLive`,{seq:e})}):(0,J.jsx)(`div`,{"aria-busy":l.isPending||void 0,className:`space-y-8`,children:l.states.map(t=>(0,J.jsx)(Gs,{state:t,seq:e,snapshotCreatedAt:i},t.place.modelId))})},qs=150,Js=({at:e,onAtChange:t})=>{let{t:n}=T(),r=jt(),{places:i,error:a}=As(),[o,s]=(0,q.useState)(e),c=Pn(o,qs),l=(0,q.useMemo)(()=>r.data?r.data.items.map(e=>e.seq).sort((e,t)=>e-t):[],[r.data]);(0,q.useEffect)(()=>{c!==e&&t(c)},[c,e,t]);let u=e=>l[l.indexOf(e)-1]??(e>0?e-1:void 0),d=u(c),f=Pt(d??0,c,d!==void 0);if(r.isError||a)return(0,J.jsx)(se,{error:r.error??a,onRetry:()=>void r.refetch()});if(!r.data||!i)return(0,J.jsx)(ce,{rows:4});let p=r.data.items.find(e=>e.seq===o),m=r.data.items.find(e=>e.seq===c),h=r.data.current;return(0,J.jsxs)(`div`,{className:`space-y-6`,children:[(0,J.jsx)(K,{"aria-label":n(`snapshots.timeline.label`),children:(0,J.jsxs)(`div`,{className:`space-y-4`,children:[(0,J.jsx)(Os,{seq:o,row:p,previous:u(o),changedCount:o===c?f.data?.items.length:void 0}),(0,J.jsx)(Fs,{seqs:l,value:o,onChange:s}),(0,J.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[o===h?null:(0,J.jsx)(Ts,{seq:o,size:`default`,label:n(`snapshots.timeline.restoreHere`)}),(0,J.jsx)(ws,{seq:o,variant:`outline`,label:n(`snapshots.timeline.pinHere`)})]})]})}),(0,J.jsx)(Ks,{seq:c,seqs:l,previous:d,places:i,createdAt:m?.createdAt})]})},Ys={published:{labelKey:`snapshots.changes.published`,tone:`success`},updated:{labelKey:`snapshots.changes.updated`,tone:`warning`},unpublished:{labelKey:`snapshots.changes.unpublished`,tone:`muted`}},Xs=({page:e})=>{let{t}=T(),{schemaVersions:n}=e,r=n.from!==n.to;return(0,J.jsx)(Tn,{toolbar:(0,J.jsxs)(`p`,{className:`text-meta text-muted-foreground`,children:[t(e.nextCursor?`snapshots.diffSummaryMore`:`snapshots.diffSummary`,{from:e.from,to:e.to,count:e.items.length}),r?` · ${t(`snapshots.schemaMoved`,{from:n.from??`?`,to:n.to??`?`})}`:``]}),children:e.items.length===0?(0,J.jsx)(C,{icon:ht,size:`panel`,title:t(`snapshots.noChanges`)}):(0,J.jsxs)(W,{children:[(0,J.jsx)(z,{children:(0,J.jsxs)(H,{children:[(0,J.jsx)(B,{children:t(`changes.fields.entry`)}),(0,J.jsx)(B,{children:t(`changes.fields.model`)}),(0,J.jsx)(B,{children:t(`snapshots.fields.locales`)})]})}),(0,J.jsx)(V,{children:e.items.map(e=>(0,J.jsxs)(H,{children:[(0,J.jsx)(U,{className:`max-w-72`,children:(0,J.jsx)(_e,{asChild:!0,className:`block truncate font-mono text-xs`,children:(0,J.jsx)(y,{to:`/content/$modelKey/$entryId`,params:{modelKey:e.modelKey,entryId:e.id},children:e.id})})}),(0,J.jsx)(U,{className:`font-mono text-xs`,children:e.modelKey}),(0,J.jsx)(U,{children:(0,J.jsx)(`ul`,{className:`flex flex-wrap gap-1.5`,children:e.locales.map(e=>{let n=Ys[e.change];return(0,J.jsx)(`li`,{children:(0,J.jsx)(S,{tone:n.tone,size:`sm`,label:t(`snapshots.localeChange`,{locale:e.locale,change:t(n.labelKey)})})},e.locale)})})})]},e.id))})]})})},Zs={diff:`snapshots.tabs.diff`,timeline:`snapshots.tabs.timeline`},Qs=({snapshot:e})=>{let{t}=T(),n=Q(),r=ge({from:`/app/snapshots/$seq`}),i=_({from:`/snapshots/$seq`}),a=r.tab??`diff`,o=(0,q.useCallback)(e=>void i({search:t=>({...t,at:e}),replace:!0}),[i]),s=r.from!==void 0&&r.from<e.seq?r.from:e.seq-1,c=Lt(void 0).data?.current,l=Pt(s,e.seq,a===`diff`),u=[O(e.createdAt),n({type:e.actor.type}),e.schemaVersion===null?``:t(`snapshots.schemaVersion`,{version:e.schemaVersion})].filter(Boolean).join(` · `);return(0,J.jsx)(b,{children:(0,J.jsxs)(Re,{value:a,onValueChange:e=>void i({search:t=>({...t,tab:e}),replace:!0}),className:`gap-6`,children:[(0,J.jsx)(x,{breadcrumb:[{label:t(`snapshots.title`),link:g({to:`/snapshots`})}],title:t(`snapshots.version`,{seq:e.seq}),badge:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(w,{variant:`secondary`,children:t(vo[e.source])}),e.seq===c?(0,J.jsx)(S,{tone:`success`,label:t(`snapshots.live`)}):null]}),meta:u,actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(ws,{seq:e.seq}),c!==void 0&&e.seq!==c?(0,J.jsx)(Ts,{seq:e.seq,size:`default`}):null]}),tabs:(0,J.jsx)(qe,{variant:`underline`,"aria-label":t(`snapshots.tabs.label`),children:de.map(e=>(0,J.jsx)(j,{value:e,children:t(Zs[e])},e))})}),(0,J.jsx)(M,{value:`diff`,children:(0,J.jsx)(G,{query:l,loadingRows:4,children:e=>(0,J.jsx)(Xs,{page:e})})}),(0,J.jsx)(M,{value:`timeline`,children:(0,J.jsx)(Js,{at:r.at??e.seq,onAtChange:o})})]})})},$s={changes:k(`/app/changes`)({component:aa}),changeSet:k(`/app/changes/$changeSetId`)({component:$a}),snapshots:k(`/app/snapshots`)({component:Ds}),snapshot:k(`/app/snapshots/$seq`)({component:()=>{let{seq:e}=ae({from:`/app/snapshots/$seq`}),{canManageChanges:t}=Z(),n=zt(Number(e));return t?(0,J.jsx)(G,{query:n,loadingRows:6,children:e=>(0,J.jsx)(Qs,{snapshot:e})}):(0,J.jsx)(b,{children:(0,J.jsx)(Yi,{})})}}),live:k(`/app/live`)({component:xo}),schema:k(`/app/schema`)({component:xs}),apiExplorer:k(`/app/api-explorer`)({component:zi}),graphql:k(`/app/develop/graphql`)({component:ro})};export{$s as developLazyRoutes};
11
- //# sourceMappingURL=develop-DL-2W9jv.js.map
11
+ //# sourceMappingURL=develop-BDqMOEql.js.map