@epicbagel/saas-kit 1.32.0 → 1.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/THIRD_PARTY_NOTICES.md +6 -5
  2. package/dist/chunk-2DCJ2SFU.js +20 -0
  3. package/dist/chunk-2FVFPGP5.js +489 -0
  4. package/dist/{chunk-HTPPNW74.js → chunk-AWCXVYPL.js} +1 -1
  5. package/dist/chunk-B54ZEKBG.cjs +63 -0
  6. package/dist/chunk-CXAFTEEP.cjs +20 -0
  7. package/dist/{chunk-MOJHETNO.cjs → chunk-F3D5HA2F.cjs} +10 -10
  8. package/dist/chunk-G3SF4RRA.cjs +489 -0
  9. package/dist/chunk-HTTRUJQU.cjs +60 -0
  10. package/dist/{chunk-JS6BLIWL.js → chunk-IZF4WCK6.js} +11 -11
  11. package/dist/{chunk-PH2TV7XI.cjs → chunk-KOR2QR7I.cjs} +5 -5
  12. package/dist/{chunk-BGCNGYPL.cjs → chunk-PTMZTP3V.cjs} +2 -2
  13. package/dist/{chunk-6O3DUMF7.js → chunk-REGA2L5S.js} +1 -1
  14. package/dist/{chunk-PNI354BY.cjs → chunk-SL6ECEN6.cjs} +2 -2
  15. package/dist/{chunk-ZGTPNSR7.js → chunk-TS4MC3B3.js} +4 -4
  16. package/dist/chunk-TUQVHPSI.js +60 -0
  17. package/dist/chunk-VWOWPNKT.js +73 -0
  18. package/dist/chunk-XH2I3YJ6.js +63 -0
  19. package/dist/chunk-Y6X6XDHE.cjs +73 -0
  20. package/dist/primitives/accent-theme.cjs +66 -0
  21. package/dist/primitives/accent-theme.d.cts +32 -0
  22. package/dist/primitives/accent-theme.d.ts +32 -0
  23. package/dist/primitives/accent-theme.js +66 -0
  24. package/dist/primitives/activity-feed.cjs +2 -2
  25. package/dist/primitives/activity-feed.js +2 -2
  26. package/dist/primitives/agent-audio-visualizer-bar.cjs +3 -3
  27. package/dist/primitives/agent-audio-visualizer-bar.js +2 -2
  28. package/dist/primitives/alert.d.cts +1 -1
  29. package/dist/primitives/alert.d.ts +1 -1
  30. package/dist/primitives/app-layout.cjs +114 -0
  31. package/dist/primitives/app-layout.d.cts +47 -0
  32. package/dist/primitives/app-layout.d.ts +47 -0
  33. package/dist/primitives/app-layout.js +114 -0
  34. package/dist/primitives/app-sidebar.cjs +52 -0
  35. package/dist/primitives/app-sidebar.d.cts +105 -0
  36. package/dist/primitives/app-sidebar.d.ts +105 -0
  37. package/dist/primitives/app-sidebar.js +52 -0
  38. package/dist/primitives/archive-confirmation-dialog.cjs +2 -2
  39. package/dist/primitives/archive-confirmation-dialog.js +3 -3
  40. package/dist/primitives/back-bar.cjs +37 -0
  41. package/dist/primitives/back-bar.d.cts +31 -0
  42. package/dist/primitives/back-bar.d.ts +31 -0
  43. package/dist/primitives/back-bar.js +37 -0
  44. package/dist/primitives/badge.d.cts +1 -1
  45. package/dist/primitives/badge.d.ts +1 -1
  46. package/dist/primitives/batch-action-bar.cjs +134 -0
  47. package/dist/primitives/batch-action-bar.d.cts +27 -0
  48. package/dist/primitives/batch-action-bar.d.ts +27 -0
  49. package/dist/primitives/batch-action-bar.js +134 -0
  50. package/dist/primitives/board-view-internals.cjs +3 -3
  51. package/dist/primitives/board-view-internals.js +2 -2
  52. package/dist/primitives/board-view.cjs +8 -8
  53. package/dist/primitives/board-view.js +7 -7
  54. package/dist/primitives/brand-mark.cjs +26 -0
  55. package/dist/primitives/brand-mark.d.cts +10 -0
  56. package/dist/primitives/brand-mark.d.ts +10 -0
  57. package/dist/primitives/brand-mark.js +26 -0
  58. package/dist/primitives/bubble.d.cts +1 -1
  59. package/dist/primitives/bubble.d.ts +1 -1
  60. package/dist/primitives/button.d.cts +2 -2
  61. package/dist/primitives/button.d.ts +2 -2
  62. package/dist/primitives/chat.cjs +27 -27
  63. package/dist/primitives/chat.js +21 -21
  64. package/dist/primitives/code-block.cjs +4 -4
  65. package/dist/primitives/code-block.js +3 -3
  66. package/dist/primitives/command.cjs +129 -0
  67. package/dist/primitives/command.d.cts +60 -0
  68. package/dist/primitives/command.d.ts +60 -0
  69. package/dist/primitives/command.js +129 -0
  70. package/dist/primitives/compact-list.cjs +24 -0
  71. package/dist/primitives/compact-list.d.cts +18 -0
  72. package/dist/primitives/compact-list.d.ts +18 -0
  73. package/dist/primitives/compact-list.js +24 -0
  74. package/dist/primitives/connection.cjs +6 -6
  75. package/dist/primitives/connection.js +8 -8
  76. package/dist/primitives/context-bar.cjs +57 -0
  77. package/dist/primitives/context-bar.d.cts +50 -0
  78. package/dist/primitives/context-bar.d.ts +50 -0
  79. package/dist/primitives/context-bar.js +57 -0
  80. package/dist/primitives/copy-button.cjs +3 -3
  81. package/dist/primitives/copy-button.js +2 -2
  82. package/dist/primitives/cycling-prompt.cjs +102 -0
  83. package/dist/primitives/cycling-prompt.d.cts +24 -0
  84. package/dist/primitives/cycling-prompt.d.ts +24 -0
  85. package/dist/primitives/cycling-prompt.js +102 -0
  86. package/dist/primitives/dialog.d.cts +9 -9
  87. package/dist/primitives/dialog.d.ts +9 -9
  88. package/dist/primitives/dotted-list.cjs +41 -0
  89. package/dist/primitives/dotted-list.d.cts +28 -0
  90. package/dist/primitives/dotted-list.d.ts +28 -0
  91. package/dist/primitives/dotted-list.js +41 -0
  92. package/dist/primitives/drawer.d.cts +6 -6
  93. package/dist/primitives/drawer.d.ts +6 -6
  94. package/dist/primitives/field.cjs +3 -3
  95. package/dist/primitives/field.js +2 -2
  96. package/dist/primitives/file-dropzone.cjs +3 -3
  97. package/dist/primitives/file-dropzone.js +2 -2
  98. package/dist/primitives/file-preview.cjs +4 -4
  99. package/dist/primitives/file-preview.js +3 -3
  100. package/dist/primitives/filter-bar.cjs +4 -4
  101. package/dist/primitives/filter-bar.js +3 -3
  102. package/dist/primitives/fixed-action-bar.cjs +46 -0
  103. package/dist/primitives/fixed-action-bar.d.cts +15 -0
  104. package/dist/primitives/fixed-action-bar.d.ts +15 -0
  105. package/dist/primitives/fixed-action-bar.js +46 -0
  106. package/dist/primitives/floating-action-button.cjs +65 -0
  107. package/dist/primitives/floating-action-button.d.cts +52 -0
  108. package/dist/primitives/floating-action-button.d.ts +52 -0
  109. package/dist/primitives/floating-action-button.js +65 -0
  110. package/dist/primitives/form-section.cjs +38 -0
  111. package/dist/primitives/form-section.d.cts +43 -0
  112. package/dist/primitives/form-section.d.ts +43 -0
  113. package/dist/primitives/form-section.js +38 -0
  114. package/dist/primitives/key-value-grid.cjs +52 -0
  115. package/dist/primitives/key-value-grid.d.cts +20 -0
  116. package/dist/primitives/key-value-grid.d.ts +20 -0
  117. package/dist/primitives/key-value-grid.js +52 -0
  118. package/dist/primitives/marketing-footer.cjs +34 -0
  119. package/dist/primitives/marketing-footer.d.cts +29 -0
  120. package/dist/primitives/marketing-footer.d.ts +29 -0
  121. package/dist/primitives/marketing-footer.js +34 -0
  122. package/dist/primitives/marketing-header.cjs +41 -0
  123. package/dist/primitives/marketing-header.d.cts +31 -0
  124. package/dist/primitives/marketing-header.d.ts +31 -0
  125. package/dist/primitives/marketing-header.js +41 -0
  126. package/dist/primitives/marketing-section.cjs +8 -0
  127. package/dist/primitives/marketing-section.d.cts +35 -0
  128. package/dist/primitives/marketing-section.d.ts +35 -0
  129. package/dist/primitives/marketing-section.js +8 -0
  130. package/dist/primitives/marketing-shell.cjs +28 -0
  131. package/dist/primitives/marketing-shell.d.cts +14 -0
  132. package/dist/primitives/marketing-shell.d.ts +14 -0
  133. package/dist/primitives/marketing-shell.js +28 -0
  134. package/dist/primitives/notes.cjs +4 -4
  135. package/dist/primitives/notes.js +4 -4
  136. package/dist/primitives/page-header.cjs +3 -67
  137. package/dist/primitives/page-header.js +3 -67
  138. package/dist/primitives/page-tabs.cjs +4 -57
  139. package/dist/primitives/page-tabs.js +4 -57
  140. package/dist/primitives/pager.cjs +85 -0
  141. package/dist/primitives/pager.d.cts +39 -0
  142. package/dist/primitives/pager.d.ts +39 -0
  143. package/dist/primitives/pager.js +85 -0
  144. package/dist/primitives/pagination.cjs +119 -0
  145. package/dist/primitives/pagination.d.cts +41 -0
  146. package/dist/primitives/pagination.d.ts +41 -0
  147. package/dist/primitives/pagination.js +119 -0
  148. package/dist/primitives/poster.cjs +11 -1
  149. package/dist/primitives/poster.d.cts +12 -1
  150. package/dist/primitives/poster.d.ts +12 -1
  151. package/dist/primitives/poster.js +10 -0
  152. package/dist/primitives/resource-list.cjs +8 -8
  153. package/dist/primitives/resource-list.js +7 -7
  154. package/dist/primitives/responsive-embed.cjs +29 -0
  155. package/dist/primitives/responsive-embed.d.cts +14 -0
  156. package/dist/primitives/responsive-embed.d.ts +14 -0
  157. package/dist/primitives/responsive-embed.js +29 -0
  158. package/dist/primitives/save-bar.cjs +91 -0
  159. package/dist/primitives/save-bar.d.cts +55 -0
  160. package/dist/primitives/save-bar.d.ts +55 -0
  161. package/dist/primitives/save-bar.js +91 -0
  162. package/dist/primitives/settings-list.cjs +10 -0
  163. package/dist/primitives/settings-list.d.cts +31 -0
  164. package/dist/primitives/settings-list.d.ts +31 -0
  165. package/dist/primitives/settings-list.js +10 -0
  166. package/dist/primitives/settings-section.cjs +34 -0
  167. package/dist/primitives/settings-section.d.cts +44 -0
  168. package/dist/primitives/settings-section.d.ts +44 -0
  169. package/dist/primitives/settings-section.js +34 -0
  170. package/dist/primitives/sheet.d.cts +9 -9
  171. package/dist/primitives/sheet.d.ts +9 -9
  172. package/dist/primitives/short-video.cjs +110 -0
  173. package/dist/primitives/short-video.d.cts +30 -0
  174. package/dist/primitives/short-video.d.ts +30 -0
  175. package/dist/primitives/short-video.js +110 -0
  176. package/dist/primitives/stats-card.cjs +46 -0
  177. package/dist/primitives/stats-card.d.cts +19 -0
  178. package/dist/primitives/stats-card.d.ts +19 -0
  179. package/dist/primitives/stats-card.js +46 -0
  180. package/dist/primitives/stats-strip.cjs +38 -0
  181. package/dist/primitives/stats-strip.d.cts +24 -0
  182. package/dist/primitives/stats-strip.d.ts +24 -0
  183. package/dist/primitives/stats-strip.js +38 -0
  184. package/dist/primitives/step-list.cjs +32 -0
  185. package/dist/primitives/step-list.d.cts +19 -0
  186. package/dist/primitives/step-list.d.ts +19 -0
  187. package/dist/primitives/step-list.js +32 -0
  188. package/dist/primitives/steps.cjs +77 -0
  189. package/dist/primitives/steps.d.cts +35 -0
  190. package/dist/primitives/steps.d.ts +35 -0
  191. package/dist/primitives/steps.js +77 -0
  192. package/dist/primitives/tabbed-page-header.cjs +53 -0
  193. package/dist/primitives/tabbed-page-header.d.cts +26 -0
  194. package/dist/primitives/tabbed-page-header.d.ts +26 -0
  195. package/dist/primitives/tabbed-page-header.js +53 -0
  196. package/dist/primitives/theme-selector.cjs +17 -17
  197. package/dist/primitives/theme-selector.js +5 -5
  198. package/dist/primitives/voice-dictation-button.cjs +5 -5
  199. package/dist/primitives/voice-dictation-button.js +4 -4
  200. package/dist/primitives/voice-session-controls.cjs +4 -4
  201. package/dist/primitives/voice-session-controls.js +3 -3
  202. package/dist/primitives/workflow-assistant.cjs +5 -5
  203. package/dist/primitives/workflow-assistant.js +3 -3
  204. package/package.json +312 -1
  205. package/src/styles/components/poster.css +42 -1
  206. package/dist/{chunk-5OF6D3GH.js → chunk-4TJBXXUE.js} +3 -3
  207. package/dist/{chunk-DILYV4FI.js → chunk-7ZRFXJVN.js} +3 -3
  208. package/dist/{chunk-YYFVG5A6.cjs → chunk-D46FNEZ5.cjs} +2 -2
  209. package/dist/{chunk-NKWHDI4C.cjs → chunk-FB3VY2PL.cjs} +2 -2
  210. package/dist/{chunk-MW67PHAQ.cjs → chunk-GUVQAWUW.cjs} +9 -9
  211. package/dist/{chunk-WHDHUYS6.js → chunk-HBRVOGLA.js} +3 -3
  212. package/dist/{chunk-FARCLWLU.cjs → chunk-HHF5DEKM.cjs} +3 -3
  213. package/dist/{chunk-TWCJMFST.js → chunk-O42YC6ZQ.js} +3 -3
  214. package/dist/{chunk-ZJFYOXSM.cjs → chunk-SRVRNHCX.cjs} +2 -2
  215. package/dist/{chunk-UFFHGKI7.js → chunk-SW4T3O7M.js} +9 -9
  216. package/dist/{chunk-62UTAG2C.js → chunk-ULZB4A2I.js} +3 -3
  217. package/dist/{chunk-ZLEM2SAU.cjs → chunk-Z3JJSNR5.cjs} +2 -2
