@iblai/web-containers 1.62.2 → 1.62.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/chat/index.js +38 -10
- package/dist/cjs/components/chat/index.js.map +1 -1
- package/dist/cjs/components/chat-input-form.js +2 -2
- package/dist/cjs/components/chat-input-form.js.map +1 -1
- package/dist/cjs/components/profile/billing.js +9 -3
- package/dist/cjs/components/profile/billing.js.map +1 -1
- package/dist/cjs/components/profile/chat-history/chat-history-tab.js +4 -7
- package/dist/cjs/components/profile/chat-history/chat-history-tab.js.map +1 -1
- package/dist/cjs/components/profile/use-profile.js +30 -54
- package/dist/cjs/components/profile/use-profile.js.map +1 -1
- package/dist/cjs/components/spend-caps/agent-limits-section.js +3 -5
- package/dist/cjs/components/spend-caps/agent-limits-section.js.map +1 -1
- package/dist/cjs/components/spend-caps/labels.js +74 -0
- package/dist/cjs/components/spend-caps/labels.js.map +1 -1
- package/dist/cjs/components/spend-caps/new-user-default-section.js +80 -0
- package/dist/cjs/components/spend-caps/new-user-default-section.js.map +1 -0
- package/dist/cjs/components/spend-caps/row-icon-action.js +18 -0
- package/dist/cjs/components/spend-caps/row-icon-action.js.map +1 -0
- package/dist/cjs/components/spend-caps/spend-cap-fields.js +25 -0
- package/dist/cjs/components/spend-caps/spend-cap-fields.js.map +1 -0
- package/dist/cjs/components/spend-caps/spend-cap-form.js +20 -22
- package/dist/cjs/components/spend-caps/spend-cap-form.js.map +1 -1
- package/dist/cjs/components/spend-caps/spend-cap-usage.js +1 -0
- package/dist/cjs/components/spend-caps/spend-cap-usage.js.map +1 -1
- package/dist/cjs/components/spend-caps/use-platform-user-options.js +41 -0
- package/dist/cjs/components/spend-caps/use-platform-user-options.js.map +1 -0
- package/dist/cjs/components/spend-caps/use-spend-cap-status.js +26 -0
- package/dist/cjs/components/spend-caps/use-spend-cap-status.js.map +1 -0
- package/dist/cjs/components/spend-caps/use-spend-caps.js +6 -16
- package/dist/cjs/components/spend-caps/use-spend-caps.js.map +1 -1
- package/dist/cjs/components/spend-caps/user-cap-modal.js +8 -32
- package/dist/cjs/components/spend-caps/user-cap-modal.js.map +1 -1
- package/dist/cjs/components/spend-caps/user-limits-section.js +119 -0
- package/dist/cjs/components/spend-caps/user-limits-section.js.map +1 -0
- package/dist/cjs/components/spend-caps/utils.js +15 -0
- package/dist/cjs/components/spend-caps/utils.js.map +1 -1
- package/dist/cjs/components/user-profile-dropdown/index.js +2 -12
- package/dist/cjs/components/user-profile-dropdown/index.js.map +1 -1
- package/dist/cjs/i18n/messages/en.json.js +44 -3
- package/dist/cjs/i18n/messages/en.json.js.map +1 -1
- package/dist/cjs/i18n/messages/es.json.js +44 -3
- package/dist/cjs/i18n/messages/es.json.js.map +1 -1
- package/dist/cjs/i18n/messages/fr.json.js +44 -3
- package/dist/cjs/i18n/messages/fr.json.js.map +1 -1
- package/dist/cjs/i18n/messages/zh.json.js +44 -3
- package/dist/cjs/i18n/messages/zh.json.js.map +1 -1
- package/dist/cjs/web-containers/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/components/chat/index.js +39 -11
- package/dist/esm/components/chat/index.js.map +1 -1
- package/dist/esm/components/chat-input-form.js +2 -2
- package/dist/esm/components/chat-input-form.js.map +1 -1
- package/dist/esm/components/profile/billing.js +9 -3
- package/dist/esm/components/profile/billing.js.map +1 -1
- package/dist/esm/components/profile/chat-history/chat-history-tab.js +5 -8
- package/dist/esm/components/profile/chat-history/chat-history-tab.js.map +1 -1
- package/dist/esm/components/profile/use-profile.js +32 -56
- package/dist/esm/components/profile/use-profile.js.map +1 -1
- package/dist/esm/components/spend-caps/agent-limits-section.js +3 -5
- package/dist/esm/components/spend-caps/agent-limits-section.js.map +1 -1
- package/dist/esm/components/spend-caps/labels.js +74 -0
- package/dist/esm/components/spend-caps/labels.js.map +1 -1
- package/dist/esm/components/spend-caps/new-user-default-section.js +78 -0
- package/dist/esm/components/spend-caps/new-user-default-section.js.map +1 -0
- package/dist/esm/components/spend-caps/row-icon-action.js +16 -0
- package/dist/esm/components/spend-caps/row-icon-action.js.map +1 -0
- package/dist/esm/components/spend-caps/spend-cap-fields.js +23 -0
- package/dist/esm/components/spend-caps/spend-cap-fields.js.map +1 -0
- package/dist/esm/components/spend-caps/spend-cap-form.js +21 -23
- package/dist/esm/components/spend-caps/spend-cap-form.js.map +1 -1
- package/dist/esm/components/spend-caps/spend-cap-usage.js +1 -0
- package/dist/esm/components/spend-caps/spend-cap-usage.js.map +1 -1
- package/dist/esm/components/spend-caps/use-platform-user-options.js +39 -0
- package/dist/esm/components/spend-caps/use-platform-user-options.js.map +1 -0
- package/dist/esm/components/spend-caps/use-spend-cap-status.js +23 -0
- package/dist/esm/components/spend-caps/use-spend-cap-status.js.map +1 -0
- package/dist/esm/components/spend-caps/use-spend-caps.js +1 -11
- package/dist/esm/components/spend-caps/use-spend-caps.js.map +1 -1
- package/dist/esm/components/spend-caps/user-cap-modal.js +8 -32
- package/dist/esm/components/spend-caps/user-cap-modal.js.map +1 -1
- package/dist/esm/components/spend-caps/user-limits-section.js +117 -0
- package/dist/esm/components/spend-caps/user-limits-section.js.map +1 -0
- package/dist/esm/components/spend-caps/utils.js +14 -1
- package/dist/esm/components/spend-caps/utils.js.map +1 -1
- package/dist/esm/components/user-profile-dropdown/index.js +2 -12
- package/dist/esm/components/user-profile-dropdown/index.js.map +1 -1
- package/dist/esm/i18n/messages/en.json.js +44 -3
- package/dist/esm/i18n/messages/en.json.js.map +1 -1
- package/dist/esm/i18n/messages/es.json.js +44 -3
- package/dist/esm/i18n/messages/es.json.js.map +1 -1
- package/dist/esm/i18n/messages/fr.json.js +44 -3
- package/dist/esm/i18n/messages/fr.json.js.map +1 -1
- package/dist/esm/i18n/messages/zh.json.js +44 -3
- package/dist/esm/i18n/messages/zh.json.js.map +1 -1
- package/dist/esm/web-containers/tsconfig.build.tsbuildinfo +1 -1
- package/dist/package.json +1 -1
- package/package.json +3 -3
|
@@ -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","
|
|
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;
|
|
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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"}
|
|
@@ -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":"
|
|
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
|
|
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(
|
|
27
|
+
setPickedUser(initialUser);
|
|
29
28
|
setUserSearch('');
|
|
30
|
-
}, [isOpen, cap]);
|
|
31
|
-
const
|
|
32
|
-
const
|
|
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: (
|
|
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":["
|
|
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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"}
|
|
@@ -50,6 +50,19 @@ function isValidLimit(input) {
|
|
|
50
50
|
const parsed = Number(input);
|
|
51
51
|
return input.trim() !== '' && !Number.isNaN(parsed) && parsed > 0;
|
|
52
52
|
}
|
|
53
|
+
/** HTTP status of an RTK Query error, when it carries one. */
|
|
54
|
+
function errorStatus(error) {
|
|
55
|
+
return error === null || error === void 0 ? void 0 : error.status;
|
|
56
|
+
}
|
|
57
|
+
/** The backend's own sentence from an error body (`detail` or `error`), else ''. */
|
|
58
|
+
function errorDetail(error) {
|
|
59
|
+
const data = error === null || error === void 0 ? void 0 : error.data;
|
|
60
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.detail) === 'string')
|
|
61
|
+
return data.detail;
|
|
62
|
+
if (typeof (data === null || data === void 0 ? void 0 : data.error) === 'string')
|
|
63
|
+
return data.error;
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
53
66
|
/** Percent of the limit already spent, clamped to [0, 100] for progress bars. */
|
|
54
67
|
function percentUsed(currentSpend, maxCost) {
|
|
55
68
|
const spent = Number(currentSpend);
|
|
@@ -59,6 +72,8 @@ function percentUsed(currentSpend, maxCost) {
|
|
|
59
72
|
return Math.min(100, Math.max(0, Math.round((spent / limit) * 100)));
|
|
60
73
|
}
|
|
61
74
|
|
|
75
|
+
exports.errorDetail = errorDetail;
|
|
76
|
+
exports.errorStatus = errorStatus;
|
|
62
77
|
exports.formatUsd = formatUsd;
|
|
63
78
|
exports.isValidLimit = isValidLimit;
|
|
64
79
|
exports.parseThresholdsInput = parseThresholdsInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/spend-caps/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;AAIG;AAEH;AACM,SAAU,SAAS,CAAC,KAAgC,EAAA;AACxD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,OAAO;IACzE,OAAO,CAAA,CAAA,EAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AAChC;AAEA;AACM,SAAU,iBAAiB,CAAC,UAAuC,EAAA;AACvE,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAAE,QAAA,OAAO,EAAE;AACzC,IAAA,OAAO;AACJ,SAAA,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;AACnE,SAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACb,QAAA,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG;QAC3B,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,IAAA,CAAC;SACA,IAAI,CAAC,IAAI,CAAC;AACf;AAEA;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,KAAa,EAAA;AAChD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;IAC5B,IAAI,OAAO,KAAK,EAAE;AAAE,QAAA,OAAO,EAAE;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAa,EAAE;AAC9B,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,IAAI,KAAK,EAAE;AAAE,YAAA,OAAO,IAAI;AAC5B,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,GAAG;AAAE,YAAA,OAAO,IAAI;AACvE,QAAA,SAAS,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IAC/B;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,YAAY,CAAC,KAAa,EAAA;AACxC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,IAAA,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;AACnE;AAEA;AACM,SAAU,WAAW,CAAC,YAAoB,EAAE,OAAe,EAAA;AAC/D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAClC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAC7B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAAE,QAAA,OAAO,CAAC;IACtE,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC;AACtE
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../../src/components/spend-caps/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,11 @@ var React = require('react');
|
|
|
5
5
|
var dropdownMenu = require('../ui/dropdown-menu.js');
|
|
6
6
|
var avatar = require('../ui/avatar.js');
|
|
7
7
|
var button = require('../ui/button.js');
|
|
8
|
-
var skeleton = require('../ui/skeleton.js');
|
|
9
8
|
var userProfileModal = require('../modals/user-profile-modal.js');
|
|
10
9
|
var index = require('../tenant-switch/index.js');
|
|
11
10
|
var webUtils = require('@iblai/web-utils');
|
|
12
11
|
var Gravatar = require('react-gravatar');
|
|
13
12
|
var Link = require('next/link');
|
|
14
|
-
var dataLayer = require('@iblai/data-layer');
|
|
15
13
|
var utils = require('../../lib/utils.js');
|
|
16
14
|
var context = require('../../i18n/context.js');
|
|
17
15
|
require('../../packages/i18n/dist/index.esm.js');
|
|
@@ -51,12 +49,8 @@ localLLMProps,
|
|
|
51
49
|
isModalOpen, onModalOpenChange, defaultActiveTab, onAccountDeleted, enableMemoryTab, showBenchmarks = false, onboardingBasePath = '', }) {
|
|
52
50
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
53
51
|
const t = context.useT();
|
|
54
|
-
// The current user's own metadata comes from the forwarded localStorage key;
|
|
55
|
-
// the edX profile-image metadata still comes from its own endpoint.
|
|
56
52
|
const [userMetadata] = webUtils.useStoredUserMetadata();
|
|
57
|
-
const
|
|
58
|
-
params: { username: username !== null && username !== void 0 ? username : '' },
|
|
59
|
-
});
|
|
53
|
+
const profileImage = userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.profile_image;
|
|
60
54
|
// Local LLM state from props (if provided) or from hook (fallback)
|
|
61
55
|
const hookData = useModelDownload.useModelDownload();
|
|
62
56
|
// Use provided localLLMProps if available, otherwise use hook data
|
|
@@ -138,11 +132,7 @@ isModalOpen, onModalOpenChange, defaultActiveTab, onAccountDeleted, enableMemory
|
|
|
138
132
|
return (metadata === null || metadata === void 0 ? void 0 : metadata.show_help) !== false;
|
|
139
133
|
};
|
|
140
134
|
const renderAvatar = () => {
|
|
141
|
-
|
|
142
|
-
if (isUserMetadataEdxLoading) {
|
|
143
|
-
return jsxRuntime.jsx(skeleton.Skeleton, { className: "h-8 w-8 rounded-full" });
|
|
144
|
-
}
|
|
145
|
-
return (jsxRuntime.jsxs(avatar.Avatar, { className: "h-8 w-8", children: [((_a = userMetadataEdx === null || userMetadataEdx === void 0 ? void 0 : userMetadataEdx.profile_image) === null || _a === void 0 ? void 0 : _a.has_image) ? (jsxRuntime.jsx(avatar.AvatarImage, { src: userMetadataEdx.profile_image.image_url_small })) : enableGravatarOnProfilePic && (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) ? (jsxRuntime.jsx(Gravatar, { email: userMetadata.email, size: avatarSize })) : null, jsxRuntime.jsx(avatar.AvatarFallback, { className: "bg-gray-100 text-gray-600 text-sm font-medium", children: webUtils.getInitials((userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.name) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.username) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '') })] }));
|
|
135
|
+
return (jsxRuntime.jsxs(avatar.Avatar, { className: "h-8 w-8", children: [(profileImage === null || profileImage === void 0 ? void 0 : profileImage.has_image) ? (jsxRuntime.jsx(avatar.AvatarImage, { src: profileImage.image_url_small })) : enableGravatarOnProfilePic && (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) ? (jsxRuntime.jsx(Gravatar, { email: userMetadata.email, size: avatarSize })) : null, jsxRuntime.jsx(avatar.AvatarFallback, { className: "bg-gray-100 text-gray-600 text-sm font-medium", children: webUtils.getInitials((userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.name) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.username) || (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '') })] }));
|
|
146
136
|
};
|
|
147
137
|
const renderProfileMenuItem = () => {
|
|
148
138
|
if (!showProfileTab)
|