@epicbagel/saas-kit 1.31.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 (219) 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 +406 -0
  149. package/dist/primitives/poster.d.cts +406 -0
  150. package/dist/primitives/poster.d.ts +406 -0
  151. package/dist/primitives/poster.js +406 -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 +322 -1
  205. package/src/styles/components/poster.css +1449 -0
  206. package/src/styles/components.css +1 -0
  207. package/src/styles/utilities.css +2 -2
  208. package/dist/{chunk-5OF6D3GH.js → chunk-4TJBXXUE.js} +3 -3
  209. package/dist/{chunk-DILYV4FI.js → chunk-7ZRFXJVN.js} +3 -3
  210. package/dist/{chunk-YYFVG5A6.cjs → chunk-D46FNEZ5.cjs} +2 -2
  211. package/dist/{chunk-NKWHDI4C.cjs → chunk-FB3VY2PL.cjs} +2 -2
  212. package/dist/{chunk-MW67PHAQ.cjs → chunk-GUVQAWUW.cjs} +9 -9
  213. package/dist/{chunk-WHDHUYS6.js → chunk-HBRVOGLA.js} +3 -3
  214. package/dist/{chunk-FARCLWLU.cjs → chunk-HHF5DEKM.cjs} +3 -3
  215. package/dist/{chunk-TWCJMFST.js → chunk-O42YC6ZQ.js} +3 -3
  216. package/dist/{chunk-ZJFYOXSM.cjs → chunk-SRVRNHCX.cjs} +2 -2
  217. package/dist/{chunk-UFFHGKI7.js → chunk-SW4T3O7M.js} +9 -9
  218. package/dist/{chunk-62UTAG2C.js → chunk-ULZB4A2I.js} +3 -3
  219. package/dist/{chunk-ZLEM2SAU.cjs → chunk-Z3JJSNR5.cjs} +2 -2
