@revolist/ui 0.0.0-stage → 4.0.2-rc

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 (546) hide show
  1. package/OWNERSHIP.md +123 -0
  2. package/README.md +345 -2
  3. package/_button.scss +75 -0
  4. package/_chunks/calendar-CpaUK7w1.js +248 -0
  5. package/_chunks/cell-visuals-E-2oEKHg.js +264 -0
  6. package/_chunks/chart-frame-BC99KjGa.js +127 -0
  7. package/_chunks/chevron-down-GbplLa6s.js +4 -0
  8. package/_chunks/chevron-left-D0nc4Z5S.js +4 -0
  9. package/_chunks/chevron-right-sxHQMSkq.js +4 -0
  10. package/_chunks/chevron-up-BLuNMPDn.js +4 -0
  11. package/_chunks/choice-chips-Cs4D-3nH.js +110 -0
  12. package/_chunks/color-palette-BBMFmUNA.js +94 -0
  13. package/_chunks/color-picker-D90Jg-M8.js +138 -0
  14. package/_chunks/compat.module-DDB2pm9O.js +229 -0
  15. package/_chunks/component-YDcfoOLz.js +859 -0
  16. package/_chunks/component-metadata-BENbgTjU.js +202 -0
  17. package/_chunks/control-tooltip-ztgmsG7H.js +100 -0
  18. package/_chunks/controller-hRBm_Lfz.js +392 -0
  19. package/_chunks/controls-DIum-E66.js +615 -0
  20. package/_chunks/date-control-BJSzu79z.js +86 -0
  21. package/_chunks/date-time-BxPJusp9.js +770 -0
  22. package/_chunks/delete-button-Bblyah10.js +18 -0
  23. package/_chunks/dialog.parts-DBqo3Qwb.js +134 -0
  24. package/_chunks/dropdown-voWqmwAe.js +357 -0
  25. package/_chunks/duration-87U2EoMS.js +271 -0
  26. package/_chunks/editor-commit-Bq3wSgvr.js +12 -0
  27. package/_chunks/editor-popup-D3JdS8l3.js +81 -0
  28. package/_chunks/framework-mount-C-Zwm44H.js +54 -0
  29. package/_chunks/hooks.module-CG3gN83z.js +157 -0
  30. package/_chunks/icons-Ci5mADVc.js +13 -0
  31. package/_chunks/iso-B0YHBK7m.js +40 -0
  32. package/_chunks/jsxRuntime.module-F6UFnpT-.js +30 -0
  33. package/_chunks/model-mPO2tG2f.js +120 -0
  34. package/_chunks/mount-DZe_6VtR.js +90 -0
  35. package/_chunks/native.view-ByyZ1CT5.js +32 -0
  36. package/_chunks/number-input-BeIadZuL.js +242 -0
  37. package/_chunks/picker-DpP7iQLA.js +122 -0
  38. package/_chunks/preact.module-BBM36DnO.js +290 -0
  39. package/_chunks/rating-choice-Ca8ZBty3.js +27 -0
  40. package/_chunks/reorder-list-Cc3KmfAN.js +59 -0
  41. package/_chunks/request-trail-IdNiFvKH.js +347 -0
  42. package/_chunks/rich-text-BzI1DyfF.js +477 -0
  43. package/_chunks/xmark-DD_PBvZI.js +4 -0
  44. package/_dialog.scss +327 -0
  45. package/_form.scss +125 -0
  46. package/_legend.scss +36 -0
  47. package/_shared/chart-utils/colors.d.ts +6 -0
  48. package/_shared/chart-utils/conditional-rule.d.ts +8 -0
  49. package/_shared/chart-utils/csv.d.ts +5 -0
  50. package/_shared/chart-utils/tooltip-owner.d.ts +4 -0
  51. package/_shared/data-query/binding.d.ts +30 -0
  52. package/_shared/data-query/blocks.d.ts +30 -0
  53. package/_shared/data-query/commands.d.ts +47 -0
  54. package/_shared/data-query/contracts.d.ts +106 -0
  55. package/_shared/data-query/cursor-reader.d.ts +25 -0
  56. package/_shared/data-query/direct-binding.d.ts +3 -0
  57. package/_shared/data-query/index.d.ts +23 -0
  58. package/_shared/data-query/infinite-binding.d.ts +18 -0
  59. package/_shared/data-query/keys.d.ts +9 -0
  60. package/_shared/data-query/limiter.d.ts +12 -0
  61. package/_shared/data-query/load-options.d.ts +25 -0
  62. package/_shared/data-query/materialize.d.ts +2 -0
  63. package/_shared/data-query/policy.d.ts +14 -0
  64. package/_shared/data-query/provider-queries.d.ts +22 -0
  65. package/_shared/data-query/reader.d.ts +23 -0
  66. package/_shared/data-query/remote-load.d.ts +7 -0
  67. package/_shared/data-query/source.d.ts +40 -0
  68. package/_shared/dates/analysis-calendar.d.ts +8 -0
  69. package/_shared/dates/calendar-range.d.ts +18 -0
  70. package/_shared/dates/calendar-tick-label.d.ts +6 -0
  71. package/_shared/dates/calendar-ticks.d.ts +10 -0
  72. package/_shared/dates/calendars.d.ts +133 -0
  73. package/_shared/dates/civil-time.d.ts +45 -0
  74. package/_shared/dates/coercion.d.ts +2 -0
  75. package/_shared/dates/date-bucket.d.ts +40 -0
  76. package/_shared/dates/date-controls.d.ts +11 -0
  77. package/_shared/dates/date-entry.d.ts +12 -0
  78. package/_shared/dates/date-math.d.ts +90 -0
  79. package/_shared/dates/display-calendar.d.ts +15 -0
  80. package/_shared/dates/display.d.ts +16 -0
  81. package/_shared/dates/duration-control.d.ts +15 -0
  82. package/_shared/dates/duration.d.ts +69 -0
  83. package/_shared/dates/index.d.ts +27 -0
  84. package/_shared/dates/iso.d.ts +60 -0
  85. package/_shared/dates/local-calendar.d.ts +6 -0
  86. package/_shared/dates/relative-window.d.ts +35 -0
  87. package/_shared/dates/sequence.d.ts +72 -0
  88. package/_shared/dates/session-calendar.d.ts +19 -0
  89. package/_shared/dates/spreadsheet-date.d.ts +54 -0
  90. package/_shared/dates/temporal-controls.d.ts +23 -0
  91. package/_shared/dates/temporal-value.d.ts +17 -0
  92. package/_shared/dates/time-of-day.d.ts +82 -0
  93. package/_shared/dates/time-selection.d.ts +21 -0
  94. package/_shared/dates/timeline.d.ts +28 -0
  95. package/_shared/dates/working-days.d.ts +54 -0
  96. package/_shared/dates/zoned-calendar-range.d.ts +12 -0
  97. package/_variables.scss +51 -0
  98. package/_vendor/preact/LICENSE +21 -0
  99. package/_vendor/preact/compat/src/index.d.ts +353 -0
  100. package/_vendor/preact/compat/src/suspense-list.d.ts +16 -0
  101. package/_vendor/preact/compat/src/suspense.d.ts +19 -0
  102. package/_vendor/preact/hooks/src/index.d.ts +145 -0
  103. package/_vendor/preact/src/dom.d.ts +2548 -0
  104. package/_vendor/preact/src/index.d.ts +373 -0
  105. package/_vendor/preact/src/jsx.d.ts +2958 -0
  106. package/activity-message.d.ts +12 -0
  107. package/activity-message.js +40 -0
  108. package/ai/_style.scss +252 -0
  109. package/ai/components.d.ts +59 -0
  110. package/ai/index.d.ts +5 -0
  111. package/ai/index.js +3 -0
  112. package/ai/mount.d.ts +33 -0
  113. package/ai/request-trail.d.ts +26 -0
  114. package/ai/translation-context.d.ts +7 -0
  115. package/ai/translations.d.ts +4 -0
  116. package/alert-native.d.ts +8 -0
  117. package/alert.d.ts +12 -0
  118. package/angular/angular-control.d.ts +10 -0
  119. package/angular/angular-control.js +31 -0
  120. package/angular/angular.d.ts +44 -0
  121. package/angular/angular.js +149 -0
  122. package/assignee/assignee.scss +104 -0
  123. package/assignee/field.d.ts +13 -0
  124. package/assignee/index.d.ts +5 -0
  125. package/assignee/index.js +212 -0
  126. package/assignee/layout.d.ts +9 -0
  127. package/assignee/model.d.ts +17 -0
  128. package/assignee/picker.d.ts +3 -0
  129. package/assignee/types.d.ts +45 -0
  130. package/avatar/avatar.style.scss +65 -0
  131. package/avatar/index.d.ts +2 -0
  132. package/avatar/index.js +68 -0
  133. package/avatar/index.view.d.ts +25 -0
  134. package/badge.d.ts +7 -0
  135. package/badge.js +6 -0
  136. package/brush-range/_brush-range.scss +49 -0
  137. package/brush-range/component.d.ts +17 -0
  138. package/brush-range/component.js +52 -0
  139. package/buttons/delete-button.d.ts +11 -0
  140. package/buttons/delete-button.js +1 -0
  141. package/buttons/delete-button.style.scss +14 -0
  142. package/buttons/index.d.ts +3 -0
  143. package/buttons/remove-button.d.ts +8 -0
  144. package/buttons/remove-button.js +11 -0
  145. package/buttons/remove-button.style.scss +10 -0
  146. package/buttons/svg-button.d.ts +18 -0
  147. package/buttons/svg-button.js +64 -0
  148. package/calendar/_calendar.scss +376 -0
  149. package/calendar/calendar.d.ts +3 -0
  150. package/calendar/calendar.js +1 -0
  151. package/calendar/caption.d.ts +14 -0
  152. package/calendar/day.d.ts +27 -0
  153. package/calendar/day.js +43 -0
  154. package/calendar/header.d.ts +25 -0
  155. package/calendar/header.js +61 -0
  156. package/calendar/index.d.ts +10 -0
  157. package/calendar/index.js +9 -0
  158. package/calendar/model.d.ts +11 -0
  159. package/calendar/model.js +1 -0
  160. package/calendar/month-grid.d.ts +29 -0
  161. package/calendar/month-grid.js +56 -0
  162. package/calendar/picker.d.ts +40 -0
  163. package/calendar/translations.d.ts +3 -0
  164. package/calendar/translations.js +15 -0
  165. package/calendar/types.d.ts +122 -0
  166. package/calendar/types.js +0 -0
  167. package/calendar/year-grid.d.ts +14 -0
  168. package/calendar/year-grid.js +33 -0
  169. package/cell-input.d.ts +9 -0
  170. package/cell-input.js +14 -0
  171. package/cell-input.scss +19 -0
  172. package/cell-visuals/badge.style.scss +42 -0
  173. package/cell-visuals/bar-chart.style.scss +43 -0
  174. package/cell-visuals/change.style.css +46 -0
  175. package/cell-visuals/column-type.style.css +14 -0
  176. package/cell-visuals/heatmap.d.ts +11 -0
  177. package/cell-visuals/heatmap.style.css +10 -0
  178. package/cell-visuals/index.d.ts +6 -0
  179. package/cell-visuals/index.js +1 -0
  180. package/cell-visuals/mini-bars.d.ts +8 -0
  181. package/cell-visuals/pie-chart.style.css +4 -0
  182. package/cell-visuals/pie.d.ts +11 -0
  183. package/cell-visuals/presentation.d.ts +44 -0
  184. package/cell-visuals/progress-line-value.renderer.style.scss +50 -0
  185. package/cell-visuals/progress-line.style.scss +32 -0
  186. package/cell-visuals/sparkline.d.ts +8 -0
  187. package/cell-visuals/sparkline.style.scss +35 -0
  188. package/cell-visuals/styles.scss +13 -0
  189. package/cell-visuals/summary-aggregate.style.css +4 -0
  190. package/cell-visuals/summary-percentage.style.css +12 -0
  191. package/cell-visuals/thumbs.style.css +3 -0
  192. package/cell-visuals/timeline.d.ts +30 -0
  193. package/cell-visuals/timeline.style.css +66 -0
  194. package/cell-visuals/types.d.ts +2 -0
  195. package/checkbox/_layout.scss +8 -0
  196. package/checkbox/checkbox.scss +105 -0
  197. package/checkbox/index.d.ts +32 -0
  198. package/checkbox/index.js +33 -0
  199. package/choice-chips/index.d.ts +44 -0
  200. package/choice-chips/index.js +1 -0
  201. package/color-palette/built-in-palettes.d.ts +9 -0
  202. package/color-palette/built-in-palettes.js +19 -0
  203. package/color-palette/chart-palettes.d.ts +95 -0
  204. package/color-palette/chart-palettes.js +74 -0
  205. package/color-palette/color-model.d.ts +3 -0
  206. package/color-palette/color-palette.d.ts +15 -0
  207. package/color-palette/color-palette.js +3 -0
  208. package/color-palette/color-palette.style.scss +267 -0
  209. package/color-palette/color-picker.constants.d.ts +2 -0
  210. package/color-palette/color-picker.constants.js +5 -0
  211. package/color-palette/color-picker.d.ts +16 -0
  212. package/color-palette/color-picker.id.d.ts +2 -0
  213. package/color-palette/color-picker.id.js +1 -0
  214. package/color-palette/color-picker.js +3 -0
  215. package/color-palette/color-picker.style.scss +195 -0
  216. package/color-palette/common-palettes.d.ts +741 -0
  217. package/color-palette/common-palettes.js +386 -0
  218. package/color-palette/gantt-palettes.d.ts +419 -0
  219. package/color-palette/gantt-palettes.js +184 -0
  220. package/color-palette/native.d.ts +2 -0
  221. package/color-palette/native.view.d.ts +15 -0
  222. package/color-palette/palette.d.ts +7 -0
  223. package/color-palette/palette.js +98 -0
  224. package/color-palette/pivot-palettes.d.ts +43 -0
  225. package/color-palette/pivot-palettes.js +41 -0
  226. package/color-palette/platform-palettes.d.ts +40 -0
  227. package/color-palette/platform-palettes.js +29 -0
  228. package/color-palette/pro-palettes.d.ts +403 -0
  229. package/color-palette/pro-palettes.js +269 -0
  230. package/color-palette/scheduler-palettes.d.ts +572 -0
  231. package/color-palette/scheduler-palettes.js +255 -0
  232. package/component-catalog.d.ts +209 -0
  233. package/component-metadata.d.ts +17 -0
  234. package/control-attributes.d.ts +5 -0
  235. package/control-attributes.js +23 -0
  236. package/control-presentation.d.ts +2 -0
  237. package/control-presentation.js +36 -0
  238. package/control-presentation.view.d.ts +8 -0
  239. package/controls.d.ts +171 -0
  240. package/controls.js +3 -0
  241. package/core/anchored-popover.d.ts +11 -0
  242. package/core/anchored-popover.js +12 -0
  243. package/core/control-id.d.ts +2 -0
  244. package/core/control-id.js +6 -0
  245. package/core/editor-commit.d.ts +4 -0
  246. package/core/editor-popup-position.d.ts +11 -0
  247. package/core/editor-popup.d.ts +13 -0
  248. package/core/editor-popup.js +1 -0
  249. package/core/editor-popup.scss +35 -0
  250. package/core/motion.d.ts +8 -0
  251. package/core/motion.js +46 -0
  252. package/core/top-layer-popup.d.ts +9 -0
  253. package/core/top-layer-popup.js +23 -0
  254. package/date-time/attach.d.ts +3 -0
  255. package/date-time/date-control.d.ts +20 -0
  256. package/date-time/field.d.ts +11 -0
  257. package/date-time/index.d.ts +5 -0
  258. package/date-time/index.js +1 -0
  259. package/date-time/picker.d.ts +2 -0
  260. package/date-time/style.scss +115 -0
  261. package/date-time/time-control.d.ts +11 -0
  262. package/date-time/time-selection.d.ts +15 -0
  263. package/date-time/types.d.ts +74 -0
  264. package/date-time/validation.d.ts +8 -0
  265. package/date-time/value.d.ts +10 -0
  266. package/date-time/value.scss +30 -0
  267. package/dialog/dialog-action-footer.d.ts +2 -0
  268. package/dialog/dialog-action-footer.view.d.ts +20 -0
  269. package/dialog/dialog.dom.d.ts +2 -0
  270. package/dialog/dialog.dom.js +92 -0
  271. package/dialog/dialog.dom.view.d.ts +15 -0
  272. package/dialog/dialog.drag.d.ts +10 -0
  273. package/dialog/dialog.drag.js +72 -0
  274. package/dialog/dialog.parts.d.ts +62 -0
  275. package/dialog/dialog.parts.js +1 -0
  276. package/dialog/dialog.preact.d.ts +10 -0
  277. package/dialog/dialog.preact.js +18 -0
  278. package/dialog/dialog.types.d.ts +24 -0
  279. package/dialog/dialog.types.js +0 -0
  280. package/distribution-chart/_distribution-chart.scss +196 -0
  281. package/distribution-chart/area-chart.d.ts +4 -0
  282. package/distribution-chart/area-chart.js +54 -0
  283. package/distribution-chart/bar-chart.d.ts +5 -0
  284. package/distribution-chart/bar-chart.js +17 -0
  285. package/distribution-chart/chart-frame.d.ts +16 -0
  286. package/distribution-chart/geometry.d.ts +17 -0
  287. package/distribution-chart/index.d.ts +8 -0
  288. package/distribution-chart/index.js +10 -0
  289. package/distribution-chart/line-chart.d.ts +5 -0
  290. package/distribution-chart/line-chart.js +22 -0
  291. package/distribution-chart/types.d.ts +32 -0
  292. package/dropdown/content.d.ts +42 -0
  293. package/dropdown/content.js +142 -0
  294. package/dropdown/dropdown.service.d.ts +19 -0
  295. package/dropdown/dropdown.service.js +105 -0
  296. package/dropdown/dropdown.types.d.ts +114 -0
  297. package/dropdown/dropdown.types.js +0 -0
  298. package/dropdown/editor-dropdown.style.scss +308 -0
  299. package/dropdown/index.d.ts +16 -0
  300. package/dropdown/index.js +4 -0
  301. package/dropdown/lookup-field.d.ts +29 -0
  302. package/dropdown/lookup-field.js +64 -0
  303. package/dropdown/popup.d.ts +27 -0
  304. package/dropdown/popup.js +141 -0
  305. package/dropdown/remote-hook.d.ts +23 -0
  306. package/dropdown/remote.d.ts +74 -0
  307. package/duration/controls.d.ts +13 -0
  308. package/duration/index.d.ts +45 -0
  309. package/duration/index.js +1 -0
  310. package/duration/style.scss +33 -0
  311. package/editor-actions.d.ts +20 -0
  312. package/editor-actions.js +36 -0
  313. package/editor-layout/index.d.ts +49 -0
  314. package/editor-layout/index.js +84 -0
  315. package/editor-layout/style.scss +84 -0
  316. package/field-configurator.d.ts +89 -0
  317. package/field-configurator.js +170 -0
  318. package/field-reorder.d.ts +9 -0
  319. package/field-reorder.hook.d.ts +53 -0
  320. package/field-reorder.hook.js +146 -0
  321. package/field-reorder.js +19 -0
  322. package/filter/filters/slider/_single-slider.scss +45 -0
  323. package/filter/filters/slider/_slider.scss +132 -0
  324. package/filter/filters/slider/component.d.ts +4 -0
  325. package/filter/filters/slider/component.js +50 -0
  326. package/filter/filters/slider/control.d.ts +8 -0
  327. package/filter/filters/slider/control.js +58 -0
  328. package/filter/filters/slider/inputs.d.ts +8 -0
  329. package/filter/filters/slider/inputs.js +45 -0
  330. package/filter/filters/slider/logic.d.ts +54 -0
  331. package/filter/filters/slider/logic.js +57 -0
  332. package/filter/filters/slider/preact.d.ts +3 -0
  333. package/filter/filters/slider/preact.js +8 -0
  334. package/filter/filters/slider/runtime.d.ts +45 -0
  335. package/filter/filters/slider/runtime.js +63 -0
  336. package/filter/filters/slider/single.d.ts +33 -0
  337. package/filter/filters/slider/single.js +63 -0
  338. package/filter/filters/slider/types.d.ts +61 -0
  339. package/filter/filters/slider/types.js +0 -0
  340. package/filter-badge.d.ts +12 -0
  341. package/filter-badge.js +36 -0
  342. package/filter-controls.d.ts +22 -0
  343. package/filter-controls.js +46 -0
  344. package/form-controls/index.d.ts +2 -0
  345. package/form-controls/index.js +39 -0
  346. package/form-controls/index.view.d.ts +12 -0
  347. package/form-controls/presentation.d.ts +37 -0
  348. package/form-controls/presentation.js +99 -0
  349. package/formatting/comparison-preview.d.ts +15 -0
  350. package/formatting/control-tooltip.d.ts +27 -0
  351. package/formatting/icon-controls.d.ts +18 -0
  352. package/formatting/index.d.ts +5 -0
  353. package/formatting/index.js +227 -0
  354. package/formatting/inspector-section.d.ts +9 -0
  355. package/formatting/styles.scss +281 -0
  356. package/formatting/typography-controls.d.ts +26 -0
  357. package/framework-mount.d.ts +15 -0
  358. package/framework.d.ts +3 -0
  359. package/framework.js +230 -0
  360. package/html-controls.d.ts +4 -0
  361. package/html-controls.js +24 -0
  362. package/icons/cancel.svg +1 -0
  363. package/icons/drawing-tools.d.ts +9 -0
  364. package/icons/icon.d.ts +7 -0
  365. package/icons/icon.js +12 -0
  366. package/icons/index.d.ts +2 -0
  367. package/icons/pagination.d.ts +6 -0
  368. package/legend.d.ts +17 -0
  369. package/legend.js +24 -0
  370. package/masked-input/edit.d.ts +22 -0
  371. package/masked-input/index.d.ts +10 -0
  372. package/masked-input/index.js +302 -0
  373. package/masked-input/model.d.ts +38 -0
  374. package/masked-input/style.scss +18 -0
  375. package/native-control.d.ts +28 -0
  376. package/native-control.js +26 -0
  377. package/native-controls.d.ts +2 -0
  378. package/native-controls.view.d.ts +54 -0
  379. package/native-styles.css +1 -0
  380. package/native-styles.scss +18 -0
  381. package/native.d.ts +29 -0
  382. package/native.js +77 -0
  383. package/number-input/index.d.ts +12 -0
  384. package/number-input/index.js +1 -0
  385. package/number-input/model.d.ts +43 -0
  386. package/number-input/style.scss +18 -0
  387. package/package.json +747 -3
  388. package/pagination.d.ts +53 -0
  389. package/pagination.js +160 -0
  390. package/pdf-viewer/component.d.ts +24 -0
  391. package/pdf-viewer/controller.d.ts +57 -0
  392. package/pdf-viewer/controller.js +1 -0
  393. package/pdf-viewer/header.d.ts +9 -0
  394. package/pdf-viewer/icons.d.ts +16 -0
  395. package/pdf-viewer/index.d.ts +9 -0
  396. package/pdf-viewer/index.js +16 -0
  397. package/pdf-viewer/model.d.ts +12 -0
  398. package/pdf-viewer/print.d.ts +3 -0
  399. package/pdf-viewer/runtime.d.ts +89 -0
  400. package/pdf-viewer/search-bar.d.ts +12 -0
  401. package/pdf-viewer/status.d.ts +11 -0
  402. package/pdf-viewer/style.scss +80 -0
  403. package/pdf-viewer/surfaces.view.d.ts +6 -0
  404. package/pdf-viewer/toolbar-options.d.ts +23 -0
  405. package/pdf-viewer/toolbar.d.ts +18 -0
  406. package/pdf-viewer/translations.d.ts +46 -0
  407. package/pdf-viewer/types.d.ts +38 -0
  408. package/pickers.d.ts +66 -0
  409. package/preact-mount.d.ts +8 -0
  410. package/preact-mount.js +42 -0
  411. package/preact.d.ts +53 -0
  412. package/preact.js +64 -0
  413. package/progress/_bar.scss +41 -0
  414. package/progress/_circular.scss +52 -0
  415. package/progress/bar.d.ts +12 -0
  416. package/progress/bar.js +21 -0
  417. package/progress/circular.d.ts +7 -0
  418. package/progress/circular.js +17 -0
  419. package/progress/range.d.ts +7 -0
  420. package/progress/range.js +15 -0
  421. package/rating-choice.d.ts +11 -0
  422. package/rating-choice.js +1 -0
  423. package/react-adapter.d.ts +21 -0
  424. package/react-control.d.ts +5 -0
  425. package/react-control.js +17 -0
  426. package/react-native-select.d.ts +6 -0
  427. package/react.d.ts +182 -0
  428. package/react.js +139 -0
  429. package/reorder-list.d.ts +20 -0
  430. package/reorder-list.js +1 -0
  431. package/reorder-list.scss +42 -0
  432. package/resource-picker/index.d.ts +3 -0
  433. package/resource-picker/index.js +3 -0
  434. package/resource-picker/resource-picker-avatar.d.ts +15 -0
  435. package/resource-picker/resource-picker-avatar.js +56 -0
  436. package/resource-picker/resource-picker-option.d.ts +19 -0
  437. package/resource-picker/resource-picker-option.js +41 -0
  438. package/resource-picker/resource-picker-popup.d.ts +10 -0
  439. package/resource-picker/resource-picker-popup.js +18 -0
  440. package/resource-picker/resource-picker.d.ts +3 -0
  441. package/resource-picker/resource-picker.js +201 -0
  442. package/resource-picker/resource-picker.scss +368 -0
  443. package/resource-picker/resource-picker.types.d.ts +53 -0
  444. package/resource-picker/resource-picker.types.js +0 -0
  445. package/resource-picker/resource-picker.utils.d.ts +5 -0
  446. package/resource-picker/resource-picker.utils.js +15 -0
  447. package/rich-text/engine.d.ts +21 -0
  448. package/rich-text/index.d.ts +15 -0
  449. package/rich-text/index.js +1 -0
  450. package/rich-text/model.d.ts +3 -0
  451. package/rich-text/render-model.d.ts +9 -0
  452. package/rich-text/style.scss +126 -0
  453. package/rich-text/syntax.d.ts +2 -0
  454. package/rich-text/toolbar.d.ts +9 -0
  455. package/rich-text/translations.d.ts +40 -0
  456. package/search-input/index.d.ts +26 -0
  457. package/search-input/index.js +50 -0
  458. package/search-input/native.d.ts +2 -0
  459. package/search-input/native.view.d.ts +21 -0
  460. package/segmented-switch/index.d.ts +47 -0
  461. package/segmented-switch/index.js +60 -0
  462. package/selection-list.d.ts +2 -0
  463. package/selection-list.js +1 -0
  464. package/status-feedback/badge.d.ts +3 -0
  465. package/status-feedback/badge.js +10 -0
  466. package/status-feedback/exit-snapshot.d.ts +2 -0
  467. package/status-feedback/exit-snapshot.js +39 -0
  468. package/status-feedback/header.d.ts +2 -0
  469. package/status-feedback/header.js +58 -0
  470. package/status-feedback/icons.d.ts +2 -0
  471. package/status-feedback/icons.js +1 -0
  472. package/status-feedback/index.d.ts +3 -0
  473. package/status-feedback/index.js +4 -0
  474. package/status-feedback/item.d.ts +2 -0
  475. package/status-feedback/item.js +36 -0
  476. package/status-feedback/motion.d.ts +2 -0
  477. package/status-feedback/motion.js +18 -0
  478. package/status-feedback/placement.d.ts +15 -0
  479. package/status-feedback/placement.js +9 -0
  480. package/status-feedback/popover.d.ts +34 -0
  481. package/status-feedback/popover.js +83 -0
  482. package/status-feedback/render.d.ts +7 -0
  483. package/status-feedback/render.js +44 -0
  484. package/status-feedback/status-feedback.scss +190 -0
  485. package/status-feedback/types.d.ts +51 -0
  486. package/status-feedback/types.js +0 -0
  487. package/styles/_activity-message.scss +46 -0
  488. package/styles/_alert.scss +35 -0
  489. package/styles/_built-in-palettes.scss +918 -0
  490. package/styles/_compositions.scss +132 -0
  491. package/styles/_control.scss +28 -0
  492. package/styles/_disclosure.scss +54 -0
  493. package/styles/_editor-counter.scss +68 -0
  494. package/styles/_editor-slider.scss +58 -0
  495. package/styles/_field-configurator.scss +290 -0
  496. package/styles/_filter-badge.scss +47 -0
  497. package/styles/_filter-controls.scss +119 -0
  498. package/styles/_icon-action.scss +28 -0
  499. package/styles/_loading.scss +20 -0
  500. package/styles/_motion.scss +58 -0
  501. package/styles/_palette.scss +69 -0
  502. package/styles/_primitives.scss +963 -0
  503. package/styles/_theme.scss +163 -0
  504. package/styles/_thresholds.scss +28 -0
  505. package/styles/_time-grid.scss +94 -0
  506. package/styles/_tokens.scss +22 -0
  507. package/styles/color-roles.d.ts +130 -0
  508. package/styles/color-roles.js +165 -0
  509. package/styles/legacy-pagination.css +112 -0
  510. package/styles/legacy-rating.css +49 -0
  511. package/styles.css +1 -0
  512. package/styles.scss +46 -0
  513. package/surfaces.d.ts +2 -0
  514. package/surfaces.js +198 -0
  515. package/surfaces.view.d.ts +63 -0
  516. package/svelte/UiComponent.server.js +109 -0
  517. package/svelte/UiComponent.svelte +70 -0
  518. package/svelte/UiComponent.svelte.d.ts +4 -0
  519. package/svelte-control.d.ts +5 -0
  520. package/svelte-control.js +18 -0
  521. package/svelte-props.d.ts +13 -0
  522. package/svelte-server.js +2 -0
  523. package/svelte-source.js +2 -0
  524. package/svelte.d.ts +9 -0
  525. package/svelte.js +93 -0
  526. package/switch/index.d.ts +14 -0
  527. package/switch/index.js +26 -0
  528. package/time-grid.d.ts +44 -0
  529. package/time-grid.js +114 -0
  530. package/timeline-track/_style.scss +121 -0
  531. package/timeline-track/component.d.ts +23 -0
  532. package/timeline-track/index.d.ts +2 -0
  533. package/timeline-track/index.js +139 -0
  534. package/timeline-track/model.d.ts +17 -0
  535. package/timeline-track/model.js +38 -0
  536. package/ui.css +2 -0
  537. package/vue-adapter.d.ts +36 -0
  538. package/vue-badge.d.ts +4 -0
  539. package/vue-badge.js +7 -0
  540. package/vue-control.d.ts +6 -0
  541. package/vue-control.js +17 -0
  542. package/vue-native-select.d.ts +9 -0
  543. package/vue-segmented-switch.d.ts +4 -0
  544. package/vue-segmented-switch.js +35 -0
  545. package/vue.d.ts +952 -0
  546. package/vue.js +320 -0
