@carlonicora/nextjs-jsonapi 3.28.1 → 4.0.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 (214) hide show
  1. package/dist/{BlockNoteEditor-ATZVHS6X.js → BlockNoteEditor-BXMTGKDV.js} +21 -20
  2. package/dist/BlockNoteEditor-BXMTGKDV.js.map +1 -0
  3. package/dist/{BlockNoteEditor-CWW2D3SG.mjs → BlockNoteEditor-FGVQP35E.mjs} +9 -8
  4. package/dist/{BlockNoteEditor-CWW2D3SG.mjs.map → BlockNoteEditor-FGVQP35E.mjs.map} +1 -1
  5. package/dist/{BlockNoteViewer-KRTAFTUX.mjs → BlockNoteViewer-DQYT6IJW.mjs} +3 -3
  6. package/dist/{BlockNoteViewer-7BFNTN4E.js → BlockNoteViewer-YH7G66PS.js} +4 -4
  7. package/dist/{BlockNoteViewer-7BFNTN4E.js.map → BlockNoteViewer-YH7G66PS.js.map} +1 -1
  8. package/dist/{HandbookSectionInterface-DgYH--Ik.d.mts → HandbookSectionInterface-BYsmnPEz.d.mts} +1 -1
  9. package/dist/{HandbookSectionInterface-Ck1wZJ81.d.ts → HandbookSectionInterface-OePKPbqN.d.ts} +1 -1
  10. package/dist/{JsonApiRequest-UHOWNI3O.mjs → JsonApiRequest-MEP6AXDT.mjs} +2 -2
  11. package/dist/JsonApiRequest-OB6WL4LA.js +26 -0
  12. package/dist/{JsonApiRequest-TE5WD3WS.js.map → JsonApiRequest-OB6WL4LA.js.map} +1 -1
  13. package/dist/ServerSession-DFNNNkg7.d.ts +29 -0
  14. package/dist/ServerSession-DK1z0_Ql.d.mts +29 -0
  15. package/dist/{analytics.modules-CfczU12P.d.ts → analytics.modules-Bsacu6ik.d.ts} +1 -1
  16. package/dist/{analytics.modules-pzGwMASI.d.mts → analytics.modules-txdCLNG-.d.mts} +1 -1
  17. package/dist/billing/index.js +404 -402
  18. package/dist/billing/index.js.map +1 -1
  19. package/dist/billing/index.mjs +10 -8
  20. package/dist/billing/index.mjs.map +1 -1
  21. package/dist/{chunk-7B4E42R5.mjs → chunk-3CZ2GK5R.mjs} +33 -9
  22. package/dist/chunk-3CZ2GK5R.mjs.map +1 -0
  23. package/dist/{chunk-4Z45NYPR.js → chunk-5W5MN7JP.js} +14 -83
  24. package/dist/chunk-5W5MN7JP.js.map +1 -0
  25. package/dist/{chunk-CAKOFJZD.js → chunk-6OFANJTE.js} +195 -142
  26. package/dist/chunk-6OFANJTE.js.map +1 -0
  27. package/dist/{chunk-5TRFNKJS.js → chunk-6TUB7Y6T.js} +23 -25
  28. package/dist/chunk-6TUB7Y6T.js.map +1 -0
  29. package/dist/{chunk-37DMFVLN.mjs → chunk-7SCREMTX.mjs} +4 -3
  30. package/dist/{chunk-37DMFVLN.mjs.map → chunk-7SCREMTX.mjs.map} +1 -1
  31. package/dist/{chunk-Q6J2ICKO.mjs → chunk-ADZSH3MG.mjs} +3 -72
  32. package/dist/chunk-ADZSH3MG.mjs.map +1 -0
  33. package/dist/{chunk-E3I4MT53.mjs → chunk-AQZ3T4BR.mjs} +71 -18
  34. package/dist/chunk-AQZ3T4BR.mjs.map +1 -0
  35. package/dist/{chunk-SJLXPHK5.mjs → chunk-E2LENTUH.mjs} +22 -24
  36. package/dist/chunk-E2LENTUH.mjs.map +1 -0
  37. package/dist/chunk-EBEXWN3I.mjs +17 -0
  38. package/dist/chunk-EBEXWN3I.mjs.map +1 -0
  39. package/dist/chunk-G4JR3SFV.js +28 -0
  40. package/dist/chunk-G4JR3SFV.js.map +1 -0
  41. package/dist/chunk-IK65TDQH.js +15 -0
  42. package/dist/chunk-IK65TDQH.js.map +1 -0
  43. package/dist/{chunk-GHFMKH3M.js → chunk-JEQ34Z5E.js} +62 -38
  44. package/dist/chunk-JEQ34Z5E.js.map +1 -0
  45. package/dist/{chunk-YDPDJIJF.js → chunk-NFCXUAE6.js} +1330 -1184
  46. package/dist/chunk-NFCXUAE6.js.map +1 -0
  47. package/dist/chunk-OEOK6A3P.js +17 -0
  48. package/dist/chunk-OEOK6A3P.js.map +1 -0
  49. package/dist/chunk-PW42LRSL.mjs +28 -0
  50. package/dist/chunk-PW42LRSL.mjs.map +1 -0
  51. package/dist/{chunk-U65JPKO3.mjs → chunk-R6ZYB4VN.mjs} +2 -2
  52. package/dist/chunk-T7SAW3UW.mjs +15 -0
  53. package/dist/chunk-T7SAW3UW.mjs.map +1 -0
  54. package/dist/{chunk-GKDHYB2R.js → chunk-TWBZ2GSX.js} +3 -3
  55. package/dist/{chunk-GKDHYB2R.js.map → chunk-TWBZ2GSX.js.map} +1 -1
  56. package/dist/{chunk-26MQIJNB.js → chunk-WGVNJXZO.js} +4 -3
  57. package/dist/chunk-WGVNJXZO.js.map +1 -0
  58. package/dist/{chunk-2IMQ5IKA.mjs → chunk-WJC4SYRL.mjs} +2133 -1987
  59. package/dist/chunk-WJC4SYRL.mjs.map +1 -0
  60. package/dist/client/index.d.mts +3 -3
  61. package/dist/client/index.d.ts +3 -3
  62. package/dist/client/index.js +6 -5
  63. package/dist/client/index.js.map +1 -1
  64. package/dist/client/index.mjs +13 -12
  65. package/dist/components/index.d.mts +16 -6
  66. package/dist/components/index.d.ts +16 -6
  67. package/dist/components/index.js +8 -5
  68. package/dist/components/index.js.map +1 -1
  69. package/dist/components/index.mjs +9 -6
  70. package/dist/{config-3N1LSrcC.d.ts → config-B6UB7j69.d.ts} +1 -1
  71. package/dist/{config-BmufyEj6.d.mts → config-CEAq4Ozy.d.mts} +10 -1
  72. package/dist/{config-AVtuvfM1.d.ts → config-DydDHCfb.d.ts} +10 -1
  73. package/dist/{config-BSKTYDoh.d.mts → config-n-ZpPmOL.d.mts} +1 -1
  74. package/dist/contexts/index.d.mts +28 -4
  75. package/dist/contexts/index.d.ts +28 -4
  76. package/dist/contexts/index.js +10 -5
  77. package/dist/contexts/index.js.map +1 -1
  78. package/dist/contexts/index.mjs +9 -4
  79. package/dist/core/index.d.mts +6 -6
  80. package/dist/core/index.d.ts +6 -6
  81. package/dist/core/index.js +5 -5
  82. package/dist/core/index.js.map +1 -1
  83. package/dist/core/index.mjs +4 -4
  84. package/dist/features/analytics/index.d.mts +2 -2
  85. package/dist/features/analytics/index.d.ts +2 -2
  86. package/dist/features/analytics/index.js +124 -123
  87. package/dist/features/analytics/index.js.map +1 -1
  88. package/dist/features/analytics/index.mjs +6 -5
  89. package/dist/features/analytics/index.mjs.map +1 -1
  90. package/dist/features/analytics/server.d.mts +10 -2
  91. package/dist/features/analytics/server.d.ts +10 -2
  92. package/dist/features/analytics/server.js +8 -6
  93. package/dist/features/analytics/server.js.map +1 -1
  94. package/dist/features/analytics/server.mjs +6 -4
  95. package/dist/features/analytics/server.mjs.map +1 -1
  96. package/dist/features/help/index.d.mts +2 -2
  97. package/dist/features/help/index.d.ts +2 -2
  98. package/dist/features/help/index.js +39 -38
  99. package/dist/features/help/index.js.map +1 -1
  100. package/dist/features/help/index.mjs +5 -4
  101. package/dist/features/help/index.mjs.map +1 -1
  102. package/dist/features/tokenusage/index.d.mts +2 -2
  103. package/dist/features/tokenusage/index.d.ts +2 -2
  104. package/dist/features/tokenusage/index.js +127 -126
  105. package/dist/features/tokenusage/index.js.map +1 -1
  106. package/dist/features/tokenusage/index.mjs +6 -5
  107. package/dist/features/tokenusage/index.mjs.map +1 -1
  108. package/dist/index.d.mts +5 -5
  109. package/dist/index.d.ts +5 -5
  110. package/dist/index.js +8 -6
  111. package/dist/index.js.map +1 -1
  112. package/dist/index.mjs +11 -9
  113. package/dist/next-config/index.d.mts +43 -0
  114. package/dist/next-config/index.d.ts +43 -0
  115. package/dist/next-config/index.js +230 -0
  116. package/dist/next-config/index.js.map +1 -0
  117. package/dist/next-config/index.mjs +230 -0
  118. package/dist/next-config/index.mjs.map +1 -0
  119. package/dist/{request-FXF63NSQ.mjs → request-3IUMNVOS.mjs} +2 -2
  120. package/dist/request-LZBAOT3Y.js +8 -0
  121. package/dist/request-LZBAOT3Y.js.map +1 -0
  122. package/dist/server/cachedGet.d.mts +28 -0
  123. package/dist/server/cachedGet.d.ts +28 -0
  124. package/dist/server/cachedGet.js +60 -0
  125. package/dist/server/cachedGet.js.map +1 -0
  126. package/dist/server/cachedGet.mjs +60 -0
  127. package/dist/server/cachedGet.mjs.map +1 -0
  128. package/dist/server/cachedGet.stub.d.mts +7 -0
  129. package/dist/server/cachedGet.stub.d.ts +7 -0
  130. package/dist/server/cachedGet.stub.js +17 -0
  131. package/dist/server/cachedGet.stub.js.map +1 -0
  132. package/dist/server/cachedGet.stub.mjs +17 -0
  133. package/dist/server/cachedGet.stub.mjs.map +1 -0
  134. package/dist/server/index.d.mts +27 -25
  135. package/dist/server/index.d.ts +27 -25
  136. package/dist/server/index.js +13 -6
  137. package/dist/server/index.js.map +1 -1
  138. package/dist/server/index.mjs +15 -8
  139. package/dist/testing/index.js.map +1 -1
  140. package/dist/testing/index.mjs.map +1 -1
  141. package/dist/{types-D0uLYV2P.d.mts → types-Bq_UA8Lg.d.mts} +1 -1
  142. package/dist/{types-Cn153-mH.d.ts → types-bsm8Fp55.d.ts} +1 -1
  143. package/dist/{usePageUrlGenerator-B-3FRKBD.d.ts → usePageUrlGenerator-J_ECv-oQ.d.ts} +1 -1
  144. package/dist/{usePageUrlGenerator-CCJ_cdQy.d.mts → usePageUrlGenerator-uKBjAKqC.d.mts} +1 -1
  145. package/package.json +12 -1
  146. package/src/components/forms/__tests__/EditorSheet.test.tsx +25 -1
  147. package/src/components/forms/__tests__/useEditorDialog.test.ts +164 -1
  148. package/src/components/forms/useEditorDialog.ts +69 -2
  149. package/src/contexts/SessionContext.tsx +20 -0
  150. package/src/contexts/SocketContext.tsx +30 -3
  151. package/src/contexts/ViewportContext.tsx +17 -2
  152. package/src/contexts/__tests__/SessionContext.test.tsx +58 -0
  153. package/src/contexts/__tests__/SocketContext.session.test.tsx +77 -0
  154. package/src/contexts/index.ts +1 -0
  155. package/src/core/abstracts/AbstractService.ts +4 -6
  156. package/src/core/abstracts/__tests__/AbstractService.locale.test.ts +64 -0
  157. package/src/features/analytics/components/server/AnalyticsAdminPage.tsx +5 -1
  158. package/src/features/analytics/components/server/AnalyticsJourneyPage.tsx +5 -1
  159. package/src/features/company/hooks/useSubscriptionStatus.ts +6 -1
  160. package/src/features/notification/contexts/NotificationContext.tsx +5 -2
  161. package/src/features/notification/contexts/__tests__/NotificationContext.spec.tsx +22 -0
  162. package/src/features/user/contexts/CurrentUserContext.tsx +7 -5
  163. package/src/features/user/contexts/__tests__/CurrentUserContext.spec.tsx +63 -3
  164. package/src/hooks/__tests__/useSocket.render.test.ts +22 -0
  165. package/src/hooks/useSocket.ts +0 -1
  166. package/src/i18n/__tests__/config.test.ts +27 -0
  167. package/src/i18n/config.ts +17 -0
  168. package/src/i18n/index.ts +2 -0
  169. package/src/next-config/__tests__/createNextConfig.test.ts +268 -0
  170. package/src/next-config/csp.ts +128 -0
  171. package/src/next-config/headers.ts +61 -0
  172. package/src/next-config/index.ts +114 -0
  173. package/src/server/JsonApiServer.ts +3 -1
  174. package/src/server/ServerSession.ts +29 -1
  175. package/src/server/__tests__/JsonApiServer.test.ts +41 -0
  176. package/src/server/__tests__/ServerSession.read.test.ts +67 -0
  177. package/src/server/__tests__/cache.test.ts +48 -0
  178. package/src/server/__tests__/cachedGet.test.ts +125 -0
  179. package/src/server/__tests__/request.test.ts +96 -1
  180. package/src/server/cache.ts +21 -4
  181. package/src/server/cacheDigest.ts +10 -0
  182. package/src/server/cacheProfiles.ts +15 -0
  183. package/src/server/cachedGet.stub.ts +15 -0
  184. package/src/server/cachedGet.ts +80 -0
  185. package/src/server/request.ts +33 -32
  186. package/src/shadcnui/ui/__tests__/sidebar.menu-skeleton.test.tsx +50 -0
  187. package/src/shadcnui/ui/__tests__/sidebar.session.test.tsx +133 -0
  188. package/src/shadcnui/ui/sidebar.tsx +121 -18
  189. package/src/testing/matchers/jsonApiMatchers.ts +1 -0
  190. package/src/unified/JsonApiRequest.ts +4 -1
  191. package/src/unified/__tests__/JsonApiGet.cache.test.ts +51 -0
  192. package/src/utils/__tests__/map-thenable.test.ts +29 -0
  193. package/src/utils/__tests__/use-mobile.test.tsx +102 -1
  194. package/src/utils/map-thenable.ts +15 -0
  195. package/src/utils/use-mobile.tsx +13 -4
  196. package/dist/BlockNoteEditor-ATZVHS6X.js.map +0 -1
  197. package/dist/JsonApiRequest-TE5WD3WS.js +0 -26
  198. package/dist/chunk-26MQIJNB.js.map +0 -1
  199. package/dist/chunk-2IMQ5IKA.mjs.map +0 -1
  200. package/dist/chunk-4Z45NYPR.js.map +0 -1
  201. package/dist/chunk-5TRFNKJS.js.map +0 -1
  202. package/dist/chunk-7B4E42R5.mjs.map +0 -1
  203. package/dist/chunk-CAKOFJZD.js.map +0 -1
  204. package/dist/chunk-E3I4MT53.mjs.map +0 -1
  205. package/dist/chunk-GHFMKH3M.js.map +0 -1
  206. package/dist/chunk-Q6J2ICKO.mjs.map +0 -1
  207. package/dist/chunk-SJLXPHK5.mjs.map +0 -1
  208. package/dist/chunk-YDPDJIJF.js.map +0 -1
  209. package/dist/request-ZTX6I63X.js +0 -8
  210. package/dist/request-ZTX6I63X.js.map +0 -1
  211. /package/dist/{BlockNoteViewer-KRTAFTUX.mjs.map → BlockNoteViewer-DQYT6IJW.mjs.map} +0 -0
  212. /package/dist/{JsonApiRequest-UHOWNI3O.mjs.map → JsonApiRequest-MEP6AXDT.mjs.map} +0 -0
  213. /package/dist/{chunk-U65JPKO3.mjs.map → chunk-R6ZYB4VN.mjs.map} +0 -0
  214. /package/dist/{request-FXF63NSQ.mjs.map → request-3IUMNVOS.mjs.map} +0 -0
