@spacesync/client 0.1.0 → 0.1.1

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 (122) hide show
  1. package/README.md +9 -14
  2. package/dist/analog-clock-picker.d.ts +2 -2
  3. package/dist/analog-clock-picker.js +12 -406
  4. package/dist/analog-clock-picker.js.map +1 -1
  5. package/dist/api.js +7 -87
  6. package/dist/api.js.map +1 -1
  7. package/dist/app-modal.d.ts +7 -8
  8. package/dist/app-modal.js +3 -74
  9. package/dist/app-modal.js.map +1 -1
  10. package/dist/app-shell-mobile-nav.d.ts +1 -2
  11. package/dist/app-shell-mobile-nav.js +2 -66
  12. package/dist/app-shell-mobile-nav.js.map +1 -1
  13. package/dist/app-web-shell.d.ts +2 -2
  14. package/dist/app-web-shell.js +1 -4
  15. package/dist/app-web-shell.js.map +1 -1
  16. package/dist/booking-schedule-calendars.d.ts +12 -12
  17. package/dist/booking-schedule-calendars.js +13 -402
  18. package/dist/booking-schedule-calendars.js.map +1 -1
  19. package/dist/chat-stick-to-bottom.d.ts +1 -2
  20. package/dist/chat-stick-to-bottom.js +12 -48
  21. package/dist/chat-stick-to-bottom.js.map +1 -1
  22. package/dist/chunk-4A6RCBB5.js +4925 -0
  23. package/dist/chunk-4A6RCBB5.js.map +1 -0
  24. package/dist/chunk-4NNK5IXY.js +79 -0
  25. package/dist/chunk-4NNK5IXY.js.map +1 -0
  26. package/dist/chunk-4Y5DBM6Z.js +6 -0
  27. package/dist/chunk-4Y5DBM6Z.js.map +1 -0
  28. package/dist/chunk-7YCAAP43.js +107 -0
  29. package/dist/chunk-7YCAAP43.js.map +1 -0
  30. package/dist/chunk-DMPSQ22Q.js +11 -0
  31. package/dist/chunk-DMPSQ22Q.js.map +1 -0
  32. package/dist/chunk-FCY5FYJB.js +104 -0
  33. package/dist/chunk-FCY5FYJB.js.map +1 -0
  34. package/dist/chunk-H7EX6B6N.js +580 -0
  35. package/dist/chunk-H7EX6B6N.js.map +1 -0
  36. package/dist/chunk-HCHASUB6.js +13 -0
  37. package/dist/chunk-HCHASUB6.js.map +1 -0
  38. package/dist/chunk-L65F4EMK.js +34 -0
  39. package/dist/chunk-L65F4EMK.js.map +1 -0
  40. package/dist/chunk-LUB7QWGU.js +301 -0
  41. package/dist/chunk-LUB7QWGU.js.map +1 -0
  42. package/dist/chunk-OMSJWTSZ.js +120 -0
  43. package/dist/chunk-OMSJWTSZ.js.map +1 -0
  44. package/dist/chunk-OWNUMPUC.js +9 -0
  45. package/dist/chunk-OWNUMPUC.js.map +1 -0
  46. package/dist/chunk-P65TMY3D.js +87 -0
  47. package/dist/chunk-P65TMY3D.js.map +1 -0
  48. package/dist/chunk-PBNBLCC2.js +84 -0
  49. package/dist/chunk-PBNBLCC2.js.map +1 -0
  50. package/dist/chunk-RV5PMZYZ.js +63 -0
  51. package/dist/chunk-RV5PMZYZ.js.map +1 -0
  52. package/dist/chunk-VHINHHZQ.js +48 -0
  53. package/dist/chunk-VHINHHZQ.js.map +1 -0
  54. package/dist/chunk-VVXGQKN7.js +107 -0
  55. package/dist/chunk-VVXGQKN7.js.map +1 -0
  56. package/dist/chunk-XU3EFSQX.js +22 -0
  57. package/dist/chunk-XU3EFSQX.js.map +1 -0
  58. package/dist/chunk-YAVEMXXV.js +381 -0
  59. package/dist/chunk-YAVEMXXV.js.map +1 -0
  60. package/dist/chunk-ZIJQ7BXU.js +27 -0
  61. package/dist/chunk-ZIJQ7BXU.js.map +1 -0
  62. package/dist/detail-page-header.d.ts +3 -3
  63. package/dist/detail-page-header.js +5 -149
  64. package/dist/detail-page-header.js.map +1 -1
  65. package/dist/{dialog-CIdvylPK.d.ts → dialog-CPkbi5N3.d.ts} +10 -11
  66. package/dist/file-picker-field.d.ts +2 -2
  67. package/dist/file-picker-field.js +3 -163
  68. package/dist/file-picker-field.js.map +1 -1
  69. package/dist/file-viewer-dialog.d.ts +2 -2
  70. package/dist/file-viewer-dialog.js +12 -223
  71. package/dist/file-viewer-dialog.js.map +1 -1
  72. package/dist/floor-switcher.d.ts +2 -2
  73. package/dist/floor-switcher.js +13 -323
  74. package/dist/floor-switcher.js.map +1 -1
  75. package/dist/forms.js +1 -23
  76. package/dist/forms.js.map +1 -1
  77. package/dist/image-picker-field.d.ts +2 -2
  78. package/dist/image-picker-field.js +3 -48
  79. package/dist/image-picker-field.js.map +1 -1
  80. package/dist/layout-canvas-view.d.ts +2 -2
  81. package/dist/layout-canvas-view.js +17 -220
  82. package/dist/layout-canvas-view.js.map +1 -1
  83. package/dist/lib/dateDisplay.js +1 -82
  84. package/dist/lib/dateDisplay.js.map +1 -1
  85. package/dist/live-resource-meta.js +1 -25
  86. package/dist/live-resource-meta.js.map +1 -1
  87. package/dist/live-space-pulse-dot.d.ts +2 -2
  88. package/dist/live-space-pulse-dot.js +2 -16
  89. package/dist/live-space-pulse-dot.js.map +1 -1
  90. package/dist/notification-sidebar-preview.d.ts +3 -3
  91. package/dist/notification-sidebar-preview.js +3 -61
  92. package/dist/notification-sidebar-preview.js.map +1 -1
  93. package/dist/page-list-chrome.d.ts +25 -25
  94. package/dist/page-list-chrome.js +6 -968
  95. package/dist/page-list-chrome.js.map +1 -1
  96. package/dist/platform-support-message-composer.d.ts +4 -4
  97. package/dist/platform-support-message-composer.js +15 -218
  98. package/dist/platform-support-message-composer.js.map +1 -1
  99. package/dist/shell-sidebar-nav.js +8 -13
  100. package/dist/shell-sidebar-nav.js.map +1 -1
  101. package/dist/shell-theme.js +1 -7
  102. package/dist/shell-theme.js.map +1 -1
  103. package/dist/shell-top-bar-chrome.js +3 -103
  104. package/dist/shell-top-bar-chrome.js.map +1 -1
  105. package/dist/shell-top-bar.d.ts +3 -3
  106. package/dist/shell-top-bar.js +1 -69
  107. package/dist/shell-top-bar.js.map +1 -1
  108. package/dist/support-presence-status.d.ts +2 -2
  109. package/dist/support-presence-status.js +3 -41
  110. package/dist/support-presence-status.js.map +1 -1
  111. package/dist/theme-appearance-control.d.ts +2 -2
  112. package/dist/theme-appearance-control.js +4 -63
  113. package/dist/theme-appearance-control.js.map +1 -1
  114. package/dist/theme-boot-script.js +1 -2
  115. package/dist/theme-boot-script.js.map +1 -1
  116. package/dist/theme-provider.d.ts +2 -2
  117. package/dist/theme-provider.js +2 -23
  118. package/dist/theme-provider.js.map +1 -1
  119. package/dist/ui.d.ts +261 -262
  120. package/dist/ui.js +11 -5635
  121. package/dist/ui.js.map +1 -1
  122. package/package.json +11 -2
