@devalok/shilp-sutra 0.57.0 → 0.59.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 (258) hide show
  1. package/MIGRATION.md +91 -0
  2. package/dist/_chunks/badge-group.js +75 -188
  3. package/dist/_chunks/badge-group.js.map +1 -1
  4. package/dist/_chunks/chat.js +244 -243
  5. package/dist/_chunks/chat.js.map +1 -1
  6. package/dist/_chunks/image-preview.js +71 -70
  7. package/dist/_chunks/image-preview.js.map +1 -1
  8. package/dist/_chunks/motion-preference.js +15 -0
  9. package/dist/_chunks/motion-preference.js.map +1 -0
  10. package/dist/_chunks/motion-provider.js +1 -1
  11. package/dist/_chunks/motion-provider.js.map +1 -1
  12. package/dist/_chunks/popover.js +50 -49
  13. package/dist/_chunks/popover.js.map +1 -1
  14. package/dist/_chunks/primitives-internal.js +29 -29
  15. package/dist/_chunks/primitives-internal.js.map +1 -1
  16. package/dist/_chunks/shared.js +48 -47
  17. package/dist/_chunks/shared.js.map +1 -1
  18. package/dist/_chunks/success.js +34 -34
  19. package/dist/_chunks/tree-view.js +1 -1
  20. package/dist/_chunks/tree-view.js.map +1 -1
  21. package/dist/ai/block-renderer.js +8 -8
  22. package/dist/ai/command-bar.js +65 -65
  23. package/dist/ai/command-bar.js.map +1 -1
  24. package/dist/ai/conversation.js +35 -35
  25. package/dist/ai/conversation.js.map +1 -1
  26. package/dist/ai/index.js +4 -4
  27. package/dist/composed/activity-feed.d.ts.map +1 -1
  28. package/dist/composed/activity-feed.js +108 -107
  29. package/dist/composed/activity-feed.js.map +1 -1
  30. package/dist/composed/command-palette.js +137 -137
  31. package/dist/composed/command-palette.js.map +1 -1
  32. package/dist/composed/content-card.js +1 -1
  33. package/dist/composed/content-card.js.map +1 -1
  34. package/dist/composed/date-picker/index.js +5 -5
  35. package/dist/composed/date-picker/index.js.map +1 -1
  36. package/dist/composed/empty-state.js +4 -4
  37. package/dist/composed/file-preview/image-preview.d.ts.map +1 -1
  38. package/dist/composed/file-preview/shared.d.ts.map +1 -1
  39. package/dist/composed/file-preview/video-preview.d.ts.map +1 -1
  40. package/dist/composed/file-preview.js +151 -150
  41. package/dist/composed/file-preview.js.map +1 -1
  42. package/dist/composed/filter-bar.d.ts.map +1 -1
  43. package/dist/composed/filter-bar.js +53 -52
  44. package/dist/composed/filter-bar.js.map +1 -1
  45. package/dist/composed/form-section.d.ts.map +1 -1
  46. package/dist/composed/form-section.js +38 -37
  47. package/dist/composed/form-section.js.map +1 -1
  48. package/dist/composed/master-detail.d.ts.map +1 -1
  49. package/dist/composed/master-detail.js +1 -1
  50. package/dist/composed/master-detail.js.map +1 -1
  51. package/dist/composed/multi-select-popover.d.ts.map +1 -1
  52. package/dist/composed/multi-select-popover.js +109 -108
  53. package/dist/composed/multi-select-popover.js.map +1 -1
  54. package/dist/composed/rich-chat-input/attachment-strip.d.ts.map +1 -1
  55. package/dist/composed/rich-chat-input/reply-banner.d.ts.map +1 -1
  56. package/dist/composed/rich-chat-input/schedule-send.d.ts.map +1 -1
  57. package/dist/composed/rich-chat-input.d.ts.map +1 -1
  58. package/dist/composed/rich-chat-input.js +467 -466
  59. package/dist/composed/rich-chat-input.js.map +1 -1
  60. package/dist/composed/rich-text-editor.js +3 -3
  61. package/dist/composed/rich-text-editor.js.map +1 -1
  62. package/dist/composed/schedule-view.js +2 -2
  63. package/dist/composed/schedule-view.js.map +1 -1
  64. package/dist/composed/status-badge.d.ts.map +1 -1
  65. package/dist/composed/status-badge.js +29 -28
  66. package/dist/composed/status-badge.js.map +1 -1
  67. package/dist/motion/index.d.ts +1 -0
  68. package/dist/motion/index.d.ts.map +1 -1
  69. package/dist/motion/index.js +2 -15
  70. package/dist/motion/motion-preference.d.ts +36 -0
  71. package/dist/motion/motion-preference.d.ts.map +1 -0
  72. package/dist/motion/motion-provider.d.ts +2 -1
  73. package/dist/motion/motion-provider.d.ts.map +1 -1
  74. package/dist/motion/primitives-index.js +103 -102
  75. package/dist/motion/primitives-index.js.map +1 -1
  76. package/dist/motion/primitives.d.ts.map +1 -1
  77. package/dist/shell/bottom-navbar.js +19 -19
  78. package/dist/shell/bottom-navbar.js.map +1 -1
  79. package/dist/shell/index.d.ts +1 -1
  80. package/dist/shell/index.d.ts.map +1 -1
  81. package/dist/shell/notification-center.d.ts +17 -0
  82. package/dist/shell/notification-center.d.ts.map +1 -1
  83. package/dist/shell/notification-center.js +109 -104
  84. package/dist/shell/notification-center.js.map +1 -1
  85. package/dist/shell/notification-preferences.js +1 -1
  86. package/dist/shell/notification-preferences.js.map +1 -1
  87. package/dist/shell/top-bar.js +1 -1
  88. package/dist/shell/top-bar.js.map +1 -1
  89. package/dist/tokens/index.css +1 -0
  90. package/dist/tokens/palettes.css +292 -0
  91. package/dist/tokens/semantic.css +72 -8
  92. package/dist/tokens/shilp-sutra.css +1 -0
  93. package/dist/tokens/utilities.css +10 -7
  94. package/dist/ui/accordion.d.ts.map +1 -1
  95. package/dist/ui/accordion.js +27 -26
  96. package/dist/ui/accordion.js.map +1 -1
  97. package/dist/ui/alert-dialog.d.ts.map +1 -1
  98. package/dist/ui/alert-dialog.js +60 -59
  99. package/dist/ui/alert-dialog.js.map +1 -1
  100. package/dist/ui/alert.d.ts.map +1 -1
  101. package/dist/ui/alert.js +55 -113
  102. package/dist/ui/alert.js.map +1 -1
  103. package/dist/ui/autocomplete.js +80 -80
  104. package/dist/ui/autocomplete.js.map +1 -1
  105. package/dist/ui/avatar.d.ts.map +1 -1
  106. package/dist/ui/avatar.js +69 -68
  107. package/dist/ui/avatar.js.map +1 -1
  108. package/dist/ui/badge-indicator.d.ts +4 -8
  109. package/dist/ui/badge-indicator.d.ts.map +1 -1
  110. package/dist/ui/badge-indicator.js +3 -8
  111. package/dist/ui/badge-indicator.js.map +1 -1
  112. package/dist/ui/badge.d.ts +8 -1
  113. package/dist/ui/badge.d.ts.map +1 -1
  114. package/dist/ui/banner.d.ts.map +1 -1
  115. package/dist/ui/banner.js +42 -40
  116. package/dist/ui/banner.js.map +1 -1
  117. package/dist/ui/button-group.d.ts.map +1 -1
  118. package/dist/ui/button-group.js +3 -23
  119. package/dist/ui/button-group.js.map +1 -1
  120. package/dist/ui/button.d.ts +10 -1
  121. package/dist/ui/button.d.ts.map +1 -1
  122. package/dist/ui/button.js +79 -212
  123. package/dist/ui/button.js.map +1 -1
  124. package/dist/ui/card.d.ts.map +1 -1
  125. package/dist/ui/card.js +75 -72
  126. package/dist/ui/card.js.map +1 -1
  127. package/dist/ui/charts/radar-chart.d.ts.map +1 -1
  128. package/dist/ui/charts/radar-chart.js +1 -1
  129. package/dist/ui/charts/radar-chart.js.map +1 -1
  130. package/dist/ui/chat/message-list.d.ts.map +1 -1
  131. package/dist/ui/chat/message.d.ts.map +1 -1
  132. package/dist/ui/chat/typing-indicator.d.ts.map +1 -1
  133. package/dist/ui/code.js +1 -1
  134. package/dist/ui/code.js.map +1 -1
  135. package/dist/ui/color-input.d.ts.map +1 -1
  136. package/dist/ui/color-input.js +151 -150
  137. package/dist/ui/color-input.js.map +1 -1
  138. package/dist/ui/combobox.d.ts +14 -0
  139. package/dist/ui/combobox.d.ts.map +1 -1
  140. package/dist/ui/combobox.js +152 -148
  141. package/dist/ui/combobox.js.map +1 -1
  142. package/dist/ui/context-menu.d.ts.map +1 -1
  143. package/dist/ui/context-menu.js +70 -69
  144. package/dist/ui/context-menu.js.map +1 -1
  145. package/dist/ui/data-table-body.js +2 -2
  146. package/dist/ui/data-table-body.js.map +1 -1
  147. package/dist/ui/data-table-context.js +2 -2
  148. package/dist/ui/data-table-context.js.map +1 -1
  149. package/dist/ui/data-table-header.d.ts.map +1 -1
  150. package/dist/ui/data-table-header.js +41 -40
  151. package/dist/ui/data-table-header.js.map +1 -1
  152. package/dist/ui/data-table-pagination.js +2 -2
  153. package/dist/ui/data-table-pagination.js.map +1 -1
  154. package/dist/ui/dialog.d.ts.map +1 -1
  155. package/dist/ui/dialog.js +61 -60
  156. package/dist/ui/dialog.js.map +1 -1
  157. package/dist/ui/dot.d.ts.map +1 -1
  158. package/dist/ui/dot.js +10 -41
  159. package/dist/ui/dot.js.map +1 -1
  160. package/dist/ui/dropdown-menu.d.ts.map +1 -1
  161. package/dist/ui/dropdown-menu.js +79 -78
  162. package/dist/ui/dropdown-menu.js.map +1 -1
  163. package/dist/ui/file-upload.d.ts.map +1 -1
  164. package/dist/ui/file-upload.js +116 -115
  165. package/dist/ui/file-upload.js.map +1 -1
  166. package/dist/ui/form.d.ts.map +1 -1
  167. package/dist/ui/form.js +27 -26
  168. package/dist/ui/form.js.map +1 -1
  169. package/dist/ui/hover-card.d.ts.map +1 -1
  170. package/dist/ui/hover-card.js +26 -25
  171. package/dist/ui/hover-card.js.map +1 -1
  172. package/dist/ui/icon.js +7 -7
  173. package/dist/ui/index.d.ts +2 -2
  174. package/dist/ui/index.d.ts.map +1 -1
  175. package/dist/ui/index.js +3 -3
  176. package/dist/ui/index.js.map +1 -1
  177. package/dist/ui/input.js +1 -1
  178. package/dist/ui/input.js.map +1 -1
  179. package/dist/ui/menubar.d.ts.map +1 -1
  180. package/dist/ui/menubar.js +73 -72
  181. package/dist/ui/menubar.js.map +1 -1
  182. package/dist/ui/navigation-menu.d.ts.map +1 -1
  183. package/dist/ui/navigation-menu.js +80 -79
  184. package/dist/ui/navigation-menu.js.map +1 -1
  185. package/dist/ui/popover.d.ts.map +1 -1
  186. package/dist/ui/progress.d.ts.map +1 -1
  187. package/dist/ui/progress.js +72 -68
  188. package/dist/ui/progress.js.map +1 -1
  189. package/dist/ui/radio.d.ts.map +1 -1
  190. package/dist/ui/radio.js +32 -31
  191. package/dist/ui/radio.js.map +1 -1
  192. package/dist/ui/search-input.d.ts.map +1 -1
  193. package/dist/ui/search-input.js +28 -27
  194. package/dist/ui/search-input.js.map +1 -1
  195. package/dist/ui/select.d.ts.map +1 -1
  196. package/dist/ui/select.js +64 -63
  197. package/dist/ui/select.js.map +1 -1
  198. package/dist/ui/sidebar.d.ts.map +1 -1
  199. package/dist/ui/sidebar.js +4 -4
  200. package/dist/ui/sidebar.js.map +1 -1
  201. package/dist/ui/slider.d.ts +63 -9
  202. package/dist/ui/slider.d.ts.map +1 -1
  203. package/dist/ui/slider.js +74 -32
  204. package/dist/ui/slider.js.map +1 -1
  205. package/dist/ui/split-button.d.ts +8 -2
  206. package/dist/ui/split-button.d.ts.map +1 -1
  207. package/dist/ui/split-button.js +49 -95
  208. package/dist/ui/split-button.js.map +1 -1
  209. package/dist/ui/stat-card.d.ts.map +1 -1
  210. package/dist/ui/stat-card.js +89 -88
  211. package/dist/ui/stat-card.js.map +1 -1
  212. package/dist/ui/stat-flash.js +16 -16
  213. package/dist/ui/stepper.d.ts.map +1 -1
  214. package/dist/ui/stepper.js +63 -62
  215. package/dist/ui/stepper.js.map +1 -1
  216. package/dist/ui/table.js +3 -3
  217. package/dist/ui/table.js.map +1 -1
  218. package/dist/ui/tabs.d.ts.map +1 -1
  219. package/dist/ui/tabs.js +67 -66
  220. package/dist/ui/tabs.js.map +1 -1
  221. package/dist/ui/textarea.js +1 -1
  222. package/dist/ui/textarea.js.map +1 -1
  223. package/dist/ui/toast.d.ts.map +1 -1
  224. package/dist/ui/toast.js +195 -194
  225. package/dist/ui/toast.js.map +1 -1
  226. package/dist/ui/toggle.d.ts.map +1 -1
  227. package/dist/ui/toggle.js +24 -22
  228. package/dist/ui/toggle.js.map +1 -1
  229. package/dist/ui/tooltip.d.ts.map +1 -1
  230. package/dist/ui/tooltip.js +37 -36
  231. package/dist/ui/tooltip.js.map +1 -1
  232. package/dist/ui/tree-view/tree-item.d.ts.map +1 -1
  233. package/docs/recipes/customize-brand.md +58 -0
  234. package/docs/recipes/install-astro.md +1 -1
  235. package/docs/recipes/install-next-app-router.md +1 -1
  236. package/docs/recipes/install-next-pages.md +22 -1
  237. package/docs/recipes/install-remix.md +1 -1
  238. package/docs/recipes/install-tanstack-start.md +1 -1
  239. package/docs/recipes/install-vite.md +2 -1
  240. package/docs/recipes/server-components.md +7 -4
  241. package/docs/recipes/troubleshoot.md +1 -0
  242. package/llms.txt +1 -1
  243. package/mcp-manifest.json +9 -4
  244. package/package.json +3 -2
  245. package/skill/SKILL.md +1 -1
  246. package/skill/references/components.md +1 -1
  247. package/skill/references/customize-brand.md +58 -0
  248. package/skill/references/server-components.md +7 -4
  249. package/skill/references/setup-astro.md +1 -1
  250. package/skill/references/setup-next-app-router.md +1 -1
  251. package/skill/references/setup-next-pages.md +22 -1
  252. package/skill/references/setup-remix.md +1 -1
  253. package/skill/references/setup-tanstack-start.md +1 -1
  254. package/skill/references/setup-vite.md +2 -1
  255. package/skill/references/troubleshoot.md +1 -0
  256. package/dist/motion/check-motion-provider.d.ts +0 -2
  257. package/dist/motion/check-motion-provider.d.ts.map +0 -1
  258. package/dist/motion/index.js.map +0 -1
