@shapio/cms 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/dist/admin/assets/AssetTile-CoNClUYS.js +2 -0
  2. package/dist/admin/assets/AssetTile-CoNClUYS.js.map +1 -0
  3. package/dist/admin/assets/{AssistError-BYR085vj.js → AssistError-BoejyShH.js} +2 -2
  4. package/dist/admin/assets/{AssistError-BYR085vj.js.map → AssistError-BoejyShH.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-BnLF3Efc.js → BlockMenuItems-B2Jugisa.js} +3 -3
  6. package/dist/admin/assets/{BlockMenuItems-BnLF3Efc.js.map → BlockMenuItems-B2Jugisa.js.map} +1 -1
  7. package/dist/admin/assets/Body-D3GwLGaB.js +2 -0
  8. package/dist/admin/assets/{Body-CCOZq2q9.js.map → Body-D3GwLGaB.js.map} +1 -1
  9. package/dist/admin/assets/Builder-CmT5-8hI.js +2 -0
  10. package/dist/admin/assets/Builder-CmT5-8hI.js.map +1 -0
  11. package/dist/admin/assets/{ConfirmDialog-Tu-gjEwm.js → ConfirmDialog-HS8Gc2t3.js} +2 -2
  12. package/dist/admin/assets/{ConfirmDialog-Tu-gjEwm.js.map → ConfirmDialog-HS8Gc2t3.js.map} +1 -1
  13. package/dist/admin/assets/{CopyButton-BuBaIlCk.js → CopyButton-DS-bAA23.js} +2 -2
  14. package/dist/admin/assets/{CopyButton-BuBaIlCk.js.map → CopyButton-DS-bAA23.js.map} +1 -1
  15. package/dist/admin/assets/{CursorPager-Bvu3CXpD.js → CursorPager-C6PyD3wE.js} +2 -2
  16. package/dist/admin/assets/{CursorPager-Bvu3CXpD.js.map → CursorPager-C6PyD3wE.js.map} +1 -1
  17. package/dist/admin/assets/{ExternalLink-CCr5oRXI.js → ExternalLink-KdO72pTj.js} +2 -2
  18. package/dist/admin/assets/{ExternalLink-CCr5oRXI.js.map → ExternalLink-KdO72pTj.js.map} +1 -1
  19. package/dist/admin/assets/FocalPoint-C62fRhmM.js +2 -0
  20. package/dist/admin/assets/FocalPoint-C62fRhmM.js.map +1 -0
  21. package/dist/admin/assets/Form-CLEr5Csd.js +2 -0
  22. package/dist/admin/assets/{Form-Doc0JEzF.js.map → Form-CLEr5Csd.js.map} +1 -1
  23. package/dist/admin/assets/{FormCheckboxGroup-eg39IJvf.js → FormCheckboxGroup-BrXY6qBg.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-eg39IJvf.js.map → FormCheckboxGroup-BrXY6qBg.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-ZppSTZK6.js → FormRadioGroup-BjE1Jhar.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-ZppSTZK6.js.map → FormRadioGroup-BjE1Jhar.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-Cosnxiz-.js → FormSelectField-g4zrUlhv.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-Cosnxiz-.js.map → FormSelectField-g4zrUlhv.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DsKQEZw6.js → FormSwitchField-gciThNGV.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DsKQEZw6.js.map → FormSwitchField-gciThNGV.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-BXidSgIE.js → FormTextareaField-tsS-UXym.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-BXidSgIE.js.map → FormTextareaField-tsS-UXym.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-USQku9Yt.js → HintedLabel-CVe-PIyv.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-USQku9Yt.js.map → HintedLabel-CVe-PIyv.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-Bz_yvehr.js → InfoHint-DtaHU1Cg.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-Bz_yvehr.js.map → InfoHint-DtaHU1Cg.js.map} +1 -1
  37. package/dist/admin/assets/InsertMenuItem-DlzaD9zr.js +2 -0
  38. package/dist/admin/assets/InsertMenuItem-DlzaD9zr.js.map +1 -0
  39. package/dist/admin/assets/{LinkTabs-D4U-rJyK.js → LinkTabs-stM3j4aH.js} +2 -2
  40. package/dist/admin/assets/{LinkTabs-D4U-rJyK.js.map → LinkTabs-stM3j4aH.js.map} +1 -1
  41. package/dist/admin/assets/{Match-UAw1Ss8a.js → Match-ErAxnNAY.js} +2 -2
  42. package/dist/admin/assets/{Match-UAw1Ss8a.js.map → Match-ErAxnNAY.js.map} +1 -1
  43. package/dist/admin/assets/{Panel-BdjqCkKs.js → Panel-ClY9b33D.js} +2 -2
  44. package/dist/admin/assets/{Panel-BdjqCkKs.js.map → Panel-ClY9b33D.js.map} +1 -1
  45. package/dist/admin/assets/{QueryView-Bkyizh1P.js → QueryView-C630REML.js} +2 -2
  46. package/dist/admin/assets/{QueryView-Bkyizh1P.js.map → QueryView-C630REML.js.map} +1 -1
  47. package/dist/admin/assets/{RadioTile-VHTPl88w.js → RadioTile-CD4mel7U.js} +2 -2
  48. package/dist/admin/assets/{RadioTile-VHTPl88w.js.map → RadioTile-CD4mel7U.js.map} +1 -1
  49. package/dist/admin/assets/RichTextField-CxeVX6C-.js +144 -0
  50. package/dist/admin/assets/{RichTextField-B21FqrT5.js.map → RichTextField-CxeVX6C-.js.map} +1 -1
  51. package/dist/admin/assets/{RowTitle-BD8QPs_v.js → RowTitle-B-7RptyN.js} +2 -2
  52. package/dist/admin/assets/{RowTitle-BD8QPs_v.js.map → RowTitle-B-7RptyN.js.map} +1 -1
  53. package/dist/admin/assets/{SecretReveal-BfJKUxXW.js → SecretReveal-Dhw_dYxe.js} +2 -2
  54. package/dist/admin/assets/{SecretReveal-BfJKUxXW.js.map → SecretReveal-Dhw_dYxe.js.map} +1 -1
  55. package/dist/admin/assets/{SharedGlyph-DDPdvsm_.js → SharedGlyph-97RaO6Bh.js} +2 -2
  56. package/dist/admin/assets/{SharedGlyph-DDPdvsm_.js.map → SharedGlyph-97RaO6Bh.js.map} +1 -1
  57. package/dist/admin/assets/{StepList-DKhkw1hN.js → StepList--0Fiqsq-.js} +2 -2
  58. package/dist/admin/assets/{StepList-DKhkw1hN.js.map → StepList--0Fiqsq-.js.map} +1 -1
  59. package/dist/admin/assets/Structure-CoO3iah3.js +2 -0
  60. package/dist/admin/assets/{Structure-C7dr00Bp.js.map → Structure-CoO3iah3.js.map} +1 -1
  61. package/dist/admin/assets/{SubNavLink-BAF2-wuF.js → SubNavLink-YjjaDN40.js} +2 -2
  62. package/dist/admin/assets/{SubNavLink-BAF2-wuF.js.map → SubNavLink-YjjaDN40.js.map} +1 -1
  63. package/dist/admin/assets/{SuggestAltButton-DEsbHvs4.js → SuggestAltButton-Dlyxoypu.js} +2 -2
  64. package/dist/admin/assets/{SuggestAltButton-DEsbHvs4.js.map → SuggestAltButton-Dlyxoypu.js.map} +1 -1
  65. package/dist/admin/assets/{TextLink-CegO3jom.js → TextLink-DIqr5zkJ.js} +2 -2
  66. package/dist/admin/assets/{TextLink-CegO3jom.js.map → TextLink-DIqr5zkJ.js.map} +1 -1
  67. package/dist/admin/assets/Thumbnail-BUYOr4XJ.js +2 -0
  68. package/dist/admin/assets/Thumbnail-BUYOr4XJ.js.map +1 -0
  69. package/dist/admin/assets/{UnsavedChangesGuard-Cbfg-Bgj.js → UnsavedChangesGuard-BfzHgUkF.js} +2 -2
  70. package/dist/admin/assets/{UnsavedChangesGuard-Cbfg-Bgj.js.map → UnsavedChangesGuard-BfzHgUkF.js.map} +1 -1
  71. package/dist/admin/assets/{UserAvatar-CiZ00-cr.js → UserAvatar-DNOWhSWS.js} +2 -2
  72. package/dist/admin/assets/{UserAvatar-CiZ00-cr.js.map → UserAvatar-DNOWhSWS.js.map} +1 -1
  73. package/dist/admin/assets/{auth-BaVAo0u_.js → auth-YVfK3SxF.js} +2 -2
  74. package/dist/admin/assets/{auth-BaVAo0u_.js.map → auth-YVfK3SxF.js.map} +1 -1
  75. package/dist/admin/assets/{badge-IBeVOhKd.js → badge-lJ4Ih_Zn.js} +2 -2
  76. package/dist/admin/assets/{badge-IBeVOhKd.js.map → badge-lJ4Ih_Zn.js.map} +1 -1
  77. package/dist/admin/assets/{boxes-BH0MDegO.js → boxes-DRvd25_u.js} +2 -2
  78. package/dist/admin/assets/{boxes-BH0MDegO.js.map → boxes-DRvd25_u.js.map} +1 -1
  79. package/dist/admin/assets/{calendar-clock-DKUk-w81.js → calendar-clock-VENf4s1R.js} +2 -2
  80. package/dist/admin/assets/{calendar-clock-DKUk-w81.js.map → calendar-clock-VENf4s1R.js.map} +1 -1
  81. package/dist/admin/assets/{changeSets-o_G67qPk.js → changeSets-JmSyu3tu.js} +2 -2
  82. package/dist/admin/assets/{changeSets-o_G67qPk.js.map → changeSets-JmSyu3tu.js.map} +1 -1
  83. package/dist/admin/assets/chevron-left-D2DnQyeV.js +2 -0
  84. package/dist/admin/assets/{chevron-left-D259hWJn.js.map → chevron-left-D2DnQyeV.js.map} +1 -1
  85. package/dist/admin/assets/{circle-check-Cidzt1Ww.js → circle-check-jmRQz1Jq.js} +2 -2
  86. package/dist/admin/assets/{circle-check-Cidzt1Ww.js.map → circle-check-jmRQz1Jq.js.map} +1 -1
  87. package/dist/admin/assets/{clock-BOtPNp9-.js → clock-DrSTMGjp.js} +2 -2
  88. package/dist/admin/assets/{clock-BOtPNp9-.js.map → clock-DrSTMGjp.js.map} +1 -1
  89. package/dist/admin/assets/cn-CL1YHRrS.js +2 -0
  90. package/dist/admin/assets/cn-CL1YHRrS.js.map +1 -0
  91. package/dist/admin/assets/coerce-B4MJTGg1.js +2 -0
  92. package/dist/admin/assets/{coerce-DWI5sgLW.js.map → coerce-B4MJTGg1.js.map} +1 -1
  93. package/dist/admin/assets/constants-ahk0YSYl.js +2 -0
  94. package/dist/admin/assets/{constants-CgUdkWmf.js.map → constants-ahk0YSYl.js.map} +1 -1
  95. package/dist/admin/assets/content-DcvNzKGe.js +3 -0
  96. package/dist/admin/assets/content-DcvNzKGe.js.map +1 -0
  97. package/dist/admin/assets/{contentCounts-T-LmvUf5.js → contentCounts-DzIvdeXR.js} +2 -2
  98. package/dist/admin/assets/{contentCounts-T-LmvUf5.js.map → contentCounts-DzIvdeXR.js.map} +1 -1
  99. package/dist/admin/assets/{contentTypes-BSlp81l1.js → contentTypes-YAd-AzOF.js} +2 -2
  100. package/dist/admin/assets/{contentTypes-BSlp81l1.js.map → contentTypes-YAd-AzOF.js.map} +1 -1
  101. package/dist/admin/assets/context-4Jl20mYc.js +2 -0
  102. package/dist/admin/assets/context-4Jl20mYc.js.map +1 -0
  103. package/dist/admin/assets/{copy-DT7dAzVm.js → copy-t6kAFw-O.js} +2 -2
  104. package/dist/admin/assets/{copy-DT7dAzVm.js.map → copy-t6kAFw-O.js.map} +1 -1
  105. package/dist/admin/assets/{dateTimeLocal-DRq7DuYO.js → dateTimeLocal-IDUOKulz.js} +2 -2
  106. package/dist/admin/assets/{dateTimeLocal-DRq7DuYO.js.map → dateTimeLocal-IDUOKulz.js.map} +1 -1
  107. package/dist/admin/assets/develop-DYwiTd6R.js +11 -0
  108. package/dist/admin/assets/develop-DYwiTd6R.js.map +1 -0
  109. package/dist/admin/assets/dropdown-menu-DiYSm-g3.js +2 -0
  110. package/dist/admin/assets/dropdown-menu-DiYSm-g3.js.map +1 -0
  111. package/dist/admin/assets/{ellipsis-xDmHl1SK.js → ellipsis-DEHUaCkn.js} +2 -2
  112. package/dist/admin/assets/{ellipsis-xDmHl1SK.js.map → ellipsis-DEHUaCkn.js.map} +1 -1
  113. package/dist/admin/assets/external-link-B8UFREQ_.js +2 -0
  114. package/dist/admin/assets/external-link-B8UFREQ_.js.map +1 -0
  115. package/dist/admin/assets/{fileRoute-Buucm0CU.js → fileRoute-CVQpW8cj.js} +2 -2
  116. package/dist/admin/assets/{fileRoute-Buucm0CU.js.map → fileRoute-CVQpW8cj.js.map} +1 -1
  117. package/dist/admin/assets/folder-plus-iDg1hhew.js +2 -0
  118. package/dist/admin/assets/folder-plus-iDg1hhew.js.map +1 -0
  119. package/dist/admin/assets/followPlural-BdqfEe48.js +2 -0
  120. package/dist/admin/assets/{followPlural-Cuocm4Sv.js.map → followPlural-BdqfEe48.js.map} +1 -1
  121. package/dist/admin/assets/{globe-CAhrwBgv.js → globe-TooNSp9V.js} +2 -2
  122. package/dist/admin/assets/{globe-CAhrwBgv.js.map → globe-TooNSp9V.js.map} +1 -1
  123. package/dist/admin/assets/{image-CGN6ffEu.js → image-CXZXXH58.js} +2 -2
  124. package/dist/admin/assets/{image-CGN6ffEu.js.map → image-CXZXXH58.js.map} +1 -1
  125. package/dist/admin/assets/{image-off-0zX_kODH.js → image-off-cxva5G-Y.js} +2 -2
  126. package/dist/admin/assets/{image-off-0zX_kODH.js.map → image-off-cxva5G-Y.js.map} +1 -1
  127. package/dist/admin/assets/{inbox-CukkApHK.js → inbox-B8c9Kj_z.js} +2 -2
  128. package/dist/admin/assets/{inbox-CukkApHK.js.map → inbox-B8c9Kj_z.js.map} +1 -1
  129. package/dist/admin/assets/{inbox-CWq1hHqK.js → inbox-CnzNfqt9.js} +2 -2
  130. package/dist/admin/assets/{inbox-CWq1hHqK.js.map → inbox-CnzNfqt9.js.map} +1 -1
  131. package/dist/admin/assets/index-6iVBpUhu.css +2 -0
  132. package/dist/admin/assets/index-D9KL7arJ.js +4 -0
  133. package/dist/admin/assets/index-D9KL7arJ.js.map +1 -0
  134. package/dist/admin/assets/{key-round-DnE-2gr0.js → key-round-CFJ61iCd.js} +2 -2
  135. package/dist/admin/assets/{key-round-DnE-2gr0.js.map → key-round-CFJ61iCd.js.map} +1 -1
  136. package/dist/admin/assets/languages-eh7U4anI.js +2 -0
  137. package/dist/admin/assets/languages-eh7U4anI.js.map +1 -0
  138. package/dist/admin/assets/layers-mGfmMsKE.js +2 -0
  139. package/dist/admin/assets/layers-mGfmMsKE.js.map +1 -0
  140. package/dist/admin/assets/link-2-off-DbZzRN_w.js +2 -0
  141. package/dist/admin/assets/link-2-off-DbZzRN_w.js.map +1 -0
  142. package/dist/admin/assets/{link-DPniuk00.js → link-b2pFaN-A.js} +2 -2
  143. package/dist/admin/assets/{link-DPniuk00.js.map → link-b2pFaN-A.js.map} +1 -1
  144. package/dist/admin/assets/{locales-DFLQ17ow.js → locales-oBD0q1pN.js} +2 -2
  145. package/dist/admin/assets/{locales-DFLQ17ow.js.map → locales-oBD0q1pN.js.map} +1 -1
  146. package/dist/admin/assets/{media-CKTs3j83.js → media-5ks_0Rre.js} +2 -2
  147. package/dist/admin/assets/{media-CKTs3j83.js.map → media-5ks_0Rre.js.map} +1 -1
  148. package/dist/admin/assets/media-Cs9LCQcz.js +2 -0
  149. package/dist/admin/assets/{media-CUfV74JZ.js.map → media-Cs9LCQcz.js.map} +1 -1
  150. package/dist/admin/assets/network-DS8MW3AZ.js +2 -0
  151. package/dist/admin/assets/network-DS8MW3AZ.js.map +1 -0
  152. package/dist/admin/assets/{pencil-BqAgKC9v.js → pencil-C7eD5mlZ.js} +2 -2
  153. package/dist/admin/assets/{pencil-BqAgKC9v.js.map → pencil-C7eD5mlZ.js.map} +1 -1
  154. package/dist/admin/assets/{plus-DLRcpVhJ.js → plus-BDZHQBlU.js} +2 -2
  155. package/dist/admin/assets/{plus-DLRcpVhJ.js.map → plus-BDZHQBlU.js.map} +1 -1
  156. package/dist/admin/assets/{preload-helper-BHNBIF88.js → preload-helper-CJNJ4S3k.js} +2 -2
  157. package/dist/admin/assets/{preload-helper-BHNBIF88.js.map → preload-helper-CJNJ4S3k.js.map} +1 -1
  158. package/dist/admin/assets/publishing-C4YQ4XKt.js +2 -0
  159. package/dist/admin/assets/{publishing-DaaE8PaU.js.map → publishing-C4YQ4XKt.js.map} +1 -1
  160. package/dist/admin/assets/{radio-group-CA3XlQcc.js → radio-group-zOsGAYRP.js} +2 -2
  161. package/dist/admin/assets/{radio-group-CA3XlQcc.js.map → radio-group-zOsGAYRP.js.map} +1 -1
  162. package/dist/admin/assets/{rotate-ccw-CfrkcgYa.js → rotate-ccw-DCWwb4Ga.js} +2 -2
  163. package/dist/admin/assets/{rotate-ccw-CfrkcgYa.js.map → rotate-ccw-DCWwb4Ga.js.map} +1 -1
  164. package/dist/admin/assets/{schedules-hJQkjEhN.js → schedules-DXrBSypK.js} +2 -2
  165. package/dist/admin/assets/{schedules-hJQkjEhN.js.map → schedules-DXrBSypK.js.map} +1 -1
  166. package/dist/admin/assets/{schema--xSR7cf9.js → schema-B7L9OJrX.js} +2 -2
  167. package/dist/admin/assets/{schema--xSR7cf9.js.map → schema-B7L9OJrX.js.map} +1 -1
  168. package/dist/admin/assets/{scroll-text-BA9yh7Za.js → scroll-text-BLThe4Ki.js} +2 -2
  169. package/dist/admin/assets/{scroll-text-BA9yh7Za.js.map → scroll-text-BLThe4Ki.js.map} +1 -1
  170. package/dist/admin/assets/{file-text-BJkQMeQO.js → search-CcJQqtRw.js} +2 -2
  171. package/dist/admin/assets/search-CcJQqtRw.js.map +1 -0
  172. package/dist/admin/assets/{searchSchemas-C-nQbyhd.js → searchSchemas-BCRZ1jyL.js} +2 -2
  173. package/dist/admin/assets/{searchSchemas-C-nQbyhd.js.map → searchSchemas-BCRZ1jyL.js.map} +1 -1
  174. package/dist/admin/assets/{sections-D0OZozD2.js → sections-TIN_Nl1b.js} +2 -2
  175. package/dist/admin/assets/{sections-D0OZozD2.js.map → sections-TIN_Nl1b.js.map} +1 -1
  176. package/dist/admin/assets/sections-v5Flaor9.js +2 -0
  177. package/dist/admin/assets/sections-v5Flaor9.js.map +1 -0
  178. package/dist/admin/assets/{select-De48SQdZ.js → select-CpHp3YOH.js} +2 -2
  179. package/dist/admin/assets/{select-De48SQdZ.js.map → select-CpHp3YOH.js.map} +1 -1
  180. package/dist/admin/assets/{send-NuSmLVSD.js → send-CbP0Rc9_.js} +2 -2
  181. package/dist/admin/assets/{send-NuSmLVSD.js.map → send-CbP0Rc9_.js.map} +1 -1
  182. package/dist/admin/assets/seo-1n9s7YuX.js +2 -0
  183. package/dist/admin/assets/seo-1n9s7YuX.js.map +1 -0
  184. package/dist/admin/assets/settings-CuEO5l07.js +2 -0
  185. package/dist/admin/assets/settings-CuEO5l07.js.map +1 -0
  186. package/dist/admin/assets/skeleton-DElTumgk.js +42 -0
  187. package/dist/admin/assets/skeleton-DElTumgk.js.map +1 -0
  188. package/dist/admin/assets/snapshots-DkyyrWX3.js +2 -0
  189. package/dist/admin/assets/{snapshots-BQeFK5cj.js.map → snapshots-DkyyrWX3.js.map} +1 -1
  190. package/dist/admin/assets/{sparkles-B-0I44es.js → sparkles-D88gf3vX.js} +2 -2
  191. package/dist/admin/assets/{sparkles-B-0I44es.js.map → sparkles-D88gf3vX.js.map} +1 -1
  192. package/dist/admin/assets/src-Be3Ds5Dc.js +4 -0
  193. package/dist/admin/assets/src-Be3Ds5Dc.js.map +1 -0
  194. package/dist/admin/assets/{stableId-rPnYVF-A.js → stableId-DlNKh3HM.js} +2 -2
  195. package/dist/admin/assets/{stableId-rPnYVF-A.js.map → stableId-DlNKh3HM.js.map} +1 -1
  196. package/dist/admin/assets/{store-Bqd9L9DK.js → store-jUWyOXDG.js} +2 -2
  197. package/dist/admin/assets/{store-Bqd9L9DK.js.map → store-jUWyOXDG.js.map} +1 -1
  198. package/dist/admin/assets/{switch-JmfyFAQG.js → switch-CijNGYkG.js} +2 -2
  199. package/dist/admin/assets/{switch-JmfyFAQG.js.map → switch-CijNGYkG.js.map} +1 -1
  200. package/dist/admin/assets/table-DQ5ILlSh.js +56 -0
  201. package/dist/admin/assets/table-DQ5ILlSh.js.map +1 -0
  202. package/dist/admin/assets/tabs-CSqGW9Du.js +5 -0
  203. package/dist/admin/assets/tabs-CSqGW9Du.js.map +1 -0
  204. package/dist/admin/assets/{textarea-eatLAWE_.js → textarea-FwSvwmyT.js} +2 -2
  205. package/dist/admin/assets/{textarea-eatLAWE_.js.map → textarea-FwSvwmyT.js.map} +1 -1
  206. package/dist/admin/assets/theme-CHHVK8Ps.js +2 -0
  207. package/dist/admin/assets/theme-CHHVK8Ps.js.map +1 -0
  208. package/dist/admin/assets/{titles-Bi2fWNN4.js → titles-CQYc9nDQ.js} +2 -2
  209. package/dist/admin/assets/{titles-Bi2fWNN4.js.map → titles-CQYc9nDQ.js.map} +1 -1
  210. package/dist/admin/assets/{tokens-C2E7swse.js → tokens-C-20gLAT.js} +2 -2
  211. package/dist/admin/assets/{tokens-C2E7swse.js.map → tokens-C-20gLAT.js.map} +1 -1
  212. package/dist/admin/assets/{tooltip-Bji9fmSr.js → tooltip-BXqFQv9N.js} +2 -2
  213. package/dist/admin/assets/{tooltip-Bji9fmSr.js.map → tooltip-BXqFQv9N.js.map} +1 -1
  214. package/dist/admin/assets/{undo-2-BU-uqm7e.js → undo-2-CLy2zklL.js} +2 -2
  215. package/dist/admin/assets/{undo-2-BU-uqm7e.js.map → undo-2-CLy2zklL.js.map} +1 -1
  216. package/dist/admin/assets/{useAuditLabels-D5nmbXqN.js → useAuditLabels-BJF7M5RY.js} +2 -2
  217. package/dist/admin/assets/{useAuditLabels-D5nmbXqN.js.map → useAuditLabels-BJF7M5RY.js.map} +1 -1
  218. package/dist/admin/assets/{useConfirmTarget-Y7_8kVX5.js → useConfirmTarget-BUvlrGSW.js} +2 -2
  219. package/dist/admin/assets/{useConfirmTarget-Y7_8kVX5.js.map → useConfirmTarget-BUvlrGSW.js.map} +1 -1
  220. package/dist/admin/assets/{useContentSchema-DJTqjlUk.js → useContentSchema-Cvtes34f.js} +2 -2
  221. package/dist/admin/assets/{useContentSchema-DJTqjlUk.js.map → useContentSchema-Cvtes34f.js.map} +1 -1
  222. package/dist/admin/assets/{useCursorPager-CiJroOo7.js → useCursorPager-CzB6NDOB.js} +2 -2
  223. package/dist/admin/assets/{useCursorPager-CiJroOo7.js.map → useCursorPager-CzB6NDOB.js.map} +1 -1
  224. package/dist/admin/assets/{useDiscardGuard-t_N3l9TQ.js → useDiscardGuard-BAEGkGK9.js} +2 -2
  225. package/dist/admin/assets/{useDiscardGuard-t_N3l9TQ.js.map → useDiscardGuard-BAEGkGK9.js.map} +1 -1
  226. package/dist/admin/assets/useMediaPickerDialog-CiN_pias.js +2 -0
  227. package/dist/admin/assets/useMediaPickerDialog-CiN_pias.js.map +1 -0
  228. package/dist/admin/assets/useMediaUploader-CapEHBIt.js +2 -0
  229. package/dist/admin/assets/useMediaUploader-CapEHBIt.js.map +1 -0
  230. package/dist/admin/assets/usePaletteItems-wpn3ms6o.js +2 -0
  231. package/dist/admin/assets/usePaletteItems-wpn3ms6o.js.map +1 -0
  232. package/dist/admin/assets/{usePlaces-CnSOZwtO.js → usePlaces-6iTN15Xy.js} +2 -2
  233. package/dist/admin/assets/{usePlaces-CnSOZwtO.js.map → usePlaces-6iTN15Xy.js.map} +1 -1
  234. package/dist/admin/assets/{useQueries-BRolGUiw.js → useQueries-CYfcxI0Q.js} +2 -2
  235. package/dist/admin/assets/{useQueries-BRolGUiw.js.map → useQueries-CYfcxI0Q.js.map} +1 -1
  236. package/dist/admin/assets/useResolvedScheme-i1EwGHuF.js +2 -0
  237. package/dist/admin/assets/{searchSchema-Ypl6gq9g.js.map → useResolvedScheme-i1EwGHuF.js.map} +1 -1
  238. package/dist/admin/assets/useSchemaScopeAccess-WQKmj8_3.js +2 -0
  239. package/dist/admin/assets/useSchemaScopeAccess-WQKmj8_3.js.map +1 -0
  240. package/dist/admin/assets/{users-CbErtM7w.js → users-B01EH47o.js} +2 -2
  241. package/dist/admin/assets/{users-CbErtM7w.js.map → users-B01EH47o.js.map} +1 -1
  242. package/dist/admin/assets/{users-bDGYpSXg.js → users-BgTNDPXx.js} +2 -2
  243. package/dist/admin/assets/{users-bDGYpSXg.js.map → users-BgTNDPXx.js.map} +1 -1
  244. package/dist/admin/assets/{zod-Gtw4e0qi.js → zod-79xzBIrW.js} +2 -2
  245. package/dist/admin/assets/{zod-Gtw4e0qi.js.map → zod-79xzBIrW.js.map} +1 -1
  246. package/dist/admin/index.html +57 -57
  247. package/dist/admin/theme-init.js +23 -21
  248. package/dist/cli.js +19 -9
  249. package/dist/cli.js.map +1 -1
  250. package/dist/config.d.ts +1 -1
  251. package/dist/index.d.ts +4 -4
  252. package/dist/index.js +1 -1
  253. package/dist/{public-B7fFHMNr.d.ts → public-CTK82y3t.d.ts} +20 -3
  254. package/dist/{worker-BAmQPoTJ.js → worker-BDYDbaea.js} +2165 -680
  255. package/dist/worker-BDYDbaea.js.map +1 -0
  256. package/package.json +5 -5
  257. package/dist/admin/assets/Body-CCOZq2q9.js +0 -2
  258. package/dist/admin/assets/Builder-BZy9mphs.js +0 -2
  259. package/dist/admin/assets/Builder-BZy9mphs.js.map +0 -1
  260. package/dist/admin/assets/Form-Doc0JEzF.js +0 -2
  261. package/dist/admin/assets/InsertMenuItem-DJXglsEd.js +0 -2
  262. package/dist/admin/assets/InsertMenuItem-DJXglsEd.js.map +0 -1
  263. package/dist/admin/assets/RichTextField-B21FqrT5.js +0 -144
  264. package/dist/admin/assets/Structure-C7dr00Bp.js +0 -2
  265. package/dist/admin/assets/Thumbnail-CTpKlrxR.js +0 -2
  266. package/dist/admin/assets/Thumbnail-CTpKlrxR.js.map +0 -1
  267. package/dist/admin/assets/arrow-up-DwMJqZVV.js +0 -2
  268. package/dist/admin/assets/arrow-up-DwMJqZVV.js.map +0 -1
  269. package/dist/admin/assets/chevron-left-D259hWJn.js +0 -2
  270. package/dist/admin/assets/circle-x-c1RwmC6j.js +0 -2
  271. package/dist/admin/assets/circle-x-c1RwmC6j.js.map +0 -1
  272. package/dist/admin/assets/cn-M4_WHiur.js +0 -2
  273. package/dist/admin/assets/cn-M4_WHiur.js.map +0 -1
  274. package/dist/admin/assets/coerce-DWI5sgLW.js +0 -2
  275. package/dist/admin/assets/constants-CgUdkWmf.js +0 -2
  276. package/dist/admin/assets/content-D25ainqV.js +0 -3
  277. package/dist/admin/assets/content-D25ainqV.js.map +0 -1
  278. package/dist/admin/assets/develop-qF10t9tM.js +0 -11
  279. package/dist/admin/assets/develop-qF10t9tM.js.map +0 -1
  280. package/dist/admin/assets/dropdown-menu-Cl20LCvY.js +0 -2
  281. package/dist/admin/assets/dropdown-menu-Cl20LCvY.js.map +0 -1
  282. package/dist/admin/assets/external-link-DtJAaOWk.js +0 -2
  283. package/dist/admin/assets/external-link-DtJAaOWk.js.map +0 -1
  284. package/dist/admin/assets/file-text-BJkQMeQO.js.map +0 -1
  285. package/dist/admin/assets/followPlural-Cuocm4Sv.js +0 -2
  286. package/dist/admin/assets/index-C9uJxg4J.js +0 -4
  287. package/dist/admin/assets/index-C9uJxg4J.js.map +0 -1
  288. package/dist/admin/assets/index-Cz3C-LxB.css +0 -2
  289. package/dist/admin/assets/link-2-off-Cbpvb3w4.js +0 -2
  290. package/dist/admin/assets/link-2-off-Cbpvb3w4.js.map +0 -1
  291. package/dist/admin/assets/list-CkHF_4xh.js +0 -2
  292. package/dist/admin/assets/list-CkHF_4xh.js.map +0 -1
  293. package/dist/admin/assets/media-CUfV74JZ.js +0 -2
  294. package/dist/admin/assets/network-Fri1cjMt.js +0 -2
  295. package/dist/admin/assets/network-Fri1cjMt.js.map +0 -1
  296. package/dist/admin/assets/publishing-DaaE8PaU.js +0 -2
  297. package/dist/admin/assets/search--71HzPvh.js +0 -2
  298. package/dist/admin/assets/search--71HzPvh.js.map +0 -1
  299. package/dist/admin/assets/searchSchema-Ypl6gq9g.js +0 -2
  300. package/dist/admin/assets/sections-BBN2JErq.js +0 -2
  301. package/dist/admin/assets/sections-BBN2JErq.js.map +0 -1
  302. package/dist/admin/assets/settings-CYXU73dP.js +0 -2
  303. package/dist/admin/assets/settings-CYXU73dP.js.map +0 -1
  304. package/dist/admin/assets/skeleton-CCwdO9oq.js +0 -42
  305. package/dist/admin/assets/skeleton-CCwdO9oq.js.map +0 -1
  306. package/dist/admin/assets/snapshots-BQeFK5cj.js +0 -2
  307. package/dist/admin/assets/src-CQu-YxUM.js +0 -4
  308. package/dist/admin/assets/src-CQu-YxUM.js.map +0 -1
  309. package/dist/admin/assets/table-BEDv9IRM.js +0 -56
  310. package/dist/admin/assets/table-BEDv9IRM.js.map +0 -1
  311. package/dist/admin/assets/tabs-DSS1c-Kf.js +0 -5
  312. package/dist/admin/assets/tabs-DSS1c-Kf.js.map +0 -1
  313. package/dist/admin/assets/useMediaUploader-CLHmKCwq.js +0 -2
  314. package/dist/admin/assets/useMediaUploader-CLHmKCwq.js.map +0 -1
  315. package/dist/admin/assets/usePaletteItems-BVjWCdow.js +0 -2
  316. package/dist/admin/assets/usePaletteItems-BVjWCdow.js.map +0 -1
  317. package/dist/admin/assets/useSchemaScopeAccess-bd8RQxuu.js +0 -2
  318. package/dist/admin/assets/useSchemaScopeAccess-bd8RQxuu.js.map +0 -1
  319. package/dist/worker-BAmQPoTJ.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{P as r,bt as i,i as a,j as o,r as s,t as c}from"./cn-M4_WHiur.js";import{C as l,T as u,g as d,u as f,x as p}from"./auth-BaVAo0u_.js";import{_ as m,a as h,i as g,j as ee,n as _,o as v,r as te,t as ne,v as re}from"./badge-IBeVOhKd.js";import{n as ie}from"./Match-UAw1Ss8a.js";import{i as ae,n as y,o as b,t as oe}from"./RowTitle-BD8QPs_v.js";import{t as x}from"./fileRoute-Buucm0CU.js";import{t as se}from"./UnsavedChangesGuard-Cbfg-Bgj.js";import{a as ce,i as le,n as ue,r as de,t as fe}from"./FormCheckboxGroup-eg39IJvf.js";import{B as pe,G as S,R as me,d as he,f as ge,o as C,p as _e,t as ve,u as ye}from"./InfoHint-Bz_yvehr.js";import{D as be,i as w,n as xe}from"./skeleton-CCwdO9oq.js";import{t as Se}from"./calendar-clock-DKUk-w81.js";import{a as Ce,i as we,n as Te,r as Ee,s as De,t as Oe}from"./select-De48SQdZ.js";import{t as ke}from"./CursorPager-Bvu3CXpD.js";import{a as T,c as Ae,i as E,n as je,o as D,r as O,s as Me}from"./ConfirmDialog-Tu-gjEwm.js";import{t as Ne}from"./circle-check-Cidzt1Ww.js";import{t as Pe}from"./circle-x-c1RwmC6j.js";import{t as Fe}from"./inbox-CukkApHK.js";import{t as Ie}from"./key-round-DnE-2gr0.js";import{t as Le}from"./plus-DLRcpVhJ.js";import{C as Re,D as ze,E as Be,O as k,S as Ve,T as He,_ as Ue,a as We,b as Ge,c as Ke,d as qe,f as A,g as Je,h as Ye,i as Xe,l as Ze,m as Qe,n as $e,o as et,p as tt,r as nt,s as rt,t as it,u as at,v as ot,w as st,x as ct,y as lt}from"./useCursorPager-CiJroOo7.js";import{t as ut}from"./rotate-ccw-CfrkcgYa.js";import{t as dt}from"./send-NuSmLVSD.js";import{n as ft,r as pt}from"./sections-D0OZozD2.js";import{c as mt,f as ht,n as j,o as gt,r as _t,t as M,u as N}from"./zod-Gtw4e0qi.js";import{n as vt,t as P}from"./settle-LRKtTN_e.js";import{_ as F,a as I,d as yt,g as L,i as R,l as z,n as B,o as V,r as H,s as bt,t as U,u as xt,y as St}from"./table-BEDv9IRM.js";import{t as Ct}from"./HintedLabel-USQku9Yt.js";import{t as wt}from"./TextLink-CegO3jom.js";import{t as Tt}from"./sites-C6_THCVK.js";import{s as Et}from"./schema--xSR7cf9.js";import{t as W}from"./QueryView-Bkyizh1P.js";import{t as Dt}from"./FormRadioGroup-ZppSTZK6.js";import{r as Ot}from"./locales-DFLQ17ow.js";import{t as G}from"./Panel-BdjqCkKs.js";import{n as kt}from"./publishing-B7zv1e7j.js";import{n as At,r as jt,t as Mt}from"./schedules-hJQkjEhN.js";import{n as Nt,r as Pt,t as Ft}from"./dateTimeLocal-DRq7DuYO.js";import{t as It}from"./ExternalLink-CCr5oRXI.js";import{t as Lt}from"./CopyButton-BuBaIlCk.js";import{t as K}from"./FormSwitchField-DsKQEZw6.js";import{n as Rt,t as q}from"./FormSelectField-Cosnxiz-.js";import{a as zt,t as Bt}from"./SecretReveal-BfJKUxXW.js";import{t as Vt}from"./LinkTabs-D4U-rJyK.js";var Ht={name:`calendar-plus`,size:24,node:[[`path`,{d:`M16 18h6`,key:`987eiv`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`path`,{d:`M19 15v6`,key:`10aioa`}],[`path`,{d:`M21 11.5V5a2 2 0 00-2-2H5a2 2 0 00-2 2v14a2 2 0 002 2h8.3`,key:`jgwkxf`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M8 2v3`,key:`1ioesn`}]]};Ht.node;var Ut=a(Ht),Wt={name:`plug-zap`,size:24,node:[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]],aliases:[`plug-zap-2`]};Wt.node;var Gt=a(Wt),Kt={name:`power`,size:24,node:[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]};Kt.node;var qt=a(Kt),J=e(n(),1),Jt=()=>(0,J.jsx)(ie,{}),Y=e(t(),1),X=()=>{let e=f().data?.globalPermissions??[];return{permissions:e,canManageWebhooks:e.includes(`webhooks.manage`),canManageDeployments:e.includes(`deployments.manage`),canTriggerDeployments:e.includes(`deployments.trigger`),canManagePublishing:e.includes(`publishing.manage`)}},Yt=({actions:e})=>{let{t}=o(),{permissions:n}=X();return(0,J.jsx)(g,{title:t(`nav.publishing`),actions:e,tabs:(0,J.jsx)(Vt,{label:t(`publishing.sections`),tabs:ft(n).map(e=>({to:e.to,label:t(e.labelKey)}))})})},Xt=e=>{let[t,n]=(0,Y.useState)(void 0),[r,i]=(0,Y.useState)(void 0),a=(0,Y.useEffectEvent)(t=>e(t));return(0,Y.useEffect)(()=>{r&&a(r)},[r]),{revealed:t,reveal:n,dismiss:()=>{i(t?.id),n(void 0)},keepFocusOnReveal:e=>{t&&e.preventDefault()}}},Zt=({items:e,className:t})=>(0,J.jsx)(`dl`,{className:c(`grid gap-x-6 gap-y-3 text-sm sm:grid-cols-2`,t),children:e.map(e=>(0,J.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,J.jsx)(`dt`,{className:`text-xs font-medium text-muted-foreground`,children:e.label}),(0,J.jsx)(`dd`,{className:`break-words`,children:e.value})]},e.label))}),Z=({enabled:e})=>{let{t}=o();return e?(0,J.jsx)(_,{tone:`success`,label:t(`publishing.enabled`)}):(0,J.jsx)(_,{tone:`muted`,label:t(`publishing.disabled`)})},Qt=e=>{let{t}=o(),n=u(),r=st(),i=He(),a=ot();return{testResult:r.data,testing:r.isPending,triggering:i.isPending,deleting:a.isPending,runTest:()=>r.mutate(e.id),triggerRun:()=>i.mutate(e.id,{onSuccess:e=>{S.success(t(`publishing.deployments.triggered`)),n({to:`/publishing/deployments/runs/$runId`,params:{runId:e.id}})}}),remove:()=>a.mutateAsync(e.id,{onSuccess:()=>{S.success(t(`publishing.deployments.deleted`,{name:e.name})),n({to:`/publishing/deployments`})}})}},$t={scheduled:{labelKey:`publishing.scheduled.statuses.scheduled`,tone:`scheduled`},done:{labelKey:`publishing.scheduled.statuses.done`,tone:`success`},failed:{labelKey:`publishing.scheduled.statuses.failed`,tone:`danger`},cancelled:{labelKey:`publishing.scheduled.statuses.cancelled`,tone:`muted`}},en={pending:{labelKey:`publishing.webhooks.deliveryStatuses.pending`,tone:`progress`},retrying:{labelKey:`publishing.webhooks.deliveryStatuses.retrying`,tone:`progress`},succeeded:{labelKey:`publishing.webhooks.deliveryStatuses.succeeded`,tone:`success`},dead:{labelKey:`publishing.webhooks.deliveryStatuses.dead`,tone:`danger`}},Q={queued:{labelKey:`publishing.deployments.statuses.queued`,tone:`neutral`},triggered:{labelKey:`publishing.deployments.statuses.triggered`,tone:`progress`},triggeredUnknown:{labelKey:`publishing.deployments.statuses.triggeredUnknown`,tone:`muted`},building:{labelKey:`publishing.deployments.statuses.building`,tone:`progress`},deployed:{labelKey:`publishing.deployments.statuses.deployed`,tone:`success`},committed:{labelKey:`publishing.deployments.statuses.committed`,tone:`success`},failed:{labelKey:`publishing.deployments.statuses.failed`,tone:`danger`},unknown:{labelKey:`publishing.deployments.statuses.unknown`,tone:`muted`}},tn=e=>{switch(e.status){case`triggered`:return e.completionReported?Q.triggered:Q.triggeredUnknown;case`deployed`:return e.provider===`github`?Q.committed:Q.deployed;default:return Q[e.status]}},nn=({run:e,live:t=!0})=>{let{t:n}=o(),r=tn(e);return(0,J.jsx)(_,{tone:r.tone,label:n(r.labelKey),live:t})},rn=({connection:e})=>{let{t}=o(),{canTriggerDeployments:n}=X(),r=Qt(e);return(0,J.jsxs)(G,{title:e.name,titleAs:`h3`,description:t(A[e.provider]),actions:(0,J.jsx)(Z,{enabled:e.enabled}),bodyClassName:`space-y-4`,children:[(0,J.jsx)(Zt,{items:[{label:t(`publishing.deployments.latestRun`),value:e.latestRun?(0,J.jsx)(nn,{run:e.latestRun}):t(`common.never`)},{label:t(`publishing.deployments.currentSnapshot`),value:e.currentRun?.snapshot==null?t(`common.none`):t(`publishing.snapshotNumber`,{snapshot:e.currentRun.snapshot})}],className:`grid-cols-2`}),(0,J.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2`,children:[(0,J.jsx)(w,{asChild:!0,variant:`outline`,size:`sm`,children:(0,J.jsx)(p,{to:`/publishing/deployments/$connectionId`,params:{connectionId:e.id},children:t(`publishing.deployments.open`)})}),n?(0,J.jsxs)(w,{size:`sm`,disabled:r.triggering||!e.enabled,onClick:r.triggerRun,children:[(0,J.jsx)(k,{"aria-hidden":`true`}),t(`publishing.deployments.triggerRun`)]}):null]})]})},an=[`commit`,`pull_request`],on=`none`,sn=[`url`,`accountId`,`projectName`,`projectId`,`teamId`,`siteId`,`owner`,`repo`,`branch`,`mode`,`directory`],cn=[`signingSecret`,`deployHookUrl`,`apiToken`,`token`],ln=new Set([`teamId`]),$={generic_webhook:{settings:[`url`],secrets:[{name:`signingSecret`,requiredOnCreate:!1}]},cloudflare_pages:{settings:[`accountId`,`projectName`],secrets:[{name:`deployHookUrl`,requiredOnCreate:!0},{name:`apiToken`,requiredOnCreate:!0}]},vercel:{settings:[`projectId`,`teamId`],secrets:[{name:`deployHookUrl`,requiredOnCreate:!0},{name:`apiToken`,requiredOnCreate:!0}]},netlify:{settings:[`siteId`],secrets:[{name:`apiToken`,requiredOnCreate:!0}]},github:{settings:[`owner`,`repo`,`branch`,`directory`],secrets:[{name:`token`,requiredOnCreate:!0}]}},un=e=>e===`github`?[...$.github.settings,`mode`]:$[e].settings,dn=e=>de.filter(t=>t!==`schema`||e===`github`),fn=e=>/^\d+$/.test(e)&&Number(e)<=86400,pn=e=>St({protocol:/^https?$/}).safeParse(e).success,mn=Object.fromEntries(sn.map(e=>[e,F()])),hn=Object.fromEntries(cn.map(e=>[e,F()])),gn=e=>L({name:gt().max(200,`validation.tooLong`),provider:z(ue),settings:L(mn),secrets:L(hn),previewUrlTemplate:F().trim().max(2e3,`validation.tooLong`),triggerPolicy:xt(z(de)),debounceSeconds:F().trim().refine(fn,`validation.debounceSeconds`),allowPrivateNetwork:yt(),enabled:yt(),deliveryRoleId:F()}).superRefine((t,n)=>{let r=$[t.provider];for(let e of r.settings)!ln.has(e)&&t.settings[e].trim()===``&&n.addIssue({code:`custom`,path:[`settings`,e],message:`validation.required`});if(t.provider===`generic_webhook`&&t.settings.url.trim()&&!pn(t.settings.url.trim())&&n.addIssue({code:`custom`,path:[`settings`,`url`],message:`validation.url`}),e===`create`)for(let e of r.secrets)e.requiredOnCreate&&t.secrets[e.name].trim()===``&&n.addIssue({code:`custom`,path:[`secrets`,e.name],message:`validation.required`});t.previewUrlTemplate&&!pn(t.previewUrlTemplate)&&n.addIssue({code:`custom`,path:[`previewUrlTemplate`],message:`validation.url`})}),_n=e=>Object.fromEntries(e.map(e=>[e,``])),vn={name:``,provider:`generic_webhook`,settings:{..._n(sn),branch:`main`,mode:`commit`,directory:`schema`},secrets:_n(cn),previewUrlTemplate:``,triggerPolicy:[`publish`,`change_set`,`manual`],debounceSeconds:`30`,allowPrivateNetwork:!1,enabled:!0,deliveryRoleId:on},yn=e=>({name:e.name,provider:e.provider,settings:{...vn.settings,...Object.fromEntries(sn.flatMap(t=>e.settings[t]?[[t,e.settings[t]]]:[]))},secrets:_n(cn),previewUrlTemplate:e.previewUrlTemplate??``,triggerPolicy:e.triggerPolicy,debounceSeconds:String(e.debounceSeconds),allowPrivateNetwork:e.allowPrivateNetwork,enabled:e.enabled,deliveryRoleId:e.deliveryRoleId??`none`}),bn=e=>{let t=Object.fromEntries($[e.provider].secrets.flatMap(({name:t})=>e.secrets[t].trim()?[[t,e.secrets[t].trim()]]:[]));return{name:e.name.trim(),settings:Object.fromEntries(un(e.provider).map(t=>[t,e.settings[t].trim()])),secrets:t,previewUrlTemplate:e.previewUrlTemplate.trim()||null,triggerPolicy:e.triggerPolicy.filter(t=>dn(e.provider).includes(t)),debounceSeconds:Number(e.debounceSeconds),allowPrivateNetwork:e.allowPrivateNetwork,enabled:e.enabled,deliveryRoleId:e.deliveryRoleId===`none`?null:e.deliveryRoleId}},xn=e=>({...bn(e),provider:e.provider}),Sn=(e,t)=>{let{secrets:n,...r}=bn(e);return{...r,...Object.keys(n).length>0?{secrets:n}:{},expectedVersion:t}},Cn=()=>{let{t:e}=o(),t=zt().data;return(0,Y.useMemo)(()=>[{value:on,label:e(`publishing.deployments.deliveryRoleNone`)},...(t??[]).filter(e=>e.kind===`delivery`).map(e=>({value:e.id,label:e.name}))],[t,e])},wn={url:`publishing.deployments.settingLabels.url`,accountId:`publishing.deployments.settingLabels.accountId`,projectName:`publishing.deployments.settingLabels.projectName`,projectId:`publishing.deployments.settingLabels.projectId`,teamId:`publishing.deployments.settingLabels.teamId`,siteId:`publishing.deployments.settingLabels.siteId`,owner:`publishing.deployments.settingLabels.owner`,repo:`publishing.deployments.settingLabels.repo`,branch:`publishing.deployments.settingLabels.branch`,mode:`publishing.deployments.settingLabels.mode`,directory:`publishing.deployments.settingLabels.directory`},Tn={url:`publishing.deployments.settingHints.url`,directory:`publishing.deployments.settingHints.directory`,teamId:`publishing.deployments.settingHints.teamId`},En={signingSecret:`publishing.deployments.secretLabels.signingSecret`,deployHookUrl:`publishing.deployments.secretLabels.deployHookUrl`,apiToken:`publishing.deployments.secretLabels.apiToken`,token:`publishing.deployments.secretLabels.token`},Dn={signingSecret:`publishing.deployments.secretHints.signingSecret`,deployHookUrl:`publishing.deployments.secretHints.deployHookUrl`,apiToken:`publishing.deployments.secretHints.apiToken`,token:`publishing.deployments.secretHints.token`},On={netlify:{apiToken:`publishing.deployments.providerSecretHints.netlify.apiToken`}},kn=(e,t)=>On[e]?.[t]??Dn[t],An={commit:`publishing.deployments.githubModes.commit`,pull_request:`publishing.deployments.githubModes.pull_request`},jn=({control:e,name:t,label:n,hint:r,stored:i,envVar:a})=>{let{t:s}=o(),{field:c,fieldState:l}=mt({control:e,name:`secrets.${t}`}),[u,d]=(0,Y.useState)(!1),f=`field-secrets-${t}`,p=`${f}-hint`,m=l.error?`${f}-error`:void 0,h=`${r} ${s(`publishing.deployments.secretEnvHint`)}`;return i&&!u?(0,J.jsxs)(C,{children:[(0,J.jsx)(Ct,{htmlFor:`${f}-replace`,label:n,hint:h,hintId:p}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(_,{tone:`success`,label:a?s(`publishing.deployments.secretFromEnv`,{name:a}):s(`publishing.deployments.secretStored`)}),(0,J.jsx)(w,{id:`${f}-replace`,type:`button`,variant:`outline`,size:`sm`,"aria-describedby":p,onClick:()=>d(!0),children:s(`publishing.deployments.replaceSecret`)})]})]}):(0,J.jsxs)(C,{"data-invalid":l.invalid||void 0,children:[(0,J.jsx)(Ct,{htmlFor:f,label:n,hint:h,hintId:p}),(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsx)(xe,{...c,id:f,type:`password`,autoComplete:`new-password`,spellCheck:!1,autoFocus:u,"aria-invalid":l.invalid||void 0,"aria-describedby":vt(p,m),className:`font-mono text-sm`}),i?(0,J.jsx)(w,{type:`button`,variant:`ghost`,onClick:()=>{c.onChange(``),d(!1)},children:s(`publishing.deployments.keepSecret`)}):null]}),(0,J.jsx)(_t,{id:m,message:l.error?.message})]})},Mn=({control:e,storedSecrets:t})=>{let{t:n}=o(),r=ht({control:e,name:`provider`}),i=$[r];return(0,J.jsxs)(J.Fragment,{children:[i.settings.map(t=>(0,J.jsx)(j,{control:e,name:`settings.${t}`,label:n(wn[t]),hint:t in Tn?n(Tn[t]):void 0,type:t===`url`?`url`:`text`,autoComplete:`off`,spellCheck:!1},t)),r===`github`?(0,J.jsx)(q,{control:e,name:`settings.mode`,label:n(wn.mode),options:an.map(e=>({value:e,label:n(An[e])}))}):null,i.secrets.map(i=>(0,J.jsx)(jn,{control:e,name:i.name,label:n(En[i.name]),hint:n(kn(r,i.name)),stored:t?.[i.name]?.set??!1,envVar:t?.[i.name]?.envVar??null},`${r}-${i.name}`))]})},Nn=({control:e,mode:t,storedSecrets:n})=>{let{t:r}=o(),i=ht({control:e,name:`provider`}),a=Cn();return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(j,{control:e,name:`name`,label:r(`publishing.deployments.name`),autoComplete:`off`}),t===`create`?(0,J.jsx)(q,{control:e,name:`provider`,label:r(`publishing.deployments.provider`),options:ue.map(e=>({value:e,label:r(A[e])}))}):null,(0,J.jsx)(Mn,{control:e,storedSecrets:n}),(0,J.jsx)(j,{control:e,name:`previewUrlTemplate`,label:r(`publishing.deployments.previewUrlTemplate`),hint:r(`publishing.deployments.previewUrlTemplateHint`),placeholder:r(`publishing.deployments.previewUrlTemplatePlaceholder`),autoComplete:`off`,spellCheck:!1}),(0,J.jsx)(q,{control:e,name:`deliveryRoleId`,label:r(`publishing.deployments.deliveryRole`),hint:r(`publishing.deployments.deliveryRoleHint`),options:a}),(0,J.jsx)(fe,{control:e,name:`triggerPolicy`,legend:r(`publishing.deployments.triggerPolicy`),options:dn(i).map(e=>({value:e,label:r(Je[e])}))}),(0,J.jsx)(j,{control:e,name:`debounceSeconds`,type:`number`,inputMode:`numeric`,min:0,label:r(`publishing.deployments.debounceSeconds`),hint:r(`publishing.deployments.debounceSecondsHint`),className:`w-32`}),(0,J.jsx)(K,{control:e,name:`enabled`,label:r(`publishing.deployments.enabled`)}),(0,J.jsx)(K,{control:e,name:`allowPrivateNetwork`,label:r(`publishing.fields.allowPrivateNetwork`),hint:r(`publishing.fields.allowPrivateNetworkHint`)})]})},Pn=gn(`create`),Fn=(e,t)=>{let n=Ue(),r=N({resolver:M(Pn),defaultValues:vn});return ze(e,r.reset,vn,n.reset),{form:r,onSubmit:r.handleSubmit(async e=>{let i=await P(n.mutateAsync(xn(e)));i.ok&&(r.reset(vn),t(i.value))}),createConnection:n}},In=({open:e,onOpenChange:t,onCloseAutoFocus:n,onCreated:r})=>{let{t:i}=o(),{form:a,onSubmit:s,createConnection:c}=Fn(e,r);return(0,J.jsxs)(Rt,{open:e,onOpenChange:t,size:`md`,onCloseAutoFocus:n,title:i(`publishing.deployments.createTitle`),dirty:a.formState.isDirty,pending:c.isPending,submitLabel:i(`common.create`),pendingLabel:i(`common.saving`),onSubmit:e=>void s(e),children:[(0,J.jsx)(Nn,{control:a.control,mode:`create`}),(0,J.jsx)(E,{error:c.error})]})},Ln=({runs:e,showConnection:t})=>{let{t:n}=o();return(0,J.jsxs)(U,{children:[(0,J.jsx)(I,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(R,{children:n(`publishing.deployments.run`)}),(0,J.jsx)(R,{children:n(`publishing.fields.status`)}),t?(0,J.jsx)(R,{children:n(`publishing.deployments.connection`)}):null,(0,J.jsx)(R,{children:n(`publishing.deployments.trigger`)}),(0,J.jsx)(R,{children:n(`publishing.fields.snapshot`)}),(0,J.jsx)(R,{children:n(`publishing.deployments.finishedAt`)})]})}),(0,J.jsx)(B,{children:e.map(e=>(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`whitespace-nowrap`,children:(0,J.jsx)(oe,{asChild:!0,children:(0,J.jsx)(p,{to:`/publishing/deployments/runs/$runId`,params:{runId:e.id},"aria-label":n(`publishing.deployments.openRun`,{connection:e.connectionName,at:y(e.createdAt)}),children:y(e.createdAt)})})}),(0,J.jsx)(H,{children:(0,J.jsx)(nn,{run:e})}),t?(0,J.jsx)(H,{className:`max-w-56 truncate`,children:e.connectionName}):null,(0,J.jsx)(H,{children:n(Qe[e.trigger])}),(0,J.jsx)(H,{className:`tabular-nums`,children:e.snapshot===null?n(`common.none`):n(`publishing.snapshotNumber`,{snapshot:e.snapshot})}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:y(e.finishedAt),children:e.finishedAt?ae(e.finishedAt):n(`common.none`)})]},e.id))})]})},Rn=({connectionId:e,cursor:t,onCursorChange:n})=>{let{t:r}=o(),{pagerProps:i}=it(t,n),a=Ve({connectionId:e,cursor:t,limit:25});return(0,J.jsx)(W,{query:a,isEmpty:e=>e.items.length===0&&t===void 0,empty:(0,J.jsx)(v,{icon:k,size:`panel`,title:r(`publishing.deployments.noRuns`)}),children:t=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Ln,{runs:t.items,showConnection:e===void 0}),(0,J.jsx)(ke,{...i(t.nextCursor),className:`border-t px-4 py-2.5`})]})})},zn=()=>{let{t:e}=o(),t=u({from:`/publishing/deployments`}),{cursor:n}=b({from:`/app/publishing/deployments`}),{canManageDeployments:r}=X(),i=Ge(),[a,s]=(0,Y.useState)(!1),c=e=>void t({to:`/publishing/deployments/$connectionId`,params:{connectionId:e}}),l=Xt(c);return(0,J.jsxs)(h,{children:[(0,J.jsx)(Yt,{actions:r?(0,J.jsxs)(w,{onClick:()=>s(!0),children:[(0,J.jsx)(Le,{"aria-hidden":`true`}),e(`publishing.deployments.create`)]}):void 0}),l.revealed?(0,J.jsx)(Bt,{title:e(`publishing.deployments.generatedSecretTitle`),description:e(`publishing.deployments.generatedSecretDescription`),label:e(`publishing.deployments.secretLabels.signingSecret`),secret:l.revealed.secret,dismissLabel:e(`publishing.secretDone`),onDismiss:l.dismiss}):null,r?(0,J.jsxs)(`section`,{"aria-labelledby":`deployment-connections`,className:`space-y-3`,children:[(0,J.jsx)(`h2`,{id:`deployment-connections`,className:`text-base font-semibold`,children:e(`publishing.deployments.connections`)}),(0,J.jsx)(W,{query:i,isEmpty:e=>e.length===0,empty:(0,J.jsx)(v,{icon:k,title:e(`publishing.deployments.empty`)}),children:e=>(0,J.jsx)(`ul`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-3`,children:e.map(e=>(0,J.jsx)(`li`,{className:`grid`,children:(0,J.jsx)(rn,{connection:e})},e.id))})})]}):null,(0,J.jsx)(G,{title:e(`publishing.deployments.recentRuns`),flush:!0,children:(0,J.jsx)(Rn,{connectionId:void 0,cursor:n,onCursorChange:e=>void t({search:{cursor:e}})})}),(0,J.jsx)(In,{open:a,onOpenChange:s,onCloseAutoFocus:l.keepFocusOnReveal,onCreated:({connection:e,generatedSecrets:t})=>{s(!1);let n=t.signingSecret;n?l.reveal({id:e.id,secret:n}):c(e.id)}})]})},Bn=e=>{let t=i(),[n,r]=(0,Y.useState)(!1);return{conflicted:n,clearConflict:()=>r(!1),onSaveError:n=>{d(n)&&(r(!0),t.invalidateQueries({queryKey:e}))}}},Vn=({value:e,label:t,className:n})=>(0,J.jsx)(`pre`,{tabIndex:0,"aria-label":t,className:c(`max-h-72 overflow-auto rounded-md border bg-muted p-3 font-mono text-xs break-all whitespace-pre-wrap text-foreground outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,n),children:typeof e==`string`?e:JSON.stringify(e??null,null,2)}),Hn=[{name:`X-Shapio-Signature`,valueKey:`publishing.webhooks.signatureFormat`},{name:`X-Shapio-Timestamp`,valueKey:`publishing.webhooks.timestampFormat`},{name:`X-Shapio-Event`,valueKey:`publishing.webhooks.eventFormat`},{name:`X-Shapio-Delivery`,valueKey:`publishing.webhooks.deliveryFormat`}],Un=({description:e})=>{let{t}=o();return(0,J.jsxs)(`div`,{className:`space-y-2`,children:[(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:e}),(0,J.jsx)(`dl`,{className:`space-y-1 rounded-lg border bg-muted p-3 font-mono text-xs break-all`,children:Hn.map(e=>(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`dt`,{className:`inline font-semibold`,children:e.name}),(0,J.jsx)(`dd`,{className:`inline before:content-[':_']`,children:t(e.valueKey)})]},e.name))})]})},Wn={runId:`0b8f3c1e-…`,status:`deployed`,logUrl:`https://ci.example.com/builds/123`,siteUrl:`https://www.example.com`,message:`Build 123`},Gn=({callbackUrl:e})=>{let{t}=o();return(0,J.jsxs)(`div`,{className:`space-y-5`,children:[(0,J.jsxs)(C,{children:[(0,J.jsx)(he,{htmlFor:`deployment-callback-url`,children:t(`publishing.deployments.callbackUrl`)}),(0,J.jsxs)(`div`,{className:`flex gap-2`,children:[(0,J.jsx)(xe,{id:`deployment-callback-url`,readOnly:!0,value:e,className:`font-mono text-xs`,onFocus:e=>e.currentTarget.select()}),(0,J.jsx)(Lt,{value:e})]})]}),(0,J.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-2`,children:[(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(`p`,{className:`text-sm font-semibold`,children:t(`publishing.deployments.callbackBody`)}),(0,J.jsx)(Vn,{value:Wn,label:t(`publishing.deployments.callbackBody`)}),(0,J.jsx)(`p`,{className:`text-meta text-muted-foreground`,children:t(`publishing.deployments.callbackFields`)})]}),(0,J.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,J.jsx)(`p`,{className:`text-sm font-semibold`,children:t(`publishing.webhooks.signatureTitle`)}),(0,J.jsx)(Un,{description:t(`publishing.deployments.callbackSignature`)})]})]})]})},Kn=gn(`edit`),qn=(e,t,n)=>{let{t:r}=o(),i=Be(),a=N({resolver:M(Kn),defaultValues:yn(e)});return{form:a,onSubmit:a.handleSubmit(async a=>{(await P(i.mutateAsync({id:e.id,input:Sn(a,e.version)},{onError:n}))).ok&&(S.success(r(`publishing.deployments.saved`)),t())}),update:i,error:d(i.error)?void 0:i.error}},Jn=({connection:e,onSaved:t,onConflict:n})=>{let{t:r}=o(),{form:i,onSubmit:a,update:s,error:c}=qn(e,t,n);return(0,J.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void a(e),children:[(0,J.jsx)(se,{when:i.formState.isDirty&&!s.isPending}),(0,J.jsxs)(ye,{children:[(0,J.jsx)(Nn,{control:i.control,mode:`edit`,storedSecrets:e.secrets}),(0,J.jsx)(E,{error:c}),(0,J.jsx)(`div`,{children:(0,J.jsx)(m,{pending:s.isPending,pendingLabel:r(`common.saving`),children:r(`common.saveChanges`)})})]})]})},Yn=({result:e})=>{let{t}=o();return(0,J.jsxs)(T,{variant:e.ok?`success`:`destructive`,children:[e.ok?(0,J.jsx)(Ne,{"aria-hidden":`true`}):(0,J.jsx)(Pe,{"aria-hidden":`true`}),(0,J.jsx)(Me,{children:e.ok?t(`publishing.deployments.testPassed`):t(`publishing.deployments.testFailed`)}),(0,J.jsx)(D,{children:(0,J.jsx)(`ul`,{className:`space-y-1`,children:e.checks.map(e=>(0,J.jsxs)(`li`,{children:[(0,J.jsx)(`span`,{className:`font-medium`,children:e.ok?t(`publishing.deployments.checkPassed`,{name:e.name}):t(`publishing.deployments.checkFailed`,{name:e.name})}),e.message?(0,J.jsx)(`span`,{className:`block`,children:e.message}):null]},e.name))})})]})},Xn=({connection:e})=>{let{t}=o(),{cursor:n}=b({from:`/app/publishing/deployments/$connectionId`}),i=u({from:`/publishing/deployments/$connectionId`}),a=Bn(r.publishing.deployments.connection(e.id)),c=Qt(e),{canTriggerDeployments:d}=X(),f=c.testing||c.triggering||c.deleting,p=e.currentRun?.snapshot,m=[t(A[e.provider]),p==null?``:t(`publishing.deployments.liveSnapshot`,{snapshot:t(`publishing.snapshotNumber`,{snapshot:p})})].filter(Boolean).join(` · `);return(0,J.jsxs)(h,{children:[(0,J.jsx)(g,{breadcrumb:[{label:t(`nav.publishing`)},{label:t(`publishing.nav.deployments`),link:l({to:`/publishing/deployments`})}],title:e.name,badge:(0,J.jsx)(Z,{enabled:e.enabled}),meta:m,actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(O,{tone:`danger`,title:t(`publishing.deployments.deleteTitle`,{name:e.name}),description:t(`publishing.deployments.deleteDescription`),confirmLabel:t(`common.delete`),onConfirm:c.remove,trigger:(0,J.jsxs)(w,{variant:`destructive-ghost`,disabled:f,children:[(0,J.jsx)(me,{"aria-hidden":`true`}),t(`common.delete`)]})}),(0,J.jsxs)(w,{variant:`outline`,disabled:f,onClick:c.runTest,children:[c.testing?(0,J.jsx)(s,{"aria-hidden":`true`,className:`animate-spin motion-reduce:animate-none`}):(0,J.jsx)(Gt,{"aria-hidden":`true`}),t(`publishing.deployments.test`)]}),d?(0,J.jsxs)(w,{disabled:f||!e.enabled,onClick:c.triggerRun,children:[(0,J.jsx)(k,{"aria-hidden":`true`}),t(`publishing.deployments.triggerRun`)]}):null]})}),c.testResult?(0,J.jsx)(Yn,{result:c.testResult}):null,(0,J.jsx)(G,{title:t(`publishing.deployments.runs`),flush:!0,children:(0,J.jsx)(Rn,{connectionId:e.id,cursor:n,onCursorChange:e=>void i({search:{cursor:e}})})}),e.provider===`generic_webhook`?(0,J.jsx)(G,{title:t(`publishing.deployments.callbacks`),description:t(`publishing.deployments.callbacksDescription`),children:(0,J.jsx)(Gn,{callbackUrl:e.callbackUrl})}):null,(0,J.jsxs)(G,{title:t(`publishing.deployments.settings`),bodyClassName:`space-y-4`,children:[a.conflicted?(0,J.jsx)(T,{variant:`destructive`,children:(0,J.jsx)(D,{children:t(`publishing.conflictReloaded`)})}):null,(0,J.jsx)(Jn,{connection:e,onSaved:a.clearConflict,onConflict:a.onSaveError},e.version)]})]})},Zn=()=>{let{connectionId:e}=ee({from:`/app/publishing/deployments/$connectionId`}),t=lt(e);return(0,J.jsx)(W,{query:t,loadingRows:6,children:e=>(0,J.jsx)(Xn,{connection:e})})},Qn=e=>{if(e)try{let t=new URL(e);return t.protocol===`https:`||t.protocol===`http:`?t.href:void 0}catch{return}},$n=({run:e})=>{let{t}=o();return e.timeline.length===0?(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`publishing.deployments.timelineEmpty`)}):(0,J.jsx)(`ol`,{"aria-label":t(`publishing.deployments.timeline`),className:`relative ml-1.5 space-y-4 border-l pl-6`,children:e.timeline.map((n,r)=>(0,J.jsxs)(`li`,{className:`relative`,children:[(0,J.jsx)(`span`,{"aria-hidden":`true`,className:`absolute top-2 -left-7.5 size-2.5 rounded-full border-2 border-card bg-primary`}),(0,J.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(nn,{run:{status:n.status,provider:e.provider,completionReported:e.completionReported},live:!1}),(0,J.jsx)(`time`,{dateTime:n.at,className:`text-sm`,children:y(n.at)}),(0,J.jsx)(`span`,{className:`text-meta text-muted-foreground`,children:t(`publishing.deployments.reportedBy`,{source:t(Ye[n.source])})})]}),n.message?(0,J.jsx)(`p`,{className:`mt-1 text-sm break-words`,children:n.message}):null]},`${n.at}-${r}`))})},er=({run:e})=>{let{t}=o(),n=u(),{canTriggerDeployments:r}=X(),i=Re(),a=t(`common.none`),s=Qn(e.logUrl),c=Qn(e.siteUrl),d=kt.has(e.status),f=[{label:t(`publishing.deployments.connection`),value:e.connectionName},{label:t(`publishing.deployments.provider`),value:t(A[e.provider])},{label:t(`publishing.deployments.trigger`),value:t(Qe[e.trigger])},{label:t(`publishing.fields.snapshot`),value:e.snapshot===null?a:t(`publishing.snapshotNumber`,{snapshot:e.snapshot})},{label:t(`publishing.deployments.schemaVersion`),value:e.schemaVersion??a},{label:t(`publishing.deployments.providerRef`),value:e.providerRef??a},{label:t(`publishing.deployments.triggeredAt`),value:y(e.triggeredAt)||a},{label:t(`publishing.deployments.finishedAt`),value:y(e.finishedAt)||a},{label:t(`publishing.deployments.logUrl`),value:s?(0,J.jsx)(It,{href:s,children:s}):a},{label:t(`publishing.deployments.siteUrl`),value:c?(0,J.jsx)(It,{href:c,children:c}):a}];return e.retryOf&&f.push({label:t(`publishing.deployments.retryOf`),value:(0,J.jsx)(wt,{to:`/publishing/deployments/runs/$runId`,params:{runId:e.retryOf},children:t(`publishing.deployments.previousRun`)})}),(0,J.jsxs)(h,{children:[(0,J.jsx)(g,{breadcrumb:[{label:t(`nav.publishing`)},{label:t(`publishing.nav.deployments`),link:l({to:`/publishing/deployments`})},{label:e.connectionName,link:l({to:`/publishing/deployments/$connectionId`,params:{connectionId:e.connectionId}})}],title:t(`publishing.deployments.runTitle`,{connection:e.connectionName}),badge:(0,J.jsx)(`span`,{"aria-live":`polite`,children:(0,J.jsx)(nn,{run:e})}),meta:d?`${y(e.createdAt)} · ${t(`publishing.deployments.watching`)}`:y(e.createdAt),actions:r&&!d?(0,J.jsxs)(w,{variant:`outline`,disabled:i.isPending,onClick:()=>i.mutate(e.id,{onSuccess:e=>{S.success(t(`publishing.deployments.retried`)),n({to:`/publishing/deployments/runs/$runId`,params:{runId:e.id}})}}),children:[(0,J.jsx)(ut,{"aria-hidden":`true`}),t(`publishing.deployments.retry`)]}):void 0}),e.status===`triggered`&&!e.completionReported?(0,J.jsxs)(T,{variant:`info`,children:[(0,J.jsx)(pe,{"aria-hidden":`true`}),(0,J.jsx)(D,{children:t(`publishing.deployments.completionUnknown`)})]}):null,e.error?(0,J.jsxs)(T,{variant:`destructive`,children:[(0,J.jsx)(Ae,{"aria-hidden":`true`}),(0,J.jsx)(D,{children:e.error})]}):null,(0,J.jsx)(G,{title:t(`publishing.deployments.details`),children:(0,J.jsx)(Zt,{items:f})}),(0,J.jsx)(G,{title:t(`publishing.deployments.timeline`),children:(0,J.jsx)($n,{run:e})})]})},tr=()=>{let{runId:e}=ee({from:`/app/publishing/deployments/runs/$runId`}),t=ct(e);return(0,J.jsx)(W,{query:t,loadingRows:6,children:e=>(0,J.jsx)(er,{run:e})})},nr=`__all`,rr=({id:e,label:t,value:n,options:r,onChange:i,allLabel:a})=>{let{t:s}=o(),c=`${e}-label`;return(0,J.jsxs)(Oe,{value:n??nr,onValueChange:e=>i(r.find(t=>t.value===e)?.value),children:[(0,J.jsx)(we,{id:e,size:`sm`,"aria-labelledby":c,className:`min-w-40`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,J.jsx)(`span`,{id:c,className:`text-muted-foreground`,children:t}),(0,J.jsx)(Ce,{})]})}),(0,J.jsxs)(Te,{children:[(0,J.jsx)(Ee,{value:nr,children:a??s(`publishing.filters.all`)}),r.map(e=>(0,J.jsx)(Ee,{value:e.value,children:e.label},e.value))]})]})},ir=`__default`,ar={modelKey:F().min(1,`validation.selectModel`),entryId:gt(),locale:F(),action:z(le)},or={modelKey:``,entryId:``,locale:ir,action:`publish`},sr=({modelKey:e,entryId:t,locale:n,action:r})=>({modelKey:e,entryId:t.trim(),action:r,...n===`__default`?{}:{locale:n}}),cr=()=>{let{t:e}=o(),t=Et(`model`),n=Ot();return{modelOptions:(t.data??[]).map(({definition:e})=>({value:e.apiKey,label:`${e.label} (${e.apiKey})`})),localeOptions:[{value:ir,label:e(`publishing.fields.defaultLocale`)},...(n.data??[]).map(e=>({value:e.code,label:`${e.label} (${e.code})`}))],actionOptions:le.map(t=>({value:t,label:e(tt[t])}))}},lr=({control:e})=>{let{t}=o(),{modelOptions:n,localeOptions:r,actionOptions:i}=cr(),a=e=>e;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(q,{control:e,name:a(`modelKey`),label:t(`publishing.fields.model`),placeholder:t(`publishing.fields.modelPlaceholder`),options:n}),(0,J.jsx)(j,{control:e,name:a(`entryId`),label:t(`publishing.fields.entryId`),hint:t(`publishing.fields.entryIdHint`),autoComplete:`off`,className:`font-mono text-sm`}),(0,J.jsx)(q,{control:e,name:a(`locale`),label:t(`publishing.fields.locale`),hint:t(`publishing.fields.localeHint`),options:r}),(0,J.jsx)(q,{control:e,name:a(`action`),label:t(`publishing.fields.action`),options:i})]})},ur=L({...ar,runAt:Ft()}),dr=(e,t)=>{let n=At(),r=(0,Y.useMemo)(()=>({...or,runAt:e?Pt():``}),[e]),i=N({resolver:M(ur),defaultValues:r});return ze(e,i.reset,r,n.reset),{form:i,onSubmit:i.handleSubmit(async({runAt:e,...r})=>{let i=Nt(e);i&&(await P(n.mutateAsync({...sr(r),runAt:i}))).ok&&t()}),createSchedule:n}},fr=({open:e,onOpenChange:t,onCreated:n})=>{let{t:r}=o(),{form:i,onSubmit:a,createSchedule:s}=dr(e,n);return(0,J.jsxs)(Rt,{open:e,onOpenChange:t,size:`md`,title:r(`publishing.scheduled.createTitle`),dirty:i.formState.isDirty,pending:s.isPending,submitLabel:r(`publishing.scheduled.create`),pendingLabel:r(`common.saving`),onSubmit:e=>void a(e),children:[(0,J.jsx)(lr,{control:i.control}),(0,J.jsx)(j,{control:i.control,name:`runAt`,type:`datetime-local`,label:r(`publishing.fields.runAt`),description:r(`publishing.fields.localTimeHint`,{timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone})}),(0,J.jsx)(E,{error:s.error})]})},pr=()=>{let e=b({from:`/app/publishing/scheduled`}),t=u({from:`/publishing/scheduled`}),n=e=>void t({search:t=>({...t,...e})}),{pagerProps:r,resetPager:i}=it(e.cursor,e=>n({cursor:e}));return{search:e,pagerProps:r,setStatus:e=>{i(),n({status:e,cursor:void 0})}}},mr=({schedules:e,onCancel:t})=>{let{t:n}=o();return(0,J.jsxs)(U,{children:[(0,J.jsx)(I,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(R,{children:n(`publishing.fields.entryId`)}),(0,J.jsx)(R,{children:n(`publishing.fields.model`)}),(0,J.jsx)(R,{children:n(`publishing.fields.locale`)}),(0,J.jsx)(R,{children:n(`publishing.fields.action`)}),(0,J.jsx)(R,{children:n(`publishing.fields.runAt`)}),(0,J.jsx)(R,{children:n(`publishing.fields.status`)}),(0,J.jsx)(R,{children:n(`publishing.fields.error`)}),(0,J.jsx)(R,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:n(`common.actions`)})})]})}),(0,J.jsx)(B,{children:e.map(e=>{let r=$t[e.status];return(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`max-w-44`,children:(0,J.jsx)(oe,{className:`block truncate font-mono text-xs`,children:(0,J.jsx)(`span`,{title:e.entryId,children:e.entryId})})}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:e.modelKey??n(`publishing.fields.deletedModel`)}),(0,J.jsx)(H,{className:`font-mono text-xs`,children:e.locale}),(0,J.jsx)(H,{children:n(tt[e.action])}),(0,J.jsx)(H,{className:`whitespace-nowrap`,children:y(e.runAt)}),(0,J.jsx)(H,{children:(0,J.jsx)(_,{tone:r.tone,label:n(r.labelKey)})}),(0,J.jsx)(H,{className:`max-w-64 whitespace-normal`,children:e.error?(0,J.jsx)(`span`,{className:`text-destructive`,children:e.error}):(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:n(`common.none`)})}),(0,J.jsx)(H,{className:`text-right`,children:e.status===`scheduled`?(0,J.jsx)(O,{tone:`danger`,title:n(`publishing.scheduled.cancelTitle`),description:n(`publishing.scheduled.cancelDescription`,{entryId:e.entryId}),confirmLabel:n(`publishing.scheduled.cancel`),cancelLabel:n(`publishing.scheduled.keep`),onConfirm:()=>t(e),trigger:(0,J.jsx)(w,{variant:`outline`,size:`sm`,"aria-label":n(`publishing.scheduled.cancelLabel`,{entryId:e.entryId}),children:n(`publishing.scheduled.cancel`)})}):null})]},e.id)})})]})},hr=()=>{let{t:e}=o(),{search:t,pagerProps:n,setStatus:r}=pr(),i=jt({status:t.status,cursor:t.cursor,limit:25}),a=Mt(),[s,c]=(0,Y.useState)(!1),l=t=>a.mutateAsync(t.id,{onSuccess:()=>S.success(e(`publishing.scheduled.cancelled`))}),u=ce.map(t=>({value:t,label:e($t[t].labelKey)})),d=(0,J.jsx)(`div`,{role:`search`,className:`flex flex-wrap items-center gap-2`,children:(0,J.jsx)(rr,{id:`scheduled-status`,label:e(`publishing.fields.status`),value:t.status,options:u,onChange:r})});return(0,J.jsxs)(h,{children:[(0,J.jsx)(Yt,{actions:(0,J.jsxs)(w,{onClick:()=>c(!0),children:[(0,J.jsx)(Ut,{"aria-hidden":`true`}),e(`publishing.scheduled.create`)]})}),(0,J.jsx)(W,{query:i,loadingRows:6,isEmpty:e=>e.items.length===0&&t.cursor===void 0&&!t.status,empty:(0,J.jsx)(v,{icon:Se,title:e(`publishing.scheduled.empty`)}),children:t=>(0,J.jsx)(bt,{toolbar:d,footer:(0,J.jsx)(ke,{...n(t.nextCursor)}),children:t.items.length===0?(0,J.jsx)(v,{icon:Se,size:`panel`,title:e(`publishing.scheduled.noMatches`)}):(0,J.jsx)(mr,{schedules:t.items,onCancel:l})})}),(0,J.jsx)(fr,{open:s,onOpenChange:c,onCreated:()=>{c(!1),S.success(e(`publishing.scheduled.created`))}})]})},gr=e=>`${e}.*`,_r=e=>{let t=new Map;for(let{type:n,group:r}of e)t.set(r,[...t.get(r)??[],n]);return[...t].map(([e,t])=>({group:e,types:t}))},vr=(e,{group:t,types:n},r)=>{let i=gr(t),a=e.filter(e=>e!==i&&!n.includes(e));return r?[...a,i]:a},yr=(e,t,n)=>n?[...e.filter(e=>e!==t),t]:e.filter(e=>e!==t),br=({control:e})=>{let{t}=o(),n=at(),{field:r,fieldState:i}=mt({control:e,name:`events`}),a=r.value;return n.isPending?(0,J.jsx)(re,{rows:2}):n.isError?(0,J.jsx)(te,{error:n.error,onRetry:()=>void n.refetch()}):(0,J.jsxs)(_e,{"data-invalid":i.invalid||void 0,"aria-labelledby":`webhook-events-title`,children:[(0,J.jsxs)(ge,{variant:`label`,className:`flex items-center gap-1`,children:[(0,J.jsx)(`span`,{id:`webhook-events-title`,children:t(`publishing.webhooks.events`)}),(0,J.jsx)(ve,{about:t(`publishing.webhooks.events`),children:t(`publishing.webhooks.eventsHint`)})]}),(0,J.jsx)(`div`,{className:`space-y-4`,children:_r(n.data).map(e=>{let n=a.includes(gr(e.group)),i=`webhook-events-${e.group}`;return(0,J.jsxs)(`fieldset`,{className:`space-y-2 rounded-lg border p-3`,children:[(0,J.jsx)(`legend`,{className:`px-1 font-mono text-xs font-semibold`,children:e.group}),(0,J.jsxs)(C,{orientation:`horizontal`,children:[(0,J.jsx)(je,{id:i,checked:n,onCheckedChange:t=>r.onChange(vr(a,e,t===!0)),onBlur:r.onBlur}),(0,J.jsx)(he,{htmlFor:i,className:`font-medium`,children:t(`publishing.webhooks.allGroupEvents`,{group:e.group})})]}),(0,J.jsx)(`div`,{className:`grid gap-2 pl-6 sm:grid-cols-2`,children:e.types.map(e=>{let t=`webhook-event-${e}`;return(0,J.jsxs)(C,{orientation:`horizontal`,children:[(0,J.jsx)(je,{id:t,checked:n||a.includes(e),disabled:n,onCheckedChange:t=>r.onChange(yr(a,e,t===!0)),onBlur:r.onBlur}),(0,J.jsx)(he,{htmlFor:t,className:`font-mono text-xs font-normal`,children:e})]},e)})})]},e.group)})}),(0,J.jsx)(_t,{message:i.error?.message})]})},xr={min:1,max:20},Sr=8,Cr=L({name:gt().max(200,`validation.tooLong`),url:F().trim().min(1,`validation.required`).pipe(St({protocol:/^https?$/,error:`validation.url`})),events:xt(F()).min(1,`validation.selectEvents`),enabled:yt(),allowPrivateNetwork:yt(),maxAttempts:F().trim().refine(e=>/^\d+$/.test(e)&&Number(e)>=xr.min&&Number(e)<=xr.max,`validation.maxAttempts`),scope:z([`site`,`network`])}),wr={name:``,url:``,events:[],enabled:!0,allowPrivateNetwork:!1,maxAttempts:String(Sr),scope:`site`},Tr=e=>({name:e.name,url:e.url,events:e.events,enabled:e.enabled,allowPrivateNetwork:e.allowPrivateNetwork,maxAttempts:String(e.maxAttempts),scope:e.site===null?`network`:`site`}),Er=e=>({name:e.name.trim(),url:e.url.trim(),events:e.events,enabled:e.enabled,allowPrivateNetwork:e.allowPrivateNetwork,maxAttempts:Number(e.maxAttempts)}),Dr=({control:e})=>{let{t}=o();return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(j,{control:e,name:`name`,label:t(`publishing.webhooks.name`),autoComplete:`off`}),(0,J.jsx)(j,{control:e,name:`url`,type:`url`,label:t(`publishing.webhooks.url`),placeholder:t(`publishing.webhooks.urlPlaceholder`),autoComplete:`off`}),(0,J.jsx)(br,{control:e}),(0,J.jsx)(j,{control:e,name:`maxAttempts`,type:`number`,inputMode:`numeric`,min:xr.min,max:xr.max,label:t(`publishing.webhooks.maxAttempts`),hint:t(`publishing.webhooks.maxAttemptsHint`),className:`w-32`}),(0,J.jsx)(K,{control:e,name:`enabled`,label:t(`publishing.webhooks.enabled`)}),(0,J.jsx)(K,{control:e,name:`allowPrivateNetwork`,label:t(`publishing.fields.allowPrivateNetwork`),hint:t(`publishing.fields.allowPrivateNetworkHint`)})]})},Or=(e,t)=>{let n=$e(),r=N({resolver:M(Cr),defaultValues:wr});return ze(e,r.reset,wr,n.reset),{form:r,onSubmit:r.handleSubmit(async e=>{let i=await P(n.mutateAsync({...Er(e),network:e.scope===`network`}));i.ok&&(r.reset(wr),t(i.value))}),createWebhook:n}},kr=({open:e,onOpenChange:t,onCloseAutoFocus:n,onCreated:r})=>{let{t:i}=o(),{form:a,onSubmit:s,createWebhook:c}=Or(e,r),{data:l}=f(),u=[{value:`site`,label:i(`publishing.webhooks.scopeSite`,{name:l?.site.name??``})},{value:`network`,label:i(`sites.everySite`),description:i(`publishing.webhooks.scopeNetwork`)}];return(0,J.jsxs)(Rt,{open:e,onOpenChange:t,size:`md`,onCloseAutoFocus:n,title:i(`publishing.webhooks.createTitle`),dirty:a.formState.isDirty,pending:c.isPending,submitLabel:i(`common.create`),pendingLabel:i(`common.saving`),onSubmit:e=>void s(e),children:[(0,J.jsx)(Dr,{control:a.control}),Tt(l)?(0,J.jsx)(Dt,{control:a.control,name:`scope`,legend:i(`publishing.webhooks.scope`),options:u}):null,(0,J.jsx)(E,{error:c.error})]})},Ar=({secret:e,onDismiss:t})=>{let{t:n}=o();return(0,J.jsx)(Bt,{title:n(`publishing.webhooks.secretTitle`),description:n(`publishing.webhooks.secretDescription`),label:n(`publishing.webhooks.secretLabel`),secret:e,dismissLabel:n(`publishing.secretDone`),onDismiss:t,hint:(0,J.jsx)(Un,{description:n(`publishing.webhooks.signatureDescription`)})})},jr=({webhook:e})=>{let{t}=o();return e.site===null?(0,J.jsx)(ne,{variant:`secondary`,children:t(`sites.everySite`)}):null},Mr=({webhooks:e})=>{let{t}=o();return(0,J.jsx)(bt,{children:(0,J.jsxs)(U,{children:[(0,J.jsx)(I,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(R,{children:t(`publishing.webhooks.name`)}),(0,J.jsx)(R,{children:t(`publishing.webhooks.url`)}),(0,J.jsx)(R,{children:t(`publishing.webhooks.state`)}),(0,J.jsx)(R,{children:t(`publishing.webhooks.lastDelivery`)})]})}),(0,J.jsx)(B,{children:e.map(e=>{let n=e.lastDelivery?en[e.lastDelivery.status]:void 0;return(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`max-w-64`,children:(0,J.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,J.jsx)(oe,{asChild:!0,className:`block truncate`,children:(0,J.jsx)(p,{to:`/publishing/webhooks/$webhookId`,params:{webhookId:e.id},children:e.name})}),(0,J.jsx)(jr,{webhook:e})]})}),(0,J.jsx)(H,{className:`max-w-72`,children:(0,J.jsx)(`span`,{className:`block truncate font-mono text-xs text-muted-foreground`,title:e.url,children:e.url})}),(0,J.jsx)(H,{children:(0,J.jsx)(Z,{enabled:e.enabled})}),(0,J.jsx)(H,{children:e.lastDelivery&&n?(0,J.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,J.jsx)(_,{tone:n.tone,label:t(n.labelKey)}),(0,J.jsx)(`span`,{className:`text-meta whitespace-nowrap text-muted-foreground`,title:y(e.lastDelivery.at),children:ae(e.lastDelivery.at)})]}):(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:t(`common.never`)})})]},e.id)})})]})})},Nr=()=>{let{t:e}=o(),t=u(),n=qe(),[r,i]=(0,Y.useState)(!1),a=Xt(e=>void t({to:`/publishing/webhooks/$webhookId`,params:{webhookId:e}}));return(0,J.jsxs)(h,{children:[(0,J.jsx)(Yt,{actions:(0,J.jsxs)(w,{onClick:()=>i(!0),children:[(0,J.jsx)(Le,{"aria-hidden":`true`}),e(`publishing.webhooks.create`)]})}),a.revealed?(0,J.jsx)(Ar,{secret:a.revealed.secret,onDismiss:a.dismiss}):null,(0,J.jsx)(W,{query:n,isEmpty:e=>e.length===0,empty:(0,J.jsx)(v,{icon:pt,title:e(`publishing.webhooks.empty`)}),children:e=>(0,J.jsx)(Mr,{webhooks:e})}),(0,J.jsx)(kr,{open:r,onOpenChange:i,onCloseAutoFocus:a.keepFocusOnReveal,onCreated:({webhook:e,secret:t})=>{i(!1),a.reveal({id:e.id,secret:t})}})]})},Pr=(e,t)=>{let{t:n}=o(),r=u(),i=et(),a=rt(),s=We(),c=nt(),[l,d]=(0,Y.useState)(void 0);return{secret:l,clearSecret:()=>d(void 0),testing:i.isPending,pending:a.isPending||s.isPending||c.isPending,sendTest:()=>i.mutate(e.id,{onSuccess:()=>S.success(n(`publishing.webhooks.testQueued`))}),toggleEnabled:()=>a.mutate({id:e.id,input:{enabled:!e.enabled,expectedVersion:e.version}},{onSuccess:e=>S.success(e.enabled?n(`publishing.webhooks.enabledToast`):n(`publishing.webhooks.disabledToast`)),onError:t}),rotateSecret:()=>s.mutateAsync(e.id,{onSuccess:e=>d(e.secret)}),remove:()=>c.mutateAsync(e.id,{onSuccess:()=>{S.success(n(`publishing.webhooks.deleted`,{name:e.name})),r({to:`/publishing/webhooks`})}})}},Fr=({headers:e,label:t})=>(0,J.jsx)(`dl`,{"aria-label":t,className:`space-y-0.5 rounded-md border bg-muted p-2 font-mono text-xs break-all`,children:Object.entries(e).map(([e,t])=>(0,J.jsxs)(`div`,{children:[(0,J.jsx)(`dt`,{className:`inline font-semibold`,children:e}),(0,J.jsx)(`dd`,{className:`inline before:content-[':_']`,children:t})]},e))}),Ir=200,Lr=300,Rr=400,zr=e=>e>=Ir&&e<Lr?`success`:e<Rr?`warning`:`danger`,Br=({status:e,label:t})=>(0,J.jsx)(_,{tone:zr(e),label:t??String(e),size:`sm`,className:`font-mono`}),Vr=({attempt:e})=>{let{t}=o(),{request:n,response:r}=e;return(0,J.jsxs)(`li`,{className:`space-y-3 rounded-lg border bg-card p-4`,children:[(0,J.jsx)(`p`,{className:`text-sm font-medium`,children:t(`publishing.webhooks.attemptHeading`,{attempt:e.attempt,at:y(e.at),duration:e.durationMs})}),(0,J.jsxs)(`div`,{className:`grid gap-3 lg:grid-cols-2`,children:[(0,J.jsxs)(`section`,{className:`min-w-0 space-y-1`,children:[(0,J.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground`,children:t(`publishing.webhooks.request`)}),(0,J.jsx)(`p`,{className:`font-mono text-xs break-all`,children:`${n.method} ${n.url}`}),(0,J.jsx)(Fr,{headers:n.headers,label:t(`publishing.webhooks.requestHeaders`)})]}),(0,J.jsxs)(`section`,{className:`min-w-0 space-y-1`,children:[(0,J.jsx)(`h4`,{className:`text-xs font-semibold text-muted-foreground`,children:t(`publishing.webhooks.response`)}),r?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(Br,{status:r.status,label:t(`publishing.webhooks.httpStatus`,{status:r.status})}),(0,J.jsx)(Vn,{value:r.body,label:t(`publishing.webhooks.responseBody`),className:`max-h-40`}),r.truncated?(0,J.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t(`publishing.webhooks.bodyTruncated`)}):null]}):(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:t(`publishing.webhooks.noResponse`)}),e.error?(0,J.jsx)(`p`,{className:`text-sm text-destructive`,children:e.error}):null]})]})]})},Hr=7,Ur=({delivery:e,expanded:t,onToggle:n,onRedeliver:r,redelivering:i})=>{let{t:a}=o(),s=en[e.status],c=`delivery-${e.id}`;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(V,{children:[(0,J.jsx)(H,{className:`w-10`,children:(0,J.jsx)(w,{variant:`ghost`,size:`icon-sm`,"aria-expanded":t,"aria-controls":t?c:void 0,"aria-label":a(`publishing.webhooks.toggleAttempts`,{event:e.eventType}),onClick:n,children:t?(0,J.jsx)(De,{"aria-hidden":`true`}):(0,J.jsx)(be,{"aria-hidden":`true`})})}),(0,J.jsx)(H,{children:(0,J.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`span`,{className:`font-mono text-xs font-semibold`,children:e.eventType}),e.isTest?(0,J.jsx)(ne,{variant:`outline`,children:a(`publishing.webhooks.testBadge`)}):null]})}),(0,J.jsx)(H,{children:(0,J.jsx)(_,{tone:s.tone,label:a(s.labelKey)})}),(0,J.jsx)(H,{children:e.lastResponseStatus===null?(0,J.jsx)(`span`,{className:`text-muted-foreground`,children:a(`common.none`)}):(0,J.jsx)(Br,{status:e.lastResponseStatus})}),(0,J.jsx)(H,{className:`text-right tabular-nums`,children:e.attempts}),(0,J.jsx)(H,{className:`whitespace-nowrap`,title:y(e.createdAt),children:ae(e.createdAt)}),(0,J.jsx)(H,{className:`text-right`,children:(0,J.jsxs)(w,{variant:`ghost`,size:`sm`,disabled:i,"aria-label":a(`publishing.webhooks.redeliverLabel`,{event:e.eventType}),onClick:r,children:[(0,J.jsx)(ut,{"aria-hidden":`true`}),a(`publishing.webhooks.redeliver`)]})})]}),t?(0,J.jsx)(V,{className:`hover:bg-transparent`,children:(0,J.jsx)(H,{colSpan:Hr,className:`bg-muted/40 whitespace-normal`,children:(0,J.jsxs)(`div`,{id:c,className:`space-y-3 py-2`,children:[e.lastError?(0,J.jsx)(`p`,{className:`text-meta text-destructive`,children:a(`publishing.webhooks.lastErrorValue`,{error:e.lastError})}):null,e.attemptLog.length===0?(0,J.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:a(`publishing.webhooks.noAttempts`)}):(0,J.jsx)(`ol`,{className:`space-y-3`,children:e.attemptLog.map(e=>(0,J.jsx)(Vr,{attempt:e},e.attempt))})]})})}):null]})},Wr=({webhookId:e})=>{let{t}=o(),{cursor:n}=b({from:`/app/publishing/webhooks/$webhookId`}),r=u({from:`/publishing/webhooks/$webhookId`}),{pagerProps:i}=it(n,e=>void r({search:{cursor:e}})),a=Ze(e,n),s=Xe(),[c,l]=(0,Y.useState)(new Set),d=e=>l(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n});return(0,J.jsx)(G,{title:t(`publishing.webhooks.deliveries`),flush:!0,children:(0,J.jsx)(W,{query:a,isEmpty:e=>e.items.length===0&&n===void 0,empty:(0,J.jsx)(v,{icon:Fe,size:`panel`,title:t(`publishing.webhooks.noDeliveries`)}),children:n=>(0,J.jsxs)(J.Fragment,{children:[(0,J.jsxs)(U,{children:[(0,J.jsx)(I,{children:(0,J.jsxs)(V,{children:[(0,J.jsx)(R,{className:`w-12`,children:(0,J.jsx)(`span`,{className:`sr-only`,children:t(`publishing.webhooks.attemptLog`)})}),(0,J.jsx)(R,{children:t(`publishing.webhooks.eventType`)}),(0,J.jsx)(R,{children:t(`publishing.fields.status`)}),(0,J.jsx)(R,{children:t(`publishing.webhooks.lastResponse`)}),(0,J.jsx)(R,{className:`text-right`,children:t(`publishing.webhooks.attempts`)}),(0,J.jsx)(R,{children:t(`publishing.fields.created`)}),(0,J.jsx)(R,{children:(0,J.jsx)(`span`,{className:`sr-only`,children:t(`common.actions`)})})]})}),(0,J.jsx)(B,{children:n.items.map(n=>(0,J.jsx)(Ur,{delivery:n,expanded:c.has(n.id),onToggle:()=>d(n.id),redelivering:s.isPending,onRedeliver:()=>s.mutate({id:e,deliveryId:n.id},{onSuccess:()=>S.success(t(`publishing.webhooks.redelivered`))})},n.id))})]}),(0,J.jsx)(ke,{...i(n.nextCursor),className:`border-t px-4 py-2.5`})]})})})},Gr=(e,t,n)=>{let{t:r}=o(),i=rt(),a=N({resolver:M(Cr),defaultValues:Tr(e)});return{form:a,onSubmit:a.handleSubmit(async a=>{(await P(i.mutateAsync({id:e.id,input:{...Er(a),expectedVersion:e.version}},{onError:n}))).ok&&(S.success(r(`publishing.webhooks.saved`)),t())}),update:i,error:d(i.error)?void 0:i.error}},Kr=({webhook:e,onSaved:t,onConflict:n})=>{let{t:r}=o(),{form:i,onSubmit:a,update:s,error:c}=Gr(e,t,n);return(0,J.jsxs)(`form`,{noValidate:!0,onSubmit:e=>void a(e),children:[(0,J.jsx)(se,{when:i.formState.isDirty&&!s.isPending}),(0,J.jsxs)(ye,{children:[(0,J.jsx)(Dr,{control:i.control}),(0,J.jsx)(E,{error:c}),(0,J.jsx)(`div`,{children:(0,J.jsx)(m,{pending:s.isPending,pendingLabel:r(`common.saving`),children:r(`common.saveChanges`)})})]})]})},qr=({webhook:e})=>{let{t}=o(),n=Bn(r.publishing.webhooks.webhook(e.id)),i=Pr(e,n.onSaveError);return(0,J.jsxs)(h,{children:[(0,J.jsx)(g,{breadcrumb:[{label:t(`nav.publishing`)},{label:t(`publishing.nav.webhooks`),link:l({to:`/publishing/webhooks`})}],title:e.name,badge:(0,J.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(Z,{enabled:e.enabled}),(0,J.jsx)(jr,{webhook:e})]}),meta:(0,J.jsx)(`span`,{className:`font-mono text-xs break-all`,children:e.url}),actions:(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(O,{tone:`danger`,title:t(`publishing.webhooks.deleteTitle`,{name:e.name}),description:t(`publishing.webhooks.deleteDescription`),confirmLabel:t(`common.delete`),onConfirm:i.remove,trigger:(0,J.jsxs)(w,{variant:`destructive-ghost`,disabled:i.pending,children:[(0,J.jsx)(me,{"aria-hidden":`true`}),t(`common.delete`)]})}),(0,J.jsx)(O,{tone:`danger`,title:t(`publishing.webhooks.rotateTitle`),description:t(`publishing.webhooks.rotateDescription`),confirmLabel:t(`publishing.webhooks.rotateSecret`),onConfirm:i.rotateSecret,onCloseAutoFocus:e=>{i.secret&&e.preventDefault()},trigger:(0,J.jsxs)(w,{variant:`outline`,disabled:i.pending,children:[(0,J.jsx)(Ie,{"aria-hidden":`true`}),t(`publishing.webhooks.rotateSecret`)]})}),(0,J.jsxs)(w,{variant:`outline`,disabled:i.pending,onClick:i.toggleEnabled,children:[(0,J.jsx)(qt,{"aria-hidden":`true`}),e.enabled?t(`publishing.webhooks.disable`):t(`publishing.webhooks.enable`)]}),(0,J.jsxs)(w,{disabled:i.testing||!e.enabled,onClick:i.sendTest,children:[(0,J.jsx)(dt,{"aria-hidden":`true`}),t(`publishing.webhooks.sendTest`)]})]})}),i.secret?(0,J.jsx)(Ar,{secret:i.secret,onDismiss:i.clearSecret}):null,n.conflicted?(0,J.jsx)(T,{variant:`destructive`,children:(0,J.jsx)(D,{children:t(`publishing.conflictReloaded`)})}):null,(0,J.jsx)(Wr,{webhookId:e.id}),(0,J.jsx)(G,{title:t(`publishing.webhooks.settings`),children:(0,J.jsx)(Kr,{webhook:e,onSaved:n.clearConflict,onConflict:n.onSaveError},e.version)}),(0,J.jsx)(G,{title:t(`publishing.webhooks.signatureTitle`),children:(0,J.jsx)(Un,{description:t(`publishing.webhooks.signatureDescription`)})})]})},Jr={publishing:x(`/app/publishing`)({component:Jt}),scheduled:x(`/app/publishing/scheduled`)({component:hr}),deployments:x(`/app/publishing/deployments`)({component:zn}),connection:x(`/app/publishing/deployments/$connectionId`)({component:Zn}),run:x(`/app/publishing/deployments/runs/$runId`)({component:tr}),webhooks:x(`/app/publishing/webhooks`)({component:Nr}),webhook:x(`/app/publishing/webhooks/$webhookId`)({component:()=>{let{webhookId:e}=ee({from:`/app/publishing/webhooks/$webhookId`}),t=Ke(e);return(0,J.jsx)(W,{query:t,loadingRows:6,children:e=>(0,J.jsx)(qr,{webhook:e})})}})};export{Jr as publishingLazyRoutes};