@@ -1,66 +1,8 @@
1
- import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
2
- import { clsx } from 'clsx';
3
- import { twMerge } from 'tailwind-merge';
1
+ import { HoverCard, HoverCardTrigger, HoverCardContent } from './chunk-L65F4EMK.js';
2
+ import { formatRelativeTimeAgo } from './chunk-PBNBLCC2.js';
3
+ import { cn } from './chunk-DMPSQ22Q.js';
4
4
  import { jsxs, jsx } from 'react/jsx-runtime';
5
5
 
6
- function cn(...inputs) {
7
- return twMerge(clsx(inputs));
8
- }
9
- function HoverCard({ ...props }) {
10
- return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, { "data-slot": "hover-card", ...props });
11
- }
12
- function HoverCardTrigger({ ...props }) {
13
- return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, { "data-slot": "hover-card-trigger", ...props });
14
- }
15
- function HoverCardContent({
16
- className,
17
- align = "center",
18
- sideOffset = 4,
19
- ...props
20
- }) {
21
- return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ jsx(
22
- HoverCardPrimitive.Content,
23
- {
24
- "data-slot": "hover-card-content",
25
- align,
26
- sideOffset,
27
- className: cn(
28
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-white/10 p-4 shadow-md outline-hidden",
29
- className
30
- ),
31
- ...props
32
- }
33
- ) });
34
- }
35
-
36
- // src/lib/dateDisplay.ts
37
- var MS_MIN = 6e4;
38
- var MS_HOUR = 60 * MS_MIN;
39
- var MS_DAY = 24 * MS_HOUR;
40
- function formatRelativeTimeAgo(iso, now = /* @__PURE__ */ new Date()) {
41
- try {
42
- const d = new Date(iso.trim());
43
- if (!Number.isFinite(d.getTime())) return "";
44
- let diffMs = now.getTime() - d.getTime();
45
- if (diffMs < 0) diffMs = 0;
46
- const sec = Math.floor(diffMs / 1e3);
47
- if (sec < 60) return "just now";
48
- const min = Math.floor(diffMs / MS_MIN);
49
- if (min < 60) return `${min}m ago`;
50
- const hr = Math.floor(diffMs / MS_HOUR);
51
- if (hr < 24) return `${hr}h ago`;
52
- const day = Math.floor(diffMs / MS_DAY);
53
- if (day < 7) return `${day}d ago`;
54
- const week = Math.floor(day / 7);
55
- if (week < 5) return `${week}w ago`;
56
- const mo = Math.floor(day / 30);
57
- if (mo < 12) return `${mo}mo ago`;
58
- const yr = Math.floor(day / 365);
59
- return `${Math.max(1, yr)}y ago`;
60
- } catch {
61
- return "";
62
- }
63
- }
64
6
  function NotificationUnreadPulseDot({ className }) {
65
7
  return /* @__PURE__ */ jsxs("span", { className: cn("relative flex h-2 w-2 shrink-0", className), "aria-hidden": "true", children: [
66
8
  /* @__PURE__ */ jsx("span", { className: "absolute inline-flex h-full w-full animate-ping rounded-full bg-blue-400 opacity-40" }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/utils.ts","../src/ui/hover-card.tsx","../src/lib/dateDisplay.ts","../src/shell/notification-sidebar-preview.tsx"],"names":["jsx"],"mappings":";;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACEA,SAAS,SAAA,CAAU,EAAE,GAAG,KAAA,EAAM,EAAyD;AACrF,EAAA,2BAA2B,kBAAA,CAAA,IAAA,EAAnB,EAAwB,WAAA,EAAU,YAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AACpE;AAEA,SAAS,gBAAA,CAAiB,EAAE,GAAG,KAAA,EAAM,EAA4D;AAC/F,EAAA,2BAA2B,kBAAA,CAAA,OAAA,EAAnB,EAA2B,WAAA,EAAU,oBAAA,EAAsB,GAAG,KAAA,EAAO,CAAA;AAC/E;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4D;AAC1D,EAAA,uBACE,GAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,WAAA,EAAU,mBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,IAAoB,kBAAA,CAAA,OAAA;AAAA,IAAnB;AAAA,MACC,WAAA,EAAU,oBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,mfAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;;;ACmCA,IAAM,MAAA,GAAS,GAAA;AACf,IAAM,UAAU,EAAA,GAAK,MAAA;AACrB,IAAM,SAAS,EAAA,GAAK,OAAA;AAMb,SAAS,qBAAA,CAAsB,GAAA,EAAa,GAAA,mBAAY,IAAI,MAAK,EAAW;AACjF,EAAA,IAAI;AACF,IAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC7B,IAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,EAAE,OAAA,EAAS,GAAG,OAAO,EAAA;AAC1C,IAAA,IAAI,MAAA,GAAS,GAAA,CAAI,OAAA,EAAQ,GAAI,EAAE,OAAA,EAAQ;AACvC,IAAA,IAAI,MAAA,GAAS,GAAG,MAAA,GAAS,CAAA;AACzB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,GAAI,CAAA;AACpC,IAAA,IAAI,GAAA,GAAM,IAAI,OAAO,UAAA;AACrB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,MAAM,CAAA;AACtC,IAAA,IAAI,GAAA,GAAM,EAAA,EAAI,OAAO,CAAA,EAAG,GAAG,CAAA,KAAA,CAAA;AAC3B,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,OAAO,CAAA;AACtC,IAAA,IAAI,EAAA,GAAK,EAAA,EAAI,OAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA;AACzB,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,MAAM,CAAA;AACtC,IAAA,IAAI,GAAA,GAAM,CAAA,EAAG,OAAO,CAAA,EAAG,GAAG,CAAA,KAAA,CAAA;AAC1B,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,CAAC,CAAA;AAC/B,IAAA,IAAI,IAAA,GAAO,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAA,KAAA,CAAA;AAC5B,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,EAAE,CAAA;AAC9B,IAAA,IAAI,EAAA,GAAK,EAAA,EAAI,OAAO,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA;AACzB,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,GAAG,CAAA;AAC/B,IAAA,OAAO,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,EAAE,CAAC,CAAA,KAAA,CAAA;AAAA,EAC3B,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAA;AAAA,EACT;AACF;AC1FO,SAAS,0BAAA,CAA2B,EAAE,SAAA,EAAU,EAA2B;AAChF,EAAA,uBACE,IAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,kCAAkC,SAAS,CAAA,EAAG,eAAY,MAAA,EAC5E,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qFAAA,EAAsF,CAAA;AAAA,oBACtGA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD;AAAA,GAAA,EAC1E,CAAA;AAEJ;AA4BO,SAAS,wBAAA,CAAyB;AAAA,EACvC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,CAAA;AAAA,EACX,IAAA,GAAO,OAAA;AAAA,EACP,KAAA,GAAQ,OAAA;AAAA,EACR;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AAErC,EAAA,uBACE,IAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,GAAA,EAAK,YAAY,GAAA,EACrC,QAAA,EAAA;AAAA,oBAAAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAO,IAAA,EACvB,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAgB,QAAA,EAAS,CAAA,EAC3C,CAAA;AAAA,oBACA,IAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,+CAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8CAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,4BAC/E,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA;AAAA,cAAA,0BAAA;AAAA,cAAsB;AAAA,aAAA,EAAS;AAAA,WAAA,EAC1E,CAAA;AAAA,UACC,KAAA,CAAM,WAAW,CAAA,mBAChBA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,uBAAA,EAAqB,CAAA,mBAElFA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,qEACX,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACV,IAAA,CAAC,IAAA,EAAA,EAAiB,SAAA,EAAU,aAAA,EAC1B,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,8BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+EAAA,EACV,eAAK,KAAA,EACR,CAAA;AAAA,cACC,IAAA,CAAK,yBACJA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oDAAA;AAAA,kBACV,aAAA,EAAY;AAAA;AAAA,eACd,GACE;AAAA,aAAA,EACN,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2DAAA,EACV,eAAK,OAAA,EACR,CAAA;AAAA,4BACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,kCACV,QAAA,EAAA,qBAAA,CAAsB,IAAA,CAAK,SAAS,CAAA,EACvC;AAAA,WAAA,EAAA,EAjBO,IAAA,CAAK,EAkBd,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ","file":"notification-sidebar-preview.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\n\nimport { cn } from \"./utils\";\n\nfunction HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>) {\n return <HoverCardPrimitive.Root data-slot=\"hover-card\" {...props} />;\n}\n\nfunction HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>) {\n return <HoverCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />;\n}\n\nfunction HoverCardContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content>) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n data-slot=\"hover-card-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border border-white/10 p-4 shadow-md outline-hidden\",\n className,\n )}\n {...props}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n","/** Parse `HH:mm` wall-clock time. */\nexport function parseWallClockHm(value: string): { h: number; m: number } | undefined {\n const m = /^([01]\\d|2[0-3]):([0-5]\\d)$/.exec(value.trim());\n if (!m) return undefined;\n const h = Number(m[1]);\n const min = Number(m[2]);\n if (h > 23 || min > 59) return undefined;\n return { h, m: min };\n}\n\nexport function toWallClockHmStr(h: number, m: number): string {\n return `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}`;\n}\n\n/** Format stored `HH:mm` without timezone conversion. */\nexport function formatWallClockTime(value: string, timeFormat: \"12h\" | \"24h\"): string {\n const p = parseWallClockHm(value);\n if (!p) return value.trim() || \"—\";\n if (timeFormat === \"24h\") return toWallClockHmStr(p.h, p.m);\n const ap = p.h >= 12 ? \"PM\" : \"AM\";\n const h12 = p.h % 12 || 12;\n return `${h12}:${String(p.m).padStart(2, \"0\")} ${ap}`;\n}\n\n/** Add minutes to a wall-clock `HH:mm`, wrapping at 24h. */\nexport function addWallClockMinutes(value: string, minutes: number): string {\n const p = parseWallClockHm(value);\n if (!p) return value;\n const total = p.h * 60 + p.m + minutes;\n const wrapped = ((total % (24 * 60)) + 24 * 60) % (24 * 60);\n return toWallClockHmStr(Math.floor(wrapped / 60), wrapped % 60);\n}\n\n/** Format `YYYY-MM-DD` as a calendar date (no timezone shift). */\nexport function formatCalendarDate(ymd: string): string {\n if (!ymd || !/^\\d{4}-\\d{2}-\\d{2}$/.test(ymd)) return ymd || \"—\";\n const [y, m, d] = ymd.split(\"-\").map(Number);\n return new Date(y, m - 1, d).toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n\n/** ISO `yyyy-mm-dd` for a local calendar date. */\nexport function toDateStr(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nexport function isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\n/** Short label for a date; shows \"Today\" when it matches the current local day. */\nexport function formatDate(date: Date): string {\n if (isSameDay(date, new Date())) return \"Today\";\n return date.toLocaleDateString(\"en-US\", {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nconst MS_MIN = 60_000;\nconst MS_HOUR = 60 * MS_MIN;\nconst MS_DAY = 24 * MS_HOUR;\n\n/**\n * Compact relative time for feeds (e.g. announcements, notifications): `2m ago`, `2d ago`.\n * Uses elapsed wall time from `now` (defaults to current time). Returns \"\" if `iso` is unparseable.\n */\nexport function formatRelativeTimeAgo(iso: string, now: Date = new Date()): string {\n try {\n const d = new Date(iso.trim());\n if (!Number.isFinite(d.getTime())) return \"\";\n let diffMs = now.getTime() - d.getTime();\n if (diffMs < 0) diffMs = 0;\n const sec = Math.floor(diffMs / 1000);\n if (sec < 60) return \"just now\";\n const min = Math.floor(diffMs / MS_MIN);\n if (min < 60) return `${min}m ago`;\n const hr = Math.floor(diffMs / MS_HOUR);\n if (hr < 24) return `${hr}h ago`;\n const day = Math.floor(diffMs / MS_DAY);\n if (day < 7) return `${day}d ago`;\n const week = Math.floor(day / 7);\n if (week < 5) return `${week}w ago`;\n const mo = Math.floor(day / 30);\n if (mo < 12) return `${mo}mo ago`;\n const yr = Math.floor(day / 365);\n return `${Math.max(1, yr)}y ago`;\n } catch {\n return \"\";\n }\n}\n","\"use client\";\n\nimport { type ReactElement } from \"react\";\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from \"../ui/hover-card\";\nimport { formatRelativeTimeAgo } from \"../lib/dateDisplay\";\nimport { cn } from \"../ui/utils\";\n\n/**\n * Ping + solid blue marker for unread notifications — same layout as Live space’s emerald dot\n * (trailing the label in a `flex items-center gap-3` row).\n */\nexport function NotificationUnreadPulseDot({ className }: { className?: string }) {\n return (\n <span className={cn(\"relative flex h-2 w-2 shrink-0\", className)} aria-hidden=\"true\">\n <span className=\"absolute inline-flex h-full w-full animate-ping rounded-full bg-blue-400 opacity-40\" />\n <span className=\"relative inline-flex h-2 w-2 rounded-full bg-blue-500\" />\n </span>\n );\n}\n\nexport type NotificationSidebarPreviewItem = {\n id: string;\n title: string;\n preview: string;\n createdAt: string;\n unread?: boolean;\n};\n\ntype NotificationNavHoverCardProps = {\n /** Typically a `NavLink` covering the full row. */\n children: ReactElement;\n items: NotificationSidebarPreviewItem[];\n /** Max rows in the hover panel (default 3). */\n maxItems?: number;\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n};\n\n/**\n * Hover/focus preview of the latest notifications next to the sidebar row.\n *\n * The trigger is a `<span className=\"block w-full\">` wrapper rather than `asChild` directly on the\n * NavLink. This avoids Radix Slot trying to merge NavLink's function-valued `className` prop as a\n * string, which would otherwise break the flex row layout.\n */\nexport function NotificationNavHoverCard({\n children,\n items,\n maxItems = 3,\n side = \"right\",\n align = \"start\",\n className,\n}: NotificationNavHoverCardProps) {\n const slice = items.slice(0, maxItems);\n\n return (\n <HoverCard openDelay={200} closeDelay={120}>\n <HoverCardTrigger asChild>\n <span className=\"block w-full\">{children}</span>\n </HoverCardTrigger>\n <HoverCardContent\n side={side}\n align={align}\n sideOffset={8}\n className={cn(\n \"w-[min(20rem,calc(100vw-2rem))] p-0 shadow-lg\",\n className,\n )}\n >\n <div className=\"border-b border-white/10 bg-card/5 px-3 py-2\">\n <p className=\"text-xs font-medium text-popover-foreground\">Recent notifications</p>\n <p className=\"text-[11px] text-white/60\">Newest first · up to {maxItems}</p>\n </div>\n {slice.length === 0 ? (\n <div className=\"px-3 py-6 text-center text-sm text-white/60\">No notifications yet.</div>\n ) : (\n <ul className=\"max-h-[min(18rem,50dvh)] divide-y divide-white/10 overflow-y-auto\">\n {slice.map((item) => (\n <li key={item.id} className=\"px-3 py-2.5\">\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"min-w-0 text-sm font-medium leading-snug text-popover-foreground line-clamp-2\">\n {item.title}\n </p>\n {item.unread ? (\n <span\n className=\"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-blue-500\"\n aria-hidden=\"true\"\n />\n ) : null}\n </div>\n <p className=\"mt-0.5 text-xs leading-relaxed text-white/60 line-clamp-2\">\n {item.preview}\n </p>\n <p className=\"mt-1 text-[10px] text-white/40\">\n {formatRelativeTimeAgo(item.createdAt)}\n </p>\n </li>\n ))}\n </ul>\n )}\n </HoverCardContent>\n </HoverCard>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/shell/notification-sidebar-preview.tsx"],"names":[],"mappings":";;;;;AAWO,SAAS,0BAAA,CAA2B,EAAE,SAAA,EAAU,EAA2B;AAChF,EAAA,uBACE,IAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,kCAAkC,SAAS,CAAA,EAAG,eAAY,MAAA,EAC5E,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,WAAU,qFAAA,EAAsF,CAAA;AAAA,oBACtG,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uDAAA,EAAwD;AAAA,GAAA,EAC1E,CAAA;AAEJ;AA4BO,SAAS,wBAAA,CAAyB;AAAA,EACvC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,CAAA;AAAA,EACX,IAAA,GAAO,OAAA;AAAA,EACP,KAAA,GAAQ,OAAA;AAAA,EACR;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AAErC,EAAA,uBACE,IAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAW,GAAA,EAAK,YAAY,GAAA,EACrC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAO,IAAA,EACvB,QAAA,kBAAA,GAAA,CAAC,UAAK,SAAA,EAAU,cAAA,EAAgB,UAAS,CAAA,EAC3C,CAAA;AAAA,oBACA,IAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,KAAA;AAAA,QACA,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,+CAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8CAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6CAAA,EAA8C,QAAA,EAAA,sBAAA,EAAoB,CAAA;AAAA,4BAC/E,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA;AAAA,cAAA,0BAAA;AAAA,cAAsB;AAAA,aAAA,EAAS;AAAA,WAAA,EAC1E,CAAA;AAAA,UACC,KAAA,CAAM,WAAW,CAAA,mBAChB,GAAA,CAAC,SAAI,SAAA,EAAU,6CAAA,EAA8C,mCAAqB,CAAA,mBAElF,GAAA,CAAC,QAAG,SAAA,EAAU,mEAAA,EACX,gBAAM,GAAA,CAAI,CAAC,yBACV,IAAA,CAAC,IAAA,EAAA,EAAiB,WAAU,aAAA,EAC1B,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,wCAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+EAAA,EACV,QAAA,EAAA,IAAA,CAAK,KAAA,EACR,CAAA;AAAA,cACC,KAAK,MAAA,mBACJ,GAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,oDAAA;AAAA,kBACV,aAAA,EAAY;AAAA;AAAA,eACd,GACE;AAAA,aAAA,EACN,CAAA;AAAA,4BACA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2DAAA,EACV,eAAK,OAAA,EACR,CAAA;AAAA,gCACC,GAAA,EAAA,EAAE,SAAA,EAAU,kCACV,QAAA,EAAA,qBAAA,CAAsB,IAAA,CAAK,SAAS,CAAA,EACvC;AAAA,WAAA,EAAA,EAjBO,IAAA,CAAK,EAkBd,CACD,CAAA,EACH;AAAA;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ","file":"notification-sidebar-preview.js","sourcesContent":["\"use client\";\n\nimport { type ReactElement } from \"react\";\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from \"../ui/hover-card\";\nimport { formatRelativeTimeAgo } from \"../lib/dateDisplay\";\nimport { cn } from \"../ui/utils\";\n\n/**\n * Ping + solid blue marker for unread notifications — same layout as Live space’s emerald dot\n * (trailing the label in a `flex items-center gap-3` row).\n */\nexport function NotificationUnreadPulseDot({ className }: { className?: string }) {\n return (\n <span className={cn(\"relative flex h-2 w-2 shrink-0\", className)} aria-hidden=\"true\">\n <span className=\"absolute inline-flex h-full w-full animate-ping rounded-full bg-blue-400 opacity-40\" />\n <span className=\"relative inline-flex h-2 w-2 rounded-full bg-blue-500\" />\n </span>\n );\n}\n\nexport type NotificationSidebarPreviewItem = {\n id: string;\n title: string;\n preview: string;\n createdAt: string;\n unread?: boolean;\n};\n\ntype NotificationNavHoverCardProps = {\n /** Typically a `NavLink` covering the full row. */\n children: ReactElement;\n items: NotificationSidebarPreviewItem[];\n /** Max rows in the hover panel (default 3). */\n maxItems?: number;\n side?: \"right\" | \"left\" | \"top\" | \"bottom\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n};\n\n/**\n * Hover/focus preview of the latest notifications next to the sidebar row.\n *\n * The trigger is a `<span className=\"block w-full\">` wrapper rather than `asChild` directly on the\n * NavLink. This avoids Radix Slot trying to merge NavLink's function-valued `className` prop as a\n * string, which would otherwise break the flex row layout.\n */\nexport function NotificationNavHoverCard({\n children,\n items,\n maxItems = 3,\n side = \"right\",\n align = \"start\",\n className,\n}: NotificationNavHoverCardProps) {\n const slice = items.slice(0, maxItems);\n\n return (\n <HoverCard openDelay={200} closeDelay={120}>\n <HoverCardTrigger asChild>\n <span className=\"block w-full\">{children}</span>\n </HoverCardTrigger>\n <HoverCardContent\n side={side}\n align={align}\n sideOffset={8}\n className={cn(\n \"w-[min(20rem,calc(100vw-2rem))] p-0 shadow-lg\",\n className,\n )}\n >\n <div className=\"border-b border-white/10 bg-card/5 px-3 py-2\">\n <p className=\"text-xs font-medium text-popover-foreground\">Recent notifications</p>\n <p className=\"text-[11px] text-white/60\">Newest first · up to {maxItems}</p>\n </div>\n {slice.length === 0 ? (\n <div className=\"px-3 py-6 text-center text-sm text-white/60\">No notifications yet.</div>\n ) : (\n <ul className=\"max-h-[min(18rem,50dvh)] divide-y divide-white/10 overflow-y-auto\">\n {slice.map((item) => (\n <li key={item.id} className=\"px-3 py-2.5\">\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"min-w-0 text-sm font-medium leading-snug text-popover-foreground line-clamp-2\">\n {item.title}\n </p>\n {item.unread ? (\n <span\n className=\"mt-1 h-1.5 w-1.5 shrink-0 rounded-full bg-blue-500\"\n aria-hidden=\"true\"\n />\n ) : null}\n </div>\n <p className=\"mt-0.5 text-xs leading-relaxed text-white/60 line-clamp-2\">\n {item.preview}\n </p>\n <p className=\"mt-1 text-[10px] text-white/40\">\n {formatRelativeTimeAgo(item.createdAt)}\n </p>\n </li>\n ))}\n </ul>\n )}\n </HoverCardContent>\n </HoverCard>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as React$1 from 'react';
2
2
  import { ReactNode, ButtonHTMLAttributes } from 'react';
3
3
  import { SortDirection } from './use-client-sort.js';
4
4
  export { shellTopBarNeutralActionDataAttr } from './shell-top-bar-chrome.js';
@@ -16,77 +16,77 @@ declare function pageListStickyColumnClass({ side, layer, sortActive, }: PageLis
16
16
  declare const pageListTableWithFixedColumnsClass = "border-separate border-spacing-0";
17
17
 
18
18
  /** Fills the app main pane (white card on grey chrome). */
19
- declare function PageListRoot({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
19
+ declare function PageListRoot({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
20
20
  /** White header block under the app chrome. */
21
- declare function PageListHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
21
+ declare function PageListHeader({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
22
22
  declare function PageListTitleRow({ title, subtitle, actions, titleAddon, }: {
23
23
  title: ReactNode;
24
24
  subtitle?: string;
25
25
  actions?: ReactNode;
26
26
  /** Rendered before the title (e.g. live indicator). */
27
27
  titleAddon?: ReactNode;
28
- }): react_jsx_runtime.JSX.Element;
28
+ }): React$1.JSX.Element;
29
29
  /** Primary CTA in a page list header (e.g. New announcement). */
30
- declare function PageListPrimaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): react_jsx_runtime.JSX.Element;
30
+ declare function PageListPrimaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): React$1.JSX.Element;
31
31
  /** Secondary CTA for empty states and alternate actions. */
32
- declare function PageListSecondaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): react_jsx_runtime.JSX.Element;
32
+ declare function PageListSecondaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): React$1.JSX.Element;
33
33
  /** Primary CTA rendered in {@link ShellTopBar} actions on the dark shell. */
34
- declare function ShellTopBarPrimaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): react_jsx_runtime.JSX.Element;
34
+ declare function ShellTopBarPrimaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): React$1.JSX.Element;
35
35
  /** Secondary / outline CTA in {@link ShellTopBar} — same chrome as detail header actions (Edit member, Add adjustment). */
36
- declare function ShellTopBarSecondaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): react_jsx_runtime.JSX.Element;
36
+ declare function ShellTopBarSecondaryActionButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): React$1.JSX.Element;
37
37
 
38
38
  /** Search, filters, or secondary controls (spacing matches Live space). */
39
- declare function PageListToolbar({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
39
+ declare function PageListToolbar({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
40
40
  /** Compact KPI tiles (Live space stat row). */
41
- declare function PageListStatGrid({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
41
+ declare function PageListStatGrid({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
42
42
  type PageListStatTone = "default" | "danger" | "success";
43
43
  declare function PageListStatCard({ label, value, tone, }: {
44
44
  label: string;
45
45
  value: ReactNode;
46
46
  tone?: PageListStatTone;
47
- }): react_jsx_runtime.JSX.Element;
47
+ }): React$1.JSX.Element;
48
48
  /** Scrollable white region for tables / lists. Stay flush horizontally; table cells provide inset (same as Live space). */
49
- declare function PageListTableArea({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
49
+ declare function PageListTableArea({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
50
50
  /** Search input styling shared with Live space. */
51
51
  declare function PageListSearchField({ value, onChange, placeholder, className, }: {
52
52
  value: string;
53
53
  onChange: (v: string) => void;
54
54
  placeholder: string;
55
55
  className?: string;
56
- }): react_jsx_runtime.JSX.Element;
56
+ }): React$1.JSX.Element;
57
57
  /** Sticky table header row (Live space). */
58
58
  declare function PageListStickyThead({ children }: {
59
59
  children: ReactNode;
60
- }): react_jsx_runtime.JSX.Element;
60
+ }): React$1.JSX.Element;
61
61
  /** Non-sticky thead for embedded detail tables. */
62
- declare function PageListThead({ className, ...props }: React.ComponentProps<"thead">): react_jsx_runtime.JSX.Element;
62
+ declare function PageListThead({ className, ...props }: React.ComponentProps<"thead">): React$1.JSX.Element;
63
63
  /** Standard `<table>` shell for list and detail tables. */
64
64
  declare function PageListTable({ minWidth, fixedColumns, compact, className, style, ...props }: React.ComponentProps<"table"> & {
65
65
  minWidth?: number;
66
66
  fixedColumns?: boolean;
67
67
  compact?: boolean;
68
- }): react_jsx_runtime.JSX.Element;
68
+ }): React$1.JSX.Element;
69
69
  /** Standard header row styling for column labels. */
70
- declare function PageListHeaderRow({ className, ...props }: React.ComponentProps<"tr">): react_jsx_runtime.JSX.Element;
70
+ declare function PageListHeaderRow({ className, ...props }: React.ComponentProps<"tr">): React$1.JSX.Element;
71
71
  type PageListTdTone = "default" | "primary" | "muted" | "mono";
72
72
  type PageListCellSize = "default" | "comfortable";
73
73
  /** Standard data row — border, hover, optional click navigation. */
74
74
  declare function PageListTr({ onClick, selected, className, onKeyDown, ...props }: React.ComponentProps<"tr"> & {
75
75
  onClick?: () => void;
76
76
  selected?: boolean;
77
- }): react_jsx_runtime.JSX.Element;
77
+ }): React$1.JSX.Element;
78
78
  declare const pageListThClass = "font-medium py-2.5 px-2 text-left text-[10px] uppercase tracking-wide text-muted-foreground first:pl-5 last:pr-5";
79
79
  declare const pageListTdClass: string;
80
80
  declare function PageListTh({ children, columnFixed, align, className, ...props }: React.ComponentProps<"th"> & {
81
81
  columnFixed?: PageListColumnFixed;
82
82
  align?: "left" | "right";
83
- }): react_jsx_runtime.JSX.Element;
83
+ }): React$1.JSX.Element;
84
84
  declare function PageListTd({ children, columnFixed, align, tone, size, className, ...props }: React.ComponentProps<"td"> & {
85
85
  columnFixed?: PageListColumnFixed;
86
86
  align?: "left" | "right";
87
87
  tone?: PageListTdTone;
88
88
  size?: PageListCellSize;
89
- }): react_jsx_runtime.JSX.Element;
89
+ }): React$1.JSX.Element;
90
90
  declare function PageListSortableTh<K extends string>({ label, columnKey, sortKey, direction, onSort, align, columnFixed, className, }: {
91
91
  label: ReactNode;
92
92
  columnKey: K;
@@ -96,10 +96,10 @@ declare function PageListSortableTh<K extends string>({ label, columnKey, sortKe
96
96
  align?: "left" | "right";
97
97
  columnFixed?: PageListColumnFixed;
98
98
  className?: string;
99
- }): react_jsx_runtime.JSX.Element;
99
+ }): React$1.JSX.Element;
100
100
  type PageListPaginationProps = Pick<UseClientPaginationResult<unknown>, "page" | "setPage" | "pageSize" | "setPageSize" | "pageSizeOptions" | "totalItems" | "totalPages" | "rangeStart" | "rangeEnd" | "canPrev" | "canNext">;