@@ -0,0 +1,24 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /**
4
+ * CyclingPrompt — typewriter caption that types, holds, deletes, and
5
+ * advances through a list of phrases. Pure useEffect state machine.
6
+ * Honors prefers-reduced-motion by showing the first phrase statically.
7
+ *
8
+ * Phrases are caller-supplied so each app shows its own examples.
9
+ */
10
+ declare function CyclingPrompt({ prompts, className, }: {
11
+ prompts: string[];
12
+ className?: string;
13
+ }): react_jsx_runtime.JSX.Element;
14
+ interface TypewriterTextProps {
15
+ text: string;
16
+ active?: boolean;
17
+ speedMs?: number;
18
+ onComplete?: () => void;
19
+ className?: string;
20
+ }
21
+ /** One-shot, accessible typewriter text for guided product demonstrations. */
22
+ declare function TypewriterText({ text, active, speedMs, onComplete, className, }: TypewriterTextProps): react_jsx_runtime.JSX.Element;
23
+
24
+ export { CyclingPrompt, TypewriterText, type TypewriterTextProps };
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ cn
5
+ } from "../chunk-G6SRSWXB.js";
6
+
7
+ // src/primitives/cycling-prompt.tsx
8
+ import { useEffect, useRef, useState } from "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ var TYPE_MS = 45;
11
+ var DELETE_MS = 22;
12
+ var HOLD_MS = 1800;
13
+ function CyclingPrompt({
14
+ prompts,
15
+ className
16
+ }) {
17
+ const [idx, setIdx] = useState(0);
18
+ const [text, setText] = useState("");
19
+ const [phase, setPhase] = useState(
20
+ "typing"
21
+ );
22
+ const [reducedMotion, setReducedMotion] = useState(false);
23
+ useEffect(() => {
24
+ if (typeof window === "undefined") return;
25
+ const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
26
+ setReducedMotion(mq.matches);
27
+ const onChange = () => setReducedMotion(mq.matches);
28
+ mq.addEventListener("change", onChange);
29
+ return () => mq.removeEventListener("change", onChange);
30
+ }, []);
31
+ useEffect(() => {
32
+ if (reducedMotion || prompts.length === 0) return;
33
+ const current = prompts[idx] ?? "";
34
+ if (phase === "typing") {
35
+ if (text.length < current.length) {
36
+ const t2 = setTimeout(
37
+ () => setText(current.slice(0, text.length + 1)),
38
+ TYPE_MS
39
+ );
40
+ return () => clearTimeout(t2);
41
+ }
42
+ const t = setTimeout(() => setPhase("deleting"), HOLD_MS);
43
+ return () => clearTimeout(t);
44
+ }
45
+ if (phase === "deleting") {
46
+ if (text.length > 0) {
47
+ const t = setTimeout(() => setText(text.slice(0, -1)), DELETE_MS);
48
+ return () => clearTimeout(t);
49
+ }
50
+ setIdx((i) => (i + 1) % prompts.length);
51
+ setPhase("typing");
52
+ }
53
+ }, [text, phase, idx, reducedMotion, prompts]);
54
+ const display = reducedMotion ? prompts[0] ?? "" : text;
55
+ return /* @__PURE__ */ jsxs("span", { className: cn("inline-flex items-baseline", className), children: [
56
+ /* @__PURE__ */ jsx("span", { children: display }),
57
+ !reducedMotion && /* @__PURE__ */ jsx(
58
+ "span",
59
+ {
60
+ "aria-hidden": true,
61
+ className: "ml-0.5 inline-block h-[1em] w-[2px] translate-y-[0.15em] animate-pulse bg-current"
62
+ }
63
+ )
64
+ ] });
65
+ }
66
+ function TypewriterText({
67
+ text,
68
+ active = true,
69
+ speedMs = 24,
70
+ onComplete,
71
+ className
72
+ }) {
73
+ const [length, setLength] = useState(active ? 0 : text.length);
74
+ const completed = useRef(false);
75
+ const onCompleteRef = useRef(onComplete);
76
+ useEffect(() => {
77
+ onCompleteRef.current = onComplete;
78
+ }, [onComplete]);
79
+ useEffect(() => {
80
+ setLength(active ? 0 : text.length);
81
+ completed.current = false;
82
+ }, [active, text]);
83
+ useEffect(() => {
84
+ if (!active || length >= text.length) {
85
+ if (length >= text.length && !completed.current) {
86
+ completed.current = true;
87
+ onCompleteRef.current?.();
88
+ }
89
+ return;
90
+ }
91
+ const timer = window.setTimeout(() => setLength((value) => value + 1), speedMs);
92
+ return () => window.clearTimeout(timer);
93
+ }, [active, length, speedMs, text.length]);
94
+ return /* @__PURE__ */ jsxs("span", { className: cn("whitespace-pre-wrap", className), "aria-label": text, children: [
95
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, children: text.slice(0, length) }),
96
+ active && length < text.length && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "ml-0.5 inline-block h-[1em] w-px animate-pulse bg-current motion-reduce:hidden" })
97
+ ] });
98
+ }
99
+ export {
100
+ CyclingPrompt,
101
+ TypewriterText
102
+ };
@@ -1,13 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as DialogPrimitive from '@radix-ui/react-dialog';
2
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
3
3
  import * as React from 'react';
4
4
 
