@carlonicora/nextjs-jsonapi 4.1.1 → 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 (230) 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/scripts/vitest-slow-tests.reporter.spec.ts +54 -0
  88. package/src/components/containers/RoundPageContainer.tsx +3 -1
  89. package/src/components/containers/RoundPageContainerTitle.tsx +5 -2
  90. package/src/components/editors/BlockNoteEditor.tsx +31 -15
  91. package/src/components/editors/BlockNoteEditorAiActions.tsx +11 -7
  92. package/src/components/editors/__tests__/BlockNoteEditorAiActions.test.ts +10 -3
  93. package/src/components/errors/ErrorDetails.tsx +5 -2
  94. package/src/components/forms/CommonAssociationForm.tsx +1 -1
  95. package/src/components/forms/EntityMultiSelector.tsx +6 -2
  96. package/src/components/forms/EntitySelector.tsx +4 -1
  97. package/src/components/forms/FileUploader.tsx +3 -2
  98. package/src/components/forms/MultiFileUploader.tsx +3 -1
  99. package/src/components/navigations/Breadcrumb.tsx +3 -2
  100. package/src/components/navigations/Header.tsx +3 -1
  101. package/src/components/navigations/MobileNavigationBar.tsx +3 -1
  102. package/src/components/navigations/__tests__/Header.spec.tsx +2 -2
  103. package/src/components/tables/cells/cell.id.tsx +13 -2
  104. package/src/core/abstracts/AbstractService.ts +3 -3
  105. package/src/core/abstracts/ClientAbstractService.ts +3 -2
  106. package/src/features/assistant-action/components/ApprovalActionCard.tsx +74 -5
  107. package/src/features/assistant-action/components/__tests__/ApprovalActionCard.spec.tsx +81 -0
  108. package/src/features/assistant-message/components/parts/RelevanceMeter.tsx +4 -1
  109. package/src/features/assistant-message/components/parts/tabs/UsersTab.tsx +2 -1
  110. package/src/features/auth/components/buttons/GoogleSignInButton.tsx +4 -1
  111. package/src/features/auth/components/details/LandingComponent.tsx +1 -1
  112. package/src/features/auth/components/forms/ForgotPassword.tsx +1 -1
  113. package/src/features/auth/components/forms/Login.tsx +1 -1
  114. package/src/features/auth/components/forms/Register.tsx +1 -1
  115. package/src/features/auth/components/forms/ResetPassword.tsx +2 -2
  116. package/src/features/auth/components/two-factor/BackupCodesDialog.tsx +1 -1
  117. package/src/features/auth/components/two-factor/PasskeyButton.tsx +1 -1
  118. package/src/features/billing/components/cards/BillingUsageSummaryCard.tsx +21 -11
  119. package/src/features/billing/components/cards/CustomerInfoCard.tsx +16 -13
  120. package/src/features/billing/components/cards/InvoicesSummaryCard.tsx +33 -21
  121. package/src/features/billing/components/cards/PaymentMethodSummaryCard.tsx +20 -10
  122. package/src/features/billing/components/cards/SubscriptionSummaryCard.tsx +35 -22
  123. package/src/features/billing/components/containers/BillingDashboardContainer.tsx +24 -24
  124. package/src/features/billing/components/utils/__tests__/billing-formatters.spec.ts +63 -0
  125. package/src/features/billing/components/utils/currency.ts +67 -10
  126. package/src/features/billing/components/utils/date.ts +9 -4
  127. package/src/features/billing/components/utils/format-options.ts +20 -0
  128. package/src/features/billing/components/utils/index.ts +3 -1
  129. package/src/features/billing/components/utils/useBillingFormatOptions.ts +11 -0
  130. package/src/features/billing/components/widgets/BillingAlertBanner.tsx +8 -9
  131. package/src/features/billing/contexts/PriceContext.tsx +18 -6
  132. package/src/features/billing/i18n-keys.ts +212 -0
  133. package/src/features/billing/stripe-customer/components/containers/PaymentMethodsContainer.tsx +8 -8
  134. package/src/features/billing/stripe-customer/components/details/PaymentMethodCard.tsx +11 -9
  135. package/src/features/billing/stripe-customer/components/forms/PaymentMethodEditor.tsx +4 -4
  136. package/src/features/billing/stripe-customer/components/forms/PaymentMethodForm.tsx +9 -7
  137. package/src/features/billing/stripe-invoice/components/containers/InvoicesContainer.tsx +10 -8
  138. package/src/features/billing/stripe-invoice/components/details/InvoiceDetails.tsx +34 -29
  139. package/src/features/billing/stripe-invoice/components/lists/InvoicesList.tsx +12 -9
  140. package/src/features/billing/stripe-invoice/components/widgets/InvoiceStatusBadge.tsx +9 -6
  141. package/src/features/billing/stripe-price/components/details/PriceDetails.tsx +4 -3
  142. package/src/features/billing/stripe-price/components/forms/PriceArchiver.tsx +3 -1
  143. package/src/features/billing/stripe-price/components/forms/PriceEditor.tsx +3 -1
  144. package/src/features/billing/stripe-price/hooks/useStripePriceTableStructure.tsx +6 -5
  145. package/src/features/billing/stripe-promotion-code/components/PromoCodeInput.tsx +12 -7
  146. package/src/features/billing/stripe-promotion-code/data/stripe-promotion-code.service.ts +3 -1
  147. package/src/features/billing/stripe-subscription/components/containers/SubscriptionsContainer.tsx +10 -6
  148. package/src/features/billing/stripe-subscription/components/details/SubscriptionDetails.tsx +44 -29
  149. package/src/features/billing/stripe-subscription/components/forms/CancelSubscriptionDialog.tsx +14 -11
  150. package/src/features/billing/stripe-subscription/components/lists/SubscriptionsList.tsx +20 -17
  151. package/src/features/billing/stripe-subscription/components/widgets/IntervalToggle.tsx +4 -2
  152. package/src/features/billing/stripe-subscription/components/widgets/PricingCard.tsx +16 -7
  153. package/src/features/billing/stripe-subscription/components/widgets/ProductPricingList.tsx +3 -1
  154. package/src/features/billing/stripe-subscription/components/widgets/ProductPricingRow.tsx +3 -1
  155. package/src/features/billing/stripe-subscription/components/widgets/ProrationPreview.tsx +12 -7
  156. package/src/features/billing/stripe-subscription/components/widgets/SubscriptionConfirmation.tsx +11 -8
  157. package/src/features/billing/stripe-subscription/components/widgets/SubscriptionStatusBadge.tsx +13 -10
  158. package/src/features/billing/stripe-subscription/components/wizards/SubscriptionWizard.tsx +8 -6
  159. package/src/features/billing/stripe-subscription/components/wizards/WizardProgressIndicator.tsx +7 -4
  160. package/src/features/billing/stripe-subscription/components/wizards/WizardStepPaymentMethod.tsx +4 -2
  161. package/src/features/billing/stripe-subscription/components/wizards/WizardStepPlanSelection.tsx +3 -1
  162. package/src/features/billing/stripe-subscription/components/wizards/WizardStepReview.tsx +37 -28
  163. package/src/features/billing/stripe-subscription/hooks/useConfirmSubscriptionPayment.ts +9 -7
  164. package/src/features/billing/stripe-subscription/hooks/useSubscriptionWizard.ts +20 -9
  165. package/src/features/billing/stripe-usage/components/containers/UsageContainer.tsx +6 -6
  166. package/src/features/billing/stripe-usage/components/details/UsageSummaryCard.tsx +24 -9
  167. package/src/features/billing/stripe-usage/components/lists/UsageHistoryTable.tsx +16 -12
  168. package/src/features/company/components/details/TokenStatusIndicator.tsx +7 -5
  169. package/src/features/company/components/forms/CompanyEditor.tsx +2 -2
  170. package/src/features/help/components/HelpArticleBody.tsx +1 -1
  171. package/src/features/help/components/HelpHeader.tsx +1 -1
  172. package/src/features/help/components/HelpSideNav.tsx +1 -1
  173. package/src/features/help/i18n-keys.ts +2 -0
  174. package/src/features/notification/components/common/NotificationErrorBoundary.tsx +17 -12
  175. package/src/features/notification/components/containers/NotificationsListContainer.tsx +4 -2
  176. package/src/features/notification/components/notifications/Notification.tsx +6 -3
  177. package/src/features/notification/contexts/NotificationContext.tsx +9 -4
  178. package/src/features/notification/contexts/__tests__/NotificationContext.spec.tsx +13 -0
  179. package/src/features/notification/hooks/useNotificationTableStructure.tsx +4 -2
  180. package/src/features/oauth/components/OAuthClientCard.tsx +13 -7
  181. package/src/features/oauth/components/OAuthClientDetail.tsx +34 -30
  182. package/src/features/oauth/components/OAuthClientForm.tsx +24 -24
  183. package/src/features/oauth/components/OAuthClientList.tsx +10 -6
  184. package/src/features/oauth/components/OAuthClientSecretDisplay.tsx +10 -8
  185. package/src/features/oauth/components/OAuthRedirectUriInput.tsx +9 -13
  186. package/src/features/oauth/components/OAuthScopeSelector.tsx +15 -6
  187. package/src/features/oauth/components/__tests__/OAuthClientForm.spec.tsx +11 -9
  188. package/src/features/oauth/components/consent/OAuthScopeList.tsx +4 -2
  189. package/src/features/oauth/hooks/__tests__/useOAuthScopeText.spec.ts +30 -0
  190. package/src/features/oauth/hooks/index.ts +1 -0
  191. package/src/features/oauth/hooks/useOAuthClient.ts +11 -5
  192. package/src/features/oauth/hooks/useOAuthClients.ts +9 -3
  193. package/src/features/oauth/hooks/useOAuthConsent.ts +11 -5
  194. package/src/features/oauth/hooks/useOAuthScopeText.ts +33 -0
  195. package/src/features/rbac/components/RbacByRoleContainer.tsx +7 -6
  196. package/src/features/rbac/components/RbacContainer.tsx +7 -6
  197. package/src/features/rbac/contexts/RbacContext.tsx +3 -3
  198. package/src/features/user/components/containers/UserContainer.tsx +3 -1
  199. package/src/features/user/data/__tests__/user.test.ts +66 -0
  200. package/src/features/user/data/user.interface.ts +2 -0
  201. package/src/features/user/data/user.service.ts +9 -0
  202. package/src/features/user/data/user.ts +7 -0
  203. package/src/features/waitlist/components/forms/WaitlistForm.tsx +1 -1
  204. package/src/features/waitlist/components/lists/WaitlistList.tsx +1 -1
  205. package/src/i18n/__tests__/config.test.ts +21 -1
  206. package/src/i18n/config.ts +13 -0
  207. package/src/i18n/index.ts +1 -0
  208. package/src/shadcnui/custom/multi-select.tsx +47 -14
  209. package/src/shadcnui/custom/multiple-selector.tsx +14 -2
  210. package/src/shadcnui/ui/__tests__/use-ui-text.test.tsx +76 -0
  211. package/src/shadcnui/ui/breadcrumb.tsx +9 -2
  212. package/src/shadcnui/ui/carousel.tsx +15 -4
  213. package/src/shadcnui/ui/dialog.tsx +15 -2
  214. package/src/shadcnui/ui/sheet.tsx +6 -1
  215. package/src/shadcnui/ui/sidebar.tsx +33 -7
  216. package/src/shadcnui/ui/spinner.tsx +6 -1
  217. package/src/shadcnui/ui/use-ui-text.ts +49 -0
  218. package/src/utils/__tests__/date-formatter.test.ts +24 -1
  219. package/src/utils/date-formatter.ts +16 -0
  220. package/src/utils/index.ts +1 -1
  221. package/dist/BlockNoteEditor-BENYTTCZ.js.map +0 -1
  222. package/dist/BlockNoteEditor-VOYKZOP5.mjs.map +0 -1
  223. package/dist/chunk-4BZJ4LAB.js.map +0 -1
  224. package/dist/chunk-6ISF5KNQ.mjs.map +0 -1
  225. package/dist/chunk-ORU7KLCY.js.map +0 -1
  226. package/dist/chunk-ZZ6E33FO.mjs.map +0 -1
  227. /package/dist/{BlockNoteViewer-Y2ZM4ESA.mjs.map → BlockNoteViewer-MDPO6BXN.mjs.map} +0 -0
  228. /package/dist/{chunk-46S3KPLU.mjs.map → chunk-ILFFC6BG.mjs.map} +0 -0
  229. /package/dist/{chunk-HZVVRIJQ.mjs.map → chunk-IUS2RHCX.mjs.map} +0 -0
  230. /package/dist/{chunk-ZO3QQ5CQ.mjs.map → chunk-MQDR6MEE.mjs.map} +0 -0
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkF7RNBGHSjs = require('../../chunk-F7RNBGHS.js');
6
+ var _chunkKJMMBUOAjs = require('../../chunk-KJMMBUOA.js');
7
7
 
