@rovela-ai/sdk 0.19.0 → 0.19.2

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 (59) hide show
  1. package/dist/admin/components/AdminLayout.d.ts +9 -2
  2. package/dist/admin/components/AdminLayout.d.ts.map +1 -1
  3. package/dist/admin/components/AdminLayout.js +40 -2
  4. package/dist/admin/components/AdminLayout.js.map +1 -1
  5. package/dist/admin/components/AdminModal.d.ts +2 -1
  6. package/dist/admin/components/AdminModal.d.ts.map +1 -1
  7. package/dist/admin/components/AdminModal.js +3 -19
  8. package/dist/admin/components/AdminModal.js.map +1 -1
  9. package/dist/admin/components/AdminNav.d.ts +5 -1
  10. package/dist/admin/components/AdminNav.d.ts.map +1 -1
  11. package/dist/admin/components/AdminNav.js +10 -5
  12. package/dist/admin/components/AdminNav.js.map +1 -1
  13. package/dist/admin/components/AdminTopBar.d.ts +3 -1
  14. package/dist/admin/components/AdminTopBar.d.ts.map +1 -1
  15. package/dist/admin/components/AdminTopBar.js +3 -3
  16. package/dist/admin/components/AdminTopBar.js.map +1 -1
  17. package/dist/admin/components/CookieBannerConfigurator.js +3 -3
  18. package/dist/admin/components/CookieBannerConfigurator.js.map +1 -1
  19. package/dist/admin/components/CustomerDetails.js +1 -1
  20. package/dist/admin/components/CustomerDetails.js.map +1 -1
  21. package/dist/admin/components/CustomerTable.d.ts.map +1 -1
  22. package/dist/admin/components/CustomerTable.js +11 -11
  23. package/dist/admin/components/CustomerTable.js.map +1 -1
  24. package/dist/admin/components/OrderTable.js +3 -3
  25. package/dist/admin/components/OrderTable.js.map +1 -1
  26. package/dist/admin/components/ProductTable.js +4 -4
  27. package/dist/admin/components/ProductTable.js.map +1 -1
  28. package/dist/admin/components/RecentOrders.d.ts.map +1 -1
  29. package/dist/admin/components/RecentOrders.js +6 -3
  30. package/dist/admin/components/RecentOrders.js.map +1 -1
  31. package/dist/admin/components/ShippingSettings.js +2 -2
  32. package/dist/admin/components/ShippingSettings.js.map +1 -1
  33. package/dist/admin/components/UsersTable.d.ts.map +1 -1
  34. package/dist/admin/components/UsersTable.js +18 -18
  35. package/dist/admin/components/UsersTable.js.map +1 -1
  36. package/dist/admin/components/emails/EmailPreviewPane.js +1 -1
  37. package/dist/admin/components/emails/EmailPreviewPane.js.map +1 -1
  38. package/dist/admin/components/scroll-lock.d.ts +11 -0
  39. package/dist/admin/components/scroll-lock.d.ts.map +1 -0
  40. package/dist/admin/components/scroll-lock.js +24 -0
  41. package/dist/admin/components/scroll-lock.js.map +1 -0
  42. package/dist/admin/styles/admin-theme.css +346 -0
  43. package/dist/analytics/views/DashboardsView.js +6 -2
  44. package/dist/analytics/views/DashboardsView.js.map +1 -1
  45. package/dist/analytics/views/EventsView.d.ts.map +1 -1
  46. package/dist/analytics/views/EventsView.js +6 -6
  47. package/dist/analytics/views/EventsView.js.map +1 -1
  48. package/dist/analytics/views/VisitorsView.d.ts.map +1 -1
  49. package/dist/analytics/views/VisitorsView.js +3 -3
  50. package/dist/analytics/views/VisitorsView.js.map +1 -1
  51. package/dist/core/db/queries.d.ts +35 -31
  52. package/dist/core/db/queries.d.ts.map +1 -1
  53. package/dist/core/db/queries.js +15 -4
  54. package/dist/core/db/queries.js.map +1 -1
  55. package/dist/core/db/schema.d.ts +1 -1
  56. package/dist/core/db/schema.d.ts.map +1 -1
  57. package/dist/core/db/schema.js +3 -1
  58. package/dist/core/db/schema.js.map +1 -1
  59. package/package.json +1 -1
