@devalok/shilp-sutra 0.33.2 → 0.34.1

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 (175) hide show
  1. package/dist/_chunks/badge-group.js +306 -246
  2. package/dist/_chunks/chat.js +513 -0
  3. package/dist/_chunks/date-picker.js +748 -0
  4. package/dist/_chunks/document-preview.js +109 -90
  5. package/dist/_chunks/file-preview.js +492 -504
  6. package/dist/_chunks/framer.js +5564 -5613
  7. package/dist/_chunks/image-preview.js +127 -88
  8. package/dist/_chunks/keybinding.js +12 -14
  9. package/dist/_chunks/link-context.js +19 -16
  10. package/dist/_chunks/mention-suggestion.js +353 -350
  11. package/dist/_chunks/motion-provider.js +26 -20
  12. package/dist/_chunks/popover.js +127 -0
  13. package/dist/_chunks/primitives.js +7584 -6425
  14. package/dist/_chunks/rich-chat-input.js +2070 -0
  15. package/dist/_chunks/rolldown-runtime.js +21 -0
  16. package/dist/_chunks/shared.js +126 -0
  17. package/dist/_chunks/sonner.js +605 -734
  18. package/dist/_chunks/stat-row.js +418 -440
  19. package/dist/_chunks/tiptap.js +15850 -19964
  20. package/dist/_chunks/tree-view.js +231 -290
  21. package/dist/_chunks/use-calendar.js +161 -208
  22. package/dist/_chunks/vendor-client.js +314 -2199
  23. package/dist/_chunks/vendor-utils.js +1721 -2978
  24. package/dist/ai/ai-command-provider.js +23 -17
  25. package/dist/ai/block-renderer.js +68 -51
  26. package/dist/ai/blocks/index.js +2 -12
  27. package/dist/ai/command-bar.js +470 -519
  28. package/dist/ai/conversation.js +241 -227
  29. package/dist/ai/index.js +181 -167
  30. package/dist/ai/types.js +0 -1
  31. package/dist/composed/activity-feed.js +232 -202
  32. package/dist/composed/avatar-group.js +164 -222
  33. package/dist/composed/bulk-action-bar.js +174 -165
  34. package/dist/composed/command-palette.js +290 -308
  35. package/dist/composed/confirm-dialog.js +28 -48
  36. package/dist/composed/content-card.js +69 -108
  37. package/dist/composed/date-picker/index.js +3 -13
  38. package/dist/composed/deadline-indicator.js +68 -74
  39. package/dist/composed/emoji-picker.js +83 -110
  40. package/dist/composed/empty-state.js +64 -103
  41. package/dist/composed/error-boundary.js +129 -127
  42. package/dist/composed/file-preview.js +2 -12
  43. package/dist/composed/filter-bar.js +98 -130
  44. package/dist/composed/form-section.js +61 -45
  45. package/dist/composed/global-loading.js +34 -47
  46. package/dist/composed/index.js +34 -92
  47. package/dist/composed/inline-edit.js +92 -107
  48. package/dist/composed/lib/string-utils.js +8 -8
  49. package/dist/composed/loading-skeleton.js +103 -171
  50. package/dist/composed/markdown-viewer.js +187 -139
  51. package/dist/composed/master-detail.js +147 -156
  52. package/dist/composed/member-picker.js +46 -49
  53. package/dist/composed/multi-select-popover.js +181 -179
  54. package/dist/composed/page-header.js +54 -76
  55. package/dist/composed/page-skeletons.js +143 -127
  56. package/dist/composed/priority-indicator.js +105 -111
  57. package/dist/composed/responsive-overlay.js +36 -41
  58. package/dist/composed/rich-chat-input.js +2 -1860
  59. package/dist/composed/rich-text-editor.js +561 -424
  60. package/dist/composed/schedule-view.js +134 -185
  61. package/dist/composed/simple-tooltip.js +21 -21
  62. package/dist/composed/status-badge.js +133 -137
  63. package/dist/hooks/index.js +7 -12
  64. package/dist/hooks/use-color-mode.js +28 -25
  65. package/dist/hooks/use-mobile.js +13 -13
  66. package/dist/hooks/use-toast.js +2 -4
  67. package/dist/hooks/use-touch-device.js +9 -11
  68. package/dist/hooks/use-viewport-height.js +14 -14
  69. package/dist/motion/index.js +3 -11
  70. package/dist/motion/primitives-index.js +226 -186
  71. package/dist/shell/app-command-palette.js +203 -234
  72. package/dist/shell/bottom-navbar.js +150 -190
  73. package/dist/shell/command-registry.js +13 -14
  74. package/dist/shell/index.js +10 -20
  75. package/dist/shell/link-context.js +2 -5
  76. package/dist/shell/notification-center.js +238 -259
  77. package/dist/shell/notification-preferences.js +241 -184
  78. package/dist/shell/sidebar.js +251 -281
  79. package/dist/shell/top-bar.js +203 -237
  80. package/dist/tailwind/index.cjs +426 -451
  81. package/dist/tailwind/index.js +2 -4
  82. package/dist/tailwind/preset.d.ts.map +1 -1
  83. package/dist/tailwind/preset.js +443 -468
  84. package/dist/ui/accordion.js +52 -60
  85. package/dist/ui/alert-dialog.js +111 -156
  86. package/dist/ui/alert.js +177 -99
  87. package/dist/ui/aspect-ratio.js +13 -16
  88. package/dist/ui/autocomplete.js +112 -148
  89. package/dist/ui/avatar.js +196 -169
  90. package/dist/ui/badge-group.js +2 -7
  91. package/dist/ui/badge-indicator.js +42 -51
  92. package/dist/ui/badge.js +2 -15
  93. package/dist/ui/banner.js +76 -68
  94. package/dist/ui/breadcrumb.js +65 -84
  95. package/dist/ui/button-group.js +109 -102
  96. package/dist/ui/button-processing.js +69 -73
  97. package/dist/ui/button.js +393 -279
  98. package/dist/ui/card.js +151 -157
  99. package/dist/ui/charts/index.js +1002 -1319
  100. package/dist/ui/chat/index.js +2 -11
  101. package/dist/ui/checkbox.js +77 -100
  102. package/dist/ui/code.js +18 -32
  103. package/dist/ui/collapsible.js +21 -29
  104. package/dist/ui/color-input.js +453 -372
  105. package/dist/ui/color-swatch.js +60 -90
  106. package/dist/ui/combobox.js +244 -293
  107. package/dist/ui/container.js +18 -24
  108. package/dist/ui/context-menu.js +154 -203
  109. package/dist/ui/data-table-body.js +116 -213
  110. package/dist/ui/data-table-bulk-actions.js +43 -59
  111. package/dist/ui/data-table-card.js +84 -71
  112. package/dist/ui/data-table-context.js +39 -42
  113. package/dist/ui/data-table-header.js +98 -139
  114. package/dist/ui/data-table-pagination.js +69 -82
  115. package/dist/ui/data-table-toolbar.js +104 -130
  116. package/dist/ui/data-table.js +278 -354
  117. package/dist/ui/devalok-grain.js +77 -66
  118. package/dist/ui/dialog.js +122 -151
  119. package/dist/ui/dropdown-menu.js +152 -203
  120. package/dist/ui/file-upload.js +242 -266
  121. package/dist/ui/form.js +60 -56
  122. package/dist/ui/hover-card.js +54 -54
  123. package/dist/ui/icon-button.js +21 -26
  124. package/dist/ui/icon-context.js +17 -17
  125. package/dist/ui/icon-group.js +22 -29
  126. package/dist/ui/icon.js +201 -121
  127. package/dist/ui/index.js +74 -350
  128. package/dist/ui/input-otp.d.ts.map +1 -1
  129. package/dist/ui/input-otp.js +44 -48
  130. package/dist/ui/input.js +92 -169
  131. package/dist/ui/label.js +17 -22
  132. package/dist/ui/lib/date-utils.js +14 -11
  133. package/dist/ui/lib/motion.js +77 -36
  134. package/dist/ui/lib/utils.js +39 -16
  135. package/dist/ui/link.js +13 -24
  136. package/dist/ui/menubar.js +132 -210
  137. package/dist/ui/navigation-menu.js +164 -194
  138. package/dist/ui/number-input.js +72 -95
  139. package/dist/ui/pagination.js +122 -159
  140. package/dist/ui/popover.js +2 -131
  141. package/dist/ui/progress-ring.js +133 -143
  142. package/dist/ui/progress.js +51 -95
  143. package/dist/ui/radio.js +41 -50
  144. package/dist/ui/search-input.js +51 -53
  145. package/dist/ui/segmented-control.js +93 -114
  146. package/dist/ui/select.js +131 -157
  147. package/dist/ui/separator.js +15 -25
  148. package/dist/ui/sheet.js +135 -163
  149. package/dist/ui/sidebar.js +357 -600
  150. package/dist/ui/skeleton.js +179 -231
  151. package/dist/ui/slider.js +24 -34
  152. package/dist/ui/spinner.js +226 -205
  153. package/dist/ui/split-button.js +227 -276
  154. package/dist/ui/stack.js +56 -70
  155. package/dist/ui/stat-card.js +259 -251
  156. package/dist/ui/status-dot.js +67 -63
  157. package/dist/ui/stepper.js +119 -168
  158. package/dist/ui/switch.js +51 -54
  159. package/dist/ui/table.js +57 -90
  160. package/dist/ui/tabs.js +139 -156
  161. package/dist/ui/text.js +52 -59
  162. package/dist/ui/textarea.js +40 -57
  163. package/dist/ui/toast-types.js +0 -1
  164. package/dist/ui/toast.js +554 -536
  165. package/dist/ui/toaster.js +23 -33
  166. package/dist/ui/toggle-group.js +37 -41
  167. package/dist/ui/toggle.js +36 -40
  168. package/dist/ui/tooltip.js +80 -65
  169. package/dist/ui/tree-view/index.js +2 -6
  170. package/dist/ui/visually-hidden.js +12 -10
  171. package/llms-full.txt +1 -1
  172. package/llms.txt +12 -0
  173. package/package.json +3 -3
  174. package/dist/_chunks/date-time-picker.js +0 -851
  175. package/dist/_chunks/typing-indicator.js +0 -565
