@epicbagel/saas-kit 1.0.0 → 1.2.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 (120) hide show
  1. package/README.md +72 -3
  2. package/THIRD_PARTY_NOTICES.md +230 -7
  3. package/dist/chunk-2AU7ZRGX.cjs +96 -0
  4. package/dist/chunk-2BTDBZYN.cjs +154 -0
  5. package/dist/chunk-2HV2KKOE.cjs +38 -0
  6. package/dist/chunk-2KFZQJH5.cjs +29 -0
  7. package/dist/chunk-32Q4XOTU.cjs +204 -0
  8. package/dist/chunk-42RTTHND.js +29 -0
  9. package/dist/chunk-6FC65AZQ.js +38 -0
  10. package/dist/chunk-B765DSRG.cjs +66 -0
  11. package/dist/chunk-ELPV44S6.cjs +44 -0
  12. package/dist/chunk-EOUO3ORO.cjs +244 -0
  13. package/dist/chunk-EZCKWTH7.js +204 -0
  14. package/dist/chunk-F366BHWH.js +116 -0
  15. package/dist/chunk-GFG2R5BZ.js +132 -0
  16. package/dist/chunk-HAC32ALJ.js +244 -0
  17. package/dist/chunk-INNGGLMZ.js +44 -0
  18. package/dist/chunk-IW4ZIXXG.js +66 -0
  19. package/dist/chunk-JZOBIPFC.js +96 -0
  20. package/dist/chunk-KADJ56AH.cjs +416 -0
  21. package/dist/chunk-KENBU3NV.cjs +27 -0
  22. package/dist/chunk-M7FYGAGO.js +416 -0
  23. package/dist/chunk-MHYAVXOE.js +159 -0
  24. package/dist/chunk-RIWLAMME.cjs +159 -0
  25. package/dist/chunk-SUB4BAYE.cjs +73 -0
  26. package/dist/chunk-THWIJG5C.js +73 -0
  27. package/dist/chunk-V4YWTRLD.cjs +116 -0
  28. package/dist/chunk-VY5U4VGV.js +27 -0
  29. package/dist/chunk-XABXUP6L.cjs +132 -0
  30. package/dist/chunk-Z45YKVAM.js +154 -0
  31. package/dist/primitives/action-dock.cjs +8 -0
  32. package/dist/primitives/action-dock.d.cts +10 -0
  33. package/dist/primitives/action-dock.d.ts +10 -0
  34. package/dist/primitives/action-dock.js +8 -0
  35. package/dist/primitives/attachment.cjs +25 -203
  36. package/dist/primitives/attachment.d.cts +1 -1
  37. package/dist/primitives/attachment.d.ts +1 -1
  38. package/dist/primitives/attachment.js +12 -190
  39. package/dist/primitives/badge.d.cts +1 -1
  40. package/dist/primitives/badge.d.ts +1 -1
  41. package/dist/primitives/board-view.cjs +3 -3
  42. package/dist/primitives/board-view.js +2 -2
  43. package/dist/primitives/bubble.cjs +14 -0
  44. package/dist/primitives/bubble.d.cts +21 -0
  45. package/dist/primitives/bubble.d.ts +21 -0
  46. package/dist/primitives/bubble.js +14 -0
  47. package/dist/primitives/button.d.cts +3 -3
  48. package/dist/primitives/button.d.ts +3 -3
  49. package/dist/primitives/chat.cjs +881 -0
  50. package/dist/primitives/chat.d.cts +345 -0
  51. package/dist/primitives/chat.d.ts +345 -0
  52. package/dist/primitives/chat.js +881 -0
  53. package/dist/primitives/connection.cjs +6 -6
  54. package/dist/primitives/connection.js +7 -7
  55. package/dist/primitives/file-dropzone.cjs +7 -107
  56. package/dist/primitives/file-dropzone.d.cts +66 -3
  57. package/dist/primitives/file-dropzone.d.ts +66 -3
  58. package/dist/primitives/file-dropzone.js +13 -113
  59. package/dist/primitives/input-group.cjs +21 -0
  60. package/dist/primitives/input-group.d.cts +20 -0
  61. package/dist/primitives/input-group.d.ts +20 -0
  62. package/dist/primitives/input-group.js +21 -0
  63. package/dist/primitives/item.cjs +197 -0
  64. package/dist/primitives/item.d.cts +28 -0
  65. package/dist/primitives/item.d.ts +28 -0
  66. package/dist/primitives/item.js +197 -0
  67. package/dist/primitives/lazy-markdown.cjs +10 -0
  68. package/dist/primitives/lazy-markdown.d.cts +20 -0
  69. package/dist/primitives/lazy-markdown.d.ts +20 -0
  70. package/dist/primitives/lazy-markdown.js +10 -0
  71. package/dist/primitives/markdown.cjs +17 -0
  72. package/dist/primitives/markdown.d.cts +32 -0
  73. package/dist/primitives/markdown.d.ts +32 -0
  74. package/dist/primitives/markdown.js +17 -0
  75. package/dist/primitives/marker.cjs +14 -0
  76. package/dist/primitives/marker.d.cts +15 -0
  77. package/dist/primitives/marker.d.ts +15 -0
  78. package/dist/primitives/marker.js +14 -0
  79. package/dist/primitives/message-scroller.cjs +26 -0
  80. package/dist/primitives/message-scroller.d.cts +16 -0
  81. package/dist/primitives/message-scroller.d.ts +16 -0
  82. package/dist/primitives/message-scroller.js +26 -0
  83. package/dist/primitives/message.cjs +7 -84
  84. package/dist/primitives/message.js +8 -85
  85. package/dist/primitives/resource-list.cjs +3 -3
  86. package/dist/primitives/resource-list.js +2 -2
  87. package/dist/primitives/rich-text.cjs +3 -38
  88. package/dist/primitives/rich-text.js +3 -38
  89. package/dist/primitives/section-header.d.cts +1 -1
  90. package/dist/primitives/section-header.d.ts +1 -1
  91. package/dist/primitives/spinner.cjs +23 -0
  92. package/dist/primitives/spinner.d.cts +6 -0
  93. package/dist/primitives/spinner.d.ts +6 -0
  94. package/dist/primitives/spinner.js +23 -0
  95. package/dist/primitives/suggestion.cjs +11 -0
  96. package/dist/primitives/suggestion.d.cts +19 -0
  97. package/dist/primitives/suggestion.d.ts +19 -0
  98. package/dist/primitives/suggestion.js +11 -0
  99. package/dist/primitives/switch-field.cjs +2 -2
  100. package/dist/primitives/switch-field.js +3 -3
  101. package/dist/primitives/textarea.cjs +4 -33
  102. package/dist/primitives/textarea.js +3 -32
  103. package/dist/primitives/toggle-group.d.cts +2 -2
  104. package/dist/primitives/toggle-group.d.ts +2 -2
  105. package/dist/primitives/toggle.d.cts +2 -2
  106. package/dist/primitives/toggle.d.ts +2 -2
  107. package/dist/primitives/trace.cjs +23 -0
  108. package/dist/primitives/trace.d.cts +22 -0
  109. package/dist/primitives/trace.d.ts +22 -0
  110. package/dist/primitives/trace.js +23 -0
  111. package/dist/primitives/voice-dictation-button.cjs +5 -239
  112. package/dist/primitives/voice-dictation-button.js +4 -238
  113. package/package.json +125 -2
  114. package/src/styles/components/bubble.css +81 -0
  115. package/src/styles/components/marker.css +27 -0
  116. package/src/styles/components/message-scroller.css +11 -0
  117. package/src/styles/components.css +3 -0
  118. package/src/styles/utilities.css +3 -2
  119. package/dist/{chunk-UGF2K6NR.js → chunk-HRLP4BHJ.js} +6 -6
  120. package/dist/{chunk-RWWOFWLP.cjs → chunk-IH3COANJ.cjs} +3 -3