@@ -9,7 +9,7 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkGKDHYB2Rjs = require('../../chunk-GKDHYB2R.js');
12
+ var _chunkTWBZ2GSXjs = require('../../chunk-TWBZ2GSX.js');
13
13
 
14
14
 
15
15
 
@@ -37,8 +37,9 @@ var _chunkGKDHYB2Rjs = require('../../chunk-GKDHYB2R.js');
37
37
 
38
38
 
39
39
 
40
- var _chunkYDPDJIJFjs = require('../../chunk-YDPDJIJF.js');
41
- require('../../chunk-4Z45NYPR.js');
40
+ var _chunkNFCXUAE6js = require('../../chunk-NFCXUAE6.js');
41
+ require('../../chunk-5W5MN7JP.js');
42
+ require('../../chunk-G4JR3SFV.js');
42
43
 
43
44
 
44
45
 
@@ -56,10 +57,10 @@ require('../../chunk-4Z45NYPR.js');
56
57
 
57
58
 
58
59
 
59
- var _chunkCAKOFJZDjs = require('../../chunk-CAKOFJZD.js');
60
- require('../../chunk-26MQIJNB.js');
60
+ var _chunk6OFANJTEjs = require('../../chunk-6OFANJTE.js');
61
61
  require('../../chunk-LXKSUWAV.js');
