@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,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 {
@@ -5,10 +5,10 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkE2UVQXBOcjs = require('../chunk-E2UVQXBO.cjs');
9
- require('../chunk-AO56ET4F.cjs');
10
- require('../chunk-WDXEJDMO.cjs');
8
+ var _chunkTP74SBRHcjs = require('../chunk-TP74SBRH.cjs');
9
+ require('../chunk-BTHYGHOH.cjs');
11
10
  require('../chunk-2BHI5ZWJ.cjs');
11
+ require('../chunk-WDXEJDMO.cjs');
12
12
  require('../chunk-T2ZFSPE4.cjs');
13
13
  require('../chunk-JDEXZGIY.cjs');
14
14
  require('../chunk-KWLSBTB2.cjs');
@@ -17,4 +17,4 @@ require('../chunk-KWLSBTB2.cjs');
17
17
 
18
18
 
19
19
 
20
- exports.PreviewDialog = _chunkE2UVQXBOcjs.PreviewDialog; exports.PreviewLoading = _chunkE2UVQXBOcjs.PreviewLoading; exports.PreviewNotice = _chunkE2UVQXBOcjs.PreviewNotice; exports.PreviewStage = _chunkE2UVQXBOcjs.PreviewStage;
20
+ exports.PreviewDialog = _chunkTP74SBRHcjs.PreviewDialog; exports.PreviewLoading = _chunkTP74SBRHcjs.PreviewLoading; exports.PreviewNotice = _chunkTP74SBRHcjs.PreviewNotice; exports.PreviewStage = _chunkTP74SBRHcjs.PreviewStage;
@@ -5,10 +5,10 @@ import {
5
5
  PreviewLoading,
6
6
  PreviewNotice,
7
7
  PreviewStage
8
- } from "../chunk-FPOJ2NGG.js";
9
- import "../chunk-CRZ4INEJ.js";
10
- import "../chunk-3QT5VYZ3.js";
8
+ } from "../chunk-C3VZMTVB.js";
9
+ import "../chunk-JTI4244T.js";
11
10
  import "../chunk-4HWCNRK4.js";
11
+ import "../chunk-3QT5VYZ3.js";
12
12
  import "../chunk-KN4RPX35.js";
13
13
  import "../chunk-W326GKML.js";
14
14
  import "../chunk-G6SRSWXB.js";
@@ -8,9 +8,8 @@ var _chunk4UUTKR3Vcjs = require('../chunk-4UUTKR3V.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunkE2UVQXBOcjs = require('../chunk-E2UVQXBO.cjs');
12
- require('../chunk-AO56ET4F.cjs');
13
- require('../chunk-WDXEJDMO.cjs');
11
+ var _chunkTP74SBRHcjs = require('../chunk-TP74SBRH.cjs');
12
+ require('../chunk-BTHYGHOH.cjs');
14
13
 
15
14
 
16
15
  var _chunkKENBU3NVcjs = require('../chunk-KENBU3NV.cjs');
@@ -20,6 +19,7 @@ require('../chunk-2BHI5ZWJ.cjs');
20
19
 
21
20
  var _chunkBGCNGYPLcjs = require('../chunk-BGCNGYPL.cjs');
22
21
  require('../chunk-FARCLWLU.cjs');
22
+ require('../chunk-WDXEJDMO.cjs');
23
23
 
24
24
 
25
25
  var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
@@ -155,7 +155,7 @@ function FilePreview({
155
155
  truncatedLabel = "Showing the start of this file. Download it to see the rest."
156
156
  }) {
157
157
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
158
- _chunkE2UVQXBOcjs.PreviewDialog,
158
+ _chunkTP74SBRHcjs.PreviewDialog,
159
159
  {
160
160
  open,
161
161
  onOpenChange,
@@ -266,17 +266,17 @@ function FilePreviewBody({
266
266
  const reads = kind === "text" || kind === "markdown";
267
267
  const text = useFileText(ready && reads ? file : null, ready && reads ? src : null);
268
268
  const objectUrl = useObjectUrl(ready && !reads ? file : null, kind === "pdf" ? "application/pdf" : void 0);
269
- const pending = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewLoading, { label: loadingLabel }) });
270
- const failed = (message) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message, children: _nullishCoalesce(fallback, () => ( download)) }) });
269
+ const pending = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewLoading, { label: loadingLabel }) });
270
+ const failed = (message) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message, children: _nullishCoalesce(fallback, () => ( download)) }) });
271
271
  if (loading) return pending;
