react-semaphor 0.1.325 → 0.1.327
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/analytics-protocol/index.cjs +1 -1
- package/dist/analytics-protocol/index.js +260 -226
- package/dist/brand-studio/index.cjs +2 -2
- package/dist/brand-studio/index.js +7 -6
- package/dist/chunks/{braces-ZjRH2Kl7.js → braces-B6qRDu1H.js} +1 -1
- package/dist/chunks/{braces-C7BeIXvM.js → braces-BGWZEnQJ.js} +1 -1
- package/dist/chunks/{calendar-preferences-dialog-DHhT6Sja.js → calendar-preferences-dialog-CjwbE_82.js} +6 -5
- package/dist/chunks/calendar-preferences-dialog-fkLUMJyR.js +1 -0
- package/dist/chunks/{chevrons-up-down-CA-XvN1o.js → chevrons-up-down-BpsogQvv.js} +1 -1
- package/dist/chunks/{chevrons-up-down-Cuilz9aY.js → chevrons-up-down-xG-bVFD9.js} +1 -1
- package/dist/chunks/{dashboard-briefing-launcher-DZiFMK8I.js → dashboard-briefing-launcher-Co57xBfS.js} +2 -2
- package/dist/chunks/{dashboard-briefing-launcher-BzIxRlzW.js → dashboard-briefing-launcher-Cy1nWZRW.js} +714 -719
- package/dist/chunks/{dashboard-controls-DVwsWny9.js → dashboard-controls-BWnVEFJq.js} +10 -9
- package/dist/chunks/{dashboard-controls-BX693lE0.js → dashboard-controls-C7rOGZO-.js} +1 -1
- package/dist/chunks/{dashboard-json-D15C_I9e.js → dashboard-json-BpRNSsF3.js} +7 -6
- package/dist/chunks/dashboard-json-DBPMknGo.js +1 -0
- package/dist/chunks/date-formatter-B4EBSe9C.js +1 -0
- package/dist/chunks/date-formatter-CzcPZx39.js +416 -0
- package/dist/chunks/edit-dashboard-visual-B2vkIKEa.js +178 -0
- package/dist/chunks/{edit-dashboard-visual-wQyJEcVH.js → edit-dashboard-visual-CYf26co_.js} +8243 -7784
- package/dist/chunks/index-BD90s-wf.js +1309 -0
- package/dist/chunks/index-BxM99sFL.js +1 -0
- package/dist/chunks/index-CuHybtft.js +51 -0
- package/dist/chunks/{index-CffvIaZO.js → index-DTlbYpxd.js} +29440 -28968
- package/dist/chunks/{palette-D96DOM7E.js → palette-CSF7IVJn.js} +1 -1
- package/dist/chunks/{palette-CanPG11m.js → palette-CWgEPBoG.js} +1 -1
- package/dist/chunks/{resource-management-panel-DlnrD0y-.js → resource-management-panel-D6nbfJY3.js} +1 -1
- package/dist/chunks/{resource-management-panel-CLoO2DL3.js → resource-management-panel-D893Onv8.js} +6 -5
- package/dist/chunks/{save-CqrBQKG6.js → save-CtQbSub2.js} +1 -1
- package/dist/chunks/{save-DxkSzUTZ.js → save-DRdFKF57.js} +1 -1
- package/dist/chunks/switch-DJJJD_g1.js +168 -0
- package/dist/chunks/{switch-Deo2Ltmj.js → switch-DKf6vHfP.js} +2222 -2228
- package/dist/chunks/{use-create-flow-overlay-state-DocFanjO.js → use-create-flow-overlay-state-C4LgoK8q.js} +1 -1
- package/dist/chunks/{use-create-flow-overlay-state-DsPoCfMu.js → use-create-flow-overlay-state-p21zs2p6.js} +29 -28
- package/dist/chunks/{use-visual-utils-BdO22fQZ.js → use-visual-utils-BKBua6o4.js} +2 -2
- package/dist/chunks/{use-visual-utils-DSbXQQD1.js → use-visual-utils-BqWm0QeW.js} +1 -1
- package/dist/chunks/validators-DDAweCzB.js +371 -0
- package/dist/chunks/validators-odlRJblR.js +2 -0
- package/dist/dashboard/index.cjs +1 -1
- package/dist/dashboard/index.js +1 -1
- package/dist/dashboard-authoring/index.cjs +3 -3
- package/dist/dashboard-authoring/index.js +919 -507
- package/dist/data-app-sdk/index.cjs +1 -0
- package/dist/data-app-sdk/index.js +512 -0
- package/dist/format-utils/index.cjs +4 -4
- package/dist/format-utils/index.js +22 -21
- package/dist/index.cjs +1 -1
- package/dist/index.js +141 -140
- package/dist/style.css +1 -1
- package/dist/surfboard/index.cjs +1 -1
- package/dist/surfboard/index.js +2 -2
- package/dist/types/analytics-protocol.d.ts +326 -2
- package/dist/types/dashboard-authoring.d.ts +102 -3
- package/dist/types/dashboard.d.ts +23 -3
- package/dist/types/data-app-sdk.d.ts +379 -0
- package/dist/types/format-utils.d.ts +25 -0
- package/dist/types/main.d.ts +182 -12
- package/dist/types/shared.d.ts +18 -2
- package/dist/types/surfboard.d.ts +23 -3
- package/dist/types/types.d.ts +38 -4
- package/package.json +6 -1
- package/dist/chunks/calendar-preferences-dialog-BxeROxyq.js +0 -1
- package/dist/chunks/dashboard-json-DxNEFM-p.js +0 -1
- package/dist/chunks/date-formatter-D9Bvw5Qk.js +0 -1
- package/dist/chunks/date-formatter-DyIOb6uC.js +0 -333
- package/dist/chunks/edit-dashboard-visual-90_qEgRc.js +0 -178
- package/dist/chunks/index-YTk9Hab2.js +0 -1303
- package/dist/chunks/switch-BXICAlvS.js +0 -168
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),a=require("./switch-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),a=require("./switch-DJJJD_g1.js"),l=require("./index-BD90s-wf.js"),oe=require("./use-create-flow-overlay-state-C4LgoK8q.js"),h=require("react"),xn=require("./use-visual-utils-BqWm0QeW.js");require("./index-BxM99sFL.js");const Bs=require("./date-formatter-B4EBSe9C.js");require("./index-DRlMUglg.js");require("react-dom");/**
|
|
2
2
|
* @license lucide-react v0.453.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
*
|
|
54
54
|
* This source code is licensed under the ISC license.
|
|
55
55
|
* See the LICENSE file in the root directory of this source tree.
|
|
56
|
-
*/const $t=a.createLucideIcon("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);function Kr({open:t,onOpenChange:s,isLibraryVisual:n,currentVisualName:r,isSaving:o=!1,destinationMode:i="both",onConfirm:c}){const[u,d]=h.useState(n&&r?`Copy of ${r}`:r||""),[m,f]=h.useState("");h.useEffect(()=>{t&&(d(n&&r?`Copy of ${r}`:r||""),f(""))},[t,n,r]);const g=!!u.trim(),p=i==="local"?{saveToLibrary:!1,saveToCurrentDashboard:!0,badgeType:"local",description:"Creates a local copy on the current dashboard.",actionLabel:"Add to Dashboard (Local)"}:i==="library"?{saveToLibrary:!0,saveToCurrentDashboard:!1,badgeType:"library",description:"Creates a reusable visual in Visual Library.",actionLabel:"Save as Library Visual"}:{saveToLibrary:!0,saveToCurrentDashboard:!0,badgeType:"linked",description:"Creates a new library visual and adds a linked copy to this dashboard.",actionLabel:"Save Copy as Linked Visual"},y=()=>{!g||o||c({name:u.trim(),description:m.trim()||void 0,saveToLibrary:p.saveToLibrary,saveToCurrentDashboard:p.saveToCurrentDashboard})};return e.jsx(l.Dialog,{open:t,onOpenChange:s,children:e.jsxs(l.DialogContent,{className:"sm:max-w-[500px]",children:[e.jsxs(l.DialogHeader,{children:[e.jsxs(l.DialogTitle,{className:"flex items-center gap-2",children:[e.jsx("span",{children:"Save Visual As"}),p.badgeType!=="local"&&e.jsx(oe.VisualBadge,{type:p.badgeType,showLabel:!0,className:"px-2 py-0.5"})]}),e.jsx(l.DialogDescription,{children:p.description})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"name",children:"Name"}),e.jsx(a.Input,{id:"name",value:u,onChange:I=>d(I.target.value),placeholder:"Enter visual name",disabled:o})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"description",children:"Description (optional)"}),e.jsx(l.Textarea,{id:"description",value:m,onChange:I=>f(I.target.value),placeholder:"Enter visual description",rows:3,disabled:o})]})]}),e.jsxs(l.DialogFooter,{children:[e.jsx(a.Button,{variant:"outline",onClick:()=>s(!1),disabled:o,children:"Cancel"}),e.jsxs(a.Button,{onClick:y,disabled:!g||o,children:[o&&e.jsx(a.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),p.actionLabel]})]})]})})}function Wr(){const[t,s]=h.useState(!1),[n,r]=h.useState(!1),[o,i]=h.useState(null),[c,u]=h.useState(null),d=a.useEditorStore(D=>D.frame),m=a.useEditorStore(D=>D.card),f=l.useSelectedVisual(),g=a.useDashboardStore(D=>D.selectedSheetId),p=a.useDashboardStore(D=>D.dashboard),y=a.useDashboardStore(D=>D.actions.setIsDashboardPanelOpen),{getUpdatedFrame:I}=xn.useVisualUtils(),{selectVisual:S}=l.useManagementActions(),{addFrame:N,setSelectedFrameId:b,setIsVisualEditing:T}=a.useDashboardActions(),j=l.useResolveExistingFrameSemanticExecutionPayload(),C=!!(d!=null&&d.visualId),A=(()=>{var D,R;return((D=d==null?void 0:d.cards)==null?void 0:D.length)===1&&((R=d.cards[0])!=null&&R.title)?d.cards[0].title:f!=null&&f.title?f.title:(m==null?void 0:m.title)||"Untitled Visual"})(),V=l.useCreateVisualWithFrame(D=>{D!=null&&D.id&&(S(D),n&&o&&c&&g&&(async()=>{try{const R={...o,id:a.v4(),visualId:D.id};N(g,R,{position:"end",semanticExecutionPayload:c}),b(R.id),r(!1),i(null),u(null),T(!1)}catch(R){console.error("Failed to promote semantic metadata for saved visual:",R),l.ue.error(R instanceof Error?R.message:"Failed to prepare semantic metadata for the saved visual")}})(),y(!0),s(!1))});return{saveAsDialogOpen:t,setSaveAsDialogOpen:s,handleSaveAs:async D=>{if(!g){l.ue.error("No sheet selected");return}const R=I(),_=a.getDynamicFrameSaveIssue(R);if(_){l.ue.error(_);return}const z=R.cards.length===1?{...R,cards:R.cards.map(U=>({...U,title:D.name}))}:R;if(D.saveToLibrary){let U=null;if(D.saveToCurrentDashboard)try{U=await j(z,{previousFrame:l.findDashboardFrameById(p,z.id)})}catch(W){console.error("Failed to prepare semantic metadata before saving visual:",W),l.ue.error(W instanceof Error?W.message:"Failed to prepare semantic metadata for the saved visual");return}r(D.saveToCurrentDashboard),i(z),u(U);const B={title:D.name,description:D.description,frameObject:z,isPrivate:!1};V.mutate(B)}else if(D.saveToCurrentDashboard){const U={...z,id:a.v4(),visualId:void 0};try{const B=await j(z,{previousFrame:l.findDashboardFrameById(p,z.id)});N(g,U,{position:"end",semanticExecutionPayload:B}),b(U.id),l.ue.success("Visual saved to dashboard"),s(!1),T(!1)}catch(B){console.error("Failed to save visual to dashboard:",B),l.ue.error(B instanceof Error?B.message:"Failed to prepare semantic metadata for the visual")}}},isLibraryVisual:C,currentVisualName:A,isSaving:V.isPending}}function Gr(t={}){const s=a.useEditorStore(M=>M.frame),n=a.useEditorStore(M=>M.editorContext),r=l.useManagementStore(M=>M.selectedVisual),o=a.useDashboardStore(M=>M.selectedFrameId),i=a.useDashboardStore(M=>M.selectedSheetId),c=a.useDashboardStore(M=>M.dashboard),{setIsVisualEditing:u,updateFrame:d}=a.useDashboardActions(),[m,f]=h.useState(!1),[g,p]=h.useState("both"),y=l.useResolveExistingFrameSemanticExecutionPayload(),I=(n==null?void 0:n.type)==="documentSection",S=!!(s!=null&&s.visualId||r!=null&&r.id),N=!!(s!=null&&s.visualId&&o),b=S&&!N,{saveAsDialogOpen:T,setSaveAsDialogOpen:j,handleSaveAs:C,isLibraryVisual:A,currentVisualName:V,isSaving:L}=Wr(),{getUpdatedFrame:D}=xn.useVisualUtils();if(I)return e.jsxs(e.Fragment,{children:[e.jsx(oe.EditorAcceptButton,{className:"rounded-control",variant:"default"}),e.jsx(oe.EditorCancelButton,{})]});const R=async()=>{if(!i){l.ue.error("No sheet selected");return}if(m)return;f(!0);const M=D(),z=a.getDynamicFrameSaveIssue(M);if(z){f(!1),l.ue.error(z);return}const U={...M,visualId:void 0},B=l.findDashboardFrameById(c,U.id);try{const W=await y(U,{previousFrame:B});d(i,U,{semanticExecutionPayload:W})}catch(W){console.error("Failed to apply local semantic metadata:",W),f(!1),l.ue.error(W instanceof Error?W.message:"Failed to prepare semantic metadata for this visual");return}setTimeout(()=>{f(!1),l.ue.success("Changes applied. Visual is now local to this dashboard"),u(!1)},300)},_=M=>{p(M),j(!0)};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inline-flex items-center overflow-hidden rounded-control",children:[!S&&e.jsx(oe.EditorAcceptButton,{className:"!rounded-none",variant:"default"}),S&&b&&e.jsx(oe.VisualSaveButton,{className:"!rounded-none",variant:"default"}),S&&N&&e.jsx(oe.VisualSaveAndApplyButton,{className:"!rounded-none"}),e.jsxs(l.DropdownMenu,{modal:!1,children:[e.jsx(l.DropdownMenuTrigger,{asChild:!0,children:e.jsx(a.Button,{variant:"default",size:"xs",className:"w-7 !rounded-none border-l border-primary-foreground/20 px-0","aria-label":"Open visual save options",disabled:L||m,children:e.jsx(a.ChevronDown,{className:"h-3.5 w-3.5"})})}),e.jsxs(l.DropdownMenuContent,{align:"end",className:"min-w-[220px] rounded-control border border-border/60 p-1 shadow-sm",children:[N&&e.jsxs(e.Fragment,{children:[e.jsxs(l.DropdownMenuItem,{onClick:R,disabled:m,children:[e.jsx(a.Check,{className:"h-3.5 w-3.5"}),m?"Applying...":"Apply Locally"]}),e.jsx(l.DropdownMenuSeparator,{})]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("local"),disabled:L,children:[e.jsx(l.Plus,{className:"h-3.5 w-3.5"}),"Add to Dashboard (Local)"]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("library"),disabled:L,children:[e.jsx(oe.Library,{className:"h-3.5 w-3.5"}),"Save as Library Visual"]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("both"),disabled:L,children:[e.jsx(oe.Link2,{className:"h-3.5 w-3.5"}),"Save Copy as Linked Visual"]})]})]})]}),e.jsx(oe.EditorCancelButton,{}),e.jsx(Kr,{open:T,onOpenChange:M=>{L||j(M)},isLibraryVisual:A,currentVisualName:V,isSaving:L,destinationMode:g,onConfirm:C})]})}function Xr({className:t}){const s=a.useEditorStore(m=>m.isDevMode),n=a.useDashboardStore(m=>m.isVisualEditing),{setIsDevMode:r}=a.useEditorActions(),{config:o}=h.useContext(l.SemaphorContext).tokenProps,i=(o==null?void 0:o.showAdvancedMode)!==!1;if(!n||!i)return null;const c=s?a.SlidersHorizontal:l.CodeXml,u=s?"Drag & drop":"SQL",d=s?"Switch to drag-and-drop mode":"Switch to SQL mode";return e.jsxs("button",{type:"button","aria-label":d,title:d,onClick:()=>r(!s),className:a.cn("inline-flex h-7 items-center gap-1.5 rounded-control border border-input bg-background px-2 text-[12px] font-medium text-foreground transition-colors hover:bg-muted/40 focus-visible:border-ring focus-visible:outline-none",t),children:[e.jsx(c,{className:"h-3 w-3 text-muted-foreground"}),u]})}function Jr({open:t,onOpenChange:s,onSave:n,onDiscard:r,isSaving:o,title:i="Unsaved changes",description:c="You have unsaved changes to this dashboard. What would you like to do?",cancelLabel:u="Cancel",discardLabel:d="Discard",saveLabel:m="Save"}){const f=g=>{!g&&o||s(g)};return e.jsx(l.AlertDialog,{open:t,onOpenChange:f,children:e.jsxs(l.AlertDialogContent,{children:[e.jsxs(l.AlertDialogHeader,{children:[e.jsx(l.AlertDialogTitle,{children:i}),e.jsx(l.AlertDialogDescription,{children:c})]}),e.jsxs(l.AlertDialogFooter,{children:[e.jsx(a.Button,{type:"button",size:"xs",onClick:r,disabled:o,variant:"ghost",className:"mr-auto text-muted-foreground hover:bg-destructive/10 hover:text-destructive focus-visible:bg-destructive/10 focus-visible:text-destructive",children:d}),e.jsx(l.AlertDialogCancel,{disabled:o,children:u}),e.jsx(a.Button,{type:"button",size:"xs",onClick:n,disabled:o,children:o?e.jsxs(e.Fragment,{children:[e.jsx(a.LoaderCircle,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),"Saving..."]}):m})]})]})})}const Qr=1e4,Yr=15e3,Zr=3e4,ea=3e4,ta=12e4,Os=2*60*60*1e3;function sa(t){const s=Date.now()-t.getTime();return s<ea?Qr:s<ta?Yr:Zr}function na(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(p=>p.activeExports),[r,o]=h.useState(typeof document<"u"?!document.hidden:!0),i=h.useRef(null),c=h.useRef(!1),u=h.useRef(void 0),d=s==null?void 0:s.apiServiceUrl,m=t==null?void 0:t.accessToken,f=h.useCallback(()=>{const p=l.useExportStore.getState().activeExports;return Array.from(p.values()).filter(y=>l.isExportInProgress(y.status))},[]);h.useEffect(()=>{if(typeof document>"u")return;const p=()=>{o(!document.hidden)};return document.addEventListener("visibilitychange",p),()=>{document.removeEventListener("visibilitychange",p)}},[]);const g=h.useCallback(async()=>{if(!d||!m){c.current=!1;return}const p=f();if(p.length===0){c.current=!1;return}const y=Date.now(),I=p.filter(j=>y-j.startedAt.getTime()>Os);if(I.length>0){const{updateExport:j}=l.useExportStore.getState().actions;for(const C of I)j(C.id,{status:"failed",error:"Export timed out. Please try again or contact support.",lastUpdatedAt:new Date})}const S=p.filter(j=>y-j.startedAt.getTime()<=Os);if(S.length===0){c.current=!1;return}const N=await Promise.allSettled(S.map(async j=>{try{const C=await l.getExportStatus(d,m,j.id);let A;if(C.status==="completed")try{A=await l.getDownloadUrl(d,m,j.id)}catch(V){console.error(`[useExportPolling] Failed to get download URL for ${j.id}:`,V)}return{id:j.id,status:C.status,progress:C.progress,completedChunks:C.completedChunks,completedAt:C.completedAt?new Date(C.completedAt):void 0,lastUpdatedAt:new Date,fileSize:C.fileSize,error:C.error,downloadUrl:A}}catch(C){return console.error(`[useExportPolling] Failed to poll export ${j.id}:`,C),null}})),{updateExport:b}=l.useExportStore.getState().actions;for(const j of N)j.status==="fulfilled"&&j.value&&b(j.value.id,j.value);const T=f();if(T.length>0&&!document.hidden){const j=T.reduce((A,V)=>V.startedAt<A?V.startedAt:A,T[0].startedAt),C=sa(j);i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{var A;(A=u.current)==null||A.call(u)},C)}else c.current=!1},[d,m,f]);return h.useEffect(()=>{u.current=g},[g]),h.useEffect(()=>{var y;f().length>0&&r&&!c.current&&(c.current=!0,(y=u.current)==null||y.call(u))},[n,r,f]),h.useEffect(()=>{var y;const p=f();r&&p.length>0&&!c.current&&(c.current=!0,(y=u.current)==null||y.call(u))},[r,f]),h.useEffect(()=>{!r&&i.current&&(clearTimeout(i.current),i.current=null,c.current=!1)},[r]),h.useEffect(()=>()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),{isPolling:c.current,isTabVisible:r,inProgressCount:f().length}}function ra(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(u=>u.activeExports),{addExport:r}=l.useExportActions(),o=h.useRef(!1),i=s==null?void 0:s.apiServiceUrl,c=t==null?void 0:t.accessToken;h.useEffect(()=>{if(o.current||!i||!c)return;(async()=>{try{const{exports:d}=await l.getExports(i,c,{status:["pending","processing","chunking","compacting","completed","failed"],limit:20});for(const m of d){if(n.has(m.id))continue;const f=m.totalChunks?Math.round(m.completedChunks/m.totalChunks*100):0;let g;if(m.status==="completed")try{g=await l.getDownloadUrl(i,c,m.id)}catch(y){console.error(`[useExportRecovery] Failed to get download URL for ${m.id}:`,y)}const p={id:m.id,status:m.status,progress:f,title:aa(m),totalRows:m.totalRows,totalChunks:m.totalChunks,completedChunks:m.completedChunks,startedAt:new Date(m.createdAt),lastUpdatedAt:new Date,completedAt:m.completedAt?new Date(m.completedAt):void 0,fileSize:m.fileSize,error:m.error,expiresAt:new Date(m.expiresAt),downloadUrl:g};r(p)}o.current=!0}catch(d){console.error("[useExportRecovery] Failed to recover exports:",d),o.current=!0}})()},[i,c,r,n])}function aa(t){return t.title?t.title:l.isExportInProgress(t.status)?"Export in progress...":t.status==="completed"?"Export completed":t.status==="failed"?"Export failed":"Export"}function bn({export:t,onRemove:s}){const n=()=>{t.downloadUrl&&window.open(t.downloadUrl,"_blank")},r=u=>{u.stopPropagation(),s==null||s(t.id)},o=()=>{switch(t.status){case"completed":return e.jsx(l.CircleCheck,{className:"mt-0.5 h-5 w-5 shrink-0 text-green-600"});case"failed":return e.jsx(oe.CircleX,{className:"mt-0.5 h-5 w-5 shrink-0 text-destructive"});default:return e.jsx(a.LoaderCircle,{className:"text-foreground-muted mt-0.5 h-5 w-5 shrink-0 animate-spin"})}},i=l.isExportInProgress(t.status),c=(()=>{switch(t.status){case"pending":return"Queued...";case"processing":return"Processing...";case"chunking":return"Processing...";case"compacting":return"Finalizing...";default:return"Processing..."}})();return e.jsxs("div",{className:"group p-4 transition-colors hover:bg-muted/50",children:[e.jsxs("div",{className:"mb-2 flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-start gap-3",children:[o(),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"mb-1 truncate text-sm font-medium",children:t.title}),t.status==="completed"&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[t.totalRows.toLocaleString()," rows"]}),t.fileSize&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"•"}),e.jsx("span",{children:l.formatFileSize(t.fileSize)})]})]}),i&&e.jsx("div",{className:"text-xs text-muted-foreground",children:c}),t.status==="failed"&&e.jsx("div",{className:"line-clamp-2 text-xs text-destructive",children:t.error||"Export failed"})]})]}),e.jsx(a.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:r,"aria-label":"Remove notification",children:e.jsx(a.X,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"ml-8",children:[t.status==="completed"&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:Bs.formatDistanceToNow(t.startedAt,{addSuffix:!0})}),t.downloadUrl&&e.jsxs(a.Button,{size:"sm",variant:"outline",className:"h-8 bg-transparent",onClick:n,children:[e.jsx(l.Download,{className:"mr-1.5 h-3.5 w-3.5"}),"Download"]})]}),i&&e.jsxs("div",{children:[e.jsx(l.Progress,{value:t.progress,className:"h-1.5"}),e.jsxs("span",{className:"mt-1 block text-xs text-muted-foreground",children:[t.progress,"% complete"]})]}),t.status==="failed"&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Bs.formatDistanceToNow(t.startedAt,{addSuffix:!0})})]})]})}function yn(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(S=>S.activeExports),{clearCompleted:r,removeExport:o,updateExport:i}=l.useExportActions(),[c,u]=h.useState(!1),[d,m]=h.useState(!1),f=Array.from(n.values()).sort((S,N)=>N.startedAt.getTime()-S.startedAt.getTime()),g=f.some(S=>S.status==="completed"||S.status==="failed"),p=h.useCallback(async()=>{const S=s==null?void 0:s.apiServiceUrl,N=t==null?void 0:t.accessToken;if(!(!S||!N)){u(!0);try{const b=Array.from(n.values());await Promise.all(b.map(async T=>{try{const j=await l.getExportStatus(S,N,T.id);let C;if(j.status==="completed")try{C=await l.getDownloadUrl(S,N,T.id)}catch(A){console.error(`Failed to get download URL for ${T.id}:`,A)}i(T.id,{status:j.status,progress:j.progress,completedChunks:j.completedChunks,completedAt:j.completedAt?new Date(j.completedAt):void 0,lastUpdatedAt:new Date,fileSize:j.fileSize,error:j.error,downloadUrl:C})}catch(j){console.error(`Failed to refresh export ${T.id}:`,j)}}))}finally{u(!1)}}},[n,t==null?void 0:t.accessToken,s==null?void 0:s.apiServiceUrl,i]),y=h.useCallback(async()=>{const S=s==null?void 0:s.apiServiceUrl,N=t==null?void 0:t.accessToken;if(!S||!N){r();return}m(!0);try{const b=f.filter(j=>j.status==="completed"||j.status==="failed"),T=await Promise.allSettled(b.map(async j=>(await l.cancelExport(S,N,j.id),j.id)));for(const j of T)j.status==="fulfilled"?o(j.value):console.error("Failed to delete export:",j.reason)}finally{m(!1)}},[f,s==null?void 0:s.apiServiceUrl,t==null?void 0:t.accessToken,r,o]),I=h.useCallback(async S=>{const N=s==null?void 0:s.apiServiceUrl,b=t==null?void 0:t.accessToken;if(N&&b)try{await l.cancelExport(N,b,S),o(S);return}catch(T){console.error(`Failed to cancel export ${S}:`,T)}o(S)},[s==null?void 0:s.apiServiceUrl,t==null?void 0:t.accessToken,o]);return f.length===0?e.jsxs("div",{className:"p-6 text-center",children:[e.jsx(Vs,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No active exports"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Large exports will appear here"})]}):e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Vs,{className:"h-5 w-5 text-muted-foreground"}),e.jsx("h4",{className:"font-semibold",children:"Exports"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:p,disabled:c,title:"Refresh status",children:e.jsx(l.RefreshCw,{className:`h-4 w-4 ${c?"animate-spin":""}`})}),g&&e.jsx(a.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-sm",onClick:y,disabled:d,children:d?"Clearing...":"Clear all"})]})]}),e.jsx("div",{className:"max-h-[350px] overflow-y-auto",children:e.jsx("div",{className:"divide-y",children:f.map(S=>e.jsx(bn,{export:S,onRemove:I},S.id))})})]})}function oa({variant:t}){const s=l.useExportStore(d=>d.activeExports),n=l.useInProgressExportsCount(),r=s.size>0,o=Array.from(s.values()).some(d=>d.status==="completed"||d.status==="failed"),c=n>0?n>9?"9+":String(n):null,u=r;return e.jsxs(a.Popover,{children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:t??"ghost",size:"xs",className:"relative w-7 px-0 text-muted-foreground hover:text-foreground","aria-label":"Export notifications",children:[e.jsx(l.Bell,{className:"h-3.5 w-3.5"}),u&&e.jsx("span",{className:`absolute flex items-center justify-center rounded-full bg-primary text-primary-foreground ${c?"-right-0.5 -top-0.5 h-3.5 min-w-3.5 px-0.5 text-[9px] font-semibold":"right-1 top-1 h-1.5 w-1.5"}`,children:c})]})}),e.jsx(a.PopoverContent,{className:"w-80 p-0",align:"end",sideOffset:8,children:e.jsx(yn,{})})]})}function ia(t){if(t)return{renamed:t.type==="rename"?{oldId:t.oldId,newId:t.newId}:void 0,removedControlId:t.type==="remove"?t.controlId:void 0,cardBindingsById:t.type==="add"||t.type==="update"?t.cardBindingsById:void 0,affectedBindingControlIds:t.type==="add"||t.type==="update"?t.affectedBindingControlIds:void 0}}function jn({open:t,onOpenChange:s,trigger:n,showTrigger:r=!0,initialMode:o="manage"}){const i=o==="create",{forceClose:c,handleOpenChange:u,isCreateFlowActive:d,preventPassiveDismissDuringCreate:m,resolvedOpen:f,setIsCreateFlowActive:g}=oe.useCreateFlowOverlayState({open:t,onOpenChange:s,initialCreateFlowActive:o==="create",dismissMode:r?"passive":"explicit-only"}),p=a.useDashboardStore(D=>D.dashboard),{setDashboardControlsModel:y}=a.useDashboardActions(),{participants:I}=l.useDashboardStructuralParticipants(a.getDashboardCards(p)),S=Array.from(new Map(I.flatMap(D=>D.fieldChoices.map(R=>{var _;return[R.value,{option:R,target:(_=D.fieldTargetMap)==null?void 0:_[R.value]}]}))).values()),N=Array.from(new Map(I.flatMap(D=>D.metricChoices.map(R=>{var _;return[R.value,{option:R,target:(_=D.metricTargetMap)==null?void 0:_[R.value]}]}))).values()),b=a.collectDashboardControlIds({...p||{},controls:[]}),T=l.buildDashboardStructuralParticipantIdsByControlId(p),j=(D,R,_)=>{y(D,R,ia(_))},C=h.useCallback(()=>{if(i){c();return}g(!1)},[i,c,g]),A=e.jsx(oe.ControlDefinitionListEditor,{scope:"dashboard",controls:p.controls||[],reservedControlIds:b,defaultValues:p.defaultControlValues||{},usageByControlId:l.buildDashboardControlUsageById(p),availableFieldChoices:S,availableMetricChoices:N,structuralParticipants:I,structuralParticipantIdsByControlId:T,initialCreateFlow:o==="create",onCreateFlowActiveChange:g,onCreateFlowComplete:C,onChange:j,emptyMessage:"No dashboard controls yet."}),V=d?"Add dashboard control":"Dashboard Controls",L=e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Dashboard Controls"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Add shared controls viewers can use across the dashboard. Each card can decide how to respond to the same control."})]}),A]});return r?e.jsxs(a.Popover,{open:f,onOpenChange:u,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:n||e.jsxs(a.Button,{variant:"outline",className:"h-7 px-2",size:"sm",children:[e.jsx(a.SlidersHorizontal,{className:"mr-2 h-4 w-4"}),"Controls"]})}),e.jsx(a.PopoverContent,{className:"w-[620px] max-w-[95vw] space-y-4",align:"end",onEscapeKeyDown:m,onPointerDownOutside:m,children:L})]}):e.jsx(l.Dialog,{open:f,onOpenChange:u,children:e.jsxs(l.DialogContent,{className:"flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",onEscapeKeyDown:m,onPointerDownOutside:m,children:[e.jsxs(l.DialogHeader,{className:d?"space-y-0":void 0,children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:V}),e.jsx(l.DialogDescription,{className:d?"sr-only":"text-[13px]",children:d?"Configure and add a shared dashboard control.":"Add shared controls viewers can use across the dashboard. Each card can decide how to respond to the same control."})]}),e.jsx("div",{className:"min-h-0 overflow-y-auto pr-1",children:A})]})})}const la=["enum","multi_enum","text","number","boolean","date"];function vn({open:t,onOpenChange:s,initialMode:n="manage"}){var L;const r=n==="create",{forceClose:o,handleOpenChange:i,isCreateFlowActive:c,preventPassiveDismissDuringCreate:u,resolvedOpen:d,setIsCreateFlowActive:m}=oe.useCreateFlowOverlayState({open:t,onOpenChange:s,initialCreateFlowActive:n==="create",dismissMode:"explicit-only"}),f=a.useDashboardStore(D=>D.dashboard),g=a.useDashboardStore(D=>D.selectedSheetId),{setDashboardInputs:p}=a.useDashboardActions(),y=(L=f.sheets)==null?void 0:L.find(D=>D.id===g),I=(y==null?void 0:y.kind)==="document"&&!!y.document,S=h.useMemo(()=>I&&(y!=null&&y.document)?l.getDocumentSheetDashboardInputs(f,y.id):[],[f,I,y==null?void 0:y.document,y==null?void 0:y.id]),N=h.useMemo(()=>S.filter(D=>D.kind==="control"),[S]),b=h.useMemo(()=>N.map(D=>D.control),[N]),T=h.useMemo(()=>da(b),[b]),j=h.useMemo(()=>ca(f),[f]),C=h.useCallback(()=>{if(r){o();return}m(!1)},[r,o,m]),A=h.useCallback((D,R,_)=>{!I||!(y!=null&&y.document)||p(ma({allInputs:f.inputs||[],documentSheetId:y.id,currentDocumentInputs:S,nextControls:D,nextDefaultValues:R,change:_}))},[f.inputs,S,I,y,p]);if(!I||!(y!=null&&y.document))return null;const V=c?"Add document control":"Document Controls";return e.jsx(l.Dialog,{open:d,onOpenChange:i,children:e.jsxs(l.DialogContent,{className:"flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",onEscapeKeyDown:u,onPointerDownOutside:u,children:[e.jsxs(l.DialogHeader,{className:c?"space-y-0":void 0,children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:V}),e.jsx(l.DialogDescription,{className:c?"sr-only":"text-[13px]",children:c?"Configure and add a document-local control input.":"Add document-local control inputs. They are stored on this document sheet and are not dashboard controls."})]}),e.jsx("div",{className:"min-h-0 overflow-y-auto pr-1",children:e.jsx(oe.ControlDefinitionListEditor,{scope:"dashboard",controls:b,reservedControlIds:j,defaultValues:T,usageByControlId:{},availableFieldChoices:[],availableMetricChoices:[],structuralParticipants:[],structuralParticipantIdsByControlId:{},allowedControlTypes:la,initialCreateFlow:n==="create",onCreateFlowActiveChange:m,onCreateFlowComplete:C,onChange:A,emptyMessage:"No document controls yet."})})]})})}function ca(t){return(t.controls||[]).map(s=>s.id)}function da(t){const s={};for(const n of t)n.defaultValue!==void 0&&(s[n.id]=n.defaultValue);return s}function ua(t,s){return s?Object.prototype.hasOwnProperty.call(s,t.id)?{...t,defaultValue:s[t.id]}:t.defaultValue===void 0?t:{...t,defaultValue:void 0}:t.defaultValue===void 0?t:{...t,defaultValue:void 0}}function ma({allInputs:t,documentSheetId:s,currentDocumentInputs:n,nextControls:r,nextDefaultValues:o,change:i}){const c=new Map(r.map(p=>[p.id,ua(p,o)])),u=(i==null?void 0:i.type)==="rename"?{oldId:i.oldId,newId:i.newId}:null,d=new Set,m=[];for(const p of n){if(p.kind!=="control"){m.push(p);continue}const y=c.get(p.control.id)||((u==null?void 0:u.oldId)===p.control.id?c.get(u.newId):void 0);if(!y)continue;d.add(y.id);const I=l.createUniqueDashboardInputVariableNameFromName(y.id,[...t,...m].filter(N=>N.id!==p.id)),S=y.id===I?y:{...y,id:I};m.push({...p,label:S.label,variableName:I,requiredAtExecution:S.requiredAtExecution,control:S})}for(const p of c.values())d.has(p.id)||m.push(l.createDashboardControlInputFromControl({control:p,existingInputs:[...t,...m],sheetId:s}));const f=new Set(n.map(p=>p.id));return[...t.filter(p=>!f.has(p.id)),...m]}function Nn({showFilters:t,onShowFiltersChange:s,pickerContent:n,settingsContent:r,size:o="default",className:i,primaryButtonClassName:c,secondaryButtonClassName:u,pickerContentClassName:d,settingsContentClassName:m}){const f=o==="toolbar",[g,p]=h.useState(!1),y=l.useSurfaceAppearance("interactive");return e.jsxs("div",{className:a.cn("relative inline-flex items-stretch overflow-hidden rounded-control border border-input bg-background",f?"h-8":"h-7",i),children:[e.jsxs(a.Popover,{open:t,onOpenChange:s,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"ghost",size:"xs",className:a.cn("h-full rounded-none border-0 bg-transparent pl-2.5 pr-2 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",c),children:[t?e.jsx(zr,{className:"h-3.5 w-3.5"}):e.jsx(l.Filter,{className:"h-3.5 w-3.5"}),"Filter"]})}),e.jsx(a.PopoverContent,{align:"end",sideOffset:6,className:a.cn("w-auto rounded-card border border-border/60 p-0 shadow-sm",d),style:y.contentStyle,children:n})]}),e.jsxs(a.Popover,{open:g,onOpenChange:p,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsx(a.Button,{variant:"ghost",size:"xs",className:a.cn("h-full w-7 rounded-none border-0 border-l border-border/60 bg-transparent px-0 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",u),"aria-label":"Filter and control actions",children:e.jsx(a.ChevronDown,{className:"h-3.5 w-3.5"})})}),e.jsx(a.PopoverContent,{align:"end",sideOffset:6,className:a.cn("w-auto rounded-card border border-border/60 p-0 shadow-sm",m),style:y.contentStyle,children:r(()=>p(!1))})]})]})}function ha(){oe.useSyncLegacyEditorState();const t=a.useDashboardStore(d=>d.selectedSheetId),s=a.useDashboardStore(d=>d.selectedFrameId),n=a.useDashboardStore(d=>d.dashboard),r=a.useDashboardStore(d=>d.actions.getSelectedFrame),{setSelectedFrameId:o}=a.useDashboardActions(),{setCard:i}=a.useEditorActions(),c=a.useEditorStore(d=>d.card.dataSource);return h.useEffect(()=>{var m,f;let d=r();if(!d){const g=(m=n==null?void 0:n.sheets)==null?void 0:m.find(y=>y.id===t),p=(f=g==null?void 0:g.frames)==null?void 0:f[0];p&&(o(p.id),d=p)}if(d){const g=d.cards.find(p=>p.id===d.activeCardId);g&&i(g)}},[r,t,s,n,o,i]),{hasEntities:!!(c!=null&&c.selectedEntities&&c.selectedEntities.length>0)}}function xa(){const t=a.useDashboardStore(u=>u.dashboard),s=a.useDashboardStore(u=>u.semanticExecutionPayload),n=a.useDashboardStore(u=>u.actions.addFilter),{hasEntities:r}=ha(),o=h.useMemo(()=>l.getGlobalDateFilterCoverage(t,s),[t,s]),c=!l.getGlobalDateFilter(t.filters)&&o.hasEligibleCards;return e.jsxs("div",{className:"flex h-[520px] w-[400px] flex-col",children:[c&&e.jsxs("div",{className:"border-b border-border/60 p-2",children:[e.jsxs("p",{className:"mb-1 flex items-center gap-1 px-1 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:[e.jsx(l.Sparkles,{className:"h-2.5 w-2.5"}),"Suggested"]}),e.jsxs("button",{type:"button",onClick:()=>n(l.createDefaultGlobalDateFilter()),title:`Eligible: ${o.eligibleCardCount} of ${o.totalCardCount} cards`,className:"flex w-full items-start gap-2 rounded-[4px] px-2 py-1.5 text-left outline-none transition-colors hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border",children:[e.jsx(l.CalendarRange,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),e.jsxs("span",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"text-[12px] font-medium text-foreground",children:"Global date filter"}),e.jsx("span",{className:"text-[11px] leading-[1.4] text-muted-foreground",children:"One date range, applied across every date-aware card on the dashboard."})]})]})]}),!r&&e.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-6 py-8 text-center",children:[e.jsx(l.Database,{className:"mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("h3",{className:"mb-1 text-[13px] font-medium text-foreground",children:"No fields configured"}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Configure a data source for this card to enable filtering."})]}),r&&e.jsx("div",{className:"flex flex-1 overflow-hidden",children:e.jsx(l.FilterableFieldsPanel,{context:"filter"})})]})}const Us=!1;function pa({onAddFilter:t,onAddControl:s,onManageControls:n,onDismiss:r}){const o=a.useDashboardStore(u=>u.dashboard.filterLayout),{setFilterLayout:i}=a.useDashboardActions();o!=null&&o.displayMode;const c=(o==null?void 0:o.toolbarWrap)??!1;return o==null||o.showDownloadButton,e.jsxs("div",{className:"w-[300px]",children:[e.jsxs("div",{className:"p-1",children:[e.jsx(Lt,{icon:l.Filter,label:"Add filter",onClick:()=>{t(),r()}}),e.jsx(Lt,{icon:a.SlidersHorizontal,label:"Add control",onClick:()=>{s(),r()}}),e.jsx(Lt,{icon:l.Pencil,label:"Manage controls",onClick:()=>{n(),r()}})]}),e.jsx("div",{className:"border-t border-border/60"}),e.jsxs("div",{className:"space-y-1 p-2",children:[e.jsx("p",{className:"px-1 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:"Display"}),Us,e.jsx(fa,{id:"filter-display-wrap",label:"Wrap to multiple lines",checked:c,onCheckedChange:u=>i({toolbarWrap:u===!0})}),Us]})]})}function Lt({icon:t,label:s,onClick:n}){return e.jsxs("button",{type:"button",onClick:n,className:"flex w-full items-center gap-2 rounded-[4px] px-2 py-1.5 text-left text-[13px] text-foreground transition-colors hover:bg-muted/40",children:[e.jsx(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),s]})}function fa({id:t,label:s,checked:n,onCheckedChange:r}){return e.jsxs("div",{className:"flex items-center gap-2 rounded-[4px] px-1 py-1 transition-colors hover:bg-muted/40",children:[e.jsx(l.Checkbox,{id:t,checked:n,onCheckedChange:r}),e.jsx(a.Label,{htmlFor:t,className:"cursor-pointer text-[12px] font-normal leading-[1.3]",children:s})]})}function ga({size:t,className:s,primaryButtonClassName:n,secondaryButtonClassName:r,pickerContentClassName:o,settingsContentClassName:i}){var V;const[c,u]=h.useState(null),d=a.useDashboardStore(L=>L.dashboard),m=a.useDashboardStore(L=>L.selectedSheetId),f=a.useDashboardStore(L=>L.showFilters),g=l.useAssistantLayoutStore(L=>L.setPanelOpen),p=a.useDashboardStore(L=>L.actions),{setDocumentInspectorTab:y,setShowFilters:I}=p,S=(V=d.sheets)==null?void 0:V.find(L=>L.id===m),N=a.isDocumentSheet(S),b=h.useCallback(L=>{window.setTimeout(()=>{u(L)},0)},[]),T=h.useCallback(L=>{if(N&&m){L&&y(m,"inputs");return}L&&g("dashboard",!1),I(L)},[N,m,y,g,I]),j=h.useCallback(()=>{T(!0)},[T]),C=h.useCallback(()=>{b("create")},[b]),A=h.useCallback(()=>{b("manage")},[b]);return e.jsxs(e.Fragment,{children:[e.jsx(Nn,{showFilters:N?!1:f,onShowFiltersChange:T,pickerContent:e.jsx(xa,{}),settingsContent:L=>e.jsx(pa,{onAddFilter:j,onAddControl:C,onManageControls:A,onDismiss:L}),size:t,className:s,primaryButtonClassName:n,secondaryButtonClassName:r,pickerContentClassName:o,settingsContentClassName:i}),c?N?e.jsx(vn,{open:!0,onOpenChange:L=>{L||u(null)},initialMode:c}):e.jsx(jn,{open:!0,onOpenChange:L=>{L||u(null)},showTrigger:!1,initialMode:c}):null]})}class ut extends Error{constructor(s,n,r){super(s),this.status=n,this.details=r,this.name="BriefingsApiError"}}function wn(t,s){return`${t.replace(/\/$/,"")}${s}`}function ie(t){return encodeURIComponent(t)}function mt(t){const s=new URLSearchParams;Object.entries(t).forEach(([r,o])=>{o!==void 0&&o!==""&&s.set(r,String(o))});const n=s.toString();return n?`?${n}`:""}async function ba(t){if((t.headers.get("content-type")??"").includes("application/json"))return t.json().catch(()=>({}));const n=await t.text().catch(()=>"");return n?{error:n}:{}}function Cn(t){if(!t||typeof t!="object")return null;const s=t;return typeof s.error=="string"?s.error:null}async function le(t,s,n,r){const o=await fetch(wn(t,n),{cache:(r==null?void 0:r.cache)??"no-store",...r,headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`,...(r==null?void 0:r.headers)||{}}}),i=await o.json().catch(()=>({}));if(!o.ok)throw new ut(Cn(i)||"Briefings API request failed",o.status,i);return i}async function Sn(t,s,n,r){const o=await fetch(wn(t,n),{headers:{Authorization:`Bearer ${s}`}});if(!o.ok){const i=await ba(o);throw new ut(Cn(i)||"Briefing artifact request failed",o.status,i)}return{kind:r,content:await o.text(),contentType:o.headers.get("content-type")??"text/plain",filename:ya(o.headers.get("content-disposition"))}}function ya(t){if(!t)return;const s=/filename="([^"]+)"/.exec(t);return s==null?void 0:s[1]}async function kn(t,s,n){return le(t,s,`/v1/briefings${mt({scope:n==null?void 0:n.scope,tenantId:n==null?void 0:n.tenantId,tenantUserId:n==null?void 0:n.tenantUserId,status:n==null?void 0:n.status,page:n==null?void 0:n.page,pageSize:n==null?void 0:n.pageSize,search:n==null?void 0:n.search})}`)}async function ja(t,s,n){return le(t,s,`/v1/briefings/tenant-summaries${mt({status:n==null?void 0:n.status})}`)}async function Gt(t,s,n){return le(t,s,`/v1/briefings/${ie(n)}`)}async function Dn(t,s,n){return le(t,s,"/v1/briefings",{method:"POST",body:JSON.stringify(n)})}async function ht(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}`,{method:"PATCH",body:JSON.stringify(r)})}async function Xt(t,s,n){return ht(t,s,n,{status:"PAUSED"})}async function Jt(t,s,n){return ht(t,s,n,{status:"ACTIVE"})}async function Qt(t,s,n){return le(t,s,`/v1/briefings/${ie(n)}`,{method:"DELETE"})}async function Yt(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs`,{method:"POST",body:JSON.stringify(r)})}async function En(t,s,n){return le(t,s,"/v1/briefings/preview-plan",{method:"POST",body:JSON.stringify({draft:n})})}async function In(t,s,n){return le(t,s,"/v1/briefings/preview-runs",{method:"POST",body:JSON.stringify(n)})}async function An(t,s,n){return(await le(t,s,`/v1/briefings/preview-runs/${ie(n)}`)).previewRun}async function va(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs${mt({status:r==null?void 0:r.status,cursor:r==null?void 0:r.cursor,limit:r==null?void 0:r.limit})}`)}async function Zt(t,s,n,r){return(await le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`)).run}async function Tn(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`,{method:"PATCH",body:JSON.stringify({action:"cancel"})})}async function Ln(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`,{method:"DELETE"})}async function Na(t,s,n,r,o){return Sn(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}/artifact${mt({kind:o})}`,o)}async function wa(t,s,n,r){return Sn(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}/evidence`,"evidence")}async function Fn(t,s,n){var o;const r=await le(t,s,"/v1/ai/generate",{method:"POST",body:JSON.stringify({type:"polish-text",context:{text:n}})});if(!r.success||!((o=r.result)!=null&&o.polished))throw new ut(r.error||"Polish returned no result",502,r);return r.result.polished}const Ca={pageSize:"letter",orientation:"portrait",includeFilters:!0,includeTimestamp:!0},Sa={delimiter:",",includeHeaders:!0,useFormattedValues:!0};function Ne(t){return Z(t)}function $s(t){switch(t.type){case"dashboard":return`${t.type}:${t.dashboardId}`;case"dashboard_sheet":case"document_sheet":return`${t.type}:${t.dashboardId}:${t.sheetId}`;case"visual":return`${t.type}:${t.dashboardId}:${t.visualId}`;case"card":return`${t.type}:${t.dashboardId}:${t.cardId}`}}function es(t){var s;if((s=t.title)!=null&&s.trim())return t.title.trim();switch(t.type){case"dashboard":return"Dashboard PDF";case"dashboard_sheet":return"Dashboard sheet PDF";case"document_sheet":return"Paginated report PDF";case"visual":return"Saved visual";case"card":return"Dashboard card"}}function ka(t){var s;switch(t.type){case"dashboard":return((s=t.settings)==null?void 0:s.sheetSelection)==="current"?"Current dashboard sheet":"All dashboard sheets";case"dashboard_sheet":return"Dashboard sheet";case"document_sheet":return"Paginated report";case"visual":return"Saved visual";case"card":return t.format==="csv"?"Card data CSV":"Card render"}}function Rn(t){var s;switch(t.type){case"dashboard":case"dashboard_sheet":case"document_sheet":return["pdf"];case"visual":return["pdf","png"];case"card":{const n=(s=t.settings)==null?void 0:s.cardType;return Vn(n)}}}function Da(t,s){return Rn(t).includes(s)?{...Ne(t),format:s,settings:Bn(t.settings,s)}:Ne(t)}function Ea(t,s){const n={...t.settings,...s};return n.includeFilters===!1&&delete n.filterLine,{...Ne(t),settings:n}}function Pn(t){var c,u;if(t.source.type!=="dashboard")return[];const s=t.source.dashboardId,n=t.dashboard,r=[{key:`dashboard:${s}:all`,kind:"dashboard",title:"Full dashboard PDF",detail:"All dashboard sheets",dashboardId:s,formats:["pdf"],defaultFormat:"pdf"}];if(!n)return r;const o=a.getDashboardSheets(n.sheets),i=o.find(d=>d.id===t.selectedSheetId)??o[0];i&&r.push({key:`dashboard_sheet:${s}:${i.id}`,kind:"dashboard_sheet",title:`${Rt(i)} PDF`,detail:"Current dashboard sheet",dashboardId:s,sheetId:i.id,formats:["pdf"],defaultFormat:"pdf"});for(const d of n.sheets||[])a.isDocumentSheet(d)&&r.push({key:`document_sheet:${s}:${d.id}`,kind:"document_sheet",title:`${Rt(d)} PDF`,detail:"Paginated report sheet",dashboardId:s,sheetId:d.id,formats:["pdf"],defaultFormat:"pdf"});if(i)for(const d of On(i)){if(d.card.type==="text")continue;const m=Vn(d.card.type);r.push({key:`card:${s}:${d.card.id}`,kind:"card",title:d.card.title||"Untitled card",detail:`${Rt(i)} · ${d.card.type}`,dashboardId:s,sheetId:i.id,cardId:d.card.id,cardType:d.card.type,frameId:(c=d.frame)==null?void 0:c.id,cardControlDefinitions:d.card.controls,controlBindings:d.card.controlBindings,tablePreferences:(u=d.card.preferences)==null?void 0:u.tablePrefs,formats:m,defaultFormat:l.getDefaultExportFormat(d.card.type)})}return r}function _t(t){const{option:s}=t,n=t.format??s.defaultFormat,r=Ia({option:s,format:n,runtime:t.runtime});switch(s.kind){case"dashboard":return{type:"dashboard",dashboardId:s.dashboardId,format:"pdf",title:s.title,settings:r};case"dashboard_sheet":return{type:"dashboard_sheet",dashboardId:s.dashboardId,sheetId:Ft(s.sheetId),format:"pdf",title:s.title,settings:r};case"document_sheet":return{type:"document_sheet",dashboardId:s.dashboardId,sheetId:Ft(s.sheetId),format:"pdf",title:s.title,settings:r};case"card":return{type:"card",dashboardId:s.dashboardId,cardId:Ft(s.cardId),format:n,title:s.title,settings:r}}}function _s(t){const s=Pn(t),n=s.find(i=>i.kind==="dashboard_sheet"),o=s.find(i=>i.kind==="dashboard")??n;return o?[_t({option:o,runtime:t.runtime})]:[]}function Ia(t){const s={...Bn(void 0,t.format)},n=t.runtime;return n!=null&&n.theme&&(s.theme=n.theme),t.option.kind==="dashboard"&&(s.sheetSelection="all"),t.option.kind==="dashboard_sheet"&&(s.sheetSelection="current",s.currentSheetId=t.option.sheetId,s.currentSheetName=t.option.title.replace(/\sPDF$/,"")),t.option.kind==="document_sheet"&&(s.currentSheetId=t.option.sheetId,s.currentSheetName=t.option.title.replace(/\sPDF$/,"")),t.option.kind==="card"&&(s.selectedSheetId=t.option.sheetId,s.cardType=t.option.cardType,t.option.cardControlDefinitions&&(s.cardControlDefinitions=Z(t.option.cardControlDefinitions)),t.option.controlBindings&&(s.controlBindings=Z(t.option.controlBindings)),t.option.tablePreferences&&(s.tablePreferences=Z(t.option.tablePreferences))),Aa({settings:s,option:t.option,runtime:n}),s.includeFilters!==!1&&(s.filterLine=Pa(s.filterValues)),s}function Aa(t){const{settings:s,option:n,runtime:r}=t;if(!r)return;if(n.kind==="card"){Ta({settings:s,option:n,runtime:r});return}const o=n.kind==="dashboard"?"all":"current",i=n.kind==="dashboard"?r.selectedSheetId:n.sheetId,c=l.buildDashboardExecutionSnapshot({dashboard:r.dashboard||void 0,filterValues:r.filterValues,selectedSheetId:i,sheetSelection:o,dashboardControlValues:r.controlValues,cardControlValuesMap:r.cardControlValuesMap});s.sheetFilterValues=Z(c.filterValues),s.filterValues=Z(c.filterValues),s.controlValues=Z(c.controlValues),r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions));const u=La({option:n,runtime:r,selectedSheetId:n.kind==="dashboard"&&o==="all"?void 0:i,sheetSelection:o});u&&(s.dashboardInputExecutionSnapshot=Z(u))}function Ta(t){var m,f,g;const{settings:s,option:n,runtime:r}=t,o=n.cardId,i=l.getSheetScopedFilterValues(r.filters,r.filterValues,n.sheetId);if(s.sheetFilterValues=Z(i),!o){s.filterValues=Z(i),s.controlValues=Z(r.controlValues||{}),r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions));return}const c=((m=r.inlineFilterValuesMap)==null?void 0:m[o])||[];c.length>0&&(s.inlineFilterValues=Z(c));const u=l.buildDashboardCardExecutionSnapshot({dashboard:r.dashboard||void 0,cardId:o,interactionStates:r.interactionStates||{},currentDashboardId:(f=r.dashboard)==null?void 0:f.id,semanticExecutionPayload:r.semanticExecutionPayload,filters:r.filters,filterValues:r.filterValues,inlineFilterValuesMap:{...r.inlineFilterValuesMap||{},[o]:c},dashboardControls:r.dashboardControls||r.controlDefinitions,dashboardControlValues:r.controlValues,cardControlValuesMap:r.cardControlValuesMap});u?(s.filterValues=Z(u.queryContext.cardFilterValues),s.controlValues=Z(u.queryContext.controlValues),s.controlDefinitions=Z(u.queryContext.controlDefinitions),s.cardControlDefinitions=Z(u.queryContext.cardControlDefinitions),s.controlBindings=Z(u.queryContext.controlBindings)):(s.filterValues=Z(i),s.controlValues={...r.controlValues||{},...((g=r.cardControlValuesMap)==null?void 0:g[o])||{}},r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions)));const d=Fa({option:n,runtime:r,filterValues:s.filterValues,inlineFilterValues:c,controlValues:s.controlValues});d&&(s.dashboardInputExecutionSnapshot=Z(d))}function La(t){var u;const{option:s,runtime:n}=t,r=n.dashboard;if(!((u=r==null?void 0:r.inputs)!=null&&u.length))return;const o=new Date().toISOString(),i=Mn();if(s.kind==="document_sheet"&&s.sheetId)return l.buildDashboardInputExecutionSnapshot({dashboard:r,sheetId:s.sheetId,sheetKind:"document",mode:"document",runtimeValues:{dashboardInputValues:n.dashboardInputValues,filterValues:n.filterValues,controlValues:n.controlValues,inlineFilterValuesMap:n.inlineFilterValuesMap,cardControlValuesMap:n.cardControlValuesMap},generatedAt:o,timezone:i}).snapshot;const c=t.sheetSelection==="all"?a.getDashboardSheets(r.sheets).map(d=>d.id):t.selectedSheetId?[t.selectedSheetId]:[];if(c.length!==0)return l.buildDashboardSheetsInputExecutionSnapshot({dashboard:r,sheetIds:c,sheetKind:"dashboard",mode:"dashboard",runtimeValues:{dashboardInputValues:n.dashboardInputValues,filterValues:n.filterValues,controlValues:n.controlValues,inlineFilterValuesMap:n.inlineFilterValuesMap,cardControlValuesMap:n.cardControlValuesMap},generatedAt:o,timezone:i}).snapshot}function Fa(t){var u;const{option:s,runtime:n}=t,r=n.dashboard;if(!((u=r==null?void 0:r.inputs)!=null&&u.length)||!s.cardId)return;const o=Ra(r,s.sheetId,s.cardId),i=t.inlineFilterValues!==void 0?{...n.inlineFilterValuesMap||{},[s.cardId]:t.inlineFilterValues}:n.inlineFilterValuesMap,c=t.filterValues!==void 0?l.applyFilterOverridesToDashboardInputSlots({dashboardInputValues:n.dashboardInputValues,dashboard:r,filterValues:t.filterValues,sheetId:(o==null?void 0:o.sheet.id)||s.sheetId,cardId:s.cardId,sheetKind:"dashboard"}):n.dashboardInputValues;return l.buildDashboardInputExecutionSnapshot({dashboard:r,sheetId:(o==null?void 0:o.sheet.id)||s.sheetId,card:(o==null?void 0:o.card)||null,sheetKind:"dashboard",mode:"visual",runtimeValues:{dashboardInputValues:c,filterValues:t.filterValues??n.filterValues,controlValues:t.controlValues??n.controlValues,inlineFilterValuesMap:i,cardControlValuesMap:n.cardControlValuesMap},generatedAt:new Date().toISOString(),timezone:Mn()}).snapshot}function Ra(t,s,n){const r=t.sheets||[],o=s?r.filter(i=>i.id===s):r;for(const i of o)for(const c of On(i))if(c.card.id===n)return{sheet:i,card:c.card}}function Mn(){return typeof Intl<"u"?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0}function Pa(t){if(!Array.isArray(t))return"";const s=t.filter(n=>!!n&&typeof n=="object"&&typeof n.name=="string");return l.formatFilterLine(s)}function Bn(t,s){return s==="csv"?{...Sa,...t}:{...Ca,...t}}function Vn(t){return t?l.getSupportedExportFormats(t).filter(s=>s!=="png"):["pdf"]}function On(t){const s=[],n=new Set,r=(o,i)=>{!(o!=null&&o.id)||n.has(o.id)||(n.add(o.id),s.push({card:o,frame:i}))};for(const o of t.cards||[])r(o);for(const o of t.frames||[])for(const i of o.cards||[])r(i,o);return s}function Ft(t){if(!t)throw new Error("Briefing attachment option is missing a required id.");return t}function Rt(t){var s;return((s=t.title)==null?void 0:s.trim())||"Untitled sheet"}function Z(t){return typeof structuredClone=="function"?structuredClone(t):JSON.parse(JSON.stringify(t))}const Un=["markdown"],Ma={name:"",description:"",instruction:"",source:{type:"project"},body:{type:"generated_analysis",instruction:""},attachments:[],output:{artifactFormats:[...Un],includeEvidence:!0,includeSql:!0},schedule:{enabled:!1,scheduleExpr:"",timezone:"UTC",status:"ACTIVE"},delivery:{enabled:!1,recipients:[],channels:[],subject:"",message:""},limits:{}};function $n(t){const s=t.trim();return s.length>0?s:void 0}function Ba(t){return{...t,source:{...t.source},body:{...t.body},attachments:t.attachments.map(Ne),output:{...t.output,artifactFormats:[...t.output.artifactFormats]},schedule:{...t.schedule},delivery:{...t.delivery,recipients:t.delivery.recipients.map(s=>({...s})),channels:[...t.delivery.channels],channelConfigs:t.delivery.channelConfigs?{...t.delivery.channelConfigs}:void 0},limits:{...t.limits}}}function Va(t){return t.type==="generated_analysis"?t.instruction:t.type==="custom_message"?t.message:""}function _n(t,s){return t.type==="custom_message"?{type:"custom_message",message:s}:t.type==="none"?{type:"none"}:{type:"generated_analysis",instruction:s}}function ts(t){return _n(t.body,t.instruction.trim())}function zn(t){return{artifactFormats:[...t.artifactFormats],includeEvidence:t.includeEvidence,includeSql:t.includeSql,...t.audience?{audience:t.audience}:{},...t.tone?{tone:t.tone}:{},...t.format?{format:t.format}:{}}}function qn(t){const s={};return t.maxToolCalls!==void 0&&(s.maxToolCalls=t.maxToolCalls),t.maxRows!==void 0&&(s.maxRows=t.maxRows),t.timeoutMs!==void 0&&(s.timeoutMs=t.timeoutMs),Object.keys(s).length>0?s:void 0}function Hn(t,s){if(!t)return;const n=s.reduce((r,o)=>(t[o]!==void 0&&(r[o]=t[o]),r),{});return Object.keys(n).length>0?n:void 0}function Kn(t){return t.recipients.length===0&&t.channels.length===0?null:{recipients:t.recipients.map(s=>({...s})),channels:[...t.channels],channelConfigs:Hn(t.channelConfigs,t.channels)}}function Oa(t){return{artifactFormats:t!=null&&t.artifactFormats&&t.artifactFormats.length>0?[...t.artifactFormats]:[...Un],includeEvidence:(t==null?void 0:t.includeEvidence)??!0,includeSql:(t==null?void 0:t.includeSql)??!0,audience:t==null?void 0:t.audience,tone:t==null?void 0:t.tone,format:t==null?void 0:t.format}}function Ua(t){return t.body.type==="generated_analysis"?t.body.instruction:t.body.type==="custom_message"?t.body.message:""}function $a(t){return{enabled:!0,recipients:(t==null?void 0:t.recipients.map(s=>({...s})))??[],channels:t!=null&&t.channels?[...t.channels]:[],subject:"",message:"",channelConfigs:Hn(t==null?void 0:t.channelConfigs,(t==null?void 0:t.channels)??[])}}function _a(t,s,n){return t===void 0||Number.isInteger(t)&&t>=s&&t<=n}function za(t){const s=t.trim();return s.includes("@")&&s.includes(".")&&!s.includes(" ")}function Pt(t,s,n,r,o){_a(n,r,o)||t.push({field:`limits.${s}`,message:`${s} must be an integer between ${r} and ${o}`})}function Wn(t){return at(Ma,t??{})}function at(t,s){var c,u,d,m;const n=s.instruction??(s.body?Va(s.body):t.instruction),r=_n(s.body?{...s.body}:{...t.body},n),o=(c=s.delivery)!=null&&c.channels?[...s.delivery.channels]:[...t.delivery.channels],i=((u=s.delivery)==null?void 0:u.channelConfigs)??t.delivery.channelConfigs;return{...Ba(t),...s,instruction:n,source:s.source?{...s.source}:{...t.source},body:r,attachments:s.attachments?s.attachments.map(Ne):t.attachments.map(Ne),output:{...t.output,...s.output,artifactFormats:(d=s.output)!=null&&d.artifactFormats?[...s.output.artifactFormats]:[...t.output.artifactFormats]},schedule:{...t.schedule,...s.schedule},delivery:{...t.delivery,...s.delivery,recipients:(m=s.delivery)!=null&&m.recipients?s.delivery.recipients.map(f=>({...f})):t.delivery.recipients.map(f=>({...f})),channels:o,channelConfigs:i},limits:{...t.limits,...s.limits}}}function Ue(t){return{name:t.name,description:t.description??"",instruction:Ua(t),source:{...t.source},body:{...t.body},attachments:t.attachments.map(Ne),output:Oa(t.presentation),schedule:{enabled:!!t.scheduleExpr,scheduleExpr:t.scheduleExpr??"",timezone:t.timezone||"UTC",status:t.status==="PAUSED"||t.status==="DISABLED"?t.status:"ACTIVE"},delivery:$a(t.deliveryConfig),limits:t.limits?{...t.limits}:{}}}function zt(t){return{name:t.name.trim(),description:$n(t.description)??null,status:t.schedule.status,scheduleExpr:t.schedule.enabled?t.schedule.scheduleExpr.trim():null,timezone:t.schedule.timezone.trim()||"UTC",source:{...t.source},body:ts(t),attachments:t.attachments.map(Ne),presentation:zn(t.output),limits:qn(t.limits),deliveryConfig:Kn(t.delivery)}}function Gn(t){return{name:t.name.trim(),description:$n(t.description)??null,status:t.schedule.status,scheduleExpr:t.schedule.enabled?t.schedule.scheduleExpr.trim():null,timezone:t.schedule.timezone.trim()||"UTC",source:{...t.source},body:ts(t),attachments:t.attachments.map(Ne),presentation:zn(t.output),limits:qn(t.limits),deliveryConfig:Kn(t.delivery)}}function qt(t){var r,o,i,c,u;const s=[];t.name.trim()||s.push({field:"name",message:"Name is required"});const n=ts(t);if(n.type!=="none"&&!t.instruction.trim()&&s.push({field:"instruction",message:"Instruction is required"}),n.type==="none"&&t.attachments.length===0&&s.push({field:"body",message:"Add briefing instructions, a custom message, or at least one attachment."}),t.source.type==="dashboard"&&!t.source.dashboardId.trim()&&s.push({field:"source.dashboardId",message:"Dashboard source requires a dashboard id"}),t.output.artifactFormats.length===0&&s.push({field:"output.artifactFormats",message:"Choose at least one output format"}),t.schedule.timezone.trim()||s.push({field:"schedule.timezone",message:"Timezone is required"}),t.schedule.enabled&&!t.schedule.scheduleExpr.trim()&&s.push({field:"schedule.scheduleExpr",message:"Schedule expression is required when scheduling is enabled"}),t.delivery.recipients.length>0||t.delivery.channels.length>0){if((t.delivery.channels.length===0||t.delivery.channels.some(m=>m!=="SLACK"))&&t.delivery.recipients.length===0&&s.push({field:"delivery.recipients",message:"Add at least one recipient or remove delivery channels"}),t.delivery.channels.length===0&&s.push({field:"delivery.channels",message:"Choose at least one delivery channel or remove recipients"}),t.delivery.recipients.forEach((m,f)=>{m.type==="email"&&!za(m.address)&&s.push({field:`delivery.recipients.${f}.address`,message:"Email recipient address is invalid"})}),t.delivery.channels.includes("WEBHOOK")){const m=(r=t.delivery.channelConfigs)==null?void 0:r.WEBHOOK;(i=(o=m==null?void 0:m.webhookConfig)==null?void 0:o.url)!=null&&i.trim()||s.push({field:"delivery.channelConfigs.WEBHOOK.webhookConfig.url",message:"Webhook URL is required for webhook delivery"})}if(t.delivery.channels.includes("SLACK")){const m=(u=(c=t.delivery.channelConfigs)==null?void 0:c.SLACK)==null?void 0:u.slackConfig;((m==null?void 0:m.destination.type)!=="channel"||!m.destination.channelId.trim())&&s.push({field:"delivery.channelConfigs.SLACK.slackConfig.destination.channelId",message:"Choose a Slack channel"})}}return Pt(s,"maxToolCalls",t.limits.maxToolCalls,1,100),Pt(s,"maxRows",t.limits.maxRows,1,1e5),Pt(s,"timeoutMs",t.limits.timeoutMs,1e3,30*6e4),{valid:s.length===0,issues:s}}const Qe="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function qa({attachment:t,open:s,onOpenChange:n,onChange:r,children:o}){const i=Rn(t),c=t.settings||{},u=t.format==="csv",d=m=>{r(Ea(t,m))};return e.jsxs(a.Popover,{open:s,onOpenChange:n,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:o}),e.jsxs(a.PopoverContent,{align:"start",className:"z-[60] w-[320px] space-y-3 p-3",onOpenAutoFocus:m=>m.preventDefault(),children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:a.cn(Qe,"mb-1"),children:"Attachment"}),e.jsx("div",{className:"truncate text-[12px] font-medium text-foreground",children:es(t)})]}),i.length>1?e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Format"}),e.jsxs(a.Select,{value:t.format,onValueChange:m=>r(Da(t,m)),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsx(a.SelectContent,{children:i.map(m=>e.jsx(a.SelectItem,{value:m,children:m.toUpperCase()},m))})]})]}):null,u?e.jsx(Ka,{settings:c,onChange:d}):e.jsx(Ha,{settings:c,onChange:d})]})]})}function Ha({settings:t,onChange:s}){return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Page size"}),e.jsxs(a.Select,{value:t.pageSize||"letter",onValueChange:n=>s({pageSize:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"letter",children:"Letter"}),e.jsx(a.SelectItem,{value:"legal",children:"Legal"}),e.jsx(a.SelectItem,{value:"a4",children:"A4"}),e.jsx(a.SelectItem,{value:"a3",children:"A3"}),e.jsx(a.SelectItem,{value:"tabloid",children:"Tabloid"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Orientation"}),e.jsxs(a.Select,{value:t.orientation||"portrait",onValueChange:n=>s({orientation:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"portrait",children:"Portrait"}),e.jsx(a.SelectItem,{value:"landscape",children:"Landscape"})]})]})]})]}),e.jsxs("div",{className:"space-y-1.5 border-t border-border/60 pt-2.5",children:[e.jsx(ot,{label:"Include filters",checked:t.includeFilters??!0,onChange:n=>s({includeFilters:n})}),e.jsx(ot,{label:"Include timestamp and footer",checked:t.includeTimestamp??!0,onChange:n=>s({includeTimestamp:n})})]})]})}function Ka({settings:t,onChange:s}){return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Delimiter"}),e.jsxs(a.Select,{value:t.delimiter||",",onValueChange:n=>s({delimiter:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:",",children:"Comma"}),e.jsx(a.SelectItem,{value:";",children:"Semicolon"}),e.jsx(a.SelectItem,{value:" ",children:"Tab"})]})]})]}),e.jsxs("div",{className:"space-y-1.5 border-t border-border/60 pt-2.5",children:[e.jsx(ot,{label:"Include headers",checked:t.includeHeaders??!0,onChange:n=>s({includeHeaders:n})}),e.jsx(ot,{label:"Use formatted values",checked:t.useFormattedValues??!0,onChange:n=>s({useFormattedValues:n})})]})]})}function ot({label:t,checked:s,onChange:n}){return e.jsxs("label",{className:"flex items-center gap-2 text-[12px] text-foreground/80",children:[e.jsx(l.Checkbox,{checked:s,onCheckedChange:r=>n(r===!0)}),e.jsx("span",{children:t})]})}function Wa({attachments:t,onChange:s,onAdd:n,disabled:r}){const o=t.length===0;return e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsxs("button",{type:"button",disabled:r,onClick:n,"aria-label":o?"Attach files":"Add another attachment",className:"inline-flex h-6 items-center gap-1 rounded-control px-1.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-50",children:[e.jsx(l.Paperclip,{className:"h-3 w-3"}),o?"Attach":null]}),t.map((i,c)=>e.jsx(Ga,{attachment:i,disabled:r,onUpdate:u=>{const d=[...t];d[c]=u,s(d)},onRemove:()=>s(t.filter((u,d)=>d!==c))},`${i.type}:${c}:${es(i)}`)),o?null:e.jsxs("button",{type:"button",disabled:r,onClick:n,className:"inline-flex h-6 items-center gap-1 rounded-control px-1.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-50",children:[e.jsx(l.Plus,{className:"h-3 w-3"}),"Add"]})]})}function Ga({attachment:t,disabled:s,onUpdate:n,onRemove:r}){const[o,i]=h.useState(!1),c=es(t),u=ka(t),d=t.format.toUpperCase();return e.jsxs("span",{className:a.cn("group inline-flex h-6 items-center gap-1 rounded-control border border-border bg-background pl-1.5 pr-0.5 text-[11px] text-foreground/80",o&&"border-ring "),title:u?`${c} · ${u}`:c,children:[e.jsx(qa,{attachment:t,open:o,onOpenChange:i,onChange:n,children:e.jsxs("button",{type:"button",disabled:s,className:"inline-flex max-w-[180px] items-center gap-1 disabled:opacity-50",children:[e.jsx(Xa,{format:t.format,className:"h-3 w-3 shrink-0 text-muted-foreground/70"}),e.jsx("span",{className:"truncate font-medium text-foreground",children:c}),e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.04em] text-muted-foreground/70",children:d})]})}),e.jsx("button",{type:"button",disabled:s,onClick:r,className:"inline-flex h-4 w-4 items-center justify-center rounded-control text-muted-foreground/70 hover:bg-muted hover:text-foreground/80 disabled:opacity-50","aria-label":`Remove ${c}`,children:e.jsx(a.X,{className:"h-2.5 w-2.5"})})]})}function Xa({format:t,className:s}){const n=t==="csv"?l.FileSpreadsheet:l.FileText;return e.jsx(n,{className:a.cn(s)})}const Ja="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function Qa({open:t,onOpenChange:s,source:n,dashboard:r,selectedSheetId:o,runtime:i,selectedAttachments:c,onSubmit:u}){const d=h.useMemo(()=>Pn({source:n,dashboard:r,selectedSheetId:o}),[n,r,o]),[m,f]=h.useState([]);h.useEffect(()=>{if(!t)return;const A=[];for(const V of c){const L=$s(V),D=d.find(R=>R.formats.some(_=>{const M=_t({option:R,format:_,runtime:i});return $s(M)===L}));D&&A.push({optionKey:D.key,format:V.format??D.defaultFormat})}f(A)},[t,d,c,i]);const g=h.useMemo(()=>new Set(m.map(A=>A.optionKey)),[m]),p=h.useMemo(()=>{const A={};for(const V of m)A[V.optionKey]=V.format;return A},[m]),y=(A,V)=>{f(L=>L.some(R=>R.optionKey===A)?L.filter(R=>R.optionKey!==A):[...L,{optionKey:A,format:V}])},I=(A,V)=>{f(L=>L.map(D=>D.optionKey===A?{...D,format:V}:D))},S=()=>{const A=[];for(const V of m){const L=d.find(D=>D.key===V.optionKey);L&&A.push(_t({option:L,format:V.format,runtime:i}))}u(A),s(!1)},N=()=>s(!1),b=h.useMemo(()=>d.filter(A=>A.kind==="dashboard"||A.kind==="dashboard_sheet"),[d]),T=h.useMemo(()=>d.filter(A=>A.kind==="document_sheet"),[d]),j=h.useMemo(()=>d.filter(A=>A.kind==="card"),[d]),C=m.length;return e.jsx(l.Dialog,{open:t,onOpenChange:s,children:e.jsxs(l.DialogContent,{className:"flex max-h-[80vh] w-[min(560px,calc(100vw-32px))] max-w-none flex-col gap-0 rounded-card p-0",showCloseButton:!0,children:[e.jsxs(l.DialogHeader,{className:"border-b border-border px-4 py-3 text-left",children:[e.jsx(l.DialogTitle,{className:"text-[14px] font-semibold leading-5",children:"Add attachments"}),e.jsx(l.DialogDescription,{className:"text-[12px] text-muted-foreground",children:"Choose what gets sent with this briefing."})]}),e.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-4",children:n.type!=="dashboard"?e.jsx("div",{className:"rounded-card border border-dashed border-border px-3 py-3 text-[12px] leading-[1.55] text-muted-foreground",children:"Attachments are available when authoring from a dashboard."}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(Mt,{label:"Dashboard",options:b,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I}),e.jsx(Mt,{label:"Paginated reports",options:T,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I,emptyText:"No paginated report sheets are available."}),e.jsx(Mt,{label:"Current sheet cards",options:j,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I,emptyText:"No exportable cards are available on the current dashboard sheet."})]})}),e.jsxs(l.DialogFooter,{className:"flex flex-row items-center justify-between gap-2 border-t border-border px-4 py-3 sm:justify-between",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:C===0?"Nothing selected":`${C} selected`}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Button,{type:"button",variant:"outline",size:"xs",onClick:N,children:"Cancel"}),e.jsx(a.Button,{type:"button",size:"xs",onClick:S,disabled:n.type!=="dashboard",children:C>0?`Add ${C} ${C===1?"attachment":"attachments"}`:"Done"})]})]})]})})}function Mt({label:t,options:s,selectedOptionKeys:n,formatByOptionKey:r,onToggle:o,onFormatChange:i,emptyText:c}){return e.jsxs("section",{children:[e.jsx("div",{className:a.cn(Ja,"mb-2"),children:t}),s.length===0?e.jsx("div",{className:"rounded-card border border-dashed border-border px-3 py-2 text-[12px] text-muted-foreground",children:c||"Nothing available."}):e.jsx("div",{className:"divide-y divide-border rounded-card border border-border",children:s.map(u=>{const d=n.has(u.key),m=r[u.key]??u.defaultFormat;return e.jsxs("div",{className:a.cn("flex w-full items-start gap-2 px-3 py-2 transition-colors hover:bg-muted "),children:[e.jsxs("button",{type:"button",role:"checkbox","aria-checked":d,onClick:()=>o(u.key,u.defaultFormat),className:"flex min-w-0 flex-1 items-start gap-2 text-left",children:[e.jsx(Ya,{selected:d}),e.jsx(Za,{kind:u.kind,format:m,cardType:u.cardType,className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground/70"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate text-[12px] font-medium text-foreground",children:u.title}),e.jsx("span",{className:"mt-0.5 block truncate text-[11px] text-muted-foreground",children:u.detail})]})]}),e.jsx("div",{className:"shrink-0",children:u.formats.length>1?e.jsxs(a.Select,{value:m,onValueChange:f=>i(u.key,f),children:[e.jsx(a.SelectTrigger,{size:"xs",className:"h-6 w-[72px]","aria-label":`Choose format for ${u.title}`,onClick:f=>f.stopPropagation(),children:e.jsx(a.SelectValue,{})}),e.jsx(a.SelectContent,{children:u.formats.map(f=>e.jsx(a.SelectItem,{value:f,children:f.toUpperCase()},f))})]}):e.jsx("span",{className:"inline-flex h-6 items-center text-[10px] uppercase tracking-[0.08em] text-muted-foreground/70",children:m})})]},u.key)})})]})}function Ya({selected:t}){return e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-0.5 flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-control border transition-colors",t?"border-primary bg-primary":"border-border "),children:t?e.jsx(a.Check,{className:"h-2.5 w-2.5 text-primary-foreground",strokeWidth:3}):null})}function Za({kind:t,format:s,cardType:n,className:r}){const o=s==="csv"?l.FileSpreadsheet:t==="dashboard"?l.LayoutDashboard:t==="card"?n==="table"||n==="aggregateTable"||n==="pivotTable"||n==="detailTable"?oe.Rows3:a.ChartColumn:l.FileText;return e.jsx(o,{className:r})}const eo=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,to=250;function Ge(t){switch(t.type){case"email":return`email:${t.address.toLowerCase()}`;case"user":return`user:${t.userId}`;case"tenant_user":return`tenant_user:${t.tenantUserId}`;case"group":return`group:${t.groupId}`}}function so(t){return t.type==="user"?t.userId:t.type==="tenant_user"?t.tenantUserId:null}function no(t){return t.type==="group"?t.groupId:null}function Xe(t){return(t==null?void 0:t.trim().toLowerCase())||null}function zs(t){return{kind:"user",id:t.id,name:t.name,email:t.email,type:t.type}}function qs(t){return{kind:"group",id:t.id,name:t.name,type:t.type,memberCount:t.memberCount,description:t.description}}function Hs({value:t,onChange:s,className:n,disabled:r=!1,prefix:o,placeholder:i}){const c=h.useRef(null),[u,d]=h.useState(!1),[m,f]=h.useState(""),[g,p]=h.useState(0),[y,I]=h.useState(()=>new Map),[S,N]=h.useState(()=>new Map),[b,T]=h.useState("people"),j=l.useDebounce(m,to),{currentUser:C}=l.useCurrentUserInfo(),A=(C==null?void 0:C.type)==="tenant",{users:V,isLoading:L}=l.useUnifiedUsers({search:j,active:!0,type:A?"tenant":"all",tenantId:A?C.tenantId:void 0,limit:25}),{groups:D,isLoading:R}=l.useGroups({search:j,type:A?"TENANT_GROUP":"all",tenantId:A?C.tenantId:void 0,limit:25}),_=h.useMemo(()=>new Set(t.map(Ge)),[t]),M=h.useMemo(()=>new Set(t.map(so).filter(k=>!!k)),[t]),z=h.useMemo(()=>new Set(t.map(no).filter(k=>!!k)),[t]),U=h.useMemo(()=>{const k=new Map(y);return V.forEach(P=>{k.set(P.id,zs(P))}),C!=null&&C.id&&k.set(C.id,{kind:"user",id:C.id,name:C.name||C.email||"User",email:C.email||"",type:C.type}),k},[y,V,C]),B=h.useMemo(()=>{const k=new Set;return t.forEach(P=>{var xe;if(P.type==="email"){const Oe=Xe(P.address);Oe&&k.add(Oe);return}if(P.type==="group")return;const se=P.type==="tenant_user"?P.tenantUserId:P.userId,ce=Xe((xe=U.get(se))==null?void 0:xe.email);ce&&k.add(ce)}),k},[U,t]),W=h.useMemo(()=>{const k=new Map(S);return D.forEach(P=>{k.set(P.id,qs(P))}),k},[S,D]),E=h.useMemo(()=>V.filter(k=>{if(M.has(k.id))return!1;const P=Xe(k.email);return P&&B.has(P)?!1:A?k.type==="tenant"&&k.tenantId===(C==null?void 0:C.tenantId):!0}).map(zs),[V,M,B,A,C==null?void 0:C.tenantId]),me=h.useMemo(()=>E.filter(k=>k.type==="organization"),[E]),w=h.useMemo(()=>E.filter(k=>k.type==="tenant"),[E]),q=h.useMemo(()=>D.filter(k=>z.has(k.id)?!1:(C==null?void 0:C.type)==="tenant"?k.type==="TENANT_GROUP"&&k.tenantId===C.tenantId:!0).map(qs),[D,z,C==null?void 0:C.type,C==null?void 0:C.tenantId]),te=h.useMemo(()=>A?[{key:"people",label:"People",count:w.length},{key:"groups",label:"Groups",count:q.length}]:[{key:"people",label:"People",count:me.length},{key:"tenant_users",label:"Tenant users",count:w.length},{key:"groups",label:"Groups",count:q.length}],[q.length,A,me.length,w.length]),Q=h.useMemo(()=>b==="groups"?[]:b==="tenant_users"||A?w:me,[b,A,me,w]),be=h.useMemo(()=>b==="groups"?q:[],[b,q]),pe=h.useMemo(()=>[...Q,...be],[Q,be]),ye=pe.length===0?0:Math.min(g,pe.length-1),O=m.trim(),Le=eo.test(O),we=Xe(O),je=we?B.has(we):!1,Fe=L||R,H=k=>{_.has(Ge(k))||(s([...t,k]),f(""),p(0))},fe=k=>{s(t.filter(P=>Ge(P)!==k))},Ae=()=>{!Le||je||H({type:"email",address:O})},$=k=>{const P=Xe(k.email);P&&B.has(P)||(I(se=>{const ce=new Map(se);return ce.set(k.id,k),ce}),H(k.type==="tenant"?{type:"tenant_user",tenantUserId:k.id}:{type:"user",userId:k.id}))},Y=k=>{N(P=>{const se=new Map(P);return se.set(k.id,k),se}),H({type:"group",groupId:k.id})},_e=k=>{if(k.key==="Enter"){if(k.preventDefault(),Le&&!je){Ae();return}const P=pe[ye];if((P==null?void 0:P.kind)==="user"){$(P);return}if((P==null?void 0:P.kind)==="group"){Y(P);return}}else if(k.key==="ArrowDown")k.preventDefault(),p(P=>Math.min(P+1,Math.max(pe.length-1,0)));else if(k.key==="ArrowUp")k.preventDefault(),p(P=>Math.max(P-1,0));else if(k.key==="Escape")d(!1);else if(k.key==="Backspace"&&m.length===0){const P=t[t.length-1];P&&fe(Ge(P))}},as=t.map(k=>{const P=Ge(k);if(k.type==="email")return{key:P,label:k.name||k.address,icon:e.jsx(l.AtSign,{className:"h-3 w-3"}),onRemove:()=>fe(P)};if(k.type==="group"){const xe=W.get(k.groupId);return{key:P,label:(xe==null?void 0:xe.name)||"Group",icon:e.jsx(Wt,{className:"h-3 w-3"}),onRemove:()=>fe(P)}}const se=k.type==="tenant_user"?k.tenantUserId:k.userId,ce=U.get(se);return{key:P,label:(ce==null?void 0:ce.name)||(ce==null?void 0:ce.email)||"User",icon:e.jsx(l.User,{className:"h-3 w-3"}),onRemove:()=>fe(P)}});return e.jsx("div",{className:a.cn("relative",n),children:e.jsxs(a.Popover,{open:u&&!r,onOpenChange:d,children:[e.jsx(a.Anchor2,{asChild:!0,children:e.jsxs("div",{className:a.cn("flex min-h-9 cursor-text flex-wrap items-center gap-1.5 rounded-control border bg-background px-2 py-1.5 transition-colors",u?"border-ring ring-2 ring-ring/10":"border-border hover:border-border",r&&"cursor-not-allowed opacity-60"),onClick:()=>{var k;r||((k=c.current)==null||k.focus(),d(!0))},children:[o?e.jsx("span",{className:"inline-flex shrink-0 items-center text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:o}):null,as.map(k=>e.jsx(ro,{icon:k.icon,label:k.label,onRemove:k.onRemove},k.key)),e.jsx("input",{ref:c,className:"h-6 min-w-[160px] flex-1 bg-transparent text-[12px] text-foreground outline-none placeholder:text-muted-foreground/70 disabled:cursor-not-allowed",value:m,disabled:r,placeholder:i??(t.length>0?"Add more...":"Add people, emails, or groups"),onChange:k=>{f(k.target.value),p(0),d(!0)},onFocus:()=>d(!0),onKeyDown:_e})]})}),e.jsx(a.Content2,{align:"start",sideOffset:8,onOpenAutoFocus:k=>k.preventDefault(),className:a.cn("z-[60] w-[var(--radix-popover-trigger-width)] min-w-[360px] rounded-card border border-border bg-background p-0 text-foreground shadow-md outline-none","max-h-[min(320px,var(--radix-popover-content-available-height))] overflow-y-auto"),children:e.jsx(ao,{activeIndex:ye,activeFilter:b,emailAlreadyAdded:je,filters:te,groupSuggestions:be,loading:Fe,onAddEmail:Ae,onFilterChange:k=>{T(k),p(0)},onGroupClick:Y,onUserClick:$,orderedSuggestions:pe,query:O,queryIsEmail:Le,userSuggestions:Q,viewerType:C==null?void 0:C.type})})]})})}function ro({icon:t,label:s,onRemove:n}){return e.jsxs("span",{className:"inline-flex h-6 max-w-full items-center gap-1.5 rounded-control border border-border bg-muted pl-1.5 pr-1 text-[12px]",children:[e.jsx("span",{className:"shrink-0 text-muted-foreground",children:t}),e.jsx("span",{className:"min-w-0 truncate text-foreground",children:s}),e.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),n()},className:"rounded-control p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground","aria-label":`Remove ${s}`,children:e.jsx(a.X,{className:"h-2.5 w-2.5"})})]})}function ao({activeIndex:t,activeFilter:s,emailAlreadyAdded:n,filters:r,groupSuggestions:o,loading:i,onAddEmail:c,onFilterChange:u,onGroupClick:d,onUserClick:m,orderedSuggestions:f,query:g,queryIsEmail:p,userSuggestions:y,viewerType:I}){const S=!i&&f.length===0&&!(p&&!n);return e.jsxs("div",{className:"py-1 text-[13px]",children:[e.jsx("div",{className:"flex items-center gap-1 border-b border-border/60 px-2 pb-1",children:r.map(N=>e.jsxs("button",{type:"button",onClick:()=>u(N.key),className:a.cn("inline-flex h-7 items-center gap-1 rounded-control px-2 text-[12px] transition-colors",s===N.key?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground"),children:[e.jsx("span",{children:N.label}),e.jsx("span",{className:a.cn("tabular-nums",s===N.key?"text-primary-foreground/70 ":"text-muted-foreground/70"),children:N.count})]},N.key))}),i?e.jsxs("div",{className:"flex items-center gap-2 px-2.5 py-2 text-[12px] text-muted-foreground",children:[e.jsx(a.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Searching"]}):null,y.length>0?e.jsx(Ks,{heading:"People",children:y.map(N=>{var T;const b=f.indexOf(N);return e.jsx(Ws,{active:b===t,avatar:e.jsx("div",{className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-medium text-foreground/80",children:(T=(N.name||N.email||"?")[0])==null?void 0:T.toUpperCase()}),detail:N.name?N.email:void 0,tag:N.type==="organization"?"Org user":"Tenant user",viewerType:I,title:N.name||N.email,onClick:()=>m(N)},N.id)})}):null,o.length>0?e.jsx(Ks,{heading:"Groups",children:o.map(N=>{const b=f.indexOf(N);return e.jsx(Ws,{active:b===t,avatar:e.jsx("div",{className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-control border border-border bg-muted text-muted-foreground",children:e.jsx(Wt,{className:"h-3 w-3"})}),detail:N.memberCount!==void 0?`${N.memberCount} member${N.memberCount===1?"":"s"}`:N.description??void 0,tag:N.type==="ORG_GROUP"?"Org group":"Tenant group",viewerType:I,title:N.name,onClick:()=>d(N)},N.id)})}):null,p&&!n?e.jsx("div",{className:"border-t border-border px-1.5 py-1.5",children:e.jsxs("button",{type:"button",onClick:c,className:"flex w-full items-center gap-2 rounded-control px-2 py-1.5 text-left hover:bg-muted",children:[e.jsx(pn,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"text-[13px] text-foreground",children:["Send to ",e.jsx("span",{className:"font-medium",children:g})]}),e.jsx("div",{className:"text-[11px] text-muted-foreground",children:"Add as external email"})]}),e.jsx("span",{className:"ml-auto shrink-0 rounded-control border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground",children:"Enter"})]})}):null,S?e.jsx("div",{className:"px-2.5 py-6 text-center text-[12px] text-muted-foreground",children:g?"No people or groups match. Enter a valid email to add an external recipient.":"Pick a category above or type to search people, groups, or external emails."}):null]})}function Ks({heading:t,children:s}){return e.jsxs("div",{className:"px-1.5 pb-1",children:[e.jsx("div",{className:"px-1.5 pb-0.5 pt-1.5 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:t}),s]})}function Ws({active:t,avatar:s,detail:n,onClick:r,tag:o,title:i,viewerType:c}){return e.jsxs("button",{type:"button",onClick:r,className:a.cn("flex w-full items-center gap-2 rounded-control px-2 py-1.5 text-left",t?"bg-muted ":"hover:bg-muted "),children:[s,e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate text-[13px] text-foreground",children:i}),n?e.jsx("span",{className:"block truncate text-[11px] text-muted-foreground",children:n}):null]}),c==="organization"?e.jsx("span",{className:"shrink-0 rounded-control border border-border bg-background px-1.5 py-0.5 text-[10px] text-muted-foreground",children:o}):null]})}function it(t){return t==="SUCCESS"||t==="FAILED"}function lt(t){return t==="QUEUED"||t==="RUNNING"}function Ht({apiServiceUrl:t,token:s,intervalMs:n,timeoutMs:r,fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d}){const[m,f]=h.useState(null),[g,p]=h.useState("idle"),y=h.useRef(null),I=h.useRef({fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d});h.useEffect(()=>{I.current={fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d}},[o,u,i,c,d]);const S=h.useCallback(()=>{f(null),p("idle")},[]),N=h.useCallback(()=>{y.current=null},[]),b=h.useCallback(j=>{var C,A;if(I.current.onRun(j),it(j.status)){y.current=j.id,f(null),p("terminal"),(A=(C=I.current).onTerminalRun)==null||A.call(C,j);return}if(lt(j.status)){y.current=null,f(j.id),p("polling");return}f(null),p("idle")},[]),T=h.useCallback(j=>{y.current!==j&&(f(j),p("polling"))},[]);return h.useEffect(()=>{if(!m||!t||!s)return;if(y.current===m){f(null),p("terminal");return}let j=!1,C=!1,A=null;const V=Date.now(),L=async()=>{var D,R,_,M,z,U;if(!(j||C)){if(Date.now()-V>r){f(B=>B===m?null:B),p("timed_out"),(R=(D=I.current).onTimeout)==null||R.call(D,m);return}C=!0;try{const B=await I.current.fetchRun({apiServiceUrl:t,token:s,runId:m});if(j)return;if(I.current.onRun(B),it(B.status)){y.current=B.id,f(W=>W===B.id?null:W),p("terminal"),(M=(_=I.current).onTerminalRun)==null||M.call(_,B);return}if(!lt(B.status)){f(W=>W===B.id?null:W),p("idle");return}A=window.setTimeout(L,n)}catch(B){j||(p("error"),(U=(z=I.current).onError)==null||U.call(z,B))}finally{C=!1}}};return p("polling"),L(),()=>{j=!0,A&&window.clearTimeout(A)}},[m,t,n,r,s]),{activeRunId:m,isPolling:m!==null&&g==="polling",resetTerminalRun:N,startRun:b,startRunId:T,status:g,stop:S}}function Gs({label:t,description:s,checked:n,onSelect:r,name:o}){return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2.5",children:[e.jsx("input",{type:"radio",name:o,checked:n,onChange:r,className:"sr-only"}),e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-full border",n?"border-primary":"border-border"),children:n?e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-primary"}):null}),e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block text-[13px] text-foreground",children:t}),e.jsx("span",{className:"mt-0.5 block text-[11px] text-muted-foreground",children:s})]})]})}function oo({includeEvidence:t,includeSql:s,includeHtml:n,onChange:r}){const o=[t,s,n].filter(Boolean).length;return e.jsxs(a.Popover,{children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs("button",{type:"button",className:"inline-flex h-7 items-center gap-1.5 rounded-control px-2 text-[12px] text-muted-foreground hover:bg-muted hover:text-foreground","aria-label":"Output options",children:[e.jsx(l.Settings2,{className:"h-3 w-3"}),"Output options",e.jsxs("span",{className:"font-mono text-[11px] tabular-nums text-muted-foreground",children:["· ",o,"/3"]}),e.jsx(a.ChevronDown,{className:"h-3 w-3"})]})}),e.jsxs(a.PopoverContent,{align:"end",sideOffset:4,className:"z-[60] w-[320px] rounded-card border-border bg-popover p-0 text-popover-foreground",children:[e.jsxs("div",{className:"border-b border-border/60 px-3 py-2",children:[e.jsx("div",{className:"text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:"Output options"}),e.jsx("p",{className:"mt-0.5 text-[11px] leading-[1.5] text-muted-foreground",children:"Choose what gets included in the rendered briefing."})]}),e.jsxs("div",{className:"space-y-2.5 px-3 py-2.5",children:[e.jsx(Bt,{label:"Include evidence links",description:"Cite the queries and data behind each finding.",checked:t,onChange:i=>r("evidence",i)}),e.jsx(Bt,{label:"Include SQL in evidence",description:"Show the SQL the briefing ran. Useful for debugging or for a technical audience.",checked:s,onChange:i=>r("sql",i)}),e.jsx(Bt,{label:"Generate rich HTML report",description:"Send a styled HTML version alongside the markdown body.",checked:n,onChange:i=>r("html",i)})]})]})]})}function Bt({label:t,description:s,checked:n,onChange:r}){return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2.5",children:[e.jsx("input",{type:"checkbox",checked:n,onChange:o=>r(o.target.checked),className:"sr-only"}),e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-[2px] flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-control border",n?"border-primary bg-primary":"border-border"),children:n?e.jsx(a.Check,{className:"h-2 w-2 text-primary-foreground",strokeWidth:3.5}):null}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[12px] font-medium text-foreground",children:t}),e.jsx("p",{className:"mt-0.5 text-[11px] leading-[1.5] text-muted-foreground",children:s})]})]})}const Kt=`Tell me what changed in the business and what is driving it.
|
|
56
|
+
*/const $t=a.createLucideIcon("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);function Kr({open:t,onOpenChange:s,isLibraryVisual:n,currentVisualName:r,isSaving:o=!1,destinationMode:i="both",onConfirm:c}){const[u,d]=h.useState(n&&r?`Copy of ${r}`:r||""),[m,f]=h.useState("");h.useEffect(()=>{t&&(d(n&&r?`Copy of ${r}`:r||""),f(""))},[t,n,r]);const g=!!u.trim(),p=i==="local"?{saveToLibrary:!1,saveToCurrentDashboard:!0,badgeType:"local",description:"Creates a local copy on the current dashboard.",actionLabel:"Add to Dashboard (Local)"}:i==="library"?{saveToLibrary:!0,saveToCurrentDashboard:!1,badgeType:"library",description:"Creates a reusable visual in Visual Library.",actionLabel:"Save as Library Visual"}:{saveToLibrary:!0,saveToCurrentDashboard:!0,badgeType:"linked",description:"Creates a new library visual and adds a linked copy to this dashboard.",actionLabel:"Save Copy as Linked Visual"},y=()=>{!g||o||c({name:u.trim(),description:m.trim()||void 0,saveToLibrary:p.saveToLibrary,saveToCurrentDashboard:p.saveToCurrentDashboard})};return e.jsx(l.Dialog,{open:t,onOpenChange:s,children:e.jsxs(l.DialogContent,{className:"sm:max-w-[500px]",children:[e.jsxs(l.DialogHeader,{children:[e.jsxs(l.DialogTitle,{className:"flex items-center gap-2",children:[e.jsx("span",{children:"Save Visual As"}),p.badgeType!=="local"&&e.jsx(oe.VisualBadge,{type:p.badgeType,showLabel:!0,className:"px-2 py-0.5"})]}),e.jsx(l.DialogDescription,{children:p.description})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"name",children:"Name"}),e.jsx(a.Input,{id:"name",value:u,onChange:I=>d(I.target.value),placeholder:"Enter visual name",disabled:o})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(a.Label,{htmlFor:"description",children:"Description (optional)"}),e.jsx(l.Textarea,{id:"description",value:m,onChange:I=>f(I.target.value),placeholder:"Enter visual description",rows:3,disabled:o})]})]}),e.jsxs(l.DialogFooter,{children:[e.jsx(a.Button,{variant:"outline",onClick:()=>s(!1),disabled:o,children:"Cancel"}),e.jsxs(a.Button,{onClick:y,disabled:!g||o,children:[o&&e.jsx(a.LoaderCircle,{className:"mr-2 h-4 w-4 animate-spin"}),p.actionLabel]})]})]})})}function Wr(){const[t,s]=h.useState(!1),[n,r]=h.useState(!1),[o,i]=h.useState(null),[c,u]=h.useState(null),d=a.useEditorStore(D=>D.frame),m=a.useEditorStore(D=>D.card),f=l.useSelectedVisual(),g=a.useDashboardStore(D=>D.selectedSheetId),p=a.useDashboardStore(D=>D.dashboard),y=a.useDashboardStore(D=>D.actions.setIsDashboardPanelOpen),{getUpdatedFrame:I}=xn.useVisualUtils(),{selectVisual:S}=l.useManagementActions(),{addFrame:N,setSelectedFrameId:b,setIsVisualEditing:T}=a.useDashboardActions(),j=l.useResolveExistingFrameSemanticExecutionPayload(),C=!!(d!=null&&d.visualId),A=(()=>{var D,R;return((D=d==null?void 0:d.cards)==null?void 0:D.length)===1&&((R=d.cards[0])!=null&&R.title)?d.cards[0].title:f!=null&&f.title?f.title:(m==null?void 0:m.title)||"Untitled Visual"})(),V=l.useCreateVisualWithFrame(D=>{D!=null&&D.id&&(S(D),n&&o&&c&&g&&(async()=>{try{const R={...o,id:a.v4(),visualId:D.id};N(g,R,{position:"end",semanticExecutionPayload:c}),b(R.id),r(!1),i(null),u(null),T(!1)}catch(R){console.error("Failed to promote semantic metadata for saved visual:",R),l.ue.error(R instanceof Error?R.message:"Failed to prepare semantic metadata for the saved visual")}})(),y(!0),s(!1))});return{saveAsDialogOpen:t,setSaveAsDialogOpen:s,handleSaveAs:async D=>{if(!g){l.ue.error("No sheet selected");return}const R=I(),_=a.getDynamicFrameSaveIssue(R);if(_){l.ue.error(_);return}const z=R.cards.length===1?{...R,cards:R.cards.map(U=>({...U,title:D.name}))}:R;if(D.saveToLibrary){let U=null;if(D.saveToCurrentDashboard)try{U=await j(z,{previousFrame:l.findDashboardFrameById(p,z.id)})}catch(W){console.error("Failed to prepare semantic metadata before saving visual:",W),l.ue.error(W instanceof Error?W.message:"Failed to prepare semantic metadata for the saved visual");return}r(D.saveToCurrentDashboard),i(z),u(U);const B={title:D.name,description:D.description,frameObject:z,isPrivate:!1};V.mutate(B)}else if(D.saveToCurrentDashboard){const U={...z,id:a.v4(),visualId:void 0};try{const B=await j(z,{previousFrame:l.findDashboardFrameById(p,z.id)});N(g,U,{position:"end",semanticExecutionPayload:B}),b(U.id),l.ue.success("Visual saved to dashboard"),s(!1),T(!1)}catch(B){console.error("Failed to save visual to dashboard:",B),l.ue.error(B instanceof Error?B.message:"Failed to prepare semantic metadata for the visual")}}},isLibraryVisual:C,currentVisualName:A,isSaving:V.isPending}}function Gr(t={}){const s=a.useEditorStore(M=>M.frame),n=a.useEditorStore(M=>M.editorContext),r=l.useManagementStore(M=>M.selectedVisual),o=a.useDashboardStore(M=>M.selectedFrameId),i=a.useDashboardStore(M=>M.selectedSheetId),c=a.useDashboardStore(M=>M.dashboard),{setIsVisualEditing:u,updateFrame:d}=a.useDashboardActions(),[m,f]=h.useState(!1),[g,p]=h.useState("both"),y=l.useResolveExistingFrameSemanticExecutionPayload(),I=(n==null?void 0:n.type)==="documentSection",S=!!(s!=null&&s.visualId||r!=null&&r.id),N=!!(s!=null&&s.visualId&&o),b=S&&!N,{saveAsDialogOpen:T,setSaveAsDialogOpen:j,handleSaveAs:C,isLibraryVisual:A,currentVisualName:V,isSaving:L}=Wr(),{getUpdatedFrame:D}=xn.useVisualUtils();if(I)return e.jsxs(e.Fragment,{children:[e.jsx(oe.EditorAcceptButton,{className:"rounded-control",variant:"default"}),e.jsx(oe.EditorCancelButton,{})]});const R=async()=>{if(!i){l.ue.error("No sheet selected");return}if(m)return;f(!0);const M=D(),z=a.getDynamicFrameSaveIssue(M);if(z){f(!1),l.ue.error(z);return}const U={...M,visualId:void 0},B=l.findDashboardFrameById(c,U.id);try{const W=await y(U,{previousFrame:B});d(i,U,{semanticExecutionPayload:W})}catch(W){console.error("Failed to apply local semantic metadata:",W),f(!1),l.ue.error(W instanceof Error?W.message:"Failed to prepare semantic metadata for this visual");return}setTimeout(()=>{f(!1),l.ue.success("Changes applied. Visual is now local to this dashboard"),u(!1)},300)},_=M=>{p(M),j(!0)};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"inline-flex items-center overflow-hidden rounded-control",children:[!S&&e.jsx(oe.EditorAcceptButton,{className:"!rounded-none",variant:"default"}),S&&b&&e.jsx(oe.VisualSaveButton,{className:"!rounded-none",variant:"default"}),S&&N&&e.jsx(oe.VisualSaveAndApplyButton,{className:"!rounded-none"}),e.jsxs(l.DropdownMenu,{modal:!1,children:[e.jsx(l.DropdownMenuTrigger,{asChild:!0,children:e.jsx(a.Button,{variant:"default",size:"xs",className:"w-7 !rounded-none border-l border-primary-foreground/20 px-0","aria-label":"Open visual save options",disabled:L||m,children:e.jsx(a.ChevronDown,{className:"h-3.5 w-3.5"})})}),e.jsxs(l.DropdownMenuContent,{align:"end",className:"min-w-[220px] rounded-control border border-border/60 p-1 shadow-sm",children:[N&&e.jsxs(e.Fragment,{children:[e.jsxs(l.DropdownMenuItem,{onClick:R,disabled:m,children:[e.jsx(a.Check,{className:"h-3.5 w-3.5"}),m?"Applying...":"Apply Locally"]}),e.jsx(l.DropdownMenuSeparator,{})]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("local"),disabled:L,children:[e.jsx(l.Plus,{className:"h-3.5 w-3.5"}),"Add to Dashboard (Local)"]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("library"),disabled:L,children:[e.jsx(oe.Library,{className:"h-3.5 w-3.5"}),"Save as Library Visual"]}),e.jsxs(l.DropdownMenuItem,{onClick:()=>_("both"),disabled:L,children:[e.jsx(oe.Link2,{className:"h-3.5 w-3.5"}),"Save Copy as Linked Visual"]})]})]})]}),e.jsx(oe.EditorCancelButton,{}),e.jsx(Kr,{open:T,onOpenChange:M=>{L||j(M)},isLibraryVisual:A,currentVisualName:V,isSaving:L,destinationMode:g,onConfirm:C})]})}function Xr({className:t}){const s=a.useEditorStore(m=>m.isDevMode),n=a.useDashboardStore(m=>m.isVisualEditing),{setIsDevMode:r}=a.useEditorActions(),{config:o}=h.useContext(l.SemaphorContext).tokenProps,i=(o==null?void 0:o.showAdvancedMode)!==!1;if(!n||!i)return null;const c=s?a.SlidersHorizontal:l.CodeXml,u=s?"Drag & drop":"SQL",d=s?"Switch to drag-and-drop mode":"Switch to SQL mode";return e.jsxs("button",{type:"button","aria-label":d,title:d,onClick:()=>r(!s),className:a.cn("inline-flex h-7 items-center gap-1.5 rounded-control border border-input bg-background px-2 text-[12px] font-medium text-foreground transition-colors hover:bg-muted/40 focus-visible:border-ring focus-visible:outline-none",t),children:[e.jsx(c,{className:"h-3 w-3 text-muted-foreground"}),u]})}function Jr({open:t,onOpenChange:s,onSave:n,onDiscard:r,isSaving:o,title:i="Unsaved changes",description:c="You have unsaved changes to this dashboard. What would you like to do?",cancelLabel:u="Cancel",discardLabel:d="Discard",saveLabel:m="Save"}){const f=g=>{!g&&o||s(g)};return e.jsx(l.AlertDialog,{open:t,onOpenChange:f,children:e.jsxs(l.AlertDialogContent,{children:[e.jsxs(l.AlertDialogHeader,{children:[e.jsx(l.AlertDialogTitle,{children:i}),e.jsx(l.AlertDialogDescription,{children:c})]}),e.jsxs(l.AlertDialogFooter,{children:[e.jsx(a.Button,{type:"button",size:"xs",onClick:r,disabled:o,variant:"ghost",className:"mr-auto text-muted-foreground hover:bg-destructive/10 hover:text-destructive focus-visible:bg-destructive/10 focus-visible:text-destructive",children:d}),e.jsx(l.AlertDialogCancel,{disabled:o,children:u}),e.jsx(a.Button,{type:"button",size:"xs",onClick:n,disabled:o,children:o?e.jsxs(e.Fragment,{children:[e.jsx(a.LoaderCircle,{className:"mr-2 h-3.5 w-3.5 animate-spin"}),"Saving..."]}):m})]})]})})}const Qr=1e4,Yr=15e3,Zr=3e4,ea=3e4,ta=12e4,Os=2*60*60*1e3;function sa(t){const s=Date.now()-t.getTime();return s<ea?Qr:s<ta?Yr:Zr}function na(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(p=>p.activeExports),[r,o]=h.useState(typeof document<"u"?!document.hidden:!0),i=h.useRef(null),c=h.useRef(!1),u=h.useRef(void 0),d=s==null?void 0:s.apiServiceUrl,m=t==null?void 0:t.accessToken,f=h.useCallback(()=>{const p=l.useExportStore.getState().activeExports;return Array.from(p.values()).filter(y=>l.isExportInProgress(y.status))},[]);h.useEffect(()=>{if(typeof document>"u")return;const p=()=>{o(!document.hidden)};return document.addEventListener("visibilitychange",p),()=>{document.removeEventListener("visibilitychange",p)}},[]);const g=h.useCallback(async()=>{if(!d||!m){c.current=!1;return}const p=f();if(p.length===0){c.current=!1;return}const y=Date.now(),I=p.filter(j=>y-j.startedAt.getTime()>Os);if(I.length>0){const{updateExport:j}=l.useExportStore.getState().actions;for(const C of I)j(C.id,{status:"failed",error:"Export timed out. Please try again or contact support.",lastUpdatedAt:new Date})}const S=p.filter(j=>y-j.startedAt.getTime()<=Os);if(S.length===0){c.current=!1;return}const N=await Promise.allSettled(S.map(async j=>{try{const C=await l.getExportStatus(d,m,j.id);let A;if(C.status==="completed")try{A=await l.getDownloadUrl(d,m,j.id)}catch(V){console.error(`[useExportPolling] Failed to get download URL for ${j.id}:`,V)}return{id:j.id,status:C.status,progress:C.progress,completedChunks:C.completedChunks,completedAt:C.completedAt?new Date(C.completedAt):void 0,lastUpdatedAt:new Date,fileSize:C.fileSize,error:C.error,downloadUrl:A}}catch(C){return console.error(`[useExportPolling] Failed to poll export ${j.id}:`,C),null}})),{updateExport:b}=l.useExportStore.getState().actions;for(const j of N)j.status==="fulfilled"&&j.value&&b(j.value.id,j.value);const T=f();if(T.length>0&&!document.hidden){const j=T.reduce((A,V)=>V.startedAt<A?V.startedAt:A,T[0].startedAt),C=sa(j);i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{var A;(A=u.current)==null||A.call(u)},C)}else c.current=!1},[d,m,f]);return h.useEffect(()=>{u.current=g},[g]),h.useEffect(()=>{var y;f().length>0&&r&&!c.current&&(c.current=!0,(y=u.current)==null||y.call(u))},[n,r,f]),h.useEffect(()=>{var y;const p=f();r&&p.length>0&&!c.current&&(c.current=!0,(y=u.current)==null||y.call(u))},[r,f]),h.useEffect(()=>{!r&&i.current&&(clearTimeout(i.current),i.current=null,c.current=!1)},[r]),h.useEffect(()=>()=>{i.current&&(clearTimeout(i.current),i.current=null)},[]),{isPolling:c.current,isTabVisible:r,inProgressCount:f().length}}function ra(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(u=>u.activeExports),{addExport:r}=l.useExportActions(),o=h.useRef(!1),i=s==null?void 0:s.apiServiceUrl,c=t==null?void 0:t.accessToken;h.useEffect(()=>{if(o.current||!i||!c)return;(async()=>{try{const{exports:d}=await l.getExports(i,c,{status:["pending","processing","chunking","compacting","completed","failed"],limit:20});for(const m of d){if(n.has(m.id))continue;const f=m.totalChunks?Math.round(m.completedChunks/m.totalChunks*100):0;let g;if(m.status==="completed")try{g=await l.getDownloadUrl(i,c,m.id)}catch(y){console.error(`[useExportRecovery] Failed to get download URL for ${m.id}:`,y)}const p={id:m.id,status:m.status,progress:f,title:aa(m),totalRows:m.totalRows,totalChunks:m.totalChunks,completedChunks:m.completedChunks,startedAt:new Date(m.createdAt),lastUpdatedAt:new Date,completedAt:m.completedAt?new Date(m.completedAt):void 0,fileSize:m.fileSize,error:m.error,expiresAt:new Date(m.expiresAt),downloadUrl:g};r(p)}o.current=!0}catch(d){console.error("[useExportRecovery] Failed to recover exports:",d),o.current=!0}})()},[i,c,r,n])}function aa(t){return t.title?t.title:l.isExportInProgress(t.status)?"Export in progress...":t.status==="completed"?"Export completed":t.status==="failed"?"Export failed":"Export"}function bn({export:t,onRemove:s}){const n=()=>{t.downloadUrl&&window.open(t.downloadUrl,"_blank")},r=u=>{u.stopPropagation(),s==null||s(t.id)},o=()=>{switch(t.status){case"completed":return e.jsx(l.CircleCheck,{className:"mt-0.5 h-5 w-5 shrink-0 text-green-600"});case"failed":return e.jsx(oe.CircleX,{className:"mt-0.5 h-5 w-5 shrink-0 text-destructive"});default:return e.jsx(a.LoaderCircle,{className:"text-foreground-muted mt-0.5 h-5 w-5 shrink-0 animate-spin"})}},i=l.isExportInProgress(t.status),c=(()=>{switch(t.status){case"pending":return"Queued...";case"processing":return"Processing...";case"chunking":return"Processing...";case"compacting":return"Finalizing...";default:return"Processing..."}})();return e.jsxs("div",{className:"group p-4 transition-colors hover:bg-muted/50",children:[e.jsxs("div",{className:"mb-2 flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-start gap-3",children:[o(),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"mb-1 truncate text-sm font-medium",children:t.title}),t.status==="completed"&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsxs("span",{children:[t.totalRows.toLocaleString()," rows"]}),t.fileSize&&e.jsxs(e.Fragment,{children:[e.jsx("span",{children:"•"}),e.jsx("span",{children:l.formatFileSize(t.fileSize)})]})]}),i&&e.jsx("div",{className:"text-xs text-muted-foreground",children:c}),t.status==="failed"&&e.jsx("div",{className:"line-clamp-2 text-xs text-destructive",children:t.error||"Export failed"})]})]}),e.jsx(a.Button,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:r,"aria-label":"Remove notification",children:e.jsx(a.X,{className:"h-4 w-4"})})]}),e.jsxs("div",{className:"ml-8",children:[t.status==="completed"&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-xs text-muted-foreground",children:Bs.formatDistanceToNow(t.startedAt,{addSuffix:!0})}),t.downloadUrl&&e.jsxs(a.Button,{size:"sm",variant:"outline",className:"h-8 bg-transparent",onClick:n,children:[e.jsx(l.Download,{className:"mr-1.5 h-3.5 w-3.5"}),"Download"]})]}),i&&e.jsxs("div",{children:[e.jsx(l.Progress,{value:t.progress,className:"h-1.5"}),e.jsxs("span",{className:"mt-1 block text-xs text-muted-foreground",children:[t.progress,"% complete"]})]}),t.status==="failed"&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Bs.formatDistanceToNow(t.startedAt,{addSuffix:!0})})]})]})}function yn(){const{authToken:t,tokenProps:s}=l.useSemaphorContext(),n=l.useExportStore(S=>S.activeExports),{clearCompleted:r,removeExport:o,updateExport:i}=l.useExportActions(),[c,u]=h.useState(!1),[d,m]=h.useState(!1),f=Array.from(n.values()).sort((S,N)=>N.startedAt.getTime()-S.startedAt.getTime()),g=f.some(S=>S.status==="completed"||S.status==="failed"),p=h.useCallback(async()=>{const S=s==null?void 0:s.apiServiceUrl,N=t==null?void 0:t.accessToken;if(!(!S||!N)){u(!0);try{const b=Array.from(n.values());await Promise.all(b.map(async T=>{try{const j=await l.getExportStatus(S,N,T.id);let C;if(j.status==="completed")try{C=await l.getDownloadUrl(S,N,T.id)}catch(A){console.error(`Failed to get download URL for ${T.id}:`,A)}i(T.id,{status:j.status,progress:j.progress,completedChunks:j.completedChunks,completedAt:j.completedAt?new Date(j.completedAt):void 0,lastUpdatedAt:new Date,fileSize:j.fileSize,error:j.error,downloadUrl:C})}catch(j){console.error(`Failed to refresh export ${T.id}:`,j)}}))}finally{u(!1)}}},[n,t==null?void 0:t.accessToken,s==null?void 0:s.apiServiceUrl,i]),y=h.useCallback(async()=>{const S=s==null?void 0:s.apiServiceUrl,N=t==null?void 0:t.accessToken;if(!S||!N){r();return}m(!0);try{const b=f.filter(j=>j.status==="completed"||j.status==="failed"),T=await Promise.allSettled(b.map(async j=>(await l.cancelExport(S,N,j.id),j.id)));for(const j of T)j.status==="fulfilled"?o(j.value):console.error("Failed to delete export:",j.reason)}finally{m(!1)}},[f,s==null?void 0:s.apiServiceUrl,t==null?void 0:t.accessToken,r,o]),I=h.useCallback(async S=>{const N=s==null?void 0:s.apiServiceUrl,b=t==null?void 0:t.accessToken;if(N&&b)try{await l.cancelExport(N,b,S),o(S);return}catch(T){console.error(`Failed to cancel export ${S}:`,T)}o(S)},[s==null?void 0:s.apiServiceUrl,t==null?void 0:t.accessToken,o]);return f.length===0?e.jsxs("div",{className:"p-6 text-center",children:[e.jsx(Vs,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No active exports"}),e.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Large exports will appear here"})]}):e.jsxs("div",{className:"flex flex-col",children:[e.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Vs,{className:"h-5 w-5 text-muted-foreground"}),e.jsx("h4",{className:"font-semibold",children:"Exports"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(a.Button,{variant:"ghost",size:"sm",className:"h-7 w-7 p-0",onClick:p,disabled:c,title:"Refresh status",children:e.jsx(l.RefreshCw,{className:`h-4 w-4 ${c?"animate-spin":""}`})}),g&&e.jsx(a.Button,{variant:"ghost",size:"sm",className:"h-7 px-2 text-sm",onClick:y,disabled:d,children:d?"Clearing...":"Clear all"})]})]}),e.jsx("div",{className:"max-h-[350px] overflow-y-auto",children:e.jsx("div",{className:"divide-y",children:f.map(S=>e.jsx(bn,{export:S,onRemove:I},S.id))})})]})}function oa({variant:t}){const s=l.useExportStore(d=>d.activeExports),n=l.useInProgressExportsCount(),r=s.size>0,o=Array.from(s.values()).some(d=>d.status==="completed"||d.status==="failed"),c=n>0?n>9?"9+":String(n):null,u=r;return e.jsxs(a.Popover,{children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:t??"ghost",size:"xs",className:"relative w-7 px-0 text-muted-foreground hover:text-foreground","aria-label":"Export notifications",children:[e.jsx(l.Bell,{className:"h-3.5 w-3.5"}),u&&e.jsx("span",{className:`absolute flex items-center justify-center rounded-full bg-primary text-primary-foreground ${c?"-right-0.5 -top-0.5 h-3.5 min-w-3.5 px-0.5 text-[9px] font-semibold":"right-1 top-1 h-1.5 w-1.5"}`,children:c})]})}),e.jsx(a.PopoverContent,{className:"w-80 p-0",align:"end",sideOffset:8,children:e.jsx(yn,{})})]})}function ia(t){if(t)return{renamed:t.type==="rename"?{oldId:t.oldId,newId:t.newId}:void 0,removedControlId:t.type==="remove"?t.controlId:void 0,cardBindingsById:t.type==="add"||t.type==="update"?t.cardBindingsById:void 0,affectedBindingControlIds:t.type==="add"||t.type==="update"?t.affectedBindingControlIds:void 0}}function jn({open:t,onOpenChange:s,trigger:n,showTrigger:r=!0,initialMode:o="manage"}){const i=o==="create",{forceClose:c,handleOpenChange:u,isCreateFlowActive:d,preventPassiveDismissDuringCreate:m,resolvedOpen:f,setIsCreateFlowActive:g}=oe.useCreateFlowOverlayState({open:t,onOpenChange:s,initialCreateFlowActive:o==="create",dismissMode:r?"passive":"explicit-only"}),p=a.useDashboardStore(D=>D.dashboard),{setDashboardControlsModel:y}=a.useDashboardActions(),{participants:I}=l.useDashboardStructuralParticipants(a.getDashboardCards(p)),S=Array.from(new Map(I.flatMap(D=>D.fieldChoices.map(R=>{var _;return[R.value,{option:R,target:(_=D.fieldTargetMap)==null?void 0:_[R.value]}]}))).values()),N=Array.from(new Map(I.flatMap(D=>D.metricChoices.map(R=>{var _;return[R.value,{option:R,target:(_=D.metricTargetMap)==null?void 0:_[R.value]}]}))).values()),b=a.collectDashboardControlIds({...p||{},controls:[]}),T=l.buildDashboardStructuralParticipantIdsByControlId(p),j=(D,R,_)=>{y(D,R,ia(_))},C=h.useCallback(()=>{if(i){c();return}g(!1)},[i,c,g]),A=e.jsx(oe.ControlDefinitionListEditor,{scope:"dashboard",controls:p.controls||[],reservedControlIds:b,defaultValues:p.defaultControlValues||{},usageByControlId:l.buildDashboardControlUsageById(p),availableFieldChoices:S,availableMetricChoices:N,structuralParticipants:I,structuralParticipantIdsByControlId:T,initialCreateFlow:o==="create",onCreateFlowActiveChange:g,onCreateFlowComplete:C,onChange:j,emptyMessage:"No dashboard controls yet."}),V=d?"Add dashboard control":"Dashboard Controls",L=e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h4",{className:"text-sm font-medium",children:"Dashboard Controls"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Add shared controls viewers can use across the dashboard. Each card can decide how to respond to the same control."})]}),A]});return r?e.jsxs(a.Popover,{open:f,onOpenChange:u,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:n||e.jsxs(a.Button,{variant:"outline",className:"h-7 px-2",size:"sm",children:[e.jsx(a.SlidersHorizontal,{className:"mr-2 h-4 w-4"}),"Controls"]})}),e.jsx(a.PopoverContent,{className:"w-[620px] max-w-[95vw] space-y-4",align:"end",onEscapeKeyDown:m,onPointerDownOutside:m,children:L})]}):e.jsx(l.Dialog,{open:f,onOpenChange:u,children:e.jsxs(l.DialogContent,{className:"flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",onEscapeKeyDown:m,onPointerDownOutside:m,children:[e.jsxs(l.DialogHeader,{className:d?"space-y-0":void 0,children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:V}),e.jsx(l.DialogDescription,{className:d?"sr-only":"text-[13px]",children:d?"Configure and add a shared dashboard control.":"Add shared controls viewers can use across the dashboard. Each card can decide how to respond to the same control."})]}),e.jsx("div",{className:"min-h-0 overflow-y-auto pr-1",children:A})]})})}const la=["enum","multi_enum","text","number","boolean","date"];function vn({open:t,onOpenChange:s,initialMode:n="manage"}){var L;const r=n==="create",{forceClose:o,handleOpenChange:i,isCreateFlowActive:c,preventPassiveDismissDuringCreate:u,resolvedOpen:d,setIsCreateFlowActive:m}=oe.useCreateFlowOverlayState({open:t,onOpenChange:s,initialCreateFlowActive:n==="create",dismissMode:"explicit-only"}),f=a.useDashboardStore(D=>D.dashboard),g=a.useDashboardStore(D=>D.selectedSheetId),{setDashboardInputs:p}=a.useDashboardActions(),y=(L=f.sheets)==null?void 0:L.find(D=>D.id===g),I=(y==null?void 0:y.kind)==="document"&&!!y.document,S=h.useMemo(()=>I&&(y!=null&&y.document)?l.getDocumentSheetDashboardInputs(f,y.id):[],[f,I,y==null?void 0:y.document,y==null?void 0:y.id]),N=h.useMemo(()=>S.filter(D=>D.kind==="control"),[S]),b=h.useMemo(()=>N.map(D=>D.control),[N]),T=h.useMemo(()=>da(b),[b]),j=h.useMemo(()=>ca(f),[f]),C=h.useCallback(()=>{if(r){o();return}m(!1)},[r,o,m]),A=h.useCallback((D,R,_)=>{!I||!(y!=null&&y.document)||p(ma({allInputs:f.inputs||[],documentSheetId:y.id,currentDocumentInputs:S,nextControls:D,nextDefaultValues:R,change:_}))},[f.inputs,S,I,y,p]);if(!I||!(y!=null&&y.document))return null;const V=c?"Add document control":"Document Controls";return e.jsx(l.Dialog,{open:d,onOpenChange:i,children:e.jsxs(l.DialogContent,{className:"flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",onEscapeKeyDown:u,onPointerDownOutside:u,children:[e.jsxs(l.DialogHeader,{className:c?"space-y-0":void 0,children:[e.jsx(l.DialogTitle,{className:"text-[15px]",children:V}),e.jsx(l.DialogDescription,{className:c?"sr-only":"text-[13px]",children:c?"Configure and add a document-local control input.":"Add document-local control inputs. They are stored on this document sheet and are not dashboard controls."})]}),e.jsx("div",{className:"min-h-0 overflow-y-auto pr-1",children:e.jsx(oe.ControlDefinitionListEditor,{scope:"dashboard",controls:b,reservedControlIds:j,defaultValues:T,usageByControlId:{},availableFieldChoices:[],availableMetricChoices:[],structuralParticipants:[],structuralParticipantIdsByControlId:{},allowedControlTypes:la,initialCreateFlow:n==="create",onCreateFlowActiveChange:m,onCreateFlowComplete:C,onChange:A,emptyMessage:"No document controls yet."})})]})})}function ca(t){return(t.controls||[]).map(s=>s.id)}function da(t){const s={};for(const n of t)n.defaultValue!==void 0&&(s[n.id]=n.defaultValue);return s}function ua(t,s){return s?Object.prototype.hasOwnProperty.call(s,t.id)?{...t,defaultValue:s[t.id]}:t.defaultValue===void 0?t:{...t,defaultValue:void 0}:t.defaultValue===void 0?t:{...t,defaultValue:void 0}}function ma({allInputs:t,documentSheetId:s,currentDocumentInputs:n,nextControls:r,nextDefaultValues:o,change:i}){const c=new Map(r.map(p=>[p.id,ua(p,o)])),u=(i==null?void 0:i.type)==="rename"?{oldId:i.oldId,newId:i.newId}:null,d=new Set,m=[];for(const p of n){if(p.kind!=="control"){m.push(p);continue}const y=c.get(p.control.id)||((u==null?void 0:u.oldId)===p.control.id?c.get(u.newId):void 0);if(!y)continue;d.add(y.id);const I=l.createUniqueDashboardInputVariableNameFromName(y.id,[...t,...m].filter(N=>N.id!==p.id)),S=y.id===I?y:{...y,id:I};m.push({...p,label:S.label,variableName:I,requiredAtExecution:S.requiredAtExecution,control:S})}for(const p of c.values())d.has(p.id)||m.push(l.createDashboardControlInputFromControl({control:p,existingInputs:[...t,...m],sheetId:s}));const f=new Set(n.map(p=>p.id));return[...t.filter(p=>!f.has(p.id)),...m]}function Nn({showFilters:t,onShowFiltersChange:s,pickerContent:n,settingsContent:r,size:o="default",className:i,primaryButtonClassName:c,secondaryButtonClassName:u,pickerContentClassName:d,settingsContentClassName:m}){const f=o==="toolbar",[g,p]=h.useState(!1),y=l.useSurfaceAppearance("interactive");return e.jsxs("div",{className:a.cn("relative inline-flex items-stretch overflow-hidden rounded-control border border-input bg-background",f?"h-8":"h-7",i),children:[e.jsxs(a.Popover,{open:t,onOpenChange:s,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"ghost",size:"xs",className:a.cn("h-full rounded-none border-0 bg-transparent pl-2.5 pr-2 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",c),children:[t?e.jsx(zr,{className:"h-3.5 w-3.5"}):e.jsx(l.Filter,{className:"h-3.5 w-3.5"}),"Filter"]})}),e.jsx(a.PopoverContent,{align:"end",sideOffset:6,className:a.cn("w-auto rounded-card border border-border/60 p-0 shadow-sm",d),style:y.contentStyle,children:n})]}),e.jsxs(a.Popover,{open:g,onOpenChange:p,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsx(a.Button,{variant:"ghost",size:"xs",className:a.cn("h-full w-7 rounded-none border-0 border-l border-border/60 bg-transparent px-0 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",u),"aria-label":"Filter and control actions",children:e.jsx(a.ChevronDown,{className:"h-3.5 w-3.5"})})}),e.jsx(a.PopoverContent,{align:"end",sideOffset:6,className:a.cn("w-auto rounded-card border border-border/60 p-0 shadow-sm",m),style:y.contentStyle,children:r(()=>p(!1))})]})]})}function ha(){oe.useSyncLegacyEditorState();const t=a.useDashboardStore(d=>d.selectedSheetId),s=a.useDashboardStore(d=>d.selectedFrameId),n=a.useDashboardStore(d=>d.dashboard),r=a.useDashboardStore(d=>d.actions.getSelectedFrame),{setSelectedFrameId:o}=a.useDashboardActions(),{setCard:i}=a.useEditorActions(),c=a.useEditorStore(d=>d.card.dataSource);return h.useEffect(()=>{var m,f;let d=r();if(!d){const g=(m=n==null?void 0:n.sheets)==null?void 0:m.find(y=>y.id===t),p=(f=g==null?void 0:g.frames)==null?void 0:f[0];p&&(o(p.id),d=p)}if(d){const g=d.cards.find(p=>p.id===d.activeCardId);g&&i(g)}},[r,t,s,n,o,i]),{hasEntities:!!(c!=null&&c.selectedEntities&&c.selectedEntities.length>0)}}function xa(){const t=a.useDashboardStore(d=>d.dashboard),s=a.useDashboardStore(d=>d.semanticExecutionPayload),n=a.useDashboardStore(d=>d.actions.addFilter),{hasEntities:r}=ha(),{isLoading:o}=l.useFilterableFields(),i=h.useMemo(()=>l.getGlobalDateFilterCoverage(t,s),[t,s]),u=!l.getGlobalDateFilter(t.filters)&&i.hasEligibleCards&&!o;return e.jsxs("div",{className:"flex h-[520px] w-[400px] flex-col",children:[u&&e.jsx("div",{className:"border-b border-border/60 p-2",children:e.jsxs("button",{type:"button",onClick:()=>n(l.createDefaultGlobalDateFilter()),title:`Applies to ${i.eligibleCardCount} of ${i.totalCardCount} date-aware cards`,className:"flex w-full items-start gap-2 rounded-[4px] px-2 py-1.5 text-left outline-none transition-colors hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border",children:[e.jsx(l.CalendarRange,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground"}),e.jsxs("span",{className:"flex min-w-0 flex-col",children:[e.jsx("span",{className:"text-[12px] font-medium text-foreground",children:"Add global date filter"}),e.jsx("span",{className:"text-[11px] leading-[1.4] text-muted-foreground",children:"One date range across all date-aware cards."})]})]})}),!r&&e.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-6 py-8 text-center",children:[e.jsx(l.Database,{className:"mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("h3",{className:"mb-1 text-[13px] font-medium text-foreground",children:"No fields configured"}),e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Configure a data source for this card to enable filtering."})]}),r&&e.jsx("div",{className:"flex flex-1 overflow-hidden",children:e.jsx(l.FilterableFieldsPanel,{context:"filter"})})]})}const Us=!1;function pa({onAddFilter:t,onAddControl:s,onManageControls:n,onDismiss:r}){const o=a.useDashboardStore(u=>u.dashboard.filterLayout),{setFilterLayout:i}=a.useDashboardActions();o!=null&&o.displayMode;const c=(o==null?void 0:o.toolbarWrap)??!1;return o==null||o.showDownloadButton,e.jsxs("div",{className:"w-[300px]",children:[e.jsxs("div",{className:"p-1",children:[e.jsx(Lt,{icon:l.Filter,label:"Add filter",onClick:()=>{t(),r()}}),e.jsx(Lt,{icon:a.SlidersHorizontal,label:"Add control",onClick:()=>{s(),r()}}),e.jsx(Lt,{icon:l.Pencil,label:"Manage controls",onClick:()=>{n(),r()}})]}),e.jsx("div",{className:"border-t border-border/60"}),e.jsxs("div",{className:"space-y-1 p-2",children:[e.jsx("p",{className:"px-1 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:"Display"}),Us,e.jsx(fa,{id:"filter-display-wrap",label:"Wrap to multiple lines",checked:c,onCheckedChange:u=>i({toolbarWrap:u===!0})}),Us]})]})}function Lt({icon:t,label:s,onClick:n}){return e.jsxs("button",{type:"button",onClick:n,className:"flex w-full items-center gap-2 rounded-[4px] px-2 py-1.5 text-left text-[13px] text-foreground transition-colors hover:bg-muted/40",children:[e.jsx(t,{className:"h-3.5 w-3.5 text-muted-foreground"}),s]})}function fa({id:t,label:s,checked:n,onCheckedChange:r}){return e.jsxs("div",{className:"flex items-center gap-2 rounded-[4px] px-1 py-1 transition-colors hover:bg-muted/40",children:[e.jsx(l.Checkbox,{id:t,checked:n,onCheckedChange:r}),e.jsx(a.Label,{htmlFor:t,className:"cursor-pointer text-[12px] font-normal leading-[1.3]",children:s})]})}function ga({size:t,className:s,primaryButtonClassName:n,secondaryButtonClassName:r,pickerContentClassName:o,settingsContentClassName:i}){var V;const[c,u]=h.useState(null),d=a.useDashboardStore(L=>L.dashboard),m=a.useDashboardStore(L=>L.selectedSheetId),f=a.useDashboardStore(L=>L.showFilters),g=l.useAssistantLayoutStore(L=>L.setPanelOpen),p=a.useDashboardStore(L=>L.actions),{setDocumentInspectorTab:y,setShowFilters:I}=p,S=(V=d.sheets)==null?void 0:V.find(L=>L.id===m),N=a.isDocumentSheet(S),b=h.useCallback(L=>{window.setTimeout(()=>{u(L)},0)},[]),T=h.useCallback(L=>{if(N&&m){L&&y(m,"inputs");return}L&&g("dashboard",!1),I(L)},[N,m,y,g,I]),j=h.useCallback(()=>{T(!0)},[T]),C=h.useCallback(()=>{b("create")},[b]),A=h.useCallback(()=>{b("manage")},[b]);return e.jsxs(e.Fragment,{children:[e.jsx(Nn,{showFilters:N?!1:f,onShowFiltersChange:T,pickerContent:e.jsx(xa,{}),settingsContent:L=>e.jsx(pa,{onAddFilter:j,onAddControl:C,onManageControls:A,onDismiss:L}),size:t,className:s,primaryButtonClassName:n,secondaryButtonClassName:r,pickerContentClassName:o,settingsContentClassName:i}),c?N?e.jsx(vn,{open:!0,onOpenChange:L=>{L||u(null)},initialMode:c}):e.jsx(jn,{open:!0,onOpenChange:L=>{L||u(null)},showTrigger:!1,initialMode:c}):null]})}class ut extends Error{constructor(s,n,r){super(s),this.status=n,this.details=r,this.name="BriefingsApiError"}}function wn(t,s){return`${t.replace(/\/$/,"")}${s}`}function ie(t){return encodeURIComponent(t)}function mt(t){const s=new URLSearchParams;Object.entries(t).forEach(([r,o])=>{o!==void 0&&o!==""&&s.set(r,String(o))});const n=s.toString();return n?`?${n}`:""}async function ba(t){if((t.headers.get("content-type")??"").includes("application/json"))return t.json().catch(()=>({}));const n=await t.text().catch(()=>"");return n?{error:n}:{}}function Cn(t){if(!t||typeof t!="object")return null;const s=t;return typeof s.error=="string"?s.error:null}async function le(t,s,n,r){const o=await fetch(wn(t,n),{cache:(r==null?void 0:r.cache)??"no-store",...r,headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`,...(r==null?void 0:r.headers)||{}}}),i=await o.json().catch(()=>({}));if(!o.ok)throw new ut(Cn(i)||"Briefings API request failed",o.status,i);return i}async function Sn(t,s,n,r){const o=await fetch(wn(t,n),{headers:{Authorization:`Bearer ${s}`}});if(!o.ok){const i=await ba(o);throw new ut(Cn(i)||"Briefing artifact request failed",o.status,i)}return{kind:r,content:await o.text(),contentType:o.headers.get("content-type")??"text/plain",filename:ya(o.headers.get("content-disposition"))}}function ya(t){if(!t)return;const s=/filename="([^"]+)"/.exec(t);return s==null?void 0:s[1]}async function kn(t,s,n){return le(t,s,`/v1/briefings${mt({scope:n==null?void 0:n.scope,tenantId:n==null?void 0:n.tenantId,tenantUserId:n==null?void 0:n.tenantUserId,status:n==null?void 0:n.status,page:n==null?void 0:n.page,pageSize:n==null?void 0:n.pageSize,search:n==null?void 0:n.search})}`)}async function ja(t,s,n){return le(t,s,`/v1/briefings/tenant-summaries${mt({status:n==null?void 0:n.status})}`)}async function Gt(t,s,n){return le(t,s,`/v1/briefings/${ie(n)}`)}async function Dn(t,s,n){return le(t,s,"/v1/briefings",{method:"POST",body:JSON.stringify(n)})}async function ht(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}`,{method:"PATCH",body:JSON.stringify(r)})}async function Xt(t,s,n){return ht(t,s,n,{status:"PAUSED"})}async function Jt(t,s,n){return ht(t,s,n,{status:"ACTIVE"})}async function Qt(t,s,n){return le(t,s,`/v1/briefings/${ie(n)}`,{method:"DELETE"})}async function Yt(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs`,{method:"POST",body:JSON.stringify(r)})}async function En(t,s,n){return le(t,s,"/v1/briefings/preview-plan",{method:"POST",body:JSON.stringify({draft:n})})}async function In(t,s,n){return le(t,s,"/v1/briefings/preview-runs",{method:"POST",body:JSON.stringify(n)})}async function An(t,s,n){return(await le(t,s,`/v1/briefings/preview-runs/${ie(n)}`)).previewRun}async function va(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs${mt({status:r==null?void 0:r.status,cursor:r==null?void 0:r.cursor,limit:r==null?void 0:r.limit})}`)}async function Zt(t,s,n,r){return(await le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`)).run}async function Tn(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`,{method:"PATCH",body:JSON.stringify({action:"cancel"})})}async function Ln(t,s,n,r){return le(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}`,{method:"DELETE"})}async function Na(t,s,n,r,o){return Sn(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}/artifact${mt({kind:o})}`,o)}async function wa(t,s,n,r){return Sn(t,s,`/v1/briefings/${ie(n)}/runs/${ie(r)}/evidence`,"evidence")}async function Fn(t,s,n){var o;const r=await le(t,s,"/v1/ai/generate",{method:"POST",body:JSON.stringify({type:"polish-text",context:{text:n}})});if(!r.success||!((o=r.result)!=null&&o.polished))throw new ut(r.error||"Polish returned no result",502,r);return r.result.polished}const Ca={pageSize:"letter",orientation:"portrait",includeFilters:!0,includeTimestamp:!0},Sa={delimiter:",",includeHeaders:!0,useFormattedValues:!0};function Ne(t){return Z(t)}function $s(t){switch(t.type){case"dashboard":return`${t.type}:${t.dashboardId}`;case"dashboard_sheet":case"document_sheet":return`${t.type}:${t.dashboardId}:${t.sheetId}`;case"visual":return`${t.type}:${t.dashboardId}:${t.visualId}`;case"card":return`${t.type}:${t.dashboardId}:${t.cardId}`}}function es(t){var s;if((s=t.title)!=null&&s.trim())return t.title.trim();switch(t.type){case"dashboard":return"Dashboard PDF";case"dashboard_sheet":return"Dashboard sheet PDF";case"document_sheet":return"Paginated report PDF";case"visual":return"Saved visual";case"card":return"Dashboard card"}}function ka(t){var s;switch(t.type){case"dashboard":return((s=t.settings)==null?void 0:s.sheetSelection)==="current"?"Current dashboard sheet":"All dashboard sheets";case"dashboard_sheet":return"Dashboard sheet";case"document_sheet":return"Paginated report";case"visual":return"Saved visual";case"card":return t.format==="csv"?"Card data CSV":"Card render"}}function Rn(t){var s;switch(t.type){case"dashboard":case"dashboard_sheet":case"document_sheet":return["pdf"];case"visual":return["pdf","png"];case"card":{const n=(s=t.settings)==null?void 0:s.cardType;return Vn(n)}}}function Da(t,s){return Rn(t).includes(s)?{...Ne(t),format:s,settings:Bn(t.settings,s)}:Ne(t)}function Ea(t,s){const n={...t.settings,...s};return n.includeFilters===!1&&delete n.filterLine,{...Ne(t),settings:n}}function Pn(t){var c,u;if(t.source.type!=="dashboard")return[];const s=t.source.dashboardId,n=t.dashboard,r=[{key:`dashboard:${s}:all`,kind:"dashboard",title:"Full dashboard PDF",detail:"All dashboard sheets",dashboardId:s,formats:["pdf"],defaultFormat:"pdf"}];if(!n)return r;const o=a.getDashboardSheets(n.sheets),i=o.find(d=>d.id===t.selectedSheetId)??o[0];i&&r.push({key:`dashboard_sheet:${s}:${i.id}`,kind:"dashboard_sheet",title:`${Rt(i)} PDF`,detail:"Current dashboard sheet",dashboardId:s,sheetId:i.id,formats:["pdf"],defaultFormat:"pdf"});for(const d of n.sheets||[])a.isDocumentSheet(d)&&r.push({key:`document_sheet:${s}:${d.id}`,kind:"document_sheet",title:`${Rt(d)} PDF`,detail:"Paginated report sheet",dashboardId:s,sheetId:d.id,formats:["pdf"],defaultFormat:"pdf"});if(i)for(const d of On(i)){if(d.card.type==="text")continue;const m=Vn(d.card.type);r.push({key:`card:${s}:${d.card.id}`,kind:"card",title:d.card.title||"Untitled card",detail:`${Rt(i)} · ${d.card.type}`,dashboardId:s,sheetId:i.id,cardId:d.card.id,cardType:d.card.type,frameId:(c=d.frame)==null?void 0:c.id,cardControlDefinitions:d.card.controls,controlBindings:d.card.controlBindings,tablePreferences:(u=d.card.preferences)==null?void 0:u.tablePrefs,formats:m,defaultFormat:l.getDefaultExportFormat(d.card.type)})}return r}function _t(t){const{option:s}=t,n=t.format??s.defaultFormat,r=Ia({option:s,format:n,runtime:t.runtime});switch(s.kind){case"dashboard":return{type:"dashboard",dashboardId:s.dashboardId,format:"pdf",title:s.title,settings:r};case"dashboard_sheet":return{type:"dashboard_sheet",dashboardId:s.dashboardId,sheetId:Ft(s.sheetId),format:"pdf",title:s.title,settings:r};case"document_sheet":return{type:"document_sheet",dashboardId:s.dashboardId,sheetId:Ft(s.sheetId),format:"pdf",title:s.title,settings:r};case"card":return{type:"card",dashboardId:s.dashboardId,cardId:Ft(s.cardId),format:n,title:s.title,settings:r}}}function _s(t){const s=Pn(t),n=s.find(i=>i.kind==="dashboard_sheet"),o=s.find(i=>i.kind==="dashboard")??n;return o?[_t({option:o,runtime:t.runtime})]:[]}function Ia(t){const s={...Bn(void 0,t.format)},n=t.runtime;return n!=null&&n.theme&&(s.theme=n.theme),t.option.kind==="dashboard"&&(s.sheetSelection="all"),t.option.kind==="dashboard_sheet"&&(s.sheetSelection="current",s.currentSheetId=t.option.sheetId,s.currentSheetName=t.option.title.replace(/\sPDF$/,"")),t.option.kind==="document_sheet"&&(s.currentSheetId=t.option.sheetId,s.currentSheetName=t.option.title.replace(/\sPDF$/,"")),t.option.kind==="card"&&(s.selectedSheetId=t.option.sheetId,s.cardType=t.option.cardType,t.option.cardControlDefinitions&&(s.cardControlDefinitions=Z(t.option.cardControlDefinitions)),t.option.controlBindings&&(s.controlBindings=Z(t.option.controlBindings)),t.option.tablePreferences&&(s.tablePreferences=Z(t.option.tablePreferences))),Aa({settings:s,option:t.option,runtime:n}),s.includeFilters!==!1&&(s.filterLine=Pa(s.filterValues)),s}function Aa(t){const{settings:s,option:n,runtime:r}=t;if(!r)return;if(n.kind==="card"){Ta({settings:s,option:n,runtime:r});return}const o=n.kind==="dashboard"?"all":"current",i=n.kind==="dashboard"?r.selectedSheetId:n.sheetId,c=l.buildDashboardExecutionSnapshot({dashboard:r.dashboard||void 0,filterValues:r.filterValues,selectedSheetId:i,sheetSelection:o,dashboardControlValues:r.controlValues,cardControlValuesMap:r.cardControlValuesMap});s.sheetFilterValues=Z(c.filterValues),s.filterValues=Z(c.filterValues),s.controlValues=Z(c.controlValues),r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions));const u=La({option:n,runtime:r,selectedSheetId:n.kind==="dashboard"&&o==="all"?void 0:i,sheetSelection:o});u&&(s.dashboardInputExecutionSnapshot=Z(u))}function Ta(t){var m,f,g;const{settings:s,option:n,runtime:r}=t,o=n.cardId,i=l.getSheetScopedFilterValues(r.filters,r.filterValues,n.sheetId);if(s.sheetFilterValues=Z(i),!o){s.filterValues=Z(i),s.controlValues=Z(r.controlValues||{}),r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions));return}const c=((m=r.inlineFilterValuesMap)==null?void 0:m[o])||[];c.length>0&&(s.inlineFilterValues=Z(c));const u=l.buildDashboardCardExecutionSnapshot({dashboard:r.dashboard||void 0,cardId:o,interactionStates:r.interactionStates||{},currentDashboardId:(f=r.dashboard)==null?void 0:f.id,semanticExecutionPayload:r.semanticExecutionPayload,filters:r.filters,filterValues:r.filterValues,inlineFilterValuesMap:{...r.inlineFilterValuesMap||{},[o]:c},dashboardControls:r.dashboardControls||r.controlDefinitions,dashboardControlValues:r.controlValues,cardControlValuesMap:r.cardControlValuesMap});u?(s.filterValues=Z(u.queryContext.cardFilterValues),s.controlValues=Z(u.queryContext.controlValues),s.controlDefinitions=Z(u.queryContext.controlDefinitions),s.cardControlDefinitions=Z(u.queryContext.cardControlDefinitions),s.controlBindings=Z(u.queryContext.controlBindings)):(s.filterValues=Z(i),s.controlValues={...r.controlValues||{},...((g=r.cardControlValuesMap)==null?void 0:g[o])||{}},r.controlDefinitions&&(s.controlDefinitions=Z(r.controlDefinitions)));const d=Fa({option:n,runtime:r,filterValues:s.filterValues,inlineFilterValues:c,controlValues:s.controlValues});d&&(s.dashboardInputExecutionSnapshot=Z(d))}function La(t){var u;const{option:s,runtime:n}=t,r=n.dashboard;if(!((u=r==null?void 0:r.inputs)!=null&&u.length))return;const o=new Date().toISOString(),i=Mn();if(s.kind==="document_sheet"&&s.sheetId)return l.buildDashboardInputExecutionSnapshot({dashboard:r,sheetId:s.sheetId,sheetKind:"document",mode:"document",runtimeValues:{dashboardInputValues:n.dashboardInputValues,filterValues:n.filterValues,controlValues:n.controlValues,inlineFilterValuesMap:n.inlineFilterValuesMap,cardControlValuesMap:n.cardControlValuesMap},generatedAt:o,timezone:i}).snapshot;const c=t.sheetSelection==="all"?a.getDashboardSheets(r.sheets).map(d=>d.id):t.selectedSheetId?[t.selectedSheetId]:[];if(c.length!==0)return l.buildDashboardSheetsInputExecutionSnapshot({dashboard:r,sheetIds:c,sheetKind:"dashboard",mode:"dashboard",runtimeValues:{dashboardInputValues:n.dashboardInputValues,filterValues:n.filterValues,controlValues:n.controlValues,inlineFilterValuesMap:n.inlineFilterValuesMap,cardControlValuesMap:n.cardControlValuesMap},generatedAt:o,timezone:i}).snapshot}function Fa(t){var u;const{option:s,runtime:n}=t,r=n.dashboard;if(!((u=r==null?void 0:r.inputs)!=null&&u.length)||!s.cardId)return;const o=Ra(r,s.sheetId,s.cardId),i=t.inlineFilterValues!==void 0?{...n.inlineFilterValuesMap||{},[s.cardId]:t.inlineFilterValues}:n.inlineFilterValuesMap,c=t.filterValues!==void 0?l.applyFilterOverridesToDashboardInputSlots({dashboardInputValues:n.dashboardInputValues,dashboard:r,filterValues:t.filterValues,sheetId:(o==null?void 0:o.sheet.id)||s.sheetId,cardId:s.cardId,sheetKind:"dashboard"}):n.dashboardInputValues;return l.buildDashboardInputExecutionSnapshot({dashboard:r,sheetId:(o==null?void 0:o.sheet.id)||s.sheetId,card:(o==null?void 0:o.card)||null,sheetKind:"dashboard",mode:"visual",runtimeValues:{dashboardInputValues:c,filterValues:t.filterValues??n.filterValues,controlValues:t.controlValues??n.controlValues,inlineFilterValuesMap:i,cardControlValuesMap:n.cardControlValuesMap},generatedAt:new Date().toISOString(),timezone:Mn()}).snapshot}function Ra(t,s,n){const r=t.sheets||[],o=s?r.filter(i=>i.id===s):r;for(const i of o)for(const c of On(i))if(c.card.id===n)return{sheet:i,card:c.card}}function Mn(){return typeof Intl<"u"?Intl.DateTimeFormat().resolvedOptions().timeZone:void 0}function Pa(t){if(!Array.isArray(t))return"";const s=t.filter(n=>!!n&&typeof n=="object"&&typeof n.name=="string");return l.formatFilterLine(s)}function Bn(t,s){return s==="csv"?{...Sa,...t}:{...Ca,...t}}function Vn(t){return t?l.getSupportedExportFormats(t).filter(s=>s!=="png"):["pdf"]}function On(t){const s=[],n=new Set,r=(o,i)=>{!(o!=null&&o.id)||n.has(o.id)||(n.add(o.id),s.push({card:o,frame:i}))};for(const o of t.cards||[])r(o);for(const o of t.frames||[])for(const i of o.cards||[])r(i,o);return s}function Ft(t){if(!t)throw new Error("Briefing attachment option is missing a required id.");return t}function Rt(t){var s;return((s=t.title)==null?void 0:s.trim())||"Untitled sheet"}function Z(t){return typeof structuredClone=="function"?structuredClone(t):JSON.parse(JSON.stringify(t))}const Un=["markdown"],Ma={name:"",description:"",instruction:"",source:{type:"project"},body:{type:"generated_analysis",instruction:""},attachments:[],output:{artifactFormats:[...Un],includeEvidence:!0,includeSql:!0},schedule:{enabled:!1,scheduleExpr:"",timezone:"UTC",status:"ACTIVE"},delivery:{enabled:!1,recipients:[],channels:[],subject:"",message:""},limits:{}};function $n(t){const s=t.trim();return s.length>0?s:void 0}function Ba(t){return{...t,source:{...t.source},body:{...t.body},attachments:t.attachments.map(Ne),output:{...t.output,artifactFormats:[...t.output.artifactFormats]},schedule:{...t.schedule},delivery:{...t.delivery,recipients:t.delivery.recipients.map(s=>({...s})),channels:[...t.delivery.channels],channelConfigs:t.delivery.channelConfigs?{...t.delivery.channelConfigs}:void 0},limits:{...t.limits}}}function Va(t){return t.type==="generated_analysis"?t.instruction:t.type==="custom_message"?t.message:""}function _n(t,s){return t.type==="custom_message"?{type:"custom_message",message:s}:t.type==="none"?{type:"none"}:{type:"generated_analysis",instruction:s}}function ts(t){return _n(t.body,t.instruction.trim())}function zn(t){return{artifactFormats:[...t.artifactFormats],includeEvidence:t.includeEvidence,includeSql:t.includeSql,...t.audience?{audience:t.audience}:{},...t.tone?{tone:t.tone}:{},...t.format?{format:t.format}:{}}}function qn(t){const s={};return t.maxToolCalls!==void 0&&(s.maxToolCalls=t.maxToolCalls),t.maxRows!==void 0&&(s.maxRows=t.maxRows),t.timeoutMs!==void 0&&(s.timeoutMs=t.timeoutMs),Object.keys(s).length>0?s:void 0}function Hn(t,s){if(!t)return;const n=s.reduce((r,o)=>(t[o]!==void 0&&(r[o]=t[o]),r),{});return Object.keys(n).length>0?n:void 0}function Kn(t){return t.recipients.length===0&&t.channels.length===0?null:{recipients:t.recipients.map(s=>({...s})),channels:[...t.channels],channelConfigs:Hn(t.channelConfigs,t.channels)}}function Oa(t){return{artifactFormats:t!=null&&t.artifactFormats&&t.artifactFormats.length>0?[...t.artifactFormats]:[...Un],includeEvidence:(t==null?void 0:t.includeEvidence)??!0,includeSql:(t==null?void 0:t.includeSql)??!0,audience:t==null?void 0:t.audience,tone:t==null?void 0:t.tone,format:t==null?void 0:t.format}}function Ua(t){return t.body.type==="generated_analysis"?t.body.instruction:t.body.type==="custom_message"?t.body.message:""}function $a(t){return{enabled:!0,recipients:(t==null?void 0:t.recipients.map(s=>({...s})))??[],channels:t!=null&&t.channels?[...t.channels]:[],subject:"",message:"",channelConfigs:Hn(t==null?void 0:t.channelConfigs,(t==null?void 0:t.channels)??[])}}function _a(t,s,n){return t===void 0||Number.isInteger(t)&&t>=s&&t<=n}function za(t){const s=t.trim();return s.includes("@")&&s.includes(".")&&!s.includes(" ")}function Pt(t,s,n,r,o){_a(n,r,o)||t.push({field:`limits.${s}`,message:`${s} must be an integer between ${r} and ${o}`})}function Wn(t){return at(Ma,t??{})}function at(t,s){var c,u,d,m;const n=s.instruction??(s.body?Va(s.body):t.instruction),r=_n(s.body?{...s.body}:{...t.body},n),o=(c=s.delivery)!=null&&c.channels?[...s.delivery.channels]:[...t.delivery.channels],i=((u=s.delivery)==null?void 0:u.channelConfigs)??t.delivery.channelConfigs;return{...Ba(t),...s,instruction:n,source:s.source?{...s.source}:{...t.source},body:r,attachments:s.attachments?s.attachments.map(Ne):t.attachments.map(Ne),output:{...t.output,...s.output,artifactFormats:(d=s.output)!=null&&d.artifactFormats?[...s.output.artifactFormats]:[...t.output.artifactFormats]},schedule:{...t.schedule,...s.schedule},delivery:{...t.delivery,...s.delivery,recipients:(m=s.delivery)!=null&&m.recipients?s.delivery.recipients.map(f=>({...f})):t.delivery.recipients.map(f=>({...f})),channels:o,channelConfigs:i},limits:{...t.limits,...s.limits}}}function Ue(t){return{name:t.name,description:t.description??"",instruction:Ua(t),source:{...t.source},body:{...t.body},attachments:t.attachments.map(Ne),output:Oa(t.presentation),schedule:{enabled:!!t.scheduleExpr,scheduleExpr:t.scheduleExpr??"",timezone:t.timezone||"UTC",status:t.status==="PAUSED"||t.status==="DISABLED"?t.status:"ACTIVE"},delivery:$a(t.deliveryConfig),limits:t.limits?{...t.limits}:{}}}function zt(t){return{name:t.name.trim(),description:$n(t.description)??null,status:t.schedule.status,scheduleExpr:t.schedule.enabled?t.schedule.scheduleExpr.trim():null,timezone:t.schedule.timezone.trim()||"UTC",source:{...t.source},body:ts(t),attachments:t.attachments.map(Ne),presentation:zn(t.output),limits:qn(t.limits),deliveryConfig:Kn(t.delivery)}}function Gn(t){return{name:t.name.trim(),description:$n(t.description)??null,status:t.schedule.status,scheduleExpr:t.schedule.enabled?t.schedule.scheduleExpr.trim():null,timezone:t.schedule.timezone.trim()||"UTC",source:{...t.source},body:ts(t),attachments:t.attachments.map(Ne),presentation:zn(t.output),limits:qn(t.limits),deliveryConfig:Kn(t.delivery)}}function qt(t){var r,o,i,c,u;const s=[];t.name.trim()||s.push({field:"name",message:"Name is required"});const n=ts(t);if(n.type!=="none"&&!t.instruction.trim()&&s.push({field:"instruction",message:"Instruction is required"}),n.type==="none"&&t.attachments.length===0&&s.push({field:"body",message:"Add briefing instructions, a custom message, or at least one attachment."}),t.source.type==="dashboard"&&!t.source.dashboardId.trim()&&s.push({field:"source.dashboardId",message:"Dashboard source requires a dashboard id"}),t.output.artifactFormats.length===0&&s.push({field:"output.artifactFormats",message:"Choose at least one output format"}),t.schedule.timezone.trim()||s.push({field:"schedule.timezone",message:"Timezone is required"}),t.schedule.enabled&&!t.schedule.scheduleExpr.trim()&&s.push({field:"schedule.scheduleExpr",message:"Schedule expression is required when scheduling is enabled"}),t.delivery.recipients.length>0||t.delivery.channels.length>0){if((t.delivery.channels.length===0||t.delivery.channels.some(m=>m!=="SLACK"))&&t.delivery.recipients.length===0&&s.push({field:"delivery.recipients",message:"Add at least one recipient or remove delivery channels"}),t.delivery.channels.length===0&&s.push({field:"delivery.channels",message:"Choose at least one delivery channel or remove recipients"}),t.delivery.recipients.forEach((m,f)=>{m.type==="email"&&!za(m.address)&&s.push({field:`delivery.recipients.${f}.address`,message:"Email recipient address is invalid"})}),t.delivery.channels.includes("WEBHOOK")){const m=(r=t.delivery.channelConfigs)==null?void 0:r.WEBHOOK;(i=(o=m==null?void 0:m.webhookConfig)==null?void 0:o.url)!=null&&i.trim()||s.push({field:"delivery.channelConfigs.WEBHOOK.webhookConfig.url",message:"Webhook URL is required for webhook delivery"})}if(t.delivery.channels.includes("SLACK")){const m=(u=(c=t.delivery.channelConfigs)==null?void 0:c.SLACK)==null?void 0:u.slackConfig;((m==null?void 0:m.destination.type)!=="channel"||!m.destination.channelId.trim())&&s.push({field:"delivery.channelConfigs.SLACK.slackConfig.destination.channelId",message:"Choose a Slack channel"})}}return Pt(s,"maxToolCalls",t.limits.maxToolCalls,1,100),Pt(s,"maxRows",t.limits.maxRows,1,1e5),Pt(s,"timeoutMs",t.limits.timeoutMs,1e3,30*6e4),{valid:s.length===0,issues:s}}const Qe="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function qa({attachment:t,open:s,onOpenChange:n,onChange:r,children:o}){const i=Rn(t),c=t.settings||{},u=t.format==="csv",d=m=>{r(Ea(t,m))};return e.jsxs(a.Popover,{open:s,onOpenChange:n,children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:o}),e.jsxs(a.PopoverContent,{align:"start",className:"z-[60] w-[320px] space-y-3 p-3",onOpenAutoFocus:m=>m.preventDefault(),children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:a.cn(Qe,"mb-1"),children:"Attachment"}),e.jsx("div",{className:"truncate text-[12px] font-medium text-foreground",children:es(t)})]}),i.length>1?e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Format"}),e.jsxs(a.Select,{value:t.format,onValueChange:m=>r(Da(t,m)),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsx(a.SelectContent,{children:i.map(m=>e.jsx(a.SelectItem,{value:m,children:m.toUpperCase()},m))})]})]}):null,u?e.jsx(Ka,{settings:c,onChange:d}):e.jsx(Ha,{settings:c,onChange:d})]})]})}function Ha({settings:t,onChange:s}){return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Page size"}),e.jsxs(a.Select,{value:t.pageSize||"letter",onValueChange:n=>s({pageSize:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"letter",children:"Letter"}),e.jsx(a.SelectItem,{value:"legal",children:"Legal"}),e.jsx(a.SelectItem,{value:"a4",children:"A4"}),e.jsx(a.SelectItem,{value:"a3",children:"A3"}),e.jsx(a.SelectItem,{value:"tabloid",children:"Tabloid"})]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Orientation"}),e.jsxs(a.Select,{value:t.orientation||"portrait",onValueChange:n=>s({orientation:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:"portrait",children:"Portrait"}),e.jsx(a.SelectItem,{value:"landscape",children:"Landscape"})]})]})]})]}),e.jsxs("div",{className:"space-y-1.5 border-t border-border/60 pt-2.5",children:[e.jsx(ot,{label:"Include filters",checked:t.includeFilters??!0,onChange:n=>s({includeFilters:n})}),e.jsx(ot,{label:"Include timestamp and footer",checked:t.includeTimestamp??!0,onChange:n=>s({includeTimestamp:n})})]})]})}function Ka({settings:t,onChange:s}){return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:a.cn(Qe,"mb-1 block"),children:"Delimiter"}),e.jsxs(a.Select,{value:t.delimiter||",",onValueChange:n=>s({delimiter:n}),children:[e.jsx(a.SelectTrigger,{size:"sm",className:"h-8 text-[12.5px]",children:e.jsx(a.SelectValue,{})}),e.jsxs(a.SelectContent,{children:[e.jsx(a.SelectItem,{value:",",children:"Comma"}),e.jsx(a.SelectItem,{value:";",children:"Semicolon"}),e.jsx(a.SelectItem,{value:" ",children:"Tab"})]})]})]}),e.jsxs("div",{className:"space-y-1.5 border-t border-border/60 pt-2.5",children:[e.jsx(ot,{label:"Include headers",checked:t.includeHeaders??!0,onChange:n=>s({includeHeaders:n})}),e.jsx(ot,{label:"Use formatted values",checked:t.useFormattedValues??!0,onChange:n=>s({useFormattedValues:n})})]})]})}function ot({label:t,checked:s,onChange:n}){return e.jsxs("label",{className:"flex items-center gap-2 text-[12px] text-foreground/80",children:[e.jsx(l.Checkbox,{checked:s,onCheckedChange:r=>n(r===!0)}),e.jsx("span",{children:t})]})}function Wa({attachments:t,onChange:s,onAdd:n,disabled:r}){const o=t.length===0;return e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsxs("button",{type:"button",disabled:r,onClick:n,"aria-label":o?"Attach files":"Add another attachment",className:"inline-flex h-6 items-center gap-1 rounded-control px-1.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-50",children:[e.jsx(l.Paperclip,{className:"h-3 w-3"}),o?"Attach":null]}),t.map((i,c)=>e.jsx(Ga,{attachment:i,disabled:r,onUpdate:u=>{const d=[...t];d[c]=u,s(d)},onRemove:()=>s(t.filter((u,d)=>d!==c))},`${i.type}:${c}:${es(i)}`)),o?null:e.jsxs("button",{type:"button",disabled:r,onClick:n,className:"inline-flex h-6 items-center gap-1 rounded-control px-1.5 text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground disabled:opacity-50",children:[e.jsx(l.Plus,{className:"h-3 w-3"}),"Add"]})]})}function Ga({attachment:t,disabled:s,onUpdate:n,onRemove:r}){const[o,i]=h.useState(!1),c=es(t),u=ka(t),d=t.format.toUpperCase();return e.jsxs("span",{className:a.cn("group inline-flex h-6 items-center gap-1 rounded-control border border-border bg-background pl-1.5 pr-0.5 text-[11px] text-foreground/80",o&&"border-ring "),title:u?`${c} · ${u}`:c,children:[e.jsx(qa,{attachment:t,open:o,onOpenChange:i,onChange:n,children:e.jsxs("button",{type:"button",disabled:s,className:"inline-flex max-w-[180px] items-center gap-1 disabled:opacity-50",children:[e.jsx(Xa,{format:t.format,className:"h-3 w-3 shrink-0 text-muted-foreground/70"}),e.jsx("span",{className:"truncate font-medium text-foreground",children:c}),e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.04em] text-muted-foreground/70",children:d})]})}),e.jsx("button",{type:"button",disabled:s,onClick:r,className:"inline-flex h-4 w-4 items-center justify-center rounded-control text-muted-foreground/70 hover:bg-muted hover:text-foreground/80 disabled:opacity-50","aria-label":`Remove ${c}`,children:e.jsx(a.X,{className:"h-2.5 w-2.5"})})]})}function Xa({format:t,className:s}){const n=t==="csv"?l.FileSpreadsheet:l.FileText;return e.jsx(n,{className:a.cn(s)})}const Ja="text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground";function Qa({open:t,onOpenChange:s,source:n,dashboard:r,selectedSheetId:o,runtime:i,selectedAttachments:c,onSubmit:u}){const d=h.useMemo(()=>Pn({source:n,dashboard:r,selectedSheetId:o}),[n,r,o]),[m,f]=h.useState([]);h.useEffect(()=>{if(!t)return;const A=[];for(const V of c){const L=$s(V),D=d.find(R=>R.formats.some(_=>{const M=_t({option:R,format:_,runtime:i});return $s(M)===L}));D&&A.push({optionKey:D.key,format:V.format??D.defaultFormat})}f(A)},[t,d,c,i]);const g=h.useMemo(()=>new Set(m.map(A=>A.optionKey)),[m]),p=h.useMemo(()=>{const A={};for(const V of m)A[V.optionKey]=V.format;return A},[m]),y=(A,V)=>{f(L=>L.some(R=>R.optionKey===A)?L.filter(R=>R.optionKey!==A):[...L,{optionKey:A,format:V}])},I=(A,V)=>{f(L=>L.map(D=>D.optionKey===A?{...D,format:V}:D))},S=()=>{const A=[];for(const V of m){const L=d.find(D=>D.key===V.optionKey);L&&A.push(_t({option:L,format:V.format,runtime:i}))}u(A),s(!1)},N=()=>s(!1),b=h.useMemo(()=>d.filter(A=>A.kind==="dashboard"||A.kind==="dashboard_sheet"),[d]),T=h.useMemo(()=>d.filter(A=>A.kind==="document_sheet"),[d]),j=h.useMemo(()=>d.filter(A=>A.kind==="card"),[d]),C=m.length;return e.jsx(l.Dialog,{open:t,onOpenChange:s,children:e.jsxs(l.DialogContent,{className:"flex max-h-[80vh] w-[min(560px,calc(100vw-32px))] max-w-none flex-col gap-0 rounded-card p-0",showCloseButton:!0,children:[e.jsxs(l.DialogHeader,{className:"border-b border-border px-4 py-3 text-left",children:[e.jsx(l.DialogTitle,{className:"text-[14px] font-semibold leading-5",children:"Add attachments"}),e.jsx(l.DialogDescription,{className:"text-[12px] text-muted-foreground",children:"Choose what gets sent with this briefing."})]}),e.jsx("div",{className:"flex-1 overflow-y-auto px-4 py-4",children:n.type!=="dashboard"?e.jsx("div",{className:"rounded-card border border-dashed border-border px-3 py-3 text-[12px] leading-[1.55] text-muted-foreground",children:"Attachments are available when authoring from a dashboard."}):e.jsxs("div",{className:"space-y-4",children:[e.jsx(Mt,{label:"Dashboard",options:b,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I}),e.jsx(Mt,{label:"Paginated reports",options:T,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I,emptyText:"No paginated report sheets are available."}),e.jsx(Mt,{label:"Current sheet cards",options:j,selectedOptionKeys:g,formatByOptionKey:p,onToggle:y,onFormatChange:I,emptyText:"No exportable cards are available on the current dashboard sheet."})]})}),e.jsxs(l.DialogFooter,{className:"flex flex-row items-center justify-between gap-2 border-t border-border px-4 py-3 sm:justify-between",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:C===0?"Nothing selected":`${C} selected`}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a.Button,{type:"button",variant:"outline",size:"xs",onClick:N,children:"Cancel"}),e.jsx(a.Button,{type:"button",size:"xs",onClick:S,disabled:n.type!=="dashboard",children:C>0?`Add ${C} ${C===1?"attachment":"attachments"}`:"Done"})]})]})]})})}function Mt({label:t,options:s,selectedOptionKeys:n,formatByOptionKey:r,onToggle:o,onFormatChange:i,emptyText:c}){return e.jsxs("section",{children:[e.jsx("div",{className:a.cn(Ja,"mb-2"),children:t}),s.length===0?e.jsx("div",{className:"rounded-card border border-dashed border-border px-3 py-2 text-[12px] text-muted-foreground",children:c||"Nothing available."}):e.jsx("div",{className:"divide-y divide-border rounded-card border border-border",children:s.map(u=>{const d=n.has(u.key),m=r[u.key]??u.defaultFormat;return e.jsxs("div",{className:a.cn("flex w-full items-start gap-2 px-3 py-2 transition-colors hover:bg-muted "),children:[e.jsxs("button",{type:"button",role:"checkbox","aria-checked":d,onClick:()=>o(u.key,u.defaultFormat),className:"flex min-w-0 flex-1 items-start gap-2 text-left",children:[e.jsx(Ya,{selected:d}),e.jsx(Za,{kind:u.kind,format:m,cardType:u.cardType,className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground/70"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate text-[12px] font-medium text-foreground",children:u.title}),e.jsx("span",{className:"mt-0.5 block truncate text-[11px] text-muted-foreground",children:u.detail})]})]}),e.jsx("div",{className:"shrink-0",children:u.formats.length>1?e.jsxs(a.Select,{value:m,onValueChange:f=>i(u.key,f),children:[e.jsx(a.SelectTrigger,{size:"xs",className:"h-6 w-[72px]","aria-label":`Choose format for ${u.title}`,onClick:f=>f.stopPropagation(),children:e.jsx(a.SelectValue,{})}),e.jsx(a.SelectContent,{children:u.formats.map(f=>e.jsx(a.SelectItem,{value:f,children:f.toUpperCase()},f))})]}):e.jsx("span",{className:"inline-flex h-6 items-center text-[10px] uppercase tracking-[0.08em] text-muted-foreground/70",children:m})})]},u.key)})})]})}function Ya({selected:t}){return e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-0.5 flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-control border transition-colors",t?"border-primary bg-primary":"border-border "),children:t?e.jsx(a.Check,{className:"h-2.5 w-2.5 text-primary-foreground",strokeWidth:3}):null})}function Za({kind:t,format:s,cardType:n,className:r}){const o=s==="csv"?l.FileSpreadsheet:t==="dashboard"?l.LayoutDashboard:t==="card"?n==="table"||n==="aggregateTable"||n==="pivotTable"||n==="detailTable"?oe.Rows3:a.ChartColumn:l.FileText;return e.jsx(o,{className:r})}const eo=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,to=250;function Ge(t){switch(t.type){case"email":return`email:${t.address.toLowerCase()}`;case"user":return`user:${t.userId}`;case"tenant_user":return`tenant_user:${t.tenantUserId}`;case"group":return`group:${t.groupId}`}}function so(t){return t.type==="user"?t.userId:t.type==="tenant_user"?t.tenantUserId:null}function no(t){return t.type==="group"?t.groupId:null}function Xe(t){return(t==null?void 0:t.trim().toLowerCase())||null}function zs(t){return{kind:"user",id:t.id,name:t.name,email:t.email,type:t.type}}function qs(t){return{kind:"group",id:t.id,name:t.name,type:t.type,memberCount:t.memberCount,description:t.description}}function Hs({value:t,onChange:s,className:n,disabled:r=!1,prefix:o,placeholder:i}){const c=h.useRef(null),[u,d]=h.useState(!1),[m,f]=h.useState(""),[g,p]=h.useState(0),[y,I]=h.useState(()=>new Map),[S,N]=h.useState(()=>new Map),[b,T]=h.useState("people"),j=l.useDebounce(m,to),{currentUser:C}=l.useCurrentUserInfo(),A=(C==null?void 0:C.type)==="tenant",{users:V,isLoading:L}=l.useUnifiedUsers({search:j,active:!0,type:A?"tenant":"all",tenantId:A?C.tenantId:void 0,limit:25}),{groups:D,isLoading:R}=l.useGroups({search:j,type:A?"TENANT_GROUP":"all",tenantId:A?C.tenantId:void 0,limit:25}),_=h.useMemo(()=>new Set(t.map(Ge)),[t]),M=h.useMemo(()=>new Set(t.map(so).filter(k=>!!k)),[t]),z=h.useMemo(()=>new Set(t.map(no).filter(k=>!!k)),[t]),U=h.useMemo(()=>{const k=new Map(y);return V.forEach(P=>{k.set(P.id,zs(P))}),C!=null&&C.id&&k.set(C.id,{kind:"user",id:C.id,name:C.name||C.email||"User",email:C.email||"",type:C.type}),k},[y,V,C]),B=h.useMemo(()=>{const k=new Set;return t.forEach(P=>{var xe;if(P.type==="email"){const Oe=Xe(P.address);Oe&&k.add(Oe);return}if(P.type==="group")return;const se=P.type==="tenant_user"?P.tenantUserId:P.userId,ce=Xe((xe=U.get(se))==null?void 0:xe.email);ce&&k.add(ce)}),k},[U,t]),W=h.useMemo(()=>{const k=new Map(S);return D.forEach(P=>{k.set(P.id,qs(P))}),k},[S,D]),E=h.useMemo(()=>V.filter(k=>{if(M.has(k.id))return!1;const P=Xe(k.email);return P&&B.has(P)?!1:A?k.type==="tenant"&&k.tenantId===(C==null?void 0:C.tenantId):!0}).map(zs),[V,M,B,A,C==null?void 0:C.tenantId]),me=h.useMemo(()=>E.filter(k=>k.type==="organization"),[E]),w=h.useMemo(()=>E.filter(k=>k.type==="tenant"),[E]),q=h.useMemo(()=>D.filter(k=>z.has(k.id)?!1:(C==null?void 0:C.type)==="tenant"?k.type==="TENANT_GROUP"&&k.tenantId===C.tenantId:!0).map(qs),[D,z,C==null?void 0:C.type,C==null?void 0:C.tenantId]),te=h.useMemo(()=>A?[{key:"people",label:"People",count:w.length},{key:"groups",label:"Groups",count:q.length}]:[{key:"people",label:"People",count:me.length},{key:"tenant_users",label:"Tenant users",count:w.length},{key:"groups",label:"Groups",count:q.length}],[q.length,A,me.length,w.length]),Q=h.useMemo(()=>b==="groups"?[]:b==="tenant_users"||A?w:me,[b,A,me,w]),be=h.useMemo(()=>b==="groups"?q:[],[b,q]),pe=h.useMemo(()=>[...Q,...be],[Q,be]),ye=pe.length===0?0:Math.min(g,pe.length-1),O=m.trim(),Le=eo.test(O),we=Xe(O),je=we?B.has(we):!1,Fe=L||R,H=k=>{_.has(Ge(k))||(s([...t,k]),f(""),p(0))},fe=k=>{s(t.filter(P=>Ge(P)!==k))},Ae=()=>{!Le||je||H({type:"email",address:O})},$=k=>{const P=Xe(k.email);P&&B.has(P)||(I(se=>{const ce=new Map(se);return ce.set(k.id,k),ce}),H(k.type==="tenant"?{type:"tenant_user",tenantUserId:k.id}:{type:"user",userId:k.id}))},Y=k=>{N(P=>{const se=new Map(P);return se.set(k.id,k),se}),H({type:"group",groupId:k.id})},_e=k=>{if(k.key==="Enter"){if(k.preventDefault(),Le&&!je){Ae();return}const P=pe[ye];if((P==null?void 0:P.kind)==="user"){$(P);return}if((P==null?void 0:P.kind)==="group"){Y(P);return}}else if(k.key==="ArrowDown")k.preventDefault(),p(P=>Math.min(P+1,Math.max(pe.length-1,0)));else if(k.key==="ArrowUp")k.preventDefault(),p(P=>Math.max(P-1,0));else if(k.key==="Escape")d(!1);else if(k.key==="Backspace"&&m.length===0){const P=t[t.length-1];P&&fe(Ge(P))}},as=t.map(k=>{const P=Ge(k);if(k.type==="email")return{key:P,label:k.name||k.address,icon:e.jsx(l.AtSign,{className:"h-3 w-3"}),onRemove:()=>fe(P)};if(k.type==="group"){const xe=W.get(k.groupId);return{key:P,label:(xe==null?void 0:xe.name)||"Group",icon:e.jsx(Wt,{className:"h-3 w-3"}),onRemove:()=>fe(P)}}const se=k.type==="tenant_user"?k.tenantUserId:k.userId,ce=U.get(se);return{key:P,label:(ce==null?void 0:ce.name)||(ce==null?void 0:ce.email)||"User",icon:e.jsx(l.User,{className:"h-3 w-3"}),onRemove:()=>fe(P)}});return e.jsx("div",{className:a.cn("relative",n),children:e.jsxs(a.Popover,{open:u&&!r,onOpenChange:d,children:[e.jsx(a.Anchor2,{asChild:!0,children:e.jsxs("div",{className:a.cn("flex min-h-9 cursor-text flex-wrap items-center gap-1.5 rounded-control border bg-background px-2 py-1.5 transition-colors",u?"border-ring ring-2 ring-ring/10":"border-border hover:border-border",r&&"cursor-not-allowed opacity-60"),onClick:()=>{var k;r||((k=c.current)==null||k.focus(),d(!0))},children:[o?e.jsx("span",{className:"inline-flex shrink-0 items-center text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:o}):null,as.map(k=>e.jsx(ro,{icon:k.icon,label:k.label,onRemove:k.onRemove},k.key)),e.jsx("input",{ref:c,className:"h-6 min-w-[160px] flex-1 bg-transparent text-[12px] text-foreground outline-none placeholder:text-muted-foreground/70 disabled:cursor-not-allowed",value:m,disabled:r,placeholder:i??(t.length>0?"Add more...":"Add people, emails, or groups"),onChange:k=>{f(k.target.value),p(0),d(!0)},onFocus:()=>d(!0),onKeyDown:_e})]})}),e.jsx(a.Content2,{align:"start",sideOffset:8,onOpenAutoFocus:k=>k.preventDefault(),className:a.cn("z-[60] w-[var(--radix-popover-trigger-width)] min-w-[360px] rounded-card border border-border bg-background p-0 text-foreground shadow-md outline-none","max-h-[min(320px,var(--radix-popover-content-available-height))] overflow-y-auto"),children:e.jsx(ao,{activeIndex:ye,activeFilter:b,emailAlreadyAdded:je,filters:te,groupSuggestions:be,loading:Fe,onAddEmail:Ae,onFilterChange:k=>{T(k),p(0)},onGroupClick:Y,onUserClick:$,orderedSuggestions:pe,query:O,queryIsEmail:Le,userSuggestions:Q,viewerType:C==null?void 0:C.type})})]})})}function ro({icon:t,label:s,onRemove:n}){return e.jsxs("span",{className:"inline-flex h-6 max-w-full items-center gap-1.5 rounded-control border border-border bg-muted pl-1.5 pr-1 text-[12px]",children:[e.jsx("span",{className:"shrink-0 text-muted-foreground",children:t}),e.jsx("span",{className:"min-w-0 truncate text-foreground",children:s}),e.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),n()},className:"rounded-control p-0.5 text-muted-foreground hover:bg-muted hover:text-foreground","aria-label":`Remove ${s}`,children:e.jsx(a.X,{className:"h-2.5 w-2.5"})})]})}function ao({activeIndex:t,activeFilter:s,emailAlreadyAdded:n,filters:r,groupSuggestions:o,loading:i,onAddEmail:c,onFilterChange:u,onGroupClick:d,onUserClick:m,orderedSuggestions:f,query:g,queryIsEmail:p,userSuggestions:y,viewerType:I}){const S=!i&&f.length===0&&!(p&&!n);return e.jsxs("div",{className:"py-1 text-[13px]",children:[e.jsx("div",{className:"flex items-center gap-1 border-b border-border/60 px-2 pb-1",children:r.map(N=>e.jsxs("button",{type:"button",onClick:()=>u(N.key),className:a.cn("inline-flex h-7 items-center gap-1 rounded-control px-2 text-[12px] transition-colors",s===N.key?"bg-primary text-primary-foreground":"text-muted-foreground hover:bg-muted hover:text-foreground"),children:[e.jsx("span",{children:N.label}),e.jsx("span",{className:a.cn("tabular-nums",s===N.key?"text-primary-foreground/70 ":"text-muted-foreground/70"),children:N.count})]},N.key))}),i?e.jsxs("div",{className:"flex items-center gap-2 px-2.5 py-2 text-[12px] text-muted-foreground",children:[e.jsx(a.LoaderCircle,{className:"h-3 w-3 animate-spin"}),"Searching"]}):null,y.length>0?e.jsx(Ks,{heading:"People",children:y.map(N=>{var T;const b=f.indexOf(N);return e.jsx(Ws,{active:b===t,avatar:e.jsx("div",{className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-medium text-foreground/80",children:(T=(N.name||N.email||"?")[0])==null?void 0:T.toUpperCase()}),detail:N.name?N.email:void 0,tag:N.type==="organization"?"Org user":"Tenant user",viewerType:I,title:N.name||N.email,onClick:()=>m(N)},N.id)})}):null,o.length>0?e.jsx(Ks,{heading:"Groups",children:o.map(N=>{const b=f.indexOf(N);return e.jsx(Ws,{active:b===t,avatar:e.jsx("div",{className:"flex h-6 w-6 shrink-0 items-center justify-center rounded-control border border-border bg-muted text-muted-foreground",children:e.jsx(Wt,{className:"h-3 w-3"})}),detail:N.memberCount!==void 0?`${N.memberCount} member${N.memberCount===1?"":"s"}`:N.description??void 0,tag:N.type==="ORG_GROUP"?"Org group":"Tenant group",viewerType:I,title:N.name,onClick:()=>d(N)},N.id)})}):null,p&&!n?e.jsx("div",{className:"border-t border-border px-1.5 py-1.5",children:e.jsxs("button",{type:"button",onClick:c,className:"flex w-full items-center gap-2 rounded-control px-2 py-1.5 text-left hover:bg-muted",children:[e.jsx(pn,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"text-[13px] text-foreground",children:["Send to ",e.jsx("span",{className:"font-medium",children:g})]}),e.jsx("div",{className:"text-[11px] text-muted-foreground",children:"Add as external email"})]}),e.jsx("span",{className:"ml-auto shrink-0 rounded-control border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground",children:"Enter"})]})}):null,S?e.jsx("div",{className:"px-2.5 py-6 text-center text-[12px] text-muted-foreground",children:g?"No people or groups match. Enter a valid email to add an external recipient.":"Pick a category above or type to search people, groups, or external emails."}):null]})}function Ks({heading:t,children:s}){return e.jsxs("div",{className:"px-1.5 pb-1",children:[e.jsx("div",{className:"px-1.5 pb-0.5 pt-1.5 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:t}),s]})}function Ws({active:t,avatar:s,detail:n,onClick:r,tag:o,title:i,viewerType:c}){return e.jsxs("button",{type:"button",onClick:r,className:a.cn("flex w-full items-center gap-2 rounded-control px-2 py-1.5 text-left",t?"bg-muted ":"hover:bg-muted "),children:[s,e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate text-[13px] text-foreground",children:i}),n?e.jsx("span",{className:"block truncate text-[11px] text-muted-foreground",children:n}):null]}),c==="organization"?e.jsx("span",{className:"shrink-0 rounded-control border border-border bg-background px-1.5 py-0.5 text-[10px] text-muted-foreground",children:o}):null]})}function it(t){return t==="SUCCESS"||t==="FAILED"}function lt(t){return t==="QUEUED"||t==="RUNNING"}function Ht({apiServiceUrl:t,token:s,intervalMs:n,timeoutMs:r,fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d}){const[m,f]=h.useState(null),[g,p]=h.useState("idle"),y=h.useRef(null),I=h.useRef({fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d});h.useEffect(()=>{I.current={fetchRun:o,onRun:i,onTerminalRun:c,onError:u,onTimeout:d}},[o,u,i,c,d]);const S=h.useCallback(()=>{f(null),p("idle")},[]),N=h.useCallback(()=>{y.current=null},[]),b=h.useCallback(j=>{var C,A;if(I.current.onRun(j),it(j.status)){y.current=j.id,f(null),p("terminal"),(A=(C=I.current).onTerminalRun)==null||A.call(C,j);return}if(lt(j.status)){y.current=null,f(j.id),p("polling");return}f(null),p("idle")},[]),T=h.useCallback(j=>{y.current!==j&&(f(j),p("polling"))},[]);return h.useEffect(()=>{if(!m||!t||!s)return;if(y.current===m){f(null),p("terminal");return}let j=!1,C=!1,A=null;const V=Date.now(),L=async()=>{var D,R,_,M,z,U;if(!(j||C)){if(Date.now()-V>r){f(B=>B===m?null:B),p("timed_out"),(R=(D=I.current).onTimeout)==null||R.call(D,m);return}C=!0;try{const B=await I.current.fetchRun({apiServiceUrl:t,token:s,runId:m});if(j)return;if(I.current.onRun(B),it(B.status)){y.current=B.id,f(W=>W===B.id?null:W),p("terminal"),(M=(_=I.current).onTerminalRun)==null||M.call(_,B);return}if(!lt(B.status)){f(W=>W===B.id?null:W),p("idle");return}A=window.setTimeout(L,n)}catch(B){j||(p("error"),(U=(z=I.current).onError)==null||U.call(z,B))}finally{C=!1}}};return p("polling"),L(),()=>{j=!0,A&&window.clearTimeout(A)}},[m,t,n,r,s]),{activeRunId:m,isPolling:m!==null&&g==="polling",resetTerminalRun:N,startRun:b,startRunId:T,status:g,stop:S}}function Gs({label:t,description:s,checked:n,onSelect:r,name:o}){return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2.5",children:[e.jsx("input",{type:"radio",name:o,checked:n,onChange:r,className:"sr-only"}),e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-0.5 inline-flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-full border",n?"border-primary":"border-border"),children:n?e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-primary"}):null}),e.jsxs("span",{className:"min-w-0",children:[e.jsx("span",{className:"block text-[13px] text-foreground",children:t}),e.jsx("span",{className:"mt-0.5 block text-[11px] text-muted-foreground",children:s})]})]})}function oo({includeEvidence:t,includeSql:s,includeHtml:n,onChange:r}){const o=[t,s,n].filter(Boolean).length;return e.jsxs(a.Popover,{children:[e.jsx(a.PopoverTrigger,{asChild:!0,children:e.jsxs("button",{type:"button",className:"inline-flex h-7 items-center gap-1.5 rounded-control px-2 text-[12px] text-muted-foreground hover:bg-muted hover:text-foreground","aria-label":"Output options",children:[e.jsx(l.Settings2,{className:"h-3 w-3"}),"Output options",e.jsxs("span",{className:"font-mono text-[11px] tabular-nums text-muted-foreground",children:["· ",o,"/3"]}),e.jsx(a.ChevronDown,{className:"h-3 w-3"})]})}),e.jsxs(a.PopoverContent,{align:"end",sideOffset:4,className:"z-[60] w-[320px] rounded-card border-border bg-popover p-0 text-popover-foreground",children:[e.jsxs("div",{className:"border-b border-border/60 px-3 py-2",children:[e.jsx("div",{className:"text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground",children:"Output options"}),e.jsx("p",{className:"mt-0.5 text-[11px] leading-[1.5] text-muted-foreground",children:"Choose what gets included in the rendered briefing."})]}),e.jsxs("div",{className:"space-y-2.5 px-3 py-2.5",children:[e.jsx(Bt,{label:"Include evidence links",description:"Cite the queries and data behind each finding.",checked:t,onChange:i=>r("evidence",i)}),e.jsx(Bt,{label:"Include SQL in evidence",description:"Show the SQL the briefing ran. Useful for debugging or for a technical audience.",checked:s,onChange:i=>r("sql",i)}),e.jsx(Bt,{label:"Generate rich HTML report",description:"Send a styled HTML version alongside the markdown body.",checked:n,onChange:i=>r("html",i)})]})]})]})}function Bt({label:t,description:s,checked:n,onChange:r}){return e.jsxs("label",{className:"flex cursor-pointer items-start gap-2.5",children:[e.jsx("input",{type:"checkbox",checked:n,onChange:o=>r(o.target.checked),className:"sr-only"}),e.jsx("span",{"aria-hidden":!0,className:a.cn("mt-[2px] flex h-3.5 w-3.5 shrink-0 items-center justify-center rounded-control border",n?"border-primary bg-primary":"border-border"),children:n?e.jsx(a.Check,{className:"h-2 w-2 text-primary-foreground",strokeWidth:3.5}):null}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-[12px] font-medium text-foreground",children:t}),e.jsx("p",{className:"mt-0.5 text-[11px] leading-[1.5] text-muted-foreground",children:s})]})]})}const Kt=`Tell me what changed in the business and what is driving it.
|
|
57
57
|
|
|
58
58
|
Watch:
|
|
59
59
|
- Top-line movement versus the previous period
|