@bikdotai/bik-component-library 0.0.823-beta.2 → 0.0.823

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.
Files changed (75) hide show
  1. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  2. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  3. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +97 -66
  4. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js +1 -1
  6. package/dist/cjs/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  8. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
  10. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +4 -4
  12. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/StepRail.js +1 -1
  14. package/dist/cjs/components/agent-builder/components/StepRail.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  16. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/steps/Step1About.js +1 -1
  18. package/dist/cjs/components/agent-builder/steps/Step1About.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
  20. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  21. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  22. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  23. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js +1 -1
  24. package/dist/cjs/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  25. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  26. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  27. package/dist/cjs/components/agent-listing/AgentListing.styled.js +32 -28
  28. package/dist/cjs/components/agent-listing/AgentListing.styled.js.map +1 -1
  29. package/dist/cjs/components/agent-listing/AgentListingHeader.js +1 -1
  30. package/dist/cjs/components/agent-listing/AgentListingHeader.js.map +1 -1
  31. package/dist/cjs/components/agent-listing/AgentTableRow.js +1 -1
  32. package/dist/cjs/components/agent-listing/AgentTableRow.js.map +1 -1
  33. package/dist/cjs/components/template-preview/models/TemplateMeta.js +1 -1
  34. package/dist/cjs/components/template-preview/models/TemplateMeta.js.map +1 -1
  35. package/dist/esm/components/agent-builder/AgentBuilder.js +82 -83
  36. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  37. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +13 -5
  38. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +141 -102
  39. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  40. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.d.ts +0 -1
  41. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js +33 -46
  42. package/dist/esm/components/agent-builder/components/AgentBuilderTopBar.js.map +1 -1
  43. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +135 -119
  44. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  45. package/dist/esm/components/agent-builder/components/MentionField.js +44 -45
  46. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
  47. package/dist/esm/components/agent-builder/components/SelectableListSection.js +91 -94
  48. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  49. package/dist/esm/components/agent-builder/components/StepRail.js +28 -20
  50. package/dist/esm/components/agent-builder/components/StepRail.js.map +1 -1
  51. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +7 -0
  52. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +108 -98
  53. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  54. package/dist/esm/components/agent-builder/steps/Step1About.js +38 -35
  55. package/dist/esm/components/agent-builder/steps/Step1About.js.map +1 -1
  56. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +118 -122
  57. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  58. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +112 -110
  59. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  60. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js +72 -70
  61. package/dist/esm/components/agent-builder/steps/Step4HandoverRules.js.map +1 -1
  62. package/dist/esm/components/agent-listing/AgentListing.js +45 -43
  63. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  64. package/dist/esm/components/agent-listing/AgentListing.model.d.ts +7 -0
  65. package/dist/esm/components/agent-listing/AgentListing.styled.js +28 -24
  66. package/dist/esm/components/agent-listing/AgentListing.styled.js.map +1 -1
  67. package/dist/esm/components/agent-listing/AgentListingHeader.d.ts +2 -0
  68. package/dist/esm/components/agent-listing/AgentListingHeader.js +14 -12
  69. package/dist/esm/components/agent-listing/AgentListingHeader.js.map +1 -1
  70. package/dist/esm/components/agent-listing/AgentTableRow.js +102 -57
  71. package/dist/esm/components/agent-listing/AgentTableRow.js.map +1 -1
  72. package/dist/esm/components/template-preview/models/TemplateMeta.d.ts +1 -2
  73. package/dist/esm/components/template-preview/models/TemplateMeta.js +11 -11
  74. package/dist/esm/components/template-preview/models/TemplateMeta.js.map +1 -1
  75. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
- import { jsxs as z, jsx as i, Fragment as K } from "react/jsx-runtime";
1
+ import { jsxs as z, jsx as i, Fragment as Q } from "react/jsx-runtime";
2
2
  import { useState as D, useCallback as n } from "react";