272
272
  if (error) return failed(error);
273
273
  if (kind === "none" || !file && !src) {
274
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: _nullishCoalesce(fallback, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewNotice, { icon: _lucidereact.FileQuestion, message: unavailableLabel, children: download }))) });
274
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: _nullishCoalesce(fallback, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewNotice, { icon: _lucidereact.FileQuestion, message: unavailableLabel, children: download }))) });
275
275
  }
276
276
  if (reads) {
277
277
  if (!text || text.status === "reading") return pending;
278
278
  if (text.status === "failed") return failed(failedLabel);
279
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { layout: "scroll", label: `Preview of ${title}`, children: [
279
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { layout: "scroll", label: `Preview of ${title}`, children: [
280
280
  text.truncated && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { variant: "caption", marginBottom: "sm", children: truncatedLabel }),
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
@@ -300,13 +300,13 @@ function ShownFile({
300
300
  const fail = () => setBroken(true);
301
301
  const label = `Preview of ${title}`;
302
302
  if (kind === "image") {
303
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4UUTKR3Vcjs.Image, { src: url, alt: title, fit: "contain", radius: "sm", className: "max-h-full max-w-full", onError: fail }) }) });
303
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4UUTKR3Vcjs.Image, { src: url, alt: title, fit: "contain", radius: "sm", className: "max-h-full max-w-full", onError: fail }) }) });
304
304
  }
305
305
  if (kind === "audio") {
306
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-md p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "audio", { src: url, controls: true, preload: "metadata", "aria-label": label, className: "w-full", onError: fail }) }) });
306
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-md p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "audio", { src: url, controls: true, preload: "metadata", "aria-label": label, className: "w-full", onError: fail }) }) });
307
307
  }
308
308
  if (kind === "video") {
309
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
309
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
310
310
  "video",
311
311
  {
312
312
  src: url,
@@ -319,7 +319,7 @@ function ShownFile({
319
319
  }
320
320
  ) }) });
321
321
  }
322
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "iframe", { src: url, title: label, referrerPolicy: "no-referrer", className: "h-full w-full border-0 bg-background" }) });
322
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "iframe", { src: url, title: label, referrerPolicy: "no-referrer", className: "h-full w-full border-0 bg-background" }) });
323
323
  }
324
324
 
325
325
 
@@ -8,9 +8,8 @@ import {
8
8
  PreviewLoading,
9
9
  PreviewNotice,
10
10
  PreviewStage
11
- } from "../chunk-FPOJ2NGG.js";
12
- import "../chunk-CRZ4INEJ.js";
13
- import "../chunk-3QT5VYZ3.js";
11
+ } from "../chunk-C3VZMTVB.js";
12
+ import "../chunk-JTI4244T.js";
14
13
  import {
15
14
  LazyMarkdown
16
15
  } from "../chunk-VY5U4VGV.js";
@@ -20,6 +19,7 @@ import {
20
19
  CodeBlock
21
20
  } from "../chunk-HTPPNW74.js";
22
21
  import "../chunk-DILYV4FI.js";
22
+ import "../chunk-3QT5VYZ3.js";
23
23
  import {
24
24
  Text
25
25
  } from "../chunk-EIY5LLSP.js";
@@ -2,13 +2,13 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkMW67PHAQcjs = require('../chunk-MW67PHAQ.cjs');
6
- require('../chunk-PPX2VPGI.cjs');
5
+ var _chunkS2IMM37Qcjs = require('../chunk-S2IMM37Q.cjs');
7
6
  require('../chunk-WNXVGUBF.cjs');
8
7
  require('../chunk-IQZLUT2Y.cjs');
9
8
  require('../chunk-JH4GAGOQ.cjs');
10
- require('../chunk-V5SPFLKW.cjs');
11
9
  require('../chunk-VOTCYG3F.cjs');
10
+ require('../chunk-V5SPFLKW.cjs');
11
+ require('../chunk-PPX2VPGI.cjs');
12
12
  require('../chunk-PQUSJEXL.cjs');
13
13
  require('../chunk-VGTINL5Q.cjs');
14
14
  require('../chunk-I6GUOEBO.cjs');