8
8
 
9
9
 
@@ -33,8 +33,8 @@ var _chunkF7RNBGHSjs = require('../../chunk-F7RNBGHS.js');
33
33
 
34
34
 
35
35
 
36
- var _chunkORU7KLCYjs = require('../../chunk-ORU7KLCY.js');
37
- require('../../chunk-WQ77CUUZ.js');
36
+ var _chunkVDVIUDY5js = require('../../chunk-VDVIUDY5.js');
37
+ require('../../chunk-GPXYQMOZ.js');
38
38
  require('../../chunk-G4JR3SFV.js');
39
39
 
40
40
 
@@ -48,7 +48,7 @@ require('../../chunk-G4JR3SFV.js');
48
48
 
49
49
 
50
50
 
51
- var _chunk4BZJ4LABjs = require('../../chunk-4BZJ4LAB.js');
51
+ var _chunk4ORLPEK7js = require('../../chunk-4ORLPEK7.js');
52
52
  require('../../chunk-LXKSUWAV.js');
53
53
  require('../../chunk-JTPRJNT2.js');
54
54
  require('../../chunk-GHE4VT2R.js');
@@ -63,7 +63,7 @@ var _react = require('react');
63
63
  var _uuid = require('uuid');
64
64
 
65
65
  // src/features/analytics/data/AnalyticsService.ts