5
- declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
6
- declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
8
- declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
- declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
5
+ declare const Dialog: React.FC<SheetPrimitive.DialogProps>;
6
+ declare const DialogTrigger: React.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const DialogPortal: React.FC<SheetPrimitive.DialogPortalProps>;
8
+ declare const DialogClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
+ declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content> {
11
11
  size?: "sm" | "md" | "lg" | "xl" | "2xl" | "wide";
12
12
  height?: "auto" | "viewport-md" | "viewport-lg";
13
13
  layout?: "grid" | "column";
@@ -30,13 +30,13 @@ declare const DialogFooter: {
30
30
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
31
31
  displayName: string;
32
32
  };
33
- interface DialogTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {
33
+ interface DialogTitleProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title> {
34
34
  visuallyHidden?: boolean;
35
35
  size?: "default" | "base";
36
36
  display?: "block" | "inline-flex";
37
37
  }
38
38
  declare const DialogTitle: React.ForwardRefExoticComponent<DialogTitleProps & React.RefAttributes<HTMLHeadingElement>>;
39
- interface DialogDescriptionProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {
39
+ interface DialogDescriptionProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description> {
40
40
  visuallyHidden?: boolean;
41
41
  }
42
42
  declare const DialogDescription: React.ForwardRefExoticComponent<DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
@@ -1,13 +1,13 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as DialogPrimitive from '@radix-ui/react-dialog';
2
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
3
3
  import * as React from 'react';
4
4
 
5
- declare const Dialog: React.FC<DialogPrimitive.DialogProps>;
6
- declare const DialogTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
- declare const DialogPortal: React.FC<DialogPrimitive.DialogPortalProps>;
8
- declare const DialogClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
- declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
5
+ declare const Dialog: React.FC<SheetPrimitive.DialogProps>;
6
+ declare const DialogTrigger: React.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
7
+ declare const DialogPortal: React.FC<SheetPrimitive.DialogPortalProps>;
8
+ declare const DialogClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
9
+ declare const DialogOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
+ interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content> {
11
11
  size?: "sm" | "md" | "lg" | "xl" | "2xl" | "wide";
12
12
  height?: "auto" | "viewport-md" | "viewport-lg";
13
13
  layout?: "grid" | "column";
@@ -30,13 +30,13 @@ declare const DialogFooter: {
30
30
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
31
31
  displayName: string;
32
32
  };
33
- interface DialogTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {
33
+ interface DialogTitleProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title> {
34
34
  visuallyHidden?: boolean;
35
35
  size?: "default" | "base";
36
36
  display?: "block" | "inline-flex";
37
37
  }
38
38
  declare const DialogTitle: React.ForwardRefExoticComponent<DialogTitleProps & React.RefAttributes<HTMLHeadingElement>>;
39
- interface DialogDescriptionProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {
39
+ interface DialogDescriptionProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description> {
40
40
  visuallyHidden?: boolean;
41
41
  }
42
42
  declare const DialogDescription: React.ForwardRefExoticComponent<DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
@@ -0,0 +1,41 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkW5I4FN7Gcjs = require('../chunk-W5I4FN7G.cjs');
5
+ require('../chunk-EJP2L5QV.cjs');
6
+
7
+
8
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
9
+
10
+ // src/primitives/dotted-list.tsx
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ function DottedList({
13
+ items,
14
+ maxItems,
15
+ moreSuffix = "more",
16
+ className
17
+ }) {
18
+ const visible = maxItems != null ? items.slice(0, maxItems) : items;
19
+ const overflow = maxItems != null && items.length > maxItems ? items.length - maxItems : 0;
20
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "ul", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "mt-2 space-y-0.5", className), children: [
21
+ visible.map((item, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "li", { className: "text-xs flex items-start gap-2 text-foreground/80", children: [
22
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkW5I4FN7Gcjs.SentimentDot, { sentiment: item.sentiment }),
23
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
24
+ item.text,
25
+ item.meta && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-muted-foreground", children: [
26
+ " \u2014 ",
27
+ item.meta
28
+ ] })
29
+ ] })
30
+ ] }, i)),
31
+ overflow > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "li", { className: "text-[11px] text-muted-foreground pl-4", children: [
32
+ "+ ",
33
+ overflow,
34
+ " ",
35
+ moreSuffix
36
+ ] })
37
+ ] });
38
+ }
39
+
40
+
41
+ exports.DottedList = DottedList;
@@ -0,0 +1,28 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { Sentiment } from './sentiment-dot.cjs';
4
+ import '../lib/status-colors.cjs';
5
+
6
+ interface DottedListItem {
7
+ sentiment: Sentiment;
8
+ /** Primary text of the bullet. */
9
+ text: ReactNode;
10
+ /** Dimmed trailing fragment — typically the matched field / source. */
11
+ meta?: ReactNode;
12
+ }
13
+ interface DottedListProps {
14
+ items: DottedListItem[];
15
+ /** Maximum items to render. Extra items collapse to a "+ N more" tail. */
16
+ maxItems?: number;
17
+ /** Label shown next to the count when the list is truncated. */
18
+ moreSuffix?: string;
19
+ className?: string;
20
+ }
21
+ /**
22
+ * Compact bullet list where each item leads with a coloured sentiment
23
+ * dot. Designed for "summary bullets" and "signal" surfaces where the
24
+ * dot conveys positive / negative / warn / neutral at a glance.
25
+ */
26
+ declare function DottedList({ items, maxItems, moreSuffix, className, }: DottedListProps): react_jsx_runtime.JSX.Element;
27
+
28
+ export { DottedList, type DottedListItem, type DottedListProps };
@@ -0,0 +1,28 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { Sentiment } from './sentiment-dot.js';
4
+ import '../lib/status-colors.js';
5
+
6
+ interface DottedListItem {
7
+ sentiment: Sentiment;
8
+ /** Primary text of the bullet. */
9
+ text: ReactNode;
10
+ /** Dimmed trailing fragment — typically the matched field / source. */
11
+ meta?: ReactNode;
12
+ }
13
+ interface DottedListProps {
14
+ items: DottedListItem[];
15
+ /** Maximum items to render. Extra items collapse to a "+ N more" tail. */
16
+ maxItems?: number;
17
+ /** Label shown next to the count when the list is truncated. */
18
+ moreSuffix?: string;
19
+ className?: string;
20
+ }
21
+ /**
22
+ * Compact bullet list where each item leads with a coloured sentiment
23
+ * dot. Designed for "summary bullets" and "signal" surfaces where the
24
+ * dot conveys positive / negative / warn / neutral at a glance.
25
+ */
26
+ declare function DottedList({ items, maxItems, moreSuffix, className, }: DottedListProps): react_jsx_runtime.JSX.Element;
27
+
28
+ export { DottedList, type DottedListItem, type DottedListProps };
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import {
3
+ SentimentDot
4
+ } from "../chunk-YWAQRAXP.js";
5
+ import "../chunk-F7JHSZNT.js";
6
+ import {
7
+ cn
8
+ } from "../chunk-G6SRSWXB.js";
9
+
10
+ // src/primitives/dotted-list.tsx
11
+ import { jsx, jsxs } from "react/jsx-runtime";
12
+ function DottedList({
13
+ items,
14
+ maxItems,
15
+ moreSuffix = "more",
16
+ className
17
+ }) {
18
+ const visible = maxItems != null ? items.slice(0, maxItems) : items;
19
+ const overflow = maxItems != null && items.length > maxItems ? items.length - maxItems : 0;
20
+ return /* @__PURE__ */ jsxs("ul", { className: cn("mt-2 space-y-0.5", className), children: [
21
+ visible.map((item, i) => /* @__PURE__ */ jsxs("li", { className: "text-xs flex items-start gap-2 text-foreground/80", children: [
22
+ /* @__PURE__ */ jsx(SentimentDot, { sentiment: item.sentiment }),
23
+ /* @__PURE__ */ jsxs("span", { children: [
24
+ item.text,
25
+ item.meta && /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
26
+ " \u2014 ",
27
+ item.meta
28
+ ] })
29
+ ] })
30
+ ] }, i)),
31
+ overflow > 0 && /* @__PURE__ */ jsxs("li", { className: "text-[11px] text-muted-foreground pl-4", children: [
32
+ "+ ",
33
+ overflow,
34
+ " ",
35
+ moreSuffix
36
+ ] })
37
+ ] });
38
+ }
39
+ export {
40
+ DottedList
41
+ };
@@ -1,6 +1,6 @@
1
1
  import * as vaul from 'vaul';
