@bikdotai/bik-component-library 0.0.850-beta.3 → 0.0.850-beta.4

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),n=require("react"),Q=require("../TablePagination/TablePagination.js"),U=require("../zeroState/ZeroState.js"),m=require("./AgentListing.styled.js"),W=require("./AgentListingFilters.js"),X=require("./AgentListingHeader.js"),Y=require("./AgentTable.js"),ee=require("./AgentTableShimmer.js"),te=require("./DeleteAgentModal.js"),ne=require("../dropdown/utils.js"),P=({config:f,onSearchChange:A,onSearchSubmit:r,onFilterChange:g,onSortChange:c,onNewAgent:C,onBrowseTemplates:u,onRunAgent:p,onEditAgent:S,onDeleteAgent:l,onRowClick:d,...q})=>{const[s,h]=n.useState(null),[y,k]=n.useState(!1),{agents:j,isLoading:w,triggerCountsLoading:L,searchValue:T,searchPlaceholder:R="Search",filterOptions:z,filterPlaceholder:D="Filters",sortOptions:v,selectedSort:F,title:O="AI Agents",headerActions:B,pagination:i,emptyState:b,debugLog:x}=f,E=!w&&j.length===0,t=n.useCallback((e,...o)=>{x&&console.log(`[AgentListing] ${e}`,...o)},[x]),I=n.useCallback(e=>{t("onSearchChange",e),A(e)},[t,A]),M=n.useCallback(e=>{t("onSearchSubmit",e),r?.(e)},[t,r]),H=n.useCallback(e=>{t("onFilterChange",e),g?.(e)},[t,g]),V=n.useCallback(e=>{t("onSortChange",e),c?.(e)},[t,c]),N=n.useCallback(()=>{t("onNewAgent"),C()},[t,C]),Z=n.useCallback(()=>{t("onBrowseTemplates"),u?.()},[t,u]),_=n.useCallback(e=>{t("onRunAgent",e.id),p(e)},[t,p]),$=n.useCallback(e=>{t("onEditAgent",e.id),S(e)},[t,S]),G=n.useCallback(e=>{t("onRowClick",e.id),d?.(e)},[t,d]),J=n.useCallback(e=>{t("onDeleteAgent",e.id),h(e)},[t]),K=n.useCallback(async()=>{if(!(!s||!l)){k(!0);try{await l(s),h(null)}finally{k(!1)}}},[s,l]);return a.jsxs(m.Page,{"data-test":q["data-test"]??"agent-listing",children:[a.jsx(X.AgentListingHeader,{title:O,onNewAgent:N,onBrowseTemplates:u?Z:void 0,headerActions:B}),a.jsx(W.AgentListingFilters,{searchValue:T,onSearchChange:I,onSearchSubmit:r?M:void 0,searchPlaceholder:R,filterOptions:z,onFilterChange:g?H:void 0,filterPlaceholder:D,sortOptions:v,selectedSort:F,onSortChange:c?V:void 0}),a.jsx(m.Body,{children:w?a.jsx(ee.AgentTableShimmer,{rows:Math.min(i?.pageSize??5,10)}):E?a.jsx(m.EmptyHolder,{children:a.jsx(U.ZeroState,{title:b?.title??"No agents yet",subTitle:b?.subTitle??"Create your first AI agent to start automating conversations.",actionButton:b?.actionButton??{buttonText:"New AI agent",buttonType:"primary",size:"small",onClick:N}})}):a.jsxs(a.Fragment,{children:[a.jsx(Y.AgentTable,{agents:j,triggerCountsLoading:L,onRunAgent:_,onEditAgent:$,onDeleteAgent:l?J:void 0,onRowClick:d?G:void 0}),i&&i.totalRows>0&&a.jsx(Q.TablePagination,{pageNumber:i.pageNumber,pageSize:i.pageSize,totalRows:i.totalRows,hidePageSizeOptions:i.hidePageSizeOptions,updatePageNumber:i.onPageChange,updatePageSize:e=>{const o=Number(ne.unwrapDropdownValue(e));Number.isNaN(o)||i.onPageSizeChange(o)}})]})}),s&&a.jsx(te.DeleteAgentModal,{agentName:s.name,isDeleting:y,onClose:()=>y?void 0:h(null),onConfirm:K})]})};P.displayName="AgentListing";exports.AgentListing=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),n=require("react"),U=require("../TablePagination/TablePagination.js"),A=require("./AgentListing.styled.js"),W=require("./AgentListingFilters.js"),X=require("./AgentListingHeader.js"),Y=require("./AgentTable.js"),Z=require("./AgentTableShimmer.js"),ee=require("./AiAgentsEmptyState.js"),te=require("./DeleteAgentModal.js"),ne=require("../dropdown/utils.js"),q=({config:x,onSearchChange:b,onSearchSubmit:r,onFilterChange:g,onSortChange:c,onNewAgent:m,onBrowseTemplates:d,onRunAgent:p,onEditAgent:C,onDeleteAgent:l,onRowClick:u,...L})=>{const[i,h]=n.useState(null),[S,j]=n.useState(!1),{agents:k,isLoading:w,triggerCountsLoading:N,searchValue:f,searchPlaceholder:R="Search",filterOptions:D,filterPlaceholder:T="Filters",sortOptions:z,selectedSort:v,title:E="AI Agents",headerActions:F,pagination:s,emptyState:O,debugLog:y}=x,M=!w&&k.length===0,t=n.useCallback((e,...o)=>{y&&console.log(`[AgentListing] ${e}`,...o)},[y]),H=n.useCallback(e=>{t("onSearchChange",e),b(e)},[t,b]),B=n.useCallback(e=>{t("onSearchSubmit",e),r?.(e)},[t,r]),I=n.useCallback(e=>{t("onFilterChange",e),g?.(e)},[t,g]),V=n.useCallback(e=>{t("onSortChange",e),c?.(e)},[t,c]),P=n.useCallback(()=>{t("onNewAgent"),m()},[t,m]),_=n.useCallback(()=>{t("onBrowseTemplates"),d?.()},[t,d]),$=n.useCallback(e=>{t("onRunAgent",e.id),p(e)},[t,p]),G=n.useCallback(e=>{t("onEditAgent",e.id),C(e)},[t,C]),J=n.useCallback(e=>{t("onRowClick",e.id),u?.(e)},[t,u]),K=n.useCallback(e=>{t("onDeleteAgent",e.id),h(e)},[t]),Q=n.useCallback(async()=>{if(!(!i||!l)){j(!0);try{await l(i),h(null)}finally{j(!1)}}},[i,l]);return a.jsxs(A.Page,{"data-test":L["data-test"]??"agent-listing",children:[a.jsx(X.AgentListingHeader,{title:E,onNewAgent:P,onBrowseTemplates:d?_:void 0,headerActions:F}),a.jsx(W.AgentListingFilters,{searchValue:f,onSearchChange:H,onSearchSubmit:r?B:void 0,searchPlaceholder:R,filterOptions:D,onFilterChange:g?I:void 0,filterPlaceholder:T,sortOptions:z,selectedSort:v,onSortChange:c?V:void 0}),a.jsx(A.Body,{children:w?a.jsx(Z.AgentTableShimmer,{rows:Math.min(s?.pageSize??5,10)}):M?a.jsx(A.EmptyHolder,{children:a.jsx(ee.AiAgentsEmptyState,{emptyState:O,onNewAgent:P})}):a.jsxs(a.Fragment,{children:[a.jsx(Y.AgentTable,{agents:k,triggerCountsLoading:N,onRunAgent:$,onEditAgent:G,onDeleteAgent:l?K:void 0,onRowClick:u?J:void 0}),s&&s.totalRows>0&&a.jsx(U.TablePagination,{pageNumber:s.pageNumber,pageSize:s.pageSize,totalRows:s.totalRows,hidePageSizeOptions:s.hidePageSizeOptions,updatePageNumber:s.onPageChange,updatePageSize:e=>{const o=Number(ne.unwrapDropdownValue(e));Number.isNaN(o)||s.onPageSizeChange(o)}})]})}),i&&a.jsx(te.DeleteAgentModal,{agentName:i.name,isDeleting:S,onClose:()=>S?void 0:h(null),onConfirm:Q})]})};q.displayName="AgentListing";exports.AgentListing=q;
2
2
  //# sourceMappingURL=AgentListing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { unwrapDropdownValue } from '@src/components/dropdown';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { AgentTableShimmer } from './AgentTableShimmer';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\ttriggerCountsLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\theaderActions,\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t\theaderActions={headerActions}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<AgentTableShimmer rows={Math.min(pagination?.pageSize ?? 5, 10)} />\n\t\t\t\t) : showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\t\t\t\t\t\tsubTitle={\n\t\t\t\t\t\t\t\temptyState?.subTitle ??\n\t\t\t\t\t\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tactionButton={\n\t\t\t\t\t\t\t\temptyState?.actionButton ?? {\n\t\t\t\t\t\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\t\t\t\t\t\tbuttonType: 'primary',\n\t\t\t\t\t\t\t\t\tsize: 'small',\n\t\t\t\t\t\t\t\t\tonClick: handleNewAgent,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\ttriggerCountsLoading={triggerCountsLoading}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst value = Number(unwrapDropdownValue(opt));\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","triggerCountsLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","headerActions","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","AgentTableShimmer","EmptyHolder","ZeroState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"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"}