@@ -2,62 +2,9 @@
2
2
  "use client";
3
3
 
4
4
 
5
+ var _chunkB54ZEKBGcjs = require('../chunk-B54ZEKBG.cjs');
6
+ require('../chunk-DFB4ILN6.cjs');
7
+ require('../chunk-KWLSBTB2.cjs');
5
8
 
6
9
 
7
- var _chunkDFB4ILN6cjs = require('../chunk-DFB4ILN6.cjs');
8
-
9
-
10
- var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
11
-
12
- // src/primitives/page-tabs.tsx
13
- var _jsxruntime = require('react/jsx-runtime');
14
- function PageTabs({
15
- value,
16
- onValueChange,
17
- items,
18
- ariaLabel,
19
- layout = "equal",
20
- className
21
- }) {
22
- if (items.length === 0) return null;
23
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24
- _chunkDFB4ILN6cjs.Tabs,
25
- {
26
- value,
27
- onValueChange: (next) => onValueChange(next),
28
- className,
29
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30
- _chunkDFB4ILN6cjs.TabsList,
31
- {
32
- "aria-label": ariaLabel,
33
- scrollable: layout === "scroll",
34
- width: "full",
35
- className: _chunkKWLSBTB2cjs.cn.call(void 0,
36
- "w-full",
37
- layout === "equal" ? "grid h-auto p-1.5" : "justify-start"
38
- ),
39
- style: layout === "equal" ? { gridTemplateColumns: `repeat(${items.length}, minmax(0, 1fr))` } : void 0,
40
- children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
41
- _chunkDFB4ILN6cjs.TabsTrigger,
42
- {
43
- value: item.value,
44
- className: _chunkKWLSBTB2cjs.cn.call(void 0,
45
- layout === "equal" && "min-h-11 gap-2 text-sm sm:text-base",
46
- layout === "scroll" && "shrink-0 gap-2"
47
- ),
48
- children: [
49
- item.icon,
50
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate", children: item.label }),
51
- item.badge && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "shrink-0", children: item.badge })
52
- ]
53
- },
54
- item.value
55
- ))
56
- }
57
- )
58
- }
59
- );
60
- }
61
-
62
-
63
- exports.PageTabs = PageTabs;
10
+ exports.PageTabs = _chunkB54ZEKBGcjs.PageTabs;
@@ -1,63 +1,10 @@
1
1
  "use client";
