@sero-ai/ui 0.4.1 → 0.5.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 (289) hide show
  1. package/.turbo/turbo-build.log +397 -384
  2. package/.turbo/turbo-test.log +18 -0
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/CHANGELOG.md +18 -0
  5. package/dist/components/ai-elements/agent.cjs +6 -6
  6. package/dist/components/ai-elements/agent.js +6 -6
  7. package/dist/components/ai-elements/artifact.cjs +2 -2
  8. package/dist/components/ai-elements/artifact.js +2 -2
  9. package/dist/components/ai-elements/attachments.cjs +2 -2
  10. package/dist/components/ai-elements/attachments.js +2 -2
  11. package/dist/components/ai-elements/chain-of-thought.cjs +2 -2
  12. package/dist/components/ai-elements/chain-of-thought.js +2 -2
  13. package/dist/components/ai-elements/code-block.cjs +7 -5
  14. package/dist/components/ai-elements/code-block.d.cts +2 -1
  15. package/dist/components/ai-elements/code-block.d.ts +2 -1
  16. package/dist/components/ai-elements/code-block.js +7 -5
  17. package/dist/components/ai-elements/commit.cjs +2 -2
  18. package/dist/components/ai-elements/commit.js +2 -2
  19. package/dist/components/ai-elements/confirmation.cjs +1 -1
  20. package/dist/components/ai-elements/confirmation.js +1 -1
  21. package/dist/components/ai-elements/conversation.cjs +2 -2
  22. package/dist/components/ai-elements/conversation.js +2 -2
  23. package/dist/components/ai-elements/environment-variables.cjs +3 -3
  24. package/dist/components/ai-elements/environment-variables.js +3 -3
  25. package/dist/components/ai-elements/file-tree.cjs +1 -1
  26. package/dist/components/ai-elements/file-tree.js +1 -1
  27. package/dist/components/ai-elements/inline-citation.cjs +3 -3
  28. package/dist/components/ai-elements/inline-citation.js +3 -3
  29. package/dist/components/ai-elements/jsx-preview.cjs +1 -1
  30. package/dist/components/ai-elements/jsx-preview.js +1 -1
  31. package/dist/components/ai-elements/message.cjs +1 -1
  32. package/dist/components/ai-elements/message.js +1 -1
  33. package/dist/components/ai-elements/package-info.cjs +4 -4
  34. package/dist/components/ai-elements/package-info.js +4 -4
  35. package/dist/components/ai-elements/prompt-input-context.cjs +2 -3
  36. package/dist/components/ai-elements/prompt-input-context.js +2 -3
  37. package/dist/components/ai-elements/queue.cjs +2 -2
  38. package/dist/components/ai-elements/queue.js +2 -2
  39. package/dist/components/ai-elements/reasoning.cjs +2 -2
  40. package/dist/components/ai-elements/reasoning.js +2 -2
  41. package/dist/components/ai-elements/sandbox.cjs +3 -3
  42. package/dist/components/ai-elements/sandbox.js +3 -3
  43. package/dist/components/ai-elements/schema-display.cjs +12 -12
  44. package/dist/components/ai-elements/schema-display.js +12 -12
  45. package/dist/components/ai-elements/speech-input.cjs +18 -2
  46. package/dist/components/ai-elements/speech-input.js +16 -0
  47. package/dist/components/ai-elements/stack-trace.cjs +1 -1
  48. package/dist/components/ai-elements/stack-trace.js +1 -1
  49. package/dist/components/ai-elements/task.cjs +3 -3
  50. package/dist/components/ai-elements/task.js +3 -3
  51. package/dist/components/ai-elements/terminal.cjs +2 -2
  52. package/dist/components/ai-elements/terminal.js +2 -2
  53. package/dist/components/ai-elements/test-results.cjs +4 -4
  54. package/dist/components/ai-elements/test-results.js +4 -4
  55. package/dist/components/ai-elements/tool.cjs +4 -4
  56. package/dist/components/ai-elements/tool.js +4 -4
  57. package/dist/components/ai-elements/transcription.cjs +1 -1
  58. package/dist/components/ai-elements/transcription.js +1 -1
  59. package/dist/components/ai-elements/web-preview.cjs +2 -2
  60. package/dist/components/ai-elements/web-preview.js +2 -2
  61. package/dist/components/context-editor/CapabilitySection.cjs +2 -2
  62. package/dist/components/context-editor/CapabilitySection.js +2 -2
  63. package/dist/components/context-editor/ContextEditor.cjs +2 -2
  64. package/dist/components/context-editor/ContextEditor.js +2 -2
  65. package/dist/components/context-editor/PresetBar.cjs +3 -3
  66. package/dist/components/context-editor/PresetBar.js +3 -3
  67. package/dist/components/context-editor/SystemPromptSection.cjs +4 -4
  68. package/dist/components/context-editor/SystemPromptSection.js +4 -4
  69. package/dist/components/context-editor/parts.cjs +6 -6
  70. package/dist/components/context-editor/parts.js +6 -6
  71. package/dist/components/dashboard/activity-list.cjs +2 -2
  72. package/dist/components/dashboard/activity-list.js +2 -2
  73. package/dist/components/dashboard/empty-state.cjs +1 -1
  74. package/dist/components/dashboard/empty-state.js +1 -1
  75. package/dist/components/dashboard/item-list.cjs +2 -2
  76. package/dist/components/dashboard/item-list.js +2 -2
  77. package/dist/components/dashboard/layout.cjs +1 -1
  78. package/dist/components/dashboard/layout.js +1 -1
  79. package/dist/components/dashboard/metric.cjs +1 -1
  80. package/dist/components/dashboard/metric.js +1 -1
  81. package/dist/components/dashboard/stale-indicator.cjs +1 -1
  82. package/dist/components/dashboard/stale-indicator.js +1 -1
  83. package/dist/components/dashboard/typography.cjs +4 -4
  84. package/dist/components/dashboard/typography.d.cts +1 -1
  85. package/dist/components/dashboard/typography.d.ts +1 -1
  86. package/dist/components/dashboard/typography.js +4 -4
  87. package/dist/components/model-selection/available-model-picker.cjs +6 -6
  88. package/dist/components/model-selection/available-model-picker.js +6 -6
  89. package/dist/components/model-selection/thinking-level-picker.cjs +1 -1
  90. package/dist/components/model-selection/thinking-level-picker.js +1 -1
  91. package/dist/components/model-selection/thinking-picker.cjs +70 -0
  92. package/dist/components/model-selection/thinking-picker.d.cts +12 -0
  93. package/dist/components/model-selection/thinking-picker.d.ts +12 -0
  94. package/dist/components/model-selection/thinking-picker.js +70 -0
  95. package/dist/components/ui/accordion.cjs +2 -2
  96. package/dist/components/ui/accordion.js +2 -2
  97. package/dist/components/ui/alert-dialog.cjs +4 -2
  98. package/dist/components/ui/alert-dialog.js +4 -2
  99. package/dist/components/ui/alert.cjs +2 -2
  100. package/dist/components/ui/alert.js +2 -2
  101. package/dist/components/ui/avatar.cjs +2 -2
  102. package/dist/components/ui/avatar.js +2 -2
  103. package/dist/components/ui/breadcrumb.cjs +1 -1
  104. package/dist/components/ui/breadcrumb.js +1 -1
  105. package/dist/components/ui/button-group.cjs +1 -1
  106. package/dist/components/ui/button-group.js +1 -1
  107. package/dist/components/ui/button.cjs +1 -1
  108. package/dist/components/ui/button.js +1 -1
  109. package/dist/components/ui/calendar.cjs +2 -2
  110. package/dist/components/ui/calendar.js +2 -2
  111. package/dist/components/ui/card.cjs +1 -1
  112. package/dist/components/ui/card.js +1 -1
  113. package/dist/components/ui/carousel.cjs +3 -2
  114. package/dist/components/ui/carousel.js +2 -1
  115. package/dist/components/ui/chart.cjs +36 -27
  116. package/dist/components/ui/chart.d.cts +21 -17
  117. package/dist/components/ui/chart.d.ts +21 -17
  118. package/dist/components/ui/chart.js +30 -21
  119. package/dist/components/ui/combobox.cjs +7 -5
  120. package/dist/components/ui/combobox.js +7 -5
  121. package/dist/components/ui/command.cjs +3 -3
  122. package/dist/components/ui/command.js +3 -3
  123. package/dist/components/ui/context-menu.cjs +10 -7
  124. package/dist/components/ui/context-menu.js +10 -7
  125. package/dist/components/ui/dialog.cjs +4 -2
  126. package/dist/components/ui/dialog.js +4 -2
  127. package/dist/components/ui/drawer.cjs +4 -2
  128. package/dist/components/ui/drawer.js +4 -2
  129. package/dist/components/ui/dropdown-menu.cjs +10 -7
  130. package/dist/components/ui/dropdown-menu.js +10 -7
  131. package/dist/components/ui/empty.cjs +2 -2
  132. package/dist/components/ui/empty.js +2 -2
  133. package/dist/components/ui/field.cjs +5 -5
  134. package/dist/components/ui/field.js +5 -5
  135. package/dist/components/ui/form.cjs +2 -2
  136. package/dist/components/ui/form.d.cts +1 -1
  137. package/dist/components/ui/form.d.ts +1 -1
  138. package/dist/components/ui/form.js +2 -2
  139. package/dist/components/ui/hover-card.cjs +3 -1
  140. package/dist/components/ui/hover-card.js +3 -1
  141. package/dist/components/ui/input-group.cjs +3 -3
  142. package/dist/components/ui/input-group.js +3 -3
  143. package/dist/components/ui/input-otp.cjs +1 -1
  144. package/dist/components/ui/input-otp.js +1 -1
  145. package/dist/components/ui/input.cjs +1 -1
  146. package/dist/components/ui/input.js +1 -1
  147. package/dist/components/ui/item.cjs +3 -3
  148. package/dist/components/ui/item.js +3 -3
  149. package/dist/components/ui/label.cjs +1 -1
  150. package/dist/components/ui/label.js +1 -1
  151. package/dist/components/ui/menubar.cjs +9 -7
  152. package/dist/components/ui/menubar.js +9 -7
  153. package/dist/components/ui/native-select.cjs +1 -1
  154. package/dist/components/ui/native-select.js +1 -1
  155. package/dist/components/ui/navigation-menu.cjs +2 -2
  156. package/dist/components/ui/navigation-menu.js +2 -2
  157. package/dist/components/ui/plugin-safety-disclaimer.cjs +1 -1
  158. package/dist/components/ui/plugin-safety-disclaimer.js +1 -1
  159. package/dist/components/ui/popover.cjs +4 -2
  160. package/dist/components/ui/popover.js +4 -2
  161. package/dist/components/ui/select.cjs +5 -3
  162. package/dist/components/ui/select.js +5 -3
  163. package/dist/components/ui/sheet.cjs +4 -2
  164. package/dist/components/ui/sheet.js +4 -2
  165. package/dist/components/ui/sidebar.cjs +5 -5
  166. package/dist/components/ui/sidebar.js +5 -5
  167. package/dist/components/ui/table.cjs +2 -2
  168. package/dist/components/ui/table.js +2 -2
  169. package/dist/components/ui/tabs.cjs +1 -1
  170. package/dist/components/ui/tabs.js +1 -1
  171. package/dist/components/ui/textarea.cjs +1 -1
  172. package/dist/components/ui/textarea.js +1 -1
  173. package/dist/components/ui/toggle.cjs +1 -1
  174. package/dist/components/ui/toggle.js +1 -1
  175. package/dist/components/ui/tooltip.cjs +3 -1
  176. package/dist/components/ui/tooltip.js +3 -1
  177. package/dist/index.cjs +5 -56
  178. package/dist/index.d.cts +2 -65
  179. package/dist/index.d.ts +2 -65
  180. package/dist/index.js +5 -56
  181. package/dist/plugin-style-scope-context.cjs +10 -0
  182. package/dist/plugin-style-scope-context.d.cts +13 -0
  183. package/dist/plugin-style-scope-context.d.ts +13 -0
  184. package/dist/plugin-style-scope-context.js +10 -0
  185. package/dist/plugin-style-scope.cjs +25 -0
  186. package/dist/plugin-style-scope.d.cts +11 -0
  187. package/dist/plugin-style-scope.d.ts +11 -0
  188. package/dist/plugin-style-scope.js +25 -0
  189. package/dist/reference.cjs +71 -98
  190. package/dist/reference.js +71 -98
  191. package/dist/styles/ai-elements.css +2 -0
  192. package/dist/styles/context-editor.css +2 -0
  193. package/dist/styles/globals.css +22 -3
  194. package/dist/styles/model-selection.css +2 -0
  195. package/dist/styles/plugin-theme.css +80 -0
  196. package/dist/styles/plugin.css +17 -2
  197. package/package.json +32 -19
  198. package/scripts/smoke-dist.mjs +104 -2
  199. package/src/components/ai-elements/agent.tsx +6 -6
  200. package/src/components/ai-elements/artifact.tsx +2 -2
  201. package/src/components/ai-elements/attachments.tsx +2 -2
  202. package/src/components/ai-elements/chain-of-thought.tsx +2 -2
  203. package/src/components/ai-elements/code-block.tsx +6 -3
  204. package/src/components/ai-elements/commit.tsx +2 -2
  205. package/src/components/ai-elements/confirmation.tsx +1 -1
  206. package/src/components/ai-elements/conversation.tsx +2 -2
  207. package/src/components/ai-elements/environment-variables.tsx +3 -3
  208. package/src/components/ai-elements/file-tree.tsx +1 -1
  209. package/src/components/ai-elements/inline-citation.tsx +3 -3
  210. package/src/components/ai-elements/jsx-preview.tsx +1 -1
  211. package/src/components/ai-elements/message.tsx +1 -1
  212. package/src/components/ai-elements/package-info.tsx +4 -4
  213. package/src/components/ai-elements/prompt-input-context.tsx +3 -2
  214. package/src/components/ai-elements/queue.tsx +2 -2
  215. package/src/components/ai-elements/reasoning.tsx +2 -2
  216. package/src/components/ai-elements/sandbox.tsx +3 -3
  217. package/src/components/ai-elements/schema-display.tsx +12 -12
  218. package/src/components/ai-elements/speech-input.tsx +17 -0
  219. package/src/components/ai-elements/stack-trace.tsx +1 -1
  220. package/src/components/ai-elements/task.tsx +3 -3
  221. package/src/components/ai-elements/terminal.tsx +2 -2
  222. package/src/components/ai-elements/test-results.tsx +4 -4
  223. package/src/components/ai-elements/tool.tsx +4 -4
  224. package/src/components/ai-elements/transcription.tsx +1 -1
  225. package/src/components/ai-elements/web-preview.tsx +2 -2
  226. package/src/components/context-editor/CapabilitySection.tsx +2 -2
  227. package/src/components/context-editor/ContextEditor.tsx +2 -2
  228. package/src/components/context-editor/PresetBar.tsx +3 -3
  229. package/src/components/context-editor/SystemPromptSection.tsx +4 -4
  230. package/src/components/context-editor/parts.tsx +6 -6
  231. package/src/components/dashboard/activity-list.tsx +2 -2
  232. package/src/components/dashboard/empty-state.tsx +1 -1
  233. package/src/components/dashboard/item-list.tsx +2 -2
  234. package/src/components/dashboard/layout.tsx +1 -1
  235. package/src/components/dashboard/metric.tsx +1 -1
  236. package/src/components/dashboard/stale-indicator.tsx +1 -1
  237. package/src/components/dashboard/typography.tsx +5 -5
  238. package/src/components/model-selection/available-model-picker.tsx +7 -7
  239. package/src/components/model-selection/thinking-level-picker.tsx +1 -1
  240. package/src/components/model-selection/thinking-picker.tsx +90 -0
  241. package/src/components/ui/accordion.tsx +2 -2
  242. package/src/components/ui/alert-dialog.tsx +4 -2
  243. package/src/components/ui/alert.tsx +2 -2
  244. package/src/components/ui/avatar.tsx +2 -2
  245. package/src/components/ui/breadcrumb.tsx +1 -1
  246. package/src/components/ui/button-group.tsx +1 -1
  247. package/src/components/ui/button.tsx +1 -1
  248. package/src/components/ui/calendar.tsx +3 -3
  249. package/src/components/ui/card.tsx +1 -1
  250. package/src/components/ui/carousel.tsx +2 -1
  251. package/src/components/ui/chart.tsx +54 -36
  252. package/src/components/ui/combobox.tsx +7 -5
  253. package/src/components/ui/command.tsx +3 -3
  254. package/src/components/ui/context-menu.tsx +10 -7
  255. package/src/components/ui/dialog.tsx +4 -2
  256. package/src/components/ui/drawer.tsx +4 -2
  257. package/src/components/ui/dropdown-menu.tsx +10 -7
  258. package/src/components/ui/empty.tsx +2 -2
  259. package/src/components/ui/field.tsx +5 -5
  260. package/src/components/ui/form.tsx +2 -2
  261. package/src/components/ui/hover-card.tsx +3 -1
  262. package/src/components/ui/input-group.tsx +3 -3
  263. package/src/components/ui/input-otp.tsx +1 -1
  264. package/src/components/ui/input.tsx +1 -1
  265. package/src/components/ui/item.tsx +3 -3
  266. package/src/components/ui/label.tsx +1 -1
  267. package/src/components/ui/menubar.tsx +9 -7
  268. package/src/components/ui/native-select.tsx +1 -1
  269. package/src/components/ui/navigation-menu.tsx +2 -2
  270. package/src/components/ui/plugin-safety-disclaimer.tsx +1 -1
  271. package/src/components/ui/popover.tsx +4 -2
  272. package/src/components/ui/select.tsx +5 -3
  273. package/src/components/ui/sheet.tsx +4 -2
  274. package/src/components/ui/sidebar.tsx +5 -5
  275. package/src/components/ui/table.tsx +2 -2
  276. package/src/components/ui/tabs.tsx +1 -1
  277. package/src/components/ui/textarea.tsx +1 -1
  278. package/src/components/ui/toggle.tsx +1 -1
  279. package/src/components/ui/tooltip.tsx +3 -1
  280. package/src/index.ts +6 -63
  281. package/src/plugin-style-scope-context.ts +21 -0
  282. package/src/plugin-style-scope.test.tsx +38 -0
  283. package/src/plugin-style-scope.tsx +35 -0
  284. package/src/styles/ai-elements.css +2 -0
  285. package/src/styles/context-editor.css +2 -0
  286. package/src/styles/globals.css +22 -3
  287. package/src/styles/model-selection.css +2 -0
  288. package/src/styles/plugin-theme.css +80 -0
  289. package/src/styles/plugin.css +17 -2
