@sero-ai/ui 0.4.0 → 0.4.2

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 (332) hide show
  1. package/.turbo/turbo-build.log +628 -628
  2. package/.turbo/turbo-test.log +18 -0
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/CHANGELOG.md +22 -2
  5. package/LICENSE +201 -0
  6. package/dist/components/ai-elements/agent.cjs +6 -6
  7. package/dist/components/ai-elements/agent.js +6 -6
  8. package/dist/components/ai-elements/artifact.cjs +2 -2
  9. package/dist/components/ai-elements/artifact.js +2 -2
  10. package/dist/components/ai-elements/attachments.cjs +2 -2
  11. package/dist/components/ai-elements/attachments.js +2 -2
  12. package/dist/components/ai-elements/chain-of-thought.cjs +2 -2
  13. package/dist/components/ai-elements/chain-of-thought.js +2 -2
  14. package/dist/components/ai-elements/code-block.cjs +7 -5
  15. package/dist/components/ai-elements/code-block.d.cts +2 -1
  16. package/dist/components/ai-elements/code-block.d.ts +2 -1
  17. package/dist/components/ai-elements/code-block.js +7 -5
  18. package/dist/components/ai-elements/commit.cjs +2 -2
  19. package/dist/components/ai-elements/commit.js +2 -2
  20. package/dist/components/ai-elements/confirmation.cjs +1 -1
  21. package/dist/components/ai-elements/confirmation.js +1 -1
  22. package/dist/components/ai-elements/conversation.cjs +2 -2
  23. package/dist/components/ai-elements/conversation.js +2 -2
  24. package/dist/components/ai-elements/environment-variables.cjs +3 -3
  25. package/dist/components/ai-elements/environment-variables.js +3 -3
  26. package/dist/components/ai-elements/file-tree.cjs +1 -1
  27. package/dist/components/ai-elements/file-tree.js +1 -1
  28. package/dist/components/ai-elements/inline-citation.cjs +3 -3
  29. package/dist/components/ai-elements/inline-citation.js +3 -3
  30. package/dist/components/ai-elements/jsx-preview.cjs +1 -1
  31. package/dist/components/ai-elements/jsx-preview.js +1 -1
  32. package/dist/components/ai-elements/message.cjs +1 -1
  33. package/dist/components/ai-elements/message.js +1 -1
  34. package/dist/components/ai-elements/package-info.cjs +4 -4
  35. package/dist/components/ai-elements/package-info.js +4 -4
  36. package/dist/components/ai-elements/prompt-input-context.cjs +2 -3
  37. package/dist/components/ai-elements/prompt-input-context.js +2 -3
  38. package/dist/components/ai-elements/queue.cjs +2 -2
  39. package/dist/components/ai-elements/queue.js +2 -2
  40. package/dist/components/ai-elements/reasoning.cjs +2 -2
  41. package/dist/components/ai-elements/reasoning.js +2 -2
  42. package/dist/components/ai-elements/sandbox.cjs +3 -3
  43. package/dist/components/ai-elements/sandbox.js +3 -3
  44. package/dist/components/ai-elements/schema-display.cjs +12 -12
  45. package/dist/components/ai-elements/schema-display.js +12 -12
  46. package/dist/components/ai-elements/speech-input.cjs +18 -2
  47. package/dist/components/ai-elements/speech-input.js +16 -0
  48. package/dist/components/ai-elements/stack-trace.cjs +1 -1
  49. package/dist/components/ai-elements/stack-trace.js +1 -1
  50. package/dist/components/ai-elements/task.cjs +3 -3
  51. package/dist/components/ai-elements/task.js +3 -3
  52. package/dist/components/ai-elements/terminal.cjs +2 -2
  53. package/dist/components/ai-elements/terminal.js +2 -2
  54. package/dist/components/ai-elements/test-results.cjs +4 -4
  55. package/dist/components/ai-elements/test-results.js +4 -4
  56. package/dist/components/ai-elements/tool.cjs +4 -4
  57. package/dist/components/ai-elements/tool.js +4 -4
  58. package/dist/components/ai-elements/transcription.cjs +1 -1
  59. package/dist/components/ai-elements/transcription.js +1 -1
  60. package/dist/components/ai-elements/web-preview.cjs +2 -2
  61. package/dist/components/ai-elements/web-preview.js +2 -2
  62. package/dist/components/context-editor/CapabilitySection.cjs +2 -2
  63. package/dist/components/context-editor/CapabilitySection.js +2 -2
  64. package/dist/components/context-editor/ContextEditor.cjs +2 -2
  65. package/dist/components/context-editor/ContextEditor.js +2 -2
  66. package/dist/components/context-editor/PresetBar.cjs +3 -3
  67. package/dist/components/context-editor/PresetBar.js +3 -3
  68. package/dist/components/context-editor/SystemPromptSection.cjs +4 -4
  69. package/dist/components/context-editor/SystemPromptSection.js +4 -4
  70. package/dist/components/context-editor/parts.cjs +6 -6
  71. package/dist/components/context-editor/parts.js +6 -6
  72. package/dist/components/dashboard/activity-list.cjs +2 -2
  73. package/dist/components/dashboard/activity-list.js +2 -2
  74. package/dist/components/dashboard/catalog.cjs +1 -322
  75. package/dist/components/dashboard/catalog.d.cts +1 -2
  76. package/dist/components/dashboard/catalog.d.ts +1 -2
  77. package/dist/components/dashboard/catalog.js +0 -322
  78. package/dist/components/dashboard/catalog.json +312 -0
  79. package/dist/components/dashboard/empty-state.cjs +1 -1
  80. package/dist/components/dashboard/empty-state.js +1 -1
  81. package/dist/components/dashboard/index.d.cts +1 -1
  82. package/dist/components/dashboard/index.d.ts +1 -1
  83. package/dist/components/dashboard/item-list.cjs +2 -2
  84. package/dist/components/dashboard/item-list.js +2 -2
  85. package/dist/components/dashboard/layout.cjs +1 -1
  86. package/dist/components/dashboard/layout.js +1 -1
  87. package/dist/components/dashboard/metric.cjs +1 -1
  88. package/dist/components/dashboard/metric.js +1 -1
  89. package/dist/components/dashboard/stale-indicator.cjs +1 -1
  90. package/dist/components/dashboard/stale-indicator.js +1 -1
  91. package/dist/components/dashboard/status.cjs +6 -2
  92. package/dist/components/dashboard/status.js +7 -3
  93. package/dist/components/dashboard/tone.cjs +9 -1
  94. package/dist/components/dashboard/tone.d.cts +7 -1
  95. package/dist/components/dashboard/tone.d.ts +7 -1
  96. package/dist/components/dashboard/tone.js +8 -0
  97. package/dist/components/dashboard/typography.cjs +4 -4
  98. package/dist/components/dashboard/typography.d.cts +1 -1
  99. package/dist/components/dashboard/typography.d.ts +1 -1
  100. package/dist/components/dashboard/typography.js +4 -4
  101. package/dist/components/model-selection/available-model-picker.cjs +6 -6
  102. package/dist/components/model-selection/available-model-picker.js +6 -6
  103. package/dist/components/model-selection/thinking-level-picker.cjs +1 -1
  104. package/dist/components/model-selection/thinking-level-picker.js +1 -1
  105. package/dist/components/model-selection/thinking-picker.cjs +70 -0
  106. package/dist/components/model-selection/thinking-picker.d.cts +12 -0
  107. package/dist/components/model-selection/thinking-picker.d.ts +12 -0
  108. package/dist/components/model-selection/thinking-picker.js +70 -0
  109. package/dist/components/ui/accordion.cjs +2 -2
  110. package/dist/components/ui/accordion.js +2 -2
  111. package/dist/components/ui/alert-dialog.cjs +4 -2
  112. package/dist/components/ui/alert-dialog.js +4 -2
  113. package/dist/components/ui/alert.cjs +2 -2
  114. package/dist/components/ui/alert.js +2 -2
  115. package/dist/components/ui/avatar.cjs +2 -2
  116. package/dist/components/ui/avatar.js +2 -2
  117. package/dist/components/ui/breadcrumb.cjs +1 -1
  118. package/dist/components/ui/breadcrumb.js +1 -1
  119. package/dist/components/ui/button-group.cjs +1 -1
  120. package/dist/components/ui/button-group.js +1 -1
  121. package/dist/components/ui/button.cjs +1 -1
  122. package/dist/components/ui/button.js +1 -1
  123. package/dist/components/ui/calendar.cjs +2 -2
  124. package/dist/components/ui/calendar.js +2 -2
  125. package/dist/components/ui/card.cjs +1 -1
  126. package/dist/components/ui/card.js +1 -1
  127. package/dist/components/ui/carousel.cjs +3 -2
  128. package/dist/components/ui/carousel.js +2 -1
  129. package/dist/components/ui/chart.cjs +36 -27
  130. package/dist/components/ui/chart.d.cts +21 -17
  131. package/dist/components/ui/chart.d.ts +21 -17
  132. package/dist/components/ui/chart.js +30 -21
  133. package/dist/components/ui/combobox.cjs +7 -5
  134. package/dist/components/ui/combobox.js +7 -5
  135. package/dist/components/ui/command.cjs +3 -3
  136. package/dist/components/ui/command.js +3 -3
  137. package/dist/components/ui/context-menu.cjs +10 -7
  138. package/dist/components/ui/context-menu.js +10 -7
  139. package/dist/components/ui/dialog.cjs +4 -2
  140. package/dist/components/ui/dialog.js +4 -2
  141. package/dist/components/ui/drawer.cjs +4 -2
  142. package/dist/components/ui/drawer.js +4 -2
  143. package/dist/components/ui/dropdown-menu.cjs +10 -7
  144. package/dist/components/ui/dropdown-menu.js +10 -7
  145. package/dist/components/ui/empty.cjs +2 -2
  146. package/dist/components/ui/empty.js +2 -2
  147. package/dist/components/ui/field.cjs +5 -5
  148. package/dist/components/ui/field.js +5 -5
  149. package/dist/components/ui/form.cjs +2 -2
  150. package/dist/components/ui/form.js +2 -2
  151. package/dist/components/ui/hover-card.cjs +3 -1
  152. package/dist/components/ui/hover-card.js +3 -1
  153. package/dist/components/ui/input-group.cjs +3 -3
  154. package/dist/components/ui/input-group.js +3 -3
  155. package/dist/components/ui/input-otp.cjs +1 -1
  156. package/dist/components/ui/input-otp.js +1 -1
  157. package/dist/components/ui/input.cjs +1 -1
  158. package/dist/components/ui/input.js +1 -1
  159. package/dist/components/ui/item.cjs +3 -3
  160. package/dist/components/ui/item.js +3 -3
  161. package/dist/components/ui/label.cjs +1 -1
  162. package/dist/components/ui/label.js +1 -1
  163. package/dist/components/ui/menubar.cjs +9 -7
  164. package/dist/components/ui/menubar.js +9 -7
  165. package/dist/components/ui/native-select.cjs +1 -1
  166. package/dist/components/ui/native-select.js +1 -1
  167. package/dist/components/ui/navigation-menu.cjs +2 -2
  168. package/dist/components/ui/navigation-menu.js +2 -2
  169. package/dist/components/ui/plugin-safety-disclaimer.cjs +1 -1
  170. package/dist/components/ui/plugin-safety-disclaimer.js +1 -1
  171. package/dist/components/ui/popover.cjs +4 -2
  172. package/dist/components/ui/popover.js +4 -2
  173. package/dist/components/ui/select.cjs +5 -3
  174. package/dist/components/ui/select.js +5 -3
  175. package/dist/components/ui/sheet.cjs +4 -2
  176. package/dist/components/ui/sheet.js +4 -2
  177. package/dist/components/ui/sidebar.cjs +5 -5
  178. package/dist/components/ui/sidebar.js +5 -5
  179. package/dist/components/ui/table.cjs +2 -2
  180. package/dist/components/ui/table.js +2 -2
  181. package/dist/components/ui/tabs.cjs +1 -1
  182. package/dist/components/ui/tabs.js +1 -1
  183. package/dist/components/ui/textarea.cjs +1 -1
  184. package/dist/components/ui/textarea.js +1 -1
  185. package/dist/components/ui/toggle.cjs +1 -1
  186. package/dist/components/ui/toggle.js +1 -1
  187. package/dist/components/ui/tooltip.cjs +3 -1
  188. package/dist/components/ui/tooltip.js +3 -1
  189. package/dist/index.cjs +5 -1
  190. package/dist/index.d.cts +4 -1
  191. package/dist/index.d.ts +4 -1
  192. package/dist/index.js +5 -1
  193. package/dist/plugin-style-scope-context.cjs +10 -0
  194. package/dist/plugin-style-scope-context.d.cts +13 -0
  195. package/dist/plugin-style-scope-context.d.ts +13 -0
  196. package/dist/plugin-style-scope-context.js +10 -0
  197. package/dist/plugin-style-scope.cjs +25 -0
  198. package/dist/plugin-style-scope.d.cts +11 -0
  199. package/dist/plugin-style-scope.d.ts +11 -0
  200. package/dist/plugin-style-scope.js +25 -0
  201. package/dist/reference.cjs +1251 -3
  202. package/dist/reference.d.cts +11 -5
  203. package/dist/reference.d.ts +11 -5
  204. package/dist/reference.js +1224 -6
  205. package/dist/styles/globals.css +22 -3
  206. package/dist/styles/plugin-theme.css +80 -0
  207. package/dist/styles/plugin.css +14 -2
  208. package/package.json +53 -70
  209. package/scripts/ensure-pnpm-publish.mjs +23 -0
  210. package/scripts/smoke-dist.mjs +68 -0
  211. package/src/components/ai-elements/agent.tsx +6 -6
  212. package/src/components/ai-elements/artifact.tsx +2 -2
  213. package/src/components/ai-elements/attachments.tsx +2 -2
  214. package/src/components/ai-elements/chain-of-thought.tsx +2 -2
  215. package/src/components/ai-elements/code-block.tsx +6 -3
  216. package/src/components/ai-elements/commit.tsx +2 -2
  217. package/src/components/ai-elements/confirmation.tsx +1 -1
  218. package/src/components/ai-elements/conversation.tsx +2 -2
  219. package/src/components/ai-elements/environment-variables.tsx +3 -3
  220. package/src/components/ai-elements/file-tree.tsx +1 -1
  221. package/src/components/ai-elements/inline-citation.tsx +3 -3
  222. package/src/components/ai-elements/jsx-preview.tsx +1 -1
  223. package/src/components/ai-elements/message.tsx +1 -1
  224. package/src/components/ai-elements/package-info.tsx +4 -4
  225. package/src/components/ai-elements/prompt-input-context.tsx +3 -2
  226. package/src/components/ai-elements/queue.tsx +2 -2
  227. package/src/components/ai-elements/reasoning.tsx +2 -2
  228. package/src/components/ai-elements/sandbox.tsx +3 -3
  229. package/src/components/ai-elements/schema-display.tsx +12 -12
  230. package/src/components/ai-elements/speech-input.tsx +17 -0
  231. package/src/components/ai-elements/stack-trace.tsx +1 -1
  232. package/src/components/ai-elements/task.tsx +3 -3
  233. package/src/components/ai-elements/terminal.tsx +2 -2
  234. package/src/components/ai-elements/test-results.tsx +4 -4
  235. package/src/components/ai-elements/tool.tsx +4 -4
  236. package/src/components/ai-elements/transcription.tsx +1 -1
  237. package/src/components/ai-elements/web-preview.tsx +2 -2
  238. package/src/components/context-editor/CapabilitySection.tsx +2 -2
  239. package/src/components/context-editor/ContextEditor.tsx +2 -2
  240. package/src/components/context-editor/PresetBar.tsx +3 -3
  241. package/src/components/context-editor/SystemPromptSection.tsx +4 -4
  242. package/src/components/context-editor/parts.tsx +6 -6
  243. package/src/components/dashboard/__tests__/catalog.test.ts +7 -2
  244. package/src/components/dashboard/__tests__/state.test.tsx +19 -2
  245. package/src/components/dashboard/activity-list.tsx +2 -2
  246. package/src/components/dashboard/catalog.json +312 -0
  247. package/src/components/dashboard/catalog.ts +6 -328
  248. package/src/components/dashboard/empty-state.tsx +1 -1
  249. package/src/components/dashboard/index.ts +2 -2
  250. package/src/components/dashboard/item-list.tsx +2 -2
  251. package/src/components/dashboard/layout.tsx +1 -1
  252. package/src/components/dashboard/metric.tsx +1 -1
  253. package/src/components/dashboard/stale-indicator.tsx +1 -1
  254. package/src/components/dashboard/status.tsx +15 -2
  255. package/src/components/dashboard/tone.ts +13 -0
  256. package/src/components/dashboard/typography.tsx +5 -5
  257. package/src/components/model-selection/available-model-picker.tsx +7 -7
  258. package/src/components/model-selection/thinking-level-picker.tsx +1 -1
  259. package/src/components/model-selection/thinking-picker.tsx +90 -0
  260. package/src/components/ui/accordion.tsx +2 -2
  261. package/src/components/ui/alert-dialog.tsx +4 -2
  262. package/src/components/ui/alert.tsx +2 -2
  263. package/src/components/ui/avatar.tsx +2 -2
  264. package/src/components/ui/breadcrumb.tsx +1 -1
  265. package/src/components/ui/button-group.tsx +1 -1
  266. package/src/components/ui/button.tsx +1 -1
  267. package/src/components/ui/calendar.tsx +3 -3
  268. package/src/components/ui/card.tsx +1 -1
  269. package/src/components/ui/carousel.tsx +2 -1
  270. package/src/components/ui/chart.tsx +54 -36
  271. package/src/components/ui/combobox.tsx +7 -5
  272. package/src/components/ui/command.tsx +3 -3
  273. package/src/components/ui/context-menu.tsx +10 -7
  274. package/src/components/ui/dialog.tsx +4 -2
  275. package/src/components/ui/drawer.tsx +4 -2
  276. package/src/components/ui/dropdown-menu.tsx +10 -7
  277. package/src/components/ui/empty.tsx +2 -2
  278. package/src/components/ui/field.tsx +5 -5
  279. package/src/components/ui/form.tsx +2 -2
  280. package/src/components/ui/hover-card.tsx +3 -1
  281. package/src/components/ui/input-group.tsx +3 -3
  282. package/src/components/ui/input-otp.tsx +1 -1
  283. package/src/components/ui/input.tsx +1 -1
  284. package/src/components/ui/item.tsx +3 -3
  285. package/src/components/ui/label.tsx +1 -1
  286. package/src/components/ui/menubar.tsx +9 -7
  287. package/src/components/ui/native-select.tsx +1 -1
  288. package/src/components/ui/navigation-menu.tsx +2 -2
  289. package/src/components/ui/plugin-safety-disclaimer.tsx +1 -1
  290. package/src/components/ui/popover.tsx +4 -2
  291. package/src/components/ui/select.tsx +5 -3
  292. package/src/components/ui/sheet.tsx +4 -2
  293. package/src/components/ui/sidebar.tsx +5 -5
  294. package/src/components/ui/table.tsx +2 -2
  295. package/src/components/ui/tabs.tsx +1 -1
  296. package/src/components/ui/textarea.tsx +1 -1
  297. package/src/components/ui/toggle.tsx +1 -1
  298. package/src/components/ui/tooltip.tsx +3 -1
  299. package/src/index.ts +5 -1
  300. package/src/plugin-style-scope-context.ts +21 -0
  301. package/src/plugin-style-scope.test.tsx +38 -0
  302. package/src/plugin-style-scope.tsx +35 -0
  303. package/src/styles/globals.css +22 -3
  304. package/src/styles/plugin-theme.css +80 -0
  305. package/src/styles/plugin.css +14 -2
  306. package/tsup.config.ts +13 -3
  307. package/tsup.reference.config.ts +15 -0
  308. package/dist/components/reference/ActivityExample.cjs +0 -47
  309. package/dist/components/reference/ActivityExample.d.cts +0 -5
  310. package/dist/components/reference/ActivityExample.d.ts +0 -5
  311. package/dist/components/reference/ActivityExample.js +0 -47
  312. package/dist/components/reference/ResourceExample.cjs +0 -54
  313. package/dist/components/reference/ResourceExample.d.cts +0 -5
  314. package/dist/components/reference/ResourceExample.d.ts +0 -5
  315. package/dist/components/reference/ResourceExample.js +0 -54
  316. package/dist/components/reference/SchedulerExample.cjs +0 -68
  317. package/dist/components/reference/SchedulerExample.d.cts +0 -5
  318. package/dist/components/reference/SchedulerExample.d.ts +0 -5
  319. package/dist/components/reference/SchedulerExample.js +0 -68
  320. package/dist/components/reference/StarterExample.cjs +0 -34
  321. package/dist/components/reference/StarterExample.d.cts +0 -5
  322. package/dist/components/reference/StarterExample.d.ts +0 -5
  323. package/dist/components/reference/StarterExample.js +0 -34
  324. package/dist/components/reference/index.cjs +0 -10
  325. package/dist/components/reference/index.d.cts +0 -5
  326. package/dist/components/reference/index.d.ts +0 -5
  327. package/dist/components/reference/index.js +0 -10
  328. package/dist/dashboard-catalog.cjs +0 -8
  329. package/dist/dashboard-catalog.d.cts +0 -1
  330. package/dist/dashboard-catalog.d.ts +0 -1
  331. package/dist/dashboard-catalog.js +0 -8
  332. package/src/dashboard-catalog.ts +0 -13