62
62
  require('../../chunk-JTPRJNT2.js');
63
+ require('../../chunk-WGVNJXZO.js');
63
64
  require('../../chunk-3EPNHTMH.js');
64
65
 
65
66
 
@@ -81,7 +82,7 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
81
82
  };
82
83
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
83
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,
84
- _chunkYDPDJIJFjs.DateRangeSelector,
85
+ _chunkNFCXUAE6js.DateRangeSelector,
85
86
  {
86
87
  onDateChange: (range) => {
87
88
  if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
@@ -116,16 +117,16 @@ function TokenUsageAdminFilterBar({ granularity, companyId, metric, companies, o
116
117
  }
117
118
  ),
118
119
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
119
- _chunkYDPDJIJFjs.Select,
120
+ _chunkNFCXUAE6js.Select,
120
121
  {
121
122
  items: companyItems,
122
123
  value: _nullishCoalesce(companyId, () => ( ALL_COMPANIES)),
123
124
  onValueChange: (value) => onChange({ companyId: !value || value === ALL_COMPANIES ? void 0 : value }),
124
125
  children: [
125
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
126
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.SelectContent, { children: [
127
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
128
- companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectItem, { value: company.id, children: company.label }, company.id))
126
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectTrigger, { className: "w-56", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectValue, { placeholder: t("token_usage.admin.all_companies") }) }),
127
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.SelectContent, { children: [
128
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectItem, { value: ALL_COMPANIES, children: t("token_usage.admin.all_companies") }),
129
+ companies.map((company) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectItem, { value: company.id, children: company.label }, company.id))
129
130
  ] })
130
131
  ]
131
132
  }
@@ -148,13 +149,13 @@ function Segmented({
148
149
  children: options.map((option) => {
149
150
  const selected = option.value === value;
150
151
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
151
- _chunkYDPDJIJFjs.Button,
152
+ _chunkNFCXUAE6js.Button,
152
153
  {
153
154
  type: "button",
154
155
  size: "sm",
155
156
  variant: selected ? "default" : "ghost",
156
157
  "aria-pressed": selected,
157
- className: _chunkCAKOFJZDjs.cn.call(void 0, !selected && "text-muted-foreground"),
158
+ className: _chunk6OFANJTEjs.cn.call(void 0, !selected && "text-muted-foreground"),
158
159
  onClick: () => onSelect(option.value),
159
160
  children: option.label
160
161
  },
@@ -174,36 +175,36 @@ function withFilters(endpoint, filters) {
174
175
  return endpoint;
175
176
  }
176
177
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
177
- var TokenUsageAdminService = class extends _chunkCAKOFJZDjs.AbstractService {
178
+ var TokenUsageAdminService = class extends _chunk6OFANJTEjs.AbstractService {
178
179
  static {
179
180
  _chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageAdminService");
180
181
  }
181
182
  /** Six rows: {customer, platform, total} × {current, previous}. */
182
183
  static async getSummary(filters) {
183
- const endpoint = withFilters(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageAdminSummary }), filters);
184
+ const endpoint = withFilters(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageAdminSummary }), filters);
184
185
  return this.callApi({
185
- type: _chunkCAKOFJZDjs.Modules.TokenUsageAdminSummary,
186
+ type: _chunk6OFANJTEjs.Modules.TokenUsageAdminSummary,
186
187
  method: "GET" /* GET */,
187
188
  endpoint: endpoint.generate()
188
189
  });
189
190
  }
190
191
  static async getTimeline(params) {
191
- const endpoint = withFilters(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageAdminTimeline }), params);
192
+ const endpoint = withFilters(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageAdminTimeline }), params);
192
193
  endpoint.addAdditionalParam("granularity", params.granularity);
