@revolist/ui 4.0.5-rc → 4.0.5

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 (356) hide show
  1. package/MIGRATION.md +36 -0
  2. package/OWNERSHIP.md +36 -36
  3. package/README.md +65 -408
  4. package/_button.scss +6 -2
  5. package/_chunks/{calendar-DsXIhybL.js → calendar-BQYQLu8Q.js} +5 -5
  6. package/_chunks/{cell-visuals-E-2oEKHg.js → cell-visuals-r6DOOhGh.js} +7 -7
  7. package/_chunks/{chart-frame-CuZABXVI.js → chart-frame-GprenwEg.js} +17 -13
  8. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  9. package/_chunks/{choice-chips-BhP8MZjs.js → choice-chips-C5OxD0GV.js} +3 -3
  10. package/_chunks/{color-palette-DMJUChWC.js → color-palette-7siNch__.js} +3 -3
  11. package/_chunks/{color-picker-B4TQvxxB.js → color-picker-Cfc9eqZb.js} +4 -4
  12. package/_chunks/{component-qKctqdzk.js → component-C3k_8uIq.js} +44 -45
  13. package/_chunks/{component-metadata-BMOOmqx5.js → component-metadata-DlVkpW3h.js} +1 -9
  14. package/_chunks/{configurator-actions-C19O1rda.js → configurator-actions-vRnI54mO.js} +3 -3
  15. package/_chunks/{control-BkWukVt9.js → control-BRfF5DWQ.js} +32 -7
  16. package/_chunks/{controller-hRBm_Lfz.js → controller-BbiQuRt-.js} +5 -5
  17. package/_chunks/{controls-BLQnWEd7.js → controls-B3EgM_DS.js} +160 -132
  18. package/_chunks/{date-control-Cgw5PwlZ.js → date-control-87dcA5br.js} +5 -5
  19. package/_chunks/{date-time-B8rK5gpC.js → date-time-CfiFYodx.js} +316 -293
  20. package/_chunks/{delete-button-CW9vjLnk.js → delete-button-jneO24wa.js} +1 -1
  21. package/_chunks/dialog.parts-NqEEVc9P.js +131 -0
  22. package/_chunks/{duration-DwFXonEV.js → duration-BGZ_qJ99.js} +10 -7
  23. package/_chunks/{editor-commit-Bq3wSgvr.js → editor-commit-Dyo-FMgD.js} +1 -1
  24. package/_chunks/{editor-popup-BaaxL89T.js → editor-popup-NNP9Fh9U.js} +12 -11
  25. package/_chunks/field-configurator-DPulsY3l.js +288 -0
  26. package/_chunks/{field-context-D57PnBbH.js → field-context-C4_WrO2z.js} +1 -1
  27. package/_chunks/{framework-mount--RTLIqE-.js → framework-mount-D4I8HpVp.js} +2 -2
  28. package/_chunks/{icon-toolbar-xbqa0hu9.js → icon-toolbar-BAAdEvr9.js} +41 -35
  29. package/_chunks/{icons-Ci5mADVc.js → icons-B4qN13Yj.js} +1 -1
  30. package/_chunks/{iso-B0YHBK7m.js → iso-CJQl2kmq.js} +1 -1
  31. package/_chunks/{model-mPO2tG2f.js → model-CFrBgRHm.js} +3 -3
  32. package/_chunks/mount-C8CnIW9k.js +267 -0
  33. package/_chunks/{native.view-ByyZ1CT5.js → native-CJm3eq3-.js} +1 -1
  34. package/_chunks/{native-control-DO0d1kgx.js → native-control-um1L1wgZ.js} +124 -111
  35. package/_chunks/{number-input-s9ddPwX6.js → number-input-CKiA4d1N.js} +4 -4
  36. package/_chunks/{picker-AY05b41W.js → picker-igNshTRC.js} +5 -5
  37. package/_chunks/{popup-UXGCiv3n.js → popup-DECYM9FI.js} +21 -10
  38. package/_chunks/{rating-choice-BEs_QFZC.js → rating-choice-CepVfGUq.js} +2 -2
  39. package/_chunks/{render-m5eMMwFR.js → render-bTk3curw.js} +2 -2
  40. package/_chunks/{reorder-list-A49l172e.js → reorder-list-B4w3aARt.js} +2 -2
  41. package/_chunks/{request-trail-DCOfa5zw.js → request-trail-B1zVRPEf.js} +151 -142
  42. package/_chunks/{rich-text-xfMWadGi.js → rich-text-Ci4d6dHn.js} +11 -11
  43. package/_chunks/selection-list-tooltips-m00U3L6z.js +42 -0
  44. package/_chunks/{title-tooltip-Cw6LOZhb.js → title-tooltip-ncldbUwS.js} +2 -2
  45. package/_chunks/{tooltip-D4xkio5G.js → tooltip-h-Z8yFBY.js} +2 -2
  46. package/_chunks/{tooltip-owner-DjdvqKzz.js → tooltip-owner-BYho-vJl.js} +1 -1
  47. package/_chunks/{tooltip-session-B6X6x8G_.js → tooltip-session-CBtRMBPr.js} +3 -3
  48. package/_chunks/{tooltip-text-BXsUEmBH.js → tooltip-text-BN5WdGHn.js} +2 -2
  49. package/_chunks/{top-layer-popup-CNSDdfJV.js → top-layer-popup-CKJ7VJOF.js} +3 -3
  50. package/_dialog.scss +57 -22
  51. package/_form.scss +71 -21
  52. package/_legend.scss +25 -7
  53. package/_variables.scss +34 -32
  54. package/_view-switcher.scss +6 -0
  55. package/activity-message.d.ts +1 -1
  56. package/activity-message.js +1 -1
  57. package/ai/_chat.scss +7 -0
  58. package/ai/_style.scss +27 -20
  59. package/ai/components.d.ts +3 -1
  60. package/ai/index.js +2 -2
  61. package/ai/mount.d.ts +15 -7
  62. package/ai/request-trail.d.ts +9 -3
  63. package/ai/results/_style.scss +3 -0
  64. package/ai/results/index.d.ts +1 -1
  65. package/ai/translations.d.ts +1 -1
  66. package/angular/angular.d.ts +1 -1
  67. package/angular/angular.js +13 -7
  68. package/assignee/assignee.scss +28 -6
  69. package/assignee/index.js +6 -6
  70. package/avatar/avatar.style.scss +23 -6
  71. package/avatar/index.d.ts +25 -2
  72. package/avatar/index.js +2 -2
  73. package/badge.d.ts +1 -1
  74. package/badge.js +1 -1
  75. package/badge.view.d.ts +1 -1
  76. package/brush-range/_brush-range.scss +55 -49
  77. package/brush-range/component.d.ts +1 -3
  78. package/brush-range/component.js +10 -11
  79. package/buttons/delete-button.js +1 -1
  80. package/buttons/delete-button.style.scss +6 -2
  81. package/buttons/remove-button.d.ts +1 -1
  82. package/buttons/remove-button.js +2 -2
  83. package/buttons/remove-button.style.scss +1 -1
  84. package/buttons/svg-button.js +3 -3
  85. package/calendar/_calendar.scss +19 -23
  86. package/calendar/calendar.js +1 -1
  87. package/calendar/day.js +2 -2
  88. package/calendar/header.js +2 -3
  89. package/calendar/index.js +3 -3
  90. package/calendar/model.js +1 -1
  91. package/calendar/month-grid.js +2 -2
  92. package/calendar/translations.js +1 -1
  93. package/calendar/year-grid.js +2 -2
  94. package/cell-input.js +1 -1
  95. package/cell-input.scss +3 -7
  96. package/cell-visuals/badge.style.scss +6 -3
  97. package/cell-visuals/bar-chart.style.scss +2 -1
  98. package/cell-visuals/column-type.style.css +12 -0
  99. package/cell-visuals/index.js +1 -1
  100. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  101. package/cell-visuals/progress-line.style.scss +1 -4
  102. package/cell-visuals/sparkline.style.scss +2 -1
  103. package/cell-visuals/timeline.style.css +4 -2
  104. package/checkbox/checkbox.scss +6 -24
  105. package/checkbox/index.js +1 -1
  106. package/choice-chips/index.js +1 -1
  107. package/color-palette/built-in-palettes.js +1 -1
  108. package/color-palette/chart-palettes.js +1 -1
  109. package/color-palette/color-palette.js +1 -1
  110. package/color-palette/color-palette.style.scss +88 -25
  111. package/color-palette/color-picker.constants.js +1 -1
  112. package/color-palette/color-picker.js +2 -2
  113. package/color-palette/color-picker.style.scss +23 -10
  114. package/color-palette/common-palettes.d.ts +1 -1
  115. package/color-palette/common-palettes.js +2 -2
  116. package/color-palette/gantt-palettes.js +1 -1
  117. package/color-palette/native.d.ts +15 -2
  118. package/color-palette/palette.js +1 -1
  119. package/color-palette/pivot-palettes.js +1 -1
  120. package/color-palette/platform-palettes.js +1 -1
  121. package/color-palette/pro-palettes.js +1 -1
  122. package/color-palette/scheduler-palettes.js +1 -1
  123. package/component-catalog.d.ts +3 -6
  124. package/configurator-actions.d.ts +6 -6
  125. package/configurator-actions.js +1 -1
  126. package/configurator-aggregation-list.d.ts +1 -1
  127. package/configurator-aggregation-list.js +19 -17
  128. package/configurator-drop-zone.d.ts +3 -2
  129. package/configurator-drop-zone.js +34 -32
  130. package/configurator-focus.js +1 -1
  131. package/configurator-sections.d.ts +3 -3
  132. package/configurator-sections.js +1 -1
  133. package/control-attributes.js +1 -1
  134. package/control-presentation.d.ts +8 -2
  135. package/control-presentation.js +2 -2
  136. package/controls.d.ts +11 -0
  137. package/controls.js +4 -4
  138. package/core/anchored-popover.js +1 -1
  139. package/core/control-id.js +1 -1
  140. package/core/editor-popup-position.d.ts +6 -2
  141. package/core/editor-popup.d.ts +4 -0
  142. package/core/editor-popup.js +1 -1
  143. package/core/motion.js +1 -1
  144. package/{_chunks/popover-controller-D-AvKQ7B.js → core/popover-controller.js} +8 -8
  145. package/core/selection-list-tooltips.d.ts +2 -0
  146. package/core/tooltip.d.ts +1 -1
  147. package/core/top-layer-popup.d.ts +1 -1
  148. package/core/top-layer-popup.js +1 -1
  149. package/date-time/attach.d.ts +1 -1
  150. package/date-time/date-control.d.ts +1 -1
  151. package/date-time/field.d.ts +4 -2
  152. package/date-time/index.js +1 -1
  153. package/date-time/style.scss +206 -46
  154. package/date-time/time-selection.d.ts +1 -1
  155. package/date-time/types.d.ts +5 -1
  156. package/dialog/dialog-action-footer.d.ts +17 -2
  157. package/dialog/dialog.dom.d.ts +15 -2
  158. package/dialog/dialog.dom.js +3 -3
  159. package/dialog/dialog.drag.js +1 -1
  160. package/dialog/dialog.parts.d.ts +1 -1
  161. package/dialog/dialog.parts.js +1 -1
  162. package/dialog/dialog.preact.js +1 -1
  163. package/distribution-chart/_distribution-chart.scss +115 -23
  164. package/distribution-chart/area-chart.js +2 -2
  165. package/distribution-chart/bar-chart.js +2 -2
  166. package/distribution-chart/chart-frame.d.ts +1 -1
  167. package/distribution-chart/index.d.ts +1 -1
  168. package/distribution-chart/index.js +1 -1
  169. package/distribution-chart/line-chart.js +2 -2
  170. package/dropdown/content.js +1 -1
  171. package/dropdown/control.js +1 -1
  172. package/dropdown/dropdown.service.js +1 -1
  173. package/dropdown/dropdown.types.d.ts +1 -1
  174. package/dropdown/editor-dropdown.style.scss +19 -9
  175. package/dropdown/index.js +2 -2
  176. package/dropdown/lookup-field.d.ts +5 -0
  177. package/dropdown/lookup-field.js +3 -3
  178. package/dropdown/popup.js +1 -1
  179. package/duration/index.js +1 -1
  180. package/editor-actions.js +2 -2
  181. package/editor-layout/index.d.ts +4 -4
  182. package/editor-layout/index.js +40 -35
  183. package/editor-layout/style.scss +82 -18
  184. package/favicon.svg +9 -0
  185. package/field-configurator.d.ts +22 -3
  186. package/field-configurator.js +1 -1
  187. package/field-reorder.hook.js +1 -1
  188. package/field-reorder.js +1 -1
  189. package/filter/filters/slider/_single-slider.scss +57 -38
  190. package/filter/filters/slider/_slider.scss +41 -16
  191. package/filter/filters/slider/component.js +1 -1
  192. package/filter/filters/slider/control.js +1 -1
  193. package/filter/filters/slider/inputs.js +1 -1
  194. package/filter/filters/slider/logic.js +1 -1
  195. package/filter/filters/slider/preact.js +1 -1
  196. package/filter/filters/slider/runtime.js +3 -3
  197. package/filter/filters/slider/single.js +2 -2
  198. package/filter-badge.js +2 -2
  199. package/filter-controls.d.ts +0 -1
  200. package/filter-controls.js +6 -7
  201. package/form-controls/index.d.ts +10 -2
  202. package/form-controls/index.js +3 -3
  203. package/form-controls/presentation.d.ts +1 -1
  204. package/form-controls/presentation.js +2 -2
  205. package/formatting/index.d.ts +1 -1
  206. package/formatting/index.js +7 -7
  207. package/formatting/styles.scss +13 -11
  208. package/framework.js +201 -205
  209. package/history-controls.js +1 -1
  210. package/html-controls.js +1 -1
  211. package/icon-toolbar.d.ts +6 -2
  212. package/icon-toolbar.js +1 -1
  213. package/icons/icon.d.ts +1 -1
  214. package/icons/icon.js +1 -1
  215. package/legend.d.ts +1 -1
  216. package/legend.js +1 -1
  217. package/masked-input/index.js +4 -4
  218. package/native-control.js +1 -1
  219. package/native-controls.d.ts +54 -2
  220. package/native-styles.css +1 -1
  221. package/native-styles.scss +6 -2
  222. package/native.d.ts +3 -3
  223. package/native.js +35 -35
  224. package/number-input/index.d.ts +1 -1
  225. package/number-input/index.js +1 -1
  226. package/package.json +49 -1
  227. package/pagination.js +12 -12
  228. package/pdf-viewer/controller.js +1 -1
  229. package/pdf-viewer/header.d.ts +1 -1
  230. package/pdf-viewer/index.d.ts +2 -2
  231. package/pdf-viewer/index.js +3 -3
  232. package/pdf-viewer/search-bar.d.ts +1 -1
  233. package/pdf-viewer/status.d.ts +1 -1
  234. package/pdf-viewer/style.scss +203 -42
  235. package/preact-mount.js +1 -1
  236. package/preact.d.ts +6 -10
  237. package/preact.js +108 -70
  238. package/progress/_bar.scss +9 -3
  239. package/progress/_circular.scss +2 -1
  240. package/progress/bar.js +1 -1
  241. package/progress/circular.js +1 -1
  242. package/progress/range.js +1 -1
  243. package/rating-choice.js +1 -1
  244. package/react-adapter.d.ts +4 -2
  245. package/react-control.d.ts +2 -0
  246. package/react-control.js +3 -3
  247. package/react.d.ts +2 -8
  248. package/react.js +55 -56
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-avatar.js +1 -1
  253. package/resource-picker/resource-picker-option.js +1 -1
  254. package/resource-picker/resource-picker-popup.js +2 -2
  255. package/resource-picker/resource-picker.js +74 -72
  256. package/resource-picker/resource-picker.scss +62 -34
  257. package/resource-picker/resource-picker.utils.js +1 -1
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/style.scss +203 -49
  260. package/rich-text/toolbar.d.ts +1 -1
  261. package/robots.txt +4 -0
  262. package/search-input/index.js +2 -2
  263. package/search-input/native.d.ts +21 -2
  264. package/segmented-switch/index.js +1 -1
  265. package/select.js +1 -1
  266. package/selection-list.d.ts +1 -0
  267. package/selection-list.js +3 -1
  268. package/status-feedback/badge.js +2 -2
  269. package/status-feedback/exit-snapshot.js +2 -2
  270. package/status-feedback/header.js +2 -2
  271. package/status-feedback/icons.js +1 -1
  272. package/status-feedback/index.js +1 -1
  273. package/status-feedback/item.js +2 -2
  274. package/status-feedback/motion.js +1 -1
  275. package/status-feedback/placement.js +1 -1
  276. package/status-feedback/popover.js +2 -2
  277. package/status-feedback/render.js +1 -1
  278. package/status-feedback/status-feedback.scss +124 -35
  279. package/styles/_activity-message.scss +24 -7
  280. package/styles/_alert.scss +78 -17
  281. package/styles/_cell-editor-frame.scss +11 -0
  282. package/styles/_compositions.scss +399 -79
  283. package/styles/_control.scss +30 -8
  284. package/styles/_disclosure.scss +15 -5
  285. package/styles/_editor-counter.scss +16 -6
  286. package/styles/_editor-slider.scss +8 -4
  287. package/styles/_field-configurator.scss +194 -42
  288. package/styles/_fields-grid.scss +18 -4
  289. package/styles/_filter-controls.scss +10 -2
  290. package/styles/_icon-action.scss +48 -15
  291. package/styles/_loading.scss +12 -3
  292. package/styles/_motion.scss +32 -9
  293. package/styles/_palette.scss +0 -24
  294. package/styles/_primitives.scss +348 -96
  295. package/styles/_theme.scss +130 -86
  296. package/styles/_thresholds.scss +28 -25
  297. package/styles/_time-grid.scss +8 -3
  298. package/styles/_tokens.scss +6 -1
  299. package/styles/color-roles.js +1 -1
  300. package/styles/configurator-actions.scss +126 -26
  301. package/styles/pagination.css +213 -0
  302. package/styles/{legacy-rating.css → rating.css} +8 -3
  303. package/styles.css +1 -1
  304. package/styles.scss +3 -5
  305. package/surfaces.d.ts +37 -4
  306. package/surfaces.js +8 -8
  307. package/svelte/UiComponent.svelte +44 -11
  308. package/svelte-control.js +1 -1
  309. package/svelte.d.ts +1 -1
  310. package/svelte.js +5 -5
  311. package/switch/index.js +2 -2
  312. package/time-grid.d.ts +0 -1
  313. package/time-grid.js +6 -6
  314. package/timeline-track/_style.scss +96 -24
  315. package/timeline-track/index.js +3 -3
  316. package/timeline-track/model.js +1 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue-badge.js +1 -1
  320. package/vue-control.js +1 -1
  321. package/vue-segmented-switch.js +1 -1
  322. package/vue.d.ts +5 -23
  323. package/vue.js +84 -91
  324. package/_chunks/badge.view-D30pMUfi.js +0 -14
  325. package/_chunks/chevron-right-sxHQMSkq.js +0 -4
  326. package/_chunks/dialog.parts-BSbvnEwX.js +0 -134
  327. package/_chunks/field-configurator-1eQP0tKy.js +0 -223
  328. package/_chunks/mount-D1i5DLRn.js +0 -266
  329. package/_shared/data-query/binding.d.ts +0 -30
  330. package/_shared/data-query/blocks.d.ts +0 -30
  331. package/_shared/data-query/commands.d.ts +0 -47
  332. package/_shared/data-query/contracts.d.ts +0 -106
  333. package/_shared/data-query/cursor-reader.d.ts +0 -25
  334. package/_shared/data-query/direct-binding.d.ts +0 -3
  335. package/_shared/data-query/index.d.ts +0 -23
  336. package/_shared/data-query/infinite-binding.d.ts +0 -18
  337. package/_shared/data-query/keys.d.ts +0 -9
  338. package/_shared/data-query/limiter.d.ts +0 -12
  339. package/_shared/data-query/load-options.d.ts +0 -25
  340. package/_shared/data-query/materialize.d.ts +0 -2
  341. package/_shared/data-query/policy.d.ts +0 -14
  342. package/_shared/data-query/provider-queries.d.ts +0 -22
  343. package/_shared/data-query/reader.d.ts +0 -23
  344. package/_shared/data-query/remote-load.d.ts +0 -7
  345. package/_shared/data-query/source.d.ts +0 -40
  346. package/avatar/index.view.d.ts +0 -25
  347. package/color-palette/native.view.d.ts +0 -15
  348. package/control-presentation.view.d.ts +0 -8
  349. package/dialog/dialog-action-footer.view.d.ts +0 -20
  350. package/dialog/dialog.dom.view.d.ts +0 -15
  351. package/form-controls/index.view.d.ts +0 -10
  352. package/formatting/control-tooltip.d.ts +0 -2
  353. package/native-controls.view.d.ts +0 -54
  354. package/search-input/native.view.d.ts +0 -21
  355. package/styles/legacy-pagination.css +0 -129
  356. package/surfaces.view.d.ts +0 -33