@@ -5234,3 +5234,349 @@ body[data-admin-savebar] .rovela-admin-theme .admin-toaster {
5234
5234
  .rovela-admin-theme .lucide {
5235
5235
  stroke-width: 1.5;
5236
5236
  }
5237
+
5238
+ /* ═══════════════════════════════════════════════════════════════════════════
5239
+ MOBILE (2026-07 responsiveness pass — the LEDGER at thumb size)
5240
+ Additive only. One shell pivot at 767px (matches the save bar's existing
5241
+ mobile rule and stays desktop inside the platform's preview iframe);
5242
+ sheets at 639px; column priority at 479px; touch sizing via pointer
5243
+ media queries, never width.
5244
+ ═══════════════════════════════════════════════════════════════════════════ */
5245
+
5246
+ /* ── Shell chrome defaults (desktop: burger + drawer head + scrim inert) ── */
5247
+ .rovela-admin-theme .admin-topbar-burger {
5248
+ display: none;
5249
+ }
5250
+
5251
+ .rovela-admin-theme .admin-nav-drawer-head {
5252
+ display: none;
5253
+ }
5254
+
5255
+ .rovela-admin-theme .admin-nav-backdrop {
5256
+ display: none;
5257
+ }
5258
+
5259
+ /* Row ⋯ menus can never exceed the viewport (safe at every width). */
5260
+ .rovela-admin-theme .admin-dropdown-content {
5261
+ max-width: calc(100vw - 2rem);
5262
+ }
5263
+
5264
+ /* ── The shell pivot: sidebar → overlay drawer ─────────────────────────── */
5265
+ @media (max-width: 767px) {
5266
+ /* Hamburger in the top bar */
5267
+ .rovela-admin-theme .admin-topbar-burger {
5268
+ display: flex;
5269
+ align-items: center;
5270
+ justify-content: center;
5271
+ width: 2.5rem;
5272
+ height: 2.5rem;
5273
+ margin-left: calc(-1 * var(--admin-space-2));
5274
+ border: none;
5275
+ background: none;
5276
+ border-radius: var(--admin-radius-md);
5277
+ color: hsl(var(--admin-foreground));
5278
+ cursor: pointer;
5279
+ flex-shrink: 0;
5280
+ }
5281
+
5282
+ .rovela-admin-theme .admin-topbar-burger:hover {
5283
+ background: hsl(var(--admin-background-subtle));
5284
+ }
5285
+
5286
+ /* Top bar tightens; View/Edit pills go icon-only (aria-labels carry the
5287
+ names); the Admin chip yields to the store name. */
5288
+ .rovela-admin-theme .admin-topbar {
5289
+ padding-left: var(--admin-space-3);
5290
+ padding-right: var(--admin-space-3);
5291
+ gap: var(--admin-space-2);
5292
+ }
5293
+
5294
+ .rovela-admin-theme .admin-topbar-btn-label {
5295
+ display: none;
5296
+ }
5297
+
5298
+ .rovela-admin-theme .admin-topbar-btn {
5299
+ width: 2.25rem;
5300
+ height: 2.25rem;
5301
+ padding: 0;
5302
+ justify-content: center;
5303
+ }
5304
+
5305
+ .rovela-admin-theme .admin-topbar-divider {
5306
+ display: none;
5307
+ }
5308
+
5309
+ /* The sidebar becomes a fixed overlay drawer: off-canvas by default,
5310
+ slid in by data-mobile-open. Pure CSS animation both directions. */
5311
+ .rovela-admin-theme .admin-sidebar {
5312
+ position: fixed;
5313
+ top: 0;
5314
+ bottom: 0;
5315
+ left: 0;
5316
+ width: 17rem;
5317
+ min-height: 0;
5318
+ z-index: 230; /* above content + topbar, below modals (250) */
5319
+ transform: translateX(-105%);
5320
+ transition: transform 200ms var(--admin-ease, cubic-bezier(0.2, 0, 0, 1));
5321
+ box-shadow: none;
5322
+ }
5323
+
5324
+ .rovela-admin-theme .admin-sidebar[data-mobile-open="true"] {
5325
+ transform: none;
5326
+ box-shadow: var(--admin-shadow-2xl);
5327
+ }
5328
+
5329
+ /* Scrim under the drawer — same visual family as the modal backdrop. */
5330
+ .rovela-admin-theme .admin-nav-backdrop {
5331
+ display: block;
5332
+ position: fixed;
5333
+ inset: 0;
5334
+ z-index: 220;
5335
+ background: rgb(0 0 0 / 0.5);
5336
+ backdrop-filter: blur(4px);
5337
+ opacity: 0;
5338
+ pointer-events: none;
5339
+ transition: opacity 200ms ease;
5340
+ }
5341
+
5342
+ .rovela-admin-theme .admin-nav-backdrop[data-open="true"] {
5343
+ opacity: 1;
5344
+ pointer-events: auto;
5345
+ }
5346
+
5347
+ /* Drawer head — the drawer overlays the top bar, so it carries its own
5348
+ identity + a 44px close. */
5349
+ .rovela-admin-theme .admin-nav-drawer-head {
5350
+ display: flex;
5351
+ align-items: center;
5352
+ gap: var(--admin-space-2-5);
5353
+ padding: var(--admin-space-3);
5354
+ border-bottom: var(--admin-border-width) solid hsl(var(--admin-border));
5355
+ flex-shrink: 0;
5356
+ }
5357
+
5358
+ .rovela-admin-theme .admin-nav-drawer-name {
5359
+ display: flex;
5360
+ align-items: center;
5361
+ gap: var(--admin-space-2);
5362
+ min-width: 0;
5363
+ }
5364
+
5365
+ .rovela-admin-theme .admin-nav-drawer-name b {
5366
+ font-size: var(--admin-text-sm);
5367
+ font-weight: var(--admin-font-bold);
5368
+ overflow: hidden;
5369
+ text-overflow: ellipsis;
5370
+ white-space: nowrap;
5371
+ }
5372
+
5373
+ .rovela-admin-theme .admin-nav-drawer-x {
5374
+ margin-left: auto;
5375
+ display: flex;
5376
+ align-items: center;
5377
+ justify-content: center;
5378
+ width: 2.75rem;
5379
+ height: 2.75rem;
5380
+ margin-right: calc(-1 * var(--admin-space-2));
5381
+ border: none;
5382
+ background: none;
5383
+ border-radius: var(--admin-radius-md);
5384
+ color: hsl(var(--admin-foreground-muted));
5385
+ cursor: pointer;
5386
+ }
5387
+
5388
+ .rovela-admin-theme .admin-nav-drawer-x:hover {
5389
+ background: hsl(var(--admin-background-hover, var(--admin-background-subtle)));
5390
+ color: hsl(var(--admin-foreground));
5391
+ }
5392
+
5393
+ /* Drawer nav rows read at thumb size */
5394
+ .rovela-admin-theme .admin-sidebar .admin-sidebar-item {
5395
+ min-height: 2.75rem;
5396
+ }
5397
+
5398
+ /* Content breathes at phone width */
5399
+ .rovela-admin-theme .admin-layout-content {
5400
+ padding: var(--admin-space-4);
5401
+ }
5402
+
5403
+ /* Filter rows: the search takes its own full line; hard min-widths relax */
5404
+ .rovela-admin-theme .admin-filter-search {
5405
+ min-width: 0;
5406
+ }
5407
+
5408
+ .rovela-admin-theme .admin-filter-bar .admin-input-with-icon {
5409
+ flex: 1 1 100%;
5410
+ }
5411
+
5412
+ /* Save bar: full width (rule predates this pass), safe-area padded, and
5413
+ the desktop-only hints step aside. */
5414
+ .rovela-admin-theme .admin-savebar {
5415
+ padding-bottom: env(safe-area-inset-bottom, 0px);
5416
+ height: calc(var(--admin-savebar-h) + env(safe-area-inset-bottom, 0px));
5417
+ }
5418
+
5419
+ .rovela-admin-theme .admin-savebar-meta,
5420
+ .rovela-admin-theme .admin-savebar-kbd {
5421
+ display: none;
5422
+ }
5423
+ }
5424
+
5425
+ /* ── Phones: column priority + full-width feedback ─────────────────────── */
5426
+ @media (max-width: 479px) {
5427
+ /* Low-priority table columns + bulk-select checkboxes rest until desktop
5428
+ (Polaris' own condensed-mode call — bulk work belongs to bigger screens). */
5429
+ .rovela-admin-theme .admin-col-optional,
5430
+ .rovela-admin-theme .admin-col-bulk {
5431
+ display: none;
5432
+ }
5433
+
5434
+ /* Chips become a one-line thumb-scrollable row */
5435
+ .rovela-admin-theme .admin-chip-row {
5436
+ flex-wrap: nowrap;
5437
+ overflow-x: auto;
5438
+ scrollbar-width: none;
5439
+ -webkit-overflow-scrolling: touch;
5440
+ padding-bottom: 2px;
5441
+ }
5442
+
5443
+ .rovela-admin-theme .admin-chip-row::-webkit-scrollbar {
5444
+ display: none;
5445
+ }
5446
+
5447
+ .rovela-admin-theme .admin-chip {
5448
+ flex-shrink: 0;
5449
+ }
5450
+
5451
+ /* Toasts span the width instead of overflowing it */
5452
+ .rovela-admin-theme .admin-toaster {
5453
+ left: var(--admin-space-3);
5454
+ right: var(--admin-space-3);
5455
+ bottom: max(var(--admin-space-4), env(safe-area-inset-bottom, 1rem));
5456
+ align-items: stretch;
5457
+ }
5458
+
5459
+ .rovela-admin-theme .admin-toast-v2 {
5460
+ max-width: none;
5461
+ }
5462
+
5463
+ /* The Admin chip yields the TOP BAR to the store name — scoped so the
5464
+ drawer head keeps its chip (it has room; the top bar doesn't). */
5465
+ .rovela-admin-theme .admin-topbar .admin-topbar-tag {
5466
+ display: none;
5467
+ }
5468
+ }
5469
+
5470
+ /* ── Bottom sheets: AdminModal below 640px ──────────────────────────────
5471
+ Pure CSS — the component is untouched. Cards dock to the bottom edge,
5472
+ keep only the top radius, gain a grab affordance and slide up. */
5473
+ @media (max-width: 639px) {
5474
+ .rovela-admin-theme .admin-modal-root {
5475
+ align-items: flex-end;
5476
+ padding: 0;
5477
+ }
5478
+
5479
+ .rovela-admin-theme .admin-modal {
5480
+ max-width: none;
5481
+ margin: 0;
5482
+ border-radius: var(--admin-radius-xl) var(--admin-radius-xl) 0 0;
5483
+ max-height: calc(100vh - 2rem);
5484
+ max-height: calc(100svh - 2rem);
5485
+ animation: admin-sheet-in 260ms var(--admin-ease, cubic-bezier(0.2, 0, 0, 1));
5486
+ }
5487
+
5488
+ /* Grab affordance (decorative — Escape / scrim / buttons dismiss) */
5489
+ .rovela-admin-theme .admin-modal::before {
5490
+ content: '';
5491
+ display: block;
5492
+ width: 2.25rem;
5493
+ height: 4px;
5494
+ border-radius: var(--admin-radius-full);
5495
+ background: hsl(var(--admin-border));
5496
+ margin: var(--admin-space-2) auto 0;
5497
+ }
5498
+
5499
+ .rovela-admin-theme .admin-modal-footer {
5500
+ padding-bottom: max(var(--admin-space-4), env(safe-area-inset-bottom, 1rem));
5501
+ }
5502
+ }
5503
+
5504
+ @keyframes admin-sheet-in {
5505
+ from {
5506
+ transform: translateY(100%);
5507
+ }
5508
+ to {
5509
+ transform: none;
5510
+ }
5511
+ }
5512
+
5513
+ /* ── Touch ergonomics — sized by input modality, not width ──────────────
5514
+ 44px controls on coarse pointers (WCAG 2.5.5 / Apple HIG); desktop
5515
+ pointer density is untouched. */
5516
+ @media (pointer: coarse) {
5517
+ .rovela-admin-theme .admin-btn {
5518
+ height: 2.75rem;
5519
+ }
5520
+
5521
+ .rovela-admin-theme .admin-btn-sm {
5522
+ height: 2.5rem;
5523
+ }
5524
+
5525
+ .rovela-admin-theme .admin-btn-icon.admin-btn-sm {
5526
+ width: 2.5rem;
5527
+ height: 2.5rem;
5528
+ }
5529
+
5530
+ .rovela-admin-theme .admin-input,
5531
+ .rovela-admin-theme .admin-filter-search {
5532
+ height: 2.75rem;
5533
+ }
5534
+
5535
+ .rovela-admin-theme textarea.admin-input {
5536
+ height: auto;
5537
+ }
5538
+
5539
+ .rovela-admin-theme .admin-select-trigger {
5540
+ min-height: 2.75rem;
5541
+ }
5542
+
5543
+ .rovela-admin-theme .admin-chip {
5544
+ height: 2.25rem;
5545
+ }
5546
+
5547
+ .rovela-admin-theme .admin-sidebar-item {
5548
+ min-height: 2.75rem;
5549
+ }
5550
+
5551
+ .rovela-admin-theme .admin-topbar-btn {
5552
+ height: 2.25rem;
5553
+ }
5554
+ }
5555
+
5556
+ /* Reduced motion: the drawer and sheets appear without travel */
5557
+ @media (prefers-reduced-motion: reduce) {
5558
+ .rovela-admin-theme .admin-sidebar,
5559
+ .rovela-admin-theme .admin-nav-backdrop {
5560
+ transition: none;
5561
+ }
5562
+
5563
+ .rovela-admin-theme .admin-modal {
5564
+ animation: none;
5565
+ }
5566
+ }
5567
+
5568
+ /* ═══════════════════════════════════════════════════════════════════════════
5569
+ CHART-BODY OVERFLOW GUARANTEE (2026-07 card-table incident)
5570
+ A <table> dropped bare into a chart/card body can never break the page
5571
+ again: the body is a scroll region. Same structural move as the
5572
+ table-wrapper rule — refinements (stacked rows, column priority) are
5573
+ per-card polish on top of this floor.
5574
+ ═══════════════════════════════════════════════════════════════════════════ */
5575
+
5576
+ .rovela-admin-theme .admin-chart {
5577
+ min-width: 0;
5578
+ }
5579
+
5580
+ .rovela-admin-theme .admin-chart-body {
5581
+ overflow-x: auto;
5582
+ }
@@ -78,7 +78,7 @@ export function DashboardsView({ period }) {
78
78
  return formatXAxis(value);
79
79
  return '';
80
80
  };
81
- return (_jsxs("div", { className: "space-y-6", children: [error && (_jsx("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), _jsx("section", { children: _jsxs("div", { className: "admin-stats-grid", children: [_jsx(StatCard, { label: "Page Views", value: data ? numberFmt(data.overview.current.pageviews) : '0', delta: data?.overview.deltas.pageviews ?? null, icon: Eye, isLoading: isLoading }), _jsx(StatCard, { label: "Unique Visitors", value: data ? numberFmt(data.overview.current.visitors) : '0', delta: data?.overview.deltas.visitors ?? null, icon: Users, isLoading: isLoading }), _jsx(StatCard, { label: "Sessions", value: data ? numberFmt(data.overview.current.sessions) : '0', delta: data?.overview.deltas.sessions ?? null, icon: Activity, isLoading: isLoading }), _jsx(StatCard, { label: "Conversion Rate", value: data ? pctFmt(data.overview.current.conversionRate) : '—', delta: data?.overview.deltas.conversionRate ?? null, icon: Target, isLoading: isLoading })] }) }), _jsxs("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: [_jsxs("div", { className: "admin-chart", children: [_jsx("div", { className: "admin-chart-header", children: _jsxs("div", { children: [_jsx("h3", { className: "admin-chart-title", children: "Page Views Over Time" }), _jsx("p", { className: "admin-chart-subtitle", children: "Daily, period of selection" })] }) }), _jsx("div", { className: "admin-chart-body", children: isLoading ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("div", { className: "admin-chart-spinner" }) })) : trendData.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx(BarChart3, { className: "h-12 w-12 admin-chart-empty-icon", strokeWidth: 1 }), _jsx("p", { className: "admin-chart-empty-text", children: "No traffic yet" }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Visitor data will appear here once people browse your store." })] })) : (_jsx(ResponsiveContainer, { width: "100%", height: 260, children: _jsxs(AreaChart, { data: trendData, margin: { top: 10, right: 10, left: 0, bottom: 0 }, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "visitorsGradient", x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "hsl(var(--admin-primary))", stopOpacity: 0.3 }), _jsx("stop", { offset: "100%", stopColor: "hsl(var(--admin-primary))", stopOpacity: 0 })] }) }), _jsx(CartesianGrid, { strokeDasharray: "3 3", vertical: false, stroke: "hsl(var(--admin-border))" }), _jsx(XAxis, { dataKey: "date", tickFormatter: tickFormatter, axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--admin-foreground-muted))', fontSize: 12 }, dy: 10 }), _jsx(YAxis, { axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--admin-foreground-muted))', fontSize: 12 }, width: 40, allowDecimals: false }), _jsx(Tooltip, { content: _jsx(TrendTooltip, {}) }), _jsx(Area, { type: "monotone", dataKey: "visitors", stroke: "hsl(var(--admin-primary))", strokeWidth: 2, fill: "url(#visitorsGradient)" })] }) })) })] }), _jsx(CompactTable, { title: "Top Pages", headers: ['Page', 'Views'], rows: data?.topPages.map((p) => [p.path, numberFmt(p.views)]) ?? [], isLoading: isLoading, emptyMessage: "No pageviews yet." })] }), _jsxs("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: [_jsx(CompactTable, { title: "Top Products", headers: ['Product', 'Views', 'Cart adds', 'Purchases'], rows: data?.topProducts.map((p) => [
81
+ return (_jsxs("div", { className: "space-y-6", children: [error && (_jsx("div", { className: "rounded-md bg-[hsl(var(--admin-error)/0.1)] px-4 py-3 text-sm text-[hsl(var(--admin-error))]", children: error })), _jsx("section", { children: _jsxs("div", { className: "admin-stats-grid", children: [_jsx(StatCard, { label: "Page Views", value: data ? numberFmt(data.overview.current.pageviews) : '0', delta: data?.overview.deltas.pageviews ?? null, icon: Eye, isLoading: isLoading }), _jsx(StatCard, { label: "Unique Visitors", value: data ? numberFmt(data.overview.current.visitors) : '0', delta: data?.overview.deltas.visitors ?? null, icon: Users, isLoading: isLoading }), _jsx(StatCard, { label: "Sessions", value: data ? numberFmt(data.overview.current.sessions) : '0', delta: data?.overview.deltas.sessions ?? null, icon: Activity, isLoading: isLoading }), _jsx(StatCard, { label: "Conversion Rate", value: data ? pctFmt(data.overview.current.conversionRate) : '—', delta: data?.overview.deltas.conversionRate ?? null, icon: Target, isLoading: isLoading })] }) }), _jsxs("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: [_jsxs("div", { className: "admin-chart", children: [_jsx("div", { className: "admin-chart-header", children: _jsxs("div", { children: [_jsx("h3", { className: "admin-chart-title", children: "Page Views Over Time" }), _jsx("p", { className: "admin-chart-subtitle", children: "Daily, period of selection" })] }) }), _jsx("div", { className: "admin-chart-body", children: isLoading ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) })) : trendData.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx(BarChart3, { className: "h-12 w-12 admin-chart-empty-icon", strokeWidth: 1 }), _jsx("p", { className: "admin-chart-empty-text", children: "No traffic yet" }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Visitor data will appear here once people browse your store." })] })) : (_jsx(ResponsiveContainer, { width: "100%", height: 260, children: _jsxs(AreaChart, { data: trendData, margin: { top: 10, right: 10, left: 0, bottom: 0 }, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: "visitorsGradient", x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "0%", stopColor: "hsl(var(--admin-primary))", stopOpacity: 0.3 }), _jsx("stop", { offset: "100%", stopColor: "hsl(var(--admin-primary))", stopOpacity: 0 })] }) }), _jsx(CartesianGrid, { strokeDasharray: "3 3", vertical: false, stroke: "hsl(var(--admin-border))" }), _jsx(XAxis, { dataKey: "date", tickFormatter: tickFormatter, axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--admin-foreground-muted))', fontSize: 12 }, dy: 10 }), _jsx(YAxis, { axisLine: false, tickLine: false, tick: { fill: 'hsl(var(--admin-foreground-muted))', fontSize: 12 }, width: 40, allowDecimals: false }), _jsx(Tooltip, { content: _jsx(TrendTooltip, {}) }), _jsx(Area, { type: "monotone", dataKey: "visitors", stroke: "hsl(var(--admin-primary))", strokeWidth: 2, fill: "url(#visitorsGradient)" })] }) })) })] }), _jsx(CompactTable, { title: "Top Pages", headers: ['Page', 'Views'], rows: data?.topPages.map((p) => [p.path, numberFmt(p.views)]) ?? [], isLoading: isLoading, emptyMessage: "No pageviews yet." })] }), _jsxs("section", { className: "grid grid-cols-1 gap-6 lg:grid-cols-2", children: [_jsx(CompactTable, { title: "Top Products", headers: ['Product', 'Views', 'Cart adds', 'Purchases'], rows: data?.topProducts.map((p) => [
82
82
  // Name comes from the SQL LEFT JOIN on products; falls back
83
83
  // to the truncated id when the product has been deleted so
84
84
  // the row still surfaces (analytics events outlive product
@@ -90,6 +90,10 @@ export function DashboardsView({ period }) {
90
90
  ]) ?? [], isLoading: isLoading, emptyMessage: "No product views yet." }), _jsx(CompactTable, { title: "Traffic Sources", headers: ['Source', 'Visitors'], rows: data?.sources.map((s) => [s.source, numberFmt(s.visitors)]) ?? [], isLoading: isLoading, emptyMessage: "No traffic data yet." })] })] }));