2
2
  import { Drawer as Drawer$1 } from 'vaul';
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as React from 'react';
6
6
 
@@ -10,10 +10,10 @@ declare const Drawer: {
10
10
  }): react_jsx_runtime.JSX.Element;
11
11
  displayName: string;
12
12
  };
13
- declare const DrawerTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
13
+ declare const DrawerTrigger: React.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
14
14
  declare const DrawerPortal: typeof vaul.Portal;
15
- declare const DrawerClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
16
- declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ declare const DrawerClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
16
+ declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
17
  interface DrawerContentProps extends React.ComponentPropsWithoutRef<typeof Drawer$1.Content> {
18
18
  height?: "auto" | "viewport-lg";
19
19
  overflow?: "visible" | "hidden" | "auto";
@@ -30,7 +30,7 @@ declare const DrawerFooter: {
30
30
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
31
31
  displayName: string;
32
32
  };
33
- declare const DrawerTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
34
- declare const DrawerDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
33
+ declare const DrawerTitle: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
34
+ declare const DrawerDescription: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
35
35
 
36
36
  export { Drawer, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, type DrawerHeaderProps, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
@@ -1,6 +1,6 @@
1
1
  import * as vaul from 'vaul';
2
2
  import { Drawer as Drawer$1 } from 'vaul';
3
- import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
  import * as React from 'react';
6
6
 
@@ -10,10 +10,10 @@ declare const Drawer: {
10
10
  }): react_jsx_runtime.JSX.Element;
11
11
  displayName: string;
12
12
  };
13
- declare const DrawerTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
13
+ declare const DrawerTrigger: React.ForwardRefExoticComponent<SheetPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
14
14
  declare const DrawerPortal: typeof vaul.Portal;
