@revolist/ui 4.0.2-rc → 4.0.4-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.
- package/LICENSE +21 -0
- package/README.md +345 -263
- package/_chunks/{calendar-CpaUK7w1.js → calendar-xpZ0v3xf.js} +39 -29
- package/_chunks/{chart-frame-BC99KjGa.js → chart-frame-Cmc7xU1i.js} +16 -13
- package/_chunks/{choice-chips-Cs4D-3nH.js → choice-chips-CHQTUdLs.js} +10 -10
- package/_chunks/clock-BOhPNlW3.js +4 -0
- package/_chunks/{color-palette-BBMFmUNA.js → color-palette-D8vyPfld.js} +1 -1
- package/_chunks/{color-picker-D90Jg-M8.js → color-picker-CudqPYZo.js} +10 -10
- package/_chunks/{component-YDcfoOLz.js → component-C_T2VN5u.js} +182 -178
- package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BMOOmqx5.js} +0 -4
- package/_chunks/control-AHKXD5Eu.js +93 -0
- package/_chunks/{control-tooltip-ztgmsG7H.js → control-tooltip-uscKfAnV.js} +15 -15
- package/_chunks/{controls-DIum-E66.js → controls-DsNi8V8I.js} +144 -129
- package/_chunks/{date-control-BJSzu79z.js → date-control-DrVFX13g.js} +1 -1
- package/_chunks/{date-time-BxPJusp9.js → date-time-qIhp5vaX.js} +143 -145
- package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
- package/_chunks/{dialog.parts-DBqo3Qwb.js → dialog.parts-CKGkC5zP.js} +20 -20
- package/_chunks/{duration-87U2EoMS.js → duration-CL68Em0o.js} +16 -15
- package/_chunks/{editor-popup-D3JdS8l3.js → editor-popup-WDdtVDNA.js} +5 -5
- package/_chunks/field-context-D57PnBbH.js +5 -0
- package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount--RTLIqE-.js} +1 -1
- package/_chunks/history-controls-B3u3INEK.js +27 -0
- package/_chunks/mount-DQ1cpppK.js +257 -0
- package/_chunks/native-control-C_yok8_-.js +605 -0
- package/_chunks/{number-input-BeIadZuL.js → number-input-BKwA5FnM.js} +2 -2
- package/_chunks/{picker-DpP7iQLA.js → picker-h1P5RUgp.js} +2 -2
- package/_chunks/popup-CT2uD3go.js +367 -0
- package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-DZgmaic0.js} +1 -1
- package/_chunks/render-m5eMMwFR.js +83 -0
- package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-CSlqAGHw.js} +1 -1
- package/_chunks/request-trail-DSlFix6i.js +618 -0
- package/_chunks/rich-text-CH7gIqOS.js +636 -0
- package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
- package/_form.scss +1 -1
- package/ai/_chat.scss +195 -0
- package/ai/_style.scss +105 -34
- package/ai/chat.d.ts +63 -0
- package/ai/components.d.ts +19 -3
- package/ai/index.d.ts +2 -0
- package/ai/index.js +3 -3
- package/ai/mount.d.ts +30 -1
- package/ai/prompt-history.d.ts +13 -0
- package/ai/transcript.d.ts +25 -0
- package/ai/translations.d.ts +1 -1
- package/angular/angular.js +0 -3
- package/assignee/index.js +34 -35
- package/buttons/delete-button.d.ts +2 -1
- package/buttons/delete-button.js +1 -1
- package/buttons/remove-button.js +1 -1
- package/buttons/svg-button.d.ts +1 -0
- package/buttons/svg-button.js +5 -5
- package/calendar/_calendar.scss +7 -2
- package/calendar/calendar.js +1 -1
- package/calendar/index.js +2 -2
- package/choice-chips/index.js +1 -1
- package/color-palette/color-palette.js +1 -1
- package/color-palette/color-picker.js +2 -2
- package/component-catalog.d.ts +16 -5
- package/control-attributes.js +7 -7
- package/controls.d.ts +8 -6
- package/controls.js +3 -3
- package/core/editor-popup.js +1 -1
- package/date-time/index.js +1 -1
- package/date-time/style.scss +4 -4
- package/dialog/dialog.dom.js +8 -8
- package/dialog/dialog.parts.js +1 -1
- package/distribution-chart/area-chart.js +1 -1
- package/distribution-chart/bar-chart.d.ts +5 -2
- package/distribution-chart/bar-chart.js +7 -3
- package/distribution-chart/chart-frame.d.ts +2 -1
- package/distribution-chart/line-chart.js +1 -1
- package/dropdown/content.d.ts +2 -1
- package/dropdown/content.js +1 -142
- package/dropdown/control.d.ts +14 -0
- package/dropdown/control.js +1 -0
- package/dropdown/control.view.d.ts +6 -0
- package/dropdown/dropdown.types.d.ts +4 -0
- package/dropdown/editor-dropdown.style.scss +37 -9
- package/dropdown/index.d.ts +1 -1
- package/dropdown/index.js +3 -4
- package/dropdown/lookup-field.js +1 -1
- package/dropdown/popup.js +1 -141
- package/duration/index.js +1 -1
- package/duration/style.scss +1 -1
- package/editor-actions.js +1 -1
- package/field-configurator.js +6 -6
- package/fieldset.d.ts +3 -0
- package/filter/filters/slider/single.js +1 -1
- package/filter-badge.js +1 -1
- package/filter-controls.js +7 -7
- package/form-controls/field-context.d.ts +5 -0
- package/form-controls/index.js +7 -12
- package/form-controls/index.view.d.ts +2 -4
- package/form-controls/presentation.js +51 -43
- package/formatting/index.js +25 -21
- package/framework.js +215 -207
- package/history-controls.d.ts +14 -0
- package/history-controls.js +1 -0
- package/masked-input/index.js +1 -1
- package/native-control.d.ts +6 -4
- package/native-control.js +3 -26
- package/native-styles.css +1 -1
- package/native.js +31 -30
- package/number-input/index.js +1 -1
- package/package.json +53 -14
- package/pagination.d.ts +3 -0
- package/pagination.js +43 -33
- package/pdf-viewer/index.js +1 -1
- package/pdf-viewer/style.scss +3 -4
- package/preact.d.ts +2 -0
- package/preact.js +62 -62
- package/rating-choice.js +1 -1
- package/react-control.d.ts +0 -1
- package/react-control.js +2 -2
- package/react.d.ts +13 -3
- package/react.js +71 -88
- package/reorder-list.js +1 -1
- package/resource-picker/resource-picker-popup.js +1 -1
- package/resource-picker/resource-picker.js +4 -4
- package/resource-picker/resource-picker.scss +6 -3
- package/rich-text/engine.d.ts +16 -19
- package/rich-text/index.d.ts +7 -7
- package/rich-text/index.js +1 -1
- package/rich-text/model.d.ts +4 -3
- package/rich-text/render-model.d.ts +4 -5
- package/rich-text/style.scss +3 -12
- package/rich-text/toolbar.d.ts +6 -6
- package/rich-text/translations.d.ts +3 -15
- package/select.d.ts +20 -0
- package/select.js +1 -0
- package/status-feedback/exit-snapshot.js +4 -4
- package/status-feedback/index.js +2 -2
- package/status-feedback/popover.js +10 -10
- package/status-feedback/render.js +3 -44
- package/status-feedback/status-feedback.scss +7 -0
- package/status-feedback/types.d.ts +4 -0
- package/status-feedback/use-auto-dismiss.d.ts +3 -0
- package/styles/_compositions.scss +3 -1
- package/styles/_control.scss +12 -4
- package/styles/_primitives.scss +9 -8
- package/styles.css +1 -1
- package/surfaces.js +45 -45
- package/svelte/UiComponent.server.js +1 -48
- package/svelte/UiComponent.svelte +0 -21
- package/svelte.js +33 -68
- package/time-grid.js +1 -1
- package/timeline-track/component.d.ts +5 -1
- package/timeline-track/index.js +71 -54
- package/timeline-track/model.d.ts +9 -0
- package/timeline-track/model.js +10 -1
- package/ui.css +1 -1
- package/vue.d.ts +24 -5
- package/vue.js +140 -164
- package/_chunks/compat.module-DDB2pm9O.js +0 -229
- package/_chunks/dropdown-voWqmwAe.js +0 -357
- package/_chunks/mount-DZe_6VtR.js +0 -90
- package/_chunks/request-trail-IdNiFvKH.js +0 -347
- package/_chunks/rich-text-BzI1DyfF.js +0 -477
- package/react-native-select.d.ts +0 -6
- package/rich-text/syntax.d.ts +0 -2
- package/vue-native-select.d.ts +0 -9
package/README.md
CHANGED
|
@@ -1,346 +1,428 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Revo UI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**RevoGrid's UI component library for financial apps, reporting dashboards, and project management.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Compose data-rich workspaces with shared controls, pickers, charts, timelines, dialogs, and feedback. Use React, Vue, Angular, Svelte, Preact, or vanilla TypeScript. Revo UI is published as the public npm package **[`@revolist/ui`](https://www.npmjs.com/package/@revolist/ui)** and is MIT licensed for personal and commercial projects.
|
|
6
|
+
|
|
7
|
+
[GitHub repository](https://github.com/revolist/revo-ui) · [npm package](https://www.npmjs.com/package/@revolist/ui) · [Live components](https://ui.rv-grid.com/components/buttons/) · [Interactive overview](https://ui.rv-grid.com/) · [Framework guides](https://ui.rv-grid.com/frameworks/) · [RevoGrid](https://rv-grid.com/) · [Pro documentation](https://pro.rv-grid.com/)
|
|
8
|
+
|
|
9
|
+
[](https://ui.rv-grid.com/)
|
|
10
|
+
|
|
11
|
+
Explore the [Revo UI gallery](https://ui.rv-grid.com/) for live previews, component variants, and expandable code examples. The [gallery repository](https://github.com/revolist/revo-ui) contains the gallery app and generated component API documentation.
|
|
12
|
+
|
|
13
|
+
## Contents
|
|
14
|
+
|
|
15
|
+
- [Getting started](#getting-started)
|
|
16
|
+
- [Framework integrations](#framework-integrations)
|
|
17
|
+
- [Components](#components)
|
|
18
|
+
- [Complete component reference](#complete-component-reference)
|
|
19
|
+
- [Usage contracts](#usage-contracts)
|
|
20
|
+
- [Buttons and navigation](#buttons-and-navigation)
|
|
21
|
+
- [Dropdowns with user images](#dropdowns-with-user-images)
|
|
22
|
+
- [Advanced slider](#advanced-slider)
|
|
23
|
+
- [Conditional chart colors](#conditional-chart-colors)
|
|
24
|
+
- [Interactive timeline](#interactive-timeline)
|
|
25
|
+
- [Theming, sizing, and motion](#theming-sizing-and-motion)
|
|
26
|
+
- [Accessibility and localization](#accessibility-and-localization)
|
|
27
|
+
- [RevoGrid products](#revogrid-products)
|
|
28
|
+
- [Repository and support](#repository-and-support)
|
|
29
|
+
- [Licensing](#licensing)
|
|
30
|
+
|
|
31
|
+
## Getting started
|
|
32
|
+
|
|
33
|
+
Release publishing sends `@revolist/ui` to both npm and GitHub Packages. npm is the default for public installation. To install the GitHub Packages copy, configure `@revolist:registry=https://npm.pkg.github.com` and authenticate with a token that has package read access. GitHub package visibility is managed separately in GitHub's package settings.
|
|
34
|
+
|
|
35
|
+
Install the public package from npm. The published package bundles its Preact rendering runtime; install your application's host framework separately. React adapters require both `react` and `react-dom`. Install `preact` separately when using Preact in your own application code.
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
pnpm add @revolist/ui
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Import the shared stylesheet once in your application entry point:
|
|
6
42
|
|
|
7
43
|
```ts
|
|
8
|
-
|
|
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';
|
|
44
|
+
import '@revolist/ui/styles.css';
|
|
21
45
|
```
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+
A controlled React example:
|
|
24
48
|
|
|
25
|
-
|
|
49
|
+
```tsx
|
|
50
|
+
import { useState } from 'react';
|
|
51
|
+
import { Button, TextInput } from '@revolist/ui/react';
|
|
52
|
+
|
|
53
|
+
export function ReportName() {
|
|
54
|
+
const [name, setName] = useState('Monthly revenue');
|
|
55
|
+
return (
|
|
56
|
+
<>
|
|
57
|
+
<TextInput aria-label="Report name" value={name} onValueChange={setName} />
|
|
58
|
+
<Button rounded variant="primary" onClick={() => console.log(name)}>
|
|
59
|
+
Create report
|
|
60
|
+
</Button>
|
|
61
|
+
</>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
```
|
|
26
65
|
|
|
27
|
-
|
|
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.
|
|
66
|
+
Controls can be used without a RevoGrid instance. Grid cell templates, providers, row data, and product-specific scheduling logic stay in their owning product packages.
|
|
32
67
|
|
|
33
|
-
##
|
|
68
|
+
## Framework integrations
|
|
34
69
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
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 |
|
|
70
|
+
| Framework | Entry point | Integration | Guide |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| React | `@revolist/ui/react` | Named React components; controlled props, callbacks, children, and custom content. | [React usage](https://ui.rv-grid.com/frameworks/react/) |
|
|
73
|
+
| Vue | `@revolist/ui/vue` | Named Vue components, events and slots; declared value models support `v-model`. | [Vue usage](https://ui.rv-grid.com/frameworks/vue/) |
|
|
74
|
+
| Angular | `@revolist/ui/angular` | Standalone `UiComponent` host with `component`, `props`, `uiEvent`, `valueChange`, and `rvUiSlot` templates. | [Angular usage](https://ui.rv-grid.com/frameworks/angular/) |
|
|
75
|
+
| Svelte 5 | `@revolist/ui/svelte` | `UiComponent` host with reactive props, callbacks, and content snippets. | [Svelte usage](https://ui.rv-grid.com/frameworks/svelte/) |
|
|
76
|
+
| Preact | `@revolist/ui/preact` | Direct components with Preact state, hooks, and render callbacks. | [Preact usage](https://ui.rv-grid.com/frameworks/preact/) |
|
|
77
|
+
| Vanilla TypeScript | `@revolist/ui/framework` | `createFrameworkMount` and `uiComponents`; call `render` to update and `destroy` on disposal. | [Vanilla usage](https://ui.rv-grid.com/frameworks/vanilla-typescript/) |
|
|
50
78
|
|
|
51
|
-
|
|
79
|
+
Additional entries include `@revolist/ui/native` for DOM controllers and presentation helpers, `@revolist/ui/react-control` / `vue-control` / `angular-control` / `svelte-control` for framework-owned controls, and dedicated entries such as `@revolist/ui/select`, `@revolist/ui/timeline-track`, and `@revolist/ui/pdf-viewer`. Use the installed package's TypeScript declarations for exact prop types.
|
|
52
80
|
|
|
53
|
-
|
|
81
|
+
## Components
|
|
54
82
|
|
|
55
|
-
|
|
83
|
+
Browse the same component families as the public gallery. Each page includes live previews, variants, and usage examples.
|
|
56
84
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
85
|
+
| Component family | What you can build |
|
|
86
|
+
| --- | --- |
|
|
87
|
+
| [Buttons](https://ui.rv-grid.com/components/buttons/) | Actions, icon buttons, toggles, and button groups. |
|
|
88
|
+
| [Inputs and forms](https://ui.rv-grid.com/components/inputs-and-forms/) | Text, search, numbers, validation, and field layouts. |
|
|
89
|
+
| [Selects and pickers](https://ui.rv-grid.com/components/selects-chips-and-resources/) | Searchable dropdowns, multiple selections, user images, and assignees. |
|
|
90
|
+
| [Selection controls](https://ui.rv-grid.com/components/selection-controls/) | Checkboxes, switches, radio buttons, and choice chips. |
|
|
91
|
+
| [Tabs and lists](https://ui.rv-grid.com/components/tabs-and-lists/) | Tabs, segmented controls, and selectable lists. |
|
|
92
|
+
| [Sliders](https://ui.rv-grid.com/components/sliders/) | Single values and ranges with labels and value badges. |
|
|
93
|
+
| [Timeline](https://ui.rv-grid.com/components/timeline-track/) | Draggable, resizable events with colors and tooltips. |
|
|
94
|
+
| [Calendars and dates](https://ui.rv-grid.com/components/calendar-and-dates/) | Date and time pickers, ranges, and weekly planning. |
|
|
95
|
+
| [Charts](https://ui.rv-grid.com/components/charts-and-range-selection/) | Bar, line, and area charts with tooltips and range selection. |
|
|
96
|
+
| [Dialogs and tooltips](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/) | Dialogs, confirmations, popovers, and tooltips. |
|
|
97
|
+
| [Menus and toolbars](https://ui.rv-grid.com/components/menus-and-toolbars/) | Dropdown menus, nested commands, and toolbar actions. |
|
|
98
|
+
| [Status and feedback](https://ui.rv-grid.com/components/status-and-feedback/) | Badges, alerts, loading indicators, and empty states. |
|
|
99
|
+
| [Layout](https://ui.rv-grid.com/components/layout/) | Panels, resizable split views, and expandable sections. |
|
|
100
|
+
| [Pagination](https://ui.rv-grid.com/components/pagination/) | Page navigation for tables and lists. |
|
|
101
|
+
| [Progress and rating](https://ui.rv-grid.com/components/progress-and-rating/) | Progress bars, circular indicators, and star ratings. |
|
|
102
|
+
| [Activity messages](https://ui.rv-grid.com/components/activity-messages/) | Updates with avatars, timestamps, and actions. |
|
|
103
|
+
| [AI assistant](https://ui.rv-grid.com/components/ai-assistant/) | Chat messages, prompts, suggestions, and task states. |
|
|
104
|
+
| [PDF viewer](https://ui.rv-grid.com/components/pdf-viewer/) | PDF navigation, search, zoom, and download controls. |
|
|
105
|
+
| [Color](https://ui.rv-grid.com/components/color/) | Palettes, color pickers, and shared semantic interface colors. |
|
|
106
|
+
| [Field configurators](https://ui.rv-grid.com/components/field-configurators/) | Field libraries, selected-field lists, ordering, summaries, actions, and drop feedback. |
|
|
107
|
+
| [Formatting controls](https://ui.rv-grid.com/components/formatting-controls/) | Typography choices, icon choices, inspector sections, preview comparisons, and contextual filter badges. |
|
|
64
108
|
|
|
65
|
-
##
|
|
109
|
+
## Complete component reference
|
|
66
110
|
|
|
67
|
-
|
|
111
|
+
Every component in the shared adapter catalog is listed below. Each name links to a generated prop/API reference, followed by its live example page, where variants and expandable, formatted usage examples are grouped together. Composition helpers are documented alongside their parent control; not every helper has an isolated specimen.
|
|
68
112
|
|
|
69
|
-
|
|
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
|
-
```
|
|
113
|
+
### Buttons
|
|
76
114
|
|
|
77
|
-
|
|
115
|
+
Actions, grouped commands, toggled state, icons, compact sizing, busy states and pill corners.
|
|
78
116
|
|
|
79
|
-
|
|
117
|
+
[Button](https://github.com/revolist/revo-ui/blob/main/docs/api/Button.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [IconButton](https://github.com/revolist/revo-ui/blob/main/docs/api/IconButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [SvgButton](https://github.com/revolist/revo-ui/blob/main/docs/api/SvgButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ToggleButton](https://github.com/revolist/revo-ui/blob/main/docs/api/ToggleButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [ButtonGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/ButtonGroup.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [DeleteButton](https://github.com/revolist/revo-ui/blob/main/docs/api/DeleteButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [RemoveButton](https://github.com/revolist/revo-ui/blob/main/docs/api/RemoveButton.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [Icon](https://github.com/revolist/revo-ui/blob/main/docs/api/Icon.md) ([examples](https://ui.rv-grid.com/components/buttons/)) | [SvgIcon](https://github.com/revolist/revo-ui/blob/main/docs/api/SvgIcon.md) ([examples](https://ui.rv-grid.com/components/buttons/))
|
|
80
118
|
|
|
81
|
-
|
|
119
|
+
### Selection controls
|
|
82
120
|
|
|
83
|
-
|
|
121
|
+
Checkboxes, switches, radio groups, choice chips and option rows for independent or exclusive choices.
|
|
84
122
|
|
|
85
|
-
|
|
123
|
+
[Checkbox](https://github.com/revolist/revo-ui/blob/main/docs/api/Checkbox.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [Switch](https://github.com/revolist/revo-ui/blob/main/docs/api/Switch.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [RadioGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/RadioGroup.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [ChoiceChips](https://github.com/revolist/revo-ui/blob/main/docs/api/ChoiceChips.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [ChoiceChip](https://github.com/revolist/revo-ui/blob/main/docs/api/ChoiceChip.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [ChoiceChipInfoButton](https://github.com/revolist/revo-ui/blob/main/docs/api/ChoiceChipInfoButton.md) ([examples](https://ui.rv-grid.com/components/selection-controls/)) | [OptionButton](https://github.com/revolist/revo-ui/blob/main/docs/api/OptionButton.md) ([examples](https://ui.rv-grid.com/components/selection-controls/))
|
|
86
124
|
|
|
87
|
-
|
|
125
|
+
### Tabs and lists
|
|
88
126
|
|
|
89
|
-
|
|
127
|
+
Switch content, group options and present plain, icon or descriptive selection rows.
|
|
90
128
|
|
|
91
|
-
|
|
129
|
+
[SegmentedControl](https://github.com/revolist/revo-ui/blob/main/docs/api/SegmentedControl.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [SegmentedSwitch](https://github.com/revolist/revo-ui/blob/main/docs/api/SegmentedSwitch.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [Tabs](https://github.com/revolist/revo-ui/blob/main/docs/api/Tabs.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [TabPanel](https://github.com/revolist/revo-ui/blob/main/docs/api/TabPanel.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [Listbox](https://github.com/revolist/revo-ui/blob/main/docs/api/Listbox.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [ListboxOption](https://github.com/revolist/revo-ui/blob/main/docs/api/ListboxOption.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [ListboxGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/ListboxGroup.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [ListboxOptionContent](https://github.com/revolist/revo-ui/blob/main/docs/api/ListboxOptionContent.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [EditorList](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorList.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [EditorListItem](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorListItem.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [EditorListItemContent](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorListItemContent.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/)) | [EditorListGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorListGroup.md) ([examples](https://ui.rv-grid.com/components/tabs-and-lists/))
|
|
92
130
|
|
|
93
|
-
###
|
|
131
|
+
### Inputs and forms
|
|
94
132
|
|
|
95
|
-
|
|
133
|
+
Text, search and numeric entry; field labels, validation, inline layouts and editor drafts.
|
|
96
134
|
|
|
97
|
-
|
|
135
|
+
[Input](https://github.com/revolist/revo-ui/blob/main/docs/api/Input.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [TextInput](https://github.com/revolist/revo-ui/blob/main/docs/api/TextInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [Textarea](https://github.com/revolist/revo-ui/blob/main/docs/api/Textarea.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [SearchInput](https://github.com/revolist/revo-ui/blob/main/docs/api/SearchInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [NumberInput](https://github.com/revolist/revo-ui/blob/main/docs/api/NumberInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [NumberStepper](https://github.com/revolist/revo-ui/blob/main/docs/api/NumberStepper.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [DateInput](https://github.com/revolist/revo-ui/blob/main/docs/api/DateInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [TimeInput](https://github.com/revolist/revo-ui/blob/main/docs/api/TimeInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [DateTimeInput](https://github.com/revolist/revo-ui/blob/main/docs/api/DateTimeInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [FormField](https://github.com/revolist/revo-ui/blob/main/docs/api/FormField.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [FieldHint](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldHint.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [FieldError](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldError.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [FormSection](https://github.com/revolist/revo-ui/blob/main/docs/api/FormSection.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [HighlightedTextInput](https://github.com/revolist/revo-ui/blob/main/docs/api/HighlightedTextInput.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [InlineFieldGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/InlineFieldGroup.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [NumberDraft](https://github.com/revolist/revo-ui/blob/main/docs/api/NumberDraft.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [MaskedDraft](https://github.com/revolist/revo-ui/blob/main/docs/api/MaskedDraft.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/)) | [HtmlEditor](https://github.com/revolist/revo-ui/blob/main/docs/api/HtmlEditor.md) ([examples](https://ui.rv-grid.com/components/inputs-and-forms/))
|
|
98
136
|
|
|
99
|
-
|
|
137
|
+
### Selects, chips and resources
|
|
100
138
|
|
|
101
|
-
|
|
139
|
+
Single or multiple selections, searchable options, selected-value templates, avatars, resource lists and assignee fields.
|
|
102
140
|
|
|
103
|
-
|
|
141
|
+
[Dropdown](https://github.com/revolist/revo-ui/blob/main/docs/api/Dropdown.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopup](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopup.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [DropdownPopupContent](https://github.com/revolist/revo-ui/blob/main/docs/api/DropdownPopupContent.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Combobox](https://github.com/revolist/revo-ui/blob/main/docs/api/Combobox.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [MultiSelect](https://github.com/revolist/revo-ui/blob/main/docs/api/MultiSelect.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Chip](https://github.com/revolist/revo-ui/blob/main/docs/api/Chip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [FilterChip](https://github.com/revolist/revo-ui/blob/main/docs/api/FilterChip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [RemovableChip](https://github.com/revolist/revo-ui/blob/main/docs/api/RemovableChip.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [Avatar](https://github.com/revolist/revo-ui/blob/main/docs/api/Avatar.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [ResourcePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/ResourcePicker.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [SharedResourcePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/SharedResourcePicker.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [ResourcePickerAvatar](https://github.com/revolist/revo-ui/blob/main/docs/api/ResourcePickerAvatar.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneePicker.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneeField](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneeField.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) | [AssigneePickerLayout](https://github.com/revolist/revo-ui/blob/main/docs/api/AssigneePickerLayout.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/))
|
|
104
142
|
|
|
105
|
-
###
|
|
143
|
+
### Sliders
|
|
106
144
|
|
|
107
|
-
|
|
145
|
+
Scalar and interval controls with labels, value badges, thumb values, ticks and units.
|
|
108
146
|
|
|
109
|
-
|
|
147
|
+
[Slider](https://github.com/revolist/revo-ui/blob/main/docs/api/Slider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [RangeSlider](https://github.com/revolist/revo-ui/blob/main/docs/api/RangeSlider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [SingleValueSlider](https://github.com/revolist/revo-ui/blob/main/docs/api/SingleValueSlider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [PreactRangeSlider](https://github.com/revolist/revo-ui/blob/main/docs/api/PreactRangeSlider.md) ([examples](https://ui.rv-grid.com/components/sliders/)) | [SliderField](https://github.com/revolist/revo-ui/blob/main/docs/api/SliderField.md) ([examples](https://ui.rv-grid.com/components/sliders/))
|
|
110
148
|
|
|
111
|
-
|
|
149
|
+
### Timeline track
|
|
112
150
|
|
|
113
|
-
|
|
151
|
+
Controlled timeline events with move/resize interactions, event colors, weighted phases and tooltips.
|
|
114
152
|
|
|
115
|
-
|
|
153
|
+
[TimelineTrack](https://github.com/revolist/revo-ui/blob/main/docs/api/TimelineTrack.md) ([examples](https://ui.rv-grid.com/components/timeline-track/))
|
|
116
154
|
|
|
117
|
-
|
|
155
|
+
### Calendar and dates
|
|
118
156
|
|
|
119
|
-
|
|
157
|
+
Calendar views and date/time fields, ranges, duration drafts, weekly availability and descriptive legends.
|
|
120
158
|
|
|
121
|
-
|
|
159
|
+
[Calendar](https://github.com/revolist/revo-ui/blob/main/docs/api/Calendar.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarHeader](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarHeader.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarWeekdays](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarWeekdays.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarDay](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarDay.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarMonthGrid](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarMonthGrid.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarYearGrid](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarYearGrid.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [CalendarPicker](https://github.com/revolist/revo-ui/blob/main/docs/api/CalendarPicker.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [DatePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/DatePicker.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [DateRangePicker](https://github.com/revolist/revo-ui/blob/main/docs/api/DateRangePicker.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [DurationField](https://github.com/revolist/revo-ui/blob/main/docs/api/DurationField.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [DurationDraft](https://github.com/revolist/revo-ui/blob/main/docs/api/DurationDraft.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [TemporalPicker](https://github.com/revolist/revo-ui/blob/main/docs/api/TemporalPicker.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [TemporalDraft](https://github.com/revolist/revo-ui/blob/main/docs/api/TemporalDraft.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [DateTimeField](https://github.com/revolist/revo-ui/blob/main/docs/api/DateTimeField.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [TimeGrid](https://github.com/revolist/revo-ui/blob/main/docs/api/TimeGrid.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/)) | [Legend](https://github.com/revolist/revo-ui/blob/main/docs/api/Legend.md) ([examples](https://ui.rv-grid.com/components/calendar-and-dates/))
|
|
122
160
|
|
|
123
|
-
|
|
124
|
-
<Button variant="primary" busy={saving} onClick={save}>Save changes</Button>
|
|
125
|
-
```
|
|
161
|
+
### Color
|
|
126
162
|
|
|
127
|
-
|
|
163
|
+
Choose a color from a palette or picker and apply shared semantic interface colors.
|
|
128
164
|
|
|
129
|
-
|
|
165
|
+
[ColorPicker](https://github.com/revolist/revo-ui/blob/main/docs/api/ColorPicker.md) ([examples](https://ui.rv-grid.com/components/color/)) | [ColorPalette](https://github.com/revolist/revo-ui/blob/main/docs/api/ColorPalette.md) ([examples](https://ui.rv-grid.com/components/color/))
|
|
130
166
|
|
|
131
|
-
|
|
167
|
+
### Field configurators
|
|
132
168
|
|
|
133
|
-
|
|
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
|
-
```
|
|
169
|
+
Compose field libraries, selected-field lists, ordering, summaries, actions and drop feedback from shared pieces.
|
|
141
170
|
|
|
142
|
-
|
|
171
|
+
[FieldIcon](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldIcon.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldSummary](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldSummary.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldLibrary](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldLibrary.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldGroupHeading](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldGroupHeading.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldGroup.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldList](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldList.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldRow](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldRow.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldContent](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldContent.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldItem](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldItem.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldLibraryList](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldLibraryList.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [SelectedField](https://github.com/revolist/revo-ui/blob/main/docs/api/SelectedField.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldActions](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldActions.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldStatusBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldStatusBadge.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldRemoveButton](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldRemoveButton.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldRemoveIcon](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldRemoveIcon.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [FieldDropIndicator](https://github.com/revolist/revo-ui/blob/main/docs/api/FieldDropIndicator.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [ReorderList](https://github.com/revolist/revo-ui/blob/main/docs/api/ReorderList.md) ([examples](https://ui.rv-grid.com/components/field-configurators/)) | [ReorderHandle](https://github.com/revolist/revo-ui/blob/main/docs/api/ReorderHandle.md) ([examples](https://ui.rv-grid.com/components/field-configurators/))
|
|
143
172
|
|
|
144
|
-
|
|
173
|
+
### Formatting controls
|
|
145
174
|
|
|
146
|
-
|
|
175
|
+
Typography choices, icon choices, inspector sections, preview comparisons and contextual filter badges.
|
|
147
176
|
|
|
148
|
-
|
|
177
|
+
[InspectorSection](https://github.com/revolist/revo-ui/blob/main/docs/api/InspectorSection.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [IconChoiceGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/IconChoiceGroup.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [IconToggleButton](https://github.com/revolist/revo-ui/blob/main/docs/api/IconToggleButton.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [TypographyControls](https://github.com/revolist/revo-ui/blob/main/docs/api/TypographyControls.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [ComparisonPreview](https://github.com/revolist/revo-ui/blob/main/docs/api/ComparisonPreview.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [FilterBadgeInfoButton](https://github.com/revolist/revo-ui/blob/main/docs/api/FilterBadgeInfoButton.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/)) | [FilterBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/FilterBadge.md) ([examples](https://ui.rv-grid.com/components/formatting-controls/))
|
|
149
178
|
|
|
150
|
-
|
|
179
|
+
### Charts and range selection
|
|
151
180
|
|
|
152
|
-
|
|
181
|
+
Compact bar, line and area charts with values, labels, tooltips and a composed range brush.
|
|
153
182
|
|
|
154
|
-
|
|
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.
|
|
183
|
+
[DistributionChart](https://github.com/revolist/revo-ui/blob/main/docs/api/DistributionChart.md) ([examples](https://ui.rv-grid.com/components/charts-and-range-selection/)) | [BarChart](https://github.com/revolist/revo-ui/blob/main/docs/api/BarChart.md) ([examples](https://ui.rv-grid.com/components/charts-and-range-selection/)) | [LineChart](https://github.com/revolist/revo-ui/blob/main/docs/api/LineChart.md) ([examples](https://ui.rv-grid.com/components/charts-and-range-selection/)) | [AreaChart](https://github.com/revolist/revo-ui/blob/main/docs/api/AreaChart.md) ([examples](https://ui.rv-grid.com/components/charts-and-range-selection/)) | [BrushRange](https://github.com/revolist/revo-ui/blob/main/docs/api/BrushRange.md) ([examples](https://ui.rv-grid.com/components/charts-and-range-selection/))
|
|
160
184
|
|
|
161
|
-
|
|
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';
|
|
185
|
+
### Dialogs and floating surfaces
|
|
166
186
|
|
|
167
|
-
|
|
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
|
-
```
|
|
187
|
+
Dialogs, confirmations, contextual surfaces and editable dialog sections with shared actions.
|
|
183
188
|
|
|
184
|
-
-
|
|
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:
|
|
189
|
+
[Dialog](https://github.com/revolist/revo-ui/blob/main/docs/api/Dialog.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [ConfirmDialog](https://github.com/revolist/revo-ui/blob/main/docs/api/ConfirmDialog.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [Popover](https://github.com/revolist/revo-ui/blob/main/docs/api/Popover.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [Tooltip](https://github.com/revolist/revo-ui/blob/main/docs/api/Tooltip.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [ControlTooltip](https://github.com/revolist/revo-ui/blob/main/docs/api/ControlTooltip.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogHeader](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogHeader.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogBody](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogBody.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogFooter](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogFooter.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogForm](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogForm.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogCloseButton](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogCloseButton.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogActionFooter](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogActionFooter.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogActions](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogActions.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [DialogTitleInput](https://github.com/revolist/revo-ui/blob/main/docs/api/DialogTitleInput.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/)) | [EditableDialogHeader](https://github.com/revolist/revo-ui/blob/main/docs/api/EditableDialogHeader.md) ([examples](https://ui.rv-grid.com/components/dialogs-and-floating-surfaces/))
|
|
213
190
|
|
|
214
|
-
|
|
215
|
-
|
|
191
|
+
### Menus and toolbars
|
|
192
|
+
|
|
193
|
+
Command menus, nested commands, separators and grouped toolbar actions.
|
|
194
|
+
|
|
195
|
+
[Menu](https://github.com/revolist/revo-ui/blob/main/docs/api/Menu.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [MenuItem](https://github.com/revolist/revo-ui/blob/main/docs/api/MenuItem.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [MenuSeparator](https://github.com/revolist/revo-ui/blob/main/docs/api/MenuSeparator.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [Submenu](https://github.com/revolist/revo-ui/blob/main/docs/api/Submenu.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [Toolbar](https://github.com/revolist/revo-ui/blob/main/docs/api/Toolbar.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [ToolbarGroup](https://github.com/revolist/revo-ui/blob/main/docs/api/ToolbarGroup.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/)) | [ToolbarSeparator](https://github.com/revolist/revo-ui/blob/main/docs/api/ToolbarSeparator.md) ([examples](https://ui.rv-grid.com/components/menus-and-toolbars/))
|
|
196
|
+
|
|
197
|
+
### Status and feedback
|
|
198
|
+
|
|
199
|
+
Semantic badges, counters, alerts, progress indicators, loading surfaces, empty states and feedback panels.
|
|
200
|
+
|
|
201
|
+
[Badge](https://github.com/revolist/revo-ui/blob/main/docs/api/Badge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [CountBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/CountBadge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Alert](https://github.com/revolist/revo-ui/blob/main/docs/api/Alert.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [Spinner](https://github.com/revolist/revo-ui/blob/main/docs/api/Spinner.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [LoadingOverlay](https://github.com/revolist/revo-ui/blob/main/docs/api/LoadingOverlay.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [EmptyState](https://github.com/revolist/revo-ui/blob/main/docs/api/EmptyState.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [FeedbackPanel](https://github.com/revolist/revo-ui/blob/main/docs/api/FeedbackPanel.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [StatusFeedbackPanel](https://github.com/revolist/revo-ui/blob/main/docs/api/StatusFeedbackPanel.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/)) | [StatusBadge](https://github.com/revolist/revo-ui/blob/main/docs/api/StatusBadge.md) ([examples](https://ui.rv-grid.com/components/status-and-feedback/))
|
|
202
|
+
|
|
203
|
+
### Layout
|
|
204
|
+
|
|
205
|
+
Compose panes, split layouts, panels and disclosures with an interactive resize divider.
|
|
206
|
+
|
|
207
|
+
[Panel](https://github.com/revolist/revo-ui/blob/main/docs/api/Panel.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [Pane](https://github.com/revolist/revo-ui/blob/main/docs/api/Pane.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [SplitLayout](https://github.com/revolist/revo-ui/blob/main/docs/api/SplitLayout.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [EditorPane](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorPane.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [EditorSplitLayout](https://github.com/revolist/revo-ui/blob/main/docs/api/EditorSplitLayout.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [ResizeHandle](https://github.com/revolist/revo-ui/blob/main/docs/api/ResizeHandle.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [Disclosure](https://github.com/revolist/revo-ui/blob/main/docs/api/Disclosure.md) ([examples](https://ui.rv-grid.com/components/layout/)) | [DisclosureSummary](https://github.com/revolist/revo-ui/blob/main/docs/api/DisclosureSummary.md) ([examples](https://ui.rv-grid.com/components/layout/))
|
|
208
|
+
|
|
209
|
+
### Pagination
|
|
210
|
+
|
|
211
|
+
Page selection and compact or numbered navigation.
|
|
212
|
+
|
|
213
|
+
[Pagination](https://github.com/revolist/revo-ui/blob/main/docs/api/Pagination.md) ([examples](https://ui.rv-grid.com/components/pagination/))
|
|
214
|
+
|
|
215
|
+
### Progress and rating
|
|
216
|
+
|
|
217
|
+
Linear/circular completion and star-based rating controls.
|
|
218
|
+
|
|
219
|
+
[ProgressBar](https://github.com/revolist/revo-ui/blob/main/docs/api/ProgressBar.md) ([examples](https://ui.rv-grid.com/components/progress-and-rating/)) | [CircularProgress](https://github.com/revolist/revo-ui/blob/main/docs/api/CircularProgress.md) ([examples](https://ui.rv-grid.com/components/progress-and-rating/)) | [Rating](https://github.com/revolist/revo-ui/blob/main/docs/api/Rating.md) ([examples](https://ui.rv-grid.com/components/progress-and-rating/)) | [RatingStar](https://github.com/revolist/revo-ui/blob/main/docs/api/RatingStar.md) ([examples](https://ui.rv-grid.com/components/progress-and-rating/)) | [RatingChoice](https://github.com/revolist/revo-ui/blob/main/docs/api/RatingChoice.md) ([examples](https://ui.rv-grid.com/components/progress-and-rating/))
|
|
220
|
+
|
|
221
|
+
### Activity messages
|
|
222
|
+
|
|
223
|
+
Compose an activity entry from an avatar, timestamp, header, body, details and actions.
|
|
224
|
+
|
|
225
|
+
[ActivityMessage](https://github.com/revolist/revo-ui/blob/main/docs/api/ActivityMessage.md) ([examples](https://ui.rv-grid.com/components/activity-messages/))
|
|
226
|
+
|
|
227
|
+
### AI assistant
|
|
228
|
+
|
|
229
|
+
Presentation for messages, prompts, suggestions, reasoning, tasks, action state and result summaries. Applications provide the model and tools.
|
|
230
|
+
|
|
231
|
+
[AiChat](https://github.com/revolist/revo-ui/blob/main/docs/api/AiChat.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiChatContent](https://github.com/revolist/revo-ui/blob/main/docs/api/AiChatContent.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiChatComposer](https://github.com/revolist/revo-ui/blob/main/docs/api/AiChatComposer.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiChatEmptyState](https://github.com/revolist/revo-ui/blob/main/docs/api/AiChatEmptyState.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiMessage](https://github.com/revolist/revo-ui/blob/main/docs/api/AiMessage.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiMessageContent](https://github.com/revolist/revo-ui/blob/main/docs/api/AiMessageContent.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiMessageActions](https://github.com/revolist/revo-ui/blob/main/docs/api/AiMessageActions.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiReasoning](https://github.com/revolist/revo-ui/blob/main/docs/api/AiReasoning.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiTask](https://github.com/revolist/revo-ui/blob/main/docs/api/AiTask.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiTaskItem](https://github.com/revolist/revo-ui/blob/main/docs/api/AiTaskItem.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiPromptInput](https://github.com/revolist/revo-ui/blob/main/docs/api/AiPromptInput.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiSuggestions](https://github.com/revolist/revo-ui/blob/main/docs/api/AiSuggestions.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiActionStatus](https://github.com/revolist/revo-ui/blob/main/docs/api/AiActionStatus.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiResult](https://github.com/revolist/revo-ui/blob/main/docs/api/AiResult.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiChangePreview](https://github.com/revolist/revo-ui/blob/main/docs/api/AiChangePreview.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiAssistant](https://github.com/revolist/revo-ui/blob/main/docs/api/AiAssistant.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/)) | [AiRequestTrail](https://github.com/revolist/revo-ui/blob/main/docs/api/AiRequestTrail.md) ([examples](https://ui.rv-grid.com/components/ai-assistant/))
|
|
232
|
+
|
|
233
|
+
### PDF viewer
|
|
234
|
+
|
|
235
|
+
Display local or remote PDFs with navigation, search, zoom, rotation, print/download actions and a composable toolbar.
|
|
236
|
+
|
|
237
|
+
[PdfViewer](https://github.com/revolist/revo-ui/blob/main/docs/api/PdfViewer.md) ([examples](https://ui.rv-grid.com/components/pdf-viewer/)) | [PdfViewerToolbar](https://github.com/revolist/revo-ui/blob/main/docs/api/PdfViewerToolbar.md) ([examples](https://ui.rv-grid.com/components/pdf-viewer/))
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
### JSX select adapter
|
|
241
|
+
|
|
242
|
+
[**Select**](https://github.com/revolist/revo-ui/blob/main/docs/api/Select.md) ([examples](https://ui.rv-grid.com/components/selects-chips-and-resources/)) is an additional direct Preact adapter exported from `@revolist/ui/select`. Its JSX `<option>` children are data descriptors for the shared dropdown, not mounted native select elements. Use `value` / `onValueChange` for controlled state, `defaultValue` for uncontrolled state, and `multiple` for an array of selected strings. React/Vue applications can use their named `Combobox`, `MultiSelect`, or `Dropdown` adapters.
|
|
243
|
+
|
|
244
|
+
```tsx
|
|
245
|
+
import { Select } from '@revolist/ui/select';
|
|
246
|
+
|
|
247
|
+
<Select aria-label="View" value={view} onValueChange={setView}>
|
|
248
|
+
<option value="table">Table</option>
|
|
249
|
+
<option value="board">Board</option>
|
|
250
|
+
<option value="calendar" disabled>Calendar</option>
|
|
251
|
+
</Select>
|
|
216
252
|
```
|
|
217
253
|
|
|
218
|
-
##
|
|
254
|
+
## Usage contracts
|
|
219
255
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
256
|
+
| Concern | Contract |
|
|
257
|
+
| --- | --- |
|
|
258
|
+
| Controlled state | Keep values in the application and pass the matching callback. `TextInput` uses `onValueChange`; many pickers/sliders use `onChange`; verify the component's typed contract. |
|
|
259
|
+
| Dropdown data | `source` is an array of `{ value, label, ...metadata }` descriptors. `disabled` options remain visible and are skipped by keyboard selection. |
|
|
260
|
+
| Custom dropdown content | `renderOption` changes option content; `renderValue` changes the selected value. Preact receives `(h, option, selected)` / `(h, option)`. React callbacks omit the element-factory argument; Vue uses named slots. |
|
|
261
|
+
| Angular/Svelte hosts | Use names from the component catalog. `valueChange` / `onValueChange` is tied to the component's declared value model, not every callback. For a generic callback such as `onClick`, supply that callback in `props` so the host can forward it. |
|
|
262
|
+
| Forms | Associate inputs with a visible label or an accessible name. Use shared field hint/error presentation and pass disabled/invalid state explicitly. |
|
|
263
|
+
| Overlays | Use the shared popup lifecycle. Dropdowns inside top-layer dialogs/calendars can opt into `config.topLayer`. Standalone selects dismiss and advance focus on Tab/Shift+Tab. |
|
|
264
|
+
| Lifecycle | Framework adapters clean up their mounts. Manual framework mounts and native controllers must be destroyed when their view is removed. |
|
|
265
|
+
| AI components | These render chat, prompt, task and result UI. Your application provides model access, data, authorization and tool execution. |
|
|
266
|
+
| PDF viewer | Supply a PDF source and compatible PDF.js worker configuration. Remote files require appropriate CORS access. Tool groups, text and toolbar/status rendering are configurable. See the [PDF viewer examples](https://ui.rv-grid.com/components/pdf-viewer/). |
|
|
267
|
+
| Charts | Revo UI includes compact bar/line/area primitives and a range brush. The separate [RevoGrid Charts product](https://rv-grid.com/charts/) provides the larger charting surface. |
|
|
224
268
|
|
|
225
|
-
|
|
269
|
+
The following snippets use the direct Preact APIs; the framework guides show their equivalent integration patterns. Values and callbacks such as `saved` / `setSaved` are application-owned state inside your component; the linked live examples include the complete surrounding setup.
|
|
226
270
|
|
|
227
|
-
|
|
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:
|
|
271
|
+
## Buttons and navigation
|
|
232
272
|
|
|
233
273
|
```tsx
|
|
234
|
-
import {
|
|
274
|
+
import { Button, IconButton, ToggleButton } from '@revolist/ui/preact';
|
|
275
|
+
|
|
276
|
+
<Button variant="primary" rounded onClick={save}>Save report</Button>
|
|
277
|
+
<Button rounded href="https://rv-grid.com/">Explore RevoGrid</Button>
|
|
278
|
+
<Button size="compact" disabled>Unavailable</Button>
|
|
279
|
+
<Button variant="solid" busy={saving}>Saving</Button>
|
|
280
|
+
<ToggleButton pressed={pinned} onPressedChange={setPinned}>Pin</ToggleButton>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
`Button` variants: `default`, `solid`, `primary`, `secondary`, `danger`, `danger-outline`, `ghost`, and `link`. `size` is `default` or `compact`. `rounded` applies pill corners, including icon controls. `href` renders native anchor navigation. `busy` blocks activation while preserving the variant's appearance.
|
|
284
|
+
|
|
285
|
+
## Dropdowns with user images
|
|
286
|
+
|
|
287
|
+
```tsx
|
|
288
|
+
import { Avatar, Dropdown } from '@revolist/ui/preact';
|
|
289
|
+
|
|
290
|
+
const people = [
|
|
291
|
+
{ value: 'alex', label: 'Alex Morgan', photo: '/people/alex.jpg' },
|
|
292
|
+
{ value: 'sam', label: 'Sam Rivera', photo: '/people/sam.jpg' },
|
|
293
|
+
];
|
|
294
|
+
const personContent = (_h: unknown, person: { label: string; photo?: string }) => (
|
|
295
|
+
<span style={{ display: 'inline-flex', alignItems: 'center', gap: 8 }}>
|
|
296
|
+
<Avatar value={person.photo} label="" initials={person.label[0]} size={16} />
|
|
297
|
+
<span>{person.label}</span>
|
|
298
|
+
</span>
|
|
299
|
+
);
|
|
235
300
|
|
|
236
301
|
<Dropdown
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
302
|
+
className="rv-select"
|
|
303
|
+
source={people}
|
|
304
|
+
value={personId}
|
|
305
|
+
onChange={next => setPersonId(String(next))}
|
|
306
|
+
config={{ ariaLabel: 'Team member', topLayer: true, nativeTabNavigation: true }}
|
|
307
|
+
renderOption={personContent}
|
|
308
|
+
renderValue={personContent}
|
|
243
309
|
/>
|
|
310
|
+
```
|
|
244
311
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
312
|
+
Use `Combobox` for search and `MultiSelect` for multiple values. See [user images, search and resource examples](https://ui.rv-grid.com/components/selects-chips-and-resources/).
|
|
313
|
+
|
|
314
|
+
## Advanced slider
|
|
315
|
+
|
|
316
|
+
```tsx
|
|
317
|
+
import { SliderField } from '@revolist/ui/filter/filters/slider/single';
|
|
318
|
+
|
|
319
|
+
<SliderField
|
|
320
|
+
label="Saved"
|
|
321
|
+
ariaLabel="Savings goal completion"
|
|
322
|
+
layout="stacked"
|
|
323
|
+
min={0}
|
|
324
|
+
max={20000}
|
|
325
|
+
step={50}
|
|
326
|
+
value={saved}
|
|
327
|
+
valuePlacement="end"
|
|
328
|
+
formatValue={value => `${Math.round(value / 20000 * 100)}%`}
|
|
329
|
+
onChange={setSaved}
|
|
330
|
+
/>
|
|
249
331
|
```
|
|
250
332
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
<ng-template rvUiSlot="option" let-option="option" let-selected="selected">
|
|
270
|
-
<strong>{{ option.label }}</strong>
|
|
271
|
-
</ng-template>
|
|
272
|
-
</rv-ui>
|
|
333
|
+
`layout="stacked"` gives the slider a full-width row; `valuePlacement="end"` puts the formatted value beside the label. Optional accent colors, ticks and thumb callouts are shown on the [Sliders page](https://ui.rv-grid.com/components/sliders/).
|
|
334
|
+
|
|
335
|
+
## Conditional chart colors
|
|
336
|
+
|
|
337
|
+
```tsx
|
|
338
|
+
import { BarChart } from '@revolist/ui/preact';
|
|
339
|
+
|
|
340
|
+
const largestExpense = Math.max(...expenses.map(item => item.value));
|
|
341
|
+
|
|
342
|
+
<BarChart
|
|
343
|
+
data={expenses}
|
|
344
|
+
ariaLabel="Expenses by category"
|
|
345
|
+
height={170}
|
|
346
|
+
showGrid
|
|
347
|
+
showLabels
|
|
348
|
+
tooltipIndicator="dot"
|
|
349
|
+
barColor={datum => datum.value === largestExpense ? '#f97316' : undefined}
|
|
350
|
+
/>
|
|
273
351
|
```
|
|
274
352
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
<
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
{#snippet option(scope: Record<string, any>)}
|
|
301
|
-
<strong>{scope.option.label}</strong>
|
|
302
|
-
{/snippet}
|
|
353
|
+
Each datum has `key`, `value`, and `tooltip: { title, details? }`; optional `selected` controls emphasis. `barColor` accepts a CSS color or `(datum, index) => color | undefined`. Returning `undefined` retains the theme color. Tooltip markers use the resolved bar color. See [Charts and range selection](https://ui.rv-grid.com/components/charts-and-range-selection/).
|
|
354
|
+
|
|
355
|
+
## Interactive timeline
|
|
356
|
+
|
|
357
|
+
```tsx
|
|
358
|
+
import { TimelineTrack } from '@revolist/ui/timeline-track';
|
|
359
|
+
|
|
360
|
+
// Application-owned rows; retain these metadata fields when committing changes.
|
|
361
|
+
const initialRows = [
|
|
362
|
+
{ id: 'build', event: { start: 8, end: 12, label: 'Build', color: '#2563eb', textColor: '#ffffff' } },
|
|
363
|
+
{ id: 'review', event: {
|
|
364
|
+
start: 14, end: 18, label: 'Review', color: '#7c3aed', textColor: '#ffffff',
|
|
365
|
+
segments: [{ color: '#7c3aed', weight: 3 }, { color: '#c2410c', weight: 1 }],
|
|
366
|
+
} },
|
|
367
|
+
];
|
|
368
|
+
|
|
369
|
+
<TimelineTrack
|
|
370
|
+
rows={rows}
|
|
371
|
+
selected={selected}
|
|
372
|
+
range={{ start: 0, end: 24 }}
|
|
373
|
+
onSelect={setSelected}
|
|
374
|
+
onEventChange={(id, event) => setRows(current => current.map(row => row.id === id ? { ...row, event } : row))}
|
|
375
|
+
formatValue={value => `${String(value).padStart(2, '0')}:00`}
|
|
376
|
+
/>
|
|
303
377
|
```
|
|
304
378
|
|
|
305
|
-
|
|
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.
|
|
379
|
+
Events support single colors or weighted color segments. Moving/resizing preserves metadata and scales phase proportions. Hover/focus tooltips show the event name and range; use `getTooltip` for custom text or `tooltip={false}` to disable them. Pointer dragging and Left/Right keyboard controls are demonstrated on [Timeline track](https://ui.rv-grid.com/components/timeline-track/).
|
|
309
380
|
|
|
310
|
-
|
|
381
|
+
`TimeGrid` is the separate weekly-availability surface. Compose it with `useTimeGridInteraction` for painting and keyboard movement; provide cells, focus state, day/hour labels, weekends and working hours. See [weekly planning and calendar examples](https://ui.rv-grid.com/components/calendar-and-dates/).
|
|
311
382
|
|
|
312
|
-
|
|
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.
|
|
383
|
+
## Theming, sizing, and motion
|
|
320
384
|
|
|
321
|
-
|
|
322
|
-
Svelte and framework entries for explicitly typing application configurations.
|
|
323
|
-
The dedicated browser fixture covers all four frameworks:
|
|
385
|
+
Load shared styles once, then configure semantic tokens rather than duplicating control styles. The gallery demonstrates light/dark themes and right-to-left layouts. [Explore interface colors](https://ui.rv-grid.com/colors/).
|
|
324
386
|
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
|
|
387
|
+
```css
|
|
388
|
+
.my-workspace {
|
|
389
|
+
--rv-ui-accent: #2563eb;
|
|
390
|
+
--rv-control-height: 32px;
|
|
391
|
+
--rv-control-font-size: 0.875rem;
|
|
392
|
+
}
|
|
328
393
|
```
|
|
329
394
|
|
|
330
|
-
|
|
395
|
+
Standard single-line inputs, dropdowns and buttons use matching 32px minimum height and 14px text at the default root font size. Explicit compact controls, multiline editors, editable titles and grid scene controls have their own sizing. Use `rv-control--compact` where the compact field presentation is needed.
|
|
396
|
+
|
|
397
|
+
Motion follows the system's reduced-motion preference. `data-rv-ui-motion="off"` on the document root disables shared UI motion; removing it restores system behavior. Do not force animations on for users who requested reduced motion.
|
|
398
|
+
|
|
399
|
+
## Accessibility and localization
|
|
400
|
+
|
|
401
|
+
- Give icon-only actions and controls meaningful accessible names; connect visible labels, hints and errors to their fields.
|
|
402
|
+
- Preserve keyboard focus and use the shared dropdown, dialog and tooltip lifecycles. Disabled options remain announced but cannot be chosen.
|
|
403
|
+
- Provide localized labels through each component's `text`, `labels`, or related typed configuration. Use the date/calendar APIs for locale and calendar-system choices.
|
|
404
|
+
- Keep application state and authorization in the host application. A visual disabled or readonly state does not replace server-side permissions.
|
|
405
|
+
- Test your composed workflow with keyboard, reduced motion, light/dark themes and RTL. Accessibility of an application depends on its content and composition, not only the controls.
|
|
406
|
+
|
|
407
|
+
## RevoGrid products
|
|
408
|
+
|
|
409
|
+
| Product | Website | Documentation |
|
|
410
|
+
| --- | --- | --- |
|
|
411
|
+
| RevoGrid | [rv-grid.com](https://rv-grid.com/) | [Core docs](https://rv-grid.com/guide/) |
|
|
412
|
+
| Grid Pro | [RevoGrid Pro](https://pro.rv-grid.com/) | [Pro guides](https://pro.rv-grid.com/guides/installation/) |
|
|
413
|
+
| Pivot | [Pivot tables](https://rv-grid.com/pivot/) | [Pivot guide](https://pro.rv-grid.com/guides/pivot/) |
|
|
414
|
+
| Charts | [JavaScript charts](https://rv-grid.com/charts/) | [Pro documentation](https://pro.rv-grid.com/) |
|
|
415
|
+
| Gantt | [Gantt charts](https://rv-grid.com/gantt/) | [Gantt guide](https://pro.rv-grid.com/guides/gantt/) |
|
|
416
|
+
| Scheduler | [Resource scheduling](https://rv-grid.com/jsscheduler/) | [Pro documentation](https://pro.rv-grid.com/) |
|
|
417
|
+
| Kanban | [Kanban boards](https://rv-grid.com/kanban/) | [Pro documentation](https://pro.rv-grid.com/) |
|
|
331
418
|
|
|
332
|
-
|
|
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.
|
|
419
|
+
## Repository and support
|
|
337
420
|
|
|
421
|
+
- [Revo UI on GitHub](https://github.com/revolist/revo-ui): gallery app, documentation, and project information.
|
|
422
|
+
- [Component API reference](https://github.com/revolist/revo-ui/blob/main/docs/component-reference.md#complete-component-reference): individual component props and API details.
|
|
423
|
+
- [Issues](https://github.com/revolist/revo-ui/issues): report bugs or request improvements; include your framework, package version, and a minimal reproduction.
|
|
424
|
+
- [npm package](https://www.npmjs.com/package/@revolist/ui): published versions and installation information.
|
|
338
425
|
|
|
339
|
-
|
|
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.
|
|
426
|
+
## Licensing
|
|
345
427
|
|
|
346
|
-
|
|
428
|
+
Revo UI is [MIT licensed](LICENSE). Anyone can use, modify, and distribute it, including in commercial projects.
|