@@ -1,21 +1,22 @@
1
1
  "use client";
2
- import { IconProvider as e } from "../ui/icon-context.js";
3
- import { motionProps as t, springs as n, tweens as r } from "../ui/lib/motion.js";
4
- import { cn as i } from "../ui/lib/utils.js";
5
- import { Spinner as a } from "../ui/spinner.js";
6
- import { Icon as o } from "../ui/icon.js";
7
- import { Avatar as s, AvatarFallback as c, AvatarImage as l } from "../ui/avatar.js";
8
- import { normalizeIcon as u } from "./normalize-icon.js";
9
- import { Button as d } from "../ui/button.js";
10
- import { Textarea as f } from "../ui/textarea.js";
11
- import { Tooltip as p, TooltipContent as m, TooltipTrigger as h } from "../ui/tooltip.js";
12
- import { MENTION_TOKEN_CLASS as g } from "./mention.js";
13
- import * as _ from "react";
14
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
15
- import { IconAlertCircle as b, IconSend as x, IconSquare as S, IconTrash as C } from "@tabler/icons-react";
16
- import { AnimatePresence as w, motion as T } from "framer-motion";
2
+ import { motionProps as e, springs as t, tweens as n } from "../ui/lib/motion.js";
3
+ import { MotionPreference as r } from "./motion-preference.js";
4
+ import { IconProvider as i } from "../ui/icon-context.js";
5
+ import { cn as a } from "../ui/lib/utils.js";
6
+ import { Spinner as o } from "../ui/spinner.js";
7
+ import { Icon as s } from "../ui/icon.js";
8
+ import { Avatar as c, AvatarFallback as l, AvatarImage as u } from "../ui/avatar.js";
9
+ import { normalizeIcon as d } from "./normalize-icon.js";
10
+ import { Button as f } from "../ui/button.js";
11
+ import { Textarea as p } from "../ui/textarea.js";
12
+ import { Tooltip as m, TooltipContent as h, TooltipTrigger as g } from "../ui/tooltip.js";
13
+ import { MENTION_TOKEN_CLASS as _ } from "./mention.js";
14
+ import * as v from "react";
15
+ import { jsx as y, jsxs as b } from "react/jsx-runtime";
16
+ import { IconAlertCircle as x, IconSend as S, IconSquare as C, IconTrash as w } from "@tabler/icons-react";
17
+ import { AnimatePresence as T, motion as E } from "framer-motion";
17
18
  //#region src/ui/chat/date-separator.tsx