3
- import { TablePagination as Q } from "../TablePagination/TablePagination.js";
4
- import { ZeroState as U } from "../zeroState/ZeroState.js";
5
- import { Page as W, Body as X, EmptyHolder as Y } from "./AgentListing.styled.js";
6
- import { AgentListingFilters as _ } from "./AgentListingFilters.js";
7
- import { AgentListingHeader as ee } from "./AgentListingHeader.js";
8
- import { AgentTable as te } from "./AgentTable.js";
9
- import { DeleteAgentModal as ne } from "./DeleteAgentModal.js";
10
- import { unwrapDropdownValue as oe } from "../dropdown/utils.js";
11
- const ie = ({
3
+ import { TablePagination as U } from "../TablePagination/TablePagination.js";
4
+ import { ZeroState as W } from "../zeroState/ZeroState.js";
5
+ import { Page as X, Body as Y, EmptyHolder as _ } from "./AgentListing.styled.js";
6
+ import { AgentListingFilters as ee } from "./AgentListingFilters.js";
7
+ import { AgentListingHeader as te } from "./AgentListingHeader.js";
8
+ import { AgentTable as ne } from "./AgentTable.js";
9
+ import { DeleteAgentModal as oe } from "./DeleteAgentModal.js";
10
+ import { unwrapDropdownValue as ie } from "../dropdown/utils.js";
11
+ const ae = ({
12
12
  config: L,
13
13
  onSearchChange: f,
14
14
  onSearchSubmit: r,
@@ -34,59 +34,60 @@ const ie = ({
34
34
  sortOptions: E,
35
35
  selectedSort: F,
36
36
  title: I = "AI Agents",
37
+ headerActions: O,
37
38
  pagination: o,
38
39
  emptyState: u,
39
40
  debugLog: y
40
- } = L, O = !p && w.length === 0, t = n(
41
+ } = L, k = !p && w.length === 0, t = n(
41
42
  (e, ...l) => {
42
43
  y && console.log(`[AgentListing] ${e}`, ...l);
43
44
  },
44
45
  [y]
45
- ), k = n(
46
+ ), j = n(
46
47
  (e) => {
47
48
  t("onSearchChange", e), f(e);
48
49
  },
49
50
  [t, f]
50
- ), j = n(
51
+ ), H = n(
51
52
  (e) => {
52
53
  t("onSearchSubmit", e), r?.(e);
53
54
  },
54
55
  [t, r]
55
- ), H = n(
56
+ ), V = n(
56
57
  (e) => {
57
58
  t("onFilterChange", e), g?.(e);
58
59
  },
59
60
  [t, g]
60
- ), V = n(
61
+ ), q = n(
61
62
  (e) => {
62
63
  t("onSortChange", e), d?.(e);
63
64
  },
64
65
  [t, d]
65
66
  ), P = n(() => {
66
67
  t("onNewAgent"), A();
67
- }, [t, A]), q = n(() => {
68
+ }, [t, A]), M = n(() => {
68
69
  t("onBrowseTemplates"), c?.();
69
- }, [t, c]), M = n(
70
+ }, [t, c]), Z = n(
70
71
  (e) => {
71
72
  t("onRunAgent", e.id), S(e);
72
73
  },
73
74
  [t, S]
74
- ), Z = n(
75
+ ), $ = n(
75
76
  (e) => {
76
77
  t("onEditAgent", e.id), b(e);
77
78
  },
78
79
  [t, b]
79
- ), $ = n(
80
+ ), G = n(
80
81
  (e) => {
81
82
  t("onRowClick", e.id), m?.(e);
82
83
  },
83
84
  [t, m]
84
- ), G = n(
85
+ ), J = n(
85
86
  (e) => {
86
87
  t("onDeleteAgent", e.id), h(e);
87
88
  },
88
89
  [t]
89
- ), J = n(async () => {
90
+ ), K = n(async () => {
90
91
  if (!(!a || !s)) {
91
92
  N(!0);
92
93
  try {
@@ -96,32 +97,33 @@ const ie = ({
96
97
  }
97
98
  }
98
99
  }, [a, s]);
99
- return /* @__PURE__ */ z(W, { "data-test": R["data-test"] ?? "agent-listing", children: [
100
+ return /* @__PURE__ */ z(X, { "data-test": R["data-test"] ?? "agent-listing", children: [
100
101
  /* @__PURE__ */ i(
101
- ee,
102
+ te,
102
103
  {
103
104
  title: I,
104
105
  onNewAgent: P,
105
- onBrowseTemplates: c ? q : void 0
106
+ onBrowseTemplates: c ? M : void 0,
107
+ headerActions: O
106
108
  }
107
109
  ),
108
110
  /* @__PURE__ */ i(
109
- _,
111
+ ee,
110
112
  {
111
113
  searchValue: T,
112
- onSearchChange: k,
113
- onSearchSubmit: r ? j : void 0,
114
+ onSearchChange: j,
115
+ onSearchSubmit: r ? H : void 0,
114
116
  searchPlaceholder: v,
115
117
  filterOptions: x,
116
- onFilterChange: g ? H : void 0,
118
+ onFilterChange: g ? V : void 0,
117
119
  filterPlaceholder: B,
118
120
  sortOptions: E,
119
121
  selectedSort: F,
120
- onSortChange: d ? V : void 0
122
+ onSortChange: d ? q : void 0
121
123
  }
122
124
  ),
123
- /* @__PURE__ */ i(X, { children: p || O ? /* @__PURE__ */ i(Y, { children: /* @__PURE__ */ i(
124
- U,
125
+ /* @__PURE__ */ i(Y, { children: p || k ? /* @__PURE__ */ i(_, { children: /* @__PURE__ */ i(
126
+ W,
125
127
  {
126
128
  isLoading: p,
127
129
  title: u?.title ?? "No agents yet",
@@ -133,19 +135,19 @@ const ie = ({
133
135
  onClick: P
134
136
  }
135
137
  }
136
- ) }) : /* @__PURE__ */ z(K, { children: [
138
+ ) }) : /* @__PURE__ */ z(Q, { children: [
137
139
  /* @__PURE__ */ i(
138
- te,
140
+ ne,
139
141
  {
140
142
  agents: w,
141
- onRunAgent: M,
142
- onEditAgent: Z,
143
- onDeleteAgent: s ? G : void 0,
144
- onRowClick: m ? $ : void 0
143
+ onRunAgent: Z,
144
+ onEditAgent: $,
145
+ onDeleteAgent: s ? J : void 0,
146
+ onRowClick: m ? G : void 0
145
147
  }
146
148
  ),
147
149
  o && o.totalRows > 0 && /* @__PURE__ */ i(
148
- Q,
150
+ U,
149
151
  {
150
152
  pageNumber: o.pageNumber,
151
153
  pageSize: o.pageSize,
@@ -153,25 +155,25 @@ const ie = ({
153
155
  hidePageSizeOptions: o.hidePageSizeOptions,
154
156
  updatePageNumber: o.onPageChange,
155
157
  updatePageSize: (e) => {
156
- const l = Number(oe(e));
158
+ const l = Number(ie(e));
157
159
  Number.isNaN(l) || o.onPageSizeChange(l);
158
160
  }
159
161
  }
160
162
  )
161
163
  ] }) }),
162
164
  a && /* @__PURE__ */ i(
163
- ne,
165
+ oe,
164
166
  {
165
167
  agentName: a.name,
166
168
  isDeleting: C,
167
169
  onClose: () => C ? void 0 : h(null),
168
- onConfirm: J
170
+ onConfirm: K
169
171
  }
170
172
  )
171
173
  ] });
172
174
  };
173
- ie.displayName = "AgentListing";
175
+ ae.displayName = "AgentListing";
174
176
  export {
175
- ie as AgentListing
177
+ ae as AgentListing
176
178
  };
177
179
  //# 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 { 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\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\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/>\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 || showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\tisLoading={isLoading}\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\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","searchValue","searchPlaceholder","filterOptions","filterPlaceholder","sortOptions","selectedSort","title","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","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 { 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 { 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\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 || showEmpty ? (\n\t\t\t\t\t<EmptyHolder>\n\t\t\t\t\t\t<ZeroState\n\t\t\t\t\t\t\tisLoading={isLoading}\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\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","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","EmptyHolder","ZeroState","jsxs","Fragment","AgentTable","TablePagination","opt","value","unwrapDropdownValue","DeleteAgentModal"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { AgentListItem, AgentListSortOption } from '@bikdotai/bik-models/ai-agents';
2
2
  import { ApplicationType } from '@bikdotai/bik-models/growth';
3
+ import { ReactNode } from 'react';
3
4
  import { ButtonProps } from '../button/model';
4
5
  import { DropdownOption } from '../dropdown/type';
5
6
  /**
@@ -40,6 +41,12 @@ export interface AgentListingConfig {
40
41
  selectedSort?: string;
41
42
  /** @default "AI Agents" */
42
43
  title?: string;
44
+ /**
45
+ * Consumer-supplied node rendered at the far-right end of the header row,
46
+ * after the "New AI agent" button (e.g. a broadcast icon + user avatar).
47
+ * The library only slots it in — the consumer owns its content and clicks.
48
+ */
49
+ headerActions?: ReactNode;
43
50
  pagination?: AgentListingPagination;
44
51
  emptyState?: {
45
52
  title?: string;
@@ -1,27 +1,26 @@
1
1
  import t from "styled-components";
2
2
  import { COLORS as i } from "../../constants/Theme.js";
3
- const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.div.attrs({ className: "bik-agent-listing-page" })`
3
+ const r = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", n = t.div.attrs({ className: "bik-agent-listing-page" })`
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  height: 100%;
7
7
  width: 100%;
8
8
  background: ${i.surface.standard};
9
9
  min-height: 0;
10
- `, d = t.div.attrs({ className: "bik-header-bar" })`
10
+ `, o = t.div.attrs({ className: "bik-header-bar" })`
11
11
  display: flex;
12
12
  align-items: center;
13
13
  justify-content: space-between;
14
- height: 56px;
15
14
  padding: 12px 16px;
16
15
  border-bottom: 1px solid ${i.stroke.primary};
17
16
  flex-shrink: 0;
18
- `, o = t.div.attrs({
17
+ `, l = t.div.attrs({
19
18
  className: "bik-header-actions"
20
19
  })`
21
20
  display: flex;
22
21
  align-items: center;
23
22
  gap: 8px;
24
- `, n = t.div.attrs({ className: "bik-filter-row" })`
23
+ `, d = t.div.attrs({ className: "bik-filter-row" })`
25
24
  display: flex;
26
25
  align-items: center;
27
26
  justify-content: space-between;
@@ -42,7 +41,7 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
42
41
  min-height: 0;
43
42
  padding: 16px;
44
43
  gap: 8px;
45
- `, x = t.div.attrs({ className: "bik-table-card" })`
44
+ `, m = t.div.attrs({ className: "bik-table-card" })`
46
45
  display: flex;
47
46
  flex-direction: column;
48
47
  flex: 1;
@@ -50,15 +49,15 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
50
49
  border: 1px solid ${i.stroke.primary};
51
50
  border-radius: 8px;
52
51
  overflow: hidden;
53
- `, m = t.div.attrs({ className: "bik-table-scroll" })`
52
+ `, x = t.div.attrs({ className: "bik-table-scroll" })`
54
53
  flex: 1;
55
54
  min-height: 0;
56
55
  overflow: auto;
57
- `, g = t.div.attrs({
56
+ `, b = t.div.attrs({
58
57
  className: "bik-header-grid-row"
59
58
  })`
60
59
  display: grid;
61
- grid-template-columns: ${a};
60
+ grid-template-columns: ${r};
62
61
  align-items: center;
63
62
  height: 40px;
64
63
  background: ${i.surface.subdued};
@@ -66,7 +65,7 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
66
65
  position: sticky;
67
66
  top: 0;
68
67
  z-index: 1;
69
- `, b = t.div.attrs({ className: "bik-header-cell" })`
68
+ `, g = t.div.attrs({ className: "bik-header-cell" })`
70
69
  padding: 8px 12px;
71
70
  text-align: ${(e) => e.align ?? "left"};
72
71
  display: flex;
@@ -75,7 +74,7 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
75
74
  className: "bik-body-grid-row"
76
75
  })`
77
76
  display: grid;
78
- grid-template-columns: ${a};
77
+ grid-template-columns: ${r};
79
78
  align-items: center;
80
79
  min-height: 72px;
81
80
  border-bottom: 1px solid ${i.stroke.primary};
@@ -98,6 +97,15 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
98
97
  border: 1px solid ${i.stroke.primary};
99
98
  border-radius: 4px;
100
99
  overflow: hidden;
100
+
101
+ /* Divider between actions. Owned here (not on ActionButton's own
102
+ :not(:last-child)) because the run action may be wrapped in a Tooltip
103
+ trigger <span> when disabled — then the button is no longer ActionGroup's
104
+ direct child, so a button-level rule would drop its border. Any empty
105
+ <style> sibling a Tooltip renders is display:none, so it draws nothing. */
106
+ & > *:not(:last-child) {
107
+ border-right: 1px solid ${i.stroke.primary};
108
+ }
101
109
  `, y = t.button.attrs({
102
110
  className: "bik-action-button"
103
111
  })`
@@ -112,10 +120,6 @@ const a = "minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px", l = t.d
112
120
  cursor: ${(e) => e.disabled ? "not-allowed" : "pointer"};
113
121
  opacity: ${(e) => e.disabled ? 0.4 : 1};
114
122
 
115
- &:not(:last-child) {
116
- border-right: 1px solid ${i.stroke.primary};
117
- }
118
-
119
123
  &:hover {
120
124
  background: ${(e) => e.disabled ? i.surface.standard : i.surface.subdued};
121
125
  }
@@ -131,15 +135,15 @@ export {
131
135
  f as BodyGridRow,
132
136
  u as Cell,
133
137
  k as EmptyHolder,
134
- n as FilterRow,
138
+ d as FilterRow,
135
139
  c as FilterRowLeft,
136
- o as HeaderActions,
137
- d as HeaderBar,
138
- b as HeaderCell,
139
- g as HeaderGridRow,
140
- l as Page,
141
- a as TABLE_GRID_COLUMNS,
142
- x as TableCard,
143
- m as TableScroll
140
+ l as HeaderActions,
141
+ o as HeaderBar,
142
+ g as HeaderCell,
143
+ b as HeaderGridRow,
144
+ n as Page,
145
+ r as TABLE_GRID_COLUMNS,
146
+ m as TableCard,
147
+ x as TableScroll
144
148
  };
145
149
  //# sourceMappingURL=AgentListing.styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentListing.styled.js","sources":["../../../../src/components/agent-listing/AgentListing.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\n/** Shared column template for header + body rows so they always align. */\nexport const TABLE_GRID_COLUMNS =\n\t'minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px';\n\nexport const Page = styled.div.attrs({ className: 'bik-agent-listing-page' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\twidth: 100%;\n\tbackground: ${COLORS.surface.standard};\n\tmin-height: 0;\n`;\n\nexport const HeaderBar = styled.div.attrs({ className: 'bik-header-bar' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\theight: 56px;\n\tpadding: 12px 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const HeaderActions = styled.div.attrs({\n\tclassName: 'bik-header-actions',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const FilterRow = styled.div.attrs({ className: 'bik-filter-row' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 12px;\n\tpadding: 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const FilterRowLeft = styled.div.attrs({\n\tclassName: 'bik-filter-row-left',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n`;\n\nexport const Body = styled.div.attrs({ className: 'bik-body' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n\tpadding: 16px;\n\tgap: 8px;\n`;\n\nexport const TableCard = styled.div.attrs({ className: 'bik-table-card' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 8px;\n\toverflow: hidden;\n`;\n\nexport const TableScroll = styled.div.attrs({ className: 'bik-table-scroll' })`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow: auto;\n`;\n\nexport const HeaderGridRow = styled.div.attrs({\n\tclassName: 'bik-header-grid-row',\n})`\n\tdisplay: grid;\n\tgrid-template-columns: ${TABLE_GRID_COLUMNS};\n\talign-items: center;\n\theight: 40px;\n\tbackground: ${COLORS.surface.subdued};\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n`;\n\nexport const HeaderCell = styled.div.attrs({ className: 'bik-header-cell' })<{\n\talign?: 'left' | 'right' | 'center';\n}>`\n\tpadding: 8px 12px;\n\ttext-align: ${(p) => p.align ?? 'left'};\n\tdisplay: flex;\n\tjustify-content: ${(p) =>\n\t\tp.align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: p.align === 'center'\n\t\t\t? 'center'\n\t\t\t: 'flex-start'};\n`;\n\nexport const BodyGridRow = styled.div.attrs({\n\tclassName: 'bik-body-grid-row',\n})<{ clickable?: boolean }>`\n\tdisplay: grid;\n\tgrid-template-columns: ${TABLE_GRID_COLUMNS};\n\talign-items: center;\n\tmin-height: 72px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tcursor: ${(p) => (p.clickable ? 'pointer' : 'default')};\n\n\t&:hover {\n\t\tbackground: ${(p) =>\n\t\t\tp.clickable ? COLORS.surface.subdued : 'transparent'};\n\t}\n`;\n\nexport const Cell = styled.div.attrs({ className: 'bik-cell' })<{\n\talign?: 'left' | 'right' | 'center';\n}>`\n\tpadding: 8px 12px;\n\tmin-width: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tjustify-content: center;\n\talign-items: ${(p) =>\n\t\tp.align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: p.align === 'center'\n\t\t\t? 'center'\n\t\t\t: 'flex-start'};\n`;\n\n/** Bordered icon-button group used in the Actions cell. */\nexport const ActionGroup = styled.div.attrs({ className: 'bik-action-group' })`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\toverflow: hidden;\n`;\n\nexport const ActionButton = styled.button.attrs({\n\tclassName: 'bik-action-button',\n})<{ disabled?: boolean }>`\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: ${COLORS.surface.standard};\n\tborder: none;\n\tpadding: 0;\n\tcursor: ${(p) => (p.disabled ? 'not-allowed' : 'pointer')};\n\topacity: ${(p) => (p.disabled ? 0.4 : 1)};\n\n\t&:not(:last-child) {\n\t\tborder-right: 1px solid ${COLORS.stroke.primary};\n\t}\n\n\t&:hover {\n\t\tbackground: ${(p) =>\n\t\t\tp.disabled ? COLORS.surface.standard : COLORS.surface.subdued};\n\t}\n`;\n\nexport const EmptyHolder = styled.div.attrs({ className: 'bik-empty-holder' })`\n\tflex: 1;\n\tdisplay: flex;\n\tmin-height: 0;\n`;\n"],"names":["TABLE_GRID_COLUMNS","Page","styled","COLORS","HeaderBar","HeaderActions","FilterRow","FilterRowLeft","Body","TableCard","TableScroll","HeaderGridRow","HeaderCell","p","BodyGridRow","Cell","ActionGroup","ActionButton","EmptyHolder"],"mappings":";;AAIO,MAAMA,IACZ,+DAEYC,IAAOC,EAAO,IAAI,MAAM,EAAE,WAAW,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA,eAK7DC,EAAO,QAAQ,QAAQ;AAAA;AAAA,GAIzBC,IAAYF,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAM7CC,EAAO,OAAO,OAAO;AAAA;AAAA,GAIpCE,IAAgBH,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA,GAMYI,IAAYJ,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAM7CC,EAAO,OAAO,OAAO;AAAA;AAAA,GAIpCI,IAAgBL,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA,GAMYM,IAAON,EAAO,IAAI,MAAM,EAAE,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASjDO,IAAYP,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKpDC,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA,GAK7BO,IAAcR,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA;AAAA,GAMhES,IAAgBT,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA,0BAEyBF,CAAkB;AAAA;AAAA;AAAA,eAG7BG,EAAO,QAAQ,OAAO;AAAA,4BACTA,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,GAMpCS,IAAaV,EAAO,IAAI,MAAM,EAAE,WAAW,mBAAmB;AAAA;AAAA,eAI5D,CAACW,MAAMA,EAAE,SAAS,MAAM;AAAA;AAAA,oBAEnB,CAACA,MACnBA,EAAE,UAAU,UACT,aACAA,EAAE,UAAU,WACZ,WACA,YAAY;AAAA,GAGJC,IAAcZ,EAAO,IAAI,MAAM;AAAA,EAC3C,WAAW;AACZ,CAAC;AAAA;AAAA,0BAEyBF,CAAkB;AAAA;AAAA;AAAA,4BAGhBG,EAAO,OAAO,OAAO;AAAA,WACtC,CAACU,MAAOA,EAAE,YAAY,YAAY,SAAU;AAAA;AAAA;AAAA,gBAGvC,CAACA,MACdA,EAAE,YAAYV,EAAO,QAAQ,UAAU,aAAa;AAAA;AAAA,GAI1CY,IAAOb,EAAO,IAAI,MAAM,EAAE,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAS9C,CAACW,MACfA,EAAE,UAAU,UACT,aACAA,EAAE,UAAU,WACZ,WACA,YAAY;AAAA,GAIJG,IAAcd,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA,qBAGxDC,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA,GAK7Bc,IAAef,EAAO,OAAO,MAAM;AAAA,EAC/C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMcC,EAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA,WAG3B,CAACU,MAAOA,EAAE,WAAW,gBAAgB,SAAU;AAAA,YAC9C,CAACA,MAAOA,EAAE,WAAW,MAAM,CAAE;AAAA;AAAA;AAAA,4BAGbV,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,gBAIjC,CAACU,MACdA,EAAE,WAAWV,EAAO,QAAQ,WAAWA,EAAO,QAAQ,OAAO;AAAA;AAAA,GAInDe,IAAchB,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"AgentListing.styled.js","sources":["../../../../src/components/agent-listing/AgentListing.styled.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '@src/constants/Theme';\n\n/** Shared column template for header + body rows so they always align. */\nexport const TABLE_GRID_COLUMNS =\n\t'minmax(240px, 1.4fr) minmax(200px, 1.2fr) 140px 160px 120px';\n\nexport const Page = styled.div.attrs({ className: 'bik-agent-listing-page' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\twidth: 100%;\n\tbackground: ${COLORS.surface.standard};\n\tmin-height: 0;\n`;\n\nexport const HeaderBar = styled.div.attrs({ className: 'bik-header-bar' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 12px 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const HeaderActions = styled.div.attrs({\n\tclassName: 'bik-header-actions',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 8px;\n`;\n\nexport const FilterRow = styled.div.attrs({ className: 'bik-filter-row' })`\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 12px;\n\tpadding: 16px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tflex-shrink: 0;\n`;\n\nexport const FilterRowLeft = styled.div.attrs({\n\tclassName: 'bik-filter-row-left',\n})`\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 12px;\n`;\n\nexport const Body = styled.div.attrs({ className: 'bik-body' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n\tpadding: 16px;\n\tgap: 8px;\n`;\n\nexport const TableCard = styled.div.attrs({ className: 'bik-table-card' })`\n\tdisplay: flex;\n\tflex-direction: column;\n\tflex: 1;\n\tmin-height: 0;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 8px;\n\toverflow: hidden;\n`;\n\nexport const TableScroll = styled.div.attrs({ className: 'bik-table-scroll' })`\n\tflex: 1;\n\tmin-height: 0;\n\toverflow: auto;\n`;\n\nexport const HeaderGridRow = styled.div.attrs({\n\tclassName: 'bik-header-grid-row',\n})`\n\tdisplay: grid;\n\tgrid-template-columns: ${TABLE_GRID_COLUMNS};\n\talign-items: center;\n\theight: 40px;\n\tbackground: ${COLORS.surface.subdued};\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 1;\n`;\n\nexport const HeaderCell = styled.div.attrs({ className: 'bik-header-cell' })<{\n\talign?: 'left' | 'right' | 'center';\n}>`\n\tpadding: 8px 12px;\n\ttext-align: ${(p) => p.align ?? 'left'};\n\tdisplay: flex;\n\tjustify-content: ${(p) =>\n\t\tp.align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: p.align === 'center'\n\t\t\t? 'center'\n\t\t\t: 'flex-start'};\n`;\n\nexport const BodyGridRow = styled.div.attrs({\n\tclassName: 'bik-body-grid-row',\n})<{ clickable?: boolean }>`\n\tdisplay: grid;\n\tgrid-template-columns: ${TABLE_GRID_COLUMNS};\n\talign-items: center;\n\tmin-height: 72px;\n\tborder-bottom: 1px solid ${COLORS.stroke.primary};\n\tcursor: ${(p) => (p.clickable ? 'pointer' : 'default')};\n\n\t&:hover {\n\t\tbackground: ${(p) =>\n\t\t\tp.clickable ? COLORS.surface.subdued : 'transparent'};\n\t}\n`;\n\nexport const Cell = styled.div.attrs({ className: 'bik-cell' })<{\n\talign?: 'left' | 'right' | 'center';\n}>`\n\tpadding: 8px 12px;\n\tmin-width: 0;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n\tjustify-content: center;\n\talign-items: ${(p) =>\n\t\tp.align === 'right'\n\t\t\t? 'flex-end'\n\t\t\t: p.align === 'center'\n\t\t\t? 'center'\n\t\t\t: 'flex-start'};\n`;\n\n/** Bordered icon-button group used in the Actions cell. */\nexport const ActionGroup = styled.div.attrs({ className: 'bik-action-group' })`\n\tdisplay: inline-flex;\n\talign-items: center;\n\tborder: 1px solid ${COLORS.stroke.primary};\n\tborder-radius: 4px;\n\toverflow: hidden;\n\n\t/* Divider between actions. Owned here (not on ActionButton's own\n\t :not(:last-child)) because the run action may be wrapped in a Tooltip\n\t trigger <span> when disabled — then the button is no longer ActionGroup's\n\t direct child, so a button-level rule would drop its border. Any empty\n\t <style> sibling a Tooltip renders is display:none, so it draws nothing. */\n\t& > *:not(:last-child) {\n\t\tborder-right: 1px solid ${COLORS.stroke.primary};\n\t}\n`;\n\nexport const ActionButton = styled.button.attrs({\n\tclassName: 'bik-action-button',\n})<{ disabled?: boolean }>`\n\twidth: 32px;\n\theight: 32px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: ${COLORS.surface.standard};\n\tborder: none;\n\tpadding: 0;\n\tcursor: ${(p) => (p.disabled ? 'not-allowed' : 'pointer')};\n\topacity: ${(p) => (p.disabled ? 0.4 : 1)};\n\n\t&:hover {\n\t\tbackground: ${(p) =>\n\t\t\tp.disabled ? COLORS.surface.standard : COLORS.surface.subdued};\n\t}\n`;\n\nexport const EmptyHolder = styled.div.attrs({ className: 'bik-empty-holder' })`\n\tflex: 1;\n\tdisplay: flex;\n\tmin-height: 0;\n`;\n"],"names":["TABLE_GRID_COLUMNS","Page","styled","COLORS","HeaderBar","HeaderActions","FilterRow","FilterRowLeft","Body","TableCard","TableScroll","HeaderGridRow","HeaderCell","p","BodyGridRow","Cell","ActionGroup","ActionButton","EmptyHolder"],"mappings":";;AAIO,MAAMA,IACZ,+DAEYC,IAAOC,EAAO,IAAI,MAAM,EAAE,WAAW,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA,eAK7DC,EAAO,QAAQ,QAAQ;AAAA;AAAA,GAIzBC,IAAYF,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,4BAK7CC,EAAO,OAAO,OAAO;AAAA;AAAA,GAIpCE,IAAgBH,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA,GAMYI,IAAYJ,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAM7CC,EAAO,OAAO,OAAO;AAAA;AAAA,GAIpCI,IAAgBL,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA,GAMYM,IAAON,EAAO,IAAI,MAAM,EAAE,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASjDO,IAAYP,EAAO,IAAI,MAAM,EAAE,WAAW,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKpDC,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA,GAK7BO,IAAcR,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA;AAAA,GAMhES,IAAgBT,EAAO,IAAI,MAAM;AAAA,EAC7C,WAAW;AACZ,CAAC;AAAA;AAAA,0BAEyBF,CAAkB;AAAA;AAAA;AAAA,eAG7BG,EAAO,QAAQ,OAAO;AAAA,4BACTA,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,GAMpCS,IAAaV,EAAO,IAAI,MAAM,EAAE,WAAW,mBAAmB;AAAA;AAAA,eAI5D,CAACW,MAAMA,EAAE,SAAS,MAAM;AAAA;AAAA,oBAEnB,CAACA,MACnBA,EAAE,UAAU,UACT,aACAA,EAAE,UAAU,WACZ,WACA,YAAY;AAAA,GAGJC,IAAcZ,EAAO,IAAI,MAAM;AAAA,EAC3C,WAAW;AACZ,CAAC;AAAA;AAAA,0BAEyBF,CAAkB;AAAA;AAAA;AAAA,4BAGhBG,EAAO,OAAO,OAAO;AAAA,WACtC,CAACU,MAAOA,EAAE,YAAY,YAAY,SAAU;AAAA;AAAA;AAAA,gBAGvC,CAACA,MACdA,EAAE,YAAYV,EAAO,QAAQ,UAAU,aAAa;AAAA;AAAA,GAI1CY,IAAOb,EAAO,IAAI,MAAM,EAAE,WAAW,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAS9C,CAACW,MACfA,EAAE,UAAU,UACT,aACAA,EAAE,UAAU,WACZ,WACA,YAAY;AAAA,GAIJG,IAAcd,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA,qBAGxDC,EAAO,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAUdA,EAAO,OAAO,OAAO;AAAA;AAAA,GAIpCc,IAAef,EAAO,OAAO,MAAM;AAAA,EAC/C,WAAW;AACZ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMcC,EAAO,QAAQ,QAAQ;AAAA;AAAA;AAAA,WAG3B,CAACU,MAAOA,EAAE,WAAW,gBAAgB,SAAU;AAAA,YAC9C,CAACA,MAAOA,EAAE,WAAW,MAAM,CAAE;AAAA;AAAA;AAAA,gBAGzB,CAACA,MACdA,EAAE,WAAWV,EAAO,QAAQ,WAAWA,EAAO,QAAQ,OAAO;AAAA;AAAA,GAInDe,IAAchB,EAAO,IAAI,MAAM,EAAE,WAAW,oBAAoB;AAAA;AAAA;AAAA;AAAA;"}
@@ -3,6 +3,8 @@ interface AgentListingHeaderProps {
3
3
  title: string;
4
4
  onNewAgent: () => void;
5
5
  onBrowseTemplates?: () => void;
6
+ /** Consumer node rendered after the "New AI agent" button (e.g. broadcast + avatar). */
7
+ headerActions?: React.ReactNode;
6
8
  }
7
9
  export declare const AgentListingHeader: React.FC<AgentListingHeaderProps>;
8
10
  export {};
@@ -1,16 +1,17 @@
1
1
  import { jsxs as o, jsx as t } from "react/jsx-runtime";
2
- import a from "../../assets/icons/plus.svg.js";
3
- import { TitleMedium as m } from "../TypographyStyle.js";
4
- import { COLORS as s } from "../../constants/Theme.js";
5
- import { HeaderBar as l, HeaderActions as p } from "./AgentListing.styled.js";
2
+ import m from "../../assets/icons/plus.svg.js";
3
+ import { TitleMedium as s } from "../TypographyStyle.js";
4
+ import { COLORS as l } from "../../constants/Theme.js";
5
+ import { HeaderBar as p, HeaderActions as c } from "./AgentListing.styled.js";
6
6
  import { Button as r } from "../button/Button.js";
7
- const x = ({
7
+ const y = ({
8
8
  title: n,
9
9
  onNewAgent: i,
10
- onBrowseTemplates: e
11
- }) => /* @__PURE__ */ o(l, { children: [
12
- /* @__PURE__ */ t(m, { color: s.content.primary, children: n }),
13
- /* @__PURE__ */ o(p, { children: [
10
+ onBrowseTemplates: e,
11
+ headerActions: a
12
+ }) => /* @__PURE__ */ o(p, { children: [
13
+ /* @__PURE__ */ t(s, { color: l.content.primary, children: n }),
14
+ /* @__PURE__ */ o(c, { children: [
14
15
  e && /* @__PURE__ */ t(
15
16
  r,
16
17
  {
@@ -28,13 +29,14 @@ const x = ({
28
29
  buttonType: "primary",
29
30
  size: "small",
30
31
  buttonText: "New AI agent",
31
- LeadingIcon: a,
32
+ LeadingIcon: m,
32
33
  onClick: i
33
34
  }
34
- )
35
+ ),
36
+ a
35
37
  ] })
36
38
  ] });
37
39
  export {
38
- x as AgentListingHeader
40
+ y as AgentListingHeader
39
41
  };
40
42
  //# sourceMappingURL=AgentListingHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentListingHeader.js","sources":["../../../../src/components/agent-listing/AgentListingHeader.tsx"],"sourcesContent":["import PlusIcon from '@src/assets/icons/plus.svg';\nimport React from 'react';\nimport { Button } from '@src/components/button';\nimport { TitleMedium } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { HeaderActions, HeaderBar } from './AgentListing.styled';\n\ninterface AgentListingHeaderProps {\n\ttitle: string;\n\tonNewAgent: () => void;\n\tonBrowseTemplates?: () => void;\n}\n\nexport const AgentListingHeader: React.FC<AgentListingHeaderProps> = ({\n\ttitle,\n\tonNewAgent,\n\tonBrowseTemplates,\n}) => (\n\t<HeaderBar>\n\t\t<TitleMedium color={COLORS.content.primary}>{title}</TitleMedium>\n\t\t<HeaderActions>\n\t\t\t{onBrowseTemplates && (\n\t\t\t\t<Button\n\t\t\t\t\tdata-test=\"agent-browse-templates\"\n\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tbuttonText=\"Browse templates\"\n\t\t\t\t\tonClick={onBrowseTemplates}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Button\n\t\t\t\tdata-test=\"agent-new\"\n\t\t\t\tbuttonType=\"primary\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tbuttonText=\"New AI agent\"\n\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\tonClick={onNewAgent}\n\t\t\t/>\n\t\t</HeaderActions>\n\t</HeaderBar>\n);\n"],"names":["AgentListingHeader","title","onNewAgent","onBrowseTemplates","HeaderBar","jsx","TitleMedium","COLORS","HeaderActions","Button","PlusIcon"],"mappings":";;;;;;AAaO,MAAMA,IAAwD,CAAC;AAAA,EACrE,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,mBAAAC;AACD,wBACEC,GAAA,EACA,UAAA;AAAA,EAAA,gBAAAC,EAACC,GAAA,EAAY,OAAOC,EAAO,QAAQ,SAAU,UAAAN,GAAM;AAAA,oBAClDO,GAAA,EACC,UAAA;AAAA,IAAAL,KACA,gBAAAE;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,YAAW;AAAA,QACX,MAAK;AAAA,QACL,YAAW;AAAA,QACX,SAASN;AAAA,MAAA;AAAA,IAAA;AAAA,IAGX,gBAAAE;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,YAAW;AAAA,QACX,MAAK;AAAA,QACL,YAAW;AAAA,QACX,aAAaC;AAAAA,QACb,SAASR;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,EAAA,CACD;AAAA,EAAA,CACD;"}
1
+ {"version":3,"file":"AgentListingHeader.js","sources":["../../../../src/components/agent-listing/AgentListingHeader.tsx"],"sourcesContent":["import PlusIcon from '@src/assets/icons/plus.svg';\nimport React from 'react';\nimport { Button } from '@src/components/button';\nimport { TitleMedium } from '@src/components/TypographyStyle';\nimport { COLORS } from '@src/constants/Theme';\nimport { HeaderActions, HeaderBar } from './AgentListing.styled';\n\ninterface AgentListingHeaderProps {\n\ttitle: string;\n\tonNewAgent: () => void;\n\tonBrowseTemplates?: () => void;\n\t/** Consumer node rendered after the \"New AI agent\" button (e.g. broadcast + avatar). */\n\theaderActions?: React.ReactNode;\n}\n\nexport const AgentListingHeader: React.FC<AgentListingHeaderProps> = ({\n\ttitle,\n\tonNewAgent,\n\tonBrowseTemplates,\n\theaderActions,\n}) => (\n\t<HeaderBar>\n\t\t<TitleMedium color={COLORS.content.primary}>{title}</TitleMedium>\n\t\t<HeaderActions>\n\t\t\t{onBrowseTemplates && (\n\t\t\t\t<Button\n\t\t\t\t\tdata-test=\"agent-browse-templates\"\n\t\t\t\t\tbuttonType=\"secondary\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tbuttonText=\"Browse templates\"\n\t\t\t\t\tonClick={onBrowseTemplates}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Button\n\t\t\t\tdata-test=\"agent-new\"\n\t\t\t\tbuttonType=\"primary\"\n\t\t\t\tsize=\"small\"\n\t\t\t\tbuttonText=\"New AI agent\"\n\t\t\t\tLeadingIcon={PlusIcon}\n\t\t\t\tonClick={onNewAgent}\n\t\t\t/>\n\t\t\t{headerActions}\n\t\t</HeaderActions>\n\t</HeaderBar>\n);\n"],"names":["AgentListingHeader","title","onNewAgent","onBrowseTemplates","headerActions","HeaderBar","jsx","TitleMedium","COLORS","HeaderActions","Button","PlusIcon"],"mappings":";;;;;;AAeO,MAAMA,IAAwD,CAAC;AAAA,EACrE,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AACD,wBACEC,GAAA,EACA,UAAA;AAAA,EAAA,gBAAAC,EAACC,GAAA,EAAY,OAAOC,EAAO,QAAQ,SAAU,UAAAP,GAAM;AAAA,oBAClDQ,GAAA,EACC,UAAA;AAAA,IAAAN,KACA,gBAAAG;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,YAAW;AAAA,QACX,MAAK;AAAA,QACL,YAAW;AAAA,QACX,SAASP;AAAA,MAAA;AAAA,IAAA;AAAA,IAGX,gBAAAG;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,aAAU;AAAA,QACV,YAAW;AAAA,QACX,MAAK;AAAA,QACL,YAAW;AAAA,QACX,aAAaC;AAAAA,QACb,SAAST;AAAA,MAAA;AAAA,IAAA;AAAA,IAETE;AAAA,EAAA,EAAA,CACF;AAAA,EAAA,CACD;"}