@@ -1,235 +1,249 @@
1
1
  "use client";
2
- import { jsxs as o, jsx as e } from "react/jsx-runtime";
3
- import * as a from "react";
4
- import { IconCircle as O, IconCircleX as S, IconLoader2 as L, IconCircleCheck as U } from "@tabler/icons-react";
5
- import { Icon as f } from "../ui/icon.js";
6
- import { cn as w } from "../ui/lib/utils.js";
7
- import { springs as B } from "../ui/lib/motion.js";
8
- import { u as V } from "../_chunks/motion-provider.js";
9
- import { BlockRenderer as $ } from "./block-renderer.js";
10
- import { useAICommand as D } from "./ai-command-provider.js";
11
- import { A as F, m as l } from "../_chunks/framer.js";
12
- function G({ status: t }) {
13
- switch (t) {
14
- case "done":
15
- return /* @__PURE__ */ e(f, { icon: U, size: "sm", className: "text-success-11" });
16
- case "active":
17
- return /* @__PURE__ */ e(
18
- l.span,
19
- {
20
- className: "inline-flex items-center justify-center text-accent-9",
21
- animate: { rotate: 360 },
22
- transition: { repeat: 1 / 0, duration: 1, ease: "linear" },
23
- "aria-hidden": "true",
24
- children: /* @__PURE__ */ e(f, { icon: L, size: "sm" })
25
- }
26
- );
27
- case "error":
28
- return /* @__PURE__ */ e(f, { icon: S, size: "sm", className: "text-error-11" });
29
- default:
30
- return /* @__PURE__ */ e(f, { icon: O, size: "sm", className: "text-surface-fg-subtle opacity-50" });
31
- }
2
+ import { a as e, c as t } from "../_chunks/framer.js";
3
+ import { springs as n } from "../ui/lib/motion.js";
4
+ import { cn as r } from "../ui/lib/utils.js";
5
+ import { Icon as i } from "../ui/icon.js";
6
+ import { n as a } from "../_chunks/motion-provider.js";
7
+ import { useAICommand as o } from "./ai-command-provider.js";
8
+ import { BlockRenderer as s } from "./block-renderer.js";
9
+ import * as c from "react";
10
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
11
+ import { IconCircle as d, IconCircleCheck as f, IconCircleX as p, IconLoader2 as m } from "@tabler/icons-react";
12
+ //#region src/ai/conversation.tsx
13
+ function h({ status: t }) {
14
+ switch (t) {
15
+ case "done": return /* @__PURE__ */ l(i, {
16
+ icon: f,
17
+ size: "sm",
18
+ className: "text-success-11"
19
+ });
20
+ case "active": return /* @__PURE__ */ l(e.span, {
21
+ className: "inline-flex items-center justify-center text-accent-9",
22
+ animate: { rotate: 360 },
23
+ transition: {
24
+ repeat: Infinity,
25
+ duration: 1,
26
+ ease: "linear"
27
+ },
28
+ "aria-hidden": "true",
29
+ children: /* @__PURE__ */ l(i, {
30
+ icon: m,
31
+ size: "sm"
32
+ })
33
+ });
34
+ case "error": return /* @__PURE__ */ l(i, {
35
+ icon: p,
36
+ size: "sm",
37
+ className: "text-error-11"
38
+ });
39
+ default: return /* @__PURE__ */ l(i, {
40
+ icon: d,
41
+ size: "sm",
42
+ className: "text-surface-fg-subtle opacity-50"
43
+ });
44
+ }
32
45
  }
33
- function b({
34
- name: t,
35
- icon: s
36
- }) {
37
- return /* @__PURE__ */ o("div", { className: "flex items-center gap-ds-02b mb-ds-03", children: [
38
- s && /* @__PURE__ */ e("span", { className: "h-4 w-4 flex items-center justify-center", children: s }),
39
- /* @__PURE__ */ e("span", { className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle", children: t })
40
- ] });
46
+ function g({ name: e, icon: t }) {
47
+ return /* @__PURE__ */ u("div", {
48
+ className: "flex items-center gap-ds-02b mb-ds-03",
49
+ children: [t && /* @__PURE__ */ l("span", {
50
+ className: "h-4 w-4 flex items-center justify-center",
51
+ children: t
52
+ }), /* @__PURE__ */ l("span", {
53
+ className: "text-ds-xs font-semibold uppercase tracking-wider text-surface-fg-subtle",
54
+ children: e
55
+ })]
56
+ });
41
57
  }
42
- function P({
43
- message: t,
44
- reducedMotion: s
45
- }) {
46
- return s ? /* @__PURE__ */ e("div", { className: "bg-surface-raised rounded-ds-lg px-ds-05 py-ds-04", children: /* @__PURE__ */ e("p", { className: "text-ds-sm text-surface-fg", children: t.content }) }) : /* @__PURE__ */ e(
47
- l.div,
48
- {
49
- className: "bg-surface-raised rounded-ds-lg px-ds-05 py-ds-04",
50
- initial: { opacity: 0, y: 8 },
51
- animate: { opacity: 1, y: 0 },
52
- transition: B.snappy,
53
- children: /* @__PURE__ */ e("p", { className: "text-ds-sm text-surface-fg", children: t.content })
54
- }
55
- );
58
+ function _({ message: t, reducedMotion: r }) {
59
+ return r ? /* @__PURE__ */ l("div", {
60
+ className: "bg-surface-raised rounded-ds-lg px-ds-05 py-ds-04",
61
+ children: /* @__PURE__ */ l("p", {
62
+ className: "text-ds-sm text-surface-fg",
63
+ children: t.content
64
+ })
65
+ }) : /* @__PURE__ */ l(e.div, {
66
+ className: "bg-surface-raised rounded-ds-lg px-ds-05 py-ds-04",
67
+ initial: {
68
+ opacity: 0,
69
+ y: 8
70
+ },
71
+ animate: {
72
+ opacity: 1,
73
+ y: 0
74
+ },
75
+ transition: n.snappy,
76
+ children: /* @__PURE__ */ l("p", {
77
+ className: "text-ds-sm text-surface-fg",
78
+ children: t.content
79
+ })
80
+ });
56
81
  }
57
- function X({
58
- message: t,
59
- agent: s,
60
- onAction: c,
61
- customBlocks: n
62
- }) {
63
- return /* @__PURE__ */ o("div", { children: [
64
- /* @__PURE__ */ e(b, { name: s.name, icon: s.icon }),
65
- t.blocks && /* @__PURE__ */ e(
66
- $,
67
- {
68
- blocks: t.blocks,
69
- onAction: c,
70
- customBlocks: n
71
- }
72
- )
73
- ] });
82
+ function v({ message: e, agent: t, onAction: n, customBlocks: r }) {
83
+ return /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l(g, {
84
+ name: t.name,
85
+ icon: t.icon
86
+ }), e.blocks && /* @__PURE__ */ l(s, {
87
+ blocks: e.blocks,
88
+ onAction: n,
89
+ customBlocks: r
90
+ })] });
74
91
  }
75
- function _({
76
- steps: t,
77
- agent: s,
78
- reducedMotion: c
79
- }) {
80
- return t && t.length > 0 ? /* @__PURE__ */ o("div", { role: "status", "aria-busy": "true", "aria-label": "Processing", children: [
81
- /* @__PURE__ */ e(b, { name: s.name, icon: s.icon }),
82
- /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-02b", children: t.map((n, p) => /* @__PURE__ */ o(
83
- l.div,
84
- {
85
- className: "flex items-center gap-ds-02b",
86
- initial: c ? void 0 : { opacity: 0, x: -8 },
87
- animate: { opacity: 1, x: 0 },
88
- transition: c ? { duration: 0 } : { duration: 0.2, delay: p * 0.05 },
89
- children: [
90
- /* @__PURE__ */ e(G, { status: n.status }),
91
- /* @__PURE__ */ e(
92
- "span",
93
- {
94
- className: w(
95
- "text-ds-sm",
96
- n.status === "pending" ? "text-surface-fg-subtle" : "text-surface-fg"
97
- ),
98
- children: n.label
99
- }
100
- )
101
- ]
102
- },
103
- n.id
104
- )) })
105
- ] }) : /* @__PURE__ */ o(
106
- "div",
107
- {
108
- role: "status",
109
- "aria-busy": "true",
110
- "aria-label": `${s.name} is processing`,
111
- children: [
112
- /* @__PURE__ */ e(b, { name: s.name, icon: s.icon }),
113
- /* @__PURE__ */ o("div", { className: "flex items-center gap-ds-02", children: [
114
- !c && [0, 1, 2].map((n) => /* @__PURE__ */ e(
115
- l.span,
116
- {
117
- className: "h-1.5 w-1.5 rounded-full bg-accent-9",
118
- animate: { scale: [1, 1.4, 1], opacity: [0.4, 1, 0.4] },
119
- transition: {
120
- duration: 1.4,
121
- repeat: 1 / 0,
122
- ease: "easeInOut",
123
- delay: n * 0.16
124
- }
125
- },
126
- n
127
- )),
128
- /* @__PURE__ */ o("span", { className: "ml-ds-02b text-ds-sm text-surface-fg-subtle", children: [
129
- s.name,
130
- " is thinking..."
131
- ] })
132
- ] })
133
- ]
134
- }
135
- );
92
+ function y({ steps: t, agent: n, reducedMotion: i }) {
93
+ return t && t.length > 0 ? /* @__PURE__ */ u("div", {
94
+ role: "status",
95
+ "aria-busy": "true",
96
+ "aria-label": "Processing",
97
+ children: [/* @__PURE__ */ l(g, {
98
+ name: n.name,
99
+ icon: n.icon
100
+ }), /* @__PURE__ */ l("div", {
101
+ className: "flex flex-col gap-ds-02b",
102
+ children: t.map((t, n) => /* @__PURE__ */ u(e.div, {
103
+ className: "flex items-center gap-ds-02b",
104
+ initial: i ? void 0 : {
105
+ opacity: 0,
106
+ x: -8
107
+ },
108
+ animate: {
109
+ opacity: 1,
110
+ x: 0
111
+ },
112
+ transition: i ? { duration: 0 } : {
113
+ duration: .2,
114
+ delay: n * .05
115
+ },
116
+ children: [/* @__PURE__ */ l(h, { status: t.status }), /* @__PURE__ */ l("span", {
117
+ className: r("text-ds-sm", t.status === "pending" ? "text-surface-fg-subtle" : "text-surface-fg"),
118
+ children: t.label
119
+ })]
120
+ }, t.id))
121
+ })]
122
+ }) : /* @__PURE__ */ u("div", {
123
+ role: "status",
124
+ "aria-busy": "true",
125
+ "aria-label": `${n.name} is processing`,
126
+ children: [/* @__PURE__ */ l(g, {
127
+ name: n.name,
128
+ icon: n.icon
129
+ }), /* @__PURE__ */ u("div", {
130
+ className: "flex items-center gap-ds-02",
131
+ children: [!i && [
132
+ 0,
133
+ 1,
134
+ 2
135
+ ].map((t) => /* @__PURE__ */ l(e.span, {
136
+ className: "h-1.5 w-1.5 rounded-full bg-accent-9",
137
+ animate: {
138
+ scale: [
139
+ 1,
140
+ 1.4,
141
+ 1
142
+ ],
143
+ opacity: [
144
+ .4,
145
+ 1,
146
+ .4
147
+ ]
148
+ },
149
+ transition: {
150
+ duration: 1.4,
151
+ repeat: Infinity,
152
+ ease: "easeInOut",
153
+ delay: t * .16
154
+ }
155
+ }, t)), /* @__PURE__ */ u("span", {
156
+ className: "ml-ds-02b text-ds-sm text-surface-fg-subtle",
157
+ children: [n.name, " is thinking..."]
158
+ })]
159
+ })]
160
+ });
136
161
  }
