@iblai/web-containers 1.62.2 → 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 (84) 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/profile/billing.js +9 -3
  6. package/dist/cjs/components/profile/billing.js.map +1 -1
  7. package/dist/cjs/components/spend-caps/agent-limits-section.js +3 -5
  8. package/dist/cjs/components/spend-caps/agent-limits-section.js.map +1 -1
  9. package/dist/cjs/components/spend-caps/labels.js +74 -0
  10. package/dist/cjs/components/spend-caps/labels.js.map +1 -1
  11. package/dist/cjs/components/spend-caps/new-user-default-section.js +80 -0
  12. package/dist/cjs/components/spend-caps/new-user-default-section.js.map +1 -0
  13. package/dist/cjs/components/spend-caps/row-icon-action.js +18 -0
  14. package/dist/cjs/components/spend-caps/row-icon-action.js.map +1 -0
  15. package/dist/cjs/components/spend-caps/spend-cap-fields.js +25 -0
  16. package/dist/cjs/components/spend-caps/spend-cap-fields.js.map +1 -0
  17. package/dist/cjs/components/spend-caps/spend-cap-form.js +20 -22
  18. package/dist/cjs/components/spend-caps/spend-cap-form.js.map +1 -1
  19. package/dist/cjs/components/spend-caps/spend-cap-usage.js +1 -0
  20. package/dist/cjs/components/spend-caps/spend-cap-usage.js.map +1 -1
  21. package/dist/cjs/components/spend-caps/use-platform-user-options.js +41 -0
  22. package/dist/cjs/components/spend-caps/use-platform-user-options.js.map +1 -0
  23. package/dist/cjs/components/spend-caps/use-spend-cap-status.js +26 -0
  24. package/dist/cjs/components/spend-caps/use-spend-cap-status.js.map +1 -0
  25. package/dist/cjs/components/spend-caps/use-spend-caps.js +6 -16
  26. package/dist/cjs/components/spend-caps/use-spend-caps.js.map +1 -1
  27. package/dist/cjs/components/spend-caps/user-cap-modal.js +8 -32
  28. package/dist/cjs/components/spend-caps/user-cap-modal.js.map +1 -1
  29. package/dist/cjs/components/spend-caps/user-limits-section.js +119 -0
  30. package/dist/cjs/components/spend-caps/user-limits-section.js.map +1 -0
  31. package/dist/cjs/components/spend-caps/utils.js +15 -0
  32. package/dist/cjs/components/spend-caps/utils.js.map +1 -1
  33. package/dist/cjs/i18n/messages/en.json.js +44 -3
  34. package/dist/cjs/i18n/messages/en.json.js.map +1 -1
  35. package/dist/cjs/i18n/messages/es.json.js +44 -3
  36. package/dist/cjs/i18n/messages/es.json.js.map +1 -1
  37. package/dist/cjs/i18n/messages/fr.json.js +44 -3
  38. package/dist/cjs/i18n/messages/fr.json.js.map +1 -1
  39. package/dist/cjs/i18n/messages/zh.json.js +44 -3
  40. package/dist/cjs/i18n/messages/zh.json.js.map +1 -1
  41. package/dist/cjs/web-containers/tsconfig.build.tsbuildinfo +1 -1
  42. package/dist/esm/components/chat/index.js +39 -11
  43. package/dist/esm/components/chat/index.js.map +1 -1
  44. package/dist/esm/components/chat-input-form.js +2 -2
  45. package/dist/esm/components/chat-input-form.js.map +1 -1
  46. package/dist/esm/components/profile/billing.js +9 -3
  47. package/dist/esm/components/profile/billing.js.map +1 -1
  48. package/dist/esm/components/spend-caps/agent-limits-section.js +3 -5
  49. package/dist/esm/components/spend-caps/agent-limits-section.js.map +1 -1
  50. package/dist/esm/components/spend-caps/labels.js +74 -0
  51. package/dist/esm/components/spend-caps/labels.js.map +1 -1
  52. package/dist/esm/components/spend-caps/new-user-default-section.js +78 -0
  53. package/dist/esm/components/spend-caps/new-user-default-section.js.map +1 -0
  54. package/dist/esm/components/spend-caps/row-icon-action.js +16 -0
  55. package/dist/esm/components/spend-caps/row-icon-action.js.map +1 -0
  56. package/dist/esm/components/spend-caps/spend-cap-fields.js +23 -0
  57. package/dist/esm/components/spend-caps/spend-cap-fields.js.map +1 -0
  58. package/dist/esm/components/spend-caps/spend-cap-form.js +21 -23
  59. package/dist/esm/components/spend-caps/spend-cap-form.js.map +1 -1
  60. package/dist/esm/components/spend-caps/spend-cap-usage.js +1 -0
  61. package/dist/esm/components/spend-caps/spend-cap-usage.js.map +1 -1
  62. package/dist/esm/components/spend-caps/use-platform-user-options.js +39 -0
  63. package/dist/esm/components/spend-caps/use-platform-user-options.js.map +1 -0
  64. package/dist/esm/components/spend-caps/use-spend-cap-status.js +23 -0
  65. package/dist/esm/components/spend-caps/use-spend-cap-status.js.map +1 -0
  66. package/dist/esm/components/spend-caps/use-spend-caps.js +1 -11
  67. package/dist/esm/components/spend-caps/use-spend-caps.js.map +1 -1
  68. package/dist/esm/components/spend-caps/user-cap-modal.js +8 -32
  69. package/dist/esm/components/spend-caps/user-cap-modal.js.map +1 -1
  70. package/dist/esm/components/spend-caps/user-limits-section.js +117 -0
  71. package/dist/esm/components/spend-caps/user-limits-section.js.map +1 -0
  72. package/dist/esm/components/spend-caps/utils.js +14 -1
  73. package/dist/esm/components/spend-caps/utils.js.map +1 -1
  74. package/dist/esm/i18n/messages/en.json.js +44 -3
  75. package/dist/esm/i18n/messages/en.json.js.map +1 -1
  76. package/dist/esm/i18n/messages/es.json.js +44 -3
  77. package/dist/esm/i18n/messages/es.json.js.map +1 -1
  78. package/dist/esm/i18n/messages/fr.json.js +44 -3
  79. package/dist/esm/i18n/messages/fr.json.js.map +1 -1
  80. package/dist/esm/i18n/messages/zh.json.js +44 -3
  81. package/dist/esm/i18n/messages/zh.json.js.map +1 -1
  82. package/dist/esm/web-containers/tsconfig.build.tsbuildinfo +1 -1
  83. package/dist/package.json +1 -1
  84. package/package.json +4 -4