66
- var AnalyticsService = class extends _chunk4BZJ4LABjs.AbstractService {
66
+ var AnalyticsService = class extends _chunk4ORLPEK7js.AbstractService {
67
67
  static {
68
68
  _chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsService");
69
69
  }
@@ -75,9 +75,9 @@ var AnalyticsService = class extends _chunk4BZJ4LABjs.AbstractService {
75
75
  static async track(input) {
76
76
  try {
77
77
  await this.callApi({
78
- type: _chunk4BZJ4LABjs.Modules.AnalyticsEvent,
78
+ type: _chunk4ORLPEK7js.Modules.AnalyticsEvent,
79
79
  method: "POST" /* POST */,
80
- endpoint: new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsEvent }).generate(),
80
+ endpoint: new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsEvent }).generate(),
81
81
  input,
82
82
  suppressGlobalError: true
83
83
  });
@@ -224,7 +224,7 @@ function AnalyticsAdminFilterBar({ section, granularity, onChange }) {
224
224
  };
225
225
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
226
226
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-md:w-full max-md:[&_#date]:w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
227
- _chunkORU7KLCYjs.DateRangeSelector,
227
+ _chunkVDVIUDY5js.DateRangeSelector,
228
228
  {
229
229
  onDateChange: (range) => {
230
230
  if (!_optionalChain([range, 'optionalAccess', _ => _.from]) || !_optionalChain([range, 'optionalAccess', _2 => _2.to])) return;
@@ -268,13 +268,13 @@ function Segmented({
268
268
  children: options.map((option) => {
269
269
  const selected = option.value === value;
270
270
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
271
- _chunkORU7KLCYjs.Button,
271
+ _chunkVDVIUDY5js.Button,
272
272
  {
273
273
  type: "button",
274
274
  size: "sm",
275
275
  variant: selected ? "default" : "ghost",
276
276
  "aria-pressed": selected,
277
- className: _chunk4BZJ4LABjs.cn.call(void 0, !selected && "text-muted-foreground"),
277
+ className: _chunk4ORLPEK7js.cn.call(void 0, !selected && "text-muted-foreground"),
278
278
  onClick: () => onSelect(option.value),
279
279
  children: option.label
280
280
  },
@@ -294,45 +294,45 @@ function withFilters(endpoint, filters) {
294
294
  return endpoint;
295
295
  }
296
296
  _chunk7QVYU63Ejs.__name.call(void 0, withFilters, "withFilters");
297
- var AnalyticsAdminService = class extends _chunk4BZJ4LABjs.AbstractService {
297
+ var AnalyticsAdminService = class extends _chunk4ORLPEK7js.AbstractService {
298
298
  static {
299
299
  _chunk7QVYU63Ejs.__name.call(void 0, this, "AnalyticsAdminService");
300
300
  }
301
301
  /** Headline tiles: one row per window (current, previous). */
302
302
  static async getSummary(filters) {
303
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsSummary }), filters);
303
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsSummary }), filters);
304
304
  return this.callApi({
305
- type: _chunk4BZJ4LABjs.Modules.AnalyticsSummary,
305
+ type: _chunk4ORLPEK7js.Modules.AnalyticsSummary,
306
306
  method: "GET" /* GET */,
307
307
  endpoint: endpoint.generate()
308
308
  });
309
309
  }
310
310
  static async getTimeline(params) {
311
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsTimeline }), params);
311
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsTimeline }), params);
312
312
  endpoint.addAdditionalParam("granularity", params.granularity);
