@epicbagel/saas-kit 1.32.0 → 1.34.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 (228) hide show
  1. package/README.md +67 -0
  2. package/THIRD_PARTY_NOTICES.md +6 -5
  3. package/dist/chunk-2BNEE3U6.cjs +36 -0
  4. package/dist/chunk-2DCJ2SFU.js +20 -0
  5. package/dist/chunk-5GFMSK27.js +489 -0
  6. package/dist/chunk-5PHOKJCT.cjs +42 -0
  7. package/dist/chunk-B54ZEKBG.cjs +63 -0
  8. package/dist/chunk-BB7PO2BW.js +67 -0
  9. package/dist/chunk-BOMVE7QO.cjs +47 -0
  10. package/dist/{chunk-FPOJ2NGG.js → chunk-C3VZMTVB.js} +1 -1
  11. package/dist/chunk-CXAFTEEP.cjs +20 -0
  12. package/dist/chunk-EXHF3QUY.js +36 -0
  13. package/dist/chunk-FYNHRHVY.cjs +47 -0
  14. package/dist/chunk-HTTRUJQU.cjs +60 -0
  15. package/dist/chunk-I3GBXIFL.cjs +67 -0
  16. package/dist/chunk-O3G3TVPU.js +27 -0
  17. package/dist/{chunk-JS6BLIWL.js → chunk-ROUWBWEQ.js} +7 -7
  18. package/dist/chunk-TDCVZKMX.cjs +27 -0
  19. package/dist/{chunk-E2UVQXBO.cjs → chunk-TP74SBRH.cjs} +6 -6
  20. package/dist/chunk-TUQVHPSI.js +60 -0
  21. package/dist/chunk-UKYUWSF2.cjs +489 -0
  22. package/dist/{chunk-MOJHETNO.cjs → chunk-VUMLLKWY.cjs} +5 -5
  23. package/dist/chunk-VWOWPNKT.js +73 -0
  24. package/dist/chunk-W5L6LQI3.js +42 -0
  25. package/dist/chunk-WMTCL463.js +47 -0
  26. package/dist/chunk-WTVL2FK7.js +47 -0
  27. package/dist/chunk-XH2I3YJ6.js +63 -0
  28. package/dist/chunk-Y6X6XDHE.cjs +73 -0
  29. package/dist/primitives/accent-theme.cjs +7 -0
  30. package/dist/primitives/accent-theme.d.cts +32 -0
  31. package/dist/primitives/accent-theme.d.ts +32 -0
  32. package/dist/primitives/accent-theme.js +7 -0
  33. package/dist/primitives/activity-feed.cjs +3 -3
  34. package/dist/primitives/activity-feed.js +4 -4
  35. package/dist/primitives/anchor.cjs +3 -30
  36. package/dist/primitives/anchor.js +3 -30
  37. package/dist/primitives/app-layout.cjs +114 -0
  38. package/dist/primitives/app-layout.d.cts +47 -0
  39. package/dist/primitives/app-layout.d.ts +47 -0
  40. package/dist/primitives/app-layout.js +114 -0
  41. package/dist/primitives/app-sidebar.cjs +52 -0
  42. package/dist/primitives/app-sidebar.d.cts +105 -0
  43. package/dist/primitives/app-sidebar.d.ts +105 -0
  44. package/dist/primitives/app-sidebar.js +52 -0
  45. package/dist/primitives/back-bar.cjs +37 -0
  46. package/dist/primitives/back-bar.d.cts +31 -0
  47. package/dist/primitives/back-bar.d.ts +31 -0
  48. package/dist/primitives/back-bar.js +37 -0
  49. package/dist/primitives/batch-action-bar.cjs +134 -0
  50. package/dist/primitives/batch-action-bar.d.cts +27 -0
  51. package/dist/primitives/batch-action-bar.d.ts +27 -0
  52. package/dist/primitives/batch-action-bar.js +134 -0
  53. package/dist/primitives/board-view.cjs +7 -7
  54. package/dist/primitives/board-view.js +6 -6
  55. package/dist/primitives/brand-mark.cjs +8 -0
  56. package/dist/primitives/brand-mark.d.cts +10 -0
  57. package/dist/primitives/brand-mark.d.ts +10 -0
  58. package/dist/primitives/brand-mark.js +8 -0
  59. package/dist/primitives/branded-page.cjs +201 -0
  60. package/dist/primitives/branded-page.d.cts +118 -0
  61. package/dist/primitives/branded-page.d.ts +118 -0
  62. package/dist/primitives/branded-page.js +201 -0
  63. package/dist/primitives/call-card.cjs +2 -2
  64. package/dist/primitives/call-card.js +3 -3
  65. package/dist/primitives/chat.cjs +21 -21
  66. package/dist/primitives/chat.js +17 -17
  67. package/dist/primitives/command.cjs +129 -0
  68. package/dist/primitives/command.d.cts +60 -0
  69. package/dist/primitives/command.d.ts +60 -0
  70. package/dist/primitives/command.js +129 -0
  71. package/dist/primitives/compact-list.cjs +24 -0
  72. package/dist/primitives/compact-list.d.cts +18 -0
  73. package/dist/primitives/compact-list.d.ts +18 -0
  74. package/dist/primitives/compact-list.js +24 -0
  75. package/dist/primitives/connection.cjs +2 -2
  76. package/dist/primitives/connection.js +2 -2
  77. package/dist/primitives/context-bar.cjs +57 -0
  78. package/dist/primitives/context-bar.d.cts +50 -0
  79. package/dist/primitives/context-bar.d.ts +50 -0
  80. package/dist/primitives/context-bar.js +57 -0
  81. package/dist/primitives/cycling-prompt.cjs +102 -0
  82. package/dist/primitives/cycling-prompt.d.cts +24 -0
  83. package/dist/primitives/cycling-prompt.d.ts +24 -0
  84. package/dist/primitives/cycling-prompt.js +102 -0
  85. package/dist/primitives/dialog.d.cts +9 -9
  86. package/dist/primitives/dialog.d.ts +9 -9
  87. package/dist/primitives/document-preview.cjs +5 -5
  88. package/dist/primitives/document-preview.js +3 -3
  89. package/dist/primitives/dotted-list.cjs +41 -0
  90. package/dist/primitives/dotted-list.d.cts +28 -0
  91. package/dist/primitives/dotted-list.d.ts +28 -0
  92. package/dist/primitives/dotted-list.js +41 -0
  93. package/dist/primitives/drawer.d.cts +6 -6
  94. package/dist/primitives/drawer.d.ts +6 -6
  95. package/dist/primitives/field.cjs +3 -3
  96. package/dist/primitives/field.js +2 -2
  97. package/dist/primitives/file-dropzone.cjs +3 -3
  98. package/dist/primitives/file-dropzone.js +2 -2
  99. package/dist/primitives/file-preview-internals.cjs +4 -4
  100. package/dist/primitives/file-preview-internals.js +3 -3
  101. package/dist/primitives/file-preview.cjs +12 -12
  102. package/dist/primitives/file-preview.js +3 -3
  103. package/dist/primitives/filter-bar.cjs +4 -4
  104. package/dist/primitives/filter-bar.js +3 -3
  105. package/dist/primitives/fixed-action-bar.cjs +9 -0
  106. package/dist/primitives/fixed-action-bar.d.cts +15 -0
  107. package/dist/primitives/fixed-action-bar.d.ts +15 -0
  108. package/dist/primitives/fixed-action-bar.js +9 -0
  109. package/dist/primitives/floating-action-button.cjs +65 -0
  110. package/dist/primitives/floating-action-button.d.cts +52 -0
  111. package/dist/primitives/floating-action-button.d.ts +52 -0
  112. package/dist/primitives/floating-action-button.js +65 -0
  113. package/dist/primitives/form-section.cjs +38 -0
  114. package/dist/primitives/form-section.d.cts +43 -0
  115. package/dist/primitives/form-section.d.ts +43 -0
  116. package/dist/primitives/form-section.js +38 -0
  117. package/dist/primitives/key-value-grid.cjs +52 -0
  118. package/dist/primitives/key-value-grid.d.cts +20 -0
  119. package/dist/primitives/key-value-grid.d.ts +20 -0
  120. package/dist/primitives/key-value-grid.js +52 -0
  121. package/dist/primitives/marketing-footer.cjs +34 -0
  122. package/dist/primitives/marketing-footer.d.cts +29 -0
  123. package/dist/primitives/marketing-footer.d.ts +29 -0
  124. package/dist/primitives/marketing-footer.js +34 -0
  125. package/dist/primitives/marketing-header.cjs +8 -0
  126. package/dist/primitives/marketing-header.d.cts +31 -0
  127. package/dist/primitives/marketing-header.d.ts +31 -0
  128. package/dist/primitives/marketing-header.js +8 -0
  129. package/dist/primitives/marketing-section.cjs +8 -0
  130. package/dist/primitives/marketing-section.d.cts +35 -0
  131. package/dist/primitives/marketing-section.d.ts +35 -0
  132. package/dist/primitives/marketing-section.js +8 -0
  133. package/dist/primitives/marketing-shell.cjs +28 -0
  134. package/dist/primitives/marketing-shell.d.cts +14 -0
  135. package/dist/primitives/marketing-shell.d.ts +14 -0
  136. package/dist/primitives/marketing-shell.js +28 -0
  137. package/dist/primitives/notes.cjs +3 -3
  138. package/dist/primitives/notes.js +3 -3
  139. package/dist/primitives/page-header.cjs +3 -67
  140. package/dist/primitives/page-header.js +3 -67
  141. package/dist/primitives/page-shell.cjs +3 -41
  142. package/dist/primitives/page-shell.js +3 -41
  143. package/dist/primitives/page-tabs.cjs +4 -57
  144. package/dist/primitives/page-tabs.js +4 -57
  145. package/dist/primitives/pager.cjs +85 -0
  146. package/dist/primitives/pager.d.cts +39 -0
  147. package/dist/primitives/pager.d.ts +39 -0
  148. package/dist/primitives/pager.js +85 -0
  149. package/dist/primitives/pagination.cjs +119 -0
  150. package/dist/primitives/pagination.d.cts +41 -0
  151. package/dist/primitives/pagination.d.ts +41 -0
  152. package/dist/primitives/pagination.js +119 -0
  153. package/dist/primitives/poster.cjs +11 -1
  154. package/dist/primitives/poster.d.cts +12 -1
  155. package/dist/primitives/poster.d.ts +12 -1
  156. package/dist/primitives/poster.js +10 -0
  157. package/dist/primitives/resource-list.cjs +7 -7
  158. package/dist/primitives/resource-list.js +6 -6
  159. package/dist/primitives/responsive-dialog.cjs +3 -3
  160. package/dist/primitives/responsive-dialog.js +2 -2
  161. package/dist/primitives/responsive-embed.cjs +29 -0
  162. package/dist/primitives/responsive-embed.d.cts +14 -0
  163. package/dist/primitives/responsive-embed.d.ts +14 -0
  164. package/dist/primitives/responsive-embed.js +29 -0
  165. package/dist/primitives/save-bar.cjs +91 -0
  166. package/dist/primitives/save-bar.d.cts +55 -0
  167. package/dist/primitives/save-bar.d.ts +55 -0
  168. package/dist/primitives/save-bar.js +91 -0
  169. package/dist/primitives/section.cjs +2 -2
  170. package/dist/primitives/section.js +3 -3
  171. package/dist/primitives/settings-list.cjs +10 -0
  172. package/dist/primitives/settings-list.d.cts +31 -0
  173. package/dist/primitives/settings-list.d.ts +31 -0
  174. package/dist/primitives/settings-list.js +10 -0
  175. package/dist/primitives/settings-section.cjs +34 -0
  176. package/dist/primitives/settings-section.d.cts +44 -0
  177. package/dist/primitives/settings-section.d.ts +44 -0
  178. package/dist/primitives/settings-section.js +34 -0
  179. package/dist/primitives/sheet.d.cts +9 -9
  180. package/dist/primitives/sheet.d.ts +9 -9
  181. package/dist/primitives/short-video.cjs +110 -0
  182. package/dist/primitives/short-video.d.cts +30 -0
  183. package/dist/primitives/short-video.d.ts +30 -0
  184. package/dist/primitives/short-video.js +110 -0
  185. package/dist/primitives/stats-card.cjs +46 -0
  186. package/dist/primitives/stats-card.d.cts +19 -0
  187. package/dist/primitives/stats-card.d.ts +19 -0
  188. package/dist/primitives/stats-card.js +46 -0
  189. package/dist/primitives/stats-strip.cjs +38 -0
  190. package/dist/primitives/stats-strip.d.cts +24 -0
  191. package/dist/primitives/stats-strip.d.ts +24 -0
  192. package/dist/primitives/stats-strip.js +38 -0
  193. package/dist/primitives/step-list.cjs +32 -0
  194. package/dist/primitives/step-list.d.cts +19 -0
  195. package/dist/primitives/step-list.d.ts +19 -0
  196. package/dist/primitives/step-list.js +32 -0
  197. package/dist/primitives/steps.cjs +77 -0
  198. package/dist/primitives/steps.d.cts +35 -0
  199. package/dist/primitives/steps.d.ts +35 -0
  200. package/dist/primitives/steps.js +77 -0
  201. package/dist/primitives/switch-field.cjs +3 -3
  202. package/dist/primitives/switch-field.js +3 -3
  203. package/dist/primitives/tabbed-page-header.cjs +53 -0
  204. package/dist/primitives/tabbed-page-header.d.cts +26 -0
  205. package/dist/primitives/tabbed-page-header.d.ts +26 -0
  206. package/dist/primitives/tabbed-page-header.js +53 -0
  207. package/dist/primitives/theme-selector.cjs +15 -15
  208. package/dist/primitives/theme-selector.js +2 -2
  209. package/dist/primitives/voice-dictation-button.cjs +3 -3
  210. package/dist/primitives/voice-dictation-button.js +2 -2
  211. package/dist/primitives/voice-session-controls.cjs +3 -3
  212. package/dist/primitives/voice-session-controls.js +2 -2
  213. package/dist/primitives/workflow-assistant.cjs +4 -4
  214. package/dist/primitives/workflow-assistant.js +2 -2
  215. package/package.json +322 -1
  216. package/src/styles/components/poster.css +42 -1
  217. package/dist/{chunk-PH2TV7XI.cjs → chunk-2YW5VA2V.cjs} +2 -2
  218. package/dist/{chunk-UFFHGKI7.js → chunk-6LB37JWO.js} +8 -8
  219. package/dist/{chunk-AO56ET4F.cjs → chunk-BTHYGHOH.cjs} +2 -2
  220. package/dist/{chunk-WHDHUYS6.js → chunk-HBRVOGLA.js} +3 -3
  221. package/dist/{chunk-6O3DUMF7.js → chunk-HTUYUMAH.js} +3 -3
  222. package/dist/{chunk-PNI354BY.cjs → chunk-JMNDFISN.cjs} +2 -2
  223. package/dist/{chunk-CRZ4INEJ.js → chunk-JTI4244T.js} +10 -10
  224. package/dist/{chunk-ZGTPNSR7.js → chunk-NNEV5RHQ.js} +3 -3
  225. package/dist/{chunk-TWCJMFST.js → chunk-O42YC6ZQ.js} +3 -3
  226. package/dist/{chunk-MW67PHAQ.cjs → chunk-S2IMM37Q.cjs} +6 -6
  227. package/dist/{chunk-ZJFYOXSM.cjs → chunk-SRVRNHCX.cjs} +2 -2
  228. package/dist/{chunk-ZLEM2SAU.cjs → chunk-Z3JJSNR5.cjs} +2 -2