@@ -5,6 +5,7 @@ import { XIcon } from "lucide-react"
5
5
  import { Dialog as DialogPrimitive } from "radix-ui"
6
6
 
7
7
  import { cn } from "../../lib/utils"
8
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
8
9
  import { Button } from "./button"
9
10
 
10
11
  function Dialog({
@@ -22,7 +23,8 @@ function DialogTrigger({
22
23
  function DialogPortal({
23
24
  ...props
24
25
  }: React.ComponentProps<typeof DialogPrimitive.Portal>) {
25
- return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
26
+ const container = usePluginPortalContainer()
27
+ return <DialogPrimitive.Portal data-slot="dialog-portal" container={container} {...props} />
26
28
  }
27
29
 
28
30
  function DialogClose({
@@ -138,7 +140,7 @@ function DialogDescription({
138
140
  return (
139
141
  <DialogPrimitive.Description
140
142
  data-slot="dialog-description"
141
- className={cn("text-muted-foreground text-sm", className)}
143
+ className={cn("text-muted-foreground text-base", className)}
142
144
  {...props}
143
145
  />
144
146
  )
@@ -2,6 +2,7 @@ import * as React from "react"
2
2
  import { Drawer as DrawerPrimitive } from "vaul"
3
3
 
4
4
  import { cn } from "../../lib/utils"
5
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
5
6
 
6
7
  function Drawer({
7
8
  ...props
@@ -18,7 +19,8 @@ function DrawerTrigger({
18
19
  function DrawerPortal({
19
20
  ...props
20
21
  }: React.ComponentProps<typeof DrawerPrimitive.Portal>) {
21
- return <DrawerPrimitive.Portal data-slot="drawer-portal" {...props} />
22
+ const container = usePluginPortalContainer()
23
+ return <DrawerPrimitive.Portal data-slot="drawer-portal" container={container} {...props} />
22
24
  }
23
25
 
24
26
  function DrawerClose({
@@ -113,7 +115,7 @@ function DrawerDescription({
113
115
  return (
114
116
  <DrawerPrimitive.Description
115
117
  data-slot="drawer-description"
116
- className={cn("text-muted-foreground text-sm", className)}
118
+ className={cn("text-muted-foreground text-base", className)}
117
119
  {...props}
118
120
  />
119
121
  )
@@ -5,6 +5,7 @@ import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
5
5
  import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui"
6
6
 
7
7
  import { cn } from "../../lib/utils"
8
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
8
9
 
9
10
  function DropdownMenu({
10
11
  ...props
@@ -15,8 +16,9 @@ function DropdownMenu({
15
16
  function DropdownMenuPortal({
16
17
  ...props
17
18
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
19
+ const container = usePluginPortalContainer()
18
20
  return (
19
- <DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
21
+ <DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" container={container} {...props} />
20
22
  )
21
23
  }
22
24
 
@@ -36,8 +38,9 @@ function DropdownMenuContent({
36
38
  sideOffset = 4,
37
39
  ...props
38
40
  }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {
41
+ const container = usePluginPortalContainer()
39
42
  return (
40
- <DropdownMenuPrimitive.Portal>
43
+ <DropdownMenuPrimitive.Portal container={container}>
41
44
  <DropdownMenuPrimitive.Content
42
45
  data-slot="dropdown-menu-content"
43
46
  sideOffset={sideOffset}
@@ -74,7 +77,7 @@ function DropdownMenuItem({
74
77
  data-inset={inset}
75
78
  data-variant={variant}
76
79
  className={cn(
77
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
80
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
78
81
  className
79
82
  )}
80
83
  {...props}
@@ -92,7 +95,7 @@ function DropdownMenuCheckboxItem({
92
95
  <DropdownMenuPrimitive.CheckboxItem
93
96
  data-slot="dropdown-menu-checkbox-item"
94
97
  className={cn(
95
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
98
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
96
99
  className
97
100
  )}
98
101
  checked={checked}
@@ -128,7 +131,7 @@ function DropdownMenuRadioItem({
128
131
  <DropdownMenuPrimitive.RadioItem
129
132
  data-slot="dropdown-menu-radio-item"
130
133
  className={cn(
131
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
134
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
132
135
  className
133
136
  )}
134
137
  {...props}
@@ -155,7 +158,7 @@ function DropdownMenuLabel({
155
158
  data-slot="dropdown-menu-label"
156
159
  data-inset={inset}
157
160
  className={cn(
158
- "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
161
+ "px-2 py-1.5 text-base font-medium data-[inset]:pl-8",
159
162
  className
160
163
  )}
161
164
  {...props}
@@ -211,7 +214,7 @@ function DropdownMenuSubTrigger({
211
214
  data-slot="dropdown-menu-sub-trigger"
212
215
  data-inset={inset}
213
216
  className={cn(
214
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
217
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-base outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
215
218
  className
216
219
  )}
217
220
  {...props}
@@ -73,7 +73,7 @@ function EmptyDescription({ className, ...props }: React.ComponentProps<"p">) {
73
73
  <div
74
74
  data-slot="empty-description"
75
75
  className={cn(
76
- "text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4",
76
+ "text-muted-foreground [&>a:hover]:text-primary text-base/relaxed [&>a]:underline [&>a]:underline-offset-4",
77
77
  className
78
78
  )}
79
79
  {...props}
@@ -86,7 +86,7 @@ function EmptyContent({ className, ...props }: React.ComponentProps<"div">) {
86
86
  <div
87
87
  data-slot="empty-content"
88
88
  className={cn(
89
- "flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance",
89
+ "flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-base text-balance",
90
90
  className
91
91
  )}
92
92
  {...props}
@@ -33,7 +33,7 @@ function FieldLegend({
33
33
  className={cn(
34
34
  "mb-3 font-medium",
35
35
  "data-[variant=legend]:text-base",
36
- "data-[variant=label]:text-sm",
36
+ "data-[variant=label]:text-base",
37
37
  className
38
38
  )}
39
39
  {...props}
@@ -130,7 +130,7 @@ function FieldTitle({ className, ...props }: React.ComponentProps<"div">) {
130
130
  <div
131
131
  data-slot="field-label"
132
132
  className={cn(
133
- "flex w-fit items-center gap-2 text-sm leading-snug font-medium group-data-[disabled=true]/field:opacity-50",
133
+ "flex w-fit items-center gap-2 text-base leading-snug font-medium group-data-[disabled=true]/field:opacity-50",
134
134
  className
135
135
  )}
136
136
  {...props}
@@ -143,7 +143,7 @@ function FieldDescription({ className, ...props }: React.ComponentProps<"p">) {
143
143
  <p
144
144
  data-slot="field-description"
145
145
  className={cn(
146
- "text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
146
+ "text-muted-foreground text-base leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance",
147
147
  "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5",
148
148
  "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
149
149
  className
@@ -165,7 +165,7 @@ function FieldSeparator({
165
165
  data-slot="field-separator"
166
166
  data-content={!!children}
167
167
  className={cn(
168
- "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2",
168
+ "relative -my-2 h-5 text-base group-data-[variant=outline]/field-group:-mb-2",
169
169
  className
170
170
  )}
171
171
  {...props}
@@ -226,7 +226,7 @@ function FieldError({
226
226
  <div
227
227
  role="alert"
228
228
  data-slot="field-error"
229
- className={cn("text-destructive text-sm font-normal", className)}
229
+ className={cn("text-destructive text-base font-normal", className)}
230
230
  {...props}
231
231
  >
232
232
  {content}
@@ -127,7 +127,7 @@ function FormDescription({ className, ...props }: React.ComponentProps<"p">) {
127
127
  <p
128
128
  data-slot="form-description"
129
129
  id={formDescriptionId}
130
- className={cn("text-muted-foreground text-sm", className)}
130
+ className={cn("text-muted-foreground text-base", className)}
131
131
  {...props}
132
132
  />
133
133
  )
@@ -145,7 +145,7 @@ function FormMessage({ className, ...props }: React.ComponentProps<"p">) {
145
145
  <p
146
146
  data-slot="form-message"
147
147
  id={formMessageId}
148
- className={cn("text-destructive text-sm", className)}
148
+ className={cn("text-destructive text-base", className)}
149
149
  {...props}
150
150
  >
151
151
  {body}
@@ -2,6 +2,7 @@ import * as React from "react"
2
2
  import { HoverCard as HoverCardPrimitive } from "radix-ui"
3
3
 
4
4
  import { cn } from "../../lib/utils"
5
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
5
6
 
6
7
  function HoverCard({
7
8
  ...props
@@ -23,8 +24,9 @@ function HoverCardContent({
23
24
  sideOffset = 4,
24
25
  ...props
25
26
  }: React.ComponentProps<typeof HoverCardPrimitive.Content>) {
27
+ const container = usePluginPortalContainer()
26
28
  return (
27
- <HoverCardPrimitive.Portal data-slot="hover-card-portal">
29
+ <HoverCardPrimitive.Portal data-slot="hover-card-portal" container={container}>
28
30
  <HoverCardPrimitive.Content
29
31
  data-slot="hover-card-content"
30
32
  align={align}
@@ -35,7 +35,7 @@ function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
35
35
  }
36
36
 
37
37
  const inputGroupAddonVariants = cva(
38
- "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
38
+ "text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-base font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",
39
39
  {
40
40
  variants: {
41
41
  align: {
@@ -78,7 +78,7 @@ function InputGroupAddon({
78
78
  }
79
79
 
80
80
  const inputGroupButtonVariants = cva(
81
- "text-sm shadow-none flex gap-2 items-center",
81
+ "text-base shadow-none flex gap-2 items-center",
82
82
  {
83
83
  variants: {
84
84
  size: {
@@ -118,7 +118,7 @@ function InputGroupText({ className, ...props }: React.ComponentProps<"span">) {
118
118
  return (
119
119
  <span
120
120
  className={cn(
121
- "text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
121
+ "text-muted-foreground flex items-center gap-2 text-base [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
122
122
  className
123
123
  )}
124
124
  {...props}
@@ -51,7 +51,7 @@ function InputOTPSlot({
51
51
  data-slot="input-otp-slot"
52
52
  data-active={isActive}
53
53
  className={cn(
54
- "data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex size-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
54
+ "data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex size-9 items-center justify-center border-y border-r text-base shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
55
55
  className
56
56
  )}
57
57
  {...props}
@@ -10,7 +10,7 @@ function Input({ className, type, placeholder, "aria-label": ariaLabel, ...props
10
10
  type={type}
11
11
  data-slot="input"
12
12
  className={cn(
13
- "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
13
+ "file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-base file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-base",
14
14
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
15
15
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
16
16
  className
@@ -31,7 +31,7 @@ function ItemSeparator({
31
31
  }
32
32
 
33
33
  const itemVariants = cva(
34
- "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]",
34
+ "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]",
35
35
  {
36
36
  variants: {
37
37
  variant: {
@@ -121,7 +121,7 @@ function ItemTitle({ className, ...props }: React.ComponentProps<"div">) {
121
121
  <div
122
122
  data-slot="item-title"
123
123
  className={cn(
124
- "flex w-fit items-center gap-2 text-sm leading-snug font-medium",
124
+ "flex w-fit items-center gap-2 text-base leading-snug font-medium",
125
125
  className
126
126
  )}
127
127
  {...props}
@@ -134,7 +134,7 @@ function ItemDescription({ className, ...props }: React.ComponentProps<"p">) {
134
134
  <p
135
135
  data-slot="item-description"
136
136
  className={cn(
137
- "text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance",
137
+ "text-muted-foreground line-clamp-2 text-base leading-normal font-normal text-balance",
138
138
  "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
139
139
  className
140
140
  )}
@@ -11,7 +11,7 @@ function Label({
11
11
  <LabelPrimitive.Root
12
12
  data-slot="label"
13
13
  className={cn(
14
- "flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
14
+ "flex items-center gap-2 text-base leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
15
15
  className
16
16
  )}
17
17
  {...props}
@@ -5,6 +5,7 @@ import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
5
5
  import { Menubar as MenubarPrimitive } from "radix-ui"
6
6
 
7
7
  import { cn } from "../../lib/utils"
8
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
8
9
 
9
10
  function Menubar({
10
11
  className,
@@ -37,7 +38,8 @@ function MenubarGroup({
37
38
  function MenubarPortal({
38
39
  ...props
39
40
  }: React.ComponentProps<typeof MenubarPrimitive.Portal>) {
40
- return <MenubarPrimitive.Portal data-slot="menubar-portal" {...props} />
41
+ const container = usePluginPortalContainer()
42
+ return <MenubarPrimitive.Portal data-slot="menubar-portal" container={container} {...props} />
41
43
  }
42
44
 
43
45
  function MenubarRadioGroup({
@@ -56,7 +58,7 @@ function MenubarTrigger({
56
58
  <MenubarPrimitive.Trigger
57
59
  data-slot="menubar-trigger"
58
60
  className={cn(
59
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
61
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-base font-medium outline-hidden select-none",
60
62
  className
61
63
  )}
62
64
  {...props}
@@ -103,7 +105,7 @@ function MenubarItem({
103
105
  data-inset={inset}
104
106
  data-variant={variant}
105
107
  className={cn(
106
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
108
+ "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
107
109
  className
108
110
  )}
109
111
  {...props}
@@ -121,7 +123,7 @@ function MenubarCheckboxItem({
121
123
  <MenubarPrimitive.CheckboxItem
122
124
  data-slot="menubar-checkbox-item"
123
125
  className={cn(
124
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
126
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
125
127
  className
126
128
  )}
127
129
  checked={checked}
@@ -146,7 +148,7 @@ function MenubarRadioItem({
146
148
  <MenubarPrimitive.RadioItem
147
149
  data-slot="menubar-radio-item"
148
150
  className={cn(
149
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
151
+ "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
150
152
  className
151
153
  )}
152
154
  {...props}
@@ -173,7 +175,7 @@ function MenubarLabel({
173
175
  data-slot="menubar-label"
174
176
  data-inset={inset}
175
177
  className={cn(
176
- "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
178
+ "px-2 py-1.5 text-base font-medium data-[inset]:pl-8",
177
179
  className
178
180
  )}
179
181
  {...props}
@@ -229,7 +231,7 @@ function MenubarSubTrigger({
229
231
  data-slot="menubar-sub-trigger"
230
232
  data-inset={inset}
231
233
  className={cn(
232
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
234
+ "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-base outline-none select-none data-[inset]:pl-8",
233
235
  className
234
236
  )}
235
237
  {...props}
@@ -19,7 +19,7 @@ function NativeSelect({
19
19
  data-slot="native-select"
20
20
  data-size={size}
21
21
  className={cn(
22
- "border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent px-3 py-2 pr-9 text-sm shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1",
22
+ "border-input placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 dark:hover:bg-input/50 h-9 w-full min-w-0 appearance-none rounded-md border bg-transparent px-3 py-2 pr-9 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed data-[size=sm]:h-8 data-[size=sm]:py-1",
23
23
  "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
24
24
  "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
25
25
  className
@@ -59,7 +59,7 @@ function NavigationMenuItem({
59
59
  }
60
60
 
61
61
  const navigationMenuTriggerStyle = cva(
62
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
62
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-base font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
63
63
  )
64
64
 
65
65
  function NavigationMenuTrigger({
@@ -129,7 +129,7 @@ function NavigationMenuLink({
129
129
  <NavigationMenuPrimitive.Link
130
130
  data-slot="navigation-menu-link"
131
131
  className={cn(
132
- "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
132
+ "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-base transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
133
133
  className
134
134
  )}
135
135
  {...props}
@@ -10,7 +10,7 @@ export function PluginSafetyDisclaimer({ className }: PluginSafetyDisclaimerProp
10
10
  <div
11
11
  role="note"
12
12
  className={cn(
13
- 'flex shrink-0 items-start gap-2 border-t border-status-warning-border bg-status-warning-faint px-4 py-2.5 text-[11px] leading-5 text-[var(--text-secondary)]',
13
+ 'flex shrink-0 items-start gap-2 border-t border-status-warning-border bg-status-warning-faint px-4 py-2.5 text-sm leading-5 text-[var(--text-secondary)]',
14
14
  className,
15
15
  )}
16
16
  >
@@ -2,6 +2,7 @@ import * as React from "react"
2
2
  import { Popover as PopoverPrimitive } from "radix-ui"
3
3
 
4
4
  import { cn } from "../../lib/utils"
5
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
5
6
 
6
7
  function Popover({
7
8
  ...props
@@ -21,8 +22,9 @@ function PopoverContent({
21
22
  sideOffset = 4,
22
23
  ...props
23
24
  }: React.ComponentProps<typeof PopoverPrimitive.Content>) {
25
+ const container = usePluginPortalContainer()
24
26
  return (
25
- <PopoverPrimitive.Portal>
27
+ <PopoverPrimitive.Portal container={container}>
26
28
  <PopoverPrimitive.Content
27
29
  data-slot="popover-content"
28
30
  align={align}
@@ -47,7 +49,7 @@ function PopoverHeader({ className, ...props }: React.ComponentProps<"div">) {
47
49
  return (
48
50
  <div
49
51
  data-slot="popover-header"
50
- className={cn("flex flex-col gap-1 text-sm", className)}
52
+ className={cn("flex flex-col gap-1 text-base", className)}
51
53
  {...props}
52
54
  />
53
55
  )
@@ -5,6 +5,7 @@ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
5
5
  import { Select as SelectPrimitive } from "radix-ui"
6
6
 
7
7
  import { cn } from "../../lib/utils"
8
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
8
9
 
9
10
  function Select({
10
11
  ...props
@@ -37,7 +38,7 @@ function SelectTrigger({
37
38
  data-slot="select-trigger"
38
39
  data-size={size}
39
40
  className={cn(
40
- "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
41
+ "border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-base whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
41
42
  className
42
43
  )}
43
44
  {...props}
@@ -57,8 +58,9 @@ function SelectContent({
57
58
  align = "center",
58
59
  ...props
59
60
  }: React.ComponentProps<typeof SelectPrimitive.Content>) {
61
+ const container = usePluginPortalContainer()
60
62
  return (
61
- <SelectPrimitive.Portal>
63
+ <SelectPrimitive.Portal container={container}>
62
64
  <SelectPrimitive.Content
63
65
  data-slot="select-content"
64
66
  className={cn(
@@ -109,7 +111,7 @@ function SelectItem({
109
111
  <SelectPrimitive.Item
110
112
  data-slot="select-item"
111
113
  className={cn(
112
- "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
114
+ "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-base outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
113
115
  className
114
116
  )}
115
117
  {...props}
@@ -5,6 +5,7 @@ import { XIcon } from "lucide-react"
5
5
  import { Dialog as SheetPrimitive } from "radix-ui"
6
6
 
7
7
  import { cn } from "../../lib/utils"
8
+ import { usePluginPortalContainer } from "../../plugin-style-scope-context"
8
9
 
9
10
  function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
10
11
  return <SheetPrimitive.Root data-slot="sheet" {...props} />
@@ -25,7 +26,8 @@ function SheetClose({
25
26
  function SheetPortal({
26
27
  ...props
27
28
  }: React.ComponentProps<typeof SheetPrimitive.Portal>) {
28
- return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />
29
+ const container = usePluginPortalContainer()
30
+ return <SheetPrimitive.Portal data-slot="sheet-portal" container={container} {...props} />
29
31
  }
30
32
 
31
33
  function SheetOverlay({
@@ -127,7 +129,7 @@ function SheetDescription({
127
129
  return (
128
130
  <SheetPrimitive.Description
129
131
  data-slot="sheet-description"
130
- className={cn("text-muted-foreground text-sm", className)}
132
+ className={cn("text-muted-foreground text-base", className)}
131
133
  {...props}
132
134
  />
133
135
  )
@@ -443,7 +443,7 @@ function SidebarGroupContent({
443
443
  <div
444
444
  data-slot="sidebar-group-content"
445
445
  data-sidebar="group-content"
446
- className={cn("w-full text-sm", className)}
446
+ className={cn("w-full text-base", className)}
447
447
  {...props}
448
448
  />
449
449
  )
@@ -472,7 +472,7 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
472
472
  }
473
473
 
474
474
  const sidebarMenuButtonVariants = cva(
475
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
475
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-base outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
476
476
  {
477
477
  variants: {
478
478
  variant: {
@@ -481,9 +481,9 @@ const sidebarMenuButtonVariants = cva(
481
481
  "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
482
482
  },
483
483
  size: {
484
- default: "h-8 text-sm",
484
+ default: "h-8 text-base",
485
485
  sm: "h-7 text-xs",
486
- lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
486
+ lg: "h-12 text-base group-data-[collapsible=icon]:p-0!",
487
487
  },
488
488
  },
489
489
  defaultVariants: {
@@ -687,7 +687,7 @@ function SidebarMenuSubButton({
687
687
  "text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
688
688
  "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
689
689
  size === "sm" && "text-xs",
690
- size === "md" && "text-sm",
690
+ size === "md" && "text-base",
691
691
  "group-data-[collapsible=icon]:hidden",
692
692
  className
693
693
  )}
@@ -12,7 +12,7 @@ function Table({ className, ...props }: React.ComponentProps<"table">) {
12
12
  >
13
13
  <table
14
14
  data-slot="table"
15
- className={cn("w-full caption-bottom text-sm", className)}
15
+ className={cn("w-full caption-bottom text-base", className)}
16
16
  {...props}
17
17
  />
18
18
  </div>
@@ -98,7 +98,7 @@ function TableCaption({
98
98
  return (
99
99
  <caption
100
100
  data-slot="table-caption"
101
- className={cn("text-muted-foreground mt-4 text-sm", className)}
101
+ className={cn("text-muted-foreground mt-4 text-base", className)}
102
102
  {...props}
103
103
  />
104
104
  )
@@ -64,7 +64,7 @@ function TabsTrigger({
64
64
  <TabsPrimitive.Trigger
65
65
  data-slot="tabs-trigger"
66
66
  className={cn(
67
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
67
+ "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-foreground/60 hover:text-foreground dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-base font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
68
68
  "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent",
69
69
  "data-[state=active]:bg-background dark:data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 data-[state=active]:text-foreground",
70
70
  "after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100",
@@ -9,7 +9,7 @@ function Textarea({ className, placeholder, "aria-label": ariaLabel, ...props }:
9
9
  placeholder={placeholder}
10
10
  data-slot="textarea"
11
11
  className={cn(
12
- "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
12
+ "border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-base",
13
13
  className
14
14
  )}
15
15
  {...props}
@@ -7,7 +7,7 @@ import { Toggle as TogglePrimitive } from "radix-ui"
7
7
  import { cn } from "../../lib/utils"
8
8
 
9
9
  const toggleVariants = cva(
10
- "inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
10
+ "inline-flex items-center justify-center gap-2 rounded-md text-base font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap",
11
11
  {
12
12
  variants: {
13
13
  variant: {