@ctrl-ui/react 0.8.6 → 0.8.8

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 (376) hide show
  1. package/dist/action-bar.d.ts +15 -7
  2. package/dist/action-bar.js +39 -19
  3. package/dist/activity.js +7 -15
  4. package/dist/audio-recorder.d.ts +14 -4
  5. package/dist/audio-recorder.js +82 -29
  6. package/dist/audio-visualizer.js +1 -1
  7. package/dist/blocks/coding-agent.js +54 -57
  8. package/dist/blocks/design-canvas-data.d.ts +32 -0
  9. package/dist/blocks/design-canvas-data.js +100 -0
  10. package/dist/blocks/design-canvas-inspector.d.ts +8 -0
  11. package/dist/blocks/design-canvas-inspector.js +238 -0
  12. package/dist/blocks/design-canvas.d.ts +21 -0
  13. package/dist/blocks/design-canvas.js +452 -0
  14. package/dist/blocks/discussion.d.ts +28 -0
  15. package/dist/blocks/discussion.js +67 -0
  16. package/dist/blocks/file-explorer-data.d.ts +1 -0
  17. package/dist/blocks/file-explorer-data.js +4 -1
  18. package/dist/blocks/file-explorer.d.ts +9 -1
  19. package/dist/blocks/file-explorer.js +461 -192
  20. package/dist/blocks/settings.d.ts +2 -1
  21. package/dist/blocks/settings.js +101 -79
  22. package/dist/blocks/team-chat.d.ts +12 -0
  23. package/dist/blocks/team-chat.js +26 -0
  24. package/dist/blocks/theme-toggle.js +23 -31
  25. package/dist/chat-composer-attachment.d.ts +12 -3
  26. package/dist/chat-composer-attachment.js +61 -19
  27. package/dist/chat-composer-editor/extensions/mention.d.ts +5 -1
  28. package/dist/chat-composer-editor/extensions/mention.js +58 -27
  29. package/dist/chat-composer-editor/ghost.js +2 -4
  30. package/dist/chat-composer-editor/types.d.ts +5 -0
  31. package/dist/chat-composer-editor.d.ts +1 -1
  32. package/dist/chat-composer-editor.js +71 -28
  33. package/dist/chat-composer.d.ts +13 -32
  34. package/dist/chat-composer.js +54 -13
  35. package/dist/chat-layout.d.ts +19 -0
  36. package/dist/chat-layout.js +96 -32
  37. package/dist/chat-message/social.d.ts +26 -0
  38. package/dist/chat-message/social.js +122 -0
  39. package/dist/chat-message.d.ts +28 -29
  40. package/dist/chat-message.js +106 -25
  41. package/dist/context.d.ts +2 -2
  42. package/dist/context.js +38 -23
  43. package/dist/dynamic-notification-canvas-loop.d.ts +24 -0
  44. package/dist/dynamic-notification-canvas-loop.js +113 -0
  45. package/dist/dynamic-notification-glass.js +23 -114
  46. package/dist/dynamic-notification-liquid.js +14 -118
  47. package/dist/dynamic-notification.d.ts +16 -8
  48. package/dist/dynamic-notification.js +85 -22
  49. package/dist/email/email-brand.d.ts +7 -4
  50. package/dist/email/email-brand.js +9 -6
  51. package/dist/email/email-code.d.ts +3 -2
  52. package/dist/email/email-code.js +11 -9
  53. package/dist/email/email-footer.d.ts +5 -3
  54. package/dist/email/email-footer.js +11 -5
  55. package/dist/email/email.d.ts +31 -9
  56. package/dist/email/email.js +50 -26
  57. package/dist/email/templates.d.ts +10 -9
  58. package/dist/email/templates.js +102 -38
  59. package/dist/email/theme.js +1 -1
  60. package/dist/environment-variables.d.ts +4 -2
  61. package/dist/environment-variables.js +52 -32
  62. package/dist/filter-bar/context.d.ts +32 -0
  63. package/dist/filter-bar/context.js +11 -0
  64. package/dist/filter-bar/editor.d.ts +14 -0
  65. package/dist/filter-bar/editor.js +216 -0
  66. package/dist/filter-bar/model.d.ts +10 -0
  67. package/dist/filter-bar/model.js +57 -0
  68. package/dist/filter-bar/motion.d.ts +10 -0
  69. package/dist/filter-bar/motion.js +84 -0
  70. package/dist/filter-bar/parts.d.ts +19 -0
  71. package/dist/filter-bar/parts.js +244 -0
  72. package/dist/filter-bar/types.d.ts +54 -0
  73. package/dist/filter-bar/types.js +0 -0
  74. package/dist/filter-bar.d.ts +27 -0
  75. package/dist/filter-bar.js +310 -0
  76. package/dist/hooks/use-audio-recorder.js +12 -6
  77. package/dist/hooks/use-chat-composer.d.ts +21 -7
  78. package/dist/hooks/use-chat-composer.js +32 -5
  79. package/dist/hooks/use-chat-message.d.ts +28 -2
  80. package/dist/hooks/use-chat-message.js +41 -10
  81. package/dist/hooks/use-chat-thread-scroll.js +43 -7
  82. package/dist/hooks/use-color-area.d.ts +3 -3
  83. package/dist/hooks/use-color-area.js +13 -12
  84. package/dist/hooks/use-copy-to-clipboard.d.ts +2 -1
  85. package/dist/hooks/use-copy-to-clipboard.js +20 -20
  86. package/dist/hooks/use-dropzone.d.ts +7 -4
  87. package/dist/hooks/use-dropzone.js +34 -3
  88. package/dist/hooks/use-dynamic-notification.d.ts +6 -2
  89. package/dist/hooks/use-dynamic-notification.js +26 -10
  90. package/dist/hooks/use-mobile.d.ts +3 -2
  91. package/dist/hooks/use-mobile.js +8 -4
  92. package/dist/hooks/use-textarea-trigger-menu.js +2 -1
  93. package/dist/hooks/use-trigger-menu.d.ts +54 -0
  94. package/dist/hooks/use-trigger-menu.js +102 -47
  95. package/dist/hooks/use-user-ask.d.ts +2 -0
  96. package/dist/hooks/use-user-ask.js +35 -41
  97. package/dist/inline-attachment.d.ts +6 -2
  98. package/dist/inline-attachment.js +44 -29
  99. package/dist/inline-citation.d.ts +12 -5
  100. package/dist/inline-citation.js +25 -16
  101. package/dist/knob-contracts/audio-recorder-knobs.d.ts +1 -1
  102. package/dist/knob-contracts/audio-recorder-knobs.js +2 -1
  103. package/dist/knob-contracts/audio-visualizer-knobs.d.ts +1 -1
  104. package/dist/knob-contracts/audio-visualizer-knobs.js +2 -1
  105. package/dist/knob-contracts/avatar-knobs.d.ts +1 -1
  106. package/dist/knob-contracts/avatar-knobs.js +6 -1
  107. package/dist/knob-contracts/badge-knobs.d.ts +1 -1
  108. package/dist/knob-contracts/badge-knobs.js +2 -1
  109. package/dist/knob-contracts/breadcrumb-knobs.d.ts +4 -0
  110. package/dist/knob-contracts/breadcrumb-knobs.js +8 -0
  111. package/dist/knob-contracts/button-knobs.d.ts +1 -1
  112. package/dist/knob-contracts/button-knobs.js +1 -0
  113. package/dist/knob-contracts/chat-layout-knobs.d.ts +1 -1
  114. package/dist/knob-contracts/chat-layout-knobs.js +2 -1
  115. package/dist/knob-contracts/chat-message-knobs.d.ts +1 -1
  116. package/dist/knob-contracts/chat-message-knobs.js +8 -1
  117. package/dist/knob-contracts/choice-knobs.d.ts +1 -1
  118. package/dist/knob-contracts/choice-knobs.js +1 -0
  119. package/dist/knob-contracts/code-diff-knobs.d.ts +1 -1
  120. package/dist/knob-contracts/code-diff-knobs.js +2 -0
  121. package/dist/knob-contracts/code-knobs.d.ts +1 -1
  122. package/dist/knob-contracts/code-knobs.js +2 -1
  123. package/dist/knob-contracts/collapsible-knobs.d.ts +1 -1
  124. package/dist/knob-contracts/collapsible-knobs.js +1 -1
  125. package/dist/knob-contracts/dynamic-notification-knobs.d.ts +1 -1
  126. package/dist/knob-contracts/dynamic-notification-knobs.js +2 -0
  127. package/dist/knob-contracts/emoji-picker-knobs.d.ts +4 -0
  128. package/dist/knob-contracts/emoji-picker-knobs.js +10 -0
  129. package/dist/knob-contracts/field-knobs.d.ts +1 -1
  130. package/dist/knob-contracts/field-knobs.js +5 -1
  131. package/dist/knob-contracts/filter-bar-knobs.d.ts +4 -0
  132. package/dist/knob-contracts/filter-bar-knobs.js +15 -0
  133. package/dist/knob-contracts/infinite-canvas-knobs.d.ts +1 -1
  134. package/dist/knob-contracts/infinite-canvas-knobs.js +3 -0
  135. package/dist/knob-contracts/markdown-knobs.d.ts +1 -1
  136. package/dist/knob-contracts/markdown-knobs.js +3 -1
  137. package/dist/knob-contracts/page-layout-knobs.d.ts +1 -1
  138. package/dist/knob-contracts/page-layout-knobs.js +4 -1
  139. package/dist/knob-contracts/popup-knobs.d.ts +1 -1
  140. package/dist/knob-contracts/popup-knobs.js +28 -0
  141. package/dist/knob-contracts/range-knobs.d.ts +1 -1
  142. package/dist/knob-contracts/range-knobs.js +1 -0
  143. package/dist/knob-contracts/rich-tooltip-knobs.d.ts +1 -1
  144. package/dist/knob-contracts/rich-tooltip-knobs.js +2 -1
  145. package/dist/knob-contracts/sidebar-knobs.d.ts +1 -1
  146. package/dist/knob-contracts/sidebar-knobs.js +27 -2
  147. package/dist/knob-contracts/spinner-knobs.d.ts +1 -1
  148. package/dist/knob-contracts/spinner-knobs.js +1 -1
  149. package/dist/knob-contracts/stepper-knobs.d.ts +1 -1
  150. package/dist/knob-contracts/stepper-knobs.js +4 -1
  151. package/dist/knob-contracts/switch-knobs.d.ts +1 -1
  152. package/dist/knob-contracts/switch-knobs.js +5 -0
  153. package/dist/knob-contracts/table-of-contents-knobs.d.ts +1 -1
  154. package/dist/knob-contracts/table-of-contents-knobs.js +4 -5
  155. package/dist/knob-contracts/tabs-knobs.d.ts +1 -1
  156. package/dist/knob-contracts/tabs-knobs.js +1 -0
  157. package/dist/knob-contracts/tree-knobs.d.ts +1 -1
  158. package/dist/knob-contracts/tree-knobs.js +2 -1
  159. package/dist/lib/cn.js +0 -4
  160. package/dist/lib/contrast.d.ts +1 -0
  161. package/dist/lib/contrast.js +17 -5
  162. package/dist/lib/dropzone-validation.js +41 -28
  163. package/dist/lib/env-file.d.ts +1 -1
  164. package/dist/lib/env-file.js +5 -5
  165. package/dist/lib/motion.d.ts +4 -0
  166. package/dist/lib/motion.js +15 -0
  167. package/dist/lib/trigger-detect.js +6 -8
  168. package/dist/markdown-block.js +13 -8
  169. package/dist/popup-parts.d.ts +8 -0
  170. package/dist/popup-parts.js +43 -0
  171. package/dist/scripts/contrast-eval.js +5 -4
  172. package/dist/source-badge.js +3 -1
  173. package/dist/styles/code.css +0 -2
  174. package/dist/styles/effects.css +6 -32
  175. package/dist/styles/index.css +14 -8
  176. package/dist/styles/recipes/accordion.css +9 -6
  177. package/dist/styles/recipes/action-bar.css +0 -15
  178. package/dist/styles/recipes/activity.css +5 -11
  179. package/dist/styles/recipes/alert.css +4 -4
  180. package/dist/styles/recipes/audio-recorder.css +15 -3
  181. package/dist/styles/recipes/audio-visualizer.css +13 -2
  182. package/dist/styles/recipes/avatar.css +78 -1
  183. package/dist/styles/recipes/badge.css +14 -4
  184. package/dist/styles/recipes/breadcrumb.css +77 -0
  185. package/dist/styles/recipes/button-group.css +6 -8
  186. package/dist/styles/recipes/button-states.css +66 -0
  187. package/dist/styles/recipes/button.css +26 -85
  188. package/dist/styles/recipes/calendar.css +17 -23
  189. package/dist/styles/recipes/card.css +2 -2
  190. package/dist/styles/recipes/chat-composer-attachment.css +9 -3
  191. package/dist/styles/recipes/chat-composer.css +21 -16
  192. package/dist/styles/recipes/chat-layout.css +64 -2
  193. package/dist/styles/recipes/chat-message-social.css +123 -0
  194. package/dist/styles/recipes/chat-message.css +157 -37
  195. package/dist/styles/recipes/choice.css +25 -21
  196. package/dist/styles/recipes/code-diff.css +51 -26
  197. package/dist/styles/recipes/code.css +44 -18
  198. package/dist/styles/recipes/collapsible.css +43 -1
  199. package/dist/styles/recipes/color-picker-details.css +3 -4
  200. package/dist/styles/recipes/color-picker-values.css +9 -8
  201. package/dist/styles/recipes/color-picker.css +23 -4
  202. package/dist/styles/recipes/context.css +3 -3
  203. package/dist/styles/recipes/dockable-panel.css +18 -7
  204. package/dist/styles/recipes/dropzone.css +7 -8
  205. package/dist/styles/recipes/dynamic-notification-input.css +8 -5
  206. package/dist/styles/recipes/dynamic-notification-motion.css +12 -21
  207. package/dist/styles/recipes/dynamic-notification.css +40 -26
  208. package/dist/styles/recipes/emoji-picker.css +132 -0
  209. package/dist/styles/recipes/empty.css +5 -4
  210. package/dist/styles/recipes/environment-variables.css +4 -15
  211. package/dist/styles/recipes/field-parts.css +89 -21
  212. package/dist/styles/recipes/field.css +83 -26
  213. package/dist/styles/recipes/filter-bar.css +161 -0
  214. package/dist/styles/recipes/gradient-editor.css +18 -7
  215. package/dist/styles/recipes/infinite-canvas.css +51 -4
  216. package/dist/styles/recipes/inline-attachment.css +9 -4
  217. package/dist/styles/recipes/inline-citation.css +10 -4
  218. package/dist/styles/recipes/item.css +23 -9
  219. package/dist/styles/recipes/markdown-block.css +5 -4
  220. package/dist/styles/recipes/markdown.css +68 -26
  221. package/dist/styles/recipes/morphing-panel.css +8 -8
  222. package/dist/styles/recipes/page-layout.css +36 -10
  223. package/dist/styles/recipes/pagination.css +5 -6
  224. package/dist/styles/recipes/phone-input.css +12 -8
  225. package/dist/styles/recipes/popup-controls.css +175 -26
  226. package/dist/styles/recipes/popup-drawer.css +35 -44
  227. package/dist/styles/recipes/popup-lists.css +139 -29
  228. package/dist/styles/recipes/popup-motion.css +4 -45
  229. package/dist/styles/recipes/popup-toast.css +55 -26
  230. package/dist/styles/recipes/popup.css +149 -153
  231. package/dist/styles/recipes/range.css +55 -19
  232. package/dist/styles/recipes/resizable.css +36 -7
  233. package/dist/styles/recipes/rich-tooltip.css +24 -34
  234. package/dist/styles/recipes/scroll-area.css +8 -1
  235. package/dist/styles/recipes/sidebar-menu.css +149 -34
  236. package/dist/styles/recipes/sidebar-parts.css +154 -0
  237. package/dist/styles/recipes/sidebar.css +187 -128
  238. package/dist/styles/recipes/source-badge.css +1 -1
  239. package/dist/styles/recipes/spinner.css +12 -1
  240. package/dist/styles/recipes/stepper.css +31 -13
  241. package/dist/styles/recipes/switch.css +68 -23
  242. package/dist/styles/recipes/table-of-contents.css +49 -41
  243. package/dist/styles/recipes/table.css +14 -10
  244. package/dist/styles/recipes/tabs.css +38 -12
  245. package/dist/styles/recipes/task-list.css +7 -14
  246. package/dist/styles/recipes/thread-rail.css +42 -19
  247. package/dist/styles/recipes/timeline.css +2 -0
  248. package/dist/styles/recipes/toolbar.css +27 -25
  249. package/dist/styles/recipes/track-highlight.css +12 -8
  250. package/dist/styles/recipes/transcript-divider.css +2 -2
  251. package/dist/styles/recipes/tree.css +31 -4
  252. package/dist/styles/recipes/user-ask-details.css +0 -1
  253. package/dist/styles/recipes/user-ask.css +4 -4
  254. package/dist/styles/theme.css +287 -107
  255. package/dist/task-list.d.ts +4 -1
  256. package/dist/task-list.js +24 -8
  257. package/dist/thread-rail.d.ts +1 -1
  258. package/dist/thread-rail.js +61 -19
  259. package/dist/transcript-divider.js +2 -1
  260. package/dist/ui/alert.d.ts +3 -1
  261. package/dist/ui/alert.js +14 -8
  262. package/dist/ui/autocomplete.js +7 -1
  263. package/dist/ui/avatar.d.ts +8 -0
  264. package/dist/ui/avatar.js +23 -3
  265. package/dist/ui/badge.js +1 -1
  266. package/dist/ui/breadcrumb.d.ts +27 -0
  267. package/dist/ui/breadcrumb.js +88 -0
  268. package/dist/ui/button.d.ts +2 -1
  269. package/dist/ui/button.js +1 -1
  270. package/dist/ui/calendar.js +2 -2
  271. package/dist/ui/card.d.ts +3 -1
  272. package/dist/ui/card.js +12 -7
  273. package/dist/ui/checkbox-group.js +1 -1
  274. package/dist/ui/checkbox.d.ts +2 -0
  275. package/dist/ui/code-diff.d.ts +1 -1
  276. package/dist/ui/code-diff.js +71 -27
  277. package/dist/ui/code.d.ts +5 -3
  278. package/dist/ui/code.js +27 -28
  279. package/dist/ui/color-picker.d.ts +5 -2
  280. package/dist/ui/color-picker.js +84 -36
  281. package/dist/ui/combobox-disabled-selection.d.ts +1 -2
  282. package/dist/ui/combobox-disabled-selection.js +7 -8
  283. package/dist/ui/combobox.d.ts +5 -23
  284. package/dist/ui/combobox.js +36 -16
  285. package/dist/ui/command.d.ts +8 -2
  286. package/dist/ui/command.js +39 -15
  287. package/dist/ui/context-menu.js +3 -0
  288. package/dist/ui/dialog.d.ts +2 -1
  289. package/dist/ui/dialog.js +3 -22
  290. package/dist/ui/dockable-panel-geometry.d.ts +1 -0
  291. package/dist/ui/dockable-panel-geometry.js +7 -1
  292. package/dist/ui/dockable-panel.d.ts +9 -6
  293. package/dist/ui/dockable-panel.js +81 -33
  294. package/dist/ui/drawer.d.ts +7 -4
  295. package/dist/ui/drawer.js +35 -22
  296. package/dist/ui/dropdown-menu.js +4 -3
  297. package/dist/ui/dropzone.d.ts +5 -3
  298. package/dist/ui/dropzone.js +78 -17
  299. package/dist/ui/emoji-picker.d.ts +18 -0
  300. package/dist/ui/emoji-picker.js +136 -0
  301. package/dist/ui/empty.d.ts +3 -1
  302. package/dist/ui/empty.js +12 -7
  303. package/dist/ui/field.js +1 -1
  304. package/dist/ui/gradient-editor.d.ts +1 -1
  305. package/dist/ui/gradient-editor.js +37 -21
  306. package/dist/ui/infinite-canvas.d.ts +13 -1
  307. package/dist/ui/infinite-canvas.js +139 -20
  308. package/dist/ui/input-group.d.ts +2 -4
  309. package/dist/ui/input-group.js +13 -14
  310. package/dist/ui/input-otp.d.ts +1 -1
  311. package/dist/ui/input-otp.js +32 -15
  312. package/dist/ui/input.js +11 -2
  313. package/dist/ui/item.d.ts +2 -1
  314. package/dist/ui/item.js +11 -7
  315. package/dist/ui/live-status.d.ts +7 -0
  316. package/dist/ui/live-status.js +17 -0
  317. package/dist/ui/markdown-elements.d.ts +6 -0
  318. package/dist/ui/markdown-elements.js +42 -9
  319. package/dist/ui/menubar.js +2 -2
  320. package/dist/ui/morphing-panel.js +2 -1
  321. package/dist/ui/native-select.d.ts +1 -1
  322. package/dist/ui/native-select.js +24 -11
  323. package/dist/ui/number-field.d.ts +1 -1
  324. package/dist/ui/number-field.js +13 -2
  325. package/dist/ui/page-layout.d.ts +2 -2
  326. package/dist/ui/page-layout.js +2 -4
  327. package/dist/ui/pagination.d.ts +7 -5
  328. package/dist/ui/pagination.js +19 -13
  329. package/dist/ui/phone-input.d.ts +1 -0
  330. package/dist/ui/phone-input.js +56 -58
  331. package/dist/ui/radio-group.d.ts +3 -0
  332. package/dist/ui/radio-group.js +11 -1
  333. package/dist/ui/resizable.d.ts +20 -2
  334. package/dist/ui/resizable.js +130 -8
  335. package/dist/ui/responsive-dialog.d.ts +1 -1
  336. package/dist/ui/responsive-dialog.js +9 -23
  337. package/dist/ui/rich-tooltip.d.ts +10 -4
  338. package/dist/ui/rich-tooltip.js +81 -33
  339. package/dist/ui/scroll-area.d.ts +4 -1
  340. package/dist/ui/scroll-area.js +44 -28
  341. package/dist/ui/select.d.ts +2 -1
  342. package/dist/ui/select.js +57 -32
  343. package/dist/ui/sidebar-menu.d.ts +5 -1
  344. package/dist/ui/sidebar-menu.js +31 -33
  345. package/dist/ui/sidebar-provider.d.ts +10 -1
  346. package/dist/ui/sidebar-provider.js +38 -13
  347. package/dist/ui/sidebar-resize-rail.js +7 -3
  348. package/dist/ui/sidebar.d.ts +11 -6
  349. package/dist/ui/sidebar.js +46 -23
  350. package/dist/ui/slider.js +31 -22
  351. package/dist/ui/spinner.d.ts +3 -2
  352. package/dist/ui/spinner.js +3 -2
  353. package/dist/ui/stepper.d.ts +8 -1
  354. package/dist/ui/stepper.js +74 -25
  355. package/dist/ui/switch.d.ts +1 -0
  356. package/dist/ui/table-of-contents.d.ts +5 -4
  357. package/dist/ui/table-of-contents.js +143 -52
  358. package/dist/ui/table.js +15 -9
  359. package/dist/ui/textarea.d.ts +1 -1
  360. package/dist/ui/textarea.js +20 -9
  361. package/dist/ui/timeline.d.ts +3 -1
  362. package/dist/ui/timeline.js +17 -9
  363. package/dist/ui/toast.d.ts +11 -5
  364. package/dist/ui/toast.js +100 -54
  365. package/dist/ui/toggle.d.ts +1 -1
  366. package/dist/ui/toggle.js +2 -1
  367. package/dist/ui/toolbar.d.ts +3 -2
  368. package/dist/ui/toolbar.js +4 -2
  369. package/dist/ui/tooltip.js +3 -20
  370. package/dist/ui/tree.js +120 -80
  371. package/dist/ui/trigger-menu.js +7 -2
  372. package/dist/user-ask.d.ts +10 -5
  373. package/dist/user-ask.js +31 -11
  374. package/package.json +5 -1
  375. package/dist/hooks/use-keyboard-navigation.d.ts +0 -3
  376. package/dist/hooks/use-keyboard-navigation.js +0 -22
