@citron-systems/citron-ui 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
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});
1
+ "use strict";var re=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var _e=Object.prototype.hasOwnProperty;var Ve=(t,e)=>{for(var r in e)re(t,r,{get:e[r],enumerable:!0})},He=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of De(e))!_e.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=Te(e,i))||n.enumerable});return t};var Oe=t=>He(re({},"__esModule",{value:!0}),t);var it={};Ve(it,{ActivityStream:()=>J,AppNavigationRail:()=>de,Button:()=>G,ChatFeed:()=>me,CommandBar:()=>pe,CommandInterface:()=>H,EntityCard:()=>z,EntityCommandCard:()=>oe,ErrorBoundary:()=>U,EventRow:()=>Z,EventStreamFeed:()=>ne,EventStreamSidebar:()=>ue,Input:()=>K,IntelligenceLab:()=>ve,IntelligenceScoreCard:()=>j,MainShell:()=>be,MetricComparisonList:()=>le,ModuleContainer:()=>q,ModuleErrorBoundary:()=>l,ModuleSkeleton:()=>O,OSNavigationRail:()=>ce,Skeleton:()=>B,StatusBadge:()=>W});module.exports=Oe(it);var he=require("react");var ye=require("clsx"),ke=require("tailwind-merge");function o(...t){return(0,ke.twMerge)((0,ye.clsx)(t))}var Ne=require("react/jsx-runtime"),Ge={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},G=(0,he.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 Ee=require("react"),F=require("lucide-react");var p=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:b=!0,className:I}){let A=(0,Ee.useRef)(null),E=C=>{C.key==="Enter"&&!C.shiftKey&&(C.preventDefault(),r?.())},Q=()=>{A.current?.click()},ee=C=>{let T=C.target.files;T&&T.length>0&&n&&n(Array.from(T)),C.target.value=""};return(0,p.jsxs)("div",{className:o("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",I),children:[(0,p.jsxs)("div",{className:"flex items-center gap-[var(--inkblot-spacing-2)]",children:[(0,p.jsx)("input",{ref:A,type:"file",accept:k,multiple:b,onChange:ee,className:"sr-only","aria-hidden":!0}),(0,p.jsx)("button",{type:"button",onClick:Q,disabled:i,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:(0,p.jsx)(F.Paperclip,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),(0,p.jsxs)("div",{className:o("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),children:[(0,p.jsx)("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:(0,p.jsx)(F.Sparkles,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),(0,p.jsx)("textarea",{value:t,onChange:C=>e?.(C.target.value),onKeyDown:E,placeholder:a,rows:2,disabled:i,className:o("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),(0,p.jsx)("button",{type:"button",onClick:r,disabled:i,className:o("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Enviar",children:(0,p.jsx)(F.Send,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})]})]}),i?(0,p.jsx)("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-full)] 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,p.jsx)("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:(0,p.jsx)("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}var f=require("react/jsx-runtime"),Fe={Person:"border-l-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-background-secondary)]",Organization:"border-l-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-background-secondary)]",Deal:"border-l-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-background-secondary)]"};function z({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",Fe[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 Ce=require("react");var Se=require("react/jsx-runtime"),K=(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}));K.displayName="Input";var we=require("react");var $=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,$.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,$.jsx)("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),(0,$.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),(0,$.jsx)(G,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};var g=require("react/jsx-runtime");function oe({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let k=b=>{b.key==="Enter"&&(b.preventDefault(),s?.())};return(0,g.jsx)(l,{className:a,children:(0,g.jsxs)("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,g.jsx)("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?(0,g.jsx)("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:e}):null,r.length>0?(0,g.jsxs)("div",{children:[(0,g.jsx)("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),(0,g.jsx)("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((b,I)=>(0,g.jsxs)("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[(0,g.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:b.label}),(0,g.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:b.value})]},I))})]}):null,(0,g.jsx)("div",{className:"mt-2",children:(0,g.jsx)(K,{type:"text",value:n,onChange:b=>i?.(b.target.value),onKeyDown:k,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}var Me=require("react");var ae=require("react/jsx-runtime"),U=class extends Me.Component{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:(0,ae.jsx)("div",{className:o("inline-flex items-center gap-3 rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-4 py-3 text-[var(--inkblot-semantic-color-text-secondary)]",this.props.className),role:"alert",children:(0,ae.jsx)("span",{className:"text-sm font-medium",children:"Something went wrong"})}):this.props.children}};var Pe=require("react/jsx-runtime"),Ke={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function W({label:t,variant:e="info",className:r}){return(0,Pe.jsx)("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Ke[e],r),children:t})}var R=require("react/jsx-runtime");function $e(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function Z({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)(W,{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 ne({events:t,className:e}){return(0,y.jsx)(l,{className:e,children:(0,y.jsx)("div",{className:o("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(r=>(0,y.jsxs)("div",{className:"flex items-start gap-3",children:[(0,y.jsx)("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??(0,y.jsx)(Ue,{})}),(0,y.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,y.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),(0,y.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?(0,y.jsx)("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",ze[r.status]),"aria-hidden":!0}):null]},r.id))})})}var m=require("react/jsx-runtime"),se=36,ie=2*Math.PI*se;function j({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=ie-s/100*ie;return(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:se,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),(0,m.jsx)("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ie,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),(0,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 le({items:t,className:e}){return(0,w.jsx)(l,{className:e,children:(0,w.jsx)("ul",{className:o("flex flex-col gap-4 py-2"),children:t.map((r,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 D=require("react/jsx-runtime");function O({className:t,...e}){return(0,D.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,D.jsx)(B,{className:"h-5 w-3/4"}),(0,D.jsx)(B,{className:"h-4 w-full"}),(0,D.jsx)(B,{className:"h-4 w-5/6"}),(0,D.jsx)(B,{className:"h-4 w-4/5"}),(0,D.jsx)(B,{className:"h-4 w-3/4"})]})}var _=require("react/jsx-runtime");function q({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return(0,_.jsx)(l,{className:n,onRetry:i,children:e?(0,_.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,_.jsx)("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,(0,_.jsx)(O,{})]}):(0,_.jsxs)("div",{className:o("flex flex-col gap-4",n),children:[r?(0,_.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 ce({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 v=require("lucide-react");var u=require("react/jsx-runtime");function je(t){return t>=.8?"bg-[var(--inkblot-semantic-color-status-success)]":t>=.5?"bg-[var(--inkblot-semantic-color-status-info)]":t>=.2?"bg-[var(--inkblot-semantic-color-status-warning)]":"bg-[var(--inkblot-semantic-color-status-error)]"}var qe={EMAIL_OPENED:v.Mail,EMAIL_SENT:v.Mail,INVOICE_PAID:v.FileText,INVOICE_OVERDUE:v.FileText,CONTRACT_SIGNED:v.FileText,STAGE_CHANGED:v.Zap,CALL_COMPLETED:v.Phone,PHONE_CALL:v.Phone,RELATIONSHIP_DETECTED:v.Link2};function Je(t){return qe[t]??v.FileText}function Qe(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function Xe(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function J({events:t,onEntitySelect:e,findEntity:r,emptyMessage: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,u.jsx)(l,{children:(0,u.jsx)("div",{className:o("space-y-2",i),children:t.length===0?(0,u.jsx)("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):t.map(a=>{let b=!!(r?.(a.subject)??r?.(a.actor))&&!!s,I=Je(a.event_type),A=(0,u.jsxs)("div",{className:"flex flex-1 items-center gap-3",children:[(0,u.jsx)(I,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),(0,u.jsx)("div",{className:`h-2 w-2 shrink-0 rounded-full ${je(a.confidence_score)}`,"aria-hidden":!0}),(0,u.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,u.jsx)("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:Qe(a)}),(0,u.jsx)("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:Xe(a)})]}),(0,u.jsx)("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),E=a.id??`${a.actor}-${a.subject}-${a.timestamp}`;return(0,u.jsx)("div",{children:b?(0,u.jsx)("button",{type:"button",onClick:()=>s(a),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:A}):(0,u.jsx)("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:A})},E)})})})}var Re=require("react-router-dom"),x=require("lucide-react");var M=require("react/jsx-runtime"),Ye=[{id:"home",path:"/",icon:x.ClipboardList,label:"Home"},{id:"intelligence",path:"/intelligence",icon:x.Brain,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:x.BarChart3,label:"Pipeline"},{id:"graph",path:"/graph",icon:x.Network,label:"Graph"},{id:"events",path:"/events",icon:x.Activity,label:"Events"},{id:"settings",path:"/settings",icon:x.Settings,label:"Settings"}];function de({items:t=Ye,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return(0,M.jsx)(l,{children:(0,M.jsxs)("nav",{className:o("flex h-full flex-col gap-4 bg-[var(--inkblot-semantic-color-background-secondary)] p-3",n),children:[(0,M.jsx)("div",{className:"flex flex-col items-center gap-2",children:(0,M.jsx)("div",{className:"flex h-10 w-10 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-interactive-primary)]",title:r,children:e??(0,M.jsx)(x.Sparkles,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})})}),(0,M.jsx)("div",{className:"flex flex-1 flex-col gap-2",children:t.map(i=>{let s=i.icon;return(0,M.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,M.jsx)(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}var h=require("react");var c=require("react/jsx-runtime");function et(t){let e=t.toLowerCase();return e.includes("entity")||e.includes("company")||e.includes("person")||e.includes("deal")||e.includes("profile")||e.includes("org")?"entity":e.includes("event")||e.includes("activity")||e.includes("recent")||e.includes("stream")||e.includes("log")?"event":"general"}function tt({entities:t}){let e=t[0];return e?(0,c.jsxs)("div",{className:"space-y-3",children:[(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:"Here's the entity profile and current intelligence scores:"}),(0,c.jsx)(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 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)(Z,{event:e},e.id??`${e.actor}-${e.subject}-${e.timestamp}`))]})}function ot(){return(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:"Revenue confidence is trending upward at 78%. Momentum score increased 12% this week driven by 3 new meetings with Acme Corp. Churn risk remains low at 15% across the active pipeline."})}function me({entities:t,events:e,onFocusEntity:r,findEntity:n,placeholder:i="Ask anything \u2014 deals, contacts, forecasts...",emptyMessage:s="Escribe para comenzar...",className:a}){let[k,b]=(0,h.useState)(""),[I,A]=(0,h.useState)([]),[E,Q]=(0,h.useState)(!1),[ee,C]=(0,h.useState)(new Map),T=(0,h.useRef)(null);(0,h.useEffect)(()=>{T.current&&(T.current.scrollTop=T.current.scrollHeight)},[I,E]);let Le=(0,h.useCallback)(()=>{let S=k.trim();if(!S||E)return;let fe=n?.(S);fe&&r&&r(fe);let Ae={id:`msg-${Date.now()}`,role:"user",content:S,timestamp:new Date().toISOString()},ge=et(S);A(X=>[...X,Ae]),b(""),Q(!0),setTimeout(()=>{let X={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:ge,timestamp:new Date().toISOString()},Y;switch(ge){case"entity":Y=(0,c.jsx)(tt,{entities:t});break;case"event":Y=(0,c.jsx)(rt,{events:e});break;default:Y=(0,c.jsx)(ot,{})}C(te=>{let xe=new Map(te);return xe.set(X.id,Y),xe}),A(te=>[...te,X]),Q(!1)},1e3)},[k,E,t,e,r,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:ee.get(S.id)??(0,c.jsx)("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:S.content})})},S.id)),E&&(0,c.jsx)("div",{className:"max-w-[70%]",children:(0,c.jsx)(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:b,onPromptSubmit:Le,isProcessing:E,placeholder:i})})]})}var Be=require("lucide-react");var L=require("react/jsx-runtime");function pe({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 N=require("react/jsx-runtime");function ue({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return(0,N.jsx)(l,{children:(0,N.jsxs)("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[(0,N.jsxs)("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[(0,N.jsx)("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&(0,N.jsxs)("div",{className:"flex items-center gap-2",children:[(0,N.jsx)("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),(0,N.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),(0,N.jsx)("div",{className:"flex-1 overflow-auto p-4",children:(0,N.jsx)(J,{events:t})})]})})}var d=require("react/jsx-runtime"),at=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],nt=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function ve({loading:t,kpiCards:e=at,aiInsights:r=nt,title: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)(j,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),(0,d.jsx)("div",{className:"flex flex-col gap-4",children:r.map(a=>(0,d.jsx)(l,{children:(0,d.jsxs)("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),(0,d.jsx)("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.description})]}),(0,d.jsxs)("div",{className:"flex shrink-0 flex-col items-center",children:[(0,d.jsx)("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:a.confidence}),(0,d.jsx)("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},a.title))})]})]})})})]})}var P=require("react/jsx-runtime");function be({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return(0,P.jsxs)("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[(0,P.jsx)("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),(0,P.jsx)("main",{className:"flex flex-1 flex-col overflow-hidden",children:(0,P.jsxs)("div",{className:"flex min-h-0 flex-1",children:[(0,P.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[(0,P.jsx)("div",{className:"flex-1 overflow-auto",children:n}),(0,P.jsx)("div",{className:"shrink-0",children:r})]}),e&&(0,P.jsx)("aside",{className:o("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:e})]})})]})}0&&(module.exports={ActivityStream,AppNavigationRail,Button,ChatFeed,CommandBar,CommandInterface,EntityCard,EntityCommandCard,ErrorBoundary,EventRow,EventStreamFeed,EventStreamSidebar,Input,IntelligenceLab,IntelligenceScoreCard,MainShell,MetricComparisonList,ModuleContainer,ModuleErrorBoundary,ModuleSkeleton,OSNavigationRail,Skeleton,StatusBadge});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
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};
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 _e}from"react/jsx-runtime";var De={primary:"bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",secondary:"bg-[var(--inkblot-semantic-color-interactive-secondary)] text-[var(--inkblot-semantic-color-text-primary)] border border-[var(--inkblot-semantic-color-border-default)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] hover:border-[var(--inkblot-semantic-color-border-strong)] active:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--inkblot-semantic-color-border-focus)] focus-visible:outline-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed"},T=Te(({className:t,variant:e="primary",disabled:r,...n},i)=>_e("button",{ref:i,disabled:r,className:o("inline-flex min-h-[var(--inkblot-size-touch-target-min)] items-center justify-center rounded-[var(--inkblot-radius-lg)] px-4 py-2 font-semibold transition-[background,border-color] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)]",De[e],t),...n}));T.displayName="Button";import{useRef as Ve}from"react";import{Paperclip as He,Send as Oe,Sparkles as Ge}from"lucide-react";import{jsx as u,jsxs as oe}from"react/jsx-runtime";function P({promptValue:t="",onPromptChange:e,onPromptSubmit:r,onFilesAttach:n,isProcessing:i=!1,response:s,placeholder:a="Ask Citron Intelligence...",accept:p,multiple:d=!0,className:y}){let N=Ve(null),b=f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),r?.())},F=()=>{N.current?.click()},te=f=>{let E=f.target.files;E&&E.length>0&&n&&n(Array.from(E)),f.target.value=""};return oe("div",{className:o("flex w-full max-w-[80rem] flex-col gap-[var(--inkblot-spacing-2)]",y),children:[oe("div",{className:"flex items-center gap-[var(--inkblot-spacing-2)]",children:[u("input",{ref:N,type:"file",accept:p,multiple:d,onChange:te,className:"sr-only","aria-hidden":!0}),u("button",{type:"button",onClick:F,disabled:i,className:o("flex h-9 w-9 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-tertiary)] transition-colors duration-[var(--inkblot-duration-fast)]","hover:bg-[var(--inkblot-semantic-color-background-tertiary)] hover:text-[var(--inkblot-semantic-color-text-secondary)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Adjuntar archivos",children:u(He,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0})}),oe("div",{className:o("relative flex min-w-0 flex-1 items-center gap-[var(--inkblot-spacing-2)] rounded-[var(--inkblot-radius-full)] bg-[var(--inkblot-semantic-color-background-primary)] px-[var(--inkblot-spacing-4)] py-[var(--inkblot-spacing-2)] shadow-[var(--inkblot-shadow-sm)]","transition-shadow duration-[var(--inkblot-duration-fast)]"),children:[u("div",{className:"flex shrink-0 items-center opacity-[var(--inkblot-opacity-subtle)]","aria-hidden":!0,children:u(Ge,{size:20,strokeWidth:1.5,className:"text-[var(--inkblot-semantic-color-text-tertiary)]"})}),u("textarea",{value:t,onChange:f=>e?.(f.target.value),onKeyDown:b,placeholder:a,rows:2,disabled:i,className:o("min-h-[2.5rem] min-w-0 flex-1 resize-none border-0 bg-transparent py-0 pr-[var(--inkblot-spacing-12)] [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)]","focus:outline-none focus:ring-0","disabled:cursor-not-allowed disabled:opacity-[var(--inkblot-opacity-disabled)]")}),u("button",{type:"button",onClick:r,disabled:i,className:o("absolute right-[var(--inkblot-spacing-2)] top-[var(--inkblot-spacing-2)] flex h-8 w-8 shrink-0 items-center justify-center rounded-[var(--inkblot-radius-full)] text-[var(--inkblot-semantic-color-text-inverse)] transition-colors duration-[var(--inkblot-duration-fast)]","bg-[var(--inkblot-semantic-color-interactive-primary)] hover:bg-[var(--inkblot-semantic-color-interactive-primary-hover)] active:bg-[var(--inkblot-semantic-color-interactive-primary-active)]","focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]","disabled:pointer-events-none disabled:opacity-[var(--inkblot-opacity-disabled)]"),"aria-label":"Enviar",children:u(Oe,{size:16,strokeWidth:2,className:"text-[var(--inkblot-semantic-color-text-inverse)]","aria-hidden":!0})})]})]}),i?u("div",{className:o("min-h-[80px] animate-shimmer rounded-[var(--inkblot-radius-full)] 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?u("div",{className:"flex flex-col gap-[var(--inkblot-spacing-4)]",children:u("div",{className:"min-w-0 [font:var(--inkblot-semantic-typography-body-small)] text-[var(--inkblot-semantic-color-text-primary)]",children:s})}):null]})}import{jsx as I,jsxs as R}from"react/jsx-runtime";var 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 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",Fe[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 Ke}from"react";import{jsx as $e}from"react/jsx-runtime";var D=Ke(({className:t,error:e,disabled:r,...n},i)=>$e("input",{ref:i,disabled:r,"aria-invalid":e,"aria-disabled":r,className:o("min-h-[var(--inkblot-size-touch-target-min)] w-full rounded-[var(--inkblot-radius-md)] border bg-[var(--inkblot-semantic-color-background-secondary)] px-4 py-2 text-[var(--inkblot-semantic-color-text-primary)] placeholder:text-[var(--inkblot-semantic-color-text-tertiary)] transition-[border-color,box-shadow] duration-[var(--inkblot-duration-fast)] ease-[var(--inkblot-easing-default)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--inkblot-semantic-color-border-focus)] focus-visible:ring-offset-2 disabled:opacity-[var(--inkblot-opacity-disabled)] disabled:pointer-events-none disabled:cursor-not-allowed",e?"border-[var(--inkblot-semantic-color-status-error)] focus-visible:ring-[var(--inkblot-semantic-color-status-error)]":"border-[var(--inkblot-semantic-color-border-default)] hover:border-[var(--inkblot-semantic-color-border-strong)]",t),...n}));D.displayName="Input";import{Component as ze}from"react";import{jsx as ae,jsxs as Ue}from"react/jsx-runtime";var l=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?Ue("div",{role:"alert",className:o("flex flex-col gap-4 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",this.props.className),children:[ae("p",{className:"text-base font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:"This module failed to load"}),ae("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:this.state.error.message}),ae(T,{variant:"secondary",onClick:this.props.onRetry,className:"w-fit border-[var(--inkblot-semantic-color-status-error)]",children:"Retry"})]}):this.props.children}};import{jsx as k,jsxs as ne}from"react/jsx-runtime";function ue({title:t,insights:e,stats:r=[],commandValue:n="",onCommandChange:i,onCommandSubmit:s,className:a}){let p=d=>{d.key==="Enter"&&(d.preventDefault(),s?.())};return k(l,{className:a,children:ne("div",{className:"flex flex-col gap-4 rounded-[var(--inkblot-radius-xl)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[k("h2",{className:"text-xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:t}),e?k("div",{className:"rounded-[var(--inkblot-radius-md)] border border-[var(--inkblot-semantic-color-interactive-primary)] p-4",style:{boxShadow:"0 0 12px var(--inkblot-semantic-color-interactive-primary)"},children:e}):null,r.length>0?ne("div",{children:[k("h3",{className:"mb-2 text-sm font-medium text-[var(--inkblot-semantic-color-text-secondary)]",children:"Connected To"}),k("div",{className:"grid grid-cols-2 gap-2 sm:grid-cols-3",children:r.map((d,y)=>ne("div",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-3 py-2",children:[k("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:d.label}),k("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:d.value})]},y))})]}):null,k("div",{className:"mt-2",children:k(D,{type:"text",value:n,onChange:d=>i?.(d.target.value),onKeyDown:p,placeholder:"Ask about this entity...",className:"rounded-[var(--inkblot-radius-md)]"})})]})})}import{Component as We}from"react";import{jsx as ve}from"react/jsx-runtime";var U=class extends We{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 je}from"react/jsx-runtime";var Ze={success:"border-[var(--inkblot-semantic-color-status-success)] bg-[var(--inkblot-semantic-color-status-success)]/10 text-[var(--inkblot-semantic-color-status-success)]",warning:"border-[var(--inkblot-semantic-color-status-warning)] bg-[var(--inkblot-semantic-color-status-warning)]/10 text-[var(--inkblot-semantic-color-status-warning)]",error:"border-[var(--inkblot-semantic-color-status-error)] bg-[var(--inkblot-semantic-color-status-error)]/10 text-[var(--inkblot-semantic-color-status-error)]",info:"border-[var(--inkblot-semantic-color-status-info)] bg-[var(--inkblot-semantic-color-status-info)]/10 text-[var(--inkblot-semantic-color-status-info)]"};function W({label:t,variant:e="info",className:r}){return je("span",{className:o("inline-flex items-center rounded-[var(--inkblot-radius-md)] border px-2 py-0.5 text-xs font-medium",Ze[e],r),children:t})}import{jsx as B,jsxs as Je}from"react/jsx-runtime";function qe(t){return t>=.8?"success":t>=.5?"info":t>=.2?"warning":"error"}function Z({event:t,className:e}){let r=qe(t.confidence_score),n=`${Math.round(t.confidence_score*100)}%`;return Je("div",{className:o("flex flex-wrap items-center gap-2 rounded-[var(--inkblot-radius-lg)] border border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",e),children:[B("span",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t.actor}),B("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:"\u2192"}),B("span",{className:"text-sm text-[var(--inkblot-semantic-color-text-secondary)]",children:t.subject}),B("span",{className:"rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-tertiary)] px-2 py-0.5 text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:t.event_type}),B("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:t.timestamp}),B(W,{label:n,variant:r})]})}import{jsx as h,jsxs as be}from"react/jsx-runtime";var 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 Xe(){return h("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-text-tertiary)]","aria-hidden":!0,children:h("circle",{cx:"8",cy:"8",r:"2",fill:"currentColor"})})}function fe({events:t,className:e}){return h(l,{className:e,children:h("div",{className:o("flex flex-col gap-4 border-l-2 border-[var(--inkblot-semantic-color-border-default)] pl-4"),children:t.map(r=>be("div",{className:"flex items-start gap-3",children:[h("div",{className:"flex shrink-0 items-center pt-0.5",children:r.icon??h(Xe,{})}),be("div",{className:"min-w-0 flex-1",children:[h("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:r.title}),h("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r.timestamp})]}),r.status?h("div",{className:o("mt-1.5 h-2 w-2 shrink-0 rounded-full",Qe[r.status]),"aria-hidden":!0}):null]},r.id))})})}import{jsx as x,jsxs as _}from"react/jsx-runtime";var se=36,ie=2*Math.PI*se;function j({label:t,value:e,subtext:r,trend:n,className:i}){let s=Math.min(100,Math.max(0,e)),a=ie-s/100*ie;return x(l,{className:i,children:_("div",{className:"flex flex-col items-center gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[_("div",{className:"relative",children:[_("svg",{width:"96",height:"96",viewBox:"0 0 96 96",className:"-rotate-90",children:[x("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-background-tertiary)",strokeWidth:"4"}),x("circle",{cx:"48",cy:"48",r:se,fill:"none",stroke:"var(--inkblot-semantic-color-interactive-primary)",strokeWidth:"4",strokeDasharray:ie,strokeDashoffset:a,strokeLinecap:"round",className:"transition-[stroke-dashoffset] duration-[var(--inkblot-duration-fast)]"})]}),x("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:_("span",{className:"flex items-center gap-1 text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:[s,"%",n==="up"?x("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-success)]","aria-hidden":!0,children:x("path",{fill:"currentColor",d:"M8 4l4 6H4l4-6z"})}):n==="down"?x("svg",{viewBox:"0 0 16 16",className:"h-4 w-4 text-[var(--inkblot-semantic-color-status-error)]","aria-hidden":!0,children:x("path",{fill:"currentColor",d:"M8 12l4-6H4l4 6z"})}):null]})})]}),_("div",{className:"text-center",children:[x("p",{className:"text-sm font-medium text-[var(--inkblot-semantic-color-text-primary)]",children:t}),r?x("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:r}):null]})]})})}import{jsx as S,jsxs as tt}from"react/jsx-runtime";var Ye={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 et({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)=>tt("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",Ye[r.variant??"default"]),children:r.value!=null?r.value:S(et,{})})]},n))})})}import{jsx as rt}from"react/jsx-runtime";function C({className:t,...e}){return rt("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 ot}from"react/jsx-runtime";function L({className:t,...e}){return ot("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 q,jsxs as xe}from"react/jsx-runtime";function J({children:t,loading:e=!1,title:r,className:n,onRetry:i}){return q(l,{className:n,onRetry:i,children:e?xe("div",{className:o("flex flex-col gap-4",n),children:[r?q("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,q(L,{})]}):xe("div",{className:o("flex flex-col gap-4",n),children:[r?q("h2",{className:"text-lg font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:r}):null,t]})})}import{jsx as H,jsxs as at}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=>at("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 Q,Zap as nt,Phone as he,Link2 as it}from"lucide-react";import{jsx as v,jsxs as Ne}from"react/jsx-runtime";function st(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 lt={EMAIL_OPENED:ke,EMAIL_SENT:ke,INVOICE_PAID:Q,INVOICE_OVERDUE:Q,CONTRACT_SIGNED:Q,STAGE_CHANGED:nt,CALL_COMPLETED:he,PHONE_CALL:he,RELATIONSHIP_DETECTED:it};function ct(t){return lt[t]??Q}function dt(t){return t.metadata?.description??t.event_type.replace(/_/g," ").toLowerCase()}function mt(t){return t.metadata?.details??`${t.actor} - ${t.subject}`}function X({events:t,onEntitySelect:e,findEntity:r,emptyMessage:n="No hay actividad reciente",className:i}){let s=e?a=>{let p=r?.(a.subject)??r?.(a.actor);p&&e(p)}:void 0;return v(l,{children:v("div",{className:o("space-y-2",i),children:t.length===0?v("p",{className:"py-6 text-center text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:n}):t.map(a=>{let d=!!(r?.(a.subject)??r?.(a.actor))&&!!s,y=ct(a.event_type),N=Ne("div",{className:"flex flex-1 items-center gap-3",children:[v(y,{className:"h-4 w-4 shrink-0 text-[var(--inkblot-semantic-color-text-secondary)]","aria-hidden":!0}),v("div",{className:`h-2 w-2 shrink-0 rounded-full ${st(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:dt(a)}),v("p",{className:"text-xs text-[var(--inkblot-semantic-color-text-secondary)]",children:mt(a)})]}),v("span",{className:"shrink-0 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.timestamp})]}),b=a.id??`${a.actor}-${a.subject}-${a.timestamp}`;return v("div",{children:d?v("button",{type:"button",onClick:()=>s(a),className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3 text-left transition-colors duration-[var(--inkblot-duration-fast)] hover:bg-[var(--inkblot-semantic-color-background-tertiary)] focus:outline-none focus:ring-2 focus:ring-[var(--inkblot-semantic-color-border-focus)] focus:ring-offset-2 focus:ring-offset-[var(--inkblot-semantic-color-background-primary)]",children:N}):v("div",{className:"flex w-full items-center gap-3 rounded-[var(--inkblot-radius-md)] bg-[var(--inkblot-semantic-color-background-secondary)] p-3",children:N})},b)})})})}import{NavLink as pt}from"react-router-dom";import{ClipboardList as ut,Brain as vt,BarChart3 as bt,Network as ft,Activity as gt,Settings as xt,Sparkles as yt}from"lucide-react";import{jsx as w,jsxs as ht}from"react/jsx-runtime";var kt=[{id:"home",path:"/",icon:ut,label:"Home"},{id:"intelligence",path:"/intelligence",icon:vt,label:"Intelligence"},{id:"pipeline",path:"/pipeline",icon:bt,label:"Pipeline"},{id:"graph",path:"/graph",icon:ft,label:"Graph"},{id:"events",path:"/events",icon:gt,label:"Events"},{id:"settings",path:"/settings",icon:xt,label:"Settings"}];function Ee({items:t=kt,brandLogo:e,brandTitle:r="Command Canvas \u2014 AI-native Interface",className:n}){return w(l,{children:ht("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(yt,{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(pt,{to:i.path,end:i.path==="/","aria-label":i.label,className:({isActive:a})=>`flex items-center justify-center gap-2 rounded-[var(--inkblot-radius-md)] border-l-2 px-3 py-2 transition-colors duration-[var(--inkblot-duration-fast)] ${a?"border-[var(--inkblot-semantic-color-interactive-primary)] bg-[var(--inkblot-semantic-color-interactive-primary)] text-[var(--inkblot-semantic-color-text-primary)]":"border-transparent text-[var(--inkblot-semantic-color-text-secondary)] hover:bg-[var(--inkblot-semantic-color-interactive-secondary-hover)]"}`,children:w(s,{size:20,"aria-hidden":!0})},i.id)})})]})})}import{useState as Y,useCallback as Nt,useRef as Et,useEffect as Ct}from"react";import{jsx as c,jsxs as ee}from"react/jsx-runtime";function St(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 wt({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 Mt({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 Pt(){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]=Y(""),[y,N]=Y([]),[b,F]=Y(!1),[te,f]=Y(new Map),E=Et(null);Ct(()=>{E.current&&(E.current.scrollTop=E.current.scrollHeight)},[y,b]);let Re=Nt(()=>{let g=p.trim();if(!g||b)return;let de=n?.(g);de&&r&&r(de);let Be={id:`msg-${Date.now()}`,role:"user",content:g,timestamp:new Date().toISOString()},me=St(g);N(K=>[...K,Be]),d(""),F(!0),setTimeout(()=>{let K={id:`msg-${Date.now()}-res`,role:"assistant",content:"",intent:me,timestamp:new Date().toISOString()},$;switch(me){case"entity":$=c(wt,{entities:t});break;case"event":$=c(Mt,{events:e});break;default:$=c(Pt,{})}f(re=>{let pe=new Map(re);return pe.set(K.id,$),pe}),N(re=>[...re,K]),F(!1)},1e3)},[p,b,t,e,r,n]);return ee("div",{className:o("flex h-full flex-col",a),children:[ee("div",{ref:E,className:"flex-1 space-y-4 overflow-y-auto p-4",children:[y.length===0&&!b?c("div",{className:"flex flex-1 items-center justify-center py-12",children:c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})}):y.map(g=>c("div",{className:"flex flex-col gap-2",children:g.role==="user"?c("div",{className:"flex justify-end",children:c("div",{className:"max-w-[80%] rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-interactive-primary)] px-4 py-3 text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:g.content})}):c("div",{className:"max-w-[90%]",children:te.get(g.id)??c("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-primary)]",children:g.content})})},g.id)),b&&c("div",{className:"max-w-[70%]",children:c(L,{className:"animate-shimmer"})})]}),c("div",{className:"shrink-0 border-t border-[var(--inkblot-semantic-color-border-default)] bg-[var(--inkblot-semantic-color-background-primary)] p-4",children:c(P,{promptValue:p,onPromptChange:d,onPromptSubmit:Re,isProcessing:b,placeholder:i})})]})}import{Sparkles as It}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(It,{className:"h-5 w-5 text-[var(--inkblot-semantic-color-text-primary)]","aria-hidden":!0})}),O("div",{className:"flex-1",children:O(P,{promptValue:t,onPromptChange:e,onPromptSubmit:r,isProcessing:n,placeholder:i})})]}),s&&O("p",{className:"mt-2 text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:s})]})}import{jsx as A,jsxs as le}from"react/jsx-runtime";function Me({events:t,title:e="Event Stream",showLive:r=!0,className:n}){return A(l,{children:le("div",{className:o("flex h-full flex-col bg-[var(--inkblot-semantic-color-background-secondary)]",n),children:[le("div",{className:"flex shrink-0 items-center justify-between border-b border-[var(--inkblot-semantic-color-border-default)] px-4 py-3",children:[A("span",{className:"text-xs font-medium uppercase tracking-wider text-[var(--inkblot-semantic-color-text-secondary)]",children:e}),r&&le("div",{className:"flex items-center gap-2",children:[A("div",{className:"h-2 w-2 rounded-full bg-[var(--inkblot-semantic-color-status-success)]"}),A("span",{className:"text-xs text-[var(--inkblot-semantic-color-status-success)]",children:"Live"})]})]}),A("div",{className:"flex-1 overflow-auto p-4",children:A(X,{events:t})})]})})}import{jsx as m,jsxs as M}from"react/jsx-runtime";var Rt=[{label:"Pipeline Health",value:76},{label:"Churn Risk",value:28},{label:"Expansion Signal",value:64},{label:"Team Velocity",value:83}],Bt=[{title:"Acme Corp likely to close within 14 days",description:"Based on email sentiment, meeting cadence, and champion engagement patterns.",confidence:89},{title:"Churn risk detected: GlobalTech Inc",description:"Declining touchpoints and support ticket volume suggest potential churn.",confidence:74},{title:"Expansion opportunity: TechVentures",description:"Usage patterns and NPS scores indicate readiness for upsell conversation.",confidence:81}];function Pe({loading:t,kpiCards:e=Rt,aiInsights:r=Bt,title:n="Intelligence Lab",subtitle:i="AI-generated insights - Updated 3 min ago",className:s}){return M("div",{className:o("flex h-full flex-col gap-4 overflow-y-auto p-4",s),children:[M("div",{children:[m("h1",{className:"text-2xl font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:n}),m("p",{className:"text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:i})]}),m(J,{loading:t,title:"",children:m(l,{children:M("div",{className:"flex flex-col gap-4",children:[m("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:e.map(a=>m(j,{label:a.label,value:a.value,subtext:a.subtext,trend:a.trend},a.label))}),M("div",{children:[m("h2",{className:"mb-4 border-b border-[var(--inkblot-semantic-color-border-default)] pb-2 text-sm font-bold uppercase tracking-wider text-[var(--inkblot-semantic-color-text-primary)]",children:"AI Insights"}),m("div",{className:"flex flex-col gap-4",children:r.map(a=>m(l,{children:M("div",{className:"flex items-start justify-between gap-4 rounded-[var(--inkblot-radius-lg)] bg-[var(--inkblot-semantic-color-background-secondary)] p-4",children:[M("div",{className:"min-w-0 flex-1",children:[m("h3",{className:"font-semibold text-[var(--inkblot-semantic-color-text-primary)]",children:a.title}),m("p",{className:"mt-1 text-sm text-[var(--inkblot-semantic-color-text-tertiary)]",children:a.description})]}),M("div",{className:"flex shrink-0 flex-col items-center",children:[m("span",{className:"text-lg font-bold text-[var(--inkblot-semantic-color-text-primary)]",children:a.confidence}),m("span",{className:"text-xs text-[var(--inkblot-semantic-color-text-tertiary)]",children:"Conf."})]})]})},a.title))})]})]})})})]})}import{jsx as G,jsxs as ce}from"react/jsx-runtime";function Ie({navigation:t,eventStream:e,commandBar:r,children:n,className:i,eventStreamWidth:s="w-80"}){return ce("div",{className:o("flex h-screen w-screen overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",i),children:[G("aside",{className:"flex h-full w-16 shrink-0 flex-col border-r border-[var(--inkblot-semantic-color-border-default)]",children:t}),G("main",{className:"flex flex-1 flex-col overflow-hidden",children:ce("div",{className:"flex min-h-0 flex-1",children:[ce("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden bg-[var(--inkblot-semantic-color-background-primary)]",children:[G("div",{className:"flex-1 overflow-auto",children:n}),G("div",{className:"shrink-0",children:r})]}),e&&G("aside",{className:o("flex h-full shrink-0 flex-col border-l border-[var(--inkblot-semantic-color-border-default)]",s),children:e})]})})]})}export{X as ActivityStream,Ee as AppNavigationRail,T as Button,Ce as ChatFeed,we as CommandBar,P as CommandInterface,z as EntityCard,ue as EntityCommandCard,U as ErrorBoundary,Z as EventRow,fe as EventStreamFeed,Me as EventStreamSidebar,D as Input,Pe as IntelligenceLab,j as IntelligenceScoreCard,Ie as MainShell,ge as MetricComparisonList,J as ModuleContainer,l as ModuleErrorBoundary,L as ModuleSkeleton,ye as OSNavigationRail,C as Skeleton,W as StatusBadge};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@citron-systems/citron-ui",
3
- "version": "1.2.0",
3
+ "version": "1.3.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",
@@ -71,8 +71,8 @@
71
71
  },
72
72
  "dependencies": {
73
73
  "@citron-systems/citron-ds": "^1.0.0",
74
- "lucide-react": "^0.460.0",
75
74
  "clsx": "^2.1.1",
75
+ "lucide-react": "^0.460.0",
76
76
  "react": "^19.2.4",
77
77
  "react-dom": "^19.2.4",
78
78
  "tailwind-merge": "^3.5.0"