@carlonicora/nextjs-jsonapi 4.1.2 → 4.2.0

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 (229) hide show
  1. package/dist/{AssistantMessageInterface-CubxuBIJ.d.ts → AssistantMessageInterface-DHJJO_Z_.d.ts} +1 -1
  2. package/dist/{AssistantMessageInterface-sHjI2zPN.d.mts → AssistantMessageInterface-S7oyERTT.d.mts} +1 -1
  3. package/dist/{BlockNoteEditor-VOYKZOP5.mjs → BlockNoteEditor-HXAHDJA7.mjs} +34 -27
  4. package/dist/BlockNoteEditor-HXAHDJA7.mjs.map +1 -0
  5. package/dist/{BlockNoteEditor-BENYTTCZ.js → BlockNoteEditor-LLCZDFLZ.js} +50 -43
  6. package/dist/BlockNoteEditor-LLCZDFLZ.js.map +1 -0
  7. package/dist/{BlockNoteViewer-USLR4Y7C.js → BlockNoteViewer-77CCTC2U.js} +3 -3
  8. package/dist/{BlockNoteViewer-USLR4Y7C.js.map → BlockNoteViewer-77CCTC2U.js.map} +1 -1
  9. package/dist/{BlockNoteViewer-Y2ZM4ESA.mjs → BlockNoteViewer-MDPO6BXN.mjs} +2 -2
  10. package/dist/{auth.interface-Df4vXbNz.d.mts → auth.interface-CeFCz9NU.d.mts} +1 -1
  11. package/dist/{auth.interface-BzI4onI_.d.ts → auth.interface-D1R7VVky.d.ts} +1 -1
  12. package/dist/billing/index.d.mts +40 -6
  13. package/dist/billing/index.d.ts +40 -6
  14. package/dist/billing/index.js +806 -774
  15. package/dist/billing/index.js.map +1 -1
  16. package/dist/billing/index.mjs +494 -462
  17. package/dist/billing/index.mjs.map +1 -1
  18. package/dist/{chunk-6ISF5KNQ.mjs → chunk-2VXDZRYY.mjs} +1103 -816
  19. package/dist/chunk-2VXDZRYY.mjs.map +1 -0
  20. package/dist/{chunk-4BZJ4LAB.js → chunk-4ORLPEK7.js} +136 -104
  21. package/dist/chunk-4ORLPEK7.js.map +1 -0
  22. package/dist/{chunk-ZZ6E33FO.mjs → chunk-6DRSSW5O.mjs} +36 -4
  23. package/dist/chunk-6DRSSW5O.mjs.map +1 -0
  24. package/dist/{chunk-KS6WZP2E.js → chunk-6SMJRAE3.js} +4 -4
  25. package/dist/{chunk-KS6WZP2E.js.map → chunk-6SMJRAE3.js.map} +1 -1
  26. package/dist/{chunk-WQ77CUUZ.js → chunk-GPXYQMOZ.js} +7 -7
  27. package/dist/{chunk-WQ77CUUZ.js.map → chunk-GPXYQMOZ.js.map} +1 -1
  28. package/dist/{chunk-46S3KPLU.mjs → chunk-ILFFC6BG.mjs} +2 -2
  29. package/dist/{chunk-HZVVRIJQ.mjs → chunk-IUS2RHCX.mjs} +2 -2
  30. package/dist/{chunk-F7RNBGHS.js → chunk-KJMMBUOA.js} +3 -3
  31. package/dist/{chunk-F7RNBGHS.js.map → chunk-KJMMBUOA.js.map} +1 -1
  32. package/dist/{chunk-ZO3QQ5CQ.mjs → chunk-MQDR6MEE.mjs} +2 -2
  33. package/dist/{chunk-ORU7KLCY.js → chunk-VDVIUDY5.js} +1445 -1158
  34. package/dist/chunk-VDVIUDY5.js.map +1 -0
  35. package/dist/client/index.d.mts +20 -6
  36. package/dist/client/index.d.ts +20 -6
  37. package/dist/client/index.js +6 -4
  38. package/dist/client/index.js.map +1 -1
  39. package/dist/client/index.mjs +5 -3
  40. package/dist/components/index.d.mts +59 -21
  41. package/dist/components/index.d.ts +59 -21
  42. package/dist/components/index.js +4 -4
  43. package/dist/components/index.mjs +3 -3
  44. package/dist/{config-CEAq4Ozy.d.mts → config-BP2vyddw.d.mts} +5 -0
  45. package/dist/{config-DydDHCfb.d.ts → config-BhW2QrRD.d.ts} +5 -0
  46. package/dist/contexts/index.d.mts +4 -4
  47. package/dist/contexts/index.d.ts +4 -4
  48. package/dist/contexts/index.js +4 -4
  49. package/dist/contexts/index.mjs +3 -3
  50. package/dist/core/index.d.mts +17 -9
  51. package/dist/core/index.d.ts +17 -9
  52. package/dist/core/index.js +4 -2
  53. package/dist/core/index.js.map +1 -1
  54. package/dist/core/index.mjs +3 -1
  55. package/dist/features/analytics/index.d.mts +1 -1
  56. package/dist/features/analytics/index.d.ts +1 -1
  57. package/dist/features/analytics/index.js +122 -122
  58. package/dist/features/analytics/index.mjs +4 -4
  59. package/dist/features/analytics/server.js +4 -4
  60. package/dist/features/analytics/server.mjs +2 -2
  61. package/dist/features/help/index.d.mts +1 -1
  62. package/dist/features/help/index.d.ts +1 -1
  63. package/dist/features/help/index.js +42 -40
  64. package/dist/features/help/index.js.map +1 -1
  65. package/dist/features/help/index.mjs +8 -6
  66. package/dist/features/help/index.mjs.map +1 -1
  67. package/dist/features/tokenusage/index.js +125 -125
  68. package/dist/features/tokenusage/index.mjs +4 -4
  69. package/dist/index.d.mts +7 -7
  70. package/dist/index.d.ts +7 -7
  71. package/dist/index.js +5 -3
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.mjs +4 -2
  74. package/dist/{notification.interface-P_pNfzZQ.d.mts → notification.interface-BB6GPpZY.d.mts} +1 -1
  75. package/dist/{notification.interface-BNCvnVCW.d.ts → notification.interface-CmAGrijJ.d.ts} +1 -1
  76. package/dist/{s3.service-CbUa6a-8.d.ts → s3.service-C-4YpEMu.d.ts} +7 -3
  77. package/dist/{s3.service-DAp8FbuG.d.mts → s3.service-dVj-nxMl.d.mts} +7 -3
  78. package/dist/server/index.d.mts +4 -4
  79. package/dist/server/index.d.ts +4 -4
  80. package/dist/server/index.js +3 -3
  81. package/dist/server/index.mjs +2 -2
  82. package/dist/{useSocket-BHVIyigI.d.ts → useSocket-B0H9pmmH.d.ts} +1 -1
  83. package/dist/{useSocket-B9gTbuCj.d.mts → useSocket-B5RQb6v2.d.mts} +1 -1
  84. package/dist/{user.interface-CrmwJLYW.d.ts → user.interface-C0ZdsBZj.d.ts} +2 -0
  85. package/dist/{user.interface-CSaGWFbg.d.mts → user.interface-CIWGlbqM.d.mts} +2 -0
  86. package/package.json +1 -1
  87. package/src/components/containers/RoundPageContainer.tsx +3 -1
  88. package/src/components/containers/RoundPageContainerTitle.tsx +5 -2
  89. package/src/components/editors/BlockNoteEditor.tsx +31 -15
  90. package/src/components/editors/BlockNoteEditorAiActions.tsx +11 -7
  91. package/src/components/editors/__tests__/BlockNoteEditorAiActions.test.ts +10 -3
  92. package/src/components/errors/ErrorDetails.tsx +5 -2
  93. package/src/components/forms/CommonAssociationForm.tsx +1 -1
  94. package/src/components/forms/EntityMultiSelector.tsx +6 -2
  95. package/src/components/forms/EntitySelector.tsx +4 -1
  96. package/src/components/forms/FileUploader.tsx +3 -2
  97. package/src/components/forms/MultiFileUploader.tsx +3 -1
  98. package/src/components/navigations/Breadcrumb.tsx +3 -2
  99. package/src/components/navigations/Header.tsx +3 -1
  100. package/src/components/navigations/MobileNavigationBar.tsx +3 -1
  101. package/src/components/navigations/__tests__/Header.spec.tsx +2 -2
  102. package/src/components/tables/cells/cell.id.tsx +13 -2
  103. package/src/core/abstracts/AbstractService.ts +3 -3
  104. package/src/core/abstracts/ClientAbstractService.ts +3 -2
  105. package/src/features/assistant-action/components/ApprovalActionCard.tsx +74 -5
  106. package/src/features/assistant-action/components/__tests__/ApprovalActionCard.spec.tsx +81 -0
  107. package/src/features/assistant-message/components/parts/RelevanceMeter.tsx +4 -1
  108. package/src/features/assistant-message/components/parts/tabs/UsersTab.tsx +2 -1
  109. package/src/features/auth/components/buttons/GoogleSignInButton.tsx +4 -1
  110. package/src/features/auth/components/details/LandingComponent.tsx +1 -1
  111. package/src/features/auth/components/forms/ForgotPassword.tsx +1 -1
  112. package/src/features/auth/components/forms/Login.tsx +1 -1
  113. package/src/features/auth/components/forms/Register.tsx +1 -1
  114. package/src/features/auth/components/forms/ResetPassword.tsx +2 -2
  115. package/src/features/auth/components/two-factor/BackupCodesDialog.tsx +1 -1
  116. package/src/features/auth/components/two-factor/PasskeyButton.tsx +1 -1
  117. package/src/features/billing/components/cards/BillingUsageSummaryCard.tsx +21 -11
  118. package/src/features/billing/components/cards/CustomerInfoCard.tsx +16 -13
  119. package/src/features/billing/components/cards/InvoicesSummaryCard.tsx +33 -21
  120. package/src/features/billing/components/cards/PaymentMethodSummaryCard.tsx +20 -10
  121. package/src/features/billing/components/cards/SubscriptionSummaryCard.tsx +35 -22
  122. package/src/features/billing/components/containers/BillingDashboardContainer.tsx +24 -24
  123. package/src/features/billing/components/utils/__tests__/billing-formatters.spec.ts +63 -0
  124. package/src/features/billing/components/utils/currency.ts +67 -10
  125. package/src/features/billing/components/utils/date.ts +9 -4
  126. package/src/features/billing/components/utils/format-options.ts +20 -0
  127. package/src/features/billing/components/utils/index.ts +3 -1
  128. package/src/features/billing/components/utils/useBillingFormatOptions.ts +11 -0
  129. package/src/features/billing/components/widgets/BillingAlertBanner.tsx +8 -9
  130. package/src/features/billing/contexts/PriceContext.tsx +18 -6
  131. package/src/features/billing/i18n-keys.ts +212 -0
  132. package/src/features/billing/stripe-customer/components/containers/PaymentMethodsContainer.tsx +8 -8
  133. package/src/features/billing/stripe-customer/components/details/PaymentMethodCard.tsx +11 -9
  134. package/src/features/billing/stripe-customer/components/forms/PaymentMethodEditor.tsx +4 -4
  135. package/src/features/billing/stripe-customer/components/forms/PaymentMethodForm.tsx +9 -7
  136. package/src/features/billing/stripe-invoice/components/containers/InvoicesContainer.tsx +10 -8
  137. package/src/features/billing/stripe-invoice/components/details/InvoiceDetails.tsx +34 -29
  138. package/src/features/billing/stripe-invoice/components/lists/InvoicesList.tsx +12 -9
  139. package/src/features/billing/stripe-invoice/components/widgets/InvoiceStatusBadge.tsx +9 -6
  140. package/src/features/billing/stripe-price/components/details/PriceDetails.tsx +4 -3
  141. package/src/features/billing/stripe-price/components/forms/PriceArchiver.tsx +3 -1
  142. package/src/features/billing/stripe-price/components/forms/PriceEditor.tsx +3 -1
  143. package/src/features/billing/stripe-price/hooks/useStripePriceTableStructure.tsx +6 -5
  144. package/src/features/billing/stripe-promotion-code/components/PromoCodeInput.tsx +12 -7
  145. package/src/features/billing/stripe-promotion-code/data/stripe-promotion-code.service.ts +3 -1
  146. package/src/features/billing/stripe-subscription/components/containers/SubscriptionsContainer.tsx +10 -6
  147. package/src/features/billing/stripe-subscription/components/details/SubscriptionDetails.tsx +44 -29
  148. package/src/features/billing/stripe-subscription/components/forms/CancelSubscriptionDialog.tsx +14 -11
  149. package/src/features/billing/stripe-subscription/components/lists/SubscriptionsList.tsx +20 -17
  150. package/src/features/billing/stripe-subscription/components/widgets/IntervalToggle.tsx +4 -2
  151. package/src/features/billing/stripe-subscription/components/widgets/PricingCard.tsx +16 -7
  152. package/src/features/billing/stripe-subscription/components/widgets/ProductPricingList.tsx +3 -1
  153. package/src/features/billing/stripe-subscription/components/widgets/ProductPricingRow.tsx +3 -1
  154. package/src/features/billing/stripe-subscription/components/widgets/ProrationPreview.tsx +12 -7
  155. package/src/features/billing/stripe-subscription/components/widgets/SubscriptionConfirmation.tsx +11 -8
  156. package/src/features/billing/stripe-subscription/components/widgets/SubscriptionStatusBadge.tsx +13 -10
  157. package/src/features/billing/stripe-subscription/components/wizards/SubscriptionWizard.tsx +8 -6
  158. package/src/features/billing/stripe-subscription/components/wizards/WizardProgressIndicator.tsx +7 -4
  159. package/src/features/billing/stripe-subscription/components/wizards/WizardStepPaymentMethod.tsx +4 -2
  160. package/src/features/billing/stripe-subscription/components/wizards/WizardStepPlanSelection.tsx +3 -1
  161. package/src/features/billing/stripe-subscription/components/wizards/WizardStepReview.tsx +37 -28
  162. package/src/features/billing/stripe-subscription/hooks/useConfirmSubscriptionPayment.ts +9 -7
  163. package/src/features/billing/stripe-subscription/hooks/useSubscriptionWizard.ts +20 -9
  164. package/src/features/billing/stripe-usage/components/containers/UsageContainer.tsx +6 -6
  165. package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +24 -9
  166. package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +16 -12
  167. package/src/features/company/components/details/TokenStatusIndicator.tsx +7 -5
  168. package/src/features/company/components/forms/CompanyEditor.tsx +2 -2
  169. package/src/features/help/components/HelpArticleBody.tsx +1 -1
  170. package/src/features/help/components/HelpHeader.tsx +1 -1
  171. package/src/features/help/components/HelpSideNav.tsx +1 -1
  172. package/src/features/help/i18n-keys.ts +2 -0
  173. package/src/features/notification/components/common/NotificationErrorBoundary.tsx +17 -12
  174. package/src/features/notification/components/containers/NotificationsListContainer.tsx +4 -2
  175. package/src/features/notification/components/notifications/Notification.tsx +6 -3
  176. package/src/features/notification/contexts/NotificationContext.tsx +9 -4
  177. package/src/features/notification/contexts/__tests__/NotificationContext.spec.tsx +13 -0
  178. package/src/features/notification/hooks/useNotificationTableStructure.tsx +4 -2
  179. package/src/features/oauth/components/OAuthClientCard.tsx +13 -7
  180. package/src/features/oauth/components/OAuthClientDetail.tsx +34 -30
  181. package/src/features/oauth/components/OAuthClientForm.tsx +24 -24
  182. package/src/features/oauth/components/OAuthClientList.tsx +10 -6
  183. package/src/features/oauth/components/OAuthClientSecretDisplay.tsx +10 -8
  184. package/src/features/oauth/components/OAuthRedirectUriInput.tsx +9 -13
  185. package/src/features/oauth/components/OAuthScopeSelector.tsx +15 -6
  186. package/src/features/oauth/components/__tests__/OAuthClientForm.spec.tsx +11 -9
  187. package/src/features/oauth/components/consent/OAuthScopeList.tsx +4 -2
  188. package/src/features/oauth/hooks/__tests__/useOAuthScopeText.spec.ts +30 -0
  189. package/src/features/oauth/hooks/index.ts +1 -0
  190. package/src/features/oauth/hooks/useOAuthClient.ts +11 -5
  191. package/src/features/oauth/hooks/useOAuthClients.ts +9 -3
  192. package/src/features/oauth/hooks/useOAuthConsent.ts +11 -5
  193. package/src/features/oauth/hooks/useOAuthScopeText.ts +33 -0
  194. package/src/features/rbac/components/RbacByRoleContainer.tsx +7 -6
  195. package/src/features/rbac/components/RbacContainer.tsx +7 -6
  196. package/src/features/rbac/contexts/RbacContext.tsx +3 -3
  197. package/src/features/user/components/containers/UserContainer.tsx +3 -1
  198. package/src/features/user/data/__tests__/user.test.ts +66 -0
  199. package/src/features/user/data/user.interface.ts +2 -0
  200. package/src/features/user/data/user.service.ts +9 -0
  201. package/src/features/user/data/user.ts +7 -0
  202. package/src/features/waitlist/components/forms/WaitlistForm.tsx +1 -1
  203. package/src/features/waitlist/components/lists/WaitlistList.tsx +1 -1
  204. package/src/i18n/__tests__/config.test.ts +21 -1
  205. package/src/i18n/config.ts +13 -0
  206. package/src/i18n/index.ts +1 -0
  207. package/src/shadcnui/custom/multi-select.tsx +47 -14
  208. package/src/shadcnui/custom/multiple-selector.tsx +14 -2
  209. package/src/shadcnui/ui/__tests__/use-ui-text.test.tsx +76 -0
  210. package/src/shadcnui/ui/breadcrumb.tsx +9 -2
  211. package/src/shadcnui/ui/carousel.tsx +15 -4
  212. package/src/shadcnui/ui/dialog.tsx +15 -2
  213. package/src/shadcnui/ui/sheet.tsx +6 -1
  214. package/src/shadcnui/ui/sidebar.tsx +33 -7
  215. package/src/shadcnui/ui/spinner.tsx +6 -1
  216. package/src/shadcnui/ui/use-ui-text.ts +49 -0
  217. package/src/utils/__tests__/date-formatter.test.ts +24 -1
  218. package/src/utils/date-formatter.ts +16 -0
  219. package/src/utils/index.ts +1 -1
  220. package/dist/BlockNoteEditor-BENYTTCZ.js.map +0 -1
  221. package/dist/BlockNoteEditor-VOYKZOP5.mjs.map +0 -1
  222. package/dist/chunk-4BZJ4LAB.js.map +0 -1
  223. package/dist/chunk-6ISF5KNQ.mjs.map +0 -1
  224. package/dist/chunk-ORU7KLCY.js.map +0 -1
  225. package/dist/chunk-ZZ6E33FO.mjs.map +0 -1
  226. /package/dist/{BlockNoteViewer-Y2ZM4ESA.mjs.map → BlockNoteViewer-MDPO6BXN.mjs.map} +0 -0
  227. /package/dist/{chunk-46S3KPLU.mjs.map → chunk-ILFFC6BG.mjs.map} +0 -0
  228. /package/dist/{chunk-HZVVRIJQ.mjs.map → chunk-IUS2RHCX.mjs.map} +0 -0
  229. /package/dist/{chunk-ZO3QQ5CQ.mjs.map → chunk-MQDR6MEE.mjs.map} +0 -0
