orbital-command 0.1.4 → 0.3.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 (380) hide show
  1. package/bin/orbital.js +676 -53
  2. package/dist/assets/PrimitivesConfig-CrmQXYh4.js +32 -0
  3. package/dist/assets/QualityGates-BbasOsF3.js +21 -0
  4. package/dist/assets/SessionTimeline-CGeJsVvy.js +1 -0
  5. package/dist/assets/Settings-oiM496mc.js +12 -0
  6. package/dist/assets/SourceControl-B1fP2nJL.js +41 -0
  7. package/dist/assets/WorkflowVisualizer-CWLYf-f0.js +74 -0
  8. package/dist/assets/arrow-down-CPy85_J6.js +6 -0
  9. package/dist/assets/charts-DbDg0Psc.js +68 -0
  10. package/dist/assets/circle-x-Cwz6ZQDV.js +6 -0
  11. package/dist/assets/file-text-C46Xr65c.js +6 -0
  12. package/dist/assets/formatDistanceToNow-BMqsSP44.js +1 -0
  13. package/dist/assets/globe-Cn2yNZUD.js +6 -0
  14. package/dist/assets/index-Aj4sV8Al.css +1 -0
  15. package/dist/assets/index-Bc9dK3MW.js +354 -0
  16. package/dist/assets/key-OPaNTWJ5.js +6 -0
  17. package/dist/assets/minus-GMsbpKym.js +6 -0
  18. package/dist/assets/shield-DwAFkDYI.js +6 -0
  19. package/dist/assets/ui-BmsSg9jU.js +53 -0
  20. package/dist/assets/useWorkflowEditor-BJkTX_NR.js +16 -0
  21. package/dist/assets/{vendor-Dzv9lrRc.js → vendor-Bqt8AJn2.js} +1 -1
  22. package/dist/assets/zap-DfbUoOty.js +11 -0
  23. package/dist/favicon.svg +1 -0
  24. package/dist/index.html +6 -5
  25. package/dist/server/server/__tests__/data-routes.test.js +124 -0
  26. package/dist/server/server/__tests__/helpers/db.js +17 -0
  27. package/dist/server/server/__tests__/helpers/mock-emitter.js +8 -0
  28. package/dist/server/server/__tests__/scope-routes.test.js +137 -0
  29. package/dist/server/server/__tests__/sprint-routes.test.js +102 -0
  30. package/dist/server/server/__tests__/workflow-routes.test.js +107 -0
  31. package/dist/server/server/config-migrator.js +138 -0
  32. package/dist/server/server/config.js +17 -2
  33. package/dist/server/server/database.js +27 -12
  34. package/dist/server/server/global-config.js +143 -0
  35. package/dist/server/server/index.js +882 -252
  36. package/dist/server/server/init.js +579 -194
  37. package/dist/server/server/launch.js +29 -0
  38. package/dist/server/server/manifest-types.js +8 -0
  39. package/dist/server/server/manifest.js +454 -0
  40. package/dist/server/server/migrate-legacy.js +229 -0
  41. package/dist/server/server/parsers/event-parser.test.js +117 -0
  42. package/dist/server/server/parsers/scope-parser.js +74 -28
  43. package/dist/server/server/parsers/scope-parser.test.js +230 -0
  44. package/dist/server/server/project-context.js +255 -0
  45. package/dist/server/server/project-emitter.js +41 -0
  46. package/dist/server/server/project-manager.js +297 -0
  47. package/dist/server/server/routes/config-routes.js +1 -3
  48. package/dist/server/server/routes/data-routes.js +22 -110
  49. package/dist/server/server/routes/dispatch-routes.js +15 -9
  50. package/dist/server/server/routes/git-routes.js +74 -0
  51. package/dist/server/server/routes/manifest-routes.js +319 -0
  52. package/dist/server/server/routes/scope-routes.js +37 -23
  53. package/dist/server/server/routes/sync-routes.js +134 -0
  54. package/dist/server/server/routes/version-routes.js +1 -15
  55. package/dist/server/server/routes/workflow-routes.js +9 -3
  56. package/dist/server/server/schema.js +2 -0
  57. package/dist/server/server/services/batch-orchestrator.js +26 -16
  58. package/dist/server/server/services/claude-session-service.js +17 -14
  59. package/dist/server/server/services/deploy-service.test.js +119 -0
  60. package/dist/server/server/services/event-service.js +64 -1
  61. package/dist/server/server/services/event-service.test.js +191 -0
  62. package/dist/server/server/services/gate-service.test.js +105 -0
  63. package/dist/server/server/services/git-service.js +108 -4
  64. package/dist/server/server/services/github-service.js +110 -2
  65. package/dist/server/server/services/readiness-service.test.js +190 -0
  66. package/dist/server/server/services/scope-cache.js +5 -1
  67. package/dist/server/server/services/scope-cache.test.js +142 -0
  68. package/dist/server/server/services/scope-service.js +217 -126
  69. package/dist/server/server/services/scope-service.test.js +137 -0
  70. package/dist/server/server/services/sprint-orchestrator.js +7 -6
  71. package/dist/server/server/services/sprint-service.js +21 -1
  72. package/dist/server/server/services/sprint-service.test.js +238 -0
  73. package/dist/server/server/services/sync-service.js +434 -0
  74. package/dist/server/server/services/sync-types.js +2 -0
  75. package/dist/server/server/services/telemetry-service.js +143 -0
  76. package/dist/server/server/services/workflow-service.js +26 -5
  77. package/dist/server/server/services/workflow-service.test.js +159 -0
  78. package/dist/server/server/settings-sync.js +284 -0
  79. package/dist/server/server/update-planner.js +279 -0
  80. package/dist/server/server/utils/cc-hooks-parser.js +3 -0
  81. package/dist/server/server/utils/cc-hooks-parser.test.js +86 -0
  82. package/dist/server/server/utils/dispatch-utils.js +77 -20
  83. package/dist/server/server/utils/dispatch-utils.test.js +182 -0
  84. package/dist/server/server/utils/logger.js +37 -3
  85. package/dist/server/server/utils/package-info.js +30 -0
  86. package/dist/server/server/utils/route-helpers.js +10 -0
  87. package/dist/server/server/utils/terminal-launcher.js +79 -25
  88. package/dist/server/server/utils/worktree-manager.js +13 -4
  89. package/dist/server/server/validator.js +230 -0
  90. package/dist/server/server/watchers/global-watcher.js +63 -0
  91. package/dist/server/server/watchers/scope-watcher.js +27 -12
  92. package/dist/server/server/wizard/config-editor.js +237 -0
  93. package/dist/server/server/wizard/detect.js +96 -0
  94. package/dist/server/server/wizard/doctor.js +115 -0
  95. package/dist/server/server/wizard/index.js +155 -0
  96. package/dist/server/server/wizard/phases/confirm.js +39 -0
  97. package/dist/server/server/wizard/phases/project-setup.js +90 -0
  98. package/dist/server/server/wizard/phases/setup-wizard.js +66 -0
  99. package/dist/server/server/wizard/phases/welcome.js +35 -0
  100. package/dist/server/server/wizard/phases/workflow-setup.js +22 -0
  101. package/dist/server/server/wizard/types.js +29 -0
  102. package/dist/server/server/wizard/ui.js +74 -0
  103. package/dist/server/shared/__fixtures__/workflow-configs.js +75 -0
  104. package/dist/server/shared/default-workflow.json +65 -0
  105. package/dist/server/shared/onboarding-tour.test.js +81 -0
  106. package/dist/server/shared/project-colors.js +24 -0
  107. package/dist/server/shared/workflow-config.test.js +84 -0
  108. package/dist/server/shared/workflow-engine.test.js +302 -0
  109. package/dist/server/shared/workflow-normalizer.js +101 -0
  110. package/dist/server/shared/workflow-normalizer.test.js +100 -0
  111. package/dist/server/src/components/onboarding/tour-steps.js +84 -0
  112. package/package.json +20 -15
  113. package/schemas/orbital.config.schema.json +16 -1
  114. package/scripts/postinstall.js +55 -7
  115. package/server/__tests__/data-routes.test.ts +149 -0
  116. package/server/__tests__/helpers/db.ts +19 -0
  117. package/server/__tests__/helpers/mock-emitter.ts +10 -0
  118. package/server/__tests__/scope-routes.test.ts +157 -0
  119. package/server/__tests__/sprint-routes.test.ts +118 -0
  120. package/server/__tests__/workflow-routes.test.ts +120 -0
  121. package/server/config-migrator.ts +163 -0
  122. package/server/config.ts +26 -2
  123. package/server/database.ts +35 -18
  124. package/server/global-config.ts +200 -0
  125. package/server/index.ts +975 -287
  126. package/server/init.ts +625 -182
  127. package/server/launch.ts +32 -0
  128. package/server/manifest-types.ts +145 -0
  129. package/server/manifest.ts +494 -0
  130. package/server/migrate-legacy.ts +290 -0
  131. package/server/parsers/event-parser.test.ts +135 -0
  132. package/server/parsers/scope-parser.test.ts +270 -0
  133. package/server/parsers/scope-parser.ts +79 -31
  134. package/server/project-context.ts +309 -0
  135. package/server/project-emitter.ts +50 -0
  136. package/server/project-manager.ts +369 -0
  137. package/server/routes/config-routes.ts +3 -5
  138. package/server/routes/data-routes.ts +28 -141
  139. package/server/routes/dispatch-routes.ts +19 -11
  140. package/server/routes/git-routes.ts +77 -0
  141. package/server/routes/manifest-routes.ts +388 -0
  142. package/server/routes/scope-routes.ts +29 -25
  143. package/server/routes/sync-routes.ts +175 -0
  144. package/server/routes/version-routes.ts +1 -16
  145. package/server/routes/workflow-routes.ts +9 -3
  146. package/server/schema.ts +2 -0
  147. package/server/services/batch-orchestrator.ts +24 -16
  148. package/server/services/claude-session-service.ts +16 -14
  149. package/server/services/deploy-service.test.ts +145 -0
  150. package/server/services/deploy-service.ts +2 -2
  151. package/server/services/event-service.test.ts +242 -0
  152. package/server/services/event-service.ts +92 -3
  153. package/server/services/gate-service.test.ts +131 -0
  154. package/server/services/gate-service.ts +2 -2
  155. package/server/services/git-service.ts +137 -4
  156. package/server/services/github-service.ts +120 -2
  157. package/server/services/readiness-service.test.ts +217 -0
  158. package/server/services/scope-cache.test.ts +167 -0
  159. package/server/services/scope-cache.ts +4 -1
  160. package/server/services/scope-service.test.ts +169 -0
  161. package/server/services/scope-service.ts +220 -126
  162. package/server/services/sprint-orchestrator.ts +7 -7
  163. package/server/services/sprint-service.test.ts +271 -0
  164. package/server/services/sprint-service.ts +27 -3
  165. package/server/services/sync-service.ts +482 -0
  166. package/server/services/sync-types.ts +77 -0
  167. package/server/services/telemetry-service.ts +195 -0
  168. package/server/services/workflow-service.test.ts +190 -0
  169. package/server/services/workflow-service.ts +29 -9
  170. package/server/settings-sync.ts +359 -0
  171. package/server/update-planner.ts +346 -0
  172. package/server/utils/cc-hooks-parser.test.ts +96 -0
  173. package/server/utils/cc-hooks-parser.ts +4 -0
  174. package/server/utils/dispatch-utils.test.ts +245 -0
  175. package/server/utils/dispatch-utils.ts +97 -27
  176. package/server/utils/logger.ts +40 -3
  177. package/server/utils/package-info.ts +32 -0
  178. package/server/utils/route-helpers.ts +12 -0
  179. package/server/utils/terminal-launcher.ts +85 -25
  180. package/server/utils/worktree-manager.ts +9 -4
  181. package/server/validator.ts +270 -0
  182. package/server/watchers/global-watcher.ts +77 -0
  183. package/server/watchers/scope-watcher.ts +21 -9
  184. package/server/wizard/config-editor.ts +248 -0
  185. package/server/wizard/detect.ts +104 -0
  186. package/server/wizard/doctor.ts +114 -0
  187. package/server/wizard/index.ts +187 -0
  188. package/server/wizard/phases/confirm.ts +45 -0
  189. package/server/wizard/phases/project-setup.ts +106 -0
  190. package/server/wizard/phases/setup-wizard.ts +78 -0
  191. package/server/wizard/phases/welcome.ts +43 -0
  192. package/server/wizard/phases/workflow-setup.ts +28 -0
  193. package/server/wizard/types.ts +56 -0
  194. package/server/wizard/ui.ts +93 -0
  195. package/shared/__fixtures__/workflow-configs.ts +80 -0
  196. package/shared/default-workflow.json +65 -0
  197. package/shared/onboarding-tour.test.ts +94 -0
  198. package/shared/project-colors.ts +24 -0
  199. package/shared/workflow-config.test.ts +111 -0
  200. package/shared/workflow-config.ts +7 -0
  201. package/shared/workflow-engine.test.ts +388 -0
  202. package/shared/workflow-normalizer.test.ts +119 -0
  203. package/shared/workflow-normalizer.ts +118 -0
  204. package/templates/hooks/end-session.sh +3 -1
  205. package/templates/hooks/orbital-emit.sh +2 -2
  206. package/templates/hooks/orbital-report-deploy.sh +4 -4
  207. package/templates/hooks/orbital-report-gates.sh +4 -4
  208. package/templates/hooks/orbital-scope-update.sh +1 -1
  209. package/templates/hooks/scope-create-cleanup.sh +2 -2
  210. package/templates/hooks/scope-create-gate.sh +0 -1
  211. package/templates/hooks/scope-helpers.sh +18 -0
  212. package/templates/hooks/scope-prepare.sh +66 -11
  213. package/templates/migrations/renames.json +1 -0
  214. package/templates/orbital.config.json +7 -2
  215. package/templates/settings-hooks.json +1 -1
  216. package/templates/skills/git-commit/SKILL.md +9 -4
  217. package/templates/skills/git-dev/SKILL.md +8 -3
  218. package/templates/skills/git-main/SKILL.md +8 -2
  219. package/templates/skills/git-production/SKILL.md +6 -2
  220. package/templates/skills/git-staging/SKILL.md +8 -3
  221. package/templates/skills/scope-create/SKILL.md +17 -3
  222. package/templates/skills/scope-fix-review/SKILL.md +6 -3
  223. package/templates/skills/scope-implement/SKILL.md +4 -1
  224. package/templates/skills/scope-post-review/SKILL.md +63 -5
  225. package/templates/skills/scope-pre-review/SKILL.md +5 -2
  226. package/templates/skills/scope-verify/SKILL.md +5 -3
  227. package/templates/skills/test-code-review/SKILL.md +41 -33
  228. package/templates/skills/test-scaffold/SKILL.md +222 -0
  229. package/dist/assets/WorkflowVisualizer-BZ21PIIF.js +0 -84
  230. package/dist/assets/charts-D__PA1zp.js +0 -72
  231. package/dist/assets/index-D1G6i0nS.css +0 -1
  232. package/dist/assets/index-DpItvKpf.js +0 -419
  233. package/dist/assets/ui-BvF022GT.js +0 -53
  234. package/index.html +0 -15
  235. package/postcss.config.js +0 -6
  236. package/src/App.tsx +0 -33
  237. package/src/components/AgentBadge.tsx +0 -40
  238. package/src/components/BatchPreflightModal.tsx +0 -115
  239. package/src/components/CardDisplayToggle.tsx +0 -74
  240. package/src/components/ColumnHeaderActions.tsx +0 -55
  241. package/src/components/ColumnMenu.tsx +0 -99
  242. package/src/components/DeployHistory.tsx +0 -141
  243. package/src/components/DispatchModal.tsx +0 -164
  244. package/src/components/DispatchPopover.tsx +0 -139
  245. package/src/components/DragOverlay.tsx +0 -25
  246. package/src/components/DriftSidebar.tsx +0 -140
  247. package/src/components/EnvironmentStrip.tsx +0 -88
  248. package/src/components/ErrorBoundary.tsx +0 -62
  249. package/src/components/FilterChip.tsx +0 -105
  250. package/src/components/GateIndicator.tsx +0 -33
  251. package/src/components/IdeaDetailModal.tsx +0 -190
  252. package/src/components/IdeaFormDialog.tsx +0 -113
  253. package/src/components/KanbanColumn.tsx +0 -201
  254. package/src/components/MarkdownRenderer.tsx +0 -114
  255. package/src/components/NeonGrid.tsx +0 -128
  256. package/src/components/PromotionQueue.tsx +0 -89
  257. package/src/components/ScopeCard.tsx +0 -234
  258. package/src/components/ScopeDetailModal.tsx +0 -255
  259. package/src/components/ScopeFilterBar.tsx +0 -152
  260. package/src/components/SearchInput.tsx +0 -102
  261. package/src/components/SessionPanel.tsx +0 -335
  262. package/src/components/SprintContainer.tsx +0 -303
  263. package/src/components/SprintDependencyDialog.tsx +0 -78
  264. package/src/components/SprintPreflightModal.tsx +0 -138
  265. package/src/components/StatusBar.tsx +0 -168
  266. package/src/components/SwimCell.tsx +0 -67
  267. package/src/components/SwimLaneRow.tsx +0 -94
  268. package/src/components/SwimlaneBoardView.tsx +0 -108
  269. package/src/components/VersionBadge.tsx +0 -139
  270. package/src/components/ViewModeSelector.tsx +0 -114
  271. package/src/components/config/AgentChip.tsx +0 -53
  272. package/src/components/config/AgentCreateDialog.tsx +0 -321
  273. package/src/components/config/AgentEditor.tsx +0 -175
  274. package/src/components/config/DirectoryTree.tsx +0 -582
  275. package/src/components/config/FileEditor.tsx +0 -550
  276. package/src/components/config/HookChip.tsx +0 -50
  277. package/src/components/config/StageCard.tsx +0 -198
  278. package/src/components/config/TransitionZone.tsx +0 -173
  279. package/src/components/config/UnifiedWorkflowPipeline.tsx +0 -216
  280. package/src/components/config/WorkflowPipeline.tsx +0 -161
  281. package/src/components/source-control/BranchList.tsx +0 -93
  282. package/src/components/source-control/BranchPanel.tsx +0 -105
  283. package/src/components/source-control/CommitLog.tsx +0 -100
  284. package/src/components/source-control/CommitRow.tsx +0 -47
  285. package/src/components/source-control/GitHubPanel.tsx +0 -110
  286. package/src/components/source-control/GitHubSetupGuide.tsx +0 -52
  287. package/src/components/source-control/GitOverviewBar.tsx +0 -101
  288. package/src/components/source-control/PullRequestList.tsx +0 -69
  289. package/src/components/source-control/WorktreeList.tsx +0 -80
  290. package/src/components/ui/badge.tsx +0 -41
  291. package/src/components/ui/button.tsx +0 -55
  292. package/src/components/ui/card.tsx +0 -78
  293. package/src/components/ui/dialog.tsx +0 -94
  294. package/src/components/ui/popover.tsx +0 -33
  295. package/src/components/ui/scroll-area.tsx +0 -54
  296. package/src/components/ui/separator.tsx +0 -28
  297. package/src/components/ui/tabs.tsx +0 -52
  298. package/src/components/ui/toggle-switch.tsx +0 -35
  299. package/src/components/ui/tooltip.tsx +0 -27
  300. package/src/components/workflow/AddEdgeDialog.tsx +0 -217
  301. package/src/components/workflow/AddListDialog.tsx +0 -201
  302. package/src/components/workflow/ChecklistEditor.tsx +0 -239
  303. package/src/components/workflow/CommandPrefixManager.tsx +0 -118
  304. package/src/components/workflow/ConfigSettingsPanel.tsx +0 -189
  305. package/src/components/workflow/DirectionSelector.tsx +0 -133
  306. package/src/components/workflow/DispatchConfigPanel.tsx +0 -180
  307. package/src/components/workflow/EdgeDetailPanel.tsx +0 -236
  308. package/src/components/workflow/EdgePropertyEditor.tsx +0 -251
  309. package/src/components/workflow/EditToolbar.tsx +0 -138
  310. package/src/components/workflow/HookDetailPanel.tsx +0 -250
  311. package/src/components/workflow/HookExecutionLog.tsx +0 -24
  312. package/src/components/workflow/HookSourceModal.tsx +0 -129
  313. package/src/components/workflow/HooksDashboard.tsx +0 -363
  314. package/src/components/workflow/ListPropertyEditor.tsx +0 -251
  315. package/src/components/workflow/MigrationPreviewDialog.tsx +0 -237
  316. package/src/components/workflow/MovementRulesPanel.tsx +0 -188
  317. package/src/components/workflow/NodeDetailPanel.tsx +0 -245
  318. package/src/components/workflow/PresetSelector.tsx +0 -414
  319. package/src/components/workflow/SkillCommandBuilder.tsx +0 -174
  320. package/src/components/workflow/WorkflowEdgeComponent.tsx +0 -145
  321. package/src/components/workflow/WorkflowNode.tsx +0 -147
  322. package/src/components/workflow/graphLayout.ts +0 -186
  323. package/src/components/workflow/mergeHooks.ts +0 -85
  324. package/src/components/workflow/useEditHistory.ts +0 -88
  325. package/src/components/workflow/useWorkflowEditor.ts +0 -262
  326. package/src/components/workflow/validateConfig.ts +0 -70
  327. package/src/hooks/useActiveDispatches.ts +0 -198
  328. package/src/hooks/useBoardSettings.ts +0 -170
  329. package/src/hooks/useCardDisplay.ts +0 -57
  330. package/src/hooks/useCcHooks.ts +0 -24
  331. package/src/hooks/useConfigTree.ts +0 -51
  332. package/src/hooks/useEnforcementRules.ts +0 -46
  333. package/src/hooks/useEvents.ts +0 -59
  334. package/src/hooks/useFileEditor.ts +0 -165
  335. package/src/hooks/useGates.ts +0 -57
  336. package/src/hooks/useIdeaActions.ts +0 -53
  337. package/src/hooks/useKanbanDnd.ts +0 -410
  338. package/src/hooks/useOrbitalConfig.ts +0 -54
  339. package/src/hooks/usePipeline.ts +0 -47
  340. package/src/hooks/usePipelineData.ts +0 -338
  341. package/src/hooks/useReconnect.ts +0 -25
  342. package/src/hooks/useScopeFilters.ts +0 -125
  343. package/src/hooks/useScopeSessions.ts +0 -44
  344. package/src/hooks/useScopes.ts +0 -67
  345. package/src/hooks/useSearch.ts +0 -67
  346. package/src/hooks/useSettings.tsx +0 -187
  347. package/src/hooks/useSocket.ts +0 -25
  348. package/src/hooks/useSourceControl.ts +0 -105
  349. package/src/hooks/useSprintPreflight.ts +0 -55
  350. package/src/hooks/useSprints.ts +0 -154
  351. package/src/hooks/useStatusBarHighlight.ts +0 -18
  352. package/src/hooks/useSwimlaneBoardSettings.ts +0 -104
  353. package/src/hooks/useTheme.ts +0 -9
  354. package/src/hooks/useTransitionReadiness.ts +0 -53
  355. package/src/hooks/useVersion.ts +0 -155
  356. package/src/hooks/useViolations.ts +0 -65
  357. package/src/hooks/useWorkflow.tsx +0 -125
  358. package/src/hooks/useZoomModifier.ts +0 -19
  359. package/src/index.css +0 -797
  360. package/src/layouts/DashboardLayout.tsx +0 -113
  361. package/src/lib/collisionDetection.ts +0 -20
  362. package/src/lib/scope-fields.ts +0 -61
  363. package/src/lib/swimlane.ts +0 -146
  364. package/src/lib/utils.ts +0 -15
  365. package/src/main.tsx +0 -19
  366. package/src/socket.ts +0 -11
  367. package/src/types/index.ts +0 -497
  368. package/src/views/AgentFeed.tsx +0 -339
  369. package/src/views/DeployPipeline.tsx +0 -59
  370. package/src/views/EnforcementView.tsx +0 -378
  371. package/src/views/PrimitivesConfig.tsx +0 -500
  372. package/src/views/QualityGates.tsx +0 -1012
  373. package/src/views/ScopeBoard.tsx +0 -454
  374. package/src/views/SessionTimeline.tsx +0 -516
  375. package/src/views/Settings.tsx +0 -183
  376. package/src/views/SourceControl.tsx +0 -95
  377. package/src/views/WorkflowVisualizer.tsx +0 -382
  378. package/tailwind.config.js +0 -161
  379. package/tsconfig.json +0 -25
  380. package/vite.config.ts +0 -49