15
- declare const DrawerClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
16
- declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
15
+ declare const DrawerClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
16
+ declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
17
17
  interface DrawerContentProps extends React.ComponentPropsWithoutRef<typeof Drawer$1.Content> {
18
18
  height?: "auto" | "viewport-lg";
19
19
  overflow?: "visible" | "hidden" | "auto";
@@ -30,7 +30,7 @@ declare const DrawerFooter: {
30
30
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
31
31
  displayName: string;
32
32
  };
33
- declare const DrawerTitle: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
34
- declare const DrawerDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
33
+ declare const DrawerTitle: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogTitleProps & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
34
+ declare const DrawerDescription: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
35
35
 
36
36
  export { Drawer, DrawerClose, DrawerContent, type DrawerContentProps, DrawerDescription, DrawerFooter, DrawerHeader, type DrawerHeaderProps, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
@@ -13,9 +13,9 @@
13
13
 
14
14
 
15
15
 
16
- var _chunkZJFYOXSMcjs = require('../chunk-ZJFYOXSM.cjs');
17
- require('../chunk-NQK5ZWC7.cjs');
16
+ var _chunkSRVRNHCXcjs = require('../chunk-SRVRNHCX.cjs');
18
17
  require('../chunk-IQZLUT2Y.cjs');
18
+ require('../chunk-NQK5ZWC7.cjs');
19
19
  require('../chunk-KWLSBTB2.cjs');
20
20
 
21
21
 
@@ -30,4 +30,4 @@ require('../chunk-KWLSBTB2.cjs');
30
30
 
31
31
 
32
32
 
33
- exports.Field = _chunkZJFYOXSMcjs.Field; exports.FieldContent = _chunkZJFYOXSMcjs.FieldContent; exports.FieldDescription = _chunkZJFYOXSMcjs.FieldDescription; exports.FieldError = _chunkZJFYOXSMcjs.FieldError; exports.FieldGrid = _chunkZJFYOXSMcjs.FieldGrid; exports.FieldGroup = _chunkZJFYOXSMcjs.FieldGroup; exports.FieldLabel = _chunkZJFYOXSMcjs.FieldLabel; exports.FieldLegend = _chunkZJFYOXSMcjs.FieldLegend; exports.FieldSeparator = _chunkZJFYOXSMcjs.FieldSeparator; exports.FieldSet = _chunkZJFYOXSMcjs.FieldSet; exports.FieldTitle = _chunkZJFYOXSMcjs.FieldTitle; exports.FormField = _chunkZJFYOXSMcjs.FormField;
33
+ exports.Field = _chunkSRVRNHCXcjs.Field; exports.FieldContent = _chunkSRVRNHCXcjs.FieldContent; exports.FieldDescription = _chunkSRVRNHCXcjs.FieldDescription; exports.FieldError = _chunkSRVRNHCXcjs.FieldError; exports.FieldGrid = _chunkSRVRNHCXcjs.FieldGrid; exports.FieldGroup = _chunkSRVRNHCXcjs.FieldGroup; exports.FieldLabel = _chunkSRVRNHCXcjs.FieldLabel; exports.FieldLegend = _chunkSRVRNHCXcjs.FieldLegend; exports.FieldSeparator = _chunkSRVRNHCXcjs.FieldSeparator; exports.FieldSet = _chunkSRVRNHCXcjs.FieldSet; exports.FieldTitle = _chunkSRVRNHCXcjs.FieldTitle; exports.FormField = _chunkSRVRNHCXcjs.FormField;
@@ -13,9 +13,9 @@ import {
13
13
  FieldSet,
14
14
  FieldTitle,
15
15
  FormField
16
- } from "../chunk-TWCJMFST.js";
17
- import "../chunk-HYTILYE5.js";
16
+ } from "../chunk-O42YC6ZQ.js";
18
17
  import "../chunk-E2TQMDO7.js";
18
+ import "../chunk-HYTILYE5.js";
19
19
  import "../chunk-G6SRSWXB.js";
20
20
  export {
21
21
  Field,
@@ -5,9 +5,9 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkZLEM2SAUcjs = require('../chunk-ZLEM2SAU.cjs');
9
- require('../chunk-U2NES7VR.cjs');
8
+ var _chunkZ3JJSNR5cjs = require('../chunk-Z3JJSNR5.cjs');
10
9
  require('../chunk-373W6VAD.cjs');
10
+ require('../chunk-U2NES7VR.cjs');
11
11
  require('../chunk-JDEXZGIY.cjs');
12
12
  require('../chunk-KWLSBTB2.cjs');
13
13
 
@@ -15,4 +15,4 @@ require('../chunk-KWLSBTB2.cjs');
15
15
 
16
16
 
17
17
 
18
- exports.FileDropArea = _chunkZLEM2SAUcjs.FileDropArea; exports.FileDropzone = _chunkZLEM2SAUcjs.FileDropzone; exports.installFileDropGuard = _chunkZLEM2SAUcjs.installFileDropGuard; exports.useFileDropGuard = _chunkZLEM2SAUcjs.useFileDropGuard;
18
+ exports.FileDropArea = _chunkZ3JJSNR5cjs.FileDropArea; exports.FileDropzone = _chunkZ3JJSNR5cjs.FileDropzone; exports.installFileDropGuard = _chunkZ3JJSNR5cjs.installFileDropGuard; exports.useFileDropGuard = _chunkZ3JJSNR5cjs.useFileDropGuard;
@@ -5,9 +5,9 @@ import {
5
5
  FileDropzone,
6
6
  installFileDropGuard,
7
7
  useFileDropGuard
8
- } from "../chunk-WHDHUYS6.js";
9
- import "../chunk-ZRLUUZHK.js";
8
+ } from "../chunk-HBRVOGLA.js";
10
9
  import "../chunk-EIY5LLSP.js";
10
+ import "../chunk-ZRLUUZHK.js";
11
11
  import "../chunk-W326GKML.js";
12
12
  import "../chunk-G6SRSWXB.js";
13
13
  export {
@@ -18,8 +18,9 @@ require('../chunk-ELPV44S6.cjs');
18
18
  require('../chunk-2BHI5ZWJ.cjs');
19
19
 
20
20
 
21
- var _chunkBGCNGYPLcjs = require('../chunk-BGCNGYPL.cjs');
22
- require('../chunk-FARCLWLU.cjs');
21
+ var _chunkPTMZTP3Vcjs = require('../chunk-PTMZTP3V.cjs');
22
+ require('../chunk-HHF5DEKM.cjs');
23
+ require('../chunk-4LXN6GLZ.cjs');
23
24
 
24
25
 
25
26
  var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
@@ -30,7 +31,6 @@ var _chunkT2ZFSPE4cjs = require('../chunk-T2ZFSPE4.cjs');
30
31
 
31
32
  var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
32
33
  require('../chunk-KWLSBTB2.cjs');
33
- require('../chunk-4LXN6GLZ.cjs');
34
34
 
35
35
  // src/primitives/file-preview.tsx
36
36
  var _lucidereact = require('lucide-react');
@@ -281,7 +281,7 @@ function FilePreviewBody({
281
281
  kind === "markdown" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKENBU3NVcjs.LazyMarkdown, { components: { a: NewTabLink, ...markdownComponents }, children: text.text }) : (
282
282
  // The theme's relaxed leading is a fixed 1.8rem, which spaces a
283
283
  // file's small monospace lines apart; read it at 20px lines.
284
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGCNGYPLcjs.CodeBlock, { wrap: true, className: "[&>pre]:leading-5", children: text.text })
284
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPTMZTP3Vcjs.CodeBlock, { wrap: true, className: "[&>pre]:leading-5", children: text.text })
285
285
  )
286
286
  ] });