@@ -9,7 +9,7 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkF7RNBGHSjs = require('../../chunk-F7RNBGHS.js');
12
+ var _chunkKJMMBUOAjs = require('../../chunk-KJMMBUOA.js');
13
13
 
14
14
 
15
15
 
@@ -37,8 +37,8 @@ var _chunkF7RNBGHSjs = require('../../chunk-F7RNBGHS.js');
37
37
 
38
38
 
39
39
 
40
- var _chunkORU7KLCYjs = require('../../chunk-ORU7KLCY.js');
41
- require('../../chunk-WQ77CUUZ.js');
40
+ var _chunkVDVIUDY5js = require('../../chunk-VDVIUDY5.js');
41
+ require('../../chunk-GPXYQMOZ.js');
42
42
  require('../../chunk-G4JR3SFV.js');
43
43
 
44
44
 
@@ -57,7 +57,7 @@ require('../../chunk-G4JR3SFV.js');
57
57
 
58
58
 
59
59
 
60
- var _chunk4BZJ4LABjs = require('../../chunk-4BZJ4LAB.js');
60
+ var _chunk4ORLPEK7js = require('../../chunk-4ORLPEK7.js');
61
61
  require('../../chunk-LXKSUWAV.js');
62
62
  require('../../chunk-JTPRJNT2.js');
