@citron-systems/citron-ui 1.1.0 → 1.2.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 CHANGED
@@ -13,12 +13,15 @@ interface CommandInterfaceProps {
13
13
  promptValue?: string;
14
14
  onPromptChange?: (value: string) => void;
15
15
  onPromptSubmit?: () => void;
16
+ onFilesAttach?: (files: File[]) => void;
16
17
  isProcessing?: boolean;
17
18
  response?: ReactNode;
18
19
  placeholder?: string;
20
+ accept?: string;
21
+ multiple?: boolean;
19
22
  className?: string;
20
23
  }
21
- declare function CommandInterface({ promptValue, onPromptChange, onPromptSubmit, isProcessing, response, placeholder, className, }: CommandInterfaceProps): react_jsx_runtime.JSX.Element;
24
+ declare function CommandInterface({ promptValue, onPromptChange, onPromptSubmit, onFilesAttach, isProcessing, response, placeholder, accept, multiple, className, }: CommandInterfaceProps): react_jsx_runtime.JSX.Element;
22
25
 
23
26
  type EntityType = 'Person' | 'Organization' | 'Deal';
24
27
  interface Edge {
package/dist/index.d.ts CHANGED
@@ -13,12 +13,15 @@ interface CommandInterfaceProps {
13
13
  promptValue?: string;
14
14
  onPromptChange?: (value: string) => void;
15
15
  onPromptSubmit?: () => void;
16
+ onFilesAttach?: (files: File[]) => void;
16
17
  isProcessing?: boolean;
17
18
  response?: ReactNode;
18
19
  placeholder?: string;
20
+ accept?: string;
21
+ multiple?: boolean;
19
22
  className?: string;
20
23
  }
21
- declare function CommandInterface({ promptValue, onPromptChange, onPromptSubmit, isProcessing, response, placeholder, className, }: CommandInterfaceProps): react_jsx_runtime.JSX.Element;
24
+ declare function CommandInterface({ promptValue, onPromptChange, onPromptSubmit, onFilesAttach, isProcessing, response, placeholder, accept, multiple, className, }: CommandInterfaceProps): react_jsx_runtime.JSX.Element;
22
25
 
23
26
  type EntityType = 'Person' | 'Organization' | 'Deal';
24
27
  interface Edge {
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var Y=Object.defineProperty;var Ae=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var _e=Object.prototype.hasOwnProperty;var De=(t,e)=>{for(var r in e)Y(t,r,{get:e[r],enumerable:!0})},Ve=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!_e.call(t,i)&&i!==r&&Y(t,i,{get:()=>e[i],enumerable:!(n=Ae(e,i))||n.enumerable});return t};var He=t=>Ve(Y({},"__esModule",{value:!0}),t);var nt={};De(nt,{ActivityStream:()=>Z,AppNavigationRail:()=>ie,Button:()=>V,ChatFeed:()=>se,CommandBar:()=>le,CommandInterface:()=>_,EntityCard:()=>F,EntityCommandCard:()=>j,ErrorBoundary:()=>K,EventRow:()=>z,EventStreamFeed:()=>te,EventStreamSidebar:()=>ce,Input:()=>H,IntelligenceLab:()=>de,IntelligenceScoreCard:()=>U,MainShell:()=>me,MetricComparisonList:()=>ae,ModuleContainer:()=>W,ModuleErrorBoundary:()=>l,ModuleSkeleton:()=>D,OSNavigationRail:()=>ne,Skeleton:()=>M,StatusBadge:()=>$});module.exports=He(nt);var ge=require("react");var fe=require("clsx"),xe=require("tailwind-merge");function o(...t){return(0,xe.twMerge)((0,fe.clsx)(t))}var ye=require("react/jsx-runtime"),Oe={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"},V=(0,ge.forwardRef)(({className:t,variant:e="primary",disabled:r,...n},i)=>(0,ye.jsx)("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)]",Oe[e],t),...n}));V.displayName="Button";var p=require("react/jsx-runtime");function ke({className:t}){return(0,p.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:o("h-8 w-8",t),"aria-hidden":!0,children:[(0,p.jsx)("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"1.5",className:"text-[var(--inkblot-semantic-color-text-tertiary)]"}),(0,p.jsx)("path",{d:"M8 12h2v2H8v-2zm6 0h2v2h-2v-2zM10 8l2 4 2-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"text-[var(--inkblot-semantic-color-text-secondary)]"})]})}function _({promptValue:t="",onPromptChange:e,onPromptSubmit:r,isProcessing:n=!1,response:i,placeholder:s="Ask Citron Intelligence...",className:a}){let k=m=>{m.key==="Enter"&&!m.shiftKey&&(m.preventDefault(),r?.())};return(0,p.jsxs)("div",{className:o("flex w-full max-w-2xl flex-col gap-8",a),children:[(0,p.jsx)("div",{className:"flex flex-col gap-4",children:(0,p.jsxs)("div",{className:"flex items-start gap-4",children:[(0,p.jsx)("div",{className:"flex shrink-0 items-center justify-center",children:(0,p.jsx)(ke,{})}),(0,p.jsx)("div",{className:"flex flex-1 flex-col gap-4",children:(0,p.jsx)("textarea",{value:t,onChange:m=>e?.(m.target.value),onKeyDown:k,placeholder:s,rows:3,disabled:n,className:o("w-full resize-none rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-primary)] p-4 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-shadow 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)]","shadow-[0_1px_3px_0_rgba(0,0,0,0.08),0_1px_2px_-1px_rgba(0,0,0,0.08)]","disabled:cursor-not-allowed disabled:opacity-70")})})]})}),n?(0,p.jsx)("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-xl)] 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%)]")}):i?(0,p.jsx)("div",{className:"flex flex-col gap-4",children:(0,p.jsxs)("div",{className:"flex items-start gap-4",children:[(0,p.jsx)("div",{className:"shrink-0",children:(0,p.jsx)(ke,{})}),(0,p.jsx)("div",{className:"min-w-0 flex-1 text-[var(--inkblot-semantic-color-text-primary)]",children:i})]})}):null]})}var f=require("react/jsx-runtime"),Ge={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 F({name:t,entityType:e,metadata:r,edges:n=[],className:i}){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",Ge[e],i),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,n.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:n.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 Ne=require("react");var he=require("react/jsx-runtime"),H=(0,Ne.forwardRef)(({className:t,error:e,disabled:r,...n},i)=>(0,he.jsx)("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}));H.displayName="Input";var Ee=require("react");var O=require("react/jsx-runtime"),l=class extends Ee.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,O.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,O.jsx)("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),(0,O.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),(0,O.jsx)(V,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};var x=require("react/jsx-runtime");function j({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let k=m=>{m.key==="Enter"&&(m.preventDefault(),s?.())};return(0,x.jsx)(l,{className:a,children:(0,x.jsxs)("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,x.jsx)("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?(0,x.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,x.jsxs)("div",{children:[(0,x.jsx)("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),(0,x.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((m,T)=>(0,x.jsxs)("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[(0,x.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:m.label}),(0,x.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:m.value})]},T))})]}):null,(0,x.jsx)("div",{className:"mt-2",children:(0,x.jsx)(H,{type:"text",value:n,onChange:m=>i?.(m.target.value),onKeyDown:k,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}var Ce=require("react");var ee=require("react/jsx-runtime"),K=class extends Ce.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,ee.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,ee.jsx)("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};var Se=require("react/jsx-runtime"),Fe={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 $({label:t,variant:e="info",className:r}){return(0,Se.jsx)("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Fe[e],r),children:t})}var P=require("react/jsx-runtime");function Ke(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function z({event:t,className:e}){let r=Ke(t.confidence_score),n=`${Math.round(t.confidence_score*100)}%`;return(0,P.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,P.jsx)("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),(0,P.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),(0,P.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),(0,P.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,P.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),(0,P.jsx)($,{label:n,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 ze(){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 te({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)(ze,{})}),(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 u=require("react/jsx-runtime"),oe=36,re=2*Math.PI*oe;function U({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=re-s/100*re;return(0,u.jsx)(l,{className:i,children:(0,u.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,u.jsxs)("div",{className:"relative",children:[(0,u.jsxs)("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[(0,u.jsx)("circle",{cx:"48",cy:"48",r:oe,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),(0,u.jsx)("circle",{cx:"48",cy:"48",r:oe,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:re,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),(0,u.jsx)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:(0,u.jsxs)("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?(0,u.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:(0,u.jsx)("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?(0,u.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:(0,u.jsx)("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),(0,u.jsxs)("div",{className:"text-center",children:[(0,u.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?(0,u.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}var C=require("react/jsx-runtime"),Ue={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 We({className:t}){return(0,C.jsx)("svg",{viewBox:"0 0 16 16",className:o("h-4 w-4",t),"aria-hidden":!0,children:(0,C.jsx)("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function ae({items:t,className:e}){return(0,C.jsx)(l,{className:e,children:(0,C.jsx)("ul",{className:o("flex flex-col gap-4 py-2"),children:t.map((r,n)=>(0,C.jsxs)("li",{className:"flex items-center justify-between gap-4",children:[(0,C.jsx)("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:r.label}),(0,C.jsx)("span",{className:o("flex items-center gap-1 text-sm font-medium",Ue[r.variant??"default"]),children:r.value!=null?r.value:(0,C.jsx)(We,{})})]},n))})})}var we=require("react/jsx-runtime");function M({className:t,...e}){return(0,we.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 R=require("react/jsx-runtime");function D({className:t,...e}){return(0,R.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,R.jsx)(M,{className:"h-5 w-3/4"}),(0,R.jsx)(M,{className:"h-4 w-full"}),(0,R.jsx)(M,{className:"h-4 w-5/6"}),(0,R.jsx)(M,{className:"h-4 w-4/5"}),(0,R.jsx)(M,{className:"h-4 w-3/4"})]})}var L=require("react/jsx-runtime");function W({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return(0,L.jsx)(l,{className:n,onRetry:i,children:e?(0,L.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,L.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,(0,L.jsx)(D,{})]}):(0,L.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,L.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}var A=require("react/jsx-runtime");function ne({items:t,className:e}){return(0,A.jsx)(l,{className:e,children:(0,A.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,A.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,A.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,A.jsx)("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?(0,A.jsx)("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}var b=require("lucide-react");var v=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:b.Mail,EMAIL_SENT:b.Mail,INVOICE_PAID:b.FileText,INVOICE_OVERDUE:b.FileText,CONTRACT_SIGNED:b.FileText,STAGE_CHANGED:b.Zap,CALL_COMPLETED:b.Phone,PHONE_CALL:b.Phone,RELATIONSHIP_DETECTED:b.Link2};function Je(t){return qe[t]??b.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 Z({events:t,onEntitySelect:e,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=e?a=>{let k=r?.(a.subject)??r?.(a.actor);k&&e(k)}:void 0;return(0,v.jsx)(l,{children:(0,v.jsx)("div",{className:o("space-y-2",i),children:t.length===0?(0,v.jsx)("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):t.map(a=>{let m=!!(r?.(a.subject)??r?.(a.actor))&&!!s,T=Je(a.event_type),G=(0,v.jsxs)("div",{className:"flex flex-1 items-center gap-3",children:[(0,v.jsx)(T,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),(0,v.jsx)("div",{className:`h-2 w-2 shrink-0 rounded-full ${Ze(a.confidence_score)}`,"aria-hidden":!0}),(0,v.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,v.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:Qe(a)}),(0,v.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:Xe(a)})]}),(0,v.jsx)("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(0,v.jsx)("div",{children:m?(0,v.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:G}):(0,v.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:G})},B)})})})}var Pe=require("react-router-dom"),g=require("lucide-react");var S=require("react/jsx-runtime"),Ye=[{id:"home",path:"/",icon:g.ClipboardList,label:"Home"},{id:"intelligence",path:"/intelligence",icon:g.Brain,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:g.BarChart3,label:"Pipeline"},{id:"graph",path:"/graph",icon:g.Network,label:"Graph"},{id:"events",path:"/events",icon:g.Activity,label:"Events"},{id:"settings",path:"/settings",icon:g.Settings,label:"Settings"}];function ie({items:t=Ye,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return(0,S.jsx)(l,{children:(0,S.jsxs)("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",n),children:[(0,S.jsx)("div",{className:"flex flex-col items-center gap-2",children:(0,S.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,S.jsx)(g.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),(0,S.jsx)("div",{className:"flex flex-1 flex-col gap-2",children:t.map(i=>{let s=i.icon;return(0,S.jsx)(Pe.NavLink,{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:(0,S.jsx)(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}var N=require("react");var c=require("react/jsx-runtime");function je(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 et({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)(F,{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 tt({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)(z,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function rt(){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 se({entities:t,events:e,onFocusEntity:r,findEntity:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[k,m]=(0,N.useState)(""),[T,G]=(0,N.useState)([]),[B,pe]=(0,N.useState)(!1),[Ie,Be]=(0,N.useState)(new Map),q=(0,N.useRef)(null);(0,N.useEffect)(()=>{q.current&&(q.current.scrollTop=q.current.scrollHeight)},[T,B]);let Re=(0,N.useCallback)(()=>{let E=k.trim();if(!E||B)return;let ue=n?.(E);ue&&r&&r(ue);let Le={id:`msg-${Date.now()}`,role:"user",content:E,timestamp:new Date().toISOString()},ve=je(E);G(J=>[...J,Le]),m(""),pe(!0),setTimeout(()=>{let J={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:ve,timestamp:new Date().toISOString()},Q;switch(ve){case"entity":Q=(0,c.jsx)(et,{entities:t});break;case"event":Q=(0,c.jsx)(tt,{events:e});break;default:Q=(0,c.jsx)(rt,{})}Be(X=>{let be=new Map(X);return be.set(J.id,Q),be}),G(X=>[...X,J]),pe(!1)},1e3)},[k,B,t,e,r,n]);return(0,c.jsxs)("div",{className:o("flex h-full flex-col",a),children:[(0,c.jsxs)("div",{ref:q,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[T.length===0&&!B?(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})}):T.map(E=>(0,c.jsx)("div",{className:"flex flex-col gap-2",children:E.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:E.content})}):(0,c.jsx)("div",{className:"max-w-[90%]",children:Ie.get(E.id)??(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:E.content})})},E.id)),B&&(0,c.jsx)("div",{className:"max-w-[70%]",children:(0,c.jsx)(D,{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)(_,{promptValue:k,onPromptChange:m,onPromptSubmit:Re,isProcessing:B,placeholder:i})})]})}var Me=require("lucide-react");var I=require("react/jsx-runtime");function le({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(0,I.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,I.jsxs)("div",{className:"flex items-center gap-3",children:[(0,I.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,I.jsx)(Me.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),(0,I.jsx)("div",{className:"flex-1",children:(0,I.jsx)(_,{promptValue:t,onPromptChange:e,onPromptSubmit:r,isProcessing:n,placeholder:i})})]}),s&&(0,I.jsx)("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}var h=require("react/jsx-runtime");function ce({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return(0,h.jsx)(l,{children:(0,h.jsxs)("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[(0,h.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,h.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&(0,h.jsxs)("div",{className:"flex items-center gap-2",children:[(0,h.jsx)("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),(0,h.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),(0,h.jsx)("div",{className:"flex-1 overflow-auto p-4",children:(0,h.jsx)(Z,{events:t})})]})})}var d=require("react/jsx-runtime"),ot=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],at=[{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=ot,aiInsights:r=at,title:n="Intelligence Lab",subtitle:i="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:n}),(0,d.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i})]}),(0,d.jsx)(W,{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)(U,{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 w=require("react/jsx-runtime");function me({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return(0,w.jsxs)("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[(0,w.jsx)("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),(0,w.jsx)("main",{className:"flex flex-1 flex-col overflow-hidden",children:(0,w.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,w.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[(0,w.jsx)("div",{className:"flex-1 overflow-auto",children:n}),(0,w.jsx)("div",{className:"shrink-0",children:r})]}),e&&(0,w.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 te=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var Ve=(t,e)=>{for(var r in e)te(t,r,{get:e[r],enumerable:!0})},He=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!De.call(t,i)&&i!==r&&te(t,i,{get:()=>e[i],enumerable:!(n=Te(e,i))||n.enumerable});return t};var Oe=t=>He(te({},"__esModule",{value:!0}),t);var it={};Ve(it,{ActivityStream:()=>J,AppNavigationRail:()=>ce,Button:()=>G,ChatFeed:()=>de,CommandBar:()=>me,CommandInterface:()=>H,EntityCard:()=>$,EntityCommandCard:()=>re,ErrorBoundary:()=>z,EventRow:()=>W,EventStreamFeed:()=>ae,EventStreamSidebar:()=>pe,Input:()=>F,IntelligenceLab:()=>ue,IntelligenceScoreCard:()=>Z,MainShell:()=>ve,MetricComparisonList:()=>se,ModuleContainer:()=>q,ModuleErrorBoundary:()=>l,ModuleSkeleton:()=>O,OSNavigationRail:()=>le,Skeleton:()=>B,StatusBadge:()=>U});module.exports=Oe(it);var ke=require("react");var xe=require("clsx"),ye=require("tailwind-merge");function o(...t){return(0,ye.twMerge)((0,xe.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"},G=(0,ke.forwardRef)(({className:t,variant:e="primary",disabled:r,...n},i)=>(0,Ne.jsx)("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)]",Ge[e],t),...n}));G.displayName="Button";var he=require("react"),Ee=require("lucide-react");var x=require("react/jsx-runtime");function H({promptValue:t="",onPromptChange:e,onPromptSubmit:r,onFilesAttach:n,isProcessing:i=!1,response:s,placeholder:a="Ask Citron Intelligence...",accept:k,multiple:v=!0,className:I}){let A=(0,he.useRef)(null),E=C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),r?.())},Q=()=>{A.current?.click()},j=C=>{let T=C.target.files;T&&T.length>0&&n&&n(Array.from(T)),C.target.value=""};return(0,x.jsxs)("div",{className:o("flex w-full max-w-2xl flex-col gap-8",I),children:[(0,x.jsx)("div",{className:"flex flex-col gap-4",children:(0,x.jsx)("div",{className:"flex flex-1 flex-col gap-4",children:(0,x.jsxs)("div",{className:"flex items-start gap-2",children:[(0,x.jsx)("input",{ref:A,type:"file",accept:k,multiple:v,onChange:j,className:"sr-only","aria-hidden":!0}),(0,x.jsx)("button",{type:"button",onClick:Q,disabled:i,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-lg text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)] 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-50"),"aria-label":"Adjuntar archivos",children:(0,x.jsx)(Ee.Paperclip,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),(0,x.jsx)("textarea",{value:t,onChange:C=>e?.(C.target.value),onKeyDown:E,placeholder:a,rows:3,disabled:i,className:o("min-w-0 flex-1 resize-none rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-primary)] p-4 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-shadow 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)]","shadow-[0_1px_3px_0_rgba(0,0,0,0.08),0_1px_2px_-1px_rgba(0,0,0,0.08)]","disabled:cursor-not-allowed disabled:opacity-70")})]})})}),i?(0,x.jsx)("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-xl)] 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%)]")}):s?(0,x.jsx)("div",{className:"flex flex-col gap-4",children:(0,x.jsx)("div",{className:"min-w-0 text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}var b=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:n=[],className:i}){return(0,b.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],i),children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,b.jsx)("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:e}),(0,b.jsx)("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t})]}),r&&Object.keys(r).length>0?(0,b.jsx)("dl",{className:"flex flex-col gap-1",children:Object.entries(r).map(([s,a])=>(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),(0,b.jsx)("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a})]},s))}):null,n.length>0?(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),(0,b.jsx)("ul",{className:"flex flex-wrap gap-2",children:n.map((s,a)=>(0,b.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"),F=(0,Ce.forwardRef)(({className:t,error:e,disabled:r,...n},i)=>(0,Se.jsx)("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}));F.displayName="Input";var we=require("react");var K=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,K.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,K.jsx)("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),(0,K.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),(0,K.jsx)(G,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};var f=require("react/jsx-runtime");function re({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let k=v=>{v.key==="Enter"&&(v.preventDefault(),s?.())};return(0,f.jsx)(l,{className:a,children:(0,f.jsxs)("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,f.jsx)("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?(0,f.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,f.jsxs)("div",{children:[(0,f.jsx)("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),(0,f.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((v,I)=>(0,f.jsxs)("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[(0,f.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:v.label}),(0,f.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:v.value})]},I))})]}):null,(0,f.jsx)("div",{className:"mt-2",children:(0,f.jsx)(F,{type:"text",value:n,onChange:v=>i?.(v.target.value),onKeyDown:k,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}var Pe=require("react");var oe=require("react/jsx-runtime"),z=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,oe.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,oe.jsx)("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};var Me=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 U({label:t,variant:e="info",className:r}){return(0,Me.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 $e(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function W({event:t,className:e}){let r=$e(t.confidence_score),n=`${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)(U,{label:n,variant:r})]})}var y=require("react/jsx-runtime"),ze={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 ae({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",ze[r.status]),"aria-hidden":!0}):null]},r.id))})})}var m=require("react/jsx-runtime"),ie=36,ne=2*Math.PI*ie;function Z({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=ne-s/100*ne;return(0,m.jsx)(l,{className:i,children:(0,m.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,m.jsxs)("div",{className:"relative",children:[(0,m.jsxs)("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[(0,m.jsx)("circle",{cx:"48",cy:"48",r:ie,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),(0,m.jsx)("circle",{cx:"48",cy:"48",r:ie,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ne,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),(0,m.jsx)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:(0,m.jsxs)("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?(0,m.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:(0,m.jsx)("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?(0,m.jsx)("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:(0,m.jsx)("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),(0,m.jsxs)("div",{className:"text-center",children:[(0,m.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?(0,m.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 Ze({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 se({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,n)=>(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)(Ze,{})})]},n))})})}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 _=require("react/jsx-runtime");function O({className:t,...e}){return(0,_.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,_.jsx)(B,{className:"h-5 w-3/4"}),(0,_.jsx)(B,{className:"h-4 w-full"}),(0,_.jsx)(B,{className:"h-4 w-5/6"}),(0,_.jsx)(B,{className:"h-4 w-4/5"}),(0,_.jsx)(B,{className:"h-4 w-3/4"})]})}var D=require("react/jsx-runtime");function q({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return(0,D.jsx)(l,{className:n,onRetry:i,children:e?(0,D.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,D.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,(0,D.jsx)(O,{})]}):(0,D.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,D.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}var V=require("react/jsx-runtime");function le({items:t,className:e}){return(0,V.jsx)(l,{className:e,children:(0,V.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,V.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,V.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,V.jsx)("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?(0,V.jsx)("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}var u=require("lucide-react");var p=require("react/jsx-runtime");function qe(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 Je={EMAIL_OPENED:u.Mail,EMAIL_SENT:u.Mail,INVOICE_PAID:u.FileText,INVOICE_OVERDUE:u.FileText,CONTRACT_SIGNED:u.FileText,STAGE_CHANGED:u.Zap,CALL_COMPLETED:u.Phone,PHONE_CALL:u.Phone,RELATIONSHIP_DETECTED:u.Link2};function Qe(t){return Je[t]??u.FileText}function Xe(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function Ye(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function J({events:t,onEntitySelect:e,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=e?a=>{let k=r?.(a.subject)??r?.(a.actor);k&&e(k)}:void 0;return(0,p.jsx)(l,{children:(0,p.jsx)("div",{className:o("space-y-2",i),children:t.length===0?(0,p.jsx)("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):t.map(a=>{let v=!!(r?.(a.subject)??r?.(a.actor))&&!!s,I=Qe(a.event_type),A=(0,p.jsxs)("div",{className:"flex flex-1 items-center gap-3",children:[(0,p.jsx)(I,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),(0,p.jsx)("div",{className:`h-2 w-2 shrink-0 rounded-full ${qe(a.confidence_score)}`,"aria-hidden":!0}),(0,p.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,p.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:Xe(a)}),(0,p.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:Ye(a)})]}),(0,p.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,p.jsx)("div",{children:v?(0,p.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,p.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"),g=require("lucide-react");var P=require("react/jsx-runtime"),je=[{id:"home",path:"/",icon:g.ClipboardList,label:"Home"},{id:"intelligence",path:"/intelligence",icon:g.Brain,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:g.BarChart3,label:"Pipeline"},{id:"graph",path:"/graph",icon:g.Network,label:"Graph"},{id:"events",path:"/events",icon:g.Activity,label:"Events"},{id:"settings",path:"/settings",icon:g.Settings,label:"Settings"}];function ce({items:t=je,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return(0,P.jsx)(l,{children:(0,P.jsxs)("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",n),children:[(0,P.jsx)("div",{className:"flex flex-col items-center gap-2",children:(0,P.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,P.jsx)(g.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),(0,P.jsx)("div",{className:"flex flex-1 flex-col gap-2",children:t.map(i=>{let s=i.icon;return(0,P.jsx)(Re.NavLink,{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:(0,P.jsx)(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}var N=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)(W,{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 de({entities:t,events:e,onFocusEntity:r,findEntity:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[k,v]=(0,N.useState)(""),[I,A]=(0,N.useState)([]),[E,Q]=(0,N.useState)(!1),[j,C]=(0,N.useState)(new Map),T=(0,N.useRef)(null);(0,N.useEffect)(()=>{T.current&&(T.current.scrollTop=T.current.scrollHeight)},[I,E]);let Le=(0,N.useCallback)(()=>{let S=k.trim();if(!S||E)return;let be=n?.(S);be&&r&&r(be);let Ae={id:`msg-${Date.now()}`,role:"user",content:S,timestamp:new Date().toISOString()},fe=et(S);A(X=>[...X,Ae]),v(""),Q(!0),setTimeout(()=>{let X={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:fe,timestamp:new Date().toISOString()},Y;switch(fe){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(ee=>{let ge=new Map(ee);return ge.set(X.id,Y),ge}),A(ee=>[...ee,X]),Q(!1)},1e3)},[k,E,t,e,r,n]);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:j.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)(O,{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)(H,{promptValue:k,onPromptChange:v,onPromptSubmit:Le,isProcessing:E,placeholder:i})})]})}var Be=require("lucide-react");var L=require("react/jsx-runtime");function me({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(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)(H,{promptValue:t,onPromptChange:e,onPromptSubmit:r,isProcessing:n,placeholder:i})})]}),s&&(0,L.jsx)("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}var h=require("react/jsx-runtime");function pe({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return(0,h.jsx)(l,{children:(0,h.jsxs)("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[(0,h.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,h.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&(0,h.jsxs)("div",{className:"flex items-center gap-2",children:[(0,h.jsx)("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),(0,h.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),(0,h.jsx)("div",{className:"flex-1 overflow-auto p-4",children:(0,h.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 ue({loading:t,kpiCards:e=at,aiInsights:r=nt,title:n="Intelligence Lab",subtitle:i="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:n}),(0,d.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i})]}),(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 M=require("react/jsx-runtime");function ve({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return(0,M.jsxs)("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[(0,M.jsx)("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),(0,M.jsx)("main",{className:"flex flex-1 flex-col overflow-hidden",children:(0,M.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,M.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[(0,M.jsx)("div",{className:"flex-1 overflow-auto",children:n}),(0,M.jsx)("div",{className:"shrink-0",children:r})]}),e&&(0,M.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});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{forwardRef as _e}from"react";import{clsx as Ae}from"clsx";import{twMerge as Te}from"tailwind-merge";function o(...e){return Te(Ae(e))}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"},L=_e(({className:e,variant:t="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[t],e),...n}));L.displayName="Button";import{jsx as p,jsxs as K}from"react/jsx-runtime";function me({className:e}){return K("svg",{viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:o("h-8 w-8",e),"aria-hidden":!0,children:[p("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeWidth:"1.5",className:"text-[var(--inkblot-semantic-color-text-tertiary)]"}),p("path",{d:"M8 12h2v2H8v-2zm6 0h2v2h-2v-2zM10 8l2 4 2-4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"text-[var(--inkblot-semantic-color-text-secondary)]"})]})}function S({promptValue:e="",onPromptChange:t,onPromptSubmit:r,isProcessing:n=!1,response:i,placeholder:s="Ask Citron Intelligence...",className:a}){let u=d=>{d.key==="Enter"&&!d.shiftKey&&(d.preventDefault(),r?.())};return K("div",{className:o("flex w-full max-w-2xl flex-col gap-8",a),children:[p("div",{className:"flex flex-col gap-4",children:K("div",{className:"flex items-start gap-4",children:[p("div",{className:"flex shrink-0 items-center justify-center",children:p(me,{})}),p("div",{className:"flex flex-1 flex-col gap-4",children:p("textarea",{value:e,onChange:d=>t?.(d.target.value),onKeyDown:u,placeholder:s,rows:3,disabled:n,className:o("w-full resize-none rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-primary)] p-4 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-shadow 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)]","shadow-[0_1px_3px_0_rgba(0,0,0,0.08),0_1px_2px_-1px_rgba(0,0,0,0.08)]","disabled:cursor-not-allowed disabled:opacity-70")})})]})}),n?p("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-xl)] 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%)]")}):i?p("div",{className:"flex flex-col gap-4",children:K("div",{className:"flex items-start gap-4",children:[p("div",{className:"shrink-0",children:p(me,{})}),p("div",{className:"min-w-0 flex-1 text-[var(--inkblot-semantic-color-text-primary)]",children:i})]})}):null]})}import{jsx as w,jsxs as P}from"react/jsx-runtime";var He={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:e,entityType:t,metadata:r,edges:n=[],className:i}){return P("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",He[t],i),children:[P("div",{className:"flex flex-col gap-1",children:[w("span",{className:"text-xs font-medium uppercase tracking-wide text-[var(--inkblot-semantic-color-text-tertiary)]",children:t}),w("h3",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:e})]}),r&&Object.keys(r).length>0?w("dl",{className:"flex flex-col gap-1",children:Object.entries(r).map(([s,a])=>P("div",{className:"flex gap-2",children:[P("dt",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:[s,":"]}),w("dd",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:a})]},s))}):null,n.length>0?P("div",{className:"flex flex-col gap-2",children:[w("h4",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Edges"}),w("ul",{className:"flex flex-wrap gap-2",children:n.map((s,a)=>P("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 Oe}from"react";import{jsx as Ge}from"react/jsx-runtime";var A=Oe(({className:e,error:t,disabled:r,...n},i)=>Ge("input",{ref:i,disabled:r,"aria-invalid":t,"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",t?"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)]",e),...n}));A.displayName="Input";import{Component as Fe}from"react";import{jsx as te,jsxs as Ke}from"react/jsx-runtime";var l=class extends Fe{constructor(t){super(t),this.state={hasError:!1,error:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}render(){return this.state.hasError&&this.state.error?Ke("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:[te("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),te("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),te(L,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};import{jsx as x,jsxs as re}from"react/jsx-runtime";function pe({title:e,insights:t,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let u=d=>{d.key==="Enter"&&(d.preventDefault(),s?.())};return x(l,{className:a,children:re("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[x("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:e}),t?x("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:t}):null,r.length>0?re("div",{children:[x("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),x("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((d,N)=>re("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[x("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:d.label}),x("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:d.value})]},N))})]}):null,x("div",{className:"mt-2",children:x(A,{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 $e}from"react";import{jsx as ue}from"react/jsx-runtime";var z=class extends $e{constructor(t){super(t),this.state={hasError:!1,error:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:ue("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:ue("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};import{jsx as Ue}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 U({label:e,variant:t="info",className:r}){return Ue("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",ze[t],r),children:e})}import{jsx as M,jsxs as Ze}from"react/jsx-runtime";function We(e){return e>=.8?"success":e>=.5?"info":e>=.2?"warning":"error"}function W({event:e,className:t}){let r=We(e.confidence_score),n=`${Math.round(e.confidence_score*100)}%`;return Ze("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",t),children:[M("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:e.actor}),M("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),M("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:e.subject}),M("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:e.event_type}),M("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:e.timestamp}),M(U,{label:n,variant:r})]})}import{jsx as g,jsxs as ve}from"react/jsx-runtime";var qe={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 Je(){return g("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:g("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function be({events:e,className:t}){return g(l,{className:t,children:g("div",{className:o("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:e.map(r=>ve("div",{className:"flex items-start gap-3",children:[g("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??g(Je,{})}),ve("div",{className:"min-w-0 flex-1",children:[g("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),g("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?g("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",qe[r.status]),"aria-hidden":!0}):null]},r.id))})})}import{jsx as f,jsxs as T}from"react/jsx-runtime";var ae=36,oe=2*Math.PI*ae;function Z({label:e,value:t,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,t)),a=oe-s/100*oe;return f(l,{className:i,children:T("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[T("div",{className:"relative",children:[T("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[f("circle",{cx:"48",cy:"48",r:ae,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),f("circle",{cx:"48",cy:"48",r:ae,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:oe,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),f("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:T("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?f("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:f("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?f("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:f("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),T("div",{className:"text-center",children:[f("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:e}),r?f("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}import{jsx as h,jsxs as Ye}from"react/jsx-runtime";var Qe={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 Xe({className:e}){return h("svg",{viewBox:"0 0 16 16",className:o("h-4 w-4",e),"aria-hidden":!0,children:h("path",{fill:"currentColor",d:"M6 4l4 4-4 4V4z"})})}function fe({items:e,className:t}){return h(l,{className:t,children:h("ul",{className:o("flex flex-col gap-4 py-2"),children:e.map((r,n)=>Ye("li",{className:"flex items-center justify-between gap-4",children:[h("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:r.label}),h("span",{className:o("flex items-center gap-1 text-sm font-medium",Qe[r.variant??"default"]),children:r.value!=null?r.value:h(Xe,{})})]},n))})})}import{jsx as je}from"react/jsx-runtime";function k({className:e,...t}){return je("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%)]",e),...t})}import{jsx as _,jsxs as et}from"react/jsx-runtime";function I({className:e,...t}){return et("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",e),...t,children:[_(k,{className:"h-5 w-3/4"}),_(k,{className:"h-4 w-full"}),_(k,{className:"h-4 w-5/6"}),_(k,{className:"h-4 w-4/5"}),_(k,{className:"h-4 w-3/4"})]})}import{jsx as q,jsxs as xe}from"react/jsx-runtime";function J({children:e,loading:t=!1,title:r,className:n,onRetry:i}){return q(l,{className:n,onRetry:i,children:t?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(I,{})]}):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,e]})})}import{jsx as D,jsxs as tt}from"react/jsx-runtime";function ge({items:e,className:t}){return D(l,{className:t,children:D("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:e.map(r=>tt("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?D("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,D("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?D("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}import{Mail as ye,FileText as Q,Zap as rt,Phone as ke,Link2 as ot}from"lucide-react";import{jsx as v,jsxs as Ne}from"react/jsx-runtime";function at(e){return e>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":e>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":e>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var nt={EMAIL_OPENED:ye,EMAIL_SENT:ye,INVOICE_PAID:Q,INVOICE_OVERDUE:Q,CONTRACT_SIGNED:Q,STAGE_CHANGED:rt,CALL_COMPLETED:ke,PHONE_CALL:ke,RELATIONSHIP_DETECTED:ot};function it(e){return nt[e]??Q}function st(e){return e.metadata?.description??e.event_type.replace(/_/g," ").toLowerCase()}function lt(e){return e.metadata?.details??`${e.actor} - ${e.subject}`}function X({events:e,onEntitySelect:t,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=t?a=>{let u=r?.(a.subject)??r?.(a.actor);u&&t(u)}:void 0;return v(l,{children:v("div",{className:o("space-y-2",i),children:e.length===0?v("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):e.map(a=>{let d=!!(r?.(a.subject)??r?.(a.actor))&&!!s,N=it(a.event_type),R=Ne("div",{className:"flex flex-1 items-center gap-3",children:[v(N,{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 ${at(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:st(a)}),v("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:lt(a)})]}),v("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),y=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:R}):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:R})},y)})})})}import{NavLink as ct}from"react-router-dom";import{ClipboardList as dt,Brain as mt,BarChart3 as pt,Network as ut,Activity as vt,Settings as bt,Sparkles as ft}from"lucide-react";import{jsx as E,jsxs as gt}from"react/jsx-runtime";var xt=[{id:"home",path:"/",icon:dt,label:"Home"},{id:"intelligence",path:"/intelligence",icon:mt,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:pt,label:"Pipeline"},{id:"graph",path:"/graph",icon:ut,label:"Graph"},{id:"events",path:"/events",icon:vt,label:"Events"},{id:"settings",path:"/settings",icon:bt,label:"Settings"}];function he({items:e=xt,brandLogo:t,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return E(l,{children:gt("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",n),children:[E("div",{className:"flex flex-col items-center gap-2",children:E("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:t??E(ft,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),E("div",{className:"flex flex-1 flex-col gap-2",children:e.map(i=>{let s=i.icon;return E(ct,{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:E(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}import{useState as Y,useCallback as yt,useRef as kt,useEffect as Nt}from"react";import{jsx as c,jsxs as j}from"react/jsx-runtime";function ht(e){let t=e.toLowerCase();return t.includes("entity")||t.includes("company")||t.includes("person")||t.includes("deal")||t.includes("profile")||t.includes("org")?"entity":t.includes("event")||t.includes("activity")||t.includes("recent")||t.includes("stream")||t.includes("log")?"event":"general"}function Et({entities:e}){let t=e[0];return t?j("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:t.name,entityType:t.type,metadata:t.metadata,edges:[{type:"WORKS_WITH",target:e[1]?.name},{type:"MANAGES",target:e[4]?.name}]})]}):null}function Ct({events:e}){return j("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:"}),e.slice(0,5).map(t=>c(W,{event:t},t.id??`${t.actor}-${t.subject}-${t.timestamp}`))]})}function St(){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 Ee({entities:e,events:t,onFocusEntity:r,findEntity:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[u,d]=Y(""),[N,R]=Y([]),[y,se]=Y(!1),[Ie,Be]=Y(new Map),O=kt(null);Nt(()=>{O.current&&(O.current.scrollTop=O.current.scrollHeight)},[N,y]);let Re=yt(()=>{let b=u.trim();if(!b||y)return;let le=n?.(b);le&&r&&r(le);let Le={id:`msg-${Date.now()}`,role:"user",content:b,timestamp:new Date().toISOString()},ce=ht(b);R(G=>[...G,Le]),d(""),se(!0),setTimeout(()=>{let G={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:ce,timestamp:new Date().toISOString()},F;switch(ce){case"entity":F=c(Et,{entities:e});break;case"event":F=c(Ct,{events:t});break;default:F=c(St,{})}Be(ee=>{let de=new Map(ee);return de.set(G.id,F),de}),R(ee=>[...ee,G]),se(!1)},1e3)},[u,y,e,t,r,n]);return j("div",{className:o("flex h-full flex-col",a),children:[j("div",{ref:O,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[N.length===0&&!y?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})}):N.map(b=>c("div",{className:"flex flex-col gap-2",children:b.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:b.content})}):c("div",{className:"max-w-[90%]",children:Ie.get(b.id)??c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:b.content})})},b.id)),y&&c("div",{className:"max-w-[70%]",children:c(I,{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(S,{promptValue:u,onPromptChange:d,onPromptSubmit:Re,isProcessing:y,placeholder:i})})]})}import{Sparkles as wt}from"lucide-react";import{jsx as V,jsxs as Ce}from"react/jsx-runtime";function Se({prompt:e,onPromptChange:t,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 Ce("div",{className:o("border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",a),children:[Ce("div",{className:"flex items-center gap-3",children:[V("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:V(wt,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),V("div",{className:"flex-1",children:V(S,{promptValue:e,onPromptChange:t,onPromptSubmit:r,isProcessing:n,placeholder:i})})]}),s&&V("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}import{jsx as B,jsxs as ne}from"react/jsx-runtime";function we({events:e,title:t="Event Stream",showLive:r=!0,className:n}){return B(l,{children:ne("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[ne("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[B("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:t}),r&&ne("div",{className:"flex items-center gap-2",children:[B("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),B("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),B("div",{className:"flex-1 overflow-auto p-4",children:B(X,{events:e})})]})})}import{jsx as m,jsxs as C}from"react/jsx-runtime";var Pt=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],Mt=[{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:e,kpiCards:t=Pt,aiInsights:r=Mt,title:n="Intelligence Lab",subtitle:i="AI-generated insights - Updated 3 min ago",className:s}){return C("div",{className:o("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[C("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:e,title:"",children:m(l,{children:C("div",{className:"flex flex-col gap-4",children:[m("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:t.map(a=>m(Z,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),C("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:C("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[C("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})]}),C("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 H,jsxs as ie}from"react/jsx-runtime";function Me({navigation:e,eventStream:t,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return ie("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[H("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:e}),H("main",{className:"flex flex-1 flex-col overflow-hidden",children:ie("div",{className:"flex min-h-0 flex-1",children:[ie("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[H("div",{className:"flex-1 overflow-auto",children:n}),H("div",{className:"shrink-0",children:r})]}),t&&H("aside",{className:o("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:t})]})})]})}export{X as ActivityStream,he as AppNavigationRail,L as Button,Ee as ChatFeed,Se as CommandBar,S as CommandInterface,$ as EntityCard,pe as EntityCommandCard,z as ErrorBoundary,W as EventRow,be as EventStreamFeed,we as EventStreamSidebar,A as Input,Pe as IntelligenceLab,Z as IntelligenceScoreCard,Me as MainShell,fe as MetricComparisonList,J as ModuleContainer,l as ModuleErrorBoundary,I as ModuleSkeleton,ge as OSNavigationRail,k as Skeleton,U as StatusBadge};
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 De}from"react/jsx-runtime";var _e={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)=>De("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)]",_e[e],t),...n}));T.displayName="Button";import{useRef as Ve}from"react";import{Paperclip as He}from"lucide-react";import{jsx as y,jsxs as pe}from"react/jsx-runtime";function M({promptValue:t="",onPromptChange:e,onPromptSubmit:r,onFilesAttach:n,isProcessing:i=!1,response:s,placeholder:a="Ask Citron Intelligence...",accept:p,multiple:d=!0,className:x}){let h=Ve(null),v=b=>{b.key==="Enter"&&!b.shiftKey&&(b.preventDefault(),r?.())},F=()=>{h.current?.click()},te=b=>{let E=b.target.files;E&&E.length>0&&n&&n(Array.from(E)),b.target.value=""};return pe("div",{className:o("flex w-full max-w-2xl flex-col gap-8",x),children:[y("div",{className:"flex flex-col gap-4",children:y("div",{className:"flex flex-1 flex-col gap-4",children:pe("div",{className:"flex items-start gap-2",children:[y("input",{ref:h,type:"file",accept:p,multiple:d,onChange:te,className:"sr-only","aria-hidden":!0}),y("button",{type:"button",onClick:F,disabled:i,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-lg text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-secondary)] 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-50"),"aria-label":"Adjuntar archivos",children:y(He,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),y("textarea",{value:t,onChange:b=>e?.(b.target.value),onKeyDown:v,placeholder:a,rows:3,disabled:i,className:o("min-w-0 flex-1 resize-none rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-primary)] p-4 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-shadow 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)]","shadow-[0_1px_3px_0_rgba(0,0,0,0.08),0_1px_2px_-1px_rgba(0,0,0,0.08)]","disabled:cursor-not-allowed disabled:opacity-70")})]})})}),i?y("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-xl)] 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%)]")}):s?y("div",{className:"flex flex-col gap-4",children:y("div",{className:"min-w-0 text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}import{jsx as I,jsxs as R}from"react/jsx-runtime";var Oe={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 z({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",Oe[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 Ge}from"react";import{jsx as Fe}from"react/jsx-runtime";var _=Ge(({className:t,error:e,disabled:r,...n},i)=>Fe("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}));_.displayName="Input";import{Component as Ke}from"react";import{jsx as oe,jsxs as $e}from"react/jsx-runtime";var l=class extends Ke{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?$e("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:[oe("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),oe("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),oe(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 ae}from"react/jsx-runtime";function ue({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let p=d=>{d.key==="Enter"&&(d.preventDefault(),s?.())};return k(l,{className:a,children:ae("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?ae("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,x)=>ae("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})]},x))})]}):null,k("div",{className:"mt-2",children:k(_,{type:"text",value:n,onChange:d=>i?.(d.target.value),onKeyDown:p,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}import{Component as ze}from"react";import{jsx as ve}from"react/jsx-runtime";var U=class extends ze{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 We}from"react/jsx-runtime";var Ue={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 We("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Ue[e],r),children:t})}import{jsx as B,jsxs as qe}from"react/jsx-runtime";function Ze(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function Z({event:t,className:e}){let r=Ze(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 N,jsxs as be}from"react/jsx-runtime";var Je={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 Qe(){return N("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:N("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function fe({events:t,className:e}){return N(l,{className:e,children:N("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:[N("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??N(Qe,{})}),be("div",{className:"min-w-0 flex-1",children:[N("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),N("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?N("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",Je[r.status]),"aria-hidden":!0}):null]},r.id))})})}import{jsx as g,jsxs as D}from"react/jsx-runtime";var ie=36,ne=2*Math.PI*ie;function q({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=ne-s/100*ne;return g(l,{className:i,children:D("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[D("div",{className:"relative",children:[D("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[g("circle",{cx:"48",cy:"48",r:ie,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),g("circle",{cx:"48",cy:"48",r:ie,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ne,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),g("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:D("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?g("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:g("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?g("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:g("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),D("div",{className:"text-center",children:[g("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?g("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}import{jsx as S,jsxs as je}from"react/jsx-runtime";var Xe={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 Ye({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)=>je("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",Xe[r.variant??"default"]),children:r.value!=null?r.value:S(Ye,{})})]},n))})})}import{jsx as et}from"react/jsx-runtime";function C({className:t,...e}){return et("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 V,jsxs as tt}from"react/jsx-runtime";function L({className:t,...e}){return tt("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:[V(C,{className:"h-5 w-3/4"}),V(C,{className:"h-4 w-full"}),V(C,{className:"h-4 w-5/6"}),V(C,{className:"h-4 w-4/5"}),V(C,{className:"h-4 w-3/4"})]})}import{jsx as J,jsxs as xe}from"react/jsx-runtime";function Q({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return J(l,{className:n,onRetry:i,children:e?xe("div",{className:o("flex flex-col gap-4",n),children:[r?J("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,J(L,{})]}):xe("div",{className:o("flex flex-col gap-4",n),children:[r?J("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}import{jsx as H,jsxs as rt}from"react/jsx-runtime";function ye({items:t,className:e}){return H(l,{className:e,children:H("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=>rt("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?H("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,H("div",{className:"flex h-8 w-8 items-center justify-center [&>svg]:h-5 [&>svg]:w-5",children:r.icon}),r.label?H("span",{className:"text-[10px] font-medium",children:r.label}):null]},r.id))})})}import{Mail as ke,FileText as X,Zap as ot,Phone as Ne,Link2 as at}from"lucide-react";import{jsx as u,jsxs as he}from"react/jsx-runtime";function nt(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 it={EMAIL_OPENED:ke,EMAIL_SENT:ke,INVOICE_PAID:X,INVOICE_OVERDUE:X,CONTRACT_SIGNED:X,STAGE_CHANGED:ot,CALL_COMPLETED:Ne,PHONE_CALL:Ne,RELATIONSHIP_DETECTED:at};function st(t){return it[t]??X}function lt(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function ct(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function Y({events:t,onEntitySelect:e,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=e?a=>{let p=r?.(a.subject)??r?.(a.actor);p&&e(p)}:void 0;return u(l,{children:u("div",{className:o("space-y-2",i),children:t.length===0?u("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,x=st(a.event_type),h=he("div",{className:"flex flex-1 items-center gap-3",children:[u(x,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),u("div",{className:`h-2 w-2 shrink-0 rounded-full ${nt(a.confidence_score)}`,"aria-hidden":!0}),he("div",{className:"min-w-0 flex-1",children:[u("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:lt(a)}),u("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:ct(a)})]}),u("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),v=a.id??`${a.actor}-${a.subject}-${a.timestamp}`;return u("div",{children:d?u("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:h}):u("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:h})},v)})})})}import{NavLink as dt}from"react-router-dom";import{ClipboardList as mt,Brain as pt,BarChart3 as ut,Network as vt,Activity as bt,Settings as ft,Sparkles as gt}from"lucide-react";import{jsx as w,jsxs as yt}from"react/jsx-runtime";var xt=[{id:"home",path:"/",icon:mt,label:"Home"},{id:"intelligence",path:"/intelligence",icon:pt,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:ut,label:"Pipeline"},{id:"graph",path:"/graph",icon:vt,label:"Graph"},{id:"events",path:"/events",icon:bt,label:"Events"},{id:"settings",path:"/settings",icon:ft,label:"Settings"}];function Ee({items:t=xt,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return w(l,{children:yt("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(gt,{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(dt,{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 j,useCallback as kt,useRef as Nt,useEffect as ht}from"react";import{jsx as c,jsxs as ee}from"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 Ct({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(z,{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 St({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(Z,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function wt(){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[p,d]=j(""),[x,h]=j([]),[v,F]=j(!1),[te,b]=j(new Map),E=Nt(null);ht(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[x,v]);let Re=kt(()=>{let f=p.trim();if(!f||v)return;let ce=n?.(f);ce&&r&&r(ce);let Be={id:`msg-${Date.now()}`,role:"user",content:f,timestamp:new Date().toISOString()},de=Et(f);h(K=>[...K,Be]),d(""),F(!0),setTimeout(()=>{let K={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:de,timestamp:new Date().toISOString()},$;switch(de){case"entity":$=c(Ct,{entities:t});break;case"event":$=c(St,{events:e});break;default:$=c(wt,{})}b(re=>{let me=new Map(re);return me.set(K.id,$),me}),h(re=>[...re,K]),F(!1)},1e3)},[p,v,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:[x.length===0&&!v?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})}):x.map(f=>c("div",{className:"flex flex-col gap-2",children:f.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:f.content})}):c("div",{className:"max-w-[90%]",children:te.get(f.id)??c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:f.content})})},f.id)),v&&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(M,{promptValue:p,onPromptChange:d,onPromptSubmit:Re,isProcessing:v,placeholder:i})})]})}import{Sparkles as Pt}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(Pt,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),O("div",{className:"flex-1",children:O(M,{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 se}from"react/jsx-runtime";function Pe({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return A(l,{children:se("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[se("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&&se("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(Y,{events:t})})]})})}import{jsx as m,jsxs as P}from"react/jsx-runtime";var Mt=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],It=[{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:e=Mt,aiInsights:r=It,title:n="Intelligence Lab",subtitle:i="AI-generated insights - Updated 3 min ago",className:s}){return P("div",{className:o("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[P("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(Q,{loading:t,title:"",children:m(l,{children:P("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(q,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),P("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:P("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[P("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})]}),P("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 le}from"react/jsx-runtime";function Ie({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return le("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:le("div",{className:"flex min-h-0 flex-1",children:[le("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{Y as ActivityStream,Ee as AppNavigationRail,T as Button,Ce as ChatFeed,we as CommandBar,M as CommandInterface,z as EntityCard,ue as EntityCommandCard,U as ErrorBoundary,Z as EventRow,fe as EventStreamFeed,Pe as EventStreamSidebar,_ as Input,Me as IntelligenceLab,q as IntelligenceScoreCard,Ie as MainShell,ge as MetricComparisonList,Q as ModuleContainer,l as ModuleErrorBoundary,L as ModuleSkeleton,ye as OSNavigationRail,C as Skeleton,W as StatusBadge};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@citron-systems/citron-ui",
3
- "version": "1.1.0",
3
+ "version": "1.2.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",