313
313
  return this.callApi({
314
- type: _chunk4BZJ4LABjs.Modules.AnalyticsTimeline,
314
+ type: _chunk4ORLPEK7js.Modules.AnalyticsTimeline,
315
315
  method: "GET" /* GET */,
316
316
  endpoint: endpoint.generate()
317
317
  });
318
318
  }
319
319
  static async getBreakdown(params) {
320
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsBreakdown }), params);
320
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsBreakdown }), params);
321
321
  endpoint.addAdditionalParam("dimension", params.dimension);
322
322
  if (params.limit !== void 0) endpoint.addAdditionalParam("limit", String(params.limit));
323
323
  return this.callApi({
324
- type: _chunk4BZJ4LABjs.Modules.AnalyticsBreakdown,
324
+ type: _chunk4ORLPEK7js.Modules.AnalyticsBreakdown,
325
325
  method: "GET" /* GET */,
326
326
  endpoint: endpoint.generate()
327
327
  });
328
328
  }
329
329
  /** Newest sessions first, cursor-paginated through `next`. */
330
330
  static async getSessions(params) {
331
- const endpoint = withFilters(new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsSession }), params);
331
+ const endpoint = withFilters(new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsSession }), params);
332
332
  if (params.visitorId) endpoint.addAdditionalParam("visitorId", params.visitorId);
333
333
  if (params.userId) endpoint.addAdditionalParam("userId", params.userId);
334
334
  return this.callApi({
335
- type: _chunk4BZJ4LABjs.Modules.AnalyticsSession,
335
+ type: _chunk4ORLPEK7js.Modules.AnalyticsSession,
336
336
  method: "GET" /* GET */,
337
337
  endpoint: endpoint.generate(),
338
338
  next: params.next
@@ -340,20 +340,20 @@ var AnalyticsAdminService = class extends _chunk4BZJ4LABjs.AbstractService {
340
340
  }
341
341
  static async getSession(params) {
342
342
  return this.callApi({
343
- type: _chunk4BZJ4LABjs.Modules.AnalyticsSession,
343
+ type: _chunk4ORLPEK7js.Modules.AnalyticsSession,
344
344
  method: "GET" /* GET */,
345
- endpoint: new (0, _chunk4BZJ4LABjs.EndpointCreator)({ endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsSession, id: params.id }).generate()
345
+ endpoint: new (0, _chunk4ORLPEK7js.EndpointCreator)({ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsSession, id: params.id }).generate()
346
346
  });
347
347
  }
348
348
  /** The journey: every page view of one session, oldest first. */
349
349
  static async getSessionPageViews(params) {
350
350
  return this.callApi({
351
- type: _chunk4BZJ4LABjs.Modules.AnalyticsPageView,
351
+ type: _chunk4ORLPEK7js.Modules.AnalyticsPageView,
352
352
  method: "GET" /* GET */,
353
- endpoint: new (0, _chunk4BZJ4LABjs.EndpointCreator)({
354
- endpoint: _chunk4BZJ4LABjs.Modules.AnalyticsSession,
353
+ endpoint: new (0, _chunk4ORLPEK7js.EndpointCreator)({
354
+ endpoint: _chunk4ORLPEK7js.Modules.AnalyticsSession,
355
355
  id: params.sessionId,
356
- childEndpoint: _chunk4BZJ4LABjs.Modules.AnalyticsPageView
356
+ childEndpoint: _chunk4ORLPEK7js.Modules.AnalyticsPageView
357
357
  }).generate()
358
358
  });
359
359
  }
@@ -388,7 +388,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
388
388
  sessionPageUrl = ANALYTICS_SESSION_PAGE_URL
389
389
  }) => {
390
390
  const t = _nextintl.useTranslations.call(void 0, );
391
- const generateUrl = _chunkORU7KLCYjs.usePageUrlGenerator.call(void 0, );
391
+ const generateUrl = _chunkVDVIUDY5js.usePageUrlGenerator.call(void 0, );
392
392
  const [filters, setFilterState] = _react.useState.call(void 0, () => {
393
393
  const range = defaultRange();
394
394
  return {
@@ -452,7 +452,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
452
452
  const sessionsNext = {};
453
453
  try {
454
454
  const nextSessions = await AnalyticsAdminService.next({
455
- type: _chunk4BZJ4LABjs.Modules.AnalyticsSession,
455
+ type: _chunk4ORLPEK7js.Modules.AnalyticsSession,
456
456
  endpoint: sessionsNextPage,
457
457
  next: sessionsNext
458
458
  });
@@ -512,7 +512,7 @@ var AnalyticsAdminProvider = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0
512
512
  error
513
513
  ]
514
514
  );
515
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
515
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SharedProvider, { value: { breadcrumbs: breadcrumb(), title: title() }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminContext.Provider, { value: contextValue, children }) });
516
516
  }, "AnalyticsAdminProvider");
517
517
  var useAnalyticsAdmin = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
518
518
  const ctx = _react.useContext.call(void 0, AnalyticsAdminContext);
@@ -532,7 +532,7 @@ var _lucidereact = require('lucide-react');
532
532
  var ZERO = { visitors: 0, sessions: 0, pageViews: 0, pagesPerSession: 0, consentShare: 0 };
533
533
  function AnalyticsAdminTiles({ summary }) {
534
534
  const t = _nextintl.useTranslations.call(void 0, );
535
- const { decimal } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
535
+ const { decimal } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
536
536
  const rowFor = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (window2) => _nullishCoalesce(summary.find((r) => r.section === "total" && r.window === window2), () => ( ZERO)), "rowFor");
537
537
  const current = rowFor("current");
538
538
  const previous = rowFor("previous");
@@ -545,7 +545,7 @@ function AnalyticsAdminTiles({ summary }) {
545
545
  testId: "analytics-tile-visitors",
546
546
  label: t("analytics.admin.tiles.visitors"),
547
547
  value: decimal(current.visitors, 0),
548
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, current.visitors, previous.visitors),
548
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, current.visitors, previous.visitors),
549
549
  previousLabel,