63
63
  require('../../chunk-GHE4VT2R.js');
@@ -82,7 +82,7 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
82
82
  };
83
83
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
84
84
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-md:w-full max-md:[&_#date]:w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
85
- _chunkORU7KLCYjs.DateRangeSelector,
85
+ _chunkVDVIUDY5js.DateRangeSelector,
86
86
  {
87
87
  onDateChange: (range) => {
88
88
  if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
@@ -117,16 +117,16 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
117
117
  }
118
118
  ),
119
119
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
120
- _chunkORU7KLCYjs.Select,
120
+ _chunkVDVIUDY5js.Select,
121
121
  {
122
122
  items: companyItems,
123
123
  value: _nullishCoalesce(companyId, () => ( ALL_COMPANIES)),
124
124
  onValueChange: (value) => onChange({ companyId: !value || value === ALL_COMPANIES ? void 0 : value }),
125
125
  children: [
126
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
127
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.SelectContent, { children: [
128
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
129
- companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectItem, { value: company.id, children: company.label }, company.id))
126
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
127
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.SelectContent, { children: [
128
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
129
+ companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectItem, { value: company.id, children: company.label }, company.id))
130
130
  ] })
131
131
  ]
132
132
  }
@@ -149,13 +149,13 @@ function Segmented({
149
149
  children: options.map((option) => {
150
150
  const selected = option.value === value;
151
151
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
152
- _chunkORU7KLCYjs.Button,
152
+ _chunkVDVIUDY5js.Button,
153
153
  {
154
154
  type: "button",
155
155
  size: "sm",
156
156
  variant: selected ? "default" : "ghost",
157
157
  "aria-pressed": selected,
158
- className: _chunk4BZJ4LABjs.cn.call(void 0, !selected && "text-muted-foreground"),
158
+ className: _chunk4ORLPEK7js.cn.call(void 0, !selected && "text-muted-foreground"),
159
159
  onClick: () => onSelect(option.value),
160
160
  children: option.label
161
161
  },
@@ -175,36 +175,36 @@ function withFilters(endpoint, filters) {
175
175
  return endpoint;
176
176
  }
177
177
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
178
- var TokenUsageAdminService = class extends _chunk4BZJ4LABjs.AbstractService {
178
+ var TokenUsageAdminService = class extends _chunk4ORLPEK7js.AbstractService {
179
179
  static {
180
180
  _chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageAdminService");
181
181
  }
182
182
  /** Six rows: {customer, platform, total} × {current, previous}. */
183
183
  static async getSummary(filters) {
184
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageAdminSummary }), filters);
184
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageAdminSummary }), filters);
185
185
  return this.callApi({
186
- type: _chunk4BZJ4LABjs.Modules.TokenUsageAdminSummary,
186
+ type: _chunk4ORLPEK7js.Modules.TokenUsageAdminSummary,
187
187
  method: "GET" /* GET */,
188
188
  endpoint: endpoint.generate()
189
189
  });
190
190
  }
