@epicbagel/saas-kit 1.33.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 (114) hide show
  1. package/README.md +67 -0
  2. package/dist/chunk-2BNEE3U6.cjs +36 -0
  3. package/dist/{chunk-KOR2QR7I.cjs → chunk-2YW5VA2V.cjs} +5 -5
  4. package/dist/chunk-5PHOKJCT.cjs +42 -0
  5. package/dist/chunk-BB7PO2BW.js +67 -0
  6. package/dist/{chunk-PTMZTP3V.cjs → chunk-BGCNGYPL.cjs} +2 -2
  7. package/dist/chunk-BOMVE7QO.cjs +47 -0
  8. package/dist/{chunk-FPOJ2NGG.js → chunk-C3VZMTVB.js} +1 -1
  9. package/dist/chunk-EXHF3QUY.js +36 -0
  10. package/dist/chunk-FYNHRHVY.cjs +47 -0
  11. package/dist/{chunk-AWCXVYPL.js → chunk-HTPPNW74.js} +1 -1
  12. package/dist/{chunk-REGA2L5S.js → chunk-HTUYUMAH.js} +3 -3
  13. package/dist/chunk-I3GBXIFL.cjs +67 -0
  14. package/dist/{chunk-SL6ECEN6.cjs → chunk-JMNDFISN.cjs} +3 -3
  15. package/dist/{chunk-TS4MC3B3.js → chunk-NNEV5RHQ.js} +6 -6
  16. package/dist/chunk-O3G3TVPU.js +27 -0
  17. package/dist/{chunk-IZF4WCK6.js → chunk-ROUWBWEQ.js} +5 -5
  18. package/dist/chunk-TDCVZKMX.cjs +27 -0
  19. package/dist/{chunk-E2UVQXBO.cjs → chunk-TP74SBRH.cjs} +6 -6
  20. package/dist/{chunk-F3D5HA2F.cjs → chunk-VUMLLKWY.cjs} +8 -8
  21. package/dist/chunk-W5L6LQI3.js +42 -0
  22. package/dist/chunk-WMTCL463.js +47 -0
  23. package/dist/chunk-WTVL2FK7.js +47 -0
  24. package/dist/primitives/accent-theme.cjs +4 -63
  25. package/dist/primitives/accent-theme.js +3 -62
  26. package/dist/primitives/activity-feed.cjs +4 -4
  27. package/dist/primitives/activity-feed.js +5 -5
  28. package/dist/primitives/agent-audio-visualizer-bar.cjs +3 -3
  29. package/dist/primitives/agent-audio-visualizer-bar.js +2 -2
  30. package/dist/primitives/alert.d.cts +1 -1
  31. package/dist/primitives/alert.d.ts +1 -1
  32. package/dist/primitives/anchor.cjs +3 -30
  33. package/dist/primitives/anchor.js +3 -30
  34. package/dist/primitives/app-layout.cjs +5 -5
  35. package/dist/primitives/app-layout.js +2 -2
  36. package/dist/primitives/app-sidebar.cjs +3 -3
  37. package/dist/primitives/app-sidebar.js +2 -2
  38. package/dist/primitives/archive-confirmation-dialog.cjs +2 -2
  39. package/dist/primitives/archive-confirmation-dialog.js +3 -3
  40. package/dist/primitives/badge.d.cts +1 -1
  41. package/dist/primitives/badge.d.ts +1 -1
  42. package/dist/primitives/board-view-internals.cjs +3 -3
  43. package/dist/primitives/board-view-internals.js +2 -2
  44. package/dist/primitives/board-view.cjs +8 -8
  45. package/dist/primitives/board-view.js +7 -7
  46. package/dist/primitives/brand-mark.cjs +3 -21
  47. package/dist/primitives/brand-mark.js +3 -21
  48. package/dist/primitives/branded-page.cjs +201 -0
  49. package/dist/primitives/branded-page.d.cts +118 -0
  50. package/dist/primitives/branded-page.d.ts +118 -0
  51. package/dist/primitives/branded-page.js +201 -0
  52. package/dist/primitives/bubble.d.cts +1 -1
  53. package/dist/primitives/bubble.d.ts +1 -1
  54. package/dist/primitives/button.d.cts +2 -2
  55. package/dist/primitives/button.d.ts +2 -2
  56. package/dist/primitives/call-card.cjs +2 -2
  57. package/dist/primitives/call-card.js +3 -3
  58. package/dist/primitives/chat.cjs +25 -25
  59. package/dist/primitives/chat.js +22 -22
  60. package/dist/primitives/code-block.cjs +4 -4
  61. package/dist/primitives/code-block.js +3 -3
  62. package/dist/primitives/command.d.cts +1 -1
  63. package/dist/primitives/command.d.ts +1 -1
  64. package/dist/primitives/connection.cjs +5 -5
  65. package/dist/primitives/connection.js +7 -7
  66. package/dist/primitives/copy-button.cjs +3 -3
  67. package/dist/primitives/copy-button.js +2 -2
  68. package/dist/primitives/document-preview.cjs +5 -5
  69. package/dist/primitives/document-preview.js +3 -3
  70. package/dist/primitives/file-preview-internals.cjs +4 -4
  71. package/dist/primitives/file-preview-internals.js +3 -3
  72. package/dist/primitives/file-preview.cjs +16 -16
  73. package/dist/primitives/file-preview.js +6 -6
  74. package/dist/primitives/filter-bar.cjs +4 -4
  75. package/dist/primitives/filter-bar.js +3 -3
  76. package/dist/primitives/fixed-action-bar.cjs +4 -41
  77. package/dist/primitives/fixed-action-bar.js +4 -41
  78. package/dist/primitives/marketing-header.cjs +3 -36
  79. package/dist/primitives/marketing-header.js +3 -36
  80. package/dist/primitives/notes.cjs +7 -7
  81. package/dist/primitives/notes.js +7 -7
  82. package/dist/primitives/page-shell.cjs +3 -41
  83. package/dist/primitives/page-shell.js +3 -41
  84. package/dist/primitives/resource-list.cjs +8 -8
  85. package/dist/primitives/resource-list.js +7 -7
  86. package/dist/primitives/responsive-dialog.cjs +3 -3
  87. package/dist/primitives/responsive-dialog.js +2 -2
  88. package/dist/primitives/section.cjs +2 -2
  89. package/dist/primitives/section.js +3 -3
  90. package/dist/primitives/switch-field.cjs +3 -3
  91. package/dist/primitives/switch-field.js +3 -3
  92. package/dist/primitives/tabbed-page-header.cjs +3 -3
  93. package/dist/primitives/tabbed-page-header.js +3 -3
  94. package/dist/primitives/theme-selector.cjs +3 -3
  95. package/dist/primitives/theme-selector.js +4 -4
  96. package/dist/primitives/voice-dictation-button.cjs +5 -5
  97. package/dist/primitives/voice-dictation-button.js +4 -4
  98. package/dist/primitives/voice-session-controls.cjs +4 -4
  99. package/dist/primitives/voice-session-controls.js +3 -3
  100. package/dist/primitives/workflow-assistant.cjs +5 -5
  101. package/dist/primitives/workflow-assistant.js +3 -3
  102. package/package.json +11 -1
  103. package/dist/{chunk-2FVFPGP5.js → chunk-5GFMSK27.js} +3 -3
  104. package/dist/{chunk-4TJBXXUE.js → chunk-5OF6D3GH.js} +3 -3
  105. package/dist/{chunk-ULZB4A2I.js → chunk-62UTAG2C.js} +3 -3
  106. package/dist/{chunk-SW4T3O7M.js → chunk-6LB37JWO.js} +6 -6
  107. package/dist/{chunk-AO56ET4F.cjs → chunk-BTHYGHOH.cjs} +2 -2
  108. package/dist/{chunk-7ZRFXJVN.js → chunk-DILYV4FI.js} +3 -3
  109. package/dist/{chunk-HHF5DEKM.cjs → chunk-FARCLWLU.cjs} +3 -3
  110. package/dist/{chunk-CRZ4INEJ.js → chunk-JTI4244T.js} +10 -10
  111. package/dist/{chunk-FB3VY2PL.cjs → chunk-NKWHDI4C.cjs} +2 -2
  112. package/dist/{chunk-GUVQAWUW.cjs → chunk-S2IMM37Q.cjs} +5 -5
  113. package/dist/{chunk-G3SF4RRA.cjs → chunk-UKYUWSF2.cjs} +3 -3
  114. package/dist/{chunk-D46FNEZ5.cjs → chunk-YYFVG5A6.cjs} +2 -2