193
194
  endpoint.addAdditionalParam("stackBy", params.stackBy);
194
195
  return this.callApi({
195
- type: _chunkCAKOFJZDjs.Modules.TokenUsageAdminTimeline,
196
+ type: _chunk6OFANJTEjs.Modules.TokenUsageAdminTimeline,
196
197
  method: "GET" /* GET */,
197
198
  endpoint: endpoint.generate()
198
199
  });
199
200
  }
200
201
  static async getBreakdown(params) {
201
- const endpoint = withFilters(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageAdminBreakdown }), params);
202
+ const endpoint = withFilters(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageAdminBreakdown }), params);
202
203
  endpoint.addAdditionalParam("dimension", params.dimension);
203
204
  endpoint.addAdditionalParam("scope", params.scope);
204
205
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
205
206
  return this.callApi({
206
- type: _chunkCAKOFJZDjs.Modules.TokenUsageAdminBreakdown,
207
+ type: _chunk6OFANJTEjs.Modules.TokenUsageAdminBreakdown,
207
208
  method: "GET" /* GET */,
208
209
  endpoint: endpoint.generate()
209
210
  });
@@ -230,7 +231,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
230
231
  pageUrl = TOKEN_USAGE_ADMIN_PAGE_URL
231
232
  }) => {
232
233
  const t = _nextintl.useTranslations.call(void 0, );
233
- const generateUrl = _chunkYDPDJIJFjs.usePageUrlGenerator.call(void 0, );
234
+ const generateUrl = _chunkNFCXUAE6js.usePageUrlGenerator.call(void 0, );
234
235
  const [filters, setFilterState] = _react.useState.call(void 0, () => {
235
236
  const range = defaultRange();
236
237
  return {
@@ -348,7 +349,7 @@ var TokenUsageAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
348
349
  error
349
350
  ]
350
351
  );
351
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminContext.Provider, { value: contextValue, children }) });
352
353
  }, "TokenUsageAdminProvider");
353
354
  var useTokenUsageAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
354
355
  const ctx = _react.useContext.call(void 0, TokenUsageAdminContext);
@@ -369,7 +370,7 @@ var _lucidereact = require('lucide-react');
369
370
  var ZERO = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
370
371
  function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
371
372
  const t = _nextintl.useTranslations.call(void 0, );
372
- const { decimal, metricValue: formatValue, currency, percent } = _chunkGKDHYB2Rjs.useUsageFormatters.call(void 0, );
373
+ const { decimal, metricValue: formatValue, currency, percent } = _chunkTWBZ2GSXjs.useUsageFormatters.call(void 0, );
373
374
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (scope, window) => _nullishCoalesce(summary.find((r) => r.scope === scope && r.window === window), () => ( ZERO)), "rowFor");
374
375
  const customerCurrent = rowFor("customer", "current");
375
376
  const customerPrevious = rowFor("customer", "previous");
@@ -378,16 +379,16 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
378
379
  const totalCurrent = rowFor("total", "current");
379
380
  const totalPrevious = rowFor("total", "previous");
380
381
  const averagePerCall = totalCurrent.calls ? totalCurrent.cost / totalCurrent.calls : 0;
