@shepai/cli 1.102.0 → 1.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +5 -4
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +2 -1
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +1 -1
  5. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -1
  6. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +2 -2
  8. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts +19 -0
  9. package/dist/src/presentation/web/app/actions/check-agent-auth.d.ts.map +1 -0
  10. package/dist/src/presentation/web/app/actions/check-agent-auth.js +178 -0
  11. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +1 -1
  12. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts +1 -1
  13. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.d.ts.map +1 -1
  14. package/dist/src/presentation/web/components/features/control-center/control-center-empty-state.js +46 -8
  15. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  16. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +28 -5
  17. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  18. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +0 -2
  19. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.d.ts.map +1 -1
  20. package/dist/src/presentation/web/components/features/control-center/welcome-agent-setup.js +26 -148
  21. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.d.ts.map +1 -1
  22. package/dist/src/presentation/web/components/features/features-canvas/features-canvas.js +29 -8
  23. package/dist/src/presentation/web/components/ui/dialog.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/ui/dialog.js +2 -2
  25. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  26. package/dist/src/presentation/web/hooks/use-graph-state.js +26 -6
  27. package/dist/tsconfig.build.tsbuildinfo +1 -1
  28. package/package.json +2 -2
  29. package/web/.next/BUILD_ID +1 -1
  30. package/web/.next/build-manifest.json +2 -2
  31. package/web/.next/fallback-build-manifest.json +2 -2
  32. package/web/.next/prerender-manifest.json +3 -3
  33. package/web/.next/required-server-files.js +2 -2
  34. package/web/.next/required-server-files.json +2 -2
  35. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +48 -48
  36. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  37. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +58 -58
  40. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  43. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +58 -58
  44. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  45. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  46. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +44 -44
  48. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  49. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +48 -48
  52. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  53. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  54. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +58 -58
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +58 -58
  60. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  61. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  62. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  63. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +44 -44
  64. package/web/.next/server/app/(dashboard)/page.js +1 -1
  65. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  66. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  67. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +44 -44
  68. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  69. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  70. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  71. package/web/.next/server/app/_global-error.html +2 -2
  72. package/web/.next/server/app/_global-error.rsc +1 -1
  73. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  74. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  75. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  76. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  77. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  78. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  79. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  80. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  81. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  82. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  83. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  84. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  86. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  87. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  89. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  90. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  92. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/chunks/[root-of-the-server]__f47bb8a5._.js +1 -1
  94. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  95. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  96. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js +3 -0
  97. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_d0119342._.js.map +1 -0
  98. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js +3 -0
  99. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_rocket_1575cd4d.js.map +1 -0
  100. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js +3 -0
  101. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_0a7546ed.js.map +1 -0
  102. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js +3 -0
  103. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_978cbb4c.js.map +1 -0
  104. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  105. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  106. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  107. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  109. package/web/.next/server/chunks/ssr/{[root-of-the-server]__ec9a1550._.js → [root-of-the-server]__51fc98b0._.js} +2 -2
  110. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0b6bb4ae._.js.map → [root-of-the-server]__51fc98b0._.js.map} +1 -1
  111. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f8932d55._.js → [root-of-the-server]__57f37786._.js} +2 -2
  112. package/web/.next/server/chunks/ssr/{[root-of-the-server]__ec9a1550._.js.map → [root-of-the-server]__57f37786._.js.map} +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  114. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0b6bb4ae._.js → [root-of-the-server]__708dcad1._.js} +2 -2
  115. package/web/.next/server/chunks/ssr/{[root-of-the-server]__f8932d55._.js.map → [root-of-the-server]__708dcad1._.js.map} +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__845a9d2a._.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  119. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6a82177d._.js → [root-of-the-server]__8e002910._.js} +2 -2
  120. package/web/.next/server/chunks/ssr/{[root-of-the-server]__6a82177d._.js.map → [root-of-the-server]__8e002910._.js.map} +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__d91fdd51._.js +3 -0
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__d91fdd51._.js.map +1 -0
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  128. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/_273d4632._.js +3 -0
  130. package/web/.next/server/chunks/ssr/_273d4632._.js.map +1 -0
  131. package/web/.next/server/chunks/ssr/{_d2a282c5._.js → _43bc1b22._.js} +2 -2
  132. package/web/.next/server/chunks/ssr/{_d2a282c5._.js.map → _43bc1b22._.js.map} +1 -1
  133. package/web/.next/server/chunks/ssr/_6225647a._.js +3 -0
  134. package/web/.next/server/chunks/ssr/_6225647a._.js.map +1 -0
  135. package/web/.next/server/chunks/ssr/{_9d0908a8._.js → _798dcca3._.js} +2 -2
  136. package/web/.next/server/chunks/ssr/{_9d0908a8._.js.map → _798dcca3._.js.map} +1 -1
  137. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  138. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  139. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  140. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  141. package/web/.next/server/chunks/ssr/_f5316e67._.js +3 -0
  142. package/web/.next/server/chunks/ssr/_f5316e67._.js.map +1 -0
  143. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  144. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  145. package/web/.next/server/chunks/ssr/{src_presentation_web_3c53a23d._.js → src_presentation_web_7275ce5d._.js} +3 -3
  146. package/web/.next/server/chunks/ssr/{src_presentation_web_3c53a23d._.js.map → src_presentation_web_7275ce5d._.js.map} +1 -1
  147. package/web/.next/server/chunks/ssr/{src_presentation_web_ec8c7a4f._.js → src_presentation_web_758dfa10._.js} +3 -3
  148. package/web/.next/server/chunks/ssr/{src_presentation_web_ec8c7a4f._.js.map → src_presentation_web_758dfa10._.js.map} +1 -1
  149. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js +3 -0
  150. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_84803221.js.map +1 -0
  151. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  152. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  154. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  156. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  158. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  159. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  160. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  162. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
  163. package/web/.next/server/pages/500.html +2 -2
  164. package/web/.next/server/server-reference-manifest.js +1 -1
  165. package/web/.next/server/server-reference-manifest.json +273 -273
  166. package/web/.next/static/chunks/07b853e29af1e5f2.js +1 -0
  167. package/web/.next/static/chunks/12f2e950ef2c1a25.js +1 -0
  168. package/web/.next/static/chunks/{d3c337aa9acbfd96.js → 27b176706ec35488.js} +2 -2
  169. package/web/.next/static/chunks/28aa6c032562c065.js +1 -0
  170. package/web/.next/static/chunks/3a806cf059241bc9.js +1 -0
  171. package/web/.next/static/chunks/3ff4c5790bf84403.js +1 -0
  172. package/web/.next/static/chunks/{d994924b9107401b.js → 5981cd90d8cbdad7.js} +1 -1
  173. package/web/.next/static/chunks/790f576eb41aedc6.js +1 -0
  174. package/web/.next/static/chunks/{0ecdad7af8d93397.js → 87ce4933c46c0c18.js} +1 -1
  175. package/web/.next/static/chunks/{bfee4f72255f4654.js → 8f9956f5871a8cdb.js} +2 -2
  176. package/web/.next/static/chunks/93058c22968e2fef.css +1 -0
  177. package/web/.next/static/chunks/a39402a05bf12912.js +1 -0
  178. package/web/.next/static/chunks/f37993a7b6f87fcb.js +1 -0
  179. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_6ba7eb21._.js +0 -3
  180. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_6ba7eb21._.js.map +0 -1
  181. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_c757eb00.js +0 -3
  182. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_c757eb00.js.map +0 -1
  183. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_7eb49631.js +0 -3
  184. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_7eb49631.js.map +0 -1
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__7b49fcb3._.js +0 -3
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__7b49fcb3._.js.map +0 -1
  187. package/web/.next/server/chunks/ssr/_60e203af._.js +0 -3
  188. package/web/.next/server/chunks/ssr/_60e203af._.js.map +0 -1
  189. package/web/.next/server/chunks/ssr/_6a83bd29._.js +0 -3
  190. package/web/.next/server/chunks/ssr/_6a83bd29._.js.map +0 -1
  191. package/web/.next/server/chunks/ssr/_7d954884._.js +0 -3
  192. package/web/.next/server/chunks/ssr/_7d954884._.js.map +0 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_befd865a.js +0 -3
  194. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_befd865a.js.map +0 -1
  195. package/web/.next/static/chunks/0a370e5d6fd1bb24.js +0 -1
  196. package/web/.next/static/chunks/2d3dc372f05429dd.css +0 -1
  197. package/web/.next/static/chunks/3092c9611e2dc032.js +0 -1
  198. package/web/.next/static/chunks/30dc64780817371a.js +0 -1
  199. package/web/.next/static/chunks/ac12b8d2bd59675e.js +0 -1
  200. package/web/.next/static/chunks/b272ac93b52dceeb.js +0 -1
  201. package/web/.next/static/chunks/d61cbdfc00003e44.js +0 -1
  202. package/web/.next/static/chunks/e248c85913405af4.js +0 -1
  203. package/web/.next/static/chunks/e24a024affc634d9.js +0 -1
  204. /package/web/.next/static/{_-n7Ii9h0sTnlzE_aFMQI → YTwpzFRHYkkE5cDxaRlDQ}/_buildManifest.js +0 -0
  205. /package/web/.next/static/{_-n7Ii9h0sTnlzE_aFMQI → YTwpzFRHYkkE5cDxaRlDQ}/_clientMiddlewareManifest.json +0 -0
  206. /package/web/.next/static/{_-n7Ii9h0sTnlzE_aFMQI → YTwpzFRHYkkE5cDxaRlDQ}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[4019,a=>{"use strict";let b=(0,a.i(25700).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);a.s(["Circle",()=>b],4019)},9955,a=>{"use strict";var b=a.i(76096);a.s(["Download",()=>b.default])},63496,a=>{"use strict";var b=a.i(96960),c=a.i(7420),d=a.i(6175),e=a.i(90986),f=a.i(10973);function g(a){let g=a+"CollectionProvider",[h,i]=(0,c.createContextScope)(g),[j,k]=h(g,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:c,children:d}=a,e=b.default.useRef(null),g=b.default.useRef(new Map).current;return(0,f.jsx)(j,{scope:c,itemMap:g,collectionRef:e,children:d})};l.displayName=g;let m=a+"CollectionSlot",n=(0,e.createSlot)(m),o=b.default.forwardRef((a,b)=>{let{scope:c,children:e}=a,g=k(m,c),h=(0,d.useComposedRefs)(b,g.collectionRef);return(0,f.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,e.createSlot)(p),s=b.default.forwardRef((a,c)=>{let{scope:e,children:g,...h}=a,i=b.default.useRef(null),j=(0,d.useComposedRefs)(c,i),l=k(p,e);return b.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,f.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(c){let d=k(a+"CollectionConsumer",c);return b.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}var h=new WeakMap;function i(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=j(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function j(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],h.set(this,!0)}set(a,b){return h.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=j(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let k=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<k;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=i(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=i(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return i(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",()=>g])},53170,a=>{"use strict";let b=(0,a.i(25700).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);a.s(["GitBranch",()=>b],53170)},41305,77127,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(59653),e=a.i(7420),f=a.i(63496),g=a.i(6175),h=a.i(5472),i=a.i(66873),j=a.i(79406),k=a.i(17329),l=a.i(48939),m="rovingFocusGroup.onEntryFocus",n={bubbles:!1,cancelable:!0},o="RovingFocusGroup",[p,q,r]=(0,f.createCollection)(o),[s,t]=(0,e.createContextScope)(o,[r]),[u,v]=s(o),w=c.forwardRef((a,c)=>(0,b.jsx)(p.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(p.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(x,{...a,ref:c})})}));w.displayName=o;var x=c.forwardRef((a,e)=>{let{__scopeRovingFocusGroup:f,orientation:h,loop:p=!1,dir:r,currentTabStopId:s,defaultCurrentTabStopId:t,onCurrentTabStopIdChange:v,onEntryFocus:w,preventScrollOnEntryFocus:x=!1,...y}=a,z=c.useRef(null),A=(0,g.useComposedRefs)(e,z),C=(0,l.useDirection)(r),[D,E]=(0,k.useControllableState)({prop:s,defaultProp:t??null,onChange:v,caller:o}),[F,G]=c.useState(!1),H=(0,j.useCallbackRef)(w),I=q(f),J=c.useRef(!1),[K,L]=c.useState(0);return c.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(m,H),()=>a.removeEventListener(m,H)},[H]),(0,b.jsx)(u,{scope:f,orientation:h,dir:C,loop:p,currentTabStopId:D,onItemFocus:c.useCallback(a=>E(a),[E]),onItemShiftTab:c.useCallback(()=>G(!0),[]),onFocusableItemAdd:c.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:c.useCallback(()=>L(a=>a-1),[]),children:(0,b.jsx)(i.Primitive.div,{tabIndex:F||0===K?-1:0,"data-orientation":h,...y,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,d.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!F){let b=new CustomEvent(m,n);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);B([a.find(a=>a.active),a.find(a=>a.id===D),...a].filter(Boolean).map(a=>a.ref.current),x)}}J.current=!1}),onBlur:(0,d.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),y="RovingFocusGroupItem",z=c.forwardRef((a,e)=>{let{__scopeRovingFocusGroup:f,focusable:g=!0,active:j=!1,tabStopId:k,children:l,...m}=a,n=(0,h.useId)(),o=k||n,r=v(y,f),s=r.currentTabStopId===o,t=q(f),{onFocusableItemAdd:u,onFocusableItemRemove:w,currentTabStopId:x}=r;return c.useEffect(()=>{if(g)return u(),()=>w()},[g,u,w]),(0,b.jsx)(p.ItemSlot,{scope:f,id:o,focusable:g,active:j,children:(0,b.jsx)(i.Primitive.span,{tabIndex:s?0:-1,"data-orientation":r.orientation,...m,ref:e,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{g?r.onItemFocus(o):a.preventDefault()}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>r.onItemFocus(o)),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void r.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return A[e]}(a,r.orientation,r.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=t().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=r.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>B(e))}}),children:"function"==typeof l?l({isCurrentTabStop:s,hasTabStop:null!=x}):l})})});z.displayName=y;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function B(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>z,"Root",()=>w,"createRovingFocusGroupScope",()=>t],77127);var C=a.i(14272),D="Tabs",[E,F]=(0,e.createContextScope)(D,[t]),G=t(),[H,I]=E(D),J=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:j="horizontal",dir:m,activationMode:n="automatic",...o}=a,p=(0,l.useDirection)(m),[q,r]=(0,k.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:D});return(0,b.jsx)(H,{scope:d,baseId:(0,h.useId)(),value:q,onValueChange:r,orientation:j,dir:p,activationMode:n,children:(0,b.jsx)(i.Primitive.div,{dir:p,"data-orientation":j,...o,ref:c})})});J.displayName=D;var K="TabsList",L=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=I(K,d),h=G(d);return(0,b.jsx)(w,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(i.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});L.displayName=K;var M="TabsTrigger",N=c.forwardRef((a,c)=>{let{__scopeTabs:e,value:f,disabled:g=!1,...h}=a,j=I(M,e),k=G(e),l=Q(j.baseId,f),m=R(j.baseId,f),n=f===j.value;return(0,b.jsx)(z,{asChild:!0,...k,focusable:!g,active:n,children:(0,b.jsx)(i.Primitive.button,{type:"button",role:"tab","aria-selected":n,"aria-controls":m,"data-state":n?"active":"inactive","data-disabled":g?"":void 0,disabled:g,id:l,...h,ref:c,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{g||0!==a.button||!1!==a.ctrlKey?a.preventDefault():j.onValueChange(f)}),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&j.onValueChange(f)}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==j.activationMode;n||g||!a||j.onValueChange(f)})})})});N.displayName=M;var O="TabsContent",P=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...j}=a,k=I(O,e),l=Q(k.baseId,f),m=R(k.baseId,f),n=f===k.value,o=c.useRef(n);return c.useEffect(()=>{let a=requestAnimationFrame(()=>o.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(C.Presence,{present:g||n,children:({present:c})=>(0,b.jsx)(i.Primitive.div,{"data-state":n?"active":"inactive","data-orientation":k.orientation,role:"tabpanel","aria-labelledby":l,hidden:!c,id:m,tabIndex:0,...j,ref:d,style:{...a.style,animationDuration:o.current?"0s":void 0},children:c&&h})})});function Q(a,b){return`${a}-trigger-${b}`}function R(a,b){return`${a}-content-${b}`}P.displayName=O,a.s(["Content",()=>P,"List",()=>L,"Root",()=>J,"Tabs",()=>J,"TabsContent",()=>P,"TabsList",()=>L,"TabsTrigger",()=>N,"Trigger",()=>N,"createTabsScope",()=>F],287);var S=a.i(287),S=S,T=a.i(85536);let U=S.Root,V=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(S.List,{ref:d,className:(0,T.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",a),...c}));V.displayName=S.List.displayName;let W=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(S.Trigger,{ref:d,className:(0,T.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",a),...c}));W.displayName=S.Trigger.displayName;let X=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(S.Content,{ref:d,className:(0,T.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a),...c}));X.displayName=S.Content.displayName,a.s(["Tabs",()=>U,"TabsContent",()=>X,"TabsList",()=>V,"TabsTrigger",()=>W],41305)}];
2
+
3
+ //# sourceMappingURL=_f5316e67._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/circle.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/collection-legacy.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/collection.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/ordered-dictionary.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-roving-focus%401.1.11_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40type_61b1e57265158db0f110fd8c0c27aeba/node_modules/%40radix-ui/react-roving-focus/dist/index.mjs","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-tabs%401.1.13_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Breact%40_68a385a9eea120600bb372a91de22b00/node_modules/%40radix-ui/react-tabs/dist/index.mjs","../../../../../../../src/presentation/web/components/ui/tabs.tsx"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }]];\n\n/**\n * @component @name Circle\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/circle\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Circle = createLucideIcon('circle', __iconNode);\n\nexport default Circle;\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>\u2026</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\nimport type { EntryOf } from './ordered-dictionary';\nimport { OrderedDict } from './ordered-dictionary';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\ninterface BaseItemData {\n id?: string;\n}\n\ntype ItemDataWithElement<\n ItemData extends BaseItemData,\n ItemElement extends HTMLElement,\n> = ItemData & {\n element: ItemElement;\n};\n\ntype ItemMap<ItemElement extends HTMLElement, ItemData extends BaseItemData> = OrderedDict<\n ItemElement,\n ItemDataWithElement<ItemData, ItemElement>\n>;\n\nfunction createCollection<\n ItemElement extends HTMLElement,\n ItemData extends BaseItemData = BaseItemData,\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionElement: CollectionElement | null;\n collectionRef: React.Ref<CollectionElement | null>;\n collectionRefObject: React.RefObject<CollectionElement | null>;\n itemMap: ItemMap<ItemElement, ItemData>;\n setItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>;\n };\n\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0,\n }\n );\n\n type CollectionState = [\n ItemMap: ItemMap<ItemElement, ItemData>,\n SetItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>,\n ];\n\n const CollectionProvider: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state?: CollectionState;\n }> = ({ state, ...props }) => {\n return state ? (\n <CollectionProviderImpl {...props} state={state} />\n ) : (\n <CollectionInit {...props} />\n );\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n\n const CollectionInit: React.FC<{\n children?: React.ReactNode;\n scope: any;\n }> = (props) => {\n const state = useInitCollection();\n return <CollectionProviderImpl {...props} state={state} />;\n };\n CollectionInit.displayName = PROVIDER_NAME + 'Init';\n\n const CollectionProviderImpl: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state: CollectionState;\n }> = (props) => {\n const { scope, children, state } = props;\n const ref = React.useRef<CollectionElement>(null);\n const [collectionElement, setCollectionElement] = React.useState<CollectionElement | null>(\n null\n );\n const composeRefs = useComposedRefs(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n\n React.useEffect(() => {\n if (!collectionElement) return;\n\n const observer = getChildListObserver(() => {\n // setItemMap((map) => {\n // const copy = new OrderedDict(map).toSorted(([, a], [, b]) =>\n // !a.element || !b.element ? 0 : isElementPreceding(a.element, b.element) ? -1 : 1\n // );\n // // check if the order has changed\n // let index = -1;\n // for (const entry of copy) {\n // index++;\n // const key = map.keyAt(index)!;\n // const [copyKey] = entry;\n // if (key !== copyKey) {\n // // order has changed!\n // return copy;\n // }\n // }\n // return map;\n // });\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n\n return (\n <CollectionContextProvider\n scope={scope}\n itemMap={itemMap}\n setItemMap={setItemMap}\n collectionRef={composeRefs}\n collectionRefObject={ref}\n collectionElement={collectionElement}\n >\n {children}\n </CollectionContextProvider>\n );\n };\n\n CollectionProviderImpl.displayName = PROVIDER_NAME + 'Impl';\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const [element, setElement] = React.useState<ItemElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n const { setItemMap } = context;\n\n const itemDataRef = React.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n\n React.useEffect(() => {\n const itemData = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n\n if (!map.has(element)) {\n map.set(element, { ...(itemData as unknown as ItemData), element });\n return map.toSorted(sortByDocumentPosition);\n }\n\n return map\n .set(element, { ...(itemData as unknown as ItemData), element })\n .toSorted(sortByDocumentPosition);\n });\n\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs as any}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useInitCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useInitCollection() {\n return React.useState<ItemMap<ItemElement, ItemData>>(new OrderedDict());\n }\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const { itemMap } = useCollectionContext(name + 'CollectionConsumer', scope);\n\n return itemMap;\n }\n\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection,\n };\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n\nfunction shallowEqual(a: any, b: any) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction isElementPreceding(a: Element, b: Element) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n\nfunction sortByDocumentPosition<E extends HTMLElement, T extends BaseItemData>(\n a: EntryOf<ItemMap<E, T>>,\n b: EntryOf<ItemMap<E, T>>\n) {\n return !a[1].element || !b[1].element\n ? 0\n : isElementPreceding(a[1].element, b[1].element)\n ? -1\n : 1;\n}\n\nfunction getChildListObserver(callback: () => void) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n callback();\n return;\n }\n }\n });\n\n return observer;\n}\n","// Not a real member because it shouldn't be accessible, but the super class\n// calls `set` which needs to read the instanciation state, so it can't be a\n// private member.\nconst __instanciated = new WeakMap<OrderedDict<any, any>, boolean>();\nexport class OrderedDict<K, V> extends Map<K, V> {\n #keys: K[];\n\n constructor(iterable?: Iterable<readonly [K, V]> | null | undefined);\n constructor(entries?: readonly (readonly [K, V])[] | null) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n\n set(key: K, value: V) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n\n insert(index: number, key: K, value: V) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n\n if (safeIndex === this.size || (has && safeIndex === this.size - 1) || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n\n const size = this.size + (has ? 0 : 1);\n\n // If you insert at, say, -2, without this bit you'd replace the\n // second-to-last item and push the rest up one, which means the new item is\n // 3rd to last. This isn't very intuitive; inserting at -2 is more like\n // saying \"make this item the second to last\".\n if (relativeIndex < 0) {\n actualIndex++;\n }\n\n const keys = [...this.#keys];\n let nextValue: V | undefined;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i]!;\n if (keys[i] === key) {\n nextKey = keys[i + 1]!;\n }\n if (has) {\n // delete first to ensure that the item is moved to the end\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1]!;\n const currentValue = nextValue!;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n\n with(index: number, key: K, value: V) {\n const copy = new OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n\n before(key: K) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n\n after(key: K) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n\n first() {\n return this.entryAt(0);\n }\n\n last() {\n return this.entryAt(-1);\n }\n\n clear() {\n this.#keys = [];\n return super.clear();\n }\n\n delete(key: K) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n\n deleteAt(index: number) {\n const key = this.keyAt(index);\n if (key !== undefined) {\n return this.delete(key);\n }\n return false;\n }\n\n at(index: number) {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return this.get(key);\n }\n }\n\n entryAt(index: number): [K, V] | undefined {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return [key, this.get(key)!];\n }\n }\n\n indexOf(key: K) {\n return this.#keys.indexOf(key);\n }\n\n keyAt(index: number) {\n return at(this.#keys, index);\n }\n\n from(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n\n keyFrom(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n\n find(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return undefined;\n }\n\n findIndex(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n filter<KK extends K, VV extends V>(\n predicate: (entry: [K, V], index: number, dict: OrderedDict<K, V>) => entry is [KK, VV],\n thisArg?: any\n ): OrderedDict<KK, VV>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ): OrderedDict<K, V>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n const entries: Array<[K, V]> = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new OrderedDict(entries);\n }\n\n map<U>(\n callbackfn: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => U,\n thisArg?: any\n ): OrderedDict<K, U> {\n const entries: [K, U][] = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new OrderedDict(entries);\n }\n\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduce<U>(\n callbackfn: (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduce<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0)!;\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduceRight<U>(\n callbackfn: (\n previousValue: [K, V],\n currentValue: U,\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduceRight<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1)!;\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index)!;\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n\n toSorted(compareFn?: (a: [K, V], b: [K, V]) => number): OrderedDict<K, V> {\n const entries = [...this.entries()].sort(compareFn);\n return new OrderedDict(entries);\n }\n\n toReversed(): OrderedDict<K, V> {\n const reversed = new OrderedDict<K, V>();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n reversed.set(key, element);\n }\n return reversed;\n }\n\n toSpliced(start: number, deleteCount?: number): OrderedDict<K, V>;\n toSpliced(start: number, deleteCount: number, ...items: [K, V][]): OrderedDict<K, V>;\n\n toSpliced(...args: [start: number, deleteCount: number, ...items: [K, V][]]) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new OrderedDict(entries);\n }\n\n slice(start?: number, end?: number) {\n const result = new OrderedDict<K, V>();\n let stop = this.size - 1;\n\n if (start === undefined) {\n return result;\n }\n\n if (start < 0) {\n start = start + this.size;\n }\n\n if (end !== undefined && end > 0) {\n stop = end - 1;\n }\n\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n result.set(key, element);\n }\n return result;\n }\n\n every(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n\n some(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n}\n\nexport type KeyOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<infer K, any> ? K : never;\nexport type ValueOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<any, infer V> ? V : never;\nexport type EntryOf<D extends OrderedDict<any, any>> = [KeyOf<D>, ValueOf<D>];\nexport type KeyFrom<E extends EntryOf<any>> = E[0];\nexport type ValueFrom<E extends EntryOf<any>> = E[1];\n\nfunction at<T>(array: ArrayLike<T>, index: number): T | undefined {\n if ('at' in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? undefined : array[actualIndex];\n}\n\nfunction toSafeIndex(array: ArrayLike<any>, index: number) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n\nfunction toSafeInteger(number: number) {\n // eslint-disable-next-line no-self-compare\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '6', x2: '6', y1: '3', y2: '15', key: '17qcm7' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n ['path', { d: 'M18 9a9 9 0 0 1-9 9', key: 'n2h4wq' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNiIgeDI9IjYiIHkxPSIzIiB5Mj0iMTUiIC8+CiAgPGNpcmNsZSBjeD0iMTgiIGN5PSI2IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjYiIGN5PSIxOCIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTggOWE5IDkgMCAwIDEtOSA5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client';\n\nimport * as React from 'react';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { cn } from '@/lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n 'bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1',\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"names":["React","createContextScope","useComposedRefs","createSlot","jsx","createCollection","itemData"],"mappings":"sCAgBA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAS,CAAT,AAAS,CAAT,AAAS,CAAT,AAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAbI,CAaM,AAbL,CAaK,AAbJ,CAaI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAbJ,CAac,AAbJ,AAAV,CAac,AAbJ,AAAE,CAAA,CAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,EAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAA,CAAA,AAAG,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA,6HCH/F,IAAA,EAAkB,CAAX,CAAW,CAAA,CAAA,OAClB,CADkB,CACiB,EAAA,CAAA,AAA1B,CAA0B,MACnC,EAAgC,EAAA,CAAvB,AAAuB,CAAA,MAChC,EAAsC,EAAA,CAA7B,AAA6B,CAAA,CAFH,MAyC7B,EAAA,CAxC0B,CAwC1B,CAAA,CAAA,IAvCgC,GAatC,SAAS,EAAiE,CAAA,EAAc,AAKtF,IAAM,EAAgB,EAAO,qBACvB,CAAC,EAAyB,EAAqB,CAAA,CAAA,EAAI,EAAA,aAAJ,KAAI,EAAmB,GAUtE,CAAC,EAAwB,EAAoB,CAAI,EACrD,EACA,AAZuF,CAYrF,YAF+C,EAEhC,CAAE,QAAS,IAAK,EAAG,QAAS,CAAA,GAAI,GAAM,CAAF,EAGjD,EAA2E,AAAC,EAHnC,EAI7C,GAAM,GADoF,IAClF,CAAA,UAAO,CAAA,CAAS,CAAI,EACtB,EAAM,EAAA,OAAA,CAAM,MAAA,CAA0B,IAAI,EAC1C,EAAU,EAAA,OAAA,CAAM,MAAA,CAAgC,IAAI,IAAI,CAAC,AAAE,IAAX,GAAW,CACjE,MACE,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,EAAD,KAAwB,UAAc,EAAkB,cAAe,WACpE,CAAA,CACH,CAEJ,CAEA,GAAmB,WAAA,CAAc,EAMjC,IAAM,EAAuB,EAAO,iBAE9B,EAAA,CAAA,EAAqB,EAAA,UAAA,EAAW,GAChC,EAAiB,EAAA,OAAA,CAAM,KAD6B,KAC7B,CAC3B,CAAC,EAAO,KACN,GAAM,OAAE,CAAA,CADe,SACR,CAAA,CAAS,CAAI,EACtB,EAAU,EAAqB,EAAsB,GACrD,EAD0D,AAC1D,CAAA,EAAe,EAAA,eAAA,EAAgB,EAAc,EAAQ,aAAa,EACxE,MAAO,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAmB,CAApB,GAAyB,WAAe,CAAA,CAAS,CAC1D,GAGF,EAAe,WAAA,CAAc,EAM7B,IAAM,EAAiB,EAAO,qBACxB,EAAiB,6BAOjB,EAAA,CAAA,EAAyB,EAAA,UAAA,EAAW,GACpC,EAAqB,EAAA,OAAA,AAD6B,CACvB,UAAA,CAC/B,CAAC,EAAO,KACN,GAAM,OAAE,CAAA,CADe,SACR,CAAA,CAAU,GAAG,EAAS,CAAI,EACnC,EAAM,EADyB,AACzB,OAAA,CAAM,MAAA,CAAoB,IAAI,EACpC,EAAA,CAAA,EAAe,EAAA,eAAA,EAAgB,EAAc,GAAG,AAChD,EAAU,EAAqB,EAAgB,GAOrD,EAP0D,KAE1D,AAME,EANF,OAAA,CAAM,GAMJ,MANI,CAAU,KACd,CADoB,CACZ,OAAA,CAAQ,GAAA,CAAI,EAAK,KAAE,EAAK,GAAI,CAAA,AAAiC,CAAC,EAC/D,IAAM,KAAK,EAAQ,OAAA,CAAQ,MAAA,CAAO,GAAG,EAI5C,CAAA,EAAA,EAAA,GAAA,EAAC,EAAA,CAAwB,GAAG,CAAE,CAAC,EAAc,CAAG,EAAG,CAAA,CAAG,IAAK,GAAd,QAC1C,CAAA,CACH,CAEJ,UAGF,EAAmB,WAAA,CAAc,EAuB1B,CACL,CAAE,SAAU,EAAoB,KAAM,EAAgB,SAAU,CAAmB,EAlBrF,SAAS,AAAc,CAAA,EAAY,AACjC,IAAM,EAAU,EAAqB,EAAO,qBAAsB,GAalE,EAbuE,KAahE,AAXU,EAAA,OAAA,CAAM,WAAA,CAAY,KACjC,CADuC,GACjC,EAAiB,EAAQ,aAAA,CAAc,OAAA,CAC7C,GAAI,CAAC,EAAgB,MAAO,CAAC,CAAA,CAC7B,IADqB,AACf,EAAe,MAAM,IAAA,CAAK,EAAe,gBAAA,CAAiB,CAAA,CAAA,EAAI,EAAc,CAAA,CAAG,CAAC,EAKtF,OALkF,AAE7D,AAGd,AAJO,MAAM,IAAA,CAAK,EAAQ,OAAA,CAAQ,MAAA,CAAO,CAAC,EACtB,IAAA,CACzB,CAAC,EAAG,IAAM,EAAa,OAAA,CAAQ,EAAE,GAAA,CAAI,OAAQ,EAAI,EAAa,OAAA,CAAQ,EAAE,GAAA,CAAI,OAAQ,EAGxF,EAAG,CAAC,EAAQ,aAAA,CAAe,EAAQ,OAAO,CAAC,CAG7C,EAKE,EACF,AACF,CE9HA,IAAM,EAAiB,IAAI,QAAwC,AA8bnE,GA9buB,MA8bd,EAAM,CAAA,CAAqB,CAAA,EAA8B,AA9b3C,gBAycf,EAVN,GAAI,OAAQ,MAAM,SAAA,CAChB,CAD2B,MACpB,MAAM,SAAA,CAAU,EAAA,CAAG,IAAA,CAAK,EAAO,GAExC,EAF6C,EAEvC,GAIa,EAJa,EAIU,CAAvB,CAJoB,EAKjC,CADoC,CAC3B,CAD0C,AAJrC,AAAwB,CAKvB,MAAA,CAGd,GADa,CADd,EAAgB,EAAc,KAAK,AACJ,EAAI,EAAgB,EAAS,GAC7C,GAAK,GAAe,EAAS,CAAA,EAAK,GAPvD,OAAuB,CAAA,IAAhB,EAAqB,KAAA,EAAY,CAAA,CAAM,EAAW,AAC3D,CASA,QAV2D,CAUlD,EAAc,CAAA,EAAgB,AAErC,OAAO,GAAW,GAAqB,IAAX,EAAe,EAAI,KAAK,KAAA,CAAM,EAC5D,EA/cO,EA8c2D,IA9crD,UAA0B,IAAU,CAC/C,CAAA,AAGA,aAAY,CAAA,CAA+C,CACzD,KAAA,CAAM,GACN,IAAA,AADa,EACR,CAAA,CAAQ,CAAC,GAAG,KAAA,CAAM,KAAK,CAAC,CAAA,CAC7B,EAAe,GAAA,CAAI,IAAA,EAAM,EAC3B,CAEA,CAH+B,GAG3B,CAAA,CAAQ,CAAA,CAAU,CASpB,OARI,EAAe,GAAA,CAAI,IAAI,GAAG,CACxB,IAAA,CAAK,GAAA,CAAI,GAAG,AACd,GADiB,CACjB,CAAA,CAAA,CAAK,CAAM,IAAA,EAAK,CAAA,CAAM,OAAA,CAAQ,GAAI,AAAD,CAAK,AAAJ,EAElC,IAAA,CAAA,CAAA,AAAK,CAAA,CAAM,IAAA,CAAK,GAAG,CAGvB,KAAA,CAAM,IAAI,EAAK,GACR,EADa,EACb,AACT,CAEA,OAAO,CAAA,CAAe,CAAA,CAAQ,CAAA,CAAU,CACtC,IAsBI,EAtBE,EAAM,IAAA,CAAK,GAAA,CAAI,GAAG,AAClB,EAAS,IAAA,CAAA,CAAA,CAAK,CAAM,MAAA,CACpB,EAAgB,EAAc,GAChC,EAAc,AADuB,GACN,EAAI,EAAgB,EAAS,EAC1D,EAAY,EAAc,GAAK,GAAe,EAAS,CAAA,EAAK,EAElE,GAAI,IAAc,IAAA,CAAK,IAAA,EAAS,GAAO,IAAc,IAAA,CAAK,IAAA,CAAO,GAAoB,CAAA,GAAI,CAAlB,EAErE,OADA,IAAA,CAAK,GAAA,CAAI,EAAK,GACP,EADY,EACZ,CAGT,IAAM,EAAO,IAAA,CAAK,IAAA,GAAA,CAAQ,EAMtB,EAAgB,EANY,CAMT,AACrB,GAPkC,CAUpC,AAVoC,IAU9B,EAAO,CAAC,GAAG,IAAA,CAAA,CAAA,CAAK,AAAK,CAAA,CAEvB,GAAa,EACjB,IAAA,IAAS,EAAI,EAAa,EAAI,EAAM,IAAK,AACvC,GAAI,IAAgB,EAAG,CACrB,IAAI,EAAU,CAAA,CAAK,CAAC,CAAA,CAChB,CAAA,CAAK,CAAC,CAAA,GAAM,IACd,CADmB,CACT,CAAA,CAAK,EAAI,EAAC,EAElB,GAEF,EAFO,EAEP,CAAK,MAAA,CAAO,GAAG,AAEjB,EAAY,IAAA,CAAK,GAAA,CAAI,GACrB,IAD4B,AAC5B,CAAK,GAAA,CAAI,EAAK,EAChB,GADqB,EACd,CACD,AAAC,GAAc,CAAA,CAAK,EAAI,CAAC,CAAA,GAAM,IACjC,CADsC,EACzB,CAAA,EAEf,IAAM,EAAa,CAAA,CAAK,EAAa,EAAI,EAAI,CAAC,CAAA,CACxC,EAAe,EACrB,EAAY,IAAA,CAAK,GAAA,CAAI,GACrB,IAAA,CAAK,EAD0B,IAC1B,CAAO,GACZ,IAAA,CAAK,EADiB,CACjB,CAAI,EAAY,EACvB,CAEF,OAAO,EAH8B,EAG9B,AACT,CAEA,KAAK,CAAA,CAAe,CAAA,CAAQ,CAAA,CAAU,CACpC,IAAM,EAAO,IAAI,EAAY,IAAI,EAEjC,OADA,EAAK,MAAA,CAAO,EAAO,EAAK,GACjB,CACT,CAEA,AAJ+B,OAIxB,CAAA,CAAQ,CACb,IAAM,EAAQ,IAAA,CAAA,CAAA,CAAK,CAAM,OAAA,CAAQ,GAAO,AAAJ,EACpC,KAAI,EAAQ,GAAG,AAGf,OAAO,IAAA,CAAK,OAAA,CAAQ,EACtB,CAKA,EAN2B,QAMjB,CAAA,CAAQ,CAAA,CAAW,CAAA,CAAU,CACrC,IAAM,EAAQ,IAAA,EAAK,CAAA,CAAM,OAAA,CAAQ,GAAG,OACpC,AAAc,CAAA,GAAI,CAAd,EACK,IAAA,CAEF,IAAA,CAAK,MAAA,CAAO,EAAO,EAAQ,EACpC,CAEA,EAHyC,IAGnC,CAAA,CAAQ,CACZ,IAAI,EAAQ,IAAA,CAAA,CAAA,CAAK,CAAM,OAAA,CAAQ,GAAG,AAElC,GAAI,AAAU,CAAA,GAAI,EADlB,EAAkB,CAAA,IAAV,GAAgB,IAAU,IAAA,CAAK,IAAA,CAAO,EAAI,CAAA,EAAK,GAAQ,EAI/D,OAAO,IAAA,CAAK,OAAA,CAAQ,EACtB,CAKA,EAN2B,OAMlB,CAAA,CAAQ,CAAA,CAAW,CAAA,CAAU,CACpC,IAAM,EAAQ,IAAA,CAAA,CAAA,CAAK,CAAM,OAAA,CAAQ,GAAG,OACpC,AAAI,AAAU,CAAA,GAAI,GACT,IAAA,CAEF,IAAA,CAAK,MAAA,CAAO,EAAQ,EAAG,EAAQ,EACxC,CAEA,EAH6C,KAGrC,CACN,OAAO,IAAA,CAAK,OAAA,CAAQ,CAAC,CACvB,CAEA,MAAO,CACL,OAAO,IAAA,CAAK,OAAA,CAAQ,CAAA,CAAE,CACxB,CAEA,OAAQ,CAEN,OADA,IAAA,CAAA,CAAA,CAAK,CAAQ,CAAC,CAAA,CACP,KAAA,CAAM,MAAM,CACrB,CAEA,OAAO,CAAA,CAAQ,CACb,IAAM,EAAU,KAAA,CAAM,OAAO,GAAG,AAIhC,OAHI,GACF,IAAA,EADW,AACN,CAAA,CAAM,MAAA,CAAO,IAAA,CAAA,CAAA,CAAK,CAAM,OAAA,CAAQ,GAAG,AAAG,CAAC,EAEvC,CACT,CAEA,SAAS,CAAA,CAAe,CACtB,IAAM,EAAM,IAAA,CAAK,KAAA,CAAM,KAAK,KAC5B,AAAY,KAAA,GAAW,CAAnB,GACK,IAAA,CAAK,MAAA,CAAO,EAGvB,CAEA,AAL0B,GAKvB,CAAA,CAAe,CAChB,IAAM,EAAM,EAAG,IAAA,CAAA,CAAA,CAAK,CAAO,GAC3B,EADgC,CACpB,KAAA,GAAW,CAAnB,EACF,OAAO,IAAA,CAAK,GAAA,CAAI,EAEpB,CAFuB,AAIvB,QAAQ,CAAA,CAAmC,CACzC,IAAM,EAAM,EAAG,IAAA,CAAA,CAAA,CAAK,CAAO,GAC3B,EADgC,CACpB,KAAA,GAAW,CAAnB,EACF,MAAO,CAAC,EAAK,IAAA,CAAK,GAAA,CAAI,GAAG,AAAE,AAE/B,CAF+B,AAI/B,QAAQ,CAAA,CAAQ,CACd,OAAO,IAAA,EAAK,CAAA,CAAM,OAAA,CAAQ,EAC5B,CAD+B,AAG/B,MAAM,CAAA,CAAe,CACnB,OAAO,EAAG,IAAA,CAAA,CAAA,CAAK,CAAO,EACxB,CAEA,EAH6B,GAGxB,CAAA,CAAQ,CAAA,CAAgB,CAC3B,IAAM,EAAQ,IAAA,CAAK,OAAA,CAAQ,GAC3B,AAD8B,GAChB,CAAA,GAAI,CAAd,EACF,OAAO,AAET,IAAI,CAFK,CAEE,EAAQ,EAGnB,OAFI,EAAO,EAAG,EAAA,EAAO,GACjB,GAAQ,IAAA,CAAK,IAAA,CAAM,EAAA,EAAO,IAAA,CAAK,IAAA,EAAO,EACnC,IAAA,CAAK,EAAA,CAAG,EACjB,CAEA,CAHqB,OAGb,CAAA,CAAQ,CAAA,CAAgB,CAC9B,IAAM,EAAQ,IAAA,CAAK,OAAA,CAAQ,GAAG,AAC9B,GAAc,CAAA,GAAI,CAAd,EACF,OAEF,AAFS,IAEL,CAFK,CAEE,EAAQ,EAGnB,OAFI,EAAO,EAAG,EAAA,GAAO,EACjB,GAAQ,IAAA,CAAK,IAAA,CAAM,EAAA,EAAO,IAAA,CAAK,IAAA,EAAO,EACnC,IAAA,CAAK,KAAA,CAAM,EACpB,CAEA,CAHwB,IAItB,CAAA,CACA,CAAA,CACA,CACA,IAAI,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,CACxB,GAAI,QAAQ,KAAA,CAAM,EAAW,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,EACxD,CAD2D,MACpD,EAET,GACF,CAEF,CAEA,UACE,CAAA,CACA,CAAA,CACA,CACA,IAAI,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,CACxB,GAAI,QAAQ,KAAA,CAAM,EAAW,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,EACxD,CAD2D,MACpD,EAET,GACF,CACA,OAAO,CAAA,CACT,CAYA,OACE,CAAA,CACA,CAAA,CACA,CACA,IAAM,EAAyB,CAAC,CAAA,CAC5B,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,AACpB,QAAQ,KAAA,CAAM,EAAW,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,GAAG,AAC3D,EAAQ,IAAA,CAAK,GAEf,EAFoB,EAItB,OAAO,IAAI,EAAY,EACzB,CAEA,IAHgC,AAI9B,CAAA,CACA,CAAA,CACmB,CACnB,IAAM,EAAoB,CAAC,CAAA,CACvB,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,AACxB,EAAQ,IAAA,CAAK,CAAC,CAAA,CAAM,CAAC,CAAA,CAAG,QAAQ,KAAA,CAAM,EAAY,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,CAAC,CAAC,EACjF,IAEF,OAAO,IAAI,EAAY,EACzB,CA6BA,IA9BgC,GA8BhC,GACK,CAAA,CASH,CACA,GAAM,CAAC,EAAY,EAAY,CAAI,EAC/B,EAAQ,EACR,EAAc,CAFa,EAEG,IAAA,CAAK,EAAA,CAAG,CAAC,EAC3C,IAAA,IAAW,KAAS,IAAA,CAEhB,AAFsB,EACV,IAAV,GAA+B,GAAG,CAAnB,EAAK,MAAA,CACR,EAEA,QAAQ,KAAA,CAAM,EAAY,IAAA,CAAM,CAAC,EAAa,EAAO,EAAO,IAAI,CAAC,EAEjF,IAEF,OAAO,CACT,CA6BA,YAAA,GACK,CAAA,CASH,CACA,GAAM,CAAC,EAAY,EAAY,CAAI,EAC/B,EAAc,GAAgB,EADH,EACG,CAAK,EAAA,CAAG,CAAA,CAAE,EAC5C,IAAA,IAAS,EAAQ,IAAA,CAAK,IAAA,CAAO,EAAG,GAAS,EAAG,IAAS,CACnD,IAAM,EAAQ,IAAA,CAAK,EAAA,CAAG,GAEpB,EAFyB,AACvB,IAAU,IAAA,CAAK,IAAA,CAAO,GAAqB,GAAG,CAAnB,EAAK,MAAA,CACpB,EAEA,QAAQ,KAAA,CAAM,EAAY,IAAA,CAAM,CAAC,EAAa,EAAO,EAAO,IAAI,CAAC,CAEnF,CACA,OAAO,CACT,CAEA,SAAS,CAAA,CAAiE,CAExE,OAAO,IAAI,EADK,CAAC,GAAG,IAAA,CAAK,EACF,KADE,CAAQ,CACH,AADI,CAAA,CAAE,IAAA,CAAK,GAE3C,CAEA,KAJoD,OAIpB,CAC9B,IAAM,EAAW,IAAI,EACrB,IAAA,IAAS,EAAQ,CADsB,GACtB,CAAK,IAAA,CAAO,EAAG,GAAS,EAAG,IAAS,CACnD,IAAM,EAAM,IAAA,CAAK,KAAA,CAAM,GACjB,EADsB,AACZ,IAAA,CAAK,GAAA,CAAI,GAAG,AAC5B,EAAS,GAAA,CAAI,EAAK,EACpB,CACA,IAF2B,GAEpB,CACT,CAKA,UAAA,GAAa,CAAA,CAAgE,CAC3E,IAAM,EAAU,CAAC,GAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,CAElC,OADA,EAAQ,MAAA,CAAO,GAAG,GACX,CADe,GACX,EAAY,EACzB,CAEA,IAHgC,EAG1B,CAAA,CAAgB,CAAA,CAAc,CAClC,IAAM,EAAS,IAAI,EACf,EAAO,IAAA,CAAK,IADqB,AACrB,CAAO,EAEvB,GAAc,KAAA,GAAW,CAArB,EACF,OAAO,EAGL,EAAQ,GAAG,CACb,GAAgB,IAAA,CAAR,AAAa,IAAA,EAGX,KAAA,IAAR,GAAqB,EAAM,GAAG,CAChC,EAAO,GAAM,EAGf,IAAA,IAAS,EAAQ,EAAO,GAAS,EAAM,IAAS,CAC9C,IAAM,EAAM,IAAA,CAAK,KAAA,CAAM,GACjB,EADsB,AACZ,IAAA,CAAK,GAAA,CAAI,GAAG,AAC5B,EAAO,GAAA,CAAI,EAAK,EAClB,CACA,IAFyB,GAElB,CACT,CAEA,MACE,CAAA,CACA,CAAA,CACA,CACA,IAAI,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,CACxB,GAAI,CAAC,QAAQ,KAAA,CAAM,EAAW,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,EACzD,CAD4D,KACrD,GAET,GACF,CACA,OAAO,CACT,CAEA,KACE,CAAA,CACA,CAAA,CACA,CACA,IAAI,EAAQ,EACZ,IAAA,IAAW,KAAS,IAAA,CAAM,CACxB,GAAI,QAAQ,KAAA,CAAM,EAAW,EAAS,CAAC,EAAO,EAAO,IAAI,CAAC,EACxD,CAD2D,KACpD,EAET,IACF,CACA,OAAO,CACT,CACF,2DClaA,CAAA,CAAA,CAAA,CAAA,AAAM,CAAN,CAAM,CAAA,EAAY,CAAA,CAAA,CAAA,CAAZ,AAAY,CAAA,AAAZ,CAAY,AAAZ,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAlBC,CAClC,AAiB+C,CAjB9C,AAiB8C,CAjB9C,AAiB8C,CAjB9C,AAiB8C,CAjB9C,AAiB8C,CAjB9C,AAiB8C,CAjB9C,AAiB8C,CAAA,AAjB9C,CAAQ,AAAR,AAiB8C,CAjBtC,AAAE,AAiBoC,CAjBpC,AAiB8C,CAjB9C,AAiB8C,CAjB1C,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,AAAK,EAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAK,AAAL,CAAK,CAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAC/D,CAAC,QAAA,CAAU,AAAV,CAAU,AAAE,EAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAI,AAAJ,GAAI,CAAA,AAAK,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,AAAK,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACvD,CAAC,QAAA,CAAA,AAAU,CAAA,AAAE,EAAA,CAAA,AAAI,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,AAAI,IAAA,CAAA,AAAM,CAAA,CAAG,CAAA,CAAA,CAAA,CAAA,AAAK,GAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACvD,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAQ,CAAA,AAAE,EAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,AAAuB,CAAA,CAAA,CAAA,CAAA,AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CACtD,gFGNA,EAAA,EAAA,CAAA,CAAA,ODEA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MDAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,MAEA,EAAA,EAAA,CAAA,CAAA,MACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OAEI,EAAc,gCACd,EAAgB,CAAE,SAAS,EAAO,YAAY,CAAK,EACnD,EAAa,mBACb,CAAC,EAAY,EAAe,EAAsB,CAAG,CAAA,EAAA,EAAA,gBAAA,AAAgB,EAAC,GACtE,CAAC,EAA+B,EAA4B,CAAG,CAAA,EAAA,EAAA,kBAAA,AAAkB,EACnF,EACA,CAAC,EAAsB,EAErB,CAAC,EAAqB,EAAsB,CAAG,EAA8B,GAC7E,EAAmB,EAAA,UAAgB,CACrC,CAAC,EAAO,IACiB,CAAA,EAAA,EAAA,GAAA,AAAG,EAAC,EAAW,QAAQ,CAAE,CAAE,MAAO,EAAM,uBAAuB,CAAE,SAA0B,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EAAC,EAAW,EAAlB,EAAsB,CAAE,CAAE,MAAO,EAAM,uBAAuB,CAAE,SAA0B,CAAA,AAAhB,EAAgB,EAAA,GAAA,AAAG,EAAC,EAAsB,CAAE,CAA/B,EAAkC,CAAK,CAAE,IAAK,CAAa,EAAG,EAAG,IAG3Q,EAAiB,WAAW,CAAG,EAC/B,IAAI,EAAuB,EAAA,UAAgB,CAAC,CAAC,EAAO,KAClD,GAAM,yBACJ,CAAuB,aACvB,CAAW,MACX,GAAO,CAAK,KACZ,CAAG,CACH,iBAAkB,CAAoB,yBACtC,CAAuB,0BACvB,CAAwB,cACxB,CAAY,2BACZ,GAA4B,CAAK,CACjC,GAAG,EACJ,CAAG,EACE,EAAM,EAAA,MAAY,CAAC,MACnB,EAAe,CAAA,EAAA,EAAA,eAAA,AAAe,EAAC,EAAc,GAC7C,EAAY,CAAA,EAAA,EAAA,YAAY,AAAZ,EAAa,GACzB,CAAC,EAAkB,EAAoB,CAAG,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,CACnE,KAAM,EACN,YAAa,GAA2B,KACxC,SAAU,EACV,OAAQ,CACV,GACM,CAAC,EAAkB,EAAoB,CAAG,EAAA,QAAc,EAAC,GACzD,EAAmB,CAAA,EAAA,EAAA,cAAA,AAAc,EAAC,GAClC,EAAW,EAAc,GACzB,EAAkB,EAAA,MAAY,EAAC,GAC/B,CAAC,EAAqB,EAAuB,CAAG,EAAA,QAAc,CAAC,GAQrE,OAPA,AAOO,EAPP,SAAe,CAAC,CAOI,IANlB,IAAM,EAAO,EAAI,OAAO,CACxB,GAAI,EAEF,IAFQ,GACR,EAAK,gBAAgB,CAAC,EAAa,GAC5B,IAAM,EAAK,mBAAmB,CAAC,EAAa,EAEvD,EAAG,CAAC,EAAiB,EACE,CAAA,EAAA,EAAA,GAAA,AAAG,EACxB,EACA,CACE,MAAO,cACP,EACA,IAAK,EACL,OACA,mBACA,YAAa,EAAA,WAAiB,CAC5B,AAAC,GAAc,EAAoB,GACnC,CAAC,EAAoB,EAEvB,eAAgB,EAAA,WAAiB,CAAC,IAAM,GAAoB,GAAO,EAAE,EACrE,mBAAoB,EAAA,WAAiB,CACnC,IAAM,EAAuB,AAAC,GAAc,EAAY,GACxD,EAAE,EAEJ,sBAAuB,EAAA,WAAiB,CACtC,IAAM,EAAuB,AAAC,GAAc,EAAY,GACxD,EAAE,EAEJ,SAA0B,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EAC3B,EAAA,EADqB,OACZ,CAAC,GAAG,CACb,CACE,SAAU,GAA4C,IAAxB,EAA4B,CAAC,EAAI,EAC/D,mBAAoB,EACpB,GAAG,CAAU,CACb,IAAK,EACL,MAAO,CAAE,QAAS,OAAQ,GAAG,EAAM,KAAK,AAAC,EACzC,YAAa,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,WAAW,CAAE,KACnD,EAAgB,OAAO,EAAG,CAC5B,GACA,QAAS,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,OAAO,CAAE,AAAC,IAC5C,IAAM,EAAkB,CAAC,EAAgB,OAAO,CAChD,GAAI,EAAM,MAAM,GAAK,EAAM,aAAa,EAAI,GAAmB,CAAC,EAAkB,CAChF,IAAM,EAAkB,IAAI,YAAY,EAAa,GAErD,GADA,EAAM,aAAa,CAAC,aAAa,CAAC,GAC9B,CAAC,EAAgB,gBAAgB,CAAE,CACrC,IAAM,EAAQ,IAAW,MAAM,CAAC,AAAC,GAAS,EAAK,SAAS,EAOxD,EAJuB,AAGA,CALJ,EAAM,IAAI,CAAC,AAAC,CAMpB,EAN6B,EAAK,MAAM,EAC/B,EAAM,IAAI,CAAE,AAAD,GAAU,EAAK,EAAE,GAAK,MACD,EAAM,CAAC,MAAM,CAC/D,SAEoC,GAAG,CAAC,AAAC,GAAS,EAAK,GAAG,CAAC,OAAO,EACzC,EAC7B,CACF,CACA,EAAgB,OAAO,CAAG,EAC5B,GACA,OAAQ,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,MAAM,CAAE,IAAM,GAAoB,GACvE,EAEJ,EAEJ,GACI,EAAY,uBACZ,EAAuB,EAAA,UAAgB,CACzC,CAAC,EAAO,KACN,GAAM,yBACJ,CAAuB,WACvB,GAAY,CAAI,QAChB,EAAS,EAAK,WACd,CAAS,UACT,CAAQ,CACR,GAAG,EACJ,CAAG,EACE,EAAS,CAAA,EAAA,EAAA,KAAA,AAAK,IACd,EAAK,GAAa,EAClB,EAAU,EAAsB,EAAW,GAC3C,EAAmB,EAAQ,gBAAgB,GAAK,EAChD,EAAW,EAAc,GACzB,CAAE,oBAAkB,uBAAE,CAAqB,CAAE,kBAAgB,CAAE,CAAG,EAOxE,OANA,AAMO,EANP,SAAe,CAAC,CAMI,IALlB,GAAI,EAEF,OADA,EADa,EAEN,IAAM,GAEjB,EAAG,CAAC,EAAW,EAAoB,EAAsB,EAClC,CAAA,EAAA,EAAA,GAAA,AAAG,EACxB,EAAW,QAAQ,CACnB,CACE,MAAO,EACP,eACA,SACA,EACA,SAA0B,CAAA,AAAhB,EAAgB,EAAA,GAAA,AAAG,EAC3B,EAAA,EADqB,OACZ,CAAC,IAAI,CACd,CACE,SAAU,EAAmB,EAAI,CAAC,EAClC,mBAAoB,EAAQ,WAAW,CACvC,GAAG,CAAS,CACZ,IAAK,EACL,YAAa,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,WAAW,CAAE,AAAC,IAC/C,EACA,EAAQ,WAAW,CAAC,GADT,EAAM,cAAc,EAEtC,GACA,QAAS,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,OAAO,CAAE,IAAM,EAAQ,WAAW,CAAC,IACvE,UAAW,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,SAAS,CAAE,AAAC,IAChD,GAAkB,QAAd,EAAM,GAAG,EAAc,EAAM,QAAQ,CAAE,YACzC,EAAQ,cAAc,GAGxB,GAAI,EAAM,MAAM,GAAK,EAAM,aAAa,CAAE,OAC1C,IAAM,EAAc,AAqClC,SAAS,AAAe,CAAK,CAAE,CAAW,CAAE,CAAG,MAJjB,EAK5B,CAL+B,EAAE,CAK3B,EAL8B,GAKH,CAArB,CAA2B,GAAG,CAJ1C,AAAI,AAAQ,OAAO,CAIyB,EAJlB,EACX,cAAR,EAAsB,aAAuB,eAAR,EAAuB,YAAc,GAIjF,KAAoB,aAAhB,GAA8B,CAAC,YAAa,aAAa,CAAC,QAAQ,CAAC,EAAA,GAAM,EACzD,KADgE,KAAK,KACrF,GAAgC,CAAC,UAAW,YAAY,CAAC,QAAQ,CAAC,EAAA,EACtE,CAD4E,MACrE,CAAuB,AADqD,CACpD,EACjC,AADqC,EAzCY,AAwCyC,EAxClC,EAAQ,WAAW,CAAE,EAAQ,GAAG,EAC1E,GAAoB,KAAK,IAArB,EAAwB,CAC1B,GAAI,EAAM,OAAO,EAAI,EAAM,OAAO,EAAI,EAAM,MAAM,EAAI,EAAM,QAAQ,CAAE,OACtE,EAAM,cAAc,GAEpB,IAAI,EADU,AACO,IADI,MAAM,CAAC,AAAC,GAAS,EAAK,SAAS,EAC7B,GAAG,CAAC,AAAC,GAAS,EAAK,GAAG,CAAC,OAAO,EACzD,GAAoB,SAAhB,EAAwB,EAAe,OAAO,QAC7C,GAAoB,SAAhB,GAA0B,AAAgB,WAAQ,KA4CxD,EAAO,EA3CY,CA2Cd,OAAY,CA3Cd,GAAwB,EAAe,OAAO,GAClD,IAAM,EAAe,EAAe,OAAO,CAAC,EAAM,aAAa,EAC/D,EAAiB,EAAQ,IAAI,GAAG,CAAU,IAAgB,EAAe,EA0ClF,EAAM,GAAG,CAAC,CAAC,EAAG,IAAU,CAAK,CAAC,CAAC,EAAa,CAAA,CAAK,CAAI,EAAM,MAAM,CAAC,GA1CqB,EAAe,KAAK,CAAC,EAAe,EACpH,CACA,WAAW,IAAM,EAAW,GAC9B,CACF,GACA,SAA8B,YAApB,OAAO,EAA0B,EAAS,kBAAE,EAAkB,WAAgC,MAApB,CAAyB,GAAK,CACpH,EAEJ,EAEJ,GAEF,EAAqB,WAAW,CAAG,EACnC,IAAI,EAA0B,CAC5B,UAAW,OACX,QAAS,OACT,WAAY,OACZ,UAAW,OACX,OAAQ,QACR,KAAM,QACN,SAAU,OACV,IAAK,MACP,EAWA,SAAS,EAAW,CAAU,CAAE,GAAgB,CAAK,EACnD,IAAM,EAA6B,SAAS,aAAa,CACzD,IAAK,IAAM,KAAa,EACtB,GAAI,IAAc,EADgB,EAElC,EAAU,KAAK,CAAC,eAAE,CAAc,GAC5B,SAAS,aAAa,GAAK,GAFe,MAIlD,iBAKW,EAPoD,WAMpD,8CCtNX,IAAA,EAAA,EAAA,CAAA,CAAA,OAOI,EAAY,OACZ,CAAC,EAAmB,EAAgB,CAAG,CAAA,EAAA,EAAA,kBAAA,AAAkB,EAAC,EAAW,CACvE,EACD,EACG,EAA2B,IAC3B,CAAC,EAAc,EAAe,CAAG,EAAkB,GACnD,EAAO,EAAA,UAAgB,CACzB,CAAC,EAAO,KACN,GAAM,aACJ,CAAW,CACX,MAAO,CAAS,eAChB,CAAa,CACb,cAAY,aACZ,EAAc,YAAY,KAC1B,CAAG,CACH,iBAAiB,WAAW,CAC5B,GAAG,EACJ,CAAG,EACE,EAAY,CAAA,EAAA,EAAA,YAAA,AAAY,EAAC,GACzB,CAAC,EAAO,EAAS,CAAG,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,CAC7C,KAAM,EACN,SAAU,EACV,YAAa,GAAgB,GAC7B,OAAQ,CACV,GACA,MAAuB,CAAA,AAAhB,EAAgB,EAAA,GAAA,AAAG,EACxB,EACA,CACE,CAHgB,KAGT,EACP,OAAQ,CAAA,EAAA,EAAA,KAAA,AAAK,UACb,EACA,cAAe,cACf,EACA,IAAK,iBACL,EACA,SAA0B,CAAA,AAAhB,EAAgB,EAAA,GAAA,AAAG,EAC3B,EAAA,EADqB,OACZ,CAAC,GAAG,CACb,CACE,IAAK,EACL,mBAAoB,EACpB,GAAG,CAAS,CACZ,IAAK,CACP,EAEJ,EAEJ,GAEF,EAAK,WAAW,CAAG,EACnB,IAAI,EAAgB,WAChB,EAAW,EAAA,UAAgB,CAC7B,CAAC,EAAO,KACN,GAAM,aAAE,CAAW,MAAE,GAAO,CAAI,CAAE,GAAG,EAAW,CAAG,EAC7C,EAAU,EAAe,EAAe,GACxC,EAAwB,EAAyB,GACvD,MAAuB,CAAA,AAAhB,EAAgB,EAAA,GAAA,AAAG,EACxB,EACA,CACE,CAHgB,QAGP,EACT,GAAG,CAAqB,CACxB,YAAa,EAAQ,WAAW,CAChC,IAAK,EAAQ,GAAG,CAChB,OACA,SAA0B,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EAC3B,EAAA,EADqB,OACZ,CAAC,GAAG,CACb,CACE,KAAM,UACN,mBAAoB,EAAQ,WAAW,CACvC,GAAG,CAAS,CACZ,IAAK,CACP,EAEJ,EAEJ,EAEF,GAAS,WAAW,CAAG,EACvB,IAAI,EAAe,cACf,EAAc,EAAA,UAAgB,CAChC,CAAC,EAAO,KACN,GAAM,aAAE,CAAW,OAAE,CAAK,CAAE,YAAW,CAAK,CAAE,GAAG,EAAc,CAAG,EAC5D,EAAU,EAAe,EAAc,GACvC,EAAwB,EAAyB,GACjD,EAAY,EAAc,EAAQ,MAAM,CAAE,GAC1C,EAAY,EAAc,EAAQ,MAAM,CAAE,GAC1C,EAAa,IAAU,EAAQ,KAAK,CAC1C,MAAuB,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EACxB,EACA,CACE,CAHgB,QAGP,EACT,GAAG,CAAqB,CACxB,UAAW,CAAC,EACZ,OAAQ,EACR,SAA0B,CAAhB,AAAgB,EAAA,EAAA,GAAA,AAAG,EAC3B,EAAA,EADqB,OACZ,CAAC,MAAM,CAChB,CACE,KAAM,SACN,KAAM,MACN,gBAAiB,EACjB,gBAAiB,EACjB,aAAc,EAAa,SAAW,WACtC,gBAAiB,EAAW,GAAK,KAAK,WACtC,EACA,GAAI,EACJ,GAAG,CAAY,CACf,IAAK,EACL,YAAa,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,WAAW,CAAE,AAAC,IAChD,AAAC,GAA6B,IAAjB,EAAM,MAAM,GAA4B,IAAlB,EAAM,CAAmB,MAAZ,CAGlD,EAAM,cAAc,GAFpB,EAAQ,aAAa,CAAC,EAI1B,GACA,UAAW,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,SAAS,CAAE,AAAC,IAC5C,CAAC,IAAK,QAAQ,CAAC,QAAQ,CAAC,EAAM,GAAG,GAAG,EAAQ,aAAa,CAAC,EAChE,GACA,QAAS,CAAA,EAAA,EAAA,oBAAA,AAAoB,EAAC,EAAM,OAAO,CAAE,KAC3C,IAAM,EAAmD,WAA3B,EAAQ,cAClC,AADgD,CAC/C,GAAe,IAAY,GAC9B,EAAQ,EADS,WACI,CAAC,EAE1B,EAHyD,AAI3D,EAEJ,EAEJ,GAEF,EAAY,WAAW,CAAG,EAC1B,IAAI,EAAe,cACf,EAAc,EAAA,UAAgB,CAChC,CAAC,EAAO,KACN,GAAM,CAAE,aAAW,OAAE,CAAK,YAAE,CAAU,UAAE,CAAQ,CAAE,GAAG,EAAc,CAAG,EAChE,EAAU,EAAe,EAAc,GACvC,EAAY,EAAc,EAAQ,MAAM,CAAE,GAC1C,EAAY,EAAc,EAAQ,MAAM,CAAE,GAC1C,EAAa,IAAU,EAAQ,KAAK,CACpC,EAA+B,EAAA,MAAY,CAAC,GAKlD,OAAO,AAJP,EAAA,SAAe,CAAC,CAII,IAHlB,IAAM,EAAM,sBAAsB,IAAM,EAA6B,OAAO,EAAG,GAC/E,MAAO,IAAM,qBAAqB,EACpC,EAAG,EAAE,EACkB,CAAA,EAAA,EAAA,GAAG,AAAH,EAAI,EAAA,QAAQ,CAAE,CAAE,QAAS,GAAc,EAAY,SAAU,CAAC,SAAE,CAAO,CAAE,GAAK,AAAgB,CAAA,EAAA,EAAA,GAAG,AAAH,EACnH,EAAA,CADgH,QACvG,CAAC,GAAG,CACb,CACE,aAAc,EAAa,SAAW,WACtC,mBAAoB,EAAQ,WAAW,CACvC,KAAM,WACN,kBAAmB,EACnB,OAAQ,CAAC,EACT,GAAI,EACJ,SAAU,EACV,GAAG,CAAY,CACf,IAAK,EACL,MAAO,CACL,GAAG,EAAM,KAAK,CACd,kBAAmB,EAA6B,OAAO,CAAG,KAAO,KAAK,CACxE,EACA,SAAU,GAAW,CACvB,EACA,EACJ,GAGF,SAAS,EAAc,CAAM,CAAE,CAAK,EAClC,MAAO,CAAA,EAAG,EAAO,SAAS,EAAE,EAAA,CAAO,AACrC,CACA,SAAS,EAAc,CAAM,CAAE,CAAK,EAClC,MAAO,CAAA,EAAG,EAAO,SAAS,EAAE,EAAA,CAAO,AACrC,CANA,EAAY,WAAW,CAAG,qBAUZ,aAFH,aADC,sFAEE,mDCrLd,EAAA,EAAA,CAAA,CAAA,OAEA,IAAM,EAAO,EAAc,IAAI,CAEzB,EAAW,EAAA,UAAgB,CAG/B,CAAC,WAAE,CAAS,CAAE,GAAG,EAAO,CAAE,IAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAc,IAAI,CAAA,CACjB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,4FACA,GAED,GAAG,CAAK,IAGb,EAAS,WAAW,CAAG,EAAc,IAAI,CAAC,WAAW,CAErD,IAAM,EAAc,EAAA,UAAgB,CAGlC,CAAC,WAAE,CAAS,CAAE,GAAG,EAAO,CAAE,IAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAc,OAAO,CAAA,CACpB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAE,AAAF,EACT,iYACA,GAED,GAAG,CAAK,IAGb,EAAY,WAAW,CAAG,EAAc,OAAO,CAAC,WAAW,CAE3D,IAAM,EAAc,EAAA,UAAgB,CAGlC,CAAC,WAAE,CAAS,CAAE,GAAG,EAAO,CAAE,IAC1B,CAAA,EAAA,EAAA,GAAA,EAAC,EAAc,OAAO,CAAA,CACpB,IAAK,EACL,UAAW,CAAA,EAAA,EAAA,EAAA,AAAE,EACX,kIACA,GAED,GAAG,CAAK,IAGb,EAAY,WAAW,CAAG,EAAc,OAAO,CAAC,WAAW","ignoreList":[0,4,5,6]}
@@ -1,3 +1,3 @@
1
- module.exports=[79020,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(83886),e=a.i(25700);let f=(0,e.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var g=a.i(72016),h=a.i(34644),i=a.i(63698),j=a.i(53170);let k=(0,e.default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),l=(0,e.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),m=(0,e.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),n=(0,e.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var o=a.i(96853),o=o,p=a.i(67837),q=a.i(71238);let r=(0,e.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var s=a.i(52313),t=a.i(85536),u=a.i(58860),v=a.i(90920),w=a.i(18948),x=a.i(96867),y=a.i(82934),z=a.i(55690),A=a.i(48972),B=a.i(59653),C=a.i(63496),D=a.i(6175),E=a.i(7420),F=a.i(48939),G=a.i(58761),H=a.i(51473),I=a.i(59675),J=a.i(5472),K=a.i(75988),L=a.i(80930),M=a.i(66873),N=a.i(90986),O=a.i(79406),P=a.i(17329),Q=a.i(61476),R=a.i(64005),S=a.i(50049),T=a.i(16164),U=a.i(45291),V=[" ","Enter","ArrowUp","ArrowDown"],W=[" ","Enter"],X="Select",[Y,Z,$]=(0,C.createCollection)(X),[_,aa]=(0,E.createContextScope)(X,[$,K.createPopperScope]),ab=(0,K.createPopperScope)(),[ac,ad]=_(X),[ae,af]=_(X),ag=a=>{let{__scopeSelect:d,children:e,open:f,defaultOpen:g,onOpenChange:h,value:i,defaultValue:j,onValueChange:k,dir:l,name:m,autoComplete:n,disabled:o,required:p,form:q}=a,r=ab(d),[s,t]=c.useState(null),[u,v]=c.useState(null),[w,x]=c.useState(!1),y=(0,F.useDirection)(l),[z,A]=(0,P.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:X}),[B,C]=(0,P.useControllableState)({prop:i,defaultProp:j,onChange:k,caller:X}),D=c.useRef(null),E=!s||q||!!s.closest("form"),[G,H]=c.useState(new Set),I=Array.from(G).map(a=>a.props.value).join(";");return(0,b.jsx)(K.Root,{...r,children:(0,b.jsxs)(ac,{required:p,scope:d,trigger:s,onTriggerChange:t,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:w,onValueNodeHasChildrenChange:x,contentId:(0,J.useId)(),value:B,onValueChange:C,open:z,onOpenChange:A,dir:y,triggerPointerDownPosRef:D,disabled:o,children:[(0,b.jsx)(Y.Provider,{scope:d,children:(0,b.jsx)(ae,{scope:a.__scopeSelect,onNativeOptionAdd:c.useCallback(a=>{H(b=>new Set(b).add(a))},[]),onNativeOptionRemove:c.useCallback(a=>{H(b=>{let c=new Set(b);return c.delete(a),c})},[]),children:e})}),E?(0,b.jsxs)(aV,{"aria-hidden":!0,required:p,tabIndex:-1,name:m,autoComplete:n,value:B,onChange:a=>C(a.target.value),disabled:o,form:q,children:[void 0===B?(0,b.jsx)("option",{value:""}):null,Array.from(G)]},I):null]})})};ag.displayName=X;var ah="SelectTrigger",ai=c.forwardRef((a,d)=>{let{__scopeSelect:e,disabled:f=!1,...g}=a,h=ab(e),i=ad(ah,e),j=i.disabled||f,k=(0,D.useComposedRefs)(d,i.onTriggerChange),l=Z(e),m=c.useRef("touch"),[n,o,p]=aX(a=>{let b=l().filter(a=>!a.disabled),c=b.find(a=>a.value===i.value),d=aY(b,a,c);void 0!==d&&i.onValueChange(d.value)}),q=a=>{j||(i.onOpenChange(!0),p()),a&&(i.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return(0,b.jsx)(K.Anchor,{asChild:!0,...h,children:(0,b.jsx)(M.Primitive.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:j,"data-disabled":j?"":void 0,"data-placeholder":aW(i.value)?"":void 0,...g,ref:k,onClick:(0,B.composeEventHandlers)(g.onClick,a=>{a.currentTarget.focus(),"mouse"!==m.current&&q(a)}),onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,a=>{m.current=a.pointerType;let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),0===a.button&&!1===a.ctrlKey&&"mouse"===a.pointerType&&(q(a),a.preventDefault())}),onKeyDown:(0,B.composeEventHandlers)(g.onKeyDown,a=>{let b=""!==n.current;a.ctrlKey||a.altKey||a.metaKey||1!==a.key.length||o(a.key),(!b||" "!==a.key)&&V.includes(a.key)&&(q(),a.preventDefault())})})})});ai.displayName=ah;var aj="SelectValue",ak=c.forwardRef((a,c)=>{let{__scopeSelect:d,className:e,style:f,children:g,placeholder:h="",...i}=a,j=ad(aj,d),{onValueNodeHasChildrenChange:k}=j,l=void 0!==g,m=(0,D.useComposedRefs)(c,j.onValueNodeChange);return(0,Q.useLayoutEffect)(()=>{k(l)},[k,l]),(0,b.jsx)(M.Primitive.span,{...i,ref:m,style:{pointerEvents:"none"},children:aW(j.value)?(0,b.jsx)(b.Fragment,{children:h}):g})});ak.displayName=aj;var al=c.forwardRef((a,c)=>{let{__scopeSelect:d,children:e,...f}=a;return(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...f,ref:c,children:e||"▼"})});al.displayName="SelectIcon";var am=a=>(0,b.jsx)(L.Portal,{asChild:!0,...a});am.displayName="SelectPortal";var an="SelectContent",ao=c.forwardRef((a,d)=>{let e=ad(an,a.__scopeSelect),[f,g]=c.useState();return((0,Q.useLayoutEffect)(()=>{g(new DocumentFragment)},[]),e.open)?(0,b.jsx)(as,{...a,ref:d}):f?z.createPortal((0,b.jsx)(ap,{scope:a.__scopeSelect,children:(0,b.jsx)(Y.Slot,{scope:a.__scopeSelect,children:(0,b.jsx)("div",{children:a.children})})}),f):null});ao.displayName=an;var[ap,aq]=_(an),ar=(0,N.createSlot)("SelectContent.RemoveScroll"),as=c.forwardRef((a,d)=>{let{__scopeSelect:e,position:f="item-aligned",onCloseAutoFocus:g,onEscapeKeyDown:h,onPointerDownOutside:i,side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s,...t}=a,u=ad(an,e),[v,w]=c.useState(null),[x,y]=c.useState(null),z=(0,D.useComposedRefs)(d,a=>w(a)),[A,C]=c.useState(null),[E,F]=c.useState(null),J=Z(e),[K,L]=c.useState(!1),M=c.useRef(!1);c.useEffect(()=>{if(v)return(0,T.hideOthers)(v)},[v]),(0,H.useFocusGuards)();let N=c.useCallback(a=>{let[b,...c]=J().map(a=>a.ref.current),[d]=c.slice(-1),e=document.activeElement;for(let c of a)if(c===e||(c?.scrollIntoView({block:"nearest"}),c===b&&x&&(x.scrollTop=0),c===d&&x&&(x.scrollTop=x.scrollHeight),c?.focus(),document.activeElement!==e))return},[J,x]),O=c.useCallback(()=>N([A,v]),[N,A,v]);c.useEffect(()=>{K&&O()},[K,O]);let{onOpenChange:P,triggerPointerDownPosRef:Q}=u;c.useEffect(()=>{if(v){let a={x:0,y:0},b=b=>{a={x:Math.abs(Math.round(b.pageX)-(Q.current?.x??0)),y:Math.abs(Math.round(b.pageY)-(Q.current?.y??0))}},c=c=>{a.x<=10&&a.y<=10?c.preventDefault():v.contains(c.target)||P(!1),document.removeEventListener("pointermove",b),Q.current=null};return null!==Q.current&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",c,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",c,{capture:!0})}}},[v,P,Q]),c.useEffect(()=>{let a=()=>P(!1);return window.addEventListener("blur",a),window.addEventListener("resize",a),()=>{window.removeEventListener("blur",a),window.removeEventListener("resize",a)}},[P]);let[R,S]=aX(a=>{let b=J().filter(a=>!a.disabled),c=b.find(a=>a.ref.current===document.activeElement),d=aY(b,a,c);d&&setTimeout(()=>d.ref.current.focus())}),V=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&(C(a),d&&(M.current=!0))},[u.value]),W=c.useCallback(()=>v?.focus(),[v]),X=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&F(a)},[u.value]),Y="popper"===f?au:at,$=Y===au?{side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s}:{};return(0,b.jsx)(ap,{scope:e,content:v,viewport:x,onViewportChange:y,itemRefCallback:V,selectedItem:A,onItemLeave:W,itemTextRefCallback:X,focusSelectedItem:O,selectedItemText:E,position:f,isPositioned:K,searchRef:R,children:(0,b.jsx)(U.RemoveScroll,{as:ar,allowPinchZoom:!0,children:(0,b.jsx)(I.FocusScope,{asChild:!0,trapped:u.open,onMountAutoFocus:a=>{a.preventDefault()},onUnmountAutoFocus:(0,B.composeEventHandlers)(g,a=>{u.trigger?.focus({preventScroll:!0}),a.preventDefault()}),children:(0,b.jsx)(G.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:h,onPointerDownOutside:i,onFocusOutside:a=>a.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:(0,b.jsx)(Y,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:a=>a.preventDefault(),...t,...$,onPlaced:()=>L(!0),ref:z,style:{display:"flex",flexDirection:"column",outline:"none",...t.style},onKeyDown:(0,B.composeEventHandlers)(t.onKeyDown,a=>{let b=a.ctrlKey||a.altKey||a.metaKey;if("Tab"===a.key&&a.preventDefault(),b||1!==a.key.length||S(a.key),["ArrowUp","ArrowDown","Home","End"].includes(a.key)){let b=J().filter(a=>!a.disabled).map(a=>a.ref.current);if(["ArrowUp","End"].includes(a.key)&&(b=b.slice().reverse()),["ArrowUp","ArrowDown"].includes(a.key)){let c=a.target,d=b.indexOf(c);b=b.slice(d+1)}setTimeout(()=>N(b)),a.preventDefault()}})})})})})})});as.displayName="SelectContentImpl";var at=c.forwardRef((a,d)=>{let{__scopeSelect:e,onPlaced:f,...g}=a,h=ad(an,e),i=aq(an,e),[j,k]=c.useState(null),[l,m]=c.useState(null),n=(0,D.useComposedRefs)(d,a=>m(a)),o=Z(e),p=c.useRef(!1),q=c.useRef(!0),{viewport:r,selectedItem:s,selectedItemText:t,focusSelectedItem:u}=i,v=c.useCallback(()=>{if(h.trigger&&h.valueNode&&j&&l&&r&&s&&t){let a=h.trigger.getBoundingClientRect(),b=l.getBoundingClientRect(),c=h.valueNode.getBoundingClientRect(),d=t.getBoundingClientRect();if("rtl"!==h.dir){let e=d.left-b.left,f=c.left-e,g=a.left-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.left=l+"px"}else{let e=b.right-d.right,f=window.innerWidth-c.right-e,g=window.innerWidth-a.right-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.right=l+"px"}let e=o(),g=window.innerHeight-20,i=r.scrollHeight,k=window.getComputedStyle(l),m=parseInt(k.borderTopWidth,10),n=parseInt(k.paddingTop,10),q=parseInt(k.borderBottomWidth,10),u=m+n+i+parseInt(k.paddingBottom,10)+q,v=Math.min(5*s.offsetHeight,u),w=window.getComputedStyle(r),x=parseInt(w.paddingTop,10),y=parseInt(w.paddingBottom,10),z=a.top+a.height/2-10,B=s.offsetHeight/2,C=m+n+(s.offsetTop+B);if(C<=z){let a=e.length>0&&s===e[e.length-1].ref.current;j.style.bottom="0px";let b=Math.max(g-z,B+(a?y:0)+(l.clientHeight-r.offsetTop-r.offsetHeight)+q);j.style.height=C+b+"px"}else{let a=e.length>0&&s===e[0].ref.current;j.style.top="0px";let b=Math.max(z,m+r.offsetTop+(a?x:0)+B);j.style.height=b+(u-C)+"px",r.scrollTop=C-z+r.offsetTop}j.style.margin="10px 0",j.style.minHeight=v+"px",j.style.maxHeight=g+"px",f?.(),requestAnimationFrame(()=>p.current=!0)}},[o,h.trigger,h.valueNode,j,l,r,s,t,h.dir,f]);(0,Q.useLayoutEffect)(()=>v(),[v]);let[w,x]=c.useState();(0,Q.useLayoutEffect)(()=>{l&&x(window.getComputedStyle(l).zIndex)},[l]);let y=c.useCallback(a=>{a&&!0===q.current&&(v(),u?.(),q.current=!1)},[v,u]);return(0,b.jsx)(av,{scope:e,contentWrapper:j,shouldExpandOnScrollRef:p,onScrollButtonChange:y,children:(0,b.jsx)("div",{ref:k,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:w},children:(0,b.jsx)(M.Primitive.div,{...g,ref:n,style:{boxSizing:"border-box",maxHeight:"100%",...g.style}})})})});at.displayName="SelectItemAlignedPosition";var au=c.forwardRef((a,c)=>{let{__scopeSelect:d,align:e="start",collisionPadding:f=10,...g}=a,h=ab(d);return(0,b.jsx)(K.Content,{...h,...g,ref:c,align:e,collisionPadding:f,style:{boxSizing:"border-box",...g.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});au.displayName="SelectPopperPosition";var[av,aw]=_(an,{}),ax="SelectViewport",ay=c.forwardRef((a,d)=>{let{__scopeSelect:e,nonce:f,...g}=a,h=aq(ax,e),i=aw(ax,e),j=(0,D.useComposedRefs)(d,h.onViewportChange),k=c.useRef(0);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:f}),(0,b.jsx)(Y.Slot,{scope:e,children:(0,b.jsx)(M.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...g,ref:j,style:{position:"relative",flex:1,overflow:"hidden auto",...g.style},onScroll:(0,B.composeEventHandlers)(g.onScroll,a=>{let b=a.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:d}=i;if(d?.current&&c){let a=Math.abs(k.current-b.scrollTop);if(a>0){let d=window.innerHeight-20,e=Math.max(parseFloat(c.style.minHeight),parseFloat(c.style.height));if(e<d){let f=e+a,g=Math.min(d,f),h=f-g;c.style.height=g+"px","0px"===c.style.bottom&&(b.scrollTop=h>0?h:0,c.style.justifyContent="flex-end")}}}k.current=b.scrollTop})})})]})});ay.displayName=ax;var az="SelectGroup",[aA,aB]=_(az),aC=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=(0,J.useId)();return(0,b.jsx)(aA,{scope:d,id:f,children:(0,b.jsx)(M.Primitive.div,{role:"group","aria-labelledby":f,...e,ref:c})})});aC.displayName=az;var aD="SelectLabel",aE=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=aB(aD,d);return(0,b.jsx)(M.Primitive.div,{id:f.id,...e,ref:c})});aE.displayName=aD;var aF="SelectItem",[aG,aH]=_(aF),aI=c.forwardRef((a,d)=>{let{__scopeSelect:e,value:f,disabled:g=!1,textValue:h,...i}=a,j=ad(aF,e),k=aq(aF,e),l=j.value===f,[m,n]=c.useState(h??""),[o,p]=c.useState(!1),q=(0,D.useComposedRefs)(d,a=>k.itemRefCallback?.(a,f,g)),r=(0,J.useId)(),s=c.useRef("touch"),t=()=>{g||(j.onValueChange(f),j.onOpenChange(!1))};if(""===f)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,b.jsx)(aG,{scope:e,value:f,disabled:g,textId:r,isSelected:l,onItemTextChange:c.useCallback(a=>{n(b=>b||(a?.textContent??"").trim())},[]),children:(0,b.jsx)(Y.ItemSlot,{scope:e,value:f,disabled:g,textValue:m,children:(0,b.jsx)(M.Primitive.div,{role:"option","aria-labelledby":r,"data-highlighted":o?"":void 0,"aria-selected":l&&o,"data-state":l?"checked":"unchecked","aria-disabled":g||void 0,"data-disabled":g?"":void 0,tabIndex:g?void 0:-1,...i,ref:q,onFocus:(0,B.composeEventHandlers)(i.onFocus,()=>p(!0)),onBlur:(0,B.composeEventHandlers)(i.onBlur,()=>p(!1)),onClick:(0,B.composeEventHandlers)(i.onClick,()=>{"mouse"!==s.current&&t()}),onPointerUp:(0,B.composeEventHandlers)(i.onPointerUp,()=>{"mouse"===s.current&&t()}),onPointerDown:(0,B.composeEventHandlers)(i.onPointerDown,a=>{s.current=a.pointerType}),onPointerMove:(0,B.composeEventHandlers)(i.onPointerMove,a=>{s.current=a.pointerType,g?k.onItemLeave?.():"mouse"===s.current&&a.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,B.composeEventHandlers)(i.onPointerLeave,a=>{a.currentTarget===document.activeElement&&k.onItemLeave?.()}),onKeyDown:(0,B.composeEventHandlers)(i.onKeyDown,a=>{(k.searchRef?.current===""||" "!==a.key)&&(W.includes(a.key)&&t()," "===a.key&&a.preventDefault())})})})})});aI.displayName=aF;var aJ="SelectItemText",aK=c.forwardRef((a,d)=>{let{__scopeSelect:e,className:f,style:g,...h}=a,i=ad(aJ,e),j=aq(aJ,e),k=aH(aJ,e),l=af(aJ,e),[m,n]=c.useState(null),o=(0,D.useComposedRefs)(d,a=>n(a),k.onItemTextChange,a=>j.itemTextRefCallback?.(a,k.value,k.disabled)),p=m?.textContent,q=c.useMemo(()=>(0,b.jsx)("option",{value:k.value,disabled:k.disabled,children:p},k.value),[k.disabled,k.value,p]),{onNativeOptionAdd:r,onNativeOptionRemove:s}=l;return(0,Q.useLayoutEffect)(()=>(r(q),()=>s(q)),[r,s,q]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(M.Primitive.span,{id:k.textId,...h,ref:o}),k.isSelected&&i.valueNode&&!i.valueNodeHasChildren?z.createPortal(h.children,i.valueNode):null]})});aK.displayName=aJ;var aL="SelectItemIndicator",aM=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return aH(aL,d).isSelected?(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...e,ref:c}):null});aM.displayName=aL;var aN="SelectScrollUpButton",aO=c.forwardRef((a,d)=>{let e=aq(aN,a.__scopeSelect),f=aw(aN,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){h(b.scrollTop>0)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop-b.offsetHeight)}}):null});aO.displayName=aN;var aP="SelectScrollDownButton",aQ=c.forwardRef((a,d)=>{let e=aq(aP,a.__scopeSelect),f=aw(aP,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){let a=b.scrollHeight-b.clientHeight;h(Math.ceil(b.scrollTop)<a)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop+b.offsetHeight)}}):null});aQ.displayName=aP;var aR=c.forwardRef((a,d)=>{let{__scopeSelect:e,onAutoScroll:f,...g}=a,h=aq("SelectScrollButton",e),i=c.useRef(null),j=Z(e),k=c.useCallback(()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)},[]);return c.useEffect(()=>()=>k(),[k]),(0,Q.useLayoutEffect)(()=>{let a=j().find(a=>a.ref.current===document.activeElement);a?.ref.current?.scrollIntoView({block:"nearest"})},[j]),(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...g,ref:d,style:{flexShrink:0,...g.style},onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,()=>{null===i.current&&(i.current=window.setInterval(f,50))}),onPointerMove:(0,B.composeEventHandlers)(g.onPointerMove,()=>{h.onItemLeave?.(),null===i.current&&(i.current=window.setInterval(f,50))}),onPointerLeave:(0,B.composeEventHandlers)(g.onPointerLeave,()=>{k()})})}),aS=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...e,ref:c})});aS.displayName="SelectSeparator";var aT="SelectArrow",aU=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=ab(d),g=ad(aT,d),h=aq(aT,d);return g.open&&"popper"===h.position?(0,b.jsx)(K.Arrow,{...f,...e,ref:c}):null});aU.displayName=aT;var aV=c.forwardRef(({__scopeSelect:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,D.useComposedRefs)(f,g),i=(0,R.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==d&&b){let c=new Event("change",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(M.Primitive.select,{...e,style:{...S.VISUALLY_HIDDEN_STYLES,...e.style},ref:h,defaultValue:d})});function aW(a){return""===a||void 0===a}function aX(a){let b=(0,O.useCallbackRef)(a),d=c.useRef(""),e=c.useRef(0),f=c.useCallback(a=>{let c=d.current+a;b(c),function a(b){d.current=b,window.clearTimeout(e.current),""!==b&&(e.current=window.setTimeout(()=>a(""),1e3))}(c)},[b]),g=c.useCallback(()=>{d.current="",window.clearTimeout(e.current)},[]);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),[d,f,g]}function aY(a,b,c){var d,e;let f=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,g=c?a.indexOf(c):-1,h=(d=a,e=Math.max(g,0),d.map((a,b)=>d[(e+b)%d.length]));1===f.length&&(h=h.filter(a=>a!==c));let i=h.find(a=>a.textValue.toLowerCase().startsWith(f.toLowerCase()));return i!==c?i:void 0}aV.displayName="SelectBubbleInput",a.s(["Arrow",()=>aU,"Content",()=>ao,"Group",()=>aC,"Icon",()=>al,"Item",()=>aI,"ItemIndicator",()=>aM,"ItemText",()=>aK,"Label",()=>aE,"Portal",()=>am,"Root",()=>ag,"ScrollDownButton",()=>aQ,"ScrollUpButton",()=>aO,"Select",()=>ag,"SelectArrow",()=>aU,"SelectContent",()=>ao,"SelectGroup",()=>aC,"SelectIcon",()=>al,"SelectItem",()=>aI,"SelectItemIndicator",()=>aM,"SelectItemText",()=>aK,"SelectLabel",()=>aE,"SelectPortal",()=>am,"SelectScrollDownButton",()=>aQ,"SelectScrollUpButton",()=>aO,"SelectSeparator",()=>aS,"SelectTrigger",()=>ai,"SelectValue",()=>ak,"SelectViewport",()=>ay,"Separator",()=>aS,"Trigger",()=>ai,"Value",()=>ak,"Viewport",()=>ay,"createSelectScope",()=>aa],16252);var aZ=a.i(16252),aZ=aZ,a$=a.i(71716);let a_=(0,e.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),a0=aZ.Root;aZ.Group;let a1=aZ.Value,a2=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Trigger,{ref:e,className:(0,t.cn)("border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...d,children:[c,(0,b.jsx)(aZ.Icon,{asChild:!0,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));a2.displayName=aZ.Trigger.displayName;let a3=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollUpButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a_,{className:"h-4 w-4"})}));a3.displayName=aZ.ScrollUpButton.displayName;let a4=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollDownButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4"})}));a4.displayName=aZ.ScrollDownButton.displayName;let a5=c.forwardRef(({className:a,children:c,position:d="popper",...e},f)=>(0,b.jsx)(aZ.Portal,{children:(0,b.jsxs)(aZ.Content,{ref:f,className:(0,t.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md","popper"===d&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:d,...e,children:[(0,b.jsx)(a3,{}),(0,b.jsx)(aZ.Viewport,{className:(0,t.cn)("p-1","popper"===d&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:c}),(0,b.jsx)(a4,{})]})}));a5.displayName=aZ.Content.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Label,{ref:d,className:(0,t.cn)("px-2 py-1.5 text-sm font-semibold",a),...c})).displayName=aZ.Label.displayName;let a6=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Item,{ref:e,className:(0,t.cn)("focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(aZ.ItemIndicator,{children:(0,b.jsx)(g.Check,{className:"h-4 w-4"})})}),(0,b.jsx)(aZ.ItemText,{children:c})]}));a6.displayName=aZ.Item.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Separator,{ref:d,className:(0,t.cn)("bg-muted -mx-1 my-1 h-px",a),...c})).displayName=aZ.Separator.displayName;var a7=a.i(25674);let a8=(0,a7.createServerReference)("4076e0080cd12dcc6da735f8b1df71dd170b30a957",a7.callServer,void 0,a7.findSourceMapURL,"updateSettingsAction");var a9=a.i(46847),ba=a.i(61640),bb=a.i(40617),bb=bb,bc=a.i(87926);function bd(a){return(0,b.jsx)(bb.default,{className:(0,t.cn)("h-4 w-4",a.className),...a})}function be({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bf({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bg({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bh({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bi({className:a,...c}){return(0,b.jsx)(bc.Rocket,{className:(0,t.cn)("h-4 w-4",a),...c})}be.displayName="VsCodeIcon",bf.displayName="CursorEditorIcon",bg.displayName="WindsurfIcon",bh.displayName="ZedIcon",bi.displayName="AntigravityIcon";let bj={vscode:be,cursor:bf,windsurf:bg,zed:bh,antigravity:bi};var bk=a.i(61781);let bl=[{value:a9.AgentAuthMethod.Session,label:"Session"},{value:a9.AgentAuthMethod.Token,label:"Token"}],bm=[{value:a9.EditorType.VsCode,label:"VS Code"},{value:a9.EditorType.Cursor,label:"Cursor"},{value:a9.EditorType.Windsurf,label:"Windsurf"},{value:a9.EditorType.Zed,label:"Zed"},{value:a9.EditorType.Antigravity,label:"Antigravity"}],bn=[{id:"agent",label:"Agent",icon:h.Bot},{id:"environment",label:"Environment",icon:i.Terminal},{id:"workflow",label:"Workflow",icon:j.GitBranch},{id:"ci",label:"CI",icon:k},{id:"notifications",label:"Notifications",icon:l},{id:"feature-flags",label:"Flags",icon:m},{id:"database",label:"Database",icon:n}];function bo({label:a,description:c,htmlFor:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(u.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:e})]})}function bp({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(bo,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(x.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,t.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function bq({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function br({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let l=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(l??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":"Decrease",children:(0,b.jsx)(o.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=l??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":"Increase",children:(0,b.jsx)(p.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function bs({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function bt({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(q.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function bu({settings:a,shepHome:e,dbFileSize:o}){let{showSaving:p,showSaved:q,save:u}=function(){let[a,b]=(0,c.useTransition)(),[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(null),i=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{a&&!d&&(e(!0),i.current=!1,h.current=setTimeout(()=>{h.current=null,i.current&&(e(!1),g(!0),setTimeout(()=>g(!1),2e3))},350)),!a&&d&&(i.current=!0,h.current||(e(!1),g(!0),setTimeout(()=>g(!1),2e3)))},[a,d]),{showSaving:d,showSaved:f,save:(0,c.useCallback)(a=>{b(async()=>{let b=await a8(a);b.success||s.toast.error(b.error??"Failed to save settings")})},[b])}}(),x=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1},[z,A]=(0,c.useState)(a.agent.type),B=a.agent.authMethod,[C,D]=(0,c.useState)(a.agent.token??""),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(a.environment.defaultEditor),I=a.environment.shellPreference,[J,K]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[L,M]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[N,O]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[P,Q]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[R,S]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[T,U]=(0,c.useState)(a.workflow.enableEvidence),[V,W]=(0,c.useState)(a.workflow.commitEvidence),[X,Y]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[Z,$]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[_,aa]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[ab,ac]=(0,c.useState)(a.notifications.inApp.enabled),[ad,ae]=(0,c.useState)(a.notifications.browser.enabled),[af,ag]=(0,c.useState)(a.notifications.desktop.enabled),[ah,ai]=(0,c.useState)({...a.notifications.events}),[aj,ak]=(0,c.useState)({...x}),al=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",am=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",an=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"";function ao(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function ap(a={}){let b=ao(a.ciTimeout??Z);return{workflow:{openPrOnImplementationComplete:a.openPr??J,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??L,allowPrd:a.allowPrd??N,allowPlan:a.allowPlan??P,allowMerge:a.allowMerge??R},enableEvidence:a.enableEvidence??T,commitEvidence:a.commitEvidence??V,ciMaxFixAttempts:ao(a.ciMaxFix??X),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:ao(a.ciLogMax??_)}}}function aq(a={}){return{notifications:{inApp:{enabled:a.inApp??ab},browser:{enabled:a.browser??ad},desktop:{enabled:a.desktop??af},events:a.events??ah}}}let[ar,as]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=bn.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&as(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let at=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl",children:[(0,b.jsx)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 grid grid-cols-1 gap-x-5 pt-6 pb-4 backdrop-blur lg:grid-cols-[1fr_280px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(r,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Settings"}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,t.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:"Saving..."}),(0,b.jsxs)("span",{className:(0,t.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",q&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(g.Check,{className:"h-3 w-3"}),"Saved"]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:bn.map(a=>{let c=a.icon,d=ar===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>at(a.id),className:(0,t.cn)("flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-all",d?"bg-accent text-foreground font-medium":"text-muted-foreground/60 hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:a.label})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:h.Bot,title:"Agent",description:"AI coding agent and authentication",testId:"agent-settings-section",children:[(0,b.jsx)(bo,{label:"Agent & Model",description:"Provider and model for all operations",htmlFor:"agent-model-picker",children:(0,b.jsx)(bk.AgentModelPicker,{initialAgentType:z,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>A(a),className:"w-55"})}),(0,b.jsx)(bo,{label:"Authentication",description:"How the agent authenticates",htmlFor:"auth-method",children:(0,b.jsx)(y.TooltipProvider,{children:(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsxs)(a0,{value:B,disabled:!0,children:[(0,b.jsx)(a2,{id:"auth-method","data-testid":"auth-method-select",className:"w-55 cursor-not-allowed text-xs opacity-60",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bl.map(a=>(0,b.jsx)(a6,{value:a.value,children:a.label},a.value))})]})})}),(0,b.jsx)(y.TooltipContent,{children:"Coming soon"})]})})}),B===a9.AgentAuthMethod.Token&&(0,b.jsx)(bo,{label:"API Token",htmlFor:"agent-token",children:(0,b.jsxs)("div",{className:"relative w-45",children:[(0,b.jsx)(v.Input,{id:"agent-token","data-testid":"agent-token-input",type:E?"text":"password",value:C,onChange:a=>D(a.target.value),onBlur:()=>{C!==(a.agent.token??"")&&u(function(a={}){let b={type:z,authMethod:B,...a},c={type:b.type,authMethod:b.authMethod};return b.authMethod===a9.AgentAuthMethod.Token&&(c.token=a.token??C),{agent:c}}({token:C}))},placeholder:"Enter token",className:"pr-8"}),(0,b.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-2 hover:bg-transparent",onClick:()=>F(!E),"data-testid":"toggle-token-visibility","aria-label":E?"Hide token":"Show token",children:E?(0,b.jsx)(f,{className:"h-3 w-3"}):(0,b.jsx)(d.Eye,{className:"h-3 w-3"})})]})})]}),(0,b.jsx)(bt,{links:[{label:"Agent system",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/agent-system.md"},{label:"Adding agents",href:"https://github.com/shep-ai/cli/blob/main/docs/development/adding-agents.md"},{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Choose which AI coding agent powers your features. Each agent supports different models and capabilities. Authentication is resolved automatically via your active session."})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(bq,{icon:i.Terminal,title:"Environment",description:"Editor and shell preferences",testId:"environment-settings-section",children:(0,b.jsx)(bo,{label:"Default Editor",description:"Editor launched for file operations",htmlFor:"default-editor",children:(0,b.jsxs)(a0,{value:G,onValueChange:a=>{H(a),u({environment:{defaultEditor:a,shellPreference:I}})},children:[(0,b.jsx)(a2,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bm.map(a=>{var c;let d=(c=a.value)&&c in bj?bj[c]:bd;return(0,b.jsx)(a6,{value:a.value,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.label]})},a.value)})})]})})}),(0,b.jsx)(bt,{links:[{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Your preferred editor is used when opening files for review or editing during the development workflow."})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:j.GitBranch,title:"Workflow",description:"Automation behavior after implementation",testId:"workflow-settings-section",children:[(0,b.jsx)(bs,{children:"Approve"}),(0,b.jsx)(bp,{label:"Auto-approve PRD",description:"Skip manual review of requirements",id:"allow-prd",testId:"switch-allow-prd",checked:N,onChange:a=>{O(a),u(ap({allowPrd:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Plan",description:"Skip manual review of implementation plan",id:"allow-plan",testId:"switch-allow-plan",checked:P,onChange:a=>{Q(a),u(ap({allowPlan:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Merge",description:"Merge without manual review",id:"allow-merge",testId:"switch-allow-merge",checked:R,onChange:a=>{S(a),u(ap({allowMerge:a}))}}),(0,b.jsx)(bs,{children:"Evidence"}),(0,b.jsx)(bp,{label:"Collect evidence",description:"Capture screenshots and artifacts after implementation",id:"enable-evidence",testId:"switch-enable-evidence",checked:T,onChange:a=>{U(a),a?u(ap({enableEvidence:a})):(W(!1),u(ap({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(bp,{label:"Add evidence to PR",description:"Include evidence in the pull request body",id:"commit-evidence",testId:"switch-commit-evidence",checked:V,disabled:!T||!J,onChange:a=>{W(a),u(ap({commitEvidence:a}))}}),(0,b.jsx)(bs,{children:"Git"}),(0,b.jsx)(bp,{label:"Push on complete",description:"Push to remote when implementation finishes",id:"push-on-complete",testId:"switch-push-on-complete",checked:L,onChange:a=>{M(a),u(ap({pushOnComplete:a}))}}),(0,b.jsx)(bp,{label:"Open PR on complete",description:"Create a pull request when done",id:"open-pr",testId:"switch-open-pr",checked:J,onChange:a=>{K(a),a?u(ap({openPr:a})):(W(!1),u(ap({openPr:a,commitEvidence:!1})))}})]}),(0,b.jsx)(bt,{links:[{label:"Approval gates",href:"https://github.com/shep-ai/cli/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:"Push & PR flags",href:"https://github.com/shep-ai/cli/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:"Control how autonomous each feature run is. Auto-approve skips the human review pause at each phase. Push and PR options control what happens after successful implementation."})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:k,title:"Continuous Integration",description:"Limits and timeouts for CI monitoring",testId:"ci-settings-section",children:[(0,b.jsx)(bo,{label:"Max fix attempts",description:"Agent retries on failing CI",htmlFor:"ci-max-fix",children:(0,b.jsx)(br,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:X,onChange:Y,onBlur:()=>{X!==al&&u(ap({ciMaxFix:X}))},min:1,max:10})}),(0,b.jsx)(bo,{label:"Watch timeout",description:"Max wait for CI completion",htmlFor:"ci-timeout",children:(0,b.jsx)(br,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:Z,onChange:$,onBlur:()=>{Z!==am&&u(ap({ciTimeout:Z}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(bo,{label:"Max log size",description:"Truncate CI logs beyond this limit",htmlFor:"ci-log-max",children:(0,b.jsx)(br,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:_,onChange:aa,onBlur:()=>{_!==an&&u(ap({ciLogMax:_}))},min:1e3,step:5e3,suffix:"chars"})})]}),(0,b.jsx)(bt,{links:[{label:"CI/CD pipeline",href:"https://github.com/shep-ai/cli/blob/main/docs/development/cicd.md"},{label:"CI security gates",href:"https://github.com/shep-ai/cli/blob/main/specs/003-cicd-security-gates/spec.md"}],children:"When a feature completes, the agent can watch CI and auto-fix failures. These limits prevent runaway retries and control how much log output is sent to the agent for analysis."})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:l,title:"Notifications",description:"How and when you get notified",testId:"notification-settings-section",children:[(0,b.jsx)(bs,{children:"Channels"}),(0,b.jsx)(bp,{label:"In-app",description:"Notifications inside the Shep UI",id:"notif-in-app",testId:"switch-in-app",checked:ab,onChange:a=>{ac(a),u(aq({inApp:a}))}}),(0,b.jsx)(bp,{label:"Browser",description:"Push notifications via the browser",id:"notif-browser",testId:"switch-browser",checked:ad,onChange:a=>{ae(a),u(aq({browser:a}))}}),(0,b.jsx)(bp,{label:"Desktop",description:"Native OS notifications",id:"notif-desktop",testId:"switch-desktop",checked:af,onChange:a=>{ag(a),u(aq({desktop:a}))}}),(0,b.jsx)(bs,{children:"Agent Events"}),(0,b.jsx)(bp,{label:"Agent started",id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:ah.agentStarted,onChange:a=>{let b={...ah,agentStarted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Phase completed",id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:ah.phaseCompleted,onChange:a=>{let b={...ah,phaseCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Waiting approval",id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:ah.waitingApproval,onChange:a=>{let b={...ah,waitingApproval:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent completed",id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:ah.agentCompleted,onChange:a=>{let b={...ah,agentCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent failed",id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:ah.agentFailed,onChange:a=>{let b={...ah,agentFailed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bs,{children:"Pull Request Events"}),(0,b.jsx)(bp,{label:"PR merged",id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:ah.prMerged,onChange:a=>{let b={...ah,prMerged:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR closed",id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:ah.prClosed,onChange:a=>{let b={...ah,prClosed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks passed",id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:ah.prChecksPassed,onChange:a=>{let b={...ah,prChecksPassed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks failed",id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:ah.prChecksFailed,onChange:a=>{let b={...ah,prChecksFailed:a};ai(b),u(aq({events:b}))}})]}),(0,b.jsx)(bt,{links:[{label:"Notification system",href:"https://github.com/shep-ai/cli/blob/main/specs/021-agent-notifications/spec.yaml"}],children:"Three notification channels keep you in the loop: in-app toasts, browser push notifications, and native desktop alerts. Fine-tune which agent lifecycle events trigger a notification."})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:m,title:"Feature Flags",description:"Enable or disable experimental features",badge:"Experimental",testId:"feature-flags-settings-section",children:[(0,b.jsx)(bp,{label:"Skills",description:"Enable the skills system for agent capabilities",id:"flag-skills",testId:"switch-flag-skills",checked:aj.skills,onChange:a=>{let b={...aj,skills:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Deployments",description:"Enable environment deployment workflows",id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:aj.envDeploy,onChange:a=>{let b={...aj,envDeploy:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Debug",description:"Show debug panels and verbose logging",id:"flag-debug",testId:"switch-flag-debug",checked:aj.debug,onChange:a=>{let b={...aj,debug:a};ak(b),u({featureFlags:b})}})]}),(0,b.jsx)(bt,{children:"Experimental features that are still under development. Enable at your own risk — they may change or be removed in future versions. Debug mode adds verbose logging useful for troubleshooting."})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:n,title:"Database",description:"Local storage information",testId:"database-settings-section",children:[(0,b.jsx)(bo,{label:"Location",description:"Path to the local SQLite database",children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:e})}),(0,b.jsx)(bo,{label:"Size",children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:o})})]}),(0,b.jsx)(bt,{links:[{label:"Settings service",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/settings-service.md"},{label:"Settings spec",href:"https://github.com/shep-ai/cli/blob/main/specs/005-global-settings-service/spec.md"}],children:"All settings are stored in a local SQLite database at ~/.shep/data. The database uses a singleton record pattern with automatic migrations on startup."})]})]})]})}a.s(["SettingsPageClient",()=>bu],79020)}];
1
+ module.exports=[79020,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(83886),e=a.i(25700);let f=(0,e.default)("eye-off",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);var g=a.i(72016),h=a.i(34644),i=a.i(63698),j=a.i(53170);let k=(0,e.default)("activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]),l=(0,e.default)("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),m=(0,e.default)("flag",[["path",{d:"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",key:"1jaruq"}]]),n=(0,e.default)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var o=a.i(96853),o=o,p=a.i(67837),q=a.i(71238);let r=(0,e.default)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]);var s=a.i(52313),t=a.i(85536),u=a.i(58860),v=a.i(90920),w=a.i(18948),x=a.i(96867),y=a.i(82934),z=a.i(55690),A=a.i(48972),B=a.i(59653),C=a.i(63496),D=a.i(6175),E=a.i(7420),F=a.i(48939),G=a.i(58761),H=a.i(51473),I=a.i(59675),J=a.i(5472),K=a.i(75988),L=a.i(80930),M=a.i(66873),N=a.i(90986),O=a.i(79406),P=a.i(17329),Q=a.i(61476),R=a.i(64005),S=a.i(50049),T=a.i(16164),U=a.i(45291),V=[" ","Enter","ArrowUp","ArrowDown"],W=[" ","Enter"],X="Select",[Y,Z,$]=(0,C.createCollection)(X),[_,aa]=(0,E.createContextScope)(X,[$,K.createPopperScope]),ab=(0,K.createPopperScope)(),[ac,ad]=_(X),[ae,af]=_(X),ag=a=>{let{__scopeSelect:d,children:e,open:f,defaultOpen:g,onOpenChange:h,value:i,defaultValue:j,onValueChange:k,dir:l,name:m,autoComplete:n,disabled:o,required:p,form:q}=a,r=ab(d),[s,t]=c.useState(null),[u,v]=c.useState(null),[w,x]=c.useState(!1),y=(0,F.useDirection)(l),[z,A]=(0,P.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:X}),[B,C]=(0,P.useControllableState)({prop:i,defaultProp:j,onChange:k,caller:X}),D=c.useRef(null),E=!s||q||!!s.closest("form"),[G,H]=c.useState(new Set),I=Array.from(G).map(a=>a.props.value).join(";");return(0,b.jsx)(K.Root,{...r,children:(0,b.jsxs)(ac,{required:p,scope:d,trigger:s,onTriggerChange:t,valueNode:u,onValueNodeChange:v,valueNodeHasChildren:w,onValueNodeHasChildrenChange:x,contentId:(0,J.useId)(),value:B,onValueChange:C,open:z,onOpenChange:A,dir:y,triggerPointerDownPosRef:D,disabled:o,children:[(0,b.jsx)(Y.Provider,{scope:d,children:(0,b.jsx)(ae,{scope:a.__scopeSelect,onNativeOptionAdd:c.useCallback(a=>{H(b=>new Set(b).add(a))},[]),onNativeOptionRemove:c.useCallback(a=>{H(b=>{let c=new Set(b);return c.delete(a),c})},[]),children:e})}),E?(0,b.jsxs)(aV,{"aria-hidden":!0,required:p,tabIndex:-1,name:m,autoComplete:n,value:B,onChange:a=>C(a.target.value),disabled:o,form:q,children:[void 0===B?(0,b.jsx)("option",{value:""}):null,Array.from(G)]},I):null]})})};ag.displayName=X;var ah="SelectTrigger",ai=c.forwardRef((a,d)=>{let{__scopeSelect:e,disabled:f=!1,...g}=a,h=ab(e),i=ad(ah,e),j=i.disabled||f,k=(0,D.useComposedRefs)(d,i.onTriggerChange),l=Z(e),m=c.useRef("touch"),[n,o,p]=aX(a=>{let b=l().filter(a=>!a.disabled),c=b.find(a=>a.value===i.value),d=aY(b,a,c);void 0!==d&&i.onValueChange(d.value)}),q=a=>{j||(i.onOpenChange(!0),p()),a&&(i.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return(0,b.jsx)(K.Anchor,{asChild:!0,...h,children:(0,b.jsx)(M.Primitive.button,{type:"button",role:"combobox","aria-controls":i.contentId,"aria-expanded":i.open,"aria-required":i.required,"aria-autocomplete":"none",dir:i.dir,"data-state":i.open?"open":"closed",disabled:j,"data-disabled":j?"":void 0,"data-placeholder":aW(i.value)?"":void 0,...g,ref:k,onClick:(0,B.composeEventHandlers)(g.onClick,a=>{a.currentTarget.focus(),"mouse"!==m.current&&q(a)}),onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,a=>{m.current=a.pointerType;let b=a.target;b.hasPointerCapture(a.pointerId)&&b.releasePointerCapture(a.pointerId),0===a.button&&!1===a.ctrlKey&&"mouse"===a.pointerType&&(q(a),a.preventDefault())}),onKeyDown:(0,B.composeEventHandlers)(g.onKeyDown,a=>{let b=""!==n.current;a.ctrlKey||a.altKey||a.metaKey||1!==a.key.length||o(a.key),(!b||" "!==a.key)&&V.includes(a.key)&&(q(),a.preventDefault())})})})});ai.displayName=ah;var aj="SelectValue",ak=c.forwardRef((a,c)=>{let{__scopeSelect:d,className:e,style:f,children:g,placeholder:h="",...i}=a,j=ad(aj,d),{onValueNodeHasChildrenChange:k}=j,l=void 0!==g,m=(0,D.useComposedRefs)(c,j.onValueNodeChange);return(0,Q.useLayoutEffect)(()=>{k(l)},[k,l]),(0,b.jsx)(M.Primitive.span,{...i,ref:m,style:{pointerEvents:"none"},children:aW(j.value)?(0,b.jsx)(b.Fragment,{children:h}):g})});ak.displayName=aj;var al=c.forwardRef((a,c)=>{let{__scopeSelect:d,children:e,...f}=a;return(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...f,ref:c,children:e||"▼"})});al.displayName="SelectIcon";var am=a=>(0,b.jsx)(L.Portal,{asChild:!0,...a});am.displayName="SelectPortal";var an="SelectContent",ao=c.forwardRef((a,d)=>{let e=ad(an,a.__scopeSelect),[f,g]=c.useState();return((0,Q.useLayoutEffect)(()=>{g(new DocumentFragment)},[]),e.open)?(0,b.jsx)(as,{...a,ref:d}):f?z.createPortal((0,b.jsx)(ap,{scope:a.__scopeSelect,children:(0,b.jsx)(Y.Slot,{scope:a.__scopeSelect,children:(0,b.jsx)("div",{children:a.children})})}),f):null});ao.displayName=an;var[ap,aq]=_(an),ar=(0,N.createSlot)("SelectContent.RemoveScroll"),as=c.forwardRef((a,d)=>{let{__scopeSelect:e,position:f="item-aligned",onCloseAutoFocus:g,onEscapeKeyDown:h,onPointerDownOutside:i,side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s,...t}=a,u=ad(an,e),[v,w]=c.useState(null),[x,y]=c.useState(null),z=(0,D.useComposedRefs)(d,a=>w(a)),[A,C]=c.useState(null),[E,F]=c.useState(null),J=Z(e),[K,L]=c.useState(!1),M=c.useRef(!1);c.useEffect(()=>{if(v)return(0,T.hideOthers)(v)},[v]),(0,H.useFocusGuards)();let N=c.useCallback(a=>{let[b,...c]=J().map(a=>a.ref.current),[d]=c.slice(-1),e=document.activeElement;for(let c of a)if(c===e||(c?.scrollIntoView({block:"nearest"}),c===b&&x&&(x.scrollTop=0),c===d&&x&&(x.scrollTop=x.scrollHeight),c?.focus(),document.activeElement!==e))return},[J,x]),O=c.useCallback(()=>N([A,v]),[N,A,v]);c.useEffect(()=>{K&&O()},[K,O]);let{onOpenChange:P,triggerPointerDownPosRef:Q}=u;c.useEffect(()=>{if(v){let a={x:0,y:0},b=b=>{a={x:Math.abs(Math.round(b.pageX)-(Q.current?.x??0)),y:Math.abs(Math.round(b.pageY)-(Q.current?.y??0))}},c=c=>{a.x<=10&&a.y<=10?c.preventDefault():v.contains(c.target)||P(!1),document.removeEventListener("pointermove",b),Q.current=null};return null!==Q.current&&(document.addEventListener("pointermove",b),document.addEventListener("pointerup",c,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",b),document.removeEventListener("pointerup",c,{capture:!0})}}},[v,P,Q]),c.useEffect(()=>{let a=()=>P(!1);return window.addEventListener("blur",a),window.addEventListener("resize",a),()=>{window.removeEventListener("blur",a),window.removeEventListener("resize",a)}},[P]);let[R,S]=aX(a=>{let b=J().filter(a=>!a.disabled),c=b.find(a=>a.ref.current===document.activeElement),d=aY(b,a,c);d&&setTimeout(()=>d.ref.current.focus())}),V=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&(C(a),d&&(M.current=!0))},[u.value]),W=c.useCallback(()=>v?.focus(),[v]),X=c.useCallback((a,b,c)=>{let d=!M.current&&!c;(void 0!==u.value&&u.value===b||d)&&F(a)},[u.value]),Y="popper"===f?au:at,$=Y===au?{side:j,sideOffset:k,align:l,alignOffset:m,arrowPadding:n,collisionBoundary:o,collisionPadding:p,sticky:q,hideWhenDetached:r,avoidCollisions:s}:{};return(0,b.jsx)(ap,{scope:e,content:v,viewport:x,onViewportChange:y,itemRefCallback:V,selectedItem:A,onItemLeave:W,itemTextRefCallback:X,focusSelectedItem:O,selectedItemText:E,position:f,isPositioned:K,searchRef:R,children:(0,b.jsx)(U.RemoveScroll,{as:ar,allowPinchZoom:!0,children:(0,b.jsx)(I.FocusScope,{asChild:!0,trapped:u.open,onMountAutoFocus:a=>{a.preventDefault()},onUnmountAutoFocus:(0,B.composeEventHandlers)(g,a=>{u.trigger?.focus({preventScroll:!0}),a.preventDefault()}),children:(0,b.jsx)(G.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:h,onPointerDownOutside:i,onFocusOutside:a=>a.preventDefault(),onDismiss:()=>u.onOpenChange(!1),children:(0,b.jsx)(Y,{role:"listbox",id:u.contentId,"data-state":u.open?"open":"closed",dir:u.dir,onContextMenu:a=>a.preventDefault(),...t,...$,onPlaced:()=>L(!0),ref:z,style:{display:"flex",flexDirection:"column",outline:"none",...t.style},onKeyDown:(0,B.composeEventHandlers)(t.onKeyDown,a=>{let b=a.ctrlKey||a.altKey||a.metaKey;if("Tab"===a.key&&a.preventDefault(),b||1!==a.key.length||S(a.key),["ArrowUp","ArrowDown","Home","End"].includes(a.key)){let b=J().filter(a=>!a.disabled).map(a=>a.ref.current);if(["ArrowUp","End"].includes(a.key)&&(b=b.slice().reverse()),["ArrowUp","ArrowDown"].includes(a.key)){let c=a.target,d=b.indexOf(c);b=b.slice(d+1)}setTimeout(()=>N(b)),a.preventDefault()}})})})})})})});as.displayName="SelectContentImpl";var at=c.forwardRef((a,d)=>{let{__scopeSelect:e,onPlaced:f,...g}=a,h=ad(an,e),i=aq(an,e),[j,k]=c.useState(null),[l,m]=c.useState(null),n=(0,D.useComposedRefs)(d,a=>m(a)),o=Z(e),p=c.useRef(!1),q=c.useRef(!0),{viewport:r,selectedItem:s,selectedItemText:t,focusSelectedItem:u}=i,v=c.useCallback(()=>{if(h.trigger&&h.valueNode&&j&&l&&r&&s&&t){let a=h.trigger.getBoundingClientRect(),b=l.getBoundingClientRect(),c=h.valueNode.getBoundingClientRect(),d=t.getBoundingClientRect();if("rtl"!==h.dir){let e=d.left-b.left,f=c.left-e,g=a.left-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.left=l+"px"}else{let e=b.right-d.right,f=window.innerWidth-c.right-e,g=window.innerWidth-a.right-f,h=a.width+g,i=Math.max(h,b.width),k=window.innerWidth-10,l=(0,A.clamp)(f,[10,Math.max(10,k-i)]);j.style.minWidth=h+"px",j.style.right=l+"px"}let e=o(),g=window.innerHeight-20,i=r.scrollHeight,k=window.getComputedStyle(l),m=parseInt(k.borderTopWidth,10),n=parseInt(k.paddingTop,10),q=parseInt(k.borderBottomWidth,10),u=m+n+i+parseInt(k.paddingBottom,10)+q,v=Math.min(5*s.offsetHeight,u),w=window.getComputedStyle(r),x=parseInt(w.paddingTop,10),y=parseInt(w.paddingBottom,10),z=a.top+a.height/2-10,B=s.offsetHeight/2,C=m+n+(s.offsetTop+B);if(C<=z){let a=e.length>0&&s===e[e.length-1].ref.current;j.style.bottom="0px";let b=Math.max(g-z,B+(a?y:0)+(l.clientHeight-r.offsetTop-r.offsetHeight)+q);j.style.height=C+b+"px"}else{let a=e.length>0&&s===e[0].ref.current;j.style.top="0px";let b=Math.max(z,m+r.offsetTop+(a?x:0)+B);j.style.height=b+(u-C)+"px",r.scrollTop=C-z+r.offsetTop}j.style.margin="10px 0",j.style.minHeight=v+"px",j.style.maxHeight=g+"px",f?.(),requestAnimationFrame(()=>p.current=!0)}},[o,h.trigger,h.valueNode,j,l,r,s,t,h.dir,f]);(0,Q.useLayoutEffect)(()=>v(),[v]);let[w,x]=c.useState();(0,Q.useLayoutEffect)(()=>{l&&x(window.getComputedStyle(l).zIndex)},[l]);let y=c.useCallback(a=>{a&&!0===q.current&&(v(),u?.(),q.current=!1)},[v,u]);return(0,b.jsx)(av,{scope:e,contentWrapper:j,shouldExpandOnScrollRef:p,onScrollButtonChange:y,children:(0,b.jsx)("div",{ref:k,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:w},children:(0,b.jsx)(M.Primitive.div,{...g,ref:n,style:{boxSizing:"border-box",maxHeight:"100%",...g.style}})})})});at.displayName="SelectItemAlignedPosition";var au=c.forwardRef((a,c)=>{let{__scopeSelect:d,align:e="start",collisionPadding:f=10,...g}=a,h=ab(d);return(0,b.jsx)(K.Content,{...h,...g,ref:c,align:e,collisionPadding:f,style:{boxSizing:"border-box",...g.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});au.displayName="SelectPopperPosition";var[av,aw]=_(an,{}),ax="SelectViewport",ay=c.forwardRef((a,d)=>{let{__scopeSelect:e,nonce:f,...g}=a,h=aq(ax,e),i=aw(ax,e),j=(0,D.useComposedRefs)(d,h.onViewportChange),k=c.useRef(0);return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:f}),(0,b.jsx)(Y.Slot,{scope:e,children:(0,b.jsx)(M.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...g,ref:j,style:{position:"relative",flex:1,overflow:"hidden auto",...g.style},onScroll:(0,B.composeEventHandlers)(g.onScroll,a=>{let b=a.currentTarget,{contentWrapper:c,shouldExpandOnScrollRef:d}=i;if(d?.current&&c){let a=Math.abs(k.current-b.scrollTop);if(a>0){let d=window.innerHeight-20,e=Math.max(parseFloat(c.style.minHeight),parseFloat(c.style.height));if(e<d){let f=e+a,g=Math.min(d,f),h=f-g;c.style.height=g+"px","0px"===c.style.bottom&&(b.scrollTop=h>0?h:0,c.style.justifyContent="flex-end")}}}k.current=b.scrollTop})})})]})});ay.displayName=ax;var az="SelectGroup",[aA,aB]=_(az),aC=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=(0,J.useId)();return(0,b.jsx)(aA,{scope:d,id:f,children:(0,b.jsx)(M.Primitive.div,{role:"group","aria-labelledby":f,...e,ref:c})})});aC.displayName=az;var aD="SelectLabel",aE=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=aB(aD,d);return(0,b.jsx)(M.Primitive.div,{id:f.id,...e,ref:c})});aE.displayName=aD;var aF="SelectItem",[aG,aH]=_(aF),aI=c.forwardRef((a,d)=>{let{__scopeSelect:e,value:f,disabled:g=!1,textValue:h,...i}=a,j=ad(aF,e),k=aq(aF,e),l=j.value===f,[m,n]=c.useState(h??""),[o,p]=c.useState(!1),q=(0,D.useComposedRefs)(d,a=>k.itemRefCallback?.(a,f,g)),r=(0,J.useId)(),s=c.useRef("touch"),t=()=>{g||(j.onValueChange(f),j.onOpenChange(!1))};if(""===f)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,b.jsx)(aG,{scope:e,value:f,disabled:g,textId:r,isSelected:l,onItemTextChange:c.useCallback(a=>{n(b=>b||(a?.textContent??"").trim())},[]),children:(0,b.jsx)(Y.ItemSlot,{scope:e,value:f,disabled:g,textValue:m,children:(0,b.jsx)(M.Primitive.div,{role:"option","aria-labelledby":r,"data-highlighted":o?"":void 0,"aria-selected":l&&o,"data-state":l?"checked":"unchecked","aria-disabled":g||void 0,"data-disabled":g?"":void 0,tabIndex:g?void 0:-1,...i,ref:q,onFocus:(0,B.composeEventHandlers)(i.onFocus,()=>p(!0)),onBlur:(0,B.composeEventHandlers)(i.onBlur,()=>p(!1)),onClick:(0,B.composeEventHandlers)(i.onClick,()=>{"mouse"!==s.current&&t()}),onPointerUp:(0,B.composeEventHandlers)(i.onPointerUp,()=>{"mouse"===s.current&&t()}),onPointerDown:(0,B.composeEventHandlers)(i.onPointerDown,a=>{s.current=a.pointerType}),onPointerMove:(0,B.composeEventHandlers)(i.onPointerMove,a=>{s.current=a.pointerType,g?k.onItemLeave?.():"mouse"===s.current&&a.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,B.composeEventHandlers)(i.onPointerLeave,a=>{a.currentTarget===document.activeElement&&k.onItemLeave?.()}),onKeyDown:(0,B.composeEventHandlers)(i.onKeyDown,a=>{(k.searchRef?.current===""||" "!==a.key)&&(W.includes(a.key)&&t()," "===a.key&&a.preventDefault())})})})})});aI.displayName=aF;var aJ="SelectItemText",aK=c.forwardRef((a,d)=>{let{__scopeSelect:e,className:f,style:g,...h}=a,i=ad(aJ,e),j=aq(aJ,e),k=aH(aJ,e),l=af(aJ,e),[m,n]=c.useState(null),o=(0,D.useComposedRefs)(d,a=>n(a),k.onItemTextChange,a=>j.itemTextRefCallback?.(a,k.value,k.disabled)),p=m?.textContent,q=c.useMemo(()=>(0,b.jsx)("option",{value:k.value,disabled:k.disabled,children:p},k.value),[k.disabled,k.value,p]),{onNativeOptionAdd:r,onNativeOptionRemove:s}=l;return(0,Q.useLayoutEffect)(()=>(r(q),()=>s(q)),[r,s,q]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(M.Primitive.span,{id:k.textId,...h,ref:o}),k.isSelected&&i.valueNode&&!i.valueNodeHasChildren?z.createPortal(h.children,i.valueNode):null]})});aK.displayName=aJ;var aL="SelectItemIndicator",aM=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return aH(aL,d).isSelected?(0,b.jsx)(M.Primitive.span,{"aria-hidden":!0,...e,ref:c}):null});aM.displayName=aL;var aN="SelectScrollUpButton",aO=c.forwardRef((a,d)=>{let e=aq(aN,a.__scopeSelect),f=aw(aN,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){h(b.scrollTop>0)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop-b.offsetHeight)}}):null});aO.displayName=aN;var aP="SelectScrollDownButton",aQ=c.forwardRef((a,d)=>{let e=aq(aP,a.__scopeSelect),f=aw(aP,a.__scopeSelect),[g,h]=c.useState(!1),i=(0,D.useComposedRefs)(d,f.onScrollButtonChange);return(0,Q.useLayoutEffect)(()=>{if(e.viewport&&e.isPositioned){let a=function(){let a=b.scrollHeight-b.clientHeight;h(Math.ceil(b.scrollTop)<a)},b=e.viewport;return a(),b.addEventListener("scroll",a),()=>b.removeEventListener("scroll",a)}},[e.viewport,e.isPositioned]),g?(0,b.jsx)(aR,{...a,ref:i,onAutoScroll:()=>{let{viewport:a,selectedItem:b}=e;a&&b&&(a.scrollTop=a.scrollTop+b.offsetHeight)}}):null});aQ.displayName=aP;var aR=c.forwardRef((a,d)=>{let{__scopeSelect:e,onAutoScroll:f,...g}=a,h=aq("SelectScrollButton",e),i=c.useRef(null),j=Z(e),k=c.useCallback(()=>{null!==i.current&&(window.clearInterval(i.current),i.current=null)},[]);return c.useEffect(()=>()=>k(),[k]),(0,Q.useLayoutEffect)(()=>{let a=j().find(a=>a.ref.current===document.activeElement);a?.ref.current?.scrollIntoView({block:"nearest"})},[j]),(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...g,ref:d,style:{flexShrink:0,...g.style},onPointerDown:(0,B.composeEventHandlers)(g.onPointerDown,()=>{null===i.current&&(i.current=window.setInterval(f,50))}),onPointerMove:(0,B.composeEventHandlers)(g.onPointerMove,()=>{h.onItemLeave?.(),null===i.current&&(i.current=window.setInterval(f,50))}),onPointerLeave:(0,B.composeEventHandlers)(g.onPointerLeave,()=>{k()})})}),aS=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a;return(0,b.jsx)(M.Primitive.div,{"aria-hidden":!0,...e,ref:c})});aS.displayName="SelectSeparator";var aT="SelectArrow",aU=c.forwardRef((a,c)=>{let{__scopeSelect:d,...e}=a,f=ab(d),g=ad(aT,d),h=aq(aT,d);return g.open&&"popper"===h.position?(0,b.jsx)(K.Arrow,{...f,...e,ref:c}):null});aU.displayName=aT;var aV=c.forwardRef(({__scopeSelect:a,value:d,...e},f)=>{let g=c.useRef(null),h=(0,D.useComposedRefs)(f,g),i=(0,R.usePrevious)(d);return c.useEffect(()=>{let a=g.current;if(!a)return;let b=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==d&&b){let c=new Event("change",{bubbles:!0});b.call(a,d),a.dispatchEvent(c)}},[i,d]),(0,b.jsx)(M.Primitive.select,{...e,style:{...S.VISUALLY_HIDDEN_STYLES,...e.style},ref:h,defaultValue:d})});function aW(a){return""===a||void 0===a}function aX(a){let b=(0,O.useCallbackRef)(a),d=c.useRef(""),e=c.useRef(0),f=c.useCallback(a=>{let c=d.current+a;b(c),function a(b){d.current=b,window.clearTimeout(e.current),""!==b&&(e.current=window.setTimeout(()=>a(""),1e3))}(c)},[b]),g=c.useCallback(()=>{d.current="",window.clearTimeout(e.current)},[]);return c.useEffect(()=>()=>window.clearTimeout(e.current),[]),[d,f,g]}function aY(a,b,c){var d,e;let f=b.length>1&&Array.from(b).every(a=>a===b[0])?b[0]:b,g=c?a.indexOf(c):-1,h=(d=a,e=Math.max(g,0),d.map((a,b)=>d[(e+b)%d.length]));1===f.length&&(h=h.filter(a=>a!==c));let i=h.find(a=>a.textValue.toLowerCase().startsWith(f.toLowerCase()));return i!==c?i:void 0}aV.displayName="SelectBubbleInput",a.s(["Arrow",()=>aU,"Content",()=>ao,"Group",()=>aC,"Icon",()=>al,"Item",()=>aI,"ItemIndicator",()=>aM,"ItemText",()=>aK,"Label",()=>aE,"Portal",()=>am,"Root",()=>ag,"ScrollDownButton",()=>aQ,"ScrollUpButton",()=>aO,"Select",()=>ag,"SelectArrow",()=>aU,"SelectContent",()=>ao,"SelectGroup",()=>aC,"SelectIcon",()=>al,"SelectItem",()=>aI,"SelectItemIndicator",()=>aM,"SelectItemText",()=>aK,"SelectLabel",()=>aE,"SelectPortal",()=>am,"SelectScrollDownButton",()=>aQ,"SelectScrollUpButton",()=>aO,"SelectSeparator",()=>aS,"SelectTrigger",()=>ai,"SelectValue",()=>ak,"SelectViewport",()=>ay,"Separator",()=>aS,"Trigger",()=>ai,"Value",()=>ak,"Viewport",()=>ay,"createSelectScope",()=>aa],16252);var aZ=a.i(16252),aZ=aZ,a$=a.i(71716);let a_=(0,e.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),a0=aZ.Root;aZ.Group;let a1=aZ.Value,a2=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Trigger,{ref:e,className:(0,t.cn)("border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...d,children:[c,(0,b.jsx)(aZ.Icon,{asChild:!0,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));a2.displayName=aZ.Trigger.displayName;let a3=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollUpButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a_,{className:"h-4 w-4"})}));a3.displayName=aZ.ScrollUpButton.displayName;let a4=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.ScrollDownButton,{ref:d,className:(0,t.cn)("flex cursor-default items-center justify-center py-1",a),...c,children:(0,b.jsx)(a$.ChevronDown,{className:"h-4 w-4"})}));a4.displayName=aZ.ScrollDownButton.displayName;let a5=c.forwardRef(({className:a,children:c,position:d="popper",...e},f)=>(0,b.jsx)(aZ.Portal,{children:(0,b.jsxs)(aZ.Content,{ref:f,className:(0,t.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md","popper"===d&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:d,...e,children:[(0,b.jsx)(a3,{}),(0,b.jsx)(aZ.Viewport,{className:(0,t.cn)("p-1","popper"===d&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:c}),(0,b.jsx)(a4,{})]})}));a5.displayName=aZ.Content.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Label,{ref:d,className:(0,t.cn)("px-2 py-1.5 text-sm font-semibold",a),...c})).displayName=aZ.Label.displayName;let a6=c.forwardRef(({className:a,children:c,...d},e)=>(0,b.jsxs)(aZ.Item,{ref:e,className:(0,t.cn)("focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,b.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,b.jsx)(aZ.ItemIndicator,{children:(0,b.jsx)(g.Check,{className:"h-4 w-4"})})}),(0,b.jsx)(aZ.ItemText,{children:c})]}));a6.displayName=aZ.Item.displayName,c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(aZ.Separator,{ref:d,className:(0,t.cn)("bg-muted -mx-1 my-1 h-px",a),...c})).displayName=aZ.Separator.displayName;var a7=a.i(25674);let a8=(0,a7.createServerReference)("402fe406e914e4f696422c4b1c1ed94544f5e9202d",a7.callServer,void 0,a7.findSourceMapURL,"updateSettingsAction");var a9=a.i(46847),ba=a.i(61640),bb=a.i(40617),bb=bb,bc=a.i(87926);function bd(a){return(0,b.jsx)(bb.default,{className:(0,t.cn)("h-4 w-4",a.className),...a})}function be({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/vscode.svg",alt:"VS Code",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bf({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/agents/cursor.jpeg",alt:"Cursor",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bg({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/windsurf.svg",alt:"Windsurf",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bh({className:a}){return(0,b.jsx)(ba.default,{src:"/icons/editors/zed.svg",alt:"Zed",width:24,height:24,className:(0,t.cn)("rounded-sm object-contain",a)})}function bi({className:a,...c}){return(0,b.jsx)(bc.Rocket,{className:(0,t.cn)("h-4 w-4",a),...c})}be.displayName="VsCodeIcon",bf.displayName="CursorEditorIcon",bg.displayName="WindsurfIcon",bh.displayName="ZedIcon",bi.displayName="AntigravityIcon";let bj={vscode:be,cursor:bf,windsurf:bg,zed:bh,antigravity:bi};var bk=a.i(61781);let bl=[{value:a9.AgentAuthMethod.Session,label:"Session"},{value:a9.AgentAuthMethod.Token,label:"Token"}],bm=[{value:a9.EditorType.VsCode,label:"VS Code"},{value:a9.EditorType.Cursor,label:"Cursor"},{value:a9.EditorType.Windsurf,label:"Windsurf"},{value:a9.EditorType.Zed,label:"Zed"},{value:a9.EditorType.Antigravity,label:"Antigravity"}],bn=[{id:"agent",label:"Agent",icon:h.Bot},{id:"environment",label:"Environment",icon:i.Terminal},{id:"workflow",label:"Workflow",icon:j.GitBranch},{id:"ci",label:"CI",icon:k},{id:"notifications",label:"Notifications",icon:l},{id:"feature-flags",label:"Flags",icon:m},{id:"database",label:"Database",icon:n}];function bo({label:a,description:c,htmlFor:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4 border-b py-2.5 last:border-b-0",children:[(0,b.jsxs)("div",{className:"min-w-0",children:[(0,b.jsx)(u.Label,{htmlFor:d,className:"cursor-pointer text-sm font-normal whitespace-nowrap",children:a}),c?(0,b.jsx)("p",{className:"text-muted-foreground text-[11px] leading-tight",children:c}):null]}),(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:e})]})}function bp({label:a,description:c,id:d,testId:e,checked:f,onChange:g,disabled:h}){return(0,b.jsx)(bo,{label:a,description:c,htmlFor:d,children:(0,b.jsx)(x.Switch,{id:d,"data-testid":e,checked:f,onCheckedChange:g,disabled:h,className:(0,t.cn)("cursor-pointer",h&&"cursor-not-allowed opacity-50")})})}function bq({icon:a,title:c,description:d,badge:e,testId:f,children:g}){return(0,b.jsxs)("div",{className:"bg-background rounded-lg border","data-testid":f,children:[(0,b.jsxs)("div",{className:"bg-muted/30 border-b px-4 py-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(a,{className:"text-muted-foreground h-3.5 w-3.5"}),(0,b.jsx)("h2",{className:"text-sm font-semibold",children:c}),e?(0,b.jsx)("span",{className:"bg-muted text-muted-foreground rounded px-1.5 py-0.5 text-[9px] font-medium tracking-wider uppercase",children:e}):null]}),(0,b.jsx)("p",{className:"text-muted-foreground mt-0.5 text-[11px]",children:d})]}),(0,b.jsx)("div",{className:"px-4",children:g})]})}function br({id:a,testId:c,value:d,onChange:e,onBlur:f,placeholder:g,min:h=1,max:i,step:j=1,suffix:k}){let l=""===d?void 0:parseInt(d,10);return(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsxs)("div",{className:"flex items-center overflow-hidden rounded-md border",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{e(String(Math.max(h,(l??parseInt(g,10))-j)))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-r transition-colors","aria-label":"Decrease",children:(0,b.jsx)(o.default,{className:"h-3 w-3"})}),(0,b.jsx)("input",{id:a,"data-testid":c,type:"text",inputMode:"numeric",pattern:"[0-9]*",value:d,placeholder:g,onChange:a=>{e(a.target.value.replace(/[^0-9]/g,""))},onBlur:f,className:"h-8 w-14 bg-transparent text-center text-xs outline-none"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a;a=l??parseInt(g,10),e(String(null!=i?Math.min(i,a+j):a+j))},onMouseUp:f,className:"text-muted-foreground hover:bg-muted hover:text-foreground flex h-8 w-7 cursor-pointer items-center justify-center border-l transition-colors","aria-label":"Increase",children:(0,b.jsx)(p.Plus,{className:"h-3 w-3"})})]}),k?(0,b.jsx)("span",{className:"text-muted-foreground text-[11px]",children:k}):null]})}function bs({children:a}){return(0,b.jsx)("div",{className:"border-b pt-3 pb-1",children:(0,b.jsx)("span",{className:"text-muted-foreground text-[10px] font-semibold tracking-wider uppercase",children:a})})}function bt({children:a,links:c}){return(0,b.jsxs)("div",{className:"hidden pt-2 lg:block",children:[(0,b.jsx)("p",{className:"text-muted-foreground/70 text-[11px] leading-relaxed",children:a}),null!=c&&c.length>0?(0,b.jsx)("div",{className:"mt-2 flex flex-col gap-1",children:c.map(a=>(0,b.jsxs)("a",{href:a.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-[10px] transition-colors",children:[(0,b.jsx)(q.ExternalLink,{className:"h-2.5 w-2.5"}),a.label]},a.href))}):null]})}function bu({settings:a,shepHome:e,dbFileSize:o}){let{showSaving:p,showSaved:q,save:u}=function(){let[a,b]=(0,c.useTransition)(),[d,e]=(0,c.useState)(!1),[f,g]=(0,c.useState)(!1),h=(0,c.useRef)(null),i=(0,c.useRef)(!1);return(0,c.useEffect)(()=>{a&&!d&&(e(!0),i.current=!1,h.current=setTimeout(()=>{h.current=null,i.current&&(e(!1),g(!0),setTimeout(()=>g(!1),2e3))},350)),!a&&d&&(i.current=!0,h.current||(e(!1),g(!0),setTimeout(()=>g(!1),2e3)))},[a,d]),{showSaving:d,showSaved:f,save:(0,c.useCallback)(a=>{b(async()=>{let b=await a8(a);b.success||s.toast.error(b.error??"Failed to save settings")})},[b])}}(),x=a.featureFlags??{skills:!1,envDeploy:!1,debug:!1},[z,A]=(0,c.useState)(a.agent.type),B=a.agent.authMethod,[C,D]=(0,c.useState)(a.agent.token??""),[E,F]=(0,c.useState)(!1),[G,H]=(0,c.useState)(a.environment.defaultEditor),I=a.environment.shellPreference,[J,K]=(0,c.useState)(a.workflow.openPrOnImplementationComplete),[L,M]=(0,c.useState)(a.workflow.approvalGateDefaults.pushOnImplementationComplete),[N,O]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPrd),[P,Q]=(0,c.useState)(a.workflow.approvalGateDefaults.allowPlan),[R,S]=(0,c.useState)(a.workflow.approvalGateDefaults.allowMerge),[T,U]=(0,c.useState)(a.workflow.enableEvidence),[V,W]=(0,c.useState)(a.workflow.commitEvidence),[X,Y]=(0,c.useState)(null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):""),[Z,$]=(0,c.useState)(null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):""),[_,aa]=(0,c.useState)(null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):""),[ab,ac]=(0,c.useState)(a.notifications.inApp.enabled),[ad,ae]=(0,c.useState)(a.notifications.browser.enabled),[af,ag]=(0,c.useState)(a.notifications.desktop.enabled),[ah,ai]=(0,c.useState)({...a.notifications.events}),[aj,ak]=(0,c.useState)({...x}),al=null!=a.workflow.ciMaxFixAttempts?String(a.workflow.ciMaxFixAttempts):"",am=null!=a.workflow.ciWatchTimeoutMs?String(Math.round(a.workflow.ciWatchTimeoutMs/1e3)):"",an=null!=a.workflow.ciLogMaxChars?String(a.workflow.ciLogMaxChars):"";function ao(a){if(""===a)return;let b=parseInt(a,10);return Number.isNaN(b)||b<=0?void 0:b}function ap(a={}){let b=ao(a.ciTimeout??Z);return{workflow:{openPrOnImplementationComplete:a.openPr??J,approvalGateDefaults:{pushOnImplementationComplete:a.pushOnComplete??L,allowPrd:a.allowPrd??N,allowPlan:a.allowPlan??P,allowMerge:a.allowMerge??R},enableEvidence:a.enableEvidence??T,commitEvidence:a.commitEvidence??V,ciMaxFixAttempts:ao(a.ciMaxFix??X),ciWatchTimeoutMs:null!=b?1e3*b:void 0,ciLogMaxChars:ao(a.ciLogMax??_)}}}function aq(a={}){return{notifications:{inApp:{enabled:a.inApp??ab},browser:{enabled:a.browser??ad},desktop:{enabled:a.desktop??af},events:a.events??ah}}}let[ar,as]=(0,c.useState)("agent");(0,c.useEffect)(()=>{let a=bn.map(a=>document.getElementById(`section-${a.id}`)).filter(Boolean);if(0===a.length)return;let b=new IntersectionObserver(a=>{for(let b of a)b.isIntersecting&&as(b.target.id.replace("section-",""))},{rootMargin:"-65px 0px -60% 0px",threshold:0});for(let c of a)b.observe(c);return()=>b.disconnect()},[]);let at=(0,c.useCallback)(a=>{let b=document.getElementById(`section-${a}`);b&&(b.scrollIntoView({behavior:"smooth",block:"start"}),b.style.animation="none",b.offsetHeight,b.style.animation="section-flash 1s ease-out")},[]);return(0,b.jsxs)("div",{"data-testid":"settings-page-client",className:"max-w-5xl",children:[(0,b.jsx)("div",{className:"bg-background/95 supports-backdrop-filter:bg-background/80 sticky top-0 z-10 grid grid-cols-1 gap-x-5 pt-6 pb-4 backdrop-blur lg:grid-cols-[1fr_280px]",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(r,{className:"text-muted-foreground h-4 w-4"}),(0,b.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Settings"}),(0,b.jsxs)("span",{className:"relative h-4 w-16",children:[(0,b.jsx)("span",{className:(0,t.cn)("text-muted-foreground absolute inset-0 flex items-center text-xs transition-opacity duration-300",p?"opacity-100":"opacity-0"),children:"Saving..."}),(0,b.jsxs)("span",{className:(0,t.cn)("absolute inset-0 flex items-center gap-1 text-xs text-green-600 transition-opacity duration-300",q&&!p?"opacity-100":"opacity-0"),children:[(0,b.jsx)(g.Check,{className:"h-3 w-3"}),"Saved"]})]}),(0,b.jsx)("nav",{className:"ml-auto flex items-center gap-0.5",children:bn.map(a=>{let c=a.icon,d=ar===a.id;return(0,b.jsxs)("button",{type:"button",onClick:()=>at(a.id),className:(0,t.cn)("flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-[11px] transition-all",d?"bg-accent text-foreground font-medium":"text-muted-foreground/60 hover:text-foreground hover:bg-accent/50"),children:[(0,b.jsx)(c,{className:"h-3 w-3"}),(0,b.jsx)("span",{className:"hidden sm:inline",children:a.label})]},a.id)})})]})}),(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{id:"section-agent",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:h.Bot,title:"Agent",description:"AI coding agent and authentication",testId:"agent-settings-section",children:[(0,b.jsx)(bo,{label:"Agent & Model",description:"Provider and model for all operations",htmlFor:"agent-model-picker",children:(0,b.jsx)(bk.AgentModelPicker,{initialAgentType:z,initialModel:a.models.default,mode:"settings",onAgentModelChange:a=>A(a),className:"w-55"})}),(0,b.jsx)(bo,{label:"Authentication",description:"How the agent authenticates",htmlFor:"auth-method",children:(0,b.jsx)(y.TooltipProvider,{children:(0,b.jsxs)(y.Tooltip,{children:[(0,b.jsx)(y.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsxs)(a0,{value:B,disabled:!0,children:[(0,b.jsx)(a2,{id:"auth-method","data-testid":"auth-method-select",className:"w-55 cursor-not-allowed text-xs opacity-60",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bl.map(a=>(0,b.jsx)(a6,{value:a.value,children:a.label},a.value))})]})})}),(0,b.jsx)(y.TooltipContent,{children:"Coming soon"})]})})}),B===a9.AgentAuthMethod.Token&&(0,b.jsx)(bo,{label:"API Token",htmlFor:"agent-token",children:(0,b.jsxs)("div",{className:"relative w-45",children:[(0,b.jsx)(v.Input,{id:"agent-token","data-testid":"agent-token-input",type:E?"text":"password",value:C,onChange:a=>D(a.target.value),onBlur:()=>{C!==(a.agent.token??"")&&u(function(a={}){let b={type:z,authMethod:B,...a},c={type:b.type,authMethod:b.authMethod};return b.authMethod===a9.AgentAuthMethod.Token&&(c.token=a.token??C),{agent:c}}({token:C}))},placeholder:"Enter token",className:"pr-8"}),(0,b.jsx)(w.Button,{type:"button",variant:"ghost",size:"sm",className:"absolute top-0 right-0 h-full px-2 hover:bg-transparent",onClick:()=>F(!E),"data-testid":"toggle-token-visibility","aria-label":E?"Hide token":"Show token",children:E?(0,b.jsx)(f,{className:"h-3 w-3"}):(0,b.jsx)(d.Eye,{className:"h-3 w-3"})})]})})]}),(0,b.jsx)(bt,{links:[{label:"Agent system",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/agent-system.md"},{label:"Adding agents",href:"https://github.com/shep-ai/cli/blob/main/docs/development/adding-agents.md"},{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Choose which AI coding agent powers your features. Each agent supports different models and capabilities. Authentication is resolved automatically via your active session."})]}),(0,b.jsxs)("div",{id:"section-environment",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsx)(bq,{icon:i.Terminal,title:"Environment",description:"Editor and shell preferences",testId:"environment-settings-section",children:(0,b.jsx)(bo,{label:"Default Editor",description:"Editor launched for file operations",htmlFor:"default-editor",children:(0,b.jsxs)(a0,{value:G,onValueChange:a=>{H(a),u({environment:{defaultEditor:a,shellPreference:I}})},children:[(0,b.jsx)(a2,{id:"default-editor","data-testid":"editor-select",className:"w-55 cursor-pointer text-xs",children:(0,b.jsx)(a1,{})}),(0,b.jsx)(a5,{children:bm.map(a=>{var c;let d=(c=a.value)&&c in bj?bj[c]:bd;return(0,b.jsx)(a6,{value:a.value,children:(0,b.jsxs)("span",{className:"flex items-center gap-2 text-xs",children:[(0,b.jsx)(d,{className:"h-4 w-4 shrink-0"}),a.label]})},a.value)})})]})})}),(0,b.jsx)(bt,{links:[{label:"Configuration guide",href:"https://github.com/shep-ai/cli/blob/main/docs/guides/configuration.md"}],children:"Your preferred editor is used when opening files for review or editing during the development workflow."})]}),(0,b.jsxs)("div",{id:"section-workflow",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:j.GitBranch,title:"Workflow",description:"Automation behavior after implementation",testId:"workflow-settings-section",children:[(0,b.jsx)(bs,{children:"Approve"}),(0,b.jsx)(bp,{label:"Auto-approve PRD",description:"Skip manual review of requirements",id:"allow-prd",testId:"switch-allow-prd",checked:N,onChange:a=>{O(a),u(ap({allowPrd:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Plan",description:"Skip manual review of implementation plan",id:"allow-plan",testId:"switch-allow-plan",checked:P,onChange:a=>{Q(a),u(ap({allowPlan:a}))}}),(0,b.jsx)(bp,{label:"Auto-approve Merge",description:"Merge without manual review",id:"allow-merge",testId:"switch-allow-merge",checked:R,onChange:a=>{S(a),u(ap({allowMerge:a}))}}),(0,b.jsx)(bs,{children:"Evidence"}),(0,b.jsx)(bp,{label:"Collect evidence",description:"Capture screenshots and artifacts after implementation",id:"enable-evidence",testId:"switch-enable-evidence",checked:T,onChange:a=>{U(a),a?u(ap({enableEvidence:a})):(W(!1),u(ap({enableEvidence:a,commitEvidence:!1})))}}),(0,b.jsx)(bp,{label:"Add evidence to PR",description:"Include evidence in the pull request body",id:"commit-evidence",testId:"switch-commit-evidence",checked:V,disabled:!T||!J,onChange:a=>{W(a),u(ap({commitEvidence:a}))}}),(0,b.jsx)(bs,{children:"Git"}),(0,b.jsx)(bp,{label:"Push on complete",description:"Push to remote when implementation finishes",id:"push-on-complete",testId:"switch-push-on-complete",checked:L,onChange:a=>{M(a),u(ap({pushOnComplete:a}))}}),(0,b.jsx)(bp,{label:"Open PR on complete",description:"Create a pull request when done",id:"open-pr",testId:"switch-open-pr",checked:J,onChange:a=>{K(a),a?u(ap({openPr:a})):(W(!1),u(ap({openPr:a,commitEvidence:!1})))}})]}),(0,b.jsx)(bt,{links:[{label:"Approval gates",href:"https://github.com/shep-ai/cli/blob/main/specs/016-hitl-approval-gates/spec.yaml"},{label:"Push & PR flags",href:"https://github.com/shep-ai/cli/blob/main/specs/037-feature-pr-push-flags/spec.yaml"}],children:"Control how autonomous each feature run is. Auto-approve skips the human review pause at each phase. Push and PR options control what happens after successful implementation."})]}),(0,b.jsxs)("div",{id:"section-ci",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:k,title:"Continuous Integration",description:"Limits and timeouts for CI monitoring",testId:"ci-settings-section",children:[(0,b.jsx)(bo,{label:"Max fix attempts",description:"Agent retries on failing CI",htmlFor:"ci-max-fix",children:(0,b.jsx)(br,{id:"ci-max-fix",testId:"ci-max-fix-input",placeholder:"3",value:X,onChange:Y,onBlur:()=>{X!==al&&u(ap({ciMaxFix:X}))},min:1,max:10})}),(0,b.jsx)(bo,{label:"Watch timeout",description:"Max wait for CI completion",htmlFor:"ci-timeout",children:(0,b.jsx)(br,{id:"ci-timeout",testId:"ci-timeout-input",placeholder:"300",value:Z,onChange:$,onBlur:()=>{Z!==am&&u(ap({ciTimeout:Z}))},min:30,step:30,suffix:"sec"})}),(0,b.jsx)(bo,{label:"Max log size",description:"Truncate CI logs beyond this limit",htmlFor:"ci-log-max",children:(0,b.jsx)(br,{id:"ci-log-max",testId:"ci-log-max-input",placeholder:"50000",value:_,onChange:aa,onBlur:()=>{_!==an&&u(ap({ciLogMax:_}))},min:1e3,step:5e3,suffix:"chars"})})]}),(0,b.jsx)(bt,{links:[{label:"CI/CD pipeline",href:"https://github.com/shep-ai/cli/blob/main/docs/development/cicd.md"},{label:"CI security gates",href:"https://github.com/shep-ai/cli/blob/main/specs/003-cicd-security-gates/spec.md"}],children:"When a feature completes, the agent can watch CI and auto-fix failures. These limits prevent runaway retries and control how much log output is sent to the agent for analysis."})]}),(0,b.jsxs)("div",{id:"section-notifications",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:l,title:"Notifications",description:"How and when you get notified",testId:"notification-settings-section",children:[(0,b.jsx)(bs,{children:"Channels"}),(0,b.jsx)(bp,{label:"In-app",description:"Notifications inside the Shep UI",id:"notif-in-app",testId:"switch-in-app",checked:ab,onChange:a=>{ac(a),u(aq({inApp:a}))}}),(0,b.jsx)(bp,{label:"Browser",description:"Push notifications via the browser",id:"notif-browser",testId:"switch-browser",checked:ad,onChange:a=>{ae(a),u(aq({browser:a}))}}),(0,b.jsx)(bp,{label:"Desktop",description:"Native OS notifications",id:"notif-desktop",testId:"switch-desktop",checked:af,onChange:a=>{ag(a),u(aq({desktop:a}))}}),(0,b.jsx)(bs,{children:"Agent Events"}),(0,b.jsx)(bp,{label:"Agent started",id:"notif-event-agentStarted",testId:"switch-event-agentStarted",checked:ah.agentStarted,onChange:a=>{let b={...ah,agentStarted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Phase completed",id:"notif-event-phaseCompleted",testId:"switch-event-phaseCompleted",checked:ah.phaseCompleted,onChange:a=>{let b={...ah,phaseCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Waiting approval",id:"notif-event-waitingApproval",testId:"switch-event-waitingApproval",checked:ah.waitingApproval,onChange:a=>{let b={...ah,waitingApproval:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent completed",id:"notif-event-agentCompleted",testId:"switch-event-agentCompleted",checked:ah.agentCompleted,onChange:a=>{let b={...ah,agentCompleted:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"Agent failed",id:"notif-event-agentFailed",testId:"switch-event-agentFailed",checked:ah.agentFailed,onChange:a=>{let b={...ah,agentFailed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bs,{children:"Pull Request Events"}),(0,b.jsx)(bp,{label:"PR merged",id:"notif-event-prMerged",testId:"switch-event-prMerged",checked:ah.prMerged,onChange:a=>{let b={...ah,prMerged:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR closed",id:"notif-event-prClosed",testId:"switch-event-prClosed",checked:ah.prClosed,onChange:a=>{let b={...ah,prClosed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks passed",id:"notif-event-prChecksPassed",testId:"switch-event-prChecksPassed",checked:ah.prChecksPassed,onChange:a=>{let b={...ah,prChecksPassed:a};ai(b),u(aq({events:b}))}}),(0,b.jsx)(bp,{label:"PR checks failed",id:"notif-event-prChecksFailed",testId:"switch-event-prChecksFailed",checked:ah.prChecksFailed,onChange:a=>{let b={...ah,prChecksFailed:a};ai(b),u(aq({events:b}))}})]}),(0,b.jsx)(bt,{links:[{label:"Notification system",href:"https://github.com/shep-ai/cli/blob/main/specs/021-agent-notifications/spec.yaml"}],children:"Three notification channels keep you in the loop: in-app toasts, browser push notifications, and native desktop alerts. Fine-tune which agent lifecycle events trigger a notification."})]}),(0,b.jsxs)("div",{id:"section-feature-flags",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:m,title:"Feature Flags",description:"Enable or disable experimental features",badge:"Experimental",testId:"feature-flags-settings-section",children:[(0,b.jsx)(bp,{label:"Skills",description:"Enable the skills system for agent capabilities",id:"flag-skills",testId:"switch-flag-skills",checked:aj.skills,onChange:a=>{let b={...aj,skills:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Deployments",description:"Enable environment deployment workflows",id:"flag-envDeploy",testId:"switch-flag-envDeploy",checked:aj.envDeploy,onChange:a=>{let b={...aj,envDeploy:a};ak(b),u({featureFlags:b})}}),(0,b.jsx)(bp,{label:"Debug",description:"Show debug panels and verbose logging",id:"flag-debug",testId:"switch-flag-debug",checked:aj.debug,onChange:a=>{let b={...aj,debug:a};ak(b),u({featureFlags:b})}})]}),(0,b.jsx)(bt,{children:"Experimental features that are still under development. Enable at your own risk — they may change or be removed in future versions. Debug mode adds verbose logging useful for troubleshooting."})]}),(0,b.jsxs)("div",{id:"section-database",className:"grid scroll-mt-18 grid-cols-1 gap-x-5 rounded-lg lg:grid-cols-[1fr_280px]",children:[(0,b.jsxs)(bq,{icon:n,title:"Database",description:"Local storage information",testId:"database-settings-section",children:[(0,b.jsx)(bo,{label:"Location",description:"Path to the local SQLite database",children:(0,b.jsx)("span",{className:"text-muted-foreground max-w-50 truncate font-mono text-xs","data-testid":"shep-home-path",children:e})}),(0,b.jsx)(bo,{label:"Size",children:(0,b.jsx)("span",{className:"text-muted-foreground text-xs","data-testid":"db-file-size",children:o})})]}),(0,b.jsx)(bt,{links:[{label:"Settings service",href:"https://github.com/shep-ai/cli/blob/main/docs/architecture/settings-service.md"},{label:"Settings spec",href:"https://github.com/shep-ai/cli/blob/main/specs/005-global-settings-service/spec.md"}],children:"All settings are stored in a local SQLite database at ~/.shep/data. The database uses a singleton record pattern with automatic migrations on startup."})]})]})]})}a.s(["SettingsPageClient",()=>bu],79020)}];
2
2
 
3
3
  //# sourceMappingURL=b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map