package/OWNERSHIP.md ADDED
@@ -0,0 +1,123 @@
1
+ # Shared UI ownership
2
+
3
+ `@revolist/ui` is the implementation owner for reusable product controls. Pro's
4
+ existing exports and leaf modules are compatibility adapters. Product code owns
5
+ values, validation, commands, persistence and domain layout.
6
+
7
+ AI prompt, suggestions, applied-request trail, action status, result and assistant compositions live in
8
+ `src/ai/`; `src/ai/_style.scss` owns their token-based presentation. Pro's AI
9
+ adapter owns interpretation, field policy, view commands, query execution and
10
+ view snapshots. Framework adapters and native mounting reuse the same TSX.
11
+
12
+ | Component family | Implementation owner under `src/` | Style owner under `src/` |
13
+ | --- | --- | --- |
14
+ | Native button, input, select, textarea, summary | `control-presentation.view.tsx`; Preact `native-control.tsx` | `styles/_primitives.scss`, `styles/_control.scss`, `_form.scss` |
15
+ | Button variants, icon button, toggle, group | `controls.tsx`, `buttons/` | `styles/_primitives.scss` |
16
+ | Icon | `icons/icon.tsx` | `styles/_primitives.scss` |
17
+ | Checkbox | `checkbox/index.ts` | `checkbox/checkbox.scss` |
18
+ | Switch | `switch/index.tsx` | `styles/_primitives.scss` |
19
+ | Radio group | `controls.tsx` | `_form.scss`, `styles/_compositions.scss` |
20
+ | Choice chips, segmented control, tabs | `choice-chips/`, `segmented-switch/`; semantic exports in `controls.tsx` | `styles/_primitives.scss` |
21
+ | Search | `search-input/native.view.tsx`; Preact `search-input/index.tsx` | `styles/_primitives.scss` |
22
+ | Number/date/time inputs, stepper | `controls.tsx`; grid scalar/counter adapters in `native-controls.view.tsx` | `_form.scss`, `styles/_editor-counter.scss` |
23
+ | Listbox, panes, split layout | `editor-layout/index.tsx`; neutral aliases in `controls.tsx` | `editor-layout/style.scss` |
24
+ | Form field, hint, error, section, disclosure | `form-controls/`, `controls.tsx` | `_form.scss`, `styles/_compositions.scss` |
25
+ | Chips | `form-controls/presentation.tsx` | `styles/_primitives.scss` |
26
+ | Scalar/range sliders | `filter/filters/slider/`, `native-controls.view.tsx` | `filter/filters/slider/_slider.scss`, `styles/_editor-slider.scss` |
27
+ | Calendar and date pickers | `calendar/`, `pickers.tsx` | `calendar/_calendar.scss`, `styles/_compositions.scss` |
28
+ | Dropdown, combobox, multi-select | `dropdown/`; compositions in `pickers.tsx` | `dropdown/editor-dropdown.style.scss`, `styles/_compositions.scss` |
29
+ | Color palette/picker | `color-palette/` | `color-palette/*.scss` |
30
+ | Resource picker, avatar | `resource-picker/`, `avatar/` | `resource-picker/resource-picker.scss`, `avatar/avatar.style.scss` |
31
+ | Dialog, popover, tooltip, menu, resize | `surfaces.view.tsx`, `dialog/`, `core/`; Preact compositions in `controls.tsx` and `pickers.tsx` | `_dialog.scss`, `styles/_primitives.scss`, `styles/_compositions.scss` |
32
+ | Toolbar, panel, empty state, alerts | `controls.tsx` | `styles/_compositions.scss` |
33
+ | Status feedback and badges | `status-feedback/`, `controls.tsx` | `status-feedback/status-feedback.scss`, `styles/_primitives.scss` |
34
+ | Loading | `native-controls.view.tsx`, `controls.tsx` | `styles/_loading.scss`, `styles/_compositions.scss` |
35
+ | Pagination, progress, rating | `pagination.ts`, `progress/`, `native-controls.view.tsx`, `controls.tsx` | `progress/_bar.scss`, `progress/_circular.scss`, `styles/legacy-rating.css`, `styles/legacy-pagination.css`, `styles/_compositions.scss` |
36
+ | BarChart, LineChart, AreaChart; distribution adapter and brush range | `distribution-chart/bar-chart.tsx`, `line-chart.tsx`, `area-chart.tsx`; shared `chart-frame.tsx` and `geometry.ts`; `brush-range/` | `distribution-chart/_distribution-chart.scss`, `brush-range/_brush-range.scss` |
37
+ | Option rows, legend, inline fields | `filter-controls.tsx` | `styles/_filter-controls.scss` |
38
+ | Weekly time grid and keyboard/paint gesture lifecycle | `time-grid.tsx` | `styles/_time-grid.scss` |
39
+ | Highlighted text input and scroll synchronization | `filter-controls.tsx` | `styles/_filter-controls.scss` |
40
+ | Theme tokens | `styles/_theme.scss` | `styles/_tokens.scss` installs light/dark scopes |
41
+
42
+ ## Renderer and stylesheet contracts
43
+
44
+ - Preact products use `@revolist/ui/native-control` when they need transparent
45
+ native attributes, native input/change events, or DOM refs. Semantic
46
+ compositions come from `@revolist/ui/preact` or their leaf entry.
47
+ - RevoGrid/Stencil templates use `renderControl(h, tag, attributes, ...children)`
48
+ or `controlAttributes` with their existing JSX factory. They retain Core VNodes.
49
+ - Element-returning hosts use the Preact mount adapters `createControl` or `createSearchInput`. Set the input type at
50
+ creation. Preserve the shared class when adding product classes.
51
+ - Charts keeps its native renderer. It normalizes controls through
52
+ `controlAttributes` and installs `native-styles.scss?inline` inside its control
53
+ hosts. These styles are scoped and include no Preact or Pro runtime.
54
+ - Standalone product stylesheet entries include `@revolist/ui/styles.scss`.
55
+ Products customize `--rv-ui-*`, `--rv-control-*`, and `--rv-search-input-*`
56
+ variables. Legacy selector-based Pivot fields include the same `control.scss`
57
+ mixin. Feature styles own layout and documented variants, not a second base.
58
+
59
+ ## Intentional product adapters
60
+
61
+ Working calendars, task/card/event forms, configurators, chart inspectors and
62
+ menus keep domain policy and data operations in their product. Large title
63
+ fields and toolbar layouts remain product compositions using shared primitives.
64
+ Grid cells, timeline event/task hit targets, dependency handles, card drag
65
+ surfaces, grid expansion and virtualization keep their product geometry.
66
+ `src/ownership.test.ts` records the explicit scene exceptions and rejects new
67
+ local primitive JSX/factories elsewhere. UI's native dependency boundary and
68
+ Charts' rendering boundary have separate assertions.
69
+
70
+ Changes to a shared owner need UI coverage and the affected product's existing
71
+ integration tests. Canonical suite selection is documented in `TESTING.md`.
72
+
73
+ History and export commands use UI's `SvgButton` (or `IconButton` convenience composition) for SVG, count badge and pointer/keyboard tooltip presentation. Element-returning adapters use `decorateIconAction`; Charts renders controls through Preact. Products supply localized labels, permissions, actions and history counts. `ToolbarGroup` groups commands with spacing; `ButtonGroup` remains the bordered choice composition. Both danger button variants use the same red outline presentation.
74
+
75
+ Structured filter adapters retain aggregation, matching, amount/date validation, timezone policy, preset meaning and commit transactions. UI receives explicit data and formatted labels. Expression parsing, syntax tokens, diagnostics and debounce remain in Pro; UI owns the highlighted input's geometry and scroll synchronization. TimeGrid owns keyboard focus and paint gesture cleanup; Pro expands visual buckets into selected hourly filter values. Legacy filter CSS classes remain adapter hooks, with theme aliases at the Pro boundary.
76
+
77
+ ## Grid-backed filter compositions stay in Pro
78
+
79
+ Selection lists and their search/select-all composition are owned by
80
+ `packages/pro/plugins/filter/filters/selection/list/`. They render the existing
81
+ RevoGrid `SelectionGrid`, including virtualization, grouping, option columns and
82
+ selection transactions. They must not be replaced with a shared checkbox list.
83
+ Faceted-list composition also stays in Pro; it already used native rows before
84
+ this migration. Both consume UI primitives for checkbox, search and progress.
85
+
86
+ The independent UI gallery contains no imitation selection filter.
87
+ Statistical/date preset meaning, expression parsing and time-matrix bucket
88
+ conversion remain Pro policy; generic option rows, highlighted input geometry,
89
+ distribution rendering and time-grid gestures remain UI presentation.
90
+
91
+ BarChart and LineChart are independent compact visual components, exported through the Preact entry and `@revolist/ui/bar-chart` / `@revolist/ui/line-chart`. Each owns its series rendering. The shared chart frame owns keyboard focus and tooltips; DistributionChart only dispatches to the selected standalone chart. BrushRange composes that adapter with the existing range slider; Pro retains bins, matching, date semantics and filter commits.
92
+
93
+ ### Field configurators
94
+
95
+ `src/field-configurator.tsx` owns field libraries, headings, lists, drag-ready rows, neutral items and icon/caption slots. `src/styles/_field-configurator.scss` owns presentation and UI-token fallbacks. Pivot configurator exports remain aliases; its SCSS mixin delegates to UI. Query rules, native policy inspection, field metadata icons, tooltips and grid drag/drop stay in Pivot. The gallery demonstrates these primitives independently.
96
+
97
+ Pivot configuration and chart query searchable fields both use `PivotDimensionsGrid` and Pro `TreeDataPlugin` in Pivot. The UI field library is a neutral disclosure/list shell, never a substitute for these grid-backed browsers.
98
+
99
+ Active filter badges use `filter-badge.tsx` (`FilterBadge` and `FilterBadgeInfoButton`) and `styles/_filter-badge.scss`. Pro owns filter state, localization, custom render values, slots and tooltip lifecycle; its old stylesheet is a compatibility import.
100
+
101
+ FilterBadge composes ChoiceChip; ChoiceChip owns optional info and close actions as siblings of the selection button. ChoiceChipInfoButton owns the common details action appearance.
102
+
103
+ Active filter badges in Pro, Audit History, Order Explorer, planning and Pivot compose shared Choice chips. Consumers retain filter state and layout only; chip shape, surfaces, font weight and actions belong to UI.
104
+
105
+ ChoiceChip, ChoiceChips options and FilterBadge accept optional `color`. UI owns colored selected text/border/tint; chip-badge filter descriptors only supply color values, labels and filter policy.
106
+
107
+ Link-style action buttons use `Button variant="link"` or `SvgButton variant="link"`. UI owns the borderless blue text, icon spacing, hover/focus and disabled presentation; grouped-filter TextIconButton is a compatibility adapter without local appearance CSS.
108
+
109
+ ## Interactive timeline track
110
+
111
+ `src/timeline-track/` owns controlled bar rendering, selection, pointer capture/movement/resizing, keyboard edits, numeric geometry helpers and track styles. Pro's Timeline editor adapter retains draft validation, localization and commits; its existing model helper exports forward to the shared model. The read-only cell timeline renderer remains in `cell-visuals/timeline.ts`.
112
+
113
+ ## Editable dialog composition
114
+
115
+ `dialog/dialog.parts.tsx` owns editable-name headers (including optional dialog caption), close controls and the standard action footer with start/end slots. `_dialog.scss` owns header insets, message separation and footer layout. Scheduler, Kanban and Gantt retain validation, permissions, translations and persistence, without local footer-button appearance overrides.
116
+
117
+ ## Selection lists
118
+
119
+ `selection-list.ts` exposes the general Listbox/option/group API backed by `editor-layout/index.tsx` and its existing stylesheet. Optional icon/label/description content lives in the shared option owner. Format Cells and generic gallery lists use the same markup, keyboard handling and styles; formatter-specific IDs and data policy stay in Pro.
120
+
121
+ ## Preact element construction
122
+
123
+ All shared UI markup is Preact TSX. Element-returning compatibility APIs mount the same TSX through `preact-mount.tsx`; they do not build parallel DOM trees. Lifecycle controllers may attach, position, focus and dispose rendered roots. Grid/Stencil VNode adapters retain the Core rendering contract. Charts controls use Preact through the same mount boundary; chart scene/export geometry remains scene-owned.
package/README.md CHANGED
@@ -1,3 +1,346 @@
1
- # Temporary Holding Version
1
+ # RevoGrid shared UI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Shared controls for Grid Pro, Pivot, Charts, Gantt, Scheduler, Kanban and standalone examples. The workspace uses source exports; `pnpm pack:public` prepares an independently installable, ESM distribution with JavaScript, declarations, CSS and Angular partial-compilation metadata. Preparing the archive does not publish it to a registry. Public availability does not change the existing Commercial license.
4
+
5
+ ## Entry points
6
+
7
+ ```ts
8
+ // No grid or global browser state required at import time.
9
+ // Preact is the required shared rendering peer.
10
+ import {
11
+ DialogController,
12
+ PopoverController,
13
+ attachMenuKeyboard,
14
+ } from '@revolist/ui/native';
15
+
16
+ // Optional Preact rendering adapters.
17
+ import { Button, Switch, Calendar, DateRangePicker } from '@revolist/ui/preact';
18
+
19
+ // Import once in a product's styles entry.
20
+ import '@revolist/ui/styles.scss';
21
+ ```
22
+
23
+ The root entry is the native entry. `tokens.scss` exposes tokens separately. The distribution preserves the existing exported subpaths. Import only declared package exports; unexported implementation files are not an API.
24
+
25
+ ## Inline badges
26
+
27
+ Use `Badge` from `@revolist/ui/preact` or `VueBadge` from
28
+ `@revolist/ui/vue-badge`. Both accept `variant="neutral"` for inactive counts,
29
+ `variant="accent"` for blue selected states, and `shape="pill"` (default) or
30
+ `shape="rounded"`. The default `solid` variant preserves existing badge tokens.
31
+ Vue renders the default slot and forwards native attributes and classes.
32
+
33
+ ## Component catalog
34
+
35
+ | Family | Components |
36
+ | ----------------- | ----------------------------------------------------------------------------------------------------------------------- |
37
+ | Actions | Button, IconButton, ToggleButton, ButtonGroup, Icon |
38
+ | Binary and choice | Checkbox, Switch, RadioGroup, ChoiceChips |
39
+ | Navigation | SegmentedControl, Tabs, TabPanel, Listbox, ListboxOption |
40
+ | Fields | TextInput, Textarea, SearchInput, NumberInput, NumberStepper, NativeSelect |
41
+ | Selection | Dropdown, Combobox, MultiSelect, Chip, RemovableChip, ResourcePicker |
42
+ | Numeric ranges | TimelineTrack, Slider, RangeSlider; native scalar-slider/counter adapters |
43
+ | Dates | Calendar and its header/day/month/year parts, DateInput, TimeInput, DateTimeInput, DatePicker, DateRangePicker |
44
+ | Appearance | ColorPalette, ColorPicker, Avatar |
45
+ | Forms | FormField, FieldHint, FieldError, FormSection, Disclosure, DisclosureSummary |
46
+ | Surfaces | Dialog, DialogHeader, DialogBody, DialogFooter, ConfirmDialog, Popover, Tooltip, Menu, MenuItem, MenuSeparator, Submenu |
47
+ | Composition | Toolbar, ToolbarGroup, ToolbarSeparator, SplitLayout, Pane, Panel, ResizeHandle |
48
+ | Feedback | Badge, CountBadge, StatusBadge, Alert, FeedbackPanel, Spinner, LoadingOverlay, EmptyState |
49
+ | Indicators | Pagination, ProgressBar, CircularProgress, Rating |
50
+
51
+ Native controllers own lifecycle, keyboard interaction, portal placement and cleanup. Preact adapters own rendered state, while product adapters own grid integration. Exported native rendering helpers accept the host's element factory so Charts can keep its existing DOM renderer.
52
+
53
+ See [OWNERSHIP.md](./OWNERSHIP.md) for implementation/style owners, renderer contracts and intentional product adapters.
54
+
55
+ ## Ownership and compatibility
56
+
57
+ - UI does not import Core, Pro, or another product. Dates and working-calendar calculations stay in `@revolist/dates`.
58
+ - Existing Pro exports and leaf modules forward to the shared owner. Grid edit events, focus preservation, popup coordination, remote loading and cell/column types stay in Pro adapters.
59
+ - Task/card/event editors, working-calendar editors, Pivot configurators and chart inspectors remain product compositions.
60
+ - Controlled inputs receive values and callbacks. Date controls use civil date/native input strings; products retain timezone conversion, storage and validation policy.
61
+ - Sliders distinguish live input and commit callbacks. Popup/dialog handles have explicit teardown, and returned cleanup functions release listeners.
62
+ - `--rv-ui-*` variables define semantic surfaces, text, focus and control tokens. Existing classes and legacy feature variable overrides remain supported.
63
+ - Use the separate native entry in Charts. Importing the Preact barrel in Charts would violate the dependency boundary.
64
+
65
+ ## Gallery and checks
66
+
67
+ The standalone gallery app lives in [`apps/ui-gallery`](../../apps/ui-gallery). Run `pnpm dev:ui` from the repository root, or `pnpm dev` from that app directory.
68
+
69
+ ```sh
70
+ pnpm --filter @revolist/ui-gallery dev
71
+ pnpm --filter @revolist/ui-gallery build
72
+ pnpm --filter @revolist/ui lint
73
+ pnpm --filter @revolist/ui test
74
+ pnpm --filter @revolist/ui-gallery test:browser
75
+ ```
76
+
77
+ The gallery shows default, compact, disabled, selected, mixed, invalid, read-only, loading, light/dark and RTL examples. The Chromium suite uses the built gallery and covers keyboard controls, nested overlays, focus return, multiple picker instances and narrow layouts. CI runs UI unit tests in the remaining-package group and browser tests alongside the existing Chromium integration job.
78
+
79
+ Colocated owner tests cover extracted implementations. Pro keeps consumer integration tests for its event adapters and compatibility exports. The build tooling bundles UI declarations into each product's `_shared/ui` directory so published types do not depend on this private workspace package.
80
+
81
+ The gallery also demonstrates filter building blocks without a grid: distribution charts with range brushes, generic option rows, weekly time grids and legends, inline field groups and highlighted text inputs. Import these from the Preact entry; consuming products supply data, localized text and domain policy.
82
+
83
+ Grid-backed selection and filter policy belong to Pro.
84
+
85
+ Compact `BarChart`, `LineChart` and `AreaChart` render independently of brush controls or grid instances. Import them from `@revolist/ui/preact` or their leaf entries (`@revolist/ui/bar-chart`, `@revolist/ui/line-chart`, `@revolist/ui/area-chart`). They accept explicit `data`, `ariaLabel`, height, selection flags and tooltip content. `DistributionChart` preserves the existing type-switching contract; `BrushRange` remains the slider composition. The gallery includes separate bar and line cards.
86
+
87
+ Field configurators use `FieldLibrary`, `FieldLibraryList`, `FieldGroup`, `FieldGroupHeading`, `FieldList`, `FieldRow`, `FieldItem`, and `FieldContent` from `@revolist/ui/field-configurator` (also in the Preact entry). They provide native disclosure, row structure and slots, not field metadata or query policy. Pivot compatibility exports delegate here; Pivot owns search policy, axis assignment, ordering and selection state.
88
+
89
+ ### Interactive timeline track
90
+
91
+ `TimelineTrack` from `@revolist/ui/timeline-track` (also exported through `preact`) renders controlled `{ id, event: { start, end, label? } }` rows. Supply a finite increasing `range`, optional selected ID and label callbacks, `onSelect`, and `onEventChange`. Event changes preserve extra event metadata. The component owns pointer movement, edge resizing, ArrowLeft/ArrowRight edits, selection presentation and range labels; consumers own draft validation, storage and commits. Import the common styles entry once. The Sliders gallery includes an interactive example.
92
+
93
+ ### Editable dialogs and standard actions
94
+
95
+ Compose `EditableDialogHeader`, `DialogBody`, and `DialogActionFooter` inside `DialogForm`. These parts are exported from `@revolist/ui/dialog/dialog.parts` and `@revolist/ui/preact`; they preserve the consumer's native dialog lifecycle and form callbacks. Scheduler, Kanban and Gantt use this composition.
96
+
97
+ The header accepts `titleId`, controlled `title`/`inputProps`, an accessible `inputLabel`, optional dialog `name` and description, and a close callback/label. Use `inputProps={false}` for a static heading. Native disabled/readonly semantics pass through.
98
+
99
+ The footer shows standard Cancel and submit Save actions by default. `cancel`, `save`, `deleteAction`, and `reset` accept labels and native button attributes/callbacks; set any action to `false` to hide it. Delete and Reset are opt-in and default to `type="button"`, so they never accidentally submit. `start` and `end` accept custom content on each side; `children` adds validation or other content above the action panel. Product translations and permissions remain explicit. See the Dialogs and floating surfaces gallery example for all actions, custom slots and hidden defaults.
100
+
101
+ ### Selection lists
102
+
103
+ `Listbox`, `ListboxOption`, and `ListboxGroup` are available from `@revolist/ui/selection-list` and the Preact entry. Options support `icon`, `label`, and `description` directly, or arbitrary children for custom content. Groups add visible headings and accessible group labels. List selection and ArrowUp/ArrowDown/Home/End handling share one owner, including disabled-option skipping. Plain text, rich and grouped variants are demonstrated together in the Selection list gallery example. Format Cells consumes this same option API; it has no separate selection-list implementation. Existing EditorList and content-wrapper imports remain compatible.
104
+
105
+ ### Interface colors
106
+
107
+ See [Colors and usage](COLORS.md) for semantic roles, theming, and compatibility overrides. The gallery header links to the independent Colors page (`?page=colors`).
108
+
109
+ Built-in product defaults live in named `src/color-palette/*-palettes.ts` modules. The Colors page shows each palette's values, usage, and consumers. Products import purpose-specific constants or the generated `@revolist/ui/palettes.scss` lookup; run `pnpm --filter @revolist/ui generate:palettes` after changing definitions. `check:palettes` verifies the generated source is current.
110
+
111
+ ## Accessibility
112
+
113
+ See [Accessibility review and integration requirements](ACCESSIBILITY.md) for tested coverage, remaining gaps, and consumer responsibilities. Automated gallery checks are part of the shared UI browser suite.
114
+
115
+ ## Motion
116
+
117
+ See [Shared UI motion](MOTION.md) for the component review, timings, and disable policy. Add `data-rv-ui-motion="off"` to the document or a region to disable motion; OS reduced motion is always respected. The gallery includes a Motion selector.
118
+
119
+ ### Busy buttons
120
+
121
+ `Button`, `IconButton`, `ToggleButton`, `SvgButton` and `ButtonControl` accept `busy?: boolean`. Set `busy` while an action is pending, then clear it when the action completes (including failure). A loading ring appears, the accessible name stays intact, and native disabling blocks clicks, keyboard activation and form submission. Busy buttons retain their normal variant colors; an explicit `disabled` prop still takes precedence visually and remains disabled after busy clears. The same option is supported by `createControl(document, 'button', { busy: true })`.
122
+
123
+ ```tsx
124
+ <Button variant="primary" busy={saving} onClick={save}>Save changes</Button>
125
+ ```
126
+
127
+ The ring inherits the button text color. Motion Off (`data-rv-ui-motion="off"`) and `prefers-reduced-motion` keep the loading ring visible without spinning. Busy state is controlled by the caller; it does not start or finish an asynchronous task itself.
128
+
129
+ ## Standalone framework controls
130
+
131
+ Import `@revolist/ui/styles.css` once for compiled standard styles. The public build bundles private date/chart utilities; customers do not need private workspace packages or a TypeScript/Sass source compiler. The public distribution includes its Preact renderer and declarations; consumers do not need to install Preact. React, Vue, Angular and Svelte are optional peers used only by their adapter subpaths.
132
+
133
+ ```ts
134
+ import { createControl, applyControlPresentation } from '@revolist/ui';
135
+ import { ButtonControl, Input, Select, TextArea } from '@revolist/ui/react-control';
136
+ import { vRvControl } from '@revolist/ui/vue-control'; // <button v-rv-control>
137
+ import { UiControlDirective } from '@revolist/ui/angular-control'; // standalone imports; <button rvControl>
138
+ import { rvControl } from '@revolist/ui/svelte-control'; // <button use:rvControl>
139
+ import '@revolist/ui/styles.css';
140
+ ```
141
+
142
+ Each adapter preserves native elements, events, values and form bindings. React controls forward native refs. Vue and Angular directives and the Svelte action retain native refs and bindings. `applyControlPresentation(root)` handles existing static toolbar HTML; call it after replacing that HTML or changing a control type.
143
+
144
+ ## Build and release preparation
145
+
146
+ Run `pnpm --dir packages/ui pack:public` from the monorepo, then `pnpm --dir packages/ui test:public`. The generated public package is `dist/`, and the archive is `artifacts/revolist-ui-<version>.tgz`. The generated distribution manifest declares public access and contains no workspace dependencies.
147
+
148
+ Before publication, standalone repositories consume an identical archive in their own `vendor/` directory using relative `file:` dependencies and a lockfile generated against that real archive. These paths are portable with the cloned repository. Include its vendor archive when copying a starter out of that repository. After an authorized registry release, dependencies can switch to the published version and locks can be regenerated from the registry. Do not substitute unverified registry URLs or integrity values for the prepared archive.
149
+
150
+ The Publish NPM workflow includes UI in `all` releases and supports a standalone `ui` selection. It applies the release tag version, runs the public build and archive consumer checks, then signs and publishes the compiled `dist/` package to npm with public access using the `NPM_TOKEN` repository secret. Local build and preparation scripts do not publish. Once the release is available, demos can install `@revolist/ui` from npm with their required framework peers.
151
+
152
+ ## Vue component wrappers
153
+
154
+ `@revolist/ui/vue` exposes Vue wrappers for the Preact component catalog and the
155
+ standalone number, mask, duration, temporal, assignee and Markdown editors.
156
+ These wrappers retain the existing Preact implementation, bundled in the public
157
+ distribution, and require Vue. Use `vue-control` for native HTML controls that
158
+ only need presentation;
159
+ its runtime presentation helpers do not import Preact.
160
+
161
+ ```vue
162
+ <script setup lang="ts">
163
+ import { ref } from 'vue';
164
+ import { Dropdown, DatePicker, Dialog } from '@revolist/ui/vue';
165
+ import '@revolist/ui/styles.css';
166
+
167
+ const status = ref('open');
168
+ const source = [
169
+ { value: 'open', label: 'Open' },
170
+ { value: 'closed', label: 'Closed' },
171
+ ];
172
+ </script>
173
+
174
+ <template>
175
+ <Dropdown v-model="status" :source="source">
176
+ <template #option="{ option, selected }">
177
+ <strong>{{ option.label }}</strong>
178
+ <span v-if="selected"> Selected</span>
179
+ </template>
180
+ </Dropdown>
181
+ </template>
182
+ ```
183
+
184
+ - Values, callback props and configuration keep their existing contracts.
185
+ `v-model` additionally connects Dropdown/Combobox/MultiSelect, the scalar
186
+ inputs, Switch/Checkbox, choice controls, rating, color and date pickers.
187
+ ResourcePicker uses `selectedResourceIds`; CalendarPicker uses `selected`.
188
+ RangeSlider keeps `fromValue`, `toValue`, `onRangeChange` and `onRangeCommit`;
189
+ it does not flatten a two-handle range into a scalar model.
190
+ - Default slots supply `children`; named content slots supply the matching
191
+ component prop (for example Dialog's `footer` and Switch's `label`). Dropdown
192
+ has scoped `option` (`option`, `selected`), `value` (`option`), `content`
193
+ (`content.id`, `content.close`) and `noResults` slots. ReorderList has `item`
194
+ and `handle` slots (`item`, `index`). Use Vue slots for Vue VNodes, rather than
195
+ returning them from a Preact render callback.
196
+ - Vue owns slot content via Teleport, preserving injection and reactive updates.
197
+ Preact owns the surrounding control. Mount and slot boundaries add elements
198
+ styled with `display: contents`; DOM code depending on direct-child selectors
199
+ must account for these boundaries. Supply explicit accessible labels and input
200
+ associations instead of relying on Preact inspecting Vue slot VNodes.
201
+ - The exposed `element` ref is the mount boundary, not the component's internal
202
+ input. Existing explicit `inputRef` callback props remain available.
203
+ - Wrappers render empty boundaries on the server and mount interactive UI on the
204
+ client. They do not provide server-rendered component content.
205
+ - Unmounting disposes the Preact root and its effects, portals and controllers.
206
+
207
+ `createVueAdapter` is exported for application-owned Preact compositions using the
208
+ same lifecycle. The catalog's wrapper factory calls are marked pure for consumer
209
+ bundle tree shaking.
210
+
211
+ The focused browser check runs against its own framework fixture, independently of the
212
+ Preact gallery:
213
+
214
+ ```sh
215
+ pnpm --filter @revolist/ui-gallery exec playwright test --config ../../tests/shared-ui/playwright.framework-adapters.config.ts
216
+ ```
217
+
218
+ ## React, Angular and Svelte component adapters
219
+
220
+ All adapters reuse the existing Preact controls and their interaction lifecycle.
221
+ Import `@revolist/ui/styles.css` once. Install your host framework;
222
+ React component wrappers also require `react-dom`. The primitive `*-control`
223
+ entries remain available for framework-owned native elements.
224
+
225
+ ### React
226
+
227
+ `@revolist/ui/react` provides named components matching the shared catalog and
228
+ standalone editors. Props and controlled callbacks keep their shared names.
229
+ React owns children and custom content through portals, preserving React context
230
+ and state. `renderPlaceholder` receives only placeholder text; `renderSelectedValue`
231
+ receives only selected options. Built-in Preact child VNodes are not passed to React. Dropdown render callbacks omit the Preact element-factory argument:
232
+
233
+ ```tsx
234
+ import { Dropdown, Dialog } from '@revolist/ui/react';
235
+
236
+ <Dropdown
237
+ source={source}
238
+ value={selected}
239
+ onChange={setSelected}
240
+ renderOption={(option, selected) => (
241
+ <strong aria-current={selected}>{option.label}</strong>
242
+ )}
243
+ />
244
+
245
+ <Dialog open={open} title="Edit" closeLabel="Close" onClose={close}
246
+ footer={<button onClick={save}>Save</button>}>
247
+ <Editor />
248
+ </Dialog>
249
+ ```
250
+
251
+ Wrappers expose `{ element }` through their React ref: this is the mount boundary,
252
+ not an internal input. Shared control callbacks receive native DOM events; they
253
+ do not synthesize React events. NativeSelect renders directly in React to retain
254
+ native `<option>` children and also offers `onValueChange`.
255
+
256
+ ### Angular
257
+
258
+ Import standalone `UiComponent` and `UiSlotDirective` from `@revolist/ui/angular`.
259
+ The generic `<rv-ui>` host accepts any shared catalog name in `component` and its
260
+ controlled values/configuration in `props`. `valueChange` forwards the component's
261
+ primary model callback; `uiEvent` forwards `{ name, args }` for supplied `on*`
262
+ callbacks, the primary model callback, and `onClose`. Supplied callbacks still run
263
+ and retain their return values. Use immutable `props` updates so Angular can
264
+ observe configuration changes.
265
+
266
+ ```html
267
+ <rv-ui component="Dropdown" [props]="{ source: source, value: selected }"
268
+ (valueChange)="selected = $any($event)">
269
+ <ng-template rvUiSlot="option" let-option="option" let-selected="selected">
270
+ <strong>{{ option.label }}</strong>
271
+ </ng-template>
272
+ </rv-ui>
273
+ ```
274
+
275
+ Use `rvUiSlot="default"` for children, `rvUiSlot="footer"` for a dialog footer,
276
+ and the same scoped option/value/content slots described for Vue. Angular keeps
277
+ ownership and change detection of embedded views after they move into controls.
278
+ Use `<select rvControl>` for Angular-owned native option templates; the generic
279
+ host rejects NativeSelect template slots instead of nesting options in an invalid
280
+ slot container. Public Angular entries ship partial-compilation metadata.
281
+
282
+ ### Svelte 5
283
+
284
+ `@revolist/ui/svelte` exports `UiComponent`, a generic catalog host. Supply shared
285
+ props and callbacks, or use `onValueChange` to observe the primary controlled
286
+ callback. `onUiEvent` receives the same event envelope as Angular. Named snippets
287
+ use the same scope names as Angular/Vue slots. Replace the `props` object when
288
+ changing configuration.
289
+
290
+ ```svelte
291
+ <script lang="ts">
292
+ import { UiComponent } from '@revolist/ui/svelte';
293
+ let selected = $state('open');
294
+ const source = [{ value: 'open', label: 'Open' }];
295
+ </script>
296
+
297
+ <UiComponent component="Dropdown" props={{ source, value: selected }}
298
+ onValueChange={value => selected = value as string} slots={{ option }} />
299
+
300
+ {#snippet option(scope: Record<string, any>)}
301
+ <strong>{scope.option.label}</strong>
302
+ {/snippet}
303
+ ```
304
+
305
+ Default children and named snippets remain Svelte-owned, with their original
306
+ context and reactive updates. NativeSelect renders options directly in Svelte.
307
+ The public package supplies a Svelte source condition plus precompiled browser
308
+ and server entry points, so server imports do not execute client mounting code.
309
+
310
+ ### Rendering boundaries and verification
311
+
312
+ Complex wrappers mount on the client and render empty boundaries on the server;
313
+ full server-rendered control markup is not provided. Native selects retain their
314
+ framework's native rendering. Content uses additional elements styled with
315
+ `display: contents`; direct-child DOM selectors must account for those elements.
316
+ Provide explicit labels and associations when child-VNode inspection would
317
+ otherwise determine them. Unmounting releases Preact effects and portals along
318
+ with the host framework's content. Angular/Svelte's generic hosts include the
319
+ catalog lookup; React's named factory calls are marked pure for tree shaking.
320
+
321
+ `UiComponentName` and `UiComponentProps<Name>` are available from the Angular,
322
+ Svelte and framework entries for explicitly typing application configurations.
323
+ The dedicated browser fixture covers all four frameworks:
324
+
325
+ ```sh
326
+ pnpm --filter @revolist/ui lint:svelte
327
+ pnpm --filter @revolist/ui-gallery exec playwright test --config ../../tests/shared-ui/playwright.framework-adapters.config.ts
328
+ ```
329
+
330
+ ### PDF viewer
331
+
332
+ `PdfViewer` adds PDF rendering, text selection/search, page navigation, zoom/fit,
333
+ rotation, local files, download and printing. It is available through the Preact,
334
+ React and Vue entries and the Angular/Svelte component catalog. Install the optional
335
+ `pdfjs-dist` peer and provide its matching worker URL. See
336
+ [`src/pdf-viewer/README.md`](src/pdf-viewer/README.md) for setup, API and lifecycle.
337
+
338
+
339
+ Pagination supports `boundaryButtons` to show or hide the first/last page buttons.
340
+ The native `PaginationPanel` (and Pro pagination) defaults to `true`; the framework
341
+ `Pagination` component defaults to `false` to preserve its existing appearance.
342
+ Set `boundaryButtons={false}` to keep only previous/next controls. With
343
+ `navigation={false}`, all navigation buttons are hidden. Framework `Pagination`
344
+ also accepts localized `firstLabel`/`lastLabel` and children for a page field or selector.
345
+
346
+ `DateTimeField` and the native date/time popup adapter share a compact time selector: typed entry plus keyboard-accessible hour/minute columns, optional seconds (`precision: 'second'`) and localized AM/PM (`timeFormat: '12h'` or `'locale'`). `minTime`, `maxTime` and `timeStep` constrain each choice; intervals are anchored to `minTime` when supplied. Single datetime pickers place the same panel beside the calendar and stack it on narrow screens. Existing `autoApply`, `showActions`, `required` and action labels retain their behavior. Override `text.hours`, `minutes`, `seconds`, `dayPeriod` and `noTimes` alongside the existing time labels for translations. Vue, React and Angular fields use the same shared implementation.
package/_button.scss ADDED
@@ -0,0 +1,75 @@
1
+ @use './styles/motion';
2
+ /**
3
+ * Buttons styling
4
+ */
5
+
6
+ @use './variables' as *;
7
+
8
+ .rv-button {
9
+ border: 1px solid var(--rv-ui-btn-outline-border);
10
+ border-radius: 5px;
11
+ background-color: var(--rv-ui-btn-outline-bg, transparent);
12
+ color: var(--rv-ui-btn-outline-fg, inherit);
13
+ transition:
14
+ background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
15
+ color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
16
+ border-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease),
17
+ opacity var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease);
18
+
19
+ &:not(.disabled) {
20
+ cursor: pointer;
21
+ }
22
+
23
+ &.disabled {
24
+ opacity: 0.5;
25
+ }
26
+
27
+ &.small {
28
+ padding: 3px 6px;
29
+ min-width: 30px;
30
+ font-size: 16px;
31
+ }
32
+
33
+ &:not(.small) {
34
+ padding: 5px 20px;
35
+ font-size: 14px;
36
+ }
37
+
38
+ &:not(.disabled):hover {
39
+ background-color: var(--rv-ui-btn-outline-bg-hover, $button-alt-bg-light-hover);
40
+ border-color: var(--rv-ui-btn-outline-border-hover);
41
+ }
42
+
43
+ &.dark {
44
+ border-color: var(--rv-ui-btn-outline-border, $button-alt-bg-light);
45
+ background-color: var(--rv-ui-btn-outline-bg, $background-color-dark);
46
+ color: var(--rv-ui-btn-outline-fg, $text-color-dark);
47
+ }
48
+
49
+ &.solid {
50
+ border-color: transparent;
51
+ background-color: var(--rv-ui-btn-bg);
52
+ color: var(--rv-ui-btn-fg);
53
+
54
+ &:not(.disabled):hover {
55
+ background-color: var(--rv-ui-btn-bg-hover, $button-alt-bg-light);
56
+ border-color: transparent;
57
+ }
58
+ }
59
+
60
+ &:focus-visible {
61
+ outline: none;
62
+ box-shadow: 0 0 0 2px var(--rv-ui-focus-ring);
63
+ }
64
+ }
65
+
66
+ revo-grid[theme^='dark'] .rv-button:not(.solid) {
67
+ border-color: var(--rv-ui-btn-outline-border, $button-alt-bg-light);
68
+ background-color: var(--rv-ui-btn-outline-bg, $background-color-dark);
69
+ color: var(--rv-ui-btn-outline-fg, $text-color-dark);
70
+
71
+ &:hover {
72
+ background-color: var(--rv-ui-btn-outline-bg-hover, $button-alt-bg-light);
73
+ border-color: var(--rv-ui-btn-outline-border-hover, $button-alt-bg-light);
74
+ }
75
+ }