organify-ui 0.3.4 → 0.3.5

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.
@@ -0,0 +1,201 @@
1
+ import { a as AiChatMessage } from '../ai-chat-sidebar-DnEOUzSL.js';
2
+ import 'react/jsx-runtime';
3
+
4
+ interface AiAction {
5
+ type: string;
6
+ label: string;
7
+ description?: string;
8
+ applied?: boolean;
9
+ }
10
+ interface AiChatResponse {
11
+ message: string;
12
+ provider: string;
13
+ tokensUsed: number;
14
+ actions: AiAction[];
15
+ }
16
+ interface AiCommandResponse {
17
+ message: string;
18
+ provider: string;
19
+ tokensUsed: number;
20
+ actions: AiAction[];
21
+ }
22
+ interface AiSuggestResponse {
23
+ suggestion: string;
24
+ }
25
+ interface AiResetResponse {
26
+ message: string;
27
+ }
28
+ interface AiUsageResponse {
29
+ used: number;
30
+ limit: number;
31
+ remaining: number;
32
+ }
33
+ interface AiAdminLogsResponse {
34
+ logs: AiAdminLog[];
35
+ total: number;
36
+ }
37
+ interface AiAdminLog {
38
+ userId: string;
39
+ action: string;
40
+ tokensUsed: number;
41
+ timestamp: string;
42
+ workspaceId?: string;
43
+ projectId?: string;
44
+ }
45
+ interface AiAdminStatsResponse {
46
+ totalRequests: number;
47
+ totalTokens: number;
48
+ uniqueUsers: number;
49
+ [key: string]: unknown;
50
+ }
51
+ interface AiAdminUsersResponse {
52
+ users: AiAdminUserStat[];
53
+ }
54
+ interface AiAdminUserStat {
55
+ userId: string;
56
+ requests: number;
57
+ tokens: number;
58
+ }
59
+ interface AiClientConfig {
60
+ /**
61
+ * Base URL of the API gateway (e.g. "https://api.organify.app" or
62
+ * "http://localhost:4000"). Must NOT have a trailing slash.
63
+ */
64
+ baseUrl: string;
65
+ /**
66
+ * Optional – if provided, sends as `Authorization: Bearer <token>`.
67
+ * The gateway will forward it and inject user-identity headers before
68
+ * reaching the AI service.
69
+ */
70
+ getToken?: () => string | null | undefined;
71
+ }
72
+ declare function createAiClient(config: AiClientConfig): {
73
+ /**
74
+ * Multi-turn conversational chat.
75
+ * The gateway injects `x-user-id` / `x-user-plan` from the JWT.
76
+ */
77
+ chat(params: {
78
+ message: string;
79
+ workspaceId: string;
80
+ projectId?: string;
81
+ }): Promise<AiChatResponse>;
82
+ /**
83
+ * Single-shot command (⌘K palette).
84
+ */
85
+ command(params: {
86
+ prompt: string;
87
+ workspaceId: string;
88
+ projectId?: string;
89
+ }): Promise<AiCommandResponse>;
90
+ /**
91
+ * Lightweight inline suggestion (no rate-limit increment).
92
+ */
93
+ suggest(params: {
94
+ prompt: string;
95
+ }): Promise<AiSuggestResponse>;
96
+ /**
97
+ * Reset conversation context for a workspace.
98
+ */
99
+ reset(params: {
100
+ workspaceId: string;
101
+ }): Promise<AiResetResponse>;
102
+ /**
103
+ * Get per-user usage stats (requests used today, daily limit, remaining).
104
+ */
105
+ getUsage(): Promise<AiUsageResponse>;
106
+ /** [Admin] Get request logs. Requires `x-user-role: admin` in JWT. */
107
+ adminLogs(query?: Record<string, string>): Promise<AiAdminLogsResponse>;
108
+ /** [Admin] Get aggregate stats. Requires `x-user-role: admin` in JWT. */
109
+ adminStats(query?: Record<string, string>): Promise<AiAdminStatsResponse>;
110
+ /** [Admin] Get per-user usage stats. Requires `x-user-role: admin` in JWT. */
111
+ adminUsers(query?: Record<string, string>): Promise<AiAdminUsersResponse>;
112
+ };
113
+ type AiClient = ReturnType<typeof createAiClient>;
114
+
115
+ interface UseAiChatOptions {
116
+ client: AiClient | AiClientConfig;
117
+ workspaceId: string;
118
+ projectId?: string;
119
+ }
120
+ interface UseAiChatResult {
121
+ messages: AiChatMessage[];
122
+ loading: boolean;
123
+ error: string | null;
124
+ send: (message: string) => Promise<void>;
125
+ reset: () => Promise<void>;
126
+ clearMessages: () => void;
127
+ }
128
+ /**
129
+ * Manages conversation state for `<AiChatSidebar>`.
130
+ *
131
+ * @example
132
+ * const chat = useAiChat({ client: ai, workspaceId: 'ws_1' });
133
+ * <AiChatSidebar messages={chat.messages} onSend={chat.send} loading={chat.loading} ... />
134
+ */
135
+ declare function useAiChat({ client: clientOrConfig, workspaceId, projectId, }: UseAiChatOptions): UseAiChatResult;
136
+ interface UseAiCommandOptions {
137
+ client: AiClient | AiClientConfig;
138
+ workspaceId: string;
139
+ projectId?: string;
140
+ }
141
+ interface UseAiCommandResult {
142
+ loading: boolean;
143
+ response: string | null;
144
+ actions: AiAction[];
145
+ error: string | null;
146
+ runCommand: (prompt: string) => Promise<void>;
147
+ clear: () => void;
148
+ }
149
+ /**
150
+ * Handles a single ⌘K command prompt for `<CommandBar>`.
151
+ *
152
+ * @example
153
+ * const cmd = useAiCommand({ client: ai, workspaceId: 'ws_1' });
154
+ * <CommandBar onAiPrompt={cmd.runCommand} aiLoading={cmd.loading} aiResponse={cmd.response ?? undefined} ... />
155
+ */
156
+ declare function useAiCommand({ client: clientOrConfig, workspaceId, projectId, }: UseAiCommandOptions): UseAiCommandResult;
157
+ interface UseAiSuggestOptions {
158
+ client: AiClient | AiClientConfig;
159
+ /** Debounce delay in ms before firing the API call (default: 400) */
160
+ debounceMs?: number;
161
+ }
162
+ interface UseAiSuggestResult {
163
+ loading: boolean;
164
+ suggestion: string | null;
165
+ error: string | null;
166
+ getSuggestion: (prompt: string) => void;
167
+ accept: () => string | null;
168
+ dismiss: () => void;
169
+ }
170
+ /**
171
+ * Provides debounced inline AI suggestions for `<InlineAiButton>`.
172
+ *
173
+ * @example
174
+ * const inline = useAiSuggest({ client: ai });
175
+ * <InlineAiButton
176
+ * onTrigger={(text) => inline.getSuggestion(text ?? '')}
177
+ * loading={inline.loading}
178
+ * suggestion={inline.suggestion ?? undefined}
179
+ * onAccept={inline.accept}
180
+ * onDismiss={inline.dismiss}
181
+ * />
182
+ */
183
+ declare function useAiSuggest({ client: clientOrConfig, debounceMs, }: UseAiSuggestOptions): UseAiSuggestResult;
184
+ interface UseAiUsageResult {
185
+ usage: AiUsageResponse | null;
186
+ loading: boolean;
187
+ error: string | null;
188
+ refresh: () => Promise<void>;
189
+ }
190
+ /**
191
+ * Fetches and caches the current user's AI usage stats.
192
+ *
193
+ * @example
194
+ * const { usage } = useAiUsage({ client: ai });
195
+ * <p>{usage?.remaining} requests left today</p>
196
+ */
197
+ declare function useAiUsage({ client: clientOrConfig }: {
198
+ client: AiClient | AiClientConfig;
199
+ }): UseAiUsageResult;
200
+
201
+ export { type AiAction, type AiAdminLog, type AiAdminLogsResponse, type AiAdminStatsResponse, type AiAdminUserStat, type AiAdminUsersResponse, type AiChatResponse, type AiClient, type AiClientConfig, type AiCommandResponse, type AiResetResponse, type AiSuggestResponse, type AiUsageResponse, type UseAiChatOptions, type UseAiChatResult, type UseAiCommandOptions, type UseAiCommandResult, type UseAiSuggestOptions, type UseAiSuggestResult, type UseAiUsageResult, createAiClient, useAiChat, useAiCommand, useAiSuggest, useAiUsage };
@@ -0,0 +1,3 @@
1
+ export { createAiClient, useAiChat, useAiCommand, useAiSuggest, useAiUsage } from '../chunk-P2ORBJBL.js';
2
+ //# sourceMappingURL=index.js.map
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface AiChatMessage {
4
+ id: string;
5
+ role: 'user' | 'assistant' | 'system';
6
+ content: string;
7
+ timestamp: Date;
8
+ actions?: AiAction[];
9
+ loading?: boolean;
10
+ }
11
+ interface AiAction {
12
+ type: string;
13
+ label: string;
14
+ description?: string;
15
+ applied?: boolean;
16
+ }
17
+ interface AiChatSidebarProps {
18
+ open: boolean;
19
+ onOpenChange: (open: boolean) => void;
20
+ messages: AiChatMessage[];
21
+ onSend: (message: string) => void;
22
+ loading?: boolean;
23
+ userName?: string;
24
+ contextLabel?: string;
25
+ placeholder?: string;
26
+ }
27
+ declare function AiChatSidebar({ open, onOpenChange, messages, onSend, loading, userName, contextLabel, placeholder, }: AiChatSidebarProps): react_jsx_runtime.JSX.Element;
28
+
29
+ export { type AiAction as A, type AiChatMessage as a, AiChatSidebar as b, type AiChatSidebarProps as c };
@@ -222,7 +222,7 @@ function Button({
222
222
  );
223
223
  }