@@ -0,0 +1,159 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+
4
+ var _chunk2HV2KKOEcjs = require('./chunk-2HV2KKOE.cjs');
5
+
6
+
7
+ var _chunkPQUSJEXLcjs = require('./chunk-PQUSJEXL.cjs');
8
+
9
+
10
+ var _chunkL4DH72UFcjs = require('./chunk-L4DH72UF.cjs');
11
+
12
+
13
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
14
+
15
+ // src/primitives/input-group.tsx
16
+ var _classvarianceauthority = require('class-variance-authority');
17
+ var _jsxruntime = require('react/jsx-runtime');
18
+ function InputGroup({ className, ...props }) {
19
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20
+ "div",
21
+ {
22
+ "data-slot": "input-group",
23
+ role: "group",
24
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
25
+ "group/input-group relative flex h-9 w-full min-w-0 items-center rounded-md border border-input shadow-xs transition-[color,box-shadow] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
26
+ className
27
+ ),
28
+ ...props
29
+ }
30
+ );
31
+ }
32
+ var inputGroupAddonVariants = _classvarianceauthority.cva.call(void 0,
33
+ "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4",
34
+ {
35
+ variants: {
36
+ align: {
37
+ "inline-start": "order-first pl-2 has-[>button]:-ml-1 has-[>kbd]:ml-[-0.15rem]",
38
+ "inline-end": "order-last pr-2 has-[>button]:-mr-1 has-[>kbd]:mr-[-0.15rem]",
39
+ "block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
40
+ "block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
41
+ }
42
+ },
43
+ defaultVariants: {
44
+ align: "inline-start"
45
+ }
46
+ }
47
+ );
48
+ function InputGroupAddon({
49
+ className,
50
+ align = "inline-start",
51
+ ...props
52
+ }) {
53
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
54
+ "div",
55
+ {
56
+ role: "group",
57
+ "data-slot": "input-group-addon",
58
+ "data-align": align,
59
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, inputGroupAddonVariants({ align }), className),
60
+ onClick: (e) => {
61
+ if (e.target.closest("button")) {
62
+ return;
63
+ }
64
+ _optionalChain([e, 'access', _ => _.currentTarget, 'access', _2 => _2.parentElement, 'optionalAccess', _3 => _3.querySelector, 'call', _4 => _4("input"), 'optionalAccess', _5 => _5.focus, 'call', _6 => _6()]);
65
+ },
66
+ ...props
67
+ }
68
+ );
69
+ }
70
+ var inputGroupButtonVariants = _classvarianceauthority.cva.call(void 0,
71
+ "flex items-center gap-2 text-sm shadow-none",
72
+ {
73
+ variants: {
74
+ size: {
75
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
76
+ sm: "h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
77
+ "icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
78
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
79
+ }
80
+ },
81
+ defaultVariants: {
82
+ size: "xs"
83
+ }
84
+ }
85
+ );
86
+ function InputGroupButton({
87
+ className,
88
+ type = "button",
89
+ variant = "ghost",
90
+ size = "xs",
91
+ ...props
92
+ }) {
93
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
94
+ _chunkL4DH72UFcjs.Button,
95
+ {
96
+ type,
97
+ size: "bare",
98
+ "data-size": size,
99
+ variant,
100
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, inputGroupButtonVariants({ size }), className),
101
+ ...props
102
+ }
103
+ );
104
+ }
105
+ function InputGroupText({ className, ...props }) {
106
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
107
+ "span",
108
+ {
109
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
110
+ "flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
111
+ className
112
+ ),
113
+ ...props
114
+ }
115
+ );
116
+ }
117
+ function InputGroupInput({
118
+ className,
119
+ ...props
120
+ }) {
121
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
122
+ _chunkPQUSJEXLcjs.Input,
123
+ {
124
+ "data-slot": "input-group-control",
125
+ controlSize: "sm",
126
+ surface: "ghost",
127
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
128
+ "min-w-0 flex-1 rounded-none border-0 bg-transparent px-2.5 py-1 shadow-none ring-0 focus-visible:ring-0 focus-visible:ring-offset-0 aria-invalid:ring-0 dark:bg-transparent",
129
+ className
130
+ ),
131
+ ...props
132
+ }
133
+ );
134
+ }
135
+ function InputGroupTextarea({
136
+ className,
137
+ ...props
138
+ }) {
139
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
140
+ _chunk2HV2KKOEcjs.Textarea,
141
+ {
142
+ "data-slot": "input-group-control",
143
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
144
+ "field-sizing-content min-h-16 flex-1 resize-none rounded-none border-0 bg-transparent px-2.5 py-2 shadow-none ring-0 focus-visible:ring-0 focus-visible:ring-offset-0 aria-invalid:ring-0 dark:bg-transparent",
145
+ className
146
+ ),
147
+ ...props
148
+ }
149
+ );
150
+ }
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+ exports.InputGroup = InputGroup; exports.InputGroupAddon = InputGroupAddon; exports.InputGroupButton = InputGroupButton; exports.InputGroupText = InputGroupText; exports.InputGroupInput = InputGroupInput; exports.InputGroupTextarea = InputGroupTextarea;
@@ -0,0 +1,73 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+
4
+ var _chunkL4DH72UFcjs = require('./chunk-L4DH72UF.cjs');
5
+
6
+
7
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
8
+
9
+ // src/primitives/suggestion.tsx
10
+ var _classvarianceauthority = require('class-variance-authority');
11
+ var _jsxruntime = require('react/jsx-runtime');
12
+ var suggestionsVariants = _classvarianceauthority.cva.call(void 0, "group/suggestions", {
13
+ variants: {
14
+ layout: {
15
+ row: "flex scroll-fade-x scrollbar-none gap-2 overflow-x-auto overscroll-x-contain",
16
+ wrap: "flex flex-wrap gap-2",
17
+ grid: "grid grid-cols-2 gap-2"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ layout: "row"
22
+ }
23
+ });
24
+ function Suggestions({
25
+ className,
26
+ layout = "row",
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30
+ "div",
31
+ {
32
+ "data-slot": "suggestions",
33
+ "data-layout": layout,
34
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, suggestionsVariants({ layout }), className),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function Suggestion({
40
+ suggestion,
41
+ onClick,
42
+ className,
43
+ children,
44
+ type = "button",
45
+ variant = "outline",
46
+ size = "sm",
47
+ ...props
48
+ }) {
49
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
50
+ _chunkL4DH72UFcjs.Button,
51
+ {
52
+ type,
53
+ "data-slot": "suggestion",
54
+ variant,
55
+ size,
56
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
57
+ "shrink-0 group-data-[layout=grid]/suggestions:justify-start group-data-[layout=grid]/suggestions:text-left group-data-[layout=grid]/suggestions:leading-snug group-data-[layout=grid]/suggestions:whitespace-normal",
58
+ // A prompt longer than the line wraps inside its chip rather than
59
+ // running out of the row.
60
+ "group-data-[layout=wrap]/suggestions:max-w-full group-data-[layout=wrap]/suggestions:text-left group-data-[layout=wrap]/suggestions:whitespace-normal",
61
+ className
62
+ ),
63
+ onClick: () => _optionalChain([onClick, 'optionalCall', _ => _(suggestion)]),
64
+ ...props,
65
+ children: _nullishCoalesce(children, () => ( suggestion))
66
+ }
67
+ );
68
+ }
69
+
70
+
71
+
72
+
73
+ exports.Suggestions = Suggestions; exports.Suggestion = Suggestion;
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import {
3
+ Button
4
+ } from "./chunk-HQRWRRZJ.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-G6SRSWXB.js";
8
+
9
+ // src/primitives/suggestion.tsx
10
+ import { cva } from "class-variance-authority";
11
+ import { jsx } from "react/jsx-runtime";
12
+ var suggestionsVariants = cva("group/suggestions", {
13
+ variants: {
14
+ layout: {
15
+ row: "flex scroll-fade-x scrollbar-none gap-2 overflow-x-auto overscroll-x-contain",
16
+ wrap: "flex flex-wrap gap-2",
17
+ grid: "grid grid-cols-2 gap-2"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ layout: "row"
22
+ }
23
+ });
24
+ function Suggestions({
25
+ className,
26
+ layout = "row",
27
+ ...props
28
+ }) {
29
+ return /* @__PURE__ */ jsx(
30
+ "div",
31
+ {
32
+ "data-slot": "suggestions",
33
+ "data-layout": layout,
34
+ className: cn(suggestionsVariants({ layout }), className),
35
+ ...props
36
+ }
37
+ );
38
+ }
39
+ function Suggestion({
40
+ suggestion,
41
+ onClick,
42
+ className,
43
+ children,
44
+ type = "button",
45
+ variant = "outline",
46
+ size = "sm",
47
+ ...props
48
+ }) {
49
+ return /* @__PURE__ */ jsx(
50
+ Button,
51
+ {
52
+ type,
53
+ "data-slot": "suggestion",
54
+ variant,
55
+ size,
56
+ className: cn(
57
+ "shrink-0 group-data-[layout=grid]/suggestions:justify-start group-data-[layout=grid]/suggestions:text-left group-data-[layout=grid]/suggestions:leading-snug group-data-[layout=grid]/suggestions:whitespace-normal",
58
+ // A prompt longer than the line wraps inside its chip rather than
59
+ // running out of the row.
60
+ "group-data-[layout=wrap]/suggestions:max-w-full group-data-[layout=wrap]/suggestions:text-left group-data-[layout=wrap]/suggestions:whitespace-normal",
61
+ className
62
+ ),
63
+ onClick: () => onClick?.(suggestion),
64
+ ...props,
65
+ children: children ?? suggestion
66
+ }
67
+ );
68
+ }
69
+
70
+ export {
71
+ Suggestions,
72
+ Suggestion
73
+ };
@@ -0,0 +1,116 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
5
+
6
+ // src/primitives/bubble.tsx
7
+ var _classvarianceauthority = require('class-variance-authority');
8
+ var _radixui = require('radix-ui');
9
+ var _jsxruntime = require('react/jsx-runtime');
10
+ function BubbleGroup({ className, ...props }) {
11
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
12
+ "div",
13
+ {
14
+ "data-slot": "bubble-group",
15
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, "cn-bubble-group flex min-w-0 flex-col", className),
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ var bubbleVariants = _classvarianceauthority.cva.call(void 0,
21
+ "cn-bubble group/bubble relative flex w-fit min-w-0 flex-col",
22
+ {
23
+ variants: {
24
+ variant: {
25
+ default: "cn-bubble-variant-default",
26
+ secondary: "cn-bubble-variant-secondary",
27
+ muted: "cn-bubble-variant-muted",
28
+ tinted: "cn-bubble-variant-tinted",
29
+ outline: "cn-bubble-variant-outline",
30
+ ghost: "cn-bubble-variant-ghost",
31
+ destructive: "cn-bubble-variant-destructive"
32
+ }
33
+ },
34
+ defaultVariants: {
35
+ variant: "default"
36
+ }
37
+ }
38
+ );
39
+ function Bubble({
40
+ variant = "default",
41
+ align = "start",
42
+ className,
43
+ ...props
44
+ }) {
45
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
46
+ "div",
47
+ {
48
+ "data-slot": "bubble",
49
+ "data-variant": variant,
50
+ "data-align": align,
51
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, bubbleVariants({ variant }), className),
52
+ ...props
53
+ }
54
+ );
55
+ }
56
+ function BubbleContent({
57
+ asChild = false,
58
+ className,
59
+ ...props
60
+ }) {
61
+ const Comp = asChild ? _radixui.Slot.Root : "div";
62
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
63
+ Comp,
64
+ {
65
+ "data-slot": "bubble-content",
66
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
67
+ "cn-bubble-content w-fit max-w-full min-w-0 overflow-hidden wrap-break-word [button]:text-left [button,a]:transition-colors",
68
+ className
69
+ ),
70
+ ...props
71
+ }
72
+ );
73
+ }
74
+ var bubbleReactionsVariants = _classvarianceauthority.cva.call(void 0,
75
+ "cn-bubble-reactions absolute z-10 flex w-fit items-center justify-center",
76
+ {
77
+ variants: {
78
+ side: {
79
+ top: "cn-bubble-reactions-side-top",
80
+ bottom: "cn-bubble-reactions-side-bottom"
81
+ },
82
+ align: {
83
+ start: "cn-bubble-reactions-align-start",
84
+ end: "cn-bubble-reactions-align-end"
85
+ }
86
+ },
87
+ defaultVariants: {
88
+ side: "bottom",
89
+ align: "end"
90
+ }
91
+ }
92
+ );
93
+ function BubbleReactions({
94
+ side = "bottom",
95
+ align = "end",
96
+ className,
97
+ ...props
98
+ }) {
99
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
100
+ "div",
101
+ {
102
+ "data-slot": "bubble-reactions",
103
+ "data-align": align,
104
+ "data-side": side,
105
+ className: _chunkKWLSBTB2cjs.cn.call(void 0, bubbleReactionsVariants({ side, align }), className),
106
+ ...props
107
+ }
108
+ );
109
+ }
110
+
111
+
112
+
113
+
114
+
115
+
116
+ exports.BubbleGroup = BubbleGroup; exports.Bubble = Bubble; exports.BubbleContent = BubbleContent; exports.BubbleReactions = BubbleReactions;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import {
3
+ RichText
4
+ } from "./chunk-INNGGLMZ.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-G6SRSWXB.js";
8
+
9
+ // src/primitives/lazy-markdown.tsx
10
+ import { lazy, Suspense } from "react";
11
+ import { jsx } from "react/jsx-runtime";
12
+ var Markdown = lazy(
13
+ () => import("./primitives/markdown.js").then((module) => ({ default: module.Markdown }))
14
+ );
15
+ function LazyMarkdown({ children, components, className, ...props }) {
16
+ return /* @__PURE__ */ jsx(
17
+ Suspense,
18
+ {
19
+ fallback: /* @__PURE__ */ jsx(RichText, { ...props, className: cn("whitespace-pre-wrap", className), children }),
20
+ children: /* @__PURE__ */ jsx(Markdown, { ...props, className, components, children })
21
+ }
22
+ );
23
+ }
24
+
25
+ export {
26
+ LazyMarkdown
27
+ };
@@ -0,0 +1,132 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+
3
+
4
+ var _chunkL4DH72UFcjs = require('./chunk-L4DH72UF.cjs');
5
+
6
+
7
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
8
+
9
+ // src/primitives/message-scroller.tsx
10
+
11
+
12
+
13
+
14
+
15
+ var _messagescroller = require('@shadcn/react/message-scroller');
16
+ var _lucidereact = require('lucide-react');
17
+ var _jsxruntime = require('react/jsx-runtime');
18
+ function MessageScrollerProvider(props) {
19
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _messagescroller.MessageScroller.Provider, { ...props });
20
+ }
21
+ function MessageScroller({
22
+ className,
23
+ ...props
24
+ }) {
25
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26
+ _messagescroller.MessageScroller.Root,
27
+ {
28
+ "data-slot": "message-scroller",
29
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
30
+ "cn-message-scroller group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
31
+ className
32
+ ),
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ function MessageScrollerViewport({
38
+ className,
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
42
+ _messagescroller.MessageScroller.Viewport,
43
+ {
44
+ "data-slot": "message-scroller-viewport",
45
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
46
+ // @shadcn/react 0.3: while an automatic scroll runs the scrollbar goes
47
+ // transparent rather than away (so the gutter, and the text, never
48
+ // shift), and the viewport stays invisible until its opening scroll
49
+ // position is applied, so a long thread never flashes its first turn.
50
+ "cn-message-scroller-viewport size-full min-h-0 min-w-0 scroll-fade-b scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent data-pending-scroll:invisible",
51
+ className
52
+ ),
53
+ ...props
54
+ }
55
+ );
56
+ }
57
+ function MessageScrollerContent({
58
+ className,
59
+ ...props
60
+ }) {
61
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
62
+ _messagescroller.MessageScroller.Content,
63
+ {
64
+ "data-slot": "message-scroller-content",
65
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
66
+ "cn-message-scroller-content flex h-max min-h-full flex-col",
67
+ className
68
+ ),
69
+ ...props
70
+ }
71
+ );
72
+ }
73
+ function MessageScrollerItem({
74
+ className,
75
+ scrollAnchor = false,
76
+ ...props
77
+ }) {
78
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
79
+ _messagescroller.MessageScroller.Item,
80
+ {
81
+ "data-slot": "message-scroller-item",
82
+ scrollAnchor,
83
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
84
+ "cn-message-scroller-item min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
85
+ className
86
+ ),
87
+ ...props
88
+ }
89
+ );
90
+ }
91
+ function MessageScrollerButton({
92
+ direction = "end",
93
+ className,
94
+ children,
95
+ render,
96
+ variant = "secondary",
97
+ size = "icon-sm",
98
+ ...props
99
+ }) {
100
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
101
+ _messagescroller.MessageScroller.Button,
102
+ {
103
+ "data-slot": "message-scroller-button",
104
+ "data-direction": direction,
105
+ "data-variant": variant,
106
+ "data-size": size,
107
+ direction,
108
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
109
+ "cn-message-scroller-button absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180",
110
+ className
111
+ ),
112
+ render: _nullishCoalesce(render, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkL4DH72UFcjs.Button, { variant, size }))),
113
+ ...props,
114
+ children: _nullishCoalesce(children, () => ( /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
115
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowDown, { className: "h-4 w-4" }),
116
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "sr-only", children: direction === "end" ? "Scroll to end" : "Scroll to start" })
117
+ ] })))
118
+ }
119
+ );
120
+ }
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+ exports.useMessageScroller = _messagescroller.useMessageScroller; exports.useMessageScrollerScrollable = _messagescroller.useMessageScrollerScrollable; exports.useMessageScrollerVisibility = _messagescroller.useMessageScrollerVisibility; exports.MessageScrollerProvider = MessageScrollerProvider; exports.MessageScroller = MessageScroller; exports.MessageScrollerViewport = MessageScrollerViewport; exports.MessageScrollerContent = MessageScrollerContent; exports.MessageScrollerItem = MessageScrollerItem; exports.MessageScrollerButton = MessageScrollerButton;