191
191
  static async getTimeline(params) {
192
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageAdminTimeline }), params);
192
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageAdminTimeline }), params);
193
193
  endpoint.addAdditionalParam("granularity", params.granularity);
194
194
  endpoint.addAdditionalParam("stackBy", params.stackBy);
195
195
  return this.callApi({
196
- type: _chunk4BZJ4LABjs.Modules.TokenUsageAdminTimeline,
196
+ type: _chunk4ORLPEK7js.Modules.TokenUsageAdminTimeline,
197
197
  method: "GET" /* GET */,
198
198
  endpoint: endpoint.generate()
199
199
  });
200
200
  }
201
201
  static async getBreakdown(params) {
202
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageAdminBreakdown }), params);
202
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageAdminBreakdown }), params);
203
203
  endpoint.addAdditionalParam("dimension", params.dimension);
204
204
  endpoint.addAdditionalParam("scope", params.scope);
205
205
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
206
206
  return this.callApi({
207
- type: _chunk4BZJ4LABjs.Modules.TokenUsageAdminBreakdown,
207
+ type: _chunk4ORLPEK7js.Modules.TokenUsageAdminBreakdown,
208
208
  method: "GET" /* GET */,
209
209
  endpoint: endpoint.generate()
210
210
  });
@@ -231,7 +231,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
231
231
  pageUrl = TOKEN_USAGE_ADMIN_PAGE_URL
232
232
  }) => {
233
233
  const t = _nextintl.useTranslations.call(void 0, );
234
- const generateUrl = _chunkORU7KLCYjs.usePageUrlGenerator.call(void 0, );
234
+ const generateUrl = _chunkVDVIUDY5js.usePageUrlGenerator.call(void 0, );
235
235
  const [filters, setFilterState] = _react.useState.call(void 0, () => {
236
236
  const range = defaultRange();
237
237
  return {
@@ -349,7 +349,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
349
349
  error
350
350
  ]
351
351
  );
352
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminContext.Provider, { value: contextValue, children }) });
352
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminContext.Provider, { value: contextValue, children }) });
353
353
  }, "TokenUsageAdminProvider");
354
354
  var useTokenUsageAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
355
355
  const ctx = _react.useContext.call(void 0, TokenUsageAdminContext);
@@ -370,7 +370,7 @@ var _lucidereact = require('lucide-react');
370
370
  var ZERO = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
371
371
  function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
372
372
  const t = _nextintl.useTranslations.call(void 0, );
373
- const { decimal, metricValue: formatValue, currency, percent } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
373
+ const { decimal, metricValue: formatValue, currency, percent } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
374
374
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (scope, window) => _nullishCoalesce(summary.find((r) => r.scope === scope && r.window === window), () => ( ZERO)), "rowFor");
375
375
  const customerCurrent = rowFor("customer", "current");
376
376
  const customerPrevious = rowFor("customer", "previous");
@@ -379,16 +379,16 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
379
379
  const totalCurrent = rowFor("total", "current");
380
380
  const totalPrevious = rowFor("total", "previous");
381
381
  const averagePerCall = totalCurrent.calls ? totalCurrent.cost / totalCurrent.calls : 0;