@@ -0,0 +1,134 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+ "use client";
3
+
4
+
5
+ var _chunkI6GUOEBOcjs = require('../chunk-I6GUOEBO.cjs');
6
+
7
+
8
+ var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
9
+ require('../chunk-KWLSBTB2.cjs');
10
+
11
+ // src/primitives/batch-action-bar.tsx
12
+ var _react = require('react');
13
+ var _jsxruntime = require('react/jsx-runtime');
14
+ function BatchActionBar({
15
+ selectedIds,
16
+ processing = false,
17
+ onClearSelection,
18
+ onSelectAll,
19
+ totalItems,
20
+ clearSelectionLabel = "Clear Selection",
21
+ showClearSelection = true,
22
+ badgeText,
23
+ children,
24
+ placement = "fixed"
25
+ }) {
26
+ const [showMobileActions, setShowMobileActions] = _react.useState.call(void 0, false);
27
+ if (selectedIds.length === 0) {
28
+ return null;
29
+ }
30
+ const displayBadgeText = badgeText || `${selectedIds.length} selected`;
31
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: placement === "fixed" ? "fixed bottom-4 left-1/2 -translate-x-1/2 z-50" : "sticky bottom-4 z-20 flex justify-center", children: [
32
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "md:hidden", children: !showMobileActions ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95", children: [
33
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34
+ _chunkI6GUOEBOcjs.Badge,
35
+ {
36
+ variant: "default",
37
+ className: "whitespace-nowrap flex-shrink-0",
38
+ children: displayBadgeText
39
+ }
40
+ ),
41
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42
+ _chunkJDEXZGIYcjs.Button,
43
+ {
44
+ size: "sm",
45
+ onClick: () => setShowMobileActions(true),
46
+ className: "ml-2",
47
+ disabled: processing,
48
+ children: "Batch Actions"
49
+ }
50
+ )
51
+ ] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95 max-w-[90vw]", children: [
52
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between", children: [
53
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
54
+ _chunkI6GUOEBOcjs.Badge,
55
+ {
56
+ variant: "default",
57
+ className: "whitespace-nowrap flex-shrink-0",
58
+ children: displayBadgeText
59
+ }
60
+ ),
61
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
62
+ _chunkJDEXZGIYcjs.Button,
63
+ {
64
+ size: "sm",
65
+ variant: "outline",
66
+ onClick: () => setShowMobileActions(false),
67
+ children: "Close"
68
+ }
69
+ )
70
+ ] }),
71
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
72
+ children,
73
+ (showClearSelection || onSelectAll) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
74
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:block h-6 border-l border-border mx-2" }),
75
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 w-full", children: [
76
+ onSelectAll && totalItems && selectedIds.length < totalItems && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
77
+ _chunkJDEXZGIYcjs.Button,
78
+ {
79
+ size: "sm",
80
+ variant: "outline",
81
+ onClick: onSelectAll,
82
+ className: "flex-1",
83
+ disabled: processing,
84
+ children: "Select All"
85
+ }
86
+ ),
87
+ showClearSelection && onClearSelection && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
88
+ _chunkJDEXZGIYcjs.Button,
89
+ {
90
+ size: "sm",
91
+ variant: "outline",
92
+ onClick: onClearSelection,
93
+ className: "flex-1",
94
+ disabled: processing,
95
+ children: clearSelectionLabel
96
+ }
97
+ )
98
+ ] })
99
+ ] })
100
+ ] })
101
+ ] }) }),
102
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "hidden md:flex items-center gap-3 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95 max-w-[90vw]", children: [
103
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkI6GUOEBOcjs.Badge, { variant: "default", className: "whitespace-nowrap flex-shrink-0", children: displayBadgeText }),
104
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 border-l border-border mx-2" }),
105
+ children,
106
+ (showClearSelection || onSelectAll) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
107
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 border-l border-border mx-2" }),
108
+ onSelectAll && totalItems && selectedIds.length < totalItems && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
109
+ _chunkJDEXZGIYcjs.Button,
110
+ {
111
+ size: "sm",
112
+ variant: "outline",
113
+ onClick: onSelectAll,
114
+ disabled: processing,
115
+ children: "Select All"
116
+ }
117
+ ),
118
+ showClearSelection && onClearSelection && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
119
+ _chunkJDEXZGIYcjs.Button,
120
+ {
121
+ size: "sm",
122
+ variant: "outline",
123
+ onClick: onClearSelection,
124
+ disabled: processing,
125
+ children: clearSelectionLabel
126
+ }
127
+ )
128
+ ] })
129
+ ] })
130
+ ] });
131
+ }
132
+
133
+
134
+ exports.BatchActionBar = BatchActionBar;
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface BatchActionBarProps {
5
+ /** Array of selected IDs */
6
+ selectedIds: (string | number)[];
7
+ /** Whether any batch processing is currently happening */
8
+ processing?: boolean;
9
+ /** Callback to clear selection */
10
+ onClearSelection?: () => void;
11
+ /** Callback to select all items */
12
+ onSelectAll?: () => void;
13
+ /** Total number of items available for selection */
14
+ totalItems?: number;
15
+ /** Custom clear selection button label */
16
+ clearSelectionLabel?: string;
17
+ /** Whether to show the clear selection button */
18
+ showClearSelection?: boolean;
19
+ /** Custom badge text (defaults to "X selected") */
20
+ badgeText?: string;
21
+ /** Batch action buttons rendered as children */
22
+ children?: ReactNode;
23
+ placement?: "fixed" | "sticky";
24
+ }
25
+ declare function BatchActionBar({ selectedIds, processing, onClearSelection, onSelectAll, totalItems, clearSelectionLabel, showClearSelection, badgeText, children, placement, }: BatchActionBarProps): react_jsx_runtime.JSX.Element | null;
26
+
27
+ export { BatchActionBar, type BatchActionBarProps };
@@ -0,0 +1,27 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface BatchActionBarProps {
5
+ /** Array of selected IDs */
6
+ selectedIds: (string | number)[];
7
+ /** Whether any batch processing is currently happening */
8
+ processing?: boolean;
9
+ /** Callback to clear selection */
10
+ onClearSelection?: () => void;
11
+ /** Callback to select all items */
12
+ onSelectAll?: () => void;
13
+ /** Total number of items available for selection */
14
+ totalItems?: number;
15
+ /** Custom clear selection button label */
16
+ clearSelectionLabel?: string;
17
+ /** Whether to show the clear selection button */
18
+ showClearSelection?: boolean;
19
+ /** Custom badge text (defaults to "X selected") */
20
+ badgeText?: string;
21
+ /** Batch action buttons rendered as children */
22
+ children?: ReactNode;
23
+ placement?: "fixed" | "sticky";
24
+ }
25
+ declare function BatchActionBar({ selectedIds, processing, onClearSelection, onSelectAll, totalItems, clearSelectionLabel, showClearSelection, badgeText, children, placement, }: BatchActionBarProps): react_jsx_runtime.JSX.Element | null;
26
+
27
+ export { BatchActionBar, type BatchActionBarProps };
@@ -0,0 +1,134 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ Badge
5
+ } from "../chunk-D4ZL2OEQ.js";
6
+ import {
7
+ Button
8
+ } from "../chunk-W326GKML.js";
9
+ import "../chunk-G6SRSWXB.js";
10
+
11
+ // src/primitives/batch-action-bar.tsx
12
+ import { useState } from "react";
13
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
+ function BatchActionBar({
15
+ selectedIds,
16
+ processing = false,
17
+ onClearSelection,
18
+ onSelectAll,
19
+ totalItems,
20
+ clearSelectionLabel = "Clear Selection",
21
+ showClearSelection = true,
22
+ badgeText,
23
+ children,
24
+ placement = "fixed"
25
+ }) {
26
+ const [showMobileActions, setShowMobileActions] = useState(false);
27
+ if (selectedIds.length === 0) {
28
+ return null;
29
+ }
30
+ const displayBadgeText = badgeText || `${selectedIds.length} selected`;
31
+ return /* @__PURE__ */ jsxs("div", { className: placement === "fixed" ? "fixed bottom-4 left-1/2 -translate-x-1/2 z-50" : "sticky bottom-4 z-20 flex justify-center", children: [
32
+ /* @__PURE__ */ jsx("div", { className: "md:hidden", children: !showMobileActions ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95", children: [
33
+ /* @__PURE__ */ jsx(
34
+ Badge,
35
+ {
36
+ variant: "default",
37
+ className: "whitespace-nowrap flex-shrink-0",
38
+ children: displayBadgeText
39
+ }
40
+ ),
41
+ /* @__PURE__ */ jsx(
42
+ Button,
43
+ {
44
+ size: "sm",
45
+ onClick: () => setShowMobileActions(true),
46
+ className: "ml-2",
47
+ disabled: processing,
48
+ children: "Batch Actions"
49
+ }
50
+ )
51
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95 max-w-[90vw]", children: [
52
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
53
+ /* @__PURE__ */ jsx(
54
+ Badge,
55
+ {
56
+ variant: "default",
57
+ className: "whitespace-nowrap flex-shrink-0",
58
+ children: displayBadgeText
59
+ }
60
+ ),
61
+ /* @__PURE__ */ jsx(
62
+ Button,
63
+ {
64
+ size: "sm",
65
+ variant: "outline",
66
+ onClick: () => setShowMobileActions(false),
67
+ children: "Close"
68
+ }
69
+ )
70
+ ] }),
71
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
72
+ children,
73
+ (showClearSelection || onSelectAll) && /* @__PURE__ */ jsxs(Fragment, { children: [
74
+ /* @__PURE__ */ jsx("div", { className: "hidden md:block h-6 border-l border-border mx-2" }),
75
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2 w-full", children: [
76
+ onSelectAll && totalItems && selectedIds.length < totalItems && /* @__PURE__ */ jsx(
77
+ Button,
78
+ {
79
+ size: "sm",
80
+ variant: "outline",
81
+ onClick: onSelectAll,
82
+ className: "flex-1",
83
+ disabled: processing,
84
+ children: "Select All"
85
+ }
86
+ ),
87
+ showClearSelection && onClearSelection && /* @__PURE__ */ jsx(
88
+ Button,
89
+ {
90
+ size: "sm",
91
+ variant: "outline",
92
+ onClick: onClearSelection,
93
+ className: "flex-1",
94
+ disabled: processing,
95
+ children: clearSelectionLabel
96
+ }
97
+ )
98
+ ] })
99
+ ] })
100
+ ] })
101
+ ] }) }),
102
+ /* @__PURE__ */ jsxs("div", { className: "hidden md:flex items-center gap-3 p-4 bg-background border-2 rounded-lg shadow-lg backdrop-blur-sm bg-opacity-95 max-w-[90vw]", children: [
103
+ /* @__PURE__ */ jsx(Badge, { variant: "default", className: "whitespace-nowrap flex-shrink-0", children: displayBadgeText }),
104
+ /* @__PURE__ */ jsx("div", { className: "h-6 border-l border-border mx-2" }),
105
+ children,
106
+ (showClearSelection || onSelectAll) && /* @__PURE__ */ jsxs(Fragment, { children: [
107
+ /* @__PURE__ */ jsx("div", { className: "h-6 border-l border-border mx-2" }),
108
+ onSelectAll && totalItems && selectedIds.length < totalItems && /* @__PURE__ */ jsx(
109
+ Button,
110
+ {
111
+ size: "sm",
112
+ variant: "outline",
113
+ onClick: onSelectAll,
114
+ disabled: processing,
115
+ children: "Select All"
116
+ }
117
+ ),
118
+ showClearSelection && onClearSelection && /* @__PURE__ */ jsx(
119
+ Button,
120
+ {
121
+ size: "sm",
122
+ variant: "outline",
123
+ onClick: onClearSelection,
124
+ disabled: processing,
125
+ children: clearSelectionLabel
126
+ }
127
+ )
128
+ ] })
129
+ ] })
130
+ ] });
131
+ }
132
+ export {
133
+ BatchActionBar
134
+ };
@@ -2,20 +2,20 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkMOJHETNOcjs = require('../chunk-MOJHETNO.cjs');
5
+ var _chunkVUMLLKWYcjs = require('../chunk-VUMLLKWY.cjs');
6
6
  require('../chunk-EUFV25KL.cjs');