381
- const cacheHit = _chunkGKDHYB2Rjs.cacheHitPercentage.call(void 0, totalCurrent.cached, totalCurrent.tokensIn);
382
+ const cacheHit = _chunkTWBZ2GSXjs.cacheHitPercentage.call(void 0, totalCurrent.cached, totalCurrent.tokensIn);
382
383
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
383
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCAKOFJZDjs.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: _chunk6OFANJTEjs.cn.call(void 0, "grid gap-3", singleCustomerMode ? "sm:grid-cols-1" : "sm:grid-cols-2"), children: [
384
385
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
385
386
  LeadTile,
386
387
  {
387
388
  testId: "tile-customer",
388
389
  label: t("token_usage.admin.customer_spend"),
389
- value: formatValue(_chunkGKDHYB2Rjs.metricValue.call(void 0, customerCurrent, metric), metric),
390
- delta: _chunkGKDHYB2Rjs.percentageDelta.call(void 0, _chunkGKDHYB2Rjs.metricValue.call(void 0, customerCurrent, metric), _chunkGKDHYB2Rjs.metricValue.call(void 0, customerPrevious, metric)),
390
+ value: formatValue(_chunkTWBZ2GSXjs.metricValue.call(void 0, customerCurrent, metric), metric),
391
+ delta: _chunkTWBZ2GSXjs.percentageDelta.call(void 0, _chunkTWBZ2GSXjs.metricValue.call(void 0, customerCurrent, metric), _chunkTWBZ2GSXjs.metricValue.call(void 0, customerPrevious, metric)),
391
392
  previousLabel: t("token_usage.admin.vs_previous"),
392
393
  decimal
393
394
  }
@@ -397,8 +398,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
397
398
  {
398
399
  testId: "tile-platform",
399
400
  label: t("token_usage.admin.platform_spend"),
400
- value: formatValue(_chunkGKDHYB2Rjs.metricValue.call(void 0, platformCurrent, metric), metric),
401
- delta: _chunkGKDHYB2Rjs.percentageDelta.call(void 0, _chunkGKDHYB2Rjs.metricValue.call(void 0, platformCurrent, metric), _chunkGKDHYB2Rjs.metricValue.call(void 0, platformPrevious, metric)),
401
+ value: formatValue(_chunkTWBZ2GSXjs.metricValue.call(void 0, platformCurrent, metric), metric),
402
+ delta: _chunkTWBZ2GSXjs.percentageDelta.call(void 0, _chunkTWBZ2GSXjs.metricValue.call(void 0, platformCurrent, metric), _chunkTWBZ2GSXjs.metricValue.call(void 0, platformPrevious, metric)),
402
403
  previousLabel: t("token_usage.admin.vs_previous"),
403
404
  decimal
404
405
  }
@@ -410,8 +411,8 @@ function TokenUsageAdminTiles({ summary, metric, singleCustomerMode }) {
410
411
  {
411
412
  testId: "tile-total",
412
413
  label: t("token_usage.admin.total_cost"),
413
- value: formatValue(_chunkGKDHYB2Rjs.metricValue.call(void 0, totalCurrent, metric), metric),
414
- delta: _chunkGKDHYB2Rjs.percentageDelta.call(void 0, _chunkGKDHYB2Rjs.metricValue.call(void 0, totalCurrent, metric), _chunkGKDHYB2Rjs.metricValue.call(void 0, totalPrevious, metric)),
414
+ value: formatValue(_chunkTWBZ2GSXjs.metricValue.call(void 0, totalCurrent, metric), metric),
415
+ delta: _chunkTWBZ2GSXjs.percentageDelta.call(void 0, _chunkTWBZ2GSXjs.metricValue.call(void 0, totalCurrent, metric), _chunkTWBZ2GSXjs.metricValue.call(void 0, totalPrevious, metric)),
415
416
  decimal
416
417
  }
417
418
  ),
@@ -445,7 +446,7 @@ function LeadTile({
445
446
  previousLabel,
446
447
  decimal
447
448
  }) {
448
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
449
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": testId, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
449
450
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
450
451
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
451
452
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
@@ -462,7 +463,7 @@ function SupportingTile({
462
463
  delta,
463
464
  decimal
464
465
  }) {
465
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
466
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": testId, size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
466
467
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: label }),
467
468
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
468
469
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
@@ -485,7 +486,7 @@ function Delta({
485
486
  "span",
486
487
  {
487
488
  "data-testid": testId,
488
- className: _chunkCAKOFJZDjs.cn.call(void 0,
489
+ className: _chunk6OFANJTEjs.cn.call(void 0,
489
490
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
490
491
  increased ? "text-success" : "text-destructive"
491
492
  ),
@@ -506,10 +507,10 @@ _chunk7QVYU63Ejs.__name.call(void 0, Delta, "Delta");
506
507
 
507
508
  function TokenUsageBreakdownTable({ rows, metric }) {
508
509
  const t = _nextintl.useTranslations.call(void 0, );
509
- const { decimal, metricValue: formatValue, percent, compare } = _chunkGKDHYB2Rjs.useUsageFormatters.call(void 0, );
510
+ const { decimal, metricValue: formatValue, percent, compare } = _chunkTWBZ2GSXjs.useUsageFormatters.call(void 0, );
510
511
  const [sort, setSort] = _react.useState.call(void 0, void 0);
511
512
  const showActiveUsers = rows.some((row) => row.activeUsers !== void 0);
512
- const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum + _chunkGKDHYB2Rjs.metricValue.call(void 0, row, metric), 0), [rows, metric]);
513
+ const total = _react.useMemo.call(void 0, () => rows.reduce((sum, row) => sum + _chunkTWBZ2GSXjs.metricValue.call(void 0, row, metric), 0), [rows, metric]);
513
514
  const sortValue = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row, key) => {
514
515
  switch (key) {
515
516
  case "label":
@@ -519,9 +520,9 @@ function TokenUsageBreakdownTable({ rows, metric }) {
519
520
  case "activeUsers":
520
521
  return _nullishCoalesce(row.activeUsers, () => ( 0));
521
522
  case "cacheHit":
522
- return _chunkGKDHYB2Rjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn);
523
+ return _chunkTWBZ2GSXjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn);
523
524
  case "share":
524
- return _chunkGKDHYB2Rjs.metricValue.call(void 0, row, metric);
525
+ return _chunkTWBZ2GSXjs.metricValue.call(void 0, row, metric);
525
526
  default:
526
527
  return row[key];
527
528
  }
@@ -559,13 +560,13 @@ function TokenUsageBreakdownTable({ rows, metric }) {
559
560
  // The package's <Table> wraps itself in an `overflow-x-clip` container, which
560
561
  // would swallow the overflow before this scroller ever saw it — hence the
561
562
  // child override. Wide metric tables must scroll, never widen the page.
562
- /* @__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, _chunkYDPDJIJFjs.Table, { children: [
563
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableHead, { className: _chunkCAKOFJZDjs.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, _chunkNFCXUAE6js.Table, { children: [
564
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableRow, { children: columns.map((column) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableHead, { className: _chunk6OFANJTEjs.cn.call(void 0, column.numeric && "text-end"), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
564
565
  "button",
565
566
  {
566
567
  type: "button",
567
568
  onClick: () => toggleSort(column.key),
568
- className: _chunkCAKOFJZDjs.cn.call(void 0,
569
+ className: _chunk6OFANJTEjs.cn.call(void 0,
569
570
  "hover:text-primary inline-flex items-center gap-1 text-xs font-medium",
570
571
  column.numeric && "flex-row-reverse"
571
572
  ),
@@ -575,20 +576,20 @@ function TokenUsageBreakdownTable({ rows, metric }) {
575
576
  ]
576
577
  }
577
578
  ) }, column.key)) }) }),
578
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableBody, { children: sortedRows.map((row) => {
579
- const value = _chunkGKDHYB2Rjs.metricValue.call(void 0, row, metric);
579
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableBody, { children: sortedRows.map((row) => {
580
+ const value = _chunkTWBZ2GSXjs.metricValue.call(void 0, row, metric);
580
581
  const share = total > 0 ? value / total * 100 : 0;
581
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
582
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
583
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
584
- showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
585
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.calls, 0) }),
586
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
587
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
588
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: percent(_chunkGKDHYB2Rjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn)) }),
589
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
590
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
591
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.TableCell, { className: "text-end text-xs tabular-nums", children: percent(share) })
582
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.TableRow, { "data-testid": `breakdown-row-${row.id}`, children: [
583
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-xs", children: row.id === "other" ? t("token_usage.admin.other") : row.label }),
584
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-muted-foreground text-xs", children: _nullishCoalesce(row.sublabel, () => ( "")) }),
585
+ showActiveUsers && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: row.activeUsers === void 0 ? "" : decimal(row.activeUsers, 0) }),
586
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.calls, 0) }),
587
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensIn, 0) }),
588
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.tokensOut, 0) }),
589
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(_chunkTWBZ2GSXjs.cacheHitPercentage.call(void 0, row.cached, row.tokensIn)) }),
590
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.cost, "cost") }),
591
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: formatValue(row.credits, "credits") }),
592
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.TableCell, { className: "text-end text-xs tabular-nums", children: percent(share) })
592
593
  ] }, row.id);
593
594
  }) })
594
595
  ] }) })
@@ -617,7 +618,7 @@ var operationLabel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (type,
617
618
 
618
619
  function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes = false }) {
619
620
  const t = _nextintl.useTranslations.call(void 0, );
620
- const { metricValue: formatValue, percent } = _chunkGKDHYB2Rjs.useUsageFormatters.call(void 0, );
621
+ const { metricValue: formatValue, percent } = _chunkTWBZ2GSXjs.useUsageFormatters.call(void 0, );
621
622
  const renderLabel = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (row) => {
622
623
  if (row.id === "other") return t("token_usage.admin.other");
623
624
  if (!labelsAreOperationTypes) return row.label;
@@ -630,13 +631,13 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
630
631
  if (rows.length === 0) {
631
632
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground py-6 text-center text-sm", children: emptyLabel });
632
633
  }
633
- const values = rows.map((row) => _chunkGKDHYB2Rjs.metricValue.call(void 0, row, metric));
634
+ const values = rows.map((row) => _chunkTWBZ2GSXjs.metricValue.call(void 0, row, metric));
634
635
  const total = values.reduce((sum, value) => sum + value, 0);
635
636
  const max = Math.max(...values, 0);
636
637
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid gap-0.5", children: rows.map((row, index) => {
637
638
  const value = values[index];
638
639
  const isOther = row.id === "other";
639
- const step = isOther ? _chunkGKDHYB2Rjs.SEQUENTIAL_RAMP.length - 1 : Math.min(index, _chunkGKDHYB2Rjs.SEQUENTIAL_RAMP.length - 1);
640
+ const step = isOther ? _chunkTWBZ2GSXjs.SEQUENTIAL_RAMP.length - 1 : Math.min(index, _chunkTWBZ2GSXjs.SEQUENTIAL_RAMP.length - 1);
640
641
  const width = max > 0 ? value / max * 100 : 0;
641
642
  const share = total > 0 ? value / total * 100 : 0;
642
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: [
@@ -648,7 +649,7 @@ function TokenUsageRankedBar({ rows, metric, emptyLabel, labelsAreOperationTypes
648
649
  "data-testid": `ranked-fill-${row.id}`,
649
650
  "data-ramp-step": String(step),
650
651
  className: "h-full rounded-r-[4px]",
651
- style: { width: `${width}%`, backgroundColor: _chunkGKDHYB2Rjs.SEQUENTIAL_RAMP[step] }
652
+ style: { width: `${width}%`, backgroundColor: _chunkTWBZ2GSXjs.SEQUENTIAL_RAMP[step] }
652
653
  }
653
654
  ) })
654
655
  ] }),
@@ -698,7 +699,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
698
699
  }, "inferGranularity");
699
700
  function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
700
701
  const t = _nextintl.useTranslations.call(void 0, );
701
- const { compact, bucketDate, metricValue: formatValue } = _chunkGKDHYB2Rjs.useUsageFormatters.call(void 0, );
702
+ const { compact, bucketDate, metricValue: formatValue } = _chunkTWBZ2GSXjs.useUsageFormatters.call(void 0, );
702
703
  const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
703
704
  const mode = resolvedTheme === "dark" ? "dark" : "light";
704
705
  const { chartData, seriesKeys } = _react.useMemo.call(void 0, () => {
@@ -706,8 +707,8 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
706
707
  const totals = /* @__PURE__ */ new Map();
707
708
  for (const row of rows) totals.set(row.series, (_nullishCoalesce(totals.get(row.series), () => ( 0))) + metricValue2(row, metric));
708
709
  const ranked = [...totals.entries()].sort((a, b) => b[1] - a[1]).map(([series]) => series);
709
- const named = ranked.slice(0, _chunkGKDHYB2Rjs.CATEGORICAL_CEILING);
710
- const folded = new Set(ranked.slice(_chunkGKDHYB2Rjs.CATEGORICAL_CEILING));
710
+ const named = ranked.slice(0, _chunkTWBZ2GSXjs.CATEGORICAL_CEILING);
711
+ const folded = new Set(ranked.slice(_chunkTWBZ2GSXjs.CATEGORICAL_CEILING));
711
712
  const keys = folded.size > 0 ? [...named, OTHER_SERIES] : named;
712
713
  const byBucket = /* @__PURE__ */ new Map();
713
714
  for (const row of rows) {
@@ -747,7 +748,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
747
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" });
748
749
  }
749
750
  const granularity = inferGranularity(chartData.map((entry) => entry.bucket));
750
- const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ? _chunkGKDHYB2Rjs.OTHER_COLOR : _chunkGKDHYB2Rjs.seriesColor.call(void 0, index, mode), "seriesColorFor");
751
+ const seriesColorFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (series, index) => series === OTHER_SERIES ? _chunkTWBZ2GSXjs.OTHER_COLOR : _chunkTWBZ2GSXjs.seriesColor.call(void 0, index, mode), "seriesColorFor");
751
752
  return (
752
753
  // The chart is a coordinate system, not prose: recharts lays the axes and the
753
754
  // stacked bars out left-to-right, so the whole chart stays an LTR island even
@@ -756,7 +757,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
756
757
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
757
758
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-data", children: JSON.stringify(chartData) }),
758
759
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "timeline-series", children: JSON.stringify(seriesKeys) }),
759
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.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
761
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
761
762
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
762
763
  _recharts.XAxis,
@@ -780,10 +781,10 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
780
781
  }