550
550
  decimal
551
551
  }
@@ -556,7 +556,7 @@ function AnalyticsAdminTiles({ summary }) {
556
556
  testId: "analytics-tile-sessions",
557
557
  label: t("analytics.admin.tiles.sessions"),
558
558
  value: decimal(current.sessions, 0),
559
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, current.sessions, previous.sessions),
559
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, current.sessions, previous.sessions),
560
560
  previousLabel,
561
561
  decimal
562
562
  }
@@ -567,7 +567,7 @@ function AnalyticsAdminTiles({ summary }) {
567
567
  testId: "analytics-tile-page-views",
568
568
  label: t("analytics.admin.tiles.page_views"),
569
569
  value: decimal(current.pageViews, 0),
570
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
570
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, current.pageViews, previous.pageViews),
571
571
  previousLabel,
572
572
  decimal
573
573
  }
@@ -580,7 +580,7 @@ function AnalyticsAdminTiles({ summary }) {
580
580
  testId: "analytics-tile-pages-per-session",
581
581
  label: t("analytics.admin.tiles.pages_per_session"),
582
582
  value: decimal(current.pagesPerSession, 1),
583
- delta: _chunkF7RNBGHSjs.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
583
+ delta: _chunkKJMMBUOAjs.percentageDelta.call(void 0, current.pagesPerSession, previous.pagesPerSession),
584
584
  decimal
585
585
  }
586
586
  ),
@@ -605,8 +605,8 @@ function LeadTile({
605
605
  previousLabel,
606
606
  decimal
607
607
  }) {
608
- 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: [
609
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.MicroLabel, { children: label }),
608
+ 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: [
609
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.MicroLabel, { children: label }),
610
610
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-primary text-xl font-semibold tabular-nums", children: value }),
611
611
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1", children: [
612
612
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal }),
@@ -622,8 +622,8 @@ function SupportingTile({
622
622
  delta,
623
623
  decimal
624
624
  }) {
625
- 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: [
626
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.MicroLabel, { children: label }),
625
+ 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: [
626
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.MicroLabel, { children: label }),
627
627
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
628
628
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm font-medium tabular-nums", children: value }),
629
629
  delta !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Delta, { testId: `${testId}-delta`, delta, decimal })
@@ -646,7 +646,7 @@ function Delta({
646
646
  "span",
647
647
  {
648
648
  "data-testid": testId,
649
- className: _chunk4BZJ4LABjs.cn.call(void 0,
649
+ className: _chunk4ORLPEK7js.cn.call(void 0,
650
650
  "inline-flex items-center gap-0.5 text-xs tabular-nums",
651
651
  increased ? "text-success" : "text-destructive"
652
652
  ),
@@ -674,15 +674,15 @@ function AnalyticsBreakdownTable({ breakdowns }) {
674
674
  route: t("analytics.admin.dimensions.route"),
675
675
  landing: t("analytics.admin.dimensions.landing")
676
676
  };
677
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
678
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TabsList, { className: "max-md:w-full max-md:justify-start max-md:overflow-x-auto", children: ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
679
- ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
677
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Tabs, { defaultValue: ANALYTICS_DIMENSIONS[0], children: [
678
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TabsList, { className: "max-md:w-full max-md:justify-start max-md:overflow-x-auto", children: ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TabsTrigger, { value: dimension, children: labels[dimension] }, dimension)) }),
679
+ ANALYTICS_DIMENSIONS.map((dimension) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TabsContent, { value: dimension, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BreakdownRows, { rows: _nullishCoalesce(breakdowns[dimension], () => ( [])) }) }, dimension))
680
680
  ] });
681
681
  }
