@citron-systems/citron-ui 1.5.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.cts +219 -5
- package/dist/index.d.ts +219 -5
- package/dist/index.js +20 -1
- package/dist/index.mjs +20 -1
- package/package.json +3 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,14 +1,79 @@
|
|
|
1
|
-
import * as react from 'react';
|
|
2
|
-
import { ButtonHTMLAttributes, ReactNode, Component, InputHTMLAttributes, HTMLAttributes } from 'react';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { ReactNode, TextareaHTMLAttributes, ButtonHTMLAttributes, Component, InputHTMLAttributes, ComponentType, HTMLAttributes } from 'react';
|
|
4
|
+
import { FallbackProps } from 'react-error-boundary';
|
|
4
5
|
import { LucideIcon } from 'lucide-react';
|
|
5
6
|
|
|
7
|
+
interface ActionButtonItem {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
variant: 'primary' | 'secondary';
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface ActionButtonsProps {
|
|
16
|
+
buttons: ActionButtonItem[];
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
declare function ActionButtons({ buttons, className }: ActionButtonsProps): react_jsx_runtime.JSX.Element;
|
|
20
|
+
declare function EmailComposeActionButtons({ onSendNow, onSchedule, onSaveDraft, className, }: {
|
|
21
|
+
onSendNow?: () => void;
|
|
22
|
+
onSchedule?: () => void;
|
|
23
|
+
onSaveDraft?: () => void;
|
|
24
|
+
className?: string;
|
|
25
|
+
}): react_jsx_runtime.JSX.Element;
|
|
26
|
+
|
|
27
|
+
interface AIComposeInputProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'className'> {
|
|
28
|
+
label?: string;
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
onWriteWithAI?: () => void | Promise<void>;
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
declare const AIComposeInput: react.ForwardRefExoticComponent<AIComposeInputProps & react.RefAttributes<HTMLTextAreaElement>>;
|
|
34
|
+
|
|
6
35
|
type ButtonVariant = 'primary' | 'secondary';
|
|
7
36
|
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
8
37
|
variant?: ButtonVariant;
|
|
9
38
|
}
|
|
10
39
|
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
11
40
|
|
|
41
|
+
type CampaignStatus = 'sent' | 'active' | 'draft' | 'scheduled';
|
|
42
|
+
interface CampaignTableRow {
|
|
43
|
+
id: string;
|
|
44
|
+
campaignName: string;
|
|
45
|
+
recipients: string;
|
|
46
|
+
status: CampaignStatus;
|
|
47
|
+
statusSubtext?: string;
|
|
48
|
+
opens: string;
|
|
49
|
+
clicks: string;
|
|
50
|
+
date: string;
|
|
51
|
+
}
|
|
52
|
+
interface CampaignTableProps {
|
|
53
|
+
columns: {
|
|
54
|
+
key: string;
|
|
55
|
+
label: string;
|
|
56
|
+
}[];
|
|
57
|
+
rows: CampaignTableRow[];
|
|
58
|
+
className?: string;
|
|
59
|
+
}
|
|
60
|
+
declare function CampaignTable({ columns, rows, className, }: CampaignTableProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
interface EmailTemplateItem {
|
|
63
|
+
id: string;
|
|
64
|
+
category: string;
|
|
65
|
+
title: string;
|
|
66
|
+
uses: string;
|
|
67
|
+
}
|
|
68
|
+
interface EmailTemplatesSectionProps {
|
|
69
|
+
title?: string;
|
|
70
|
+
onGenerateWithAI?: () => void;
|
|
71
|
+
templates: EmailTemplateItem[];
|
|
72
|
+
onTemplateClick?: (template: EmailTemplateItem) => void;
|
|
73
|
+
className?: string;
|
|
74
|
+
}
|
|
75
|
+
declare function EmailTemplatesSection({ title, onGenerateWithAI, templates, onTemplateClick, className, }: EmailTemplatesSectionProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
12
77
|
interface CommandInterfaceProps {
|
|
13
78
|
promptValue?: string;
|
|
14
79
|
onPromptChange?: (value: string) => void;
|
|
@@ -64,7 +129,7 @@ interface ErrorBoundaryState {
|
|
|
64
129
|
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
65
130
|
constructor(props: ErrorBoundaryProps);
|
|
66
131
|
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
67
|
-
render(): string | number | bigint | boolean |
|
|
132
|
+
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
68
133
|
}
|
|
69
134
|
|
|
70
135
|
interface CitronEvent {
|
|
@@ -131,6 +196,22 @@ interface ModuleContainerProps {
|
|
|
131
196
|
}
|
|
132
197
|
declare function ModuleContainer({ children, loading, title, className, onRetry, }: ModuleContainerProps): react_jsx_runtime.JSX.Element;
|
|
133
198
|
|
|
199
|
+
interface PageHeaderProps {
|
|
200
|
+
title: string;
|
|
201
|
+
subtitle?: string;
|
|
202
|
+
icon?: ReactNode;
|
|
203
|
+
action?: ReactNode;
|
|
204
|
+
className?: string;
|
|
205
|
+
}
|
|
206
|
+
declare function PageHeader({ title, subtitle, icon, action, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
207
|
+
interface PageHeaderActionButtonProps {
|
|
208
|
+
label: string;
|
|
209
|
+
onClick?: () => void;
|
|
210
|
+
icon?: ReactNode;
|
|
211
|
+
className?: string;
|
|
212
|
+
}
|
|
213
|
+
declare function PageHeaderActionButton({ label, onClick, icon, className, }: PageHeaderActionButtonProps): react_jsx_runtime.JSX.Element;
|
|
214
|
+
|
|
134
215
|
interface ModuleErrorBoundaryProps {
|
|
135
216
|
children: ReactNode;
|
|
136
217
|
onRetry?: () => void;
|
|
@@ -143,8 +224,31 @@ interface ModuleErrorBoundaryState {
|
|
|
143
224
|
declare class ModuleErrorBoundary extends Component<ModuleErrorBoundaryProps, ModuleErrorBoundaryState> {
|
|
144
225
|
constructor(props: ModuleErrorBoundaryProps);
|
|
145
226
|
static getDerivedStateFromError(error: Error): ModuleErrorBoundaryState;
|
|
146
|
-
render(): string | number | bigint | boolean |
|
|
227
|
+
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
interface PageErrorFallbackProps extends FallbackProps {
|
|
231
|
+
}
|
|
232
|
+
declare function PageErrorFallback({ resetErrorBoundary, }: PageErrorFallbackProps): react_jsx_runtime.JSX.Element;
|
|
233
|
+
|
|
234
|
+
interface RouteWithErrorBoundaryProps {
|
|
235
|
+
children: ReactNode;
|
|
236
|
+
fallback?: ComponentType<FallbackProps>;
|
|
147
237
|
}
|
|
238
|
+
declare function RouteWithErrorBoundary({ children, fallback, }: RouteWithErrorBoundaryProps): react_jsx_runtime.JSX.Element;
|
|
239
|
+
|
|
240
|
+
interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
|
241
|
+
label?: string;
|
|
242
|
+
error?: boolean;
|
|
243
|
+
}
|
|
244
|
+
declare const SearchBar: react.ForwardRefExoticComponent<SearchBarProps & react.RefAttributes<HTMLInputElement>>;
|
|
245
|
+
|
|
246
|
+
interface StatCardGridProps {
|
|
247
|
+
children: ReactNode;
|
|
248
|
+
columns?: 1 | 2 | 3 | 4;
|
|
249
|
+
className?: string;
|
|
250
|
+
}
|
|
251
|
+
declare function StatCardGrid({ children, columns, className, }: StatCardGridProps): react_jsx_runtime.JSX.Element;
|
|
148
252
|
|
|
149
253
|
interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
150
254
|
}
|
|
@@ -166,6 +270,27 @@ interface OSNavigationRailProps {
|
|
|
166
270
|
}
|
|
167
271
|
declare function OSNavigationRail({ items, className }: OSNavigationRailProps): react_jsx_runtime.JSX.Element;
|
|
168
272
|
|
|
273
|
+
type StatCardChangeVariant = 'success' | 'error' | 'neutral';
|
|
274
|
+
interface StatCardItem {
|
|
275
|
+
label: string;
|
|
276
|
+
value: string;
|
|
277
|
+
change?: string;
|
|
278
|
+
changeVariant?: StatCardChangeVariant;
|
|
279
|
+
}
|
|
280
|
+
interface StatCardsProps {
|
|
281
|
+
items: StatCardItem[];
|
|
282
|
+
className?: string;
|
|
283
|
+
}
|
|
284
|
+
declare function StatCards({ items, className }: StatCardsProps): react_jsx_runtime.JSX.Element;
|
|
285
|
+
interface StatCardWithChartItem extends StatCardItem {
|
|
286
|
+
chartData?: number[];
|
|
287
|
+
}
|
|
288
|
+
interface StatCardsWithChartProps {
|
|
289
|
+
items: StatCardWithChartItem[];
|
|
290
|
+
className?: string;
|
|
291
|
+
}
|
|
292
|
+
declare function StatCardsWithChart({ items, className, }: StatCardsWithChartProps): react_jsx_runtime.JSX.Element;
|
|
293
|
+
|
|
169
294
|
type StatusBadgeVariant = 'success' | 'warning' | 'error' | 'info';
|
|
170
295
|
interface StatusBadgeProps {
|
|
171
296
|
label: string;
|
|
@@ -174,6 +299,68 @@ interface StatusBadgeProps {
|
|
|
174
299
|
}
|
|
175
300
|
declare function StatusBadge({ label, variant, className, }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
176
301
|
|
|
302
|
+
interface TabItem {
|
|
303
|
+
id: string;
|
|
304
|
+
label: string;
|
|
305
|
+
}
|
|
306
|
+
interface TabSystemProps {
|
|
307
|
+
tabs: TabItem[];
|
|
308
|
+
activeTabId: string;
|
|
309
|
+
onTabChange: (tabId: string) => void;
|
|
310
|
+
className?: string;
|
|
311
|
+
}
|
|
312
|
+
declare function TabSystem({ tabs, activeTabId, onTabChange, className, }: TabSystemProps): react_jsx_runtime.JSX.Element;
|
|
313
|
+
|
|
314
|
+
type TaskStatus = 'todo' | 'in_progress' | 'done';
|
|
315
|
+
type TaskPriority = 'urgent' | 'high' | 'medium' | 'low';
|
|
316
|
+
interface TaskItemData {
|
|
317
|
+
id: string;
|
|
318
|
+
title: string;
|
|
319
|
+
company: string;
|
|
320
|
+
priority: TaskPriority;
|
|
321
|
+
date: string;
|
|
322
|
+
assignee: string;
|
|
323
|
+
completed?: boolean;
|
|
324
|
+
}
|
|
325
|
+
interface TaskWithStatus extends TaskItemData {
|
|
326
|
+
status: TaskStatus;
|
|
327
|
+
}
|
|
328
|
+
interface TaskSection {
|
|
329
|
+
id: TaskStatus;
|
|
330
|
+
label: string;
|
|
331
|
+
count: number;
|
|
332
|
+
tasks: TaskItemData[];
|
|
333
|
+
}
|
|
334
|
+
interface TaskCreatePayload {
|
|
335
|
+
title: string;
|
|
336
|
+
company?: string;
|
|
337
|
+
priority?: TaskPriority;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
interface TaskItemProps extends TaskItemData {
|
|
341
|
+
onToggle?: (id: string) => void;
|
|
342
|
+
onClick?: (id: string) => void;
|
|
343
|
+
className?: string;
|
|
344
|
+
}
|
|
345
|
+
declare function TaskItem({ id, title, company, priority, date, assignee, completed, onToggle, onClick, className, }: TaskItemProps): react_jsx_runtime.JSX.Element;
|
|
346
|
+
|
|
347
|
+
interface TaskListProps {
|
|
348
|
+
sections: TaskSection[];
|
|
349
|
+
onTaskToggle?: (taskId: string) => void;
|
|
350
|
+
onTaskClick?: (taskId: string) => void;
|
|
351
|
+
className?: string;
|
|
352
|
+
}
|
|
353
|
+
declare function TaskList({ sections, onTaskToggle, onTaskClick, className, }: TaskListProps): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
interface TemplateCardProps {
|
|
356
|
+
category: string;
|
|
357
|
+
title: string;
|
|
358
|
+
uses: string;
|
|
359
|
+
onClick?: () => void;
|
|
360
|
+
className?: string;
|
|
361
|
+
}
|
|
362
|
+
declare function TemplateCard({ category, title, uses, onClick, className, }: TemplateCardProps): react_jsx_runtime.JSX.Element;
|
|
363
|
+
|
|
177
364
|
interface GraphNode {
|
|
178
365
|
id: string;
|
|
179
366
|
type: EntityType;
|
|
@@ -276,4 +463,31 @@ interface MainShellProps {
|
|
|
276
463
|
}
|
|
277
464
|
declare function MainShell({ navigation, eventStream, commandBar, children, className, eventStreamWidth, }: MainShellProps): react_jsx_runtime.JSX.Element;
|
|
278
465
|
|
|
279
|
-
|
|
466
|
+
interface TaskCreateFormProps {
|
|
467
|
+
onConfirm: (payload: TaskCreatePayload) => void;
|
|
468
|
+
onCancel: () => void;
|
|
469
|
+
className?: string;
|
|
470
|
+
}
|
|
471
|
+
declare function TaskCreateForm({ onConfirm, onCancel, className, }: TaskCreateFormProps): react_jsx_runtime.JSX.Element;
|
|
472
|
+
|
|
473
|
+
interface TasksViewProps {
|
|
474
|
+
initialTasks?: TaskWithStatus[];
|
|
475
|
+
onTaskCreate?: (payload: TaskCreatePayload) => void;
|
|
476
|
+
onTaskToggle?: (taskId: string) => void;
|
|
477
|
+
onTaskClick?: (taskId: string) => void;
|
|
478
|
+
className?: string;
|
|
479
|
+
}
|
|
480
|
+
declare function TasksView({ initialTasks, onTaskCreate, onTaskToggle, onTaskClick, className, }: TasksViewProps): react_jsx_runtime.JSX.Element;
|
|
481
|
+
|
|
482
|
+
interface EmailCampaignsViewProps {
|
|
483
|
+
onSendNow?: () => void;
|
|
484
|
+
onSchedule?: () => void;
|
|
485
|
+
onSaveDraft?: () => void;
|
|
486
|
+
onNewCampaign?: () => void;
|
|
487
|
+
onGenerateWithAI?: () => void;
|
|
488
|
+
onTemplateClick?: (template: EmailTemplateItem) => void;
|
|
489
|
+
className?: string;
|
|
490
|
+
}
|
|
491
|
+
declare function EmailCampaignsView({ onSendNow, onSchedule, onSaveDraft, onNewCampaign, onGenerateWithAI, onTemplateClick, className, }: EmailCampaignsViewProps): react_jsx_runtime.JSX.Element;
|
|
492
|
+
|
|
493
|
+
export { AIComposeInput, type AIComposeInputProps, type ActionButtonItem, ActionButtons, type ActionButtonsProps, ActivityStream, type ActivityStreamProps, AppNavigationRail, type AppNavigationRailItem, type AppNavigationRailProps, Button, type ButtonProps, type ButtonVariant, type CampaignStatus, CampaignTable, type CampaignTableProps, type CampaignTableRow, ChatFeed, type ChatFeedProps, type ChatMessage, type CitronEvent, CommandBar, type CommandBarProps, CommandInterface, type CommandInterfaceProps, type Edge, EmailCampaignsView, type EmailCampaignsViewProps, EmailComposeActionButtons, type EmailTemplateItem, EmailTemplatesSection, type EmailTemplatesSectionProps, EntityCard, type EntityCardProps, EntityCommandCard, type EntityCommandCardProps, type EntityCommandCardStat, type EntityType, ErrorBoundary, type ErrorBoundaryProps, EventRow, type EventRowProps, type EventStreamEvent, EventStreamFeed, type EventStreamFeedProps, EventStreamSidebar, type EventStreamSidebarProps, type EventStreamStatus, type GraphNode, Input, type InputProps, IntelligenceLab, type IntelligenceLabInsight, type IntelligenceLabKpiCard, type IntelligenceLabProps, IntelligenceScoreCard, type IntelligenceScoreCardProps, MainShell, type MainShellProps, type MetricComparisonItem, MetricComparisonList, type MetricComparisonListProps, type MetricComparisonVariant, ModuleContainer, type ModuleContainerProps, ModuleErrorBoundary, type ModuleErrorBoundaryProps, ModuleSkeleton, type ModuleSkeletonProps, OSNavigationRail, type OSNavigationRailItem, type OSNavigationRailProps, PageErrorFallback, type PageErrorFallbackProps, PageHeader, PageHeaderActionButton, type PageHeaderActionButtonProps, type PageHeaderProps, RouteWithErrorBoundary, type RouteWithErrorBoundaryProps, SearchBar, type SearchBarProps, Skeleton, type SkeletonProps, type StatCardChangeVariant, StatCardGrid, type StatCardGridProps, type StatCardItem, type StatCardWithChartItem, StatCards, type StatCardsProps, StatCardsWithChart, type StatCardsWithChartProps, StatusBadge, type StatusBadgeProps, type StatusBadgeVariant, type TabItem, TabSystem, type TabSystemProps, TaskCreateForm, type TaskCreateFormProps, type TaskCreatePayload, TaskItem, type TaskItemData, type TaskItemProps, TaskList, type TaskListProps, type TaskPriority, type TaskSection, type TaskStatus, type TaskWithStatus, TasksView, type TasksViewProps, TemplateCard, type TemplateCardProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,79 @@
|
|
|
1
|
-
import * as react from 'react';
|
|
2
|
-
import { ButtonHTMLAttributes, ReactNode, Component, InputHTMLAttributes, HTMLAttributes } from 'react';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { ReactNode, TextareaHTMLAttributes, ButtonHTMLAttributes, Component, InputHTMLAttributes, ComponentType, HTMLAttributes } from 'react';
|
|
4
|
+
import { FallbackProps } from 'react-error-boundary';
|
|
4
5
|
import { LucideIcon } from 'lucide-react';
|
|
5
6
|
|
|
7
|
+
interface ActionButtonItem {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
variant: 'primary' | 'secondary';
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface ActionButtonsProps {
|
|
16
|
+
buttons: ActionButtonItem[];
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
declare function ActionButtons({ buttons, className }: ActionButtonsProps): react_jsx_runtime.JSX.Element;
|
|
20
|
+
declare function EmailComposeActionButtons({ onSendNow, onSchedule, onSaveDraft, className, }: {
|
|
21
|
+
onSendNow?: () => void;
|
|
22
|
+
onSchedule?: () => void;
|
|
23
|
+
onSaveDraft?: () => void;
|
|
24
|
+
className?: string;
|
|
25
|
+
}): react_jsx_runtime.JSX.Element;
|
|
26
|
+
|
|
27
|
+
interface AIComposeInputProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'className'> {
|
|
28
|
+
label?: string;
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
onWriteWithAI?: () => void | Promise<void>;
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
declare const AIComposeInput: react.ForwardRefExoticComponent<AIComposeInputProps & react.RefAttributes<HTMLTextAreaElement>>;
|
|
34
|
+
|
|
6
35
|
type ButtonVariant = 'primary' | 'secondary';
|
|
7
36
|
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
8
37
|
variant?: ButtonVariant;
|
|
9
38
|
}
|
|
10
39
|
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
11
40
|
|
|
41
|
+
type CampaignStatus = 'sent' | 'active' | 'draft' | 'scheduled';
|
|
42
|
+
interface CampaignTableRow {
|
|
43
|
+
id: string;
|
|
44
|
+
campaignName: string;
|
|
45
|
+
recipients: string;
|
|
46
|
+
status: CampaignStatus;
|
|
47
|
+
statusSubtext?: string;
|
|
48
|
+
opens: string;
|
|
49
|
+
clicks: string;
|
|
50
|
+
date: string;
|
|
51
|
+
}
|
|
52
|
+
interface CampaignTableProps {
|
|
53
|
+
columns: {
|
|
54
|
+
key: string;
|
|
55
|
+
label: string;
|
|
56
|
+
}[];
|
|
57
|
+
rows: CampaignTableRow[];
|
|
58
|
+
className?: string;
|
|
59
|
+
}
|
|
60
|
+
declare function CampaignTable({ columns, rows, className, }: CampaignTableProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
|
|
62
|
+
interface EmailTemplateItem {
|
|
63
|
+
id: string;
|
|
64
|
+
category: string;
|
|
65
|
+
title: string;
|
|
66
|
+
uses: string;
|
|
67
|
+
}
|
|
68
|
+
interface EmailTemplatesSectionProps {
|
|
69
|
+
title?: string;
|
|
70
|
+
onGenerateWithAI?: () => void;
|
|
71
|
+
templates: EmailTemplateItem[];
|
|
72
|
+
onTemplateClick?: (template: EmailTemplateItem) => void;
|
|
73
|
+
className?: string;
|
|
74
|
+
}
|
|
75
|
+
declare function EmailTemplatesSection({ title, onGenerateWithAI, templates, onTemplateClick, className, }: EmailTemplatesSectionProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
12
77
|
interface CommandInterfaceProps {
|
|
13
78
|
promptValue?: string;
|
|
14
79
|
onPromptChange?: (value: string) => void;
|
|
@@ -64,7 +129,7 @@ interface ErrorBoundaryState {
|
|
|
64
129
|
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
65
130
|
constructor(props: ErrorBoundaryProps);
|
|
66
131
|
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
67
|
-
render(): string | number | bigint | boolean |
|
|
132
|
+
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
68
133
|
}
|
|
69
134
|
|
|
70
135
|
interface CitronEvent {
|
|
@@ -131,6 +196,22 @@ interface ModuleContainerProps {
|
|
|
131
196
|
}
|
|
132
197
|
declare function ModuleContainer({ children, loading, title, className, onRetry, }: ModuleContainerProps): react_jsx_runtime.JSX.Element;
|
|
133
198
|
|
|
199
|
+
interface PageHeaderProps {
|
|
200
|
+
title: string;
|
|
201
|
+
subtitle?: string;
|
|
202
|
+
icon?: ReactNode;
|
|
203
|
+
action?: ReactNode;
|
|
204
|
+
className?: string;
|
|
205
|
+
}
|
|
206
|
+
declare function PageHeader({ title, subtitle, icon, action, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
207
|
+
interface PageHeaderActionButtonProps {
|
|
208
|
+
label: string;
|
|
209
|
+
onClick?: () => void;
|
|
210
|
+
icon?: ReactNode;
|
|
211
|
+
className?: string;
|
|
212
|
+
}
|
|
213
|
+
declare function PageHeaderActionButton({ label, onClick, icon, className, }: PageHeaderActionButtonProps): react_jsx_runtime.JSX.Element;
|
|
214
|
+
|
|
134
215
|
interface ModuleErrorBoundaryProps {
|
|
135
216
|
children: ReactNode;
|
|
136
217
|
onRetry?: () => void;
|
|
@@ -143,8 +224,31 @@ interface ModuleErrorBoundaryState {
|
|
|
143
224
|
declare class ModuleErrorBoundary extends Component<ModuleErrorBoundaryProps, ModuleErrorBoundaryState> {
|
|
144
225
|
constructor(props: ModuleErrorBoundaryProps);
|
|
145
226
|
static getDerivedStateFromError(error: Error): ModuleErrorBoundaryState;
|
|
146
|
-
render(): string | number | bigint | boolean |
|
|
227
|
+
render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
interface PageErrorFallbackProps extends FallbackProps {
|
|
231
|
+
}
|
|
232
|
+
declare function PageErrorFallback({ resetErrorBoundary, }: PageErrorFallbackProps): react_jsx_runtime.JSX.Element;
|
|
233
|
+
|
|
234
|
+
interface RouteWithErrorBoundaryProps {
|
|
235
|
+
children: ReactNode;
|
|
236
|
+
fallback?: ComponentType<FallbackProps>;
|
|
147
237
|
}
|
|
238
|
+
declare function RouteWithErrorBoundary({ children, fallback, }: RouteWithErrorBoundaryProps): react_jsx_runtime.JSX.Element;
|
|
239
|
+
|
|
240
|
+
interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
|
241
|
+
label?: string;
|
|
242
|
+
error?: boolean;
|
|
243
|
+
}
|
|
244
|
+
declare const SearchBar: react.ForwardRefExoticComponent<SearchBarProps & react.RefAttributes<HTMLInputElement>>;
|
|
245
|
+
|
|
246
|
+
interface StatCardGridProps {
|
|
247
|
+
children: ReactNode;
|
|
248
|
+
columns?: 1 | 2 | 3 | 4;
|
|
249
|
+
className?: string;
|
|
250
|
+
}
|
|
251
|
+
declare function StatCardGrid({ children, columns, className, }: StatCardGridProps): react_jsx_runtime.JSX.Element;
|
|
148
252
|
|
|
149
253
|
interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
150
254
|
}
|
|
@@ -166,6 +270,27 @@ interface OSNavigationRailProps {
|
|
|
166
270
|
}
|
|
167
271
|
declare function OSNavigationRail({ items, className }: OSNavigationRailProps): react_jsx_runtime.JSX.Element;
|
|
168
272
|
|
|
273
|
+
type StatCardChangeVariant = 'success' | 'error' | 'neutral';
|
|
274
|
+
interface StatCardItem {
|
|
275
|
+
label: string;
|
|
276
|
+
value: string;
|
|
277
|
+
change?: string;
|
|
278
|
+
changeVariant?: StatCardChangeVariant;
|
|
279
|
+
}
|
|
280
|
+
interface StatCardsProps {
|
|
281
|
+
items: StatCardItem[];
|
|
282
|
+
className?: string;
|
|
283
|
+
}
|
|
284
|
+
declare function StatCards({ items, className }: StatCardsProps): react_jsx_runtime.JSX.Element;
|
|
285
|
+
interface StatCardWithChartItem extends StatCardItem {
|
|
286
|
+
chartData?: number[];
|
|
287
|
+
}
|
|
288
|
+
interface StatCardsWithChartProps {
|
|
289
|
+
items: StatCardWithChartItem[];
|
|
290
|
+
className?: string;
|
|
291
|
+
}
|
|
292
|
+
declare function StatCardsWithChart({ items, className, }: StatCardsWithChartProps): react_jsx_runtime.JSX.Element;
|
|
293
|
+
|
|
169
294
|
type StatusBadgeVariant = 'success' | 'warning' | 'error' | 'info';
|
|
170
295
|
interface StatusBadgeProps {
|
|
171
296
|
label: string;
|
|
@@ -174,6 +299,68 @@ interface StatusBadgeProps {
|
|
|
174
299
|
}
|
|
175
300
|
declare function StatusBadge({ label, variant, className, }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
176
301
|
|
|
302
|
+
interface TabItem {
|
|
303
|
+
id: string;
|
|
304
|
+
label: string;
|
|
305
|
+
}
|
|
306
|
+
interface TabSystemProps {
|
|
307
|
+
tabs: TabItem[];
|
|
308
|
+
activeTabId: string;
|
|
309
|
+
onTabChange: (tabId: string) => void;
|
|
310
|
+
className?: string;
|
|
311
|
+
}
|
|
312
|
+
declare function TabSystem({ tabs, activeTabId, onTabChange, className, }: TabSystemProps): react_jsx_runtime.JSX.Element;
|
|
313
|
+
|
|
314
|
+
type TaskStatus = 'todo' | 'in_progress' | 'done';
|
|
315
|
+
type TaskPriority = 'urgent' | 'high' | 'medium' | 'low';
|
|
316
|
+
interface TaskItemData {
|
|
317
|
+
id: string;
|
|
318
|
+
title: string;
|
|
319
|
+
company: string;
|
|
320
|
+
priority: TaskPriority;
|
|
321
|
+
date: string;
|
|
322
|
+
assignee: string;
|
|
323
|
+
completed?: boolean;
|
|
324
|
+
}
|
|
325
|
+
interface TaskWithStatus extends TaskItemData {
|
|
326
|
+
status: TaskStatus;
|
|
327
|
+
}
|
|
328
|
+
interface TaskSection {
|
|
329
|
+
id: TaskStatus;
|
|
330
|
+
label: string;
|
|
331
|
+
count: number;
|
|
332
|
+
tasks: TaskItemData[];
|
|
333
|
+
}
|
|
334
|
+
interface TaskCreatePayload {
|
|
335
|
+
title: string;
|
|
336
|
+
company?: string;
|
|
337
|
+
priority?: TaskPriority;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
interface TaskItemProps extends TaskItemData {
|
|
341
|
+
onToggle?: (id: string) => void;
|
|
342
|
+
onClick?: (id: string) => void;
|
|
343
|
+
className?: string;
|
|
344
|
+
}
|
|
345
|
+
declare function TaskItem({ id, title, company, priority, date, assignee, completed, onToggle, onClick, className, }: TaskItemProps): react_jsx_runtime.JSX.Element;
|
|
346
|
+
|
|
347
|
+
interface TaskListProps {
|
|
348
|
+
sections: TaskSection[];
|
|
349
|
+
onTaskToggle?: (taskId: string) => void;
|
|
350
|
+
onTaskClick?: (taskId: string) => void;
|
|
351
|
+
className?: string;
|
|
352
|
+
}
|
|
353
|
+
declare function TaskList({ sections, onTaskToggle, onTaskClick, className, }: TaskListProps): react_jsx_runtime.JSX.Element;
|
|
354
|
+
|
|
355
|
+
interface TemplateCardProps {
|
|
356
|
+
category: string;
|
|
357
|
+
title: string;
|
|
358
|
+
uses: string;
|
|
359
|
+
onClick?: () => void;
|
|
360
|
+
className?: string;
|
|
361
|
+
}
|
|
362
|
+
declare function TemplateCard({ category, title, uses, onClick, className, }: TemplateCardProps): react_jsx_runtime.JSX.Element;
|
|
363
|
+
|
|
177
364
|
interface GraphNode {
|
|
178
365
|
id: string;
|
|
179
366
|
type: EntityType;
|
|
@@ -276,4 +463,31 @@ interface MainShellProps {
|
|
|
276
463
|
}
|
|
277
464
|
declare function MainShell({ navigation, eventStream, commandBar, children, className, eventStreamWidth, }: MainShellProps): react_jsx_runtime.JSX.Element;
|
|
278
465
|
|
|
279
|
-
|
|
466
|
+
interface TaskCreateFormProps {
|
|
467
|
+
onConfirm: (payload: TaskCreatePayload) => void;
|
|
468
|
+
onCancel: () => void;
|
|
469
|
+
className?: string;
|
|
470
|
+
}
|
|
471
|
+
declare function TaskCreateForm({ onConfirm, onCancel, className, }: TaskCreateFormProps): react_jsx_runtime.JSX.Element;
|
|
472
|
+
|
|
473
|
+
interface TasksViewProps {
|
|
474
|
+
initialTasks?: TaskWithStatus[];
|
|
475
|
+
onTaskCreate?: (payload: TaskCreatePayload) => void;
|
|
476
|
+
onTaskToggle?: (taskId: string) => void;
|
|
477
|
+
onTaskClick?: (taskId: string) => void;
|
|
478
|
+
className?: string;
|
|
479
|
+
}
|
|
480
|
+
declare function TasksView({ initialTasks, onTaskCreate, onTaskToggle, onTaskClick, className, }: TasksViewProps): react_jsx_runtime.JSX.Element;
|
|
481
|
+
|
|
482
|
+
interface EmailCampaignsViewProps {
|
|
483
|
+
onSendNow?: () => void;
|
|
484
|
+
onSchedule?: () => void;
|
|
485
|
+
onSaveDraft?: () => void;
|
|
486
|
+
onNewCampaign?: () => void;
|
|
487
|
+
onGenerateWithAI?: () => void;
|
|
488
|
+
onTemplateClick?: (template: EmailTemplateItem) => void;
|
|
489
|
+
className?: string;
|
|
490
|
+
}
|
|
491
|
+
declare function EmailCampaignsView({ onSendNow, onSchedule, onSaveDraft, onNewCampaign, onGenerateWithAI, onTemplateClick, className, }: EmailCampaignsViewProps): react_jsx_runtime.JSX.Element;
|
|
492
|
+
|
|
493
|
+
export { AIComposeInput, type AIComposeInputProps, type ActionButtonItem, ActionButtons, type ActionButtonsProps, ActivityStream, type ActivityStreamProps, AppNavigationRail, type AppNavigationRailItem, type AppNavigationRailProps, Button, type ButtonProps, type ButtonVariant, type CampaignStatus, CampaignTable, type CampaignTableProps, type CampaignTableRow, ChatFeed, type ChatFeedProps, type ChatMessage, type CitronEvent, CommandBar, type CommandBarProps, CommandInterface, type CommandInterfaceProps, type Edge, EmailCampaignsView, type EmailCampaignsViewProps, EmailComposeActionButtons, type EmailTemplateItem, EmailTemplatesSection, type EmailTemplatesSectionProps, EntityCard, type EntityCardProps, EntityCommandCard, type EntityCommandCardProps, type EntityCommandCardStat, type EntityType, ErrorBoundary, type ErrorBoundaryProps, EventRow, type EventRowProps, type EventStreamEvent, EventStreamFeed, type EventStreamFeedProps, EventStreamSidebar, type EventStreamSidebarProps, type EventStreamStatus, type GraphNode, Input, type InputProps, IntelligenceLab, type IntelligenceLabInsight, type IntelligenceLabKpiCard, type IntelligenceLabProps, IntelligenceScoreCard, type IntelligenceScoreCardProps, MainShell, type MainShellProps, type MetricComparisonItem, MetricComparisonList, type MetricComparisonListProps, type MetricComparisonVariant, ModuleContainer, type ModuleContainerProps, ModuleErrorBoundary, type ModuleErrorBoundaryProps, ModuleSkeleton, type ModuleSkeletonProps, OSNavigationRail, type OSNavigationRailItem, type OSNavigationRailProps, PageErrorFallback, type PageErrorFallbackProps, PageHeader, PageHeaderActionButton, type PageHeaderActionButtonProps, type PageHeaderProps, RouteWithErrorBoundary, type RouteWithErrorBoundaryProps, SearchBar, type SearchBarProps, Skeleton, type SkeletonProps, type StatCardChangeVariant, StatCardGrid, type StatCardGridProps, type StatCardItem, type StatCardWithChartItem, StatCards, type StatCardsProps, StatCardsWithChart, type StatCardsWithChartProps, StatusBadge, type StatusBadgeProps, type StatusBadgeVariant, type TabItem, TabSystem, type TabSystemProps, TaskCreateForm, type TaskCreateFormProps, type TaskCreatePayload, TaskItem, type TaskItemData, type TaskItemProps, TaskList, type TaskListProps, type TaskPriority, type TaskSection, type TaskStatus, type TaskWithStatus, TasksView, type TasksViewProps, TemplateCard, type TemplateCardProps };
|
package/dist/index.js
CHANGED
|
@@ -1 +1,20 @@
|
|
|
1
|
-
"use strict";var re=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Ve=Object.prototype.hasOwnProperty;var He=(t,e)=>{for(var r in e)re(t,r,{get:e[r],enumerable:!0})},_e=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of De(e))!Ve.call(t,n)&&n!==r&&re(t,n,{get:()=>e[n],enumerable:!(i=Te(e,n))||i.enumerable});return t};var Oe=t=>_e(re({},"__esModule",{value:!0}),t);var it={};He(it,{ActivityStream:()=>J,AppNavigationRail:()=>de,Button:()=>F,ChatFeed:()=>me,CommandBar:()=>pe,CommandInterface:()=>O,EntityCard:()=>$,EntityCommandCard:()=>oe,ErrorBoundary:()=>U,EventRow:()=>j,EventStreamFeed:()=>ne,EventStreamSidebar:()=>ue,Input:()=>K,IntelligenceLab:()=>ve,IntelligenceScoreCard:()=>Z,MainShell:()=>be,MetricComparisonList:()=>le,ModuleContainer:()=>q,ModuleErrorBoundary:()=>l,ModuleSkeleton:()=>G,OSNavigationRail:()=>ce,Skeleton:()=>B,StatusBadge:()=>W});module.exports=Oe(it);var he=require("react");var ye=require("clsx"),ke=require("tailwind-merge");function o(...t){return(0,ke.twMerge)((0,ye.clsx)(t))}var Ne=require("react/jsx-runtime"),Ge={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},F=(0,he.forwardRef)(({className:t,variant:e="primary",disabled:r,...i},n)=>(0,Ne.jsx)("button",{ref:n,disabled:r,className:o("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-4 py-2 font-semibold transition-[background,border-color] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)]",Ge[e],t),...i}));F.displayName="Button";var Ee=require("react"),D=require("lucide-react");var m=require("react/jsx-runtime");function O({promptValue:t="",onPromptChange:e,onPromptSubmit:r,onFilesAttach:i,isProcessing:n=!1,response:s,placeholder:a="Ask Citron Intelligence...",accept:k,multiple:b=!0,className:I}){let A=(0,Ee.useRef)(null),E=C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),r?.())},Q=()=>{A.current?.click()},ee=C=>{let T=C.target.files;T&&T.length>0&&i&&i(Array.from(T)),C.target.value=""};return(0,m.jsxs)("div",{className:o("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",I),children:[(0,m.jsxs)("div",{className:o("flex items-center gap-[var(--inkblot-spacing-2)]",n&&"pointer-events-none"),children:[(0,m.jsx)("input",{ref:A,type:"file",accept:k,multiple:b,onChange:ee,className:"sr-only","aria-hidden":!0}),(0,m.jsx)("button",{type:"button",onClick:Q,disabled:n,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:(0,m.jsx)(D.Paperclip,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),(0,m.jsxs)("div",{className:o("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),"aria-busy":n,children:[(0,m.jsx)("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:(0,m.jsx)(D.Sparkles,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),(0,m.jsx)("textarea",{value:t,onChange:C=>e?.(C.target.value),onKeyDown:E,placeholder:a,rows:2,disabled:n,className:o("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),(0,m.jsx)("div",{className:o("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)]",n?"pointer-events-none bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-90":""),children:n?(0,m.jsx)(D.Loader2,{size:16,strokeWidth:2,className:"animate-spin text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0}):(0,m.jsx)("button",{type:"button",onClick:r,disabled:n,className:o("flex h-full w-full items-center justify-center rounded-[var(--inkblot-radius-full)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]"),"aria-label":"Enviar",children:(0,m.jsx)(D.Send,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})})]})]}),s?(0,m.jsx)("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:(0,m.jsx)("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}var f=require("react/jsx-runtime"),Fe={Person:"border-l-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-background-secondary)]",Organization:"border-l-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-background-secondary)]",Deal:"border-l-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-background-secondary)]"};function $({name:t,entityType:e,metadata:r,edges:i=[],className:n}){return(0,f.jsxs)("article",{className:o("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] border-l-4 p-4",Fe[e],n),children:[(0,f.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,f.jsx)("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:e}),(0,f.jsx)("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t})]}),r&&Object.keys(r).length>0?(0,f.jsx)("dl",{className:"flex flex-col gap-1",children:Object.entries(r).map(([s,a])=>(0,f.jsxs)("div",{className:"flex gap-2",children:[(0,f.jsxs)("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),(0,f.jsx)("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a})]},s))}):null,i.length>0?(0,f.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,f.jsx)("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),(0,f.jsx)("ul",{className:"flex flex-wrap gap-2",children:i.map((s,a)=>(0,f.jsxs)("li",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-1 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:[s.type,s.target?` \u2192 ${s.target}`:""]},a))})]}):null]})}var Ce=require("react");var Se=require("react/jsx-runtime"),K=(0,Ce.forwardRef)(({className:t,error:e,disabled:r,...i},n)=>(0,Se.jsx)("input",{ref:n,disabled:r,"aria-invalid":e,"aria-disabled":r,className:o("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)] border bg-[var(--inkblot-semantic-color-background-secondary)] px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-[border-color,box-shadow] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--inkblot-semantic-color-border-focus)] focus-visible:ring-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",e?"border-[var(--inkblot-semantic-color-status-error)] focus-visible:ring-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",t),...i}));K.displayName="Input";var we=require("react");var z=require("react/jsx-runtime"),l=class extends we.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?(0,z.jsxs)("div",{role:"alert",className:o("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",this.props.className),children:[(0,z.jsx)("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),(0,z.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),(0,z.jsx)(F,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};var g=require("react/jsx-runtime");function oe({title:t,insights:e,stats:r=[],commandValue:i="",onCommandChange:n,onCommandSubmit:s,className:a}){let k=b=>{b.key==="Enter"&&(b.preventDefault(),s?.())};return(0,g.jsx)(l,{className:a,children:(0,g.jsxs)("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,g.jsx)("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?(0,g.jsx)("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:e}):null,r.length>0?(0,g.jsxs)("div",{children:[(0,g.jsx)("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),(0,g.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((b,I)=>(0,g.jsxs)("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[(0,g.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:b.label}),(0,g.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:b.value})]},I))})]}):null,(0,g.jsx)("div",{className:"mt-2",children:(0,g.jsx)(K,{type:"text",value:i,onChange:b=>n?.(b.target.value),onKeyDown:k,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}var Me=require("react");var ae=require("react/jsx-runtime"),U=class extends Me.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:(0,ae.jsx)("div",{className:o("inline-flex items-center gap-3 rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-4 py-3 text-[var(--inkblot-semantic-color-text-secondary)]",this.props.className),role:"alert",children:(0,ae.jsx)("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};var Pe=require("react/jsx-runtime"),Ke={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function W({label:t,variant:e="info",className:r}){return(0,Pe.jsx)("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Ke[e],r),children:t})}var R=require("react/jsx-runtime");function ze(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function j({event:t,className:e}){let r=ze(t.confidence_score),i=`${Math.round(t.confidence_score*100)}%`;return(0,R.jsxs)("div",{className:o("flex flex-wrap items-center gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",e),children:[(0,R.jsx)("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),(0,R.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),(0,R.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),(0,R.jsx)("span",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-0.5 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:t.event_type}),(0,R.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),(0,R.jsx)(W,{label:i,variant:r})]})}var y=require("react/jsx-runtime"),$e={success:"bg-[var(--inkblot-semantic-color-status-success)]",warning:"bg-[var(--inkblot-semantic-color-status-warning)]",error:"bg-[var(--inkblot-semantic-color-status-error)]",info:"bg-[var(--inkblot-semantic-color-status-info)]"};function Ue(){return(0,y.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:(0,y.jsx)("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function ne({events:t,className:e}){return(0,y.jsx)(l,{className:e,children:(0,y.jsx)("div",{className:o("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(r=>(0,y.jsxs)("div",{className:"flex items-start gap-3",children:[(0,y.jsx)("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??(0,y.jsx)(Ue,{})}),(0,y.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,y.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),(0,y.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?(0,y.jsx)("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",$e[r.status]),"aria-hidden":!0}):null]},r.id))})})}var p=require("react/jsx-runtime"),se=36,ie=2*Math.PI*se;function Z({label:t,value:e,subtext:r,trend:i,className:n}){let s=Math.min(100,Math.max(0,e)),a=ie-s/100*ie;return(0,p.jsx)(l,{className:n,children:(0,p.jsxs)("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,p.jsxs)("div",{className:"relative",children:[(0,p.jsxs)("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[(0,p.jsx)("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),(0,p.jsx)("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ie,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),(0,p.jsx)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:(0,p.jsxs)("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",i==="up"?(0,p.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:(0,p.jsx)("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):i==="down"?(0,p.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:(0,p.jsx)("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),(0,p.jsxs)("div",{className:"text-center",children:[(0,p.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?(0,p.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}var w=require("react/jsx-runtime"),We={default:"text-[var(--inkblot-semantic-color-text-primary)]",success:"text-[var(--inkblot-semantic-color-status-success)]",warning:"text-[var(--inkblot-semantic-color-status-warning)]",error:"text-[var(--inkblot-semantic-color-status-error)]"};function je({className:t}){return(0,w.jsx)("svg",{viewBox:"0 0 16 16",className:o("h-4 w-4",t),"aria-hidden":!0,children:(0,w.jsx)("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function le({items:t,className:e}){return(0,w.jsx)(l,{className:e,children:(0,w.jsx)("ul",{className:o("flex flex-col gap-4 py-2"),children:t.map((r,i)=>(0,w.jsxs)("li",{className:"flex items-center justify-between gap-4",children:[(0,w.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:r.label}),(0,w.jsx)("span",{className:o("flex items-center gap-1 text-sm font-medium",We[r.variant??"default"]),children:r.value!=null?r.value:(0,w.jsx)(je,{})})]},i))})})}var Ie=require("react/jsx-runtime");function B({className:t,...e}){return(0,Ie.jsx)("div",{className:o("animate-shimmer rounded-[var(--inkblot-radius-md)] bg-[length:200%_100%] bg-[linear-gradient(90deg,var(--inkblot-semantic-color-background-secondary)_0%,var(--inkblot-semantic-color-background-tertiary)_50%,var(--inkblot-semantic-color-background-secondary)_100%)]",t),...e})}var V=require("react/jsx-runtime");function G({className:t,...e}){return(0,V.jsxs)("div",{className:o("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",t),...e,children:[(0,V.jsx)(B,{className:"h-5 w-3/4"}),(0,V.jsx)(B,{className:"h-4 w-full"}),(0,V.jsx)(B,{className:"h-4 w-5/6"}),(0,V.jsx)(B,{className:"h-4 w-4/5"}),(0,V.jsx)(B,{className:"h-4 w-3/4"})]})}var H=require("react/jsx-runtime");function q({children:t,loading:e=!1,title:r,className:i,onRetry:n}){return(0,H.jsx)(l,{className:i,onRetry:n,children:e?(0,H.jsxs)("div",{className:o("flex flex-col gap-4",i),children:[r?(0,H.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,(0,H.jsx)(G,{})]}):(0,H.jsxs)("div",{className:o("flex flex-col gap-4",i),children:[r?(0,H.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}var _=require("react/jsx-runtime");function ce({items:t,className:e}){return(0,_.jsx)(l,{className:e,children:(0,_.jsx)("nav",{className:o("flex w-14 flex-col items-center gap-1 border-r border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] py-4"),"aria-label":"Navigation",children:t.map(r=>(0,_.jsxs)("div",{className:o("relative flex w-full flex-col items-center gap-1 rounded-[var(--inkblot-radius-md)] px-2 py-2 transition-colors hover:text-[var(--inkblot-semantic-color-text-secondary)]",r.active?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-tertiary)]"),children:[r.active?(0,_.jsx)("span",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null,(0,_.jsx)("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?(0,_.jsx)("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}var v=require("lucide-react");var u=require("react/jsx-runtime");function Ze(t){return t>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":t>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":t>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var qe={EMAIL_OPENED:v.Mail,EMAIL_SENT:v.Mail,INVOICE_PAID:v.FileText,INVOICE_OVERDUE:v.FileText,CONTRACT_SIGNED:v.FileText,STAGE_CHANGED:v.Zap,CALL_COMPLETED:v.Phone,PHONE_CALL:v.Phone,RELATIONSHIP_DETECTED:v.Link2};function Je(t){return qe[t]??v.FileText}function Qe(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function Xe(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function J({events:t,onEntitySelect:e,findEntity:r,emptyMessage:i="No hay actividad reciente",className:n}){let s=e?a=>{let k=r?.(a.subject)??r?.(a.actor);k&&e(k)}:void 0;return(0,u.jsx)(l,{children:(0,u.jsx)("div",{className:o("space-y-2",n),children:t.length===0?(0,u.jsx)("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i}):t.map(a=>{let b=!!(r?.(a.subject)??r?.(a.actor))&&!!s,I=Je(a.event_type),A=(0,u.jsxs)("div",{className:"flex flex-1 items-center gap-3",children:[(0,u.jsx)(I,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),(0,u.jsx)("div",{className:`h-2 w-2 shrink-0 rounded-full ${Ze(a.confidence_score)}`,"aria-hidden":!0}),(0,u.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,u.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:Qe(a)}),(0,u.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:Xe(a)})]}),(0,u.jsx)("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),E=a.id??`${a.actor}-${a.subject}-${a.timestamp}`;return(0,u.jsx)("div",{children:b?(0,u.jsx)("button",{type:"button",onClick:()=>s(a),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:A}):(0,u.jsx)("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:A})},E)})})})}var Re=require("react-router-dom"),x=require("lucide-react");var M=require("react/jsx-runtime"),Ye=[{id:"home",path:"/",icon:x.ClipboardList,label:"Home"},{id:"intelligence",path:"/intelligence",icon:x.Brain,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:x.BarChart3,label:"Pipeline"},{id:"graph",path:"/graph",icon:x.Network,label:"Graph"},{id:"events",path:"/events",icon:x.Activity,label:"Events"},{id:"settings",path:"/settings",icon:x.Settings,label:"Settings"}];function de({items:t=Ye,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:i}){return(0,M.jsx)(l,{children:(0,M.jsxs)("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",i),children:[(0,M.jsx)("div",{className:"flex flex-col items-center gap-2",children:(0,M.jsx)("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",title:r,children:e??(0,M.jsx)(x.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),(0,M.jsx)("div",{className:"flex flex-1 flex-col gap-2",children:t.map(n=>{let s=n.icon;return(0,M.jsx)(Re.NavLink,{to:n.path,end:n.path==="/","aria-label":n.label,className:({isActive:a})=>`flex items-center justify-center gap-2 rounded-[var(--inkblot-radius-md)] border-l-2 px-3 py-2 transition-colors duration-[var(--inkblot-duration-fast)] ${a?"border-[var(--inkblot-semantic-color-interactive-primary)] bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)]":"border-transparent text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]"}`,children:(0,M.jsx)(s,{size:20,"aria-hidden":!0})},n.id)})})]})})}var h=require("react");var c=require("react/jsx-runtime");function et(t){let e=t.toLowerCase();return e.includes("entity")||e.includes("company")||e.includes("person")||e.includes("deal")||e.includes("profile")||e.includes("org")?"entity":e.includes("event")||e.includes("activity")||e.includes("recent")||e.includes("stream")||e.includes("log")?"event":"general"}function tt({entities:t}){let e=t[0];return e?(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Here's the entity profile and current intelligence scores:"}),(0,c.jsx)($,{name:e.name,entityType:e.type,metadata:e.metadata,edges:[{type:"WORKS_WITH",target:t[1]?.name},{type:"MANAGES",target:t[4]?.name}]})]}):null}function rt({events:t}){return(0,c.jsxs)("div",{className:"space-y-2",children:[(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Latest activity from the event bus:"}),t.slice(0,5).map(e=>(0,c.jsx)(j,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function ot(){return(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:"Revenue confidence is trending upward at 78%. Momentum score increased 12% this week driven by 3 new meetings with Acme Corp. Churn risk remains low at 15% across the active pipeline."})}function me({entities:t,events:e,onFocusEntity:r,findEntity:i,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[k,b]=(0,h.useState)(""),[I,A]=(0,h.useState)([]),[E,Q]=(0,h.useState)(!1),[ee,C]=(0,h.useState)(new Map),T=(0,h.useRef)(null);(0,h.useEffect)(()=>{T.current&&(T.current.scrollTop=T.current.scrollHeight)},[I,E]);let Le=(0,h.useCallback)(()=>{let S=k.trim();if(!S||E)return;let fe=i?.(S);fe&&r&&r(fe);let Ae={id:`msg-${Date.now()}`,role:"user",content:S,timestamp:new Date().toISOString()},ge=et(S);A(X=>[...X,Ae]),b(""),Q(!0),setTimeout(()=>{let X={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:ge,timestamp:new Date().toISOString()},Y;switch(ge){case"entity":Y=(0,c.jsx)(tt,{entities:t});break;case"event":Y=(0,c.jsx)(rt,{events:e});break;default:Y=(0,c.jsx)(ot,{})}C(te=>{let xe=new Map(te);return xe.set(X.id,Y),xe}),A(te=>[...te,X]),Q(!1)},1e3)},[k,E,t,e,r,i]);return(0,c.jsxs)("div",{className:o("flex h-full flex-col",a),children:[(0,c.jsxs)("div",{ref:T,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[I.length===0&&!E?(0,c.jsx)("div",{className:"flex flex-1 items-center justify-center py-12",children:(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})}):I.map(S=>(0,c.jsx)("div",{className:"flex flex-col gap-2",children:S.role==="user"?(0,c.jsx)("div",{className:"flex justify-end",children:(0,c.jsx)("div",{className:"max-w-[80%] rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-interactive-primary)] px-4 py-3 text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:S.content})}):(0,c.jsx)("div",{className:"max-w-[90%]",children:ee.get(S.id)??(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:S.content})})},S.id)),E&&(0,c.jsx)("div",{className:"max-w-[70%]",children:(0,c.jsx)(G,{className:"animate-shimmer"})})]}),(0,c.jsx)("div",{className:"shrink-0 border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-primary)] p-4",children:(0,c.jsx)(O,{promptValue:k,onPromptChange:b,onPromptSubmit:Le,isProcessing:E,placeholder:n})})]})}var Be=require("lucide-react");var L=require("react/jsx-runtime");function pe({prompt:t,onPromptChange:e,onSubmit:r,isProcessing:i,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",subtitle:s="Citron OS v1.0 \u2014 AI-native Revenue & Operations Platform",className:a}){return(0,L.jsxs)("div",{className:o("border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",a),children:[(0,L.jsxs)("div",{className:"flex items-center gap-3",children:[(0,L.jsx)("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",children:(0,L.jsx)(Be.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),(0,L.jsx)("div",{className:"flex-1",children:(0,L.jsx)(O,{promptValue:t,onPromptChange:e,onPromptSubmit:r,isProcessing:i,placeholder:n})})]}),s&&(0,L.jsx)("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}var N=require("react/jsx-runtime");function ue({events:t,title:e="Event Stream",showLive:r=!0,className:i}){return(0,N.jsx)(l,{children:(0,N.jsxs)("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",i),children:[(0,N.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[(0,N.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&(0,N.jsxs)("div",{className:"flex items-center gap-2",children:[(0,N.jsx)("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),(0,N.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),(0,N.jsx)("div",{className:"flex-1 overflow-auto p-4",children:(0,N.jsx)(J,{events:t})})]})})}var d=require("react/jsx-runtime"),at=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],nt=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function ve({loading:t,kpiCards:e=at,aiInsights:r=nt,title:i="Intelligence Lab",subtitle:n="AI-generated insights - Updated 3 min ago",className:s}){return(0,d.jsxs)("div",{className:o("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h1",{className:"text-2xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:i}),(0,d.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n})]}),(0,d.jsx)(q,{loading:t,title:"",children:(0,d.jsx)(l,{children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:e.map(a=>(0,d.jsx)(Z,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:r.map(a=>(0,d.jsx)(l,{children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),(0,d.jsx)("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.description})]}),(0,d.jsxs)("div",{className:"flex shrink-0 flex-col items-center",children:[(0,d.jsx)("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:a.confidence}),(0,d.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},a.title))})]})]})})})]})}var P=require("react/jsx-runtime");function be({navigation:t,eventStream:e,commandBar:r,children:i,className:n,eventStreamWidth:s="w-80"}){return(0,P.jsxs)("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",n),children:[(0,P.jsx)("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),(0,P.jsx)("main",{className:"flex flex-1 flex-col overflow-hidden",children:(0,P.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,P.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[(0,P.jsx)("div",{className:"flex-1 overflow-auto",children:i}),(0,P.jsx)("div",{className:"shrink-0",children:r})]}),e&&(0,P.jsx)("aside",{className:o("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:e})]})})]})}0&&(module.exports={ActivityStream,AppNavigationRail,Button,ChatFeed,CommandBar,CommandInterface,EntityCard,EntityCommandCard,ErrorBoundary,EventRow,EventStreamFeed,EventStreamSidebar,Input,IntelligenceLab,IntelligenceScoreCard,MainShell,MetricComparisonList,ModuleContainer,ModuleErrorBoundary,ModuleSkeleton,OSNavigationRail,Skeleton,StatusBadge});
|
|
1
|
+
"use strict";var Yt=Object.defineProperty;var je=Object.getOwnPropertyDescriptor;var qe=Object.getOwnPropertyNames;var Qe=Object.prototype.hasOwnProperty;var Ye=(t,e)=>{for(var a in e)Yt(t,a,{get:e[a],enumerable:!0})},Ze=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of qe(e))!Qe.call(t,n)&&n!==a&&Yt(t,n,{get:()=>e[n],enumerable:!(o=je(e,n))||o.enumerable});return t};var Xe=t=>Ze(Yt({},"__esModule",{value:!0}),t);var Rr={};Ye(Rr,{AIComposeInput:()=>kt,ActionButtons:()=>Ut,ActivityStream:()=>Gt,AppNavigationRail:()=>se,Button:()=>xt,CampaignTable:()=>Et,ChatFeed:()=>le,CommandBar:()=>ce,CommandInterface:()=>mt,EmailCampaignsView:()=>ue,EmailComposeActionButtons:()=>Pt,EmailTemplatesSection:()=>It,EntityCard:()=>Mt,EntityCommandCard:()=>Zt,ErrorBoundary:()=>Rt,EventRow:()=>At,EventStreamFeed:()=>Jt,EventStreamSidebar:()=>me,Input:()=>ht,IntelligenceLab:()=>de,IntelligenceScoreCard:()=>Lt,MainShell:()=>pe,MetricComparisonList:()=>re,ModuleContainer:()=>Dt,ModuleErrorBoundary:()=>d,ModuleSkeleton:()=>dt,OSNavigationRail:()=>ne,PageErrorFallback:()=>Vt,PageHeader:()=>pt,PageHeaderActionButton:()=>bt,RouteWithErrorBoundary:()=>ae,SearchBar:()=>Z,Skeleton:()=>Y,StatCardGrid:()=>oe,StatCards:()=>Ht,StatCardsWithChart:()=>ie,StatusBadge:()=>Bt,TabSystem:()=>Wt,TaskCreateForm:()=>zt,TaskItem:()=>Ot,TaskList:()=>_t,TasksView:()=>be,TemplateCard:()=>Tt});module.exports=Xe(Rr);var Kt=require("lucide-react");var ve=require("clsx"),ge=require("tailwind-merge");function r(...t){return(0,ge.twMerge)((0,ve.clsx)(t))}var ct=require("react/jsx-runtime"),Je={primary:["bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]"],secondary:["bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)]","border border-[var(--inkblot-semantic-color-border-default)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","active:bg-[var(--inkblot-semantic-color-background-tertiary)]"]};function Ut({buttons:t,className:e}){return(0,ct.jsx)("div",{className:r("flex flex-wrap items-center gap-[var(--inkblot-spacing-3)]",e),children:t.map(a=>(0,ct.jsxs)("button",{type:"button",onClick:()=>{a.onClick?.()},disabled:a.disabled,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",Je[a.variant]),children:[a.icon??null,a.label]},a.id))})}function Pt({onSendNow:t,onSchedule:e,onSaveDraft:a,className:o}){return(0,ct.jsx)(Ut,{buttons:[{id:"send",label:"Send Now",variant:"primary",icon:(0,ct.jsx)(Kt.Send,{className:"h-4 w-4"}),onClick:t},{id:"schedule",label:"Schedule",variant:"secondary",icon:(0,ct.jsx)(Kt.Calendar,{className:"h-4 w-4"}),onClick:e},{id:"draft",label:"Save Draft",variant:"secondary",onClick:a}],className:o})}var fe=require("react"),jt=require("lucide-react");var V=require("react/jsx-runtime"),kt=(0,fe.forwardRef)(({label:t,loading:e=!1,onWriteWithAI:a,disabled:o,className:n,...s},i)=>{let l=o||e;return(0,V.jsxs)("div",{className:r("flex flex-col gap-[var(--inkblot-spacing-2)]",n),children:[(0,V.jsxs)("div",{className:"flex items-center justify-between",children:[t?(0,V.jsx)("label",{htmlFor:s.id,className:r("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t}):(0,V.jsx)("span",{}),a?(0,V.jsxs)("button",{type:"button",onClick:a,disabled:e,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed disabled:pointer-events-none"),children:[e?(0,V.jsx)(jt.Loader2,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,V.jsx)(jt.Sparkles,{className:"h-4 w-4 shrink-0",style:{color:"var(--inkblot-semantic-color-status-warning)"}}),e?"Generating...":"Write with AI"]}):null]}),(0,V.jsx)("div",{className:"relative",children:(0,V.jsx)("textarea",{ref:i,disabled:l,className:r("min-h-[12rem] w-full rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed disabled:pointer-events-none"),...s})})]})});kt.displayName="AIComposeInput";var ye=require("react");var ke=require("react/jsx-runtime"),tr={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},xt=(0,ye.forwardRef)(({className:t,variant:e="primary",disabled:a,...o},n)=>(0,ke.jsx)("button",{ref:n,disabled:a,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-4 py-2 font-semibold transition-[background,border-color] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)]",tr[e],t),...o}));xt.displayName="Button";var tt=require("lucide-react");var f=require("react/jsx-runtime"),er={sent:{icon:tt.CheckCircle,label:"Sent",colorClass:"text-[var(--inkblot-semantic-color-status-success)]"},active:{icon:tt.Zap,label:"Active",colorClass:"text-[var(--inkblot-semantic-color-status-warning)]"},draft:{icon:tt.FileText,label:"Draft",colorClass:"text-[var(--inkblot-semantic-color-text-secondary)]"},scheduled:{icon:tt.Clock,label:"Scheduled",colorClass:"text-[var(--inkblot-semantic-color-status-info)]"}};function Et({columns:t,rows:e,className:a}){return(0,f.jsx)("div",{className:r("overflow-x-auto rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-subtle)]","bg-[var(--inkblot-semantic-color-background-primary)]",a),children:(0,f.jsxs)("table",{className:"w-full min-w-[600px] border-collapse",children:[(0,f.jsx)("thead",{children:(0,f.jsx)("tr",{className:"bg-[var(--inkblot-semantic-color-background-secondary)]",children:t.map(o=>(0,f.jsx)("th",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)] text-left","uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.label},o.key))})}),(0,f.jsx)("tbody",{children:e.map(o=>(0,f.jsxs)("tr",{className:r("border-b border-[var(--inkblot-semantic-color-border-subtle)] last:border-b-0","transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)]/50"),children:[(0,f.jsx)("td",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:(0,f.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,f.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:o.campaignName}),(0,f.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:o.recipients})]})}),(0,f.jsx)("td",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:(0,f.jsx)(rr,{status:o.status,subtext:o.statusSubtext})}),(0,f.jsx)("td",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.opens}),(0,f.jsx)("td",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.clicks}),(0,f.jsx)("td",{className:r("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.date})]},o.id))})]})})}function rr({status:t,subtext:e}){let a=er[t],o=a.icon;return(0,f.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,f.jsxs)("div",{className:r("inline-flex items-center gap-1.5","[font:var(--inkblot-semantic-typography-body-small)] font-medium",a.colorClass),children:[(0,f.jsx)(o,{className:"h-4 w-4 shrink-0"}),a.label]}),e?(0,f.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:e}):null]})}var he=require("lucide-react");var xe=require("lucide-react");var j=require("react/jsx-runtime");function Tt({category:t,title:e,uses:a,onClick:o,className:n}){return(0,j.jsxs)("button",{type:"button",onClick:o,className:r("flex flex-col gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","border border-[var(--inkblot-semantic-color-border-subtle)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-5)]","text-left transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",n),children:[(0,j.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,j.jsx)("span",{className:r("rounded-[var(--inkblot-radius-md)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","bg-[var(--inkblot-semantic-color-background-tertiary)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]"),children:t}),(0,j.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:a})]}),(0,j.jsx)("h3",{className:r("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:e}),(0,j.jsx)("div",{className:"flex flex-1 items-end justify-center pt-[var(--inkblot-spacing-4)]",children:(0,j.jsx)(xe.File,{className:r("h-10 w-10","text-[var(--inkblot-semantic-color-text-tertiary)]")})})]})}var q=require("react/jsx-runtime");function It({title:t="EMAIL TEMPLATES",onGenerateWithAI:e,templates:a,onTemplateClick:o,className:n}){return(0,q.jsxs)("section",{className:r("flex flex-col gap-[var(--inkblot-spacing-6)]",n),children:[(0,q.jsxs)("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)] sm:flex-row sm:items-center sm:justify-between",children:[(0,q.jsx)("h2",{className:r("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t}),e?(0,q.jsxs)("button",{type:"button",onClick:e,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] w-fit items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:[(0,q.jsx)(he.Sparkles,{className:"h-4 w-4 shrink-0",style:{color:"var(--inkblot-semantic-color-status-warning)"}}),"Generate with AI"]}):null]}),(0,q.jsx)("div",{className:"grid grid-cols-1 gap-[var(--inkblot-spacing-6)] sm:grid-cols-2",children:a.map(s=>(0,q.jsx)(Tt,{category:s.category,title:s.title,uses:s.uses,onClick:()=>o?.(s)},s.id))})]})}var Ne=require("react"),et=require("lucide-react");var h=require("react/jsx-runtime");function mt({promptValue:t="",onPromptChange:e,onPromptSubmit:a,onFilesAttach:o,isProcessing:n=!1,response:s,placeholder:i="Ask Citron Intelligence...",accept:l,multiple:c=!0,className:b}){let m=(0,Ne.useRef)(null),v=S=>{S.key==="Enter"&&!S.shiftKey&&(S.preventDefault(),a?.())},J=()=>{m.current?.click()},st=S=>{let B=S.target.files;B&&B.length>0&&o&&o(Array.from(B)),S.target.value=""};return(0,h.jsxs)("div",{className:r("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",b),children:[(0,h.jsxs)("div",{className:r("flex items-center gap-[var(--inkblot-spacing-2)]",n&&"pointer-events-none"),children:[(0,h.jsx)("input",{ref:m,type:"file",accept:l,multiple:c,onChange:st,className:"sr-only","aria-hidden":!0}),(0,h.jsx)("button",{type:"button",onClick:J,disabled:n,className:r("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:(0,h.jsx)(et.Paperclip,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),(0,h.jsxs)("div",{className:r("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),"aria-busy":n,children:[(0,h.jsx)("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:(0,h.jsx)(et.Sparkles,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),(0,h.jsx)("textarea",{value:t,onChange:S=>e?.(S.target.value),onKeyDown:v,placeholder:i,rows:2,disabled:n,className:r("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),(0,h.jsx)("div",{className:r("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)]",n?"pointer-events-none bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-90":""),children:n?(0,h.jsx)(et.Loader2,{size:16,strokeWidth:2,className:"animate-spin text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0}):(0,h.jsx)("button",{type:"button",onClick:a,disabled:n,className:r("flex h-full w-full items-center justify-center rounded-[var(--inkblot-radius-full)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]"),"aria-label":"Enviar",children:(0,h.jsx)(et.Send,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})})]})]}),s?(0,h.jsx)("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:(0,h.jsx)("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}var E=require("react/jsx-runtime"),ar={Person:"border-l-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-background-secondary)]",Organization:"border-l-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-background-secondary)]",Deal:"border-l-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-background-secondary)]"};function Mt({name:t,entityType:e,metadata:a,edges:o=[],className:n}){return(0,E.jsxs)("article",{className:r("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] border-l-4 p-4",ar[e],n),children:[(0,E.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,E.jsx)("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:e}),(0,E.jsx)("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t})]}),a&&Object.keys(a).length>0?(0,E.jsx)("dl",{className:"flex flex-col gap-1",children:Object.entries(a).map(([s,i])=>(0,E.jsxs)("div",{className:"flex gap-2",children:[(0,E.jsxs)("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),(0,E.jsx)("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:i})]},s))}):null,o.length>0?(0,E.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,E.jsx)("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),(0,E.jsx)("ul",{className:"flex flex-wrap gap-2",children:o.map((s,i)=>(0,E.jsxs)("li",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-1 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:[s.type,s.target?` \u2192 ${s.target}`:""]},i))})]}):null]})}var Ce=require("react");var Se=require("react/jsx-runtime"),ht=(0,Ce.forwardRef)(({className:t,error:e,disabled:a,...o},n)=>(0,Se.jsx)("input",{ref:n,disabled:a,"aria-invalid":e,"aria-disabled":a,className:r("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)] border bg-[var(--inkblot-semantic-color-background-secondary)] px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-[border-color,box-shadow] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--inkblot-semantic-color-border-focus)] focus-visible:ring-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",e?"border-[var(--inkblot-semantic-color-status-error)] focus-visible:ring-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",t),...o}));ht.displayName="Input";var we=require("react");var Nt=require("react/jsx-runtime"),d=class extends we.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?(0,Nt.jsxs)("div",{role:"alert",className:r("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",this.props.className),children:[(0,Nt.jsx)("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),(0,Nt.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),(0,Nt.jsx)(xt,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};var T=require("react/jsx-runtime");function Zt({title:t,insights:e,stats:a=[],commandValue:o="",onCommandChange:n,onCommandSubmit:s,className:i}){let l=c=>{c.key==="Enter"&&(c.preventDefault(),s?.())};return(0,T.jsx)(d,{className:i,children:(0,T.jsxs)("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,T.jsx)("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?(0,T.jsx)("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:e}):null,a.length>0?(0,T.jsxs)("div",{children:[(0,T.jsx)("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),(0,T.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:a.map((c,b)=>(0,T.jsxs)("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[(0,T.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:c.label}),(0,T.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:c.value})]},b))})]}):null,(0,T.jsx)("div",{className:"mt-2",children:(0,T.jsx)(ht,{type:"text",value:o,onChange:c=>n?.(c.target.value),onKeyDown:l,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}var Pe=require("react");var Xt=require("react/jsx-runtime"),Rt=class extends Pe.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:(0,Xt.jsx)("div",{className:r("inline-flex items-center gap-3 rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-4 py-3 text-[var(--inkblot-semantic-color-text-secondary)]",this.props.className),role:"alert",children:(0,Xt.jsx)("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};var Ee=require("react/jsx-runtime"),or={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function Bt({label:t,variant:e="info",className:a}){return(0,Ee.jsx)("span",{className:r("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",or[e],a),children:t})}var Q=require("react/jsx-runtime");function nr(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function At({event:t,className:e}){let a=nr(t.confidence_score),o=`${Math.round(t.confidence_score*100)}%`;return(0,Q.jsxs)("div",{className:r("flex flex-wrap items-center gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",e),children:[(0,Q.jsx)("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),(0,Q.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),(0,Q.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),(0,Q.jsx)("span",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-0.5 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:t.event_type}),(0,Q.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),(0,Q.jsx)(Bt,{label:o,variant:a})]})}var R=require("react/jsx-runtime"),ir={success:"bg-[var(--inkblot-semantic-color-status-success)]",warning:"bg-[var(--inkblot-semantic-color-status-warning)]",error:"bg-[var(--inkblot-semantic-color-status-error)]",info:"bg-[var(--inkblot-semantic-color-status-info)]"};function sr(){return(0,R.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:(0,R.jsx)("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function Jt({events:t,className:e}){return(0,R.jsx)(d,{className:e,children:(0,R.jsx)("div",{className:r("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(a=>(0,R.jsxs)("div",{className:"flex items-start gap-3",children:[(0,R.jsx)("div",{className:"flex shrink-0 items-center pt-0.5",children:a.icon??(0,R.jsx)(sr,{})}),(0,R.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,R.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),(0,R.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),a.status?(0,R.jsx)("div",{className:r("mt-1.5 h-2 w-2 shrink-0 rounded-full",ir[a.status]),"aria-hidden":!0}):null]},a.id))})})}var N=require("react/jsx-runtime"),ee=36,te=2*Math.PI*ee;function Lt({label:t,value:e,subtext:a,trend:o,className:n}){let s=Math.min(100,Math.max(0,e)),i=te-s/100*te;return(0,N.jsx)(d,{className:n,children:(0,N.jsxs)("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,N.jsxs)("div",{className:"relative",children:[(0,N.jsxs)("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[(0,N.jsx)("circle",{cx:"48",cy:"48",r:ee,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),(0,N.jsx)("circle",{cx:"48",cy:"48",r:ee,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:te,strokeDashoffset:i,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),(0,N.jsx)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:(0,N.jsxs)("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",o==="up"?(0,N.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:(0,N.jsx)("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):o==="down"?(0,N.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:(0,N.jsx)("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),(0,N.jsxs)("div",{className:"text-center",children:[(0,N.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),a?(0,N.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a}):null]})]})})}var G=require("react/jsx-runtime"),lr={default:"text-[var(--inkblot-semantic-color-text-primary)]",success:"text-[var(--inkblot-semantic-color-status-success)]",warning:"text-[var(--inkblot-semantic-color-status-warning)]",error:"text-[var(--inkblot-semantic-color-status-error)]"};function cr({className:t}){return(0,G.jsx)("svg",{viewBox:"0 0 16 16",className:r("h-4 w-4",t),"aria-hidden":!0,children:(0,G.jsx)("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function re({items:t,className:e}){return(0,G.jsx)(d,{className:e,children:(0,G.jsx)("ul",{className:r("flex flex-col gap-4 py-2"),children:t.map((a,o)=>(0,G.jsxs)("li",{className:"flex items-center justify-between gap-4",children:[(0,G.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a.label}),(0,G.jsx)("span",{className:r("flex items-center gap-1 text-sm font-medium",lr[a.variant??"default"]),children:a.value!=null?a.value:(0,G.jsx)(cr,{})})]},o))})})}var Te=require("react/jsx-runtime");function Y({className:t,...e}){return(0,Te.jsx)("div",{className:r("animate-shimmer rounded-[var(--inkblot-radius-md)] bg-[length:200%_100%] bg-[linear-gradient(90deg,var(--inkblot-semantic-color-background-secondary)_0%,var(--inkblot-semantic-color-background-tertiary)_50%,var(--inkblot-semantic-color-background-secondary)_100%)]",t),...e})}var rt=require("react/jsx-runtime");function dt({className:t,...e}){return(0,rt.jsxs)("div",{className:r("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",t),...e,children:[(0,rt.jsx)(Y,{className:"h-5 w-3/4"}),(0,rt.jsx)(Y,{className:"h-4 w-full"}),(0,rt.jsx)(Y,{className:"h-4 w-5/6"}),(0,rt.jsx)(Y,{className:"h-4 w-4/5"}),(0,rt.jsx)(Y,{className:"h-4 w-3/4"})]})}var at=require("react/jsx-runtime");function Dt({children:t,loading:e=!1,title:a,className:o,onRetry:n}){return(0,at.jsx)(d,{className:o,onRetry:n,children:e?(0,at.jsxs)("div",{className:r("flex flex-col gap-4",o),children:[a?(0,at.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a}):null,(0,at.jsx)(dt,{})]}):(0,at.jsxs)("div",{className:r("flex flex-col gap-4",o),children:[a?(0,at.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a}):null,t]})})}var Ie=require("lucide-react");var H=require("react/jsx-runtime");function pt({title:t,subtitle:e,icon:a,action:o,className:n}){return(0,H.jsxs)("header",{className:r("flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between","pb-[var(--inkblot-spacing-2)]",n),children:[(0,H.jsxs)("div",{className:"flex items-start gap-[var(--inkblot-spacing-3)]",children:[a?(0,H.jsx)("div",{className:r("flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","[color:var(--inkblot-semantic-color-status-warning)]"),children:a}):null,(0,H.jsxs)("div",{className:"min-w-0",children:[(0,H.jsx)("h1",{className:r("text-[var(--inkblot-semantic-color-text-primary)]","[font:var(--inkblot-semantic-typography-heading-medium)]"),children:t}),e?(0,H.jsx)("p",{className:r("mt-0.5 text-[var(--inkblot-semantic-color-text-secondary)]","[font:var(--inkblot-semantic-typography-body-small)]"),children:e}):null]})]}),o?(0,H.jsx)("div",{className:"mt-[var(--inkblot-spacing-4)] shrink-0 sm:mt-0",children:o}):null]})}function bt({label:t,onClick:e,icon:a,className:o}){return(0,H.jsxs)("button",{type:"button",onClick:e,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","[font:var(--inkblot-semantic-typography-body-medium)] font-semibold","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]",o),children:[a??(0,H.jsx)(Ie.Plus,{className:"h-4 w-4"}),t]})}var Me=require("react-router-dom");var ut=require("react/jsx-runtime");function Vt({resetErrorBoundary:t}){return(0,ut.jsxs)("div",{role:"alert",className:r("flex min-h-[50vh] flex-col items-center justify-center gap-[var(--inkblot-spacing-6)] px-[var(--inkblot-spacing-6)] py-[var(--inkblot-spacing-8)]","bg-[var(--inkblot-semantic-color-background-primary)]","[font:var(--inkblot-semantic-typography-body-small)]"),children:[(0,ut.jsx)("p",{className:"text-center text-[var(--inkblot-semantic-color-text-primary)] [font:var(--inkblot-semantic-typography-heading-medium)]",children:"Esta p\xE1gina no est\xE1 disponible"}),(0,ut.jsxs)("div",{className:"flex flex-col items-center gap-[var(--inkblot-spacing-4)] sm:flex-row",children:[(0,ut.jsx)("button",{type:"button",onClick:t,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:"Reintentar"}),(0,ut.jsx)(Me.Link,{to:"/",className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","text-[var(--inkblot-semantic-color-interactive-primary)] underline-offset-4 hover:underline","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:"Ir al inicio"})]})]})}var Re=require("react-error-boundary"),Be=require("react-router-dom");var Ae=require("react/jsx-runtime");function ae({children:t,fallback:e}){let a=(0,Be.useNavigate)();return(0,Ae.jsx)(Re.ErrorBoundary,{FallbackComponent:e??Vt,onReset:()=>{a("/")},children:t})}var Le=require("react"),De=require("lucide-react");var vt=require("react/jsx-runtime"),Z=(0,Le.forwardRef)(({className:t,label:e,error:a,disabled:o,...n},s)=>(0,vt.jsxs)("div",{className:"flex flex-col gap-1",children:[e?(0,vt.jsx)("label",{htmlFor:n.id,className:r("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:e}):null,(0,vt.jsxs)("div",{className:r("flex items-center gap-2 rounded-[var(--inkblot-radius-full)]","bg-[var(--inkblot-semantic-color-background-secondary)]","border transition-colors duration-[var(--inkblot-duration-fast)]","focus-within:ring-2 focus-within:ring-[var(--inkblot-semantic-color-border-focus)] focus-within:ring-offset-2 focus-within:ring-offset-[var(--inkblot-semantic-color-background-primary)]",a?"border-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",o&&"opacity-[var(--inkblot-opacity-disabled)] pointer-events-none cursor-not-allowed"),children:[(0,vt.jsx)(De.Search,{className:r("ml-[var(--inkblot-spacing-4)] h-4 w-4 shrink-0","text-[var(--inkblot-semantic-color-text-tertiary)]")}),(0,vt.jsx)("input",{ref:s,type:"search",disabled:o,"aria-invalid":a,"aria-label":e??"Search",className:r("min-h-[var(--inkblot-size-touch-target-min)] w-full flex-1 bg-transparent px-2 py-[var(--inkblot-spacing-2)] pr-[var(--inkblot-spacing-4)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none","disabled:cursor-not-allowed",t),...n})]})]}));Z.displayName="SearchBar";var Ve=require("react/jsx-runtime");function oe({children:t,columns:e=4,className:a}){return(0,Ve.jsx)("div",{className:r("grid gap-[var(--inkblot-spacing-4)]",{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"}[e],a),children:t})}var ot=require("react/jsx-runtime");function ne({items:t,className:e}){return(0,ot.jsx)(d,{className:e,children:(0,ot.jsx)("nav",{className:r("flex w-14 flex-col items-center gap-1 border-r border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] py-4"),"aria-label":"Navigation",children:t.map(a=>(0,ot.jsxs)("div",{className:r("relative flex w-full flex-col items-center gap-1 rounded-[var(--inkblot-radius-md)] px-2 py-2 transition-colors hover:text-[var(--inkblot-semantic-color-text-secondary)]",a.active?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-tertiary)]"),children:[a.active?(0,ot.jsx)("span",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null,(0,ot.jsx)("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:a.icon}),a.label?(0,ot.jsx)("span",{className:"text-[10px] font-medium",children:a.label}):null]},a.id))})})}var C=require("react/jsx-runtime"),He={success:"text-[var(--inkblot-semantic-color-status-success)]",error:"text-[var(--inkblot-semantic-color-status-error)]",neutral:"text-[var(--inkblot-semantic-color-text-secondary)]"};function Ht({items:t,className:e}){return(0,C.jsx)("div",{className:r("grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",e),children:t.map(a=>(0,C.jsx)(mr,{item:a},a.label))})}function mr({item:t}){let e=t.changeVariant??"neutral",a=He[e];return(0,C.jsxs)("div",{className:r("flex flex-col gap-1 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-4)]","border border-[var(--inkblot-semantic-color-border-subtle)]"),children:[(0,C.jsx)("span",{className:r("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t.label}),(0,C.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-heading-medium)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t.value}),t.change?(0,C.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-small)]",a),children:t.change}):null]})}function ie({items:t,className:e}){return(0,C.jsx)("div",{className:r("grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",e),children:t.map(a=>(0,C.jsx)(dr,{item:a},a.label))})}function dr({item:t}){let e=t.changeVariant??"neutral",a=He[e],o=t.chartData??[],n=Math.max(...o,1);return(0,C.jsxs)("div",{className:r("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-4)]","border border-[var(--inkblot-semantic-color-border-subtle)]"),children:[(0,C.jsx)("span",{className:r("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t.label}),(0,C.jsxs)("div",{className:"flex items-end justify-between gap-2",children:[(0,C.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-heading-medium)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t.value}),o.length>0?(0,C.jsx)("div",{className:"flex h-8 items-end gap-0.5",children:o.map((s,i)=>(0,C.jsx)("div",{className:"w-1 min-w-[2px] rounded-sm bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-80",style:{height:`${s/n*100}%`,minHeight:4}},i))}):null]}),t.change?(0,C.jsx)("span",{className:r("[font:var(--inkblot-semantic-typography-body-small)]",a),children:t.change}):null]})}var Ft=require("react/jsx-runtime");function Wt({tabs:t,activeTabId:e,onTabChange:a,className:o}){return(0,Ft.jsx)("nav",{role:"tablist","aria-label":"Tabs",className:r("flex gap-0 pt-[var(--inkblot-spacing-2)]",o),children:t.map(n=>{let s=n.id===e;return(0,Ft.jsxs)("button",{role:"tab","aria-selected":s,"aria-controls":`panel-${n.id}`,id:`tab-${n.id}`,type:"button",onClick:()=>a(n.id),className:r("relative px-[var(--inkblot-spacing-5)] py-[var(--inkblot-spacing-4)]","[font:var(--inkblot-semantic-typography-body-medium)]","transition-colors duration-[var(--inkblot-duration-fast)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",s?["font-semibold text-[var(--inkblot-semantic-color-text-primary)]","bg-[var(--inkblot-semantic-color-background-secondary)]","rounded-t-[var(--inkblot-radius-lg)]"]:["text-[var(--inkblot-semantic-color-text-secondary)]","hover:text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)]/50"]),children:[n.label,s?(0,Ft.jsx)("span",{className:"absolute bottom-0 left-0 right-0 h-0.5 rounded-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null]},n.id)})})}var Ct=require("lucide-react");var I=require("react/jsx-runtime"),pr={urgent:"bg-[var(--inkblot-semantic-color-status-error)]/20 text-[var(--inkblot-semantic-color-status-error)] border-[var(--inkblot-semantic-color-status-error)]/30",high:"bg-[var(--inkblot-semantic-color-status-warning)]/20 text-[var(--inkblot-semantic-color-status-warning)] border-[var(--inkblot-semantic-color-status-warning)]/30",medium:"bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)] border-[var(--inkblot-semantic-color-status-success)]/30",low:"bg-[var(--inkblot-semantic-color-background-tertiary)] text-[var(--inkblot-semantic-color-text-secondary)] border-[var(--inkblot-semantic-color-border-subtle)]"};function Ot({id:t,title:e,company:a,priority:o,date:n,assignee:s,completed:i=!1,onToggle:l,onClick:c,className:b}){let m=pr[o];return(0,I.jsxs)("div",{role:"button",tabIndex:0,onClick:()=>c?.(t),onKeyDown:v=>{(v.key==="Enter"||v.key===" ")&&(v.preventDefault(),c?.(t))},className:r("flex items-center gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-subtle)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","cursor-pointer",b),children:[(0,I.jsx)("button",{type:"button",onClick:v=>{v.stopPropagation(),l?.(t)},"aria-label":i?"Mark as incomplete":"Mark as complete","aria-pressed":i,className:r("flex h-5 w-5 shrink-0 items-center justify-center rounded-full","transition-colors duration-[var(--inkblot-duration-fast)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",i?"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]":"border-2 border-[var(--inkblot-semantic-color-border-default)] bg-transparent"),children:i?(0,I.jsx)(Ct.Check,{className:"h-3 w-3",strokeWidth:3}):null}),(0,I.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,I.jsx)("p",{className:r("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]",i&&"line-through text-[var(--inkblot-semantic-color-text-secondary)]"),children:e}),(0,I.jsx)("p",{className:r("mt-0.5 [font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]",i&&"line-through"),children:a})]}),(0,I.jsxs)("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-[var(--inkblot-spacing-3)]",children:[(0,I.jsx)("span",{className:r("rounded-[var(--inkblot-radius-md)] border px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium",m),children:o.charAt(0).toUpperCase()+o.slice(1)}),(0,I.jsxs)("span",{className:r("flex items-center gap-1","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:[(0,I.jsx)(Ct.Calendar,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-tertiary)]"}),n]}),(0,I.jsxs)("span",{className:r("flex items-center gap-1","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:[(0,I.jsx)(Ct.User,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-tertiary)]"}),s]})]})]})}var St=require("lucide-react");var z=require("react/jsx-runtime"),br={todo:St.CircleDot,in_progress:St.Clock,done:St.CheckCircle};function _t({sections:t,onTaskToggle:e,onTaskClick:a,className:o}){return(0,z.jsx)("div",{className:r("flex flex-col gap-[var(--inkblot-spacing-8)]",o),children:t.map(n=>{let s=br[n.id],i=n.id==="done";return(0,z.jsxs)("section",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:[(0,z.jsxs)("div",{className:"flex items-center gap-[var(--inkblot-spacing-3)]",children:[(0,z.jsx)(s,{className:r("h-5 w-5 shrink-0",i?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-secondary)]")}),(0,z.jsx)("h2",{className:r("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:n.label}),(0,z.jsx)("span",{className:r("rounded-[var(--inkblot-radius-full)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","bg-[var(--inkblot-semantic-color-background-secondary)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]"),children:n.count})]}),(0,z.jsx)("div",{className:"flex flex-col gap-[var(--inkblot-spacing-3)]",children:n.tasks.map(l=>(0,z.jsx)(Ot,{...l,completed:i,onToggle:e,onClick:a},l.id))})]},n.id)})})}var P=require("lucide-react");var w=require("react/jsx-runtime");function ur(t){return t>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":t>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":t>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var vr={EMAIL_OPENED:P.Mail,EMAIL_SENT:P.Mail,INVOICE_PAID:P.FileText,INVOICE_OVERDUE:P.FileText,CONTRACT_SIGNED:P.FileText,STAGE_CHANGED:P.Zap,CALL_COMPLETED:P.Phone,PHONE_CALL:P.Phone,RELATIONSHIP_DETECTED:P.Link2};function gr(t){return vr[t]??P.FileText}function fr(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function yr(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function Gt({events:t,onEntitySelect:e,findEntity:a,emptyMessage:o="No hay actividad reciente",className:n}){let s=e?i=>{let l=a?.(i.subject)??a?.(i.actor);l&&e(l)}:void 0;return(0,w.jsx)(d,{children:(0,w.jsx)("div",{className:r("space-y-2",n),children:t.length===0?(0,w.jsx)("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:o}):t.map(i=>{let c=!!(a?.(i.subject)??a?.(i.actor))&&!!s,b=gr(i.event_type),m=(0,w.jsxs)("div",{className:"flex flex-1 items-center gap-3",children:[(0,w.jsx)(b,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),(0,w.jsx)("div",{className:`h-2 w-2 shrink-0 rounded-full ${ur(i.confidence_score)}`,"aria-hidden":!0}),(0,w.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,w.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:fr(i)}),(0,w.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:yr(i)})]}),(0,w.jsx)("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:i.timestamp})]}),v=i.id??`${i.actor}-${i.subject}-${i.timestamp}`;return(0,w.jsx)("div",{children:c?(0,w.jsx)("button",{type:"button",onClick:()=>s(i),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:m}):(0,w.jsx)("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:m})},v)})})})}var Fe=require("react-router-dom"),M=require("lucide-react");var $=require("react/jsx-runtime"),kr=[{id:"home",path:"/",icon:M.ClipboardList,label:"Home"},{id:"intelligence",path:"/intelligence",icon:M.Brain,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:M.BarChart3,label:"Pipeline"},{id:"graph",path:"/graph",icon:M.Network,label:"Graph"},{id:"events",path:"/events",icon:M.Activity,label:"Events"},{id:"settings",path:"/settings",icon:M.Settings,label:"Settings"}];function se({items:t=kr,brandLogo:e,brandTitle:a="Command Canvas \u2014 AI-native Interface",className:o}){return(0,$.jsx)(d,{children:(0,$.jsxs)("nav",{className:r("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",o),children:[(0,$.jsx)("div",{className:"flex flex-col items-center gap-2",children:(0,$.jsx)("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",title:a,children:e??(0,$.jsx)(M.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),(0,$.jsx)("div",{className:"flex flex-1 flex-col gap-2",children:t.map(n=>{let s=n.icon;return(0,$.jsx)(Fe.NavLink,{to:n.path,end:n.path==="/","aria-label":n.label,className:({isActive:i})=>`flex items-center justify-center gap-2 rounded-[var(--inkblot-radius-md)] border-l-2 px-3 py-2 transition-colors duration-[var(--inkblot-duration-fast)] ${i?"border-[var(--inkblot-semantic-color-interactive-primary)] bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)]":"border-transparent text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]"}`,children:(0,$.jsx)(s,{size:20,"aria-hidden":!0})},n.id)})})]})})}var F=require("react");var u=require("react/jsx-runtime");function xr(t){let e=t.toLowerCase();return e.includes("entity")||e.includes("company")||e.includes("person")||e.includes("deal")||e.includes("profile")||e.includes("org")?"entity":e.includes("event")||e.includes("activity")||e.includes("recent")||e.includes("stream")||e.includes("log")?"event":"general"}function hr({entities:t}){let e=t[0];return e?(0,u.jsxs)("div",{className:"space-y-3",children:[(0,u.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Here's the entity profile and current intelligence scores:"}),(0,u.jsx)(Mt,{name:e.name,entityType:e.type,metadata:e.metadata,edges:[{type:"WORKS_WITH",target:t[1]?.name},{type:"MANAGES",target:t[4]?.name}]})]}):null}function Nr({events:t}){return(0,u.jsxs)("div",{className:"space-y-2",children:[(0,u.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Latest activity from the event bus:"}),t.slice(0,5).map(e=>(0,u.jsx)(At,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function Cr(){return(0,u.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:"Revenue confidence is trending upward at 78%. Momentum score increased 12% this week driven by 3 new meetings with Acme Corp. Churn risk remains low at 15% across the active pipeline."})}function le({entities:t,events:e,onFocusEntity:a,findEntity:o,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:i}){let[l,c]=(0,F.useState)(""),[b,m]=(0,F.useState)([]),[v,J]=(0,F.useState)(!1),[st,S]=(0,F.useState)(new Map),B=(0,F.useRef)(null);(0,F.useEffect)(()=>{B.current&&(B.current.scrollTop=B.current.scrollHeight)},[b,v]);let ft=(0,F.useCallback)(()=>{let x=l.trim();if(!x||v)return;let g=o?.(x);g&&a&&a(g);let _={id:`msg-${Date.now()}`,role:"user",content:x,timestamp:new Date().toISOString()},L=xr(x);m(D=>[...D,_]),c(""),J(!0),setTimeout(()=>{let D={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:L,timestamp:new Date().toISOString()},yt;switch(L){case"entity":yt=(0,u.jsx)(hr,{entities:t});break;case"event":yt=(0,u.jsx)(Nr,{events:e});break;default:yt=(0,u.jsx)(Cr,{})}S(wt=>{let $t=new Map(wt);return $t.set(D.id,yt),$t}),m(wt=>[...wt,D]),J(!1)},1e3)},[l,v,t,e,a,o]);return(0,u.jsxs)("div",{className:r("flex h-full flex-col",i),children:[(0,u.jsxs)("div",{ref:B,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[b.length===0&&!v?(0,u.jsx)("div",{className:"flex flex-1 items-center justify-center py-12",children:(0,u.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})}):b.map(x=>(0,u.jsx)("div",{className:"flex flex-col gap-2",children:x.role==="user"?(0,u.jsx)("div",{className:"flex justify-end",children:(0,u.jsx)("div",{className:"max-w-[80%] rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-interactive-primary)] px-4 py-3 text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:x.content})}):(0,u.jsx)("div",{className:"max-w-[90%]",children:st.get(x.id)??(0,u.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:x.content})})},x.id)),v&&(0,u.jsx)("div",{className:"max-w-[70%]",children:(0,u.jsx)(dt,{className:"animate-shimmer"})})]}),(0,u.jsx)("div",{className:"shrink-0 border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-primary)] p-4",children:(0,u.jsx)(mt,{promptValue:l,onPromptChange:c,onPromptSubmit:ft,isProcessing:v,placeholder:n})})]})}var We=require("lucide-react");var X=require("react/jsx-runtime");function ce({prompt:t,onPromptChange:e,onSubmit:a,isProcessing:o,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",subtitle:s="Citron OS v1.0 \u2014 AI-native Revenue & Operations Platform",className:i}){return(0,X.jsxs)("div",{className:r("border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",i),children:[(0,X.jsxs)("div",{className:"flex items-center gap-3",children:[(0,X.jsx)("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",children:(0,X.jsx)(We.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),(0,X.jsx)("div",{className:"flex-1",children:(0,X.jsx)(mt,{promptValue:t,onPromptChange:e,onPromptSubmit:a,isProcessing:o,placeholder:n})})]}),s&&(0,X.jsx)("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}var W=require("react/jsx-runtime");function me({events:t,title:e="Event Stream",showLive:a=!0,className:o}){return(0,W.jsx)(d,{children:(0,W.jsxs)("div",{className:r("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",o),children:[(0,W.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[(0,W.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),a&&(0,W.jsxs)("div",{className:"flex items-center gap-2",children:[(0,W.jsx)("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),(0,W.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),(0,W.jsx)("div",{className:"flex-1 overflow-auto p-4",children:(0,W.jsx)(Gt,{events:t})})]})})}var y=require("react/jsx-runtime"),Sr=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],wr=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function de({loading:t,kpiCards:e=Sr,aiInsights:a=wr,title:o="Intelligence Lab",subtitle:n="AI-generated insights - Updated 3 min ago",className:s}){return(0,y.jsxs)("div",{className:r("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[(0,y.jsxs)("div",{children:[(0,y.jsx)("h1",{className:"text-2xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:o}),(0,y.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n})]}),(0,y.jsx)(Dt,{loading:t,title:"",children:(0,y.jsx)(d,{children:(0,y.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,y.jsx)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:e.map(i=>(0,y.jsx)(Lt,{label:i.label,value:i.value,subtext:i.subtext,trend:i.trend},i.label))}),(0,y.jsxs)("div",{children:[(0,y.jsx)("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),(0,y.jsx)("div",{className:"flex flex-col gap-4",children:a.map(i=>(0,y.jsx)(d,{children:(0,y.jsxs)("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,y.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,y.jsx)("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:i.title}),(0,y.jsx)("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i.description})]}),(0,y.jsxs)("div",{className:"flex shrink-0 flex-col items-center",children:[(0,y.jsx)("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:i.confidence}),(0,y.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},i.title))})]})]})})})]})}var K=require("react/jsx-runtime");function pe({navigation:t,eventStream:e,commandBar:a,children:o,className:n,eventStreamWidth:s="w-80"}){return(0,K.jsxs)("div",{className:r("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",n),children:[(0,K.jsx)("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),(0,K.jsx)("main",{className:"flex flex-1 flex-col overflow-hidden",children:(0,K.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,K.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[(0,K.jsx)("div",{className:"flex-1 overflow-auto",children:o}),(0,K.jsx)("div",{className:"shrink-0",children:a})]}),e&&(0,K.jsx)("aside",{className:r("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:e})]})})]})}var qt=require("react"),Qt=require("lucide-react");var A=require("react/jsx-runtime"),Pr=["urgent","high","medium","low"];function zt({onConfirm:t,onCancel:e,className:a}){let[o,n]=(0,qt.useState)(""),[s,i]=(0,qt.useState)(""),[l,c]=(0,qt.useState)("medium");return(0,A.jsxs)("form",{onSubmit:m=>{m.preventDefault();let v=o.trim();v&&(t({title:v,company:s.trim()||void 0,priority:l}),n(""),i(""),c("medium"))},className:r("flex flex-col gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","p-[var(--inkblot-spacing-4)]",a),children:[(0,A.jsx)("input",{type:"text",value:o,onChange:m=>n(m.target.value),placeholder:"Task title...",autoFocus:!0,required:!0,className:r("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]")}),(0,A.jsx)("input",{type:"text",value:s,onChange:m=>i(m.target.value),placeholder:"Company (optional)",className:r("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]")}),(0,A.jsx)("div",{className:"flex flex-wrap gap-[var(--inkblot-spacing-2)]",children:Pr.map(m=>(0,A.jsx)("button",{type:"button",onClick:()=>c(m),className:r("rounded-[var(--inkblot-radius-md)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","transition-colors duration-[var(--inkblot-duration-fast)]",l===m?"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]":"bg-[var(--inkblot-semantic-color-background-tertiary)] text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]/80"),children:m.charAt(0).toUpperCase()+m.slice(1)},m))}),(0,A.jsxs)("div",{className:"flex justify-end gap-[var(--inkblot-spacing-2)]",children:[(0,A.jsxs)("button",{type:"button",onClick:e,className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]"),children:[(0,A.jsx)(Qt.X,{className:"h-4 w-4"}),"Cancel"]}),(0,A.jsxs)("button",{type:"submit",disabled:!o.trim(),className:r("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-interactive-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed"),children:[(0,A.jsx)(Qt.Check,{className:"h-4 w-4"}),"Add Task"]})]})]})}var gt=require("react"),Oe=require("lucide-react");var U=require("react/jsx-runtime");function nt(t,e,a="You"){let n=new Date().toLocaleDateString("en-US",{month:"short",day:"numeric"})||"Today";return{id:e,title:t.title,company:t.company??"Unassigned",priority:t.priority??"medium",date:n,assignee:a,status:"todo"}}function Er(t){let e={todo:t.filter(a=>a.status==="todo"),in_progress:t.filter(a=>a.status==="in_progress"),done:t.filter(a=>a.status==="done")};return[{id:"todo",label:"TO DO",count:e.todo.length,tasks:e.todo},{id:"in_progress",label:"IN PROGRESS",count:e.in_progress.length,tasks:e.in_progress},{id:"done",label:"DONE",count:e.done.length,tasks:e.done}]}var it=[nt({title:"Follow up with Sarah Chen on proposal",company:"Acme Corp",priority:"high"},"1"),nt({title:"Schedule demo with engineering team",company:"TechStart Inc",priority:"medium"},"2"),nt({title:"Prepare quarterly report slides",company:"GlobalTech",priority:"low"},"3"),nt({title:"Review Q1 marketing budget",company:"TechStart Inc",priority:"medium"},"4"),nt({title:"Draft partnership agreement",company:"Enterprise Co",priority:"urgent"},"5"),nt({title:"Send contract to legal team",company:"GlobalTech",priority:"low"},"6"),nt({title:"Update CRM with new contacts",company:"Acme Corp",priority:"low"},"7")];it[0].status="todo";it[1].status="todo";it[2].status="todo";it[3].status="in_progress";it[4].status="in_progress";it[5].status="done";it[6].status="done";function be({initialTasks:t=it,onTaskCreate:e,onTaskToggle:a,onTaskClick:o,className:n}){let[s,i]=(0,gt.useState)(t),[l,c]=(0,gt.useState)(!1),[b,m]=(0,gt.useState)(""),v=(0,gt.useMemo)(()=>{if(!b.trim())return s;let g=b.toLowerCase();return s.filter(_=>_.title.toLowerCase().includes(g)||_.company.toLowerCase().includes(g))},[s,b]),J=(0,gt.useMemo)(()=>Er(v),[v]),st=s.filter(g=>g.status!=="done").length,S=s.filter(g=>g.priority==="urgent"&&g.status!=="done").length,B=`${st} pending${S>0?` \xB7 ${S} urgent`:""}`,ft=g=>{let _=`task-${Date.now()}`,L=nt(g,_);i(D=>[L,...D]),c(!1),e?.(g)},x=g=>{i(_=>_.map(L=>{if(L.id!==g)return L;let D=L.status==="done"?"todo":"done";return{...L,status:D}})),a?.(g)};return(0,U.jsx)("div",{className:r("flex min-h-screen flex-col bg-[var(--inkblot-semantic-color-background-primary)]",n),children:(0,U.jsxs)("div",{className:"flex flex-1 flex-col gap-8 px-8 py-8",children:[(0,U.jsx)(pt,{title:"Tasks",subtitle:B,icon:(0,U.jsx)(Oe.ClipboardList,{className:"h-5 w-5"}),action:(0,U.jsx)(bt,{label:"New Task",onClick:()=>c(g=>!g)})}),(0,U.jsx)(Z,{placeholder:"Search tasks...",value:b,onChange:g=>m(g.target.value)}),l?(0,U.jsx)(zt,{onConfirm:ft,onCancel:()=>c(!1)}):null,(0,U.jsx)(_t,{sections:J,onTaskToggle:x,onTaskClick:o})]})})}var O=require("react"),$e=require("lucide-react");var p=require("react/jsx-runtime"),Tr=`Hi [Name],
|
|
2
|
+
|
|
3
|
+
I hope this email finds you well. I wanted to reach out regarding our recent conversation about [Topic].
|
|
4
|
+
|
|
5
|
+
Based on our discussion, I've prepared a few options that I believe could add significant value to your organization:
|
|
6
|
+
|
|
7
|
+
1. **Option A**: [Brief description]
|
|
8
|
+
2. **Option B**: [Brief description]
|
|
9
|
+
3. **Option C**: [Brief description]
|
|
10
|
+
|
|
11
|
+
I'd love to schedule a quick call this week to walk you through these in more detail. Would any of the following times work for you?
|
|
12
|
+
|
|
13
|
+
- Tuesday 2pm
|
|
14
|
+
- Wednesday 10am
|
|
15
|
+
- Thursday 4pm
|
|
16
|
+
|
|
17
|
+
Looking forward to hearing from you.
|
|
18
|
+
|
|
19
|
+
Best regards,
|
|
20
|
+
[Your name]`,_e=[{id:"1",campaignName:"Q1 Product Launch",recipients:"2840 recipients",status:"sent",opens:"68%",clicks:"24%",date:"Feb 12, 2026"},{id:"2",campaignName:"Welcome Series",recipients:"1200 recipients",status:"active",statusSubtext:"Running",opens:"-",clicks:"-",date:"Feb 28, 2026"},{id:"3",campaignName:"Re-engagement Campaign",recipients:"890 recipients",status:"draft",opens:"-",clicks:"-",date:"Feb 5, 2026"},{id:"4",campaignName:"Holiday Promo",recipients:"4500 recipients",status:"scheduled",opens:"-",clicks:"-",date:"Mar 1, 2026"}],Ge=[{id:"1",category:"Onboarding",title:"Welcome Series",uses:"34 uses"},{id:"2",category:"Marketing",title:"Product Announcement",uses:"12 uses"},{id:"3",category:"Retention",title:"Renewal Reminder",uses:"28 uses"},{id:"4",category:"Sales",title:"Meeting Follow-up",uses:"56 uses"}],ze=["Acme Corp - Sarah Chen","TechStart Inc - Mike Rodriguez","GlobalTech - Lisa Kim","Enterprise Co - John Smith","StartupXYZ - Emma Wilson"],Ir=[{key:"campaign",label:"Campaign"},{key:"status",label:"Status"},{key:"opens",label:"Opens"},{key:"clicks",label:"Clicks"},{key:"date",label:"Date"}],Mr=[{label:"Total Sent",value:"12.4K",change:"This month",changeVariant:"success"},{label:"Avg. Open Rate",value:"64%",change:"+8% vs prior",changeVariant:"success"},{label:"Avg. Click Rate",value:"22%",change:"+3% vs prior",changeVariant:"success"},{label:"Active Automations",value:"7",change:"3 paused",changeVariant:"error"}];function ue({onSendNow:t,onSchedule:e,onSaveDraft:a,onNewCampaign:o,onGenerateWithAI:n,onTemplateClick:s,className:i}){let[l,c]=(0,O.useState)("campaigns"),[b,m]=(0,O.useState)(""),[v,J]=(0,O.useState)(""),[st,S]=(0,O.useState)(""),[B,ft]=(0,O.useState)(!1),[x,g]=(0,O.useState)(""),_=(0,O.useMemo)(()=>{if(!b.trim())return _e;let k=b.toLowerCase();return _e.filter(lt=>lt.campaignName.toLowerCase().includes(k)||lt.recipients.toLowerCase().includes(k))},[b]),L=(0,O.useMemo)(()=>{if(!b.trim())return Ge;let k=b.toLowerCase();return Ge.filter(lt=>lt.title.toLowerCase().includes(k)||lt.category.toLowerCase().includes(k))},[b]),D=(0,O.useMemo)(()=>{if(!x.trim())return ze;let k=x.toLowerCase();return ze.filter(lt=>lt.toLowerCase().includes(k))},[x]),yt=async()=>{ft(!0),await new Promise(k=>setTimeout(k,1500)),S(Tr),ft(!1)},wt=()=>{console.log("Send Now clicked"),t?.()},$t=()=>{console.log("Schedule clicked"),e?.()},Ke=()=>{console.log("Save Draft clicked"),a?.()},Ue=l==="campaigns"||l==="templates";return(0,p.jsx)("div",{className:r("flex min-h-screen flex-col bg-[var(--inkblot-semantic-color-background-primary)]",i),children:(0,p.jsxs)("div",{className:"flex flex-1 flex-col gap-8 px-8 py-8",children:[(0,p.jsx)(pt,{title:"Email Campaigns",subtitle:"Automate outreach \xB7 AI-powered templates",icon:(0,p.jsx)($e.Mail,{className:"h-5 w-5"}),action:(0,p.jsx)(bt,{label:"New Campaign",onClick:()=>o?.()})}),(0,p.jsx)(Wt,{tabs:[{id:"campaigns",label:"Campaigns"},{id:"templates",label:"Templates"},{id:"compose",label:"Compose"}],activeTabId:l,onTabChange:c}),Ue?(0,p.jsx)(Z,{placeholder:l==="campaigns"?"Search campaigns...":"Search templates...",value:b,onChange:k=>m(k.target.value)}):null,l==="campaigns"?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(Ht,{items:Mr}),(0,p.jsx)(Et,{columns:Ir,rows:_})]}):l==="templates"?(0,p.jsx)(It,{templates:L,onGenerateWithAI:n,onTemplateClick:s}):(0,p.jsxs)("div",{className:"flex max-w-2xl flex-col gap-6",children:[(0,p.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,p.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,p.jsx)("label",{className:"uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)] [font:var(--inkblot-semantic-typography-body-small)]",children:"Subject"}),(0,p.jsx)("input",{type:"text",value:v,onChange:k=>J(k.target.value),placeholder:"Enter subject line...",className:r("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]")})]}),(0,p.jsx)(kt,{label:"Body",value:st,onChange:k=>S(k.target.value),placeholder:"Compose your email or let AI generate content...",loading:B,onWriteWithAI:yt}),(0,p.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,p.jsx)(Z,{label:"Recipients",placeholder:"Search contacts, segments, or tags...",value:x,onChange:k=>g(k.target.value)}),D.length>0?(0,p.jsx)("ul",{className:"flex flex-wrap gap-2",children:D.slice(0,5).map(k=>(0,p.jsx)("li",{className:r("rounded-[var(--inkblot-radius-md)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:k},k))}):null]})]}),(0,p.jsx)(Pt,{onSendNow:wt,onSchedule:$t,onSaveDraft:Ke})]})]})})}0&&(module.exports={AIComposeInput,ActionButtons,ActivityStream,AppNavigationRail,Button,CampaignTable,ChatFeed,CommandBar,CommandInterface,EmailCampaignsView,EmailComposeActionButtons,EmailTemplatesSection,EntityCard,EntityCommandCard,ErrorBoundary,EventRow,EventStreamFeed,EventStreamSidebar,Input,IntelligenceLab,IntelligenceScoreCard,MainShell,MetricComparisonList,ModuleContainer,ModuleErrorBoundary,ModuleSkeleton,OSNavigationRail,PageErrorFallback,PageHeader,PageHeaderActionButton,RouteWithErrorBoundary,SearchBar,Skeleton,StatCardGrid,StatCards,StatCardsWithChart,StatusBadge,TabSystem,TaskCreateForm,TaskItem,TaskList,TasksView,TemplateCard});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1,20 @@
|
|
|
1
|
-
import{forwardRef as Te}from"react";import{clsx as Le}from"clsx";import{twMerge as Ae}from"tailwind-merge";function o(...t){return Ae(Le(t))}import{jsx as Ve}from"react/jsx-runtime";var De={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},T=Te(({className:t,variant:e="primary",disabled:r,...n},i)=>Ve("button",{ref:i,disabled:r,className:o("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-4 py-2 font-semibold transition-[background,border-color] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)]",De[e],t),...n}));T.displayName="Button";import{useRef as He}from"react";import{Loader2 as _e,Paperclip as Oe,Send as Ge,Sparkles as Fe}from"lucide-react";import{jsx as p,jsxs as oe}from"react/jsx-runtime";function P({promptValue:t="",onPromptChange:e,onPromptSubmit:r,onFilesAttach:n,isProcessing:i=!1,response:s,placeholder:a="Ask Citron Intelligence...",accept:u,multiple:d=!0,className:y}){let N=He(null),b=f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),r?.())},F=()=>{N.current?.click()},te=f=>{let E=f.target.files;E&&E.length>0&&n&&n(Array.from(E)),f.target.value=""};return oe("div",{className:o("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",y),children:[oe("div",{className:o("flex items-center gap-[var(--inkblot-spacing-2)]",i&&"pointer-events-none"),children:[p("input",{ref:N,type:"file",accept:u,multiple:d,onChange:te,className:"sr-only","aria-hidden":!0}),p("button",{type:"button",onClick:F,disabled:i,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:p(Oe,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),oe("div",{className:o("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),"aria-busy":i,children:[p("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:p(Fe,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),p("textarea",{value:t,onChange:f=>e?.(f.target.value),onKeyDown:b,placeholder:a,rows:2,disabled:i,className:o("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),p("div",{className:o("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)]",i?"pointer-events-none bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-90":""),children:i?p(_e,{size:16,strokeWidth:2,className:"animate-spin text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0}):p("button",{type:"button",onClick:r,disabled:i,className:o("flex h-full w-full items-center justify-center rounded-[var(--inkblot-radius-full)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]"),"aria-label":"Enviar",children:p(Ge,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})})]})]}),s?p("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:p("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}import{jsx as I,jsxs as R}from"react/jsx-runtime";var Ke={Person:"border-l-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-background-secondary)]",Organization:"border-l-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-background-secondary)]",Deal:"border-l-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-background-secondary)]"};function $({name:t,entityType:e,metadata:r,edges:n=[],className:i}){return R("article",{className:o("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] border-l-4 p-4",Ke[e],i),children:[R("div",{className:"flex flex-col gap-1",children:[I("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:e}),I("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t})]}),r&&Object.keys(r).length>0?I("dl",{className:"flex flex-col gap-1",children:Object.entries(r).map(([s,a])=>R("div",{className:"flex gap-2",children:[R("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),I("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a})]},s))}):null,n.length>0?R("div",{className:"flex flex-col gap-2",children:[I("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),I("ul",{className:"flex flex-wrap gap-2",children:n.map((s,a)=>R("li",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-1 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:[s.type,s.target?` \u2192 ${s.target}`:""]},a))})]}):null]})}import{forwardRef as ze}from"react";import{jsx as $e}from"react/jsx-runtime";var D=ze(({className:t,error:e,disabled:r,...n},i)=>$e("input",{ref:i,disabled:r,"aria-invalid":e,"aria-disabled":r,className:o("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)] border bg-[var(--inkblot-semantic-color-background-secondary)] px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-[border-color,box-shadow] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--inkblot-semantic-color-border-focus)] focus-visible:ring-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",e?"border-[var(--inkblot-semantic-color-status-error)] focus-visible:ring-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",t),...n}));D.displayName="Input";import{Component as Ue}from"react";import{jsx as ae,jsxs as We}from"react/jsx-runtime";var l=class extends Ue{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?We("div",{role:"alert",className:o("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",this.props.className),children:[ae("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),ae("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),ae(T,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};import{jsx as k,jsxs as ne}from"react/jsx-runtime";function ue({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let u=d=>{d.key==="Enter"&&(d.preventDefault(),s?.())};return k(l,{className:a,children:ne("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[k("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?k("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:e}):null,r.length>0?ne("div",{children:[k("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),k("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((d,y)=>ne("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[k("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:d.label}),k("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:d.value})]},y))})]}):null,k("div",{className:"mt-2",children:k(D,{type:"text",value:n,onChange:d=>i?.(d.target.value),onKeyDown:u,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}import{Component as je}from"react";import{jsx as ve}from"react/jsx-runtime";var U=class extends je{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:ve("div",{className:o("inline-flex items-center gap-3 rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-4 py-3 text-[var(--inkblot-semantic-color-text-secondary)]",this.props.className),role:"alert",children:ve("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};import{jsx as qe}from"react/jsx-runtime";var Ze={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function W({label:t,variant:e="info",className:r}){return qe("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Ze[e],r),children:t})}import{jsx as B,jsxs as Qe}from"react/jsx-runtime";function Je(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function j({event:t,className:e}){let r=Je(t.confidence_score),n=`${Math.round(t.confidence_score*100)}%`;return Qe("div",{className:o("flex flex-wrap items-center gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",e),children:[B("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),B("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),B("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),B("span",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-0.5 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:t.event_type}),B("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),B(W,{label:n,variant:r})]})}import{jsx as h,jsxs as be}from"react/jsx-runtime";var Xe={success:"bg-[var(--inkblot-semantic-color-status-success)]",warning:"bg-[var(--inkblot-semantic-color-status-warning)]",error:"bg-[var(--inkblot-semantic-color-status-error)]",info:"bg-[var(--inkblot-semantic-color-status-info)]"};function Ye(){return h("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:h("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function fe({events:t,className:e}){return h(l,{className:e,children:h("div",{className:o("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(r=>be("div",{className:"flex items-start gap-3",children:[h("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??h(Ye,{})}),be("div",{className:"min-w-0 flex-1",children:[h("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),h("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?h("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",Xe[r.status]),"aria-hidden":!0}):null]},r.id))})})}import{jsx as x,jsxs as V}from"react/jsx-runtime";var se=36,ie=2*Math.PI*se;function Z({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=ie-s/100*ie;return x(l,{className:i,children:V("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[V("div",{className:"relative",children:[V("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[x("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),x("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ie,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),x("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:V("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?x("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:x("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?x("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:x("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),V("div",{className:"text-center",children:[x("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?x("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}import{jsx as S,jsxs as rt}from"react/jsx-runtime";var et={default:"text-[var(--inkblot-semantic-color-text-primary)]",success:"text-[var(--inkblot-semantic-color-status-success)]",warning:"text-[var(--inkblot-semantic-color-status-warning)]",error:"text-[var(--inkblot-semantic-color-status-error)]"};function tt({className:t}){return S("svg",{viewBox:"0 0 16 16",className:o("h-4 w-4",t),"aria-hidden":!0,children:S("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function ge({items:t,className:e}){return S(l,{className:e,children:S("ul",{className:o("flex flex-col gap-4 py-2"),children:t.map((r,n)=>rt("li",{className:"flex items-center justify-between gap-4",children:[S("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:r.label}),S("span",{className:o("flex items-center gap-1 text-sm font-medium",et[r.variant??"default"]),children:r.value!=null?r.value:S(tt,{})})]},n))})})}import{jsx as ot}from"react/jsx-runtime";function C({className:t,...e}){return ot("div",{className:o("animate-shimmer rounded-[var(--inkblot-radius-md)] bg-[length:200%_100%] bg-[linear-gradient(90deg,var(--inkblot-semantic-color-background-secondary)_0%,var(--inkblot-semantic-color-background-tertiary)_50%,var(--inkblot-semantic-color-background-secondary)_100%)]",t),...e})}import{jsx as H,jsxs as at}from"react/jsx-runtime";function L({className:t,...e}){return at("div",{className:o("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",t),...e,children:[H(C,{className:"h-5 w-3/4"}),H(C,{className:"h-4 w-full"}),H(C,{className:"h-4 w-5/6"}),H(C,{className:"h-4 w-4/5"}),H(C,{className:"h-4 w-3/4"})]})}import{jsx as q,jsxs as xe}from"react/jsx-runtime";function J({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return q(l,{className:n,onRetry:i,children:e?xe("div",{className:o("flex flex-col gap-4",n),children:[r?q("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,q(L,{})]}):xe("div",{className:o("flex flex-col gap-4",n),children:[r?q("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}import{jsx as _,jsxs as nt}from"react/jsx-runtime";function ye({items:t,className:e}){return _(l,{className:e,children:_("nav",{className:o("flex w-14 flex-col items-center gap-1 border-r border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] py-4"),"aria-label":"Navigation",children:t.map(r=>nt("div",{className:o("relative flex w-full flex-col items-center gap-1 rounded-[var(--inkblot-radius-md)] px-2 py-2 transition-colors hover:text-[var(--inkblot-semantic-color-text-secondary)]",r.active?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-tertiary)]"),children:[r.active?_("span",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null,_("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?_("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}import{Mail as ke,FileText as Q,Zap as it,Phone as he,Link2 as st}from"lucide-react";import{jsx as v,jsxs as Ne}from"react/jsx-runtime";function lt(t){return t>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":t>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":t>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var ct={EMAIL_OPENED:ke,EMAIL_SENT:ke,INVOICE_PAID:Q,INVOICE_OVERDUE:Q,CONTRACT_SIGNED:Q,STAGE_CHANGED:it,CALL_COMPLETED:he,PHONE_CALL:he,RELATIONSHIP_DETECTED:st};function dt(t){return ct[t]??Q}function mt(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function pt(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function X({events:t,onEntitySelect:e,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=e?a=>{let u=r?.(a.subject)??r?.(a.actor);u&&e(u)}:void 0;return v(l,{children:v("div",{className:o("space-y-2",i),children:t.length===0?v("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):t.map(a=>{let d=!!(r?.(a.subject)??r?.(a.actor))&&!!s,y=dt(a.event_type),N=Ne("div",{className:"flex flex-1 items-center gap-3",children:[v(y,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),v("div",{className:`h-2 w-2 shrink-0 rounded-full ${lt(a.confidence_score)}`,"aria-hidden":!0}),Ne("div",{className:"min-w-0 flex-1",children:[v("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:mt(a)}),v("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:pt(a)})]}),v("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),b=a.id??`${a.actor}-${a.subject}-${a.timestamp}`;return v("div",{children:d?v("button",{type:"button",onClick:()=>s(a),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:N}):v("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:N})},b)})})})}import{NavLink as ut}from"react-router-dom";import{ClipboardList as vt,Brain as bt,BarChart3 as ft,Network as gt,Activity as xt,Settings as yt,Sparkles as kt}from"lucide-react";import{jsx as w,jsxs as Nt}from"react/jsx-runtime";var ht=[{id:"home",path:"/",icon:vt,label:"Home"},{id:"intelligence",path:"/intelligence",icon:bt,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:ft,label:"Pipeline"},{id:"graph",path:"/graph",icon:gt,label:"Graph"},{id:"events",path:"/events",icon:xt,label:"Events"},{id:"settings",path:"/settings",icon:yt,label:"Settings"}];function Ee({items:t=ht,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return w(l,{children:Nt("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",n),children:[w("div",{className:"flex flex-col items-center gap-2",children:w("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",title:r,children:e??w(kt,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),w("div",{className:"flex flex-1 flex-col gap-2",children:t.map(i=>{let s=i.icon;return w(ut,{to:i.path,end:i.path==="/","aria-label":i.label,className:({isActive:a})=>`flex items-center justify-center gap-2 rounded-[var(--inkblot-radius-md)] border-l-2 px-3 py-2 transition-colors duration-[var(--inkblot-duration-fast)] ${a?"border-[var(--inkblot-semantic-color-interactive-primary)] bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)]":"border-transparent text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]"}`,children:w(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}import{useState as Y,useCallback as Et,useRef as Ct,useEffect as St}from"react";import{jsx as c,jsxs as ee}from"react/jsx-runtime";function wt(t){let e=t.toLowerCase();return e.includes("entity")||e.includes("company")||e.includes("person")||e.includes("deal")||e.includes("profile")||e.includes("org")?"entity":e.includes("event")||e.includes("activity")||e.includes("recent")||e.includes("stream")||e.includes("log")?"event":"general"}function Mt({entities:t}){let e=t[0];return e?ee("div",{className:"space-y-3",children:[c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Here's the entity profile and current intelligence scores:"}),c($,{name:e.name,entityType:e.type,metadata:e.metadata,edges:[{type:"WORKS_WITH",target:t[1]?.name},{type:"MANAGES",target:t[4]?.name}]})]}):null}function Pt({events:t}){return ee("div",{className:"space-y-2",children:[c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Latest activity from the event bus:"}),t.slice(0,5).map(e=>c(j,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function It(){return c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:"Revenue confidence is trending upward at 78%. Momentum score increased 12% this week driven by 3 new meetings with Acme Corp. Churn risk remains low at 15% across the active pipeline."})}function Ce({entities:t,events:e,onFocusEntity:r,findEntity:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[u,d]=Y(""),[y,N]=Y([]),[b,F]=Y(!1),[te,f]=Y(new Map),E=Ct(null);St(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[y,b]);let Re=Et(()=>{let g=u.trim();if(!g||b)return;let de=n?.(g);de&&r&&r(de);let Be={id:`msg-${Date.now()}`,role:"user",content:g,timestamp:new Date().toISOString()},me=wt(g);N(K=>[...K,Be]),d(""),F(!0),setTimeout(()=>{let K={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:me,timestamp:new Date().toISOString()},z;switch(me){case"entity":z=c(Mt,{entities:t});break;case"event":z=c(Pt,{events:e});break;default:z=c(It,{})}f(re=>{let pe=new Map(re);return pe.set(K.id,z),pe}),N(re=>[...re,K]),F(!1)},1e3)},[u,b,t,e,r,n]);return ee("div",{className:o("flex h-full flex-col",a),children:[ee("div",{ref:E,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[y.length===0&&!b?c("div",{className:"flex flex-1 items-center justify-center py-12",children:c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})}):y.map(g=>c("div",{className:"flex flex-col gap-2",children:g.role==="user"?c("div",{className:"flex justify-end",children:c("div",{className:"max-w-[80%] rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-interactive-primary)] px-4 py-3 text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:g.content})}):c("div",{className:"max-w-[90%]",children:te.get(g.id)??c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:g.content})})},g.id)),b&&c("div",{className:"max-w-[70%]",children:c(L,{className:"animate-shimmer"})})]}),c("div",{className:"shrink-0 border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-primary)] p-4",children:c(P,{promptValue:u,onPromptChange:d,onPromptSubmit:Re,isProcessing:b,placeholder:i})})]})}import{Sparkles as Rt}from"lucide-react";import{jsx as O,jsxs as Se}from"react/jsx-runtime";function we({prompt:t,onPromptChange:e,onSubmit:r,isProcessing:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",subtitle:s="Citron OS v1.0 \u2014 AI-native Revenue & Operations Platform",className:a}){return Se("div",{className:o("border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",a),children:[Se("div",{className:"flex items-center gap-3",children:[O("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",children:O(Rt,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),O("div",{className:"flex-1",children:O(P,{promptValue:t,onPromptChange:e,onPromptSubmit:r,isProcessing:n,placeholder:i})})]}),s&&O("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}import{jsx as A,jsxs as le}from"react/jsx-runtime";function Me({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return A(l,{children:le("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[le("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[A("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&le("div",{className:"flex items-center gap-2",children:[A("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),A("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),A("div",{className:"flex-1 overflow-auto p-4",children:A(X,{events:t})})]})})}import{jsx as m,jsxs as M}from"react/jsx-runtime";var Bt=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],Lt=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function Pe({loading:t,kpiCards:e=Bt,aiInsights:r=Lt,title:n="Intelligence Lab",subtitle:i="AI-generated insights - Updated 3 min ago",className:s}){return M("div",{className:o("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[M("div",{children:[m("h1",{className:"text-2xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:n}),m("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i})]}),m(J,{loading:t,title:"",children:m(l,{children:M("div",{className:"flex flex-col gap-4",children:[m("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:e.map(a=>m(Z,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),M("div",{children:[m("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),m("div",{className:"flex flex-col gap-4",children:r.map(a=>m(l,{children:M("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[M("div",{className:"min-w-0 flex-1",children:[m("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),m("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.description})]}),M("div",{className:"flex shrink-0 flex-col items-center",children:[m("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:a.confidence}),m("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},a.title))})]})]})})})]})}import{jsx as G,jsxs as ce}from"react/jsx-runtime";function Ie({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return ce("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[G("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),G("main",{className:"flex flex-1 flex-col overflow-hidden",children:ce("div",{className:"flex min-h-0 flex-1",children:[ce("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[G("div",{className:"flex-1 overflow-auto",children:n}),G("div",{className:"shrink-0",children:r})]}),e&&G("aside",{className:o("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:e})]})})]})}export{X as ActivityStream,Ee as AppNavigationRail,T as Button,Ce as ChatFeed,we as CommandBar,P as CommandInterface,$ as EntityCard,ue as EntityCommandCard,U as ErrorBoundary,j as EventRow,fe as EventStreamFeed,Me as EventStreamSidebar,D as Input,Pe as IntelligenceLab,Z as IntelligenceScoreCard,Ie as MainShell,ge as MetricComparisonList,J as ModuleContainer,l as ModuleErrorBoundary,L as ModuleSkeleton,ye as OSNavigationRail,C as Skeleton,W as StatusBadge};
|
|
1
|
+
import{Send as Ge,Calendar as ze}from"lucide-react";import{clsx as Oe}from"clsx";import{twMerge as _e}from"tailwind-merge";function e(...t){return _e(Oe(t))}import{jsx as kt,jsxs as Ke}from"react/jsx-runtime";var $e={primary:["bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]"],secondary:["bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)]","border border-[var(--inkblot-semantic-color-border-default)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","active:bg-[var(--inkblot-semantic-color-background-tertiary)]"]};function $t({buttons:t,className:r}){return kt("div",{className:e("flex flex-wrap items-center gap-[var(--inkblot-spacing-3)]",r),children:t.map(a=>Ke("button",{type:"button",onClick:()=>{a.onClick?.()},disabled:a.disabled,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",$e[a.variant]),children:[a.icon??null,a.label]},a.id))})}function xt({onSendNow:t,onSchedule:r,onSaveDraft:a,className:o}){return kt($t,{buttons:[{id:"send",label:"Send Now",variant:"primary",icon:kt(Ge,{className:"h-4 w-4"}),onClick:t},{id:"schedule",label:"Schedule",variant:"secondary",icon:kt(ze,{className:"h-4 w-4"}),onClick:r},{id:"draft",label:"Save Draft",variant:"secondary",onClick:a}],className:o})}import{forwardRef as Ue}from"react";import{Loader2 as je,Sparkles as qe}from"lucide-react";import{jsx as U,jsxs as Kt}from"react/jsx-runtime";var it=Ue(({label:t,loading:r=!1,onWriteWithAI:a,disabled:o,className:n,...s},i)=>{let l=o||r;return Kt("div",{className:e("flex flex-col gap-[var(--inkblot-spacing-2)]",n),children:[Kt("div",{className:"flex items-center justify-between",children:[t?U("label",{htmlFor:s.id,className:e("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t}):U("span",{}),a?Kt("button",{type:"button",onClick:a,disabled:r,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed disabled:pointer-events-none"),children:[r?U(je,{className:"h-4 w-4 shrink-0 animate-spin"}):U(qe,{className:"h-4 w-4 shrink-0",style:{color:"var(--inkblot-semantic-color-status-warning)"}}),r?"Generating...":"Write with AI"]}):null]}),U("div",{className:"relative",children:U("textarea",{ref:i,disabled:l,className:e("min-h-[12rem] w-full rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed disabled:pointer-events-none"),...s})})]})});it.displayName="AIComposeInput";import{forwardRef as Qe}from"react";import{jsx as Ze}from"react/jsx-runtime";var Ye={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},st=Qe(({className:t,variant:r="primary",disabled:a,...o},n)=>Ze("button",{ref:n,disabled:a,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-4 py-2 font-semibold transition-[background,border-color] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)]",Ye[r],t),...o}));st.displayName="Button";import{CheckCircle as Xe,Zap as Je,FileText as tr,Clock as er}from"lucide-react";import{jsx as x,jsxs as lt}from"react/jsx-runtime";var rr={sent:{icon:Xe,label:"Sent",colorClass:"text-[var(--inkblot-semantic-color-status-success)]"},active:{icon:Je,label:"Active",colorClass:"text-[var(--inkblot-semantic-color-status-warning)]"},draft:{icon:tr,label:"Draft",colorClass:"text-[var(--inkblot-semantic-color-text-secondary)]"},scheduled:{icon:er,label:"Scheduled",colorClass:"text-[var(--inkblot-semantic-color-status-info)]"}};function ht({columns:t,rows:r,className:a}){return x("div",{className:e("overflow-x-auto rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-subtle)]","bg-[var(--inkblot-semantic-color-background-primary)]",a),children:lt("table",{className:"w-full min-w-[600px] border-collapse",children:[x("thead",{children:x("tr",{className:"bg-[var(--inkblot-semantic-color-background-secondary)]",children:t.map(o=>x("th",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)] text-left","uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.label},o.key))})}),x("tbody",{children:r.map(o=>lt("tr",{className:e("border-b border-[var(--inkblot-semantic-color-border-subtle)] last:border-b-0","transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)]/50"),children:[x("td",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:lt("div",{className:"flex flex-col gap-0.5",children:[x("span",{className:e("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:o.campaignName}),x("span",{className:e("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:o.recipients})]})}),x("td",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:x(ar,{status:o.status,subtext:o.statusSubtext})}),x("td",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.opens}),x("td",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.clicks}),x("td",{className:e("px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)]","border-b border-[var(--inkblot-semantic-color-border-subtle)]"),children:o.date})]},o.id))})]})})}function ar({status:t,subtext:r}){let a=rr[t],o=a.icon;return lt("div",{className:"flex flex-col gap-0.5",children:[lt("div",{className:e("inline-flex items-center gap-1.5","[font:var(--inkblot-semantic-typography-body-small)] font-medium",a.colorClass),children:[x(o,{className:"h-4 w-4 shrink-0"}),a.label]}),r?x("span",{className:e("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:r}):null]})}import{Sparkles as nr}from"lucide-react";import{File as or}from"lucide-react";import{jsx as ct,jsxs as ie}from"react/jsx-runtime";function Nt({category:t,title:r,uses:a,onClick:o,className:n}){return ie("button",{type:"button",onClick:o,className:e("flex flex-col gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","border border-[var(--inkblot-semantic-color-border-subtle)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-5)]","text-left transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",n),children:[ie("div",{className:"flex items-start justify-between gap-2",children:[ct("span",{className:e("rounded-[var(--inkblot-radius-md)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","bg-[var(--inkblot-semantic-color-background-tertiary)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]"),children:t}),ct("span",{className:e("[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:a})]}),ct("h3",{className:e("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:r}),ct("div",{className:"flex flex-1 items-end justify-center pt-[var(--inkblot-spacing-4)]",children:ct(or,{className:e("h-10 w-10","text-[var(--inkblot-semantic-color-text-tertiary)]")})})]})}import{jsx as Ct,jsxs as Ut}from"react/jsx-runtime";function St({title:t="EMAIL TEMPLATES",onGenerateWithAI:r,templates:a,onTemplateClick:o,className:n}){return Ut("section",{className:e("flex flex-col gap-[var(--inkblot-spacing-6)]",n),children:[Ut("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)] sm:flex-row sm:items-center sm:justify-between",children:[Ct("h2",{className:e("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t}),r?Ut("button",{type:"button",onClick:r,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] w-fit items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:[Ct(nr,{className:"h-4 w-4 shrink-0",style:{color:"var(--inkblot-semantic-color-status-warning)"}}),"Generate with AI"]}):null]}),Ct("div",{className:"grid grid-cols-1 gap-[var(--inkblot-spacing-6)] sm:grid-cols-2",children:a.map(s=>Ct(Nt,{category:s.category,title:s.title,uses:s.uses,onClick:()=>o?.(s)},s.id))})]})}import{useRef as ir}from"react";import{Loader2 as sr,Paperclip as lr,Send as cr,Sparkles as mr}from"lucide-react";import{jsx as C,jsxs as jt}from"react/jsx-runtime";function j({promptValue:t="",onPromptChange:r,onPromptSubmit:a,onFilesAttach:o,isProcessing:n=!1,response:s,placeholder:i="Ask Citron Intelligence...",accept:l,multiple:c=!0,className:d}){let m=ir(null),b=y=>{y.key==="Enter"&&!y.shiftKey&&(y.preventDefault(),a?.())},B=()=>{m.current?.click()},H=y=>{let N=y.target.files;N&&N.length>0&&o&&o(Array.from(N)),y.target.value=""};return jt("div",{className:e("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",d),children:[jt("div",{className:e("flex items-center gap-[var(--inkblot-spacing-2)]",n&&"pointer-events-none"),children:[C("input",{ref:m,type:"file",accept:l,multiple:c,onChange:H,className:"sr-only","aria-hidden":!0}),C("button",{type:"button",onClick:B,disabled:n,className:e("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:C(lr,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),jt("div",{className:e("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),"aria-busy":n,children:[C("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:C(mr,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),C("textarea",{value:t,onChange:y=>r?.(y.target.value),onKeyDown:b,placeholder:i,rows:2,disabled:n,className:e("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),C("div",{className:e("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)]",n?"pointer-events-none bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-90":""),children:n?C(sr,{size:16,strokeWidth:2,className:"animate-spin text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0}):C("button",{type:"button",onClick:a,disabled:n,className:e("flex h-full w-full items-center justify-center rounded-[var(--inkblot-radius-full)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]"),"aria-label":"Enviar",children:C(cr,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})})]})]}),s?C("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:C("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}import{jsx as q,jsxs as Q}from"react/jsx-runtime";var dr={Person:"border-l-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-background-secondary)]",Organization:"border-l-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-background-secondary)]",Deal:"border-l-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-background-secondary)]"};function wt({name:t,entityType:r,metadata:a,edges:o=[],className:n}){return Q("article",{className:e("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] border-l-4 p-4",dr[r],n),children:[Q("div",{className:"flex flex-col gap-1",children:[q("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}),q("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t})]}),a&&Object.keys(a).length>0?q("dl",{className:"flex flex-col gap-1",children:Object.entries(a).map(([s,i])=>Q("div",{className:"flex gap-2",children:[Q("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),q("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:i})]},s))}):null,o.length>0?Q("div",{className:"flex flex-col gap-2",children:[q("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),q("ul",{className:"flex flex-wrap gap-2",children:o.map((s,i)=>Q("li",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-1 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:[s.type,s.target?` \u2192 ${s.target}`:""]},i))})]}):null]})}import{forwardRef as pr}from"react";import{jsx as br}from"react/jsx-runtime";var mt=pr(({className:t,error:r,disabled:a,...o},n)=>br("input",{ref:n,disabled:a,"aria-invalid":r,"aria-disabled":a,className:e("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)] border bg-[var(--inkblot-semantic-color-background-secondary)] px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-[border-color,box-shadow] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--inkblot-semantic-color-border-focus)] focus-visible:ring-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",r?"border-[var(--inkblot-semantic-color-status-error)] focus-visible:ring-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",t),...o}));mt.displayName="Input";import{Component as ur}from"react";import{jsx as qt,jsxs as vr}from"react/jsx-runtime";var p=class extends ur{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}render(){return this.state.hasError&&this.state.error?vr("div",{role:"alert",className:e("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",this.props.className),children:[qt("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),qt("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),qt(st,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};import{jsx as M,jsxs as Qt}from"react/jsx-runtime";function se({title:t,insights:r,stats:a=[],commandValue:o="",onCommandChange:n,onCommandSubmit:s,className:i}){let l=c=>{c.key==="Enter"&&(c.preventDefault(),s?.())};return M(p,{className:i,children:Qt("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[M("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?M("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:r}):null,a.length>0?Qt("div",{children:[M("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),M("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:a.map((c,d)=>Qt("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[M("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:c.label}),M("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:c.value})]},d))})]}):null,M("div",{className:"mt-2",children:M(mt,{type:"text",value:o,onChange:c=>n?.(c.target.value),onKeyDown:l,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}import{Component as gr}from"react";import{jsx as le}from"react/jsx-runtime";var Pt=class extends gr{constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:le("div",{className:e("inline-flex items-center gap-3 rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-4 py-3 text-[var(--inkblot-semantic-color-text-secondary)]",this.props.className),role:"alert",children:le("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};import{jsx as yr}from"react/jsx-runtime";var fr={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function Et({label:t,variant:r="info",className:a}){return yr("span",{className:e("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",fr[r],a),children:t})}import{jsx as Y,jsxs as xr}from"react/jsx-runtime";function kr(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function Tt({event:t,className:r}){let a=kr(t.confidence_score),o=`${Math.round(t.confidence_score*100)}%`;return xr("div",{className:e("flex flex-wrap items-center gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",r),children:[Y("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),Y("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),Y("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),Y("span",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-0.5 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:t.event_type}),Y("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),Y(Et,{label:o,variant:a})]})}import{jsx as R,jsxs as ce}from"react/jsx-runtime";var hr={success:"bg-[var(--inkblot-semantic-color-status-success)]",warning:"bg-[var(--inkblot-semantic-color-status-warning)]",error:"bg-[var(--inkblot-semantic-color-status-error)]",info:"bg-[var(--inkblot-semantic-color-status-info)]"};function Nr(){return R("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:R("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function me({events:t,className:r}){return R(p,{className:r,children:R("div",{className:e("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(a=>ce("div",{className:"flex items-start gap-3",children:[R("div",{className:"flex shrink-0 items-center pt-0.5",children:a.icon??R(Nr,{})}),ce("div",{className:"min-w-0 flex-1",children:[R("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),R("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),a.status?R("div",{className:e("mt-1.5 h-2 w-2 shrink-0 rounded-full",hr[a.status]),"aria-hidden":!0}):null]},a.id))})})}import{jsx as I,jsxs as dt}from"react/jsx-runtime";var Zt=36,Yt=2*Math.PI*Zt;function It({label:t,value:r,subtext:a,trend:o,className:n}){let s=Math.min(100,Math.max(0,r)),i=Yt-s/100*Yt;return I(p,{className:n,children:dt("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[dt("div",{className:"relative",children:[dt("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[I("circle",{cx:"48",cy:"48",r:Zt,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),I("circle",{cx:"48",cy:"48",r:Zt,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:Yt,strokeDashoffset:i,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),I("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:dt("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",o==="up"?I("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:I("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):o==="down"?I("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:I("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),dt("div",{className:"text-center",children:[I("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),a?I("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a}):null]})]})})}import{jsx as W,jsxs as wr}from"react/jsx-runtime";var Cr={default:"text-[var(--inkblot-semantic-color-text-primary)]",success:"text-[var(--inkblot-semantic-color-status-success)]",warning:"text-[var(--inkblot-semantic-color-status-warning)]",error:"text-[var(--inkblot-semantic-color-status-error)]"};function Sr({className:t}){return W("svg",{viewBox:"0 0 16 16",className:e("h-4 w-4",t),"aria-hidden":!0,children:W("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function de({items:t,className:r}){return W(p,{className:r,children:W("ul",{className:e("flex flex-col gap-4 py-2"),children:t.map((a,o)=>wr("li",{className:"flex items-center justify-between gap-4",children:[W("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a.label}),W("span",{className:e("flex items-center gap-1 text-sm font-medium",Cr[a.variant??"default"]),children:a.value!=null?a.value:W(Sr,{})})]},o))})})}import{jsx as Pr}from"react/jsx-runtime";function A({className:t,...r}){return Pr("div",{className:e("animate-shimmer rounded-[var(--inkblot-radius-md)] bg-[length:200%_100%] bg-[linear-gradient(90deg,var(--inkblot-semantic-color-background-secondary)_0%,var(--inkblot-semantic-color-background-tertiary)_50%,var(--inkblot-semantic-color-background-secondary)_100%)]",t),...r})}import{jsx as pt,jsxs as Er}from"react/jsx-runtime";function Z({className:t,...r}){return Er("div",{className:e("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",t),...r,children:[pt(A,{className:"h-5 w-3/4"}),pt(A,{className:"h-4 w-full"}),pt(A,{className:"h-4 w-5/6"}),pt(A,{className:"h-4 w-4/5"}),pt(A,{className:"h-4 w-3/4"})]})}import{jsx as Mt,jsxs as pe}from"react/jsx-runtime";function Rt({children:t,loading:r=!1,title:a,className:o,onRetry:n}){return Mt(p,{className:o,onRetry:n,children:r?pe("div",{className:e("flex flex-col gap-4",o),children:[a?Mt("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a}):null,Mt(Z,{})]}):pe("div",{className:e("flex flex-col gap-4",o),children:[a?Mt("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a}):null,t]})})}import{Plus as Tr}from"lucide-react";import{jsx as bt,jsxs as Bt}from"react/jsx-runtime";function X({title:t,subtitle:r,icon:a,action:o,className:n}){return Bt("header",{className:e("flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between","pb-[var(--inkblot-spacing-2)]",n),children:[Bt("div",{className:"flex items-start gap-[var(--inkblot-spacing-3)]",children:[a?bt("div",{className:e("flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","[color:var(--inkblot-semantic-color-status-warning)]"),children:a}):null,Bt("div",{className:"min-w-0",children:[bt("h1",{className:e("text-[var(--inkblot-semantic-color-text-primary)]","[font:var(--inkblot-semantic-typography-heading-medium)]"),children:t}),r?bt("p",{className:e("mt-0.5 text-[var(--inkblot-semantic-color-text-secondary)]","[font:var(--inkblot-semantic-typography-body-small)]"),children:r}):null]})]}),o?bt("div",{className:"mt-[var(--inkblot-spacing-4)] shrink-0 sm:mt-0",children:o}):null]})}function J({label:t,onClick:r,icon:a,className:o}){return Bt("button",{type:"button",onClick:r,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","[font:var(--inkblot-semantic-typography-body-medium)] font-semibold","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]",o),children:[a??bt(Tr,{className:"h-4 w-4"}),t]})}import{Link as Ir}from"react-router-dom";import{jsx as Xt,jsxs as be}from"react/jsx-runtime";function At({resetErrorBoundary:t}){return be("div",{role:"alert",className:e("flex min-h-[50vh] flex-col items-center justify-center gap-[var(--inkblot-spacing-6)] px-[var(--inkblot-spacing-6)] py-[var(--inkblot-spacing-8)]","bg-[var(--inkblot-semantic-color-background-primary)]","[font:var(--inkblot-semantic-typography-body-small)]"),children:[Xt("p",{className:"text-center text-[var(--inkblot-semantic-color-text-primary)] [font:var(--inkblot-semantic-typography-heading-medium)]",children:"Esta p\xE1gina no est\xE1 disponible"}),be("div",{className:"flex flex-col items-center gap-[var(--inkblot-spacing-4)] sm:flex-row",children:[Xt("button",{type:"button",onClick:t,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:"Reintentar"}),Xt(Ir,{to:"/",className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","text-[var(--inkblot-semantic-color-interactive-primary)] underline-offset-4 hover:underline","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","transition-colors duration-[var(--inkblot-duration-fast)]"),children:"Ir al inicio"})]})]})}import{ErrorBoundary as Mr}from"react-error-boundary";import{useNavigate as Rr}from"react-router-dom";import{jsx as Br}from"react/jsx-runtime";function ue({children:t,fallback:r}){let a=Rr();return Br(Mr,{FallbackComponent:r??At,onReset:()=>{a("/")},children:t})}import{forwardRef as Ar}from"react";import{Search as Lr}from"lucide-react";import{jsx as Jt,jsxs as ve}from"react/jsx-runtime";var L=Ar(({className:t,label:r,error:a,disabled:o,...n},s)=>ve("div",{className:"flex flex-col gap-1",children:[r?Jt("label",{htmlFor:n.id,className:e("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:r}):null,ve("div",{className:e("flex items-center gap-2 rounded-[var(--inkblot-radius-full)]","bg-[var(--inkblot-semantic-color-background-secondary)]","border transition-colors duration-[var(--inkblot-duration-fast)]","focus-within:ring-2 focus-within:ring-[var(--inkblot-semantic-color-border-focus)] focus-within:ring-offset-2 focus-within:ring-offset-[var(--inkblot-semantic-color-background-primary)]",a?"border-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",o&&"opacity-[var(--inkblot-opacity-disabled)] pointer-events-none cursor-not-allowed"),children:[Jt(Lr,{className:e("ml-[var(--inkblot-spacing-4)] h-4 w-4 shrink-0","text-[var(--inkblot-semantic-color-text-tertiary)]")}),Jt("input",{ref:s,type:"search",disabled:o,"aria-invalid":a,"aria-label":r??"Search",className:e("min-h-[var(--inkblot-size-touch-target-min)] w-full flex-1 bg-transparent px-2 py-[var(--inkblot-spacing-2)] pr-[var(--inkblot-spacing-4)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none","disabled:cursor-not-allowed",t),...n})]})]}));L.displayName="SearchBar";import{jsx as Dr}from"react/jsx-runtime";function ge({children:t,columns:r=4,className:a}){return Dr("div",{className:e("grid gap-[var(--inkblot-spacing-4)]",{1:"grid-cols-1",2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4"}[r],a),children:t})}import{jsx as ut,jsxs as Vr}from"react/jsx-runtime";function fe({items:t,className:r}){return ut(p,{className:r,children:ut("nav",{className:e("flex w-14 flex-col items-center gap-1 border-r border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] py-4"),"aria-label":"Navigation",children:t.map(a=>Vr("div",{className:e("relative flex w-full flex-col items-center gap-1 rounded-[var(--inkblot-radius-md)] px-2 py-2 transition-colors hover:text-[var(--inkblot-semantic-color-text-secondary)]",a.active?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-tertiary)]"),children:[a.active?ut("span",{className:"absolute left-0 top-1/2 h-6 w-0.5 -translate-y-1/2 rounded-r-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null,ut("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:a.icon}),a.label?ut("span",{className:"text-[10px] font-medium",children:a.label}):null]},a.id))})})}import{jsx as S,jsxs as te}from"react/jsx-runtime";var ye={success:"text-[var(--inkblot-semantic-color-status-success)]",error:"text-[var(--inkblot-semantic-color-status-error)]",neutral:"text-[var(--inkblot-semantic-color-text-secondary)]"};function Lt({items:t,className:r}){return S("div",{className:e("grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",r),children:t.map(a=>S(Hr,{item:a},a.label))})}function Hr({item:t}){let r=t.changeVariant??"neutral",a=ye[r];return te("div",{className:e("flex flex-col gap-1 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-4)]","border border-[var(--inkblot-semantic-color-border-subtle)]"),children:[S("span",{className:e("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t.label}),S("span",{className:e("[font:var(--inkblot-semantic-typography-heading-medium)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t.value}),t.change?S("span",{className:e("[font:var(--inkblot-semantic-typography-body-small)]",a),children:t.change}):null]})}function ke({items:t,className:r}){return S("div",{className:e("grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",r),children:t.map(a=>S(Fr,{item:a},a.label))})}function Fr({item:t}){let r=t.changeVariant??"neutral",a=ye[r],o=t.chartData??[],n=Math.max(...o,1);return te("div",{className:e("flex flex-col gap-2 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-4)]","border border-[var(--inkblot-semantic-color-border-subtle)]"),children:[S("span",{className:e("uppercase tracking-wider","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:t.label}),te("div",{className:"flex items-end justify-between gap-2",children:[S("span",{className:e("[font:var(--inkblot-semantic-typography-heading-medium)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:t.value}),o.length>0?S("div",{className:"flex h-8 items-end gap-0.5",children:o.map((s,i)=>S("div",{className:"w-1 min-w-[2px] rounded-sm bg-[var(--inkblot-semantic-color-interactive-primary)] opacity-80",style:{height:`${s/n*100}%`,minHeight:4}},i))}):null]}),t.change?S("span",{className:e("[font:var(--inkblot-semantic-typography-body-small)]",a),children:t.change}):null]})}import{jsx as xe,jsxs as Wr}from"react/jsx-runtime";function Dt({tabs:t,activeTabId:r,onTabChange:a,className:o}){return xe("nav",{role:"tablist","aria-label":"Tabs",className:e("flex gap-0 pt-[var(--inkblot-spacing-2)]",o),children:t.map(n=>{let s=n.id===r;return Wr("button",{role:"tab","aria-selected":s,"aria-controls":`panel-${n.id}`,id:`tab-${n.id}`,type:"button",onClick:()=>a(n.id),className:e("relative px-[var(--inkblot-spacing-5)] py-[var(--inkblot-spacing-4)]","[font:var(--inkblot-semantic-typography-body-medium)]","transition-colors duration-[var(--inkblot-duration-fast)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",s?["font-semibold text-[var(--inkblot-semantic-color-text-primary)]","bg-[var(--inkblot-semantic-color-background-secondary)]","rounded-t-[var(--inkblot-radius-lg)]"]:["text-[var(--inkblot-semantic-color-text-secondary)]","hover:text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)]/50"]),children:[n.label,s?xe("span",{className:"absolute bottom-0 left-0 right-0 h-0.5 rounded-full bg-[var(--inkblot-semantic-color-interactive-primary)]","aria-hidden":!0}):null]},n.id)})})}import{Calendar as Or,Check as _r,User as Gr}from"lucide-react";import{jsx as O,jsxs as vt}from"react/jsx-runtime";var zr={urgent:"bg-[var(--inkblot-semantic-color-status-error)]/20 text-[var(--inkblot-semantic-color-status-error)] border-[var(--inkblot-semantic-color-status-error)]/30",high:"bg-[var(--inkblot-semantic-color-status-warning)]/20 text-[var(--inkblot-semantic-color-status-warning)] border-[var(--inkblot-semantic-color-status-warning)]/30",medium:"bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)] border-[var(--inkblot-semantic-color-status-success)]/30",low:"bg-[var(--inkblot-semantic-color-background-tertiary)] text-[var(--inkblot-semantic-color-text-secondary)] border-[var(--inkblot-semantic-color-border-subtle)]"};function Vt({id:t,title:r,company:a,priority:o,date:n,assignee:s,completed:i=!1,onToggle:l,onClick:c,className:d}){let m=zr[o];return vt("div",{role:"button",tabIndex:0,onClick:()=>c?.(t),onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),c?.(t))},className:e("flex items-center gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-subtle)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-3)]","transition-colors duration-[var(--inkblot-duration-fast)]","hover:border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","cursor-pointer",d),children:[O("button",{type:"button",onClick:b=>{b.stopPropagation(),l?.(t)},"aria-label":i?"Mark as incomplete":"Mark as complete","aria-pressed":i,className:e("flex h-5 w-5 shrink-0 items-center justify-center rounded-full","transition-colors duration-[var(--inkblot-duration-fast)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",i?"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]":"border-2 border-[var(--inkblot-semantic-color-border-default)] bg-transparent"),children:i?O(_r,{className:"h-3 w-3",strokeWidth:3}):null}),vt("div",{className:"min-w-0 flex-1",children:[O("p",{className:e("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]",i&&"line-through text-[var(--inkblot-semantic-color-text-secondary)]"),children:r}),O("p",{className:e("mt-0.5 [font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]",i&&"line-through"),children:a})]}),vt("div",{className:"flex shrink-0 flex-wrap items-center justify-end gap-[var(--inkblot-spacing-3)]",children:[O("span",{className:e("rounded-[var(--inkblot-radius-md)] border px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium",m),children:o.charAt(0).toUpperCase()+o.slice(1)}),vt("span",{className:e("flex items-center gap-1","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:[O(Or,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-tertiary)]"}),n]}),vt("span",{className:e("flex items-center gap-1","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:[O(Gr,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-tertiary)]"}),s]})]})]})}import{CircleDot as $r,Clock as Kr,CheckCircle as Ur}from"lucide-react";import{jsx as tt,jsxs as he}from"react/jsx-runtime";var jr={todo:$r,in_progress:Kr,done:Ur};function Ht({sections:t,onTaskToggle:r,onTaskClick:a,className:o}){return tt("div",{className:e("flex flex-col gap-[var(--inkblot-spacing-8)]",o),children:t.map(n=>{let s=jr[n.id],i=n.id==="done";return he("section",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:[he("div",{className:"flex items-center gap-[var(--inkblot-spacing-3)]",children:[tt(s,{className:e("h-5 w-5 shrink-0",i?"text-[var(--inkblot-semantic-color-interactive-primary)]":"text-[var(--inkblot-semantic-color-text-secondary)]")}),tt("h2",{className:e("[font:var(--inkblot-semantic-typography-body-large-bold)]","text-[var(--inkblot-semantic-color-text-primary)]"),children:n.label}),tt("span",{className:e("rounded-[var(--inkblot-radius-full)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","bg-[var(--inkblot-semantic-color-background-secondary)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]"),children:n.count})]}),tt("div",{className:"flex flex-col gap-[var(--inkblot-spacing-3)]",children:n.tasks.map(l=>tt(Vt,{...l,completed:i,onToggle:r,onClick:a},l.id))})]},n.id)})})}import{Mail as Ne,FileText as Ft,Zap as qr,Phone as Ce,Link2 as Qr}from"lucide-react";import{jsx as E,jsxs as Se}from"react/jsx-runtime";function Yr(t){return t>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":t>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":t>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var Zr={EMAIL_OPENED:Ne,EMAIL_SENT:Ne,INVOICE_PAID:Ft,INVOICE_OVERDUE:Ft,CONTRACT_SIGNED:Ft,STAGE_CHANGED:qr,CALL_COMPLETED:Ce,PHONE_CALL:Ce,RELATIONSHIP_DETECTED:Qr};function Xr(t){return Zr[t]??Ft}function Jr(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function ta(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function Wt({events:t,onEntitySelect:r,findEntity:a,emptyMessage:o="No hay actividad reciente",className:n}){let s=r?i=>{let l=a?.(i.subject)??a?.(i.actor);l&&r(l)}:void 0;return E(p,{children:E("div",{className:e("space-y-2",n),children:t.length===0?E("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:o}):t.map(i=>{let c=!!(a?.(i.subject)??a?.(i.actor))&&!!s,d=Xr(i.event_type),m=Se("div",{className:"flex flex-1 items-center gap-3",children:[E(d,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),E("div",{className:`h-2 w-2 shrink-0 rounded-full ${Yr(i.confidence_score)}`,"aria-hidden":!0}),Se("div",{className:"min-w-0 flex-1",children:[E("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:Jr(i)}),E("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:ta(i)})]}),E("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:i.timestamp})]}),b=i.id??`${i.actor}-${i.subject}-${i.timestamp}`;return E("div",{children:c?E("button",{type:"button",onClick:()=>s(i),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:m}):E("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:m})},b)})})})}import{NavLink as ea}from"react-router-dom";import{ClipboardList as ra,Brain as aa,BarChart3 as oa,Network as na,Activity as ia,Settings as sa,Sparkles as la}from"lucide-react";import{jsx as _,jsxs as ma}from"react/jsx-runtime";var ca=[{id:"home",path:"/",icon:ra,label:"Home"},{id:"intelligence",path:"/intelligence",icon:aa,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:oa,label:"Pipeline"},{id:"graph",path:"/graph",icon:na,label:"Graph"},{id:"events",path:"/events",icon:ia,label:"Events"},{id:"settings",path:"/settings",icon:sa,label:"Settings"}];function we({items:t=ca,brandLogo:r,brandTitle:a="Command Canvas \u2014 AI-native Interface",className:o}){return _(p,{children:ma("nav",{className:e("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",o),children:[_("div",{className:"flex flex-col items-center gap-2",children:_("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",title:a,children:r??_(la,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),_("div",{className:"flex flex-1 flex-col gap-2",children:t.map(n=>{let s=n.icon;return _(ea,{to:n.path,end:n.path==="/","aria-label":n.label,className:({isActive:i})=>`flex items-center justify-center gap-2 rounded-[var(--inkblot-radius-md)] border-l-2 px-3 py-2 transition-colors duration-[var(--inkblot-duration-fast)] ${i?"border-[var(--inkblot-semantic-color-interactive-primary)] bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)]":"border-transparent text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]"}`,children:_(s,{size:20,"aria-hidden":!0})},n.id)})})]})})}import{useState as Ot,useCallback as da,useRef as pa,useEffect as ba}from"react";import{jsx as g,jsxs as _t}from"react/jsx-runtime";function ua(t){let r=t.toLowerCase();return r.includes("entity")||r.includes("company")||r.includes("person")||r.includes("deal")||r.includes("profile")||r.includes("org")?"entity":r.includes("event")||r.includes("activity")||r.includes("recent")||r.includes("stream")||r.includes("log")?"event":"general"}function va({entities:t}){let r=t[0];return r?_t("div",{className:"space-y-3",children:[g("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Here's the entity profile and current intelligence scores:"}),g(wt,{name:r.name,entityType:r.type,metadata:r.metadata,edges:[{type:"WORKS_WITH",target:t[1]?.name},{type:"MANAGES",target:t[4]?.name}]})]}):null}function ga({events:t}){return _t("div",{className:"space-y-2",children:[g("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Latest activity from the event bus:"}),t.slice(0,5).map(r=>g(Tt,{event:r},r.id??`${r.actor}-${r.subject}-${r.timestamp}`))]})}function fa(){return g("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:"Revenue confidence is trending upward at 78%. Momentum score increased 12% this week driven by 3 new meetings with Acme Corp. Churn risk remains low at 15% across the active pipeline."})}function Pe({entities:t,events:r,onFocusEntity:a,findEntity:o,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:i}){let[l,c]=Ot(""),[d,m]=Ot([]),[b,B]=Ot(!1),[H,y]=Ot(new Map),N=pa(null);ba(()=>{N.current&&(N.current.scrollTop=N.current.scrollHeight)},[d,b]);let $=da(()=>{let f=l.trim();if(!f||b)return;let u=o?.(f);u&&a&&a(u);let T={id:`msg-${Date.now()}`,role:"user",content:f,timestamp:new Date().toISOString()},w=ua(f);m(P=>[...P,T]),c(""),B(!0),setTimeout(()=>{let P={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:w,timestamp:new Date().toISOString()},K;switch(w){case"entity":K=g(va,{entities:t});break;case"event":K=g(ga,{events:r});break;default:K=g(fa,{})}y(nt=>{let yt=new Map(nt);return yt.set(P.id,K),yt}),m(nt=>[...nt,P]),B(!1)},1e3)},[l,b,t,r,a,o]);return _t("div",{className:e("flex h-full flex-col",i),children:[_t("div",{ref:N,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[d.length===0&&!b?g("div",{className:"flex flex-1 items-center justify-center py-12",children:g("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})}):d.map(f=>g("div",{className:"flex flex-col gap-2",children:f.role==="user"?g("div",{className:"flex justify-end",children:g("div",{className:"max-w-[80%] rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-interactive-primary)] px-4 py-3 text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:f.content})}):g("div",{className:"max-w-[90%]",children:H.get(f.id)??g("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:f.content})})},f.id)),b&&g("div",{className:"max-w-[70%]",children:g(Z,{className:"animate-shimmer"})})]}),g("div",{className:"shrink-0 border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-primary)] p-4",children:g(j,{promptValue:l,onPromptChange:c,onPromptSubmit:$,isProcessing:b,placeholder:n})})]})}import{Sparkles as ya}from"lucide-react";import{jsx as gt,jsxs as Ee}from"react/jsx-runtime";function Te({prompt:t,onPromptChange:r,onSubmit:a,isProcessing:o,placeholder:n="Ask anything \u2014 deals, contacts, forecasts...",subtitle:s="Citron OS v1.0 \u2014 AI-native Revenue & Operations Platform",className:i}){return Ee("div",{className:e("border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",i),children:[Ee("div",{className:"flex items-center gap-3",children:[gt("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",children:gt(ya,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),gt("div",{className:"flex-1",children:gt(j,{promptValue:t,onPromptChange:r,onPromptSubmit:a,isProcessing:o,placeholder:n})})]}),s&>("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}import{jsx as et,jsxs as ee}from"react/jsx-runtime";function Ie({events:t,title:r="Event Stream",showLive:a=!0,className:o}){return et(p,{children:ee("div",{className:e("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",o),children:[ee("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[et("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:r}),a&&ee("div",{className:"flex items-center gap-2",children:[et("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),et("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),et("div",{className:"flex-1 overflow-auto p-4",children:et(Wt,{events:t})})]})})}import{jsx as h,jsxs as G}from"react/jsx-runtime";var ka=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],xa=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function Me({loading:t,kpiCards:r=ka,aiInsights:a=xa,title:o="Intelligence Lab",subtitle:n="AI-generated insights - Updated 3 min ago",className:s}){return G("div",{className:e("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[G("div",{children:[h("h1",{className:"text-2xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:o}),h("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n})]}),h(Rt,{loading:t,title:"",children:h(p,{children:G("div",{className:"flex flex-col gap-4",children:[h("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:r.map(i=>h(It,{label:i.label,value:i.value,subtext:i.subtext,trend:i.trend},i.label))}),G("div",{children:[h("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),h("div",{className:"flex flex-col gap-4",children:a.map(i=>h(p,{children:G("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[G("div",{className:"min-w-0 flex-1",children:[h("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:i.title}),h("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i.description})]}),G("div",{className:"flex shrink-0 flex-col items-center",children:[h("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:i.confidence}),h("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},i.title))})]})]})})})]})}import{jsx as ft,jsxs as re}from"react/jsx-runtime";function Re({navigation:t,eventStream:r,commandBar:a,children:o,className:n,eventStreamWidth:s="w-80"}){return re("div",{className:e("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",n),children:[ft("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),ft("main",{className:"flex flex-1 flex-col overflow-hidden",children:re("div",{className:"flex min-h-0 flex-1",children:[re("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[ft("div",{className:"flex-1 overflow-auto",children:o}),ft("div",{className:"shrink-0",children:a})]}),r&&ft("aside",{className:e("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:r})]})})]})}import{useState as ae}from"react";import{Check as ha,X as Na}from"lucide-react";import{jsx as rt,jsxs as Gt}from"react/jsx-runtime";var Ca=["urgent","high","medium","low"];function zt({onConfirm:t,onCancel:r,className:a}){let[o,n]=ae(""),[s,i]=ae(""),[l,c]=ae("medium");return Gt("form",{onSubmit:m=>{m.preventDefault();let b=o.trim();b&&(t({title:b,company:s.trim()||void 0,priority:l}),n(""),i(""),c("medium"))},className:e("flex flex-col gap-[var(--inkblot-spacing-4)] rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","p-[var(--inkblot-spacing-4)]",a),children:[rt("input",{type:"text",value:o,onChange:m=>n(m.target.value),placeholder:"Task title...",autoFocus:!0,required:!0,className:e("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]")}),rt("input",{type:"text",value:s,onChange:m=>i(m.target.value),placeholder:"Company (optional)",className:e("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)]","text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]")}),rt("div",{className:"flex flex-wrap gap-[var(--inkblot-spacing-2)]",children:Ca.map(m=>rt("button",{type:"button",onClick:()=>c(m),className:e("rounded-[var(--inkblot-radius-md)] px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)] font-medium","transition-colors duration-[var(--inkblot-duration-fast)]",l===m?"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-inverse)]":"bg-[var(--inkblot-semantic-color-background-tertiary)] text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)]/80"),children:m.charAt(0).toUpperCase()+m.slice(1)},m))}),Gt("div",{className:"flex justify-end gap-[var(--inkblot-spacing-2)]",children:[Gt("button",{type:"button",onClick:r,className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-interactive-secondary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-primary)]","hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]"),children:[rt(Na,{className:"h-4 w-4"}),"Cancel"]}),Gt("button",{type:"submit",disabled:!o.trim(),className:e("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center gap-2 rounded-[var(--inkblot-radius-lg)]","bg-[var(--inkblot-semantic-color-interactive-primary)]","px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)]","[font:var(--inkblot-semantic-typography-body-medium)] font-medium","text-[var(--inkblot-semantic-color-text-inverse)]","hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)]","disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:cursor-not-allowed"),children:[rt(ha,{className:"h-4 w-4"}),"Add Task"]})]})]})}import{useState as oe,useMemo as Be}from"react";import{ClipboardList as Sa}from"lucide-react";import{jsx as z,jsxs as Pa}from"react/jsx-runtime";function D(t,r,a="You"){let n=new Date().toLocaleDateString("en-US",{month:"short",day:"numeric"})||"Today";return{id:r,title:t.title,company:t.company??"Unassigned",priority:t.priority??"medium",date:n,assignee:a,status:"todo"}}function wa(t){let r={todo:t.filter(a=>a.status==="todo"),in_progress:t.filter(a=>a.status==="in_progress"),done:t.filter(a=>a.status==="done")};return[{id:"todo",label:"TO DO",count:r.todo.length,tasks:r.todo},{id:"in_progress",label:"IN PROGRESS",count:r.in_progress.length,tasks:r.in_progress},{id:"done",label:"DONE",count:r.done.length,tasks:r.done}]}var V=[D({title:"Follow up with Sarah Chen on proposal",company:"Acme Corp",priority:"high"},"1"),D({title:"Schedule demo with engineering team",company:"TechStart Inc",priority:"medium"},"2"),D({title:"Prepare quarterly report slides",company:"GlobalTech",priority:"low"},"3"),D({title:"Review Q1 marketing budget",company:"TechStart Inc",priority:"medium"},"4"),D({title:"Draft partnership agreement",company:"Enterprise Co",priority:"urgent"},"5"),D({title:"Send contract to legal team",company:"GlobalTech",priority:"low"},"6"),D({title:"Update CRM with new contacts",company:"Acme Corp",priority:"low"},"7")];V[0].status="todo";V[1].status="todo";V[2].status="todo";V[3].status="in_progress";V[4].status="in_progress";V[5].status="done";V[6].status="done";function Ae({initialTasks:t=V,onTaskCreate:r,onTaskToggle:a,onTaskClick:o,className:n}){let[s,i]=oe(t),[l,c]=oe(!1),[d,m]=oe(""),b=Be(()=>{if(!d.trim())return s;let u=d.toLowerCase();return s.filter(T=>T.title.toLowerCase().includes(u)||T.company.toLowerCase().includes(u))},[s,d]),B=Be(()=>wa(b),[b]),H=s.filter(u=>u.status!=="done").length,y=s.filter(u=>u.priority==="urgent"&&u.status!=="done").length,N=`${H} pending${y>0?` \xB7 ${y} urgent`:""}`,$=u=>{let T=`task-${Date.now()}`,w=D(u,T);i(P=>[w,...P]),c(!1),r?.(u)},f=u=>{i(T=>T.map(w=>{if(w.id!==u)return w;let P=w.status==="done"?"todo":"done";return{...w,status:P}})),a?.(u)};return z("div",{className:e("flex min-h-screen flex-col bg-[var(--inkblot-semantic-color-background-primary)]",n),children:Pa("div",{className:"flex flex-1 flex-col gap-8 px-8 py-8",children:[z(X,{title:"Tasks",subtitle:N,icon:z(Sa,{className:"h-5 w-5"}),action:z(J,{label:"New Task",onClick:()=>c(u=>!u)})}),z(L,{placeholder:"Search tasks...",value:d,onChange:u=>m(u.target.value)}),l?z(zt,{onConfirm:$,onCancel:()=>c(!1)}):null,z(Ht,{sections:B,onTaskToggle:f,onTaskClick:o})]})})}import{useState as at,useMemo as ne}from"react";import{Mail as Ea}from"lucide-react";import{Fragment as Ra,jsx as k,jsxs as ot}from"react/jsx-runtime";var Ta=`Hi [Name],
|
|
2
|
+
|
|
3
|
+
I hope this email finds you well. I wanted to reach out regarding our recent conversation about [Topic].
|
|
4
|
+
|
|
5
|
+
Based on our discussion, I've prepared a few options that I believe could add significant value to your organization:
|
|
6
|
+
|
|
7
|
+
1. **Option A**: [Brief description]
|
|
8
|
+
2. **Option B**: [Brief description]
|
|
9
|
+
3. **Option C**: [Brief description]
|
|
10
|
+
|
|
11
|
+
I'd love to schedule a quick call this week to walk you through these in more detail. Would any of the following times work for you?
|
|
12
|
+
|
|
13
|
+
- Tuesday 2pm
|
|
14
|
+
- Wednesday 10am
|
|
15
|
+
- Thursday 4pm
|
|
16
|
+
|
|
17
|
+
Looking forward to hearing from you.
|
|
18
|
+
|
|
19
|
+
Best regards,
|
|
20
|
+
[Your name]`,Le=[{id:"1",campaignName:"Q1 Product Launch",recipients:"2840 recipients",status:"sent",opens:"68%",clicks:"24%",date:"Feb 12, 2026"},{id:"2",campaignName:"Welcome Series",recipients:"1200 recipients",status:"active",statusSubtext:"Running",opens:"-",clicks:"-",date:"Feb 28, 2026"},{id:"3",campaignName:"Re-engagement Campaign",recipients:"890 recipients",status:"draft",opens:"-",clicks:"-",date:"Feb 5, 2026"},{id:"4",campaignName:"Holiday Promo",recipients:"4500 recipients",status:"scheduled",opens:"-",clicks:"-",date:"Mar 1, 2026"}],De=[{id:"1",category:"Onboarding",title:"Welcome Series",uses:"34 uses"},{id:"2",category:"Marketing",title:"Product Announcement",uses:"12 uses"},{id:"3",category:"Retention",title:"Renewal Reminder",uses:"28 uses"},{id:"4",category:"Sales",title:"Meeting Follow-up",uses:"56 uses"}],Ve=["Acme Corp - Sarah Chen","TechStart Inc - Mike Rodriguez","GlobalTech - Lisa Kim","Enterprise Co - John Smith","StartupXYZ - Emma Wilson"],Ia=[{key:"campaign",label:"Campaign"},{key:"status",label:"Status"},{key:"opens",label:"Opens"},{key:"clicks",label:"Clicks"},{key:"date",label:"Date"}],Ma=[{label:"Total Sent",value:"12.4K",change:"This month",changeVariant:"success"},{label:"Avg. Open Rate",value:"64%",change:"+8% vs prior",changeVariant:"success"},{label:"Avg. Click Rate",value:"22%",change:"+3% vs prior",changeVariant:"success"},{label:"Active Automations",value:"7",change:"3 paused",changeVariant:"error"}];function He({onSendNow:t,onSchedule:r,onSaveDraft:a,onNewCampaign:o,onGenerateWithAI:n,onTemplateClick:s,className:i}){let[l,c]=at("campaigns"),[d,m]=at(""),[b,B]=at(""),[H,y]=at(""),[N,$]=at(!1),[f,u]=at(""),T=ne(()=>{if(!d.trim())return Le;let v=d.toLowerCase();return Le.filter(F=>F.campaignName.toLowerCase().includes(v)||F.recipients.toLowerCase().includes(v))},[d]),w=ne(()=>{if(!d.trim())return De;let v=d.toLowerCase();return De.filter(F=>F.title.toLowerCase().includes(v)||F.category.toLowerCase().includes(v))},[d]),P=ne(()=>{if(!f.trim())return Ve;let v=f.toLowerCase();return Ve.filter(F=>F.toLowerCase().includes(v))},[f]),K=async()=>{$(!0),await new Promise(v=>setTimeout(v,1500)),y(Ta),$(!1)},nt=()=>{console.log("Send Now clicked"),t?.()},yt=()=>{console.log("Schedule clicked"),r?.()},Fe=()=>{console.log("Save Draft clicked"),a?.()},We=l==="campaigns"||l==="templates";return k("div",{className:e("flex min-h-screen flex-col bg-[var(--inkblot-semantic-color-background-primary)]",i),children:ot("div",{className:"flex flex-1 flex-col gap-8 px-8 py-8",children:[k(X,{title:"Email Campaigns",subtitle:"Automate outreach \xB7 AI-powered templates",icon:k(Ea,{className:"h-5 w-5"}),action:k(J,{label:"New Campaign",onClick:()=>o?.()})}),k(Dt,{tabs:[{id:"campaigns",label:"Campaigns"},{id:"templates",label:"Templates"},{id:"compose",label:"Compose"}],activeTabId:l,onTabChange:c}),We?k(L,{placeholder:l==="campaigns"?"Search campaigns...":"Search templates...",value:d,onChange:v=>m(v.target.value)}):null,l==="campaigns"?ot(Ra,{children:[k(Lt,{items:Ma}),k(ht,{columns:Ia,rows:T})]}):l==="templates"?k(St,{templates:w,onGenerateWithAI:n,onTemplateClick:s}):ot("div",{className:"flex max-w-2xl flex-col gap-6",children:[ot("div",{className:"flex flex-col gap-6",children:[ot("div",{className:"flex flex-col gap-2",children:[k("label",{className:"uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)] [font:var(--inkblot-semantic-typography-body-small)]",children:"Subject"}),k("input",{type:"text",value:b,onChange:v=>B(v.target.value),placeholder:"Enter subject line...",className:e("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-lg)]","border border-[var(--inkblot-semantic-color-border-default)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]")})]}),k(it,{label:"Body",value:H,onChange:v=>y(v.target.value),placeholder:"Compose your email or let AI generate content...",loading:N,onWriteWithAI:K}),ot("div",{className:"flex flex-col gap-2",children:[k(L,{label:"Recipients",placeholder:"Search contacts, segments, or tags...",value:f,onChange:v=>u(v.target.value)}),P.length>0?k("ul",{className:"flex flex-wrap gap-2",children:P.slice(0,5).map(v=>k("li",{className:e("rounded-[var(--inkblot-radius-md)]","bg-[var(--inkblot-semantic-color-background-secondary)]","px-[var(--inkblot-spacing-2)] py-[var(--inkblot-spacing-1)]","[font:var(--inkblot-semantic-typography-body-small)]","text-[var(--inkblot-semantic-color-text-secondary)]"),children:v},v))}):null]})]}),k(xt,{onSendNow:nt,onSchedule:yt,onSaveDraft:Fe})]})]})})}export{it as AIComposeInput,$t as ActionButtons,Wt as ActivityStream,we as AppNavigationRail,st as Button,ht as CampaignTable,Pe as ChatFeed,Te as CommandBar,j as CommandInterface,He as EmailCampaignsView,xt as EmailComposeActionButtons,St as EmailTemplatesSection,wt as EntityCard,se as EntityCommandCard,Pt as ErrorBoundary,Tt as EventRow,me as EventStreamFeed,Ie as EventStreamSidebar,mt as Input,Me as IntelligenceLab,It as IntelligenceScoreCard,Re as MainShell,de as MetricComparisonList,Rt as ModuleContainer,p as ModuleErrorBoundary,Z as ModuleSkeleton,fe as OSNavigationRail,At as PageErrorFallback,X as PageHeader,J as PageHeaderActionButton,ue as RouteWithErrorBoundary,L as SearchBar,A as Skeleton,ge as StatCardGrid,Lt as StatCards,ke as StatCardsWithChart,Et as StatusBadge,Dt as TabSystem,zt as TaskCreateForm,Vt as TaskItem,Ht as TaskList,Ae as TasksView,Nt as TemplateCard};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@citron-systems/citron-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Core UI component library for Citron CRM. Accessible, design-token-driven React components built with consistency and scalability in mind.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@citron-systems/citron-ds": "^1.0.0",
|
|
42
42
|
"react": "^19.0.0",
|
|
43
|
+
"react-error-boundary": "^5.0.0",
|
|
43
44
|
"react-dom": "^19.0.0",
|
|
44
45
|
"react-router-dom": "^7.0.0"
|
|
45
46
|
},
|
|
@@ -71,6 +72,7 @@
|
|
|
71
72
|
},
|
|
72
73
|
"dependencies": {
|
|
73
74
|
"@citron-systems/citron-ds": "^1.0.0",
|
|
75
|
+
"react-error-boundary": "^5.0.0",
|
|
74
76
|
"clsx": "^2.1.1",
|
|
75
77
|
"lucide-react": "^0.460.0",
|
|
76
78
|
"react": "^19.2.4",
|