781
782
  ),
782
783
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
783
- _chunkYDPDJIJFjs.ChartTooltip,
784
+ _chunkNFCXUAE6js.ChartTooltip,
784
785
  {
785
786
  content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
786
- _chunkYDPDJIJFjs.ChartTooltipContent,
787
+ _chunkNFCXUAE6js.ChartTooltipContent,
787
788
  {
788
789
  labelFormatter: (value) => bucketDate(String(value), granularity),
789
790
  valueFormatter: (value) => formatValue(Number(value), metric),
@@ -792,7 +793,7 @@ function TokenUsageTimelineChart({ rows, metric, stackBy, className }) {
792
793
  )
793
794
  }
794
795
  ),
795
- seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.ChartLegendContent, {}) }) : null,
796
+ seriesKeys.length >= 2 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.ChartLegendContent, {}) }) : null,
796
797
  seriesKeys.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
797
798
  _recharts.Bar,
798
799
  {
@@ -844,19 +845,19 @@ function TokenUsageAdminContainer() {
844
845
  [t]
845
846
  );
846
847
  if (error) {
847
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
848
849
  }
849
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
850
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.RoundPageContainer, { fullWidth: true, forceHeader: true });
850
851
  const emptyLabel = t("token_usage.admin.no_data");
851
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.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
853
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageAdminTiles, { summary, metric: filters.metric, singleCustomerMode: hidePlatform }),
853
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
854
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: [
855
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
856
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
854
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
855
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: [
856
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.usage_over_time") }),
857
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardAction, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
857
858
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.admin.stack_by") }),
858
859
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
859
- _chunkYDPDJIJFjs.Select,
860
+ _chunkNFCXUAE6js.Select,
860
861
  {
861
862
  items: stackByItems,
862
863
  value: filters.stackBy,
@@ -864,29 +865,29 @@ function TokenUsageAdminContainer() {
864
865
  if (value) setFilters({ stackBy: value });
865
866
  },
866
867
  children: [
867
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectValue, {}) }),
868
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.SelectItem, { value, children: stackByItems[value] }, value)) })
868
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectTrigger, { size: "sm", className: "w-36", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectValue, {}) }),
869
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectContent, { children: STACK_BY_VALUES.map((value) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.SelectItem, { value, children: stackByItems[value] }, value)) })
869
870
  ]
870
871
  }
871
872
  )
872
873
  ] }) })
873
874
  ] }),
874
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
875
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: filters.metric, stackBy: filters.stackBy }) })
875
876
  ] }),
876
877
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-4 md:grid-cols-2", children: [
877
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
878
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.by_company") }) }),
879
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
878
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
879
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.by_company") }) }),
880
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byCompany, metric: filters.metric, emptyLabel }) })
880
881
  ] }),
881
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.by_user") }) }),
883
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
882
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
883
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.by_user") }) }),
884
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byUser, metric: filters.metric, emptyLabel }) })
884
885
  ] })
885
886
  ] }),
886
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCAKOFJZDjs.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
887
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
888
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
889
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
887
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk6OFANJTEjs.cn.call(void 0, "grid gap-4", !hidePlatform && "md:grid-cols-2"), children: [
888
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
889
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.customer_by_operation") }) }),
890
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
890
891
  TokenUsageRankedBar,
891
892
  {
892
893
  rows: byCustomerOperation,
@@ -896,9 +897,9 @@ function TokenUsageAdminContainer() {
896
897
  }
897
898
  ) })
898
899
  ] }),
899
- !hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
900
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
901
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
900
+ !hidePlatform && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
901
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.platform_by_operation") }) }),
902
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
902
903
  TokenUsageRankedBar,
903
904
  {
904
905
  rows: byOperation,
@@ -909,9 +910,9 @@ function TokenUsageAdminContainer() {
909
910
  ) })
910
911
  ] })
911
912
  ] }),
912
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
913
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.admin.detail") }) }),
914
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
913
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
914
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.admin.detail") }) }),
915
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageBreakdownTable, { rows: byCompany, metric: filters.metric }) })
915
916
  ] })