682
682
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsBreakdownTable, "AnalyticsBreakdownTable");
683
683
  function BreakdownRows({ rows }) {
684
684
  const t = _nextintl.useTranslations.call(void 0, );
685
- const { decimal } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
685
+ const { decimal } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
686
686
  const sortedRows = _react.useMemo.call(void 0, () => [...rows].sort((a, b) => b.visitors - a.visitors), [rows]);
687
687
  if (sortedRows.length === 0) {
688
688
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
@@ -691,18 +691,18 @@ function BreakdownRows({ rows }) {
691
691
  // The package's <Table> wraps itself in an `overflow-x-clip` container, which
692
692
  // would swallow the overflow before this scroller ever saw it — hence the
693
693
  // child override. Wide tables must scroll, never widen the page.
694
- /* @__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: [
695
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { children: [
696
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
697
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
698
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
699
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
694
+ /* @__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: [
695
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { children: [
696
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.key") }),
697
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.visitors") }),
698
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.sessions") }),
699
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.page_views") })
700
700
  ] }) }),
701
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
702
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
703
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
704
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
705
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
701
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableBody, { children: sortedRows.map((row) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { "data-testid": `analytics-breakdown-row-${row.id}`, children: [
702
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: row.key === OTHER_KEY ? t("analytics.admin.other") : row.key }),
703
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.visitors, 0) }),
704
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.sessions, 0) }),
705
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) })
706
706
  ] }, row.id)) })
707
707
  ] }) })
708
708
  );
@@ -717,48 +717,48 @@ var VISITOR_SUFFIX_LENGTH = 6;
717
717
  function AnalyticsSessionsTable({ rows, sessionPageUrl, onLoadMore, hasMore }) {
718
718
  const t = _nextintl.useTranslations.call(void 0, );
719
719
  const locale = _nextintl.useLocale.call(void 0, );
720
- const generateUrl = _chunkORU7KLCYjs.usePageUrlGenerator.call(void 0, );
721
- const { decimal } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
720
+ const generateUrl = _chunkVDVIUDY5js.usePageUrlGenerator.call(void 0, );
721
+ const { decimal } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
722
722
  const dateTime = _react.useMemo.call(void 0, () => new Intl.DateTimeFormat(locale, { dateStyle: "short", timeStyle: "short" }), [locale]);
723
723
  if (rows.length === 0) {
724
724
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") });
725
725
  }
726
726
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
727
- /* @__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: [
728
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { children: [
729
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
730
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
731
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
732
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
733
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
734
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
727
+ /* @__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: [
728
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { children: [
729
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.started") }),
730
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.visitor") }),
731
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.source") }),
732
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.landing") }),
733
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.pages") }),
734
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.device") })
735
735
  ] }) }),
736
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableBody, { children: rows.map((row) => {
736
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableBody, { children: rows.map((row) => {
737
737
  const source = [_nullishCoalesce(row.utmSource, () => ( row.referrerHost)), row.utmMedium].filter(Boolean).join(" / ");
738
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
739
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
740
- _chunkORU7KLCYjs.Link,
738
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { "data-testid": `analytics-session-row-${row.id}`, children: [
739
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs tabular-nums", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
740
+ _chunkVDVIUDY5js.Link,
741
741
  {
742
742
  href: generateUrl({ page: sessionPageUrl, id: row.id }),
743
743
  "data-testid": `analytics-session-link-${row.id}`,
744
744
  children: dateTime.format(row.startedAt)
745
745
  }
746
746
  ) }),
747
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
747
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: row.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
748
748
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.user.name }),
749
749
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: row.user.email })
750
750
  ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-2", children: [
751
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
751
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
752
752
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs tabular-nums", children: row.visitorId.slice(-VISITOR_SUFFIX_LENGTH) })
753
753
  ] }) }),
754
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: source }),
755
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: row.landingRoute }),
756
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
757
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
754
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: source }),
755
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: row.landingRoute }),
756
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: decimal(row.pageViews, 0) }),
757
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-muted-foreground text-xs", children: row.deviceType })
758
758
  ] }, row.id);
759
759
  }) })
760
760
  ] }) }),
761
- hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
761
+ hasMore && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Button, { type: "button", variant: "outline", size: "sm", onClick: onLoadMore, children: t("analytics.admin.load_more") }) })
762
762
  ] });
763
763
  }
764
764
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsSessionsTable, "AnalyticsSessionsTable");
@@ -790,7 +790,7 @@ var inferGranularity = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (buc
790
790
  }, "inferGranularity");
791
791
  function AnalyticsTimelineChart({ rows, className }) {
792
792
  const t = _nextintl.useTranslations.call(void 0, );
793
- const { compact, bucketDate, decimal } = _chunkF7RNBGHSjs.useUsageFormatters.call(void 0, );
793
+ const { compact, bucketDate, decimal } = _chunkKJMMBUOAjs.useUsageFormatters.call(void 0, );
794
794
  const { resolvedTheme } = _nextthemes.useTheme.call(void 0, );
795
795
  const mode = resolvedTheme === "dark" ? "dark" : "light";
796
796
  const chartData = _react.useMemo.call(void 0, () => {
@@ -825,7 +825,7 @@ function AnalyticsTimelineChart({ rows, className }) {
825
825
  // rtl-ok: deliberate LTR island (chart)
826
826
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, dir: "ltr", children: [
827
827
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", "data-testid": "analytics-timeline-data", children: JSON.stringify(chartData) }),
828
- /* @__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: [
828
+ /* @__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: [
829
829
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _recharts.CartesianGrid, { vertical: false }),
830
830
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
831
831
  _recharts.XAxis,
@@ -849,10 +849,10 @@ function AnalyticsTimelineChart({ rows, className }) {
849
849
  }
850
850
  ),
851
851
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
852
- _chunkORU7KLCYjs.ChartTooltip,
852
+ _chunkVDVIUDY5js.ChartTooltip,
853
853
  {
854
854
  content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
855
- _chunkORU7KLCYjs.ChartTooltipContent,
855
+ _chunkVDVIUDY5js.ChartTooltipContent,
856
856
  {
857
857
  labelFormatter: (value) => bucketDate(String(value), granularity),
858
858
  valueFormatter: (value) => decimal(Number(value), 0)
@@ -860,13 +860,13 @@ function AnalyticsTimelineChart({ rows, className }) {
860
860
  )
861
861
  }
862
862
  ),
863
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.ChartLegendContent, {}) }),
863
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.ChartLegend, { content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.ChartLegendContent, {}) }),
864
864
  SERIES.map((series, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
865
865
  _recharts.Bar,
866
866
  {
867
867
  dataKey: series,
868
868
  maxBarSize: 28,
869
- fill: _chunkF7RNBGHSjs.seriesColor.call(void 0, index, mode),
869
+ fill: _chunkKJMMBUOAjs.seriesColor.call(void 0, index, mode),
870
870
  stroke: "var(--background)",
871
871
  strokeWidth: 2,
872
872
  radius: [4, 4, 0, 0]
@@ -895,25 +895,25 @@ function AnalyticsAdminContainer() {
895
895
  error
896
896
  } = useAnalyticsAdmin();
897
897
  if (error) {
898
- 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 }) }) }) }) });
898
+ 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 }) }) }) }) });
899
899
  }
900
- if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
901
- 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: [
900
+ if (isLoading) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true });
901
+ 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: [
902
902
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
903
903
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsAdminTiles, { summary }),
904
904
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-xs", children: t("analytics.admin.tiles.summarised_note") })
905
905
  ] }),
906
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
907
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
908
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
906
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
907
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("analytics.admin.panels.over_time") }) }),
908
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsTimelineChart, { rows: timeline }) })
909
909
  ] }),
910
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
911
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
912
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
910
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
911
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("analytics.admin.panels.breakdown") }) }),
912
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AnalyticsBreakdownTable, { breakdowns }) })
913
913
  ] }),
914
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
915
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
916
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
914
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
915
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("analytics.admin.panels.sessions") }) }),
916
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
917
917
  AnalyticsSessionsTable,
918
918
  {
919
919
  rows: sessions,
@@ -936,7 +936,7 @@ var OTHER_SESSIONS_WINDOW_DAYS = 395;
936
936
  function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_URL2 }) {
937
937
  const t = _nextintl.useTranslations.call(void 0, );
938
938
  const locale = _nextintl.useLocale.call(void 0, );
939
- const generateUrl = _chunkORU7KLCYjs.usePageUrlGenerator.call(void 0, );
939
+ const generateUrl = _chunkVDVIUDY5js.usePageUrlGenerator.call(void 0, );
940
940
  const [session, setSession] = _react.useState.call(void 0, void 0);
941
941
  const [pageViews, setPageViews] = _react.useState.call(void 0, []);
942
942
  const [otherSessions, setOtherSessions] = _react.useState.call(void 0, []);
@@ -992,26 +992,26 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
992
992
  const title = { type: t("analytics.admin.panels.journey") };
993
993
  const renderBody = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
994
994
  if (error) {
995
- 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 }) }) }) }) });
995
+ 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 }) }) }) }) });
996
996
  }
997
- if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.RoundPageContainer, { fullWidth: true, forceHeader: true });
997
+ if (isLoading || !session) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.RoundPageContainer, { fullWidth: true, forceHeader: true });
998
998
  const source = [_nullishCoalesce(session.utmSource, () => ( session.referrerHost)), session.utmMedium, session.utmCampaign].filter(Boolean).join(" / ");
999
- 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: [
1000
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.CardContent, { className: "flex flex-col gap-3", children: [
999
+ 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: [
1000
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Card, { "data-testid": "analytics-journey-attribution", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.CardContent, { className: "flex flex-col gap-3", children: [
1001
1001
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-center gap-2", children: [
1002
1002
  session.user ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex flex-col", children: [
1003
1003
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm", children: session.user.name }),
1004
1004
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-muted-foreground text-xs", children: session.user.email })
1005
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
1006
- session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
1005
+ ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Badge, { variant: "softGray", children: t("analytics.admin.anonymous") }),
1006
+ session.consented ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Badge, { variant: "softGreen", children: t("analytics.admin.consented") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.Badge, { variant: "softGray", children: t("analytics.admin.not_consented") })
1007
1007
  ] }),
1008
1008
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid gap-3 sm:grid-cols-3", children: [
1009
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
1010
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
1011
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
1012
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
1009
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.DetailField, { label: t("analytics.admin.columns.started"), value: dateTime.format(session.startedAt) }),
1010
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.DetailField, { label: t("analytics.admin.columns.source"), value: source }),
1011
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.DetailField, { label: t("analytics.admin.columns.landing"), value: session.landingRoute }),
1012
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.DetailField, { label: t("analytics.admin.columns.device"), value: session.deviceType }),
1013
1013
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1014
- _chunkORU7KLCYjs.DetailField,
1014
+ _chunkVDVIUDY5js.DetailField,
1015
1015
  {
1016
1016
  label: t("analytics.admin.columns.visitor"),
1017
1017
  value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "tabular-nums", children: session.visitorId })
@@ -1019,31 +1019,31 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
1019
1019
  )
1020
1020
  ] })
1021
1021
  ] }) }),
1022
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
1023
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
1024
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
1022
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
1023
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("analytics.admin.columns.pages") }) }),
1024
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: pageViews.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: t("analytics.admin.no_data") }) : (
1025
1025
  // The package's <Table> wraps itself in an `overflow-x-clip`
1026
1026
  // container — hence the child override, so wide rows scroll.
1027
- /* @__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: [
1028
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { children: [
1029
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
1030
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
1031
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
1027
+ /* @__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: [
1028
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHeader, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { children: [
1029
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.time") }),
1030
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-end text-xs font-medium", children: t("analytics.admin.columns.gap") }),
1031
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableHead, { className: "text-xs font-medium", children: t("analytics.admin.columns.path") })
1032
1032
  ] }) }),
1033
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableBody, { children: pageViews.map((pageView, index) => {
1033
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableBody, { children: pageViews.map((pageView, index) => {
1034
1034
  const previous = index > 0 ? pageViews[index - 1] : void 0;
1035
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
1036
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
1037
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-end text-xs tabular-nums", children: previous ? formatGap(pageView.createdAt.getTime() - previous.createdAt.getTime()) : "\u2014" }),
1038
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.TableCell, { className: "text-xs", children: pageView.path })
1035
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.TableRow, { "data-testid": `analytics-pageview-row-${pageView.id}`, children: [
1036
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs tabular-nums", children: dateTime.format(pageView.createdAt) }),
1037
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-end text-xs tabular-nums", children: previous ? formatGap(pageView.createdAt.getTime() - previous.createdAt.getTime()) : "\u2014" }),
1038
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.TableCell, { className: "text-xs", children: pageView.path })
1039
1039
  ] }, pageView.id);
1040
1040
  }) })
1041
1041
  ] }) })
1042
1042
  ) })
1043
1043
  ] }),
1044
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkORU7KLCYjs.Card, { children: [
1045
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
1046
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1044
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkVDVIUDY5js.Card, { children: [
1045
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardHeader, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardTitle, { children: t("analytics.admin.panels.other_sessions") }) }),
1046
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.CardContent, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1047
1047
  AnalyticsSessionsTable,
1048
1048
  {
1049
1049
  rows: otherSessions,
@@ -1055,7 +1055,7 @@ function AnalyticsJourneyContainer({ sessionId, pageUrl = ANALYTICS_ADMIN_PAGE_U
1055
1055
  ] })
1056
1056
  ] }) });
1057
1057
  }, "renderBody");
1058
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkORU7KLCYjs.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
1058
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVDVIUDY5js.SharedProvider, { value: { breadcrumbs: breadcrumb, title }, children: renderBody() });
1059
1059
  }
1060
1060
  _chunk7QVYU63Ejs.__name.call(void 0, AnalyticsJourneyContainer, "AnalyticsJourneyContainer");
1061
1061
  function unit(locale, name, value) {
@@ -1163,5 +1163,5 @@ var ANALYTICS_ADMIN_I18N_KEYS = [
1163
1163
 
1164
1164
 
1165
1165
 
1166
- exports.ANALYTICS_ADMIN_I18N_KEYS = ANALYTICS_ADMIN_I18N_KEYS; exports.ANALYTICS_DIMENSIONS = ANALYTICS_DIMENSIONS; exports.ANALYTICS_GRANULARITIES = ANALYTICS_GRANULARITIES; exports.ANALYTICS_SECTIONS = ANALYTICS_SECTIONS; exports.AnalyticsAdminContainer = AnalyticsAdminContainer; exports.AnalyticsAdminFilterBar = AnalyticsAdminFilterBar; exports.AnalyticsAdminPageContainer = AnalyticsAdminPageContainer; exports.AnalyticsAdminProvider = AnalyticsAdminProvider; exports.AnalyticsAdminService = AnalyticsAdminService; exports.AnalyticsAdminTiles = AnalyticsAdminTiles; exports.AnalyticsBreakdown = _chunk4BZJ4LABjs.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunk4BZJ4LABjs.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunk4BZJ4LABjs.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunk4BZJ4LABjs.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunk4BZJ4LABjs.AnalyticsSummary; exports.AnalyticsTimeline = _chunk4BZJ4LABjs.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunk4BZJ4LABjs.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
1166
+ exports.ANALYTICS_ADMIN_I18N_KEYS = ANALYTICS_ADMIN_I18N_KEYS; exports.ANALYTICS_DIMENSIONS = ANALYTICS_DIMENSIONS; exports.ANALYTICS_GRANULARITIES = ANALYTICS_GRANULARITIES; exports.ANALYTICS_SECTIONS = ANALYTICS_SECTIONS; exports.AnalyticsAdminContainer = AnalyticsAdminContainer; exports.AnalyticsAdminFilterBar = AnalyticsAdminFilterBar; exports.AnalyticsAdminPageContainer = AnalyticsAdminPageContainer; exports.AnalyticsAdminProvider = AnalyticsAdminProvider; exports.AnalyticsAdminService = AnalyticsAdminService; exports.AnalyticsAdminTiles = AnalyticsAdminTiles; exports.AnalyticsBreakdown = _chunk4ORLPEK7js.AnalyticsBreakdown; exports.AnalyticsBreakdownTable = AnalyticsBreakdownTable; exports.AnalyticsEvent = _chunk4ORLPEK7js.AnalyticsEvent; exports.AnalyticsJourneyContainer = AnalyticsJourneyContainer; exports.AnalyticsJourneyPageContainer = AnalyticsJourneyPageContainer; exports.AnalyticsPageView = _chunk4ORLPEK7js.AnalyticsPageView; exports.AnalyticsService = AnalyticsService; exports.AnalyticsSession = _chunk4ORLPEK7js.AnalyticsSession; exports.AnalyticsSessionsTable = AnalyticsSessionsTable; exports.AnalyticsSummary = _chunk4ORLPEK7js.AnalyticsSummary; exports.AnalyticsTimeline = _chunk4ORLPEK7js.AnalyticsTimeline; exports.AnalyticsTimelineChart = AnalyticsTimelineChart; exports.AnalyticsTracker = AnalyticsTracker; exports.analyticsModules = _chunk4ORLPEK7js.analyticsModules; exports.useAnalyticsAdmin = useAnalyticsAdmin;
1167
1167
  //# sourceMappingURL=index.js.map