@@ -1,23 +1,41 @@
1
1
  @layer components {
2
2
  :where([data-control-family="field"][data-field-kind="input-group"][data-slot="addon"]),
3
+ :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]) {
4
+ color: var(--muted-foreground);
5
+ }
6
+
3
7
  :where([data-control-family="field"][data-field-kind="combobox"][data-slot="trigger"]),
4
- :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]),
5
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]),
6
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]),
7
- :where([data-control-family="field"][data-field-kind="native-select"][data-slot="icon"]) {
8
+ :where([data-control-family="field"][data-field-kind="number-field"]:is([data-slot="decrement"], [data-slot="increment"])) {
9
+ background-color: var(--cui-field-affordance-background);
10
+ box-shadow: var(--cui-field-affordance-shadow);
11
+ color: var(--cui-field-affordance-foreground);
12
+ }
13
+
14
+ :where([data-control-family="field"][data-slot="root"][data-control="true"]:is(button, a)) {
15
+ cursor: pointer;
8
16
  color: var(--muted-foreground);
17
+ text-align: start;
18
+ }
19
+
20
+ @media (hover: hover) {
21
+ :where(
22
+ [data-control-family="field"][data-slot="root"][data-control="true"]:is(button, a):hover:not(
23
+ :disabled,
24
+ [data-disabled],
25
+ [aria-disabled="true"]
26
+ )
27
+ ) {
28
+ color: var(--foreground);
29
+ }
9
30
  }
10
31
 
11
32
  :where([data-control-family="field"][data-field-kind="input-group"][data-slot="input"]),
12
- :where([data-control-family="field"][data-field-kind="phone-input"][data-slot="input"]),
13
33
  :where([data-control-family="field"][data-field-kind="number-field"][data-slot="input"]) {
14
- outline: none;
15
34
  background: transparent;
16
35
  color: var(--foreground);
17
36
  }
18
37
 
19
38
  :where([data-control-family="field"][data-field-kind="input-group"][data-slot="input"])::placeholder,
20
- :where([data-control-family="field"][data-field-kind="phone-input"][data-slot="input"])::placeholder,
21
39
  :where([data-control-family="field"][data-field-kind="number-field"][data-slot="input"])::placeholder {
22
40
  color: var(--muted-foreground);
23
41
  }
@@ -25,14 +43,17 @@
25
43
  :where([data-control-family="field"][data-field-kind="combobox"][data-slot="trigger"]),
26
44
  :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]) {
27
45
  border-radius: var(--radius-control);
28
- outline: none;
29
46
  }