18
- function E(e, t) {
19
+ function D(e, t) {
19
20
  let n = new Intl.DateTimeFormat("en-US", {
20
21
  timeZone: t,
21
22
  year: "numeric",
@@ -28,8 +29,8 @@ function E(e, t) {
28
29
  day: r("day")
29
30
  };
30
31
  }
31
- function D(e, t, n) {
32
- let r = E(/* @__PURE__ */ new Date(), n), i = E(e, n), a = Date.UTC(r.year, r.month - 1, r.day), o = Date.UTC(i.year, i.month - 1, i.day), s = Math.round((a - o) / (1e3 * 60 * 60 * 24));
32
+ function O(e, t, n) {
33
+ let r = D(/* @__PURE__ */ new Date(), n), i = D(e, n), a = Date.UTC(r.year, r.month - 1, r.day), o = Date.UTC(i.year, i.month - 1, i.day), s = Math.round((a - o) / (1e3 * 60 * 60 * 24));
33
34
  if (s === 0) return "Today";
34
35
  if (s === 1) return "Yesterday";
35
36
  let c = e.toLocaleString(t, {
@@ -38,275 +39,275 @@ function D(e, t, n) {
38
39
  });
39
40
  return i.year === r.year ? `${c} ${i.day}` : `${c} ${i.day}, ${i.year}`;
40
41
  }
41
- function O({ date: e, format: t, className: n, locale: r = "en-US", timeZone: a }) {
42
- let o = typeof e == "string" ? new Date(e) : e, s = t ? t(o) : D(o, r, a);
43
- return /* @__PURE__ */ y("div", {
44
- className: i("flex items-center gap-ds-03 py-ds-03", n),
42
+ function k({ date: e, format: t, className: n, locale: r = "en-US", timeZone: i }) {
43
+ let o = typeof e == "string" ? new Date(e) : e, s = t ? t(o) : O(o, r, i);
44
+ return /* @__PURE__ */ b("div", {
45
+ className: a("flex items-center gap-ds-03 py-ds-03", n),
45
46
  children: [
46
- /* @__PURE__ */ v("div", { className: "flex-1 border-t border-surface-border-subtle" }),
47
- /* @__PURE__ */ v("span", {
47
+ /* @__PURE__ */ y("div", { className: "flex-1 border-t border-surface-border-subtle" }),
48
+ /* @__PURE__ */ y("span", {
48
49
  className: "text-label-xs font-medium text-surface-fg-subtle uppercase tracking-wider",
49
50
  children: s
50
51
  }),
51
- /* @__PURE__ */ v("div", { className: "flex-1 border-t border-surface-border-subtle" })
52
+ /* @__PURE__ */ y("div", { className: "flex-1 border-t border-surface-border-subtle" })
52
53
  ]
53
54
  });
54
55
  }
55
- O.displayName = "DateSeparator";
56
+ k.displayName = "DateSeparator";
56
57
  //#endregion
57
58
  //#region src/ui/chat/message.tsx
58
- var k = _.createContext({
59
+ var A = v.createContext({
59
60
  variant: "flat",
60
61
  placement: "start",
61
62
  grouped: !1
62
63
  });
63
- function A() {
64
- return _.useContext(k);
64
+ function j() {
65
+ return v.useContext(A);
65
66
  }
66
- var j = _.forwardRef(({ children: e, variant: r = "flat", placement: a = "start", highlight: s, grouped: c = !1, deleted: l = !1, deletedText: u = "This message was deleted", className: d, ...f }, p) => {
67
- let m = _.useMemo(() => ({
68
- variant: r,
69
- placement: a,
70
- grouped: c,
71
- highlight: s
67
+ var M = v.forwardRef(({ children: n, variant: i = "flat", placement: o = "start", highlight: c, grouped: l = !1, deleted: u = !1, deletedText: d = "This message was deleted", className: f, ...p }, m) => {
68
+ let h = v.useMemo(() => ({
69
+ variant: i,
70
+ placement: o,
71
+ grouped: l,
72
+ highlight: c
72
73
  }), [
73
- r,
74
- a,
75
- c,
76
- s
74
+ i,
75
+ o,
76
+ l,
77
+ c
77
78
  ]);
78
- return l ? /* @__PURE__ */ y(T.div, {
79
- ref: p,
79
+ return u ? /* @__PURE__ */ y(r, { children: /* @__PURE__ */ b(E.div, {
80
+ ref: m,
80
81
  initial: { y: 8 },
81
82
  animate: {
82
83
  opacity: 1,
83
84
  y: 0
84
85
  },
85
- transition: n.snappy,
86
- className: i("flex items-center gap-ds-02 py-ds-02 text-caption text-surface-fg-subtle italic", d),
87
- ...t(f),
88
- children: [/* @__PURE__ */ v(o, {
89
- icon: C,
86
+ transition: t.snappy,
87
+ className: a("flex items-center gap-ds-02 py-ds-02 text-caption text-surface-fg-subtle italic", f),
88
+ ...e(p),
89
+ children: [/* @__PURE__ */ y(s, {
90
+ icon: w,
90
91
  size: "xs"
91
- }), u]
92
- }) : r === "bubble" ? /* @__PURE__ */ v(k.Provider, {
93
- value: m,
94
- children: /* @__PURE__ */ v(T.div, {
95
- ref: p,
96
- "data-highlight": s,
92
+ }), d]
93
+ }) }) : i === "bubble" ? /* @__PURE__ */ y(r, { children: /* @__PURE__ */ y(A.Provider, {
94
+ value: h,
95
+ children: /* @__PURE__ */ y(E.div, {
96
+ ref: m,
97
+ "data-highlight": c,
97
98
  initial: { y: 8 },
98
99
  animate: {
99
100
  opacity: 1,
100
101
  y: 0
101
102
  },
102
- transition: n.snappy,
103
- className: i("group/message relative flex", a === "end" ? "justify-end" : "justify-start", g, s === "internal" && "bg-warning-2/50 rounded-control-inner", d),
104
- ...t(f),
105
- children: /* @__PURE__ */ v("div", {
106
- className: i("max-w-[85%] rounded-bubble px-ds-04 py-ds-03", a === "end" ? "bg-accent-3 text-surface-fg" : "bg-surface-panel text-surface-fg"),
107
- children: e
103
+ transition: t.snappy,
104
+ className: a("group/message relative flex", o === "end" ? "justify-end" : "justify-start", _, c === "internal" && "bg-warning-2/50 rounded-control-inner", f),
105
+ ...e(p),
106
+ children: /* @__PURE__ */ y("div", {
107
+ className: a("max-w-[85%] rounded-bubble px-ds-04 py-ds-03", o === "end" ? "bg-accent-3 text-surface-fg" : "bg-surface-panel text-surface-fg"),
108
+ children: n
108
109
  })
109
110
  })
110
- }) : /* @__PURE__ */ v(k.Provider, {
111
- value: m,
112
- children: /* @__PURE__ */ v(T.div, {
113
- ref: p,
114
- "data-highlight": s,
111
+ }) }) : /* @__PURE__ */ y(r, { children: /* @__PURE__ */ y(A.Provider, {
112
+ value: h,
113
+ children: /* @__PURE__ */ y(E.div, {
114
+ ref: m,
115
+ "data-highlight": c,
115
116
  initial: { y: 8 },
116
117
  animate: {
117
118
  opacity: 1,
118
119
  y: 0
119
120
  },
120
- transition: n.snappy,
121
- className: i("group/message relative flex gap-ds-04", c && "-mt-ds-01", g, s === "internal" && "bg-warning-2/50 rounded-control-inner", d),
122
- ...t(f),
123
- children: e
121
+ transition: t.snappy,
122
+ className: a("group/message relative flex gap-ds-04", l && "-mt-ds-01", _, c === "internal" && "bg-warning-2/50 rounded-control-inner", f),
123
+ ...e(p),
124
+ children: n
124
125
  })
125
- });
126
+ }) });
126
127
  });
127
- j.displayName = "Message";
128
- function M({ src: t, fallback: n, icon: r, size: a = "md", children: o }) {
129
- let { grouped: d } = A(), f = a === "sm" ? "w-5" : "w-6";
130
- return d ? /* @__PURE__ */ v("div", { className: i(f, a === "sm" ? "h-5" : "h-6", "shrink-0") }) : o ? /* @__PURE__ */ v("div", {
131
- className: i(f, "shrink-0 flex items-start"),
128
+ M.displayName = "Message";
129
+ function N({ src: e, fallback: t, icon: n, size: r = "md", children: o }) {
130
+ let { grouped: s } = j(), f = r === "sm" ? "w-5" : "w-6";
131
+ return s ? /* @__PURE__ */ y("div", { className: a(f, r === "sm" ? "h-5" : "h-6", "shrink-0") }) : o ? /* @__PURE__ */ y("div", {
132
+ className: a(f, "shrink-0 flex items-start"),
132
133
  children: o
133
- }) : r ? /* @__PURE__ */ v("div", {
134
- className: i(f, a === "sm" ? "h-5" : "h-6", "shrink-0 flex items-center justify-center rounded-pill bg-surface-panel-hover"),
135
- children: /* @__PURE__ */ v(e, {
136
- size: a === "sm" ? "xs" : "sm",
137
- children: u(r)
134
+ }) : n ? /* @__PURE__ */ y("div", {
135
+ className: a(f, r === "sm" ? "h-5" : "h-6", "shrink-0 flex items-center justify-center rounded-pill bg-surface-panel-hover"),
136
+ children: /* @__PURE__ */ y(i, {
137
+ size: r === "sm" ? "xs" : "sm",
138
+ children: d(n)
138
139
  })
139
- }) : /* @__PURE__ */ v("div", {
140
- className: i(f, "shrink-0"),
141
- children: /* @__PURE__ */ y(s, {
142
- size: a === "sm" ? "xs" : "sm",
143
- children: [t && /* @__PURE__ */ v(l, {
144
- src: t,
145
- alt: n ?? ""
146
- }), /* @__PURE__ */ v(c, { children: n ?? "" })]
140
+ }) : /* @__PURE__ */ y("div", {
141
+ className: a(f, "shrink-0"),
142
+ children: /* @__PURE__ */ b(c, {
143
+ size: r === "sm" ? "xs" : "sm",
144
+ children: [e && /* @__PURE__ */ y(u, {
145
+ src: e,
146
+ alt: t ?? ""
147
+ }), /* @__PURE__ */ y(l, { children: t ?? "" })]
147
148
  })
148
149
  });
149
150
  }
150
- M.displayName = "Message.Avatar";
151
- function N({ children: e, className: t, ...n }) {
152
- return /* @__PURE__ */ v("div", {
153
- className: i("min-w-0 flex-1 flex flex-col gap-ds-02", t),
151
+ N.displayName = "Message.Avatar";
152
+ function P({ children: e, className: t, ...n }) {
153
+ return /* @__PURE__ */ y("div", {
154
+ className: a("min-w-0 flex-1 flex flex-col gap-ds-02", t),
154
155
  ...n,
155
156
  children: e
156
157
  });
157
158
  }
158
- N.displayName = "Message.Content";
159
- function P(e) {
159
+ P.displayName = "Message.Content";
160
+ function F(e) {
160
161
  return e.toLocaleTimeString("en-US", {
161
162
  hour: "numeric",
162
163
  minute: "2-digit"
163
164
  });
164
165
  }
165
- function F({ name: e, badge: t, timestamp: n, formattedTimestamp: r, timestampFormat: i = P }) {
166
- let { grouped: a } = A();
166
+ function I({ name: e, badge: t, timestamp: n, formattedTimestamp: r, timestampFormat: i = F }) {
167
+ let { grouped: a } = j();
167
168
  if (a) return null;
168
169
  let o = r ?? (n ? i(n) : void 0);
169
- return /* @__PURE__ */ y("div", {
170
+ return /* @__PURE__ */ b("div", {
170
171
  className: "flex items-baseline gap-ds-02",
171
172
  children: [
172
- /* @__PURE__ */ v("span", {
173
+ /* @__PURE__ */ y("span", {
173
174
  className: "font-semibold text-body-md text-surface-fg",
174
175
  children: e
175
176
  }),
176
177
  t,
177
- o && /* @__PURE__ */ v("span", {
178
+ o && /* @__PURE__ */ y("span", {
178
179
  className: "text-body-sm text-surface-fg-subtle",
179
180
  children: o
180
181
  })
181
182
  ]
182
183
  });
183
184
  }
184
- F.displayName = "Message.Author";
185
- function I({ children: e, className: t, ...n }) {
186
- return /* @__PURE__ */ v("div", {
187
- className: i("text-body-md leading-relaxed text-surface-fg whitespace-pre-wrap", t),
185
+ I.displayName = "Message.Author";
186
+ function L({ children: e, className: t, ...n }) {
187
+ return /* @__PURE__ */ y("div", {
188
+ className: a("text-body-md leading-relaxed text-surface-fg whitespace-pre-wrap", t),
188
189
  ...n,
189
190
  children: e
190
191
  });
191
192
  }
192
- I.displayName = "Message.Body";
193
- function L({ content: e, onSave: t, onCancel: n, canEdit: r = !1, renderContent: a }) {
194
- let [o, s] = _.useState(!1), [c, l] = _.useState(e), u = _.useRef(null);
195
- _.useEffect(() => {
193
+ L.displayName = "Message.Body";
194
+ function R({ content: e, onSave: t, onCancel: n, canEdit: r = !1, renderContent: i }) {
195
+ let [o, s] = v.useState(!1), [c, l] = v.useState(e), u = v.useRef(null);
196
+ v.useEffect(() => {
196
197
  o && u.current && (u.current.focus(), u.current.select());
197
198
  }, [o]);
198
- let d = _.useCallback(() => {
199
+ let d = v.useCallback(() => {
199
200
  r && (l(e), s(!0));
200
- }, [r, e]), p = _.useCallback(() => {
201
+ }, [r, e]), f = v.useCallback(() => {
201
202
  let n = c.trim();
202
203
  n && n !== e && t(n), s(!1);
203
204
  }, [
204
205
  c,
205
206
  e,
206
207
  t
207
- ]), m = _.useCallback(() => {
208
+ ]), m = v.useCallback(() => {
208
209
  s(!1), l(e), n?.();
209
- }, [e, n]), h = _.useCallback((e) => {
210
- e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), p()) : e.key === "Escape" && (e.preventDefault(), m());
211
- }, [p, m]);
212
- return o ? /* @__PURE__ */ y("div", {
210
+ }, [e, n]), h = v.useCallback((e) => {
211
+ e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), f()) : e.key === "Escape" && (e.preventDefault(), m());
212
+ }, [f, m]);
213
+ return o ? /* @__PURE__ */ b("div", {
213
214
  className: "text-body-md leading-relaxed",
214
- children: [/* @__PURE__ */ v(f, {
215
+ children: [/* @__PURE__ */ y(p, {
215
216
  ref: u,
216
217
  value: c,
217
218
  onChange: (e) => l(e.target.value),
218
219
  onKeyDown: h,
219
- onBlur: p,
220
+ onBlur: f,
220
221
  className: "resize-none rounded-control-inner bg-surface-panel-hover px-ds-02 py-ds-01 text-body-md leading-relaxed",
221
222
  rows: 2
222
- }), /* @__PURE__ */ v("div", {
223
+ }), /* @__PURE__ */ y("div", {
223
224
  className: "mt-ds-01 text-caption text-surface-fg-subtle",
224
225
  children: "Enter to save · Escape to cancel"
225
226
  })]
226
- }) : /* @__PURE__ */ v("div", {
227
- className: i("text-body-md leading-relaxed text-surface-fg whitespace-pre-wrap", r && "cursor-pointer hover:bg-surface-panel-hover rounded-control-inner transition-colors"),
227
+ }) : /* @__PURE__ */ y("div", {
228
+ className: a("text-body-md leading-relaxed text-surface-fg whitespace-pre-wrap", r && "cursor-pointer hover:bg-surface-panel-hover rounded-control-inner transition-colors"),
228
229
  onClick: d,
229
230
  role: r ? "button" : void 0,
230
231
  tabIndex: r ? 0 : void 0,
231
232
  onKeyDown: r ? (e) => {
232
233
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), d());
233
234
  } : void 0,
234
- children: a ? a(e) : e
235
+ children: i ? i(e) : e
235
236
  });
236
237
  }
237
- L.displayName = "Message.EditableBody";
238
- function R({ reactions: e, onReact: t }) {
239
- return e.length === 0 ? null : /* @__PURE__ */ v("div", {
238
+ R.displayName = "Message.EditableBody";
239
+ function z({ reactions: e, onReact: t }) {
240
+ return e.length === 0 ? null : /* @__PURE__ */ y("div", {
240
241
  className: "flex flex-wrap gap-ds-02 mt-ds-03",
241
- children: e.map((e) => /* @__PURE__ */ y("button", {
242
+ children: e.map((e) => /* @__PURE__ */ b("button", {
242
243
  type: "button",
243
244
  onClick: () => t(e.emoji),
244
245
  "aria-label": `${e.emoji} ${e.count} reaction${e.count === 1 ? "" : "s"}${e.reacted ? ", you reacted" : ""}`,
245
- className: i("inline-flex items-center gap-ds-01 rounded-pill px-ds-02 py-ds-01 text-body-xs transition-colors", e.reacted ? "bg-accent-3 ring-1 ring-accent-6" : "bg-surface-panel-hover hover:bg-surface-panel-active"),
246
- children: [/* @__PURE__ */ v("span", { children: e.emoji }), /* @__PURE__ */ v("span", { children: e.count })]
246
+ className: a("inline-flex items-center gap-ds-01 rounded-pill px-ds-02 py-ds-01 text-body-xs transition-colors", e.reacted ? "bg-accent-4 ring-1 ring-accent-6" : "bg-surface-panel-hover hover:bg-surface-panel-active"),
247
+ children: [/* @__PURE__ */ y("span", { children: e.emoji }), /* @__PURE__ */ y("span", { children: e.count })]
247
248
  }, e.emoji))
248
249
  });
249
250
  }
250
- R.displayName = "Message.Reactions";
251
- function z({ children: e, delay: t = 100 }) {
252
- return /* @__PURE__ */ v("div", {
253
- className: i("absolute -top-2 right-0 z-10", "flex items-center gap-ds-01 rounded-control bg-surface-panel px-ds-01 py-ds-01 shadow-raised", "opacity-0 group-hover/message:opacity-100 group-focus-within/message:opacity-100 transition-opacity duration-150"),
251
+ z.displayName = "Message.Reactions";
252
+ function B({ children: e, delay: t = 100 }) {
253
+ return /* @__PURE__ */ y("div", {
254
+ className: a("absolute -top-2 right-0 z-10", "flex items-center gap-ds-01 rounded-control bg-surface-panel px-ds-01 py-ds-01 shadow-raised", "opacity-0 group-hover/message:opacity-100 group-focus-within/message:opacity-100 transition-opacity duration-150"),
254
255
  style: { transitionDelay: `${t}ms` },
255
256
  children: e
256
257
  });
257
258
  }
258
- z.displayName = "Message.Actions";
259
- function B({ icon: t, label: n, onClick: r, variant: a = "default" }) {
260
- return /* @__PURE__ */ y(p, { children: [/* @__PURE__ */ v(h, {
259
+ B.displayName = "Message.Actions";
260
+ function V({ icon: e, label: t, onClick: n, variant: r = "default" }) {
261
+ return /* @__PURE__ */ b(m, { children: [/* @__PURE__ */ y(g, {
261
262
  asChild: !0,
262
- children: /* @__PURE__ */ v("button", {
263
+ children: /* @__PURE__ */ y("button", {
263
264
  type: "button",
264
- onClick: r,
265
- "aria-label": n,
266
- className: i("p-ds-02 rounded-control-inner transition-colors", a === "default" && "text-surface-fg-subtle hover:text-surface-fg hover:bg-surface-panel-hover", a === "danger" && "text-surface-fg-subtle hover:text-error-11 hover:bg-surface-panel-hover"),
267
- children: /* @__PURE__ */ v(e, {
265
+ onClick: n,
266
+ "aria-label": t,
267
+ className: a("p-ds-02 rounded-control-inner transition-colors", r === "default" && "text-surface-fg-subtle hover:text-surface-fg hover:bg-surface-panel-hover", r === "danger" && "text-surface-fg-subtle hover:text-error-11 hover:bg-surface-panel-hover"),
268
+ children: /* @__PURE__ */ y(i, {
268
269
  size: "xs",
269
- children: u(t)
270
+ children: d(e)
270
271
  })
271
272
  })
272
- }), /* @__PURE__ */ v(m, { children: n })] });
273
+ }), /* @__PURE__ */ y(h, { children: t })] });
273
274
  }
274
- B.displayName = "Message.Action";
275
- var V = Object.assign(j, {
276
- Avatar: M,
277
- Content: N,
278
- Author: F,
279
- Body: I,
280
- EditableBody: L,
281
- Reactions: R,
282
- Actions: z,
283
- Action: B
284
- }), H = _.forwardRef(({ onSubmit: e, placeholder: t = "Type a message...", disabled: n = !1, isStreaming: r = !1, onCancel: a, leadingSlot: s, trailingSlot: c, disclaimer: l, sendIcon: u, className: f, ...p }, m) => {
285
- let [h, g] = _.useState(""), b = _.useRef(null), C = _.useCallback(() => {
286
- let e = b.current;
275
+ V.displayName = "Message.Action";
276
+ var H = Object.assign(M, {
277
+ Avatar: N,
278
+ Content: P,
279
+ Author: I,
280
+ Body: L,
281
+ EditableBody: R,
282
+ Reactions: z,
283
+ Actions: B,
284
+ Action: V
285
+ }), U = v.forwardRef(({ onSubmit: e, placeholder: t = "Type a message...", disabled: n = !1, isStreaming: r = !1, onCancel: i, leadingSlot: o, trailingSlot: c, disclaimer: l, sendIcon: u, className: d, ...p }, m) => {
286
+ let [h, g] = v.useState(""), _ = v.useRef(null), x = v.useCallback(() => {
287
+ let e = _.current;
287
288
  e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 160)}px`);
288
- }, []), w = _.useCallback((e) => {
289
- g(e.target.value), C();
290
- }, [C]), T = _.useCallback(() => {
289
+ }, []), w = v.useCallback((e) => {
290
+ g(e.target.value), x();
291
+ }, [x]), T = v.useCallback(() => {
291
292
  let t = h.trim();
292
- !t || r || (e(t), g(""), b.current && (b.current.style.height = "auto"));
293
+ !t || r || (e(t), g(""), _.current && (_.current.style.height = "auto"));
293
294
  }, [
294
295
  h,
295
296
  r,
296
297
  e
297
- ]), E = _.useCallback((e) => {
298
+ ]), E = v.useCallback((e) => {
298
299
  e.key === "Enter" && !e.shiftKey && (e.preventDefault(), r || T());
299
300
  }, [r, T]), D = h.trim().length === 0;
300
- return /* @__PURE__ */ y("div", {
301
+ return /* @__PURE__ */ b("div", {
301
302
  ref: m,
302
- className: i("border-t border-surface-border-subtle px-ds-05 py-ds-04", f),
303
+ className: a("border-t border-surface-border-subtle px-ds-05 py-ds-04", d),
303
304
  ...p,
304
- children: [/* @__PURE__ */ y("div", {
305
- className: "flex items-end gap-ds-02 rounded-overlay-lg border border-surface-border bg-surface-base p-ds-03",
305
+ children: [/* @__PURE__ */ b("div", {
306
+ className: "flex items-end gap-ds-02 rounded-overlay-lg border border-surface-border-interactive bg-surface-panel-hover p-ds-03",
306
307
  children: [
307
- s,
308
- /* @__PURE__ */ v("textarea", {
309
- ref: b,
308
+ o,
309
+ /* @__PURE__ */ y("textarea", {
310
+ ref: _,
310
311
  value: h,
311
312
  onChange: w,
312
313
  onKeyDown: E,
@@ -317,75 +318,75 @@ var V = Object.assign(j, {
317
318
  className: "flex-1 resize-none bg-transparent px-ds-02 py-ds-01 text-body-sm text-surface-fg placeholder:text-surface-fg-muted focus:outline-hidden disabled:opacity-50",
318
319
  style: { maxHeight: 160 }
319
320
  }),
320
- r ? /* @__PURE__ */ v(d, {
321
+ r ? /* @__PURE__ */ y(f, {
321
322
  variant: "ghost",
322
323
  size: "icon-sm",
323
324
  color: "error",
324
- onClick: a,
325
+ onClick: i,
325
326
  "aria-label": "Stop",
326
- children: /* @__PURE__ */ v(o, {
327
- icon: S,
327
+ children: /* @__PURE__ */ y(s, {
328
+ icon: C,
328
329
  size: "sm"
329
330
  })
330
- }) : /* @__PURE__ */ v(d, {
331
+ }) : /* @__PURE__ */ y(f, {
331
332
  variant: "ghost",
332
333
  size: "icon-sm",
333
334
  onClick: T,
334
335
  disabled: D || n,
335
336
  "aria-label": "Send",
336
- children: u ?? /* @__PURE__ */ v(o, {
337
- icon: x,
337
+ children: u ?? /* @__PURE__ */ y(s, {
338
+ icon: S,
338
339
  size: "sm"
339
340
  })
340
341
  }),
341
342
  c
342
343
  ]
343
- }), l && /* @__PURE__ */ v("p", {
344
+ }), l && /* @__PURE__ */ y("p", {
344
345
  className: "mt-ds-02 text-center text-caption text-surface-fg-subtle",
345
346
  children: l
346
347
  })]
347
348
  });
348
349
  });
349
- H.displayName = "MessageInput";
350
+ U.displayName = "MessageInput";
350
351
  //#endregion
351
352
  //#region src/ui/chat/message-list.tsx
352
- var U = _.forwardRef(({ children: e, autoScroll: t = !0, newMessageCount: n = 0, onScrollToBottom: o, onLoadMore: s, loadingMore: c = !1, emptySlot: l, scrollToBottomSlot: u, headerSlot: d, className: f, ...p }, m) => {
353
- let h = _.useRef(null), g = _.useRef(!0), [b, x] = _.useState(!0), S = _.useRef(!1), C = _.useRef(0), E = _.Children.count(e) === 0 && !c, D = _.useCallback(() => {
354
- let e = h.current;
353
+ var W = v.forwardRef(({ children: e, autoScroll: t = !0, newMessageCount: i = 0, onScrollToBottom: s, onLoadMore: c, loadingMore: l = !1, emptySlot: u, scrollToBottomSlot: d, headerSlot: f, className: p, ...m }, h) => {
354
+ let g = v.useRef(null), _ = v.useRef(!0), [x, S] = v.useState(!0), C = v.useRef(!1), w = v.useRef(0), D = v.Children.count(e) === 0 && !l, O = v.useCallback(() => {
355
+ let e = g.current;
355
356
  if (!e) return;
356
357
  let t = e.scrollHeight - e.scrollTop - e.clientHeight < 40;
357
- g.current = t, x(t), e.scrollTop < 100 && s && !S.current && (S.current = !0, C.current = e.scrollHeight, s());
358
- }, [s]);
359
- _.useLayoutEffect(() => {
360
- let e = h.current;
358
+ _.current = t, S(t), e.scrollTop < 100 && c && !C.current && (C.current = !0, w.current = e.scrollHeight, c());
359
+ }, [c]);
360
+ v.useLayoutEffect(() => {
361
+ let e = g.current;
361
362
  if (e) {
362
- if (S.current) {
363
- e.scrollTop = e.scrollHeight - C.current, S.current = !1;
363
+ if (C.current) {
364
+ e.scrollTop = e.scrollHeight - w.current, C.current = !1;
364
365
  return;
365
366
  }
366
- t && g.current && e.scrollTo({
367
+ t && _.current && e.scrollTo({
367
368
  top: e.scrollHeight,
368
369
  behavior: "smooth"
369
370
  });
370
371
  }
371
- }, [e, t]), _.useEffect(() => {
372
- c || (S.current = !1);
373
- }, [c]);
374
- let O = n > 0 && !b, k = _.useCallback(() => {
375
- let e = h.current;
372
+ }, [e, t]), v.useEffect(() => {
373
+ l || (C.current = !1);
374
+ }, [l]);
375
+ let k = i > 0 && !x, A = v.useCallback(() => {
376
+ let e = g.current;
376
377
  e && e.scrollTo({
377
378
  top: e.scrollHeight,
378
379
  behavior: "smooth"
379
- }), o?.();
380
- }, [o]);
381
- return /* @__PURE__ */ y("div", {
382
- ref: m,
383
- className: i("relative flex flex-1 flex-col overflow-hidden", f),
384
- ...p,
380
+ }), s?.();
381
+ }, [s]);
382
+ return /* @__PURE__ */ y(r, { children: /* @__PURE__ */ b("div", {
383
+ ref: h,
384
+ className: a("relative flex flex-1 flex-col overflow-hidden", p),
385
+ ...m,
385
386
  children: [
386
- d,
387
- /* @__PURE__ */ y("div", {
388
- ref: h,
387
+ f,
388
+ /* @__PURE__ */ b("div", {
389
+ ref: g,
389
390
  role: "log",
390
391
  "aria-live": "polite",
391
392
  "aria-relevant": "additions",
@@ -394,19 +395,19 @@ var U = _.forwardRef(({ children: e, autoScroll: t = !0, newMessageCount: n = 0,
394
395
  scrollbarWidth: "thin",
395
396
  scrollbarColor: "var(--color-surface-border) transparent"
396
397
  },
397
- onScroll: D,
398
- children: [c && /* @__PURE__ */ v("div", {
398
+ onScroll: O,
399
+ children: [l && /* @__PURE__ */ y("div", {
399
400
  className: "flex justify-center py-ds-03",
400
- children: /* @__PURE__ */ v(a, { size: "sm" })
401
- }), E ? l : /* @__PURE__ */ v("div", {
401
+ children: /* @__PURE__ */ y(o, { size: "sm" })
402
+ }), D ? u : /* @__PURE__ */ y("div", {
402
403
  className: "flex flex-col gap-ds-04",
403
- children: /* @__PURE__ */ v(w, {
404
+ children: /* @__PURE__ */ y(T, {
404
405
  initial: !1,
405
406
  children: e
406
407
  })
407
408
  })]
408
409
  }),
409
- /* @__PURE__ */ v(w, { children: O && /* @__PURE__ */ y(T.button, {
410
+ /* @__PURE__ */ y(T, { children: k && /* @__PURE__ */ b(E.button, {
410
411
  initial: {
411
412
  opacity: 0,
412
413
  y: 10
@@ -419,84 +420,84 @@ var U = _.forwardRef(({ children: e, autoScroll: t = !0, newMessageCount: n = 0,
419
420
  opacity: 0,
420
421
  y: 10
421
422
  },
422
- transition: r.fade,
423
- onClick: k,
423
+ transition: n.fade,
424
+ onClick: A,
424
425
  className: "absolute bottom-ds-04 left-1/2 z-10 -translate-x-1/2 rounded-pill bg-accent-9 px-ds-04 py-ds-02 text-body-xs font-medium text-accent-fg shadow-raised transition-colors hover:bg-accent-10",
425
- children: [n, " new"]
426
+ children: [i, " new"]
426
427
  }) })
427
428
  ]
428
- });
429
+ }) });
429
430
  });
430
- U.displayName = "MessageList";
431
+ W.displayName = "MessageList";
431
432
  //#endregion
432
433
  //#region src/ui/chat/system-message.tsx
433
- function W(e) {
434
+ function G(e) {
434
435
  return new Date(e).toLocaleTimeString("en-US", {
435
436
  hour: "numeric",
436
437
  minute: "2-digit"
437
438
  });
438
439
  }
439
- var G = _.forwardRef(({ icon: t, timestamp: n, variant: r = "event", children: a, className: s, ...c }, l) => r === "alert" ? /* @__PURE__ */ v("div", {
440
+ var K = v.forwardRef(({ icon: e, timestamp: t, variant: n = "event", children: r, className: o, ...c }, l) => n === "alert" ? /* @__PURE__ */ y("div", {
440
441
  ref: l,
441
442
  role: "alert",
442
- className: i("flex justify-center", s),
443
+ className: a("flex justify-center", o),
443
444
  ...c,
444
- children: /* @__PURE__ */ y("div", {
445
+ children: /* @__PURE__ */ b("div", {
445
446
  className: "flex items-center gap-ds-03 rounded-surface bg-error-3 px-ds-04 py-ds-03",
446
447
  children: [
447
- /* @__PURE__ */ v(e, {
448
+ /* @__PURE__ */ y(i, {
448
449
  size: "sm",
449
- children: u(t) ?? /* @__PURE__ */ v(o, { icon: b })
450
+ children: d(e) ?? /* @__PURE__ */ y(s, { icon: x })
450
451
  }),
451
- /* @__PURE__ */ v("span", {
452
+ /* @__PURE__ */ y("span", {
452
453
  className: "text-body-sm text-error-11",
453
- children: a
454
+ children: r
454
455
  }),
455
- n && /* @__PURE__ */ v("span", {
456
+ t && /* @__PURE__ */ y("span", {
456
457
  className: "text-body-sm text-error-11/60",
457
- children: W(n)
458
+ children: G(t)
458
459
  })
459
460
  ]
460
461
  })
461
- }) : /* @__PURE__ */ y("div", {
462
+ }) : /* @__PURE__ */ b("div", {
462
463
  ref: l,
463
- className: i("flex items-center gap-ds-02 rounded-control-inner bg-surface-panel-hover/30 px-ds-02 py-ds-01 -mx-ds-02 text-body-sm text-surface-fg-subtle", s),
464
+ className: a("flex items-center gap-ds-02 rounded-control-inner bg-surface-panel-hover/30 px-ds-02 py-ds-01 -mx-ds-02 text-body-sm text-surface-fg-subtle", o),
464
465
  ...c,
465
466
  children: [
466
- /* @__PURE__ */ v(e, {
467
+ /* @__PURE__ */ y(i, {
467
468
  size: "xs",
468
- children: u(t)
469
+ children: d(e)
469
470
  }),
470
- /* @__PURE__ */ v("span", {
471
+ /* @__PURE__ */ y("span", {
471
472
  className: "flex-1",
472
- children: a
473
+ children: r
473
474
  }),
474
- n && /* @__PURE__ */ v("span", { children: W(n) })
475
+ t && /* @__PURE__ */ y("span", { children: G(t) })
475
476
  ]
476
477
  }));
477
- G.displayName = "SystemMessage";
478
+ K.displayName = "SystemMessage";
478
479
  //#endregion
479
480
  //#region src/ui/chat/typing-indicator.tsx
480
- function K(e) {
481
+ function q(e) {
481
482
  return e.length === 1 ? `${e[0].name} is typing...` : e.length === 2 ? `${e[0].name} and ${e[1].name} are typing...` : "Several people are typing...";
482
483
  }
483
- function q({ users: e, className: t }) {
484
- return /* @__PURE__ */ v("div", {
485
- className: i("min-h-ds-06 px-ds-05", t),
484
+ function J({ users: e, className: t }) {
485
+ return /* @__PURE__ */ y(r, { children: /* @__PURE__ */ y("div", {
486
+ className: a("min-h-ds-06 px-ds-05", t),
486
487
  role: "status",
487
488
  "aria-live": "polite",
488
- children: /* @__PURE__ */ v(w, { children: e.length > 0 && /* @__PURE__ */ y(T.div, {
489
+ children: /* @__PURE__ */ y(T, { children: e.length > 0 && /* @__PURE__ */ b(E.div, {
489
490
  initial: { opacity: 0 },
490
491
  animate: { opacity: 1 },
491
492
  exit: { opacity: 0 },
492
493
  className: "flex items-center gap-ds-02 text-caption text-surface-fg-subtle",
493
- children: [/* @__PURE__ */ v("span", {
494
+ children: [/* @__PURE__ */ y("span", {
494
495
  className: "flex items-center gap-ds-01",
495
496
  children: [
496
497
  0,
497
498
  1,
498
499
  2
499
- ].map((e) => /* @__PURE__ */ v(T.span, {
500
+ ].map((e) => /* @__PURE__ */ y(E.span, {
500
501
  className: "h-1 w-1 rounded-pill bg-surface-fg-subtle",
501
502
  animate: { y: [
502
503
  0,
@@ -509,26 +510,26 @@ function q({ users: e, className: t }) {
509
510
  delay: e * .15
510
511
  }
511
512
  }, e))
512
- }), /* @__PURE__ */ v("span", { children: K(e) })]
513
+ }), /* @__PURE__ */ y("span", { children: q(e) })]
513
514
  }) })
514
- });
515
+ }) });
515
516
  }
516
- q.displayName = "TypingIndicator";
517
+ J.displayName = "TypingIndicator";
517
518
  //#endregion
518
519
  //#region src/ui/chat/unread-separator.tsx
519
- function J({ label: e = "NEW", count: t, className: n }) {
520
- return /* @__PURE__ */ y("div", {
521
- className: i("relative flex items-center py-ds-02", n),
520
+ function Y({ label: e = "NEW", count: t, className: n }) {
521
+ return /* @__PURE__ */ b("div", {
522
+ className: a("relative flex items-center py-ds-02", n),
522
523
  children: [
523
- /* @__PURE__ */ v("div", { className: "flex-1 border-t-2 border-accent-7" }),
524
- /* @__PURE__ */ v("span", {
524
+ /* @__PURE__ */ y("div", { className: "flex-1 border-t-2 border-accent-7" }),
525
+ /* @__PURE__ */ y("span", {
525
526
  className: "px-ds-03 text-body-xs font-semibold text-accent-11",
526
527
  children: t ? `${t} ${e}` : e
527
528
  }),
528
- /* @__PURE__ */ v("div", { className: "flex-1 border-t-2 border-accent-7" })
529
+ /* @__PURE__ */ y("div", { className: "flex-1 border-t-2 border-accent-7" })
529
530
  ]
530
531
  });
531
532
  }
532
- J.displayName = "UnreadSeparator";
533
+ Y.displayName = "UnreadSeparator";
533
534
  //#endregion
534
- export { O as DateSeparator, V as Message, H as MessageInput, U as MessageList, G as SystemMessage, q as TypingIndicator, J as UnreadSeparator, A as useMessageContext };
535
+ export { k as DateSeparator, H as Message, U as MessageInput, W as MessageList, K as SystemMessage, J as TypingIndicator, Y as UnreadSeparator, j as useMessageContext };