287
287
  }
@@ -18,8 +18,9 @@ import "../chunk-INNGGLMZ.js";
18
18
  import "../chunk-4HWCNRK4.js";
19
19
  import {
20
20
  CodeBlock
21
- } from "../chunk-HTPPNW74.js";
22
- import "../chunk-DILYV4FI.js";
21
+ } from "../chunk-AWCXVYPL.js";
22
+ import "../chunk-7ZRFXJVN.js";
23
+ import "../chunk-ZWZAAGQF.js";
23
24
  import {
24
25
  Text
25
26
  } from "../chunk-EIY5LLSP.js";
@@ -30,7 +31,6 @@ import {
30
31
  Button
31
32
  } from "../chunk-W326GKML.js";
32
33
  import "../chunk-G6SRSWXB.js";
33
- import "../chunk-ZWZAAGQF.js";
34
34
 
35
35
  // src/primitives/file-preview.tsx
36
36
  import { Download, FileQuestion, FileWarning, Loader2 } from "lucide-react";
@@ -2,19 +2,19 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkMW67PHAQcjs = require('../chunk-MW67PHAQ.cjs');
6
- require('../chunk-PPX2VPGI.cjs');
5
+ var _chunkGUVQAWUWcjs = require('../chunk-GUVQAWUW.cjs');
7
6
  require('../chunk-WNXVGUBF.cjs');