30
47
 
31
48
  @media (hover: hover) {
32
- :where([data-control-family="field"][data-field-kind="combobox"][data-slot="trigger"]:hover),
33
- :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]:hover),
34
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]:hover),
35
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]:hover) {
49
+ :where([data-control-family="field"][data-field-kind="combobox"][data-slot="trigger"]:hover:not(:disabled, [data-disabled])),
50
+ :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]:hover:not(:disabled, [data-disabled])),
51
+ :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]:hover:not(:disabled, [data-disabled])) {
52
+ background-color: var(--cui-field-affordance-hover-background);
53
+ color: var(--foreground);
54
+ }
55
+
56
+ :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]:hover:not(:disabled, [data-disabled])) {
36
57
  background: var(--hover-fill);
37
58
  color: var(--foreground);
38
59
  }
@@ -41,7 +62,7 @@
41
62
  :where([data-control-family="field"][data-field-kind="combobox"][data-slot="trigger"]:disabled),
42
63
  :where([data-control-family="field"][data-field-kind="autocomplete"][data-slot="clear"]:disabled) {
43
64
  cursor: not-allowed;
44
- opacity: 0.45;
65
+ opacity: var(--disabled-opacity);
45
66
  }
46
67
 
47
68
  :where([data-control-family="field"][data-field-kind="combobox"][data-slot="icon"]) {
@@ -65,13 +86,8 @@
65
86
  border-inline-start: 1px solid var(--border);
66
87
  }
