@iblai/web-containers 1.62.1 → 1.62.3

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 (97) hide show
  1. package/dist/cjs/components/chat/index.js +38 -10
  2. package/dist/cjs/components/chat/index.js.map +1 -1
  3. package/dist/cjs/components/chat-input-form.js +2 -2
  4. package/dist/cjs/components/chat-input-form.js.map +1 -1
  5. package/dist/cjs/components/hooks/use-google-drive-picker.js +164 -53
  6. package/dist/cjs/components/hooks/use-google-drive-picker.js.map +1 -1
  7. package/dist/cjs/components/modals/edit-mentor-modal/tabs/datasets-tab/add-resource-modal.js +3 -2
  8. package/dist/cjs/components/modals/edit-mentor-modal/tabs/datasets-tab/add-resource-modal.js.map +1 -1
  9. package/dist/cjs/components/profile/billing.js +9 -3
  10. package/dist/cjs/components/profile/billing.js.map +1 -1
  11. package/dist/cjs/components/spend-caps/agent-limits-section.js +3 -5
  12. package/dist/cjs/components/spend-caps/agent-limits-section.js.map +1 -1
  13. package/dist/cjs/components/spend-caps/labels.js +74 -0
  14. package/dist/cjs/components/spend-caps/labels.js.map +1 -1
  15. package/dist/cjs/components/spend-caps/new-user-default-section.js +80 -0
  16. package/dist/cjs/components/spend-caps/new-user-default-section.js.map +1 -0
  17. package/dist/cjs/components/spend-caps/row-icon-action.js +18 -0
  18. package/dist/cjs/components/spend-caps/row-icon-action.js.map +1 -0
  19. package/dist/cjs/components/spend-caps/spend-cap-fields.js +25 -0
  20. package/dist/cjs/components/spend-caps/spend-cap-fields.js.map +1 -0
  21. package/dist/cjs/components/spend-caps/spend-cap-form.js +20 -22
  22. package/dist/cjs/components/spend-caps/spend-cap-form.js.map +1 -1
  23. package/dist/cjs/components/spend-caps/spend-cap-usage.js +1 -0
  24. package/dist/cjs/components/spend-caps/spend-cap-usage.js.map +1 -1
  25. package/dist/cjs/components/spend-caps/use-platform-user-options.js +41 -0
  26. package/dist/cjs/components/spend-caps/use-platform-user-options.js.map +1 -0
  27. package/dist/cjs/components/spend-caps/use-spend-cap-status.js +26 -0
  28. package/dist/cjs/components/spend-caps/use-spend-cap-status.js.map +1 -0
  29. package/dist/cjs/components/spend-caps/use-spend-caps.js +6 -16
  30. package/dist/cjs/components/spend-caps/use-spend-caps.js.map +1 -1
  31. package/dist/cjs/components/spend-caps/user-cap-modal.js +8 -32
  32. package/dist/cjs/components/spend-caps/user-cap-modal.js.map +1 -1
  33. package/dist/cjs/components/spend-caps/user-limits-section.js +119 -0
  34. package/dist/cjs/components/spend-caps/user-limits-section.js.map +1 -0
  35. package/dist/cjs/components/spend-caps/utils.js +15 -0
  36. package/dist/cjs/components/spend-caps/utils.js.map +1 -1
  37. package/dist/cjs/i18n/messages/en.json.js +45 -5
  38. package/dist/cjs/i18n/messages/en.json.js.map +1 -1
  39. package/dist/cjs/i18n/messages/es.json.js +45 -5
  40. package/dist/cjs/i18n/messages/es.json.js.map +1 -1
  41. package/dist/cjs/i18n/messages/fr.json.js +45 -5
  42. package/dist/cjs/i18n/messages/fr.json.js.map +1 -1
  43. package/dist/cjs/i18n/messages/zh.json.js +45 -5
  44. package/dist/cjs/i18n/messages/zh.json.js.map +1 -1
  45. package/dist/cjs/web-containers/tsconfig.build.tsbuildinfo +1 -1
  46. package/dist/esm/_virtual/index2.js +2 -2
  47. package/dist/esm/_virtual/index3.js +2 -2
  48. package/dist/esm/components/chat/index.js +39 -11
  49. package/dist/esm/components/chat/index.js.map +1 -1
  50. package/dist/esm/components/chat-input-form.js +2 -2
  51. package/dist/esm/components/chat-input-form.js.map +1 -1
  52. package/dist/esm/components/hooks/use-google-drive-picker.js +158 -54
  53. package/dist/esm/components/hooks/use-google-drive-picker.js.map +1 -1
  54. package/dist/esm/components/modals/edit-mentor-modal/tabs/datasets-tab/add-resource-modal.js +3 -2
  55. package/dist/esm/components/modals/edit-mentor-modal/tabs/datasets-tab/add-resource-modal.js.map +1 -1
  56. package/dist/esm/components/profile/billing.js +9 -3
  57. package/dist/esm/components/profile/billing.js.map +1 -1
  58. package/dist/esm/components/spend-caps/agent-limits-section.js +3 -5
  59. package/dist/esm/components/spend-caps/agent-limits-section.js.map +1 -1
  60. package/dist/esm/components/spend-caps/labels.js +74 -0
  61. package/dist/esm/components/spend-caps/labels.js.map +1 -1
  62. package/dist/esm/components/spend-caps/new-user-default-section.js +78 -0
  63. package/dist/esm/components/spend-caps/new-user-default-section.js.map +1 -0
  64. package/dist/esm/components/spend-caps/row-icon-action.js +16 -0
  65. package/dist/esm/components/spend-caps/row-icon-action.js.map +1 -0
  66. package/dist/esm/components/spend-caps/spend-cap-fields.js +23 -0
  67. package/dist/esm/components/spend-caps/spend-cap-fields.js.map +1 -0
  68. package/dist/esm/components/spend-caps/spend-cap-form.js +21 -23
  69. package/dist/esm/components/spend-caps/spend-cap-form.js.map +1 -1
  70. package/dist/esm/components/spend-caps/spend-cap-usage.js +1 -0
  71. package/dist/esm/components/spend-caps/spend-cap-usage.js.map +1 -1
  72. package/dist/esm/components/spend-caps/use-platform-user-options.js +39 -0
  73. package/dist/esm/components/spend-caps/use-platform-user-options.js.map +1 -0
  74. package/dist/esm/components/spend-caps/use-spend-cap-status.js +23 -0
  75. package/dist/esm/components/spend-caps/use-spend-cap-status.js.map +1 -0
  76. package/dist/esm/components/spend-caps/use-spend-caps.js +1 -11
  77. package/dist/esm/components/spend-caps/use-spend-caps.js.map +1 -1
  78. package/dist/esm/components/spend-caps/user-cap-modal.js +8 -32
  79. package/dist/esm/components/spend-caps/user-cap-modal.js.map +1 -1
  80. package/dist/esm/components/spend-caps/user-limits-section.js +117 -0
  81. package/dist/esm/components/spend-caps/user-limits-section.js.map +1 -0
  82. package/dist/esm/components/spend-caps/utils.js +14 -1
  83. package/dist/esm/components/spend-caps/utils.js.map +1 -1
  84. package/dist/esm/i18n/messages/en.json.js +45 -5
  85. package/dist/esm/i18n/messages/en.json.js.map +1 -1
  86. package/dist/esm/i18n/messages/es.json.js +45 -5
  87. package/dist/esm/i18n/messages/es.json.js.map +1 -1
  88. package/dist/esm/i18n/messages/fr.json.js +45 -5
  89. package/dist/esm/i18n/messages/fr.json.js.map +1 -1
  90. package/dist/esm/i18n/messages/zh.json.js +45 -5
  91. package/dist/esm/i18n/messages/zh.json.js.map +1 -1
  92. package/dist/esm/node_modules/.pnpm/css-mediaquery@0.1.2/node_modules/css-mediaquery/index.js +1 -1
  93. package/dist/esm/node_modules/.pnpm/matchmediaquery@0.4.2/node_modules/matchmediaquery/index.js +1 -1
  94. package/dist/esm/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
  95. package/dist/esm/web-containers/tsconfig.build.tsbuildinfo +1 -1
  96. package/dist/package.json +1 -1
  97. package/package.json +3 -3
@@ -3,41 +3,41 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var capabilityGate = require('../modals/edit-mentor-modal/capability-gate.js');
6
- var input = require('../ui/input.js');
7
- var label = require('../ui/label.js');
8
- var select = require('../ui/select.js');
6
+ var spendCapFields = require('./spend-cap-fields.js');
9
7
  var utils = require('./utils.js');