137
- function q({ onClick: t }) {
138
- return /* @__PURE__ */ o(
139
- l.button,
140
- {
141
- role: "button",
142
- "aria-label": "Scroll to latest response",
143
- className: "absolute bottom-ds-04 left-1/2 -translate-x-1/2 z-10 flex items-center gap-ds-02 bg-accent-9 text-accent-fg text-ds-xs font-medium rounded-full px-ds-04 py-ds-02 shadow-floating",
144
- initial: { opacity: 0, y: 8 },
145
- animate: { opacity: 1, y: 0 },
146
- exit: { opacity: 0, y: 8 },
147
- transition: B.snappy,
148
- onClick: t,
149
- children: [
150
- "↓",
151
- " New response"
152
- ]
153
- }
154
- );
162
+ function b({ onClick: t }) {
163
+ return /* @__PURE__ */ u(e.button, {
164
+ role: "button",
165
+ "aria-label": "Scroll to latest response",
166
+ className: "absolute bottom-ds-04 left-1/2 -translate-x-1/2 z-10 flex items-center gap-ds-02 bg-accent-9 text-accent-fg text-ds-xs font-medium rounded-full px-ds-04 py-ds-02 shadow-floating",
167
+ initial: {
168
+ opacity: 0,
169
+ y: 8
170
+ },
171
+ animate: {
172
+ opacity: 1,
173
+ y: 0
174
+ },
175
+ exit: {
176
+ opacity: 0,
177
+ y: 8
178
+ },
179
+ transition: n.snappy,
180
+ onClick: t,
181
+ children: ["↓", " New response"]
182
+ });
155
183
  }
156
- const H = { name: "Assistant" }, J = a.forwardRef(({
157
- messages: t,
158
- isProcessing: s = !1,
159
- processingSteps: c,
160
- agent: n,
161
- onAction: p,
162
- customBlocks: y,
163
- maxHeight: d,
164
- autoScroll: u = !0,
165
- className: R
166
- }, z) => {
167
- const m = D(), { reducedMotion: v } = V(), N = n ?? m?.agent ?? H, j = p ?? m?.onAction, E = a.useMemo(() => ({ ...m?.customBlocks ?? {}, ...y }), [m?.customBlocks, y]), g = a.useRef(null), i = a.useRef(null), [x, I] = a.useState(!0), [M, h] = a.useState(!1), k = a.useRef(t.length), A = a.useRef(s);
168
- a.useEffect(() => {
169
- if (!u || !i.current) return;
170
- const r = new IntersectionObserver(
171
- ([C]) => {
172
- I(C.isIntersecting), C.isIntersecting && h(!1);
173
- },
174
- {
175
- root: g.current,
176
- threshold: 0.1
177
- }
178
- );
179
- return r.observe(i.current), () => r.disconnect();
180
- }, [u]), a.useEffect(() => {
181
- const r = t.length !== k.current || s !== A.current;
182
- k.current = t.length, A.current = s, !(!r || !u) && (x ? i.current?.scrollIntoView({ behavior: "smooth", block: "end" }) : h(!0));
183
- }, [t, s, x, u]);
184
- const T = a.useCallback(() => {
185
- i.current?.scrollIntoView({ behavior: "smooth", block: "end" }), I(!0), h(!1);
186
- }, []);
187
- return /* @__PURE__ */ o("div", { ref: z, className: w("relative", R), children: [
188
- /* @__PURE__ */ o(
189
- "div",
190
- {
191
- ref: g,
192
- className: "flex flex-col gap-ds-05 overflow-y-auto",
193
- "aria-live": "polite",
194
- style: d ? {
195
- maxHeight: typeof d == "number" ? `${d}px` : d
196
- } : void 0,
197
- children: [
198
- t.map(
199
- (r) => r.role === "user" ? /* @__PURE__ */ e(
200
- P,
201
- {
202
- message: r,
203
- reducedMotion: v
204
- },
205
- r.id
206
- ) : /* @__PURE__ */ e(
207
- X,
208
- {
209
- message: r,
210
- agent: N,
211
- onAction: j,
212
- customBlocks: E
213
- },
214
- r.id
215
- )
216
- ),
217
- s && /* @__PURE__ */ e(
218
- _,
219
- {
220
- steps: c,
221
- agent: N,
222
- reducedMotion: v
223
- }
224
- ),
225
- /* @__PURE__ */ e("div", { ref: i, className: "h-px" })
226
- ]
227
- }
228
- ),
229
- /* @__PURE__ */ e(F, { children: !x && M && /* @__PURE__ */ e(q, { onClick: T }) })
230
- ] });
184
+ var x = { name: "Assistant" }, S = c.forwardRef(({ messages: e, isProcessing: n = !1, processingSteps: i, agent: s, onAction: d, customBlocks: f, maxHeight: p, autoScroll: m = !0, className: h }, g) => {
185
+ let S = o(), { reducedMotion: C } = a(), w = s ?? S?.agent ?? x, T = d ?? S?.onAction, E = c.useMemo(() => ({
186
+ ...S?.customBlocks ?? {},
187
+ ...f
188
+ }), [S?.customBlocks, f]), D = c.useRef(null), O = c.useRef(null), [k, A] = c.useState(!0), [j, M] = c.useState(!1), N = c.useRef(e.length), P = c.useRef(n);
189
+ c.useEffect(() => {
190
+ if (!m || !O.current) return;
191
+ let e = new IntersectionObserver(([e]) => {
192
+ A(e.isIntersecting), e.isIntersecting && M(!1);
193
+ }, {
194
+ root: D.current,
195
+ threshold: .1
196
+ });
197
+ return e.observe(O.current), () => e.disconnect();
198
+ }, [m]), c.useEffect(() => {
199
+ let t = e.length !== N.current || n !== P.current;
200
+ N.current = e.length, P.current = n, !(!t || !m) && (k ? O.current?.scrollIntoView({
201
+ behavior: "smooth",
202
+ block: "end"
203
+ }) : M(!0));
204
+ }, [
205
+ e,
206
+ n,
207
+ k,
208
+ m
209
+ ]);
210
+ let F = c.useCallback(() => {
211
+ O.current?.scrollIntoView({
212
+ behavior: "smooth",
213
+ block: "end"
214
+ }), A(!0), M(!1);
215
+ }, []);
216
+ return /* @__PURE__ */ u("div", {
217
+ ref: g,
218
+ className: r("relative", h),
219
+ children: [/* @__PURE__ */ u("div", {
220
+ ref: D,
221
+ className: "flex flex-col gap-ds-05 overflow-y-auto",
222
+ "aria-live": "polite",
223
+ style: p ? { maxHeight: typeof p == "number" ? `${p}px` : p } : void 0,
224
+ children: [
225
+ e.map((e) => e.role === "user" ? /* @__PURE__ */ l(_, {
226
+ message: e,
227
+ reducedMotion: C
228
+ }, e.id) : /* @__PURE__ */ l(v, {
229
+ message: e,
230
+ agent: w,
231
+ onAction: T,
232
+ customBlocks: E
233
+ }, e.id)),
234
+ n && /* @__PURE__ */ l(y, {
235
+ steps: i,
236
+ agent: w,
237
+ reducedMotion: C
238
+ }),
239
+ /* @__PURE__ */ l("div", {
240
+ ref: O,
241
+ className: "h-px"
242
+ })
243
+ ]
244
+ }), /* @__PURE__ */ l(t, { children: !k && j && /* @__PURE__ */ l(b, { onClick: F }) })]
245
+ });
231
246
  });
232
- J.displayName = "AIConversation";
233
- export {
234
- J as AIConversation
235
- };
247
+ S.displayName = "AIConversation";
248
+ //#endregion
249
+ export { S as AIConversation };