67
88
 
68
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]),
69
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]) {
70
- outline: none;
71
- }
72
-
73
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]:active),
74
- :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]:active) {
89
+ :where([data-control-family="field"][data-field-kind="number-field"][data-slot="decrement"]:active:not(:disabled, [data-disabled])),
90
+ :where([data-control-family="field"][data-field-kind="number-field"][data-slot="increment"]:active:not(:disabled, [data-disabled])) {
75
91
  background: oklch(from var(--foreground) l c h / 0.06);
76
92
  }
77
93
 
@@ -80,6 +96,58 @@
80
96
  color: oklch(from var(--muted-foreground) l c h / 0.5);
81
97
  }
82
98
 
99
+ :where(
100
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="group"]
101
+ > [data-control-family="field"][data-field-kind="number-field"][data-slot="scrub-area"]
102
+ ) {
103
+ padding-inline: calc(var(--spacing) * 2);
104
+ color: var(--muted-foreground);
105
+ }
106
+
107
+ :where(
108
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="input"]:has(
109
+ + [data-control-family="field"][data-field-kind="number-field"][data-slot="scrub-area"]
110
+ )
111
+ ) {
112
+ padding-inline-end: 0;
113
+ text-align: end;
114
+ }
115
+
116
+ :where(
117
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="scrub-area"]
118
+ + [data-control-family="field"][data-field-kind="number-field"][data-slot="input"]
119
+ ) {
120
+ padding-inline-start: 0;
121
+ text-align: start;
122
+ }
123
+
124
+ @media (hover: hover) {
125
+ :where(
126
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="group"]
127
+ > [data-control-family="field"][data-field-kind="number-field"][data-slot="scrub-area"]:hover
128
+ ) {
129
+ color: var(--foreground);
130
+ }
131
+ }
132
+
133
+ :where(
134
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="group"]:not([data-control])
135
+ > [data-control-family="field"][data-field-kind="number-field"][data-slot="input"]
136
+ ) {
137
+ inline-size: 6ch;
138
+ }
139
+
140
+ @supports (field-sizing: content) {
141
+ :where(
142
+ [data-control-family="field"][data-field-kind="number-field"][data-slot="group"]:not([data-control])
143
+ > [data-control-family="field"][data-field-kind="number-field"][data-slot="input"]
144
+ ) {
145
+ inline-size: auto;
146
+ min-inline-size: 2ch;
147
+ field-sizing: content;
148
+ }
149
+ }
150
+
83
151
  :where([data-control-family="field"][data-field-kind="number-field"][data-slot="scrub-cursor"]) {
84
152
  color: var(--foreground);
85
153
  filter: drop-shadow(0 1px 1px oklch(0 0 0 / 0.05));
@@ -110,7 +178,7 @@
110
178
  }