2
- //# sourceMappingURL=publishing-DaaE8PaU.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./cn-M4_WHiur.js";var t={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};t.node;var n=e(t);export{n as t};
2
- //# sourceMappingURL=search--71HzPvh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search--71HzPvh.js","names":["createLucideIcon","__iconData","Search"],"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/search.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: \"search\",\n size: 24,\n node: [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n ]\n};\n__iconData.node;\nconst Search = createLucideIcon(__iconData);\n\nexport { __iconData, Search as default };\n//# sourceMappingURL=search.mjs.map\n"],"ignoreList":[0],"mappings":"qCASA,IAAMC,EAAa,CACjB,KAAM,SACN,KAAM,GACN,KAAM,CACJ,CAAC,OAAQ,CAAE,EAAG,mBAAoB,IAAK,QAAS,CAAC,EACjD,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,IAAK,IAAK,QAAS,CAAC,CAC1D,CACF,EACAA,EAAW,KACX,IAAMC,EAASF,EAAiBC,CAAU"}
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{i as r}from"./cn-M4_WHiur.js";import{A as i,D as a,F as o,I as s,T as c,x as l}from"./auth-BaVAo0u_.js";import{F as u,M as d,j as f}from"./badge-IBeVOhKd.js";import{r as p,t as m}from"./root-CDpNo7ef.js";import{a as h,c as g,o as _,s as v}from"./RowTitle-BD8QPs_v.js";import{_ as y,g as b,l as x}from"./table-BEDv9IRM.js";import{t as S}from"./coerce-DWI5sgLW.js";function C(e){e.statusCode=e.statusCode||e.code||307;let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function w(e){return e instanceof Response&&!!e.options}var T=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=m:this.parentRoute||u();let r=n?m:t?.path;r&&r!==`/`&&(r=o(r));let a=t?.id||r,c=n?m:i((this.parentRoute.id===`__root__`?``:this.parentRoute.id)+`/`+(a??``));r===`__root__`&&(r=`/`);let l=c===`__root__`?`/`:r===void 0?this.parentRoute.fullPath:i(this.parentRoute.fullPath+`/`+r);this._path=r,this._id=c,this._fullPath=l,this._to=s(l)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>C({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},E=class{constructor({id:e}){this.notFound=e=>p({routeId:this.id,...e}),this.redirect=e=>C({from:this.id,...e}),this.id=e}},D=class extends T{constructor(e){super(e)}},O=e(t(),1),k=e(n(),1);function A(e){return new j({id:e})}var j=class extends E{constructor({id:e}){super({id:e}),this.useMatch=e=>d({...e,from:this.id}),this.useRouteContext=e=>h({...e,from:this.id}),this.useSearch=e=>_({...e,from:this.id}),this.useParams=e=>f({...e,from:this.id}),this.useLoaderDeps=e=>v({...e,from:this.id,strict:!1}),this.useLoaderData=e=>g({...e,from:this.id,strict:!1}),this.useNavigate=()=>c({from:a().routesById[this.id].fullPath}),this.notFound=e=>p({routeId:this.id,...e}),this.Link=O.forwardRef((e,t)=>{let n=a().routesById[this.id].fullPath;return(0,k.jsx)(l,{ref:t,from:n,...e})})}},M=class extends T{constructor(e){super(e),this.useMatch=e=>d({...e,from:this.id}),this.useRouteContext=e=>h({...e,from:this.id}),this.useSearch=e=>_({...e,from:this.id}),this.useParams=e=>f({...e,from:this.id}),this.useLoaderDeps=e=>v({...e,from:this.id}),this.useLoaderData=e=>g({...e,from:this.id}),this.useNavigate=()=>c({from:this.fullPath}),this.Link=O.forwardRef((e,t)=>(0,k.jsx)(l,{ref:t,from:this.fullPath,...e}))}};function N(e){return new M(e)}function P(){return e=>I(e)}var F=class extends D{constructor(e){super(e),this.useMatch=e=>d({...e,from:this.id}),this.useRouteContext=e=>h({...e,from:this.id}),this.useSearch=e=>_({...e,from:this.id}),this.useParams=e=>f({...e,from:this.id}),this.useLoaderDeps=e=>v({...e,from:this.id}),this.useLoaderData=e=>g({...e,from:this.id}),this.useNavigate=()=>c({from:this.fullPath}),this.Link=O.forwardRef((e,t)=>(0,k.jsx)(l,{ref:t,from:this.fullPath,...e}))}};function I(e){return new F(e)}var L={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};L.node;var R=r(L),z={name:`file-code-corner`,size:24,node:[[`path`,{d:`M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35`,key:`1wthlu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`m5 16-3 3 3 3`,key:`331omg`}],[`path`,{d:`m9 22 3-3-3-3`,key:`lsp7cz`}]],aliases:[`file-code-2`]};z.node;var B=r(z),V=[`rest`,`graphql`],H=b({tab:x(V).optional().catch(void 0),op:y().trim().min(1).max(200).optional().catch(void 0)}),U=[`changes`,`checks`,`consumers`,`timeline`],W=b({tab:x(U).optional().catch(void 0)}),G=b({cursor:y().max(500).optional().catch(void 0)}),K=[`diff`,`timeline`],q=S().int().min(0).optional().catch(void 0),J=b({from:q,tab:x(K).optional().catch(void 0),at:q});export{W as a,B as c,N as d,A as f,U as i,R as l,C as m,J as n,V as o,w as p,G as r,H as s,K as t,P as u};
2
- //# sourceMappingURL=searchSchema-Ypl6gq9g.js.map
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{A as r,H as i,P as a,i as o,j as s,k as c,l,p as u,t as d}from"./cn-M4_WHiur.js";import{E as ee}from"./skeleton-CCwdO9oq.js";import{t as te}from"./globe-CAhrwBgv.js";import{t as f}from"./key-round-DnE-2gr0.js";import{t as p}from"./sparkles-B-0I44es.js";import{n as m,t as h}from"./src-CQu-YxUM.js";var g={name:`monitor-smartphone`,size:24,node:[[`path`,{d:`M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8`,key:`10dyio`}],[`path`,{d:`M10 19v-3.96 3.15`,key:`1irgej`}],[`path`,{d:`M7 19h5`,key:`qswx4l`}],[`rect`,{width:`6`,height:`10`,x:`16`,y:`12`,rx:`2`,key:`1egngj`}]]};g.node;var _=o(g),v={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};v.node;var y=o(v),b={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};b.node;var x=o(b),S={name:`palette`,size:24,node:[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]};S.node;var C=o(S),w={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};w.node;var T=o(w),E={name:`user-round`,size:24,node:[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]],aliases:[`user-2`]};E.node;var D=o(E),ne={system:y,light:T,dark:x},O=e(t(),1),k=[`system`,`light`,`dark`],A=e=>k.includes(e),j=[{key:`shapio`,variants:[`light`,`dark`]},{key:`classic`,variants:[`light`,`dark`]},{key:`murdered-out`,variants:[`dark`]},{key:`snowed`,variants:[`light`]}],M=`shapio`,N=[`light`,`dark`],P=`shapio.theme`,F=2,I={theme:M,appearance:`system`,variants:N},L=e=>typeof e==`object`&&!!e,R=(e,t)=>{let n=L(e)?e:{};if(t<F){let e=typeof n.preference==`string`?n.preference:`system`;return{theme:`classic`,appearance:A(e)?e:`system`,variants:N}}return z(n)},z=e=>{let t=Array.isArray(e.variants)?m.filter(t=>e.variants.includes(t)):[];return{theme:typeof e.theme==`string`&&h.test(e.theme)?e.theme:I.theme,appearance:typeof e.appearance==`string`&&A(e.appearance)?e.appearance:I.appearance,variants:t.length>0?t:I.variants}},B=u()(r(e=>({...I,setTheme:(t,n)=>e({theme:t,variants:n}),setAppearance:t=>e({appearance:t})}),{name:P,storage:c,version:F,migrate:R,partialize:({theme:e,appearance:t,variants:n})=>({theme:e,appearance:t,variants:n}),merge:(e,t)=>({...t,...z(L(e)?e:{})})})),V=(e,t,n)=>{let r=e===`system`?n?`dark`:`light`:e;return t.includes(r)?r:t[0]??r},H=e=>e.length===1,U=e=>e===`dark`?`light`:`dark`,W=()=>i({queryKey:a.extensionThemes,queryFn:()=>l.extensions.themes(),staleTime:1/0,meta:{silent:!0}}),G=()=>{let{t:e}=s(),t=W();return{themes:(0,O.useMemo)(()=>[...j.map(({key:t,variants:n})=>({key:t,name:e(`appearance.themes.${t}.name`),description:e(`appearance.themes.${t}.description`),variants:n})),...(t.data?.items??[]).map(({key:e,name:t,description:n,variants:r})=>({key:e,name:t,description:n,variants:r}))],[e,t.data]),isComplete:t.isSuccess}},K=()=>{let{themes:e}=G(),t=B(e=>e.theme),n=B(e=>e.variants),r=B(e=>e.setTheme),i=e.find(e=>e.key===t),a=(0,O.useCallback)(t=>{let n=e.find(e=>e.key===t);n&&r(n.key,n.variants)},[e,r]);return{themes:e,themeKey:t,current:i,isSingleVariant:H(n),selectTheme:a}},q=()=>{let{t:e}=s(),{current:t,isSingleVariant:n}=K();if(n&&t)return t.variants[0]===`dark`?e(`appearance.onlyDark`,{theme:t.name}):e(`appearance.onlyLight`,{theme:t.name})},J=`(prefers-color-scheme: dark)`,Y=e=>{let t=window.matchMedia(J);return t.addEventListener(`change`,e),()=>t.removeEventListener(`change`,e)},X=()=>window.matchMedia(J).matches,Z=()=>(0,O.useSyncExternalStore)(Y,X,()=>!1),re=`165.9 188.4 391.6 391.6`,ie=`M448.796 188.638C449.42 188.611 450.045 188.592 450.669 188.582C501.868 187.651 540.677 225.719 540.624 276.894C540.573 326.288 540.603 375.735 540.626 425.131L540.658 470.482C540.658 483.828 541.256 499.153 538.461 512.06C534.944 527.675 527.115 541.989 515.866 553.376C483.521 586.36 441.966 579.367 399.496 579.353L274.688 579.398C260.178 579.335 249.077 578.339 235.594 572.498C202.135 558.003 183.093 528.095 182.812 492.132L182.84 340.893L182.764 294.415C182.748 282.346 182.082 268.448 184.458 256.699C190.703 226.338 217.027 197.513 247.917 191.277C268.652 187.091 297.062 188.828 318.736 188.767L448.796 188.638ZM361.016 396.004C344.007 374.629 323.798 388.326 309.62 366.449C306.112 360.947 304.63 354.395 305.429 347.919C306.543 338.369 310.925 329.619 318.66 323.737C322.66 320.723 327.306 318.681 332.232 317.774C338.75 316.565 350.624 316.95 357.764 316.96L398.742 317.076C422.053 317.195 445.631 318.93 451.21 289.426C454.701 270.967 440.574 253.502 421.891 252.373C406.687 251.454 391.54 252.176 376.322 251.952C364.092 252.278 342.083 251.104 330.854 252.306C303.812 254.678 281.014 266.245 263.532 287.037C246.701 306.912 238.504 332.685 240.762 358.631C243.078 384.002 255.319 407.432 274.823 423.824C291.974 438.061 316.838 447.658 339.126 445.811C364.013 443.748 374.55 416.102 361.016 396.004ZM311.813 515.265L361.548 515.197C379.473 515.171 395.747 516.164 413.183 510.829C453.083 498.622 481.57 460.024 481.361 418.224C481.125 392.379 470.731 367.665 452.424 349.422C435.591 332.882 411.43 321.322 387.6 321.573C385.34 321.614 383.08 321.718 380.825 321.882C371.729 324.102 366.201 326.695 360.946 334.903C351.804 349.18 356.006 371.938 371.353 380.182C383.495 386.704 396.898 384.323 406.977 395.549C416.688 406.365 417.888 422.67 411.166 435.388C399.427 455.241 374.932 449.929 355.639 450.364C344.805 450.608 333.431 450.646 322.579 450.381C305.399 449.96 287.213 447.995 276.941 465.474C272.297 473.33 271.006 482.723 273.359 491.54C278.548 510.619 294.163 515.555 311.813 515.265Z`,ae=`M361.016 396.004C344.007 374.629 323.798 388.326 309.62 366.449C306.112 360.947 304.63 354.395 305.429 347.919C306.543 338.369 310.925 329.619 318.66 323.737C322.66 320.723 327.306 318.681 332.232 317.774C338.75 316.565 350.624 316.95 357.764 316.96L398.742 317.076C422.053 317.195 445.631 318.93 451.21 289.426C454.701 270.967 440.574 253.502 421.891 252.373C406.687 251.454 391.54 252.176 376.322 251.952C364.092 252.278 342.083 251.104 330.854 252.306C303.812 254.678 281.014 266.245 263.532 287.037C246.701 306.912 238.504 332.685 240.762 358.631C243.078 384.002 255.319 407.432 274.823 423.824C291.974 438.061 316.838 447.658 339.126 445.811C364.013 443.748 374.55 416.102 361.016 396.004ZM311.813 515.265L361.548 515.197C379.473 515.171 395.747 516.164 413.183 510.829C453.083 498.622 481.57 460.024 481.361 418.224C481.125 392.379 470.731 367.665 452.424 349.422C435.591 332.882 411.43 321.322 387.6 321.573C385.34 321.614 383.08 321.718 380.825 321.882C371.729 324.102 366.201 326.695 360.946 334.903C351.804 349.18 356.006 371.938 371.353 380.182C383.495 386.704 396.898 384.323 406.977 395.549C416.688 406.365 417.888 422.67 411.166 435.388C399.427 455.241 374.932 449.929 355.639 450.364C344.805 450.608 333.431 450.646 322.579 450.381C305.399 449.96 287.213 447.995 276.941 465.474C272.297 473.33 271.006 482.723 273.359 491.54C278.548 510.619 294.163 515.555 311.813 515.265Z`,Q=e(n(),1),$=({variant:e=`default`,className:t})=>(0,Q.jsxs)(`svg`,{viewBox:re,"aria-hidden":`true`,focusable:`false`,"data-slot":`logo`,className:d(`size-8 shrink-0`,t),children:[(0,Q.jsx)(`path`,{className:`fill-brand-logo-foreground`,d:ae}),(0,Q.jsx)(`path`,{className:e===`reverse`?`fill-brand-panel-mark`:`fill-brand-logo`,d:ie})]}),oe=ee(`shrink-0 border border-border bg-background`,{variants:{size:{sm:`inline-flex items-center gap-0.5 rounded-full p-0.5`,lg:`flex h-14 w-full items-center gap-2 rounded-lg px-2.5`}},defaultVariants:{size:`sm`}}),se=({themeKey:e,variants:t,size:n,className:r})=>{let i=V(B(e=>e.appearance),t,Z());return(0,Q.jsx)(`span`,{"aria-hidden":`true`,"data-theme":e,"data-slot":`theme-swatches`,className:d(oe({size:n}),i===`dark`&&`dark`,r),children:n===`lg`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)($,{className:`size-6`}),(0,Q.jsx)(`span`,{className:`h-7 flex-1 rounded-md border border-border bg-card`}),(0,Q.jsx)(`span`,{className:`h-4 w-8 rounded-full bg-primary`})]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{className:`size-2.5 rounded-full bg-card ring-1 ring-border`}),(0,Q.jsx)(`span`,{className:`size-2.5 rounded-full bg-primary`})]})})},ce=[{key:`account`,sections:[{key:`profile`,to:`/settings/profile`,icon:D},{key:`sessions`,to:`/settings/sessions`,icon:_},{key:`appearance`,to:`/settings/theme`,icon:C}]},{key:`workspace`,sections:[{key:`locales`,to:`/settings/locales`,icon:te},{key:`assist`,to:`/settings/assist`,icon:p}]},{key:`developer`,sections:[{key:`apiTokens`,to:`/settings/api-tokens`,icon:f,permission:`tokens.manage`}]}];export{T as _,q as a,_ as b,U as c,k as d,N as f,D as g,ne as h,Z as i,V as l,A as m,se as n,K as o,M as p,$ as r,G as s,ce as t,B as u,C as v,x as y};
2
- //# sourceMappingURL=sections-BBN2JErq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sections-BBN2JErq.js","names":["__iconData","__iconData","__iconData","__iconData","__iconData","useMemo","useCallback","useSyncExternalStore","_Fragment","__toESM","require_jsx_runtime","persist","useQuery","queryKeys","createLucideIcon","useTranslation","persistentStorage","create","cn","cva","Globe","KeyRound","Sparkles","THEME_VARIANTS","THEME_KEY_PATTERN","__iconData$5","MonitorSmartphone","__iconData$4","Monitor","__iconData$3","Moon","__iconData$2","Palette","__iconData$1","Sun","__iconData","UserRound","THEME_ICONS","import_react","require_react","APPEARANCES","isAppearance","value","BUILT_IN_THEMES","DEFAULT_THEME_KEY","BOTH_VARIANTS","THEME_STORAGE_KEY","THEME_STORAGE_VERSION","DEFAULT_THEME_STATE","isRecord","migrateThemeState","state","persisted","version","preference","sanitizeThemeState","variants","variant","useThemeStore","set","current","resolveScheme","preferred","appearance","systemPrefersDark","hasSingleVariant","oppositeScheme","scheme","useExtensionThemes","adminApi","useThemeOptions","extensionThemes","t","key","useThemeSelection","themeKey","setTheme","themes","option","selectTheme","candidate","useSingleVariantNote","isSingleVariant","DARK_QUERY","subscribe","query","onChange","getSnapshot","useSystemPrefersDark","MARK_VIEWBOX","MARK_PATH","MARK_S_PATH","import_jsx_runtime","Logo","className","swatchVariants","ThemeSwatches","size","SETTINGS_GROUPS"],"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/monitor-smartphone.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/monitor.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/moon.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/palette.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/sun.mjs","../../../../node_modules/.pnpm/lucide-react@1.49.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/user-round.mjs","../../src/constants/themeIcons.ts","../../src/constants/themes.ts","../../src/stores/theme.ts","../../src/helpers/theme.ts","../../src/api/extensionThemes.ts","../../src/hooks/useThemeOptions.ts","../../src/components/ThemeMenu/hooks/useThemeSelection.ts","../../src/components/ThemeMenu/hooks/useSingleVariantNote.ts","../../src/hooks/useSystemPrefersDark.ts","../../src/components/Logo/paths.ts","../../src/components/Logo/index.tsx","../../src/components/ThemeSwatches/index.tsx","../../src/features/Settings/sections.ts"],"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: \"monitor-smartphone\",\n size: 24,\n node: [\n [\"path\", { d: \"M18 8V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h8\", key: \"10dyio\" }],\n [\"path\", { d: \"M10 19v-3.96 3.15\", key: \"1irgej\" }],\n [\"path\", { d: \"M7 19h5\", key: \"qswx4l\" }],\n [\"rect\", { width: \"6\", height: \"10\", x: \"16\", y: \"12\", rx: \"2\", key: \"1egngj\" }]\n ]\n};\n__iconData.node;\nconst MonitorSmartphone = createLucideIcon(__iconData);\n\nexport { __iconData, MonitorSmartphone as default };\n//# sourceMappingURL=monitor-smartphone.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"monitor\",\n size: 24,\n node: [\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"3\", rx: \"2\", key: \"48i651\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"21\", y2: \"21\", key: \"1svkeh\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"17\", y2: \"21\", key: \"vw1qmm\" }]\n ]\n};\n__iconData.node;\nconst Monitor = createLucideIcon(__iconData);\n\nexport { __iconData, Monitor as default };\n//# sourceMappingURL=monitor.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"moon\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Moon = createLucideIcon(__iconData);\n\nexport { __iconData, Moon as default };\n//# sourceMappingURL=moon.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"palette\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\",\n key: \"e79jfc\"\n }\n ],\n [\"circle\", { cx: \"13.5\", cy: \"6.5\", r: \".5\", fill: \"currentColor\", key: \"1okk4w\" }],\n [\"circle\", { cx: \"17.5\", cy: \"10.5\", r: \".5\", fill: \"currentColor\", key: \"f64h9f\" }],\n [\"circle\", { cx: \"6.5\", cy: \"12.5\", r: \".5\", fill: \"currentColor\", key: \"qy21gx\" }],\n [\"circle\", { cx: \"8.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"fotxhn\" }]\n ]\n};\n__iconData.node;\nconst Palette = createLucideIcon(__iconData);\n\nexport { __iconData, Palette as default };\n//# sourceMappingURL=palette.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"sun\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n ]\n};\n__iconData.node;\nconst Sun = createLucideIcon(__iconData);\n\nexport { __iconData, Sun as default };\n//# sourceMappingURL=sun.mjs.map\n","/**\n * @license lucide-react v1.49.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"user-round\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"8\", r: \"5\", key: \"1hypcn\" }],\n [\"path\", { d: \"M20 21a8 8 0 0 0-16 0\", key: \"rfgkzh\" }]\n ],\n aliases: [\"user-2\"]\n};\n__iconData.node;\nconst UserRound = createLucideIcon(__iconData);\n\nexport { __iconData, UserRound as default };\n//# sourceMappingURL=user-round.mjs.map\n","import { Monitor, Moon, Sun, type LucideIcon } from 'lucide-react';\nimport type { Appearance } from './themes';\n\nexport const THEME_ICONS = { system: Monitor, light: Sun, dark: Moon } satisfies Record<\n Appearance,\n LucideIcon\n>;\n","import type { BuiltInThemeKey, ThemeVariant } from '@shapio/schema';\n\n/** What the person picks beside the theme: follow the OS, or force a variant (if the theme has it). */\nexport const APPEARANCES = ['system', 'light', 'dark'] as const;\n\nexport type Appearance = (typeof APPEARANCES)[number];\n\nexport const isAppearance = (value: string): value is Appearance =>\n (APPEARANCES as readonly string[]).includes(value);\n\nexport type BuiltInThemeMeta = {\n key: BuiltInThemeKey;\n /** The variants the theme defines (styles/themes/<key>.css); one means it ignores the appearance. */\n variants: readonly ThemeVariant[];\n};\n\n/** The admin's own themes, in menu order. Names and descriptions: `appearance.themes.<key>.*`. */\nexport const BUILT_IN_THEMES: readonly BuiltInThemeMeta[] = [\n { key: 'shapio', variants: ['light', 'dark'] },\n { key: 'classic', variants: ['light', 'dark'] },\n { key: 'murdered-out', variants: ['dark'] },\n { key: 'snowed', variants: ['light'] },\n];\n\nexport const DEFAULT_THEME_KEY: BuiltInThemeKey = 'shapio';\n\nexport const BOTH_VARIANTS: readonly ThemeVariant[] = ['light', 'dark'];\n","import { THEME_KEY_PATTERN, THEME_VARIANTS, type ThemeVariant } from '@shapio/schema';\nimport { create } from 'zustand';\nimport { persist } from 'zustand/middleware';\nimport { type Appearance, BOTH_VARIANTS, DEFAULT_THEME_KEY, isAppearance } from '@/constants/themes';\nimport { persistentStorage } from '@/helpers/safeStorage';\n\ntype ThemeState = {\n /** A theme key: built in (constants/themes.ts) or declared by an extension. */\n theme: string;\n appearance: Appearance;\n /**\n * The chosen theme's variants, cached so public/theme-init.js can resolve a single-variant theme (an\n * extension's too) before the admin has loaded the theme list.\n */\n variants: readonly ThemeVariant[];\n setTheme: (theme: string, variants: readonly ThemeVariant[]) => void;\n setAppearance: (appearance: Appearance) => void;\n};\n\n/** Key and shape are read before first paint by public/theme-init.js; keep them in sync. */\nexport const THEME_STORAGE_KEY = 'shapio.theme';\n\nconst THEME_STORAGE_VERSION = 2;\n\ntype PersistedTheme = Pick<ThemeState, 'theme' | 'appearance' | 'variants'>;\n\nexport const DEFAULT_THEME_STATE: PersistedTheme = {\n theme: DEFAULT_THEME_KEY,\n appearance: 'system',\n variants: BOTH_VARIANTS,\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null;\n\n/**\n * Version 1 stored `{ preference: 'system' | 'light' | 'dark' }` with the original palette. Anyone who set it\n * keeps that palette (Classic) and that appearance, so nothing changes until they pick a theme.\n */\nexport const migrateThemeState = (persisted: unknown, version: number): PersistedTheme => {\n const state = isRecord(persisted) ? persisted : {};\n if (version < THEME_STORAGE_VERSION) {\n const preference = typeof state.preference === 'string' ? state.preference : 'system';\n return {\n theme: 'classic',\n appearance: isAppearance(preference) ? preference : 'system',\n variants: BOTH_VARIANTS,\n };\n }\n return sanitizeThemeState(state);\n};\n\n/** Drops anything malformed (edited storage, an older admin) back to the defaults, field by field. */\nconst sanitizeThemeState = (state: Record<string, unknown>): PersistedTheme => {\n const variants = Array.isArray(state.variants)\n ? THEME_VARIANTS.filter((variant) => (state.variants as unknown[]).includes(variant))\n : [];\n return {\n theme:\n typeof state.theme === 'string' && THEME_KEY_PATTERN.test(state.theme)\n ? state.theme\n : DEFAULT_THEME_STATE.theme,\n appearance:\n typeof state.appearance === 'string' && isAppearance(state.appearance)\n ? state.appearance\n : DEFAULT_THEME_STATE.appearance,\n variants: variants.length > 0 ? variants : DEFAULT_THEME_STATE.variants,\n };\n};\n\nexport const useThemeStore = create<ThemeState>()(\n persist(\n (set) => ({\n ...DEFAULT_THEME_STATE,\n setTheme: (theme, variants) => set({ theme, variants }),\n setAppearance: (appearance) => set({ appearance }),\n }),\n {\n name: THEME_STORAGE_KEY,\n storage: persistentStorage,\n version: THEME_STORAGE_VERSION,\n migrate: migrateThemeState,\n partialize: ({ theme, appearance, variants }) => ({ theme, appearance, variants }),\n merge: (persisted, current) => ({\n ...current,\n ...sanitizeThemeState(isRecord(persisted) ? persisted : {}),\n }),\n },\n ),\n);\n","import type { ThemeVariant } from '@shapio/schema';\nimport type { Appearance } from '@/constants/themes';\n\n/**\n * The variant actually rendered: the appearance (the OS's for \"system\") when the theme has that variant,\n * else the theme's only variant. public/theme-init.js repeats this before first paint (test/themeInit.test.ts\n * keeps the two in step).\n */\nexport const resolveScheme = (\n appearance: Appearance,\n variants: readonly ThemeVariant[],\n systemPrefersDark: boolean,\n): ThemeVariant => {\n const preferred: ThemeVariant =\n appearance === 'system' ? (systemPrefersDark ? 'dark' : 'light') : appearance;\n return variants.includes(preferred) ? preferred : (variants[0] ?? preferred);\n};\n\n/** A theme with one variant ignores the appearance setting. */\nexport const hasSingleVariant = (variants: readonly ThemeVariant[]) => variants.length === 1;\n\n/** The explicit appearance a one-click switch moves to: the opposite of what is rendered now. */\nexport const oppositeScheme = (scheme: ThemeVariant): ThemeVariant => (scheme === 'dark' ? 'light' : 'dark');\n","import { useQuery } from '@tanstack/react-query';\nimport { adminApi } from './client';\nimport { queryKeys } from './queryKeys';\n\n/**\n * Colour themes the project declares (`shapio.config`). Public (the sign-in screen lists them too) and fixed\n * until a server restart, so read once. Their CSS arrives separately, linked from index.html.\n */\nexport const useExtensionThemes = () =>\n useQuery({\n queryKey: queryKeys.extensionThemes,\n queryFn: () => adminApi.extensions.themes(),\n staleTime: Infinity,\n meta: { silent: true },\n });\n","import type { ThemeVariant } from '@shapio/schema';\nimport { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useExtensionThemes } from '@/api/extensionThemes';\nimport { BUILT_IN_THEMES } from '@/constants/themes';\n\nexport type ThemeOption = {\n key: string;\n name: string;\n description: string | undefined;\n variants: readonly ThemeVariant[];\n};\n\n/**\n * Every theme the person can pick, in menu order: the built-in ones (translated), then the project's.\n * `isComplete` is false until the project's list has loaded (or while it fails): nothing may be judged\n * missing from the list before then.\n */\nexport const useThemeOptions = (): { themes: readonly ThemeOption[]; isComplete: boolean } => {\n const { t } = useTranslation();\n const extensionThemes = useExtensionThemes();\n const themes = useMemo(\n () => [\n ...BUILT_IN_THEMES.map(({ key, variants }): ThemeOption => ({\n key,\n name: t(`appearance.themes.${key}.name`),\n description: t(`appearance.themes.${key}.description`),\n variants,\n })),\n ...(extensionThemes.data?.items ?? []).map(({ key, name, description, variants }): ThemeOption => ({\n key,\n name,\n description,\n variants,\n })),\n ],\n [t, extensionThemes.data],\n );\n return { themes, isComplete: extensionThemes.isSuccess };\n};\n","import { useCallback } from 'react';\nimport { hasSingleVariant } from '@/helpers/theme';\nimport { type ThemeOption, useThemeOptions } from '@/hooks/useThemeOptions';\nimport { useThemeStore } from '@/stores/theme';\n\n/**\n * The theme list, the chosen theme (if it is still offered), whether it ignores the appearance setting, and\n * a picker that caches the theme's variants for the pre-paint script.\n */\nexport const useThemeSelection = () => {\n const { themes } = useThemeOptions();\n const themeKey = useThemeStore((state) => state.theme);\n const variants = useThemeStore((state) => state.variants);\n const setTheme = useThemeStore((state) => state.setTheme);\n const current: ThemeOption | undefined = themes.find((option) => option.key === themeKey);\n const selectTheme = useCallback(\n (key: string) => {\n const option = themes.find((candidate) => candidate.key === key);\n if (option) {\n setTheme(option.key, option.variants);\n }\n },\n [themes, setTheme],\n );\n return { themes, themeKey, current, isSingleVariant: hasSingleVariant(variants), selectTheme };\n};\n","import { useTranslation } from 'react-i18next';\nimport { useThemeSelection } from './useThemeSelection';\n\n/** Why the appearance setting does nothing for the chosen theme, or undefined when it applies. */\nexport const useSingleVariantNote = (): string | undefined => {\n const { t } = useTranslation();\n const { current, isSingleVariant } = useThemeSelection();\n if (!isSingleVariant || !current) {\n return undefined;\n }\n return current.variants[0] === 'dark'\n ? t('appearance.onlyDark', { theme: current.name })\n : t('appearance.onlyLight', { theme: current.name });\n};\n","import { useSyncExternalStore } from 'react';\n\nconst DARK_QUERY = '(prefers-color-scheme: dark)';\n\nconst subscribe = (onChange: () => void) => {\n const query = window.matchMedia(DARK_QUERY);\n query.addEventListener('change', onChange);\n return () => query.removeEventListener('change', onChange);\n};\n\nconst getSnapshot = () => window.matchMedia(DARK_QUERY).matches;\n\n/** True while the OS asks for dark mode; re-renders when that changes. */\nexport const useSystemPrefersDark = () => useSyncExternalStore(subscribe, getSnapshot, () => false);\n","/**\n * Geometry of the Shapio mark, copied from src/assets/brand/mark.svg (brandAssets.test.ts keeps them equal).\n * MARK_PATH is the logo-blue rounded square with the S cut out; MARK_S_PATH is the same S, drawn white\n * underneath so the S stays white on any background.\n */\nexport const MARK_VIEWBOX = '165.9 188.4 391.6 391.6';\nexport const MARK_PATH =\n 'M448.796 188.638C449.42 188.611 450.045 188.592 450.669 188.582C501.868 187.651 540.677 225.719 540.624 276.894C540.573 326.288 540.603 375.735 540.626 425.131L540.658 470.482C540.658 483.828 541.256 499.153 538.461 512.06C534.944 527.675 527.115 541.989 515.866 553.376C483.521 586.36 441.966 579.367 399.496 579.353L274.688 579.398C260.178 579.335 249.077 578.339 235.594 572.498C202.135 558.003 183.093 528.095 182.812 492.132L182.84 340.893L182.764 294.415C182.748 282.346 182.082 268.448 184.458 256.699C190.703 226.338 217.027 197.513 247.917 191.277C268.652 187.091 297.062 188.828 318.736 188.767L448.796 188.638ZM361.016 396.004C344.007 374.629 323.798 388.326 309.62 366.449C306.112 360.947 304.63 354.395 305.429 347.919C306.543 338.369 310.925 329.619 318.66 323.737C322.66 320.723 327.306 318.681 332.232 317.774C338.75 316.565 350.624 316.95 357.764 316.96L398.742 317.076C422.053 317.195 445.631 318.93 451.21 289.426C454.701 270.967 440.574 253.502 421.891 252.373C406.687 251.454 391.54 252.176 376.322 251.952C364.092 252.278 342.083 251.104 330.854 252.306C303.812 254.678 281.014 266.245 263.532 287.037C246.701 306.912 238.504 332.685 240.762 358.631C243.078 384.002 255.319 407.432 274.823 423.824C291.974 438.061 316.838 447.658 339.126 445.811C364.013 443.748 374.55 416.102 361.016 396.004ZM311.813 515.265L361.548 515.197C379.473 515.171 395.747 516.164 413.183 510.829C453.083 498.622 481.57 460.024 481.361 418.224C481.125 392.379 470.731 367.665 452.424 349.422C435.591 332.882 411.43 321.322 387.6 321.573C385.34 321.614 383.08 321.718 380.825 321.882C371.729 324.102 366.201 326.695 360.946 334.903C351.804 349.18 356.006 371.938 371.353 380.182C383.495 386.704 396.898 384.323 406.977 395.549C416.688 406.365 417.888 422.67 411.166 435.388C399.427 455.241 374.932 449.929 355.639 450.364C344.805 450.608 333.431 450.646 322.579 450.381C305.399 449.96 287.213 447.995 276.941 465.474C272.297 473.33 271.006 482.723 273.359 491.54C278.548 510.619 294.163 515.555 311.813 515.265Z';\nexport const MARK_S_PATH =\n 'M361.016 396.004C344.007 374.629 323.798 388.326 309.62 366.449C306.112 360.947 304.63 354.395 305.429 347.919C306.543 338.369 310.925 329.619 318.66 323.737C322.66 320.723 327.306 318.681 332.232 317.774C338.75 316.565 350.624 316.95 357.764 316.96L398.742 317.076C422.053 317.195 445.631 318.93 451.21 289.426C454.701 270.967 440.574 253.502 421.891 252.373C406.687 251.454 391.54 252.176 376.322 251.952C364.092 252.278 342.083 251.104 330.854 252.306C303.812 254.678 281.014 266.245 263.532 287.037C246.701 306.912 238.504 332.685 240.762 358.631C243.078 384.002 255.319 407.432 274.823 423.824C291.974 438.061 316.838 447.658 339.126 445.811C364.013 443.748 374.55 416.102 361.016 396.004ZM311.813 515.265L361.548 515.197C379.473 515.171 395.747 516.164 413.183 510.829C453.083 498.622 481.57 460.024 481.361 418.224C481.125 392.379 470.731 367.665 452.424 349.422C435.591 332.882 411.43 321.322 387.6 321.573C385.34 321.614 383.08 321.718 380.825 321.882C371.729 324.102 366.201 326.695 360.946 334.903C351.804 349.18 356.006 371.938 371.353 380.182C383.495 386.704 396.898 384.323 406.977 395.549C416.688 406.365 417.888 422.67 411.166 435.388C399.427 455.241 374.932 449.929 355.639 450.364C344.805 450.608 333.431 450.646 322.579 450.381C305.399 449.96 287.213 447.995 276.941 465.474C272.297 473.33 271.006 482.723 273.359 491.54C278.548 510.619 294.163 515.555 311.813 515.265Z';\n","import { cn } from '@/helpers/cn';\nimport { MARK_PATH, MARK_S_PATH, MARK_VIEWBOX } from './paths';\n\ntype LogoVariant = 'default' | 'reverse';\n\ntype LogoProps = {\n /**\n * `default`: the brand tile with its S, on any ground. `reverse`: for the auth brand panel, the tile in the\n * theme's brand-panel-mark colour (the S stays the brand's, so the mark reads the same in every theme).\n */\n variant?: LogoVariant;\n className?: string;\n};\n\n/** The Shapio mark (src/assets/brand/mark.svg), 32px by default. Decorative; pair it with the wordmark or a visible label. */\nexport const Logo = ({ variant = 'default', className }: LogoProps) => (\n <svg\n viewBox={MARK_VIEWBOX}\n aria-hidden=\"true\"\n focusable=\"false\"\n data-slot=\"logo\"\n className={cn('size-8 shrink-0', className)}\n >\n <path className=\"fill-brand-logo-foreground\" d={MARK_S_PATH} />\n <path className={variant === 'reverse' ? 'fill-brand-panel-mark' : 'fill-brand-logo'} d={MARK_PATH} />\n </svg>\n);\n","import type { ThemeVariant } from '@shapio/schema';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '@/helpers/cn';\nimport { resolveScheme } from '@/helpers/theme';\nimport { useSystemPrefersDark } from '@/hooks/useSystemPrefersDark';\nimport { useThemeStore } from '@/stores/theme';\nimport { Logo } from '../Logo';\n\nconst swatchVariants = cva('shrink-0 border border-border bg-background', {\n variants: {\n size: {\n /** Menus: ground, surface and primary as three dots on the ground. */\n sm: 'inline-flex items-center gap-0.5 rounded-full p-0.5',\n /** Theme cards: the logo, a surface and a primary pill on the ground. */\n lg: 'flex h-14 w-full items-center gap-2 rounded-lg px-2.5',\n },\n },\n defaultVariants: { size: 'sm' },\n});\n\ntype ThemeSwatchesProps = {\n themeKey: string;\n variants: readonly ThemeVariant[];\n size?: 'sm' | 'lg';\n className?: string;\n};\n\n/**\n * A theme's colours, drawn from its own tokens: the subtree carries `data-theme` (and `dark` for the variant\n * it would render with the current appearance). Swatches only, never live components: `dark:` variants\n * match ancestors, so a component inside a light preview on a dark page would mix both. Decorative.\n */\nexport const ThemeSwatches = ({ themeKey, variants, size, className }: ThemeSwatchesProps) => {\n const appearance = useThemeStore((state) => state.appearance);\n const systemPrefersDark = useSystemPrefersDark();\n const scheme = resolveScheme(appearance, variants, systemPrefersDark);\n return (\n <span\n aria-hidden=\"true\"\n data-theme={themeKey}\n data-slot=\"theme-swatches\"\n className={cn(swatchVariants({ size }), scheme === 'dark' && 'dark', className)}\n >\n {size === 'lg' ? (\n <>\n <Logo className=\"size-6\" />\n <span className=\"h-7 flex-1 rounded-md border border-border bg-card\" />\n <span className=\"h-4 w-8 rounded-full bg-primary\" />\n </>\n ) : (\n <>\n <span className=\"size-2.5 rounded-full bg-card ring-1 ring-border\" />\n <span className=\"size-2.5 rounded-full bg-primary\" />\n </>\n )}\n </span>\n );\n};\n","import type { GlobalAction } from '@shapio/client';\nimport {\n Globe,\n KeyRound,\n MonitorSmartphone,\n Palette,\n Sparkles,\n UserRound,\n type LucideIcon,\n} from 'lucide-react';\n\ntype SettingsPath =\n | '/settings/profile'\n | '/settings/sessions'\n | '/settings/theme'\n | '/settings/locales'\n | '/settings/assist'\n | '/settings/api-tokens';\n\ntype SettingsSection = {\n key: 'profile' | 'sessions' | 'appearance' | 'locales' | 'assist' | 'apiTokens';\n to: SettingsPath;\n icon: LucideIcon;\n /** Hidden unless the admin holds this permission (the server enforces it either way). */\n permission?: GlobalAction;\n};\n\nexport const SETTINGS_GROUPS: readonly {\n key: 'account' | 'workspace' | 'developer';\n sections: readonly SettingsSection[];\n}[] = [\n {\n key: 'account',\n sections: [\n { key: 'profile', to: '/settings/profile', icon: UserRound },\n { key: 'sessions', to: '/settings/sessions', icon: MonitorSmartphone },\n { key: 'appearance', to: '/settings/theme', icon: Palette },\n ],\n },\n {\n key: 'workspace',\n sections: [\n { key: 'locales', to: '/settings/locales', icon: Globe },\n { key: 'assist', to: '/settings/assist', icon: Sparkles },\n ],\n },\n {\n key: 'developer',\n sections: [{ key: 'apiTokens', to: '/settings/api-tokens', icon: KeyRound, permission: 'tokens.manage' }],\n },\n];\n"],"ignoreList":[0,1,2,3,4,5],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./react-CQOZoUwg.js";import{t as n}from"./jsx-runtime-DREnUpxT.js";import{H as r,P as i,V as a,bt as o,i as s,j as c,l,s as u}from"./cn-M4_WHiur.js";import{h as d,i as f,m as ee,u as p}from"./auth-BaVAo0u_.js";import{O as m,_ as h,a as g,i as _,n as v,o as y,t as te}from"./badge-IBeVOhKd.js";import{n as ne}from"./Match-UAw1Ss8a.js";import{i as b,n as x,r as re,t as S}from"./RowTitle-BD8QPs_v.js";import{t as C}from"./fileRoute-Buucm0CU.js";import{t as ie}from"./UnsavedChangesGuard-Cbfg-Bgj.js";import{G as w,R as ae,f as oe,o as se,p as ce,t as le,u as ue}from"./InfoHint-Bz_yvehr.js";import{N as T,i as E,n as de,r as fe}from"./skeleton-CCwdO9oq.js";import{n as pe,t as me}from"./arrow-up-DwMJqZVV.js";import{a as he,i as ge,n as _e,r as ve,t as ye}from"./select-De48SQdZ.js";import{i as D,r as O,t as be}from"./ConfirmDialog-Tu-gjEwm.js";import{t as xe}from"./ellipsis-xDmHl1SK.js";import{t as Se}from"./globe-CAhrwBgv.js";import{t as Ce}from"./key-round-DnE-2gr0.js";import{a as we,b as Te,d as Ee,h as De,m as Oe,n as ke,o as Ae,t as je,u as k}from"./sections-BBN2JErq.js";import{t as Me}from"./pencil-BqAgKC9v.js";import{t as A}from"./plus-DLRcpVhJ.js";import{a as j,p as Ne,r as Pe,t as Fe}from"./dropdown-menu-Cl20LCvY.js";import{t as M}from"./radio-group-CA3XlQcc.js";import{z as Ie}from"./src-CQu-YxUM.js";import{a as Le,c as Re,f as ze,n as N,o as P,r as Be,s as Ve,t as F,u as I}from"./zod-Gtw4e0qi.js";import{t as L}from"./settle-LRKtTN_e.js";import{_ as R,a as z,g as B,i as V,l as He,n as H,o as U,r as W,s as G,t as K,u as Ue}from"./table-BEDv9IRM.js";import{t as We}from"./HintedLabel-USQku9Yt.js";import{t as q}from"./QueryView-Bkyizh1P.js";import{t as Ge}from"./FormRadioGroup-ZppSTZK6.js";import{a as Ke,i as qe,n as Je,r as Ye,t as Xe}from"./locales-DFLQ17ow.js";import{t as Ze}from"./textarea-eatLAWE_.js";import{a as Qe,l as $e,m as et,p as tt,r as nt,t as rt}from"./AssistError-BYR085vj.js";import{t as J}from"./Panel-BdjqCkKs.js";import{t as it}from"./ExternalLink-CCr5oRXI.js";import{t as at}from"./RadioTile-VHTPl88w.js";import{n as ot,r as st,t as ct}from"./SubNavLink-BAF2-wuF.js";import{n as lt,t as ut}from"./FormSelectField-Cosnxiz-.js";import{n as dt,r as ft,t as pt}from"./tokens-C2E7swse.js";import{n as mt,t as ht}from"./useConfirmTarget-Y7_8kVX5.js";import{a as gt,i as _t,t as vt}from"./SecretReveal-BfJKUxXW.js";var yt={name:`star`,size:24,node:[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]};yt.node;var bt=s(yt),Y=e(n(),1),xt=()=>{let{t:e}=c(),t=p().data?.globalPermissions??[];return(0,Y.jsx)(ot,{label:e(`settings.sections`),children:je.map(n=>{let r=n.sections.filter(e=>!e.permission||t.includes(e.permission));return r.length===0?null:(0,Y.jsx)(st,{label:e(`settings.${n.key}`),children:r.map(t=>{let n=t.icon;return(0,Y.jsxs)(ct,{to:t.to,children:[(0,Y.jsx)(n,{"aria-hidden":`true`}),e(`settings.${t.key}`)]},t.key)})},n.key)})})},St=()=>(0,Y.jsx)(g,{children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6 lg:flex-row lg:items-start lg:gap-8`,children:[(0,Y.jsx)(xt,{}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Y.jsx)(ne,{})})]})}),X=e(t(),1),Ct=[`never`,`30`,`90`,`365`],wt=864e5,Tt=(e,t=new Date)=>e===`never`?null:new Date(t.getTime()+Number(e)*wt).toISOString(),Et=B({name:P(),roleId:R().min(1,`validation.selectRole`),expiry:He(Ct),scope:He([`site`,`network`])}),Z={name:``,roleId:``,expiry:`90`,scope:`site`},Dt=(e,t,n)=>{let r=dt(),i=I({resolver:F(Et),defaultValues:Z}),{reset:a}=i;return(0,X.useEffect)(()=>{e&&a(Z)},[e,a]),{form:i,onSubmit:i.handleSubmit(async({name:e,roleId:i,expiry:o,scope:s})=>{let c=s===`network`&&n(i),l=await L(r.mutateAsync({name:e,roleId:i,expiresAt:Tt(o),network:c}));l.ok&&(a(Z),t(l.value))}),createToken:r}},Ot=({open:e,onOpenChange:t,onCreated:n,onCloseAutoFocus:r})=>{let{t:i}=c(),a=gt(),{data:o}=p(),s=o?.networkPermissions.includes(`users.manage`)??!1,l=e=>s&&a.data?.find(t=>t.id===e)?.kind===`admin`,{form:u,onSubmit:d,createToken:f}=Dt(e,n,l),ee=ze({control:u.control,name:`roleId`}),m=[{value:`site`,label:i(`apiTokens.scopeSite`,{name:o?.site.name??``}),description:i(`apiTokens.scopeSiteDescription`)},{value:`network`,label:i(`apiTokens.scopeNetwork`),description:i(`apiTokens.scopeNetworkDescription`)}],h=(a.data??[]).map(e=>({value:e.id,label:e.name})),g=Ct.map(e=>({value:e,label:e===`never`?i(`apiTokens.expiryNever`):i(`apiTokens.expiryDays`,{count:Number(e)})}));return(0,Y.jsxs)(lt,{open:e,onOpenChange:t,size:`md`,...r?{onCloseAutoFocus:r}:{},title:i(`apiTokens.createTitle`),dirty:u.formState.isDirty,pending:f.isPending,submitLabel:i(`common.create`),pendingLabel:i(`common.saving`),onSubmit:e=>void d(e),children:[(0,Y.jsx)(N,{control:u.control,name:`name`,label:i(`apiTokens.name`),autoComplete:`off`}),(0,Y.jsx)(ut,{control:u.control,name:`roleId`,label:i(`apiTokens.role`),options:h}),l(ee)?(0,Y.jsx)(Ge,{control:u.control,name:`scope`,legend:i(`apiTokens.scope`),options:m}):null,(0,Y.jsx)(ut,{control:u.control,name:`expiry`,label:i(`apiTokens.expiry`),options:g}),(0,Y.jsx)(D,{error:f.error??a.error})]})},kt=({tokens:e,roleNames:t,siteName:n,onRevoke:r})=>{let{t:i}=c();return(0,Y.jsx)(G,{children:(0,Y.jsxs)(K,{children:[(0,Y.jsx)(z,{children:(0,Y.jsxs)(U,{children:[(0,Y.jsx)(V,{children:i(`apiTokens.name`)}),(0,Y.jsx)(V,{children:i(`apiTokens.prefix`)}),(0,Y.jsx)(V,{children:i(`apiTokens.role`)}),(0,Y.jsx)(V,{children:i(`apiTokens.appliesTo`)}),(0,Y.jsx)(V,{children:i(`apiTokens.status`)}),(0,Y.jsx)(V,{children:i(`apiTokens.lastUsed`)}),(0,Y.jsx)(V,{children:i(`apiTokens.expires`)}),(0,Y.jsx)(V,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:i(`common.actions`)})})]})}),(0,Y.jsx)(H,{children:e.map(e=>(0,Y.jsxs)(U,{children:[(0,Y.jsx)(W,{children:(0,Y.jsx)(S,{children:e.name})}),(0,Y.jsx)(W,{className:`font-mono text-xs`,children:`${e.tokenPrefix}…`}),(0,Y.jsx)(W,{children:t.get(e.roleId)??i(`common.unknown`)}),(0,Y.jsx)(W,{children:e.siteId===null?i(`sites.everySite`):n}),(0,Y.jsx)(W,{children:e.revokedAt?(0,Y.jsx)(v,{tone:`muted`,label:i(`apiTokens.revokedBadge`)}):(0,Y.jsx)(v,{tone:`success`,label:i(`apiTokens.active`)})}),(0,Y.jsx)(W,{title:x(e.lastUsedAt)||void 0,children:e.lastUsedAt?b(e.lastUsedAt):i(`common.never`)}),(0,Y.jsx)(W,{children:e.expiresAt?x(e.expiresAt):i(`common.never`)}),(0,Y.jsx)(W,{className:`text-right`,children:e.revokedAt?null:(0,Y.jsx)(O,{tone:`danger`,title:i(`apiTokens.revokeTitle`,{name:e.name}),description:i(`apiTokens.revokeDescription`),confirmLabel:i(`common.revoke`),onConfirm:()=>r(e),trigger:(0,Y.jsx)(E,{variant:`outline`,size:`sm`,"aria-label":`${i(`common.revoke`)}: ${e.name}`,children:i(`common.revoke`)})})})]},e.id))})]})})},At=()=>{let{t:e}=c(),t=pt(),{names:n}=_t(),r=p().data?.site.name??``,i=ft(),[a,o]=(0,X.useState)(!1),[s,l]=(0,X.useState)(void 0),u=async t=>{await i.mutateAsync(t.id),w.success(e(`apiTokens.revoked`))},d=(0,Y.jsxs)(E,{onClick:()=>o(!0),children:[(0,Y.jsx)(A,{"aria-hidden":`true`}),e(`apiTokens.create`)]});return(0,Y.jsxs)(g,{width:`full`,children:[(0,Y.jsx)(_,{title:e(`apiTokens.title`),actions:d}),s?(0,Y.jsx)(vt,{title:e(`apiTokens.secretTitle`),description:e(`apiTokens.secretDescription`),label:e(`apiTokens.secretLabel`),secret:s,dismissLabel:e(`apiTokens.secretDone`),onDismiss:()=>l(void 0)}):null,(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(y,{icon:Ce,title:e(`apiTokens.empty`),description:e(`apiTokens.emptyDescription`),action:d}),children:e=>(0,Y.jsx)(kt,{tokens:e,roleNames:n,siteName:r,onRevoke:u})}),(0,Y.jsx)(Ot,{open:a,onOpenChange:o,onCreated:e=>{l(e.token),o(!1)},onCloseAutoFocus:e=>s!==void 0&&e.preventDefault()})]})},jt=()=>{let{t:e}=c(),{themes:t,themeKey:n,isSingleVariant:r,selectTheme:i}=Ae(),a=k(e=>e.appearance),o=k(e=>e.setAppearance),s=we();return(0,Y.jsxs)(g,{width:`full`,children:[(0,Y.jsx)(_,{title:e(`appearance.title`)}),(0,Y.jsxs)(`div`,{className:`space-y-6`,children:[(0,Y.jsx)(J,{title:e(`appearance.theme`),description:e(`appearance.storedHere`),children:(0,Y.jsx)(M,{"aria-label":e(`appearance.theme`),value:n,onValueChange:i,className:`sm:grid-cols-2 xl:grid-cols-4`,children:t.map(e=>(0,Y.jsx)(at,{value:e.key,label:e.name,description:e.description,media:(0,Y.jsx)(ke,{themeKey:e.key,variants:e.variants,size:`lg`})},e.key))})}),(0,Y.jsx)(J,{title:e(`appearance.mode`),actions:s?(0,Y.jsx)(le,{about:e(`appearance.mode`),children:s}):void 0,children:(0,Y.jsx)(M,{"aria-label":e(`appearance.mode`),value:a,onValueChange:e=>{Oe(e)&&o(e)},className:`sm:grid-cols-3`,children:Ee.map(t=>(0,Y.jsx)(at,{value:t,label:e(`theme.${t}`),icon:De[t],disabled:r},t))})})]})]})},Mt=()=>{let{t:e}=c(),t=(0,X.useId)(),[n,r]=(0,X.useState)(``),[i,a]=(0,X.useState)(``),o=$e(),s=n.trim()!==``&&i.trim()!==``;return(0,Y.jsx)(J,{title:e(`assist.settings.tryIt`),titleAs:`h2`,children:(0,Y.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e.preventDefault(),s&&o.mutate({text:n.trim(),instruction:i.trim()})},children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(fe,{htmlFor:`${t}-text`,children:e(`assist.settings.tryText`)}),(0,Y.jsx)(Ze,{id:`${t}-text`,value:n,rows:3,maxLength:et,onChange:e=>r(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(fe,{htmlFor:`${t}-instruction`,children:e(`assist.rewrite.instruction`)}),(0,Y.jsx)(de,{id:`${t}-instruction`,value:i,maxLength:500,placeholder:e(`assist.rewrite.instructionPlaceholder`),onChange:e=>a(e.target.value)})]}),(0,Y.jsx)(rt,{error:o.error}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:(0,Y.jsx)(nt,{type:`submit`,variant:`default`,size:`default`,pending:o.isPending,pendingLabel:e(`assist.working`),disabled:!s,children:e(`assist.rewrite.run`)})}),(0,Y.jsx)(`div`,{"aria-live":`polite`,children:o.data?(0,Y.jsxs)(`figure`,{className:`space-y-1 rounded-lg border bg-muted/40 p-3`,children:[(0,Y.jsx)(`figcaption`,{className:`text-meta text-muted-foreground`,children:e(`assist.rewrite.proposal`,{model:o.data.model})}),(0,Y.jsx)(`p`,{className:`text-sm whitespace-pre-wrap`,children:o.data.text})]}):null})]})})},Nt=({usage:e})=>{let{t}=c(),n=[{key:`runs`,label:t(`assist.settings.runs`),value:e.runs},{key:`input`,label:t(`assist.settings.inputTokens`),value:e.inputTokens},{key:`output`,label:t(`assist.settings.outputTokens`),value:e.outputTokens}];return(0,Y.jsx)(J,{title:t(`assist.settings.usage`,{month:re(e.month)}),titleAs:`h2`,children:(0,Y.jsx)(`dl`,{className:`grid gap-4 sm:grid-cols-3`,children:n.map(e=>(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(`dt`,{className:`text-meta text-muted-foreground`,children:e.label}),(0,Y.jsx)(`dd`,{className:`text-2xl font-semibold tabular-nums`,children:e.value.toLocaleString()})]},e.key))})})},Pt=()=>{let{t:e}=c(),t=Qe();return(0,Y.jsxs)(g,{width:`narrow`,children:[(0,Y.jsx)(_,{title:e(`settings.assist`)}),(0,Y.jsx)(q,{query:t,loadingRows:3,children:t=>(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(J,{title:e(`assist.settings.status`),titleAs:`h2`,actions:(0,Y.jsx)(v,{tone:t.enabled?`success`:`muted`,label:t.enabled?e(`assist.settings.on`):e(`assist.settings.off`)}),children:[t.enabled?(0,Y.jsxs)(`dl`,{className:`space-y-2 text-sm`,children:[(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.provider`)}),(0,Y.jsx)(`dd`,{className:`font-mono`,children:t.provider})]}),(0,Y.jsxs)(`div`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`dt`,{className:`text-muted-foreground`,children:e(`assist.settings.model`)}),(0,Y.jsx)(`dd`,{className:`min-w-0 font-mono break-all`,children:t.model})]})]}):(0,Y.jsx)(`p`,{className:`text-sm`,children:e(`assist.settings.offDescription`)}),(0,Y.jsx)(`p`,{className:`mt-4 text-meta`,children:(0,Y.jsx)(it,{href:tt,children:e(`assist.settings.guide`)})})]}),t.enabled&&t.usage?(0,Y.jsx)(Nt,{usage:t.usage}):null,t.enabled?(0,Y.jsx)(Mt,{}):null]})})]})},Ft=e=>{let t=e.details?.plan?.impact?.affectedHeads;return typeof t==`number`?t:null},It=e=>w.success(T.t(`locales.deleted`,{label:e.label})),Lt=()=>{let e=Je(),[t,n]=(0,X.useState)(void 0),[r,i]=(0,X.useState)(!1);return{attempt:async t=>{try{await e.mutateAsync({code:t.code,acknowledged:!1})}catch(r){if(!d(r,`SCHEMA_CHANGE_NOT_ACKNOWLEDGED`))throw r;e.reset(),n({locale:t,affectedHeads:Ft(r)??0}),i(!0);return}It(t)},withContent:t,open:r,onOpenChange:i,confirm:()=>{t&&e.mutate({code:t.locale.code,acknowledged:!0},{onSuccess:()=>{It(t.locale),i(!1)}})},pending:e.isPending,error:e.error}},Rt=`locale-fallbacks-legend`,zt=({control:e,locales:t,code:n})=>{let{t:r}=c(),{field:i,fieldState:a}=Re({control:e,name:`fallbacks`}),[o,s]=(0,X.useState)(``),l=i.value,u=e=>t.find(t=>t.code===e)?.label??e,d=t.filter(e=>e.code!==n&&!l.includes(e.code)),f=(e,t)=>{let n=[...l],[r]=n.splice(e,1);n.splice(t,0,r),i.onChange(n)};return(0,Y.jsxs)(ce,{className:`gap-3`,"aria-labelledby":Rt,children:[(0,Y.jsxs)(oe,{variant:`label`,className:`mb-0 flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{id:Rt,children:r(`locales.fallbacks`)}),(0,Y.jsx)(le,{about:r(`locales.fallbacks`),children:r(`locales.fallbacksHint`)})]}),l.length>0?(0,Y.jsx)(`ol`,{className:`space-y-1`,children:l.map((e,t)=>(0,Y.jsxs)(`li`,{className:`flex items-center gap-2 rounded-lg border py-1 pr-1 pl-3 text-sm`,children:[(0,Y.jsxs)(`span`,{className:`w-5 text-muted-foreground`,children:[t+1,`.`]}),(0,Y.jsxs)(`span`,{className:`flex-1`,children:[u(e),` `,(0,Y.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e})]}),(0,Y.jsx)(E,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveUp`,{locale:u(e)}),disabled:t===0,onClick:()=>f(t,t-1),children:(0,Y.jsx)(me,{"aria-hidden":`true`})}),(0,Y.jsx)(E,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.moveDown`,{locale:u(e)}),disabled:t===l.length-1,onClick:()=>f(t,t+1),children:(0,Y.jsx)(pe,{"aria-hidden":`true`})}),(0,Y.jsx)(E,{type:`button`,variant:`ghost`,size:`icon-sm`,"aria-label":r(`locales.removeFallback`,{locale:u(e)}),onClick:()=>i.onChange(l.filter(t=>t!==e)),children:(0,Y.jsx)(m,{"aria-hidden":`true`})})]},e))}):(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:r(`locales.noFallbacks`)}),d.length>0&&l.length<10?(0,Y.jsxs)(ye,{value:o,onValueChange:e=>{i.onChange([...l,e]),s(``)},children:[(0,Y.jsx)(ge,{className:`w-full sm:w-64`,"aria-label":r(`locales.addFallback`),children:(0,Y.jsx)(he,{placeholder:r(`locales.addFallback`)})}),(0,Y.jsx)(_e,{children:d.map(e=>(0,Y.jsxs)(ve,{value:e.code,children:[e.label,` (`,e.code,`)`]},e.code))})]}):null,(0,Y.jsx)(Be,{message:a.error?.message})]})},Bt=B({code:R().trim().min(1,`validation.required`).max(35,`validation.localeCode`).regex(Ie,`validation.localeCode`),label:P(),fallbacks:Ue(R())}),Q=e=>({code:e?.code??``,label:e?.label??``,fallbacks:e?.fallbacks??[]}),Vt=(e,t,n)=>{let r=Xe(),i=Ke(),a=I({resolver:F(Bt),defaultValues:Q(t)}),{reset:o}=a;(0,X.useEffect)(()=>{e&&(o(Q(t)),r.reset(),i.reset())},[e,t,o]);let s=a.handleSubmit(async({code:e,label:a,fallbacks:o})=>{(await L(t?i.mutateAsync({code:t.code,input:{label:a,fallbacks:o}}):r.mutateAsync({code:e,label:a,fallbacks:o}))).ok&&(w.success(T.t(t?`locales.saved`:`locales.created`,{label:a})),n())}),c=t?i:r;return{form:a,onSubmit:s,pending:c.isPending,error:c.error}},Ht=({open:e,onOpenChange:t,locale:n,locales:r})=>{let{t:i}=c(),{form:a,onSubmit:o,pending:s,error:l}=Vt(e,n,()=>t(!1)),u=a.watch(`code`);return(0,Y.jsxs)(lt,{open:e,onOpenChange:t,size:`md`,title:n?i(`locales.editTitle`,{label:n.label}):i(`locales.addTitle`),dirty:a.formState.isDirty,pending:s,submitLabel:i(n?`common.saveChanges`:`locales.add`),pendingLabel:i(`common.saving`),onSubmit:e=>void o(e),children:[(0,Y.jsx)(N,{control:a.control,name:`code`,label:i(`locales.code`),hint:i(`locales.codeHint`),autoComplete:`off`,spellCheck:!1,className:`font-mono`,disabled:n!==void 0}),(0,Y.jsx)(N,{control:a.control,name:`label`,label:i(`locales.label`),autoComplete:`off`}),(0,Y.jsx)(zt,{control:a.control,locales:r,code:u}),(0,Y.jsx)(D,{error:l})]})},Ut=({locale:e,chain:t,canManage:n,onEdit:r,onMakeDefault:i,onDelete:a})=>{let{t:o}=c(),[s,l]=(0,X.useState)(!1);return(0,Y.jsxs)(U,{children:[(0,Y.jsx)(W,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(S,{children:e.label}),e.isDefault?(0,Y.jsx)(te,{variant:`secondary`,children:o(`locales.default`)}):null]})}),(0,Y.jsx)(W,{className:`font-mono text-xs`,children:e.code}),(0,Y.jsx)(W,{className:`font-mono text-xs`,children:t.length>0?t.join(` → `):o(`common.none`)}),(0,Y.jsx)(W,{className:`text-right`,children:n?(0,Y.jsxs)(Fe,{children:[(0,Y.jsx)(O,{tone:`danger`,open:s,onOpenChange:l,title:o(`locales.deleteTitle`,{label:e.label}),description:o(`locales.deleteDescription`),confirmLabel:o(`common.delete`),pendingLabel:o(`locales.deleting`),onConfirm:()=>a(e),children:(0,Y.jsx)(Ne,{asChild:!0,children:(0,Y.jsx)(E,{variant:`ghost`,size:`icon-sm`,"aria-label":`${o(`common.actions`)}: ${e.label}`,children:(0,Y.jsx)(xe,{"aria-hidden":`true`})})})}),(0,Y.jsxs)(Pe,{align:`end`,onCloseAutoFocus:e=>s&&e.preventDefault(),children:[(0,Y.jsxs)(j,{onSelect:()=>r(e),children:[(0,Y.jsx)(Me,{"aria-hidden":`true`}),o(`common.edit`)]}),e.isDefault?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(j,{onSelect:()=>i(e),children:[(0,Y.jsx)(bt,{"aria-hidden":`true`}),o(`locales.makeDefault`)]}),(0,Y.jsxs)(j,{variant:`destructive`,onSelect:()=>l(!0),children:[(0,Y.jsx)(ae,{"aria-hidden":`true`}),o(`common.delete`)]})]})]})]}):null})]})},Wt=({locales:e,canManage:t,onEdit:n,onMakeDefault:r,onDelete:i})=>{let{t:a}=c(),o=e.find(e=>e.isDefault);return(0,Y.jsx)(G,{children:(0,Y.jsxs)(K,{children:[(0,Y.jsx)(z,{children:(0,Y.jsxs)(U,{children:[(0,Y.jsx)(V,{children:a(`locales.label`)}),(0,Y.jsx)(V,{children:a(`locales.code`)}),(0,Y.jsx)(V,{children:a(`locales.fallbacks`)}),(0,Y.jsx)(V,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:a(`common.actions`)})})]})}),(0,Y.jsx)(H,{children:e.map(e=>(0,Y.jsx)(Ut,{locale:e,chain:[...e.fallbacks,...o&&!e.isDefault&&!e.fallbacks.includes(o.code)?[o.code]:[]],canManage:t,onEdit:n,onMakeDefault:r,onDelete:i},e.code))})]})})},Gt=()=>{let{t:e}=c(),t=Ye(),n=mt(`schema.create`),r=qe(),i=ht(),a=Lt(),[o,s]=(0,X.useState)({open:!1,locale:void 0}),l=t.data?.find(e=>e.isDefault),u=a.withContent;return(0,Y.jsxs)(g,{width:`full`,children:[(0,Y.jsx)(_,{title:e(`locales.title`),actions:n?(0,Y.jsxs)(E,{onClick:()=>s({open:!0,locale:void 0}),children:[(0,Y.jsx)(A,{"aria-hidden":`true`}),e(`locales.add`)]}):null}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(y,{icon:Se,title:e(`locales.empty`)}),children:e=>(0,Y.jsx)(Wt,{locales:e,canManage:n,onEdit:e=>s({open:!0,locale:e}),onMakeDefault:e=>{r.reset(),i.ask(e)},onDelete:a.attempt})}),(0,Y.jsx)(Ht,{open:o.open,onOpenChange:e=>s(t=>({...t,open:e})),locale:o.locale,locales:t.data??[]}),(0,Y.jsx)(be,{open:i.open,onOpenChange:i.onOpenChange,title:e(`locales.defaultTitle`,{label:i.target?.label??``}),description:e(`locales.defaultDescription`,{label:i.target?.label??``,current:l?.label??``}),acknowledgement:e(`locales.defaultAcknowledge`),confirmLabel:e(`locales.makeDefault`),destructive:!0,pending:r.isPending,pendingLabel:e(`common.saving`),error:r.error,onConfirm:()=>{let t=i.target;t&&r.mutate(t.code,{onSuccess:()=>{w.success(e(`locales.defaultChanged`,{label:t.label})),i.close()}})}}),(0,Y.jsx)(be,{open:a.open,onOpenChange:a.onOpenChange,title:e(`locales.deleteTitle`,{label:u?.locale.label??``}),description:e(`locales.deleteContent`,{count:u?.affectedHeads??0,label:u?.locale.label??``}),acknowledgement:e(`locales.deleteAcknowledge`,{count:u?.affectedHeads??0}),confirmLabel:e(`common.delete`),destructive:!0,pending:a.pending,pendingLabel:e(`locales.deleting`),error:a.error,onConfirm:a.confirm})]})},Kt=B({name:P()}),qt=()=>{let{data:e}=p(),t=ee(),n=I({resolver:F(Kt),defaultValues:{name:e?.user.name??``}}),{reset:r,formState:i}=n,a=e?.user.name;return(0,X.useEffect)(()=>{!i.isDirty&&a!==void 0&&r({name:a})},[a,r,i.isDirty]),{form:n,onSubmit:n.handleSubmit(async e=>{let n=await L(t.mutateAsync(e));n.ok&&(r({name:n.value.name}),w.success(T.t(`profile.detailsSaved`)))}),updateProfile:t,email:e?.user.email??``}},Jt=`profile-email`,Yt=`profile-email-hint`,Xt=({onDirtyChange:e})=>{let{t}=c(),{form:n,onSubmit:r,updateProfile:i,email:a}=qt(),{isDirty:o}=n.formState;return(0,X.useEffect)(()=>e(o),[o,e]),(0,Y.jsx)(J,{title:t(`profile.detailsTitle`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(ue,{children:[(0,Y.jsx)(N,{control:n.control,name:`name`,label:t(`auth.name`),autoComplete:`name`}),(0,Y.jsxs)(se,{children:[(0,Y.jsx)(We,{htmlFor:Jt,label:t(`auth.email`),hint:t(`profile.emailHint`),hintId:Yt}),(0,Y.jsx)(de,{id:Jt,value:a,readOnly:!0,"aria-describedby":Yt})]}),(0,Y.jsx)(D,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(h,{pending:i.isPending,pendingLabel:t(`common.saving`),disabled:!o,children:t(`common.saveChanges`)})})]})})})},Zt=Ve({currentPassword:R().min(1,`validation.required`),password:Le()}),Qt={currentPassword:``,password:``,confirmPassword:``},$t=()=>{let e=f(),t=I({resolver:F(Zt),defaultValues:Qt});return{form:t,onSubmit:t.handleSubmit(async({currentPassword:n,password:r})=>{(await L(e.mutateAsync({currentPassword:n,newPassword:r}))).ok&&(t.reset(Qt),w.success(T.t(`profile.passwordChanged`)))}),changePassword:e}},en=({onDirtyChange:e})=>{let{t}=c(),{form:n,onSubmit:r,changePassword:i}=$t(),{isDirty:a}=n.formState;return(0,X.useEffect)(()=>e(a),[a,e]),(0,Y.jsx)(J,{title:t(`profile.passwordTitle`),description:t(`profile.passwordDescription`),children:(0,Y.jsx)(`form`,{noValidate:!0,onSubmit:e=>void r(e),className:`max-w-md`,children:(0,Y.jsxs)(ue,{children:[(0,Y.jsx)(N,{control:n.control,name:`currentPassword`,label:t(`profile.currentPassword`),type:`password`,autoComplete:`current-password`}),(0,Y.jsx)(N,{control:n.control,name:`password`,label:t(`auth.newPassword`),description:t(`auth.passwordHint`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(N,{control:n.control,name:`confirmPassword`,label:t(`auth.confirmPassword`),type:`password`,autoComplete:`new-password`}),(0,Y.jsx)(D,{error:i.error}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(h,{pending:i.isPending,pendingLabel:t(`common.saving`),children:t(`profile.changePassword`)})})]})})})},tn=()=>{let{t:e}=c(),[t,n]=(0,X.useState)(!1),[r,i]=(0,X.useState)(!1),a=(0,X.useCallback)(e=>n(e),[]),o=(0,X.useCallback)(e=>i(e),[]);return(0,Y.jsxs)(g,{width:`full`,children:[(0,Y.jsx)(_,{title:e(`profile.title`)}),(0,Y.jsx)(Xt,{onDirtyChange:a}),(0,Y.jsx)(en,{onDirtyChange:o}),(0,Y.jsx)(ie,{when:t||r})]})},nn=()=>r({queryKey:i.sessions,queryFn:()=>l.sessions.list(),meta:{silent:!0}}),rn=()=>{let e=o();return a({mutationKey:[`sessions`,`revoke`],mutationFn:e=>u(()=>l.sessions.revoke(e)),onSettled:()=>e.invalidateQueries({queryKey:i.sessions})})},an=[[/Edg\//,`Edge`],[/OPR\//,`Opera`],[/Firefox\//,`Firefox`],[/Chrome\//,`Chrome`],[/Safari\//,`Safari`]],on=[[/iPhone|iPad/,`iOS`],[/Android/,`Android`],[/Mac OS X|Macintosh/,`macOS`],[/Windows/,`Windows`],[/Linux/,`Linux`]],$=(e,t)=>t.find(([t])=>t.test(e))?.[1],sn=e=>{if(!e)return;let t=$(e,an),n=$(e,on);return t&&n?`${t} · ${n}`:t??n},cn=({sessions:e,onRevoke:t})=>{let{t:n}=c();return(0,Y.jsx)(G,{children:(0,Y.jsxs)(K,{children:[(0,Y.jsx)(z,{children:(0,Y.jsxs)(U,{children:[(0,Y.jsx)(V,{children:n(`sessions.device`)}),(0,Y.jsx)(V,{children:n(`sessions.ipAddress`)}),(0,Y.jsx)(V,{children:n(`sessions.signedIn`)}),(0,Y.jsx)(V,{children:n(`sessions.lastActive`)}),(0,Y.jsx)(V,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:n(`common.actions`)})})]})}),(0,Y.jsx)(H,{children:e.map(e=>(0,Y.jsxs)(U,{children:[(0,Y.jsx)(W,{children:(0,Y.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(S,{children:sn(e.userAgent)??n(`sessions.unknownDevice`)}),e.current?(0,Y.jsx)(te,{variant:`secondary`,children:n(`sessions.current`)}):null]})}),(0,Y.jsx)(W,{className:`font-mono text-xs`,children:e.ip??n(`common.unknown`)}),(0,Y.jsx)(W,{title:x(e.createdAt),children:b(e.createdAt)}),(0,Y.jsx)(W,{title:x(e.lastSeenAt),children:b(e.lastSeenAt)}),(0,Y.jsx)(W,{className:`text-right`,children:e.current?null:(0,Y.jsx)(O,{tone:`danger`,title:n(`sessions.revokeTitle`),description:n(`sessions.revokeDescription`),confirmLabel:n(`common.revoke`),onConfirm:()=>t(e),trigger:(0,Y.jsx)(E,{variant:`outline`,size:`sm`,children:n(`common.revoke`)})})})]},e.id))})]})})},ln={settings:C(`/app/settings`)({component:St}),profile:C(`/app/settings/profile`)({component:tn}),sessions:C(`/app/settings/sessions`)({component:()=>{let{t:e}=c(),t=nn(),n=rn(),r=async t=>{await n.mutateAsync(t.id),w.success(e(`sessions.revoked`))};return(0,Y.jsxs)(g,{width:`full`,children:[(0,Y.jsx)(_,{title:e(`sessions.title`)}),(0,Y.jsx)(q,{query:t,isEmpty:e=>e.length===0,empty:(0,Y.jsx)(y,{icon:Te,title:e(`sessions.empty`)}),children:e=>(0,Y.jsx)(cn,{sessions:e,onRevoke:r})})]})}}),theme:C(`/app/settings/theme`)({component:jt}),locales:C(`/app/settings/locales`)({component:Gt}),assist:C(`/app/settings/assist`)({component:Pt}),apiTokens:C(`/app/settings/api-tokens`)({component:At})};export{ln as settingsLazyRoutes};
2
- //# sourceMappingURL=settings-CYXU73dP.js.map