382
- const cacheHit = _chunkF7RNBGHSjs.cacheHitPercentage.call(void 0, totalCurrent.cached, totalCurrent.tokensIn);
382
+ const cacheHit = _chunkKJMMBUOAjs.cacheHitPercentage.call(void 0, totalCurrent.cached, totalCurrent.tokensIn);
383
383
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
384
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4BZJ4LABjs.cn.call(void 0, "grid gap-3", singleCustomerMode ? "sm:grid-cols-1" : "sm:grid-cols-2"), children: [
384
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4ORLPEK7js.cn.call(void 0, "grid gap-3", singleCustomerMode ? "sm:grid-cols-1" : "sm:grid-cols-2"), children: [
385
385
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
386
386
  LeadTile,
387
387
  {
388
388
  testId: "tile-customer",
389
389
  label: t("token_usage.admin.customer_spend"),
390
- value: formatValue(_chunkF7RNBGHSjs.metricValue.call(void 0, customerCurrent, metric), metric),
391
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, _chunkF7RNBGHSjs.metricValue.call(void 0, customerCurrent, metric), _chunkF7RNBGHSjs.metricValue.call(void 0, customerPrevious, metric)),
390
+ value: formatValue(_chunkKJMMBUOAjs.metricValue.call(void 0, customerCurrent, metric), metric),
391
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, _chunkKJMMBUOAjs.metricValue.call(void 0, customerCurrent, metric), _chunkKJMMBUOAjs.metricValue.call(void 0, customerPrevious, metric)),
392
392
  previousLabel: t("token_usage.admin.vs_previous"),
393
393
  decimal
394
394
  }
@@ -398,8 +398,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
398
398
  {
399
399
  testId: "tile-platform",
400
400
  label: t("token_usage.admin.platform_spend"),
401
- value: formatValue(_chunkF7RNBGHSjs.metricValue.call(void 0, platformCurrent, metric), metric),
402
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, _chunkF7RNBGHSjs.metricValue.call(void 0, platformCurrent, metric), _chunkF7RNBGHSjs.metricValue.call(void 0, platformPrevious, metric)),
401
+ value: formatValue(_chunkKJMMBUOAjs.metricValue.call(void 0, platformCurrent, metric), metric),
402
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, _chunkKJMMBUOAjs.metricValue.call(void 0, platformCurrent, metric), _chunkKJMMBUOAjs.metricValue.call(void 0, platformPrevious, metric)),
403
403
  previousLabel: t("token_usage.admin.vs_previous"),
404
404
  decimal
405
405
  }
@@ -411,8 +411,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
411
411
  {
412
412
  testId: "tile-total",
413
413
  label: t("token_usage.admin.total_cost"),
414
- value: formatValue(_chunkF7RNBGHSjs.metricValue.call(void 0, totalCurrent, metric), metric),
415
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, _chunkF7RNBGHSjs.metricValue.call(void 0, totalCurrent, metric), _chunkF7RNBGHSjs.metricValue.call(void 0, totalPrevious, metric)),
414
+ value: formatValue(_chunkKJMMBUOAjs.metricValue.call(void 0, totalCurrent, metric), metric),
415
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, _chunkKJMMBUOAjs.metricValue.call(void 0, totalCurrent, metric), _chunkKJMMBUOAjs.metricValue.call(void 0, totalPrevious, metric)),
416
416
  decimal
417
417
  }
418
418
  ),
@@ -446,7 +446,7 @@ function LeadTile({
446
446
  previousLabel,
447
447
  decimal
448
448
  }) {
449
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
449
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
450
450
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
451
451
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
452
452
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
@@ -463,7 +463,7 @@ function SupportingTile({
463
463
  delta,
464
464
  decimal
465
465
  }) {
466
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
466
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
467
467
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
468
468
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
469
469
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
@@ -486,7 +486,7 @@ function Delta({
486
486
  "span",
487
487
  {
488
488
  "data-testid": testId,
489
- className: _chunk4BZJ4LABjs.cn.call(void 0,
489
+ className: _chunk4ORLPEK7js.cn.call(void 0,
490
490
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
491
491
  increased ? "text-success" : "text-destructive"
492
492
  ),
@@ -507,10 +507,10 @@ _chunk7QVYU63Ejs.__name.call(void 0, Delta, "Delta");
507
507
 
508
508
  function TokenUsageBreakdownTable({ rows, metric }) {
509
509
  const t = _nextintl.useTranslations.call(void 0, );
510
- const { decimal, metricValue: formatValue, percent, compare } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
510
+ const { decimal, metricValue: formatValue, percent, compare } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
511
511
  const [sort, setSort] = _react.useState.call(void 0, void 0);
512
512
  const showActiveUsers = rows.some((row) => row.activeUsers !== void 0);
513
- const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum + _chunkF7RNBGHSjs.metricValue.call(void 0, row, metric), 0), [rows, metric]);
513
+ const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum + _chunkKJMMBUOAjs.metricValue.call(void 0, row, metric), 0), [rows, metric]);
514
514
  const sortValue = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row, key) => {
515
515
  switch (key) {
516
516
  case "label":
@@ -520,9 +520,9 @@ function TokenUsageBreakdownTable({ rows, metric }) {
520
520
  case "activeUsers":
521
521
  return _nullishCoalesce(row.activeUsers, () => ( 0));
522
522
  case "cacheHit":
523
- return _chunkF7RNBGHSjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn);
523
+ return _chunkKJMMBUOAjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn);
524
524
  case "share":
525
- return _chunkF7RNBGHSjs.metricValue.call(void 0, row, metric);
525
+ return _chunkKJMMBUOAjs.metricValue.call(void 0, row, metric);
526
526
  default:
527
527
  return row[key];
528
528
  }
@@ -560,13 +560,13 @@ function TokenUsageBreakdownTable({ rows, metric }) {
560
560
  // The package's <Table> wraps itself in an `overflow-x-clip` container, which
561
561
  // would swallow the overflow before this scroller ever saw it — hence the
562
562
  // child override. Wide metric tables must scroll, never widen the page.
563
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Table, { children: [
564
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: _chunk4BZJ4LABjs.cn.call(void 0, column.numeric && "text-end"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
563
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "overflow-x-auto [&_[data-slot=table-container]]:overflow-x-visible", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Table, { children: [
564
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: _chunk4ORLPEK7js.cn.call(void 0, column.numeric && "text-end"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
565
565
  "button",
566
566
  {
567
567
  type: "button",
568
568
  onClick: () => toggleSort(column.key),
569
- className: _chunk4BZJ4LABjs.cn.call(void 0,
569
+ className: _chunk4ORLPEK7js.cn.call(void 0,
570
570
  "hover:text-primary inline-flex items-center gap-1 text-xs font-medium",
571
571
  column.numeric && "flex-row-reverse"
572
572
  ),
@@ -576,20 +576,20 @@ function TokenUsageBreakdownTable({ rows, metric }) {
576
576
  ]
577
577
  }
578
578
  ) }, column.key)) }) }),
579
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableBody, { children: sortedRows.map((row) => {
580
- const value = _chunkF7RNBGHSjs.metricValue.call(void 0, row, metric);
579
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableBody, { children: sortedRows.map((row) => {
580
+ const value = _chunkKJMMBUOAjs.metricValue.call(void 0, row, metric);
581
581
  const share = total > 0 ? value / total * 100 : 0;
582
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
583
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
584
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
585
- showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
586
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.calls, 0) }),
587
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
588
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
589
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: percent(_chunkF7RNBGHSjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn)) }),
590
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
591
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
592
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: percent(share) })
582
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
583
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
584
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
585
+ showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
586
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.calls, 0) }),
587
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
588
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
589
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(_chunkKJMMBUOAjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn)) }),
590
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
591
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
592
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(share) })
593
593
  ] }, row.id);