@@ -17,4 +17,4 @@ require('../chunk-KWLSBTB2.cjs');
17
17
  require('../chunk-R35FT53G.cjs');
18
18
 
19
19
 
20
- exports.FilterBar = _chunkMW67PHAQcjs.FilterBar;
20
+ exports.FilterBar = _chunkS2IMM37Qcjs.FilterBar;
@@ -2,13 +2,13 @@
2
2
  "use client";
3
3
  import {
4
4
  FilterBar
5
- } from "../chunk-UFFHGKI7.js";
6
- import "../chunk-G76JANB4.js";
5
+ } from "../chunk-6LB37JWO.js";
7
6
  import "../chunk-YG7FBJRM.js";
8
7
  import "../chunk-E2TQMDO7.js";
9
8
  import "../chunk-OICAYRVH.js";
10
- import "../chunk-J6NXDZR5.js";
11
9
  import "../chunk-H2CCBRVG.js";
10
+ import "../chunk-J6NXDZR5.js";
11
+ import "../chunk-G76JANB4.js";
12
12
  import "../chunk-QMA3WVB7.js";
13
13
  import "../chunk-H7TETFLB.js";
14
14
  import "../chunk-D4ZL2OEQ.js";
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkBOMVE7QOcjs = require('../chunk-BOMVE7QO.cjs');
5
+ require('../chunk-373W6VAD.cjs');
6
+ require('../chunk-KWLSBTB2.cjs');
7
+
8
+
9
+ exports.FixedActionBar = _chunkBOMVE7QOcjs.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 };
@@ -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 };
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ FixedActionBar
4
+ } from "../chunk-WMTCL463.js";
5
+ import "../chunk-EIY5LLSP.js";
6
+ import "../chunk-G6SRSWXB.js";
7
+ export {
8
+ FixedActionBar
9
+ };
@@ -0,0 +1,65 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"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/floating-action-button.tsx
11
+ var _react = require('react');
12
+ var _jsxruntime = require('react/jsx-runtime');
13
+ var FloatingActionButton = _react.forwardRef.call(void 0, function FloatingActionButton2({
14
+ label,
15
+ icon,
16
+ visible = true,
17
+ bottom = "bottom-6",
18
+ side = "right",
19
+ asChild = false,
20
+ children,
21
+ className,
22
+ variant = "default",
23
+ size,
24
+ ...rest
25
+ }, ref) {
26
+ const iconOnly = !asChild && label == null;
27
+ const labelNode = !iconOnly && label != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: icon ? "ml-1.5" : void 0, children: label });
28
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29
+ "div",
30
+ {
31
+ "aria-hidden": !visible,
32
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
33
+ "fixed z-40 transition-all duration-300 ease-out motion-reduce:transition-opacity",
34
+ bottom,
35
+ side === "right" && "right-6 md:right-8",
36
+ side === "left" && "left-6 md:left-8",
37
+ side === "center" && "left-1/2 -translate-x-1/2",
38
+ visible ? "opacity-100 translate-y-0 pointer-events-auto" : "opacity-0 translate-y-3 pointer-events-none"
39
+ ),
40
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
41
+ _chunkJDEXZGIYcjs.Button,
42
+ {
43
+ ref,
44
+ asChild,
45
+ variant,
46
+ size: _nullishCoalesce(size, () => ( (iconOnly ? "icon" : "default"))),
47
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
48
+ "shadow-lg",
49
+ iconOnly ? "rounded-full h-14 w-14" : "rounded-full px-5 h-12",
50
+ className
51
+ ),
52
+ tabIndex: visible ? void 0 : -1,
53
+ ...rest,
54
+ children: asChild ? children : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
55
+ icon,
56
+ labelNode
57
+ ] })
58
+ }
59
+ )
60
+ }
61
+ );
62
+ });
63
+
64
+
65
+ exports.FloatingActionButton = FloatingActionButton;
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ButtonProps } from './button.cjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface FloatingActionButtonProps extends Omit<ButtonProps, "children"> {
8
+ /** Text label shown next to the icon. Pass null for icon-only. */
9
+ label?: ReactNode;
10
+ /** Leading icon (lucide-react element, normally). */
11
+ icon?: ReactNode;
12
+ /**
13
+ * When false, the FAB is hidden — slides out + fades out. Typically
14
+ * wired to the `past` boolean from `useScrollPast`. Defaults to true
15
+ * (always visible) so the primitive also works as a standalone FAB.
16
+ */
17
+ visible?: boolean;
18
+ /** Bottom inset (Tailwind utility). Defaults to "bottom-6". */
19
+ bottom?: string;
20
+ /** Horizontal anchor. Defaults to "right". */
21
+ side?: "right" | "left" | "center";
22
+ /**
23
+ * When true, the FAB renders its single child as the trigger element
24
+ * (Radix Slot via Button). Use for next/link integrations.
25
+ *
26
+ * <FloatingActionButton asChild icon={<Plus />} label="New">
27
+ * <Link href="/new" />
28
+ * </FloatingActionButton>
29
+ */
30
+ asChild?: boolean;
31
+ /** Children only used when asChild=true — should be a single element. */
32
+ children?: ReactNode;
33
+ }
34
+ /**
35
+ * Floating action button that lands in the corner with a soft rise +
36
+ * fade once `visible` flips true. Pair with `useScrollPast` to reveal
37
+ * once the page's primary CTA scrolls off-screen.
38
+ *
39
+ * Design notes:
40
+ * - z-40 sits above the page chrome but below modals/sheets (z-50)
41
+ * - rounded-full pill shape with shadow-lg for elevation cue
42
+ * - `pointer-events-none` while hidden so it never blocks underlying
43
+ * content during the fade-out
44
+ * - motion-reduce: skips the rise transition (still fades)
45
+ *
46
+ * For scroll containers that aren't the document, render this inside
47
+ * a positioned ancestor — the `fixed` positioning falls back to
48
+ * relative-to-nearest-transformed-ancestor in those cases.
49
+ */
50
+ declare const FloatingActionButton: React.ForwardRefExoticComponent<FloatingActionButtonProps & React.RefAttributes<HTMLButtonElement>>;
51
+
52
+ export { FloatingActionButton, type FloatingActionButtonProps };
@@ -0,0 +1,52 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import { ButtonProps } from './button.js';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ interface FloatingActionButtonProps extends Omit<ButtonProps, "children"> {
8
+ /** Text label shown next to the icon. Pass null for icon-only. */
9
+ label?: ReactNode;
10
+ /** Leading icon (lucide-react element, normally). */
11
+ icon?: ReactNode;
12
+ /**
13
+ * When false, the FAB is hidden — slides out + fades out. Typically
14
+ * wired to the `past` boolean from `useScrollPast`. Defaults to true
15
+ * (always visible) so the primitive also works as a standalone FAB.
16
+ */
17
+ visible?: boolean;
18
+ /** Bottom inset (Tailwind utility). Defaults to "bottom-6". */
19
+ bottom?: string;
20
+ /** Horizontal anchor. Defaults to "right". */
21
+ side?: "right" | "left" | "center";
22
+ /**
23
+ * When true, the FAB renders its single child as the trigger element
24
+ * (Radix Slot via Button). Use for next/link integrations.
25
+ *
26
+ * <FloatingActionButton asChild icon={<Plus />} label="New">
27
+ * <Link href="/new" />
28
+ * </FloatingActionButton>
29
+ */
30
+ asChild?: boolean;
31
+ /** Children only used when asChild=true — should be a single element. */
32
+ children?: ReactNode;
33
+ }
34
+ /**
35
+ * Floating action button that lands in the corner with a soft rise +
36
+ * fade once `visible` flips true. Pair with `useScrollPast` to reveal
37
+ * once the page's primary CTA scrolls off-screen.
38
+ *
39
+ * Design notes:
40
+ * - z-40 sits above the page chrome but below modals/sheets (z-50)
41
+ * - rounded-full pill shape with shadow-lg for elevation cue
42
+ * - `pointer-events-none` while hidden so it never blocks underlying
43
+ * content during the fade-out
44
+ * - motion-reduce: skips the rise transition (still fades)
45
+ *
46
+ * For scroll containers that aren't the document, render this inside
47
+ * a positioned ancestor — the `fixed` positioning falls back to
48
+ * relative-to-nearest-transformed-ancestor in those cases.
49
+ */
50
+ declare const FloatingActionButton: React.ForwardRefExoticComponent<FloatingActionButtonProps & React.RefAttributes<HTMLButtonElement>>;
51
+
52
+ export { FloatingActionButton, type FloatingActionButtonProps };