916
917
  ] }) });
917
918
  }
@@ -924,36 +925,36 @@ function withFilters2(endpoint, filters) {
924
925
  return endpoint;
925
926
  }
926
927
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters2, "withFilters");
927
- var TokenUsageReportService = class extends _chunkCAKOFJZDjs.AbstractService {
928
+ var TokenUsageReportService = class extends _chunk6OFANJTEjs.AbstractService {
928
929
  static {
929
930
  _chunk7QVYU63Ejs.__name.call(void 0, this, "TokenUsageReportService");
930
931
  }
931
932
  /** Two rows: window "current" and "previous". */
932
933
  static async getSummary(filters) {
933
- const endpoint = withFilters2(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageReportSummary }), filters);
934
+ const endpoint = withFilters2(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageReportSummary }), filters);
934
935
  return this.callApi({
935
- type: _chunkCAKOFJZDjs.Modules.TokenUsageReportSummary,
936
+ type: _chunk6OFANJTEjs.Modules.TokenUsageReportSummary,
936
937
  method: "GET" /* GET */,
937
938
  endpoint: endpoint.generate()
938
939
  });
939
940
  }
940
941
  static async getTimeline(params) {
941
- const endpoint = withFilters2(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageReportTimeline }), params);
942
+ const endpoint = withFilters2(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageReportTimeline }), params);
942
943
  endpoint.addAdditionalParam("granularity", params.granularity);
943
944
  return this.callApi({
944
- type: _chunkCAKOFJZDjs.Modules.TokenUsageReportTimeline,
945
+ type: _chunk6OFANJTEjs.Modules.TokenUsageReportTimeline,
945
946
  method: "GET" /* GET */,
946
947
  endpoint: endpoint.generate()
947
948
  });
948
949
  }
949
950
  static async getBreakdown(params) {
950
- const endpoint = withFilters2(new (0, _chunkCAKOFJZDjs.EndpointCreator)({ endpoint: _chunkCAKOFJZDjs.Modules.TokenUsageReportBreakdown }), params);
951
+ const endpoint = withFilters2(new (0, _chunk6OFANJTEjs.EndpointCreator)({ endpoint: _chunk6OFANJTEjs.Modules.TokenUsageReportBreakdown }), params);
951
952
  endpoint.addAdditionalParam("dimension", params.dimension);
952
953
  if (params.targetLabel) endpoint.addAdditionalParam("targetLabel", params.targetLabel);
953
954
  endpoint.addAdditionalParam("metric", params.metric);
954
955
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
955
956
  return this.callApi({
956
- type: _chunkCAKOFJZDjs.Modules.TokenUsageReportBreakdown,
957
+ type: _chunk6OFANJTEjs.Modules.TokenUsageReportBreakdown,
957
958
  method: "GET" /* GET */,
958
959
  endpoint: endpoint.generate()
959
960
  });
@@ -1032,7 +1033,7 @@ var TOKEN_USAGE_REPORT_I18N_KEYS = [
1032
1033
 
1033
1034
  function TokenUsageReportFilterBar({ onChange }) {
1034
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,
1035
- _chunkYDPDJIJFjs.DateRangeSelector,
1036
+ _chunkNFCXUAE6js.DateRangeSelector,
1036
1037
  {
1037
1038
  onDateChange: (range) => {
1038
1039
  if (!_optionalChain([range, 'optionalAccess', _5 => _5.from]) || !_optionalChain([range, 'optionalAccess', _6 => _6.to])) return;
@@ -1065,7 +1066,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
1065
1066
  pageUrl = TOKEN_USAGE_REPORT_PAGE_URL
1066
1067
  }) => {
1067
1068
  const t = _nextintl.useTranslations.call(void 0, );
1068
- const generateUrl = _chunkYDPDJIJFjs.usePageUrlGenerator.call(void 0, );
1069
+ const generateUrl = _chunkNFCXUAE6js.usePageUrlGenerator.call(void 0, );
1069
1070
  const [filters, setFilterState] = _react.useState.call(void 0, () => {
1070
1071
  const range = defaultRange2();
1071
1072
  return { from: _nullishCoalesce(initialFrom, () => ( range.from)), to: _nullishCoalesce(initialTo, () => ( range.to)) };
@@ -1129,7 +1130,7 @@ var TokenUsageReportProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void
1129
1130
  () => ({ summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error }),
1130
1131
  [summary, timeline, byOperation, byTarget, targetPanelTitleKey, filters, setFilters, isLoading, error]
1131
1132
  );
1132
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportContext.Provider, { value: contextValue, children }) });
1133
1134
  }, "TokenUsageReportProvider");
1134
1135
  var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
1135
1136
  const ctx = _react.useContext.call(void 0, TokenUsageReportContext);
@@ -1149,7 +1150,7 @@ var useTokenUsageReport = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (
1149
1150
  var ZERO2 = { cost: 0, credits: 0, tokensIn: 0, tokensOut: 0, cached: 0, calls: 0 };
1150
1151
  function TokenUsageReportTiles({ summary, metric, balances }) {
1151
1152
  const t = _nextintl.useTranslations.call(void 0, );
1152
- const { decimal, metricValue: formatValue } = _chunkGKDHYB2Rjs.useUsageFormatters.call(void 0, );
1153
+ const { decimal, metricValue: formatValue } = _chunkTWBZ2GSXjs.useUsageFormatters.call(void 0, );
1153
1154
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window) => _nullishCoalesce(summary.find((row) => row.window === window), () => ( ZERO2)), "rowFor");
1154
1155
  const current = rowFor("current");
1155
1156
  const previous = rowFor("previous");
@@ -1157,15 +1158,15 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
1157
1158
  const monthlyColor = monthlyPercentage > 75 ? "text-success" : monthlyPercentage >= 5 ? "text-warning" : "text-destructive";
1158
1159
  const whole = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (value) => decimal(Math.max(0, Math.floor(value)), 0), "whole");
1159
1160
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3", children: [
1160
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
1161
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": "tile-used", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
1161
1162
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.used_in_period") }),
1162
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: formatValue(_chunkGKDHYB2Rjs.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(_chunkTWBZ2GSXjs.metricValue.call(void 0, current, metric), metric) }),
1163
1164
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
1164
1165
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1165
1166
  Delta2,
1166
1167
  {
1167
1168
  testId: "tile-used-delta",
1168
- delta: _chunkGKDHYB2Rjs.percentageDelta.call(void 0, _chunkGKDHYB2Rjs.metricValue.call(void 0, current, metric), _chunkGKDHYB2Rjs.metricValue.call(void 0, previous, metric)),
1169
+ delta: _chunkTWBZ2GSXjs.percentageDelta.call(void 0, _chunkTWBZ2GSXjs.metricValue.call(void 0, current, metric), _chunkTWBZ2GSXjs.metricValue.call(void 0, previous, metric)),
1169
1170
  decimal
1170
1171
  }
1171
1172
  ),
@@ -1173,21 +1174,21 @@ function TokenUsageReportTiles({ summary, metric, balances }) {
1173
1174
  ] })
1174
1175
  ] }) }),