1
+ {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { unwrapDropdownValue } from '@src/components/dropdown';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { AgentTableShimmer } from './AgentTableShimmer';\nimport { AiAgentsEmptyState } from './AiAgentsEmptyState';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\ttriggerCountsLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\theaderActions,\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t\theaderActions={headerActions}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<AgentTableShimmer rows={Math.min(pagination?.pageSize ?? 5, 10)} />\n\t\t\t\t) : showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<AiAgentsEmptyState\n\t\t\t\t\t\t\temptyState={emptyState}\n\t\t\t\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\ttriggerCountsLoading={triggerCountsLoading}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst value = Number(unwrapDropdownValue(opt));\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","triggerCountsLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","headerActions","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","AgentTableShimmer","EmptyHolder","AiAgentsEmptyState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"0dA4BaA,EAA4C,CAAC,CACzD,OAAAC,EACA,eAAAC,EACA,eAAAC,EACA,eAAAC,EACA,aAAAC,EACA,WAAAC,EACA,kBAAAC,EACA,WAAAC,EACA,YAAAC,EACA,cAAAC,EACA,WAAAC,EACA,GAAGC,CACJ,IAAM,CAEL,KAAM,CAACC,EAAeC,CAAgB,EAAIC,EAAAA,SACzC,IAAA,EAEK,CAACC,EAAYC,CAAa,EAAIF,EAAAA,SAAS,EAAK,EAC5C,CACL,OAAAG,EACA,UAAAC,EACA,qBAAAC,EACA,YAAAC,EACA,kBAAAC,EAAoB,SACpB,cAAAC,EACA,kBAAAC,EAAoB,UACpB,YAAAC,EACA,aAAAC,EACA,MAAAC,EAAQ,YACR,cAAAC,EACA,WAAAC,EACA,WAAAC,EACA,SAAAC,CAAA,EACG9B,EAEE+B,EAAY,CAACb,GAAaD,EAAO,SAAW,EAG5Ce,EAAYC,EAAAA,YACjB,CAACC,KAAmBC,IAAoB,CACnCL,GAEH,QAAQ,IAAI,kBAAkBI,CAAM,GAAI,GAAGC,CAAI,CAEjD,EACA,CAACL,CAAQ,CAAA,EAGJM,EAAqBH,EAAAA,YACzBI,GAAc,CACdL,EAAU,iBAAkBK,CAAC,EAC7BpC,EAAeoC,CAAC,CACjB,EACA,CAACL,EAAW/B,CAAc,CAAA,EAErBqC,EAAqBL,EAAAA,YACzBI,GAAc,CACdL,EAAU,iBAAkBK,CAAC,EAC7BnC,IAAiBmC,CAAC,CACnB,EACA,CAACL,EAAW9B,CAAc,CAAA,EAErBqC,EAAqBN,EAAAA,YACzBO,GAAgD,CAChDR,EAAU,iBAAkBQ,CAAQ,EACpCrC,IAAiBqC,CAAQ,CAC1B,EACA,CAACR,EAAW7B,CAAc,CAAA,EAErBsC,EAAmBR,EAAAA,YACvBI,GAAc,CACdL,EAAU,eAAgBK,CAAC,EAC3BjC,IAAeiC,CAAC,CACjB,EACA,CAACL,EAAW5B,CAAY,CAAA,EAEnBsC,EAAiBT,EAAAA,YAAY,IAAM,CACxCD,EAAU,YAAY,EACtB3B,EAAA,CACD,EAAG,CAAC2B,EAAW3B,CAAU,CAAC,EACpBsC,EAAwBV,EAAAA,YAAY,IAAM,CAC/CD,EAAU,mBAAmB,EAC7B1B,IAAA,CACD,EAAG,CAAC0B,EAAW1B,CAAiB,CAAC,EAC3BsC,EAAiBX,EAAAA,YACrBY,GAAyB,CACzBb,EAAU,aAAca,EAAM,EAAE,EAChCtC,EAAWsC,CAAK,CACjB,EACA,CAACb,EAAWzB,CAAU,CAAA,EAEjBuC,EAAkBb,EAAAA,YACtBY,GAAyB,CACzBb,EAAU,cAAea,EAAM,EAAE,EACjCrC,EAAYqC,CAAK,CAClB,EACA,CAACb,EAAWxB,CAAW,CAAA,EAElBuC,EAAiBd,EAAAA,YACrBY,GAAyB,CACzBb,EAAU,aAAca,EAAM,EAAE,EAChCnC,IAAamC,CAAK,CACnB,EACA,CAACb,EAAWtB,CAAU,CAAA,EAGjBsC,EAAsBf,EAAAA,YAC1BY,GAAyB,CACzBb,EAAU,gBAAiBa,EAAM,EAAE,EACnChC,EAAiBgC,CAAK,CACvB,EACA,CAACb,CAAS,CAAA,EAELiB,EAAsBhB,EAAAA,YAAY,SAAY,CACnD,GAAI,GAACrB,GAAiB,CAACH,GAGvB,CAAAO,EAAc,EAAI,EAClB,GAAI,CACH,MAAMP,EAAcG,CAAa,EACjCC,EAAiB,IAAI,CACtB,QAAA,CACCG,EAAc,EAAK,CACpB,EACD,EAAG,CAACJ,EAAeH,CAAa,CAAC,EAEjC,cACEyC,EAAAA,KAAA,CAAK,YAAWvC,EAAK,WAAW,GAAK,gBACrC,SAAA,CAAAwC,EAAAA,IAACC,EAAAA,mBAAA,CACA,MAAA1B,EACA,WAAYgB,EACZ,kBACCpC,EAAoBqC,EAAwB,OAE7C,cAAAhB,CAAA,CAAA,EAGDwB,EAAAA,IAACE,EAAAA,oBAAA,CACA,YAAAjC,EACA,eAAgBgB,EAChB,eAAgBlC,EAAiBoC,EAAqB,OACtD,kBAAAjB,EACA,cAAAC,EACA,eAAgBnB,EAAiBoC,EAAqB,OACtD,kBAAAhB,EACA,YAAAC,EACA,aAAAC,EACA,aAAcrB,EAAeqC,EAAmB,MAAA,CAAA,QAGhDa,EAAAA,KAAA,CACC,SAAApC,EACAiC,EAAAA,IAACI,oBAAA,CAAkB,KAAM,KAAK,IAAI3B,GAAY,UAAY,EAAG,EAAE,EAAG,EAC/DG,QACFyB,EAAAA,YAAA,CACA,SAAAL,EAAAA,IAACM,GAAAA,mBAAA,CACA,WAAA5B,EACA,WAAYa,CAAA,CAAA,CACb,CACD,EAEAgB,EAAAA,KAAAC,EAAAA,SAAA,CACC,SAAA,CAAAR,EAAAA,IAACS,EAAAA,WAAA,CACA,OAAA3C,EACA,qBAAAE,EACA,WAAYyB,EACZ,YAAaE,EACb,cAAerC,EAAgBuC,EAAsB,OACrD,WAAYtC,EAAaqC,EAAiB,MAAA,CAAA,EAE1CnB,GAAcA,EAAW,UAAY,GACrCuB,EAAAA,IAACU,EAAAA,gBAAA,CACA,WAAYjC,EAAW,WACvB,SAAUA,EAAW,SACrB,UAAWA,EAAW,UACtB,oBAAqBA,EAAW,oBAChC,iBAAkBA,EAAW,aAC7B,eAAiBkC,GAAQ,CACxB,MAAMC,EAAQ,OAAOC,GAAAA,oBAAoBF,CAAG,CAAC,EACxC,OAAO,MAAMC,CAAK,GACtBnC,EAAW,iBAAiBmC,CAAK,CAEnC,CAAA,CAAA,CACD,CAAA,CAEF,CAAA,CAEF,EAECnD,GACAuC,EAAAA,IAACc,GAAAA,iBAAA,CACA,UAAWrD,EAAc,KACzB,WAAAG,EACA,QAAS,IAAOA,EAAa,OAAYF,EAAiB,IAAI,EAC9D,UAAWoC,CAAA,CAAA,CACZ,EAEF,CAEF,EAEAlD,EAAa,YAAc"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),n=require("../zeroState/ZeroState.js"),i=({emptyState:t,onNewAgent:e})=>o.jsx(n.ZeroState,{title:t?.title??"No agents yet",subTitle:t?.subTitle??"Create your first AI agent to start automating conversations.",actionButton:t?.actionButton??{buttonText:"New AI agent",buttonType:"primary",size:"small",onClick:e}});exports.AiAgentsEmptyState=i;
2
+ //# sourceMappingURL=AiAgentsEmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentsEmptyState.js","sources":["../../../../src/components/agent-listing/AiAgentsEmptyState.tsx"],"sourcesContent":["import React from 'react';\nimport { ButtonProps } from '@src/components/button/model';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\n\nexport interface AiAgentsEmptyStateProps {\n\t/**\n\t * Overrides for the default copy / CTA — e.g. the search-miss variant passes\n\t * \"No results found …\". Any omitted field falls back to the \"no agents yet\"\n\t * defaults below.\n\t */\n\temptyState?: {\n\t\ttitle?: string;\n\t\tsubTitle?: string;\n\t\tactionButton?: ButtonProps;\n\t};\n\t/** Runs the default \"New AI agent\" CTA when no override button is supplied. */\n\tonNewAgent: () => void;\n}\n\n/**\n * Zero state for the AI Agents listing — shown when there are no agents yet or a\n * search returns no hits. Renders the shared {@link ZeroState} with AI-agents\n * defaults; a consumer-supplied `emptyState` overrides any of the copy / CTA.\n */\nexport const AiAgentsEmptyState: React.FC<AiAgentsEmptyStateProps> = ({\n\temptyState,\n\tonNewAgent,\n}) => (\n\t<ZeroState\n\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\tsubTitle={\n\t\t\temptyState?.subTitle ??\n\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t}\n\t\tactionButton={\n\t\t\temptyState?.actionButton ?? {\n\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\tbuttonType: 'primary',\n\t\t\t\tsize: 'small',\n\t\t\t\tonClick: onNewAgent,\n\t\t\t}\n\t\t}\n\t/>\n);\n"],"names":["AiAgentsEmptyState","emptyState","onNewAgent","jsx","ZeroState"],"mappings":"4JAwBaA,EAAwD,CAAC,CACrE,WAAAC,EACA,WAAAC,CACD,IACCC,EAAAA,IAACC,EAAAA,UAAA,CACA,MAAOH,GAAY,OAAS,gBAC5B,SACCA,GAAY,UACZ,gEAED,aACCA,GAAY,cAAgB,CAC3B,WAAY,eACZ,WAAY,UACZ,KAAM,QACN,QAASC,CAAA,CACV,CAEF"}
@@ -1,55 +1,55 @@
1
- import { jsxs as z, jsx as i, Fragment as U } from "react/jsx-runtime";
1
+ import { jsxs as y, jsx as i, Fragment as W } from "react/jsx-runtime";
2
2
  import { useState as L, useCallback as n } from "react";