7
7
  require('../chunk-7YCKII7G.cjs');
8
- require('../chunk-MW67PHAQ.cjs');
9
- require('../chunk-PPX2VPGI.cjs');
8
+ require('../chunk-S2IMM37Q.cjs');
10
9
  require('../chunk-WNXVGUBF.cjs');
11
10
  require('../chunk-IQZLUT2Y.cjs');
12
- require('../chunk-LELBCBDT.cjs');
13
- require('../chunk-U2NES7VR.cjs');
14
11
  require('../chunk-JH4GAGOQ.cjs');
12
+ require('../chunk-LELBCBDT.cjs');
13
+ require('../chunk-VOTCYG3F.cjs');
15
14
  require('../chunk-YYFVG5A6.cjs');
16
15
  require('../chunk-XLIAY56V.cjs');
17
16
  require('../chunk-V5SPFLKW.cjs');
18
- require('../chunk-VOTCYG3F.cjs');
17
+ require('../chunk-PPX2VPGI.cjs');
18
+ require('../chunk-U2NES7VR.cjs');
19
19
  require('../chunk-PQUSJEXL.cjs');
20
20
  require('../chunk-VGTINL5Q.cjs');
21
21
  require('../chunk-I6GUOEBO.cjs');
@@ -57,7 +57,7 @@ function BoardView({
57
57
  onSortChange
58
58
  }) {
59
59
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
60
- _chunkMOJHETNOcjs.ResourceList,
60
+ _chunkVUMLLKWYcjs.ResourceList,
61
61
  {
62
62
  data,
63
63
  loading,
@@ -2,20 +2,20 @@
2
2
  "use client";
3
3
  import {
4
4
  ResourceList
5
- } from "../chunk-JS6BLIWL.js";
5
+ } from "../chunk-ROUWBWEQ.js";
6
6
  import "../chunk-43UMPZWD.js";
7
7
  import "../chunk-EEHIMPD7.js";
8
- import "../chunk-UFFHGKI7.js";
9
- import "../chunk-G76JANB4.js";
8
+ import "../chunk-6LB37JWO.js";
10
9
  import "../chunk-YG7FBJRM.js";
11
10
  import "../chunk-E2TQMDO7.js";
12
- import "../chunk-H2O6NMLZ.js";
13
- import "../chunk-ZRLUUZHK.js";
14
11
  import "../chunk-OICAYRVH.js";
12
+ import "../chunk-H2O6NMLZ.js";
13
+ import "../chunk-H2CCBRVG.js";
15
14
  import "../chunk-62UTAG2C.js";
16
15
  import "../chunk-LELFPLTE.js";
17
16
  import "../chunk-J6NXDZR5.js";
18
- import "../chunk-H2CCBRVG.js";
17
+ import "../chunk-G76JANB4.js";
18
+ import "../chunk-ZRLUUZHK.js";
19
19
  import "../chunk-QMA3WVB7.js";
20
20
  import "../chunk-H7TETFLB.js";
21
21
  import "../chunk-D4ZL2OEQ.js";
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkTDCVZKMXcjs = require('../chunk-TDCVZKMX.cjs');
5
+ require('../chunk-KWLSBTB2.cjs');
6
+
7
+
8
+ exports.BrandMark = _chunkTDCVZKMXcjs.BrandMark;
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { ImgHTMLAttributes } from 'react';
3
+
4
+ interface BrandMarkProps extends ImgHTMLAttributes<HTMLImageElement> {
5
+ size?: "sm" | "md" | "lg";
6
+ }
7
+ /** A contained, intrinsic-ratio image for a company or product logo. */
8
+ declare const BrandMark: React.ForwardRefExoticComponent<BrandMarkProps & React.RefAttributes<HTMLImageElement>>;
9
+
10
+ export { BrandMark, type BrandMarkProps };
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { ImgHTMLAttributes } from 'react';
3
+
4
+ interface BrandMarkProps extends ImgHTMLAttributes<HTMLImageElement> {
5
+ size?: "sm" | "md" | "lg";
6
+ }
7
+ /** A contained, intrinsic-ratio image for a company or product logo. */
8
+ declare const BrandMark: React.ForwardRefExoticComponent<BrandMarkProps & React.RefAttributes<HTMLImageElement>>;
9
+
10
+ export { BrandMark, type BrandMarkProps };
@@ -0,0 +1,8 @@
1
+ "use client";
2
+ import {
3
+ BrandMark
4
+ } from "../chunk-O3G3TVPU.js";
5
+ import "../chunk-G6SRSWXB.js";
6
+ export {
7
+ BrandMark
8
+ };
@@ -0,0 +1,201 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+
3
+
4
+ var _chunkFYNHRHVYcjs = require('../chunk-FYNHRHVY.cjs');
5
+
6
+
7
+ var _chunk5PHOKJCTcjs = require('../chunk-5PHOKJCT.cjs');
8
+
9
+
10
+ var _chunkBOMVE7QOcjs = require('../chunk-BOMVE7QO.cjs');
11
+
12
+
13
+ var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
14
+
15
+
16
+ var _chunkLELBCBDTcjs = require('../chunk-LELBCBDT.cjs');
17
+
18
+
19
+ var _chunkTDCVZKMXcjs = require('../chunk-TDCVZKMX.cjs');
20
+
21
+
22
+ var _chunk2BNEE3U6cjs = require('../chunk-2BNEE3U6.cjs');
23
+
24
+
25
+ var _chunkT2ZFSPE4cjs = require('../chunk-T2ZFSPE4.cjs');
26
+
27
+
28
+ var _chunkI3GBXIFLcjs = require('../chunk-I3GBXIFL.cjs');
29
+
30
+
31
+ var _chunkCLYAASFNcjs = require('../chunk-CLYAASFN.cjs');
32
+ require('../chunk-JDEXZGIY.cjs');
33
+
34
+
35
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
36
+
37
+ // src/primitives/branded-page.tsx
38
+ var _lucidereact = require('lucide-react');
39
+ var _jsxruntime = require('react/jsx-runtime');
40
+ var UNAVAILABLE = {
41
+ "not-found": {
42
+ icon: _lucidereact.Link2Off,
43
+ title: "This link isn't available",
44
+ description: "It may have expired or been withdrawn. Ask whoever shared it for a new one."
45
+ },
46
+ expired: {
47
+ icon: _lucidereact.Clock,
48
+ title: "This link has expired",
49
+ description: "Ask whoever shared it for a new one."
50
+ },
51
+ archived: {
52
+ icon: _lucidereact.Archive,
53
+ title: "This page has been archived",
54
+ description: "It is no longer shared. Ask whoever shared it if you still need it."
55
+ },
56
+ revoked: {
57
+ icon: _lucidereact.EyeOff,
58
+ title: "This link is no longer active",
59
+ description: "Whoever shared it has stopped sharing it. Ask them for a new one if you still need it."
60
+ }
61
+ };
62
+ function StateIcon({ icon, spin }) {
63
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkT2ZFSPE4cjs.Icon, { icon, tone: "muted", strokeWidth: 1.5, spin, className: "size-12" });
64
+ }
65
+ function BrandedPageUnavailable({
66
+ reason = "not-found",
67
+ icon,
68
+ title,
69
+ description,
70
+ action,
71
+ className
72
+ }) {
73
+ const words = UNAVAILABLE[reason];
74
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
75
+ _chunkCLYAASFNcjs.EmptyState,
76
+ {
77
+ variant: "error",
78
+ size: "lg",
79
+ surface: "plain",
80
+ icon: _nullishCoalesce(icon, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StateIcon, { icon: words.icon }))),
81
+ title: title || words.title,
82
+ description: _nullishCoalesce(description, () => ( words.description)),
83
+ className,
84
+ children: action ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "branded-page-unavailable-action", className: "flex flex-wrap justify-center gap-2 pt-1", children: action }) : null
85
+ }
86
+ );
87
+ }
88
+ function BrandedPageLoading({ label, className }) {
89
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { role: "status", "data-slot": "branded-page-loading", className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
90
+ _chunkCLYAASFNcjs.EmptyState,
91
+ {
92
+ icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StateIcon, { icon: _lucidereact.LoaderCircle, spin: true }),
93
+ size: "lg",
94
+ surface: "plain",
95
+ title: label || "Loading\u2026"
96
+ }
97
+ ) });
98
+ }
99
+ function isBrandData(brand) {
100
+ return typeof brand === "object" && brand !== null && !("$$typeof" in brand);
101
+ }
102
+ function brandMark({ name, logoUrl, logoAlt, href }) {
103
+ const mark = logoUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTDCVZKMXcjs.BrandMark, { src: logoUrl, alt: _nullishCoalesce(logoAlt, () => ( (name || "Logo"))) }) : name ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLELBCBDTcjs.Heading, { level: 3, as: "span", children: name }) : null;
104
+ if (!mark || !href) return mark;
105
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
106
+ _chunk2BNEE3U6cjs.Anchor,
107
+ {
108
+ href,
109
+ "data-slot": "branded-page-brand-link",
110
+ className: "rounded-sm ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-4",
111
+ children: mark
112
+ }
113
+ );
114
+ }
115
+ function BrandedPage({
116
+ brand,
117
+ accent,
118
+ palette,
119
+ headerTrailing,
120
+ width = "narrow",
121
+ padding = "base",
122
+ surface = "muted",
123
+ children,
124
+ credit,
125
+ creditPrintVisibility = "visible",
126
+ actionBar,
127
+ loading = false,
128
+ unavailable = false,
129
+ className
130
+ }) {
131
+ const mark = isBrandData(brand) ? brandMark(brand) : _nullishCoalesce(brand, () => ( null));
132
+ const state = loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BrandedPageLoading, { ...loading === true ? null : loading }) : unavailable ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BrandedPageUnavailable, { ...unavailable === true ? null : unavailable }) : null;
133
+ const bar = state ? null : actionBar;
134
+ return (
135
+ // The palette is pinned out here, and the canvas painted opaque in it:
136
+ // the muted surface is translucent, and would otherwise be tinted by
137
+ // the visitor's own palette on the document behind it.
138
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "branded-page", "data-theme": palette, className: _chunkKWLSBTB2cjs.cn.call(void 0, "bg-background text-foreground", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkI3GBXIFLcjs.AccentTheme, { colours: accent, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
139
+ "div",
140
+ {
141
+ "data-slot": "branded-page-surface",
142
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
143
+ "flex min-h-screen flex-col print:min-h-0",
144
+ surface === "muted" && "bg-muted/40 print:bg-background"
145
+ ),
146
+ children: [
147
+ mark || headerTrailing ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
148
+ _chunk5PHOKJCTcjs.MarketingHeader,
149
+ {
150
+ brand: mark,
151
+ trailing: headerTrailing ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "contents print:hidden", children: headerTrailing }) : void 0
152
+ }
153
+ ) : null,
154
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
155
+ _chunkFYNHRHVYcjs.PageShell,
156
+ {
157
+ width,
158
+ padding,
159
+ printMode: "compact",
160
+ bottomInset: bar ? "action" : "default",
161
+ className: bar ? "print:pb-0" : void 0,
162
+ children: state ? (
163
+ // Both states start at the same height, a little way down the
164
+ // screen, so nothing jumps when loading turns out to be a dead link.
165
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-slot": "branded-page-state", className: "pt-[12vh]", children: state })
166
+ ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
167
+ children,
168
+ credit ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
169
+ _chunk373W6VADcjs.Text,
170
+ {
171
+ variant: "caption",
172
+ align: "center",
173
+ "data-slot": "branded-page-credit",
174
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, creditPrintVisibility === "hidden" && "print:hidden"),
175
+ children: credit
176
+ }
177
+ ) : null
178
+ ] })
179
+ }
180
+ ),
181
+ bar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
182
+ _chunkBOMVE7QOcjs.FixedActionBar,
183
+ {
184
+ title: bar.title,
185
+ description: bar.description,
186
+ width,
187
+ actionsWidth: bar.actionsWidth,
188
+ className: "print:hidden",
189
+ children: bar.actions
190
+ }
191
+ ) : null
192
+ ]
193
+ }
194
+ ) }) })
195
+ );
196
+ }
197
+
198
+
199
+
200
+
201
+ exports.BrandedPage = BrandedPage; exports.BrandedPageLoading = BrandedPageLoading; exports.BrandedPageUnavailable = BrandedPageUnavailable;