8
7
  require('../chunk-IQZLUT2Y.cjs');
9
8
  require('../chunk-JH4GAGOQ.cjs');
10
9
  require('../chunk-V5SPFLKW.cjs');
11
10
  require('../chunk-VOTCYG3F.cjs');
11
+ require('../chunk-PPX2VPGI.cjs');
12
+ require('../chunk-R35FT53G.cjs');
12
13
  require('../chunk-PQUSJEXL.cjs');
13
14
  require('../chunk-VGTINL5Q.cjs');
14
15
  require('../chunk-I6GUOEBO.cjs');
15
16
  require('../chunk-JDEXZGIY.cjs');
16
17
  require('../chunk-KWLSBTB2.cjs');
17
- require('../chunk-R35FT53G.cjs');
18
18
 
19
19
 
20
- exports.FilterBar = _chunkMW67PHAQcjs.FilterBar;
20
+ exports.FilterBar = _chunkGUVQAWUWcjs.FilterBar;
@@ -2,19 +2,19 @@
2
2
  "use client";
3
3
  import {
4
4
  FilterBar
5
- } from "../chunk-UFFHGKI7.js";
6
- import "../chunk-G76JANB4.js";
5
+ } from "../chunk-SW4T3O7M.js";
7
6
  import "../chunk-YG7FBJRM.js";
8
7
  import "../chunk-E2TQMDO7.js";
9
8
  import "../chunk-OICAYRVH.js";
10
9
  import "../chunk-J6NXDZR5.js";
11
10
  import "../chunk-H2CCBRVG.js";
11
+ import "../chunk-G76JANB4.js";
12
+ import "../chunk-PIU5SSUV.js";
12
13
  import "../chunk-QMA3WVB7.js";
13
14
  import "../chunk-H7TETFLB.js";
14
15
  import "../chunk-D4ZL2OEQ.js";
15
16
  import "../chunk-W326GKML.js";
16
17
  import "../chunk-G6SRSWXB.js";
17
- import "../chunk-PIU5SSUV.js";
18
18
  export {
19
19
  FilterBar
20
20
  };
@@ -0,0 +1,46 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
5
+
6
+
7
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
8
+
9
+ // src/primitives/fixed-action-bar.tsx
10
+ var _jsxruntime = require('react/jsx-runtime');
11
+ var widthStyles = {
12
+ compact: "max-w-2xl",
13
+ narrow: "max-w-3xl",
14
+ wide: "max-w-5xl",
15
+ full: "max-w-none"
16
+ };
17
+ function FixedActionBar({
18
+ title,
19
+ description,
20
+ children,
21
+ width = "narrow",
22
+ actionsWidth = "auto",
23
+ className
24
+ }) {
25
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26
+ "aside",
27
+ {
28
+ "aria-label": "Page action",
29
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
30
+ "fixed inset-x-0 bottom-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm",
31
+ "pb-[env(safe-area-inset-bottom)] supports-backdrop-filter:bg-background/80",
32
+ className
33
+ ),
34
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "mx-auto flex items-center gap-4 px-4 py-3 md:px-6", title ? "justify-between" : "justify-end", widthStyles[width]), children: [
35
+ title && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0", children: [
36
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { className: "truncate font-medium", children: title }),
37
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { variant: "muted", className: "text-sm", children: description })
38
+ ] }),
39
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "shrink-0", actionsWidth === "full" && "w-full"), children })
40
+ ] })
41
+ }
42
+ );
43
+ }
44
+
45
+
46
+ exports.FixedActionBar = FixedActionBar;
@@ -0,0 +1,15 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface FixedActionBarProps {
5
+ title?: ReactNode;
6
+ description?: ReactNode;
7
+ children: ReactNode;
8
+ width?: "compact" | "narrow" | "wide" | "full";
9
+ actionsWidth?: "auto" | "full";
10
+ className?: string;
11
+ }
12
+ /** Persistent bottom context and action for read-only or transactional pages. */
13
+ declare function FixedActionBar({ title, description, children, width, actionsWidth, className, }: FixedActionBarProps): react_jsx_runtime.JSX.Element;
14
+
15
+ export { FixedActionBar, type FixedActionBarProps };