3
- import { TablePagination as W } from "../TablePagination/TablePagination.js";
4
- import { ZeroState as X } from "../zeroState/ZeroState.js";
5
- import { Page as Y, Body as _, EmptyHolder as ee } from "./AgentListing.styled.js";
6
- import { AgentListingFilters as te } from "./AgentListingFilters.js";
7
- import { AgentListingHeader as ne } from "./AgentListingHeader.js";
8
- import { AgentTable as oe } from "./AgentTable.js";
9
- import { AgentTableShimmer as ie } from "./AgentTableShimmer.js";
3
+ import { TablePagination as X } from "../TablePagination/TablePagination.js";
4
+ import { Page as Y, Body as Z, EmptyHolder as _ } from "./AgentListing.styled.js";
5
+ import { AgentListingFilters as ee } from "./AgentListingFilters.js";
6
+ import { AgentListingHeader as te } from "./AgentListingHeader.js";
7
+ import { AgentTable as ne } from "./AgentTable.js";
8
+ import { AgentTableShimmer as oe } from "./AgentTableShimmer.js";
9
+ import { AiAgentsEmptyState as ie } from "./AiAgentsEmptyState.js";
10
10
  import { DeleteAgentModal as ae } from "./DeleteAgentModal.js";
11
11
  import { unwrapDropdownValue as re } from "../dropdown/utils.js";