@@ -0,0 +1,118 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { LucideIcon } from 'lucide-react';
3
+ import { ReactElement, ReactNode } from 'react';
4
+ import { AccentThemeColours } from './accent-theme.js';
5
+
6
+ /** Whose page it is: the company that shares it, not the product that hosts it. */
7
+ interface BrandedPageBrand {
8
+ /** The brand's name. Drawn as text when there is no logo, and the logo's text alternative when there is. */
9
+ name?: string | null;
10
+ /** The brand's logo, an image URL, drawn in place of the name. */
11
+ logoUrl?: string | null;
12
+ /** The logo's text alternative. Defaults to the brand's `name`, else "Logo". */
13
+ logoAlt?: string;
14
+ /** Where the brand leads, such as its own site. Left out, the brand is not a link. */
15
+ href?: string | null;
16
+ }
17
+ /** The fixed bar at the foot of the page, for its one or two actions. */
18
+ interface BrandedPageActionBar {
19
+ /** What the actions are about, beside them. */
20
+ title?: ReactNode;
21
+ /** One muted line under the title. */
22
+ description?: ReactNode;
23
+ /** The page's one or two actions. */
24
+ actions: ReactNode;
25
+ /** `full` gives the actions the bar's whole width, for a host that lays out both ends of it. Defaults to `auto`. */
26
+ actionsWidth?: "auto" | "full";
27
+ }
28
+ /** Why a link leads nowhere. */
29
+ type BrandedPageUnavailableReason = "not-found" | "expired" | "archived" | "revoked";
30
+ interface BrandedPageUnavailableProps {
31
+ /**
32
+ * Why the link is dead: it picks the icon and the words. Defaults to
33
+ * `not-found`, which is worded for a link whose fate the host can't tell.
34
+ */
35
+ reason?: BrandedPageUnavailableReason;
36
+ /**
37
+ * In place of the reason's icon, and decorative like it: a Lucide
38
+ * component, or an element. Pass an element from a server component.
39
+ */
40
+ icon?: LucideIcon | ReactNode;
41
+ /** In place of the reason's title. It is the state's heading. */
42
+ title?: string;
43
+ /** In place of the reason's description. `""` leaves it out. */
44
+ description?: string;
45
+ /** What the visitor can do next: the host's own button or link. */
46
+ action?: ReactNode;
47
+ className?: string;
48
+ }
49
+ interface BrandedPageLoadingProps {
50
+ /** What is happening, under the spinner. Defaults to "Loading…". */
51
+ label?: string;
52
+ className?: string;
53
+ }
54
+ interface BrandedPageProps {
55
+ /**
56
+ * Whose page it is: the brand's `name`, `logoUrl` and `href`, or the
57
+ * host's own element (its wordmark, or its router's link around one).
58
+ * Nothing is drawn for a brand with neither a logo nor a name.
59
+ */
60
+ brand?: BrandedPageBrand | ReactElement | null;
61
+ /** The brand's accent as six-digit hex, for light and dark mode. It replaces the primary colour inside the page only. */
62
+ accent?: AccentThemeColours | null;
63
+ /**
64
+ * Pins the page to one palette (its `data-theme` value), so it looks the
65
+ * same to every visitor whatever palette their own browser has stored.
66
+ * Left out, the page follows the document.
67
+ */
68
+ palette?: string;
69
+ /** The host's own controls at the end of the header, such as a theme switch or Sign in. Left off paper. */
70
+ headerTrailing?: ReactNode;
71
+ /** How wide the content column is. Defaults to `narrow`. */
72
+ width?: "narrow" | "wide" | "full";
73
+ /** The content's side padding. Defaults to `base`, which lines up with the header. */
74
+ padding?: "none" | "base" | "relaxed" | "spacious";
75
+ /** The canvas behind the content: `muted` (the default) sets cards apart, `default` is the plain background. Paper is always plain. */
76
+ surface?: "default" | "muted";
77
+ /** The page's content. Not drawn while `loading` or `unavailable` stands in for it. */
78
+ children?: ReactNode;
79
+ /** A closing line under the content, such as "Shared by Example Agency". */
80
+ credit?: ReactNode;
81
+ /** Whether the credit prints. Defaults to `visible`. */
82
+ creditPrintVisibility?: "visible" | "hidden";
83
+ /** A fixed bar at the foot of the page. Left off paper, and not drawn while `loading` or `unavailable`. */
84
+ actionBar?: BrandedPageActionBar | null;
85
+ /** Stands in for the content while it loads: `true`, or the loading state's props. It wins over `unavailable`. */
86
+ loading?: boolean | BrandedPageLoadingProps;
87
+ /** Stands in for the content when the link is dead: `true`, or the unavailable state's props. */
88
+ unavailable?: boolean | BrandedPageUnavailableProps;
89
+ className?: string;
90
+ }
91
+ /**
92
+ * A dead link, in place of a page's content: an icon, a heading, a line on
93
+ * what to do and an optional action. It is announced when it appears, since
94
+ * it often replaces a loading state. Use it as `BrandedPage`'s `unavailable`,
95
+ * or alone inside a frame of your own.
96
+ */
97
+ declare function BrandedPageUnavailable({ reason, icon, title, description, action, className, }: BrandedPageUnavailableProps): react_jsx_runtime.JSX.Element;
98
+ /**
99
+ * A page that is still loading, in place of its content: a spinner over one
100
+ * line, announced politely. Use it as `BrandedPage`'s `loading`, or alone
101
+ * inside a frame of your own.
102
+ */
103
+ declare function BrandedPageLoading({ label, className }: BrandedPageLoadingProps): react_jsx_runtime.JSX.Element;
104
+ /**
105
+ * The whole of a public page one company shows to another's people: a shared
106
+ * profile, a list sent for review, an invitation, a client's portal. The
107
+ * brand in a header (a banner), the content in one `main`, and optionally a
108
+ * closing credit and a fixed action bar, in the brand's accent and, when
109
+ * pinned, in one palette for every visitor. `loading` and `unavailable`
110
+ * stand in for the content, so the frame holds still while a link resolves.
111
+ *
112
+ * Presentation only: the host fetches, routes and decides which state shows.
113
+ * On paper the canvas is plain, the spacing compact, and the header's
114
+ * controls and the action bar are left off.
115
+ */
116
+ declare function BrandedPage({ brand, accent, palette, headerTrailing, width, padding, surface, children, credit, creditPrintVisibility, actionBar, loading, unavailable, className, }: BrandedPageProps): react_jsx_runtime.JSX.Element;
117
+
118
+ export { BrandedPage, type BrandedPageActionBar, type BrandedPageBrand, BrandedPageLoading, type BrandedPageLoadingProps, type BrandedPageProps, BrandedPageUnavailable, type BrandedPageUnavailableProps, type BrandedPageUnavailableReason };
@@ -0,0 +1,201 @@
1
+ "use client";
2
+ import {
3
+ PageShell
4
+ } from "../chunk-WTVL2FK7.js";
5
+ import {
6
+ MarketingHeader
7
+ } from "../chunk-W5L6LQI3.js";
8
+ import {
9
+ FixedActionBar
10
+ } from "../chunk-WMTCL463.js";
11
+ import {
12
+ Text
13
+ } from "../chunk-EIY5LLSP.js";
14
+ import {
15
+ Heading
16
+ } from "../chunk-H2O6NMLZ.js";
17
+ import {
18
+ BrandMark
19
+ } from "../chunk-O3G3TVPU.js";
20
+ import {
21
+ Anchor
22
+ } from "../chunk-EXHF3QUY.js";
23
+ import {
24
+ Icon
25
+ } from "../chunk-KN4RPX35.js";
26
+ import {
27
+ AccentTheme
28
+ } from "../chunk-BB7PO2BW.js";
29
+ import {
30
+ EmptyState
31
+ } from "../chunk-ET4THLFX.js";
32
+ import "../chunk-W326GKML.js";
33
+ import {
34
+ cn
35
+ } from "../chunk-G6SRSWXB.js";
36
+
37
+ // src/primitives/branded-page.tsx
38
+ import { Archive, Clock, EyeOff, Link2Off, LoaderCircle } from "lucide-react";
39
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
40
+ var UNAVAILABLE = {
41
+ "not-found": {
42
+ icon: 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: Clock,
48
+ title: "This link has expired",
49
+ description: "Ask whoever shared it for a new one."
50
+ },
51
+ archived: {
52
+ icon: 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: 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__ */ jsx(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__ */ jsx(
75
+ EmptyState,
76
+ {
77
+ variant: "error",
78
+ size: "lg",
79
+ surface: "plain",
80
+ icon: icon ?? /* @__PURE__ */ jsx(StateIcon, { icon: words.icon }),
81
+ title: title || words.title,
82
+ description: description ?? words.description,
83
+ className,
84
+ children: action ? /* @__PURE__ */ jsx("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__ */ jsx("div", { role: "status", "data-slot": "branded-page-loading", className, children: /* @__PURE__ */ jsx(
90
+ EmptyState,
91
+ {
92
+ icon: /* @__PURE__ */ jsx(StateIcon, { icon: 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__ */ jsx(BrandMark, { src: logoUrl, alt: logoAlt ?? (name || "Logo") }) : name ? /* @__PURE__ */ jsx(Heading, { level: 3, as: "span", children: name }) : null;
104
+ if (!mark || !href) return mark;
105
+ return /* @__PURE__ */ jsx(
106
+ 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) : brand ?? null;
132
+ const state = loading ? /* @__PURE__ */ jsx(BrandedPageLoading, { ...loading === true ? null : loading }) : unavailable ? /* @__PURE__ */ jsx(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__ */ jsx("div", { "data-slot": "branded-page", "data-theme": palette, className: cn("bg-background text-foreground", className), children: /* @__PURE__ */ jsx(AccentTheme, { colours: accent, children: /* @__PURE__ */ jsxs(
139
+ "div",
140
+ {
141
+ "data-slot": "branded-page-surface",
142
+ className: cn(
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__ */ jsx(
148
+ MarketingHeader,
149
+ {
150
+ brand: mark,
151
+ trailing: headerTrailing ? /* @__PURE__ */ jsx("div", { className: "contents print:hidden", children: headerTrailing }) : void 0
152
+ }
153
+ ) : null,
154
+ /* @__PURE__ */ jsx(
155
+ 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__ */ jsx("div", { "data-slot": "branded-page-state", className: "pt-[12vh]", children: state })
166
+ ) : /* @__PURE__ */ jsxs(Fragment, { children: [
167
+ children,
168
+ credit ? /* @__PURE__ */ jsx(
169
+ Text,
170
+ {
171
+ variant: "caption",
172
+ align: "center",
173
+ "data-slot": "branded-page-credit",
174
+ className: cn(creditPrintVisibility === "hidden" && "print:hidden"),
175
+ children: credit
176
+ }
177
+ ) : null
178
+ ] })
179
+ }
180
+ ),
181
+ bar ? /* @__PURE__ */ jsx(
182
+ 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
+ export {
198
+ BrandedPage,
199
+ BrandedPageLoading,
200
+ BrandedPageUnavailable
201
+ };
@@ -5,7 +5,7 @@ import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare function BubbleGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
7
7
  declare const bubbleVariants: (props?: ({
8
- variant?: "default" | "muted" | "ghost" | "secondary" | "destructive" | "outline" | "tinted" | null | undefined;
8
+ variant?: "default" | "muted" | "secondary" | "destructive" | "outline" | "ghost" | "tinted" | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  declare function Bubble({ variant, align, className, ...props }: React.ComponentProps<"div"> & VariantProps<typeof bubbleVariants> & {
11
11
  align?: "start" | "end";
@@ -5,7 +5,7 @@ import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare function BubbleGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
7
7
  declare const bubbleVariants: (props?: ({
8
- variant?: "default" | "muted" | "ghost" | "secondary" | "destructive" | "outline" | "tinted" | null | undefined;
8
+ variant?: "default" | "muted" | "secondary" | "destructive" | "outline" | "ghost" | "tinted" | null | undefined;
9
9
  } & class_variance_authority_types.ClassProp) | undefined) => string;
10
10
  declare function Bubble({ variant, align, className, ...props }: React.ComponentProps<"div"> & VariantProps<typeof bubbleVariants> & {
11
11
  align?: "start" | "end";
@@ -4,8 +4,8 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const buttonVariants: (props?: ({
7
- variant?: "link" | "default" | "ghost" | "secondary" | "destructive" | "outline" | "outline-muted" | "quiet" | "ghost-destructive" | "link-muted" | "inverted" | "status-error" | "status-warning" | "status-muted" | null | undefined;
8
- size?: "filter" | "status" | "toolbar" | "sm" | "lg" | "default" | "micro" | "tone" | "compact" | "hero" | "icon" | "icon-lg" | "icon-sm" | "icon-md" | "icon-xs" | "icon-compact" | "icon-micro" | "bare" | "voice-sm" | "voice" | "suggestion" | null | undefined;
7
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "outline-muted" | "ghost" | "quiet" | "ghost-destructive" | "link-muted" | "inverted" | "status-error" | "status-warning" | "status-muted" | null | undefined;
8
+ size?: "filter" | "status" | "toolbar" | "sm" | "lg" | "default" | "micro" | "compact" | "hero" | "icon" | "icon-lg" | "icon-sm" | "icon-md" | "icon-xs" | "icon-compact" | "icon-micro" | "bare" | "voice-sm" | "voice" | "suggestion" | "tone" | null | undefined;
9
9
  width?: "auto" | "full" | "responsive" | null | undefined;
10
10
  align?: "center" | "start" | null | undefined;
11
11
  shrink?: boolean | null | undefined;
@@ -4,8 +4,8 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const buttonVariants: (props?: ({
7
- variant?: "link" | "default" | "ghost" | "secondary" | "destructive" | "outline" | "outline-muted" | "quiet" | "ghost-destructive" | "link-muted" | "inverted" | "status-error" | "status-warning" | "status-muted" | null | undefined;
8
- size?: "filter" | "status" | "toolbar" | "sm" | "lg" | "default" | "micro" | "tone" | "compact" | "hero" | "icon" | "icon-lg" | "icon-sm" | "icon-md" | "icon-xs" | "icon-compact" | "icon-micro" | "bare" | "voice-sm" | "voice" | "suggestion" | null | undefined;
7
+ variant?: "link" | "default" | "secondary" | "destructive" | "outline" | "outline-muted" | "ghost" | "quiet" | "ghost-destructive" | "link-muted" | "inverted" | "status-error" | "status-warning" | "status-muted" | null | undefined;
8
+ size?: "filter" | "status" | "toolbar" | "sm" | "lg" | "default" | "micro" | "compact" | "hero" | "icon" | "icon-lg" | "icon-sm" | "icon-md" | "icon-xs" | "icon-compact" | "icon-micro" | "bare" | "voice-sm" | "voice" | "suggestion" | "tone" | null | undefined;
9
9
  width?: "auto" | "full" | "responsive" | null | undefined;
10
10
  align?: "center" | "start" | null | undefined;
11
11
  shrink?: boolean | null | undefined;
@@ -5,12 +5,12 @@
5
5
  var _chunk6T2EULKNcjs = require('../chunk-6T2EULKN.cjs');
6
6
 
7
7
 
8
- var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
9
8
 
10
9
 
10
+ var _chunkW5HPHEE7cjs = require('../chunk-W5HPHEE7.cjs');
11
11
 
12
12
 
13
- var _chunkW5HPHEE7cjs = require('../chunk-W5HPHEE7.cjs');
13
+ var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
14
14
 
15
15
 
16
16
 
@@ -3,14 +3,14 @@
3
3
  import {
4
4
  Eyebrow
5
5
  } from "../chunk-LIE6W3QT.js";
6
- import {
7
- Text
8
- } from "../chunk-EIY5LLSP.js";
9
6
  import {
10
7
  Collapsible,
11
8
  CollapsibleContent,
12
9
  CollapsibleTrigger
13
10
  } from "../chunk-NBUWGRQO.js";
11
+ import {
12
+ Text
13
+ } from "../chunk-EIY5LLSP.js";
14
14
  import {
15
15
  Avatar,
16
16
  AvatarFallback,
@@ -7,10 +7,10 @@
7
7
  var _chunk2BTDBZYNcjs = require('../chunk-2BTDBZYN.cjs');
8
8
 
9
9
 
10
- var _chunkKOR2QR7Icjs = require('../chunk-KOR2QR7I.cjs');
10
+ var _chunk2YW5VA2Vcjs = require('../chunk-2YW5VA2V.cjs');
11
11
 
12
12
 
13
- var _chunkSL6ECEN6cjs = require('../chunk-SL6ECEN6.cjs');
13
+ var _chunkJMNDFISNcjs = require('../chunk-JMNDFISN.cjs');
14
14
 
15
15
 
16
16
 
@@ -35,15 +35,15 @@ var _chunkB765DSRGcjs = require('../chunk-B765DSRG.cjs');
35
35
 
36
36
 
37
37
 
38
- var _chunk7LDJAXRXcjs = require('../chunk-7LDJAXRX.cjs');
39
- require('../chunk-2HV2KKOE.cjs');
40
38
 
41
39
 
40
+ var _chunkDHXKCMKYcjs = require('../chunk-DHXKCMKY.cjs');
42
41
 
43
42
 
44
43
 
45
44
 
46
- var _chunkDHXKCMKYcjs = require('../chunk-DHXKCMKY.cjs');
45
+ var _chunk7LDJAXRXcjs = require('../chunk-7LDJAXRX.cjs');
46
+ require('../chunk-2HV2KKOE.cjs');
47
47
 
48
48
 
49
49
 
@@ -52,7 +52,6 @@ var _chunkZ3JJSNR5cjs = require('../chunk-Z3JJSNR5.cjs');
52
52
 
53
53
  var _chunkKENBU3NVcjs = require('../chunk-KENBU3NV.cjs');
54
54
  require('../chunk-ELPV44S6.cjs');
55
- require('../chunk-7Q4EFCUI.cjs');
56
55
 
57
56
 
58
57
 
@@ -82,13 +81,10 @@ require('../chunk-DMPSKGFM.cjs');
82
81
  require('../chunk-Z2H4LJVG.cjs');
83
82
 
84
83
 
85
- var _chunk4LXN6GLZcjs = require('../chunk-4LXN6GLZ.cjs');
86
-
87
-
88
84
 
89
85
  var _chunkV4YWTRLDcjs = require('../chunk-V4YWTRLD.cjs');
90
- require('../chunk-373W6VAD.cjs');
91
86
  require('../chunk-W5HPHEE7.cjs');
87
+ require('../chunk-373W6VAD.cjs');
92
88
 
93
89
 
94
90
 
@@ -100,27 +96,31 @@ require('../chunk-W5HPHEE7.cjs');
100
96
 
101
97
 
102
98
  var _chunkFYRQFEU4cjs = require('../chunk-FYRQFEU4.cjs');
103
- require('../chunk-FB3VY2PL.cjs');
104
- require('../chunk-2BSFYU22.cjs');
105
99
  require('../chunk-NQK5ZWC7.cjs');
106
-
107
-
108
- var _chunkR35FT53Gcjs = require('../chunk-R35FT53G.cjs');
109
100
  require('../chunk-U2NES7VR.cjs');
110
101
 
111
102
 
112
- var _chunkH2UFRLLNcjs = require('../chunk-H2UFRLLN.cjs');
113
-
114
-
115
103
  var _chunk2KFZQJH5cjs = require('../chunk-2KFZQJH5.cjs');
116
- require('../chunk-PQUSJEXL.cjs');
117
104
  require('../chunk-WABCLRBR.cjs');
105
+ require('../chunk-PQUSJEXL.cjs');
118
106
 
119
107
 
120
108
  var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
109
+ require('../chunk-NKWHDI4C.cjs');
121
110
 
122
111
 
123
112
  var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
113
+ require('../chunk-2BSFYU22.cjs');
114
+
115
+
116
+ var _chunk4LXN6GLZcjs = require('../chunk-4LXN6GLZ.cjs');
117
+ require('../chunk-7Q4EFCUI.cjs');
118
+
119
+
120
+ var _chunkR35FT53Gcjs = require('../chunk-R35FT53G.cjs');
121
+
122
+
123
+ var _chunkH2UFRLLNcjs = require('../chunk-H2UFRLLN.cjs');
124
124
 
125
125
  // src/primitives/chat.tsx
126
126
 
@@ -541,7 +541,7 @@ function ChatInput({
541
541
  children: header
542
542
  }
543
543
  ),
544
- liveVoiceActive && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7LDJAXRXcjs.InputGroupAddon, { align: "block-start", className: "w-full cursor-default border-b border-border p-0 [.border-b]:pb-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSL6ECEN6cjs.VoiceSessionControls, { ...voiceSession }) }),
544
+ liveVoiceActive && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7LDJAXRXcjs.InputGroupAddon, { align: "block-start", className: "w-full cursor-default border-b border-border p-0 [.border-b]:pb-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJMNDFISNcjs.VoiceSessionControls, { ...voiceSession }) }),
545
545
  attachments.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
546
546
  ChatAttachmentList,
547
547
  {
@@ -620,7 +620,7 @@ function ChatInput({
620
620
  ) : null,
621
621
  (!helperText || compact) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1" }),
622
622
  voice && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
623
- _chunkKOR2QR7Icjs.VoiceDictationButton,
623
+ _chunk2YW5VA2Vcjs.VoiceDictationButton,
624
624
  {
625
625
  size: "icon",
626
626
  title: voiceTitle,
@@ -634,7 +634,7 @@ function ChatInput({
634
634
  )
635
635
  }
636
636
  ),
637
- voiceSession && !liveVoiceActive && !hasText && attachments.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSL6ECEN6cjs.VoiceSessionControls, { ...voiceSession, disabled: voiceSession.disabled || isDisabled }) : submitLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
637
+ voiceSession && !liveVoiceActive && !hasText && attachments.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJMNDFISNcjs.VoiceSessionControls, { ...voiceSession, disabled: voiceSession.disabled || isDisabled }) : submitLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
638
638
  _chunkJDEXZGIYcjs.Button,
639
639
  {
640
640
  type: "submit",
@@ -696,9 +696,9 @@ function VoiceHero({
696
696
  }) {
697
697
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-center gap-5 py-6", children: [
698
698
  voiceSession ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
699
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSL6ECEN6cjs.VoiceSessionControls, { ...voiceSession, size: "hero" }),
699
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJMNDFISNcjs.VoiceSessionControls, { ...voiceSession, size: "hero" }),
700
700
  voice && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
701
- _chunkKOR2QR7Icjs.VoiceDictationButton,
701
+ _chunk2YW5VA2Vcjs.VoiceDictationButton,
702
702
  {
703
703
  size: "icon",
704
704
  title: voiceTitle,
@@ -708,7 +708,7 @@ function VoiceHero({
708
708
  }
709
709
  )
710
710
  ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
711
- _chunkKOR2QR7Icjs.VoiceDictationButton,
711
+ _chunk2YW5VA2Vcjs.VoiceDictationButton,
712
712
  {
713
713
  size: "lg",
714
714
  title: voiceTitle,
@@ -7,10 +7,10 @@ import {
7
7
  } from "../chunk-Z45YKVAM.js";
8
8
  import {
9
9
  VoiceDictationButton
10
- } from "../chunk-TS4MC3B3.js";
10
+ } from "../chunk-NNEV5RHQ.js";
11
11
  import {
12
12
  VoiceSessionControls
13
- } from "../chunk-REGA2L5S.js";
13
+ } from "../chunk-HTUYUMAH.js";
14
14
  import {
15
15
  Suggestion,
16
16
  Suggestions
@@ -31,12 +31,6 @@ import {
31
31
  Marker,
32
32
  MarkerContent
33
33
  } from "../chunk-IW4ZIXXG.js";
34
- import {
35
- InputGroup,
36
- InputGroupAddon,
37
- InputGroupTextarea
38
- } from "../chunk-QTPPNK6F.js";
39
- import "../chunk-6FC65AZQ.js";
40
34
  import {
41
35
  Item,
42
36
  ItemContent,
@@ -44,6 +38,12 @@ import {
44
38
  ItemMedia,
45
39
  ItemTitle
46
40
  } from "../chunk-SG4ZE2EN.js";
41
+ import {
42
+ InputGroup,
43
+ InputGroupAddon,
44
+ InputGroupTextarea
45
+ } from "../chunk-QTPPNK6F.js";
46
+ import "../chunk-6FC65AZQ.js";
47
47
  import {
48
48
  FileDropArea,
49
49
  FileDropzone
@@ -52,7 +52,6 @@ import {
52
52
  LazyMarkdown
53
53
  } from "../chunk-VY5U4VGV.js";
54
54
  import "../chunk-INNGGLMZ.js";
55
- import "../chunk-RPSRCB5O.js";
56
55
  import {
57
56
  Drawer,
58
57
  DrawerClose,
@@ -80,15 +79,12 @@ import {
80
79
  } from "../chunk-OUZSIA5G.js";
81
80
  import "../chunk-36LNA4WM.js";
82
81
  import "../chunk-GA5SX7FE.js";
83
- import {
84
- useCopyToClipboard
85
- } from "../chunk-ZWZAAGQF.js";
86
82
  import {
87
83
  Bubble,
88
84
  BubbleContent
89
85
  } from "../chunk-F366BHWH.js";
90
- import "../chunk-EIY5LLSP.js";
91
86
  import "../chunk-NBUWGRQO.js";
87
+ import "../chunk-EIY5LLSP.js";
92
88
  import {
93
89
  Attachment,
94
90
  AttachmentAction,
@@ -100,27 +96,31 @@ import {
100
96
  AttachmentTitle,
101
97
  AttachmentTrigger
102
98
  } from "../chunk-CYDICVH2.js";
103
- import "../chunk-4TJBXXUE.js";
104
- import "../chunk-GJ7S3L6R.js";
105
99
  import "../chunk-HYTILYE5.js";
106
- import {
107
- useIsMobile
108
- } from "../chunk-PIU5SSUV.js";
109
100
  import "../chunk-ZRLUUZHK.js";
110
- import {
111
- formatRelativeLong
112
- } from "../chunk-CS7DM3NV.js";
113
101
  import {
114
102
  ActionDock
115
103
  } from "../chunk-42RTTHND.js";
116
- import "../chunk-QMA3WVB7.js";
117
104
  import "../chunk-3OWGL4Q2.js";
105
+ import "../chunk-QMA3WVB7.js";
118
106
  import {
119
107
  Button
120
108
  } from "../chunk-W326GKML.js";
109
+ import "../chunk-5OF6D3GH.js";
121
110
  import {
122
111
  cn
123
112
  } from "../chunk-G6SRSWXB.js";
113
+ import "../chunk-GJ7S3L6R.js";
114
+ import {
115
+ useCopyToClipboard
116
+ } from "../chunk-ZWZAAGQF.js";
117
+ import "../chunk-RPSRCB5O.js";
118
+ import {
119
+ useIsMobile
120
+ } from "../chunk-PIU5SSUV.js";
121
+ import {
122
+ formatRelativeLong
123
+ } from "../chunk-CS7DM3NV.js";
124
124
 
125
125
  // src/primitives/chat.tsx
126
126
  import {
@@ -1,11 +1,11 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkPTMZTP3Vcjs = require('../chunk-PTMZTP3V.cjs');
5
- require('../chunk-HHF5DEKM.cjs');
6
- require('../chunk-4LXN6GLZ.cjs');
4
+ var _chunkBGCNGYPLcjs = require('../chunk-BGCNGYPL.cjs');
5
+ require('../chunk-FARCLWLU.cjs');
7
6
  require('../chunk-JDEXZGIY.cjs');
8
7
  require('../chunk-KWLSBTB2.cjs');
8
+ require('../chunk-4LXN6GLZ.cjs');
9
9
 
10
10
 
11
- exports.CodeBlock = _chunkPTMZTP3Vcjs.CodeBlock;
11
+ exports.CodeBlock = _chunkBGCNGYPLcjs.CodeBlock;