2
2
  "use client";
3
3
  import {
4
- Tabs,
5
- TabsList,
6
- TabsTrigger
7
- } from "../chunk-7CRDYV3C.js";
8
- import {
9
- cn
10
- } from "../chunk-G6SRSWXB.js";
11
-
12
- // src/primitives/page-tabs.tsx
13
- import { jsx, jsxs } from "react/jsx-runtime";
14
- function PageTabs({
15
- value,
16
- onValueChange,
17
- items,
18
- ariaLabel,
19
- layout = "equal",
20
- className
21
- }) {
22
- if (items.length === 0) return null;
23
- return /* @__PURE__ */ jsx(
24
- Tabs,
25
- {
26
- value,
27
- onValueChange: (next) => onValueChange(next),
28
- className,
29
- children: /* @__PURE__ */ jsx(
30
- TabsList,
31
- {
32
- "aria-label": ariaLabel,
33
- scrollable: layout === "scroll",
34
- width: "full",
35
- className: cn(
36
- "w-full",
37
- layout === "equal" ? "grid h-auto p-1.5" : "justify-start"
38
- ),
39
- style: layout === "equal" ? { gridTemplateColumns: `repeat(${items.length}, minmax(0, 1fr))` } : void 0,
40
- children: items.map((item) => /* @__PURE__ */ jsxs(
41
- TabsTrigger,
42
- {
43
- value: item.value,
44
- className: cn(
45
- layout === "equal" && "min-h-11 gap-2 text-sm sm:text-base",
46
- layout === "scroll" && "shrink-0 gap-2"
47
- ),
48
- children: [
49
- item.icon,
50
- /* @__PURE__ */ jsx("span", { className: "truncate", children: item.label }),
51
- item.badge && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: item.badge })
52
- ]
53
- },
54
- item.value
55
- ))
56
- }
57
- )
58
- }
59
- );
60
- }
4
+ PageTabs
5
+ } from "../chunk-XH2I3YJ6.js";
6
+ import "../chunk-7CRDYV3C.js";
7
+ import "../chunk-G6SRSWXB.js";
61
8
  export {
62
9
  PageTabs
63
10
  };