12
12
  const se = ({
13
- config: T,
14
- onSearchChange: u,
13
+ config: z,
14
+ onSearchChange: p,
15
15
  onSearchSubmit: l,
16
16
  onFilterChange: g,
17
17
  onSortChange: d,
18
- onNewAgent: f,
18
+ onNewAgent: u,
19
19
  onBrowseTemplates: m,
20
- onRunAgent: A,
21
- onEditAgent: S,
20
+ onRunAgent: f,
21
+ onEditAgent: A,
22
22
  onDeleteAgent: r,
23
23
  onRowClick: c,
24
24
  ...D
25
25
  }) => {
26
26
  const [a, h] = L(
27
27
  null
28
- ), [b, C] = L(!1), {
29
- agents: w,
28
+ ), [S, w] = L(!1), {
29
+ agents: C,
30
30
  isLoading: N,
31
31
  triggerCountsLoading: R,
32
32
  searchValue: v,
33
- searchPlaceholder: x = "Search",
34
- filterOptions: B,
35
- filterPlaceholder: E = "Filters",
36
- sortOptions: F,
37
- selectedSort: I,
38
- title: O = "AI Agents",
33
+ searchPlaceholder: E = "Search",
34
+ filterOptions: F,
35
+ filterPlaceholder: O = "Filters",
36
+ sortOptions: T,
37
+ selectedSort: x,
38
+ title: j = "AI Agents",
39
39
  headerActions: k,
40
40
  pagination: o,
41
- emptyState: p,
42
- debugLog: y
43
- } = T, j = !N && w.length === 0, t = n(
41
+ emptyState: B,
42
+ debugLog: b
43
+ } = z, H = !N && C.length === 0, t = n(
44
44
  (e, ...s) => {
45
- y && console.log(`[AgentListing] ${e}`, ...s);
45
+ b && console.log(`[AgentListing] ${e}`, ...s);
46
46
  },
47
- [y]
48
- ), H = n(
47
+ [b]
48
+ ), I = n(
49
49
  (e) => {
50
- t("onSearchChange", e), u(e);
50
+ t("onSearchChange", e), p(e);
51
51
  },
52
- [t, u]
52
+ [t, p]
53
53
  ), M = n(
54
54
  (e) => {
55
55
  t("onSearchSubmit", e), l?.(e);
@@ -66,90 +66,84 @@ const se = ({
66
66
  },
67
67
  [t, d]
68
68
  ), P = n(() => {
69
- t("onNewAgent"), f();
70
- }, [t, f]), Z = n(() => {
69
+ t("onNewAgent"), u();
70
+ }, [t, u]), $ = n(() => {
71
71
  t("onBrowseTemplates"), m?.();
72
- }, [t, m]), $ = n(
72
+ }, [t, m]), G = n(
73
73
  (e) => {
74
- t("onRunAgent", e.id), A(e);
74
+ t("onRunAgent", e.id), f(e);
75
75
  },
76
- [t, A]
77
- ), G = n(
76
+ [t, f]
77
+ ), J = n(
78
78
  (e) => {
79
- t("onEditAgent", e.id), S(e);
79
+ t("onEditAgent", e.id), A(e);
80
80
  },
81
- [t, S]
82
- ), J = n(
81
+ [t, A]
82
+ ), K = n(
83
83
  (e) => {
84
84
  t("onRowClick", e.id), c?.(e);
85
85
  },
86
86
  [t, c]
87
- ), K = n(
87
+ ), Q = n(
88
88
  (e) => {
89
89
  t("onDeleteAgent", e.id), h(e);
90
90
  },
91
91
  [t]
92
- ), Q = n(async () => {
92
+ ), U = n(async () => {
93
93
  if (!(!a || !r)) {
94
- C(!0);
94
+ w(!0);
95
95
  try {
96
96
  await r(a), h(null);
97
97
  } finally {
98
- C(!1);
98
+ w(!1);
99
99
  }
100
100
  }
101
101
  }, [a, r]);
102
- return /* @__PURE__ */ z(Y, { "data-test": D["data-test"] ?? "agent-listing", children: [
102
+ return /* @__PURE__ */ y(Y, { "data-test": D["data-test"] ?? "agent-listing", children: [
103
103
  /* @__PURE__ */ i(
104
- ne,
104
+ te,
105
105
  {
106
- title: O,
106
+ title: j,
107
107
  onNewAgent: P,
108
- onBrowseTemplates: m ? Z : void 0,
108
+ onBrowseTemplates: m ? $ : void 0,
109
109
  headerActions: k
110
110
  }
111
111
  ),
112
112
  /* @__PURE__ */ i(
113
- te,
113
+ ee,
114
114
  {
115
115
  searchValue: v,
116
- onSearchChange: H,
116
+ onSearchChange: I,
117
117
  onSearchSubmit: l ? M : void 0,
118
- searchPlaceholder: x,
119
- filterOptions: B,
118
+ searchPlaceholder: E,
119
+ filterOptions: F,
120
120
  onFilterChange: g ? V : void 0,
121
- filterPlaceholder: E,
122
- sortOptions: F,
123
- selectedSort: I,
121
+ filterPlaceholder: O,
122
+ sortOptions: T,
123
+ selectedSort: x,
124
124
  onSortChange: d ? q : void 0
125
125
  }
126
126
  ),
127
- /* @__PURE__ */ i(_, { children: N ? /* @__PURE__ */ i(ie, { rows: Math.min(o?.pageSize ?? 5, 10) }) : j ? /* @__PURE__ */ i(ee, { children: /* @__PURE__ */ i(
128
- X,
127
+ /* @__PURE__ */ i(Z, { children: N ? /* @__PURE__ */ i(oe, { rows: Math.min(o?.pageSize ?? 5, 10) }) : H ? /* @__PURE__ */ i(_, { children: /* @__PURE__ */ i(
128
+ ie,
129
129
  {
130
- title: p?.title ?? "No agents yet",
131
- subTitle: p?.subTitle ?? "Create your first AI agent to start automating conversations.",
132
- actionButton: p?.actionButton ?? {
133
- buttonText: "New AI agent",
134
- buttonType: "primary",
135
- size: "small",
136
- onClick: P
137
- }
130
+ emptyState: B,
131
+ onNewAgent: P
138
132
  }
139
- ) }) : /* @__PURE__ */ z(U, { children: [
133
+ ) }) : /* @__PURE__ */ y(W, { children: [
140
134
  /* @__PURE__ */ i(
141
- oe,
135
+ ne,
142
136
  {
143
- agents: w,
137
+ agents: C,
144
138
  triggerCountsLoading: R,
145
- onRunAgent: $,
146
- onEditAgent: G,
147
- onDeleteAgent: r ? K : void 0,
148
- onRowClick: c ? J : void 0
139
+ onRunAgent: G,
140
+ onEditAgent: J,
141
+ onDeleteAgent: r ? Q : void 0,
142
+ onRowClick: c ? K : void 0
149
143
  }
150
144
  ),
151
145
  o && o.totalRows > 0 && /* @__PURE__ */ i(
152
- W,
146
+ X,
153
147
  {
154
148
  pageNumber: o.pageNumber,
155
149
  pageSize: o.pageSize,
@@ -167,9 +161,9 @@ const se = ({
167
161
  ae,
168
162
  {
169
163
  agentName: a.name,
170
- isDeleting: b,
171
- onClose: () => b ? void 0 : h(null),
172
- onConfirm: Q
164
+ isDeleting: S,
165
+ onClose: () => S ? void 0 : h(null),
166
+ onConfirm: U
173
167
  }
174
168
  )
175
169
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { unwrapDropdownValue } from '@src/components/dropdown';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { AgentTableShimmer } from './AgentTableShimmer';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\ttriggerCountsLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\theaderActions,\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t\theaderActions={headerActions}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<AgentTableShimmer rows={Math.min(pagination?.pageSize ?? 5, 10)} />\n\t\t\t\t) : showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\t\t\t\t\t\tsubTitle={\n\t\t\t\t\t\t\t\temptyState?.subTitle ??\n\t\t\t\t\t\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tactionButton={\n\t\t\t\t\t\t\t\temptyState?.actionButton ?? {\n\t\t\t\t\t\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\t\t\t\t\t\tbuttonType: 'primary',\n\t\t\t\t\t\t\t\t\tsize: 'small',\n\t\t\t\t\t\t\t\t\tonClick: handleNewAgent,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\ttriggerCountsLoading={triggerCountsLoading}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst value = Number(unwrapDropdownValue(opt));\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","triggerCountsLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","headerActions","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","AgentTableShimmer","EmptyHolder","ZeroState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"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"}
1
+ {"version":3,"file":"AgentListing.js","sources":["../../../../src/components/agent-listing/AgentListing.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { unwrapDropdownValue } from '@src/components/dropdown';\nimport { DropdownOption } from '@src/components/dropdown/type';\nimport { TablePagination } from '@src/components/TablePagination/TablePagination';\nimport { AgentListingProps, AgentListItem } from './AgentListing.model';\nimport { Body, EmptyHolder, Page } from './AgentListing.styled';\nimport { AgentListingFilters } from './AgentListingFilters';\nimport { AgentListingHeader } from './AgentListingHeader';\nimport { AgentTable } from './AgentTable';\nimport { AgentTableShimmer } from './AgentTableShimmer';\nimport { AiAgentsEmptyState } from './AiAgentsEmptyState';\nimport { DeleteAgentModal } from './DeleteAgentModal';\n\n/**\n * Full body of the \"AI Agents\" listing screen (header + filters + table).\n * Presentational and fully controlled — the consumer owns data, search, sort,\n * pagination and routing. Render it inside your app shell (next to the sidebar).\n *\n * @example\n * <AgentListing\n * agents={rows}\n * searchValue={search}\n * onSearchChange={setSearch}\n * onNewAgent={() => router.push('/agents/new')}\n * onRunAgent={runAgent}\n * onEditAgent={(a) => router.push(`/agents/${a.id}`)}\n * />\n */\nexport const AgentListing: React.FC<AgentListingProps> = ({\n\tconfig,\n\tonSearchChange,\n\tonSearchSubmit,\n\tonFilterChange,\n\tonSortChange,\n\tonNewAgent,\n\tonBrowseTemplates,\n\tonRunAgent,\n\tonEditAgent,\n\tonDeleteAgent,\n\tonRowClick,\n\t...rest\n}) => {\n\t// Agent pending delete-confirmation (null = dialog closed).\n\tconst [pendingDelete, setPendingDelete] = useState<AgentListItem | null>(\n\t\tnull,\n\t);\n\tconst [isDeleting, setIsDeleting] = useState(false);\n\tconst {\n\t\tagents,\n\t\tisLoading,\n\t\ttriggerCountsLoading,\n\t\tsearchValue,\n\t\tsearchPlaceholder = 'Search',\n\t\tfilterOptions,\n\t\tfilterPlaceholder = 'Filters',\n\t\tsortOptions,\n\t\tselectedSort,\n\t\ttitle = 'AI Agents',\n\t\theaderActions,\n\t\tpagination,\n\t\temptyState,\n\t\tdebugLog,\n\t} = config;\n\n\tconst showEmpty = !isLoading && agents.length === 0;\n\n\t// Gated debug logging: each handler logs at its start only when `debugLog`.\n\tconst logAction = useCallback(\n\t\t(action: string, ...args: unknown[]) => {\n\t\t\tif (debugLog) {\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.log(`[AgentListing] ${action}`, ...args);\n\t\t\t}\n\t\t},\n\t\t[debugLog],\n\t);\n\n\tconst handleSearchChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchChange', v);\n\t\t\tonSearchChange(v);\n\t\t},\n\t\t[logAction, onSearchChange],\n\t);\n\tconst handleSearchSubmit = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSearchSubmit', v);\n\t\t\tonSearchSubmit?.(v);\n\t\t},\n\t\t[logAction, onSearchSubmit],\n\t);\n\tconst handleFilterChange = useCallback(\n\t\t(selected: DropdownOption | DropdownOption[]) => {\n\t\t\tlogAction('onFilterChange', selected);\n\t\t\tonFilterChange?.(selected);\n\t\t},\n\t\t[logAction, onFilterChange],\n\t);\n\tconst handleSortChange = useCallback(\n\t\t(v: string) => {\n\t\t\tlogAction('onSortChange', v);\n\t\t\tonSortChange?.(v);\n\t\t},\n\t\t[logAction, onSortChange],\n\t);\n\tconst handleNewAgent = useCallback(() => {\n\t\tlogAction('onNewAgent');\n\t\tonNewAgent();\n\t}, [logAction, onNewAgent]);\n\tconst handleBrowseTemplates = useCallback(() => {\n\t\tlogAction('onBrowseTemplates');\n\t\tonBrowseTemplates?.();\n\t}, [logAction, onBrowseTemplates]);\n\tconst handleRunAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRunAgent', agent.id);\n\t\t\tonRunAgent(agent);\n\t\t},\n\t\t[logAction, onRunAgent],\n\t);\n\tconst handleEditAgent = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onEditAgent', agent.id);\n\t\t\tonEditAgent(agent);\n\t\t},\n\t\t[logAction, onEditAgent],\n\t);\n\tconst handleRowClick = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onRowClick', agent.id);\n\t\t\tonRowClick?.(agent);\n\t\t},\n\t\t[logAction, onRowClick],\n\t);\n\t// Row delete just opens the confirm dialog; the actual delete runs on confirm.\n\tconst handleDeleteRequest = useCallback(\n\t\t(agent: AgentListItem) => {\n\t\t\tlogAction('onDeleteAgent', agent.id);\n\t\t\tsetPendingDelete(agent);\n\t\t},\n\t\t[logAction],\n\t);\n\tconst handleConfirmDelete = useCallback(async () => {\n\t\tif (!pendingDelete || !onDeleteAgent) {\n\t\t\treturn;\n\t\t}\n\t\tsetIsDeleting(true);\n\t\ttry {\n\t\t\tawait onDeleteAgent(pendingDelete);\n\t\t\tsetPendingDelete(null);\n\t\t} finally {\n\t\t\tsetIsDeleting(false);\n\t\t}\n\t}, [pendingDelete, onDeleteAgent]);\n\n\treturn (\n\t\t<Page data-test={rest['data-test'] ?? 'agent-listing'}>\n\t\t\t<AgentListingHeader\n\t\t\t\ttitle={title}\n\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\tonBrowseTemplates={\n\t\t\t\t\tonBrowseTemplates ? handleBrowseTemplates : undefined\n\t\t\t\t}\n\t\t\t\theaderActions={headerActions}\n\t\t\t/>\n\n\t\t\t<AgentListingFilters\n\t\t\t\tsearchValue={searchValue}\n\t\t\t\tonSearchChange={handleSearchChange}\n\t\t\t\tonSearchSubmit={onSearchSubmit ? handleSearchSubmit : undefined}\n\t\t\t\tsearchPlaceholder={searchPlaceholder}\n\t\t\t\tfilterOptions={filterOptions}\n\t\t\t\tonFilterChange={onFilterChange ? handleFilterChange : undefined}\n\t\t\t\tfilterPlaceholder={filterPlaceholder}\n\t\t\t\tsortOptions={sortOptions}\n\t\t\t\tselectedSort={selectedSort}\n\t\t\t\tonSortChange={onSortChange ? handleSortChange : undefined}\n\t\t\t/>\n\n\t\t\t<Body>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<AgentTableShimmer rows={Math.min(pagination?.pageSize ?? 5, 10)} />\n\t\t\t\t) : showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<AiAgentsEmptyState\n\t\t\t\t\t\t\temptyState={emptyState}\n\t\t\t\t\t\t\tonNewAgent={handleNewAgent}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</EmptyHolder>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AgentTable\n\t\t\t\t\t\t\tagents={agents}\n\t\t\t\t\t\t\ttriggerCountsLoading={triggerCountsLoading}\n\t\t\t\t\t\t\tonRunAgent={handleRunAgent}\n\t\t\t\t\t\t\tonEditAgent={handleEditAgent}\n\t\t\t\t\t\t\tonDeleteAgent={onDeleteAgent ? handleDeleteRequest : undefined}\n\t\t\t\t\t\t\tonRowClick={onRowClick ? handleRowClick : undefined}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{pagination && pagination.totalRows > 0 && (\n\t\t\t\t\t\t\t<TablePagination\n\t\t\t\t\t\t\t\tpageNumber={pagination.pageNumber}\n\t\t\t\t\t\t\t\tpageSize={pagination.pageSize}\n\t\t\t\t\t\t\t\ttotalRows={pagination.totalRows}\n\t\t\t\t\t\t\t\thidePageSizeOptions={pagination.hidePageSizeOptions}\n\t\t\t\t\t\t\t\tupdatePageNumber={pagination.onPageChange}\n\t\t\t\t\t\t\t\tupdatePageSize={(opt) => {\n\t\t\t\t\t\t\t\t\tconst value = Number(unwrapDropdownValue(opt));\n\t\t\t\t\t\t\t\t\tif (!Number.isNaN(value)) {\n\t\t\t\t\t\t\t\t\t\tpagination.onPageSizeChange(value);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Body>\n\n\t\t\t{pendingDelete && (\n\t\t\t\t<DeleteAgentModal\n\t\t\t\t\tagentName={pendingDelete.name}\n\t\t\t\t\tisDeleting={isDeleting}\n\t\t\t\t\tonClose={() => (isDeleting ? undefined : setPendingDelete(null))}\n\t\t\t\t\tonConfirm={handleConfirmDelete}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</Page>\n\t);\n};\n\nAgentListing.displayName = 'AgentListing';\n"],"names":["AgentListing","config","onSearchChange","onSearchSubmit","onFilterChange","onSortChange","onNewAgent","onBrowseTemplates","onRunAgent","onEditAgent","onDeleteAgent","onRowClick","rest","pendingDelete","setPendingDelete","useState","isDeleting","setIsDeleting","agents","isLoading","triggerCountsLoading","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","headerActions","pagination","emptyState","debugLog","showEmpty","logAction","useCallback","action","args","handleSearchChange","v","handleSearchSubmit","handleFilterChange","selected","handleSortChange","handleNewAgent","handleBrowseTemplates","handleRunAgent","agent","handleEditAgent","handleRowClick","handleDeleteRequest","handleConfirmDelete","Page","jsx","AgentListingHeader","AgentListingFilters","Body","AgentTableShimmer","EmptyHolder","AiAgentsEmptyState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+ import { ButtonProps } from '../button/model';
3
+ export interface AiAgentsEmptyStateProps {
4
+ /**
5
+ * Overrides for the default copy / CTA — e.g. the search-miss variant passes
6
+ * "No results found …". Any omitted field falls back to the "no agents yet"
7
+ * defaults below.
8
+ */
9
+ emptyState?: {
10
+ title?: string;
11
+ subTitle?: string;
12
+ actionButton?: ButtonProps;
13
+ };
14
+ /** Runs the default "New AI agent" CTA when no override button is supplied. */
15
+ onNewAgent: () => void;
16
+ }
17
+ /**
18
+ * Zero state for the AI Agents listing — shown when there are no agents yet or a
19
+ * search returns no hits. Renders the shared {@link ZeroState} with AI-agents
20
+ * defaults; a consumer-supplied `emptyState` overrides any of the copy / CTA.
21
+ */
22
+ export declare const AiAgentsEmptyState: React.FC<AiAgentsEmptyStateProps>;
@@ -0,0 +1,22 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { ZeroState as i } from "../zeroState/ZeroState.js";
3
+ const a = ({
4
+ emptyState: t,
5
+ onNewAgent: o
6
+ }) => /* @__PURE__ */ e(
7
+ i,
8
+ {
9
+ title: t?.title ?? "No agents yet",
10
+ subTitle: t?.subTitle ?? "Create your first AI agent to start automating conversations.",
11
+ actionButton: t?.actionButton ?? {
12
+ buttonText: "New AI agent",
13
+ buttonType: "primary",
14
+ size: "small",
15
+ onClick: o
16
+ }
17
+ }
18
+ );
19
+ export {
20
+ a as AiAgentsEmptyState
21
+ };
22
+ //# sourceMappingURL=AiAgentsEmptyState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentsEmptyState.js","sources":["../../../../src/components/agent-listing/AiAgentsEmptyState.tsx"],"sourcesContent":["import React from 'react';\nimport { ButtonProps } from '@src/components/button/model';\nimport { ZeroState } from '@src/components/zeroState/ZeroState';\n\nexport interface AiAgentsEmptyStateProps {\n\t/**\n\t * Overrides for the default copy / CTA — e.g. the search-miss variant passes\n\t * \"No results found …\". Any omitted field falls back to the \"no agents yet\"\n\t * defaults below.\n\t */\n\temptyState?: {\n\t\ttitle?: string;\n\t\tsubTitle?: string;\n\t\tactionButton?: ButtonProps;\n\t};\n\t/** Runs the default \"New AI agent\" CTA when no override button is supplied. */\n\tonNewAgent: () => void;\n}\n\n/**\n * Zero state for the AI Agents listing — shown when there are no agents yet or a\n * search returns no hits. Renders the shared {@link ZeroState} with AI-agents\n * defaults; a consumer-supplied `emptyState` overrides any of the copy / CTA.\n */\nexport const AiAgentsEmptyState: React.FC<AiAgentsEmptyStateProps> = ({\n\temptyState,\n\tonNewAgent,\n}) => (\n\t<ZeroState\n\t\ttitle={emptyState?.title ?? 'No agents yet'}\n\t\tsubTitle={\n\t\t\temptyState?.subTitle ??\n\t\t\t'Create your first AI agent to start automating conversations.'\n\t\t}\n\t\tactionButton={\n\t\t\temptyState?.actionButton ?? {\n\t\t\t\tbuttonText: 'New AI agent',\n\t\t\t\tbuttonType: 'primary',\n\t\t\t\tsize: 'small',\n\t\t\t\tonClick: onNewAgent,\n\t\t\t}\n\t\t}\n\t/>\n);\n"],"names":["AiAgentsEmptyState","emptyState","onNewAgent","jsx","ZeroState"],"mappings":";;AAwBO,MAAMA,IAAwD,CAAC;AAAA,EACrE,YAAAC;AAAA,EACA,YAAAC;AACD,MACC,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,OAAOH,GAAY,SAAS;AAAA,IAC5B,UACCA,GAAY,YACZ;AAAA,IAED,cACCA,GAAY,gBAAgB;AAAA,MAC3B,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,SAASC;AAAA,IAAA;AAAA,EACV;AAEF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bikdotai/bik-component-library",
3
- "version": "0.0.850-beta.3",
3
+ "version": "0.0.850-beta.4",
4
4
  "description": "Bik Component Library",
5
5
  "repository": {
6
6
  "type": "git",