10
8
 
9
+ function fieldsFrom(cap) {
10
+ var _a, _b;
11
+ return {
12
+ limit: cap ? String(Number(cap.max_cost_usd)) : '',
13
+ interval: (_a = cap === null || cap === void 0 ? void 0 : cap.interval_type) !== null && _a !== void 0 ? _a : 'month',
14
+ enforcement: (_b = cap === null || cap === void 0 ? void 0 : cap.enforcement) !== null && _b !== void 0 ? _b : 'block',
15
+ thresholds: cap ? utils.thresholdsToInput(cap.alert_thresholds) : '80, 95',
16
+ };
17
+ }
11
18
  /**
12
19
  * Editor for one spend cap of any scope. Counter fields
13
20
  * (current spend / remaining / exceeded) are read-only on the backend and
14
21
  * only rendered, never submitted.
15
22
  */
16
23
  function SpendCapForm({ labels, cap, isSaving, isDeleting, onSave, onDelete, onCancel, showUsage = true, testId, }) {
17
- const [limit, setLimit] = React.useState('');
18
- const [interval, setInterval] = React.useState('month');
19
- const [enforcement, setEnforcement] = React.useState('block');
20
- const [thresholds, setThresholds] = React.useState('80, 95');
24
+ const [fields, setFields] = React.useState(() => fieldsFrom(cap));
21
25
  const [enabled, setEnabled] = React.useState(true);
22
26
  // Rehydrate the form whenever the server copy changes.
23
27
  React.useEffect(() => {
24
- var _a, _b, _c;
25
- setLimit(cap ? String(Number(cap.max_cost_usd)) : '');
26
- setInterval((_a = cap === null || cap === void 0 ? void 0 : cap.interval_type) !== null && _a !== void 0 ? _a : 'month');
27
- setEnforcement((_b = cap === null || cap === void 0 ? void 0 : cap.enforcement) !== null && _b !== void 0 ? _b : 'block');
28
- setThresholds(cap ? utils.thresholdsToInput(cap.alert_thresholds) : '80, 95');
29
- setEnabled((_c = cap === null || cap === void 0 ? void 0 : cap.enabled) !== null && _c !== void 0 ? _c : true);
28
+ var _a;
29
+ setFields(fieldsFrom(cap));
30
+ setEnabled((_a = cap === null || cap === void 0 ? void 0 : cap.enabled) !== null && _a !== void 0 ? _a : true);
30
31
  }, [cap === null || cap === void 0 ? void 0 : cap.id, cap === null || cap === void 0 ? void 0 : cap.updated_at]); // eslint-disable-line react-hooks/exhaustive-deps
31
- const limitTouched = limit.trim() !== '';
32
- const limitValid = utils.isValidLimit(limit);
33
- const parsedThresholds = utils.parseThresholdsInput(thresholds);
32
+ const limitValid = utils.isValidLimit(fields.limit);
33
+ const parsedThresholds = utils.parseThresholdsInput(fields.thresholds);
34
34
  const thresholdsValid = parsedThresholds !== null;
35
35
  const canSave = limitValid && thresholdsValid && !isSaving && !isDeleting;
36
36
  const handleSave = () => {
37
37
  const formData = {
38
- interval_type: interval,
39
- max_cost_usd: Number(limit).toFixed(2),
40
- enforcement,
38
+ interval_type: fields.interval,
39
+ max_cost_usd: Number(fields.limit).toFixed(2),
40
+ enforcement: fields.enforcement,
41
41
  enabled,
42
42
  };
43
43
  if (parsedThresholds && parsedThresholds.length > 0) {
@@ -51,9 +51,7 @@ function SpendCapForm({ labels, cap, isSaving, isDeleting, onSave, onDelete, onC
51
51
  : usagePercent >= 80
52
52
  ? 'bg-amber-500'
53
53
  : 'bg-blue-500';
54
- return (jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": `${testId}-form`, children: [!cap && (jsxRuntime.jsx("p", { className: "text-xs text-gray-500", "data-testid": `${testId}-no-cap-hint`, children: labels.form.noCapHint })), jsxRuntime.jsx(capabilityGate.CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: enabled, onToggle: setEnabled, disabled: isSaving || isDeleting, ariaLabel: labels.capability.title, toggleTestId: `${testId}-enabled-switch`, children: jsxRuntime.jsxs("div", { className: "space-y-4", children: [cap && showUsage && (jsxRuntime.jsxs("div", { className: "space-y-2 rounded-lg border border-gray-200 bg-gray-50 p-3", "data-testid": `${testId}-usage`, children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntime.jsx("p", { className: "text-xs font-medium text-gray-700", children: labels.usage.periodTitles[cap.interval_type] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [!cap.enabled && (jsxRuntime.jsx("span", { className: "rounded-full bg-gray-200 px-2 py-0.5 text-[11px] font-medium text-gray-700", "data-testid": `${testId}-disabled-badge`, children: labels.usage.disabledBadge })), cap.enforcement === 'alert_only' && (jsxRuntime.jsx("span", { className: "rounded-full bg-amber-100 px-2 py-0.5 text-[11px] font-medium text-amber-800", "data-testid": `${testId}-alert-only-badge`, children: labels.usage.alertOnlyBadge })), cap.is_exceeded && (jsxRuntime.jsx("span", { className: "rounded-full bg-red-100 px-2 py-0.5 text-[11px] font-medium text-red-700", "data-testid": `${testId}-exceeded-badge`, children: labels.usage.exceededBadge }))] })] }), jsxRuntime.jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", role: "progressbar", "aria-valuenow": usagePercent, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": labels.usage.title, children: jsxRuntime.jsx("div", { className: `h-full rounded-full transition-all ${barColor}`, style: { width: `${usagePercent}%` } }) }), jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs text-gray-600", children: [jsxRuntime.jsx("span", { "data-testid": `${testId}-spent`, children: labels.usage.spent.replace('{amount}', utils.formatUsd(cap.current_spend_usd)) }), jsxRuntime.jsx("span", { "data-testid": `${testId}-percent`, children: labels.usage.percentUsed.replace('{percent}', String(usagePercent)) }), jsxRuntime.jsx("span", { "data-testid": `${testId}-remaining`, children: labels.usage.remaining.replace('{amount}', utils.formatUsd(cap.remaining_usd)) })] })] })), jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsx(label.Label, { className: "text-xs font-medium text-gray-700", children: labels.form.limitLabel }), jsxRuntime.jsx(input.Input, { className: "focus-visible:border-blue-500 focus-visible:ring-1 focus-visible:ring-blue-500", value: limit, onChange: (e) => setLimit(e.target.value), placeholder: labels.form.limitPlaceholder, inputMode: "decimal", "data-testid": `${testId}-limit-input` }), limitTouched && !limitValid && (jsxRuntime.jsx("p", { className: "text-xs text-red-500", "data-testid": `${testId}-limit-error`, children: labels.form.limitError }))] }), jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsx(label.Label, { className: "text-xs font-medium text-gray-700", children: labels.form.intervalLabel }), jsxRuntime.jsxs(select.Select, { value: interval, onValueChange: (value) => setInterval(value), children: [jsxRuntime.jsx(select.SelectTrigger, { className: "h-9", "data-testid": `${testId}-interval-select`, children: jsxRuntime.jsx(select.SelectValue, {}) }), jsxRuntime.jsxs(select.SelectContent, { children: [jsxRuntime.jsx(select.SelectItem, { value: "day", children: labels.form.intervalOptions.day }), jsxRuntime.jsx(select.SelectItem, { value: "week", children: labels.form.intervalOptions.week }), jsxRuntime.jsx(select.SelectItem, { value: "month", children: labels.form.intervalOptions.month }), jsxRuntime.jsx(select.SelectItem, { value: "year", children: labels.form.intervalOptions.year })] })] })] })] }), jsxRuntime.jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsx(label.Label, { className: "text-xs font-medium text-gray-700", children: labels.form.enforcementLabel }), jsxRuntime.jsxs(select.Select, { value: enforcement, onValueChange: (value) => setEnforcement(value), children: [jsxRuntime.jsx(select.SelectTrigger, { className: "h-9", "data-testid": `${testId}-enforcement-select`, children: jsxRuntime.jsx(select.SelectValue, {}) }), jsxRuntime.jsxs(select.SelectContent, { children: [jsxRuntime.jsx(select.SelectItem, { value: "block", children: labels.form.enforcementOptions.block }), jsxRuntime.jsx(select.SelectItem, { value: "alert_only", children: labels.form.enforcementOptions.alertOnly })] })] }), jsxRuntime.jsx("p", { className: "text-xs text-gray-500", children: enforcement === 'block'
55
- ? labels.form.enforcementHelp.block
56
- : labels.form.enforcementHelp.alertOnly })] }), jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [jsxRuntime.jsx(label.Label, { className: "text-xs font-medium text-gray-700", children: labels.form.thresholdsLabel }), jsxRuntime.jsx(input.Input, { className: "focus-visible:border-blue-500 focus-visible:ring-1 focus-visible:ring-blue-500", value: thresholds, onChange: (e) => setThresholds(e.target.value), placeholder: labels.form.thresholdsPlaceholder, "data-testid": `${testId}-thresholds-input` }), thresholdsValid ? (jsxRuntime.jsx("p", { className: "text-xs text-gray-500", children: labels.form.thresholdsHelp })) : (jsxRuntime.jsx("p", { className: "text-xs text-red-500", "data-testid": `${testId}-thresholds-error`, children: labels.form.thresholdsError }))] })] })] }) }), jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2", children: [onCancel && (jsxRuntime.jsx("button", { type: "button", onClick: onCancel, disabled: isSaving || isDeleting, "data-testid": `${testId}-cancel-button`, className: "inline-flex items-center rounded-md border border-gray-200 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50", children: labels.form.cancel })), cap && onDelete && (jsxRuntime.jsx("button", { type: "button", onClick: onDelete, disabled: isSaving || isDeleting, "data-testid": `${testId}-delete-button`, className: "inline-flex items-center rounded-md border border-red-200 px-4 py-2 text-sm font-medium text-red-600 hover:bg-red-50 disabled:cursor-not-allowed disabled:opacity-50", children: isDeleting ? labels.form.removing : labels.form.remove })), jsxRuntime.jsx("button", { type: "button", onClick: handleSave, disabled: !canSave, "data-testid": `${testId}-save-button`, className: "inline-flex items-center gap-2 rounded-md bg-gradient-to-r from-[#2563EB] to-[#93C5FD] px-4 py-2 text-sm font-medium text-white hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50", children: isSaving ? labels.form.saving : labels.form.save })] })] }));
54
+ return (jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": `${testId}-form`, children: [!cap && (jsxRuntime.jsx("p", { className: "text-xs text-gray-500", "data-testid": `${testId}-no-cap-hint`, children: labels.form.noCapHint })), jsxRuntime.jsx(capabilityGate.CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: enabled, onToggle: setEnabled, disabled: isSaving || isDeleting, ariaLabel: labels.capability.title, toggleTestId: `${testId}-enabled-switch`, children: jsxRuntime.jsxs("div", { className: "space-y-4", children: [cap && showUsage && (jsxRuntime.jsxs("div", { className: "space-y-2 rounded-lg border border-gray-200 bg-gray-50 p-3", "data-testid": `${testId}-usage`, children: [jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntime.jsx("p", { className: "text-xs font-medium text-gray-700", children: labels.usage.periodTitles[cap.interval_type] }), jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [!cap.enabled && (jsxRuntime.jsx("span", { className: "rounded-full bg-gray-200 px-2 py-0.5 text-[11px] font-medium text-gray-700", "data-testid": `${testId}-disabled-badge`, children: labels.usage.disabledBadge })), cap.enforcement === 'alert_only' && (jsxRuntime.jsx("span", { className: "rounded-full bg-amber-100 px-2 py-0.5 text-[11px] font-medium text-amber-800", "data-testid": `${testId}-alert-only-badge`, children: labels.usage.alertOnlyBadge })), cap.is_exceeded && (jsxRuntime.jsx("span", { className: "rounded-full bg-red-100 px-2 py-0.5 text-[11px] font-medium text-red-700", "data-testid": `${testId}-exceeded-badge`, children: labels.usage.exceededBadge }))] })] }), jsxRuntime.jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", role: "progressbar", "aria-valuenow": usagePercent, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": labels.usage.title, children: jsxRuntime.jsx("div", { className: `h-full rounded-full transition-all ${barColor}`, style: { width: `${usagePercent}%` } }) }), jsxRuntime.jsxs("div", { className: "flex items-center justify-between text-xs text-gray-600", children: [jsxRuntime.jsx("span", { "data-testid": `${testId}-spent`, children: labels.usage.spent.replace('{amount}', utils.formatUsd(cap.current_spend_usd)) }), jsxRuntime.jsx("span", { "data-testid": `${testId}-percent`, children: labels.usage.percentUsed.replace('{percent}', String(usagePercent)) }), jsxRuntime.jsx("span", { "data-testid": `${testId}-remaining`, children: labels.usage.remaining.replace('{amount}', utils.formatUsd(cap.remaining_usd)) })] })] })), jsxRuntime.jsx(spendCapFields.SpendCapFields, { labels: labels, values: fields, onChange: setFields, testId: testId })] }) }), jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-2", children: [onCancel && (jsxRuntime.jsx("button", { type: "button", onClick: onCancel, disabled: isSaving || isDeleting, "data-testid": `${testId}-cancel-button`, className: "inline-flex items-center rounded-md border border-gray-200 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50", children: labels.form.cancel })), cap && onDelete && (jsxRuntime.jsx("button", { type: "button", onClick: onDelete, disabled: isSaving || isDeleting, "data-testid": `${testId}-delete-button`, className: "inline-flex items-center rounded-md border border-red-200 px-4 py-2 text-sm font-medium text-red-600 hover:bg-red-50 disabled:cursor-not-allowed disabled:opacity-50", children: isDeleting ? labels.form.removing : labels.form.remove })), jsxRuntime.jsx("button", { type: "button", onClick: handleSave, disabled: !canSave, "data-testid": `${testId}-save-button`, className: "inline-flex items-center gap-2 rounded-md bg-gradient-to-r from-[#2563EB] to-[#93C5FD] px-4 py-2 text-sm font-medium text-white hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50", children: isSaving ? labels.form.saving : labels.form.save })] })] }));
57
55
  }