594
594
  }) })
595
595
  ] }) })
@@ -618,7 +618,7 @@ var operationLabel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (type,
618
618
 
619
619
  function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes = false }) {
620
620
  const t = _nextintl.useTranslations.call(void 0, );
621
- const { metricValue: formatValue, percent } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
621
+ const { metricValue: formatValue, percent } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
622
622
  const renderLabel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row) => {
623
623
  if (row.id === "other") return t("token_usage.admin.other");
624
624
  if (!labelsAreOperationTypes) return row.label;
@@ -631,13 +631,13 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
631
631
  if (rows.length === 0) {
632
632
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground py-6 text-center text-sm", children: emptyLabel });
633
633
  }
634
- const values = rows.map((row) => _chunkF7RNBGHSjs.metricValue.call(void 0, row, metric));
634
+ const values = rows.map((row) => _chunkKJMMBUOAjs.metricValue.call(void 0, row, metric));
635
635
  const total = values.reduce((sum, value) => sum + value, 0);
636
636
  const max = Math.max(...values, 0);
637
637
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid gap-0.5", children: rows.map((row, index) => {
638
638
  const value = values[index];
639
639
  const isOther = row.id === "other";
640
- const step = isOther ? _chunkF7RNBGHSjs.SEQUENTIAL_RAMP.length - 1 : Math.min(index, _chunkF7RNBGHSjs.SEQUENTIAL_RAMP.length - 1);
640
+ const step = isOther ? _chunkKJMMBUOAjs.SEQUENTIAL_RAMP.length - 1 : Math.min(index, _chunkKJMMBUOAjs.SEQUENTIAL_RAMP.length - 1);
641
641
  const width = max > 0 ? value / max * 100 : 0;
642
642
  const share = total > 0 ? value / total * 100 : 0;
643
643
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-x-3 gap-y-0.5 py-0.5", children: [
@@ -649,7 +649,7 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
649
649
  "data-testid": `ranked-fill-${row.id}`,
650
650
  "data-ramp-step": String(step),
651
651
  className: "h-full rounded-r-[4px]",
652
- style: { width: `${width}%`, backgroundColor: _chunkF7RNBGHSjs.SEQUENTIAL_RAMP[step] }
652
+ style: { width: `${width}%`, backgroundColor: _chunkKJMMBUOAjs.SEQUENTIAL_RAMP[step] }
653
653
  }
654
654
  ) })
655
655
  ] }),
@@ -699,7 +699,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
699
699
  }, "inferGranularity");
700
700
  function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
701
701
  const t = _nextintl.useTranslations.call(void 0, );
702
- const { compact, bucketDate, metricValue: formatValue } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
702
+ const { compact, bucketDate, metricValue: formatValue } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
703
703
  const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
704
704
  const mode = resolvedTheme === "dark" ? "dark" : "light";
705
705
  const { chartData, seriesKeys } = _react.useMemo.call(void 0, () => {
@@ -707,8 +707,8 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
707
707
  const totals = /* @__PURE__ */ new Map();
708
708
  for (const row of rows) totals.set(row.series, (_nullishCoalesce(totals.get(row.series), () => ( 0))) + metricValue2(row, metric));
709
709
  const ranked = [...totals.entries()].sort((a, b) => b[1] - a[1]).map(([series]) => series);
710
- const named = ranked.slice(0, _chunkF7RNBGHSjs.CATEGORICAL_CEILING);
711
- const folded = new Set(ranked.slice(_chunkF7RNBGHSjs.CATEGORICAL_CEILING));
710
+ const named = ranked.slice(0, _chunkKJMMBUOAjs.CATEGORICAL_CEILING);
711
+ const folded = new Set(ranked.slice(_chunkKJMMBUOAjs.CATEGORICAL_CEILING));
712
712
  const keys = folded.size > 0 ? [...named, OTHER_SERIES] : named;
713
713
  const byBucket = /* @__PURE__ */ new Map();
714
714
  for (const row of rows) {
@@ -748,7 +748,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
748
748
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: className ? `text-muted-foreground text-sm ${className}` : "text-muted-foreground text-sm", children: t.has(key) ? t(key) : "No data in the selected period" });
749
749
  }
750
750
  const granularity = inferGranularity(chartData.map((entry) => entry.bucket));
751
- const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ? _chunkF7RNBGHSjs.OTHER_COLOR : _chunkF7RNBGHSjs.seriesColor.call(void 0, index, mode), "seriesColorFor");
751
+ const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ? _chunkKJMMBUOAjs.OTHER_COLOR : _chunkKJMMBUOAjs.seriesColor.call(void 0, index, mode), "seriesColorFor");
752
752
  return (
753
753
  // The chart is a coordinate system, not prose: recharts lays the axes and the
754
754
  // stacked bars out left-to-right, so the whole chart stays an LTR island even
@@ -757,7 +757,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
757
757
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
758
758
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-data", children: JSON.stringify(chartData) }),
759
759
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-series", children: JSON.stringify(seriesKeys) }),
760
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.ChartContainer, { config: chartConfig, className: "aspect-auto h-72 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _recharts.BarChart, { accessibilityLayer: true, data: chartData, margin: { top: 8, right: 8, bottom: 0, left: 0 }, children: [
760
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.ChartContainer, { config: chartConfig, className: "aspect-auto h-72 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _recharts.BarChart, { accessibilityLayer: true, data: chartData, margin: { top: 8, right: 8, bottom: 0, left: 0 }, children: [
761
761
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
762
762
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
763
763
  _recharts.XAxis,
@@ -781,10 +781,10 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
781
781
  }
782
782
  ),
783
783
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
784
- _chunkORU7KLCYjs.ChartTooltip,
784
+ _chunkVDVIUDY5js.ChartTooltip,
785
785
  {
786
786
  content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
787
- _chunkORU7KLCYjs.ChartTooltipContent,
787
+ _chunkVDVIUDY5js.ChartTooltipContent,
788
788
  {
789
789
  labelFormatter: (value) => bucketDate(String(value), granularity),
790
790
  valueFormatter: (value) => formatValue(Number(value), metric),
@@ -793,7 +793,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
793
793
  )
794
794
  }
795
795
  ),