@@ -17,7 +17,8 @@
17
17
  text-decoration: none;
18
18
  white-space: nowrap;
19
19
  transition:
20
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
20
+ background-color var(--rv-ui-motion-fast, 120ms)
21
+ var(--rv-ui-motion-ease, ease),
21
22
  color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
22
23
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
23
24
  opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
@@ -41,25 +42,46 @@
41
42
  @extend %rv-btn-base;
42
43
  // Transparent adapters add the base class even when a variant is supplied.
43
44
  // Default colors must never override a variant's hover or active state.
44
- &:where(:not(.rv-btn-solid, .rv-btn-primary, .rv-btn-danger, .rv-btn-danger-outline, .rv-btn-danger-ghost, .rv-btn-secondary, .rv-btn-ghost, .rv-btn-link, .rv-btn-tab)) {
45
+ &:where(
46
+ :not(
47
+ .rv-btn-solid,
48
+ .rv-btn-primary,
49
+ .rv-btn-danger,
50
+ .rv-btn-danger-outline,
51
+ .rv-btn-danger-ghost,
52
+ .rv-btn-secondary,
53
+ .rv-btn-ghost,
54
+ .rv-btn-link,
55
+ .rv-btn-tab
56
+ )
57
+ ) {
45
58
  background: var(--rv-ui-btn-outline-bg);
46
59
  border-color: var(--rv-ui-btn-outline-border);
47
60
  color: var(--rv-ui-btn-outline-fg);
48
- &:hover, &:active {
61
+ &:hover,
62
+ &:active {
49
63
  background: var(--rv-ui-btn-outline-bg-hover);
50
64
  border-color: var(--rv-ui-btn-outline-border-hover);
51
65
  }
52
66
  }
53
67
  }
54
68
 
69
+ .rv-btn[hidden]:not([hidden='until-found']) {
70
+ display: none;
71
+ }
72
+
55
73
  /* Explicit filled neutral variant (use when outline is not desired). */
56
74
  .rv-btn-solid {
57
75
  @extend %rv-btn-base;
58
76
  background: var(--rv-ui-btn-bg);
59
77
  color: var(--rv-ui-btn-fg);
60
78
 
61
- &:hover { background: var(--rv-ui-btn-bg-hover); }
62
- &:active { background: var(--rv-ui-btn-bg-hover); }
79
+ &:hover {
80
+ background: var(--rv-ui-btn-bg-hover);
81
+ }
82
+ &:active {
83
+ background: var(--rv-ui-btn-bg-hover);
84
+ }
63
85
  }
64
86
 
65
87
  .rv-btn-primary {
@@ -67,8 +89,12 @@
67
89
  background: var(--rv-ui-accent);
68
90
  color: var(--rv-ui-accent-fg);
69
91
 
70
- &:hover { background: var(--rv-ui-accent-hover); }
71
- &:active { background: var(--rv-ui-accent-hover); }
92
+ &:hover {
93
+ background: var(--rv-ui-accent-hover);
94
+ }
95
+ &:active {
96
+ background: var(--rv-ui-accent-hover);
97
+ }
72
98
  }
73
99
 
74
100
  .rv-btn-danger,
@@ -91,7 +117,9 @@
91
117
  color: var(--rv-ui-btn-danger-fg);
92
118
 
93
119
  &:hover,
94
- &:active { background: var(--rv-ui-btn-danger-bg-hover); }
120
+ &:active {
121
+ background: var(--rv-ui-btn-danger-bg-hover);
122
+ }
95
123
  }