@@ -0,0 +1,80 @@
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 capabilityGate = require('../modals/edit-mentor-modal/capability-gate.js');
8
+ var index = require('../spinner/index.js');
9
+ var context = require('../../i18n/context.js');
10
+ require('../../packages/i18n/dist/index.esm.js');
11
+ var labels = require('./labels.js');
12
+ var spendCapFields = require('./spend-cap-fields.js');
13
+ var utils = require('./utils.js');
14
+ 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');
15
+
16
+ function fieldsFrom(template) {
17
+ var _a, _b;
18
+ return {
19
+ limit: (template === null || template === void 0 ? void 0 : template.max_cost_usd) != null ? String(Number(template.max_cost_usd)) : '',
20
+ interval: (_a = template === null || template === void 0 ? void 0 : template.interval_type) !== null && _a !== void 0 ? _a : 'month',
21
+ enforcement: (_b = template === null || template === void 0 ? void 0 : template.enforcement) !== null && _b !== void 0 ? _b : 'block',
22
+ thresholds: template ? utils.thresholdsToInput(template.alert_thresholds) : '80, 95',
23
+ };
24
+ }
25
+ /**
26
+ * Tenant-settings Billing card for the default spend limit each member gets
27
+ * when they join (`spend-caps/users/default/`, iblai-platform#2513). The
28
+ * endpoint holds a template, not a cap: it never 404s (`enabled: false` is
29
+ * "off"), its PUT replaces every field, and saving it never touches the
30
+ * per-user rows it already created — so there is no usage strip and no
31
+ * Delete here, only the switch and the same fields as a cap. Rendered inside
32
+ * `BillingTab` under `UserLimitsSection`.
33
+ */
34
+ function NewUserDefaultSection({ tenantKey, labels: labelsOverride, }) {
35
+ const t = context.useT();
36
+ const labels$1 = React.useMemo(() => labels.resolveSpendCapsTabLabels(labelsOverride, t), [labelsOverride, t]);
37
+ const copy = labels$1.tenantSections.newUserDefault;
38
+ const { data: template, error: templateError, isLoading, } = dataLayer.useGetNewUserSpendCapDefaultQuery({ org: tenantKey }, { skip: !tenantKey });
39
+ const [upsertDefault, { isLoading: isSaving }] = dataLayer.useUpsertNewUserSpendCapDefaultMutation();
40
+ const isForbidden = utils.errorStatus(templateError) === 403;
41
+ const [enabled, setEnabled] = React.useState(false);
42
+ const [fields, setFields] = React.useState(() => fieldsFrom(undefined));
43
+ // Rehydrate whenever the server copy changes (first load and every save).
44
+ React.useEffect(() => {
45
+ var _a;
46
+ setEnabled((_a = template === null || template === void 0 ? void 0 : template.enabled) !== null && _a !== void 0 ? _a : false);
47
+ setFields(fieldsFrom(template));
48
+ }, [template]);
49
+ const limitValid = utils.isValidLimit(fields.limit);
50
+ // The amount is only required while the default is on; off, an empty one
51
+ // is stored as null so the rest of the setup is kept.
52
+ const limitOk = enabled ? limitValid : fields.limit.trim() === '' || limitValid;
53
+ const parsedThresholds = utils.parseThresholdsInput(fields.thresholds);
54
+ const canSave = limitOk && parsedThresholds !== null && !isSaving;
55
+ const handleSave = async () => {
56
+ if (parsedThresholds === null)
57
+ return;
58
+ try {
59
+ await upsertDefault({
60
+ org: tenantKey,
61
+ formData: {
62
+ enabled,
63
+ interval_type: fields.interval,
64
+ max_cost_usd: limitValid ? Number(fields.limit).toFixed(2) : null,
65
+ enforcement: fields.enforcement,
66
+ alert_thresholds: parsedThresholds,
67
+ },
68
+ }).unwrap();
69
+ sonner.toast.success(copy.savedToast);
70
+ }
71
+ catch (error) {
72
+ console.error('[NewUserDefaultSection] save default error', error);
73
+ sonner.toast.error(utils.errorDetail(error) || copy.saveErrorToast);
74
+ }
75
+ };
76
+ return (jsxRuntime.jsxs("div", { "data-testid": "spend-limits-new-user-default-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: "border-t border-[#e5e7eb] dark:border-zinc-800 px-4 py-3", children: isLoading ? (jsxRuntime.jsx("div", { className: "flex items-center justify-center py-8", "data-testid": "new-user-default-loading", children: jsxRuntime.jsx(index.Spinner, {}) })) : 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": "new-user-default-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("div", { className: "space-y-4", "data-testid": "new-user-default-form", children: [jsxRuntime.jsx("p", { className: "text-xs text-gray-500", "data-testid": "new-user-default-note", children: copy.futureJoinsNote }), jsxRuntime.jsx(capabilityGate.CapabilityGate, { title: copy.capability.title, description: copy.capability.description, offHint: copy.capability.offHint, enabled: enabled, onToggle: setEnabled, disabled: isSaving, ariaLabel: copy.capability.title, toggleTestId: "new-user-default-enabled-switch", children: jsxRuntime.jsx(spendCapFields.SpendCapFields, { labels: labels$1, values: fields, onChange: setFields, testId: "new-user-default" }) }), jsxRuntime.jsx("div", { className: "flex items-center justify-end gap-2", children: jsxRuntime.jsx("button", { type: "button", onClick: handleSave, disabled: !canSave, "data-testid": "new-user-default-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$1.form.saving : labels$1.form.save }) })] })) })] }));
77
+ }
78
+
79
+ exports.NewUserDefaultSection = NewUserDefaultSection;
80
+ //# sourceMappingURL=new-user-default-section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-user-default-section.js","sources":["../../../../../../../src/components/spend-caps/new-user-default-section.tsx"],"sourcesContent":[null],"names":["thresholdsToInput","useT","labels","resolveSpendCapsTabLabels","useGetNewUserSpendCapDefaultQuery","useUpsertNewUserSpendCapDefaultMutation","errorStatus","isValidLimit","parseThresholdsInput","toast","errorDetail","_jsxs","_jsx","Spinner","ShieldAlert","CapabilityGate","SpendCapFields"],"mappings":";;;;;;;;;;;;;;;AA8BA,SAAS,UAAU,CAAC,QAA4C,EAAA;;IAC9D,OAAO;QACL,KAAK,EAAE,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,YAAY,KAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE;QAClF,QAAQ,EAAE,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;QAC5C,WAAW,EAAE,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;AAC7C,QAAA,UAAU,EAAE,QAAQ,GAAGA,uBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,QAAQ;KAC/E;AACH;AAEA;;;;;;;;AAQG;AACG,SAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EAAE,cAAc,GACK,EAAA;AAC3B,IAAA,MAAM,CAAC,GAAGC,YAAI,EAAE;IAChB,MAAMC,QAAM,GAAG,KAAK,CAAC,OAAO,CAC1B,MAAMC,gCAAyB,CAAC,cAAc,EAAE,CAAC,CAAC,EAClD,CAAC,cAAc,EAAE,CAAC,CAAC,CACpB;AACD,IAAA,MAAM,IAAI,GAAGD,QAAM,CAAC,cAAc,CAAC,cAAc;IAEjD,MAAM,EACJ,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,aAAa,EACpB,SAAS,GACV,GAAGE,2CAAiC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;AAC/E,IAAA,MAAM,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,GAAGC,iDAAuC,EAAE;IAC1F,MAAM,WAAW,GAAGC,iBAAW,CAAC,aAAa,CAAC,KAAK,GAAG;AAEtD,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAsB,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;;AAG5F,IAAA,KAAK,CAAC,SAAS,CAAC,MAAK;;AACnB,QAAA,UAAU,CAAC,CAAA,EAAA,GAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,KAAK,CAAC;AACtC,QAAA,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEd,MAAM,UAAU,GAAGC,kBAAY,CAAC,MAAM,CAAC,KAAK,CAAC;;;IAG7C,MAAM,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,UAAU;IAC/E,MAAM,gBAAgB,GAAGC,0BAAoB,CAAC,MAAM,CAAC,UAAU,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,IAAI,gBAAgB,KAAK,IAAI,IAAI,CAAC,QAAQ;AAEjE,IAAA,MAAM,UAAU,GAAG,YAAW;QAC5B,IAAI,gBAAgB,KAAK,IAAI;YAAE;AAC/B,QAAA,IAAI;AACF,YAAA,MAAM,aAAa,CAAC;AAClB,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,QAAQ,EAAE;oBACR,OAAO;oBACP,aAAa,EAAE,MAAM,CAAC,QAAQ;AAC9B,oBAAA,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;oBACjE,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,oBAAA,gBAAgB,EAAE,gBAAgB;AACnC,iBAAA;aACF,CAAC,CAAC,MAAM,EAAE;AACX,YAAAC,YAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC;AAClE,YAAAA,YAAK,CAAC,KAAK,CAACC,iBAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;QACxD;AACF,IAAA,CAAC;AAED,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,uCAAuC,EACnD,SAAS,EAAC,yHAAyH,EAAA,QAAA,EAAA,CAEnIC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uEAAuE,EAAA,QAAA,EACpFD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,EAAA,QAAA,EAAA,CAC1BC,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,qEAAqE,EAAA,QAAA,EAChF,IAAI,CAAC,KAAK,EAAA,CACR,EACLA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,qEAAqE,EAAA,QAAA,EAC/E,IAAI,CAAC,WAAW,EAAA,CACf,CAAA,EAAA,CACA,EAAA,CACF,EAENA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0DAA0D,EAAA,QAAA,EACtE,SAAS,IACRA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,uCAAuC,EAAA,aAAA,EACrC,0BAA0B,EAAA,QAAA,EAEtCA,cAAA,CAACC,aAAO,EAAA,EAAA,CAAG,EAAA,CACP,IACJ,WAAW,IACbF,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,sGAAsG,EAAA,aAAA,EACpG,yBAAyB,EAAA,QAAA,EAAA,CAErCC,cAAA,CAACE,mBAAW,EAAA,EAAC,SAAS,EAAC,uBAAuB,EAAA,CAAG,EACjDF,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAEV,QAAM,CAAC,MAAM,CAAC,KAAK,EAAA,CAAK,EAC1EU,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAEV,QAAM,CAAC,MAAM,CAAC,WAAW,EAAA,CAAK,CAAA,EAAA,CACzE,KAENS,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,aAAA,EAAa,uBAAuB,EAAA,QAAA,EAAA,CAC5DC,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,aAAA,EAAa,uBAAuB,EAAA,QAAA,EACrE,IAAI,CAAC,eAAe,EAAA,CACnB,EAEJA,cAAA,CAACG,6BAAc,EAAA,EACb,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAC5B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EACxC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAChC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAChC,YAAY,EAAC,iCAAiC,EAAA,QAAA,EAE9CH,cAAA,CAACI,6BAAc,EAAA,EACb,MAAM,EAAEd,QAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAC,kBAAkB,EAAA,CACzB,EAAA,CACa,EAEjBU,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAClDA,cAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,OAAO,EAAA,aAAA,EACN,8BAA8B,EAC1C,SAAS,EAAC,kMAAkM,EAAA,QAAA,EAE3M,QAAQ,GAAGV,QAAM,CAAC,IAAI,CAAC,MAAM,GAAGA,QAAM,CAAC,IAAI,CAAC,IAAI,EAAA,CAC1C,EAAA,CACL,CAAA,EAAA,CACF,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var button = require('../ui/button.js');
5
+ var tooltip = require('../ui/tooltip.js');
6
+ var utils = require('../../lib/utils.js');
7
+
8
+ /**
9
+ * An icon action beside a row's status switch (the MCP connector-card
10
+ * pattern): a ghost icon button whose tooltip and accessible name are the
11
+ * same words.
12
+ */
13
+ function RowIconAction({ label, icon: Icon, testId, onClick, disabled, className, }) {
14
+ return (jsxRuntime.jsx(tooltip.TooltipProvider, { delayDuration: 200, children: jsxRuntime.jsxs(tooltip.Tooltip, { children: [jsxRuntime.jsx(tooltip.TooltipTrigger, { asChild: true, children: jsxRuntime.jsx(button.Button, { type: "button", variant: "ghost", size: "icon", "aria-label": label, "data-testid": testId, className: utils.cn('h-8 w-8 text-gray-500', className), onClick: onClick, disabled: disabled, children: jsxRuntime.jsx(Icon, { className: "h-4 w-4", "aria-hidden": "true" }) }) }), jsxRuntime.jsx(tooltip.TooltipContent, { className: "ibl-tooltip-content z-50", children: label })] }) }));
15
+ }
16
+
17
+ exports.RowIconAction = RowIconAction;
18
+ //# sourceMappingURL=row-icon-action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-icon-action.js","sources":["../../../../../../../src/components/spend-caps/row-icon-action.tsx"],"sourcesContent":[null],"names":["_jsx","TooltipProvider","_jsxs","Tooltip","TooltipTrigger","Button","cn","TooltipContent"],"mappings":";;;;;;;AAwBA;;;;AAIG;SACa,aAAa,CAAC,EAC5B,KAAK,EACL,IAAI,EAAE,IAAI,EACV,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,GACU,EAAA;AACnB,IAAA,QACEA,cAAA,CAACC,uBAAe,EAAA,EAAC,aAAa,EAAE,GAAG,EAAA,QAAA,EACjCC,eAAA,CAACC,eAAO,eACNH,cAAA,CAACI,sBAAc,EAAA,EAAC,OAAO,kBACrBJ,cAAA,CAACK,aAAM,EAAA,EACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,gBACC,KAAK,EAAA,aAAA,EACJ,MAAM,EACnB,SAAS,EAAEC,QAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EACjD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAElBN,cAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,aAAA,EAAa,MAAM,GAAG,EAAA,CACxC,EAAA,CACM,EACjBA,cAAA,CAACO,sBAAc,EAAA,EAAC,SAAS,EAAC,0BAA0B,YAAE,KAAK,EAAA,CAAkB,CAAA,EAAA,CACrE,EAAA,CACM;AAEtB;;;;"}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var input = require('../ui/input.js');
5
+ var label = require('../ui/label.js');
6
+ var select = require('../ui/select.js');
7
+ var utils = require('./utils.js');
8
+
9
+ /**
10
+ * The four writable fields of a spend limit — amount, reset interval,
11
+ * enforcement and alert thresholds — with their inline validation. Shared by
12
+ * the cap editor (`SpendCapForm`) and the new-user default editor.
13
+ */
14
+ function SpendCapFields({ labels, values, onChange, testId }) {
15
+ const set = (key, value) => onChange({ ...values, [key]: value });
16
+ const limitTouched = values.limit.trim() !== '';
17
+ const limitValid = utils.isValidLimit(values.limit);
18
+ const thresholdsValid = utils.parseThresholdsInput(values.thresholds) !== null;
19
+ return (jsxRuntime.jsxs("div", { className: "space-y-4", children: [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: values.limit, onChange: (e) => set('limit', 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: values.interval, onValueChange: (value) => set('interval', 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: values.enforcement, onValueChange: (value) => set('enforcement', 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: values.enforcement === 'block'
20
+ ? labels.form.enforcementHelp.block
21
+ : 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: values.thresholds, onChange: (e) => set('thresholds', 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 }))] })] })] }));
22
+ }
23
+
24
+ exports.SpendCapFields = SpendCapFields;
25
+ //# sourceMappingURL=spend-cap-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spend-cap-fields.js","sources":["../../../../../../../src/components/spend-caps/spend-cap-fields.tsx"],"sourcesContent":[null],"names":["isValidLimit","parseThresholdsInput","_jsxs","_jsx","Label","Input","Select","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"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"}
@@ -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":"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"}
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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"}