111
179
 
112
180
  :where([data-control-family="field"][data-field-kind="field"][data-slot="label"][data-disabled]) {
113
- opacity: 0.5;
181
+ opacity: var(--disabled-opacity);
114
182
  }
115
183
 
116
184
  :where([data-control-family="field"][data-field-kind="field"][data-slot="description"]) {
@@ -2,19 +2,23 @@
2
2
  :where([data-control-family="field"][data-control="true"]) {
3
3
  gap: calc(var(--spacing) * 1.5);
4
4
  --cui-field-radius: var(--radius-control);
5
- --cui-field-background: oklch(from var(--card) l c h / 0.72);
5
+ --cui-field-background: var(--control-fill);
6
+ --cui-field-hover-background: var(--hover-fill);
7
+ --cui-field-affordance-background: transparent;
8
+ --cui-field-affordance-shadow: 0 0 transparent;
9
+ --cui-field-affordance-foreground: var(--muted-foreground);
10
+ --cui-field-affordance-hover-background: var(--hover-fill);
6
11
  --cui-field-foreground: var(--foreground);
7
12
  --cui-field-border-color: var(--control-rim);
8
13
  --cui-field-border-width: var(--control-rim-width);
9
14
  --cui-field-shadow: var(--shadow-inset);
10
15
  --cui-field-backdrop-filter: blur(0px);
11
- --cui-field-focus-border-color: var(--border);
16
+ --focus-ring-offset: calc(var(--focus-ring-width) * -1);
12
17
  --cui-field-height: var(--control-h-md);
13
18
  --cui-field-padding-inline: var(--padding-x);
14
19
  --cui-field-font-size: var(--text-body);
15
20
  border: var(--cui-field-border-width) solid var(--cui-field-border-color);
16
- border-radius: var(--cui-field-radius);
17
- outline: none;
21
+ border-radius: var(--nest-radius, var(--cui-field-radius));
18
22
  background: var(--cui-field-background);
19
23
  box-shadow: var(--cui-field-shadow);
20
24
  color: var(--cui-field-foreground);
@@ -58,17 +62,36 @@
58
62
  color: var(--muted-foreground);
59
63
  }
60
64
 
65
+ :where(input[type="search"][data-control-family="field"])::-webkit-search-cancel-button,
66
+ :where([data-control-family="field"] input[type="search"])::-webkit-search-cancel-button {
67
+ appearance: none;
68
+ }
69
+
61
70
  @media (hover: hover) {
62
- :where([data-control-family="field"][data-control="true"][data-field-kind="autocomplete"]:hover),
63
- :where([data-control-family="field"][data-control="true"][data-field-kind="combobox"]:hover),
64
- :where([data-control-family="field"][data-control="true"][data-field-kind="native-select"]:hover),
65
- :where([data-control-family="field"][data-control="true"][data-field-kind="number-field"]:hover) {
66
- background: var(--hover-fill);
71
+ :where(
72
+ [data-control-family="field"][data-control="true"]:is(
73
+ [data-field-kind="autocomplete"],
74
+ [data-field-kind="combobox"],
75
+ [data-field-kind="native-select"],
76
+ [data-field-kind="select"],
77
+ [data-field-kind="number-field"]
78
+ ):hover:not(:disabled, [data-disabled], [aria-disabled="true"])
79
+ ) {
80
+ background: var(--cui-field-hover-background);
67
81
  }
68
- }
69
82
 
70
- :where([data-control-family="field"][data-control="true"]:is(:focus-visible, :focus-within)) {
71
- border-color: var(--cui-field-focus-border-color);
83
+ :where(
84
+ [data-control-family="field"][data-control="true"]:hover:has(
85
+ [data-control-family="field"]:is(
86
+ [data-slot="increment"],
87
+ [data-slot="decrement"],
88
+ [data-slot="trigger"],
89
+ [data-slot="clear"]
90
+ ):hover
91
+ )
92
+ ) {
93
+ background: var(--cui-field-background);
94
+ }
72
95
  }
73
96
 
74
97
  :where([data-control-family="field"][data-control="true"][data-invalid]),
@@ -81,7 +104,11 @@
81
104
  :where([data-control-family="field"][data-control="true"]:disabled),
82
105
  :where([data-control-family="field"][data-control="true"][data-disabled]) {
83
106
  cursor: not-allowed;
84
- opacity: 0.5;
107
+ opacity: var(--disabled-opacity);
108
+ }
109
+ :where([data-control-family="field"][data-field-kind="select"][data-slot="trigger"]) {
110
+ cursor: pointer;
111
+ font-weight: var(--font-weight-medium);
85
112
  }
86
113
 
87
114
  :where([data-control-family="field"][data-field-kind="input-otp"][data-slot="slot"]) {
@@ -102,8 +129,20 @@
102
129
  appearance: none;
103
130
  }
104
131
 
132
+ :where(div[data-control-family="field"][data-field-kind="native-select"]),
133
+ :where([data-control-family="field"][data-field-kind="combobox"][data-slot="input-group"]) {
134
+ --cui-field-affordance-background: transparent;
135
+ --cui-field-affordance-shadow: 0 0 transparent;
136
+ --cui-field-affordance-hover-background: var(--hover-fill);
137
+ --cui-field-affordance-foreground: var(--muted-foreground);
138
+ --cui-field-font-size: var(--text-body);
139
+ }
140
+
105
141
  :where([data-control-family="field"][data-field-kind="native-select"][data-slot="icon"]) {
106
- right: calc(var(--padding-x) * 0.6);
142
+ inset-inline-end: calc(var(--padding-x) * 0.6);
143
+ background-color: var(--cui-field-affordance-background);
144
+ box-shadow: var(--cui-field-affordance-shadow);
145
+ color: var(--cui-field-affordance-foreground);
107
146
  }
108
147
 
109
148
  :where([data-control-family="field"][data-field-kind="number-field"][data-slot="drag-icon"]) {
@@ -169,13 +208,9 @@
169
208
  padding-inline: calc(var(--spacing) * 2);
170
209
  }
171
210
 
172
- :where([data-control-family="field"][data-field-kind="phone-input"][data-slot="input"]) {
173
- padding-inline: calc(var(--spacing) * 3);
174
- }
175
-
176
211
  @media (pointer: coarse) {
177
- :where([data-control-family="field"]:is(input, textarea)) {
178
- font-size: max(16px, var(--cui-field-font-size));
212
+ :where([data-control-family="field"]:is(input, textarea, select)) {
213
+ font-size: max(var(--text-input-min), var(--cui-field-font-size));
179
214
  }
180
215
  }
181
216
  }
@@ -191,6 +226,34 @@
191
226
  inherits: true;
192
227
  }
193
228
 
229
+ @property --cui-field-hover-background {
230
+ syntax: "*";
231
+ inherits: true;
232
+ }
233
+
234
+ @property --cui-field-affordance-background {
235
+ syntax: "<color>";
236
+ inherits: true;
237
+ initial-value: transparent;
238
+ }
239
+
240
+ @property --cui-field-affordance-shadow {
241
+ syntax: "*";
242
+ inherits: true;
243
+ }
244
+
245
+ @property --cui-field-affordance-foreground {
246
+ syntax: "<color>";
247
+ inherits: true;
248
+ initial-value: currentcolor;
249
+ }
250
+
251
+ @property --cui-field-affordance-hover-background {
252
+ syntax: "<color>";
253
+ inherits: true;
254
+ initial-value: transparent;
255
+ }
256
+
194
257
  @property --cui-field-foreground {
195
258
  syntax: "<color>";
196
259
  inherits: true;
@@ -219,12 +282,6 @@
219
282
  inherits: true;
220
283
  }
221
284
 
222
- @property --cui-field-focus-border-color {
223
- syntax: "<color>";
224
- inherits: true;
225
- initial-value: transparent;
226
- }
227
-
228
285
  @property --cui-field-height {
229
286
  syntax: "<length-percentage>";
230
287
  inherits: true;
@@ -0,0 +1,161 @@
1
+ @layer components {
2
+ :where([data-control-family="filter-bar"][data-slot="root"]) {
3
+ --cui-filter-bar-background: var(--control-fill);
4
+ --cui-filter-bar-foreground: var(--foreground);
5
+ --cui-filter-bar-border-color: var(--control-rim);
6
+ --cui-filter-bar-border-width: var(--control-rim-width);
7
+ --cui-filter-bar-radius: var(--radius-control);
8
+ --cui-filter-bar-height: var(--control-h-sm);
9
+ --cui-filter-bar-gap: calc(var(--spacing) * 1.5);
10
+ --cui-filter-bar-padding-inline: calc(var(--spacing) * 2);
11
+ --cui-filter-bar-font-size: var(--text-label);
12
+ --cui-filter-bar-hover-background: var(--hover-fill);
13
+ --filter-bar-inline-sign: 1;
14
+ gap: var(--cui-filter-bar-gap);
15
+ border: 0;
16
+ padding: 0;
17
+ margin: 0;
18
+ }
19
+
20
+ :where([data-control-family="filter-bar"][data-slot="root"]:dir(rtl)) {
21
+ --filter-bar-inline-sign: -1;
22
+ }
23
+
24
+ :where([data-control-family="filter-bar"][data-slot="chip"]) {
25
+ border: var(--cui-filter-bar-border-width) solid var(--cui-filter-bar-border-color);
26
+ border-radius: var(--cui-filter-bar-radius);
27
+ background: var(--cui-filter-bar-background);
28
+ color: var(--cui-filter-bar-foreground);
29
+ block-size: var(--cui-filter-bar-height);
30
+ font-size: var(--cui-filter-bar-font-size);
31
+ }
32
+
33
+ :where([data-control-family="filter-bar"]:is([data-slot="segment"], [data-slot="remove"])) {
34
+ display: inline-flex;
35
+ align-items: center;
36
+ min-inline-size: 0;
37
+ max-inline-size: 16rem;
38
+ padding-inline: var(--cui-filter-bar-padding-inline);
39
+ border: 0;
40
+ border-radius: 0;
41
+ background: transparent;
42
+ color: inherit;
43
+ font-size: inherit;
44
+ gap: calc(var(--spacing) * 1.5);
45
+ --focus-ring-offset: calc(var(--focus-ring-width) * -1);
46
+ }
47
+
48
+ :where([data-control-family="filter-bar"][data-slot="chip"] > :not(:first-child)) {
49
+ border-inline-start: var(--cui-filter-bar-border-width) solid var(--cui-filter-bar-border-color);
50
+ }
51
+
52
+ @media (hover: hover) {
53
+ :where(
54
+ [data-control-family="filter-bar"]:is([data-slot="segment"], [data-slot="remove"]):not(
55
+ :disabled,
56
+ [data-disabled],
57
+ [aria-disabled="true"]
58
+ ):hover
59
+ ) {
60
+ background: var(--cui-filter-bar-hover-background);
61
+ }
62
+ }
63
+
64
+ :where([data-control-family="filter-bar"][data-draft] [data-slot="segment"]) {
65
+ opacity: 1;
66
+ animation: cui-filter-segment-enter var(--duration-fast) var(--ease-emphasized);
67
+ }
68
+
69
+ :where([data-control-family="filter-bar"][data-slot="exit"]) {
70
+ pointer-events: none;
71
+ transform-origin: calc(50% - 50% * var(--filter-bar-inline-sign)) center;
72
+ animation: cui-filter-chip-exit var(--duration-fast) var(--ease-standard) forwards;
73
+ }
74
+
75
+ :where([data-control-family="filter-bar"][data-slot="exit"] [data-slot="chip"]) {
76
+ block-size: 100%;
77
+ }
78
+
79
+ :where([data-control-family="filter-bar"][data-disabled]) {
80
+ opacity: var(--disabled-opacity);
81
+ }
82
+ }
83
+
84
+ @keyframes cui-filter-segment-enter {
85
+ from {
86
+ opacity: 0;
87
+ translate: calc(-4px * var(--filter-bar-inline-sign)) 0;
88
+ }
89
+ to {
90
+ opacity: 1;
91
+ translate: 0 0;
92
+ }
93
+ }
94
+
95
+ @keyframes cui-filter-chip-exit {
96
+ to {
97
+ opacity: 0;
98
+ translate: calc(-4px * var(--filter-bar-inline-sign)) 0;
99
+ scale: 0.97;
100
+ }
101
+ }
102
+
103
+ @property --cui-filter-bar-background {
104
+ syntax: "<color>";
105
+ inherits: true;
106
+ initial-value: transparent;
107
+ }
108
+
109
+ @property --cui-filter-bar-foreground {
110
+ syntax: "<color>";
111
+ inherits: true;
112
+ initial-value: transparent;
113
+ }
114
+
115
+ @property --cui-filter-bar-border-color {
116
+ syntax: "<color>";
117
+ inherits: true;
118
+ initial-value: transparent;
119
+ }
120
+
121
+ @property --cui-filter-bar-border-width {
122
+ syntax: "<length>";
123
+ inherits: true;
124
+ initial-value: 0px;
125
+ }
126
+
127
+ @property --cui-filter-bar-radius {
128
+ syntax: "<length>";
129
+ inherits: true;
130
+ initial-value: 0px;
131
+ }
132
+
133
+ @property --cui-filter-bar-height {
134
+ syntax: "<length>";
135
+ inherits: true;
136
+ initial-value: 0px;
137
+ }
138
+
139
+ @property --cui-filter-bar-gap {
140
+ syntax: "<length>";
141
+ inherits: true;
142
+ initial-value: 0px;
143
+ }
144
+
145
+ @property --cui-filter-bar-padding-inline {
146
+ syntax: "<length>";
147
+ inherits: true;
148
+ initial-value: 0px;
149
+ }
150
+
151
+ @property --cui-filter-bar-font-size {
152
+ syntax: "<length>";
153
+ inherits: true;
154
+ initial-value: 0px;
155
+ }
156
+
157
+ @property --cui-filter-bar-hover-background {
158
+ syntax: "<color>";
159
+ inherits: true;
160
+ initial-value: transparent;
161
+ }
@@ -6,7 +6,7 @@
6
6
  :where([data-control-family="gradient-editor"][data-slot="root"]) {
7
7
  gap: calc(var(--spacing) * 3);
8
8
  --cui-gradient-editor-add-border-color: var(--border);
9
- --cui-gradient-editor-add-border-width: 1px;
9
+ --cui-gradient-editor-add-border-width: var(--control-rim-width);
10
10
  --cui-gradient-editor-add-radius: 9999px;
11
11
  --cui-gradient-editor-preview-radius: var(--radius-field);
12
12
  --cui-gradient-editor-preview-ring-color: oklch(from var(--border) l c h / 0.6);
@@ -37,7 +37,6 @@
37
37
  border: var(--cui-gradient-editor-stop-border-width) solid var(--cui-gradient-editor-stop-border-color);
38
38
  border-radius: var(--cui-gradient-editor-stop-radius);
39
39
  box-shadow: var(--cui-gradient-editor-stop-shadow);
40
- outline: none;
41
40
  transition: scale var(--duration-fast) var(--ease-standard);
42
41
  }
43
42
 
@@ -47,11 +46,10 @@
47
46
  border: var(--cui-gradient-editor-add-border-width) dashed var(--cui-gradient-editor-add-border-color);
48
47
  border-radius: var(--cui-gradient-editor-add-radius);
49
48
  color: var(--muted-foreground);
50
- outline: none;
51
49
  }
52
50
 
53
51
  @media (hover: hover) {
54
- :where([data-control-family="gradient-editor"][data-slot="stop-add"]:hover) {
52
+ :where([data-control-family="gradient-editor"][data-slot="stop-add"]:hover:not(:disabled)) {
55
53
  border-color: oklch(from var(--foreground) l c h / 0.4);
56
54
  color: var(--foreground);
57
55
  }
@@ -61,6 +59,15 @@
61
59
  scale: 115% 115%;
62
60
  }
63
61
 
62
+ :where([data-control-family="gradient-editor"][data-slot="stop"])::after {
63
+ content: "";
64
+ position: absolute;
65
+ inset: 50%;
66
+ translate: -50% -50%;
67
+ inline-size: max(100%, var(--target-min));
68
+ block-size: max(100%, var(--target-min));
69
+ }
70
+
64
71
  @media (pointer: coarse) {
65
72
  :where([data-control-family="gradient-editor"][data-slot="stop-add"]) {
66
73
  position: relative;
@@ -69,10 +76,14 @@
69
76
  :where([data-control-family="gradient-editor"][data-slot="stop-add"])::after {
70
77
  content: "";
71
78
  position: absolute;
72
- inset: 50% 50%;
79
+ inset: 50%;
73
80
  translate: -50% -50%;
74
- inline-size: max(100%, 44px);
75
- block-size: max(100%, 44px);
81
+ inline-size: max(100%, var(--touch-target));
82
+ block-size: max(100%, var(--touch-target));
83
+ }
84
+
85
+ :where([data-control-family="gradient-editor"][data-slot="stop"])::after {
86
+ block-size: max(100%, var(--touch-target));
76
87
  }
77
88
  }
78
89
  }
@@ -1,10 +1,25 @@
1
1
  @layer components {
2
2
  :where([data-control-family="infinite-canvas"][data-slot="root"]) {
3
- --cui-infinite-canvas-radius: var(--radius-panel);
4
3
  --cui-infinite-canvas-background: var(--canvas);
5
4
  --cui-infinite-canvas-grid-dot-color: oklch(from var(--foreground) l c h / 0.16);
6
5
  --cui-infinite-canvas-border-color: var(--border);
7
- --cui-infinite-canvas-controls-radius: var(--radius-control);
6
+ --cui-infinite-canvas-controls-item-radius: min(var(--radius-sm), calc(var(--control-h-sm) / 2));
7
+ --cui-infinite-canvas-controls-padding: calc(var(--spacing) * 1);
8
+ --cui-infinite-canvas-controls-radius: calc(
9
+ var(--cui-infinite-canvas-controls-item-radius) +
10
+ clamp(0px, calc(var(--cui-infinite-canvas-controls-item-radius) * 1000), var(--cui-infinite-canvas-controls-padding))
11
+ );
12
+ --cui-infinite-canvas-radius: max(
13
+ var(--radius-panel),
14
+ calc(
15
+ var(--cui-infinite-canvas-controls-radius) +
16
+ clamp(0px, calc(var(--cui-infinite-canvas-controls-radius) * 1000), var(--spacing) * 2)
17
+ )
18
+ );
19
+ --cui-infinite-canvas-padding: max(
20
+ calc(var(--spacing) * 2),
21
+ calc(var(--cui-infinite-canvas-radius) - var(--cui-infinite-canvas-controls-radius))
22
+ );
8
23
  --cui-infinite-canvas-controls-background: var(--card);
9
24
  --cui-infinite-canvas-controls-border-color: var(--border);
10
25
  --cui-infinite-canvas-controls-shadow: var(--shadow-sm);
@@ -12,12 +27,26 @@
12
27
  background-color: var(--cui-infinite-canvas-background);
13
28
  background-image: radial-gradient(circle at center, var(--cui-infinite-canvas-grid-dot-color) 1px, transparent 1px);
14
29
  box-shadow: 0 0 0 1px var(--cui-infinite-canvas-border-color);
15
- outline-style: none;
30
+ }
31
+
32
+ :where([data-control-family="infinite-canvas"][data-slot="root"][data-easing]) {
33
+ transition-property: background-position, background-size;
34
+ transition-duration: var(--duration-base);
35
+ transition-timing-function: var(--ease-standard);
36
+ }
37
+
38
+ :where(
39
+ [data-control-family="infinite-canvas"][data-slot="root"][data-easing] [data-control-family="infinite-canvas"][data-slot="content"]
40
+ ) {
41
+ transition: transform var(--duration-base) var(--ease-standard);
16
42
  }
17
43
 
18
44
  :where([data-control-family="infinite-canvas"][data-slot="controls"]) {
45
+ --nest-radius: var(--cui-infinite-canvas-controls-item-radius);
46
+ inset-inline-end: var(--cui-infinite-canvas-padding);
47
+ inset-block-end: var(--cui-infinite-canvas-padding);
19
48
  gap: calc(var(--spacing) * 0.5);
20
- padding: calc(var(--spacing) * 1);
49
+ padding: var(--cui-infinite-canvas-controls-padding);
21
50
  border-radius: var(--cui-infinite-canvas-controls-radius);
22
51
  background-color: var(--cui-infinite-canvas-controls-background);
23
52
  box-shadow:
@@ -54,6 +83,24 @@
54
83
  initial-value: transparent;
55
84
  }
56
85
 
86
+ @property --cui-infinite-canvas-padding {
87
+ syntax: "<length-percentage>";
88
+ inherits: true;
89
+ initial-value: 0px;
90
+ }
91
+
92
+ @property --cui-infinite-canvas-controls-item-radius {
93
+ syntax: "<length-percentage>";
94
+ inherits: true;
95
+ initial-value: 0px;
96
+ }
97
+
98
+ @property --cui-infinite-canvas-controls-padding {
99
+ syntax: "<length-percentage>";
100
+ inherits: true;
101
+ initial-value: 0px;
102
+ }
103
+
57
104
  @property --cui-infinite-canvas-controls-radius {
58
105
  syntax: "<length-percentage>";
59
106
  inherits: true;
@@ -3,9 +3,13 @@
3
3
  --cui-inline-attachment-background: var(--card);
4
4
  --cui-inline-attachment-hover-shadow: var(--shadow-md);
5
5
  --cui-inline-attachment-padding: calc(var(--spacing) * 3);
6
- --cui-inline-attachment-radius: var(--radius-field);
6
+ --_inline-attachment-content-line-height: calc(var(--spacing) * 4);
7
+ --cui-inline-attachment-radius: min(
8
+ var(--radius-field),
9
+ calc(var(--cui-inline-attachment-padding) + var(--_inline-attachment-content-line-height) / 2 + var(--spacing))
10
+ );
7
11
  --cui-inline-attachment-ring-color: var(--border);
8
- --cui-inline-attachment-image-outline-color: oklch(from var(--foreground) l c h / 0.1);
12
+ --cui-inline-attachment-image-outline-color: var(--image-outline);
9
13
  --cui-inline-attachment-shadow: var(--shadow-sm);
10
14
  --cui-inline-attachment-content-background: oklch(from var(--background) l c h / 0.85);
11
15
  --cui-inline-attachment-content-foreground: var(--foreground);
@@ -22,7 +26,7 @@
22
26
  box-shadow:
23
27
  inset 0 0 0 var(--control-rim-width) var(--cui-inline-attachment-ring-color),
24
28
  var(--cui-inline-attachment-shadow);
25
- text-align: left;
29
+ text-align: start;
26
30
  transition-property: box-shadow;
27
31
  transition-duration: var(--duration-fast);
28
32
  transition-timing-function: var(--ease-standard);
@@ -41,7 +45,7 @@
41
45
  var(--cui-inline-attachment-hover-shadow);
42
46
  }
43
47
 
44
- :where([data-control-family="inline-attachment"][data-slot="root"]:disabled:hover) {
48
+ :where([data-control-family="inline-attachment"][data-slot="root"]:is(:disabled, [aria-disabled="true"]):hover) {
45
49
  box-shadow:
46
50
  inset 0 0 0 var(--control-rim-width) var(--cui-inline-attachment-ring-color),
47
51
  var(--cui-inline-attachment-shadow);
@@ -126,6 +130,7 @@
126
130
  box-shadow: var(--cui-inline-attachment-content-shadow);
127
131
  backdrop-filter: blur(var(--backdrop-blur-popover));
128
132
  font-size: var(--text-caption);
133
+ line-height: var(--_inline-attachment-content-line-height);
129
134
  font-weight: var(--font-weight-medium);
130
135
  }
131
136