96
124
 
97
125
  .rv-btn-secondary {
@@ -99,8 +127,12 @@
99
127
  background: var(--rv-ui-btn-secondary-bg);
100
128
  color: var(--rv-ui-btn-secondary-fg);
101
129
 
102
- &:hover { background: var(--rv-ui-btn-secondary-bg-hover); }
103
- &:active { background: var(--rv-ui-btn-secondary-bg-hover); }
130
+ &:hover {
131
+ background: var(--rv-ui-btn-secondary-bg-hover);
132
+ }
133
+ &:active {
134
+ background: var(--rv-ui-btn-secondary-bg-hover);
135
+ }
104
136
  }
105
137
 
106
138
  .rv-btn-ghost {
@@ -108,8 +140,12 @@
108
140
  background: transparent;
109
141
  color: inherit;
110
142
 
111
- &:hover { background: var(--rv-ui-btn-ghost-hover-bg); }
112
- &:active { background: var(--rv-ui-btn-ghost-active-bg); }
143
+ &:hover {
144
+ background: var(--rv-ui-btn-ghost-hover-bg);
145
+ }
146
+ &:active {
147
+ background: var(--rv-ui-btn-ghost-active-bg);
148
+ }
113
149
  }
114
150
 
115
151
  /* ─── Toggle switch ───────────────────────────────────────────────────────── */