91
91
  }
92
92
  function CompactTable({ title, headers, rows, isLoading, emptyMessage, }) {
93
- return (_jsxs("div", { className: "admin-chart", children: [_jsx("div", { className: "admin-chart-header", children: _jsx("div", { children: _jsx("h3", { className: "admin-chart-title", children: title }) }) }), _jsx("div", { className: "admin-chart-body", children: isLoading ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("div", { className: "admin-chart-spinner" }) })) : rows.length === 0 ? (_jsx("div", { className: "admin-chart-empty", children: _jsx("p", { className: "admin-chart-empty-text", children: emptyMessage }) })) : (_jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsx("tr", { className: "border-b border-border", children: headers.map((h) => (_jsx("th", { className: "py-2 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground", children: h }, h))) }) }), _jsx("tbody", { children: rows.map((row, i) => (_jsx("tr", { className: "border-b border-border/50 last:border-0", children: row.map((cell, j) => (_jsx("td", { className: "py-2 text-foreground tabular-nums", children: cell }, j))) }, i))) })] })) })] }));
93
+ return (_jsxs("div", { className: "admin-chart", children: [_jsx("div", { className: "admin-chart-header", children: _jsx("div", { children: _jsx("h3", { className: "admin-chart-title", children: title }) }) }), _jsx("div", { className: "admin-chart-body", children: isLoading ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) })) : rows.length === 0 ? (_jsx("div", { className: "admin-chart-empty", children: _jsx("p", { className: "admin-chart-empty-text", children: emptyMessage }) })) : (
94
+ /* Stacked row list — a 2-4 column card never needed a <table>:
95
+ the label truncates instead of colliding, the numbers keep
96
+ fixed right-aligned slots, and nothing can overflow the card. */
97
+ _jsxs("div", { children: [_jsxs("div", { className: "flex items-baseline gap-3 border-b border-[hsl(var(--admin-border))] pb-2", children: [_jsx("span", { className: "admin-section-title min-w-0 flex-1", children: headers[0] }), headers.slice(1).map((h) => (_jsx("span", { className: "admin-section-title w-16 flex-shrink-0 text-right leading-tight", children: h }, h)))] }), _jsx("ul", { children: rows.map((row, i) => (_jsxs("li", { className: "flex items-baseline gap-3 border-b border-[hsl(var(--admin-border)/0.5)] py-2 last:border-0", children: [_jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-[hsl(var(--admin-foreground))]", title: String(row[0]), children: row[0] }), row.slice(1).map((cell, j) => (_jsx("span", { className: "w-16 flex-shrink-0 text-right text-sm tabular-nums text-[hsl(var(--admin-foreground))]", children: cell }, j)))] }, i))) })] })) })] }));
94
98
  }
95
99
  //# sourceMappingURL=DashboardsView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardsView.js","sourceRoot":"","sources":["../../../src/analytics/views/DashboardsView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashboardsView.js","sourceRoot":"","sources":["../../../src/analytics/views/DashboardsView.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,cAAc,EACd,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,GAAG,EACH,MAAM,EACN,SAAS,GACV,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,IAAI,EACJ,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,GAAG,GAAG,OAAO,GAAG,GAAG,CAAA;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAA;AACrD,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAA4B;IACrD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,eAAM,SAAS,EAAC,uCAAuC,uBAAS,CAAA;IACzE,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,eAAM,SAAS,EAAC,uCAAuC,0BAAiB,CAAA;IACjF,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAA;IACxD,OAAO,CACL,gBACE,SAAS,EAAE,uDACT,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBACtC,EAAE,aAEF,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,GAAG,EAC5B,WAAW,CAAC,KAAK,CAAC,EACnB,eAAM,SAAS,EAAC,uBAAuB,qCAA4B,IAC9D,CACR,CAAA;AACH,CAAC;AAcD,SAAS,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAa;IACzE,OAAO,CACL,cAAK,SAAS,EAAC,iBAAiB,YAC9B,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,iBAAiB,aAC9B,YAAG,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAK,EAC1C,SAAS,CAAC,CAAC,CAAC,CACX,cACE,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAC3C,CACH,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAK,CAC5C,EACA,CAAC,SAAS,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,IACvC,EACN,cAAK,SAAS,EAAC,iBAAiB,YAC9B,KAAC,IAAI,KAAG,GACJ,IACF,GACF,CACP,CAAA;AACH,CAAC;AAYD,SAAS,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAgB;IAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACvD,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,YAAG,SAAS,EAAC,2BAA2B,YAAE,IAAI,GAAK,EAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACrB,aAAW,SAAS,EAAC,2BAA2B,aAC9C,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,wBAAW,EACzC,CAAC,CAAC,KAAK,EAAE,GAAG,EACb,eAAM,SAAS,EAAC,kBAAkB,YAC/B,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,GAChD,KALD,CAAC,CAML,CACL,CAAC,IACE,CACP,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,OAAO;AACP,gFAAgF;AAEhF,MAAM,MAAM,GAAG,CAAC,OAAsB,EAAU,EAAE;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,GAAG,CAAA;IAChC,MAAM,GAAG,GAAG,OAAO,GAAG,GAAG,CAAA;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;AAElE,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,EAAuB;IAC5D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEhE,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,UAAU;IACV,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAA;IACnC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAChE,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;QACrD,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;QAChF,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,KAAK,IAAI,CACR,cAAK,SAAS,EAAC,8FAA8F,YAC1G,KAAK,GACF,CACP,EAGD,4BACE,eAAK,SAAS,EAAC,kBAAkB,aAC/B,KAAC,QAAQ,IACP,KAAK,EAAC,YAAY,EAClB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAC9D,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,EAC9C,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,SAAS,GACpB,EACF,KAAC,QAAQ,IACP,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAC7D,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAC7C,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,SAAS,GACpB,EACF,KAAC,QAAQ,IACP,KAAK,EAAC,UAAU,EAChB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAC7D,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,EAC7C,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,SAAS,GACpB,EACF,KAAC,QAAQ,IACP,KAAK,EAAC,iBAAiB,EACvB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,EAChE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,EACnD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACpB,IACE,GACE,EAGV,mBAAS,SAAS,EAAC,uCAAuC,aACxD,eAAK,SAAS,EAAC,aAAa,aAC1B,cAAK,SAAS,EAAC,oBAAoB,YACjC,0BACE,aAAI,SAAS,EAAC,mBAAmB,qCAA0B,EAC3D,YAAG,SAAS,EAAC,sBAAsB,2CAA+B,IAC9D,GACF,EACN,cAAK,SAAS,EAAC,kBAAkB,YAC9B,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAC,qBAAqB,YAClC,eAAM,SAAS,EAAC,gCAAgC,GAAG,GAC/C,CACP,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3B,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,SAAS,IACR,SAAS,EAAC,kCAAkC,EAC5C,WAAW,EAAE,CAAC,GACd,EACF,YAAG,SAAS,EAAC,wBAAwB,+BAAmB,EACxD,YAAG,SAAS,EAAC,2BAA2B,6EAEpC,IACA,CACP,CAAC,CAAC,CAAC,CACF,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAE,GAAG,YAC3C,MAAC,SAAS,IACR,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAElD,yBACE,0BAAgB,EAAE,EAAC,kBAAkB,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,aAC/D,eACE,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,2BAA2B,EACrC,WAAW,EAAE,GAAG,GAChB,EACF,eACE,MAAM,EAAC,MAAM,EACb,SAAS,EAAC,2BAA2B,EACrC,WAAW,EAAE,CAAC,GACd,IACa,GACZ,EACP,KAAC,aAAa,IACZ,eAAe,EAAC,KAAK,EACrB,QAAQ,EAAE,KAAK,EACf,MAAM,EAAC,0BAA0B,GACjC,EACF,KAAC,KAAK,IACJ,OAAO,EAAC,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAClE,EAAE,EAAE,EAAE,GACN,EACF,KAAC,KAAK,IACJ,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAClE,KAAK,EAAE,EAAE,EACT,aAAa,EAAE,KAAK,GACpB,EACF,KAAC,OAAO,IAAC,OAAO,EAAE,KAAC,YAAY,KAAG,GAAI,EACtC,KAAC,IAAI,IACH,IAAI,EAAC,UAAU,EACf,OAAO,EAAC,UAAU,EAClB,MAAM,EAAC,2BAA2B,EAClC,WAAW,EAAE,CAAC,EACd,IAAI,EAAC,wBAAwB,GAC7B,IACQ,GACQ,CACvB,GACG,IACF,EAEN,KAAC,YAAY,IACX,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1B,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EACnE,SAAS,EAAE,SAAS,EACpB,YAAY,EAAC,mBAAmB,GAChC,IACM,EAGV,mBAAS,SAAS,EAAC,uCAAuC,aACxD,KAAC,YAAY,IACX,KAAK,EAAC,cAAc,EACpB,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EACvD,IAAI,EACF,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;4BAC3B,4DAA4D;4BAC5D,2DAA2D;4BAC3D,2DAA2D;4BAC3D,mBAAmB;4BACnB,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;4BACvC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;4BAClB,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;4BACvB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;yBACvB,CAAC,IAAI,EAAE,EAEV,SAAS,EAAE,SAAS,EACpB,YAAY,EAAC,uBAAuB,GACpC,EACF,KAAC,YAAY,IACX,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAC/B,IAAI,EACF,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAEnE,SAAS,EAAE,SAAS,EACpB,YAAY,EAAC,sBAAsB,GACnC,IACM,IACN,CACP,CAAA;AACH,CAAC;AAcD,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,SAAS,EACT,YAAY,GACM;IAClB,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,cAAK,SAAS,EAAC,oBAAoB,YACjC,wBACE,aAAI,SAAS,EAAC,mBAAmB,YAAE,KAAK,GAAM,GAC1C,GACF,EACN,cAAK,SAAS,EAAC,kBAAkB,YAC9B,SAAS,CAAC,CAAC,CAAC,CACX,cAAK,SAAS,EAAC,qBAAqB,YAClC,eAAM,SAAS,EAAC,gCAAgC,GAAG,GAC/C,CACP,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACtB,cAAK,SAAS,EAAC,mBAAmB,YAChC,YAAG,SAAS,EAAC,wBAAwB,YAAE,YAAY,GAAK,GACpD,CACP,CAAC,CAAC,CAAC;gBACF;;mFAEmE;gBACnE,0BACE,eAAK,SAAS,EAAC,2EAA2E,aACxF,eAAM,SAAS,EAAC,oCAAoC,YACjD,OAAO,CAAC,CAAC,CAAC,GACN,EACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3B,eAEE,SAAS,EAAC,iEAAiE,YAE1E,CAAC,IAHG,CAAC,CAID,CACR,CAAC,IACE,EACN,uBACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACpB,cAEE,SAAS,EAAC,6FAA6F,aAEvG,eACE,SAAS,EAAC,qEAAqE,EAC/E,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAEpB,GAAG,CAAC,CAAC,CAAC,GACF,EACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC7B,eAEE,SAAS,EAAC,wFAAwF,YAEjG,IAAI,IAHA,CAAC,CAID,CACR,CAAC,KAhBG,CAAC,CAiBH,CACN,CAAC,GACC,IACD,CACP,GACG,IACF,CACP,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"EventsView.d.ts","sourceRoot":"","sources":["../../../src/analytics/views/EventsView.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAA;CACxB;AA0FD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,2CAgLrD"}
1
+ {"version":3,"file":"EventsView.d.ts","sourceRoot":"","sources":["../../../src/analytics/views/EventsView.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,UAAU,CAAA;AAEjB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAA;CACxB;AA4FD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,eAAe,2CAwLrD"}
@@ -21,7 +21,7 @@ function eventTint(kind) {
21
21
  if (kind === 'purchase')
22
22
  return 'bg-emerald-500/10 text-emerald-700';
23
23
  if (kind === 'refund')
24
- return 'bg-destructive/10 text-destructive';
24
+ return 'bg-[hsl(var(--admin-error)/0.1)] text-[hsl(var(--admin-error))]';
25
25
  if (kind === 'add_to_cart' ||
26
26
  kind === 'view_cart' ||
27
27
  kind === 'begin_checkout' ||
@@ -29,10 +29,10 @@ function eventTint(kind) {
29
29
  kind === 'view_item' ||
30
30
  kind === 'select_item' ||
31
31
  kind === 'view_item_list') {
32
- return 'bg-accent/10 text-accent';
32
+ return 'bg-[hsl(var(--admin-primary)/0.1)] text-[hsl(var(--admin-primary))]';
33
33
  }
34
34
  // page_view / session_* → muted
35
- return 'bg-foreground/[0.04] text-foreground';
35
+ return 'bg-[hsl(var(--admin-foreground)/0.04)] text-[hsl(var(--admin-foreground))]';
36
36
  }
37
37
  // =============================================================================
38
38
  // View
@@ -61,9 +61,9 @@ function formatTs(iso, timeZone = 'UTC') {
61
61
  function shortId(id, len = 8) {
62
62
  return id.length <= len ? id : `${id.slice(0, len)}…`;
63
63
  }
64
- function SortableHeader({ label, column, activeColumn, activeDir, onClick, }) {
64
+ function SortableHeader({ label, column, activeColumn, activeDir, onClick, className = '', }) {
65
65
  const isActive = activeColumn === column;
66
- return (_jsx("th", { className: "py-2 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground", children: _jsxs("button", { type: "button", onClick: () => onClick(column), className: "inline-flex items-center gap-1 transition-colors hover:text-foreground", children: [label, isActive &&
66
+ return (_jsx("th", { className: `py-2 text-left text-xs font-medium uppercase tracking-wider text-[hsl(var(--admin-foreground-muted))] ${className}`.trim(), children: _jsxs("button", { type: "button", onClick: () => onClick(column), className: "inline-flex items-center gap-1 transition-colors hover:text-[hsl(var(--admin-foreground))]", children: [label, isActive &&
67
67
  (activeDir === 'asc' ? (_jsx(ArrowUp, { className: "h-3 w-3" })) : (_jsx(ArrowDown, { className: "h-3 w-3" })))] }) }));
68
68
  }
69
69
  export function EventsView({ period }) {
@@ -85,6 +85,6 @@ export function EventsView({ period }) {
85
85
  // Cursor pagination only stable on ts-sorted; disable next when custom sort.
86
86
  const canPaginate = sortBy === 'ts';
87
87
  const hasNext = Boolean(page?.nextCursor) && canPaginate;
88
- return (_jsxs("div", { className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsx("h2", { className: "text-sm font-semibold text-foreground", children: "Events" }), _jsxs("label", { className: "inline-flex items-center gap-2 text-sm text-muted-foreground", children: [_jsx("input", { type: "checkbox", checked: !hideHeartbeats, onChange: (e) => setHideHeartbeats(!e.target.checked), className: "h-4 w-4 rounded border-border" }), "Show heartbeats"] })] }), _jsx("div", { className: "admin-chart", children: _jsx("div", { className: "admin-chart-body", children: isLoading && !page ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("div", { className: "admin-chart-spinner" }) })) : !page || page.rows.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx("p", { className: "admin-chart-empty-text", children: "No events yet." }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Once visitors start browsing your store, you'll see every page view, cart add, and purchase right here." })] })) : (_jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [_jsx(SortableHeader, { label: "Timestamp", column: "ts", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Event", column: "event", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Path", column: "path", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Referrer", column: "referrer", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Country", column: "country", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx("th", { className: "py-2 text-left text-xs font-medium uppercase tracking-wider text-muted-foreground", children: "Session" })] }) }), _jsx("tbody", { children: page.rows.map((row) => (_jsxs("tr", { className: "border-b border-border/50 last:border-0 hover:bg-foreground/[0.02]", children: [_jsx("td", { className: "py-2 tabular-nums text-foreground", children: formatTs(row.ts, storeTz) }), _jsx("td", { className: "py-2", children: _jsx("span", { className: `inline-flex items-center rounded-md px-2 py-0.5 font-mono text-xs ${eventTint(row.event)}`, children: row.event }) }), _jsx("td", { className: "py-2 font-mono text-xs text-foreground", children: row.path }), _jsx("td", { className: "py-2 text-muted-foreground", children: row.referrer ?? _jsx("span", { className: "italic", children: "(direct)" }) }), _jsx("td", { className: "py-2 tabular-nums text-foreground", children: row.country ?? '—' }), _jsx("td", { className: "py-2 font-mono text-xs text-muted-foreground", title: row.sessionId, children: shortId(row.sessionId, 8) })] }, row.id))) })] })) }) }), (cursor || hasNext) && (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [!canPaginate && (_jsx("span", { className: "text-xs text-muted-foreground", children: "Pagination disabled for custom sort" })), _jsxs("button", { type: "button", onClick: firstPage, disabled: !cursor || isLoading, className: "inline-flex items-center gap-1 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(ChevronLeft, { className: "h-3 w-3" }), "Newer"] }), _jsxs("button", { type: "button", onClick: nextPage, disabled: !hasNext || isLoading, className: "inline-flex items-center gap-1 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50", children: ["Older", _jsx(ChevronRight, { className: "h-3 w-3" })] })] }))] }));
88
+ return (_jsxs("div", { className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-[hsl(var(--admin-error)/0.1)] px-4 py-3 text-sm text-[hsl(var(--admin-error))]", children: error })), _jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsx("h2", { className: "text-sm font-semibold text-[hsl(var(--admin-foreground))]", children: "Events" }), _jsxs("label", { className: "inline-flex items-center gap-2 text-sm text-[hsl(var(--admin-foreground-muted))]", children: [_jsx("input", { type: "checkbox", checked: !hideHeartbeats, onChange: (e) => setHideHeartbeats(!e.target.checked), className: "admin-checkbox" }), "Show heartbeats"] })] }), _jsx("div", { className: "admin-chart", children: _jsx("div", { className: "admin-chart-body", children: isLoading && !page ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) })) : !page || page.rows.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx("p", { className: "admin-chart-empty-text", children: "No events yet." }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Once visitors start browsing your store, you'll see every page view, cart add, and purchase right here." })] })) : (_jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-[hsl(var(--admin-border))]", children: [_jsx(SortableHeader, { label: "Timestamp", column: "ts", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Event", column: "event", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Path", column: "path", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Referrer", column: "referrer", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick, className: "admin-col-optional" }), _jsx(SortableHeader, { label: "Country", column: "country", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick, className: "admin-col-optional" }), _jsx("th", { className: "admin-col-optional py-2 text-left text-xs font-medium uppercase tracking-wider text-[hsl(var(--admin-foreground-muted))]", children: "Session" })] }) }), _jsx("tbody", { children: page.rows.map((row) => (_jsxs("tr", { className: "border-b border-[hsl(var(--admin-border)/0.5)] last:border-0 hover:bg-[hsl(var(--admin-foreground)/0.02)]", children: [_jsx("td", { className: "whitespace-nowrap py-2 tabular-nums text-[hsl(var(--admin-foreground))]", children: formatTs(row.ts, storeTz) }), _jsx("td", { className: "py-2", children: _jsx("span", { className: `inline-flex items-center rounded-md px-2 py-0.5 font-mono text-xs ${eventTint(row.event)}`, children: row.event }) }), _jsx("td", { className: "max-w-[14rem] truncate py-2 font-mono text-xs text-[hsl(var(--admin-foreground))]", title: row.path, children: row.path }), _jsx("td", { className: "admin-col-optional max-w-[12rem] truncate py-2 text-[hsl(var(--admin-foreground-muted))]", title: row.referrer ?? undefined, children: row.referrer ?? _jsx("span", { className: "italic", children: "(direct)" }) }), _jsx("td", { className: "admin-col-optional py-2 tabular-nums text-[hsl(var(--admin-foreground))]", children: row.country ?? '—' }), _jsx("td", { className: "admin-col-optional py-2 font-mono text-xs text-[hsl(var(--admin-foreground-muted))]", title: row.sessionId, children: shortId(row.sessionId, 8) })] }, row.id))) })] })) }) }), (cursor || hasNext) && (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [!canPaginate && (_jsx("span", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "Pagination disabled for custom sort" })), _jsxs("button", { type: "button", onClick: firstPage, disabled: !cursor || isLoading, className: "admin-btn admin-btn-secondary admin-btn-sm gap-1", children: [_jsx(ChevronLeft, { className: "h-3 w-3" }), "Newer"] }), _jsxs("button", { type: "button", onClick: nextPage, disabled: !hasNext || isLoading, className: "admin-btn admin-btn-secondary admin-btn-sm gap-1", children: ["Older", _jsx(ChevronRight, { className: "h-3 w-3" })] })] }))] }));
89
89
  }
90
90
  //# sourceMappingURL=EventsView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EventsView.js","sourceRoot":"","sources":["../../../src/analytics/views/EventsView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventsView.js","sourceRoot":"","sources":["../../../src/analytics/views/EventsView.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VisitorsView.d.ts","sourceRoot":"","sources":["../../../src/analytics/views/VisitorsView.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,UAAU,CAAA;AAGjE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AA6DD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAyJzD"}
1
+ {"version":3,"file":"VisitorsView.d.ts","sourceRoot":"","sources":["../../../src/analytics/views/VisitorsView.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,UAAU,CAAA;AAGjE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AA+DD,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CA8JzD"}
@@ -34,9 +34,9 @@ function shortId(id, len = 8) {
34
34
  return id.length <= len ? id : `${id.slice(0, len)}…`;
35
35
  }
36
36
  const numberFmt = (n) => n.toLocaleString('en-US');
37
- function SortableHeader({ label, column, activeColumn, activeDir, onClick, }) {
37
+ function SortableHeader({ label, column, activeColumn, activeDir, onClick, className = '', }) {
38
38
  const isActive = activeColumn === column;
39
- return (_jsx("th", { className: "py-2 text-center text-xs font-medium uppercase tracking-wider text-muted-foreground", children: _jsxs("button", { type: "button", onClick: () => onClick(column), className: "inline-flex items-center gap-1 transition-colors hover:text-foreground", children: [label, isActive &&
39
+ return (_jsx("th", { className: `py-2 text-center text-xs font-medium uppercase tracking-wider text-[hsl(var(--admin-foreground-muted))] ${className}`.trim(), children: _jsxs("button", { type: "button", onClick: () => onClick(column), className: "inline-flex items-center gap-1 transition-colors hover:text-[hsl(var(--admin-foreground))]", children: [label, isActive &&
40
40
  (activeDir === 'asc' ? (_jsx(ArrowUp, { className: "h-3 w-3" })) : (_jsx(ArrowDown, { className: "h-3 w-3" })))] }) }));
41
41
  }
42
42
  export function VisitorsView({ period }) {
@@ -56,6 +56,6 @@ export function VisitorsView({ period }) {
56
56
  setSortDir(column === 'country' ? 'asc' : 'desc');
57
57
  }
58
58
  };
59
- return (_jsxs("div", { className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-destructive/10 px-4 py-3 text-sm text-destructive", children: error })), _jsx("h2", { className: "text-sm font-semibold text-foreground", children: "Visitors" }), _jsx("div", { className: "admin-chart", children: _jsx("div", { className: "admin-chart-body", children: isLoading && !page ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("div", { className: "admin-chart-spinner" }) })) : !page || page.rows.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx("p", { className: "admin-chart-empty-text", children: "No visitors yet." }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Anyone who visits your storefront will appear here, grouped by their pseudonymous visitor ID." })] })) : (_jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border", children: [_jsx("th", { className: "py-2 text-center text-xs font-medium uppercase tracking-wider text-muted-foreground", children: "Visitor" }), _jsx(SortableHeader, { label: "First seen", column: "first_seen", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Last seen", column: "last_seen", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Sessions", column: "sessions", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Pageviews", column: "pageviews", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Country", column: "country", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx("th", { className: "py-2 text-center text-xs font-medium uppercase tracking-wider text-muted-foreground", children: "Source" })] }) }), _jsx("tbody", { children: page.rows.map((row) => (_jsxs("tr", { className: "border-b border-border/50 last:border-0 hover:bg-foreground/[0.02]", children: [_jsx("td", { className: "py-2 text-center font-mono text-xs text-foreground", title: row.visitorId, children: shortId(row.visitorId) }), _jsx("td", { className: "py-2 text-center tabular-nums text-muted-foreground", children: formatTs(row.firstSeen, storeTz) }), _jsx("td", { className: "py-2 text-center tabular-nums text-foreground", children: formatTs(row.lastSeen, storeTz) }), _jsx("td", { className: "py-2 text-center tabular-nums text-foreground", children: numberFmt(row.sessions) }), _jsx("td", { className: "py-2 text-center tabular-nums text-foreground", children: numberFmt(row.pageviews) }), _jsx("td", { className: "py-2 text-center tabular-nums text-foreground", children: row.country ?? '—' }), _jsx("td", { className: "py-2 text-center text-muted-foreground", children: row.initialSource })] }, row.visitorId))) })] })) }) }), (cursor || page?.nextCursor) && (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsxs("button", { type: "button", onClick: firstPage, disabled: !cursor || isLoading, className: "inline-flex items-center gap-1 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(ChevronLeft, { className: "h-3 w-3" }), "Newer"] }), _jsxs("button", { type: "button", onClick: nextPage, disabled: !page?.nextCursor || isLoading, className: "inline-flex items-center gap-1 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground transition-colors hover:bg-accent disabled:cursor-not-allowed disabled:opacity-50", children: ["Older", _jsx(ChevronRight, { className: "h-3 w-3" })] })] }))] }));
59
+ return (_jsxs("div", { className: "space-y-4", children: [error && (_jsx("div", { className: "rounded-md bg-[hsl(var(--admin-error)/0.1)] px-4 py-3 text-sm text-[hsl(var(--admin-error))]", children: error })), _jsx("h2", { className: "text-sm font-semibold text-[hsl(var(--admin-foreground))]", children: "Visitors" }), _jsx("div", { className: "admin-chart", children: _jsx("div", { className: "admin-chart-body", children: isLoading && !page ? (_jsx("div", { className: "admin-chart-loading", children: _jsx("span", { className: "admin-spinner admin-spinner-lg" }) })) : !page || page.rows.length === 0 ? (_jsxs("div", { className: "admin-chart-empty", children: [_jsx("p", { className: "admin-chart-empty-text", children: "No visitors yet." }), _jsx("p", { className: "admin-chart-empty-subtext", children: "Anyone who visits your storefront will appear here, grouped by their pseudonymous visitor ID." })] })) : (_jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-[hsl(var(--admin-border))]", children: [_jsx("th", { className: "py-2 text-center text-xs font-medium uppercase tracking-wider text-[hsl(var(--admin-foreground-muted))]", children: "Visitor" }), _jsx(SortableHeader, { label: "First seen", column: "first_seen", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick, className: "admin-col-optional" }), _jsx(SortableHeader, { label: "Last seen", column: "last_seen", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Sessions", column: "sessions", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Pageviews", column: "pageviews", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick }), _jsx(SortableHeader, { label: "Country", column: "country", activeColumn: sortBy, activeDir: sortDir, onClick: onSortClick, className: "admin-col-optional" }), _jsx("th", { className: "admin-col-optional py-2 text-center text-xs font-medium uppercase tracking-wider text-[hsl(var(--admin-foreground-muted))]", children: "Source" })] }) }), _jsx("tbody", { children: page.rows.map((row) => (_jsxs("tr", { className: "border-b border-[hsl(var(--admin-border)/0.5)] last:border-0 hover:bg-[hsl(var(--admin-foreground)/0.02)]", children: [_jsx("td", { className: "py-2 text-center font-mono text-xs text-[hsl(var(--admin-foreground))]", title: row.visitorId, children: shortId(row.visitorId) }), _jsx("td", { className: "admin-col-optional whitespace-nowrap py-2 text-center tabular-nums text-[hsl(var(--admin-foreground-muted))]", children: formatTs(row.firstSeen, storeTz) }), _jsx("td", { className: "whitespace-nowrap py-2 text-center tabular-nums text-[hsl(var(--admin-foreground))]", children: formatTs(row.lastSeen, storeTz) }), _jsx("td", { className: "py-2 text-center tabular-nums text-[hsl(var(--admin-foreground))]", children: numberFmt(row.sessions) }), _jsx("td", { className: "py-2 text-center tabular-nums text-[hsl(var(--admin-foreground))]", children: numberFmt(row.pageviews) }), _jsx("td", { className: "admin-col-optional py-2 text-center tabular-nums text-[hsl(var(--admin-foreground))]", children: row.country ?? '—' }), _jsx("td", { className: "admin-col-optional max-w-[10rem] truncate py-2 text-center text-[hsl(var(--admin-foreground-muted))]", title: row.initialSource, children: row.initialSource })] }, row.visitorId))) })] })) }) }), (cursor || page?.nextCursor) && (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsxs("button", { type: "button", onClick: firstPage, disabled: !cursor || isLoading, className: "admin-btn admin-btn-secondary admin-btn-sm gap-1", children: [_jsx(ChevronLeft, { className: "h-3 w-3" }), "Newer"] }), _jsxs("button", { type: "button", onClick: nextPage, disabled: !page?.nextCursor || isLoading, className: "admin-btn admin-btn-secondary admin-btn-sm gap-1", children: ["Older", _jsx(ChevronRight, { className: "h-3 w-3" })] })] }))] }));
60
60
  }
61
61
  //# sourceMappingURL=VisitorsView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VisitorsView.js","sourceRoot":"","sources":["../../../src/analytics/views/VisitorsView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisitorsView.js","sourceRoot":"","sources":["../../../src/analytics/views/VisitorsView.tsx"],"names":[],"mappings":"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"}