1175
1176
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
1176
- balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
1177
+ balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": "tile-monthly", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
1177
1178
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.monthly_left") }),
1178
1179
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-baseline gap-1", children: [
1179
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "data-testid": "tile-monthly-value", className: _chunkCAKOFJZDjs.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: _chunk6OFANJTEjs.cn.call(void 0, "text-sm font-medium tabular-nums", monthlyColor), children: whole(balances.availableMonthlyCredits) }),
1180
1181
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: [
1181
1182
  "/ ",
1182
1183
  whole(balances.monthlyCredits)
1183
1184
  ] })
1184
1185
  ] })
1185
1186
  ] }) }),
1186
- balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
1187
+ balances && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": "tile-extra", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
1187
1188
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.extra_credits") }),
1188
1189
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: whole(balances.availableExtraCredits) })
1189
1190
  ] }) }),
1190
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.CardContent, { className: "grid gap-1", children: [
1191
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { "data-testid": "tile-calls", size: "sm", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.CardContent, { className: "grid gap-1", children: [
1191
1192
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: t("token_usage.report.calls") }),
1192
1193
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: decimal(current.calls, 0) })
1193
1194
  ] }) })
@@ -1209,7 +1210,7 @@ function Delta2({
1209
1210
  "span",
1210
1211
  {
1211
1212
  "data-testid": testId,
1212
- className: _chunkCAKOFJZDjs.cn.call(void 0,
1213
+ className: _chunk6OFANJTEjs.cn.call(void 0,
1213
1214
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
1214
1215
  increased ? "text-warning" : "text-success"
1215
1216
  ),
@@ -1229,21 +1230,21 @@ function TokenUsageReportContainer({ balances = null }) {
1229
1230
  const t = _nextintl.useTranslations.call(void 0, );
1230
1231
  const { summary, timeline, byOperation, byTarget, isLoading, error, targetPanelTitleKey } = useTokenUsageReport();
1231
1232
  if (error) {
1232
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.RoundPageContainer, { fullWidth: true, forceHeader: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.Card, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-destructive text-xs/relaxed", children: error }) }) }) }) });
1233
1234
  }
1234
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
1235
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.RoundPageContainer, { fullWidth: true, forceHeader: true });
1235
1236
  const emptyLabel = t("token_usage.report.no_data");
1236
1237
  const targetTitle = targetPanelTitleKey && byTarget.length > 0 ? t(targetPanelTitleKey) : void 0;
1237
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.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, _chunkNFCXUAE6js.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
1239
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageReportTiles, { summary, metric: "credits", balances }),
1239
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
1240
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
1241
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
1240
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
1241
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.report.usage_over_time") }) }),
1242
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageTimelineChart, { rows: timeline, metric: "credits", stackBy: "type" }) })
1242
1243
  ] }),
1243
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkCAKOFJZDjs.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
1244
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
1245
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: t("token_usage.report.by_operation") }) }),
1246
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1244
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk6OFANJTEjs.cn.call(void 0, "grid gap-4", targetTitle && "md:grid-cols-2"), children: [
1245
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
1246
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: t("token_usage.report.by_operation") }) }),
1247
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1247
1248
  TokenUsageRankedBar,
1248
1249
  {
1249
1250
  rows: byOperation,
@@ -1253,9 +1254,9 @@ function TokenUsageReportContainer({ balances = null }) {
1253
1254
  }
1254
1255
  ) })
1255
1256
  ] }),
1256
- targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYDPDJIJFjs.Card, { children: [
1257
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardTitle, { children: targetTitle }) }),
1258
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYDPDJIJFjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
1257
+ targetTitle && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkNFCXUAE6js.Card, { children: [
1258
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardTitle, { children: targetTitle }) }),
1259
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNFCXUAE6js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TokenUsageRankedBar, { rows: byTarget, metric: "credits", emptyLabel }) })
1259
1260
  ] })
1260
1261
  ] })
1261
1262
  ] }) });
@@ -1293,5 +1294,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, TokenUsageReportContainer, "TokenUsageRepor
1293
1294
 
1294
1295
 
1295
1296
 
1296
- exports.TOKEN_USAGE_ADMIN_I18N_KEYS = TOKEN_USAGE_ADMIN_I18N_KEYS; exports.TOKEN_USAGE_REPORT_I18N_KEYS = TOKEN_USAGE_REPORT_I18N_KEYS; exports.TokenUsageAdminBreakdown = _chunkCAKOFJZDjs.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunkCAKOFJZDjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunkCAKOFJZDjs.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunkCAKOFJZDjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunkCAKOFJZDjs.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunkCAKOFJZDjs.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunkCAKOFJZDjs.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunkCAKOFJZDjs.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunkCAKOFJZDjs.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunkCAKOFJZDjs.configureTokenUsage; exports.createUsageFormatters = _chunkGKDHYB2Rjs.createUsageFormatters; exports.getTokenUsageCurrency = _chunkCAKOFJZDjs.getTokenUsageCurrency; exports.tokenUsageModules = _chunkCAKOFJZDjs.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = _chunkGKDHYB2Rjs.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 = _chunk6OFANJTEjs.TokenUsageAdminBreakdown; exports.TokenUsageAdminBreakdownModule = _chunk6OFANJTEjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminContainer = TokenUsageAdminContainer; exports.TokenUsageAdminFilterBar = TokenUsageAdminFilterBar; exports.TokenUsageAdminProvider = TokenUsageAdminProvider; exports.TokenUsageAdminService = TokenUsageAdminService; exports.TokenUsageAdminSummary = _chunk6OFANJTEjs.TokenUsageAdminSummary; exports.TokenUsageAdminSummaryModule = _chunk6OFANJTEjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTiles = TokenUsageAdminTiles; exports.TokenUsageAdminTimeline = _chunk6OFANJTEjs.TokenUsageAdminTimeline; exports.TokenUsageAdminTimelineModule = _chunk6OFANJTEjs.TokenUsageAdminTimelineModule; exports.TokenUsageBreakdownTable = TokenUsageBreakdownTable; exports.TokenUsageRankedBar = TokenUsageRankedBar; exports.TokenUsageReportBreakdown = _chunk6OFANJTEjs.TokenUsageReportBreakdown; exports.TokenUsageReportContainer = TokenUsageReportContainer; exports.TokenUsageReportFilterBar = TokenUsageReportFilterBar; exports.TokenUsageReportProvider = TokenUsageReportProvider; exports.TokenUsageReportService = TokenUsageReportService; exports.TokenUsageReportSummary = _chunk6OFANJTEjs.TokenUsageReportSummary; exports.TokenUsageReportTiles = TokenUsageReportTiles; exports.TokenUsageReportTimeline = _chunk6OFANJTEjs.TokenUsageReportTimeline; exports.TokenUsageTimelineChart = TokenUsageTimelineChart; exports.configureTokenUsage = _chunk6OFANJTEjs.configureTokenUsage; exports.createUsageFormatters = _chunkTWBZ2GSXjs.createUsageFormatters; exports.getTokenUsageCurrency = _chunk6OFANJTEjs.getTokenUsageCurrency; exports.tokenUsageModules = _chunk6OFANJTEjs.tokenUsageModules; exports.useTokenUsageAdmin = useTokenUsageAdmin; exports.useTokenUsageReport = useTokenUsageReport; exports.useUsageFormatters = _chunkTWBZ2GSXjs.useUsageFormatters;
1297
1298
  //# sourceMappingURL=index.js.map