@@ -163,8 +199,12 @@ label.rv-switch-label {
163
199
  overflow: hidden;
164
200
  clip: rect(0 0 0 0);
165
201
 
166
- &:checked + .rv-switch-track { background: var(--rv-ui-accent); }
167
- &:checked + .rv-switch-track .rv-switch-thumb { inset-inline-start: 15px; }
202
+ &:checked + .rv-switch-track {
203
+ background: var(--rv-ui-accent);
204
+ }
205
+ &:checked + .rv-switch-track .rv-switch-thumb {
206
+ inset-inline-start: 15px;
207
+ }
168
208
  &:focus-visible + .rv-switch-track {
169
209
  outline: 2px solid var(--rv-ui-accent);
170
210
  outline-offset: 3px;
@@ -182,7 +222,8 @@ label.rv-switch-label {
182
222
  box-sizing: border-box;
183
223
  border-radius: 999px;
184
224
  background: var(--rv-ui-switch-track-off);
185
- transition: background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
225
+ transition: background-color var(--rv-ui-motion-fast, 120ms)
226
+ var(--rv-ui-motion-ease, ease);
186
227
  }
187
228
 
188
229
  .rv-switch-thumb {
@@ -193,7 +234,8 @@ label.rv-switch-label {
193
234
  border-radius: 50%;
194
235
  background: var(--rv-ui-switch-thumb);
195
236
  box-shadow: 0 1px 3px var(--rv-ui-shadow);
196
- transition: inset-inline-start var(--rv-ui-motion-normal, 160ms) var(--rv-ui-motion-ease, ease);
237
+ transition: inset-inline-start var(--rv-ui-motion-normal, 160ms)
238
+ var(--rv-ui-motion-ease, ease);
197
239
  }
198
240
 
199
241
  .rv-switch[aria-checked='true'] .rv-switch-track {
@@ -278,7 +320,10 @@ label.rv-switch-label {
278
320
  cursor: pointer;
279
321
  user-select: none;
280
322
  color: inherit;
281
- transition: background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease), color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
323
+ transition:
324
+ background-color var(--rv-ui-motion-fast, 120ms)
325
+ var(--rv-ui-motion-ease, ease),
326
+ color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
282
327
  }
283
328
 
284
329
  & + & span {
@@ -309,7 +354,10 @@ label.rv-switch-label {
309
354
  line-height: 1;
310
355
  opacity: 0.5;
311
356
  padding: 0 2px;
312
- transition: opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease), background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
357
+ transition:
358
+ opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
359
+ background-color var(--rv-ui-motion-fast, 120ms)
360
+ var(--rv-ui-motion-ease, ease);
313
361
 
314
362
  &:hover:not(:disabled) {
315
363
  opacity: 1;
@@ -341,17 +389,26 @@ label.rv-switch-label {
341
389
  cursor: pointer;
342
390
  white-space: nowrap;
343
391
  line-height: 1.4;
344
- transition: background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
392
+ transition: background-color var(--rv-ui-motion-fast, 120ms)
393
+ var(--rv-ui-motion-ease, ease);
345
394
 
346
- &:hover { background: var(--rv-ui-btn-secondary-bg-hover); }
347
- &:active { opacity: 0.75; }
348
- &:disabled, &[disabled] { pointer-events: none; opacity: 0.5; }
395
+ &:hover {
396
+ background: var(--rv-ui-btn-secondary-bg-hover);
397
+ }
398
+ &:active {
399
+ opacity: 0.75;
400
+ }
401
+ &:disabled,
402
+ &[disabled] {
403
+ pointer-events: none;
404
+ opacity: 0.5;
405
+ }
349
406
  }
350
407
 
351
408
  /* ─── Small toggle switch (.rv-switch-sm) ─────────────────────────────────── */
352
409
  /*
353
410
  * Compact variant of .rv-switch for dense toolbars (28×16, 12px knob).
354
- * Supports both the shared button component and the legacy native-input markup.
411
+ * Supports both the shared button component and the native input adapters.
355
412
  *
356
413
  * <label class="rv-switch-label rv-switch-sm">
357
414
  * <input class="rv-switch-input" type="checkbox">
@@ -382,7 +439,9 @@ label.rv-switch-label {
382
439
 
383
440
  @media (prefers-reduced-motion: reduce) {
384
441
  .rv-switch-track,
385
- .rv-switch-thumb { transition: none; }
442
+ .rv-switch-thumb {
443
+ transition: none;
444
+ }
386
445
  }
387
446
 
388
447
  /* ─── Compact choice chips ───────────────────────────────────────────────── */
@@ -403,11 +462,25 @@ label.rv-switch-label {
403
462
  padding-block: 3px;
404
463
  --rv-choice-chips-fade-left: 0px;
405
464
  --rv-choice-chips-fade-right: 0px;
406
- mask-image: linear-gradient(to right, transparent, #000 var(--rv-choice-chips-fade-left), #000 calc(100% - var(--rv-choice-chips-fade-right)), transparent);
407
- &[data-scroll-edges~='left'] { --rv-choice-chips-fade-left: 12px; }
408
- &[data-scroll-edges~='right'] { --rv-choice-chips-fade-right: 36px; }
409
- &::-webkit-scrollbar { display: none; }
410
- > .rv-choice-chip { flex: none; }
465
+ mask-image: linear-gradient(
466
+ to right,
467
+ transparent,
468
+ #000 var(--rv-choice-chips-fade-left),
469
+ #000 calc(100% - var(--rv-choice-chips-fade-right)),
470
+ transparent
471
+ );
472
+ &[data-scroll-edges~='left'] {
473
+ --rv-choice-chips-fade-left: 12px;
474
+ }
475
+ &[data-scroll-edges~='right'] {
476
+ --rv-choice-chips-fade-right: 36px;
477
+ }
478
+ &::-webkit-scrollbar {
479
+ display: none;
480
+ }
481
+ > .rv-choice-chip {
482
+ flex: none;
483
+ }
411
484
  }
412
485
 
413
486
  .rv-choice-chip {
@@ -425,14 +498,18 @@ label.rv-switch-label {
425
498
  line-height: 1;
426
499
  white-space: nowrap;
427
500
  transition:
428
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
501
+ background-color var(--rv-ui-motion-fast, 120ms)
502
+ var(--rv-ui-motion-ease, ease),
429
503
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
430
504
  color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
431
505
  opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
432
506
 
433
- &:hover:not(:disabled) { background: var(--rv-ui-surface-hover); }
507
+ &:hover:not(:disabled) {
508
+ background: var(--rv-ui-surface-hover);
509
+ }
434
510
 
435
- &[aria-pressed='true'], &[data-selected='true'] {
511
+ &[aria-pressed='true'],
512
+ &[data-selected='true'] {
436
513
  border-color: transparent;
437
514
  background: var(--rv-ui-choice-chip-selected-bg, var(--rv-ui-selected-bg));
438
515
  color: var(--rv-ui-selected-fg);
@@ -454,7 +531,8 @@ label.rv-switch-label {
454
531
  border-color: var(--rv-ui-border);
455
532
  background: var(--rv-ui-surface);
456
533
 
457
- &[aria-pressed='true'], &[data-selected='true'] {
534
+ &[aria-pressed='true'],
535
+ &[data-selected='true'] {
458
536
  border-color: transparent;
459
537
  background: var(--rv-ui-choice-chip-selected-bg, var(--rv-ui-selected-bg));
460
538
  }
@@ -497,8 +575,8 @@ label.rv-switch-label {
497
575
  line-height: 1;
498
576
  cursor: pointer;
499
577
  padding: 0;
500
- transition:
501
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
578
+ transition: background-color var(--rv-ui-motion-fast, 120ms)
579
+ var(--rv-ui-motion-ease, ease);
502
580
 
503
581
  &:hover {
504
582
  background: var(--rv-ui-btn-ghost-hover-bg);
@@ -509,24 +587,39 @@ label.rv-switch-label {
509
587
 
510
588
  .rv-segmented-switch,
511
589
  .rv-value-selection-editor {
512
- --rv-ui-accent-text: color-mix(in srgb, var(--rv-ui-accent) var(--rv-ui-accent-text-weight, 90%), var(--rv-ui-accent-text-base, black));
590
+ --rv-ui-accent-text: color-mix(
591
+ in srgb,
592
+ var(--rv-ui-accent) var(--rv-ui-accent-text-weight, 90%),
593
+ var(--rv-ui-accent-text-base, black)
594
+ );
513
595
  }
514
596
 
515
597
  .rv-segmented-switch {
516
- --rv-segmented-theme-item-hover-bg: color-mix(in srgb, var(--rv-ui-text) 8%, var(--rv-ui-surface-sunken));
598
+ --rv-segmented-theme-item-hover-bg: color-mix(
599
+ in srgb,
600
+ var(--rv-ui-text) 8%,
601
+ var(--rv-ui-surface-sunken)
602
+ );
517
603
  display: inline-flex;
518
604
  box-sizing: border-box;
519
605
  height: 37px;
520
606
  align-items: center;
521
607
  gap: 2px;
522
- background: var(--rv-segmented-bg, var(--rv-ah-bg-up, var(--rv-segmented-theme-bg, var(--rv-ui-surface-sunken))));
608
+ background: var(
609
+ --rv-segmented-bg,
610
+ var(
611
+ --rv-ah-bg-up,
612
+ var(--rv-segmented-theme-bg, var(--rv-ui-surface-sunken))
613
+ )
614
+ );
523
615
  border: 1px solid var(--rv-segmented-border, var(--rv-ah-border, transparent));
524
616
  border-radius: 10px;
525
617
  padding: 2px;
526
618
  box-shadow: none;
527
619
  }
528
620
 
529
- :where(.dark, [data-theme^='dark'], revo-grid[theme^='dark']) .rv-segmented-switch,
621
+ :where(.dark, [data-theme^='dark'], revo-grid[theme^='dark'])
622
+ .rv-segmented-switch,
530
623
  .rv-segmented-switch[data-theme^='dark'] {
531
624
  --rv-segmented-theme-bg: var(--rv-ui-surface-sunken);
532
625
  --rv-segmented-theme-border: var(--rv-ui-border);
@@ -552,14 +645,18 @@ label.rv-switch-label {
552
645
  border-radius: 7px;
553
646
  padding: 0 14px;
554
647
  background: transparent;
555
- color: var(--rv-segmented-item-color, var(--rv-ah-text-2, var(--rv-segmented-theme-item-color, var(--rv-ui-text))));
648
+ color: var(
649
+ --rv-segmented-item-color,
650
+ var(--rv-ah-text-2, var(--rv-segmented-theme-item-color, var(--rv-ui-text)))
651
+ );
556
652
  cursor: pointer;
557
653
  font: inherit;
558
654
  font-size: 13px;
559
655
  font-weight: 400;
560
656
  line-height: 1;
561
657
  transition:
562
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
658
+ background-color var(--rv-ui-motion-fast, 120ms)
659
+ var(--rv-ui-motion-ease, ease),
563
660
  color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
564
661
  opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
565
662
  }
@@ -578,21 +675,50 @@ label.rv-switch-label {
578
675
  }
579
676
 
580
677
  .rv-segmented-switch-item:where(:not(.on)):hover:not(:disabled) {
581
- background: var(--rv-segmented-item-hover-bg, var(--rv-segmented-theme-item-hover-bg, var(--rv-ui-surface-hover)));
582
- color: var(--rv-segmented-item-hover-color, var(--rv-ah-text-2, var(--rv-segmented-theme-item-hover-color, var(--rv-ui-text))));
678
+ background: var(
679
+ --rv-segmented-item-hover-bg,
680
+ var(--rv-segmented-theme-item-hover-bg, var(--rv-ui-surface-hover))
681
+ );
682
+ color: var(
683
+ --rv-segmented-item-hover-color,
684
+ var(
685
+ --rv-ah-text-2,
686
+ var(--rv-segmented-theme-item-hover-color, var(--rv-ui-text))
687
+ )
688
+ );
583
689
  }
584
690
 
585
691
  .rv-segmented-switch-item.on {
586
- background: var(--rv-segmented-active-bg, var(--rv-ah-bg, var(--rv-segmented-theme-active-bg, var(--rv-ui-surface))));
587
- color: var(--rv-segmented-active-color, var(--rv-ui-selected-accent-fg, var(--rv-ui-accent-text)));
692
+ background: var(
693
+ --rv-segmented-active-bg,
694
+ var(--rv-ah-bg, var(--rv-segmented-theme-active-bg, var(--rv-ui-surface)))
695
+ );
696
+ color: var(
697
+ --rv-segmented-active-color,
698
+ var(--rv-ui-selected-accent-fg, var(--rv-ui-accent-text))
699
+ );
588
700
  font-weight: 500;
589
- border-color: var(--rv-segmented-active-border, var(--rv-segmented-theme-active-border, var(--rv-ui-border)));
701
+ border-color: var(
702
+ --rv-segmented-active-border,
703
+ var(--rv-segmented-theme-active-border, var(--rv-ui-border))
704
+ );
590
705
  box-shadow: none;
591
706
  }
592
707
 
593
708
  .rv-segmented-switch-item:focus-visible {
594
- outline: 2px solid var(--rv-segmented-focus-outline, var(--rv-ah-bg, var(--rv-segmented-theme-focus-outline, var(--rv-ui-text-muted))));
595
- box-shadow: 0 0 0 4px var(--rv-segmented-focus-ring, color-mix(in srgb, var(--rv-ui-accent) 28%, transparent));
709
+ outline: 2px solid
710
+ var(
711
+ --rv-segmented-focus-outline,
712
+ var(
713
+ --rv-ah-bg,
714
+ var(--rv-segmented-theme-focus-outline, var(--rv-ui-text-muted))
715
+ )
716
+ );
717
+ box-shadow: 0 0 0 4px
718
+ var(
719
+ --rv-segmented-focus-ring,
720
+ color-mix(in srgb, var(--rv-ui-accent) 28%, transparent)
721
+ );
596
722
  }
597
723
 
598
724
  .rv-segmented-switch-item:disabled {
@@ -606,14 +732,27 @@ label.rv-switch-label {
606
732
  font-size: 9.5px;
607
733
  padding: 1px 5px;
608
734
  border-radius: 4px;
609
- background: var(--rv-segmented-count-bg, var(--rv-ah-bg-up, var(--rv-ui-surface-sunken)));
610
- color: var(--rv-segmented-count-color, var(--rv-ah-text-2, var(--rv-ui-text-muted)));
611
- border: 1px solid var(--rv-segmented-count-border, var(--rv-ah-border, var(--rv-ui-border)));
735
+ background: var(
736
+ --rv-segmented-count-bg,
737
+ var(--rv-ah-bg-up, var(--rv-ui-surface-sunken))
738
+ );
739
+ color: var(
740
+ --rv-segmented-count-color,
741
+ var(--rv-ah-text-2, var(--rv-ui-text-muted))
742
+ );
743
+ border: 1px solid
744
+ var(--rv-segmented-count-border, var(--rv-ah-border, var(--rv-ui-border)));
612
745
  }
613
746
 
614
747
  .rv-segmented-switch-item.on .rv-segmented-switch-count {
615
- background: var(--rv-segmented-active-count-bg, var(--rv-ah-bg-hover, var(--rv-ui-surface-sunken)));
616
- color: var(--rv-segmented-active-count-color, var(--rv-ah-text-2, var(--rv-ui-text-muted)));
748
+ background: var(
749
+ --rv-segmented-active-count-bg,
750
+ var(--rv-ah-bg-hover, var(--rv-ui-surface-sunken))
751
+ );
752
+ color: var(
753
+ --rv-segmented-active-count-color,
754
+ var(--rv-ah-text-2, var(--rv-ui-text-muted))
755
+ );
617
756
  }
618
757
 
619
758
  .rv-search-input {
@@ -629,7 +768,10 @@ label.rv-switch-label {
629
768
  align-items: center;
630
769
  justify-content: center;
631
770
  transform: translateY(-50%);
632
- color: var(--rv-search-input-icon-color, var(--rv-ah-text-2, var(--rv-ui-text-muted)));
771
+ color: var(
772
+ --rv-search-input-icon-color,
773
+ var(--rv-ah-text-2, var(--rv-ui-text-muted))
774
+ );
633
775
  pointer-events: none;
634
776
  }
635
777
 
@@ -639,8 +781,12 @@ label.rv-switch-label {
639
781
  height: var(--rv-search-input-height, var(--rv-control-height, 32px));
640
782
  min-height: var(--rv-search-input-height, var(--rv-control-height, 32px));
641
783
  appearance: none;
642
- background: var(--rv-search-input-bg, var(--rv-ah-bg-input, var(--rv-ui-surface-sunken)));
643
- border: 1px solid var(--rv-search-input-border, var(--rv-ah-border, var(--rv-ui-border)));
784
+ background: var(
785
+ --rv-search-input-bg,
786
+ var(--rv-ah-bg-input, var(--rv-ui-surface-sunken))
787
+ );
788
+ border: 1px solid
789
+ var(--rv-search-input-border, var(--rv-ah-border, var(--rv-ui-border)));
644
790
  border-radius: 8px;
645
791
  padding-block: 0;
646
792
  padding-inline: 32px 38px;
@@ -650,7 +796,8 @@ label.rv-switch-label {
650
796
  font-size: var(--rv-control-font-size, 0.875rem);
651
797
  transition:
652
798
  border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
653
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
799
+ background-color var(--rv-ui-motion-fast, 120ms)
800
+ var(--rv-ui-motion-ease, ease);
654
801
  }
655
802
 
656
803
  .rv-search-input > input[type='search']::-webkit-search-cancel-button {
@@ -658,13 +805,22 @@ label.rv-switch-label {
658
805
  }
659
806
 
660
807
  .rv-search-input > input:is([type='search'], [type='text'])::placeholder {
661
- color: var(--rv-search-input-placeholder-color, var(--rv-ah-text-2, var(--rv-ui-text-muted)));
808
+ color: var(
809
+ --rv-search-input-placeholder-color,
810
+ var(--rv-ah-text-2, var(--rv-ui-text-muted))
811
+ );
662
812
  }
663
813
 
664
814
  .rv-search-input > input:is([type='search'], [type='text']):focus {
665
815
  transition: none;
666
- border-color: var(--rv-search-input-focus-border, var(--rv-ah-border-strong, var(--rv-ui-border-strong)));
667
- background: var(--rv-search-input-focus-bg, var(--rv-ah-bg, var(--rv-ui-surface)));
816
+ border-color: var(
817
+ --rv-search-input-focus-border,
818
+ var(--rv-ah-border-strong, var(--rv-ui-border-strong))
819
+ );
820
+ background: var(
821
+ --rv-search-input-focus-bg,
822
+ var(--rv-ah-bg, var(--rv-ui-surface))
823
+ );
668
824
  }
669
825
 
670
826
  .rv-search-input--no-icon > input:is([type='search'], [type='text']) {
@@ -681,9 +837,19 @@ label.rv-switch-label {
681
837
  top: 50%;
682
838
  transform: translateY(-50%);
683
839
  font-size: 10px;
684
- color: var(--rv-search-input-shortcut-color, var(--rv-ah-text-2, var(--rv-ui-text-muted)));
685
- background: var(--rv-search-input-shortcut-bg, var(--rv-ah-canvas, var(--rv-ui-surface-elevated)));
686
- border: 1px solid var(--rv-search-input-shortcut-border, var(--rv-ah-border, var(--rv-ui-border)));
840
+ color: var(
841
+ --rv-search-input-shortcut-color,
842
+ var(--rv-ah-text-2, var(--rv-ui-text-muted))
843
+ );
844
+ background: var(
845
+ --rv-search-input-shortcut-bg,
846
+ var(--rv-ah-canvas, var(--rv-ui-surface-elevated))
847
+ );
848
+ border: 1px solid
849
+ var(
850
+ --rv-search-input-shortcut-border,
851
+ var(--rv-ah-border, var(--rv-ui-border))
852
+ );
687
853
  padding: 1px 5px;
688
854
  border-radius: 3px;
689
855
  }
@@ -774,7 +940,9 @@ button.rv-badge--inline {
774
940
  color: var(--rv-ui-selected-accent-fg, var(--rv-ui-accent-text));
775
941
  }
776
942
 
777
- .rv-badge--rounded { border-radius: 4px; }
943
+ .rv-badge--rounded {
944
+ border-radius: 4px;
945
+ }
778
946
 
779
947
  .rv-btn:disabled .rv-badge,
780
948
  .rv-btn[disabled] .rv-badge {
@@ -800,17 +968,47 @@ button.rv-badge--inline {
800
968
  }
801
969
 
802
970
  // Square icon controls and their native hover/focus tooltips share one owner.
803
- .rv-btn-icon { box-sizing: border-box; flex: none; width: var(--rv-icon-button-size, 32px); height: var(--rv-icon-button-size, 32px); padding: 6px; }
804
- .rv-btn-icon[aria-pressed='true'], .rv-btn-icon[data-active='true'] { background: var(--rv-ui-selected-bg); color: var(--rv-ui-selected-fg); }
805
-
971
+ .rv-btn-icon {
972
+ box-sizing: border-box;
973
+ flex: none;
974
+ width: var(--rv-icon-button-size, 32px);
975
+ height: var(--rv-icon-button-size, 32px);
976
+ padding: 6px;
977
+ }
978
+ .rv-btn-icon[aria-pressed='true'],
979
+ .rv-btn-icon[data-active='true'] {
980
+ background: var(--rv-ui-selected-bg);
981
+ color: var(--rv-ui-selected-fg);
982
+ }
806
983
 
807
- .rv-btn-icon { position: relative; overflow: visible; }
808
- .rv-btn-icon .rv-badge { position: absolute; inset-block-start: -5px; inset-inline-end: -6px; min-width: 16px; height: 16px; padding: 0 4px; font-size: 10px; line-height: 16px; pointer-events: none; }
984
+ .rv-btn-icon {
985
+ position: relative;
986
+ overflow: visible;
987
+ }
988
+ .rv-btn-icon .rv-badge {
989
+ position: absolute;
990
+ inset-block-start: -5px;
991
+ inset-inline-end: -6px;
992
+ min-width: 16px;
993
+ height: 16px;
994
+ padding: 0 4px;
995
+ font-size: 10px;
996
+ line-height: 16px;
997
+ pointer-events: none;
998
+ }
809
999
  // Reserve the icon badges' overhang so toolbars can center controls without clipping them.
810
- .rv-history-controls { display: flex; align-items: center; gap: 12px; padding-block: 5px; padding-inline-end: 6px; }
1000
+ .rv-history-controls {
1001
+ display: flex;
1002
+ align-items: center;
1003
+ gap: 12px;
1004
+ padding-block: 5px;
1005
+ padding-inline-end: 6px;
1006
+ }
811
1007
 
812
1008
  // Native disabled buttons still expose their explanation on pointer hover.
813
- .rv-btn-icon:disabled { pointer-events: auto; }
1009
+ .rv-btn-icon:disabled {
1010
+ pointer-events: auto;
1011
+ }
814
1012
 
815
1013
  // Contained tool strips share geometry across native Charts and Preact hosts.
816
1014
  .rv-toolbar--surface {
@@ -834,8 +1032,9 @@ button.rv-badge--inline {
834
1032
  .rv-toolbar--surface > .rv-btn-icon[aria-pressed='true']:hover:not(:disabled) {
835
1033
  background: var(--rv-ui-selected-bg);
836
1034
  }
837
- .rv-svg-icon > svg[fill='none'] { fill: none; }
838
-
1035
+ .rv-svg-icon > svg[fill='none'] {
1036
+ fill: none;
1037
+ }
839
1038
 
840
1039
  .rv-choice-chip--composite {
841
1040
  position: relative;
@@ -843,13 +1042,26 @@ button.rv-badge--inline {
843
1042
  align-items: center;
844
1043
  gap: 4px;
845
1044
  cursor: default;
846
- .rv-choice-chip-label { min-width: 0; }
1045
+ .rv-choice-chip-label {
1046
+ min-width: 0;
1047
+ }
847
1048
  button.rv-choice-chip-label {
848
- appearance: none; border: 0; padding: 0; margin: 0;
849
- background: transparent; color: inherit; font: inherit; cursor: pointer;
850
- &:focus-visible { outline: 2px solid var(--rv-ui-accent); outline-offset: 2px; }
1049
+ appearance: none;
1050
+ border: 0;
1051
+ padding: 0;
1052
+ margin: 0;
1053
+ background: transparent;
1054
+ color: inherit;
1055
+ font: inherit;
1056
+ cursor: pointer;
1057
+ &:focus-visible {
1058
+ outline: 2px solid var(--rv-ui-accent);
1059
+ outline-offset: 2px;
1060
+ }
1061
+ }
1062
+ &[aria-disabled='true'] {
1063
+ opacity: 0.5;
851
1064
  }
852
- &[aria-disabled='true'] { opacity: .5; }
853
1065
  }
854
1066
  button.rv-choice-chip-info {
855
1067
  box-sizing: border-box;
@@ -866,10 +1078,13 @@ button.rv-choice-chip-info {
866
1078
  border-radius: 50%;
867
1079
  background: transparent;
868
1080
  color: var(--rv-ui-text-muted);
869
- font: 600 13px/1 system-ui, sans-serif;
1081
+ font:
1082
+ 600 13px/1 system-ui,
1083
+ sans-serif;
870
1084
  cursor: pointer;
871
1085
  transition:
872
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
1086
+ background-color var(--rv-ui-motion-fast, 120ms)
1087
+ var(--rv-ui-motion-ease, ease),
873
1088
  color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
874
1089
  }
875
1090
 
@@ -885,15 +1100,19 @@ button.rv-choice-chip-info:focus-visible,
885
1100
  outline-offset: 1px;
886
1101
  }
887
1102
 
888
-
889
-
890
- .rv-choice-chip[data-color='true']:is([aria-pressed='true'], [data-selected='true']) {
1103
+ .rv-choice-chip[data-color='true']:is(
1104
+ [aria-pressed='true'],
1105
+ [data-selected='true']
1106
+ ) {
891
1107
  border-color: transparent;
892
- background: color-mix(in srgb, var(--rv-choice-chip-color) 9%, var(--rv-ui-surface));
1108
+ background: color-mix(
1109
+ in srgb,
1110
+ var(--rv-choice-chip-color) 9%,
1111
+ var(--rv-ui-surface)
1112
+ );
893
1113
  color: var(--rv-ui-text);
894
1114
  }
895
1115
 
896
-
897
1116
  .rv-btn-tab {
898
1117
  @extend %rv-btn-base;
899
1118
  min-height: 40px;
@@ -915,7 +1134,8 @@ button.rv-choice-chip-info:focus-visible,
915
1134
  content: '';
916
1135
  }
917
1136
 
918
- &:hover:not(:disabled), &[aria-selected='true'] {
1137
+ &:hover:not(:disabled),
1138
+ &[aria-selected='true'] {
919
1139
  color: var(--rv-tab-accent, var(--rv-ui-accent-text));
920
1140
  }
921
1141
  &[aria-selected='true']::after {
@@ -941,31 +1161,63 @@ button.rv-choice-chip-info:focus-visible,
941
1161
  color: var(--rv-ui-accent-text);
942
1162
  font-weight: 400;
943
1163
  text-decoration: none;
944
- svg { width: 12px; height: 12px; fill: currentColor; }
945
- &:hover:not(:disabled) { background: transparent; text-decoration: underline; }
946
- &:focus-visible { outline: 2px solid var(--rv-ui-accent); outline-offset: 2px; box-shadow: none; }
1164
+ svg {
1165
+ width: 12px;
1166
+ height: 12px;
1167
+ fill: currentColor;
1168
+ }
1169
+ &:hover:not(:disabled) {
1170
+ background: transparent;
1171
+ text-decoration: underline;
1172
+ }
1173
+ &:focus-visible {
1174
+ outline: 2px solid var(--rv-ui-accent);
1175
+ outline-offset: 2px;
1176
+ box-shadow: none;
1177
+ }
947
1178
  }
948
1179
 
949
1180
  // Forced colors suppress box shadows; focus must remain a visible outline.
950
1181
  @media (forced-colors: active) {
951
- :is(.rv-btn, .rv-btn-solid, .rv-btn-primary, .rv-btn-ghost, .rv-btn-link,
952
- .rv-control, .rv-choice-chip, .rv-segmented-switch-item, .rv-rating-choice):focus-visible {
1182
+ :is(
1183
+ .rv-btn,
1184
+ .rv-btn-solid,
1185
+ .rv-btn-primary,
1186
+ .rv-btn-ghost,
1187
+ .rv-btn-link,
1188
+ .rv-control,
1189
+ .rv-choice-chip,
1190
+ .rv-segmented-switch-item,
1191
+ .rv-rating-choice
1192
+ ):focus-visible {
953
1193
  outline: 2px solid Highlight;
954
1194
  outline-offset: 2px;
955
1195
  }
956
1196
  }
957
1197
 
958
1198
  // Busy is unavailable for interaction but retains its enabled variant paint.
959
- .rv-btn.rv-btn-busy:disabled { pointer-events: auto; cursor: progress; }
960
- .rv-btn.rv-btn-busy:not(.rv-btn-busy-disabled):disabled { opacity: 1; }
1199
+ .rv-btn.rv-btn-busy:disabled {
1200
+ pointer-events: auto;
1201
+ cursor: progress;
1202
+ }
1203
+ .rv-btn.rv-btn-busy:not(.rv-btn-busy-disabled):disabled {
1204
+ opacity: 1;
1205
+ }
961
1206
  .rv-button-spinner {
962
1207
  @include loading.ring(1em, 2px);
963
1208
  flex: 0 0 auto;
964
1209
  border-color: color-mix(in srgb, currentColor 30%, transparent);
965
1210
  border-block-start-color: currentColor;
966
1211
  }
967
- .rv-btn-busy.rv-btn-icon > :not(.rv-button-spinner) { display: none; }
1212
+ .rv-btn-busy.rv-btn-icon > :not(.rv-button-spinner) {
1213
+ display: none;
1214
+ }
968
1215
 
969
1216
  // Applies uniformly to action variants, icon controls and navigation buttons.
970
- .rv-btn-rounded.rv-btn-rounded { border-radius: 9999px; }
971
- .rv-btn-rounded[aria-disabled='true'] { opacity: .5; pointer-events: none; }
1217
+ .rv-btn-rounded.rv-btn-rounded {
1218
+ border-radius: 9999px;
1219
+ }
1220
+ .rv-btn-rounded[aria-disabled='true'] {
1221
+ opacity: 0.5;
1222
+ pointer-events: none;
1223
+ }