224
224
  var inputVariants = cva(
225
- "flex w-full bg-white/[0.03] backdrop-blur-md border border-white/10 rounded-xl px-4 py-3 text-sm font-light text-org-text transition-all duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-org-text-muted focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
225
+ "flex w-full bg-theme-subtle backdrop-blur-md border border-theme-subtle rounded-xl px-4 py-3 text-sm font-light text-theme transition-all duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-theme-muted focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
226
226
  {
227
227
  variants: {
228
228
  variant: {
@@ -1667,7 +1667,7 @@ function DialogOverlay({
1667
1667
  {
1668
1668
  "data-slot": "dialog-overlay",
1669
1669
  className: cn(
1670
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
1670
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-theme-subtle-20",
1671
1671
  className
1672
1672
  ),
1673
1673
  ...props
@@ -1686,9 +1686,13 @@ function DialogContent({
1686
1686
  DialogPrimitive.Content,
1687
1687
  {
1688
1688
  "data-slot": "dialog-content",
1689
+ style: {
1690
+ background: "var(--org-bg-elevated, #1A1530)",
1691
+ color: "var(--org-text, #F0ECF9)",
1692
+ borderColor: "var(--org-glass-border, rgba(167,139,250,0.15))"
1693
+ },
1689
1694
  className: cn(
1690
1695
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-2xl border p-6 shadow-2xl duration-[400ms] sm:max-w-lg",
1691
- "[background:var(--org-bg-elevated)] [color:var(--org-text)] [border-color:var(--org-glass-border)]",
1692
1696
  className
1693
1697
  ),
1694
1698
  ...props,
@@ -1773,7 +1777,7 @@ function DrawerOverlay({
1773
1777
  Drawer$1.Overlay,
1774
1778
  {
1775
1779
  "data-slot": "drawer-overlay",
1776
- className: cn("fixed inset-0 z-50 bg-black/80", className),
1780
+ className: cn("fixed inset-0 z-50 bg-theme-subtle-20", className),
1777
1781
  ...props
1778
1782
  }
1779
1783
  );
@@ -1802,9 +1806,13 @@ function DrawerContent({
1802
1806
  stiffness: 400,
1803
1807
  damping: 40
1804
1808
  },
1809
+ style: {
1810
+ background: "var(--org-bg-elevated, #1A1530)",
1811
+ color: "var(--org-text, #F0ECF9)",
1812
+ borderColor: "var(--org-glass-border, rgba(167,139,250,0.15))"
1813
+ },
1805
1814
  className: cn(
1806
1815
  "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border-2",
1807
- "[background:var(--org-bg-elevated)] [color:var(--org-text)] [border-color:var(--org-glass-border)]",
1808
1816
  className
1809
1817
  ),
1810
1818
  children: [
@@ -2296,8 +2304,13 @@ var SelectTrigger = React6.forwardRef(({ className, children, label, ...props },
2296
2304
  SelectPrimitive.Trigger,
2297
2305
  {
2298
2306
  ref,
2307
+ style: {
2308
+ background: "var(--org-subtle-5, rgba(124,58,237,0.04))",
2309
+ borderColor: "var(--org-glass-border, rgba(167,139,250,0.15))",
2310
+ color: "var(--org-text-secondary, #C4BDD9)"
2311
+ },
2299
2312
  className: cn(
2300
- "flex w-full items-center justify-between bg-white/[0.03] backdrop-blur-md border border-white/10 px-4 py-3 text-sm font-light text-theme-secondary rounded-xl transition-all duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] focus:outline-none focus:shadow-[0_0_0_3px_rgba(99,102,241,0.10),0_0_20px_rgba(99,102,241,0.08)] focus:border-primary-light/50 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2313
+ "flex w-full items-center justify-between backdrop-blur-md border px-4 py-3 text-sm font-light rounded-xl transition-all duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] focus:outline-none focus:shadow-[0_0_0_3px_rgba(99,102,241,0.10),0_0_20px_rgba(99,102,241,0.08)] focus:border-primary-light/50 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
2301
2314
  className
2302
2315
  ),
2303
2316
  ...props,
@@ -2333,8 +2346,13 @@ var SelectContent = React6.forwardRef(({ className, children, position = "popper
2333
2346
  SelectPrimitive.Content,
2334
2347
  {
2335
2348
  ref,
2349
+ style: {
2350
+ background: "var(--org-glass-bg-heavy, rgba(17,14,34,0.92))",
2351
+ borderColor: "var(--org-glass-border, rgba(167,139,250,0.15))",
2352
+ color: "var(--org-text, #F0ECF9)"
2353
+ },
2336
2354
  className: cn(
2337
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border border-white/20 bg-white/[0.03] backdrop-blur-[40px] text-theme shadow-[0_24px_80px_-15px_rgba(0,0,0,0.5)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2355
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-xl border backdrop-blur-[40px] shadow-[0_24px_80px_-15px_rgba(0,0,0,0.5)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
2338
2356
  position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
2339
2357
  className
2340
2358
  ),
@@ -2362,7 +2380,7 @@ var SelectItem = React6.forwardRef(({ className, children, ...props }, ref) => /
2362
2380
  {
2363
2381
  ref,
2364
2382
  className: cn(
2365
- "relative flex w-full cursor-default select-none items-center rounded-lg py-2 pl-8 pr-2 text-sm font-light text-theme-secondary outline-none transition-colors duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] focus:bg-white/[0.05] focus:text-theme data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2383
+ "relative flex w-full cursor-default select-none items-center rounded-lg py-2 pl-8 pr-2 text-sm font-light text-theme-secondary outline-none transition-colors duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] focus:bg-theme-subtle-10 focus:text-theme data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
2366
2384
  className
2367
2385
  ),
2368
2386
  ...props,
@@ -4160,7 +4178,7 @@ function AiChatSidebar({
4160
4178
  open && /* @__PURE__ */ jsx(
4161
4179
  "div",
4162
4180
  {
4163
- className: "fixed inset-0 z-50 bg-black/40 backdrop-blur-sm transition-opacity",
4181
+ className: "fixed inset-0 z-50 bg-theme-subtle-20 backdrop-blur-sm transition-opacity",
4164
4182
  onClick: () => onOpenChange(false)
4165
4183
  }
4166
4184
  ),
@@ -4168,36 +4186,36 @@ function AiChatSidebar({
4168
4186
  "div",
4169
4187
  {
4170
4188
  className: cn(
4171
- "fixed right-0 top-0 z-50 flex h-full w-[420px] max-w-[90vw] flex-col border-l border-white/10 bg-[#0a0a0f]/95 backdrop-blur-[60px] shadow-2xl",
4189
+ "fixed right-0 top-0 z-50 flex h-full w-[420px] max-w-[90vw] flex-col border-l border-theme-subtle bg-theme-glass-heavy text-theme backdrop-blur-[60px] shadow-2xl",
4172
4190
  "transition-transform duration-300 ease-in-out",
4173
4191
  open ? "translate-x-0" : "translate-x-full"
4174
4192
  ),
4175
4193
  children: [
4176
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-white/10 px-4 py-3", children: [
4194
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-theme-subtle px-4 py-3", children: [
4177
4195
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4178
4196
  /* @__PURE__ */ jsx("div", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-purple-600 text-sm font-bold text-white", children: "AI" }),
4179
4197
  /* @__PURE__ */ jsxs("div", { children: [
4180
- /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-white", children: "Assistente IA" }),
4181
- contextLabel && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-white/50", children: contextLabel })
4198
+ /* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold text-theme", children: "Assistente IA" }),
4199
+ contextLabel && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-theme-muted", children: contextLabel })
4182
4200
  ] })
4183
4201
  ] }),
4184
4202
  /* @__PURE__ */ jsx(
4185
4203
  "button",
4186
4204
  {
4187
4205
  onClick: () => onOpenChange(false),
4188
- className: "rounded-md p-1.5 text-white/50 hover:bg-white/10 hover:text-white transition-colors",
4206
+ className: "rounded-md p-1.5 text-theme-muted hover:bg-theme-subtle-10 hover:text-theme transition-colors",
4189
4207
  children: /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M18 6L6 18M6 6l12 12" }) })
4190
4208
  }
4191
4209
  )
4192
4210
  ] }),
4193
4211
  /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-4 py-3 space-y-4", children: [
4194
4212
  messages.length === 0 && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center h-full text-center space-y-3", children: [
4195
- /* @__PURE__ */ jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-2xl bg-gradient-to-br from-blue-500/20 to-purple-600/20 border border-white/10", children: /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", className: "text-blue-400", children: /* @__PURE__ */ jsx("path", { d: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z" }) }) }),
4196
- /* @__PURE__ */ jsxs("p", { className: "text-sm text-white/60", children: [
4213
+ /* @__PURE__ */ jsx("div", { className: "flex h-14 w-14 items-center justify-center rounded-2xl bg-gradient-to-br from-blue-500/20 to-purple-600/20 border border-theme-subtle", children: /* @__PURE__ */ jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", className: "text-blue-400", children: /* @__PURE__ */ jsx("path", { d: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z" }) }) }),
4214
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-theme-muted", children: [
4197
4215
  userName ? `Ol\xE1 ${userName}!` : "Ol\xE1!",
4198
4216
  " Como posso ajudar?"
4199
4217
  ] }),
4200
- /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 text-[11px] text-white/40", children: [
4218
+ /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 text-[11px] text-theme-muted", children: [
4201
4219
  /* @__PURE__ */ jsx("p", { children: '"Cria uma task para corrigir o bug do login"' }),
4202
4220
  /* @__PURE__ */ jsx("p", { children: '"Mostra o resumo do sprint atual"' }),
4203
4221
  /* @__PURE__ */ jsx("p", { children: '"Quem tem mais tarefas atribu\xEDdas?"' })
@@ -4216,7 +4234,7 @@ function AiChatSidebar({
4216
4234
  {
4217
4235
  className: cn(
4218
4236
  "max-w-[85%] rounded-xl px-3 py-2 text-sm leading-relaxed",
4219
- msg.role === "user" ? "bg-blue-600/80 text-white" : "bg-white/[0.06] text-white/90 border border-white/5",
4237
+ msg.role === "user" ? "bg-primary text-white" : "bg-theme-subtle-10 text-theme-secondary border border-theme-subtle",
4220
4238
  msg.loading && "animate-pulse"
4221
4239
  ),
4222
4240
  children: msg.content
@@ -4225,31 +4243,31 @@ function AiChatSidebar({
4225
4243
  msg.actions && msg.actions.length > 0 && /* @__PURE__ */ jsx("div", { className: "mt-1 space-y-1 max-w-[85%]", children: msg.actions.map((action, i) => /* @__PURE__ */ jsxs(
4226
4244
  "div",
4227
4245
  {
4228
- className: "flex items-center gap-2 rounded-lg bg-white/[0.04] border border-white/5 px-2.5 py-1.5 text-[11px]",
4246
+ className: "flex items-center gap-2 rounded-lg bg-theme-subtle-10 border border-theme-subtle px-2.5 py-1.5 text-[11px]",
4229
4247
  children: [
4230
4248
  /* @__PURE__ */ jsx("span", { className: cn(
4231
4249
  "h-1.5 w-1.5 rounded-full",
4232
4250
  action.applied ? "bg-green-400" : "bg-yellow-400"
4233
4251
  ) }),
4234
- /* @__PURE__ */ jsx("span", { className: "text-white/70", children: action.label })
4252
+ /* @__PURE__ */ jsx("span", { className: "text-theme-secondary", children: action.label })
4235
4253
  ]
4236
4254
  },
4237
4255
  i
4238
4256
  )) }),
4239
- /* @__PURE__ */ jsx("span", { className: "text-[10px] text-white/30 px-1", children: msg.timestamp.toLocaleTimeString("pt-PT", { hour: "2-digit", minute: "2-digit" }) })
4257
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] text-theme-muted px-1", children: msg.timestamp.toLocaleTimeString("pt-PT", { hour: "2-digit", minute: "2-digit" }) })
4240
4258
  ]
4241
4259
  },
4242
4260
  msg.id
4243
4261
  )),
4244
- loading && /* @__PURE__ */ jsx("div", { className: "flex items-start gap-2", children: /* @__PURE__ */ jsx("div", { className: "bg-white/[0.06] rounded-xl px-3 py-2 border border-white/5", children: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
4245
- /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "0ms" } }),
4246
- /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "150ms" } }),
4247
- /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "300ms" } })
4262
+ loading && /* @__PURE__ */ jsx("div", { className: "flex items-start gap-2", children: /* @__PURE__ */ jsx("div", { className: "bg-theme-subtle-10 rounded-xl px-3 py-2 border border-theme-subtle", children: /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
4263
+ /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary animate-bounce", style: { animationDelay: "0ms" } }),
4264
+ /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary animate-bounce", style: { animationDelay: "150ms" } }),
4265
+ /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary animate-bounce", style: { animationDelay: "300ms" } })
4248
4266
  ] }) }) }),
4249
4267
  /* @__PURE__ */ jsx("div", { ref: messagesEndRef })
4250
4268
  ] }),
4251
- /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "border-t border-white/10 p-3", children: [
4252
- /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-2 rounded-xl bg-white/[0.04] border border-white/10 px-3 py-2 focus-within:border-blue-500/50 transition-colors", children: [
4269
+ /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "border-t border-theme-subtle p-3", children: [
4270
+ /* @__PURE__ */ jsxs("div", { className: "flex items-end gap-2 rounded-xl bg-theme-subtle-10 border border-theme-subtle px-3 py-2 focus-within:border-theme-medium transition-colors", children: [
4253
4271
  /* @__PURE__ */ jsx(
4254
4272
  "textarea",
4255
4273
  {
@@ -4259,7 +4277,7 @@ function AiChatSidebar({
4259
4277
  onKeyDown: handleKeyDown,
4260
4278
  placeholder,
4261
4279
  rows: 1,
4262
- className: "flex-1 resize-none bg-transparent text-sm text-white placeholder-white/30 outline-none max-h-32",
4280
+ className: "flex-1 resize-none bg-transparent text-sm text-theme placeholder:text-theme-muted outline-none max-h-32",
4263
4281
  style: { minHeight: "24px" }
4264
4282
  }
4265
4283
  ),
@@ -4270,13 +4288,13 @@ function AiChatSidebar({
4270
4288
  disabled: !input.trim() || loading,
4271
4289
  className: cn(
4272
4290
  "flex h-7 w-7 items-center justify-center rounded-lg transition-colors",
4273
- input.trim() && !loading ? "bg-blue-600 text-white hover:bg-blue-500" : "bg-white/5 text-white/20"
4291
+ input.trim() && !loading ? "bg-primary text-white hover:bg-primary/90" : "bg-theme-subtle-10 text-theme-muted"
4274
4292
  ),
4275
4293
  children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" }) })
4276
4294
  }
4277
4295
  )
4278
4296
  ] }),
4279
- /* @__PURE__ */ jsx("p", { className: "mt-1.5 text-[10px] text-white/30 text-center", children: "IA pode cometer erros. Verifique informa\xE7\xF5es importantes." })
4297
+ /* @__PURE__ */ jsx("p", { className: "mt-1.5 text-[10px] text-theme-muted text-center", children: "IA pode cometer erros. Verifique informa\xE7\xF5es importantes." })
4280
4298
  ] })
4281
4299
  ]
4282
4300
  }
@@ -4365,12 +4383,12 @@ function CommandBar({
4365
4383
  /* @__PURE__ */ jsx(
4366
4384
  "div",
4367
4385
  {
4368
- className: "absolute inset-0 bg-black/60 backdrop-blur-sm",
4386
+ className: "absolute inset-0 bg-theme-subtle-20 backdrop-blur-sm",
4369
4387
  onClick: () => onOpenChange(false)
4370
4388
  }
4371
4389
  ),
4372
- /* @__PURE__ */ jsxs("div", { className: "relative w-full max-w-[560px] rounded-2xl border border-white/10 bg-[#0c0c14]/95 backdrop-blur-[60px] shadow-2xl overflow-hidden animate-in fade-in slide-in-from-top-4 duration-200", children: [
4373
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-white/10 px-4 py-3", children: [
4390
+ /* @__PURE__ */ jsxs("div", { className: "relative w-full max-w-[560px] rounded-2xl border border-theme-subtle bg-theme-glass-heavy text-theme backdrop-blur-[60px] shadow-2xl overflow-hidden animate-in fade-in slide-in-from-top-4 duration-200", children: [
4391
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 border-b border-theme-subtle px-4 py-3", children: [
4374
4392
  /* @__PURE__ */ jsxs(
4375
4393
  "svg",
4376
4394
  {
@@ -4380,7 +4398,7 @@ function CommandBar({
4380
4398
  fill: "none",
4381
4399
  stroke: "currentColor",
4382
4400
  strokeWidth: "2",
4383
- className: "text-white/40 shrink-0",
4401
+ className: "text-theme-muted shrink-0",
4384
4402
  children: [
4385
4403
  /* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "8" }),
4386
4404
  /* @__PURE__ */ jsx("path", { d: "M21 21l-4.35-4.35" })
@@ -4395,21 +4413,21 @@ function CommandBar({
4395
4413
  onChange: (e) => setQuery(e.target.value),
4396
4414
  onKeyDown: handleKeyDown,
4397
4415
  placeholder,
4398
- className: "flex-1 bg-transparent text-sm text-white placeholder-white/30 outline-none"
4416
+ className: "flex-1 bg-transparent text-sm text-theme placeholder:text-theme-muted outline-none"
4399
4417
  }
4400
4418
  ),
4401
4419
  query && /* @__PURE__ */ jsx(
4402
4420
  "button",
4403
4421
  {
4404
4422
  onClick: () => setQuery(""),
4405
- className: "text-white/30 hover:text-white/60 transition-colors",
4423
+ className: "text-theme-muted hover:text-theme transition-colors",
4406
4424
  children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ jsx("path", { d: "M18 6L6 18M6 6l12 12" }) })
4407
4425
  }
4408
4426
  ),
4409
- /* @__PURE__ */ jsx("kbd", { className: "hidden sm:inline-flex h-5 items-center rounded border border-white/10 bg-white/5 px-1.5 text-[10px] text-white/30", children: "ESC" })
4427
+ /* @__PURE__ */ jsx("kbd", { className: "hidden sm:inline-flex h-5 items-center rounded border border-theme-subtle bg-theme-subtle-10 px-1.5 text-[10px] text-theme-muted", children: "ESC" })
4410
4428
  ] }),
4411
4429
  /* @__PURE__ */ jsx("div", { className: "max-h-[320px] overflow-y-auto py-2", children: flatItems.length > 0 ? Array.from(grouped.entries()).map(([category, groupItems]) => /* @__PURE__ */ jsxs("div", { children: [
4412
- /* @__PURE__ */ jsx("div", { className: "px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-white/30", children: category }),
4430
+ /* @__PURE__ */ jsx("div", { className: "px-4 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-theme-muted", children: category }),
4413
4431
  groupItems.map((item) => {
4414
4432
  const globalIdx = flatItems.indexOf(item);
4415
4433
  return /* @__PURE__ */ jsxs(
@@ -4422,29 +4440,29 @@ function CommandBar({
4422
4440
  onMouseEnter: () => setSelectedIndex(globalIdx),
4423
4441
  className: cn(
4424
4442
  "flex w-full items-center gap-3 px-4 py-2.5 text-left transition-colors",
4425
- globalIdx === selectedIndex ? "bg-white/[0.08] text-white" : "text-white/70 hover:bg-white/[0.04]"
4443
+ globalIdx === selectedIndex ? "bg-theme-subtle-10 text-theme" : "text-theme-secondary hover:bg-theme-subtle-10"
4426
4444
  ),
4427
4445
  children: [
4428
- item.icon && /* @__PURE__ */ jsx("span", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-white/[0.06] text-white/60", children: item.icon }),
4446
+ item.icon && /* @__PURE__ */ jsx("span", { className: "flex h-8 w-8 items-center justify-center rounded-lg bg-theme-subtle-10 text-theme-muted", children: item.icon }),
4429
4447
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
4430
4448
  /* @__PURE__ */ jsx("p", { className: "text-sm font-medium truncate", children: item.label }),
4431
- item.description && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-white/40 truncate", children: item.description })
4449
+ item.description && /* @__PURE__ */ jsx("p", { className: "text-[11px] text-theme-muted truncate", children: item.description })
4432
4450
  ] }),
4433
- item.shortcut && /* @__PURE__ */ jsx("kbd", { className: "text-[10px] text-white/30 border border-white/10 rounded px-1.5 py-0.5 bg-white/5", children: item.shortcut })
4451
+ item.shortcut && /* @__PURE__ */ jsx("kbd", { className: "text-[10px] text-theme-muted border border-theme-subtle rounded px-1.5 py-0.5 bg-theme-subtle-10", children: item.shortcut })
4434
4452
  ]
4435
4453
  },
4436
4454
  item.id
4437
4455
  );
4438
4456
  })
4439
4457
  ] }, category)) : query.trim() ? /* @__PURE__ */ jsx("div", { className: "px-4 py-6 text-center", children: onAiPrompt ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
4440
- /* @__PURE__ */ jsx("p", { className: "text-sm text-white/50", children: "Nenhum comando encontrado" }),
4458
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-theme-muted", children: "Nenhum comando encontrado" }),
4441
4459
  /* @__PURE__ */ jsxs(
4442
4460
  "button",
4443
4461
  {
4444
4462
  onClick: () => {
4445
4463
  onAiPrompt(query.trim());
4446
4464
  },
4447
- className: "inline-flex items-center gap-2 rounded-lg bg-blue-600/20 border border-blue-500/30 px-3 py-1.5 text-sm text-blue-400 hover:bg-blue-600/30 transition-colors",
4465
+ className: "inline-flex items-center gap-2 rounded-lg bg-primary/10 border border-primary/30 px-3 py-1.5 text-sm text-primary hover:bg-primary/20 transition-colors",
4448
4466
  children: [
4449
4467
  /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ jsx("path", { d: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z" }) }),
4450
4468
  'Perguntar \xE0 IA: "',
@@ -4453,16 +4471,16 @@ function CommandBar({
4453
4471
  ]
4454
4472
  }
4455
4473
  )
4456
- ] }) : /* @__PURE__ */ jsx("p", { className: "text-sm text-white/50", children: "Nenhum resultado encontrado" }) }) : /* @__PURE__ */ jsx("div", { className: "px-4 py-4 text-center text-sm text-white/40", children: "Comece a escrever para pesquisar..." }) }),
4457
- (aiLoading || aiResponse) && /* @__PURE__ */ jsx("div", { className: "border-t border-white/10 px-4 py-3", children: aiLoading ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm text-white/50", children: [
4474
+ ] }) : /* @__PURE__ */ jsx("p", { className: "text-sm text-theme-muted", children: "Nenhum resultado encontrado" }) }) : /* @__PURE__ */ jsx("div", { className: "px-4 py-4 text-center text-sm text-theme-muted", children: "Comece a escrever para pesquisar..." }) }),
4475
+ (aiLoading || aiResponse) && /* @__PURE__ */ jsx("div", { className: "border-t border-theme-subtle px-4 py-3", children: aiLoading ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-sm text-theme-muted", children: [
4458
4476
  /* @__PURE__ */ jsxs("div", { className: "flex gap-1", children: [
4459
- /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "0ms" } }),
4460
- /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "150ms" } }),
4461
- /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-blue-400 animate-bounce", style: { animationDelay: "300ms" } })
4477
+ /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-primary animate-bounce", style: { animationDelay: "0ms" } }),
4478
+ /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-primary animate-bounce", style: { animationDelay: "150ms" } }),
4479
+ /* @__PURE__ */ jsx("span", { className: "h-1.5 w-1.5 rounded-full bg-primary animate-bounce", style: { animationDelay: "300ms" } })
4462
4480
  ] }),
4463
4481
  "A pensar..."
4464
- ] }) : aiResponse ? /* @__PURE__ */ jsx("p", { className: "text-sm text-white/80 leading-relaxed", children: aiResponse }) : null }),
4465
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-white/10 px-4 py-2 text-[10px] text-white/25", children: [
4482
+ ] }) : aiResponse ? /* @__PURE__ */ jsx("p", { className: "text-sm text-theme-secondary leading-relaxed", children: aiResponse }) : null }),
4483
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-theme-subtle px-4 py-2 text-[10px] text-theme-muted", children: [
4466
4484
  /* @__PURE__ */ jsx("span", { children: "\u2191\u2193 navegar \xB7 Enter selecionar \xB7 Esc fechar" }),
4467
4485
  /* @__PURE__ */ jsx("span", { children: "\u2318K para abrir" })
4468
4486
  ] })
@@ -4486,7 +4504,7 @@ function InlineAiButton({
4486
4504
  onClick: () => onTrigger(),
4487
4505
  disabled: loading,
4488
4506
  className: cn(
4489
- "inline-flex items-center gap-1 rounded-md border border-white/10 bg-white/[0.04] text-white/50 hover:bg-white/[0.08] hover:text-white/80 hover:border-blue-500/30 transition-all",
4507
+ "inline-flex items-center gap-1 rounded-md border border-theme-subtle bg-theme-subtle-10 text-theme-muted hover:bg-theme-subtle-20 hover:text-theme hover:border-theme-medium transition-all",
4490
4508
  size === "sm" ? "px-1.5 py-0.5 text-[10px]" : "px-2 py-1 text-xs",
4491
4509
  loading && "animate-pulse"
4492
4510
  ),
@@ -4508,18 +4526,18 @@ function InlineAiButton({
4508
4526
  ]
4509
4527
  }
4510
4528
  ),
4511
- suggestion && /* @__PURE__ */ jsxs("div", { className: "absolute top-full left-0 z-50 mt-1.5 w-72 rounded-xl border border-white/10 bg-[#0c0c14]/95 backdrop-blur-[40px] shadow-xl p-3 animate-in fade-in slide-in-from-top-2 duration-200", children: [
4529
+ suggestion && /* @__PURE__ */ jsxs("div", { className: "absolute top-full left-0 z-50 mt-1.5 w-72 rounded-xl border border-theme-subtle bg-theme-glass-heavy text-theme backdrop-blur-[40px] shadow-xl p-3 animate-in fade-in slide-in-from-top-2 duration-200", children: [
4512
4530
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 mb-2", children: [
4513
4531
  /* @__PURE__ */ jsx("div", { className: "h-4 w-4 rounded bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center", children: /* @__PURE__ */ jsx("svg", { width: "8", height: "8", viewBox: "0 0 24 24", fill: "none", stroke: "white", strokeWidth: "3", children: /* @__PURE__ */ jsx("path", { d: "M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25" }) }) }),
4514
- /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium text-white/50 uppercase tracking-wider", children: "Sugest\xE3o IA" })
4532
+ /* @__PURE__ */ jsx("span", { className: "text-[10px] font-medium text-theme-muted uppercase tracking-wider", children: "Sugestao IA" })
4515
4533
  ] }),
4516
- /* @__PURE__ */ jsx("p", { className: "text-sm text-white/80 leading-relaxed mb-3", children: suggestion }),
4534
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-theme-secondary leading-relaxed mb-3", children: suggestion }),
4517
4535
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4518
4536
  /* @__PURE__ */ jsx(
4519
4537
  "button",
4520
4538
  {
4521
4539
  onClick: () => onAccept?.(suggestion),
4522
- className: "flex-1 rounded-lg bg-blue-600/80 px-2 py-1.5 text-xs font-medium text-white hover:bg-blue-500 transition-colors",
4540
+ className: "flex-1 rounded-lg bg-primary px-2 py-1.5 text-xs font-medium text-white hover:bg-primary/90 transition-colors",
4523
4541
  children: "Aceitar"
4524
4542
  }
4525
4543
  ),
@@ -4527,7 +4545,7 @@ function InlineAiButton({
4527
4545
  "button",
4528
4546
  {
4529
4547
  onClick: onDismiss,
4530
- className: "flex-1 rounded-lg bg-white/[0.06] px-2 py-1.5 text-xs text-white/50 hover:bg-white/10 hover:text-white/70 transition-colors",
4548
+ className: "flex-1 rounded-lg bg-theme-subtle-10 px-2 py-1.5 text-xs text-theme-muted hover:bg-theme-subtle-20 hover:text-theme transition-colors",
4531
4549
  children: "Descartar"
4532
4550
  }
4533
4551
  )
@@ -4571,5 +4589,5 @@ function useAiInline({ gatewayUrl, workspaceId, projectId }) {
4571
4589
  }
4572
4590
 
4573
4591
  export { AiChatSidebar, Alert, Button, ChatMessages, ChatSidebar, CommandBar, CreateRoomDialog, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, InlineAiButton, Input, Label, MOCK_PROJECTS, MOCK_USERS, MentionPopover, MessageBubble, MessageInput, OrgLoader, OrgLoaderInline, OrganifyChat, ResponsiveDialog, RoomManagementPanel, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TypingIndicatorMock, alertVariants, buttonVariants, generateAutoReplies, getMockMentionOptions, getRoomPermissions, inputVariants, orgLoaderVariants, typingIndicator, useAiInline, useChat };
4574
- //# sourceMappingURL=chunk-NUA6OPJV.js.map
4575
- //# sourceMappingURL=chunk-NUA6OPJV.js.map
4592
+ //# sourceMappingURL=chunk-6EHXLKGY.js.map
4593
+ //# sourceMappingURL=chunk-6EHXLKGY.js.map