@@ -0,0 +1,85 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+ "use client";
3
+
4
+
5
+ var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
6
+
7
+
8
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
9
+
10
+ // src/primitives/pager.tsx
11
+ var _lucidereact = require('lucide-react');
12
+ var _jsxruntime = require('react/jsx-runtime');
13
+ function Pager({
14
+ offset,
15
+ limit,
16
+ total,
17
+ onOffsetChange,
18
+ noun = "results",
19
+ formatRange,
20
+ disabled = false,
21
+ size = "sm",
22
+ children,
23
+ hideWhenSinglePage = true,
24
+ className
25
+ }) {
26
+ if (hideWhenSinglePage && total <= limit) return null;
27
+ const from = total === 0 ? 0 : Math.min(offset, Math.max(total - 1, 0)) + 1;
28
+ const to = Math.min(offset + limit, total);
29
+ const canPrev = offset > 0 && !disabled;
30
+ const canNext = offset + limit < total && !disabled;
31
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
32
+ "div",
33
+ {
34
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
35
+ "flex items-center justify-between gap-3 pt-3 text-xs text-muted-foreground",
36
+ className
37
+ ),
38
+ children: [
39
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "tabular-nums", children: formatRange ? formatRange(from, to, total) : total === 0 ? `No ${noun}` : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
40
+ from,
41
+ "\u2013",
42
+ to,
43
+ " of ",
44
+ total,
45
+ " ",
46
+ noun
47
+ ] }) }),
48
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
49
+ children,
50
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
51
+ _chunkJDEXZGIYcjs.Button,
52
+ {
53
+ type: "button",
54
+ size,
55
+ variant: "outline",
56
+ disabled: !canPrev,
57
+ onClick: () => onOffsetChange(Math.max(offset - limit, 0)),
58
+ children: [
59
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
60
+ "Previous"
61
+ ]
62
+ }
63
+ ),
64
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
65
+ _chunkJDEXZGIYcjs.Button,
66
+ {
67
+ type: "button",
68
+ size,
69
+ variant: "outline",
70
+ disabled: !canNext,
71
+ onClick: () => onOffsetChange(offset + limit),
72
+ children: [
73
+ "Next",
74
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" })
75
+ ]
76
+ }
77
+ )
78
+ ] })
79
+ ]
80
+ }
81
+ );
82
+ }
83
+
84
+
85
+ exports.Pager = Pager;
@@ -0,0 +1,39 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface PagerProps {
5
+ /** Index of the first row on the current page. */
6
+ offset: number;
7
+ /** Rows per page. */
8
+ limit: number;
9
+ /** Total rows across all pages. */
10
+ total: number;
11
+ onOffsetChange: (offset: number) => void;
12
+ /** Noun in the default range label. Defaults to "results". */
13
+ noun?: string;
14
+ /** Replaces the whole range label — for counts that aren't row-shaped. */
15
+ formatRange?: (from: number, to: number, total: number) => ReactNode;
16
+ /** Blocks both buttons — use while the next page is in flight. */
17
+ disabled?: boolean;
18
+ size?: "sm" | "default";
19
+ /** Extra content between the label and the buttons — a page-size select. */
20
+ children?: ReactNode;
21
+ /**
22
+ * Renders nothing when everything fits on one page. Defaults to true.
23
+ * Set false to keep the row count visible at all times.
24
+ */
25
+ hideWhenSinglePage?: boolean;
26
+ className?: string;
27
+ }
28
+ /**
29
+ * Offset/limit pager — "1–50 of 320" with prev/next.
30
+ *
31
+ * Distinct from `<Pagination>`, which is the ShadCN numbered-link strip
32
+ * for URL-driven navigation. This one is for server-paged lists that
33
+ * hold offset in state, which is most admin and dashboard tables.
34
+ *
35
+ * Purely presentational: it computes the next offset and hands it back.
36
+ */
37
+ declare function Pager({ offset, limit, total, onOffsetChange, noun, formatRange, disabled, size, children, hideWhenSinglePage, className, }: PagerProps): react_jsx_runtime.JSX.Element | null;
38
+
39
+ export { Pager, type PagerProps };
@@ -0,0 +1,39 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface PagerProps {
5
+ /** Index of the first row on the current page. */
6
+ offset: number;
7
+ /** Rows per page. */
8
+ limit: number;
9
+ /** Total rows across all pages. */
10
+ total: number;
11
+ onOffsetChange: (offset: number) => void;
12
+ /** Noun in the default range label. Defaults to "results". */
13
+ noun?: string;
14
+ /** Replaces the whole range label — for counts that aren't row-shaped. */
15
+ formatRange?: (from: number, to: number, total: number) => ReactNode;
16
+ /** Blocks both buttons — use while the next page is in flight. */
17
+ disabled?: boolean;
18
+ size?: "sm" | "default";
19
+ /** Extra content between the label and the buttons — a page-size select. */
20
+ children?: ReactNode;
21
+ /**
22
+ * Renders nothing when everything fits on one page. Defaults to true.
23
+ * Set false to keep the row count visible at all times.
24
+ */
25
+ hideWhenSinglePage?: boolean;
26
+ className?: string;
27
+ }
28
+ /**
29
+ * Offset/limit pager — "1–50 of 320" with prev/next.
30
+ *
31
+ * Distinct from `<Pagination>`, which is the ShadCN numbered-link strip
32
+ * for URL-driven navigation. This one is for server-paged lists that
33
+ * hold offset in state, which is most admin and dashboard tables.
34
+ *
35
+ * Purely presentational: it computes the next offset and hands it back.
36
+ */
37
+ declare function Pager({ offset, limit, total, onOffsetChange, noun, formatRange, disabled, size, children, hideWhenSinglePage, className, }: PagerProps): react_jsx_runtime.JSX.Element | null;
38
+
39
+ export { Pager, type PagerProps };
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ Button
5
+ } from "../chunk-W326GKML.js";
6
+ import {
7
+ cn
8
+ } from "../chunk-G6SRSWXB.js";
9
+
10
+ // src/primitives/pager.tsx
11
+ import { ChevronLeft, ChevronRight } from "lucide-react";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ function Pager({
14
+ offset,
15
+ limit,
16
+ total,
17
+ onOffsetChange,
18
+ noun = "results",
19
+ formatRange,
20
+ disabled = false,
21
+ size = "sm",
22
+ children,
23
+ hideWhenSinglePage = true,
24
+ className
25
+ }) {
26
+ if (hideWhenSinglePage && total <= limit) return null;
27
+ const from = total === 0 ? 0 : Math.min(offset, Math.max(total - 1, 0)) + 1;
28
+ const to = Math.min(offset + limit, total);
29
+ const canPrev = offset > 0 && !disabled;
30
+ const canNext = offset + limit < total && !disabled;
31
+ return /* @__PURE__ */ jsxs(
32
+ "div",
33
+ {
34
+ className: cn(
35
+ "flex items-center justify-between gap-3 pt-3 text-xs text-muted-foreground",
36
+ className
37
+ ),
38
+ children: [
39
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formatRange ? formatRange(from, to, total) : total === 0 ? `No ${noun}` : /* @__PURE__ */ jsxs(Fragment, { children: [
40
+ from,
41
+ "\u2013",
42
+ to,
43
+ " of ",
44
+ total,
45
+ " ",
46
+ noun
47
+ ] }) }),
48
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
49
+ children,
50
+ /* @__PURE__ */ jsxs(
51
+ Button,
52
+ {
53
+ type: "button",
54
+ size,
55
+ variant: "outline",
56
+ disabled: !canPrev,
57
+ onClick: () => onOffsetChange(Math.max(offset - limit, 0)),
58
+ children: [
59
+ /* @__PURE__ */ jsx(ChevronLeft, { className: "h-4 w-4" }),
60
+ "Previous"
61
+ ]
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsxs(
65
+ Button,
66
+ {
67
+ type: "button",
68
+ size,
69
+ variant: "outline",
70
+ disabled: !canNext,
71
+ onClick: () => onOffsetChange(offset + limit),
72
+ children: [
73
+ "Next",
74
+ /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4" })
75
+ ]
76
+ }
77
+ )
78
+ ] })
79
+ ]
80
+ }
81
+ );
82
+ }
83
+ export {
84
+ Pager
85
+ };
@@ -0,0 +1,119 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
2
+
3
+
4
+ var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
5
+
6
+
7
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
8
+
9
+ // src/primitives/pagination.tsx
10
+ var _react = require('react'); var React = _interopRequireWildcard(_react);
11
+
12
+
13
+
14
+
15
+ var _lia = require('react-icons/lia');
16
+ var _jsxruntime = require('react/jsx-runtime');
17
+ var Pagination = ({ className, marginTop = "none", ...props }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18
+ "nav",
19
+ {
20
+ role: "navigation",
21
+ "aria-label": "pagination",
22
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "mx-auto flex w-full justify-center", marginTop === "md" && "mt-4", className),
23
+ ...props
24
+ }
25
+ );
26
+ Pagination.displayName = "Pagination";
27
+ var PaginationContent = React.forwardRef(({ className, width = "auto", justify = "start", ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
28
+ "ul",
29
+ {
30
+ ref,
31
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex flex-row items-center gap-1", width === "full" && "w-full", justify === "between" && "justify-between", className),
32
+ ...props
33
+ }
34
+ ));
35
+ PaginationContent.displayName = "PaginationContent";
36
+ var PaginationItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { ref, className: _chunkKWLSBTB2cjs.cn.call(void 0, "", className), ...props }));
37
+ PaginationItem.displayName = "PaginationItem";
38
+ var PaginationLink = ({
39
+ className,
40
+ isActive,
41
+ disabled = false,
42
+ size = "icon",
43
+ ...props
44
+ }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
45
+ "a",
46
+ {
47
+ "aria-current": isActive ? "page" : void 0,
48
+ "aria-disabled": disabled || void 0,
49
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
50
+ _chunkJDEXZGIYcjs.buttonVariants.call(void 0, {
51
+ variant: isActive ? "outline" : "ghost",
52
+ size
53
+ }),
54
+ disabled && "pointer-events-none opacity-50",
55
+ className
56
+ ),
57
+ ...props
58
+ }
59
+ );
60
+ PaginationLink.displayName = "PaginationLink";
61
+ var PaginationPrevious = ({
62
+ className,
63
+ ...props
64
+ }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
65
+ PaginationLink,
66
+ {
67
+ "aria-label": "Go to previous page",
68
+ size: "default",
69
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "gap-1 pl-2.5", className),
70
+ ...props,
71
+ children: [
72
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lia.LiaChevronLeftSolid, { className: "h-4 w-4" }),
73
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Previous" })
74
+ ]
75
+ }
76
+ );
77
+ PaginationPrevious.displayName = "PaginationPrevious";
78
+ var PaginationNext = ({
79
+ className,
80
+ ...props
81
+ }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
82
+ PaginationLink,
83
+ {
84
+ "aria-label": "Go to next page",
85
+ size: "default",
86
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "gap-1 pr-2.5", className),
87
+ ...props,
88
+ children: [
89
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: "Next" }),
90
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lia.LiaChevronRightSolid, { className: "h-4 w-4" })
91
+ ]
92
+ }
93
+ );
94
+ PaginationNext.displayName = "PaginationNext";
95
+ var PaginationEllipsis = ({
96
+ className,
97
+ ...props
98
+ }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
99
+ "span",
100
+ {
101
+ "aria-hidden": true,
102
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex h-9 w-9 items-center justify-center", className),
103
+ ...props,
104
+ children: [
105
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lia.LiaEllipsisHSolid, { className: "h-4 w-4" }),
106
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: "More pages" })
107
+ ]
108
+ }
109
+ );
110
+ PaginationEllipsis.displayName = "PaginationEllipsis";
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationNext = PaginationNext; exports.PaginationPrevious = PaginationPrevious;
@@ -0,0 +1,41 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { ButtonProps } from './button.cjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface PaginationProps extends React.ComponentProps<"nav"> {
8
+ marginTop?: "none" | "md";
9
+ }
10
+ declare const Pagination: {
11
+ ({ className, marginTop, ...props }: PaginationProps): react_jsx_runtime.JSX.Element;
12
+ displayName: string;
13
+ };
14
+ interface PaginationContentProps extends React.ComponentProps<"ul"> {
15
+ width?: "auto" | "full";
16
+ justify?: "start" | "between";
17
+ }
18
+ declare const PaginationContent: React.ForwardRefExoticComponent<Omit<PaginationContentProps, "ref"> & React.RefAttributes<HTMLUListElement>>;
19
+ declare const PaginationItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
20
+ type PaginationLinkProps = {
21
+ isActive?: boolean;
22
+ disabled?: boolean;
23
+ } & Pick<ButtonProps, "size"> & React.ComponentProps<"a">;
24
+ declare const PaginationLink: {
25
+ ({ className, isActive, disabled, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
26
+ displayName: string;
27
+ };
28
+ declare const PaginationPrevious: {
29
+ ({ className, ...props }: React.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
30
+ displayName: string;
31
+ };
32
+ declare const PaginationNext: {
33
+ ({ className, ...props }: React.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
34
+ displayName: string;
35
+ };
36
+ declare const PaginationEllipsis: {
37
+ ({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
38
+ displayName: string;
39
+ };
40
+
41
+ export { Pagination, PaginationContent, type PaginationContentProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type PaginationProps };
@@ -0,0 +1,41 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { ButtonProps } from './button.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface PaginationProps extends React.ComponentProps<"nav"> {
8
+ marginTop?: "none" | "md";
9
+ }
10
+ declare const Pagination: {
11
+ ({ className, marginTop, ...props }: PaginationProps): react_jsx_runtime.JSX.Element;
12
+ displayName: string;
13
+ };
14
+ interface PaginationContentProps extends React.ComponentProps<"ul"> {
15
+ width?: "auto" | "full";
16
+ justify?: "start" | "between";
17
+ }
18
+ declare const PaginationContent: React.ForwardRefExoticComponent<Omit<PaginationContentProps, "ref"> & React.RefAttributes<HTMLUListElement>>;
19
+ declare const PaginationItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
20
+ type PaginationLinkProps = {
21
+ isActive?: boolean;
22
+ disabled?: boolean;
23
+ } & Pick<ButtonProps, "size"> & React.ComponentProps<"a">;
24
+ declare const PaginationLink: {
25
+ ({ className, isActive, disabled, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
26
+ displayName: string;
27
+ };
28
+ declare const PaginationPrevious: {
29
+ ({ className, ...props }: React.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
30
+ displayName: string;
31
+ };
32
+ declare const PaginationNext: {
33
+ ({ className, ...props }: React.ComponentProps<typeof PaginationLink>): react_jsx_runtime.JSX.Element;
34
+ displayName: string;
35
+ };
36
+ declare const PaginationEllipsis: {
37
+ ({ className, ...props }: React.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
38
+ displayName: string;
39
+ };
40
+
41
+ export { Pagination, PaginationContent, type PaginationContentProps, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, type PaginationProps };