796
- seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.ChartLegendContent, {}) }) : null,
796
+ seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.ChartLegendContent, {}) }) : null,
797
797
  seriesKeys.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
798
798
  _recharts.Bar,
799
799
  {
@@ -845,19 +845,19 @@ function TokenUsageAdminContainer() {
845
845
  [t]
846
846
  );
847
847
  if (error) {
848
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
848
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
849
849
  }
850
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
850
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true });
851
851
  const emptyLabel = t("token_usage.admin.no_data");
852
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
852
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
853
853
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminTiles, { summary, metric: filters.metric, singleCustomerMode: hidePlatform }),
854
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
855
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: [
856
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
857
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
854
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
855
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: [
856
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
857
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
858
858
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.admin.stack_by") }),
859
859
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
860
- _chunkORU7KLCYjs.Select,
860
+ _chunkVDVIUDY5js.Select,
861
861
  {
862
862
  items: stackByItems,
863
863
  value: filters.stackBy,
@@ -865,29 +865,29 @@ function TokenUsageAdminContainer() {
865
865
  if (value) setFilters({ stackBy: value });
866
866
  },
867
867
  children: [
868
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectValue, {}) }),
869
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SelectItem, { value, children: stackByItems[value] }, value)) })
868
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectValue, {}) }),
869
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SelectItem, { value, children: stackByItems[value] }, value)) })
870
870
  ]
871
871
  }
872
872
  )
873
873
  ] }) })
874
874
  ] }),
875
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
875
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
876
876
  ] }),
877
877
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-4 md:grid-cols-2", children: [
878
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
879
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.by_company") }) }),
880
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
878
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
879
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.by_company") }) }),
880
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
881
881
  ] }),
882
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
883
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.by_user") }) }),
884
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
882
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
883
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.by_user") }) }),
884
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
885
885
  ] })
886
886
  ] }),
887
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4BZJ4LABjs.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
888
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
889
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
890
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
887
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4ORLPEK7js.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
888
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
889
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
890
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
891
891
  TokenUsageRankedBar,
892
892
  {
893
893
  rows: byCustomerOperation,
@@ -897,9 +897,9 @@ function TokenUsageAdminContainer() {
897
897
  }
898
898
  ) })
899
899
  ] }),
900
- !hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
901
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
902
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
900
+ !hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
901
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
902
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
903
903
  TokenUsageRankedBar,
904
904
  {
905
905
  rows: byOperation,
@@ -910,9 +910,9 @@ function TokenUsageAdminContainer() {
910
910
  ) })
911
911
  ] })
912
912
  ] }),
913
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
914
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.admin.detail") }) }),
915
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
913
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
914
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.admin.detail") }) }),
915
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
916
916
  ] })
917
917
  ] }) });
918
918
  }
@@ -925,36 +925,36 @@ function withFilters2(endpoint, filters) {
925
925
  return endpoint;
926
926
  }
927
927
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters2, "withFilters");
928
- var TokenUsageReportService = class extends _chunk4BZJ4LABjs.AbstractService {
928
+ var TokenUsageReportService = class extends _chunk4ORLPEK7js.AbstractService {
929
929
  static {
930
930
  _chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageReportService");
931
931
  }
932
932
  /** Two rows: window "current" and "previous". */
933
933
  static async getSummary(filters) {
934
- const endpoint = withFilters2(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageReportSummary }), filters);
934
+ const endpoint = withFilters2(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageReportSummary }), filters);
935
935
  return this.callApi({
936
- type: _chunk4BZJ4LABjs.Modules.TokenUsageReportSummary,
936
+ type: _chunk4ORLPEK7js.Modules.TokenUsageReportSummary,
937
937
  method: "GET" /* GET */,
938
938
  endpoint: endpoint.generate()
939
939
  });
940
940
  }
941
941
  static async getTimeline(params) {
942
- const endpoint = withFilters2(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageReportTimeline }), params);
942
+ const endpoint = withFilters2(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageReportTimeline }), params);
943
943
  endpoint.addAdditionalParam("granularity", params.granularity);
944
944
  return this.callApi({
945
- type: _chunk4BZJ4LABjs.Modules.TokenUsageReportTimeline,
945
+ type: _chunk4ORLPEK7js.Modules.TokenUsageReportTimeline,
946
946
  method: "GET" /* GET */,
947
947
  endpoint: endpoint.generate()
948
948
  });
949
949
  }
950
950
  static async getBreakdown(params) {
951
- const endpoint = withFilters2(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.TokenUsageReportBreakdown }), params);
951
+ const endpoint = withFilters2(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.TokenUsageReportBreakdown }), params);
952
952
  endpoint.addAdditionalParam("dimension", params.dimension);
953
953
  if (params.targetLabel) endpoint.addAdditionalParam("targetLabel", params.targetLabel);
954
954
  endpoint.addAdditionalParam("metric", params.metric);
955
955
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
956
956
  return this.callApi({
957
- type: _chunk4BZJ4LABjs.Modules.TokenUsageReportBreakdown,
957
+ type: _chunk4ORLPEK7js.Modules.TokenUsageReportBreakdown,
958
958
  method: "GET" /* GET */,
959
959
  endpoint: endpoint.generate()
960
960
  });
@@ -1033,7 +1033,7 @@ var TOKEN_USAGE_REPORT_I18N_KEYS = [
1033
1033
 
1034
1034
  function TokenUsageReportFilterBar({ onChange }) {
1035
1035
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-help": "tokenusage.filters", className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1036
- _chunkORU7KLCYjs.DateRangeSelector,
1036
+ _chunkVDVIUDY5js.DateRangeSelector,
1037
1037
  {
1038
1038
  onDateChange: (range) => {
1039
1039
  if (!_optionalChain([range, 'optionalAccess', _5 => _5.from]) || !_optionalChain([range, 'optionalAccess', _6 => _6.to])) return;
@@ -1066,7 +1066,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
1066
1066
  pageUrl = TOKEN_USAGE_REPORT_PAGE_URL
1067
1067
  }) => {
1068
1068
  const t = _nextintl.useTranslations.call(void 0, );
1069
- const generateUrl = _chunkORU7KLCYjs.usePageUrlGenerator.call(void 0, );
1069
+ const generateUrl = _chunkVDVIUDY5js.usePageUrlGenerator.call(void 0, );
1070
1070
  const [filters, setFilterState] = _react.useState.call(void 0, () => {
1071
1071
  const range = defaultRange2();
1072
1072
  return { from: _nullishCoalesce(initialFrom, () => ( range.from)), to: _nullishCoalesce(initialTo, () => ( range.to)) };
@@ -1130,7 +1130,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
1130
1130
  () => ({ summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error }),
1131
1131
  [summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error]
1132
1132
  );
1133
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportContext.Provider, { value: contextValue, children }) });
1133
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportContext.Provider, { value: contextValue, children }) });
1134
1134
  }, "TokenUsageReportProvider");
