heyio 1.13.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -278
- package/dist/api/middleware/auth.d.ts +14 -0
- package/dist/api/middleware/auth.d.ts.map +1 -0
- package/dist/api/middleware/auth.js +66 -0
- package/dist/api/middleware/auth.js.map +1 -0
- package/dist/api/notifications.d.ts +14 -0
- package/dist/api/notifications.d.ts.map +1 -0
- package/dist/api/notifications.js +112 -0
- package/dist/api/notifications.js.map +1 -0
- package/dist/api/routes/activity.d.ts +3 -0
- package/dist/api/routes/activity.d.ts.map +1 -0
- package/dist/api/routes/activity.js +28 -0
- package/dist/api/routes/activity.js.map +1 -0
- package/dist/api/routes/attachments.d.ts +3 -0
- package/dist/api/routes/attachments.d.ts.map +1 -0
- package/dist/api/routes/attachments.js +83 -0
- package/dist/api/routes/attachments.js.map +1 -0
- package/dist/api/routes/config.d.ts +3 -0
- package/dist/api/routes/config.d.ts.map +1 -0
- package/dist/api/routes/config.js +106 -0
- package/dist/api/routes/config.js.map +1 -0
- package/dist/api/routes/conversations.d.ts +3 -0
- package/dist/api/routes/conversations.d.ts.map +1 -0
- package/dist/api/routes/conversations.js +69 -0
- package/dist/api/routes/conversations.js.map +1 -0
- package/dist/api/routes/health.d.ts +3 -0
- package/dist/api/routes/health.d.ts.map +1 -0
- package/dist/api/routes/health.js +16 -0
- package/dist/api/routes/health.js.map +1 -0
- package/dist/api/routes/inbox.d.ts +3 -0
- package/dist/api/routes/inbox.d.ts.map +1 -0
- package/dist/api/routes/inbox.js +88 -0
- package/dist/api/routes/inbox.js.map +1 -0
- package/dist/api/routes/schedules.d.ts +3 -0
- package/dist/api/routes/schedules.d.ts.map +1 -0
- package/dist/api/routes/schedules.js +96 -0
- package/dist/api/routes/schedules.js.map +1 -0
- package/dist/api/routes/skills.d.ts +2 -0
- package/dist/api/routes/skills.d.ts.map +1 -0
- package/dist/api/routes/skills.js +85 -0
- package/dist/api/routes/skills.js.map +1 -0
- package/dist/api/routes/squads.d.ts +3 -0
- package/dist/api/routes/squads.d.ts.map +1 -0
- package/dist/api/routes/squads.js +129 -0
- package/dist/api/routes/squads.js.map +1 -0
- package/dist/api/routes/usage.d.ts +3 -0
- package/dist/api/routes/usage.d.ts.map +1 -0
- package/dist/api/routes/usage.js +55 -0
- package/dist/api/routes/usage.js.map +1 -0
- package/dist/api/routes/wiki.d.ts +2 -0
- package/dist/api/routes/wiki.d.ts.map +1 -0
- package/dist/api/routes/wiki.js +43 -0
- package/dist/api/routes/wiki.js.map +1 -0
- package/dist/api/server.d.ts +7 -0
- package/dist/api/server.d.ts.map +1 -0
- package/dist/api/server.js +136 -634
- package/dist/api/server.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +2 -91
- package/dist/config.js.map +1 -0
- package/dist/copilot/client.d.ts +5 -0
- package/dist/copilot/client.d.ts.map +1 -0
- package/dist/copilot/client.js +19 -11
- package/dist/copilot/client.js.map +1 -0
- package/dist/copilot/health-monitor.d.ts +14 -0
- package/dist/copilot/health-monitor.d.ts.map +1 -0
- package/dist/copilot/health-monitor.js +70 -0
- package/dist/copilot/health-monitor.js.map +1 -0
- package/dist/copilot/orchestrator.d.ts +5 -0
- package/dist/copilot/orchestrator.d.ts.map +1 -0
- package/dist/copilot/orchestrator.js +127 -123
- package/dist/copilot/orchestrator.js.map +1 -0
- package/dist/copilot/tools.d.ts +49 -0
- package/dist/copilot/tools.d.ts.map +1 -0
- package/dist/copilot/tools.js +545 -321
- package/dist/copilot/tools.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -26
- package/dist/index.js.map +1 -0
- package/dist/logging/logger.d.ts +6 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +21 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/models/index.d.ts +6 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +4 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/pricing.d.ts +25 -0
- package/dist/models/pricing.d.ts.map +1 -0
- package/dist/models/pricing.js +96 -0
- package/dist/models/pricing.js.map +1 -0
- package/dist/models/registry.d.ts +34 -0
- package/dist/models/registry.d.ts.map +1 -0
- package/dist/models/registry.js +109 -0
- package/dist/models/registry.js.map +1 -0
- package/dist/models/token-tracker.d.ts +40 -0
- package/dist/models/token-tracker.d.ts.map +1 -0
- package/dist/models/token-tracker.js +102 -0
- package/dist/models/token-tracker.js.map +1 -0
- package/dist/scheduler/engine.d.ts +9 -0
- package/dist/scheduler/engine.d.ts.map +1 -0
- package/dist/scheduler/engine.js +127 -0
- package/dist/scheduler/engine.js.map +1 -0
- package/dist/skills/index.d.ts +3 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +2 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/store.d.ts +52 -0
- package/dist/skills/store.d.ts.map +1 -0
- package/dist/skills/store.js +148 -0
- package/dist/skills/store.js.map +1 -0
- package/dist/squad/agent.d.ts +46 -0
- package/dist/squad/agent.d.ts.map +1 -0
- package/dist/squad/agent.js +261 -0
- package/dist/squad/agent.js.map +1 -0
- package/dist/squad/autonomy.d.ts +16 -0
- package/dist/squad/autonomy.d.ts.map +1 -0
- package/dist/squad/autonomy.js +63 -0
- package/dist/squad/autonomy.js.map +1 -0
- package/dist/squad/event-bus.d.ts +22 -0
- package/dist/squad/event-bus.d.ts.map +1 -0
- package/dist/squad/event-bus.js +56 -0
- package/dist/squad/event-bus.js.map +1 -0
- package/dist/squad/execution/index.d.ts +12 -0
- package/dist/squad/execution/index.d.ts.map +1 -0
- package/dist/squad/execution/index.js +7 -0
- package/dist/squad/execution/index.js.map +1 -0
- package/dist/squad/execution/instance.d.ts +40 -0
- package/dist/squad/execution/instance.d.ts.map +1 -0
- package/dist/squad/execution/instance.js +138 -0
- package/dist/squad/execution/instance.js.map +1 -0
- package/dist/squad/execution/meeting.d.ts +25 -0
- package/dist/squad/execution/meeting.d.ts.map +1 -0
- package/dist/squad/execution/meeting.js +140 -0
- package/dist/squad/execution/meeting.js.map +1 -0
- package/dist/squad/execution/pr.d.ts +15 -0
- package/dist/squad/execution/pr.d.ts.map +1 -0
- package/dist/squad/execution/pr.js +93 -0
- package/dist/squad/execution/pr.js.map +1 -0
- package/dist/squad/execution/runner.d.ts +22 -0
- package/dist/squad/execution/runner.d.ts.map +1 -0
- package/dist/squad/execution/runner.js +68 -0
- package/dist/squad/execution/runner.js.map +1 -0
- package/dist/squad/execution/tasks.d.ts +11 -0
- package/dist/squad/execution/tasks.d.ts.map +1 -0
- package/dist/squad/execution/tasks.js +85 -0
- package/dist/squad/execution/tasks.js.map +1 -0
- package/dist/squad/execution/worktree.d.ts +26 -0
- package/dist/squad/execution/worktree.d.ts.map +1 -0
- package/dist/squad/execution/worktree.js +111 -0
- package/dist/squad/execution/worktree.js.map +1 -0
- package/dist/squad/hiring.d.ts +32 -0
- package/dist/squad/hiring.d.ts.map +1 -0
- package/dist/squad/hiring.js +200 -0
- package/dist/squad/hiring.js.map +1 -0
- package/dist/squad/index.d.ts +8 -0
- package/dist/squad/index.d.ts.map +1 -0
- package/dist/squad/index.js +6 -0
- package/dist/squad/index.js.map +1 -0
- package/dist/squad/manager.d.ts +48 -0
- package/dist/squad/manager.d.ts.map +1 -0
- package/dist/squad/manager.js +274 -0
- package/dist/squad/manager.js.map +1 -0
- package/dist/squad/name-generator.d.ts +16 -0
- package/dist/squad/name-generator.d.ts.map +1 -0
- package/dist/squad/name-generator.js +113 -0
- package/dist/squad/name-generator.js.map +1 -0
- package/dist/squad/roles/templates.d.ts +5 -0
- package/dist/squad/roles/templates.d.ts.map +1 -0
- package/dist/squad/roles/templates.js +102 -0
- package/dist/squad/roles/templates.js.map +1 -0
- package/dist/squad/skill-parser.d.ts +36 -0
- package/dist/squad/skill-parser.d.ts.map +1 -0
- package/dist/squad/skill-parser.js +83 -0
- package/dist/squad/skill-parser.js.map +1 -0
- package/dist/squad/source-resolver.d.ts +20 -0
- package/dist/squad/source-resolver.d.ts.map +1 -0
- package/dist/squad/source-resolver.js +52 -0
- package/dist/squad/source-resolver.js.map +1 -0
- package/dist/store/activity.d.ts +43 -0
- package/dist/store/activity.d.ts.map +1 -0
- package/dist/store/activity.js +131 -0
- package/dist/store/activity.js.map +1 -0
- package/dist/store/db.d.ts +5 -0
- package/dist/store/db.d.ts.map +1 -0
- package/dist/store/db.js +209 -248
- package/dist/store/db.js.map +1 -0
- package/dist/store/inbox.d.ts +53 -0
- package/dist/store/inbox.d.ts.map +1 -0
- package/dist/store/inbox.js +151 -0
- package/dist/store/inbox.js.map +1 -0
- package/dist/store/schedules.d.ts +53 -0
- package/dist/store/schedules.d.ts.map +1 -0
- package/dist/store/schedules.js +149 -54
- package/dist/store/schedules.js.map +1 -0
- package/dist/wiki/index.d.ts +3 -0
- package/dist/wiki/index.d.ts.map +1 -0
- package/dist/wiki/index.js +2 -0
- package/dist/wiki/index.js.map +1 -0
- package/dist/wiki/store.d.ts +49 -0
- package/dist/wiki/store.d.ts.map +1 -0
- package/dist/wiki/store.js +115 -0
- package/dist/wiki/store.js.map +1 -0
- package/node_modules/@io/shared/dist/config.d.ts +25 -0
- package/node_modules/@io/shared/dist/config.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/config.js +47 -0
- package/node_modules/@io/shared/dist/config.js.map +1 -0
- package/node_modules/@io/shared/dist/constants.d.ts +13 -0
- package/node_modules/@io/shared/dist/constants.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/constants.js +34 -0
- package/node_modules/@io/shared/dist/constants.js.map +1 -0
- package/node_modules/@io/shared/dist/index.d.ts +11 -0
- package/node_modules/@io/shared/dist/index.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/index.js +3 -0
- package/node_modules/@io/shared/dist/index.js.map +1 -0
- package/node_modules/@io/shared/dist/types/agents.d.ts +3 -0
- package/node_modules/@io/shared/dist/types/agents.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/agents.js +2 -0
- package/node_modules/@io/shared/dist/types/agents.js.map +1 -0
- package/node_modules/@io/shared/dist/types/api.d.ts +33 -0
- package/node_modules/@io/shared/dist/types/api.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/api.js +2 -0
- package/node_modules/@io/shared/dist/types/api.js.map +1 -0
- package/node_modules/@io/shared/dist/types/attachments.d.ts +10 -0
- package/node_modules/@io/shared/dist/types/attachments.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/attachments.js +2 -0
- package/node_modules/@io/shared/dist/types/attachments.js.map +1 -0
- package/node_modules/@io/shared/dist/types/events.d.ts +44 -0
- package/node_modules/@io/shared/dist/types/events.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/events.js +2 -0
- package/node_modules/@io/shared/dist/types/events.js.map +1 -0
- package/node_modules/@io/shared/dist/types/messages.d.ts +15 -0
- package/node_modules/@io/shared/dist/types/messages.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/messages.js +2 -0
- package/node_modules/@io/shared/dist/types/messages.js.map +1 -0
- package/node_modules/@io/shared/dist/types/squads.d.ts +43 -0
- package/node_modules/@io/shared/dist/types/squads.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/squads.js +2 -0
- package/node_modules/@io/shared/dist/types/squads.js.map +1 -0
- package/node_modules/@io/shared/dist/types/tokens.d.ts +19 -0
- package/node_modules/@io/shared/dist/types/tokens.d.ts.map +1 -0
- package/node_modules/@io/shared/dist/types/tokens.js +2 -0
- package/node_modules/@io/shared/dist/types/tokens.js.map +1 -0
- package/node_modules/@io/shared/package.json +18 -0
- package/node_modules/@io/shared/src/config.ts +74 -0
- package/node_modules/@io/shared/src/constants.ts +36 -0
- package/node_modules/@io/shared/src/index.ts +37 -0
- package/node_modules/@io/shared/src/types/agents.ts +3 -0
- package/node_modules/@io/shared/src/types/api.ts +35 -0
- package/node_modules/@io/shared/src/types/attachments.ts +9 -0
- package/node_modules/@io/shared/src/types/events.ts +81 -0
- package/node_modules/@io/shared/src/types/messages.ts +15 -0
- package/node_modules/@io/shared/src/types/squads.ts +53 -0
- package/node_modules/@io/shared/src/types/tokens.ts +19 -0
- package/node_modules/@io/shared/tsconfig.json +9 -0
- package/node_modules/@io/shared/tsconfig.tsbuildinfo +1 -0
- package/package.json +56 -59
- package/src/api/middleware/auth.ts +76 -0
- package/src/api/notifications.ts +122 -0
- package/src/api/routes/activity.ts +29 -0
- package/src/api/routes/attachments.ts +93 -0
- package/src/api/routes/config.ts +115 -0
- package/src/api/routes/conversations.ts +87 -0
- package/src/api/routes/health.ts +18 -0
- package/src/api/routes/inbox.ts +98 -0
- package/src/api/routes/schedules.ts +121 -0
- package/src/api/routes/skills.ts +105 -0
- package/src/api/routes/squads.ts +145 -0
- package/src/api/routes/usage.ts +57 -0
- package/src/api/routes/wiki.ts +49 -0
- package/src/api/server.ts +186 -0
- package/src/config.ts +3 -0
- package/src/copilot/client.ts +42 -0
- package/src/copilot/health-monitor.ts +85 -0
- package/src/copilot/orchestrator.ts +222 -0
- package/src/copilot/tools.ts +707 -0
- package/src/index.ts +112 -0
- package/src/logging/logger.ts +26 -0
- package/src/models/index.ts +11 -0
- package/src/models/pricing.ts +121 -0
- package/src/models/registry.ts +131 -0
- package/src/models/token-tracker.ts +151 -0
- package/src/scheduler/engine.ts +146 -0
- package/src/skills/index.ts +13 -0
- package/src/skills/store.ts +188 -0
- package/src/squad/agent.ts +326 -0
- package/src/squad/autonomy.ts +78 -0
- package/src/squad/event-bus.ts +71 -0
- package/src/squad/execution/index.ts +17 -0
- package/src/squad/execution/instance.ts +186 -0
- package/src/squad/execution/meeting.ts +191 -0
- package/src/squad/execution/pr.ts +127 -0
- package/src/squad/execution/runner.ts +97 -0
- package/src/squad/execution/tasks.ts +111 -0
- package/src/squad/execution/worktree.ts +138 -0
- package/src/squad/hiring.ts +222 -0
- package/src/squad/index.ts +17 -0
- package/src/squad/manager.ts +337 -0
- package/src/squad/name-generator.ts +135 -0
- package/src/squad/roles/templates.ts +104 -0
- package/src/squad/skill-parser.ts +120 -0
- package/src/squad/source-resolver.ts +57 -0
- package/src/store/activity.ts +176 -0
- package/src/store/db.ts +237 -0
- package/src/store/inbox.ts +199 -0
- package/src/store/schedules.ts +199 -0
- package/src/wiki/index.ts +12 -0
- package/src/wiki/store.ts +139 -0
- package/tsconfig.json +9 -0
- package/LICENSE +0 -21
- package/dist/api/auth.js +0 -46
- package/dist/chat/attachments.js +0 -112
- package/dist/copilot/agents.js +0 -309
- package/dist/copilot/ceremonies.js +0 -174
- package/dist/copilot/gh-token.js +0 -64
- package/dist/copilot/io-scheduler.js +0 -79
- package/dist/copilot/model-router.js +0 -114
- package/dist/copilot/scheduler.js +0 -88
- package/dist/copilot/skills.js +0 -252
- package/dist/copilot/specialist-runner.js +0 -191
- package/dist/copilot/squad-tools.js +0 -258
- package/dist/copilot/system-message.js +0 -86
- package/dist/copilot/token-tracker.js +0 -98
- package/dist/copilot/trigger-schedule.js +0 -33
- package/dist/daemon.js +0 -67
- package/dist/logging.js +0 -27
- package/dist/mcp/config.js +0 -29
- package/dist/mcp/index.js +0 -3
- package/dist/mcp/registry.js +0 -42
- package/dist/notify.js +0 -25
- package/dist/paths.js +0 -17
- package/dist/setup.js +0 -35
- package/dist/store/agent-events.js +0 -19
- package/dist/store/audit-log.js +0 -71
- package/dist/store/conversations.js +0 -164
- package/dist/store/feed.js +0 -44
- package/dist/store/instances.js +0 -75
- package/dist/store/squad-colors.js +0 -23
- package/dist/store/squads.js +0 -60
- package/dist/store/tasks.js +0 -78
- package/dist/store/token-usage.js +0 -94
- package/dist/telegram/bot.js +0 -41
- package/dist/telegram/handlers.js +0 -42
- package/dist/watchdog.js +0 -37
- package/dist/wiki/backlinks.js +0 -51
- package/dist/wiki/fs.js +0 -108
- package/dist/wiki/search.js +0 -47
- package/web-dist/assets/AuditLogView-BzfjNXBT.js +0 -6
- package/web-dist/assets/ChatView-BdMukPKG.js +0 -1
- package/web-dist/assets/FeedView-BfPIabGr.js +0 -6
- package/web-dist/assets/HistoryView-BmEEk3Rs.js +0 -1
- package/web-dist/assets/LoginView-D7LrkeX7.js +0 -1
- package/web-dist/assets/McpView-BAP_ah3T.js +0 -1
- package/web-dist/assets/SchedulesView-CAtsUPCZ.js +0 -6
- package/web-dist/assets/SettingsView-BovjWZDa.js +0 -1
- package/web-dist/assets/SkillsView-DQSMM5LN.js +0 -16
- package/web-dist/assets/SquadDetailView-DBscu0m2.js +0 -26
- package/web-dist/assets/SquadHealthView-D686BuQo.js +0 -11
- package/web-dist/assets/SquadsView-AzMht2NJ.js +0 -6
- package/web-dist/assets/ToggleSwitch.vue_vue_type_script_setup_true_lang-DtShZAjW.js +0 -1
- package/web-dist/assets/UsageView-DiVn97aI.js +0 -16
- package/web-dist/assets/WikiView-Cn7KipkZ.js +0 -26
- package/web-dist/assets/api-D4mHJ3u0.js +0 -1
- package/web-dist/assets/arrow-left-D_qUNUWW.js +0 -6
- package/web-dist/assets/git-branch-DOM-orcl.js +0 -6
- package/web-dist/assets/index-Bo83B1LR.css +0 -1
- package/web-dist/assets/index-ELvnkQjd.js +0 -273
- package/web-dist/assets/pencil-CFsi7ufI.js +0 -6
- package/web-dist/assets/plus-BAzlGFd_.js +0 -6
- package/web-dist/assets/save-BmgCYJ1g.js +0 -6
- package/web-dist/assets/search-CS9zSIeW.js +0 -6
- package/web-dist/assets/squad-colors-B8B_Y-lz.js +0 -1
- package/web-dist/assets/trash-2-DLveUEsd.js +0 -6
- package/web-dist/assets/triangle-alert-lj4I30rL.js +0 -6
- package/web-dist/assets/x-CjXR97Fa.js +0 -6
- package/web-dist/favicon.svg +0 -10
- package/web-dist/index.html +0 -14
- package/web-dist/logo.svg +0 -10
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import{r as be,u as he,E as ke,J as o,q as l,n as e,z as K,t as c,T as g,s as X,d as b,a4 as M,a0 as U,a5 as ne,R as i,p as w,h as ae,L as R,$ as _e,l as ie,K as n,m as H,a6 as ue}from"./index-ELvnkQjd.js";import{b as O,c as Y,d as we,a as Se}from"./api-D4mHJ3u0.js";import{P as de}from"./plus-BAzlGFd_.js";import{S as Ce}from"./search-CS9zSIeW.js";import{P as $e}from"./pencil-CFsi7ufI.js";import{S as Le}from"./save-BmgCYJ1g.js";import{X as Fe}from"./x-CjXR97Fa.js";import{T as je}from"./trash-2-DLveUEsd.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 Z=be("GlobeIcon",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]),Ie=/^---\s*\n([\s\S]*?)\n---\s*(?:\n|$)/;function ee(C){const a=C.trim();if(a==="")return"";if(/^\[(.*)\]$/.test(a)){const _=a.slice(1,-1).trim();return _===""?[]:_.split(",").map(u=>ee(u)).filter(u=>typeof u=="string"||typeof u=="number"||typeof u=="boolean")}return/^(true|false)$/i.test(a)?a.toLowerCase()==="true":/^-?\d+(?:\.\d+)?$/.test(a)?Number(a):a.startsWith('"')&&a.endsWith('"')||a.startsWith("'")&&a.endsWith("'")?a.slice(1,-1):a}function ce(C){const a=C.match(Ie);if(!a)return{frontmatter:{},body:C,hasFrontmatter:!1};const _=a[1].replace(/\r/g,"").split(`
|
|
7
|
-
`),u={};let x=null,m=[];for(const k of _){const v=k.trim();if(v==="")continue;if(v.startsWith("- ")){x&&m.push(String(ee(v.slice(2))));continue}x&&(u[x]=m,x=null,m=[]);const f=v.indexOf(":");if(f===-1)continue;const d=v.slice(0,f).trim(),T=v.slice(f+1).trim();if(T===""){x=d,m=[];continue}u[d]=ee(T)}return x&&(u[x]=m),{frontmatter:u,body:C.slice(a[0].length).replace(/^\n+/,""),hasFrontmatter:!0}}const Me={class:"flex h-full"},Te={class:"w-72 border-r border-border flex flex-col shrink-0"},Ee={class:"flex border-b border-border"},Ve={class:"p-3 border-b border-border space-y-2"},Ae={class:"flex gap-1"},Ue={key:0,class:"space-y-1.5"},De={class:"flex gap-1"},Ne=["disabled"],Pe={key:1,class:"space-y-1.5"},ze={key:0,class:"mt-0.5 text-xs text-muted-foreground font-mono"},Ke={class:"flex gap-1"},Re=["disabled"],Oe={class:"flex-1 overflow-y-auto p-2"},Ge={key:0,class:"text-xs text-muted-foreground p-2"},We={key:1,class:"text-center py-8 text-muted-foreground"},Be=["onClick"],qe={class:"min-w-0 flex-1"},Je={class:"font-medium truncate"},Qe={class:"text-muted-foreground truncate"},Xe=["onClick"],He={class:"p-3 border-b border-border space-y-2"},Ye={class:"relative"},Ze=["disabled"],et={class:"flex-1 overflow-y-auto p-2"},tt={key:0,class:"text-xs text-muted-foreground p-2"},st={key:1,class:"text-xs text-destructive p-2"},ot={key:2,class:"text-center py-8 text-muted-foreground"},lt=["onClick"],rt={class:"min-w-0 flex-1"},nt={class:"font-medium truncate"},at=["title"],it=["onClick","disabled"],ut={key:1,class:"shrink-0 mt-0.5 px-1.5 py-0.5 text-xs rounded bg-muted text-muted-foreground"},dt={class:"flex-1 flex flex-col"},ct={key:0,class:"flex items-center justify-center h-full text-muted-foreground"},vt={class:"text-center"},pt={class:"flex items-center justify-between px-4 py-2 border-b border-border"},mt={class:"text-sm font-medium"},ft={class:"text-xs text-muted-foreground ml-2 font-mono"},gt={class:"flex gap-1"},xt={class:"flex-1 overflow-y-auto p-4"},yt={key:0,class:"text-muted-foreground text-sm"},bt={key:2,class:"space-y-4"},ht={key:0,class:"rounded-lg border border-border bg-card p-4"},kt={class:"mt-3 grid gap-2 sm:grid-cols-2"},_t={class:"text-[10px] uppercase tracking-wide text-muted-foreground"},wt={class:"mt-1 text-sm text-foreground"},St={key:0,class:"flex items-center justify-center h-full text-muted-foreground"},Ct={class:"text-center"},$t={class:"flex items-center justify-between px-4 py-2 border-b border-border"},Lt={class:"min-w-0 flex-1"},Ft={class:"text-sm font-medium"},jt={class:"text-xs text-muted-foreground ml-2"},It=["disabled"],Mt={key:1,class:"ml-2 shrink-0 px-3 py-1 text-xs rounded bg-muted text-muted-foreground"},Tt={class:"flex-1 overflow-y-auto p-4"},Et={key:0,class:"text-muted-foreground text-sm"},Vt={key:1,class:"space-y-4"},At={key:0,class:"rounded-lg border border-border bg-card p-4"},Ut={class:"mt-3 grid gap-2 sm:grid-cols-2"},Dt={class:"text-[10px] uppercase tracking-wide text-muted-foreground"},Nt={class:"mt-1 text-sm text-foreground"},Pt={key:0,class:"absolute bottom-4 left-4 text-sm text-destructive bg-background border border-destructive/30 px-3 py-2 rounded-md"},ve=`# My Skill
|
|
8
|
-
|
|
9
|
-
A brief description of what this skill does.
|
|
10
|
-
|
|
11
|
-
## Usage
|
|
12
|
-
|
|
13
|
-
Instructions for how to use this skill...
|
|
14
|
-
`,Jt=he({__name:"SkillsView",setup(C){const a=n([]),_=n(!0),u=n(!1),x=n("git"),m=n(""),k=n(""),v=n(ve),f=n(!1),d=n(""),T=H(()=>k.value.trim().replace(/[^a-z0-9-]/gi,"-").toLowerCase().replace(/-+/g,"-").replace(/^-|-$/g,"")),h=n(null),S=n(""),$=n(!1),E=n(""),G=n(!1),W=H(()=>ce(S.value)),B=H(()=>ce(F.value)),L=n("installed"),q=n("awesome-copilot"),D=n(""),V=n([]),A=n(!1),N=n(""),y=n(null),F=n(""),J=n(!1),j=n("");async function I(){_.value=!0;try{a.value=await O("/skills")}finally{_.value=!1}}function te(r){x.value=r,u.value=!0,d.value=""}function P(){u.value=!1,m.value="",k.value="",v.value=ve,d.value=""}async function se(){if(m.value.trim()){f.value=!0,d.value="";try{await Y("/skills",{url:m.value.trim()}),P(),await I()}catch(r){d.value=r.message||"Failed to install skill"}finally{f.value=!1}}}async function pe(){if(!(!k.value.trim()||!v.value.trim())){f.value=!0,d.value="";try{await Y("/skills",{slug:T.value,content:v.value}),P(),await I()}catch(r){d.value=r.message||"Failed to create skill"}finally{f.value=!1}}}async function me(r){var t;try{await Se(`/skills/${r}`),((t=h.value)==null?void 0:t.slug)===r&&(h.value=null,S.value=""),await I()}catch(s){d.value=s.message||"Failed to remove skill"}}async function fe(r){h.value=r,$.value=!1,G.value=!0;try{const t=await O(`/skills/${r.slug}/content`);S.value=t.content}catch(t){S.value=`Error loading skill: ${t.message}`}finally{G.value=!1}}function ge(){E.value=S.value,$.value=!0}async function xe(){if(h.value)try{await we(`/skills/${h.value.slug}/content`,{content:E.value}),S.value=E.value,$.value=!1,await I()}catch(r){d.value=r.message||"Failed to save skill"}}async function z(){A.value=!0,N.value="",y.value=null,F.value="";try{const r=new URLSearchParams({source:q.value});D.value.trim()&&r.set("q",D.value.trim()),V.value=await O(`/skills/discover?${r}`)}catch(r){N.value=r.message||"Failed to fetch community skills",V.value=[]}finally{A.value=!1}}async function ye(r){y.value=r,J.value=!0,F.value="";try{const t=await O(`/skills/preview?source=${r.source}&slug=${encodeURIComponent(r.slug)}`);F.value=t.content}catch(t){F.value=`Error loading preview: ${t.message}`}finally{J.value=!1}}async function oe(r){j.value=r.slug,d.value="";try{await Y("/skills",{source:r.source,slug:r.slug}),await I(),L.value="installed"}catch(t){d.value=t.message||"Failed to install skill"}finally{j.value=""}}function le(r){return a.value.some(t=>t.slug===r)}function re(r){L.value=r,h.value=null,y.value=null,S.value="",F.value="",r==="discover"&&V.value.length===0&&z()}return ke(I),(r,t)=>(o(),l("div",Me,[e("div",Te,[e("div",Ee,[e("button",{onClick:t[0]||(t[0]=s=>re("installed")),class:K(["flex-1 px-3 py-2 text-xs font-medium transition-colors",L.value==="installed"?"border-b-2 border-primary text-primary":"text-muted-foreground hover:text-foreground"])}," Installed ",2),e("button",{onClick:t[1]||(t[1]=s=>re("discover")),class:K(["flex-1 px-3 py-2 text-xs font-medium transition-colors",L.value==="discover"?"border-b-2 border-primary text-primary":"text-muted-foreground hover:text-foreground"])},[c(g(Z),{class:"w-3 h-3 inline mr-1"}),t[12]||(t[12]=X(" Discover ",-1))],2)]),L.value==="installed"?(o(),l(b,{key:0},[e("div",Ve,[e("div",Ae,[e("button",{onClick:t[2]||(t[2]=s=>te("git")),class:"flex-1 flex items-center justify-center gap-1.5 px-2 py-1.5 text-xs rounded-md bg-primary text-primary-foreground hover:bg-primary/90"},[c(g(de),{class:"w-3.5 h-3.5"}),t[13]||(t[13]=X(" From Git ",-1))]),e("button",{onClick:t[3]||(t[3]=s=>te("create")),class:"flex-1 flex items-center justify-center gap-1.5 px-2 py-1.5 text-xs rounded-md border border-border hover:bg-accent"},[c(g(de),{class:"w-3.5 h-3.5"}),t[14]||(t[14]=X(" Create New ",-1))])]),u.value&&x.value==="git"?(o(),l("div",Ue,[M(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>m.value=s),type:"text",placeholder:"https://github.com/user/skill-repo.git",class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring",onKeyup:ne(se,["enter"])},null,544),[[U,m.value]]),e("div",De,[e("button",{onClick:se,disabled:f.value||!m.value.trim(),class:"flex-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"},i(f.value?"Installing...":"Install"),9,Ne),e("button",{onClick:P,class:"px-2 py-1 text-xs rounded border border-border hover:bg-accent"}," Cancel ")])])):w("",!0),u.value&&x.value==="create"?(o(),l("div",Pe,[e("div",null,[M(e("input",{"onUpdate:modelValue":t[5]||(t[5]=s=>k.value=s),type:"text",placeholder:"Skill title",class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring"},null,512),[[U,k.value]]),k.value.trim()?(o(),l("p",ze," slug: "+i(T.value),1)):w("",!0)]),M(e("textarea",{"onUpdate:modelValue":t[6]||(t[6]=s=>v.value=s),rows:"8",placeholder:`# My Skill
|
|
15
|
-
|
|
16
|
-
Describe your skill in Markdown...`,class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs font-mono focus:outline-none focus:ring-1 focus:ring-ring resize-none"},null,512),[[U,v.value]]),e("div",Ke,[e("button",{onClick:pe,disabled:f.value||!k.value.trim()||!v.value.trim(),class:"flex-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"},i(f.value?"Creating...":"Create"),9,Re),e("button",{onClick:P,class:"px-2 py-1 text-xs rounded border border-border hover:bg-accent"}," Cancel ")])])):w("",!0)]),e("div",Oe,[_.value?(o(),l("div",Ge,"Loading...")):a.value.length===0?(o(),l("div",We,[c(g(ae),{class:"w-8 h-8 mx-auto mb-2 opacity-50"}),t[15]||(t[15]=e("p",{class:"text-xs"},"No skills installed.",-1))])):w("",!0),(o(!0),l(b,null,R(a.value,s=>{var p;return o(),l("div",{key:s.slug,onClick:Q=>fe(s),class:K(["flex items-center justify-between px-2 py-2 text-xs rounded cursor-pointer hover:bg-accent transition-colors group",{"bg-accent font-medium":((p=h.value)==null?void 0:p.slug)===s.slug}])},[e("div",qe,[e("div",Je,i(s.name),1),e("div",Qe,i(s.slug),1)]),e("button",{onClick:ue(Q=>me(s.slug),["stop"]),class:"opacity-0 group-hover:opacity-100 p-1 rounded hover:bg-destructive/10 text-destructive transition-opacity shrink-0",title:"Remove"},[c(g(je),{class:"w-3.5 h-3.5"})],8,Xe)],10,Be)}),128))])],64)):(o(),l(b,{key:1},[e("div",He,[M(e("select",{"onUpdate:modelValue":t[7]||(t[7]=s=>q.value=s),onChange:z,class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring"},[...t[16]||(t[16]=[e("option",{value:"awesome-copilot"},"awesome-copilot",-1),e("option",{value:"skillssh"},"skills.sh",-1)])],544),[[_e,q.value]]),e("div",Ye,[c(g(Ce),{class:"absolute left-2 top-1/2 -translate-y-1/2 w-3 h-3 text-muted-foreground"}),M(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>D.value=s),type:"text",placeholder:"Search skills...",class:"w-full rounded-md border border-input bg-background pl-6 pr-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring",onKeyup:ne(z,["enter"])},null,544),[[U,D.value]])]),e("button",{onClick:z,disabled:A.value,class:"w-full px-2 py-1.5 text-xs rounded-md bg-secondary text-secondary-foreground hover:bg-secondary/80 disabled:opacity-50"},i(A.value?"Searching...":"Search"),9,Ze)]),e("div",et,[A.value?(o(),l("div",tt,"Loading...")):N.value?(o(),l("div",st,i(N.value),1)):V.value.length===0?(o(),l("div",ot,[c(g(Z),{class:"w-8 h-8 mx-auto mb-2 opacity-50"}),t[17]||(t[17]=e("p",{class:"text-xs"},"No skills found.",-1))])):w("",!0),(o(!0),l(b,null,R(V.value,s=>{var p;return o(),l("div",{key:s.slug,onClick:Q=>ye(s),class:K(["flex items-start justify-between px-2 py-2 text-xs rounded cursor-pointer hover:bg-accent transition-colors gap-1",{"bg-accent":((p=y.value)==null?void 0:p.slug)===s.slug}])},[e("div",rt,[e("div",nt,i(s.slug),1),e("div",{class:"text-muted-foreground line-clamp-2 mt-0.5",title:s.description},i(s.description),9,at)]),le(s.slug)?(o(),l("span",ut," Installed ")):(o(),l("button",{key:0,onClick:ue(Q=>oe(s),["stop"]),disabled:j.value===s.slug,class:"shrink-0 mt-0.5 px-1.5 py-0.5 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50",title:"Install"},i(j.value===s.slug?"...":"Install"),9,it))],10,lt)}),128))])],64))]),e("div",dt,[L.value==="installed"?(o(),l(b,{key:0},[h.value?(o(),l(b,{key:1},[e("div",pt,[e("div",null,[e("span",mt,i(h.value.name),1),e("span",ft,i(h.value.slug)+"/SKILL.md",1)]),e("div",gt,[$.value?(o(),l(b,{key:1},[e("button",{onClick:xe,class:"p-1.5 rounded hover:bg-accent text-green-500",title:"Save"},[c(g(Le),{class:"w-4 h-4"})]),e("button",{onClick:t[9]||(t[9]=s=>$.value=!1),class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Cancel"},[c(g(Fe),{class:"w-4 h-4"})])],64)):(o(),l("button",{key:0,onClick:ge,class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Edit"},[c(g($e),{class:"w-4 h-4"})]))])]),e("div",xt,[G.value?(o(),l("div",yt,"Loading...")):$.value?M((o(),l("textarea",{key:1,"onUpdate:modelValue":t[10]||(t[10]=s=>E.value=s),class:"w-full h-full min-h-[400px] font-mono text-sm bg-background border border-input rounded-md p-3 focus:outline-none focus:ring-1 focus:ring-ring resize-none"},null,512)),[[U,E.value]]):(o(),l("div",bt,[Object.keys(W.value.frontmatter).length>0?(o(),l("div",ht,[t[19]||(t[19]=e("div",{class:"flex items-center justify-between"},[e("p",{class:"text-xs font-medium uppercase tracking-wide text-muted-foreground"}," Metadata ")],-1)),e("dl",kt,[(o(!0),l(b,null,R(Object.entries(W.value.frontmatter),([s,p])=>(o(),l("div",{key:s,class:"rounded-md bg-muted px-3 py-2"},[e("dt",_t,i(s),1),e("dd",wt,i(Array.isArray(p)?p.join(", "):String(p)),1)]))),128))])])):w("",!0),c(ie,{content:W.value.body},null,8,["content"])]))])],64)):(o(),l("div",ct,[e("div",vt,[c(g(ae),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),t[18]||(t[18]=e("p",null,"Select a skill to view",-1))])]))],64)):(o(),l(b,{key:1},[y.value?(o(),l(b,{key:1},[e("div",$t,[e("div",Lt,[e("span",Ft,i(y.value.slug),1),e("span",jt,i(y.value.source),1)]),le(y.value.slug)?(o(),l("span",Mt," Installed ")):(o(),l("button",{key:0,onClick:t[11]||(t[11]=s=>oe(y.value)),disabled:j.value===y.value.slug,class:"ml-2 shrink-0 px-3 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"},i(j.value===y.value.slug?"Installing...":"Install"),9,It))]),e("div",Tt,[J.value?(o(),l("div",Et," Loading preview... ")):(o(),l("div",Vt,[Object.keys(B.value.frontmatter).length>0?(o(),l("div",At,[t[21]||(t[21]=e("div",{class:"flex items-center justify-between"},[e("p",{class:"text-xs font-medium uppercase tracking-wide text-muted-foreground"}," Metadata ")],-1)),e("dl",Ut,[(o(!0),l(b,null,R(Object.entries(B.value.frontmatter),([s,p])=>(o(),l("div",{key:s,class:"rounded-md bg-muted px-3 py-2"},[e("dt",Dt,i(s),1),e("dd",Nt,i(Array.isArray(p)?p.join(", "):String(p)),1)]))),128))])])):w("",!0),c(ie,{content:B.value.body},null,8,["content"])]))])],64)):(o(),l("div",St,[e("div",Ct,[c(g(Z),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),t[20]||(t[20]=e("p",null,"Select a skill to preview",-1))])]))],64))]),d.value?(o(),l("p",Pt,i(d.value),1)):w("",!0)]))}});export{Jt as default};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import{r as A,u as J,a2 as F,E as z,y as E,G,J as s,q as o,n as t,t as p,T as c,A as B,z as _,R as i,j as O,s as h,p as v,o as I,d as C,L as D,l as R,K as m,m as H,a3 as U,D as X,X as Z,N as K,U as Q}from"./index-ELvnkQjd.js";import{b as P,e as W,c as V,a as Y}from"./api-D4mHJ3u0.js";import{g as ee}from"./squad-colors-B8B_Y-lz.js";import{X as te}from"./x-CjXR97Fa.js";import{G as se}from"./git-branch-DOM-orcl.js";import{T as oe}from"./trash-2-DLveUEsd.js";import{A as re}from"./arrow-left-D_qUNUWW.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 ae=A("EyeIcon",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.474.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 le=A("FlaskConicalIcon",[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]]);/**
|
|
12
|
-
* @license lucide-vue-next v0.474.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 ne=A("ShieldIcon",[["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"}]]);/**
|
|
17
|
-
* @license lucide-vue-next v0.474.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const ie=A("ToggleLeftIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6",key:"f2vt7d"}],["circle",{cx:"8",cy:"12",r:"2",key:"1nvbw3"}]]);/**
|
|
22
|
-
* @license lucide-vue-next v0.474.0 - ISC
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the ISC license.
|
|
25
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const de=A("ToggleRightIcon",[["rect",{width:"20",height:"12",x:"2",y:"6",rx:"6",ry:"6",key:"f2vt7d"}],["circle",{cx:"16",cy:"12",r:"2",key:"4ma0v8"}]]),ue={class:"flex flex-col h-full border border-border rounded-lg overflow-hidden bg-background"},ce={class:"flex items-center justify-between px-4 py-3 border-b border-border bg-muted/30"},pe={class:"flex items-center gap-2 min-w-0"},me={class:"flex items-center gap-2"},xe=["disabled"],fe=["aria-label","title"],ge={class:"px-4 py-2 text-xs text-muted-foreground border-b border-border bg-muted/10 truncate"},ye={key:0,class:"text-muted-foreground text-xs"},be={key:1,class:"text-muted-foreground text-xs"},ve={class:"flex items-center justify-between mb-1"},he={class:"text-xs font-medium text-muted-foreground uppercase tracking-wide"},we={class:"text-xs text-muted-foreground"},_e={key:0,class:"text-xs bg-muted rounded p-2 overflow-x-auto whitespace-pre-wrap break-all"},ke={key:1},Se={key:1,class:"text-sm"},$e={key:2,class:"border border-border border-l-2 border-l-yellow-500 rounded-lg p-3 animate-pulse"},Te={key:0,class:"text-xs bg-muted rounded p-2 overflow-x-auto whitespace-pre-wrap break-all"},Ce=J({__name:"AgentActivityPreview",props:{taskId:{},taskDescription:{},taskStatus:{}},emits:["close","stopped"],setup(f,{emit:L}){const x=f,S=L,w=m([]),u=m(!1),$=m(!0),g=m(!1),y=m();let d=null;const N=H(()=>w.value.filter(l=>l.summary.trim()!=="")),b=m("");async function k(){try{const l=await P(`/tasks/${x.taskId}/events`);w.value=l}finally{$.value=!1}}function T(){y.value&&(y.value.scrollTop=y.value.scrollHeight)}function M(){x.taskStatus!=="pending"&&x.taskStatus!=="in_progress"||(d=W(),d.addEventListener("agent_event",l=>{const e=JSON.parse(l.data);e.taskId===x.taskId&&(e.type==="message_delta"?(b.value=e.summary??"",E(T)):(k().then(()=>E(T)),b.value=""))}))}async function q(){if(!g.value){g.value=!0;try{await V(`/tasks/${x.taskId}/stop`),S("stopped")}catch(l){console.error("Failed to stop agent:",l)}finally{g.value=!1}}}function a(l){switch(l){case"status":return"Status";case"message":return"Agent message";case"message_delta":return"Streaming…";default:return l}}function r(l){return new Date(l).toLocaleTimeString()}return F(()=>x.taskStatus,l=>{(l==="done"||l==="failed"||l==="stopped")&&(b.value="",k(),d&&(d.close(),d=null))}),z(()=>{k().then(()=>E(T)),M()}),G(()=>{d&&(d.close(),d=null)}),(l,e)=>(s(),o("div",ue,[t("div",ce,[t("div",pe,[p(c(B),{class:"w-4 h-4 text-primary flex-shrink-0"}),e[2]||(e[2]=t("h3",{class:"text-sm font-semibold truncate"},"Activity Preview",-1)),t("span",{class:_(["text-xs px-2 py-0.5 rounded-full flex-shrink-0",{"bg-yellow-500/10 text-yellow-500":f.taskStatus==="pending","bg-blue-500/10 text-blue-500":f.taskStatus==="in_progress","bg-green-500/10 text-green-500":f.taskStatus==="done","bg-red-500/10 text-red-500":f.taskStatus==="failed","bg-orange-500/10 text-orange-500":f.taskStatus==="stopped"}])},i(f.taskStatus),3)]),t("div",me,[f.taskStatus==="pending"||f.taskStatus==="in_progress"?(s(),o("button",{key:0,onClick:q,disabled:g.value,class:"inline-flex items-center gap-1 text-xs px-2 py-1 rounded border border-red-500/50 text-red-500 hover:bg-red-500/10 transition-colors disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Stop agent",title:"Stop agent"},[p(c(O),{class:"w-3 h-3"}),h(" "+i(g.value?"Stopping…":"Stop"),1)],8,xe)):v("",!0),t("button",{onClick:e[0]||(e[0]=n=>u.value=!u.value),class:"flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground transition-colors","aria-label":u.value?"Switch to human-readable view":"Switch to raw JSON view",title:u.value?"Switch to human-readable view":"Switch to raw JSON view"},[u.value?(s(),I(c(de),{key:1,class:"w-4 h-4 text-primary"})):(s(),I(c(ie),{key:0,class:"w-4 h-4"})),t("span",null,i(u.value?"Raw JSON":"Readable"),1)],8,fe),t("button",{onClick:e[1]||(e[1]=n=>S("close")),class:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors","aria-label":"Close preview",title:"Close preview"},[p(c(te),{class:"w-4 h-4"})])])]),t("div",ge,i(f.taskDescription),1),t("div",{ref_key:"feedContainer",ref:y,class:"flex-1 overflow-y-auto p-4 space-y-3 text-sm"},[$.value?(s(),o("div",ye,"Loading events…")):N.value.length===0&&!b.value?(s(),o("div",be," No events yet. The agent will start shortly. ")):v("",!0),(s(!0),o(C,null,D(N.value,n=>(s(),o("div",{key:n.id,class:_(["border border-border rounded-lg p-3",{"border-l-2 border-l-green-500":n.type==="status"&&n.summary.includes("completed"),"border-l-2 border-l-red-500":n.type==="status"&&n.summary.includes("failed"),"border-l-2 border-l-blue-500":n.type==="message","border-l-2 border-l-primary":n.type==="status"&&!n.summary.includes("completed")&&!n.summary.includes("failed")}])},[t("div",ve,[t("span",he,i(a(n.type)),1),t("span",we,i(r(n.created_at)),1)]),u.value?(s(),o("pre",_e,i(JSON.stringify(JSON.parse(n.payload),null,2)),1)):(s(),o("div",ke,[n.type==="message"?(s(),I(R,{key:0,content:n.summary,class:"text-sm"},null,8,["content"])):(s(),o("p",Se,i(n.summary),1))]))],2))),128)),b.value.trim()?(s(),o("div",$e,[e[3]||(e[3]=t("div",{class:"flex items-center justify-between mb-1"},[t("span",{class:"text-xs font-medium text-muted-foreground uppercase tracking-wide"}," Agent is responding… "),t("span",{class:"inline-block w-2 h-2 rounded-full bg-yellow-500 animate-ping"})],-1)),u.value?(s(),o("pre",Te,i(JSON.stringify({type:"message_delta",accumulated:b.value},null,2)),1)):(s(),I(R,{key:1,content:b.value,class:"text-sm"},null,8,["content"]))])):v("",!0)],512)]))}}),Ae={class:"p-6"},Ne={key:0,class:"text-muted-foreground"},Ie={class:"mb-6"},De={class:"text-muted-foreground"},Le={class:"mb-8"},Me={class:"border border-border rounded-lg overflow-hidden"},qe={class:"w-full text-sm"},Ee={class:"px-4 py-2 font-medium"},Re={class:"px-4 py-2 text-muted-foreground"},je={class:"px-4 py-2"},Je={class:"px-4 py-2 flex gap-1"},ze={key:0,class:"text-xs bg-primary/10 text-primary px-1.5 py-0.5 rounded"},Be={key:1,class:"text-xs bg-blue-500/10 text-blue-500 px-1.5 py-0.5 rounded"},Oe={key:2,class:"text-xs bg-purple-500/10 text-purple-500 px-1.5 py-0.5 rounded"},Pe={class:"mb-8"},Ve={class:"flex items-center justify-between mb-3"},Fe={key:0,class:"text-sm text-muted-foreground border border-border rounded-lg p-4 text-center"},Ge={key:1,class:"grid grid-cols-1 md:grid-cols-3 gap-3"},He={class:"flex items-center justify-between gap-2"},Ue={class:"flex items-center gap-1.5 min-w-0"},Xe={class:"text-sm font-medium truncate"},Ze={class:"flex items-center gap-1 text-xs text-muted-foreground"},Ke=["title"],Qe={class:"pt-1 border-t border-border"},We=["disabled","onClick"],Ye={key:0,class:"text-sm text-muted-foreground"},et={key:1,class:"space-y-2"},tt={class:"flex items-center justify-between"},st={class:"text-sm"},ot={class:"flex items-center gap-2"},rt=["onClick","disabled"],at=["onClick","aria-label","title"],lt={key:0,class:"mt-3 h-96"},j=3,xt=J({__name:"SquadDetailView",setup(f){const L=Z(),x=m(null),S=m([]),w=m([]),u=m([]),$=m(!0),g=m(null),y=m(null),d=m(null);function N(a){d.value=a}function b(){d.value=null}function k(a){return a==="pending"||a==="in_progress"}async function T(a){if(!y.value){y.value=a;try{await V(`/tasks/${a}/stop`);const r=w.value.find(l=>l.id===a);r&&(r.status="stopped")}catch(r){console.error("Failed to stop task:",r)}finally{y.value=null}}}z(async()=>{try{const a=await P(`/squads/${L.params.id}`);x.value=a.squad,S.value=a.agents,w.value=a.tasks,u.value=a.instances}finally{$.value=!1}});async function M(a,r){if(confirm(`Destroy instance on branch "${r}"? This will remove the worktree.`)){g.value=a;try{await Y(`/instances/${a}`),u.value=u.value.filter(l=>l.id!==a)}finally{g.value=null}}}function q(a){if(!a)return"never";const r=a.replace(" ","T")+(a.includes("T")||a.endsWith("Z")?"":"Z"),l=Date.now()-new Date(r).getTime(),e=Math.floor(l/6e4);if(e<1)return"just now";if(e<60)return`${e}m ago`;const n=Math.floor(e/60);return n<24?`${n}h ago`:`${Math.floor(n/24)}d ago`}return(a,r)=>{const l=K("router-link");return s(),o("div",Ae,[p(l,{to:"/squads",class:"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground mb-4"},{default:U(()=>[p(c(re),{class:"w-4 h-4"}),r[0]||(r[0]=h(" Back to Squads ",-1))]),_:1}),$.value?(s(),o("div",Ne,"Loading...")):x.value?(s(),o(C,{key:1},[t("div",Ie,[t("span",{class:"inline-flex items-center text-sm px-2.5 py-1 rounded-full font-medium mb-2 w-fit",style:X(c(ee)(x.value.color))},i(x.value.name),5),t("p",De,i(x.value.universe),1)]),t("section",Le,[r[5]||(r[5]=t("h2",{class:"text-lg font-semibold mb-3"},"Agent Roster",-1)),t("div",Me,[t("table",qe,[r[4]||(r[4]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Character"),t("th",{class:"text-left px-4 py-2 font-medium"},"Role"),t("th",{class:"text-left px-4 py-2 font-medium"},"Status"),t("th",{class:"text-left px-4 py-2 font-medium"},"Flags")])],-1)),t("tbody",null,[(s(!0),o(C,null,D(S.value,e=>(s(),o("tr",{key:e.id,class:"border-t border-border"},[t("td",Ee,i(e.character_name),1),t("td",Re,i(e.role_title),1),t("td",je,[t("span",{class:_(["inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded-full",{"bg-green-500/10 text-green-500":e.status==="idle","bg-yellow-500/10 text-yellow-500":e.status==="working","bg-blue-500/10 text-blue-500":e.status==="reviewing"}])},i(e.status),3)]),t("td",Je,[e.is_lead?(s(),o("span",ze,[p(c(Q),{class:"w-3 h-3 inline"}),r[1]||(r[1]=h(" Lead ",-1))])):v("",!0),e.is_qa?(s(),o("span",Be,[p(c(ne),{class:"w-3 h-3 inline"}),r[2]||(r[2]=h(" QA ",-1))])):v("",!0),e.is_test?(s(),o("span",Oe,[p(c(le),{class:"w-3 h-3 inline"}),r[3]||(r[3]=h(" Test ",-1))])):v("",!0)])]))),128))])])])]),t("section",Pe,[t("div",Ve,[r[6]||(r[6]=t("h2",{class:"text-lg font-semibold"},"Instances",-1)),t("span",{class:_(["text-xs px-2 py-0.5 rounded-full font-medium",u.value.length>=j?"bg-red-500/10 text-red-500":"bg-secondary text-secondary-foreground"])},i(u.value.length)+" / "+i(j)+" active ",3)]),u.value.length===0?(s(),o("div",Fe," No active instances. ")):(s(),o("div",Ge,[(s(!0),o(C,null,D(u.value,e=>(s(),o("div",{key:e.id,class:"border border-border rounded-lg p-3 flex flex-col gap-2"},[t("div",He,[t("div",Ue,[p(c(se),{class:"w-3.5 h-3.5 text-muted-foreground shrink-0"}),t("span",Xe,i(e.branch),1)]),t("span",{class:_(["text-xs px-1.5 py-0.5 rounded-full shrink-0",{"bg-green-500/10 text-green-500":e.status==="active","bg-red-500/10 text-red-500":e.status==="destroyed","bg-yellow-500/10 text-yellow-500":e.status==="stale"}])},i(e.status),3)]),t("div",Ze,[p(c(B),{class:"w-3 h-3 shrink-0"}),t("span",null,i(q(e.last_activity)),1)]),t("div",{class:"font-mono text-xs text-muted-foreground truncate",title:e.worktree_path},i(e.worktree_path),9,Ke),t("div",Qe,[t("button",{class:"inline-flex items-center gap-1 text-xs text-red-500 hover:text-red-400 disabled:opacity-50 disabled:cursor-not-allowed",disabled:g.value===e.id,onClick:n=>M(e.id,e.branch)},[p(c(oe),{class:"w-3 h-3"}),h(" "+i(g.value===e.id?"Destroying…":"Destroy"),1)],8,We)])]))),128))]))]),t("section",null,[r[8]||(r[8]=t("h2",{class:"text-lg font-semibold mb-3"},"Recent Tasks",-1)),w.value.length===0?(s(),o("div",Ye,"No tasks yet.")):(s(),o("div",et,[(s(!0),o(C,null,D(w.value,e=>(s(),o("div",{key:e.id,class:"border border-border rounded-lg p-3"},[t("div",tt,[t("span",st,i(e.description),1),t("div",ot,[k(e.status)?(s(),o("button",{key:0,onClick:n=>T(e.id),disabled:y.value===e.id,class:"inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded border border-red-500/50 text-red-500 hover:bg-red-500/10 transition-colors disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Stop agent",title:"Stop agent"},[p(c(O),{class:"w-3 h-3"}),h(" "+i(y.value===e.id?"Stopping…":"Stop"),1)],8,rt)):v("",!0),k(e.status)||d.value===e.id?(s(),o("button",{key:1,onClick:n=>d.value===e.id?b():N(e.id),class:_(["inline-flex items-center gap-1 text-xs px-2 py-0.5 rounded border transition-colors",d.value===e.id?"bg-primary text-primary-foreground border-primary":"border-border text-muted-foreground hover:text-foreground hover:border-foreground"]),"aria-label":d.value===e.id?"Hide activity preview":"Show activity preview",title:d.value===e.id?"Hide preview":"Preview activity"},[p(c(ae),{class:"w-3 h-3"}),r[7]||(r[7]=h(" Preview ",-1))],10,at)):v("",!0),t("span",{class:_(["text-xs px-2 py-0.5 rounded-full",{"bg-yellow-500/10 text-yellow-500":e.status==="pending","bg-blue-500/10 text-blue-500":e.status==="in_progress","bg-green-500/10 text-green-500":e.status==="done","bg-red-500/10 text-red-500":e.status==="failed","bg-orange-500/10 text-orange-500":e.status==="stopped"}])},i(e.status),3)])]),d.value===e.id?(s(),o("div",lt,[p(Ce,{"task-id":e.id,"task-description":e.description,"task-status":e.status,onClose:b,onStopped:n=>e.status="stopped"},null,8,["task-id","task-description","task-status","onStopped"])])):v("",!0)]))),128))]))])],64)):v("",!0)])}}});export{xt as default};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{b as L}from"./api-D4mHJ3u0.js";import{r as I,u as T,E as B,J as o,q as n,n as t,t as u,T as l,A as M,s as g,k as _,d as f,L as y,K as v,m as N,z as k,a3 as P,R as a,o as x,p,c as b,N as V}from"./index-ELvnkQjd.js";import{T as w}from"./triangle-alert-lj4I30rL.js";import{G as $}from"./git-branch-DOM-orcl.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 z=I("CircleCheckBigIcon",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.474.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 C=I("LoaderCircleIcon",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),j={class:"p-6"},F={class:"flex items-center gap-2 mb-6"},G={key:0,class:"flex items-center gap-2 text-muted-foreground"},H={key:1,class:"text-center py-12 text-muted-foreground"},R={key:2,class:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-4"},E={class:"flex items-start justify-between"},D={class:"text-xs text-muted-foreground mt-0.5"},J={key:1},K={key:2},O={key:3},U={class:"grid grid-cols-3 gap-2 text-center"},Q={class:"rounded-md bg-muted px-2 py-2"},W={class:"text-lg font-bold"},X={class:"rounded-md bg-muted px-2 py-2"},Y={class:"text-lg font-bold"},Z={class:"rounded-md bg-muted px-2 py-2"},q={class:"text-lg font-bold flex items-center justify-center gap-1"},ee={class:"flex flex-wrap gap-1.5 text-xs"},te={key:0,class:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-blue-500/10 text-blue-500"},se={key:1,class:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-yellow-500/10 text-yellow-500"},oe={key:2,class:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-red-500/10 text-red-500"},ne={class:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-secondary text-secondary-foreground"},re={key:0},le={class:"space-y-1"},ae={class:"font-mono truncate"},de={key:1},ie={class:"space-y-1"},ce={class:"truncate text-muted-foreground"},fe=T({__name:"SquadHealthView",setup(ue){const m=v([]),h=v(!0);B(async()=>{try{const r=await L("/squads/health");m.value=r.health}finally{h.value=!1}});function S(r){if(r===null)return"—";if(r<60)return`${Math.round(r)}m`;const s=Math.floor(r/60),c=Math.round(r%60);return c>0?`${s}h ${c}m`:`${s}h`}function i(r){return r.isStalled?"stalled":r.tasksInProgress>0?"active":"idle"}const A=N(()=>[...m.value].sort((r,s)=>{const c={stalled:0,active:1,idle:2};return c[i(r)]-c[i(s)]}));return(r,s)=>{const c=V("router-link");return o(),n("div",j,[t("div",F,[u(l(M),{class:"w-6 h-6"}),s[0]||(s[0]=t("h1",{class:"text-2xl font-bold"},"Squad Health",-1))]),h.value?(o(),n("div",G,[u(l(C),{class:"w-4 h-4 animate-spin"}),s[1]||(s[1]=g(" Loading... ",-1))])):m.value.length===0?(o(),n("div",H,[u(l(_),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),s[2]||(s[2]=t("p",null,"No squads yet.",-1)),s[3]||(s[3]=t("p",{class:"text-sm mt-1"},"Ask IO to create a squad for your project.",-1))])):(o(),n("div",R,[(o(!0),n(f,null,y(A.value,e=>(o(),n("div",{key:e.id,class:k(["rounded-lg border bg-card p-4 flex flex-col gap-3",{"border-red-500/50":e.isStalled,"border-green-500/30":i(e)==="active","border-border":i(e)==="idle"}])},[t("div",E,[t("div",null,[u(c,{to:`/squads/${e.id}`,class:"font-semibold hover:underline"},{default:P(()=>[g(a(e.name),1)]),_:2},1032,["to"]),t("p",D,a(e.universe),1)]),t("span",{class:k(["text-xs px-2 py-0.5 rounded-full font-medium flex items-center gap-1",{"bg-red-500/10 text-red-500":e.isStalled,"bg-green-500/10 text-green-500":i(e)==="active","bg-secondary text-secondary-foreground":i(e)==="idle"}])},[e.isStalled?(o(),x(l(w),{key:0,class:"w-3 h-3"})):p("",!0),e.isStalled?(o(),n("span",J,"Stalled")):i(e)==="active"?(o(),n("span",K,"Active")):(o(),n("span",O,"Idle"))],2)]),t("div",U,[t("div",Q,[t("div",W,a(e.tasksCompleted),1),s[4]||(s[4]=t("div",{class:"text-xs text-muted-foreground"},"Completed",-1))]),t("div",X,[t("div",Y,a(e.tasksCompletedRecent),1),s[5]||(s[5]=t("div",{class:"text-xs text-muted-foreground"},"Last 7d",-1))]),t("div",Z,[t("div",q,[u(l(b),{class:"w-3 h-3 text-muted-foreground"}),g(" "+a(S(e.avgCycleTimeMinutes)),1)]),s[6]||(s[6]=t("div",{class:"text-xs text-muted-foreground"},"Avg cycle",-1))])]),t("div",ee,[e.tasksInProgress>0?(o(),n("span",te,a(e.tasksInProgress)+" in progress ",1)):p("",!0),e.tasksPending>0?(o(),n("span",se,a(e.tasksPending)+" pending ",1)):p("",!0),e.tasksFailed>0?(o(),n("span",oe,a(e.tasksFailed)+" failed ",1)):p("",!0),t("span",ne,[u(l(_),{class:"w-3 h-3"}),g(" "+a(e.agentCount)+" agents ",1)])]),e.activeInstanceCount>0?(o(),n("div",re,[s[7]||(s[7]=t("p",{class:"text-xs font-medium text-muted-foreground mb-1"},"Active instances",-1)),t("div",le,[(o(!0),n(f,null,y(e.activeInstances,d=>(o(),n("div",{key:d.id,class:"flex items-center gap-1.5 text-xs text-muted-foreground"},[u(l($),{class:"w-3 h-3 shrink-0"}),t("span",ae,a(d.branch),1)]))),128))])])):p("",!0),e.recentTasks.length>0?(o(),n("div",de,[s[8]||(s[8]=t("p",{class:"text-xs font-medium text-muted-foreground mb-1"},"Recent activity",-1)),t("div",ie,[(o(!0),n(f,null,y(e.recentTasks,d=>(o(),n("div",{key:d.id,class:"flex items-center gap-2 text-xs"},[d.status==="done"?(o(),x(l(z),{key:0,class:"w-3 h-3 text-green-500 shrink-0"})):d.status==="in_progress"?(o(),x(l(C),{key:1,class:"w-3 h-3 text-blue-500 shrink-0 animate-spin"})):d.status==="failed"?(o(),x(l(w),{key:2,class:"w-3 h-3 text-red-500 shrink-0"})):(o(),x(l(b),{key:3,class:"w-3 h-3 text-yellow-500 shrink-0"})),t("span",ce,a(d.description),1)]))),128))])])):p("",!0)],2))),128))]))])}}});export{fe as default};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{b as y}from"./api-D4mHJ3u0.js";import{g as v}from"./squad-colors-B8B_Y-lz.js";import{r as h,u as k,E as b,J as o,q as r,n as t,t as i,T as l,k as w,d as L,L as C,K as d,o as S,a3 as N,D as f,N as q,R as n,s as _,p as B}from"./index-ELvnkQjd.js";import{G as V}from"./git-branch-DOM-orcl.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 A=h("LayersIcon",[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]]),M={class:"p-6"},j={key:0,class:"text-muted-foreground"},z={key:1,class:"text-center py-12 text-muted-foreground"},G={key:2,class:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},I={class:"flex items-start justify-between"},D={class:"min-w-0"},E={class:"text-sm text-muted-foreground mt-0.5"},F={class:"text-xs bg-secondary text-secondary-foreground px-2 py-0.5 rounded-full"},T={class:"mt-3 flex items-center gap-4 text-xs text-muted-foreground"},J={key:0,class:"flex items-center gap-1"},K={class:"flex items-center gap-1"},P=k({__name:"SquadsView",setup(O){const c=d([]),u=d([]),m=d({}),p=d(!0);b(async()=>{try{const a=await y("/squads");c.value=a.squads,u.value=a.agents,m.value=a.instanceCounts??{}}finally{p.value=!1}});function g(a){return u.value.filter(s=>s.squad_id===a)}return(a,s)=>{const x=q("router-link");return o(),r("div",M,[s[2]||(s[2]=t("h1",{class:"text-2xl font-bold mb-6"},"Squads",-1)),p.value?(o(),r("div",j,"Loading...")):c.value.length===0?(o(),r("div",z,[i(l(w),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),s[0]||(s[0]=t("p",null,"No squads yet.",-1)),s[1]||(s[1]=t("p",{class:"text-sm mt-1"},"Ask IO to create a squad for your project.",-1))])):(o(),r("div",G,[(o(!0),r(L,null,C(c.value,e=>(o(),S(x,{key:e.id,to:`/squads/${e.id}`,class:"block rounded-lg border border-border bg-card p-4 hover:border-primary/50 transition-colors border-l-4",style:f({borderLeftColor:e.color})},{default:N(()=>[t("div",I,[t("div",D,[t("span",{class:"inline-flex items-center text-xs px-2 py-0.5 rounded-full font-medium",style:f(l(v)(e.color))},n(e.name),5),t("p",E,n(e.universe),1)]),t("span",F,n(g(e.id).length)+" agents ",1)]),t("div",T,[e.repo_url?(o(),r("span",J,[i(l(V),{class:"w-3 h-3"}),_(" "+n(e.repo_url),1)])):B("",!0),t("span",K,[i(l(A),{class:"w-3 h-3"}),_(" "+n(m.value[e.id]??0)+"/3 instances ",1)])])]),_:2},1032,["to","style"]))),128))]))])}}});export{P as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{u as t,J as s,q as r,z as l,n as d}from"./index-ELvnkQjd.js";const u=["aria-label","aria-checked","disabled"],m=t({__name:"ToggleSwitch",props:{modelValue:{type:Boolean},ariaLabel:{default:"Toggle"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const a=e,i=o;function n(){a.disabled||i("update:modelValue",!a.modelValue)}return(c,b)=>(s(),r("button",{type:"button",role:"switch","aria-label":e.ariaLabel,"aria-checked":e.modelValue,disabled:e.disabled,class:l(["inline-flex h-6 w-10 shrink-0 items-center rounded-full border border-border p-0.5 transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50",e.modelValue?"bg-gradient-brand shadow-[0_0_0_1px_rgba(228,58,156,0.35)]":"bg-muted"]),onClick:n},[d("span",{class:l(["pointer-events-none h-4 w-4 rounded-full bg-white shadow-sm ring-1 ring-black/10 transition-transform duration-200",e.modelValue?"translate-x-5":"translate-x-0"])},null,2)],10,u))}});export{m as _};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import{r as L,u as j,E as Q,J as d,q as r,n as t,t as _,T as k,C as W,d as i,L as m,s as w,R as o,k as X,p as u,a4 as F,a0 as O,K as a,z as Y,D as Z,m as tt}from"./index-ELvnkQjd.js";import{b as T,d as q}from"./api-D4mHJ3u0.js";import{T as et}from"./triangle-alert-lj4I30rL.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 st=L("BotIcon",[["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"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.474.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 ot=L("DollarSignIcon",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]);/**
|
|
12
|
-
* @license lucide-vue-next v0.474.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 dt=L("TrendingUpIcon",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]),rt={class:"p-6"},lt={class:"flex items-center gap-3 mb-6"},nt={key:0,class:"text-muted-foreground"},at={class:"flex gap-1 border-b border-border mb-6"},it=["onClick"],ut={key:0,class:"space-y-6"},pt={class:"grid grid-cols-2 md:grid-cols-4 gap-4"},xt={class:"border border-border rounded-lg p-4"},ct={class:"flex items-center gap-2 text-muted-foreground text-xs mb-1"},mt={class:"text-2xl font-bold"},gt={class:"text-xs text-muted-foreground mt-1"},ht={class:"border border-border rounded-lg p-4"},vt={class:"flex items-center gap-2 text-muted-foreground text-xs mb-1"},bt={class:"text-2xl font-bold"},yt={class:"border border-border rounded-lg p-4"},ft={class:"flex items-center gap-2 text-muted-foreground text-xs mb-1"},_t={class:"text-2xl font-bold"},kt={class:"border border-border rounded-lg p-4"},wt={class:"flex items-center gap-2 text-muted-foreground text-xs mb-1"},Tt={class:"text-2xl font-bold"},Mt={key:0,class:"flex items-center gap-2 text-sm text-yellow-600 bg-yellow-500/10 border border-yellow-500/20 rounded-lg px-4 py-3"},Ct={key:1},Pt={class:"border border-border rounded-lg overflow-hidden"},St={class:"w-full text-sm"},At={class:"px-4 py-2 font-medium"},Ut={class:"px-4 py-2 text-right text-muted-foreground"},$t={class:"px-4 py-2 text-right text-muted-foreground"},Dt={class:"px-4 py-2 text-right text-muted-foreground"},It={key:2,class:"text-sm text-muted-foreground"},Et={key:1},Vt={key:0,class:"text-sm text-muted-foreground"},Nt={key:1,class:"border border-border rounded-lg overflow-hidden"},Bt={class:"w-full text-sm"},Ft={class:"px-4 py-2 font-medium"},Ot={class:"px-4 py-2 text-right text-muted-foreground"},Lt={class:"px-4 py-2 text-right text-muted-foreground"},qt={class:"px-4 py-2 text-right font-medium"},zt={class:"px-4 py-2 text-right text-muted-foreground"},Ht={class:"px-4 py-2 text-right text-muted-foreground"},Kt={key:2},Gt={key:0,class:"text-sm text-muted-foreground"},Jt={key:1,class:"border border-border rounded-lg overflow-hidden"},Rt={class:"w-full text-sm"},jt={class:"px-4 py-2 font-medium"},Qt={class:"px-4 py-2 text-right text-muted-foreground"},Wt={class:"px-4 py-2 text-right text-muted-foreground"},Xt={class:"px-4 py-2 text-right font-medium"},Yt={class:"px-4 py-2 text-right text-muted-foreground"},Zt={class:"px-4 py-2 text-right text-muted-foreground"},te={key:3},ee={key:0,class:"text-sm text-muted-foreground"},se={class:"mb-6"},oe={class:"flex items-end gap-1 h-32 border border-border rounded-lg p-3 bg-muted/20"},de={class:"absolute bottom-full left-1/2 -translate-x-1/2 mb-1 hidden group-hover:block bg-popover border border-border text-xs rounded px-2 py-1 whitespace-nowrap z-10"},re={class:"border border-border rounded-lg overflow-hidden"},le={class:"w-full text-sm"},ne={class:"px-4 py-2 font-mono text-xs"},ae={class:"px-4 py-2 text-right text-muted-foreground"},ie={class:"px-4 py-2 text-right text-muted-foreground"},ue={class:"px-4 py-2 text-right font-medium"},pe={class:"px-4 py-2 text-right text-muted-foreground"},xe={key:4,class:"space-y-6"},ce={class:"flex items-center gap-3 max-w-sm"},me=["disabled"],ge={key:0,class:"border border-border rounded-lg p-4 mb-4 max-w-md space-y-3"},he={class:"font-medium text-sm"},ve={class:"bg-muted px-1 rounded"},be={class:"flex gap-3"},ye={class:"flex-1"},fe={class:"flex-1"},_e={class:"flex gap-2"},ke=["disabled"],we={class:"border border-border rounded-lg overflow-hidden"},Te={class:"w-full text-sm"},Me={class:"px-4 py-2 font-mono text-xs"},Ce={class:"px-4 py-2 text-right text-muted-foreground"},Pe={class:"px-4 py-2 text-right text-muted-foreground"},Se={class:"px-4 py-2 text-right"},Ae=["onClick"],Ve=j({__name:"UsageView",setup(Ue){const B=a(!0),p=a("overview"),z=[{id:"overview",label:"Overview"},{id:"by-squad",label:"By Squad"},{id:"by-agent",label:"By Agent"},{id:"daily",label:"Daily Trend"},{id:"pricing",label:"Pricing"}],g=a(null),h=a([]),C=a([]),M=a([]),v=a({}),b=a(null),P=a(!1),S=a(!1),A=a(!1),U=a(!1),x=a(""),$=a(0),D=a(0);async function H(){B.value=!0;try{const[l,e,c,I,E,V]=await Promise.all([T("/token-usage/summary"),T("/token-usage/by-squad"),T("/token-usage/by-agent"),T("/token-usage/daily?days=30"),T("/token-usage/pricing"),T("/token-usage/alert-threshold")]);g.value=l,h.value=e.filter(f=>f.record_count>0),C.value=c.filter(f=>f.record_count>0),M.value=I,v.value=E,b.value=V.tokenAlertThreshold}finally{B.value=!1}}async function K(){P.value=!0,S.value=!1;try{await q("/token-usage/alert-threshold",{tokenAlertThreshold:b.value}),S.value=!0,setTimeout(()=>S.value=!1,2e3)}finally{P.value=!1}}function G(l){var e,c;x.value=l,$.value=((e=v.value[l])==null?void 0:e.inputPer1M)??0,D.value=((c=v.value[l])==null?void 0:c.outputPer1M)??0}async function J(){if(x.value){A.value=!0,U.value=!1;try{const l={...v.value,[x.value]:{inputPer1M:$.value,outputPer1M:D.value}};await q("/token-usage/pricing",l),v.value=l,x.value="",U.value=!0,setTimeout(()=>U.value=!1,2e3)}finally{A.value=!1}}}function n(l){return l>=1e6?`${(l/1e6).toFixed(2)}M`:l>=1e3?`${(l/1e3).toFixed(1)}K`:String(l)}function y(l){return l<1e-4?"$0.00":l<.01?`$${l.toFixed(4)}`:`$${l.toFixed(2)}`}const R=tt(()=>Math.max(1,...M.value.map(l=>l.total_tokens)));return Q(H),(l,e)=>{var c,I,E,V,f;return d(),r("div",rt,[t("div",lt,[_(k(W),{class:"w-6 h-6 text-primary"}),e[4]||(e[4]=t("h1",{class:"text-2xl font-bold"},"Token Usage",-1))]),B.value?(d(),r("div",nt,"Loading...")):(d(),r(i,{key:1},[t("div",at,[(d(),r(i,null,m(z,s=>t("button",{key:s.id,onClick:N=>p.value=s.id,class:Y(["px-4 py-2 text-sm font-medium border-b-2 transition-colors",p.value===s.id?"border-primary text-foreground":"border-transparent text-muted-foreground hover:text-foreground"])},o(s.label),11,it)),64))]),p.value==="overview"?(d(),r("div",ut,[t("div",pt,[t("div",xt,[t("div",ct,[_(k(dt),{class:"w-3 h-3"}),e[5]||(e[5]=w(" Total Tokens ",-1))]),t("div",mt,o(n(((c=g.value)==null?void 0:c.total_tokens)??0)),1),t("div",gt,o(n(((I=g.value)==null?void 0:I.total_input_tokens)??0))+" in / "+o(n(((E=g.value)==null?void 0:E.total_output_tokens)??0))+" out ",1)]),t("div",ht,[t("div",vt,[_(k(ot),{class:"w-3 h-3"}),e[6]||(e[6]=w(" Est. Cost ",-1))]),t("div",bt,o(y(((V=g.value)==null?void 0:V.total_cost_usd)??0)),1),e[7]||(e[7]=t("div",{class:"text-xs text-muted-foreground mt-1"},"all time",-1))]),t("div",yt,[t("div",ft,[_(k(X),{class:"w-3 h-3"}),e[8]||(e[8]=w(" Active Squads ",-1))]),t("div",_t,o(h.value.length),1),e[9]||(e[9]=t("div",{class:"text-xs text-muted-foreground mt-1"},"with usage",-1))]),t("div",kt,[t("div",wt,[_(k(st),{class:"w-3 h-3"}),e[10]||(e[10]=w(" Active Agents ",-1))]),t("div",Tt,o(C.value.length),1),e[11]||(e[11]=t("div",{class:"text-xs text-muted-foreground mt-1"},"with usage",-1))])]),b.value!==null?(d(),r("div",Mt,[_(k(et),{class:"w-4 h-4 shrink-0"}),w(" Alert threshold active: "+o(n(b.value))+" tokens per task ",1)])):u("",!0),h.value.length>0?(d(),r("div",Ct,[e[13]||(e[13]=t("h2",{class:"text-base font-semibold mb-3"},"Top Squads by Token Usage",-1)),t("div",Pt,[t("table",St,[e[12]||(e[12]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Squad"),t("th",{class:"text-right px-4 py-2 font-medium"},"Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Est. Cost"),t("th",{class:"text-right px-4 py-2 font-medium"},"Calls")])],-1)),t("tbody",null,[(d(!0),r(i,null,m(h.value.slice(0,5),s=>(d(),r("tr",{key:s.id,class:"border-t border-border"},[t("td",At,o(s.name),1),t("td",Ut,o(n(s.total_tokens)),1),t("td",$t,o(y(s.total_cost_usd)),1),t("td",Dt,o(s.record_count),1)]))),128))])])])])):u("",!0),((f=g.value)==null?void 0:f.total_records)===0?(d(),r("div",It," No token usage recorded yet. Usage will appear here after squads or agents complete tasks. ")):u("",!0)])):u("",!0),p.value==="by-squad"?(d(),r("div",Et,[h.value.length===0?(d(),r("div",Vt," No usage data yet. ")):(d(),r("div",Nt,[t("table",Bt,[e[14]||(e[14]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Squad"),t("th",{class:"text-right px-4 py-2 font-medium"},"Input Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Output Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Total Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Est. Cost"),t("th",{class:"text-right px-4 py-2 font-medium"},"API Calls")])],-1)),t("tbody",null,[(d(!0),r(i,null,m(h.value,s=>(d(),r("tr",{key:s.id,class:"border-t border-border"},[t("td",Ft,o(s.name),1),t("td",Ot,o(n(s.total_input_tokens)),1),t("td",Lt,o(n(s.total_output_tokens)),1),t("td",qt,o(n(s.total_tokens)),1),t("td",zt,o(y(s.total_cost_usd)),1),t("td",Ht,o(s.record_count),1)]))),128))])])]))])):u("",!0),p.value==="by-agent"?(d(),r("div",Kt,[C.value.length===0?(d(),r("div",Gt," No usage data yet. ")):(d(),r("div",Jt,[t("table",Rt,[e[15]||(e[15]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Agent"),t("th",{class:"text-right px-4 py-2 font-medium"},"Input Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Output Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Total Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Est. Cost"),t("th",{class:"text-right px-4 py-2 font-medium"},"API Calls")])],-1)),t("tbody",null,[(d(!0),r(i,null,m(C.value,s=>(d(),r("tr",{key:s.id,class:"border-t border-border"},[t("td",jt,o(s.name),1),t("td",Qt,o(n(s.total_input_tokens)),1),t("td",Wt,o(n(s.total_output_tokens)),1),t("td",Xt,o(n(s.total_tokens)),1),t("td",Yt,o(y(s.total_cost_usd)),1),t("td",Zt,o(s.record_count),1)]))),128))])])]))])):u("",!0),p.value==="daily"?(d(),r("div",te,[M.value.length===0?(d(),r("div",ee," No usage data yet. ")):(d(),r(i,{key:1},[t("div",se,[e[16]||(e[16]=t("h2",{class:"text-base font-semibold mb-3"},"Last 30 Days — Token Usage",-1)),t("div",oe,[(d(!0),r(i,null,m(M.value,s=>(d(),r("div",{key:s.date,class:"flex-1 bg-primary/60 rounded-t min-w-[4px] relative group",style:Z({height:`${s.total_tokens/R.value*100}%`})},[t("div",de,o(s.date)+": "+o(n(s.total_tokens))+" tokens ("+o(y(s.total_cost_usd))+") ",1)],4))),128))])]),t("div",re,[t("table",le,[e[17]||(e[17]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Date"),t("th",{class:"text-right px-4 py-2 font-medium"},"Input Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Output Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Total Tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Est. Cost")])],-1)),t("tbody",null,[(d(!0),r(i,null,m([...M.value].reverse(),s=>(d(),r("tr",{key:s.date,class:"border-t border-border"},[t("td",ne,o(s.date),1),t("td",ae,o(n(s.total_input_tokens)),1),t("td",ie,o(n(s.total_output_tokens)),1),t("td",ue,o(n(s.total_tokens)),1),t("td",pe,o(y(s.total_cost_usd)),1)]))),128))])])])],64))])):u("",!0),p.value==="pricing"?(d(),r("div",xe,[t("div",null,[e[18]||(e[18]=t("h2",{class:"text-base font-semibold mb-1"},"Alert Threshold",-1)),e[19]||(e[19]=t("p",{class:"text-sm text-muted-foreground mb-3"}," Post a feed alert when a single task exceeds this many tokens. Leave empty to disable. ",-1)),t("div",ce,[F(t("input",{"onUpdate:modelValue":e[0]||(e[0]=s=>b.value=s),type:"number",min:"0",placeholder:"e.g. 100000",class:"flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm"},null,512),[[O,b.value,void 0,{number:!0}]]),t("button",{onClick:K,disabled:P.value,class:"px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm hover:bg-primary/90 disabled:opacity-50 shrink-0"},o(P.value?"Saving...":S.value?"Saved ✓":"Save"),9,me)])]),t("div",null,[e[24]||(e[24]=t("h2",{class:"text-base font-semibold mb-1"},"Model Pricing",-1)),e[25]||(e[25]=t("p",{class:"text-sm text-muted-foreground mb-3"}," Prices in USD per 1M tokens. Used for cost estimates only. ",-1)),x.value?(d(),r("div",ge,[t("div",he,[e[20]||(e[20]=w(" Editing: ",-1)),t("code",ve,o(x.value),1)]),t("div",be,[t("div",ye,[e[21]||(e[21]=t("label",{class:"text-xs text-muted-foreground"},"Input (per 1M tokens)",-1)),F(t("input",{"onUpdate:modelValue":e[1]||(e[1]=s=>$.value=s),type:"number",min:"0",step:"0.01",class:"w-full mt-1 rounded-md border border-input bg-background px-3 py-2 text-sm"},null,512),[[O,$.value,void 0,{number:!0}]])]),t("div",fe,[e[22]||(e[22]=t("label",{class:"text-xs text-muted-foreground"},"Output (per 1M tokens)",-1)),F(t("input",{"onUpdate:modelValue":e[2]||(e[2]=s=>D.value=s),type:"number",min:"0",step:"0.01",class:"w-full mt-1 rounded-md border border-input bg-background px-3 py-2 text-sm"},null,512),[[O,D.value,void 0,{number:!0}]])])]),t("div",_e,[t("button",{onClick:J,disabled:A.value,class:"px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-sm hover:bg-primary/90 disabled:opacity-50"},o(A.value?"Saving...":U.value?"Saved ✓":"Save"),9,ke),t("button",{onClick:e[3]||(e[3]=s=>x.value=""),class:"px-3 py-1.5 rounded-md border border-border text-sm hover:bg-accent"}," Cancel ")])])):u("",!0),t("div",we,[t("table",Te,[e[23]||(e[23]=t("thead",{class:"bg-muted"},[t("tr",null,[t("th",{class:"text-left px-4 py-2 font-medium"},"Model"),t("th",{class:"text-right px-4 py-2 font-medium"},"Input / 1M tokens"),t("th",{class:"text-right px-4 py-2 font-medium"},"Output / 1M tokens"),t("th",{class:"text-right px-4 py-2 font-medium"})])],-1)),t("tbody",null,[(d(!0),r(i,null,m(v.value,(s,N)=>(d(),r("tr",{key:N,class:"border-t border-border"},[t("td",Me,o(N),1),t("td",Ce," $"+o(s.inputPer1M.toFixed(2)),1),t("td",Pe," $"+o(s.outputPer1M.toFixed(2)),1),t("td",Se,[t("button",{onClick:$e=>G(N),class:"text-xs text-primary hover:underline"}," Edit ",8,Ae)])]))),128))])])])])])):u("",!0)],64))])}}});export{Ve as default};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import{r as j,u as se,a2 as oe,J as o,q as a,d as b,L as K,m as A,n as t,o as I,T as d,a as ce,t as v,F as ve,R as N,D as pe,z,a6 as fe,p as B,K as c,E as me,B as H,s as S,a4 as V,a0 as L,a5 as R,l as Z}from"./index-ELvnkQjd.js";import{b as T,d as E,a as G}from"./api-D4mHJ3u0.js";import{S as xe}from"./search-CS9zSIeW.js";import{P as J}from"./plus-BAzlGFd_.js";import{P as O}from"./pencil-CFsi7ufI.js";import{T as X}from"./trash-2-DLveUEsd.js";import{S as Y}from"./save-BmgCYJ1g.js";import{X as ee}from"./x-CjXR97Fa.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 ge=j("ChevronRightIcon",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
|
|
7
|
-
* @license lucide-vue-next v0.474.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 te=j("FileCodeIcon",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/**
|
|
12
|
-
* @license lucide-vue-next v0.474.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 he=j("FilePlusIcon",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]);/**
|
|
17
|
-
* @license lucide-vue-next v0.474.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const be=j("FolderIcon",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]]);/**
|
|
22
|
-
* @license lucide-vue-next v0.474.0 - ISC
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the ISC license.
|
|
25
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const ye=j("LinkIcon",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]]),ke={class:"select-none"},we=["onClick"],_e={class:"truncate"},Ce=["onClick"],$e=se({__name:"WikiTree",props:{pages:{},selectedPage:{},searchQuery:{}},emits:["select","addFile"],setup(U,{emit:w}){const x=U,f=w,g=c(new Set);function y(i){const u=[];for(const n of i){const p=n.split("/");let m=u;for(let h=0;h<p.length;h++){const P=p[h],$=p.slice(0,h+1).join("/"),k=h<p.length-1;let F=m.find(D=>D.name===P&&D.isFolder===k);F||(F={name:P,path:$,children:[],isFolder:k},m.push(F)),m=F.children}}const s=n=>{n.sort((p,m)=>p.isFolder!==m.isFolder?p.isFolder?-1:1:p.name.localeCompare(m.name)),n.forEach(p=>s(p.children))};return s(u),u}const _=A(()=>{let i=x.pages;if(x.searchQuery){const u=x.searchQuery.toLowerCase();i=x.pages.filter(s=>s.toLowerCase().includes(u))}return y(i)});oe(()=>x.selectedPage,i=>{if(!i)return;const u=i.split("/");for(let s=1;s<u.length;s++)g.value.add(u.slice(0,s).join("/"))},{immediate:!0});function q(i){g.value.has(i)?g.value.delete(i):g.value.add(i)}function M(i,u){const s=[];for(const n of i)s.push({node:n,depth:u}),n.isFolder&&g.value.has(n.path)&&s.push(...M(n.children,u+1));return s}const C=A(()=>M(_.value,0));return(i,u)=>(o(),a("div",ke,[(o(!0),a(b,null,K(C.value,({node:s,depth:n})=>(o(),a("div",{key:s.path,class:"group relative"},[t("button",{onClick:p=>s.isFolder?q(s.path):f("select",s.path),class:z(["w-full text-left flex items-center gap-1 py-1 text-xs rounded hover:bg-accent transition-colors",{"bg-accent font-medium":!s.isFolder&&U.selectedPage===s.path}]),style:pe({paddingLeft:n*12+8+"px"})},[s.isFolder?(o(),a(b,{key:0},[g.value.has(s.path)?(o(),I(d(ce),{key:0,class:"w-3 h-3 shrink-0 text-muted-foreground"})):(o(),I(d(ge),{key:1,class:"w-3 h-3 shrink-0 text-muted-foreground"})),v(d(be),{class:"w-3.5 h-3.5 shrink-0 text-muted-foreground"})],64)):(o(),a(b,{key:1},[u[0]||(u[0]=t("span",{class:"w-3 shrink-0"},null,-1)),v(d(ve),{class:"w-3.5 h-3.5 shrink-0 text-muted-foreground"})],64)),t("span",_e,N(s.name),1)],14,we),s.isFolder?(o(),a("button",{key:0,onClick:fe(p=>f("addFile",s.path),["stop"]),class:"absolute right-1 top-1/2 -translate-y-1/2 p-0.5 rounded opacity-0 group-hover:opacity-100 hover:bg-primary/10 text-muted-foreground hover:text-primary transition-all",title:"Add file here"},[v(d(he),{class:"w-3.5 h-3.5"})],8,Ce)):B("",!0)]))),128))]))}}),Fe={class:"flex flex-col h-full"},Pe={class:"flex border-b border-border shrink-0"},Te={key:0,class:"flex flex-1 overflow-hidden"},qe={class:"w-64 border-r border-border flex flex-col shrink-0"},Me={class:"p-3 border-b border-border space-y-2"},Se={class:"relative"},Ve={key:0,class:"space-y-1.5"},Le={class:"flex gap-1"},Ne=["disabled"],je={class:"flex-1 overflow-y-auto p-2"},De={key:0,class:"text-xs text-muted-foreground p-2"},Ee={class:"flex-1 flex flex-col overflow-hidden"},ze={key:0,class:"flex items-center justify-center h-full text-muted-foreground"},Be={class:"text-center"},Ie={class:"flex items-center justify-between px-4 py-2 border-b border-border"},Ue={class:"text-sm font-medium font-mono"},Ke={class:"flex gap-1"},Qe={class:"flex-1 overflow-y-auto p-4"},We={key:0,class:"mt-8 pt-4 border-t border-border"},Ae={class:"flex items-center gap-1.5 mb-2 text-xs font-medium text-muted-foreground"},He={class:"space-y-1"},Re=["onClick"],Ze={key:1,class:"flex flex-1 overflow-hidden"},Ge={class:"w-64 border-r border-border flex flex-col shrink-0"},Je={class:"p-3 border-b border-border space-y-2"},Oe={key:0,class:"space-y-1.5"},Xe={class:"flex gap-1"},Ye=["disabled"],et={class:"flex-1 overflow-y-auto p-2"},tt={key:0,class:"text-xs text-muted-foreground p-2"},st={key:1,class:"text-xs text-muted-foreground p-2"},ot=["onClick"],lt={class:"flex-1 flex flex-col overflow-hidden"},at={key:0,class:"flex items-center justify-center h-full text-muted-foreground"},nt={class:"text-center"},rt={class:"flex items-center justify-between px-4 py-2 border-b border-border"},it={class:"text-sm font-medium font-mono"},ut={class:"flex gap-1"},dt={class:"flex-1 overflow-y-auto p-4"},bt=se({__name:"WikiView",setup(U){const w=c("pages"),x=c([]),f=c(null),g=c(""),y=c(!1),_=c(""),q=c(""),M=c(!0),C=c(!1),i=c(""),u=c([]),s=c([]),n=c(null),p=c(""),m=c(!1),h=c(""),P=c(!1),$=c(!1),k=c("");me(async()=>{try{x.value=await T("/wiki/pages")}finally{M.value=!1}}),oe(w,async r=>{if(r==="templates"&&s.value.length===0){P.value=!0;try{s.value=await T("/wiki/templates/squad")}finally{P.value=!1}}});async function F(r){f.value=r,y.value=!1;const e=await T(`/wiki/page/${r}`);g.value=e.content,u.value=await T(`/wiki/backlinks/${r}`)}function D(){_.value=g.value,y.value=!0}async function le(){f.value&&(await E(`/wiki/page/${f.value}`,{content:_.value}),g.value=_.value,y.value=!1,u.value=await T(`/wiki/backlinks/${f.value}`))}async function ae(){f.value&&confirm(`Delete "${f.value}"?`)&&(await G(`/wiki/page/${f.value}`),x.value=x.value.filter(r=>r!==f.value),f.value=null,g.value="",u.value=[])}async function Q(){const r=i.value.trim();if(!r)return;const e=r.endsWith(".md")?r:`${r}.md`;await E(`/wiki/page/${e}`,{content:""}),x.value.includes(e)||(x.value.push(e),x.value.sort()),C.value=!1,i.value="",f.value=e,g.value="",_.value="",y.value=!0,u.value=[]}async function ne(r){n.value=r,m.value=!1;const e=await T(`/wiki/template/squad/${r}`);p.value=e.content}function re(){h.value=p.value,m.value=!0}async function ie(){n.value&&(await E(`/wiki/template/squad/${n.value}`,{content:h.value}),p.value=h.value,m.value=!1)}async function ue(){n.value&&confirm(`Delete template "${n.value}"?`)&&(await G(`/wiki/template/squad/${n.value}`),s.value=s.value.filter(r=>r!==n.value),n.value=null,p.value="")}async function W(){const r=k.value.trim();if(!r)return;const e=r.endsWith(".md")?r:`${r}.md`;await E(`/wiki/template/squad/${e}`,{content:""}),s.value.includes(e)||(s.value.push(e),s.value.sort()),$.value=!1,k.value="",n.value=e,p.value="",h.value="",m.value=!0}return(r,e)=>(o(),a("div",Fe,[t("div",Pe,[t("button",{onClick:e[0]||(e[0]=l=>w.value="pages"),class:z(["px-4 py-2 text-sm font-medium border-b-2 transition-colors",w.value==="pages"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"])},[v(d(H),{class:"inline w-4 h-4 mr-1.5 -mt-0.5"}),e[15]||(e[15]=S(" Pages ",-1))],2),t("button",{onClick:e[1]||(e[1]=l=>w.value="templates"),class:z(["px-4 py-2 text-sm font-medium border-b-2 transition-colors",w.value==="templates"?"border-primary text-primary":"border-transparent text-muted-foreground hover:text-foreground"])},[v(d(te),{class:"inline w-4 h-4 mr-1.5 -mt-0.5"}),e[16]||(e[16]=S(" Squad Templates ",-1))],2)]),w.value==="pages"?(o(),a("div",Te,[t("div",qe,[t("div",Me,[t("div",Se,[v(d(xe),{class:"absolute left-2.5 top-2.5 w-3.5 h-3.5 text-muted-foreground"}),V(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>q.value=l),placeholder:"Search pages...",class:"w-full rounded-md border border-input bg-background pl-8 pr-3 py-2 text-xs focus:outline-none focus:ring-1 focus:ring-ring"},null,512),[[L,q.value]])]),t("button",{onClick:e[3]||(e[3]=l=>C.value=!C.value),class:"w-full flex items-center justify-center gap-1.5 px-2 py-1.5 text-xs rounded-md bg-primary text-primary-foreground hover:bg-primary/90"},[v(d(J),{class:"w-3.5 h-3.5"}),e[17]||(e[17]=S(" New Page ",-1))]),C.value?(o(),a("div",Ve,[V(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>i.value=l),placeholder:"path/to/page.md",class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring",onKeyup:R(Q,["enter"])},null,544),[[L,i.value]]),t("div",Le,[t("button",{onClick:Q,disabled:!i.value.trim(),class:"flex-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"}," Create ",8,Ne),t("button",{onClick:e[5]||(e[5]=l=>{C.value=!1,i.value=""}),class:"px-2 py-1 text-xs rounded border border-border hover:bg-accent"}," Cancel ")])])):B("",!0)]),t("div",je,[M.value?(o(),a("div",De,"Loading...")):(o(),I($e,{key:1,pages:x.value,"selected-page":f.value,"search-query":q.value,onSelect:e[6]||(e[6]=l=>F(l)),onAddFile:e[7]||(e[7]=l=>{C.value=!0,i.value=l+"/"})},null,8,["pages","selected-page","search-query"]))])]),t("div",Ee,[f.value?(o(),a(b,{key:1},[t("div",Ie,[t("span",Ue,N(f.value),1),t("div",Ke,[y.value?(o(),a(b,{key:1},[t("button",{onClick:le,class:"p-1.5 rounded hover:bg-accent text-green-500",title:"Save"},[v(d(Y),{class:"w-4 h-4"})]),t("button",{onClick:e[8]||(e[8]=l=>y.value=!1),class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Cancel"},[v(d(ee),{class:"w-4 h-4"})])],64)):(o(),a(b,{key:0},[t("button",{onClick:D,class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Edit"},[v(d(O),{class:"w-4 h-4"})]),t("button",{onClick:ae,class:"p-1.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive",title:"Delete"},[v(d(X),{class:"w-4 h-4"})])],64))])]),t("div",Qe,[y.value?V((o(),a("textarea",{key:0,"onUpdate:modelValue":e[9]||(e[9]=l=>_.value=l),class:"w-full h-full min-h-[400px] font-mono text-sm bg-background border border-input rounded-md p-3 focus:outline-none focus:ring-1 focus:ring-ring resize-none"},null,512)),[[L,_.value]]):(o(),a(b,{key:1},[v(Z,{content:g.value},null,8,["content"]),u.value.length>0?(o(),a("div",We,[t("div",Ae,[v(d(ye),{class:"w-3.5 h-3.5"}),e[19]||(e[19]=S(" Backlinks ",-1))]),t("ul",He,[(o(!0),a(b,null,K(u.value,l=>(o(),a("li",{key:l},[t("button",{onClick:de=>F(l),class:"text-xs text-primary hover:underline font-mono"},N(l),9,Re)]))),128))])])):B("",!0)],64))])],64)):(o(),a("div",ze,[t("div",Be,[v(d(H),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),e[18]||(e[18]=t("p",null,"Select a page to view",-1))])]))])])):(o(),a("div",Ze,[t("div",Ge,[t("div",Je,[e[21]||(e[21]=t("p",{class:"text-xs text-muted-foreground"}," Files copied verbatim into each new squad's wiki directory on creation. ",-1)),t("button",{onClick:e[10]||(e[10]=l=>$.value=!$.value),class:"w-full flex items-center justify-center gap-1.5 px-2 py-1.5 text-xs rounded-md bg-primary text-primary-foreground hover:bg-primary/90"},[v(d(J),{class:"w-3.5 h-3.5"}),e[20]||(e[20]=S(" New Template ",-1))]),$.value?(o(),a("div",Oe,[V(t("input",{"onUpdate:modelValue":e[11]||(e[11]=l=>k.value=l),placeholder:"filename.md",class:"w-full rounded-md border border-input bg-background px-2 py-1.5 text-xs focus:outline-none focus:ring-1 focus:ring-ring",onKeyup:R(W,["enter"])},null,544),[[L,k.value]]),t("div",Xe,[t("button",{onClick:W,disabled:!k.value.trim(),class:"flex-1 px-2 py-1 text-xs rounded bg-primary text-primary-foreground hover:bg-primary/90 disabled:opacity-50"}," Create ",8,Ye),t("button",{onClick:e[12]||(e[12]=l=>{$.value=!1,k.value=""}),class:"px-2 py-1 text-xs rounded border border-border hover:bg-accent"}," Cancel ")])])):B("",!0)]),t("div",et,[P.value?(o(),a("div",tt,"Loading...")):s.value.length===0?(o(),a("div",st," No templates yet. ")):(o(!0),a(b,{key:2},K(s.value,l=>(o(),a("button",{key:l,onClick:de=>ne(l),class:z(["w-full text-left px-2 py-1.5 text-xs rounded hover:bg-accent font-mono truncate",n.value===l?"bg-accent text-accent-foreground":"text-foreground"])},N(l),11,ot))),128))])]),t("div",lt,[n.value?(o(),a(b,{key:1},[t("div",rt,[t("span",it,N(n.value),1),t("div",ut,[m.value?(o(),a(b,{key:1},[t("button",{onClick:ie,class:"p-1.5 rounded hover:bg-accent text-green-500",title:"Save"},[v(d(Y),{class:"w-4 h-4"})]),t("button",{onClick:e[13]||(e[13]=l=>m.value=!1),class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Cancel"},[v(d(ee),{class:"w-4 h-4"})])],64)):(o(),a(b,{key:0},[t("button",{onClick:re,class:"p-1.5 rounded hover:bg-accent text-muted-foreground",title:"Edit"},[v(d(O),{class:"w-4 h-4"})]),t("button",{onClick:ue,class:"p-1.5 rounded hover:bg-destructive/10 text-muted-foreground hover:text-destructive",title:"Delete"},[v(d(X),{class:"w-4 h-4"})])],64))])]),t("div",dt,[m.value?V((o(),a("textarea",{key:0,"onUpdate:modelValue":e[14]||(e[14]=l=>h.value=l),class:"w-full h-full min-h-[400px] font-mono text-sm bg-background border border-input rounded-md p-3 focus:outline-none focus:ring-1 focus:ring-ring resize-none"},null,512)),[[L,h.value]]):(o(),I(Z,{key:1,content:p.value},null,8,["content"]))])],64)):(o(),a("div",at,[t("div",nt,[v(d(te),{class:"w-12 h-12 mx-auto mb-3 opacity-50"}),e[22]||(e[22]=t("p",null,"Select a template to edit",-1)),e[23]||(e[23]=t("p",{class:"text-xs mt-1"},"Templates are copied into new squads on creation",-1))])]))])]))]))}});export{bt as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{V as i,O as c}from"./index-ELvnkQjd.js";const o="/api";function u(t){try{return JSON.parse(atob(t.split(".")[1])).exp*1e3<=Date.now()+6e4}catch{return!0}}async function n(){const t=i(),e={"Content-Type":"application/json"};return t.token&&u(t.token)&&await t.refreshToken(),t.token&&(e.Authorization=`Bearer ${t.token}`),e}async function s(t,e){if(t.status===401){const r=i();try{if(await r.refreshToken(),r.token){const a=await e();if(a.status===401)throw r.logout(),c.push("/login"),new Error("Session expired");return a}}catch{}throw r.logout(),c.push("/login"),new Error("Session expired")}return t}async function w(t){const e=await s(await fetch(`${o}${t}`,{headers:await n()}),async()=>fetch(`${o}${t}`,{headers:await n()}));if(!e.ok)throw new Error(`API error: ${e.status}`);return e.json()}async function f(t,e){const r={method:"POST",headers:await n(),body:e?JSON.stringify(e):void 0},a=await s(await fetch(`${o}${t}`,r),async()=>fetch(`${o}${t}`,{...r,headers:await n()}));if(!a.ok)throw new Error(`API error: ${a.status}`);return a.json()}async function $(t,e){const r={method:"PUT",headers:await n(),body:e?JSON.stringify(e):void 0},a=await s(await fetch(`${o}${t}`,r),async()=>fetch(`${o}${t}`,{...r,headers:await n()}));if(!a.ok)throw new Error(`API error: ${a.status}`);return a.json()}async function d(t){const e={method:"DELETE",headers:await n()},r=await s(await fetch(`${o}${t}`,e),async()=>fetch(`${o}${t}`,{...e,headers:await n()}));if(!r.ok)throw new Error(`API error: ${r.status}`);return r.json()}function p(){const t=i(),e=`${o}/stream?token=${t.token??""}`;return new EventSource(e)}export{d as a,w as b,f as c,$ as d,p as e};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{r}from"./index-ELvnkQjd.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 o=r("ArrowLeftIcon",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);export{o as A};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{r as c}from"./index-ELvnkQjd.js";/**
|
|
2
|
-
* @license lucide-vue-next v0.474.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 r=c("GitBranchIcon",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);export{r as G};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&display=swap";.markdown-content :deep(h1),.markdown-content :deep(h2),.markdown-content :deep(h3),.markdown-content :deep(h4),.markdown-content :deep(h5),.markdown-content :deep(h6){background:linear-gradient(135deg,#d83333,#c0285e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.overlay-fab[data-v-6cea3afb]{position:fixed;bottom:1rem;right:1rem;z-index:50;display:flex;height:2.75rem;width:2.75rem;align-items:center;justify-content:center;border-radius:1rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@media(min-width:640px){.overlay-fab[data-v-6cea3afb]{bottom:1.5rem;right:1.5rem}}.overlay-fab[data-v-6cea3afb]{background:linear-gradient(135deg,#d83333,#e43a9c 55%,#f041ff)}.overlay-fab[data-v-6cea3afb]:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.overlay-fab[data-v-6cea3afb]:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.overlay-fab[data-v-6cea3afb]:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(228 58 156 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px;--tw-ring-offset-color: #1a1a1a}.overlay-panel[data-v-6cea3afb]{position:fixed;bottom:1.25rem;right:1.25rem;z-index:50;display:flex;height:460px;width:340px;flex-direction:column;overflow:hidden;border-radius:1rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(42 42 42 / var(--tw-border-opacity, 1));--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:#1c1c1c}.overlay-panel-dragging[data-v-6cea3afb]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(228 58 156 / .4)}.overlay-header[data-v-6cea3afb]{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(43 43 43 / var(--tw-border-opacity, 1));padding:.75rem 1rem}.overlay-brand-mark[data-v-6cea3afb]{display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center}.overlay-title[data-v-6cea3afb]{font-family:Bebas Neue,sans-serif;font-size:1.125rem;line-height:1.75rem;line-height:1;letter-spacing:.16em;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.overlay-icon-btn[data-v-6cea3afb]{border-radius:var(--radius);padding:.375rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.overlay-icon-btn[data-v-6cea3afb]:hover{background-color:#ffffff12;--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.overlay-icon-btn[data-v-6cea3afb]:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(228 58 156 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px;--tw-ring-offset-color: #1c1c1c}.overlay-messages[data-v-6cea3afb]{position:relative;flex:1 1 0%}.overlay-messages[data-v-6cea3afb]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overlay-messages[data-v-6cea3afb]{overflow-y:auto;padding:.75rem;background:#1c1c1c}.overlay-empty-brand[data-v-6cea3afb]{margin-left:auto;margin-right:auto;margin-bottom:.75rem;display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:9999px;border-width:1px;border-color:#ffffff1a;--tw-bg-opacity: 1;background-color:rgb(37 37 37 / var(--tw-bg-opacity, 1))}.overlay-empty-copy[data-v-6cea3afb]{margin-top:0;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1));font-family:Inter,sans-serif}.overlay-avatar[data-v-6cea3afb]{margin-top:.125rem;display:flex;height:1.25rem;width:1.25rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius);border-width:1px;font-size:9px;font-weight:700}.overlay-avatar-assistant[data-v-6cea3afb]{background:#282828;border-color:#ffffff0d}.overlay-avatar-user[data-v-6cea3afb]{border-color:#ffffff14;background:linear-gradient(135deg,#d83333,#c0285e);color:#fff}.overlay-avatar-letter[data-v-6cea3afb]{line-height:1}.overlay-bubble[data-v-6cea3afb]{max-width:82%;border-radius:.75rem;padding:.5rem .75rem;font-size:9px;line-height:1.625}.overlay-bubble-assistant[data-v-6cea3afb]{background:#282828;border:1px solid rgba(255,255,255,.05);color:#e4e4e7}.overlay-bubble-user[data-v-6cea3afb]{background:linear-gradient(135deg,#d83333,#c0285e);color:#fff}.overlay-attachment[data-v-6cea3afb]{border-radius:var(--radius);border-width:1px;--tw-border-opacity: 1;border-color:rgb(43 43 43 / var(--tw-border-opacity, 1));background-color:#252525e6;padding:.5rem;font-size:9px;--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.overlay-markdown[data-v-6cea3afb] p:last-child{margin-bottom:0}.overlay-markdown[data-v-6cea3afb] pre{border-radius:var(--radius);border-width:1px;--tw-border-opacity: 1;border-color:rgb(43 43 43 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(31 31 31 / var(--tw-bg-opacity, 1));padding:0}.overlay-markdown[data-v-6cea3afb] pre code{display:block;overflow-x:auto;padding:.5rem .75rem;font-size:11px;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.overlay-stream-indicator[data-v-6cea3afb]{margin-top:.25rem;display:flex;width:-moz-fit-content;width:fit-content;align-items:center;gap:.25rem;border-radius:.75rem;border-top-left-radius:calc(var(--radius) - 4px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(42 42 42 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(40 40 40 / var(--tw-bg-opacity, 1));padding:.625rem .75rem}.overlay-stream-dot[data-v-6cea3afb]{height:.25rem;width:.25rem;border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(228 58 156 / var(--tw-bg-opacity, 1));animation:bounce-6cea3afb 1s infinite}.overlay-scroll-hint[data-v-6cea3afb]{position:absolute;bottom:6rem;left:50%;z-index:10;display:inline-flex;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));align-items:center;gap:.25rem;border-radius:9999px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(42 42 42 / var(--tw-border-opacity, 1));background-color:#252525f2;padding:.25rem .625rem;font-size:10px;--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1));--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.overlay-footer[data-v-6cea3afb]{flex-shrink:0;border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(42 42 42 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(28 28 28 / var(--tw-bg-opacity, 1));padding:.625rem}.overlay-chip[data-v-6cea3afb]{display:flex;align-items:center;gap:.375rem;border-radius:calc(var(--radius) - 2px);border-width:1px;--tw-border-opacity: 1;border-color:rgb(45 45 45 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(44 44 44 / var(--tw-bg-opacity, 1));padding:.25rem .375rem;font-size:10px;--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1));font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}.overlay-attach-btn[data-v-6cea3afb]{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius);border-width:1px;--tw-border-opacity: 1;border-color:rgb(45 45 45 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(37 37 37 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.overlay-attach-btn[data-v-6cea3afb]:disabled{cursor:not-allowed;opacity:.45}.overlay-attach-btn[data-v-6cea3afb]:hover:not(:disabled){--tw-border-opacity: 1;border-color:rgb(58 58 58 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(42 42 42 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.overlay-attach-btn[data-v-6cea3afb]:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(228 58 156 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px;--tw-ring-offset-color: #1c1c1c}.overlay-composer-field[data-v-6cea3afb]{display:flex;align-items:center;gap:.5rem}.overlay-input[data-v-6cea3afb]{min-height:36px;flex:1 1 0%;resize:none;border-radius:.75rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(45 45 45 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(37 37 37 / var(--tw-bg-opacity, 1));padding:.5rem .75rem;font-size:11px;line-height:1.625;--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.overlay-input[data-v-6cea3afb]::-moz-placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.overlay-input[data-v-6cea3afb]::placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.overlay-input[data-v-6cea3afb]:focus{outline:2px solid transparent;outline-offset:2px}.overlay-input[data-v-6cea3afb]{max-height:100px;font-family:Inter,sans-serif}.overlay-input[data-v-6cea3afb]:focus{border-color:#e43a9c4d}.overlay-send-btn[data-v-6cea3afb]{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius);--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.overlay-send-btn[data-v-6cea3afb]:disabled{cursor:not-allowed;opacity:.3}.overlay-send-btn[data-v-6cea3afb]{background:linear-gradient(135deg,#d83333,#e43a9c)}.overlay-send-btn[data-v-6cea3afb]:hover:not(:disabled){--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.overlay-send-btn[data-v-6cea3afb]:active:not(:disabled){--tw-brightness: brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.overlay-send-btn[data-v-6cea3afb]:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(228 58 156 / var(--tw-ring-opacity, 1));--tw-ring-offset-width: 2px;--tw-ring-offset-color: #252525}.overlay-meta[data-v-6cea3afb]{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,monospace}@keyframes bounce-6cea3afb{0%,80%,to{transform:translateY(0);opacity:.55}40%{transform:translateY(-3px);opacity:1}}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 10%;--foreground: 0 0% 96%;--card: 0 0% 13%;--card-foreground: 0 0% 96%;--popover: 0 0% 14%;--popover-foreground: 0 0% 96%;--primary: 323 78% 57%;--primary-foreground: 0 0% 100%;--secondary: 0 0% 18%;--secondary-foreground: 0 0% 94%;--muted: 0 0% 20%;--muted-foreground: 25 8% 64%;--accent: 320 34% 14%;--accent-foreground: 323 78% 62%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 98%;--border: 0 0% 100% / .08;--input: 0 0% 18%;--ring: 323 78% 57%;--radius: 1rem;--gradient-start: 0 69% 52%;--gradient-mid: 323 78% 57%;--gradient-end: 280 96% 66%;--sidebar: 0 0% 9%;--header: 0 0% 11%}.dark{--background: 0 0% 10%;--foreground: 0 0% 96%;--card: 0 0% 13%;--card-foreground: 0 0% 96%;--popover: 0 0% 14%;--popover-foreground: 0 0% 96%;--primary: 323 78% 57%;--primary-foreground: 0 0% 100%;--secondary: 0 0% 18%;--secondary-foreground: 0 0% 94%;--muted: 0 0% 20%;--muted-foreground: 25 8% 64%;--accent: 320 34% 14%;--accent-foreground: 323 78% 62%;--destructive: 0 84% 60%;--destructive-foreground: 0 0% 98%;--border: 0 0% 100% / .08;--input: 0 0% 18%;--ring: 323 78% 57%;--radius: 1rem;--gradient-start: 0 69% 52%;--gradient-mid: 323 78% 57%;--gradient-end: 280 96% 66%;--sidebar: 0 0% 9%;--header: 0 0% 11%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:Inter,system-ui,-apple-system,sans-serif;letter-spacing:-.01em;background-image:radial-gradient(circle at top,rgba(228,58,156,.1),transparent 24%),radial-gradient(circle at bottom,rgba(255,255,255,.05),transparent 26%),linear-gradient(180deg,hsl(var(--background)),hsl(var(--background)));background-attachment:fixed}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(h1,h2,h3,h4,h5,h6):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-inline-start:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;border-radius:.3125rem;padding-top:.1428571em;padding-inline-end:.3571429em;padding-bottom:.1428571em;padding-inline-start:.3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-inline-start:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;margin-bottom:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5714286em;margin-bottom:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em;margin-bottom:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-inline-start:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8571429em;margin-bottom:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.6666667em;padding-inline-end:1em;padding-bottom:.6666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.7142857em;margin-bottom:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-invert{--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.prose-invert :where(h1,h2,h3,h4,h5,h6):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.font-display{font-family:Bebas Neue,Inter,sans-serif}.btn-gradient{position:relative;overflow:hidden;border-radius:.75rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;background-image:linear-gradient(135deg,hsl(var(--gradient-start)),hsl(var(--gradient-mid)),hsl(var(--gradient-end)));background-size:200% auto;background-position:center;animation:gradientShift 6s linear infinite;animation-play-state:paused;box-shadow:0 12px 30px -14px hsl(var(--gradient-mid) / .65)}.btn-gradient:hover{animation-play-state:running;transform:translateY(-1px);box-shadow:0 16px 34px -16px hsl(var(--gradient-mid) / .85)}.btn-gradient:active{transform:translateY(0)}.btn-gradient:disabled{opacity:.5;transform:none;box-shadow:none;cursor:not-allowed}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-24{bottom:6rem}.bottom-4{bottom:1rem}.bottom-5{bottom:1.25rem}.bottom-full{bottom:100%}.left-1\/2{left:50%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-4{left:1rem}.right-1{right:.25rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.-mt-0\.5{margin-top:-.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-96{height:24rem}.h-\[460px\]{height:460px}.h-full{height:100%}.h-screen{height:100vh}.max-h-44{max-height:11rem}.max-h-\[120px\]{max-height:120px}.min-h-\[36px\]{min-height:36px}.min-h-\[400px\]{min-height:400px}.min-h-\[40px\]{min-height:40px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[340px\]{width:340px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[4px\]{min-width:4px}.max-w-\[120px\]{max-width:120px}.max-w-\[170px\]{max-width:170px}.max-w-\[75\%\]{max-width:75%}.max-w-\[82\%\]{max-width:82%}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-\[0\.98\]{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:.75rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-\[\#2a2a2a\]{--tw-border-opacity: 1;border-color:rgb(42 42 42 / var(--tw-border-opacity, 1))}.border-\[\#2b2b2b\]{--tw-border-opacity: 1;border-color:rgb(43 43 43 / var(--tw-border-opacity, 1))}.border-\[\#2d2d2d\]{--tw-border-opacity: 1;border-color:rgb(45 45 45 / var(--tw-border-opacity, 1))}.border-\[\#3a3a3a\]{--tw-border-opacity: 1;border-color:rgb(58 58 58 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-green-500\/30{border-color:#22c55e4d}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-white\/10{border-color:#ffffff1a}.border-yellow-500\/20{border-color:#eab30833}.border-l-blue-500{--tw-border-opacity: 1;border-left-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-l-green-500{--tw-border-opacity: 1;border-left-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-l-primary{border-left-color:hsl(var(--primary))}.border-l-red-500{--tw-border-opacity: 1;border-left-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-l-yellow-500{--tw-border-opacity: 1;border-left-color:rgb(234 179 8 / var(--tw-border-opacity, 1))}.bg-\[\#1c1c1c\]{--tw-bg-opacity: 1;background-color:rgb(28 28 28 / var(--tw-bg-opacity, 1))}.bg-\[\#1f1f1f\]{--tw-bg-opacity: 1;background-color:rgb(31 31 31 / var(--tw-bg-opacity, 1))}.bg-\[\#252525\]{--tw-bg-opacity: 1;background-color:rgb(37 37 37 / var(--tw-bg-opacity, 1))}.bg-\[\#252525\]\/90{background-color:#252525e6}.bg-\[\#252525\]\/95{background-color:#252525f2}.bg-\[\#282828\]{--tw-bg-opacity: 1;background-color:rgb(40 40 40 / var(--tw-bg-opacity, 1))}.bg-\[\#2a2a2a\]{--tw-bg-opacity: 1;background-color:rgb(42 42 42 / var(--tw-bg-opacity, 1))}.bg-\[\#2c2c2c\]{--tw-bg-opacity: 1;background-color:rgb(44 44 44 / var(--tw-bg-opacity, 1))}.bg-\[\#E43A9C\]{--tw-bg-opacity: 1;background-color:rgb(228 58 156 / var(--tw-bg-opacity, 1))}.bg-accent{background-color:hsl(var(--accent))}.bg-accent\/40{background-color:hsl(var(--accent) / .4)}.bg-background{background-color:hsl(var(--background))}.bg-background\/70{background-color:hsl(var(--background) / .7)}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/20{background-color:#3b82f633}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-card{background-color:hsl(var(--card))}.bg-current{background-color:currentColor}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/20{background-color:#22c55e33}.bg-header{background-color:hsl(var(--header))}.bg-indigo-500\/20{background-color:#6366f133}.bg-input{background-color:hsl(var(--input))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/10{background-color:hsl(var(--muted) / .1)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-orange-500\/10{background-color:#f973161a}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/60{background-color:hsl(var(--primary) / .6)}.bg-purple-500\/10{background-color:#a855f71a}.bg-purple-500\/20{background-color:#a855f733}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/20{background-color:#ef444433}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar))}.bg-teal-500\/20{background-color:#14b8a633}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/\[0\.07\]{background-color:#ffffff12}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/20{background-color:#eab30833}.bg-gradient-brand{background-image:linear-gradient(135deg,hsl(var(--gradient-start)),hsl(var(--gradient-mid)),hsl(var(--gradient-end)))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[1\.1rem\]{font-size:1.1rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-wide{letter-spacing:.025em}.text-\[\#ef4444\]{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-destructive{color:hsl(var(--destructive))}.text-foreground{color:hsl(var(--foreground))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/90{color:hsl(var(--primary) / .9)}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-zinc-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.text-zinc-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.shadow-\[0_0_0_1px_rgba\(228\,58\,156\,0\.35\)\]{--tw-shadow: 0 0 0 1px rgba(228,58,156,.35);--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-\[\#E43A9C\]{--tw-ring-opacity: 1;--tw-ring-color: rgb(228 58 156 / var(--tw-ring-opacity, 1))}.ring-black\/10{--tw-ring-color: rgb(0 0 0 / .1)}.ring-offset-2{--tw-ring-offset-width: 2px}.ring-offset-\[\#1a1a1a\]{--tw-ring-offset-color: #1a1a1a}.ring-offset-\[\#1c1c1c\]{--tw-ring-offset-color: #1c1c1c}.ring-offset-\[\#252525\]{--tw-ring-offset-color: #252525}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes gradientShift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.dark\:prose-invert:is(.dark *){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.dark\:prose-invert:is(.dark *) :where(h1,h2,h3,h4,h5,h6):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-zinc-700::-moz-placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.placeholder\:text-zinc-700::placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.hover\:border-foreground:hover{border-color:hsl(var(--foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-accent\/70:hover{background-color:hsl(var(--accent) / .7)}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:bottom-6{bottom:1.5rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:768px){.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|