@@ -0,0 +1,6 @@
1
+ import{c}from"./index-Bc9dK3MW.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],a=c("key",e);export{a as K};
@@ -0,0 +1,6 @@
1
+ import{c as o}from"./index-Bc9dK3MW.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const c=[["path",{d:"M5 12h14",key:"1ays0h"}]],e=o("minus",c);export{e as M};
@@ -0,0 +1,6 @@
1
+ import{c}from"./index-Bc9dK3MW.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],a=c("shield",e);export{a as S};
@@ -0,0 +1,53 @@
1
+ import{r as wo,a,b as Tn,R as On,c as bo,d as ae}from"./vendor-Bqt8AJn2.js";var at={exports:{}},Re={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var Qt;function xo(){if(Qt)return Re;Qt=1;var e=wo(),t=Symbol.for("react.element"),n=Symbol.for("react.fragment"),r=Object.prototype.hasOwnProperty,o=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function s(c,l,f){var u,d={},p=null,h=null;f!==void 0&&(p=""+f),l.key!==void 0&&(p=""+l.key),l.ref!==void 0&&(h=l.ref);for(u in l)r.call(l,u)&&!i.hasOwnProperty(u)&&(d[u]=l[u]);if(c&&c.defaultProps)for(u in l=c.defaultProps,l)d[u]===void 0&&(d[u]=l[u]);return{$$typeof:t,type:c,key:p,ref:h,props:d,_owner:o.current}}return Re.Fragment=n,Re.jsx=s,Re.jsxs=s,Re}var en;function So(){return en||(en=1,at.exports=xo()),at.exports}var w=So();function _(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function tn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Ge(...e){return t=>{let n=!1;const r=e.map(o=>{const i=tn(o,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let o=0;o<r.length;o++){const i=r[o];typeof i=="function"?i():tn(e[o],null)}}}}function j(...e){return a.useCallback(Ge(...e),e)}function Co(e,t){const n=a.createContext(t),r=i=>{const{children:s,...c}=i,l=a.useMemo(()=>c,Object.values(c));return w.jsx(n.Provider,{value:l,children:s})};r.displayName=e+"Provider";function o(i){const s=a.useContext(n);if(s)return s;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[r,o]}function de(e,t=[]){let n=[];function r(i,s){const c=a.createContext(s),l=n.length;n=[...n,s];const f=d=>{var y;const{scope:p,children:h,...g}=d,m=((y=p==null?void 0:p[e])==null?void 0:y[l])||c,v=a.useMemo(()=>g,Object.values(g));return w.jsx(m.Provider,{value:v,children:h})};f.displayName=i+"Provider";function u(d,p){var m;const h=((m=p==null?void 0:p[e])==null?void 0:m[l])||c,g=a.useContext(h);if(g)return g;if(s!==void 0)return s;throw new Error(`\`${d}\` must be used within \`${i}\``)}return[f,u]}const o=()=>{const i=n.map(s=>a.createContext(s));return function(c){const l=(c==null?void 0:c[e])||i;return a.useMemo(()=>({[`__scope${e}`]:{...c,[e]:l}}),[c,l])}};return o.scopeName=e,[r,Eo(o,...t)]}function Eo(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const s=r.reduce((c,{useScope:l,scopeName:f})=>{const d=l(i)[`__scope${f}`];return{...c,...d}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return n.scopeName=t.scopeName,n}function Ro(e){const t=Po(e),n=a.forwardRef((r,o)=>{const{children:i,...s}=r,c=a.Children.toArray(i),l=c.find(To);if(l){const f=l.props.children,u=c.map(d=>d===l?a.Children.count(f)>1?a.Children.only(null):a.isValidElement(f)?f.props.children:null:d);return w.jsx(t,{...s,ref:o,children:a.isValidElement(f)?a.cloneElement(f,void 0,u):null})}return w.jsx(t,{...s,ref:o,children:i})});return n.displayName=`${e}.Slot`,n}function Po(e){const t=a.forwardRef((n,r)=>{const{children:o,...i}=n;if(a.isValidElement(o)){const s=Do(o),c=Oo(i,o.props);return o.type!==a.Fragment&&(c.ref=r?Ge(r,s):s),a.cloneElement(o,c)}return a.Children.count(o)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ao=Symbol("radix.slottable");function To(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ao}function Oo(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...c)=>{const l=i(...c);return o(...c),l}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function Do(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var _o=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],I=_o.reduce((e,t)=>{const n=Ro(`Primitive.${t}`),r=a.forwardRef((o,i)=>{const{asChild:s,...c}=o,l=s?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),w.jsx(l,{...c,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function No(e,t){e&&Tn.flushSync(()=>e.dispatchEvent(t))}function B(e){const t=a.useRef(e);return a.useEffect(()=>{t.current=e}),a.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function Io(e,t=globalThis==null?void 0:globalThis.document){const n=B(e);a.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var Lo="DismissableLayer",bt="dismissableLayer.update",Mo="dismissableLayer.pointerDownOutside",Fo="dismissableLayer.focusOutside",nn,Dn=a.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Tt=a.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:s,onDismiss:c,...l}=e,f=a.useContext(Dn),[u,d]=a.useState(null),p=(u==null?void 0:u.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,h]=a.useState({}),g=j(t,E=>d(E)),m=Array.from(f.layers),[v]=[...f.layersWithOutsidePointerEventsDisabled].slice(-1),y=m.indexOf(v),x=u?m.indexOf(u):-1,S=f.layersWithOutsidePointerEventsDisabled.size>0,b=x>=y,C=Wo(E=>{const P=E.target,A=[...f.branches].some(T=>T.contains(P));!b||A||(o==null||o(E),s==null||s(E),E.defaultPrevented||c==null||c())},p),R=$o(E=>{const P=E.target;[...f.branches].some(T=>T.contains(P))||(i==null||i(E),s==null||s(E),E.defaultPrevented||c==null||c())},p);return Io(E=>{x===f.layers.size-1&&(r==null||r(E),!E.defaultPrevented&&c&&(E.preventDefault(),c()))},p),a.useEffect(()=>{if(u)return n&&(f.layersWithOutsidePointerEventsDisabled.size===0&&(nn=p.body.style.pointerEvents,p.body.style.pointerEvents="none"),f.layersWithOutsidePointerEventsDisabled.add(u)),f.layers.add(u),rn(),()=>{n&&f.layersWithOutsidePointerEventsDisabled.size===1&&(p.body.style.pointerEvents=nn)}},[u,p,n,f]),a.useEffect(()=>()=>{u&&(f.layers.delete(u),f.layersWithOutsidePointerEventsDisabled.delete(u),rn())},[u,f]),a.useEffect(()=>{const E=()=>h({});return document.addEventListener(bt,E),()=>document.removeEventListener(bt,E)},[]),w.jsx(I.div,{...l,ref:g,style:{pointerEvents:S?b?"auto":"none":void 0,...e.style},onFocusCapture:_(e.onFocusCapture,R.onFocusCapture),onBlurCapture:_(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:_(e.onPointerDownCapture,C.onPointerDownCapture)})});Tt.displayName=Lo;var jo="DismissableLayerBranch",ko=a.forwardRef((e,t)=>{const n=a.useContext(Dn),r=a.useRef(null),o=j(t,r);return a.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),w.jsx(I.div,{...e,ref:o})});ko.displayName=jo;function Wo(e,t=globalThis==null?void 0:globalThis.document){const n=B(e),r=a.useRef(!1),o=a.useRef(()=>{});return a.useEffect(()=>{const i=c=>{if(c.target&&!r.current){let l=function(){_n(Mo,n,f,{discrete:!0})};const f={originalEvent:c};c.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=l,t.addEventListener("click",o.current,{once:!0})):l()}else t.removeEventListener("click",o.current);r.current=!1},s=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(s),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function $o(e,t=globalThis==null?void 0:globalThis.document){const n=B(e),r=a.useRef(!1);return a.useEffect(()=>{const o=i=>{i.target&&!r.current&&_n(Fo,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function rn(){const e=new CustomEvent(bt);document.dispatchEvent(e)}function _n(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?No(o,i):o.dispatchEvent(i)}var te=globalThis!=null&&globalThis.document?a.useLayoutEffect:()=>{},Bo=On[" useId ".trim().toString()]||(()=>{}),Ho=0;function ve(e){const[t,n]=a.useState(Bo());return te(()=>{n(r=>r??String(Ho++))},[e]),e||(t?`radix-${t}`:"")}const Vo=["top","right","bottom","left"],se=Math.min,H=Math.max,Be=Math.round,Ne=Math.floor,Z=e=>({x:e,y:e}),Uo={left:"right",right:"left",bottom:"top",top:"bottom"};function xt(e,t,n){return H(e,se(t,n))}function ne(e,t){return typeof e=="function"?e(t):e}function re(e){return e.split("-")[0]}function Se(e){return e.split("-")[1]}function Ot(e){return e==="x"?"y":"x"}function Dt(e){return e==="y"?"height":"width"}function q(e){const t=e[0];return t==="t"||t==="b"?"y":"x"}function _t(e){return Ot(q(e))}function zo(e,t,n){n===void 0&&(n=!1);const r=Se(e),o=_t(e),i=Dt(o);let s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=He(s)),[s,He(s)]}function Yo(e){const t=He(e);return[St(e),t,St(t)]}function St(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const on=["left","right"],sn=["right","left"],Xo=["top","bottom"],Go=["bottom","top"];function Ko(e,t,n){switch(e){case"top":case"bottom":return n?t?sn:on:t?on:sn;case"left":case"right":return t?Xo:Go;default:return[]}}function qo(e,t,n,r){const o=Se(e);let i=Ko(re(e),n==="start",r);return o&&(i=i.map(s=>s+"-"+o),t&&(i=i.concat(i.map(St)))),i}function He(e){const t=re(e);return Uo[t]+e.slice(t.length)}function Zo(e){return{top:0,right:0,bottom:0,left:0,...e}}function Nn(e){return typeof e!="number"?Zo(e):{top:e,right:e,bottom:e,left:e}}function Ve(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function cn(e,t,n){let{reference:r,floating:o}=e;const i=q(t),s=_t(t),c=Dt(s),l=re(t),f=i==="y",u=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,p=r[c]/2-o[c]/2;let h;switch(l){case"top":h={x:u,y:r.y-o.height};break;case"bottom":h={x:u,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:d};break;case"left":h={x:r.x-o.width,y:d};break;default:h={x:r.x,y:r.y}}switch(Se(t)){case"start":h[s]-=p*(n&&f?-1:1);break;case"end":h[s]+=p*(n&&f?-1:1);break}return h}async function Jo(e,t){var n;t===void 0&&(t={});const{x:r,y:o,platform:i,rects:s,elements:c,strategy:l}=e,{boundary:f="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:h=0}=ne(t,e),g=Nn(h),v=c[p?d==="floating"?"reference":"floating":d],y=Ve(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(v)))==null||n?v:v.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(c.floating)),boundary:f,rootBoundary:u,strategy:l})),x=d==="floating"?{x:r,y:o,width:s.floating.width,height:s.floating.height}:s.reference,S=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c.floating)),b=await(i.isElement==null?void 0:i.isElement(S))?await(i.getScale==null?void 0:i.getScale(S))||{x:1,y:1}:{x:1,y:1},C=Ve(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:c,rect:x,offsetParent:S,strategy:l}):x);return{top:(y.top-C.top+g.top)/b.y,bottom:(C.bottom-y.bottom+g.bottom)/b.y,left:(y.left-C.left+g.left)/b.x,right:(C.right-y.right+g.right)/b.x}}const Qo=50,ei=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,c=s.detectOverflow?s:{...s,detectOverflow:Jo},l=await(s.isRTL==null?void 0:s.isRTL(t));let f=await s.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=cn(f,r,l),p=r,h=0;const g={};for(let m=0;m<i.length;m++){const v=i[m];if(!v)continue;const{name:y,fn:x}=v,{x:S,y:b,data:C,reset:R}=await x({x:u,y:d,initialPlacement:r,placement:p,strategy:o,middlewareData:g,rects:f,platform:c,elements:{reference:e,floating:t}});u=S??u,d=b??d,g[y]={...g[y],...C},R&&h<Qo&&(h++,typeof R=="object"&&(R.placement&&(p=R.placement),R.rects&&(f=R.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:o}):R.rects),{x:u,y:d}=cn(f,p,l)),m=-1)}return{x:u,y:d,placement:p,strategy:o,middlewareData:g}},ti=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:s,elements:c,middlewareData:l}=t,{element:f,padding:u=0}=ne(e,t)||{};if(f==null)return{};const d=Nn(u),p={x:n,y:r},h=_t(o),g=Dt(h),m=await s.getDimensions(f),v=h==="y",y=v?"top":"left",x=v?"bottom":"right",S=v?"clientHeight":"clientWidth",b=i.reference[g]+i.reference[h]-p[h]-i.floating[g],C=p[h]-i.reference[h],R=await(s.getOffsetParent==null?void 0:s.getOffsetParent(f));let E=R?R[S]:0;(!E||!await(s.isElement==null?void 0:s.isElement(R)))&&(E=c.floating[S]||i.floating[g]);const P=b/2-C/2,A=E/2-m[g]/2-1,T=se(d[y],A),D=se(d[x],A),M=T,F=E-m[g]-D,L=E/2-m[g]/2+P,$=xt(M,L,F),N=!l.arrow&&Se(o)!=null&&L!==$&&i.reference[g]/2-(L<M?T:D)-m[g]/2<0,k=N?L<M?L-M:L-F:0;return{[h]:p[h]+k,data:{[h]:$,centerOffset:L-$-k,...N&&{alignmentOffset:k}},reset:N}}}),ni=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,r;const{placement:o,middlewareData:i,rects:s,initialPlacement:c,platform:l,elements:f}=t,{mainAxis:u=!0,crossAxis:d=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:g="none",flipAlignment:m=!0,...v}=ne(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};const y=re(o),x=q(c),S=re(c)===c,b=await(l.isRTL==null?void 0:l.isRTL(f.floating)),C=p||(S||!m?[He(c)]:Yo(c)),R=g!=="none";!p&&R&&C.push(...qo(c,m,g,b));const E=[c,...C],P=await l.detectOverflow(t,v),A=[];let T=((r=i.flip)==null?void 0:r.overflows)||[];if(u&&A.push(P[y]),d){const L=zo(o,s,b);A.push(P[L[0]],P[L[1]])}if(T=[...T,{placement:o,overflows:A}],!A.every(L=>L<=0)){var D,M;const L=(((D=i.flip)==null?void 0:D.index)||0)+1,$=E[L];if($&&(!(d==="alignment"?x!==q($):!1)||T.every(O=>q(O.placement)===x?O.overflows[0]>0:!0)))return{data:{index:L,overflows:T},reset:{placement:$}};let N=(M=T.filter(k=>k.overflows[0]<=0).sort((k,O)=>k.overflows[1]-O.overflows[1])[0])==null?void 0:M.placement;if(!N)switch(h){case"bestFit":{var F;const k=(F=T.filter(O=>{if(R){const W=q(O.placement);return W===x||W==="y"}return!0}).map(O=>[O.placement,O.overflows.filter(W=>W>0).reduce((W,G)=>W+G,0)]).sort((O,W)=>O[1]-W[1])[0])==null?void 0:F[0];k&&(N=k);break}case"initialPlacement":N=c;break}if(o!==N)return{reset:{placement:N}}}return{}}}};function an(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function ln(e){return Vo.some(t=>e[t]>=0)}const ri=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:r}=t,{strategy:o="referenceHidden",...i}=ne(e,t);switch(o){case"referenceHidden":{const s=await r.detectOverflow(t,{...i,elementContext:"reference"}),c=an(s,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:ln(c)}}}case"escaped":{const s=await r.detectOverflow(t,{...i,altBoundary:!0}),c=an(s,n.floating);return{data:{escapedOffsets:c,escaped:ln(c)}}}default:return{}}}}},In=new Set(["left","top"]);async function oi(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),s=re(n),c=Se(n),l=q(n)==="y",f=In.has(s)?-1:1,u=i&&l?-1:1,d=ne(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:g}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return c&&typeof g=="number"&&(h=c==="end"?g*-1:g),l?{x:h*u,y:p*f}:{x:p*f,y:h*u}}const ii=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:s,middlewareData:c}=t,l=await oi(t,e);return s===((n=c.offset)==null?void 0:n.placement)&&(r=c.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:i+l.y,data:{...l,placement:s}}}}},si=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o,platform:i}=t,{mainAxis:s=!0,crossAxis:c=!1,limiter:l={fn:y=>{let{x,y:S}=y;return{x,y:S}}},...f}=ne(e,t),u={x:n,y:r},d=await i.detectOverflow(t,f),p=q(re(o)),h=Ot(p);let g=u[h],m=u[p];if(s){const y=h==="y"?"top":"left",x=h==="y"?"bottom":"right",S=g+d[y],b=g-d[x];g=xt(S,g,b)}if(c){const y=p==="y"?"top":"left",x=p==="y"?"bottom":"right",S=m+d[y],b=m-d[x];m=xt(S,m,b)}const v=l.fn({...t,[h]:g,[p]:m});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[h]:s,[p]:c}}}}}},ci=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:s}=t,{offset:c=0,mainAxis:l=!0,crossAxis:f=!0}=ne(e,t),u={x:n,y:r},d=q(o),p=Ot(d);let h=u[p],g=u[d];const m=ne(c,t),v=typeof m=="number"?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){const S=p==="y"?"height":"width",b=i.reference[p]-i.floating[S]+v.mainAxis,C=i.reference[p]+i.reference[S]-v.mainAxis;h<b?h=b:h>C&&(h=C)}if(f){var y,x;const S=p==="y"?"width":"height",b=In.has(re(o)),C=i.reference[d]-i.floating[S]+(b&&((y=s.offset)==null?void 0:y[d])||0)+(b?0:v.crossAxis),R=i.reference[d]+i.reference[S]+(b?0:((x=s.offset)==null?void 0:x[d])||0)-(b?v.crossAxis:0);g<C?g=C:g>R&&(g=R)}return{[p]:h,[d]:g}}}},ai=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:o,rects:i,platform:s,elements:c}=t,{apply:l=()=>{},...f}=ne(e,t),u=await s.detectOverflow(t,f),d=re(o),p=Se(o),h=q(o)==="y",{width:g,height:m}=i.floating;let v,y;d==="top"||d==="bottom"?(v=d,y=p===(await(s.isRTL==null?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(y=d,v=p==="end"?"top":"bottom");const x=m-u.top-u.bottom,S=g-u.left-u.right,b=se(m-u[v],x),C=se(g-u[y],S),R=!t.middlewareData.shift;let E=b,P=C;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(P=S),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(E=x),R&&!p){const T=H(u.left,0),D=H(u.right,0),M=H(u.top,0),F=H(u.bottom,0);h?P=g-2*(T!==0||D!==0?T+D:H(u.left,u.right)):E=m-2*(M!==0||F!==0?M+F:H(u.top,u.bottom))}await l({...t,availableWidth:P,availableHeight:E});const A=await s.getDimensions(c.floating);return g!==A.width||m!==A.height?{reset:{rects:!0}}:{}}}};function Ke(){return typeof window<"u"}function Ce(e){return Ln(e)?(e.nodeName||"").toLowerCase():"#document"}function V(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function J(e){var t;return(t=(Ln(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Ln(e){return Ke()?e instanceof Node||e instanceof V(e).Node:!1}function z(e){return Ke()?e instanceof Element||e instanceof V(e).Element:!1}function oe(e){return Ke()?e instanceof HTMLElement||e instanceof V(e).HTMLElement:!1}function un(e){return!Ke()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof V(e).ShadowRoot}function Te(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Y(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&o!=="inline"&&o!=="contents"}function li(e){return/^(table|td|th)$/.test(Ce(e))}function qe(e){try{if(e.matches(":popover-open"))return!0}catch{}try{return e.matches(":modal")}catch{return!1}}const ui=/transform|translate|scale|rotate|perspective|filter/,fi=/paint|layout|strict|content/,le=e=>!!e&&e!=="none";let lt;function Nt(e){const t=z(e)?Y(e):e;return le(t.transform)||le(t.translate)||le(t.scale)||le(t.rotate)||le(t.perspective)||!It()&&(le(t.backdropFilter)||le(t.filter))||ui.test(t.willChange||"")||fi.test(t.contain||"")}function di(e){let t=ce(e);for(;oe(t)&&!we(t);){if(Nt(t))return t;if(qe(t))return null;t=ce(t)}return null}function It(){return lt==null&&(lt=typeof CSS<"u"&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),lt}function we(e){return/^(html|body|#document)$/.test(Ce(e))}function Y(e){return V(e).getComputedStyle(e)}function Ze(e){return z(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ce(e){if(Ce(e)==="html")return e;const t=e.assignedSlot||e.parentNode||un(e)&&e.host||J(e);return un(t)?t.host:t}function Mn(e){const t=ce(e);return we(t)?e.ownerDocument?e.ownerDocument.body:e.body:oe(t)&&Te(t)?t:Mn(t)}function Pe(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=Mn(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),s=V(o);if(i){const c=Ct(s);return t.concat(s,s.visualViewport||[],Te(o)?o:[],c&&n?Pe(c):[])}else return t.concat(o,Pe(o,[],n))}function Ct(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Fn(e){const t=Y(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=oe(e),i=o?e.offsetWidth:n,s=o?e.offsetHeight:r,c=Be(n)!==i||Be(r)!==s;return c&&(n=i,r=s),{width:n,height:r,$:c}}function Lt(e){return z(e)?e:e.contextElement}function ge(e){const t=Lt(e);if(!oe(t))return Z(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=Fn(t);let s=(i?Be(n.width):n.width)/r,c=(i?Be(n.height):n.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!c||!Number.isFinite(c))&&(c=1),{x:s,y:c}}const pi=Z(0);function jn(e){const t=V(e);return!It()||!t.visualViewport?pi:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function hi(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==V(e)?!1:t}function ue(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=Lt(e);let s=Z(1);t&&(r?z(r)&&(s=ge(r)):s=ge(e));const c=hi(i,n,r)?jn(i):Z(0);let l=(o.left+c.x)/s.x,f=(o.top+c.y)/s.y,u=o.width/s.x,d=o.height/s.y;if(i){const p=V(i),h=r&&z(r)?V(r):r;let g=p,m=Ct(g);for(;m&&r&&h!==g;){const v=ge(m),y=m.getBoundingClientRect(),x=Y(m),S=y.left+(m.clientLeft+parseFloat(x.paddingLeft))*v.x,b=y.top+(m.clientTop+parseFloat(x.paddingTop))*v.y;l*=v.x,f*=v.y,u*=v.x,d*=v.y,l+=S,f+=b,g=V(m),m=Ct(g)}}return Ve({width:u,height:d,x:l,y:f})}function Je(e,t){const n=Ze(e).scrollLeft;return t?t.left+n:ue(J(e)).left+n}function kn(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Je(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function mi(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",s=J(r),c=t?qe(t.floating):!1;if(r===s||c&&i)return n;let l={scrollLeft:0,scrollTop:0},f=Z(1);const u=Z(0),d=oe(r);if((d||!d&&!i)&&((Ce(r)!=="body"||Te(s))&&(l=Ze(r)),d)){const h=ue(r);f=ge(r),u.x=h.x+r.clientLeft,u.y=h.y+r.clientTop}const p=s&&!d&&!i?kn(s,l):Z(0);return{width:n.width*f.x,height:n.height*f.y,x:n.x*f.x-l.scrollLeft*f.x+u.x+p.x,y:n.y*f.y-l.scrollTop*f.y+u.y+p.y}}function vi(e){return Array.from(e.getClientRects())}function gi(e){const t=J(e),n=Ze(e),r=e.ownerDocument.body,o=H(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=H(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let s=-n.scrollLeft+Je(e);const c=-n.scrollTop;return Y(r).direction==="rtl"&&(s+=H(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:s,y:c}}const fn=25;function yi(e,t){const n=V(e),r=J(e),o=n.visualViewport;let i=r.clientWidth,s=r.clientHeight,c=0,l=0;if(o){i=o.width,s=o.height;const u=It();(!u||u&&t==="fixed")&&(c=o.offsetLeft,l=o.offsetTop)}const f=Je(r);if(f<=0){const u=r.ownerDocument,d=u.body,p=getComputedStyle(d),h=u.compatMode==="CSS1Compat"&&parseFloat(p.marginLeft)+parseFloat(p.marginRight)||0,g=Math.abs(r.clientWidth-d.clientWidth-h);g<=fn&&(i-=g)}else f<=fn&&(i+=f);return{width:i,height:s,x:c,y:l}}function wi(e,t){const n=ue(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=oe(e)?ge(e):Z(1),s=e.clientWidth*i.x,c=e.clientHeight*i.y,l=o*i.x,f=r*i.y;return{width:s,height:c,x:l,y:f}}function dn(e,t,n){let r;if(t==="viewport")r=yi(e,n);else if(t==="document")r=gi(J(e));else if(z(t))r=wi(t,n);else{const o=jn(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return Ve(r)}function Wn(e,t){const n=ce(e);return n===t||!z(n)||we(n)?!1:Y(n).position==="fixed"||Wn(n,t)}function bi(e,t){const n=t.get(e);if(n)return n;let r=Pe(e,[],!1).filter(c=>z(c)&&Ce(c)!=="body"),o=null;const i=Y(e).position==="fixed";let s=i?ce(e):e;for(;z(s)&&!we(s);){const c=Y(s),l=Nt(s);!l&&c.position==="fixed"&&(o=null),(i?!l&&!o:!l&&c.position==="static"&&!!o&&(o.position==="absolute"||o.position==="fixed")||Te(s)&&!l&&Wn(e,s))?r=r.filter(u=>u!==s):o=c,s=ce(s)}return t.set(e,r),r}function xi(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?qe(t)?[]:bi(t,this._c):[].concat(n),r],c=dn(t,s[0],o);let l=c.top,f=c.right,u=c.bottom,d=c.left;for(let p=1;p<s.length;p++){const h=dn(t,s[p],o);l=H(h.top,l),f=se(h.right,f),u=se(h.bottom,u),d=H(h.left,d)}return{width:f-d,height:u-l,x:d,y:l}}function Si(e){const{width:t,height:n}=Fn(e);return{width:t,height:n}}function Ci(e,t,n){const r=oe(t),o=J(t),i=n==="fixed",s=ue(e,!0,i,t);let c={scrollLeft:0,scrollTop:0};const l=Z(0);function f(){l.x=Je(o)}if(r||!r&&!i)if((Ce(t)!=="body"||Te(o))&&(c=Ze(t)),r){const h=ue(t,!0,i,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else o&&f();i&&!r&&o&&f();const u=o&&!r&&!i?kn(o,c):Z(0),d=s.left+c.scrollLeft-l.x-u.x,p=s.top+c.scrollTop-l.y-u.y;return{x:d,y:p,width:s.width,height:s.height}}function ut(e){return Y(e).position==="static"}function pn(e,t){if(!oe(e)||Y(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return J(e)===n&&(n=n.ownerDocument.body),n}function $n(e,t){const n=V(e);if(qe(e))return n;if(!oe(e)){let o=ce(e);for(;o&&!we(o);){if(z(o)&&!ut(o))return o;o=ce(o)}return n}let r=pn(e,t);for(;r&&li(r)&&ut(r);)r=pn(r,t);return r&&we(r)&&ut(r)&&!Nt(r)?n:r||di(e)||n}const Ei=async function(e){const t=this.getOffsetParent||$n,n=this.getDimensions,r=await n(e.floating);return{reference:Ci(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Ri(e){return Y(e).direction==="rtl"}const Pi={convertOffsetParentRelativeRectToViewportRelativeRect:mi,getDocumentElement:J,getClippingRect:xi,getOffsetParent:$n,getElementRects:Ei,getClientRects:vi,getDimensions:Si,getScale:ge,isElement:z,isRTL:Ri};function Bn(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ai(e,t){let n=null,r;const o=J(e);function i(){var c;clearTimeout(r),(c=n)==null||c.disconnect(),n=null}function s(c,l){c===void 0&&(c=!1),l===void 0&&(l=1),i();const f=e.getBoundingClientRect(),{left:u,top:d,width:p,height:h}=f;if(c||t(),!p||!h)return;const g=Ne(d),m=Ne(o.clientWidth-(u+p)),v=Ne(o.clientHeight-(d+h)),y=Ne(u),S={rootMargin:-g+"px "+-m+"px "+-v+"px "+-y+"px",threshold:H(0,se(1,l))||1};let b=!0;function C(R){const E=R[0].intersectionRatio;if(E!==l){if(!b)return s();E?s(!1,E):r=setTimeout(()=>{s(!1,1e-7)},1e3)}E===1&&!Bn(f,e.getBoundingClientRect())&&s(),b=!1}try{n=new IntersectionObserver(C,{...S,root:o.ownerDocument})}catch{n=new IntersectionObserver(C,S)}n.observe(e)}return s(!0),i}function Ti(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:s=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,f=Lt(e),u=o||i?[...f?Pe(f):[],...t?Pe(t):[]]:[];u.forEach(y=>{o&&y.addEventListener("scroll",n,{passive:!0}),i&&y.addEventListener("resize",n)});const d=f&&c?Ai(f,n):null;let p=-1,h=null;s&&(h=new ResizeObserver(y=>{let[x]=y;x&&x.target===f&&h&&t&&(h.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var S;(S=h)==null||S.observe(t)})),n()}),f&&!l&&h.observe(f),t&&h.observe(t));let g,m=l?ue(e):null;l&&v();function v(){const y=ue(e);m&&!Bn(m,y)&&n(),m=y,g=requestAnimationFrame(v)}return n(),()=>{var y;u.forEach(x=>{o&&x.removeEventListener("scroll",n),i&&x.removeEventListener("resize",n)}),d==null||d(),(y=h)==null||y.disconnect(),h=null,l&&cancelAnimationFrame(g)}}const Oi=ii,Di=si,_i=ni,Ni=ai,Ii=ri,hn=ti,Li=ci,Mi=(e,t,n)=>{const r=new Map,o={platform:Pi,...n},i={...o.platform,_c:r};return ei(e,t,{...o,platform:i})};var Fi=typeof document<"u",ji=function(){},ke=Fi?a.useLayoutEffect:ji;function Ue(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!Ue(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!Ue(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Hn(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function mn(e,t){const n=Hn(e);return Math.round(t*n)/n}function ft(e){const t=a.useRef(e);return ke(()=>{t.current=e}),t}function ki(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:s}={},transform:c=!0,whileElementsMounted:l,open:f}=e,[u,d]=a.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=a.useState(r);Ue(p,r)||h(r);const[g,m]=a.useState(null),[v,y]=a.useState(null),x=a.useCallback(O=>{O!==R.current&&(R.current=O,m(O))},[]),S=a.useCallback(O=>{O!==E.current&&(E.current=O,y(O))},[]),b=i||g,C=s||v,R=a.useRef(null),E=a.useRef(null),P=a.useRef(u),A=l!=null,T=ft(l),D=ft(o),M=ft(f),F=a.useCallback(()=>{if(!R.current||!E.current)return;const O={placement:t,strategy:n,middleware:p};D.current&&(O.platform=D.current),Mi(R.current,E.current,O).then(W=>{const G={...W,isPositioned:M.current!==!1};L.current&&!Ue(P.current,G)&&(P.current=G,Tn.flushSync(()=>{d(G)}))})},[p,t,n,D,M]);ke(()=>{f===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,d(O=>({...O,isPositioned:!1})))},[f]);const L=a.useRef(!1);ke(()=>(L.current=!0,()=>{L.current=!1}),[]),ke(()=>{if(b&&(R.current=b),C&&(E.current=C),b&&C){if(T.current)return T.current(b,C,F);F()}},[b,C,F,T,A]);const $=a.useMemo(()=>({reference:R,floating:E,setReference:x,setFloating:S}),[x,S]),N=a.useMemo(()=>({reference:b,floating:C}),[b,C]),k=a.useMemo(()=>{const O={position:n,left:0,top:0};if(!N.floating)return O;const W=mn(N.floating,u.x),G=mn(N.floating,u.y);return c?{...O,transform:"translate("+W+"px, "+G+"px)",...Hn(N.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:G}},[n,c,N.floating,u.x,u.y]);return a.useMemo(()=>({...u,update:F,refs:$,elements:N,floatingStyles:k}),[u,F,$,N,k])}const Wi=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?hn({element:r.current,padding:o}).fn(n):{}:r?hn({element:r,padding:o}).fn(n):{}}}},$i=(e,t)=>{const n=Oi(e);return{name:n.name,fn:n.fn,options:[e,t]}},Bi=(e,t)=>{const n=Di(e);return{name:n.name,fn:n.fn,options:[e,t]}},Hi=(e,t)=>({fn:Li(e).fn,options:[e,t]}),Vi=(e,t)=>{const n=_i(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ui=(e,t)=>{const n=Ni(e);return{name:n.name,fn:n.fn,options:[e,t]}},zi=(e,t)=>{const n=Ii(e);return{name:n.name,fn:n.fn,options:[e,t]}},Yi=(e,t)=>{const n=Wi(e);return{name:n.name,fn:n.fn,options:[e,t]}};var Xi="Arrow",Vn=a.forwardRef((e,t)=>{const{children:n,width:r=10,height:o=5,...i}=e;return w.jsx(I.svg,{...i,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:w.jsx("polygon",{points:"0,0 30,0 15,10"})})});Vn.displayName=Xi;var Gi=Vn;function Ki(e){const[t,n]=a.useState(void 0);return te(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let s,c;if("borderBoxSize"in i){const l=i.borderBoxSize,f=Array.isArray(l)?l[0]:l;s=f.inlineSize,c=f.blockSize}else s=e.offsetWidth,c=e.offsetHeight;n({width:s,height:c})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var Mt="Popper",[Un,zn]=de(Mt),[qi,Yn]=Un(Mt),Xn=e=>{const{__scopePopper:t,children:n}=e,[r,o]=a.useState(null);return w.jsx(qi,{scope:t,anchor:r,onAnchorChange:o,children:n})};Xn.displayName=Mt;var Gn="PopperAnchor",Kn=a.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Yn(Gn,n),s=a.useRef(null),c=j(t,s),l=a.useRef(null);return a.useEffect(()=>{const f=l.current;l.current=(r==null?void 0:r.current)||s.current,f!==l.current&&i.onAnchorChange(l.current)}),r?null:w.jsx(I.div,{...o,ref:c})});Kn.displayName=Gn;var Ft="PopperContent",[Zi,Ji]=Un(Ft),qn=a.forwardRef((e,t)=>{var Yt,Xt,Gt,Kt,qt,Zt;const{__scopePopper:n,side:r="bottom",sideOffset:o=0,align:i="center",alignOffset:s=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:f=[],collisionPadding:u=0,sticky:d="partial",hideWhenDetached:p=!1,updatePositionStrategy:h="optimized",onPlaced:g,...m}=e,v=Yn(Ft,n),[y,x]=a.useState(null),S=j(t,Ee=>x(Ee)),[b,C]=a.useState(null),R=Ki(b),E=(R==null?void 0:R.width)??0,P=(R==null?void 0:R.height)??0,A=r+(i!=="center"?"-"+i:""),T=typeof u=="number"?u:{top:0,right:0,bottom:0,left:0,...u},D=Array.isArray(f)?f:[f],M=D.length>0,F={padding:T,boundary:D.filter(es),altBoundary:M},{refs:L,floatingStyles:$,placement:N,isPositioned:k,middlewareData:O}=ki({strategy:"fixed",placement:A,whileElementsMounted:(...Ee)=>Ti(...Ee,{animationFrame:h==="always"}),elements:{reference:v.anchor},middleware:[$i({mainAxis:o+P,alignmentAxis:s}),l&&Bi({mainAxis:!0,crossAxis:!1,limiter:d==="partial"?Hi():void 0,...F}),l&&Vi({...F}),Ui({...F,apply:({elements:Ee,rects:Jt,availableWidth:mo,availableHeight:vo})=>{const{width:go,height:yo}=Jt.reference,_e=Ee.floating.style;_e.setProperty("--radix-popper-available-width",`${mo}px`),_e.setProperty("--radix-popper-available-height",`${vo}px`),_e.setProperty("--radix-popper-anchor-width",`${go}px`),_e.setProperty("--radix-popper-anchor-height",`${yo}px`)}}),b&&Yi({element:b,padding:c}),ts({arrowWidth:E,arrowHeight:P}),p&&zi({strategy:"referenceHidden",...F})]}),[W,G]=Qn(N),De=B(g);te(()=>{k&&(De==null||De())},[k,De]);const lo=(Yt=O.arrow)==null?void 0:Yt.x,uo=(Xt=O.arrow)==null?void 0:Xt.y,fo=((Gt=O.arrow)==null?void 0:Gt.centerOffset)!==0,[po,ho]=a.useState();return te(()=>{y&&ho(window.getComputedStyle(y).zIndex)},[y]),w.jsx("div",{ref:L.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:k?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:po,"--radix-popper-transform-origin":[(Kt=O.transformOrigin)==null?void 0:Kt.x,(qt=O.transformOrigin)==null?void 0:qt.y].join(" "),...((Zt=O.hide)==null?void 0:Zt.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:w.jsx(Zi,{scope:n,placedSide:W,onArrowChange:C,arrowX:lo,arrowY:uo,shouldHideArrow:fo,children:w.jsx(I.div,{"data-side":W,"data-align":G,...m,ref:S,style:{...m.style,animation:k?void 0:"none"}})})})});qn.displayName=Ft;var Zn="PopperArrow",Qi={top:"bottom",right:"left",bottom:"top",left:"right"},Jn=a.forwardRef(function(t,n){const{__scopePopper:r,...o}=t,i=Ji(Zn,r),s=Qi[i.placedSide];return w.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[s]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:w.jsx(Gi,{...o,ref:n,style:{...o.style,display:"block"}})})});Jn.displayName=Zn;function es(e){return e!==null}var ts=e=>({name:"transformOrigin",options:e,fn(t){var v,y,x;const{placement:n,rects:r,middlewareData:o}=t,s=((v=o.arrow)==null?void 0:v.centerOffset)!==0,c=s?0:e.arrowWidth,l=s?0:e.arrowHeight,[f,u]=Qn(n),d={start:"0%",center:"50%",end:"100%"}[u],p=(((y=o.arrow)==null?void 0:y.x)??0)+c/2,h=(((x=o.arrow)==null?void 0:x.y)??0)+l/2;let g="",m="";return f==="bottom"?(g=s?d:`${p}px`,m=`${-l}px`):f==="top"?(g=s?d:`${p}px`,m=`${r.floating.height+l}px`):f==="right"?(g=`${-l}px`,m=s?d:`${h}px`):f==="left"&&(g=`${r.floating.width+l}px`,m=s?d:`${h}px`),{data:{x:g,y:m}}}});function Qn(e){const[t,n="center"]=e.split("-");return[t,n]}var ns=Xn,rs=Kn,os=qn,is=Jn,ss="Portal",er=a.forwardRef((e,t)=>{var c;const{container:n,...r}=e,[o,i]=a.useState(!1);te(()=>i(!0),[]);const s=n||o&&((c=globalThis==null?void 0:globalThis.document)==null?void 0:c.body);return s?bo.createPortal(w.jsx(I.div,{...r,ref:t}),s):null});er.displayName=ss;function cs(e,t){return a.useReducer((n,r)=>t[n][r]??n,e)}var Q=e=>{const{present:t,children:n}=e,r=as(t),o=typeof n=="function"?n({present:r.isPresent}):a.Children.only(n),i=j(r.ref,ls(o));return typeof n=="function"||r.isPresent?a.cloneElement(o,{ref:i}):null};Q.displayName="Presence";function as(e){const[t,n]=a.useState(),r=a.useRef(null),o=a.useRef(e),i=a.useRef("none"),s=e?"mounted":"unmounted",[c,l]=cs(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return a.useEffect(()=>{const f=Ie(r.current);i.current=c==="mounted"?f:"none"},[c]),te(()=>{const f=r.current,u=o.current;if(u!==e){const p=i.current,h=Ie(f);e?l("MOUNT"):h==="none"||(f==null?void 0:f.display)==="none"?l("UNMOUNT"):l(u&&p!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,l]),te(()=>{if(t){let f;const u=t.ownerDocument.defaultView??window,d=h=>{const m=Ie(r.current).includes(CSS.escape(h.animationName));if(h.target===t&&m&&(l("ANIMATION_END"),!o.current)){const v=t.style.animationFillMode;t.style.animationFillMode="forwards",f=u.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=v)})}},p=h=>{h.target===t&&(i.current=Ie(r.current))};return t.addEventListener("animationstart",p),t.addEventListener("animationcancel",d),t.addEventListener("animationend",d),()=>{u.clearTimeout(f),t.removeEventListener("animationstart",p),t.removeEventListener("animationcancel",d),t.removeEventListener("animationend",d)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:a.useCallback(f=>{r.current=f?getComputedStyle(f):null,n(f)},[])}}function Ie(e){return(e==null?void 0:e.animationName)||"none"}function ls(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var us=Symbol("radix.slottable");function fs(e){const t=({children:n})=>w.jsx(w.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=us,t}var ds=On[" useInsertionEffect ".trim().toString()]||te;function Qe({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,i,s]=ps({defaultProp:t,onChange:n}),c=e!==void 0,l=c?e:o;{const u=a.useRef(e!==void 0);a.useEffect(()=>{const d=u.current;d!==c&&console.warn(`${r} is changing from ${d?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),u.current=c},[c,r])}const f=a.useCallback(u=>{var d;if(c){const p=hs(u)?u(e):u;p!==e&&((d=s.current)==null||d.call(s,p))}else i(u)},[c,e,i,s]);return[l,f]}function ps({defaultProp:e,onChange:t}){const[n,r]=a.useState(e),o=a.useRef(n),i=a.useRef(t);return ds(()=>{i.current=t},[t]),a.useEffect(()=>{var s;o.current!==n&&((s=i.current)==null||s.call(i,n),o.current=n)},[n,o]),[n,r,i]}function hs(e){return typeof e=="function"}var ms=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),vs="VisuallyHidden",tr=a.forwardRef((e,t)=>w.jsx(I.span,{...e,ref:t,style:{...ms,...e.style}}));tr.displayName=vs;var gs=tr,[et]=de("Tooltip",[zn]),tt=zn(),nr="TooltipProvider",ys=700,Et="tooltip.open",[ws,jt]=et(nr),rr=e=>{const{__scopeTooltip:t,delayDuration:n=ys,skipDelayDuration:r=300,disableHoverableContent:o=!1,children:i}=e,s=a.useRef(!0),c=a.useRef(!1),l=a.useRef(0);return a.useEffect(()=>{const f=l.current;return()=>window.clearTimeout(f)},[]),w.jsx(ws,{scope:t,isOpenDelayedRef:s,delayDuration:n,onOpen:a.useCallback(()=>{window.clearTimeout(l.current),s.current=!1},[]),onClose:a.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>s.current=!0,r)},[r]),isPointerInTransitRef:c,onPointerInTransitChange:a.useCallback(f=>{c.current=f},[]),disableHoverableContent:o,children:i})};rr.displayName=nr;var Ae="Tooltip",[bs,nt]=et(Ae),or=e=>{const{__scopeTooltip:t,children:n,open:r,defaultOpen:o,onOpenChange:i,disableHoverableContent:s,delayDuration:c}=e,l=jt(Ae,e.__scopeTooltip),f=tt(t),[u,d]=a.useState(null),p=ve(),h=a.useRef(0),g=s??l.disableHoverableContent,m=c??l.delayDuration,v=a.useRef(!1),[y,x]=Qe({prop:r,defaultProp:o??!1,onChange:E=>{E?(l.onOpen(),document.dispatchEvent(new CustomEvent(Et))):l.onClose(),i==null||i(E)},caller:Ae}),S=a.useMemo(()=>y?v.current?"delayed-open":"instant-open":"closed",[y]),b=a.useCallback(()=>{window.clearTimeout(h.current),h.current=0,v.current=!1,x(!0)},[x]),C=a.useCallback(()=>{window.clearTimeout(h.current),h.current=0,x(!1)},[x]),R=a.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{v.current=!0,x(!0),h.current=0},m)},[m,x]);return a.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),w.jsx(ns,{...f,children:w.jsx(bs,{scope:t,contentId:p,open:y,stateAttribute:S,trigger:u,onTriggerChange:d,onTriggerEnter:a.useCallback(()=>{l.isOpenDelayedRef.current?R():b()},[l.isOpenDelayedRef,R,b]),onTriggerLeave:a.useCallback(()=>{g?C():(window.clearTimeout(h.current),h.current=0)},[C,g]),onOpen:b,onClose:C,disableHoverableContent:g,children:n})})};or.displayName=Ae;var Rt="TooltipTrigger",ir=a.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,o=nt(Rt,n),i=jt(Rt,n),s=tt(n),c=a.useRef(null),l=j(t,c,o.onTriggerChange),f=a.useRef(!1),u=a.useRef(!1),d=a.useCallback(()=>f.current=!1,[]);return a.useEffect(()=>()=>document.removeEventListener("pointerup",d),[d]),w.jsx(rs,{asChild:!0,...s,children:w.jsx(I.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...r,ref:l,onPointerMove:_(e.onPointerMove,p=>{p.pointerType!=="touch"&&!u.current&&!i.isPointerInTransitRef.current&&(o.onTriggerEnter(),u.current=!0)}),onPointerLeave:_(e.onPointerLeave,()=>{o.onTriggerLeave(),u.current=!1}),onPointerDown:_(e.onPointerDown,()=>{o.open&&o.onClose(),f.current=!0,document.addEventListener("pointerup",d,{once:!0})}),onFocus:_(e.onFocus,()=>{f.current||o.onOpen()}),onBlur:_(e.onBlur,o.onClose),onClick:_(e.onClick,o.onClose)})})});ir.displayName=Rt;var xs="TooltipPortal",[Ra,Ss]=et(xs,{forceMount:void 0}),be="TooltipContent",sr=a.forwardRef((e,t)=>{const n=Ss(be,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...i}=e,s=nt(be,e.__scopeTooltip);return w.jsx(Q,{present:r||s.open,children:s.disableHoverableContent?w.jsx(cr,{side:o,...i,ref:t}):w.jsx(Cs,{side:o,...i,ref:t})})}),Cs=a.forwardRef((e,t)=>{const n=nt(be,e.__scopeTooltip),r=jt(be,e.__scopeTooltip),o=a.useRef(null),i=j(t,o),[s,c]=a.useState(null),{trigger:l,onClose:f}=n,u=o.current,{onPointerInTransitChange:d}=r,p=a.useCallback(()=>{c(null),d(!1)},[d]),h=a.useCallback((g,m)=>{const v=g.currentTarget,y={x:g.clientX,y:g.clientY},x=Ts(y,v.getBoundingClientRect()),S=Os(y,x),b=Ds(m.getBoundingClientRect()),C=Ns([...S,...b]);c(C),d(!0)},[d]);return a.useEffect(()=>()=>p(),[p]),a.useEffect(()=>{if(l&&u){const g=v=>h(v,u),m=v=>h(v,l);return l.addEventListener("pointerleave",g),u.addEventListener("pointerleave",m),()=>{l.removeEventListener("pointerleave",g),u.removeEventListener("pointerleave",m)}}},[l,u,h,p]),a.useEffect(()=>{if(s){const g=m=>{const v=m.target,y={x:m.clientX,y:m.clientY},x=(l==null?void 0:l.contains(v))||(u==null?void 0:u.contains(v)),S=!_s(y,s);x?p():S&&(p(),f())};return document.addEventListener("pointermove",g),()=>document.removeEventListener("pointermove",g)}},[l,u,s,f,p]),w.jsx(cr,{...e,ref:i})}),[Es,Rs]=et(Ae,{isInside:!1}),Ps=fs("TooltipContent"),cr=a.forwardRef((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":o,onEscapeKeyDown:i,onPointerDownOutside:s,...c}=e,l=nt(be,n),f=tt(n),{onClose:u}=l;return a.useEffect(()=>(document.addEventListener(Et,u),()=>document.removeEventListener(Et,u)),[u]),a.useEffect(()=>{if(l.trigger){const d=p=>{const h=p.target;h!=null&&h.contains(l.trigger)&&u()};return window.addEventListener("scroll",d,{capture:!0}),()=>window.removeEventListener("scroll",d,{capture:!0})}},[l.trigger,u]),w.jsx(Tt,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:d=>d.preventDefault(),onDismiss:u,children:w.jsxs(os,{"data-state":l.stateAttribute,...f,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[w.jsx(Ps,{children:r}),w.jsx(Es,{scope:n,isInside:!0,children:w.jsx(gs,{id:l.contentId,role:"tooltip",children:o||r})})]})})});sr.displayName=be;var ar="TooltipArrow",As=a.forwardRef((e,t)=>{const{__scopeTooltip:n,...r}=e,o=tt(n);return Rs(ar,n).isInside?null:w.jsx(is,{...o,...r,ref:t})});As.displayName=ar;function Ts(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(n,r,o,i)){case i:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function Os(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function Ds(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}function _s(e,t){const{x:n,y:r}=e;let o=!1;for(let i=0,s=t.length-1;i<t.length;s=i++){const c=t[i],l=t[s],f=c.x,u=c.y,d=l.x,p=l.y;u>r!=p>r&&n<(d-f)*(r-u)/(p-u)+f&&(o=!o)}return o}function Ns(e){const t=e.slice();return t.sort((n,r)=>n.x<r.x?-1:n.x>r.x?1:n.y<r.y?-1:n.y>r.y?1:0),Is(t)}function Is(e){if(e.length<=1)return e.slice();const t=[];for(let r=0;r<e.length;r++){const o=e[r];for(;t.length>=2;){const i=t[t.length-1],s=t[t.length-2];if((i.x-s.x)*(o.y-s.y)>=(i.y-s.y)*(o.x-s.x))t.pop();else break}t.push(o)}t.pop();const n=[];for(let r=e.length-1;r>=0;r--){const o=e[r];for(;n.length>=2;){const i=n[n.length-1],s=n[n.length-2];if((i.x-s.x)*(o.y-s.y)>=(i.y-s.y)*(o.x-s.x))n.pop();else break}n.push(o)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Pa=rr,Aa=or,Ta=ir,Oa=sr,Ls=a.createContext(void 0);function kt(e){const t=a.useContext(Ls);return e||t||"ltr"}function Ms(e,[t,n]){return Math.min(n,Math.max(t,e))}function Fs(e,t){return a.useReducer((n,r)=>t[n][r]??n,e)}var Wt="ScrollArea",[lr]=de(Wt),[js,U]=lr(Wt),ur=a.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:i=600,...s}=e,[c,l]=a.useState(null),[f,u]=a.useState(null),[d,p]=a.useState(null),[h,g]=a.useState(null),[m,v]=a.useState(null),[y,x]=a.useState(0),[S,b]=a.useState(0),[C,R]=a.useState(!1),[E,P]=a.useState(!1),A=j(t,D=>l(D)),T=kt(o);return w.jsx(js,{scope:n,type:r,dir:T,scrollHideDelay:i,scrollArea:c,viewport:f,onViewportChange:u,content:d,onContentChange:p,scrollbarX:h,onScrollbarXChange:g,scrollbarXEnabled:C,onScrollbarXEnabledChange:R,scrollbarY:m,onScrollbarYChange:v,scrollbarYEnabled:E,onScrollbarYEnabledChange:P,onCornerWidthChange:x,onCornerHeightChange:b,children:w.jsx(I.div,{dir:T,...s,ref:A,style:{position:"relative","--radix-scroll-area-corner-width":y+"px","--radix-scroll-area-corner-height":S+"px",...e.style}})})});ur.displayName=Wt;var fr="ScrollAreaViewport",dr=a.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,nonce:o,...i}=e,s=U(fr,n),c=a.useRef(null),l=j(t,c,s.onViewportChange);return w.jsxs(w.Fragment,{children:[w.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),w.jsx(I.div,{"data-radix-scroll-area-viewport":"",...i,ref:l,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:w.jsx("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});dr.displayName=fr;var ee="ScrollAreaScrollbar",ks=a.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=U(ee,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:s}=o,c=e.orientation==="horizontal";return a.useEffect(()=>(c?i(!0):s(!0),()=>{c?i(!1):s(!1)}),[c,i,s]),o.type==="hover"?w.jsx(Ws,{...r,ref:t,forceMount:n}):o.type==="scroll"?w.jsx($s,{...r,ref:t,forceMount:n}):o.type==="auto"?w.jsx(pr,{...r,ref:t,forceMount:n}):o.type==="always"?w.jsx($t,{...r,ref:t}):null});ks.displayName=ee;var Ws=a.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=U(ee,e.__scopeScrollArea),[i,s]=a.useState(!1);return a.useEffect(()=>{const c=o.scrollArea;let l=0;if(c){const f=()=>{window.clearTimeout(l),s(!0)},u=()=>{l=window.setTimeout(()=>s(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",f),c.addEventListener("pointerleave",u),()=>{window.clearTimeout(l),c.removeEventListener("pointerenter",f),c.removeEventListener("pointerleave",u)}}},[o.scrollArea,o.scrollHideDelay]),w.jsx(Q,{present:n||i,children:w.jsx(pr,{"data-state":i?"visible":"hidden",...r,ref:t})})}),$s=a.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=U(ee,e.__scopeScrollArea),i=e.orientation==="horizontal",s=ot(()=>l("SCROLL_END"),100),[c,l]=Fs("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return a.useEffect(()=>{if(c==="idle"){const f=window.setTimeout(()=>l("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(f)}},[c,o.scrollHideDelay,l]),a.useEffect(()=>{const f=o.viewport,u=i?"scrollLeft":"scrollTop";if(f){let d=f[u];const p=()=>{const h=f[u];d!==h&&(l("SCROLL"),s()),d=h};return f.addEventListener("scroll",p),()=>f.removeEventListener("scroll",p)}},[o.viewport,i,l,s]),w.jsx(Q,{present:n||c!=="hidden",children:w.jsx($t,{"data-state":c==="hidden"?"hidden":"visible",...r,ref:t,onPointerEnter:_(e.onPointerEnter,()=>l("POINTER_ENTER")),onPointerLeave:_(e.onPointerLeave,()=>l("POINTER_LEAVE"))})})}),pr=a.forwardRef((e,t)=>{const n=U(ee,e.__scopeScrollArea),{forceMount:r,...o}=e,[i,s]=a.useState(!1),c=e.orientation==="horizontal",l=ot(()=>{if(n.viewport){const f=n.viewport.offsetWidth<n.viewport.scrollWidth,u=n.viewport.offsetHeight<n.viewport.scrollHeight;s(c?f:u)}},10);return xe(n.viewport,l),xe(n.content,l),w.jsx(Q,{present:r||i,children:w.jsx($t,{"data-state":i?"visible":"hidden",...o,ref:t})})}),$t=a.forwardRef((e,t)=>{const{orientation:n="vertical",...r}=e,o=U(ee,e.__scopeScrollArea),i=a.useRef(null),s=a.useRef(0),[c,l]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),f=gr(c.viewport,c.content),u={...r,sizes:c,onSizesChange:l,hasThumb:f>0&&f<1,onThumbChange:p=>i.current=p,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:p=>s.current=p};function d(p,h){return Xs(p,s.current,c,h)}return n==="horizontal"?w.jsx(Bs,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&i.current){const p=o.viewport.scrollLeft,h=vn(p,c,o.dir);i.current.style.transform=`translate3d(${h}px, 0, 0)`}},onWheelScroll:p=>{o.viewport&&(o.viewport.scrollLeft=p)},onDragScroll:p=>{o.viewport&&(o.viewport.scrollLeft=d(p,o.dir))}}):n==="vertical"?w.jsx(Hs,{...u,ref:t,onThumbPositionChange:()=>{if(o.viewport&&i.current){const p=o.viewport.scrollTop,h=vn(p,c);i.current.style.transform=`translate3d(0, ${h}px, 0)`}},onWheelScroll:p=>{o.viewport&&(o.viewport.scrollTop=p)},onDragScroll:p=>{o.viewport&&(o.viewport.scrollTop=d(p))}}):null}),Bs=a.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,i=U(ee,e.__scopeScrollArea),[s,c]=a.useState(),l=a.useRef(null),f=j(t,l,i.onScrollbarXChange);return a.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),w.jsx(mr,{"data-orientation":"horizontal",...o,ref:f,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":rt(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.x),onDragScroll:u=>e.onDragScroll(u.x),onWheelScroll:(u,d)=>{if(i.viewport){const p=i.viewport.scrollLeft+u.deltaX;e.onWheelScroll(p),wr(p,d)&&u.preventDefault()}},onResize:()=>{l.current&&i.viewport&&s&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:Ye(s.paddingLeft),paddingEnd:Ye(s.paddingRight)}})}})}),Hs=a.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,i=U(ee,e.__scopeScrollArea),[s,c]=a.useState(),l=a.useRef(null),f=j(t,l,i.onScrollbarYChange);return a.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),w.jsx(mr,{"data-orientation":"vertical",...o,ref:f,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":rt(n)+"px",...e.style},onThumbPointerDown:u=>e.onThumbPointerDown(u.y),onDragScroll:u=>e.onDragScroll(u.y),onWheelScroll:(u,d)=>{if(i.viewport){const p=i.viewport.scrollTop+u.deltaY;e.onWheelScroll(p),wr(p,d)&&u.preventDefault()}},onResize:()=>{l.current&&i.viewport&&s&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:Ye(s.paddingTop),paddingEnd:Ye(s.paddingBottom)}})}})}),[Vs,hr]=lr(ee),mr=a.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:i,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:f,onWheelScroll:u,onResize:d,...p}=e,h=U(ee,n),[g,m]=a.useState(null),v=j(t,A=>m(A)),y=a.useRef(null),x=a.useRef(""),S=h.viewport,b=r.content-r.viewport,C=B(u),R=B(l),E=ot(d,10);function P(A){if(y.current){const T=A.clientX-y.current.left,D=A.clientY-y.current.top;f({x:T,y:D})}}return a.useEffect(()=>{const A=T=>{const D=T.target;(g==null?void 0:g.contains(D))&&C(T,b)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[S,g,b,C]),a.useEffect(R,[r,R]),xe(g,E),xe(h.content,E),w.jsx(Vs,{scope:n,scrollbar:g,hasThumb:o,onThumbChange:B(i),onThumbPointerUp:B(s),onThumbPositionChange:R,onThumbPointerDown:B(c),children:w.jsx(I.div,{...p,ref:v,style:{position:"absolute",...p.style},onPointerDown:_(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),y.current=g.getBoundingClientRect(),x.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",h.viewport&&(h.viewport.style.scrollBehavior="auto"),P(A))}),onPointerMove:_(e.onPointerMove,P),onPointerUp:_(e.onPointerUp,A=>{const T=A.target;T.hasPointerCapture(A.pointerId)&&T.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=x.current,h.viewport&&(h.viewport.style.scrollBehavior=""),y.current=null})})})}),ze="ScrollAreaThumb",Us=a.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=hr(ze,e.__scopeScrollArea);return w.jsx(Q,{present:n||o.hasThumb,children:w.jsx(zs,{ref:t,...r})})}),zs=a.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,i=U(ze,n),s=hr(ze,n),{onThumbPositionChange:c}=s,l=j(t,d=>s.onThumbChange(d)),f=a.useRef(void 0),u=ot(()=>{f.current&&(f.current(),f.current=void 0)},100);return a.useEffect(()=>{const d=i.viewport;if(d){const p=()=>{if(u(),!f.current){const h=Gs(d,c);f.current=h,c()}};return c(),d.addEventListener("scroll",p),()=>d.removeEventListener("scroll",p)}},[i.viewport,u,c]),w.jsx(I.div,{"data-state":s.hasThumb?"visible":"hidden",...o,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:_(e.onPointerDownCapture,d=>{const h=d.target.getBoundingClientRect(),g=d.clientX-h.left,m=d.clientY-h.top;s.onThumbPointerDown({x:g,y:m})}),onPointerUp:_(e.onPointerUp,s.onThumbPointerUp)})});Us.displayName=ze;var Bt="ScrollAreaCorner",vr=a.forwardRef((e,t)=>{const n=U(Bt,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?w.jsx(Ys,{...e,ref:t}):null});vr.displayName=Bt;var Ys=a.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=U(Bt,n),[i,s]=a.useState(0),[c,l]=a.useState(0),f=!!(i&&c);return xe(o.scrollbarX,()=>{var d;const u=((d=o.scrollbarX)==null?void 0:d.offsetHeight)||0;o.onCornerHeightChange(u),l(u)}),xe(o.scrollbarY,()=>{var d;const u=((d=o.scrollbarY)==null?void 0:d.offsetWidth)||0;o.onCornerWidthChange(u),s(u)}),f?w.jsx(I.div,{...r,ref:t,style:{width:i,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function Ye(e){return e?parseInt(e,10):0}function gr(e,t){const n=e/t;return isNaN(n)?0:n}function rt(e){const t=gr(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Xs(e,t,n,r="ltr"){const o=rt(n),i=o/2,s=t||i,c=o-s,l=n.scrollbar.paddingStart+s,f=n.scrollbar.size-n.scrollbar.paddingEnd-c,u=n.content-n.viewport,d=r==="ltr"?[0,u]:[u*-1,0];return yr([l,f],d)(e)}function vn(e,t,n="ltr"){const r=rt(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,i=t.scrollbar.size-o,s=t.content-t.viewport,c=i-r,l=n==="ltr"?[0,s]:[s*-1,0],f=Ms(e,l);return yr([0,s],[0,c])(f)}function yr(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function wr(e,t){return e>0&&e<t}var Gs=(e,t=()=>{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return(function o(){const i={left:e.scrollLeft,top:e.scrollTop},s=n.left!==i.left,c=n.top!==i.top;(s||c)&&t(),n=i,r=window.requestAnimationFrame(o)})(),()=>window.cancelAnimationFrame(r)};function ot(e,t){const n=B(e),r=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(r.current),[]),a.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function xe(e,t){const n=B(t);te(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}var Da=ur,_a=dr,Na=vr,dt=0;function Ks(){a.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??gn()),document.body.insertAdjacentElement("beforeend",e[1]??gn()),dt++,()=>{dt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),dt--}},[])}function gn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var pt="focusScope.autoFocusOnMount",ht="focusScope.autoFocusOnUnmount",yn={bubbles:!1,cancelable:!0},qs="FocusScope",br=a.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...s}=e,[c,l]=a.useState(null),f=B(o),u=B(i),d=a.useRef(null),p=j(t,m=>l(m)),h=a.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;a.useEffect(()=>{if(r){let m=function(S){if(h.paused||!c)return;const b=S.target;c.contains(b)?d.current=b:ie(d.current,{select:!0})},v=function(S){if(h.paused||!c)return;const b=S.relatedTarget;b!==null&&(c.contains(b)||ie(d.current,{select:!0}))},y=function(S){if(document.activeElement===document.body)for(const C of S)C.removedNodes.length>0&&ie(c)};document.addEventListener("focusin",m),document.addEventListener("focusout",v);const x=new MutationObserver(y);return c&&x.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",m),document.removeEventListener("focusout",v),x.disconnect()}}},[r,c,h.paused]),a.useEffect(()=>{if(c){bn.add(h);const m=document.activeElement;if(!c.contains(m)){const y=new CustomEvent(pt,yn);c.addEventListener(pt,f),c.dispatchEvent(y),y.defaultPrevented||(Zs(nc(xr(c)),{select:!0}),document.activeElement===m&&ie(c))}return()=>{c.removeEventListener(pt,f),setTimeout(()=>{const y=new CustomEvent(ht,yn);c.addEventListener(ht,u),c.dispatchEvent(y),y.defaultPrevented||ie(m??document.body,{select:!0}),c.removeEventListener(ht,u),bn.remove(h)},0)}}},[c,f,u,h]);const g=a.useCallback(m=>{if(!n&&!r||h.paused)return;const v=m.key==="Tab"&&!m.altKey&&!m.ctrlKey&&!m.metaKey,y=document.activeElement;if(v&&y){const x=m.currentTarget,[S,b]=Js(x);S&&b?!m.shiftKey&&y===b?(m.preventDefault(),n&&ie(S,{select:!0})):m.shiftKey&&y===S&&(m.preventDefault(),n&&ie(b,{select:!0})):y===x&&m.preventDefault()}},[n,r,h.paused]);return w.jsx(I.div,{tabIndex:-1,...s,ref:p,onKeyDown:g})});br.displayName=qs;function Zs(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(ie(r,{select:t}),document.activeElement!==n)return}function Js(e){const t=xr(e),n=wn(t,e),r=wn(t.reverse(),e);return[n,r]}function xr(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function wn(e,t){for(const n of e)if(!Qs(n,{upTo:t}))return n}function Qs(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function ec(e){return e instanceof HTMLInputElement&&"select"in e}function ie(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&ec(e)&&t&&e.select()}}var bn=tc();function tc(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=xn(e,t),e.unshift(t)},remove(t){var n;e=xn(e,t),(n=e[0])==null||n.resume()}}}function xn(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function nc(e){return e.filter(t=>t.tagName!=="A")}var rc=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},pe=new WeakMap,Le=new WeakMap,Me={},mt=0,Sr=function(e){return e&&(e.host||Sr(e.parentNode))},oc=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=Sr(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},ic=function(e,t,n,r){var o=oc(t,Array.isArray(e)?e:[e]);Me[n]||(Me[n]=new WeakMap);var i=Me[n],s=[],c=new Set,l=new Set(o),f=function(d){!d||c.has(d)||(c.add(d),f(d.parentNode))};o.forEach(f);var u=function(d){!d||l.has(d)||Array.prototype.forEach.call(d.children,function(p){if(c.has(p))u(p);else try{var h=p.getAttribute(r),g=h!==null&&h!=="false",m=(pe.get(p)||0)+1,v=(i.get(p)||0)+1;pe.set(p,m),i.set(p,v),s.push(p),m===1&&g&&Le.set(p,!0),v===1&&p.setAttribute(n,"true"),g||p.setAttribute(r,"true")}catch(y){console.error("aria-hidden: cannot operate on ",p,y)}})};return u(t),c.clear(),mt++,function(){s.forEach(function(d){var p=pe.get(d)-1,h=i.get(d)-1;pe.set(d,p),i.set(d,h),p||(Le.has(d)||d.removeAttribute(r),Le.delete(d)),h||d.removeAttribute(n)}),mt--,mt||(pe=new WeakMap,pe=new WeakMap,Le=new WeakMap,Me={})}},sc=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=rc(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),ic(r,o,n,"aria-hidden")):function(){return null}},K=function(){return K=Object.assign||function(t){for(var n,r=1,o=arguments.length;r<o;r++){n=arguments[r];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},K.apply(this,arguments)};function Cr(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}function cc(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,i;r<o;r++)(i||!(r in t))&&(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}var We="right-scroll-bar-position",$e="width-before-scroll-bar",ac="with-scroll-bars-hidden",lc="--removed-body-scroll-bar-size";function vt(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function uc(e,t){var n=a.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}var fc=typeof window<"u"?a.useLayoutEffect:a.useEffect,Sn=new WeakMap;function dc(e,t){var n=uc(null,function(r){return e.forEach(function(o){return vt(o,r)})});return fc(function(){var r=Sn.get(n);if(r){var o=new Set(r),i=new Set(e),s=n.current;o.forEach(function(c){i.has(c)||vt(c,null)}),i.forEach(function(c){o.has(c)||vt(c,s)})}Sn.set(n,e)},[e]),n}function pc(e){return e}function hc(e,t){t===void 0&&(t=pc);var n=[],r=!1,o={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(i){var s=t(i,r);return n.push(s),function(){n=n.filter(function(c){return c!==s})}},assignSyncMedium:function(i){for(r=!0;n.length;){var s=n;n=[],s.forEach(i)}n={push:function(c){return i(c)},filter:function(){return n}}},assignMedium:function(i){r=!0;var s=[];if(n.length){var c=n;n=[],c.forEach(i),s=n}var l=function(){var u=s;s=[],u.forEach(i)},f=function(){return Promise.resolve().then(l)};f(),n={push:function(u){s.push(u),f()},filter:function(u){return s=s.filter(u),n}}}};return o}function mc(e){e===void 0&&(e={});var t=hc(null);return t.options=K({async:!0,ssr:!1},e),t}var Er=function(e){var t=e.sideCar,n=Cr(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return a.createElement(r,K({},n))};Er.isSideCarExport=!0;function vc(e,t){return e.useMedium(t),Er}var Rr=mc(),gt=function(){},it=a.forwardRef(function(e,t){var n=a.useRef(null),r=a.useState({onScrollCapture:gt,onWheelCapture:gt,onTouchMoveCapture:gt}),o=r[0],i=r[1],s=e.forwardProps,c=e.children,l=e.className,f=e.removeScrollBar,u=e.enabled,d=e.shards,p=e.sideCar,h=e.noRelative,g=e.noIsolation,m=e.inert,v=e.allowPinchZoom,y=e.as,x=y===void 0?"div":y,S=e.gapMode,b=Cr(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),C=p,R=dc([n,t]),E=K(K({},b),o);return a.createElement(a.Fragment,null,u&&a.createElement(C,{sideCar:Rr,removeScrollBar:f,shards:d,noRelative:h,noIsolation:g,inert:m,setCallbacks:i,allowPinchZoom:!!v,lockRef:n,gapMode:S}),s?a.cloneElement(a.Children.only(c),K(K({},E),{ref:R})):a.createElement(x,K({},E,{className:l,ref:R}),c))});it.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};it.classNames={fullWidth:$e,zeroRight:We};var gc=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function yc(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=gc();return t&&e.setAttribute("nonce",t),e}function wc(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function bc(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var xc=function(){var e=0,t=null;return{add:function(n){e==0&&(t=yc())&&(wc(t,n),bc(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Sc=function(){var e=xc();return function(t,n){a.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},Pr=function(){var e=Sc(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},Cc={left:0,top:0,right:0,gap:0},yt=function(e){return parseInt(e||"",10)||0},Ec=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[yt(n),yt(r),yt(o)]},Rc=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return Cc;var t=Ec(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Pc=Pr(),ye="data-scroll-locked",Ac=function(e,t,n,r){var o=e.left,i=e.top,s=e.right,c=e.gap;return n===void 0&&(n="margin"),`
10
+ .`.concat(ac,` {
11
+ overflow: hidden `).concat(r,`;
12
+ padding-right: `).concat(c,"px ").concat(r,`;
13
+ }
14
+ body[`).concat(ye,`] {
15
+ overflow: hidden `).concat(r,`;
16
+ overscroll-behavior: contain;
17
+ `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&`
18
+ padding-left: `.concat(o,`px;
19
+ padding-top: `).concat(i,`px;
20
+ padding-right: `).concat(s,`px;
21
+ margin-left:0;
22
+ margin-top:0;
23
+ margin-right: `).concat(c,"px ").concat(r,`;
24
+ `),n==="padding"&&"padding-right: ".concat(c,"px ").concat(r,";")].filter(Boolean).join(""),`
25
+ }
26
+
27
+ .`).concat(We,` {
28
+ right: `).concat(c,"px ").concat(r,`;
29
+ }
30
+
31
+ .`).concat($e,` {
32
+ margin-right: `).concat(c,"px ").concat(r,`;
33
+ }
34
+
35
+ .`).concat(We," .").concat(We,` {
36
+ right: 0 `).concat(r,`;
37
+ }
38
+
39
+ .`).concat($e," .").concat($e,` {
40
+ margin-right: 0 `).concat(r,`;
41
+ }
42
+
43
+ body[`).concat(ye,`] {
44
+ `).concat(lc,": ").concat(c,`px;
45
+ }
46
+ `)},Cn=function(){var e=parseInt(document.body.getAttribute(ye)||"0",10);return isFinite(e)?e:0},Tc=function(){a.useEffect(function(){return document.body.setAttribute(ye,(Cn()+1).toString()),function(){var e=Cn()-1;e<=0?document.body.removeAttribute(ye):document.body.setAttribute(ye,e.toString())}},[])},Oc=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;Tc();var i=a.useMemo(function(){return Rc(o)},[o]);return a.createElement(Pc,{styles:Ac(i,!t,o,n?"":"!important")})},Pt=!1;if(typeof window<"u")try{var Fe=Object.defineProperty({},"passive",{get:function(){return Pt=!0,!0}});window.addEventListener("test",Fe,Fe),window.removeEventListener("test",Fe,Fe)}catch{Pt=!1}var he=Pt?{passive:!1}:!1,Dc=function(e){return e.tagName==="TEXTAREA"},Ar=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Dc(e)&&n[t]==="visible")},_c=function(e){return Ar(e,"overflowY")},Nc=function(e){return Ar(e,"overflowX")},En=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=Tr(e,r);if(o){var i=Or(e,r),s=i[1],c=i[2];if(s>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},Ic=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},Lc=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Tr=function(e,t){return e==="v"?_c(t):Nc(t)},Or=function(e,t){return e==="v"?Ic(t):Lc(t)},Mc=function(e,t){return e==="h"&&t==="rtl"?-1:1},Fc=function(e,t,n,r,o){var i=Mc(e,window.getComputedStyle(t).direction),s=i*r,c=n.target,l=t.contains(c),f=!1,u=s>0,d=0,p=0;do{if(!c)break;var h=Or(e,c),g=h[0],m=h[1],v=h[2],y=m-v-i*g;(g||y)&&Tr(e,c)&&(d+=y,p+=g);var x=c.parentNode;c=x&&x.nodeType===Node.DOCUMENT_FRAGMENT_NODE?x.host:x}while(!l&&c!==document.body||l&&(t.contains(c)||t===c));return(u&&Math.abs(d)<1||!u&&Math.abs(p)<1)&&(f=!0),f},je=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Rn=function(e){return[e.deltaX,e.deltaY]},Pn=function(e){return e&&"current"in e?e.current:e},jc=function(e,t){return e[0]===t[0]&&e[1]===t[1]},kc=function(e){return`
47
+ .block-interactivity-`.concat(e,` {pointer-events: none;}
48
+ .allow-interactivity-`).concat(e,` {pointer-events: all;}
49
+ `)},Wc=0,me=[];function $c(e){var t=a.useRef([]),n=a.useRef([0,0]),r=a.useRef(),o=a.useState(Wc++)[0],i=a.useState(Pr)[0],s=a.useRef(e);a.useEffect(function(){s.current=e},[e]),a.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var m=cc([e.lockRef.current],(e.shards||[]).map(Pn),!0).filter(Boolean);return m.forEach(function(v){return v.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),m.forEach(function(v){return v.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=a.useCallback(function(m,v){if("touches"in m&&m.touches.length===2||m.type==="wheel"&&m.ctrlKey)return!s.current.allowPinchZoom;var y=je(m),x=n.current,S="deltaX"in m?m.deltaX:x[0]-y[0],b="deltaY"in m?m.deltaY:x[1]-y[1],C,R=m.target,E=Math.abs(S)>Math.abs(b)?"h":"v";if("touches"in m&&E==="h"&&R.type==="range")return!1;var P=window.getSelection(),A=P&&P.anchorNode,T=A?A===R||A.contains(R):!1;if(T)return!1;var D=En(E,R);if(!D)return!0;if(D?C=E:(C=E==="v"?"h":"v",D=En(E,R)),!D)return!1;if(!r.current&&"changedTouches"in m&&(S||b)&&(r.current=C),!C)return!0;var M=r.current||C;return Fc(M,v,m,M==="h"?S:b)},[]),l=a.useCallback(function(m){var v=m;if(!(!me.length||me[me.length-1]!==i)){var y="deltaY"in v?Rn(v):je(v),x=t.current.filter(function(C){return C.name===v.type&&(C.target===v.target||v.target===C.shadowParent)&&jc(C.delta,y)})[0];if(x&&x.should){v.cancelable&&v.preventDefault();return}if(!x){var S=(s.current.shards||[]).map(Pn).filter(Boolean).filter(function(C){return C.contains(v.target)}),b=S.length>0?c(v,S[0]):!s.current.noIsolation;b&&v.cancelable&&v.preventDefault()}}},[]),f=a.useCallback(function(m,v,y,x){var S={name:m,delta:v,target:y,should:x,shadowParent:Bc(y)};t.current.push(S),setTimeout(function(){t.current=t.current.filter(function(b){return b!==S})},1)},[]),u=a.useCallback(function(m){n.current=je(m),r.current=void 0},[]),d=a.useCallback(function(m){f(m.type,Rn(m),m.target,c(m,e.lockRef.current))},[]),p=a.useCallback(function(m){f(m.type,je(m),m.target,c(m,e.lockRef.current))},[]);a.useEffect(function(){return me.push(i),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:p}),document.addEventListener("wheel",l,he),document.addEventListener("touchmove",l,he),document.addEventListener("touchstart",u,he),function(){me=me.filter(function(m){return m!==i}),document.removeEventListener("wheel",l,he),document.removeEventListener("touchmove",l,he),document.removeEventListener("touchstart",u,he)}},[]);var h=e.removeScrollBar,g=e.inert;return a.createElement(a.Fragment,null,g?a.createElement(i,{styles:kc(o)}):null,h?a.createElement(Oc,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Bc(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Hc=vc(Rr,$c);var Dr=a.forwardRef(function(e,t){return a.createElement(it,K({},e,{ref:t,sideCar:Hc}))});Dr.classNames=it.classNames;function Vc(e){const t=Uc(e),n=a.forwardRef((r,o)=>{const{children:i,...s}=r,c=a.Children.toArray(i),l=c.find(Yc);if(l){const f=l.props.children,u=c.map(d=>d===l?a.Children.count(f)>1?a.Children.only(null):a.isValidElement(f)?f.props.children:null:d);return w.jsx(t,{...s,ref:o,children:a.isValidElement(f)?a.cloneElement(f,void 0,u):null})}return w.jsx(t,{...s,ref:o,children:i})});return n.displayName=`${e}.Slot`,n}function Uc(e){const t=a.forwardRef((n,r)=>{const{children:o,...i}=n;if(a.isValidElement(o)){const s=Gc(o),c=Xc(i,o.props);return o.type!==a.Fragment&&(c.ref=r?Ge(r,s):s),a.cloneElement(o,c)}return a.Children.count(o)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var zc=Symbol("radix.slottable");function Yc(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===zc}function Xc(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...c)=>{const l=i(...c);return o(...c),l}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function Gc(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var st="Dialog",[_r]=de(st),[Kc,X]=_r(st),Nr=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:s=!0}=e,c=a.useRef(null),l=a.useRef(null),[f,u]=Qe({prop:r,defaultProp:o??!1,onChange:i,caller:st});return w.jsx(Kc,{scope:t,triggerRef:c,contentRef:l,contentId:ve(),titleId:ve(),descriptionId:ve(),open:f,onOpenChange:u,onOpenToggle:a.useCallback(()=>u(d=>!d),[u]),modal:s,children:n})};Nr.displayName=st;var Ir="DialogTrigger",Lr=a.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=X(Ir,n),i=j(t,o.triggerRef);return w.jsx(I.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Ut(o.open),...r,ref:i,onClick:_(e.onClick,o.onOpenToggle)})});Lr.displayName=Ir;var Ht="DialogPortal",[qc,Mr]=_r(Ht,{forceMount:void 0}),Fr=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=X(Ht,t);return w.jsx(qc,{scope:t,forceMount:n,children:a.Children.map(r,s=>w.jsx(Q,{present:n||i.open,children:w.jsx(er,{asChild:!0,container:o,children:s})}))})};Fr.displayName=Ht;var Xe="DialogOverlay",jr=a.forwardRef((e,t)=>{const n=Mr(Xe,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=X(Xe,e.__scopeDialog);return i.modal?w.jsx(Q,{present:r||i.open,children:w.jsx(Jc,{...o,ref:t})}):null});jr.displayName=Xe;var Zc=Vc("DialogOverlay.RemoveScroll"),Jc=a.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=X(Xe,n);return w.jsx(Dr,{as:Zc,allowPinchZoom:!0,shards:[o.contentRef],children:w.jsx(I.div,{"data-state":Ut(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),fe="DialogContent",kr=a.forwardRef((e,t)=>{const n=Mr(fe,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=X(fe,e.__scopeDialog);return w.jsx(Q,{present:r||i.open,children:i.modal?w.jsx(Qc,{...o,ref:t}):w.jsx(ea,{...o,ref:t})})});kr.displayName=fe;var Qc=a.forwardRef((e,t)=>{const n=X(fe,e.__scopeDialog),r=a.useRef(null),o=j(t,n.contentRef,r);return a.useEffect(()=>{const i=r.current;if(i)return sc(i)},[]),w.jsx(Wr,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:_(e.onCloseAutoFocus,i=>{var s;i.preventDefault(),(s=n.triggerRef.current)==null||s.focus()}),onPointerDownOutside:_(e.onPointerDownOutside,i=>{const s=i.detail.originalEvent,c=s.button===0&&s.ctrlKey===!0;(s.button===2||c)&&i.preventDefault()}),onFocusOutside:_(e.onFocusOutside,i=>i.preventDefault())})}),ea=a.forwardRef((e,t)=>{const n=X(fe,e.__scopeDialog),r=a.useRef(!1),o=a.useRef(!1);return w.jsx(Wr,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var s,c;(s=e.onCloseAutoFocus)==null||s.call(e,i),i.defaultPrevented||(r.current||(c=n.triggerRef.current)==null||c.focus(),i.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:i=>{var l,f;(l=e.onInteractOutside)==null||l.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((f=n.triggerRef.current)==null?void 0:f.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}})}),Wr=a.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...s}=e,c=X(fe,n),l=a.useRef(null),f=j(t,l);return Ks(),w.jsxs(w.Fragment,{children:[w.jsx(br,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i,children:w.jsx(Tt,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Ut(c.open),...s,ref:f,onDismiss:()=>c.onOpenChange(!1)})}),w.jsxs(w.Fragment,{children:[w.jsx(ta,{titleId:c.titleId}),w.jsx(ra,{contentRef:l,descriptionId:c.descriptionId})]})]})}),Vt="DialogTitle",$r=a.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=X(Vt,n);return w.jsx(I.h2,{id:o.titleId,...r,ref:t})});$r.displayName=Vt;var Br="DialogDescription",Hr=a.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=X(Br,n);return w.jsx(I.p,{id:o.descriptionId,...r,ref:t})});Hr.displayName=Br;var Vr="DialogClose",Ur=a.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=X(Vr,n);return w.jsx(I.button,{type:"button",...r,ref:t,onClick:_(e.onClick,()=>o.onOpenChange(!1))})});Ur.displayName=Vr;function Ut(e){return e?"open":"closed"}var zr="DialogTitleWarning",[Ia,Yr]=Co(zr,{contentName:fe,titleName:Vt,docsSlug:"dialog"}),ta=({titleId:e})=>{const t=Yr(zr),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
50
+
51
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
52
+
53
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return a.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},na="DialogDescriptionWarning",ra=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Yr(na).contentName}}.`;return a.useEffect(()=>{var i;const o=(i=e.current)==null?void 0:i.getAttribute("aria-describedby");t&&o&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},La=Nr,Ma=Lr,Fa=Fr,ja=jr,ka=kr,Wa=$r,$a=Hr,Ba=Ur;function An(e){const t=oa(e),n=a.forwardRef((r,o)=>{const{children:i,...s}=r,c=a.Children.toArray(i),l=c.find(sa);if(l){const f=l.props.children,u=c.map(d=>d===l?a.Children.count(f)>1?a.Children.only(null):a.isValidElement(f)?f.props.children:null:d);return w.jsx(t,{...s,ref:o,children:a.isValidElement(f)?a.cloneElement(f,void 0,u):null})}return w.jsx(t,{...s,ref:o,children:i})});return n.displayName=`${e}.Slot`,n}function oa(e){const t=a.forwardRef((n,r)=>{const{children:o,...i}=n;if(a.isValidElement(o)){const s=aa(o),c=ca(i,o.props);return o.type!==a.Fragment&&(c.ref=r?Ge(r,s):s),a.cloneElement(o,c)}return a.Children.count(o)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ia=Symbol("radix.slottable");function sa(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ia}function ca(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...c)=>{const l=i(...c);return o(...c),l}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function aa(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function la(e){const t=e+"CollectionProvider",[n,r]=de(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),s=m=>{const{scope:v,children:y}=m,x=ae.useRef(null),S=ae.useRef(new Map).current;return w.jsx(o,{scope:v,itemMap:S,collectionRef:x,children:y})};s.displayName=t;const c=e+"CollectionSlot",l=An(c),f=ae.forwardRef((m,v)=>{const{scope:y,children:x}=m,S=i(c,y),b=j(v,S.collectionRef);return w.jsx(l,{ref:b,children:x})});f.displayName=c;const u=e+"CollectionItemSlot",d="data-radix-collection-item",p=An(u),h=ae.forwardRef((m,v)=>{const{scope:y,children:x,...S}=m,b=ae.useRef(null),C=j(v,b),R=i(u,y);return ae.useEffect(()=>(R.itemMap.set(b,{ref:b,...S}),()=>void R.itemMap.delete(b))),w.jsx(p,{[d]:"",ref:C,children:x})});h.displayName=u;function g(m){const v=i(e+"CollectionConsumer",m);return ae.useCallback(()=>{const x=v.collectionRef.current;if(!x)return[];const S=Array.from(x.querySelectorAll(`[${d}]`));return Array.from(v.itemMap.values()).sort((R,E)=>S.indexOf(R.ref.current)-S.indexOf(E.ref.current))},[v.collectionRef,v.itemMap])}return[{Provider:s,Slot:f,ItemSlot:h},g,r]}var wt="rovingFocusGroup.onEntryFocus",ua={bubbles:!1,cancelable:!0},Oe="RovingFocusGroup",[At,Xr,fa]=la(Oe),[da,Gr]=de(Oe,[fa]),[pa,ha]=da(Oe),Kr=a.forwardRef((e,t)=>w.jsx(At.Provider,{scope:e.__scopeRovingFocusGroup,children:w.jsx(At.Slot,{scope:e.__scopeRovingFocusGroup,children:w.jsx(ma,{...e,ref:t})})}));Kr.displayName=Oe;var ma=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:s,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:f,preventScrollOnEntryFocus:u=!1,...d}=e,p=a.useRef(null),h=j(t,p),g=kt(i),[m,v]=Qe({prop:s,defaultProp:c??null,onChange:l,caller:Oe}),[y,x]=a.useState(!1),S=B(f),b=Xr(n),C=a.useRef(!1),[R,E]=a.useState(0);return a.useEffect(()=>{const P=p.current;if(P)return P.addEventListener(wt,S),()=>P.removeEventListener(wt,S)},[S]),w.jsx(pa,{scope:n,orientation:r,dir:g,loop:o,currentTabStopId:m,onItemFocus:a.useCallback(P=>v(P),[v]),onItemShiftTab:a.useCallback(()=>x(!0),[]),onFocusableItemAdd:a.useCallback(()=>E(P=>P+1),[]),onFocusableItemRemove:a.useCallback(()=>E(P=>P-1),[]),children:w.jsx(I.div,{tabIndex:y||R===0?-1:0,"data-orientation":r,...d,ref:h,style:{outline:"none",...e.style},onMouseDown:_(e.onMouseDown,()=>{C.current=!0}),onFocus:_(e.onFocus,P=>{const A=!C.current;if(P.target===P.currentTarget&&A&&!y){const T=new CustomEvent(wt,ua);if(P.currentTarget.dispatchEvent(T),!T.defaultPrevented){const D=b().filter(N=>N.focusable),M=D.find(N=>N.active),F=D.find(N=>N.id===m),$=[M,F,...D].filter(Boolean).map(N=>N.ref.current);Jr($,u)}}C.current=!1}),onBlur:_(e.onBlur,()=>x(!1))})})}),qr="RovingFocusGroupItem",Zr=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,children:s,...c}=e,l=ve(),f=i||l,u=ha(qr,n),d=u.currentTabStopId===f,p=Xr(n),{onFocusableItemAdd:h,onFocusableItemRemove:g,currentTabStopId:m}=u;return a.useEffect(()=>{if(r)return h(),()=>g()},[r,h,g]),w.jsx(At.ItemSlot,{scope:n,id:f,focusable:r,active:o,children:w.jsx(I.span,{tabIndex:d?0:-1,"data-orientation":u.orientation,...c,ref:t,onMouseDown:_(e.onMouseDown,v=>{r?u.onItemFocus(f):v.preventDefault()}),onFocus:_(e.onFocus,()=>u.onItemFocus(f)),onKeyDown:_(e.onKeyDown,v=>{if(v.key==="Tab"&&v.shiftKey){u.onItemShiftTab();return}if(v.target!==v.currentTarget)return;const y=ya(v,u.orientation,u.dir);if(y!==void 0){if(v.metaKey||v.ctrlKey||v.altKey||v.shiftKey)return;v.preventDefault();let S=p().filter(b=>b.focusable).map(b=>b.ref.current);if(y==="last")S.reverse();else if(y==="prev"||y==="next"){y==="prev"&&S.reverse();const b=S.indexOf(v.currentTarget);S=u.loop?wa(S,b+1):S.slice(b+1)}setTimeout(()=>Jr(S))}}),children:typeof s=="function"?s({isCurrentTabStop:d,hasTabStop:m!=null}):s})})});Zr.displayName=qr;var va={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function ga(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function ya(e,t,n){const r=ga(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return va[r]}function Jr(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function wa(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var ba=Kr,xa=Zr,ct="Tabs",[Sa]=de(ct,[Gr]),Qr=Gr(),[Ca,zt]=Sa(ct),eo=a.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:s="horizontal",dir:c,activationMode:l="automatic",...f}=e,u=kt(c),[d,p]=Qe({prop:r,onChange:o,defaultProp:i??"",caller:ct});return w.jsx(Ca,{scope:n,baseId:ve(),value:d,onValueChange:p,orientation:s,dir:u,activationMode:l,children:w.jsx(I.div,{dir:u,"data-orientation":s,...f,ref:t})})});eo.displayName=ct;var to="TabsList",no=a.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=zt(to,n),s=Qr(n);return w.jsx(ba,{asChild:!0,...s,orientation:i.orientation,dir:i.dir,loop:r,children:w.jsx(I.div,{role:"tablist","aria-orientation":i.orientation,...o,ref:t})})});no.displayName=to;var ro="TabsTrigger",oo=a.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,s=zt(ro,n),c=Qr(n),l=co(s.baseId,r),f=ao(s.baseId,r),u=r===s.value;return w.jsx(xa,{asChild:!0,...c,focusable:!o,active:u,children:w.jsx(I.button,{type:"button",role:"tab","aria-selected":u,"aria-controls":f,"data-state":u?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:l,...i,ref:t,onMouseDown:_(e.onMouseDown,d=>{!o&&d.button===0&&d.ctrlKey===!1?s.onValueChange(r):d.preventDefault()}),onKeyDown:_(e.onKeyDown,d=>{[" ","Enter"].includes(d.key)&&s.onValueChange(r)}),onFocus:_(e.onFocus,()=>{const d=s.activationMode!=="manual";!u&&!o&&d&&s.onValueChange(r)})})})});oo.displayName=ro;var io="TabsContent",so=a.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...s}=e,c=zt(io,n),l=co(c.baseId,r),f=ao(c.baseId,r),u=r===c.value,d=a.useRef(u);return a.useEffect(()=>{const p=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(p)},[]),w.jsx(Q,{present:o||u,children:({present:p})=>w.jsx(I.div,{"data-state":u?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":l,hidden:!p,id:f,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:d.current?"0s":void 0},children:p&&i})})});so.displayName=io;function co(e,t){return`${e}-trigger-${t}`}function ao(e,t){return`${e}-content-${t}`}var Ha=eo,Va=no,Ua=oo,za=so;export{rs as A,Ma as B,Oa as C,Tt as D,Ha as E,br as F,Ua as G,za as H,Va as L,ja as O,Pa as P,Aa as R,ks as S,Ta as T,_a as V,Da as a,Na as b,Us as c,Ge as d,Q as e,er as f,Dr as g,sc as h,_ as i,w as j,de as k,zn as l,Ks as m,os as n,Qe as o,ns as p,ve as q,I as r,is as s,Fa as t,j as u,ka as v,Ba as w,La as x,Wa as y,$a as z};
@@ -0,0 +1,16 @@
1
+ import{c as b,aQ as V,u as q}from"./index-Bc9dK3MW.js";import{a as o}from"./vendor-Bqt8AJn2.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const B=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],Y=b("bot",B);/**
7
+ * @license lucide-react v0.577.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const W=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Z=b("pencil",W);/**
12
+ * @license lucide-react v0.577.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const F=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],ee=b("save",F);function K(c){const[a,u]=o.useState({past:[],present:structuredClone(c),future:[]}),p=o.useCallback(r=>{u(l=>({past:[...l.past,l.present].slice(-50),present:r,future:[]}))},[]),d=o.useCallback(()=>{u(r=>{if(r.past.length===0)return r;const l=[...r.past],k=l.pop();return{past:l,present:k,future:[r.present,...r.future]}})},[]),s=o.useCallback(()=>{u(r=>{if(r.future.length===0)return r;const l=[...r.future],k=l.shift();return{past:[...r.past,r.present],present:k,future:l}})},[]),f=o.useCallback(r=>{u({past:[],present:structuredClone(r),future:[]})},[]),g=o.useMemo(()=>a.past.length,[a.past.length]);return{present:a.present,canUndo:a.past.length>0,canRedo:a.future.length>0,changeCount:g,pushState:p,undo:d,redo:s,reset:f}}function Q(c){const a=[];if(!V(c))return a.push("Invalid config shape: must have version=1, name, lists[], edges[]"),{valid:!1,errors:a};c.branchingMode!==void 0&&c.branchingMode!=="trunk"&&c.branchingMode!=="worktree"&&a.push(`Invalid branchingMode: "${c.branchingMode}" (must be "trunk" or "worktree")`);const u=new Set;for(const s of c.lists)u.has(s.id)&&a.push(`Duplicate list ID: "${s.id}"`),u.add(s.id);const p=new Set;for(const s of c.edges){u.has(s.from)||a.push(`Edge references unknown list: from="${s.from}"`),u.has(s.to)||a.push(`Edge references unknown list: to="${s.to}"`),s.from===s.to&&a.push(`Self-referencing edge: "${s.from}" → "${s.to}"`);const f=`${s.from}:${s.to}`;p.has(f)&&a.push(`Duplicate edge: ${f}`),p.add(f)}const d=c.lists.filter(s=>s.isEntryPoint);if(d.length===0&&a.push("No entry point defined (isEntryPoint=true)"),d.length>1&&a.push(`Multiple entry points: ${d.map(s=>s.id).join(", ")}`),d.length===1&&a.length===0){const s=new Set(c.terminalStatuses??[]),f=new Set,g=[d[0].id];for(;g.length>0;){const r=g.shift();if(!f.has(r)){f.add(r);for(const l of c.edges)l.from===r&&!f.has(l.to)&&g.push(l.to)}}for(const r of c.lists)!s.has(r.id)&&!f.has(r.id)&&a.push(`List "${r.id}" is not reachable from entry point`)}return{valid:a.length===0,errors:a}}function te(c){const[a,u]=o.useState(!1),[p,d]=o.useState(!1),s=q(),[f,g]=o.useState(null),[r,l]=o.useState(!1),[k,S]=o.useState(null),[$,m]=o.useState(!1),[x,v]=o.useState(!1),[j,M]=o.useState(!1),[L,E]=o.useState(!1),e=K(c),C=o.useMemo(()=>Q(e.present),[e.present]),N=o.useCallback(()=>{e.reset(c),u(!0)},[c,e]),w=o.useCallback(()=>{u(!1),m(!1),v(!1),M(!1),E(!1)},[]),T=o.useCallback(()=>{e.reset(c),w()},[c,e,w]),U=o.useCallback(n=>{const t=structuredClone(e.present);t.lists.push(n),e.pushState(t)},[e]),_=o.useCallback((n,t)=>{const i=structuredClone(e.present),y=i.lists.findIndex(h=>h.id===n.id);if(y!==-1){if(n.id!==t.id)for(const h of i.edges)h.from===n.id&&(h.from=t.id),h.to===n.id&&(h.to=t.id);i.lists[y]=t,e.pushState(i)}},[e]),I=o.useCallback(n=>{const t=structuredClone(e.present);t.lists=t.lists.filter(i=>i.id!==n),t.edges=t.edges.filter(i=>i.from!==n&&i.to!==n),e.pushState(t)},[e]),O=o.useCallback(n=>{const t=structuredClone(e.present);t.edges.push(n),e.pushState(t)},[e]),z=o.useCallback(n=>{e.pushState(structuredClone(n))},[e]),A=o.useCallback((n,t)=>{const i=structuredClone(e.present),y=`${n.from}:${n.to}`,h=i.edges.findIndex(P=>`${P.from}:${P.to}`===y);h!==-1&&(i.edges[h]=t,e.pushState(i))},[e]),H=o.useCallback((n,t)=>{const i=structuredClone(e.present);i.edges=i.edges.filter(y=>!(y.from===n&&y.to===t)),e.pushState(i)},[e]),D=o.useCallback(async()=>{if(!(!C.valid||p)){d(!0);try{const t=await(await fetch(s("/workflow"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.present)})).json();if(!t.success)throw new Error(t.error??"Save failed");w()}catch(n){S(n instanceof Error?n.message:"Save failed")}finally{d(!1)}}},[C.valid,p,e.present,w,s]),J=o.useCallback(async()=>{l(!0),S(null),g(null),m(!0);try{const t=await(await fetch(s("/workflow/preview"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e.present)})).json();if(!t.success)throw new Error(t.error??"Preview failed");g(t.data??null)}catch(n){S(n instanceof Error?n.message:"Preview failed")}finally{l(!1)}},[e.present,s]),R=o.useCallback(async n=>{d(!0);try{const i=await(await fetch(s("/workflow/apply"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({config:e.present,orphanMappings:n})})).json();if(!i.success)throw new Error(i.error??"Migration failed");m(!1),w()}catch(t){S(t instanceof Error?t.message:"Migration failed")}finally{d(!1)}},[e.present,w,s]);return{editMode:a,editConfig:e.present,canUndo:e.canUndo,canRedo:e.canRedo,changeCount:e.changeCount,validation:C,saving:p,previewPlan:f,previewLoading:r,previewError:k,showPreview:$,showAddList:x,showAddEdge:j,showConfigSettings:L,enterEditMode:N,exitEditMode:w,undo:e.undo,redo:e.redo,updateList:_,deleteList:I,addList:U,updateEdge:A,deleteEdge:H,addEdge:O,updateConfig:z,save:D,discard:T,preview:J,applyMigration:R,setShowPreview:m,setShowAddList:v,setShowAddEdge:M,setShowConfigSettings:E}}export{Y as B,Z as P,ee as S,te as u};
@@ -56,4 +56,4 @@ Error generating stack: `+i.message+`
56
56
  * LICENSE.md file in the root directory of this source tree.
57
57
  *
58
58
  * @license MIT
59
- */function Bl(){return Bl=Object.assign?Object.assign.bind():function(o){for(var c=1;c<arguments.length;c++){var a=arguments[c];for(var p in a)Object.prototype.hasOwnProperty.call(a,p)&&(o[p]=a[p])}return o},Bl.apply(this,arguments)}function vc(o,c){if(o==null)return{};var a={},p=Object.keys(o),y,w;for(w=0;w<p.length;w++)y=p[w],!(c.indexOf(y)>=0)&&(a[y]=o[y]);return a}function mp(o){return!!(o.metaKey||o.altKey||o.ctrlKey||o.shiftKey)}function vp(o,c){return o.button===0&&(!c||c==="_self")&&!mp(o)}function $u(o){return o===void 0&&(o=""),new URLSearchParams(typeof o=="string"||Array.isArray(o)||o instanceof URLSearchParams?o:Object.keys(o).reduce((c,a)=>{let p=o[a];return c.concat(Array.isArray(p)?p.map(y=>[a,y]):[[a,p]])},[]))}function yp(o,c){let a=$u(o);return c&&c.forEach((p,y)=>{a.has(y)||c.getAll(y).forEach(w=>{a.append(y,w)})}),a}const gp=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],wp=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],Sp="6";try{window.__reactRouterVersion=Sp}catch{}const kp=R.createContext({isTransitioning:!1}),Ep="startTransition",rc=yd[Ep];function Ip(o){let{basename:c,children:a,future:p,window:y}=o,w=R.useRef();w.current==null&&(w.current=Cd({window:y,v5Compat:!0}));let S=w.current,[N,P]=R.useState({action:S.action,location:S.location}),{v7_startTransition:z}=p||{},U=R.useCallback(L=>{z&&rc?rc(()=>P(L)):P(L)},[P,z]);return R.useLayoutEffect(()=>S.listen(U),[S,U]),R.useEffect(()=>dp(p),[p]),R.createElement(hp,{basename:c,children:a,location:N.location,navigationType:N.action,navigator:S,future:p})}const Cp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",xp=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Pp=R.forwardRef(function(c,a){let{onClick:p,relative:y,reloadDocument:w,replace:S,state:N,target:P,to:z,preventScrollReset:U,viewTransition:L}=c,A=vc(c,gp),{basename:le}=R.useContext(Rt),K,V=!1;if(typeof z=="string"&&xp.test(z)&&(K=z,Cp))try{let q=new URL(window.location.href),G=z.startsWith("//")?new URL(q.protocol+z):new URL(z),Se=Un(G.pathname,le);G.origin===q.origin&&Se!=null?z=Se+G.search+G.hash:V=!0}catch{}let T=Gd(z,{relative:y}),re=Np(z,{replace:S,state:N,target:P,preventScrollReset:U,relative:y,viewTransition:L});function X(q){p&&p(q),q.defaultPrevented||re(q)}return R.createElement("a",Bl({},A,{href:K||T,onClick:V||w?p:X,ref:a,target:P}))}),Dp=R.forwardRef(function(c,a){let{"aria-current":p="page",caseSensitive:y=!1,className:w="",end:S=!1,style:N,to:P,viewTransition:z,children:U}=c,L=vc(c,wp),A=Wl(P,{relative:L.relative}),le=dn(),K=R.useContext(cc),{navigator:V,basename:T}=R.useContext(Rt),re=K!=null&&Lp(A)&&z===!0,X=V.encodeLocation?V.encodeLocation(A).pathname:A.pathname,q=le.pathname,G=K&&K.navigation&&K.navigation.location?K.navigation.location.pathname:null;y||(q=q.toLowerCase(),G=G?G.toLowerCase():null,X=X.toLowerCase()),G&&T&&(G=Un(G,T)||G);const Se=X!=="/"&&X.endsWith("/")?X.length-1:X.length;let Ee=q===X||!S&&q.startsWith(X)&&q.charAt(Se)==="/",Le=G!=null&&(G===X||!S&&G.startsWith(X)&&G.charAt(X.length)==="/"),Te={isActive:Ee,isPending:Le,isTransitioning:re},dt=Ee?p:void 0,Qe;typeof w=="function"?Qe=w(Te):Qe=[w,Ee?"active":null,Le?"pending":null,re?"transitioning":null].filter(Boolean).join(" ");let St=typeof N=="function"?N(Te):N;return R.createElement(Pp,Bl({},L,{"aria-current":dt,className:Qe,ref:a,style:St,to:P,viewTransition:z}),typeof U=="function"?U(Te):U)});var Qu;(function(o){o.UseScrollRestoration="useScrollRestoration",o.UseSubmit="useSubmit",o.UseSubmitFetcher="useSubmitFetcher",o.UseFetcher="useFetcher",o.useViewTransitionState="useViewTransitionState"})(Qu||(Qu={}));var lc;(function(o){o.UseFetcher="useFetcher",o.UseFetchers="useFetchers",o.UseScrollRestoration="useScrollRestoration"})(lc||(lc={}));function _p(o){let c=R.useContext(Al);return c||me(!1),c}function Np(o,c){let{target:a,replace:p,state:y,preventScrollReset:w,relative:S,viewTransition:N}=c===void 0?{}:c,P=Gu(),z=dn(),U=Wl(o,{relative:S});return R.useCallback(L=>{if(vp(L,a)){L.preventDefault();let A=p!==void 0?p:Ul(z)===Ul(U);P(o,{replace:A,state:y,preventScrollReset:w,relative:S,viewTransition:N})}},[z,P,U,p,y,a,o,w,S,N])}function Fp(o){let c=R.useRef($u(o)),a=R.useRef(!1),p=dn(),y=R.useMemo(()=>yp(p.search,a.current?null:c.current),[p.search]),w=Gu(),S=R.useCallback((N,P)=>{const z=$u(typeof N=="function"?N(y):N);a.current=!0,w("?"+z,P)},[w,y]);return[y,S]}function Lp(o,c){c===void 0&&(c={});let a=R.useContext(kp);a==null&&me(!1);let{basename:p}=_p(Qu.useViewTransitionState),y=Wl(o,{relative:c.relative});if(!a.isTransitioning)return!1;let w=Un(a.currentLocation.pathname,p)||a.currentLocation.pathname,S=Un(a.nextLocation.pathname,p)||a.nextLocation.pathname;return Wu(y.pathname,S)!=null||Wu(y.pathname,w)!=null}export{Ip as B,Dp as N,Op as O,yd as R,R as a,Ed as b,zp as c,vd as d,Rp as e,kd as f,ic as g,Fp as h,Mp as i,pp as j,Tp as k,uc as r,Gu as u};
59
+ */function Bl(){return Bl=Object.assign?Object.assign.bind():function(o){for(var c=1;c<arguments.length;c++){var a=arguments[c];for(var p in a)Object.prototype.hasOwnProperty.call(a,p)&&(o[p]=a[p])}return o},Bl.apply(this,arguments)}function vc(o,c){if(o==null)return{};var a={},p=Object.keys(o),y,w;for(w=0;w<p.length;w++)y=p[w],!(c.indexOf(y)>=0)&&(a[y]=o[y]);return a}function mp(o){return!!(o.metaKey||o.altKey||o.ctrlKey||o.shiftKey)}function vp(o,c){return o.button===0&&(!c||c==="_self")&&!mp(o)}function $u(o){return o===void 0&&(o=""),new URLSearchParams(typeof o=="string"||Array.isArray(o)||o instanceof URLSearchParams?o:Object.keys(o).reduce((c,a)=>{let p=o[a];return c.concat(Array.isArray(p)?p.map(y=>[a,y]):[[a,p]])},[]))}function yp(o,c){let a=$u(o);return c&&c.forEach((p,y)=>{a.has(y)||c.getAll(y).forEach(w=>{a.append(y,w)})}),a}const gp=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],wp=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"],Sp="6";try{window.__reactRouterVersion=Sp}catch{}const kp=R.createContext({isTransitioning:!1}),Ep="startTransition",rc=yd[Ep];function Ip(o){let{basename:c,children:a,future:p,window:y}=o,w=R.useRef();w.current==null&&(w.current=Cd({window:y,v5Compat:!0}));let S=w.current,[N,P]=R.useState({action:S.action,location:S.location}),{v7_startTransition:z}=p||{},U=R.useCallback(L=>{z&&rc?rc(()=>P(L)):P(L)},[P,z]);return R.useLayoutEffect(()=>S.listen(U),[S,U]),R.useEffect(()=>dp(p),[p]),R.createElement(hp,{basename:c,children:a,location:N.location,navigationType:N.action,navigator:S,future:p})}const Cp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",xp=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Pp=R.forwardRef(function(c,a){let{onClick:p,relative:y,reloadDocument:w,replace:S,state:N,target:P,to:z,preventScrollReset:U,viewTransition:L}=c,A=vc(c,gp),{basename:le}=R.useContext(Rt),K,V=!1;if(typeof z=="string"&&xp.test(z)&&(K=z,Cp))try{let q=new URL(window.location.href),G=z.startsWith("//")?new URL(q.protocol+z):new URL(z),Se=Un(G.pathname,le);G.origin===q.origin&&Se!=null?z=Se+G.search+G.hash:V=!0}catch{}let T=Gd(z,{relative:y}),re=Np(z,{replace:S,state:N,target:P,preventScrollReset:U,relative:y,viewTransition:L});function X(q){p&&p(q),q.defaultPrevented||re(q)}return R.createElement("a",Bl({},A,{href:K||T,onClick:V||w?p:X,ref:a,target:P}))}),Dp=R.forwardRef(function(c,a){let{"aria-current":p="page",caseSensitive:y=!1,className:w="",end:S=!1,style:N,to:P,viewTransition:z,children:U}=c,L=vc(c,wp),A=Wl(P,{relative:L.relative}),le=dn(),K=R.useContext(cc),{navigator:V,basename:T}=R.useContext(Rt),re=K!=null&&Lp(A)&&z===!0,X=V.encodeLocation?V.encodeLocation(A).pathname:A.pathname,q=le.pathname,G=K&&K.navigation&&K.navigation.location?K.navigation.location.pathname:null;y||(q=q.toLowerCase(),G=G?G.toLowerCase():null,X=X.toLowerCase()),G&&T&&(G=Un(G,T)||G);const Se=X!=="/"&&X.endsWith("/")?X.length-1:X.length;let Ee=q===X||!S&&q.startsWith(X)&&q.charAt(Se)==="/",Le=G!=null&&(G===X||!S&&G.startsWith(X)&&G.charAt(X.length)==="/"),Te={isActive:Ee,isPending:Le,isTransitioning:re},dt=Ee?p:void 0,Qe;typeof w=="function"?Qe=w(Te):Qe=[w,Ee?"active":null,Le?"pending":null,re?"transitioning":null].filter(Boolean).join(" ");let St=typeof N=="function"?N(Te):N;return R.createElement(Pp,Bl({},L,{"aria-current":dt,className:Qe,ref:a,style:St,to:P,viewTransition:z}),typeof U=="function"?U(Te):U)});var Qu;(function(o){o.UseScrollRestoration="useScrollRestoration",o.UseSubmit="useSubmit",o.UseSubmitFetcher="useSubmitFetcher",o.UseFetcher="useFetcher",o.useViewTransitionState="useViewTransitionState"})(Qu||(Qu={}));var lc;(function(o){o.UseFetcher="useFetcher",o.UseFetchers="useFetchers",o.UseScrollRestoration="useScrollRestoration"})(lc||(lc={}));function _p(o){let c=R.useContext(Al);return c||me(!1),c}function Np(o,c){let{target:a,replace:p,state:y,preventScrollReset:w,relative:S,viewTransition:N}=c===void 0?{}:c,P=Gu(),z=dn(),U=Wl(o,{relative:S});return R.useCallback(L=>{if(vp(L,a)){L.preventDefault();let A=p!==void 0?p:Ul(z)===Ul(U);P(o,{replace:A,state:y,preventScrollReset:w,relative:S,viewTransition:N})}},[z,P,U,p,y,a,o,w,S,N])}function Fp(o){let c=R.useRef($u(o)),a=R.useRef(!1),p=dn(),y=R.useMemo(()=>yp(p.search,a.current?null:c.current),[p.search]),w=Gu(),S=R.useCallback((N,P)=>{const z=$u(typeof N=="function"?N(y):N);a.current=!0,w("?"+z,P)},[w,y]);return[y,S]}function Lp(o,c){c===void 0&&(c={});let a=R.useContext(kp);a==null&&me(!1);let{basename:p}=_p(Qu.useViewTransitionState),y=Wl(o,{relative:c.relative});if(!a.isTransitioning)return!1;let w=Un(a.currentLocation.pathname,p)||a.currentLocation.pathname,S=Un(a.nextLocation.pathname,p)||a.nextLocation.pathname;return Wu(y.pathname,S)!=null||Wu(y.pathname,w)!=null}export{Ip as B,Dp as N,Op as O,yd as R,R as a,Ed as b,zp as c,vd as d,Rp as e,kd as f,ic as g,Gu as h,dn as i,Mp as j,pp as k,Tp as l,uc as r,Fp as u};
@@ -0,0 +1,11 @@
1
+ import{c as e}from"./index-Bc9dK3MW.js";/**
2
+ * @license lucide-react v0.577.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const t=[["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["circle",{cx:"12",cy:"12",r:"8",key:"46899m"}]],d=e("cog",t);/**
7
+ * @license lucide-react v0.577.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const a=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],p=e("zap",a);export{d as C,p as Z};
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><circle cx="16" cy="16" r="14" fill="#0ea5e9" opacity="0.9"/><text x="16" y="22" text-anchor="middle" font-size="18" font-family="system-ui" fill="white">O</text></svg>
package/dist/index.html CHANGED
@@ -3,15 +3,16 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
7
  <title>Orbital Command</title>
7
8
  <link rel="preconnect" href="https://fonts.googleapis.com" />
8
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
10
  <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Space+Grotesk:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
10
- <script type="module" crossorigin src="/assets/index-DpItvKpf.js"></script>
11
- <link rel="modulepreload" crossorigin href="/assets/vendor-Dzv9lrRc.js">
12
- <link rel="modulepreload" crossorigin href="/assets/ui-BvF022GT.js">
13
- <link rel="modulepreload" crossorigin href="/assets/charts-D__PA1zp.js">
14
- <link rel="stylesheet" crossorigin href="/assets/index-D1G6i0nS.css">
11
+ <script type="module" crossorigin src="/assets/index-Bc9dK3MW.js"></script>
12
+ <link rel="modulepreload" crossorigin href="/assets/vendor-Bqt8AJn2.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/ui-BmsSg9jU.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/charts-DbDg0Psc.js">
15
+ <link rel="stylesheet" crossorigin href="/assets/index-Aj4sV8Al.css">
15
16
  </head>
16
17
  <body class="h-full">
17
18
  <div id="root" class="h-full"></div>
@@ -0,0 +1,124 @@
1
+ import { describe, it, expect, beforeAll, afterAll, vi } from 'vitest';
2
+ import express from 'express';
3
+ import request from 'supertest';
4
+ import { createDataRoutes } from '../routes/data-routes.js';
5
+ import { EventService } from '../services/event-service.js';
6
+ import { GateService } from '../services/gate-service.js';
7
+ import { DeployService } from '../services/deploy-service.js';
8
+ import { WorkflowEngine } from '../../shared/workflow-engine.js';
9
+ import { createTestDb } from './helpers/db.js';
10
+ import { createMockEmitter } from './helpers/mock-emitter.js';
11
+ import { DEFAULT_CONFIG } from '../../shared/__fixtures__/workflow-configs.js';
12
+ describe('data-routes', () => {
13
+ let app;
14
+ let db;
15
+ let cleanup;
16
+ beforeAll(() => {
17
+ ({ db, cleanup } = createTestDb());
18
+ const emitter = createMockEmitter();
19
+ const engine = new WorkflowEngine(DEFAULT_CONFIG);
20
+ const eventService = new EventService(db, emitter);
21
+ const gateService = new GateService(db, emitter);
22
+ const deployService = new DeployService(db, emitter);
23
+ const mockGitService = {
24
+ getPipelineDrift: vi.fn().mockReturnValue({ ahead: 0, behind: 0, files: [] }),
25
+ getStatusHash: vi.fn().mockReturnValue('abc123'),
26
+ getWorktrees: vi.fn().mockReturnValue([]),
27
+ getCurrentBranch: vi.fn().mockReturnValue('main'),
28
+ isDirty: vi.fn().mockReturnValue(false),
29
+ };
30
+ const router = createDataRoutes({
31
+ db,
32
+ io: emitter,
33
+ eventService,
34
+ gateService,
35
+ deployService,
36
+ gitService: mockGitService,
37
+ engine,
38
+ projectRoot: '/tmp/test-project',
39
+ inferScopeStatus: vi.fn(),
40
+ });
41
+ app = express();
42
+ app.use(express.json());
43
+ app.use('/api/orbital', router);
44
+ });
45
+ afterAll(() => {
46
+ cleanup?.();
47
+ });
48
+ // ─── Event Endpoints ──────────────────────────────────────
49
+ describe('POST /api/orbital/events', () => {
50
+ it('creates event with valid body (201)', async () => {
51
+ const res = await request(app)
52
+ .post('/api/orbital/events')
53
+ .send({ type: 'TEST_EVENT', scope_id: 1, data: { foo: 'bar' } });
54
+ expect(res.status).toBe(201);
55
+ expect(res.body.type).toBe('TEST_EVENT');
56
+ expect(res.body.id).toBeDefined();
57
+ });
58
+ it('rejects missing type (400)', async () => {
59
+ const res = await request(app)
60
+ .post('/api/orbital/events')
61
+ .send({ scope_id: 1 });
62
+ expect(res.status).toBe(400);
63
+ expect(res.body.error).toContain('type');
64
+ });
65
+ it('rejects invalid scope_id (400)', async () => {
66
+ const res = await request(app)
67
+ .post('/api/orbital/events')
68
+ .send({ type: 'TEST', scope_id: -1 });
69
+ expect(res.status).toBe(400);
70
+ expect(res.body.error).toContain('scope_id');
71
+ });
72
+ });
73
+ describe('GET /api/orbital/events', () => {
74
+ it('returns events', async () => {
75
+ const res = await request(app).get('/api/orbital/events');
76
+ expect(res.status).toBe(200);
77
+ expect(Array.isArray(res.body)).toBe(true);
78
+ });
79
+ });
80
+ // ─── Gate Endpoints ───────────────────────────────────────
81
+ describe('POST /api/orbital/gates', () => {
82
+ it('records gate result (201)', async () => {
83
+ const res = await request(app)
84
+ .post('/api/orbital/gates')
85
+ .send({ gate_name: 'type-check', status: 'pass', duration_ms: 1200 });
86
+ expect(res.status).toBe(201);
87
+ });
88
+ });
89
+ describe('GET /api/orbital/gates/stats', () => {
90
+ it('returns stats array', async () => {
91
+ const res = await request(app).get('/api/orbital/gates/stats');
92
+ expect(res.status).toBe(200);
93
+ expect(Array.isArray(res.body)).toBe(true);
94
+ });
95
+ });
96
+ // ─── Deployment Endpoints ─────────────────────────────────
97
+ describe('POST /api/orbital/deployments', () => {
98
+ it('records deployment (201)', async () => {
99
+ const res = await request(app)
100
+ .post('/api/orbital/deployments')
101
+ .send({ environment: 'staging', status: 'deploying', commit_sha: 'abc' });
102
+ expect(res.status).toBe(201);
103
+ expect(res.body.id).toBeDefined();
104
+ });
105
+ });
106
+ describe('GET /api/orbital/deployments', () => {
107
+ it('returns recent deployments', async () => {
108
+ const res = await request(app).get('/api/orbital/deployments');
109
+ expect(res.status).toBe(200);
110
+ expect(Array.isArray(res.body)).toBe(true);
111
+ });
112
+ });
113
+ // ─── Violations Summary ───────────────────────────────────
114
+ describe('GET /api/orbital/events/violations/summary', () => {
115
+ it('returns summary structure', async () => {
116
+ const res = await request(app).get('/api/orbital/events/violations/summary');
117
+ expect(res.status).toBe(200);
118
+ expect(res.body).toHaveProperty('totalViolations');
119
+ expect(res.body).toHaveProperty('totalOverrides');
120
+ expect(res.body).toHaveProperty('byRule');
121
+ expect(res.body).toHaveProperty('byFile');
122
+ });
123
+ });
124
+ });
@@ -0,0 +1,17 @@
1
+ import Database from 'better-sqlite3';
2
+ import { SCHEMA_DDL } from '../../schema.js';
3
+ /**
4
+ * Create an in-memory SQLite database with the full Orbital schema.
5
+ * Returns the db handle and a cleanup function.
6
+ */
7
+ export function createTestDb() {
8
+ const db = new Database(':memory:');
9
+ db.pragma('journal_mode = WAL');
10
+ db.pragma('synchronous = NORMAL');
11
+ db.pragma('foreign_keys = ON');
12
+ db.exec(SCHEMA_DDL);
13
+ return {
14
+ db,
15
+ cleanup: () => db.close(),
16
+ };
17
+ }
@@ -0,0 +1,8 @@
1
+ import { vi } from 'vitest';
2
+ /**
3
+ * Create a mock ProjectEmitter for testing services.
4
+ * Services only call emit(), so that's all we mock.
5
+ */
6
+ export function createMockEmitter() {
7
+ return { emit: vi.fn().mockReturnValue(true) };
8
+ }