58
56
 
59
57
  exports.SpendCapForm = SpendCapForm;
@@ -1 +1 @@
1
- {"version":3,"file":"spend-cap-form.js","sources":["../../../../../../../src/components/spend-caps/spend-cap-form.tsx"],"sourcesContent":[null],"names":["thresholdsToInput","isValidLimit","parseThresholdsInput","percentUsed","_jsxs","_jsx","CapabilityGate","formatUsd","Label","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"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"}
1
+ {"version":3,"file":"spend-cap-form.js","sources":["../../../../../../../src/components/spend-caps/spend-cap-form.tsx"],"sourcesContent":[null],"names":["thresholdsToInput","isValidLimit","parseThresholdsInput","percentUsed","_jsxs","_jsx","CapabilityGate","formatUsd","SpendCapFields"],"mappings":"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"}
@@ -29,6 +29,7 @@ function SpendCapUsage({ tenantKey, userId, mentorId, showWhenOk = false, classN
29
29
  tenant: t('spendCapUsage.scopeTenant'),
30
30
  agent: t('spendCapUsage.scopeAgent'),
31
31
  user_agent: t('spendCapUsage.scopeUserAgent'),
32
+ user: t('spendCapUsage.scopeUser'),
32
33
  };
33
34
  const intervalLabels = {
34
35
  day: t('spendCapUsage.intervalDay'),
@@ -1 +1 @@
1
- {"version":3,"file":"spend-cap-usage.js","sources":["../../../../../../../src/components/spend-caps/spend-cap-usage.tsx"],"sourcesContent":[null],"names":["useT","useGetSpendCapStatusQuery","_jsxs","cn","_jsx","OctagonX","AlertTriangle"],"mappings":";;;;;;;;;;AA4BA;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,EAC5B,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,SAAS,GACU,EAAA;AACnB,IAAA,MAAM,CAAC,GAAGA,YAAI,EAAE;AAEhB,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAGC,mCAAyB,CAC1D,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC5C,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAChC;AAED,IAAA,IAAI,SAAS,IAAI,KAAK,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAE5C,MAAM,OAAO,GAA0B,IAAI;AAC3C,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAC1C,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI;AAEvD,IAAA,MAAM,WAAW,GAAgD;AAC/D,QAAA,MAAM,EAAE,CAAC,CAAC,2BAA2B,CAAC;AACtC,QAAA,KAAK,EAAE,CAAC,CAAC,0BAA0B,CAAC;AACpC,QAAA,UAAU,EAAE,CAAC,CAAC,8BAA8B,CAAC;KAC9C;AACD,IAAA,MAAM,cAAc,GAAwD;AAC1E,QAAA,GAAG,EAAE,CAAC,CAAC,2BAA2B,CAAC;AACnC,QAAA,IAAI,EAAE,CAAC,CAAC,4BAA4B,CAAC;AACrC,QAAA,KAAK,EAAE,CAAC,CAAC,6BAA6B,CAAC;AACvC,QAAA,IAAI,EAAE,CAAC,CAAC,4BAA4B,CAAC;KACtC;IAED,QACEC,yBACE,SAAS,EAAEC,QAAE,CAAC,0DAA0D,EAAE,SAAS,CAAC,EAAA,aAAA,EACxE,iBAAiB,EAAA,QAAA,EAAA,CAE5B,OAAO,CAAC,OAAO,IACdD,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,uEAAuE,EAAA,aAAA,EACrE,yBAAyB,EAAA,QAAA,EAAA,CAErCE,cAAA,CAACC,gBAAQ,EAAA,EAAC,SAAS,EAAC,2CAA2C,EAAA,CAAG,EAClED,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,sCAAsC,YAAE,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAAK,CAAA,EAAA,CACtF,IACJ,OAAO,CAAC,MAAM,KAAK,IAAI,IACzBF,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,2EAA2E,EAAA,aAAA,EACzE,yBAAyB,EAAA,QAAA,EAAA,CAErCE,cAAA,CAACE,qBAAa,EAAA,EAAC,SAAS,EAAC,6CAA6C,EAAA,CAAG,EACzEF,sBAAG,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAClD,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAC/B,CAAA,EAAA,CACA,IACJ,IAAI,EAERA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,WAAW,YACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;;oBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACxE,oBAAA,MAAM,QAAQ,GACZ,GAAG,CAAC,MAAM,KAAK;AACb,0BAAE;AACF,0BAAE,GAAG,CAAC,MAAM,KAAK;AACf,8BAAE;8BACA,aAAa;AACrB,oBAAA,QACEF,eAAA,CAAA,IAAA,EAAA,EAEE,SAAS,EAAC,WAAW,EAAA,aAAA,EACR,CAAA,qBAAA,EAAwB,GAAG,CAAC,KAAK,CAAA,CAAE,EAAA,QAAA,EAAA,CAEhDA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EAAA,CACtEA,eAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CACG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAA,UAAA,EAAK,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,EAAA,CACxD,EACPE,cAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAmB,CAAA,wBAAA,EAA2B,GAAG,CAAC,KAAK,CAAA,CAAE,EAAA,QAAA,EACtD,CAAC,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,CAAC,EAAA,CACvC,CAAA,EAAA,CACH,EACNA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,uDAAuD,EACjE,IAAI,EAAC,aAAa,EAAA,eAAA,EACH,OAAO,EAAA,eAAA,EACP,CAAC,EAAA,eAAA,EACD,GAAG,EAAA,YAAA,EACN,CAAA,EAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,CAAE,EAAA,QAAA,EAE9EA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAED,QAAE,CAAC,oCAAoC,EAAE,QAAQ,CAAC,EAC7D,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA,CAAG,EAAE,EAAA,CAC/B,EAAA,CACE,CAAA,EAAA,EAxBD,CAAA,EAAG,GAAG,CAAC,KAAK,CAAA,CAAA,EAAI,CAAA,EAAA,GAAA,GAAG,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAA,CAAA,EAAI,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAyB7E;AAET,gBAAA,CAAC,CAAC,EAAA,CACC,CAAA,EAAA,CACD;AAEV;;;;"}
1
+ {"version":3,"file":"spend-cap-usage.js","sources":["../../../../../../../src/components/spend-caps/spend-cap-usage.tsx"],"sourcesContent":[null],"names":["useT","useGetSpendCapStatusQuery","_jsxs","cn","_jsx","OctagonX","AlertTriangle"],"mappings":";;;;;;;;;;AA4BA;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,EAC5B,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,SAAS,GACU,EAAA;AACnB,IAAA,MAAM,CAAC,GAAGA,YAAI,EAAE;AAEhB,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAGC,mCAAyB,CAC1D,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC5C,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAChC;AAED,IAAA,IAAI,SAAS,IAAI,KAAK,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAE5C,MAAM,OAAO,GAA0B,IAAI;AAC3C,IAAA,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAC1C,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU;AAAE,QAAA,OAAO,IAAI;AAEvD,IAAA,MAAM,WAAW,GAAgD;AAC/D,QAAA,MAAM,EAAE,CAAC,CAAC,2BAA2B,CAAC;AACtC,QAAA,KAAK,EAAE,CAAC,CAAC,0BAA0B,CAAC;AACpC,QAAA,UAAU,EAAE,CAAC,CAAC,8BAA8B,CAAC;AAC7C,QAAA,IAAI,EAAE,CAAC,CAAC,yBAAyB,CAAC;KACnC;AACD,IAAA,MAAM,cAAc,GAAwD;AAC1E,QAAA,GAAG,EAAE,CAAC,CAAC,2BAA2B,CAAC;AACnC,QAAA,IAAI,EAAE,CAAC,CAAC,4BAA4B,CAAC;AACrC,QAAA,KAAK,EAAE,CAAC,CAAC,6BAA6B,CAAC;AACvC,QAAA,IAAI,EAAE,CAAC,CAAC,4BAA4B,CAAC;KACtC;IAED,QACEC,yBACE,SAAS,EAAEC,QAAE,CAAC,0DAA0D,EAAE,SAAS,CAAC,EAAA,aAAA,EACxE,iBAAiB,EAAA,QAAA,EAAA,CAE5B,OAAO,CAAC,OAAO,IACdD,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,uEAAuE,EAAA,aAAA,EACrE,yBAAyB,EAAA,QAAA,EAAA,CAErCE,cAAA,CAACC,gBAAQ,EAAA,EAAC,SAAS,EAAC,2CAA2C,EAAA,CAAG,EAClED,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,sCAAsC,YAAE,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAAK,CAAA,EAAA,CACtF,IACJ,OAAO,CAAC,MAAM,KAAK,IAAI,IACzBF,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,2EAA2E,EAAA,aAAA,EACzE,yBAAyB,EAAA,QAAA,EAAA,CAErCE,cAAA,CAACE,qBAAa,EAAA,EAAC,SAAS,EAAC,6CAA6C,EAAA,CAAG,EACzEF,sBAAG,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAClD,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAC/B,CAAA,EAAA,CACA,IACJ,IAAI,EAERA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,WAAW,YACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;;oBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AACxE,oBAAA,MAAM,QAAQ,GACZ,GAAG,CAAC,MAAM,KAAK;AACb,0BAAE;AACF,0BAAE,GAAG,CAAC,MAAM,KAAK;AACf,8BAAE;8BACA,aAAa;AACrB,oBAAA,QACEF,eAAA,CAAA,IAAA,EAAA,EAEE,SAAS,EAAC,WAAW,EAAA,aAAA,EACR,CAAA,qBAAA,EAAwB,GAAG,CAAC,KAAK,CAAA,CAAE,EAAA,QAAA,EAAA,CAEhDA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EAAA,CACtEA,eAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CACG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAA,UAAA,EAAK,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,EAAA,CACxD,EACPE,cAAA,CAAA,MAAA,EAAA,EAAA,aAAA,EAAmB,CAAA,wBAAA,EAA2B,GAAG,CAAC,KAAK,CAAA,CAAE,EAAA,QAAA,EACtD,CAAC,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,CAAC,EAAA,CACvC,CAAA,EAAA,CACH,EACNA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,uDAAuD,EACjE,IAAI,EAAC,aAAa,EAAA,eAAA,EACH,OAAO,EAAA,eAAA,EACP,CAAC,EAAA,eAAA,EACD,GAAG,EAAA,YAAA,EACN,CAAA,EAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA,CAAE,EAAA,QAAA,EAE9EA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAED,QAAE,CAAC,oCAAoC,EAAE,QAAQ,CAAC,EAC7D,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,CAAA,CAAG,EAAE,EAAA,CAC/B,EAAA,CACE,CAAA,EAAA,EAxBD,CAAA,EAAG,GAAG,CAAC,KAAK,CAAA,CAAA,EAAI,CAAA,EAAA,GAAA,GAAG,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAA,CAAA,EAAI,CAAA,EAAA,GAAA,GAAG,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAyB7E;AAET,gBAAA,CAAC,CAAC,EAAA,CACC,CAAA,EAAA,CACD;AAEV;;;;"}
@@ -0,0 +1,41 @@
1
+ 'use strict';
2
+
3
+ var index_module = require('../../node_modules/.pnpm/use-debounce@10.0.4_react@19.1.0/node_modules/use-debounce/dist/index.module.js');
4
+ var dataLayer = require('@iblai/data-layer');
5
+
6
+ /**
7
+ * Options for a platform-user picker, searched tenant-wide once the
8
+ * debounced term reaches two characters. Deliberately email-only in the UI
9
+ * (no name/username noise); the cap API is still keyed by username, which
10
+ * rides along as the option value.
11
+ */
12
+ function usePlatformUserOptions(tenantKey, searchTerm, { enabled = true } = {}) {
13
+ var _a;
14
+ const [debouncedSearch] = index_module.useDebounce(searchTerm, 300);
15
+ const query = debouncedSearch.trim();
16
+ const shouldSearch = Boolean(enabled && tenantKey && query.length >= 2);
17
+ const { data, isFetching } = dataLayer.usePlatformUsersQuery({
18
+ page: 1,
19
+ page_size: 20,
20
+ platform_key: tenantKey,
21
+ platform_org: tenantKey,
22
+ query,
23
+ return_policies: 'false',
24
+ }, { skip: !shouldSearch });
25
+ // The platform users endpoint returns either `results` or `results.data`
26
+ // depending on whether policies were requested.
27
+ const rawResults = data === null || data === void 0 ? void 0 : data.results;
28
+ const foundUsers = Array.isArray(rawResults)
29
+ ? rawResults
30
+ : ((_a = rawResults === null || rawResults === void 0 ? void 0 : rawResults.data) !== null && _a !== void 0 ? _a : []);
31
+ const options = foundUsers
32
+ .filter((user) => Boolean(user.username) && Boolean(user.email))
33
+ .map((user) => ({
34
+ value: user.username,
35
+ label: user.email,
36
+ }));
37
+ return { options, isSearching: isFetching };
38
+ }
39
+
40
+ exports.usePlatformUserOptions = usePlatformUserOptions;
41
+ //# sourceMappingURL=use-platform-user-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-platform-user-options.js","sources":["../../../../../../../src/components/spend-caps/use-platform-user-options.ts"],"sourcesContent":[null],"names":["useDebounce","usePlatformUsersQuery"],"mappings":";;;;;AAcA;;;;;AAKG;AACG,SAAU,sBAAsB,CACpC,SAAiB,EACjB,UAAkB,EAClB,EAAE,OAAO,GAAG,IAAI,EAAA,GAA4B,EAAE,EAAA;;IAE9C,MAAM,CAAC,eAAe,CAAC,GAAGA,wBAAW,CAAC,UAAU,EAAE,GAAG,CAAC;AACtD,IAAA,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE;AACpC,IAAA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AACvE,IAAA,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAGC,+BAAqB,CAChD;AACE,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,YAAY,EAAE,SAAS;AACvB,QAAA,YAAY,EAAE,SAAS;QACvB,KAAK;AACL,QAAA,eAAe,EAAE,OAAO;AACzB,KAAA,EACD,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,CACxB;;;IAID,MAAM,UAAU,GACd,IACD,KAAA,IAAA,IADC,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CACH,OAAO;AACV,IAAA,MAAM,UAAU,GAAyB,KAAK,CAAC,OAAO,CAAC,UAAU;AAC/D,UAAE;AACF,WAAG,CAAA,EAAA,GAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,MAAA,GAAA,MAAA,GAAV,UAAU,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAyB;AACnC,SAAA,MAAM,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9D,SAAA,GAAG,CAAC,CAAC,IAAI,MAAM;QACd,KAAK,EAAE,IAAI,CAAC,QAAkB;QAC9B,KAAK,EAAE,IAAI,CAAC,KAAe;AAC5B,KAAA,CAAC,CAAC;AAEL,IAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;AAC7C;;;;"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var dataLayer = require('@iblai/data-layer');
5
+
6
+ /** How often the chat re-reads the status so a warning appears mid-conversation. */
7
+ const SPEND_CAP_STATUS_POLL_MS = 60000;
8
+ /**
9
+ * Learner-safe spend-cap status for the chat (zones and percentages only,
10
+ * never dollars), polled while the chat is open. `SpendCapUsage` reads the
11
+ * same cache entry, so rendering it beside this hook costs no extra request.
12
+ */
13
+ function useSpendCapStatus({ tenantKey, userId, mentorId, enabled = true, }) {
14
+ const skip = !enabled || !tenantKey || !userId;
15
+ const { data, refetch } = dataLayer.useGetSpendCapStatusQuery({ org: tenantKey, userId, mentor: mentorId }, { skip, pollingInterval: skip ? 0 : SPEND_CAP_STATUS_POLL_MS, refetchOnMountOrArgChange: true });
16
+ // RTK throws on refetching a query that never started (the skipped case).
17
+ const safeRefetch = React.useCallback(() => {
18
+ if (!skip)
19
+ void refetch();
20
+ }, [skip, refetch]);
21
+ return { summary: data, blocked: Boolean(data === null || data === void 0 ? void 0 : data.blocked), refetch: safeRefetch };
22
+ }
23
+
24
+ exports.SPEND_CAP_STATUS_POLL_MS = SPEND_CAP_STATUS_POLL_MS;
25
+ exports.useSpendCapStatus = useSpendCapStatus;
26
+ //# sourceMappingURL=use-spend-cap-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-spend-cap-status.js","sources":["../../../../../../../src/components/spend-caps/use-spend-cap-status.ts"],"sourcesContent":[null],"names":["useGetSpendCapStatusQuery"],"mappings":";;;;;AAKA;AACO,MAAM,wBAAwB,GAAG;AAoBxC;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,EAChC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,OAAO,GAAG,IAAI,GACW,EAAA;IACzB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;AAC9C,IAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAGA,mCAAyB,CACjD,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAC5C,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,GAAG,CAAC,GAAG,wBAAwB,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAChG;;AAGD,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,IAAI;YAAE,KAAK,OAAO,EAAE;AAC3B,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJ,IAAI,CAAE,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE;AACjF;;;;;"}
@@ -2,18 +2,8 @@
2
2
 
3
3
  var sonner = require('sonner');
4
4
  var dataLayer = require('@iblai/data-layer');
5
+ var utils = require('./utils.js');
5
6
 
6
- function errorStatus(error) {
7
- return error === null || error === void 0 ? void 0 : error.status;
8
- }
9
- function errorDetail(error) {
10
- const data = error === null || error === void 0 ? void 0 : error.data;
11
- if (typeof (data === null || data === void 0 ? void 0 : data.detail) === 'string')
12
- return data.detail;
13
- if (typeof (data === null || data === void 0 ? void 0 : data.error) === 'string')
14
- return data.error;
15
- return '';
16
- }
17
7
  function useSpendCaps({ tenantKey, mentorId, labels }) {
18
8
  const identityReady = Boolean(tenantKey && mentorId);
19
9
  // 404 is the documented "no cap configured yet" state for the singleton
@@ -39,9 +29,9 @@ function useSpendCaps({ tenantKey, mentorId, labels }) {
39
29
  const [deleteTenantCap, { isLoading: isDeletingTenantCap }] = dataLayer.useDeleteTenantSpendCapMutation();
40
30
  const [upsertUserCap, { isLoading: isSavingUserCap }] = dataLayer.useUpsertUserSpendCapMutation();
41
31
  const [deleteUserCap, { isLoading: isDeletingUserCap }] = dataLayer.useDeleteUserSpendCapMutation();
42
- const isAgentForbidden = errorStatus(agentCapError) === 403;
43
- const isTenantForbidden = errorStatus(tenantCapError) === 403;
44
- const isUsersForbidden = errorStatus(userCapsError) === 403;
32
+ const isAgentForbidden = utils.errorStatus(agentCapError) === 403;
33
+ const isTenantForbidden = utils.errorStatus(tenantCapError) === 403;
34
+ const isUsersForbidden = utils.errorStatus(userCapsError) === 403;
45
35
  // Refetch the mutated scope explicitly after every successful save/delete
46
36
  // (same as the grader tab's `refetchConfig()`): the singleton GETs 404
47
37
  // until first created, and a cache entry whose only fetch errored isn't
@@ -56,7 +46,7 @@ function useSpendCaps({ tenantKey, mentorId, labels }) {
56
46
  }
57
47
  catch (error) {
58
48
  console.error('[AgentSpendCapsTab] save spend cap error', error);
59
- sonner.toast.error(errorDetail(error) || labels.toasts.saveError);
49
+ sonner.toast.error(utils.errorDetail(error) || labels.toasts.saveError);
60
50
  return false;
61
51
  }
62
52
  };
@@ -69,7 +59,7 @@ function useSpendCaps({ tenantKey, mentorId, labels }) {
69
59
  }
70
60
  catch (error) {
71
61
  console.error('[AgentSpendCapsTab] delete spend cap error', error);
72
- sonner.toast.error(errorDetail(error) || labels.toasts.deleteError);
62
+ sonner.toast.error(utils.errorDetail(error) || labels.toasts.deleteError);
73
63
  return false;
74
64
  }
75
65
  };
@@ -1 +1 @@
1
- {"version":3,"file":"use-spend-caps.js","sources":["../../../../../../../src/components/spend-caps/use-spend-caps.ts"],"sourcesContent":[null],"names":["useGetAgentSpendCapQuery","useGetTenantSpendCapQuery","useListAgentUserSpendCapsQuery","useUpsertAgentSpendCapMutation","useDeleteAgentSpendCapMutation","useUpsertTenantSpendCapMutation","useDeleteTenantSpendCapMutation","useUpsertUserSpendCapMutation","useDeleteUserSpendCapMutation","toast"],"mappings":"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"}
1
+ {"version":3,"file":"use-spend-caps.js","sources":["../../../../../../../src/components/spend-caps/use-spend-caps.ts"],"sourcesContent":[null],"names":["useGetAgentSpendCapQuery","useGetTenantSpendCapQuery","useListAgentUserSpendCapsQuery","useUpsertAgentSpendCapMutation","useDeleteAgentSpendCapMutation","useUpsertTenantSpendCapMutation","useDeleteTenantSpendCapMutation","useUpsertUserSpendCapMutation","useDeleteUserSpendCapMutation","errorStatus","toast","errorDetail"],"mappings":"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"}
@@ -2,12 +2,11 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var index_module = require('../../node_modules/.pnpm/use-debounce@10.0.4_react@19.1.0/node_modules/use-debounce/dist/index.module.js');
6
- var dataLayer = require('@iblai/data-layer');
7
5
  var dialog = require('../ui/dialog.js');
8
6
  var utils = require('../../lib/utils.js');
9
7
  var searchSelect = require('./search-select.js');
10
8
  var spendCapForm = require('./spend-cap-form.js');
9
+ var usePlatformUserOptions = require('./use-platform-user-options.js');
11
10
  var userProfileLink = require('../profile/user-profile-link.js');
12
11
 
13
12
  /**
@@ -16,8 +15,8 @@ var userProfileLink = require('../profile/user-profile-link.js');
16
15
  * (no free-text usernames), edit mode goes straight to the form for the
17
16
  * cap's user. The form's Cancel/Save footer acts as the dialog footer.
18
17
  */
19
- function UserCapModal({ isOpen, onClose, cap, labels, tenantKey, isSaving, onSave }) {
20
- var _a, _b, _c, _d, _e;
18
+ function UserCapModal({ isOpen, onClose, cap, labels, tenantKey, initialUser = null, isSaving, onSave, }) {
19
+ var _a, _b, _c, _d;
21
20
  const isEditing = Boolean(cap);
22
21
  const [pickedUser, setPickedUser] = React.useState(null);
23
22
  const [userSearch, setUserSearch] = React.useState('');
@@ -25,34 +24,11 @@ function UserCapModal({ isOpen, onClose, cap, labels, tenantKey, isSaving, onSav
25
24
  React.useEffect(() => {
26
25
  if (!isOpen)
27
26
  return;
28
- setPickedUser(null);
27
+ setPickedUser(initialUser);
29
28
  setUserSearch('');
30
- }, [isOpen, cap]);
31
- const [debouncedUserSearch] = index_module.useDebounce(userSearch, 300);
32
- const shouldSearchUsers = Boolean(isOpen && !isEditing && tenantKey && debouncedUserSearch.trim().length >= 2);
33
- const { data: usersData, isFetching: isSearchingUsers } = dataLayer.usePlatformUsersQuery({
34
- page: 1,
35
- page_size: 20,
36
- platform_key: tenantKey,
37
- platform_org: tenantKey,
38
- query: debouncedUserSearch.trim(),
39
- return_policies: 'false',
40
- }, { skip: !shouldSearchUsers });
41
- // The platform users endpoint returns either `results` or `results.data`
42
- // depending on whether policies were requested.
43
- const rawResults = usersData === null || usersData === void 0 ? void 0 : usersData.results;
44
- const foundUsers = Array.isArray(rawResults)
45
- ? rawResults
46
- : ((_a = rawResults === null || rawResults === void 0 ? void 0 : rawResults.data) !== null && _a !== void 0 ? _a : []);
47
- // Deliberately email-only in the UI (no name/username noise); the cap API
48
- // is still keyed by username, which rides along as the option value.
49
- const userOptions = foundUsers
50
- .filter((user) => Boolean(user.username) && Boolean(user.email))
51
- .map((user) => ({
52
- value: user.username,
53
- label: user.email,
54
- }));
55
- const username = isEditing ? ((_b = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _b !== void 0 ? _b : '') : ((_c = pickedUser === null || pickedUser === void 0 ? void 0 : pickedUser.value) !== null && _c !== void 0 ? _c : '');
29
+ }, [isOpen, cap, initialUser]);
30
+ const { options: userOptions, isSearching: isSearchingUsers } = usePlatformUserOptions.usePlatformUserOptions(tenantKey, userSearch, { enabled: isOpen && !isEditing });
31
+ const username = isEditing ? ((_a = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _a !== void 0 ? _a : '') : ((_b = pickedUser === null || pickedUser === void 0 ? void 0 : pickedUser.value) !== null && _b !== void 0 ? _b : '');
56
32
  const handleSave = async (formData) => {
57
33
  if (!username)
58
34
  return;
@@ -63,7 +39,7 @@ function UserCapModal({ isOpen, onClose, cap, labels, tenantKey, isSaving, onSav
63
39
  return (jsxRuntime.jsx(dialog.Dialog, { open: isOpen, onOpenChange: onClose, children: jsxRuntime.jsxs(dialog.DialogContent, { "aria-describedby": "user-cap-modal-description", "data-testid": "user-cap-modal", className: "flex max-h-[85vh] flex-col sm:max-w-xl", children: [jsxRuntime.jsx(dialog.DialogHeader, { className: "flex-shrink-0", children: jsxRuntime.jsx(dialog.DialogTitle, { className: "ibl-dialog-title", children: isEditing ? labels.users.editTitle : labels.users.addTitle }) }), jsxRuntime.jsxs("div", { className: utils.cn('min-h-0 flex-1 space-y-4 overflow-y-auto',
64
40
  // Reserve room for the search results dropdown while no user is
65
41
  // picked yet — otherwise the scroll container clips it.
66
- !isEditing && !pickedUser && 'min-h-[340px]'), id: "user-cap-modal-description", children: [isEditing ? (jsxRuntime.jsx("p", { className: "text-sm text-[#646464]", "data-testid": "user-cap-modal-username", children: jsxRuntime.jsx(userProfileLink.UserProfileLink, { tenantKey: tenantKey, username: (_d = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _d !== void 0 ? _d : '', display: (cap === null || cap === void 0 ? void 0 : cap.email) || ((_e = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _e !== void 0 ? _e : ''), className: "inline", testId: "user-cap-modal-profile-link" }) })) : (jsxRuntime.jsx(searchSelect.SearchSelect, { labels: labels.users.picker, selected: pickedUser, onSelect: setPickedUser, onClear: () => setPickedUser(null), searchTerm: userSearch, onSearchTermChange: setUserSearch, options: userOptions, isLoading: isSearchingUsers, testId: "user-cap-modal-user-picker" })), Boolean(username) && (jsxRuntime.jsx(spendCapForm.SpendCapForm, { labels: labels, cap: cap !== null && cap !== void 0 ? cap : undefined, isSaving: isSaving, isDeleting: false, onSave: handleSave, onCancel: onClose, testId: "user-cap-modal" }))] })] }) }));
42
+ !isEditing && !pickedUser && 'min-h-[340px]'), id: "user-cap-modal-description", children: [isEditing ? (jsxRuntime.jsx("p", { className: "text-sm text-[#646464]", "data-testid": "user-cap-modal-username", children: jsxRuntime.jsx(userProfileLink.UserProfileLink, { tenantKey: tenantKey, username: (_c = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _c !== void 0 ? _c : '', display: (cap === null || cap === void 0 ? void 0 : cap.email) || ((_d = cap === null || cap === void 0 ? void 0 : cap.username) !== null && _d !== void 0 ? _d : ''), className: "inline", testId: "user-cap-modal-profile-link" }) })) : (jsxRuntime.jsx(searchSelect.SearchSelect, { labels: labels.users.picker, selected: pickedUser, onSelect: setPickedUser, onClear: () => setPickedUser(null), searchTerm: userSearch, onSearchTermChange: setUserSearch, options: userOptions, isLoading: isSearchingUsers, testId: "user-cap-modal-user-picker" })), Boolean(username) && (jsxRuntime.jsx(spendCapForm.SpendCapForm, { labels: labels, cap: cap !== null && cap !== void 0 ? cap : undefined, isSaving: isSaving, isDeleting: false, onSave: handleSave, onCancel: onClose, testId: "user-cap-modal" }))] })] }) }));
67
43
  }
68
44
 
69
45
  exports.UserCapModal = UserCapModal;
@@ -1 +1 @@
1
- {"version":3,"file":"user-cap-modal.js","sources":["../../../../../../../src/components/spend-caps/user-cap-modal.tsx"],"sourcesContent":[null],"names":["useDebounce","usePlatformUsersQuery","_jsx","Dialog","_jsxs","DialogContent","DialogHeader","DialogTitle","cn","UserProfileLink","SearchSelect","SpendCapForm"],"mappings":"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"}
1
+ {"version":3,"file":"user-cap-modal.js","sources":["../../../../../../../src/components/spend-caps/user-cap-modal.tsx"],"sourcesContent":[null],"names":["usePlatformUserOptions","_jsx","Dialog","_jsxs","DialogContent","DialogHeader","DialogTitle","cn","UserProfileLink","SearchSelect","SpendCapForm"],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var sonner = require('sonner');
6
+ var dataLayer = require('@iblai/data-layer');
7
+ var customSwitch = require('../modals/edit-mentor-modal/custom-switch.js');
8
+ var userProfileLink = require('../profile/user-profile-link.js');
9
+ var button = require('../ui/button.js');
10
+ var dialog = require('../ui/dialog.js');
11
+ var table = require('../ui/table.js');
12
+ var index = require('../spinner/index.js');
13
+ var context = require('../../i18n/context.js');
14
+ require('../../packages/i18n/dist/index.esm.js');
15
+ var labels = require('./labels.js');
16
+ var rowIconAction = require('./row-icon-action.js');
17
+ var searchSelect = require('./search-select.js');
18
+ var usePlatformUserOptions = require('./use-platform-user-options.js');
19
+ var userCapModal = require('./user-cap-modal.js');
20
+ var utils = require('./utils.js');
21
+ var shieldAlert = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/shield-alert.js');
22
+ var slidersHorizontal = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/sliders-horizontal.js');
23
+ var trash2 = require('../../node_modules/.pnpm/lucide-react@0.528.0_react@19.1.0/node_modules/lucide-react/dist/esm/icons/trash-2.js');
24
+
25
+ /**
26
+ * Tenant-settings Billing "User Limits" tab: every user-scoped spend cap in
27
+ * the workspace (one user's spend across all agents, `spend-caps/users/`,
28
+ * iblai-platform#2513) — the Agent Limits layout with a user autocomplete
29
+ * filter (also the entry point for a user who has none yet), a direct status
30
+ * toggle per row, and edit/delete icons beside it. Add and edit both go
31
+ * through the same `UserCapModal` as the per-agent user limits. Rendered
32
+ * inside `BillingTab` above `NewUserDefaultSection`, whose rows end up here.
33
+ */
34
+ function UserLimitsSection({ tenantKey, labels: labelsOverride }) {
35
+ var _a;
36
+ const t = context.useT();
37
+ const labels$1 = React.useMemo(() => labels.resolveSpendCapsTabLabels(labelsOverride, t), [labelsOverride, t]);
38
+ const copy = labels$1.tenantSections.users;
39
+ const [userFilter, setUserFilter] = React.useState(null);
40
+ const [userSearch, setUserSearch] = React.useState('');
41
+ const { options: userOptions, isSearching: isSearchingUsers } = usePlatformUserOptions.usePlatformUserOptions(tenantKey, userSearch);
42
+ // The endpoint filters by username server-side — pass it through instead
43
+ // of fetching everything and filtering client-side.
44
+ const { data: visibleCaps = [], error: capsError, isLoading, isFetching, } = dataLayer.useListTenantUserSpendCapsQuery({ org: tenantKey, ...(userFilter ? { username: userFilter.value } : {}) }, { skip: !tenantKey });
45
+ const isForbidden = utils.errorStatus(capsError) === 403;
46
+ const [upsertCap, { isLoading: isSaving }] = dataLayer.useUpsertTenantUserSpendCapMutation();
47
+ const [deleteCap, { isLoading: isDeleting }] = dataLayer.useDeleteTenantUserSpendCapMutation();
48
+ const [isModalOpen, setIsModalOpen] = React.useState(false);
49
+ const [editingCap, setEditingCap] = React.useState(null);
50
+ // Kept whole so the dialog can show the user's email while the delete
51
+ // call is still keyed by username.
52
+ const [pendingDelete, setPendingDelete] = React.useState(null);
53
+ // Whole-row click opens the user's profile (Management-tab pattern).
54
+ const [profileCap, setProfileCap] = React.useState(null);
55
+ const saveCap = async (username, formData) => {
56
+ try {
57
+ await upsertCap({ org: tenantKey, username, formData }).unwrap();
58
+ sonner.toast.success(labels$1.toasts.saved);
59
+ return true;
60
+ }
61
+ catch (error) {
62
+ console.error('[UserLimitsSection] save spend limit error', error);
63
+ sonner.toast.error(utils.errorDetail(error) || labels$1.toasts.saveError);
64
+ return false;
65
+ }
66
+ };
67
+ const removeCap = async (username) => {
68
+ try {
69
+ await deleteCap({ org: tenantKey, username }).unwrap();
70
+ sonner.toast.success(labels$1.toasts.deleted);
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ console.error('[UserLimitsSection] delete spend limit error', error);
75
+ sonner.toast.error(utils.errorDetail(error) || labels$1.toasts.deleteError);
76
+ return false;
77
+ }
78
+ };
79
+ // Status toggle saves immediately (datasets-table pattern) — the PUT is an
80
+ // upsert, so the cap's current fields ride along with the flipped flag.
81
+ const toggleEnabled = (cap, checked) => {
82
+ var _a;
83
+ void saveCap((_a = cap.username) !== null && _a !== void 0 ? _a : '', {
84
+ interval_type: cap.interval_type,
85
+ max_cost_usd: cap.max_cost_usd,
86
+ enforcement: cap.enforcement,
87
+ alert_thresholds: cap.alert_thresholds,
88
+ enabled: checked,
89
+ });
90
+ };
91
+ const openAddForFilteredUser = () => {
92
+ setEditingCap(null);
93
+ setIsModalOpen(true);
94
+ };
95
+ const openEdit = (cap) => {
96
+ setEditingCap(cap);
97
+ setIsModalOpen(true);
98
+ };
99
+ const handleConfirmDelete = async () => {
100
+ var _a;
101
+ if (!pendingDelete)
102
+ return;
103
+ const deleted = await removeCap((_a = pendingDelete.username) !== null && _a !== void 0 ? _a : '');
104
+ if (deleted)
105
+ setPendingDelete(null);
106
+ };
107
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { "data-testid": "spend-limits-users-section", className: "rounded-lg border border-[#e5e5e5] bg-white shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] dark:bg-zinc-900 dark:border-zinc-800", children: [jsxRuntime.jsx("div", { className: "flex flex-col gap-2 p-4 sm:flex-row sm:items-start sm:justify-between", children: jsxRuntime.jsxs("div", { className: "space-y-0.5", children: [jsxRuntime.jsx("h3", { className: "text-[16px] font-medium leading-6 text-[#101828] dark:text-gray-100", children: copy.title }), jsxRuntime.jsx("p", { className: "text-[13px] font-normal leading-5 text-[#4a5565] dark:text-gray-400", children: copy.description })] }) }), jsxRuntime.jsx("div", { className: "space-y-3 border-t border-[#e5e7eb] dark:border-zinc-800 px-4 py-3", children: isForbidden ? (jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-2 rounded-lg border border-gray-200 bg-gray-50 px-4 py-10 text-center", "data-testid": "user-limits-denied", children: [jsxRuntime.jsx(shieldAlert.default, { className: "h-6 w-6 text-gray-400" }), jsxRuntime.jsx("p", { className: "text-sm font-medium text-gray-900", children: labels$1.denied.title }), jsxRuntime.jsx("p", { className: "max-w-sm text-xs text-gray-600", children: labels$1.denied.description })] })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "max-w-sm", children: jsxRuntime.jsx(searchSelect.SearchSelect, { labels: copy.filter, selected: userFilter, onSelect: setUserFilter, onClear: () => setUserFilter(null), searchTerm: userSearch, onSearchTermChange: setUserSearch, options: userOptions, isLoading: isSearchingUsers, testId: "user-limits-filter" }) }), jsxRuntime.jsx("div", { className: "overflow-hidden rounded-md border", "data-testid": "user-limits-list", children: jsxRuntime.jsx("div", { className: "overflow-x-auto sm:mx-0", children: jsxRuntime.jsx("div", { className: "inline-block min-w-full align-middle", children: isLoading || isFetching ? (jsxRuntime.jsx("div", { className: "flex w-full items-center justify-center py-10", "data-testid": "user-limits-loading", children: jsxRuntime.jsx(index.Spinner, {}) })) : (jsxRuntime.jsxs(table.Table, { className: "min-w-full", children: [jsxRuntime.jsx(table.TableHeader, { children: jsxRuntime.jsxs(table.TableRow, { className: "bg-muted/50 border-b", children: [jsxRuntime.jsx(table.TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: copy.table.userColumn }), jsxRuntime.jsx(table.TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: copy.table.limitColumn }), jsxRuntime.jsx(table.TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: copy.table.spentColumn }), jsxRuntime.jsx(table.TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: copy.table.remainingColumn }), jsxRuntime.jsx(table.TableHead, { className: "p-3 text-left text-sm whitespace-nowrap text-[#646464]", children: copy.table.statusColumn }), jsxRuntime.jsx(table.TableHead, { className: "w-20 p-3" })] }) }), jsxRuntime.jsx(table.TableBody, { children: visibleCaps.length === 0 ? (jsxRuntime.jsx(table.TableRow, { children: jsxRuntime.jsx(table.TableCell, { colSpan: 6, className: "p-4 text-center text-[#646464]", "data-testid": "user-limits-empty", children: jsxRuntime.jsxs("div", { className: "space-y-2", children: [jsxRuntime.jsx("p", { children: userFilter ? copy.emptyFiltered : copy.emptyState }), userFilter && (jsxRuntime.jsx(button.Button, { className: "ibl-button-primary", onClick: openAddForFilteredUser, disabled: isSaving || isDeleting, "data-testid": "user-limits-set-limit-button", children: copy.setLimitButton }))] }) }) })) : (visibleCaps.map((cap) => {
108
+ var _a;
109
+ const username = (_a = cap.username) !== null && _a !== void 0 ? _a : '';
110
+ // Email-first everywhere the user is shown or
111
+ // announced; testids and mutation keys stay on
112
+ // the backend's username key.
113
+ const displayName = cap.email || username;
114
+ return (jsxRuntime.jsxs(table.TableRow, { onClick: () => setProfileCap(cap), className: "cursor-pointer border-b transition-colors last:border-0 hover:bg-gray-50", "data-testid": `user-limits-row-${username}`, children: [jsxRuntime.jsx(table.TableCell, { className: "max-w-[240px] p-3 font-medium whitespace-nowrap text-[#646464]", children: jsxRuntime.jsx(userProfileLink.UserProfileLink, { tenantKey: tenantKey, username: username, display: displayName, testId: `user-limits-profile-link-${username}` }) }), jsxRuntime.jsxs(table.TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: [utils.formatUsd(cap.max_cost_usd), " /", ' ', labels$1.form.intervalOptions[cap.interval_type]] }), jsxRuntime.jsx(table.TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: utils.formatUsd(cap.current_spend_usd) }), jsxRuntime.jsx(table.TableCell, { className: "p-3 whitespace-nowrap text-[#646464]", children: utils.formatUsd(cap.remaining_usd) }), jsxRuntime.jsx(table.TableCell, { className: "p-3", onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [jsxRuntime.jsx(customSwitch.CustomSwitch, { checked: cap.enabled, onCheckedChange: (checked) => toggleEnabled(cap, checked), disabled: isSaving || isDeleting, "aria-label": copy.statusToggleAria(displayName), "data-testid": `user-limits-status-switch-${username}` }), cap.is_exceeded && (jsxRuntime.jsx("span", { className: "rounded-full bg-red-100 px-2 py-0.5 text-[11px] font-medium text-red-700", children: labels$1.usage.exceededBadge })), cap.enforcement === 'alert_only' && (jsxRuntime.jsx("span", { className: "rounded-full bg-amber-100 px-2 py-0.5 text-[11px] font-medium text-amber-800", children: labels$1.usage.alertOnlyBadge }))] }) }), jsxRuntime.jsx(table.TableCell, { className: "p-3 text-right", onClick: (e) => e.stopPropagation(), children: jsxRuntime.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntime.jsx(rowIconAction.RowIconAction, { label: copy.editAria(displayName), icon: slidersHorizontal.default, onClick: () => openEdit(cap), disabled: isSaving || isDeleting, testId: `user-limits-edit-${username}` }), jsxRuntime.jsx(rowIconAction.RowIconAction, { label: copy.deleteAria(displayName), icon: trash2.default, onClick: () => setPendingDelete(cap), disabled: isSaving || isDeleting, className: "hover:text-red-600", testId: `user-limits-delete-${username}` })] }) })] }, cap.id));
115
+ })) })] })) }) }) })] })) })] }), jsxRuntime.jsx(userProfileLink.UserProfileDialog, { tenantKey: tenantKey, username: (_a = profileCap === null || profileCap === void 0 ? void 0 : profileCap.username) !== null && _a !== void 0 ? _a : '', isOpen: profileCap !== null, onClose: () => setProfileCap(null) }), jsxRuntime.jsx(userCapModal.UserCapModal, { isOpen: isModalOpen, onClose: () => setIsModalOpen(false), cap: editingCap, initialUser: editingCap ? null : userFilter, labels: labels$1, tenantKey: tenantKey, isSaving: isSaving, onSave: saveCap }), jsxRuntime.jsx(dialog.Dialog, { open: pendingDelete !== null, onOpenChange: () => setPendingDelete(null), children: jsxRuntime.jsxs(dialog.DialogContent, { "aria-describedby": "user-limit-delete-description", "data-testid": "user-limit-delete-modal", children: [jsxRuntime.jsx(dialog.DialogHeader, { children: jsxRuntime.jsx(dialog.DialogTitle, { className: "ibl-dialog-title", children: labels$1.deleteModal.title }) }), jsxRuntime.jsx("div", { className: "my-5", id: "user-limit-delete-description", children: jsxRuntime.jsxs("p", { className: "text-sm text-[#646464]", children: [jsxRuntime.jsx("span", { className: "font-bold italic", children: pendingDelete ? pendingDelete.email || pendingDelete.username : '' }), ' ', "\u2014 ", labels$1.deleteModal.description] }) }), jsxRuntime.jsxs(dialog.DialogFooter, { className: "gap-3", children: [jsxRuntime.jsx(button.Button, { variant: "outline", onClick: () => setPendingDelete(null), children: labels$1.deleteModal.cancel }), jsxRuntime.jsx(button.Button, { className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] text-white hover:opacity-90", onClick: handleConfirmDelete, disabled: isDeleting, "data-testid": "user-limit-delete-confirm", children: isDeleting ? labels$1.form.removing : labels$1.deleteModal.confirm })] })] }) })] }));
116
+ }
117
+
118
+ exports.UserLimitsSection = UserLimitsSection;
119
+ //# sourceMappingURL=user-limits-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-limits-section.js","sources":["../../../../../../../src/components/spend-caps/user-limits-section.tsx"],"sourcesContent":[null],"names":["useT","labels","resolveSpendCapsTabLabels","usePlatformUserOptions","useListTenantUserSpendCapsQuery","errorStatus","useUpsertTenantUserSpendCapMutation","useDeleteTenantUserSpendCapMutation","toast","errorDetail","_jsxs","_Fragment","_jsx","ShieldAlert","SearchSelect","Spinner","Table","TableHeader","TableRow","TableHead","TableBody","TableCell","Button","UserProfileLink","formatUsd","CustomSwitch","RowIconAction","SlidersHorizontal","Trash2","UserProfileDialog","UserCapModal","Dialog","DialogContent","DialogHeader","DialogTitle","DialogFooter"],"mappings":"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"}