package/dist/reference.js CHANGED
@@ -226,7 +226,7 @@ function Section({
226
226
  children: [
227
227
  (heading || action) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
228
228
  /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-0.5", children: [
229
- heading && /* @__PURE__ */ jsx2("h3", { className: "truncate text-[11px] font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: heading }),
229
+ heading && /* @__PURE__ */ jsx2("h3", { className: "truncate text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]", children: heading }),
230
230
  description && /* @__PURE__ */ jsx2("p", { className: "truncate text-xs text-[var(--text-muted)]", children: description })
231
231
  ] }),
232
232
  action && /* @__PURE__ */ jsx2("div", { className: "shrink-0", children: action })
@@ -263,11 +263,11 @@ import { jsx as jsx3 } from "react/jsx-runtime";
263
263
  var textVariants = cva2("min-w-0", {
264
264
  variants: {
265
265
  variant: {
266
- body: "text-sm text-[var(--text-primary)]",
267
- label: "text-[11px] font-semibold uppercase tracking-wider text-[var(--text-muted)]",
266
+ body: "text-base text-[var(--text-primary)]",
267
+ label: "text-sm font-semibold uppercase tracking-wider text-[var(--text-muted)]",
268
268
  supporting: "text-xs text-[var(--text-secondary)]",
269
269
  muted: "text-xs text-[var(--text-muted)]",
270
- numeric: "text-sm font-semibold tabular-nums text-[var(--text-primary)]"
270
+ numeric: "text-base font-semibold tabular-nums text-[var(--text-primary)]"
271
271
  }
272
272
  },
273
273
  defaultVariants: { variant: "body" }
@@ -301,7 +301,7 @@ function Text({
301
301
  }
302
302
  var headingSize = {
303
303
  sm: "text-xs font-semibold",
304
- md: "text-sm font-semibold",
304
+ md: "text-base font-semibold",
305
305
  lg: "text-base font-semibold"
306
306
  };
307
307
  function Heading({
@@ -384,7 +384,7 @@ function Metric({
384
384
  children: [
385
385
  /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-1.5", children: [
386
386
  icon && /* @__PURE__ */ jsx4(Icon, { icon, size: "sm" }),
387
- /* @__PURE__ */ jsx4("span", { className: "truncate text-[11px] font-medium uppercase tracking-wide text-[var(--text-muted)]", children: label })
387
+ /* @__PURE__ */ jsx4("span", { className: "truncate text-sm font-medium uppercase tracking-wide text-[var(--text-muted)]", children: label })
388
388
  ] }),
389
389
  /* @__PURE__ */ jsxs2("div", { className: "flex items-baseline gap-1.5", children: [
390
390
  /* @__PURE__ */ jsx4(
@@ -546,7 +546,7 @@ import { cva as cva3 } from "class-variance-authority";
546
546
  import { Slot } from "radix-ui";
547
547
  import { jsx as jsx7 } from "react/jsx-runtime";
548
548
  var itemVariants = cva3(
549
- "group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
549
+ "group/item flex items-center border border-transparent text-base rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
550
550
  {
551
551
  variants: {
552
552
  variant: {
@@ -633,7 +633,7 @@ function ItemTitle({ className, ...props }) {
633
633
  {
634
634
  "data-slot": "item-title",
635
635
  className: cn(
636
- "flex w-fit items-center gap-2 text-sm leading-snug font-medium",
636
+ "flex w-fit items-center gap-2 text-base leading-snug font-medium",
637
637
  className
638
638
  ),
639
639
  ...props
@@ -646,7 +646,7 @@ function ItemDescription({ className, ...props }) {
646
646
  {
647
647
  "data-slot": "item-description",
648
648
  className: cn(
649
- "text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance",
649
+ "text-muted-foreground line-clamp-2 text-base leading-normal font-normal text-balance",
650
650
  "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
651
651
  className
652
652
  ),
@@ -694,7 +694,7 @@ function ItemListItem({
694
694
  /* @__PURE__ */ jsx8(ItemTitle, { className: "truncate text-xs font-medium text-[var(--text-primary)]", children: primary }),
695
695
  secondary && /* @__PURE__ */ jsx8(ItemDescription, { className: "line-clamp-1 text-xs text-[var(--text-muted)]", children: secondary })
696
696
  ] }),
697
- trailing && /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-[11px] tabular-nums text-[var(--text-muted)]", children: trailing }),
697
+ trailing && /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-sm tabular-nums text-[var(--text-muted)]", children: trailing }),
698
698
  actions && /* @__PURE__ */ jsx8(ItemActions, { children: actions })
699
699
  ]
700
700
  }
@@ -715,7 +715,7 @@ function ItemList({
715
715
  ...props,
716
716
  children: [
717
717
  children,
718
- overflowCount > 0 && /* @__PURE__ */ jsxs5("span", { className: "px-2 text-[11px] text-[var(--text-muted)]", children: [
718
+ overflowCount > 0 && /* @__PURE__ */ jsxs5("span", { className: "px-2 text-sm text-[var(--text-muted)]", children: [
719
719
  "+",
720
720
  overflowCount,
721
721
  " more"
@@ -747,7 +747,7 @@ function ActivityListItem({
747
747
  /* @__PURE__ */ jsxs6("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
748
748
  /* @__PURE__ */ jsxs6("div", { className: "flex items-baseline justify-between gap-2", children: [
749
749
  /* @__PURE__ */ jsx9("span", { className: "truncate text-xs text-[var(--text-primary)]", children: label }),
750
- timestamp && /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-[11px] tabular-nums text-[var(--text-muted)]", children: timestamp })
750
+ timestamp && /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-sm tabular-nums text-[var(--text-muted)]", children: timestamp })
751
751
  ] }),
752
752
  detail && /* @__PURE__ */ jsx9("span", { className: "line-clamp-1 text-xs text-[var(--text-muted)]", children: detail })
753
753
  ] })
@@ -769,7 +769,7 @@ function ActivityList({
769
769
  ...props,
770
770
  children: [
771
771
  children,
772
- overflowCount > 0 && /* @__PURE__ */ jsxs6("li", { className: "pl-5 pt-0.5 text-[11px] text-[var(--text-muted)]", children: [
772
+ overflowCount > 0 && /* @__PURE__ */ jsxs6("li", { className: "pl-5 pt-0.5 text-sm text-[var(--text-muted)]", children: [
773
773
  "+",
774
774
  overflowCount,
775
775
  " more"
@@ -861,7 +861,7 @@ import { cva as cva4 } from "class-variance-authority";
861
861
  import { Slot as Slot2 } from "radix-ui";
862
862
  import { jsx as jsx11 } from "react/jsx-runtime";
863
863
  var buttonVariants = cva4(
864
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
864
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-base font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
865
865
  {
866
866
  variants: {
867
867
  variant: {
@@ -959,7 +959,7 @@ function StaleIndicator({
959
959
  {
960
960
  "data-slot": "stale-indicator",
961
961
  className: cn(
962
- "flex items-center gap-1.5 text-[11px] text-[var(--text-muted)]",
962
+ "flex items-center gap-1.5 text-sm text-[var(--text-muted)]",
963
963
  className
964
964
  ),
965
965
  ...props,
@@ -1010,44 +1010,17 @@ function DataBoundary({
1010
1010
  }
1011
1011
  }
1012
1012
 
1013
- // src/components/ui/empty.tsx
1014
- import { cva as cva5 } from "class-variance-authority";
1015
- import { jsx as jsx15 } from "react/jsx-runtime";
1016
- var emptyMediaVariants = cva5(
1017
- "flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1018
- {
1019
- variants: {
1020
- variant: {
1021
- default: "bg-transparent",
1022
- icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
1023
- }
1024
- },
1025
- defaultVariants: {
1026
- variant: "default"
1027
- }
1028
- }
1029
- );
1030
-
1031
- // src/components/dashboard/empty-state.tsx
1032
- import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1033
-
1034
- // src/components/ui/skeleton.tsx
1035
- import { jsx as jsx17 } from "react/jsx-runtime";
1036
-
1037
- // src/components/dashboard/skeletons.tsx
1038
- import { jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
1039
-
1040
1013
  // src/components/reference/StarterExample.tsx
1041
- import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
1014
+ import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
1042
1015
  var RECENT = [
1043
1016
  { id: "a", label: "Nightly build", timestamp: "12m", tone: "success" },
1044
1017
  { id: "b", label: "Deploy to staging", timestamp: "1h", tone: "info" },
1045
1018
  { id: "c", label: "Dependency audit", timestamp: "3h", tone: "neutral" }
1046
1019
  ];
1047
1020
  function StarterExample() {
1048
- return /* @__PURE__ */ jsx19(WidgetContent, { children: /* @__PURE__ */ jsxs12(Stack, { gap: "sm", children: [
1049
- /* @__PURE__ */ jsx19(Metric, { label: "Tasks done", value: 12, icon: CheckCircle2, tone: "success" }),
1050
- /* @__PURE__ */ jsx19(Section, { heading: "Recent", children: /* @__PURE__ */ jsx19(ActivityList, { children: RECENT.map((e) => /* @__PURE__ */ jsx19(
1021
+ return /* @__PURE__ */ jsx15(WidgetContent, { children: /* @__PURE__ */ jsxs10(Stack, { gap: "sm", children: [
1022
+ /* @__PURE__ */ jsx15(Metric, { label: "Tasks done", value: 12, icon: CheckCircle2, tone: "success" }),
1023
+ /* @__PURE__ */ jsx15(Section, { heading: "Recent", children: /* @__PURE__ */ jsx15(ActivityList, { children: RECENT.map((e) => /* @__PURE__ */ jsx15(
1051
1024
  ActivityListItem,
1052
1025
  {
1053
1026
  tone: e.tone,
@@ -1061,21 +1034,21 @@ function StarterExample() {
1061
1034
 
1062
1035
  // src/components/reference/SchedulerExample.tsx
1063
1036
  import { ExternalLink } from "lucide-react";
1064
- import { jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
1037
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
1065
1038
  var UPCOMING = [
1066
1039
  { id: "a", label: "Daily backup", timestamp: "08:00", tone: "success" },
1067
1040
  { id: "b", label: "Publish report", timestamp: "in 2h", tone: "info" },
1068
1041
  { id: "c", label: "Rotate API keys", timestamp: "tomorrow", tone: "warning" }
1069
1042
  ];
1070
1043
  function SchedulerExample() {
1071
- return /* @__PURE__ */ jsx20(WidgetContent, { children: /* @__PURE__ */ jsxs13(Stack, { gap: "sm", children: [
1072
- /* @__PURE__ */ jsxs13(Inline, { justify: "between", align: "center", children: [
1073
- /* @__PURE__ */ jsx20(Status, { tone: "success", pulse: true, children: "Scheduler active" }),
1074
- /* @__PURE__ */ jsx20(ProgressRing, { value: 92, label: "Success rate", tone: "success", size: 40 })
1044
+ return /* @__PURE__ */ jsx16(WidgetContent, { children: /* @__PURE__ */ jsxs11(Stack, { gap: "sm", children: [
1045
+ /* @__PURE__ */ jsxs11(Inline, { justify: "between", align: "center", children: [
1046
+ /* @__PURE__ */ jsx16(Status, { tone: "success", pulse: true, children: "Scheduler active" }),
1047
+ /* @__PURE__ */ jsx16(ProgressRing, { value: 92, label: "Success rate", tone: "success", size: 40 })
1075
1048
  ] }),
1076
- /* @__PURE__ */ jsx20(Section, { heading: "Summary", children: /* @__PURE__ */ jsxs13(Inline, { gap: "sm", wrap: true, children: [
1077
- /* @__PURE__ */ jsx20(MetricCard, { className: "flex-1", children: /* @__PURE__ */ jsx20(Metric, { label: "Jobs", value: 6 }) }),
1078
- /* @__PURE__ */ jsx20(MetricCard, { className: "flex-1", children: /* @__PURE__ */ jsx20(
1049
+ /* @__PURE__ */ jsx16(Section, { heading: "Summary", children: /* @__PURE__ */ jsxs11(Inline, { gap: "sm", wrap: true, children: [
1050
+ /* @__PURE__ */ jsx16(MetricCard, { className: "flex-1", children: /* @__PURE__ */ jsx16(Metric, { label: "Jobs", value: 6 }) }),
1051
+ /* @__PURE__ */ jsx16(MetricCard, { className: "flex-1", children: /* @__PURE__ */ jsx16(
1079
1052
  Metric,
1080
1053
  {
1081
1054
  label: "Runs today",
@@ -1084,16 +1057,16 @@ function SchedulerExample() {
1084
1057
  }
1085
1058
  ) })
1086
1059
  ] }) }),
1087
- /* @__PURE__ */ jsx20(Divider, {}),
1088
- /* @__PURE__ */ jsx20(
1060
+ /* @__PURE__ */ jsx16(Divider, {}),
1061
+ /* @__PURE__ */ jsx16(
1089
1062
  Section,
1090
1063
  {
1091
1064
  heading: "Next up",
1092
- action: /* @__PURE__ */ jsxs13(Button, { size: "xs", variant: "ghost", children: [
1093
- /* @__PURE__ */ jsx20(ExternalLink, { className: "size-3" }),
1065
+ action: /* @__PURE__ */ jsxs11(Button, { size: "xs", variant: "ghost", children: [
1066
+ /* @__PURE__ */ jsx16(ExternalLink, { className: "size-3" }),
1094
1067
  "All"
1095
1068
  ] }),
1096
- children: /* @__PURE__ */ jsx20(DataBoundary, { state: "ready", children: /* @__PURE__ */ jsx20(ActivityList, { children: UPCOMING.map((e) => /* @__PURE__ */ jsx20(
1069
+ children: /* @__PURE__ */ jsx16(DataBoundary, { state: "ready", children: /* @__PURE__ */ jsx16(ActivityList, { children: UPCOMING.map((e) => /* @__PURE__ */ jsx16(
1097
1070
  ActivityListItem,
1098
1071
  {
1099
1072
  tone: e.tone,
@@ -1104,42 +1077,42 @@ function SchedulerExample() {
1104
1077
  )) }) })
1105
1078
  }
1106
1079
  ),
1107
- /* @__PURE__ */ jsx20(StaleIndicator, { lastUpdated: "Updated 2m ago" })
1080
+ /* @__PURE__ */ jsx16(StaleIndicator, { lastUpdated: "Updated 2m ago" })
1108
1081
  ] }) });
1109
1082
  }
1110
1083
 
1111
1084
  // src/components/reference/ResourceExample.tsx
1112
- import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
1085
+ import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
1113
1086
  function Ring({
1114
1087
  value,
1115
1088
  label,
1116
1089
  tone
1117
1090
  }) {
1118
- return /* @__PURE__ */ jsxs14(Stack, { gap: "xs", align: "center", children: [
1119
- /* @__PURE__ */ jsx21(ProgressRing, { value, label, tone }),
1120
- /* @__PURE__ */ jsx21(Text, { variant: "muted", children: label })
1091
+ return /* @__PURE__ */ jsxs12(Stack, { gap: "xs", align: "center", children: [
1092
+ /* @__PURE__ */ jsx17(ProgressRing, { value, label, tone }),
1093
+ /* @__PURE__ */ jsx17(Text, { variant: "muted", children: label })
1121
1094
  ] });
1122
1095
  }
1123
1096
  function ResourceExample() {
1124
- return /* @__PURE__ */ jsx21(WidgetContent, { scroll: true, children: /* @__PURE__ */ jsxs14(Stack, { gap: "sm", children: [
1125
- /* @__PURE__ */ jsx21(Heading, { level: 2, size: "md", children: "Resources" }),
1126
- /* @__PURE__ */ jsxs14(MetricGroup, { children: [
1127
- /* @__PURE__ */ jsx21(Metric, { label: "CPU", value: "42%", tone: "success" }),
1128
- /* @__PURE__ */ jsx21(Metric, { label: "Memory", value: "6.1 GB" }),
1129
- /* @__PURE__ */ jsx21(Metric, { label: "Disk", value: "71%", tone: "warning" })
1097
+ return /* @__PURE__ */ jsx17(WidgetContent, { scroll: true, children: /* @__PURE__ */ jsxs12(Stack, { gap: "sm", children: [
1098
+ /* @__PURE__ */ jsx17(Heading, { level: 2, size: "md", children: "Resources" }),
1099
+ /* @__PURE__ */ jsxs12(MetricGroup, { children: [
1100
+ /* @__PURE__ */ jsx17(Metric, { label: "CPU", value: "42%", tone: "success" }),
1101
+ /* @__PURE__ */ jsx17(Metric, { label: "Memory", value: "6.1 GB" }),
1102
+ /* @__PURE__ */ jsx17(Metric, { label: "Disk", value: "71%", tone: "warning" })
1130
1103
  ] }),
1131
- /* @__PURE__ */ jsx21(Divider, {}),
1132
- /* @__PURE__ */ jsx21(Section, { heading: "Usage", children: /* @__PURE__ */ jsxs14(Grid, { columns: 3, gap: "sm", children: [
1133
- /* @__PURE__ */ jsx21(Ring, { value: 42, label: "CPU", tone: "success" }),
1134
- /* @__PURE__ */ jsx21(Ring, { value: 61, label: "Memory", tone: "info" }),
1135
- /* @__PURE__ */ jsx21(Ring, { value: 71, label: "Disk", tone: "warning" })
1104
+ /* @__PURE__ */ jsx17(Divider, {}),
1105
+ /* @__PURE__ */ jsx17(Section, { heading: "Usage", children: /* @__PURE__ */ jsxs12(Grid, { columns: 3, gap: "sm", children: [
1106
+ /* @__PURE__ */ jsx17(Ring, { value: 42, label: "CPU", tone: "success" }),
1107
+ /* @__PURE__ */ jsx17(Ring, { value: 61, label: "Memory", tone: "info" }),
1108
+ /* @__PURE__ */ jsx17(Ring, { value: 71, label: "Disk", tone: "warning" })
1136
1109
  ] }) }),
1137
- /* @__PURE__ */ jsx21(Divider, {}),
1138
- /* @__PURE__ */ jsx21(Section, { heading: "Host", children: /* @__PURE__ */ jsxs14(KeyValueList, { children: [
1139
- /* @__PURE__ */ jsx21(KeyValue, { label: "Region", value: "eu-west-1", mono: true }),
1140
- /* @__PURE__ */ jsx21(KeyValue, { label: "Instance", value: "c7g.xlarge", mono: true }),
1141
- /* @__PURE__ */ jsx21(KeyValue, { label: "Uptime", value: "14d 6h", mono: true }),
1142
- /* @__PURE__ */ jsx21(KeyValue, { label: "Status", value: /* @__PURE__ */ jsx21(Status, { tone: "success", children: "Healthy" }) })
1110
+ /* @__PURE__ */ jsx17(Divider, {}),
1111
+ /* @__PURE__ */ jsx17(Section, { heading: "Host", children: /* @__PURE__ */ jsxs12(KeyValueList, { children: [
1112
+ /* @__PURE__ */ jsx17(KeyValue, { label: "Region", value: "eu-west-1", mono: true }),
1113
+ /* @__PURE__ */ jsx17(KeyValue, { label: "Instance", value: "c7g.xlarge", mono: true }),
1114
+ /* @__PURE__ */ jsx17(KeyValue, { label: "Uptime", value: "14d 6h", mono: true }),
1115
+ /* @__PURE__ */ jsx17(KeyValue, { label: "Status", value: /* @__PURE__ */ jsx17(Status, { tone: "success", children: "Healthy" }) })
1143
1116
  ] }) })
1144
1117
  ] }) });
1145
1118
  }
@@ -1148,10 +1121,10 @@ function ResourceExample() {
1148
1121
  import { FileText } from "lucide-react";
1149
1122
 
1150
1123
  // src/components/ui/badge.tsx
1151
- import { cva as cva6 } from "class-variance-authority";
1124
+ import { cva as cva5 } from "class-variance-authority";
1152
1125
  import { Slot as Slot3 } from "radix-ui";
1153
- import { jsx as jsx22 } from "react/jsx-runtime";
1154
- var badgeVariants = cva6(
1126
+ import { jsx as jsx18 } from "react/jsx-runtime";
1127
+ var badgeVariants = cva5(
1155
1128
  "inline-flex items-center justify-center rounded-full border border-transparent px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
1156
1129
  {
1157
1130
  variants: {
@@ -1180,7 +1153,7 @@ function Badge({
1180
1153
  ...props
1181
1154
  }) {
1182
1155
  const Comp = asChild ? Slot3.Root : "span";
1183
- return /* @__PURE__ */ jsx22(
1156
+ return /* @__PURE__ */ jsx18(
1184
1157
  Comp,
1185
1158
  {
1186
1159
  "data-slot": "badge",
@@ -1192,33 +1165,33 @@ function Badge({
1192
1165
  }
1193
1166
 
1194
1167
  // src/components/reference/ActivityExample.tsx
1195
- import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
1168
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1196
1169
  var ITEMS = [
1197
1170
  { id: "1", title: "quarterly-report.pdf", meta: "2h", badge: "PDF" },
1198
1171
  { id: "2", title: "design-tokens.json", meta: "5h", badge: "JSON" },
1199
1172
  { id: "3", title: "release-notes.md", meta: "1d", badge: "MD" }
1200
1173
  ];
1201
1174
  function ActivityExample() {
1202
- return /* @__PURE__ */ jsx23(WidgetContent, { children: /* @__PURE__ */ jsxs15(Stack, { gap: "sm", fill: true, children: [
1203
- /* @__PURE__ */ jsx23(Inline, { justify: "between", align: "center", children: /* @__PURE__ */ jsxs15(Inline, { gap: "xs", align: "center", children: [
1204
- /* @__PURE__ */ jsx23(Text, { variant: "label", children: "Recent files" }),
1205
- /* @__PURE__ */ jsx23(Badge, { variant: "info", children: ITEMS.length })
1175
+ return /* @__PURE__ */ jsx19(WidgetContent, { children: /* @__PURE__ */ jsxs13(Stack, { gap: "sm", fill: true, children: [
1176
+ /* @__PURE__ */ jsx19(Inline, { justify: "between", align: "center", children: /* @__PURE__ */ jsxs13(Inline, { gap: "xs", align: "center", children: [
1177
+ /* @__PURE__ */ jsx19(Text, { variant: "label", children: "Recent files" }),
1178
+ /* @__PURE__ */ jsx19(Badge, { variant: "info", children: ITEMS.length })
1206
1179
  ] }) }),
1207
- /* @__PURE__ */ jsx23(Stack, { gap: "none", scroll: true, children: /* @__PURE__ */ jsx23(ItemList, { children: ITEMS.map((f) => /* @__PURE__ */ jsx23(
1180
+ /* @__PURE__ */ jsx19(Stack, { gap: "none", scroll: true, children: /* @__PURE__ */ jsx19(ItemList, { children: ITEMS.map((f) => /* @__PURE__ */ jsx19(
1208
1181
  ItemListItem,
1209
1182
  {
1210
- leading: /* @__PURE__ */ jsx23(FileText, { className: "size-4 text-[var(--text-muted)]" }),
1183
+ leading: /* @__PURE__ */ jsx19(FileText, { className: "size-4 text-[var(--text-muted)]" }),
1211
1184
  primary: f.title,
1212
- trailing: /* @__PURE__ */ jsxs15(Inline, { gap: "xs", align: "center", children: [
1213
- /* @__PURE__ */ jsx23(Badge, { variant: "secondary", children: f.badge }),
1214
- /* @__PURE__ */ jsx23("span", { children: f.meta })
1185
+ trailing: /* @__PURE__ */ jsxs13(Inline, { gap: "xs", align: "center", children: [
1186
+ /* @__PURE__ */ jsx19(Badge, { variant: "secondary", children: f.badge }),
1187
+ /* @__PURE__ */ jsx19("span", { children: f.meta })
1215
1188
  ] })
1216
1189
  },
1217
1190
  f.id
1218
1191
  )) }) }),
1219
- /* @__PURE__ */ jsxs15(Inline, { justify: "between", align: "center", children: [
1220
- /* @__PURE__ */ jsx23(Status, { tone: "info", variant: "pill", children: "Synced" }),
1221
- /* @__PURE__ */ jsx23(StaleIndicator, { lastUpdated: "Synced 30s ago" })
1192
+ /* @__PURE__ */ jsxs13(Inline, { justify: "between", align: "center", children: [
1193
+ /* @__PURE__ */ jsx19(Status, { tone: "info", variant: "pill", children: "Synced" }),
1194
+ /* @__PURE__ */ jsx19(StaleIndicator, { lastUpdated: "Synced 30s ago" })
1222
1195
  ] })
1223
1196
  ] }) });
1224
1197
  }
@@ -0,0 +1,2 @@
1
+ /* Import after plugin.css when a federated plugin uses @sero-ai/ui/ai-elements/*. */
2
+ @source "../components/ai-elements";
@@ -0,0 +1,2 @@
1
+ /* Import after plugin.css when a federated plugin uses components/context-editor/*. */
2
+ @source "../components/context-editor";
@@ -116,7 +116,7 @@
116
116
  /* Typography (themeable) */
117
117
  --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
118
118
  --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', 'Cascadia Code', Menlo, monospace;
119
- --font-size-base: 14px;
119
+ --font-size-base: 13px;
120
120
 
121
121
  /* Spacing */
122
122
  --space-xs: 4px;
@@ -132,7 +132,7 @@
132
132
 
133
133
  /* Sero font sizes (legacy — use Tailwind text-* for new components) */
134
134
  --sero-text-xs: 12px;
135
- --sero-text-sm: 13px;
135
+ --sero-text-base: 13px;
136
136
  --sero-text-base: 14px;
137
137
  --sero-text-lg: 15px;
138
138
  --sero-text-xl: 16px;
@@ -236,6 +236,14 @@
236
236
  }
237
237
 
238
238
  @theme inline {
239
+ --text-xs: 0.8rem;
240
+ --text-xs--line-height: 1rem;
241
+
242
+ --text-sm: 0.9rem;
243
+ --text-sm--line-height: 1.2rem;
244
+
245
+ --text-base--line-height: 1.4rem;
246
+
239
247
  --radius-sm: calc(var(--radius) - 4px);
240
248
  --radius-md: calc(var(--radius) - 2px);
241
249
  --radius-lg: var(--radius);
@@ -483,7 +491,7 @@
483
491
  }
484
492
 
485
493
  html {
486
- font-size: var(--font-size-base, 14px);
494
+ font-size: var(--font-size-base, 13px);
487
495
  font-family: var(--font-sans);
488
496
  }
489
497
 
@@ -495,3 +503,14 @@ html {
495
503
  @apply bg-background text-foreground;
496
504
  }
497
505
  }
506
+
507
+ @media (prefers-reduced-motion: reduce) {
508
+ *,
509
+ *::before,
510
+ *::after {
511
+ animation-duration: 0.01ms !important;
512
+ animation-iteration-count: 1 !important;
513
+ scroll-behavior: auto !important;
514
+ transition-duration: 0.01ms !important;
515
+ }
516
+ }
@@ -0,0 +1,2 @@
1
+ /* Import after plugin.css when a federated plugin uses @sero-ai/ui/model-selection/*. */
2
+ @source "../components/model-selection";
@@ -0,0 +1,80 @@
1
+ @theme inline {
2
+ --text-xs: 0.8rem;
3
+ --text-xs--line-height: 1rem;
4
+
5
+ --text-sm: 0.9rem;
6
+ --text-sm--line-height: 1.2rem;
7
+
8
+ --text-base--line-height: 1.4rem;
9
+
10
+ --radius-sm: calc(var(--radius) - 4px);
11
+ --radius-md: calc(var(--radius) - 2px);
12
+ --radius-lg: var(--radius);
13
+ --radius-xl: calc(var(--radius) + 4px);
14
+ --radius-2xl: calc(var(--radius) + 8px);
15
+ --radius-3xl: calc(var(--radius) + 12px);
16
+ --radius-4xl: calc(var(--radius) + 16px);
17
+ --color-background: var(--background);
18
+ --color-foreground: var(--foreground);
19
+ --color-brand-primary: var(--brand-primary);
20
+ --color-brand-primary-foreground: var(--brand-primary-foreground);
21
+ --color-brand-primary-muted: var(--brand-primary-muted);
22
+ --color-brand-primary-subtle: var(--brand-primary-subtle);
23
+ --color-brand-primary-faint: var(--brand-primary-faint);
24
+ --color-brand-primary-border: var(--brand-primary-border);
25
+ --color-brand-secondary: var(--brand-secondary);
26
+ --color-brand-secondary-foreground: var(--brand-secondary-foreground);
27
+ --color-brand-secondary-muted: var(--brand-secondary-muted);
28
+ --color-brand-secondary-subtle: var(--brand-secondary-subtle);
29
+ --color-brand-secondary-faint: var(--brand-secondary-faint);
30
+ --color-brand-secondary-border: var(--brand-secondary-border);
31
+ --color-status-success: var(--status-success);
32
+ --color-status-success-muted: var(--status-success-muted);
33
+ --color-status-success-subtle: var(--status-success-subtle);
34
+ --color-status-success-faint: var(--status-success-faint);
35
+ --color-status-success-border: var(--status-success-border);
36
+ --color-status-warning: var(--status-warning);
37
+ --color-status-warning-muted: var(--status-warning-muted);
38
+ --color-status-warning-subtle: var(--status-warning-subtle);
39
+ --color-status-warning-faint: var(--status-warning-faint);
40
+ --color-status-warning-border: var(--status-warning-border);
41
+ --color-status-error: var(--status-error);
42
+ --color-status-error-muted: var(--status-error-muted);
43
+ --color-status-error-subtle: var(--status-error-subtle);
44
+ --color-status-error-faint: var(--status-error-faint);
45
+ --color-status-error-border: var(--status-error-border);
46
+ --color-status-info: var(--status-info);
47
+ --color-status-info-muted: var(--status-info-muted);
48
+ --color-status-info-subtle: var(--status-info-subtle);
49
+ --color-status-info-faint: var(--status-info-faint);
50
+ --color-status-info-border: var(--status-info-border);
51
+ --color-card: var(--card);
52
+ --color-card-foreground: var(--card-foreground);
53
+ --color-popover: var(--popover);
54
+ --color-popover-foreground: var(--popover-foreground);
55
+ --color-primary: var(--primary);
56
+ --color-primary-foreground: var(--primary-foreground);
57
+ --color-secondary: var(--secondary);
58
+ --color-secondary-foreground: var(--secondary-foreground);
59
+ --color-muted: var(--muted);
60
+ --color-muted-foreground: var(--muted-foreground);
61
+ --color-accent: var(--accent);
62
+ --color-accent-foreground: var(--accent-foreground);
63
+ --color-destructive: var(--destructive);
64
+ --color-border: var(--border);
65
+ --color-input: var(--input);
66
+ --color-ring: var(--ring);
67
+ --color-chart-1: var(--chart-1);
68
+ --color-chart-2: var(--chart-2);
69
+ --color-chart-3: var(--chart-3);
70
+ --color-chart-4: var(--chart-4);
71
+ --color-chart-5: var(--chart-5);
72
+ --color-sidebar: var(--sidebar);
73
+ --color-sidebar-foreground: var(--sidebar-foreground);
74
+ --color-sidebar-primary: var(--sidebar-primary);
75
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
76
+ --color-sidebar-accent: var(--sidebar-accent);
77
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
78
+ --color-sidebar-border: var(--sidebar-border);
79
+ --color-sidebar-ring: var(--sidebar-ring);
80
+ }
@@ -1,4 +1,19 @@
1
- @import "./globals.css";
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+ @import "shadcn/tailwind.css";
4
+ @import "./plugin-theme.css";
5
+
6
+ /* Match the lightweight package root. Specialized components opt into their
7
+ own source files through a matching stylesheet under styles/. */
8
+ @source "../components/ui";
9
+ @source "../components/dashboard";
10
+
11
+ @custom-variant dark (&:is(.dark *));
2
12
 
3
13
  /* Federated Sero plugins should import this file, then add plugin-local
4
- @source directives. It keeps Tailwind 4 token names aligned with the shell. */
14
+ @source directives. The seroPluginCssScope Vite helper rewrites this file's
15
+ document-level selectors (:root/:host theme blocks, html/body preflight) to
16
+ :scope, so a plugin's default Tailwind theme and resets are self-contained on
17
+ its own scope root. Sero design tokens (--background, --brand-*, …) are still
18
+ owned by the host: plugin-theme.css references them via @theme inline, so
19
+ they inherit from the host document root. */
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@sero-ai/ui",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Shared UI components, AI elements, and design tokens for the Sero platform",
5
5
  "type": "module",
6
+ "sideEffects": [
7
+ "**/*.css"
8
+ ],
6
9
  "main": "./dist/index.js",
7
10
  "types": "./dist/index.d.ts",
8
11
  "exports": {
@@ -11,6 +14,16 @@
11
14
  "import": "./dist/index.js",
12
15
  "require": "./dist/index.cjs"
13
16
  },
17
+ "./ai-elements/*": {
18
+ "types": "./dist/components/ai-elements/*.d.ts",
19
+ "import": "./dist/components/ai-elements/*.js",
20
+ "require": "./dist/components/ai-elements/*.cjs"
21
+ },
22
+ "./model-selection/*": {
23
+ "types": "./dist/components/model-selection/*.d.ts",
24
+ "import": "./dist/components/model-selection/*.js",
25
+ "require": "./dist/components/model-selection/*.cjs"
26
+ },
14
27
  "./dashboard-catalog.json": "./dist/components/dashboard/catalog.json",
15
28
  "./reference": {
16
29
  "types": "./dist/reference.d.ts",
@@ -40,48 +53,48 @@
40
53
  "react-dom": "^19.2.4"
41
54
  },
42
55
  "dependencies": {
43
- "@base-ui/react": "^1.3.0",
44
- "@headless-tree/core": "^1.6.3",
45
- "@headless-tree/react": "^1.6.3",
46
- "@radix-ui/react-use-controllable-state": "^1.2.2",
56
+ "@base-ui/react": "^1.6.0",
57
+ "@headless-tree/core": "^1.7.0",
58
+ "@headless-tree/react": "^1.7.0",
59
+ "@radix-ui/react-use-controllable-state": "^1.2.5",
47
60
  "@remixicon/react": "^4.9.0",
48
- "@rive-app/react-webgl2": "^4.27.1",
61
+ "@rive-app/react-webgl2": "^4.29.5",
49
62
  "@streamdown/cjk": "^1.0.2",
50
63
  "@streamdown/code": "^1.1.0",
51
64
  "@streamdown/math": "^1.0.2",
52
65
  "@streamdown/mermaid": "^1.0.2",
53
- "@xyflow/react": "^12.10.2",
66
+ "@xyflow/react": "^12.11.2",
54
67
  "ai": "^6.0.116",
55
68
  "ansi-to-react": "^6.2.6",
56
69
  "class-variance-authority": "^0.7.1",
57
70
  "clsx": "^2.1.1",
58
71
  "cmdk": "^1.1.1",
59
- "date-fns": "^4.1.0",
72
+ "date-fns": "^4.4.0",
60
73
  "embla-carousel-react": "^8.6.0",
61
74
  "input-otp": "^1.4.2",
62
- "lucide-react": "^0.563.0",
63
- "media-chrome": "^4.18.0",
75
+ "lucide-react": "^1.26.0",
76
+ "media-chrome": "^4.19.2",
64
77
  "motion": "^12.34.0",
65
78
  "nanoid": "^5.1.11",
66
79
  "next-themes": "^0.4.6",
67
- "radix-ui": "^1.4.3",
80
+ "radix-ui": "^1.6.5",
68
81
  "react-day-picker": "^9.14.0",
69
- "react-hook-form": "^7.71.2",
82
+ "react-hook-form": "^7.82.0",
70
83
  "react-jsx-parser": "^2.4.1",
71
- "react-resizable-panels": "^4.7.2",
84
+ "react-resizable-panels": "^4.12.2",
72
85
  "react-syntax-highlighter": "^16.1.1",
73
- "recharts": "2.15.4",
86
+ "recharts": "3.10.0",
74
87
  "shiki": "^3.23.0",
75
88
  "sonner": "^2.0.7",
76
89
  "streamdown": "^2.5.0",
77
- "tailwind-merge": "^3.5.0",
90
+ "tailwind-merge": "^3.6.0",
78
91
  "tokenlens": "^1.3.1",
79
- "use-stick-to-bottom": "^1.1.4",
92
+ "use-stick-to-bottom": "^1.1.6",
80
93
  "vaul": "^1.1.2",
81
- "@sero-ai/common": "0.3.1"
94
+ "@sero-ai/common": "0.8.0"
82
95
  },
83
96
  "devDependencies": {
84
- "@hookform/resolvers": "^5.2.2",
97
+ "@hookform/resolvers": "^5.4.0",
85
98
  "@types/react": "^19.2.13",
86
99
  "@types/react-dom": "^19.2.3",
87
100
  "@types/react-syntax-highlighter": "^15.5.13",
@@ -96,7 +109,7 @@
96
109
  "vitest": "^4.1.7"
97
110
  },
98
111
  "scripts": {
99
- "build": "tsup && tsup --config tsup.reference.config.ts",
112
+ "build": "tsup && tsup --config tsup.reference.config.ts && node scripts/smoke-dist.mjs",
100
113
  "typecheck": "tsc --noEmit",
101
114
  "test": "vitest run",
102
115
  "smoke": "node scripts/smoke-dist.mjs"