1135
1135
  var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
1136
1136
  const ctx = _react.useContext.call(void 0, TokenUsageReportContext);
@@ -1150,7 +1150,7 @@ var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (
1150
1150
  var ZERO2 = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
1151
1151
  function TokenUsageReportTiles({ summary, metric, balances }) {
1152
1152
  const t = _nextintl.useTranslations.call(void 0, );
1153
- const { decimal, metricValue: formatValue } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
1153
+ const { decimal, metricValue: formatValue } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
1154
1154
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window) => _nullishCoalesce(summary.find((row) => row.window === window), () => ( ZERO2)), "rowFor");
1155
1155
  const current = rowFor("current");
1156
1156
  const previous = rowFor("previous");
@@ -1158,15 +1158,15 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
1158
1158
  const monthlyColor = monthlyPercentage > 75 ? "text-success" : monthlyPercentage >= 5 ? "text-warning" : "text-destructive";
1159
1159
  const whole = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (value) => decimal(Math.max(0, Math.floor(value)), 0), "whole");
1160
1160
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
1161
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
1161
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
1162
1162
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.used_in_period") }),
1163
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(_chunkF7RNBGHSjs.metricValue.call(void 0, current, metric), metric) }),
1163
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(_chunkKJMMBUOAjs.metricValue.call(void 0, current, metric), metric) }),
1164
1164
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
1165
1165
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1166
1166
  Delta2,
1167
1167
  {
1168
1168
  testId: "tile-used-delta",
1169
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, _chunkF7RNBGHSjs.metricValue.call(void 0, current, metric), _chunkF7RNBGHSjs.metricValue.call(void 0, previous, metric)),
1169
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, _chunkKJMMBUOAjs.metricValue.call(void 0, current, metric), _chunkKJMMBUOAjs.metricValue.call(void 0, previous, metric)),
1170
1170
  decimal
1171
1171
  }
1172
1172
  ),
@@ -1174,21 +1174,21 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
1174
1174
  ] })
1175
1175
  ] }) }),
1176
1176
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
1177
- balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
1177
+ balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
1178
1178
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.monthly_left") }),
1179
1179
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-baseline gap-1", children: [
1180
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className: _chunk4BZJ4LABjs.cn.call(void 0, "text-sm font-medium tabular-nums", monthlyColor), children: whole(balances.availableMonthlyCredits) }),
1180
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className: _chunk4ORLPEK7js.cn.call(void 0, "text-sm font-medium tabular-nums", monthlyColor), children: whole(balances.availableMonthlyCredits) }),
1181
1181
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: [
1182
1182
  "/ ",
1183
1183
  whole(balances.monthlyCredits)
1184
1184
  ] })
1185
1185
  ] })
1186
1186
  ] }) }),
1187
- balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
1187
+ balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
1188
1188
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.extra_credits") }),
1189
1189
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: whole(balances.availableExtraCredits) })
1190
1190
  ] }) }),
1191
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "grid gap-1", children: [
1191
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "grid gap-1", children: [
1192
1192
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.calls") }),
1193
1193
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: decimal(current.calls, 0) })
1194
1194
  ] }) })
@@ -1210,7 +1210,7 @@ function Delta2({
1210
1210
  "span",
1211
1211
  {
1212
1212
  "data-testid": testId,
1213
- className: _chunk4BZJ4LABjs.cn.call(void 0,
1213
+ className: _chunk4ORLPEK7js.cn.call(void 0,
1214
1214
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
1215
1215
  increased ? "text-warning" : "text-success"
1216
1216
  ),
@@ -1230,21 +1230,21 @@ function TokenUsageReportContainer({ balances = null }) {
1230
1230
  const t = _nextintl.useTranslations.call(void 0, );
1231
1231
  const { summary, timeline, byOperation, byTarget, isLoading, error, targetPanelTitleKey } = useTokenUsageReport();
1232
1232
  if (error) {
1233
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
1233
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
1234
1234
  }
1235
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
1235
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true });
1236
1236
  const emptyLabel = t("token_usage.report.no_data");
1237
1237
  const targetTitle = targetPanelTitleKey && byTarget.length > 0 ? t(targetPanelTitleKey) : void 0;
1238
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
1238
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-4 p-4", children: [
1239
1239
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportTiles, { summary, metric: "credits", balances }),
1240
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
1241
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
1242
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
1240
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
1241
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
1242
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
1243
1243
  ] }),
1244
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4BZJ4LABjs.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
1245
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
1246
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("token_usage.report.by_operation") }) }),
1247
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1244
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk4ORLPEK7js.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
1245
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
1246
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("token_usage.report.by_operation") }) }),
1247
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1248
1248
  TokenUsageRankedBar,
1249
1249
  {
1250
1250
  rows: byOperation,
@@ -1254,9 +1254,9 @@ function TokenUsageReportContainer({ balances = null }) {
1254
1254
  }
1255
1255
  ) })
1256
1256
  ] }),
1257
- targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
1258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: targetTitle }) }),
1259
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
1257
+ targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
1258
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: targetTitle }) }),
1259
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
1260
1260
  ] })
1261
1261
  ] })
1262
1262
  ] }) });
@@ -1294,5 +1294,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, TokenUsageReportContainer, "TokenUsageRepor
1294
1294
 
1295
1295
 
1296
1296
 
1297
- exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown = _chunk4BZJ4LABjs.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunk4BZJ4LABjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunk4BZJ4LABjs.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunk4BZJ4LABjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunk4BZJ4LABjs.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunk4BZJ4LABjs.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunk4BZJ4LABjs.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunk4BZJ4LABjs.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunk4BZJ4LABjs.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunk4BZJ4LABjs.configureTokenUsage; exports.createUsageFormatters = _chunkF7RNBGHSjs.createUsageFormatters; exports.getTokenUsageCurrency = _chunk4BZJ4LABjs.getTokenUsageCurrency; exports.tokenUsageModules = _chunk4BZJ4LABjs.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = _chunkF7RNBGHSjs.useUsageFormatters;
1297
+ exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown = _chunk4ORLPEK7js.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunk4ORLPEK7js.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunk4ORLPEK7js.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunk4ORLPEK7js.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunk4ORLPEK7js.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunk4ORLPEK7js.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunk4ORLPEK7js.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunk4ORLPEK7js.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunk4ORLPEK7js.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunk4ORLPEK7js.configureTokenUsage; exports.createUsageFormatters = _chunkKJMMBUOAjs.createUsageFormatters; exports.getTokenUsageCurrency = _chunk4ORLPEK7js.getTokenUsageCurrency; exports.tokenUsageModules = _chunk4ORLPEK7js.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = _chunkKJMMBUOAjs.useUsageFormatters;
1298
1298
  //# sourceMappingURL=index.js.map