101
101
  /** Footer bar for paginated list tables — count, page-size selector, and page controls. */
102
- declare function PageListPagination({ page, setPage, pageSize, setPageSize, pageSizeOptions, totalItems, totalPages, rangeStart, rangeEnd, canPrev, canNext, }: PageListPaginationProps): react_jsx_runtime.JSX.Element | null;
102
+ declare function PageListPagination({ page, setPage, pageSize, setPageSize, pageSizeOptions, totalItems, totalPages, rangeStart, rangeEnd, canPrev, canNext, }: PageListPaginationProps): React$1.JSX.Element | null;
103
103
  /** Empty state for list pages inside PageListTableArea. */
104
104
  declare function PageListEmptyState({ title, description, icon, action, variant, className, }: {
105
105
  title: string;
@@ -108,9 +108,9 @@ declare function PageListEmptyState({ title, description, icon, action, variant,
108
108
  action?: ReactNode;
109
109
  variant?: "minimal" | "illustrated";
110
110
  className?: string;
111
- }): react_jsx_runtime.JSX.Element;
111
+ }): React$1.JSX.Element;
112
112
  /** Bordered scroll wrapper for embedded detail tables. */
113
- declare function DetailTableFrame({ className, children, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
113
+ declare function DetailTableFrame({ className, children, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
114
114
  /** Flat content section for detail pages — title + optional description + optional header action, separated by a thin divider. */
115
115
  declare function DetailSection({ title, description, headerMeta, headerAction, children, }: {
116
116
  title: string;
@@ -119,6 +119,6 @@ declare function DetailSection({ title, description, headerMeta, headerAction, c
119
119
  headerMeta?: ReactNode;
120
120
  headerAction?: ReactNode;
121
121
  children: ReactNode;
122
- }): react_jsx_runtime.JSX.Element;
122
+ }): React$1.JSX.Element;
123
123
 
124
124
  export { DetailSection, DetailTableFrame, type PageListCellSize, type PageListColumnFixed, PageListEmptyState, PageListHeader, PageListHeaderRow, PageListPagination, type PageListPaginationProps, PageListPrimaryActionButton, PageListRoot, PageListSearchField, PageListSecondaryActionButton, PageListSortableTh, PageListStatCard, PageListStatGrid, type PageListStatTone, PageListStickyThead, PageListTable, PageListTableArea, PageListTd, type PageListTdTone, PageListTh, PageListThead, PageListTitleRow, PageListToolbar, PageListTr, ShellTopBarPrimaryActionButton, ShellTopBarSecondaryActionButton, pageListStickyColumnClass, pageListTableWithFixedColumnsClass, pageListTdClass, pageListThClass };