@reliability-design/web 1.0.3 → 1.0.6
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/dist/components/rel-accordion/README.md +132 -0
- package/dist/components/rel-accordion/rel-accordion.ts +43 -16
- package/dist/components/rel-alert/README.md +141 -0
- package/dist/components/rel-alert/rel-alert.ts +18 -7
- package/dist/components/rel-avatar/README.md +119 -0
- package/dist/components/rel-badge/README.md +86 -0
- package/dist/components/rel-badge/rel-badge.ts +6 -6
- package/dist/components/rel-breadcrumb/README.md +102 -0
- package/dist/components/rel-breadcrumb/rel-breadcrumb.ts +12 -6
- package/dist/components/rel-button/README.md +130 -0
- package/dist/components/rel-calendar/README.md +109 -0
- package/dist/components/rel-calendar/index.ts +1 -0
- package/dist/components/rel-calendar/rel-calendar.ts +467 -0
- package/dist/components/rel-card/README.md +94 -0
- package/dist/components/rel-card/rel-card.ts +12 -3
- package/dist/components/rel-cardmedia/README.md +127 -0
- package/dist/components/rel-cardmedia/rel-cardmedia.ts +14 -4
- package/dist/components/rel-carousel/README.md +166 -0
- package/dist/components/rel-carousel/index.ts +1 -0
- package/dist/components/rel-carousel/rel-carousel.ts +469 -0
- package/dist/components/rel-chart/README.md +286 -0
- package/dist/components/rel-chart/index.ts +1 -0
- package/dist/components/rel-chart/rel-chart.ts +736 -0
- package/dist/components/rel-checkbox/README.md +77 -0
- package/dist/components/rel-checkbox/rel-checkbox.ts +18 -10
- package/dist/components/rel-chip/README.md +114 -0
- package/dist/components/rel-chip/rel-chip.ts +20 -4
- package/dist/components/rel-container/README.md +99 -0
- package/dist/components/rel-date-picker/README.md +253 -0
- package/dist/components/rel-date-picker/index.ts +1 -0
- package/dist/components/rel-date-picker/rel-date-picker.ts +916 -0
- package/dist/components/rel-divider/README.md +100 -0
- package/dist/components/rel-drawer/README.md +200 -0
- package/dist/components/rel-drawer/index.ts +1 -0
- package/dist/components/rel-drawer/rel-drawer.ts +621 -0
- package/dist/components/rel-kbd/README.md +151 -0
- package/dist/components/rel-kbd/rel-kbd.ts +118 -0
- package/dist/components/rel-layout/README.md +88 -0
- package/dist/components/rel-menu/README.md +151 -0
- package/dist/components/rel-menu/rel-menu.ts +18 -10
- package/dist/components/rel-menubar/README.md +329 -0
- package/dist/components/rel-menubar/index.ts +2 -0
- package/dist/components/rel-menubar/rel-menubar-menu.ts +16 -0
- package/dist/components/rel-menubar/rel-menubar.ts +576 -0
- package/dist/components/rel-nav-menu/README.md +289 -0
- package/dist/components/rel-nav-menu/index.ts +3 -0
- package/dist/components/rel-nav-menu/rel-nav-menu-item.ts +143 -0
- package/dist/components/rel-nav-menu/rel-nav-menu-panel.ts +53 -0
- package/dist/components/rel-nav-menu/rel-nav-menu.ts +331 -0
- package/dist/components/rel-navbar/README.md +126 -0
- package/dist/components/rel-navbar/rel-navbar.ts +91 -0
- package/dist/components/rel-otp/README.md +440 -0
- package/dist/components/rel-otp/index.ts +1 -0
- package/dist/components/rel-otp/rel-otp.ts +504 -0
- package/dist/components/rel-pagination/README.md +410 -0
- package/dist/components/rel-pagination/index.ts +1 -0
- package/dist/components/rel-pagination/rel-pagination.ts +376 -0
- package/dist/components/rel-popover/README.md +568 -0
- package/dist/components/rel-popover/index.ts +2 -0
- package/dist/components/rel-popover/rel-popover-content.ts +55 -0
- package/dist/components/rel-popover/rel-popover.ts +327 -0
- package/dist/components/rel-progress/README.md +110 -0
- package/dist/components/rel-progress/rel-progress.ts +32 -5
- package/dist/components/rel-quote-page/README.md +166 -0
- package/dist/components/rel-quote-page/rel-quote-page.ts +816 -0
- package/dist/components/rel-radio/README.md +120 -0
- package/dist/components/rel-radio/rel-radio.ts +13 -5
- package/dist/components/rel-resizable/README.md +140 -0
- package/dist/components/rel-resizable/index.ts +3 -0
- package/dist/components/rel-resizable/rel-resizable-group.ts +374 -0
- package/dist/components/rel-resizable/rel-resizable-handle.ts +149 -0
- package/dist/components/rel-resizable/rel-resizable-panel.ts +47 -0
- package/dist/components/rel-segmented-button/README.md +141 -0
- package/dist/components/rel-segmented-button/rel-segmented-button.ts +18 -13
- package/dist/components/rel-select/README.md +107 -0
- package/dist/components/rel-select/rel-select.ts +14 -14
- package/dist/components/rel-sheet/README.md +224 -0
- package/dist/components/rel-sheet/rel-sheet.ts +683 -0
- package/dist/components/rel-sidebar/README.md +209 -0
- package/dist/components/rel-sidebar/rel-sidebar.ts +1158 -0
- package/dist/components/rel-slider/README.md +135 -0
- package/dist/components/rel-slider/rel-slider.ts +19 -7
- package/dist/components/rel-snackbar/README.md +134 -0
- package/dist/components/rel-snackbar/rel-snackbar.ts +67 -2
- package/dist/components/rel-stepper/README.md +160 -0
- package/dist/components/rel-stepper/rel-stepper.ts +6 -6
- package/dist/components/rel-switch/README.md +102 -0
- package/dist/components/rel-switch/rel-switch.ts +15 -6
- package/dist/components/rel-tab/README.md +163 -0
- package/dist/components/rel-tab/rel-tab.ts +36 -14
- package/dist/components/rel-table/README.md +178 -0
- package/dist/components/rel-table/rel-table-body.ts +16 -0
- package/dist/components/rel-table/rel-table-caption.ts +22 -0
- package/dist/components/rel-table/rel-table-cell.ts +49 -0
- package/dist/components/rel-table/rel-table-footer.ts +18 -0
- package/dist/components/rel-table/rel-table-head.ts +33 -0
- package/dist/components/rel-table/rel-table-header.ts +16 -0
- package/dist/components/rel-table/rel-table-row.ts +32 -0
- package/dist/components/rel-table/rel-table.ts +47 -0
- package/dist/components/rel-textfield/README.md +90 -0
- package/dist/components/rel-textfield/rel-textfield.ts +35 -19
- package/dist/components/rel-toast/README.md +148 -0
- package/dist/components/rel-toast/rel-toast.ts +32 -14
- package/dist/components/rel-tooltip/README.md +103 -0
- package/dist/components/rel-tooltip/rel-tooltip.ts +9 -9
- package/dist/index.d.mts +836 -1
- package/dist/index.d.ts +836 -1
- package/dist/index.js +10658 -1493
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10616 -1499
- package/dist/index.mjs.map +1 -1
- package/dist/styles/vars.css +293 -183
- package/dist/{vars-6ZIUPIU4.css → vars-ITL2K3KO.css} +293 -183
- package/package.json +1 -1
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# rel-chart
|
|
2
|
+
|
|
3
|
+
A lightweight, accessible chart component built with Lit for the Reliability Design System. Supports bar and line charts with interactive tooltips.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Bar charts (grouped)
|
|
8
|
+
- Line charts with points
|
|
9
|
+
- Interactive tooltips on hover/focus
|
|
10
|
+
- Grid and axis labels
|
|
11
|
+
- Legend
|
|
12
|
+
- Responsive sizing
|
|
13
|
+
- Full keyboard navigation
|
|
14
|
+
- Token-driven styling
|
|
15
|
+
- Reduced motion support
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### Property-based (Recommended)
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
const chart = document.querySelector('rel-chart');
|
|
23
|
+
|
|
24
|
+
chart.data = [
|
|
25
|
+
{ month: 'Jan', desktop: 186, mobile: 80 },
|
|
26
|
+
{ month: 'Feb', desktop: 305, mobile: 200 },
|
|
27
|
+
{ month: 'Mar', desktop: 237, mobile: 120 },
|
|
28
|
+
{ month: 'Apr', desktop: 73, mobile: 190 },
|
|
29
|
+
{ month: 'May', desktop: 209, mobile: 130 },
|
|
30
|
+
{ month: 'Jun', desktop: 214, mobile: 140 }
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
chart.series = [
|
|
34
|
+
{ key: 'desktop', label: 'Desktop' },
|
|
35
|
+
{ key: 'mobile', label: 'Mobile' }
|
|
36
|
+
];
|
|
37
|
+
|
|
38
|
+
chart.xKey = 'month';
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Attribute-based (Simple demos)
|
|
42
|
+
|
|
43
|
+
```html
|
|
44
|
+
<rel-chart
|
|
45
|
+
type="bar"
|
|
46
|
+
x-key="month"
|
|
47
|
+
series-json='[{"key":"desktop","label":"Desktop"},{"key":"mobile","label":"Mobile"}]'
|
|
48
|
+
data-json='[
|
|
49
|
+
{"month":"Jan","desktop":186,"mobile":80},
|
|
50
|
+
{"month":"Feb","desktop":305,"mobile":200},
|
|
51
|
+
{"month":"Mar","desktop":237,"mobile":120}
|
|
52
|
+
]'
|
|
53
|
+
></rel-chart>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Bar Chart
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<rel-chart type="bar" x-key="date"></rel-chart>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Line Chart
|
|
63
|
+
|
|
64
|
+
```html
|
|
65
|
+
<rel-chart type="line" x-key="date"></rel-chart>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Custom Height
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<rel-chart height="400"></rel-chart>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Without Grid
|
|
75
|
+
|
|
76
|
+
```html
|
|
77
|
+
<rel-chart show-grid="false"></rel-chart>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Date Formatting
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<rel-chart format-x="date" locale="en-US"></rel-chart>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Custom Colors
|
|
87
|
+
|
|
88
|
+
```javascript
|
|
89
|
+
chart.series = [
|
|
90
|
+
{
|
|
91
|
+
key: 'desktop',
|
|
92
|
+
label: 'Desktop',
|
|
93
|
+
colorToken: 'var(--rel-colors-blue-primary)'
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
key: 'mobile',
|
|
97
|
+
label: 'Mobile',
|
|
98
|
+
colorToken: 'var(--rel-colors-green-primary)'
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Attributes
|
|
104
|
+
|
|
105
|
+
| Attribute | Type | Default | Description |
|
|
106
|
+
|-----------|------|---------|-------------|
|
|
107
|
+
| `type` | `"bar" \| "line"` | `"bar"` | Chart type |
|
|
108
|
+
| `height` | `number` | `320` | Chart height in pixels |
|
|
109
|
+
| `x-key` | `string` | `""` | Property name for x-axis values |
|
|
110
|
+
| `series-json` | `string` | `""` | JSON string of series configuration |
|
|
111
|
+
| `data-json` | `string` | `""` | JSON string of chart data |
|
|
112
|
+
| `show-grid` | `boolean` | `true` | Show background grid |
|
|
113
|
+
| `show-axis` | `boolean` | `true` | Show axis labels |
|
|
114
|
+
| `show-legend` | `boolean` | `true` | Show legend |
|
|
115
|
+
| `stacked` | `boolean` | `false` | Stack bars (bar chart only, not implemented in v1) |
|
|
116
|
+
| `format-x` | `"date" \| "string" \| "number"` | `"string"` | X-axis value format |
|
|
117
|
+
| `locale` | `string` | `"en-US"` | Locale for date formatting |
|
|
118
|
+
| `disabled` | `boolean` | `false` | Disable interactions |
|
|
119
|
+
|
|
120
|
+
## Properties
|
|
121
|
+
|
|
122
|
+
| Property | Type | Description |
|
|
123
|
+
|----------|------|-------------|
|
|
124
|
+
| `data` | `Array<Record<string, unknown>>` | Chart data (preferred over data-json) |
|
|
125
|
+
| `series` | `SeriesConfig[]` | Series configuration (preferred over series-json) |
|
|
126
|
+
|
|
127
|
+
### SeriesConfig
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
interface SeriesConfig {
|
|
131
|
+
key: string; // Property name in data
|
|
132
|
+
label?: string; // Display label
|
|
133
|
+
colorToken?: string; // CSS variable or color token
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Events
|
|
138
|
+
|
|
139
|
+
| Event | Detail | Description |
|
|
140
|
+
|-------|--------|-------------|
|
|
141
|
+
| `rel-hover` | `{ index: number, datum: object, seriesKey?: string }` | Fired when hovering over a data point |
|
|
142
|
+
|
|
143
|
+
## Keyboard Navigation
|
|
144
|
+
|
|
145
|
+
- **Tab**: Navigate between data points
|
|
146
|
+
- **Enter/Space**: Show tooltip for focused point
|
|
147
|
+
- Each bar/point is focusable and shows tooltip on focus
|
|
148
|
+
|
|
149
|
+
## CSS Parts
|
|
150
|
+
|
|
151
|
+
Use `::part()` to customize chart appearance:
|
|
152
|
+
|
|
153
|
+
```css
|
|
154
|
+
rel-chart::part(container) {
|
|
155
|
+
background: #f5f5f5;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
rel-chart::part(bar) {
|
|
159
|
+
rx: 4; /* Rounded corners */
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
rel-chart::part(tooltip) {
|
|
163
|
+
background: rgba(0, 0, 0, 0.9);
|
|
164
|
+
color: white;
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Available parts:
|
|
169
|
+
- `container` - Chart container
|
|
170
|
+
- `svg` - SVG element
|
|
171
|
+
- `grid` - Grid lines
|
|
172
|
+
- `axis` - Axis lines and labels
|
|
173
|
+
- `bar` - Bar elements
|
|
174
|
+
- `line` - Line paths
|
|
175
|
+
- `point` - Line chart points
|
|
176
|
+
- `legend` - Legend container
|
|
177
|
+
- `tooltip` - Tooltip overlay
|
|
178
|
+
|
|
179
|
+
## Data Format
|
|
180
|
+
|
|
181
|
+
### Simple Data
|
|
182
|
+
|
|
183
|
+
```javascript
|
|
184
|
+
[
|
|
185
|
+
{ month: 'Jan', value: 100 },
|
|
186
|
+
{ month: 'Feb', value: 150 },
|
|
187
|
+
{ month: 'Mar', value: 120 }
|
|
188
|
+
]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Multi-Series Data
|
|
192
|
+
|
|
193
|
+
```javascript
|
|
194
|
+
[
|
|
195
|
+
{ date: '2024-01', desktop: 186, mobile: 80, tablet: 45 },
|
|
196
|
+
{ date: '2024-02', desktop: 305, mobile: 200, tablet: 150 },
|
|
197
|
+
{ date: '2024-03', desktop: 237, mobile: 120, tablet: 90 }
|
|
198
|
+
]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Examples
|
|
202
|
+
|
|
203
|
+
### Complete Bar Chart Example
|
|
204
|
+
|
|
205
|
+
```html
|
|
206
|
+
<rel-chart
|
|
207
|
+
id="sales-chart"
|
|
208
|
+
type="bar"
|
|
209
|
+
height="360"
|
|
210
|
+
></rel-chart>
|
|
211
|
+
|
|
212
|
+
<script>
|
|
213
|
+
const chart = document.getElementById('sales-chart');
|
|
214
|
+
|
|
215
|
+
chart.xKey = 'month';
|
|
216
|
+
chart.data = [
|
|
217
|
+
{ month: 'January', desktop: 186, mobile: 80 },
|
|
218
|
+
{ month: 'February', desktop: 305, mobile: 200 },
|
|
219
|
+
{ month: 'March', desktop: 237, mobile: 120 },
|
|
220
|
+
{ month: 'April', desktop: 73, mobile: 190 },
|
|
221
|
+
{ month: 'May', desktop: 209, mobile: 130 },
|
|
222
|
+
{ month: 'June', desktop: 214, mobile: 140 }
|
|
223
|
+
];
|
|
224
|
+
|
|
225
|
+
chart.series = [
|
|
226
|
+
{ key: 'desktop', label: 'Desktop', colorToken: 'var(--rel-colors-blue-primary)' },
|
|
227
|
+
{ key: 'mobile', label: 'Mobile', colorToken: 'var(--rel-colors-green-primary)' }
|
|
228
|
+
];
|
|
229
|
+
|
|
230
|
+
chart.addEventListener('rel-hover', (e) => {
|
|
231
|
+
console.log('Hovering:', e.detail);
|
|
232
|
+
});
|
|
233
|
+
</script>
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Complete Line Chart Example
|
|
237
|
+
|
|
238
|
+
```html
|
|
239
|
+
<rel-chart
|
|
240
|
+
id="trend-chart"
|
|
241
|
+
type="line"
|
|
242
|
+
height="300"
|
|
243
|
+
format-x="date"
|
|
244
|
+
></rel-chart>
|
|
245
|
+
|
|
246
|
+
<script>
|
|
247
|
+
const chart = document.getElementById('trend-chart');
|
|
248
|
+
|
|
249
|
+
chart.xKey = 'date';
|
|
250
|
+
chart.data = [
|
|
251
|
+
{ date: '2024-01-01', revenue: 4200 },
|
|
252
|
+
{ date: '2024-01-08', revenue: 4500 },
|
|
253
|
+
{ date: '2024-01-15', revenue: 4100 },
|
|
254
|
+
{ date: '2024-01-22', revenue: 4800 },
|
|
255
|
+
{ date: '2024-01-29', revenue: 5200 }
|
|
256
|
+
];
|
|
257
|
+
|
|
258
|
+
chart.series = [
|
|
259
|
+
{ key: 'revenue', label: 'Revenue', colorToken: 'var(--rel-colors-green-success)' }
|
|
260
|
+
];
|
|
261
|
+
</script>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Accessibility
|
|
265
|
+
|
|
266
|
+
- Charts use semantic SVG with proper ARIA labels
|
|
267
|
+
- All interactive elements are keyboard accessible
|
|
268
|
+
- Tooltips appear on both hover and focus
|
|
269
|
+
- Respects `prefers-reduced-motion` user preference
|
|
270
|
+
- Color is not the only way to distinguish data (labels provided)
|
|
271
|
+
|
|
272
|
+
## Styling
|
|
273
|
+
|
|
274
|
+
The component uses design tokens from the Reliability Design System. All colors, spacing, and typography are inherited from CSS variables.
|
|
275
|
+
|
|
276
|
+
Key tokens used:
|
|
277
|
+
- `--rel-colors-*` for all colors
|
|
278
|
+
- `--rel-spacing-*` for spacing
|
|
279
|
+
- `--rel-fontSizes-*`, `--rel-fontWeights-*` for typography
|
|
280
|
+
- `--rel-borders-*` for borders and radius
|
|
281
|
+
- `--rel-shadows-*` for shadows
|
|
282
|
+
- Default series colors use system color tokens
|
|
283
|
+
|
|
284
|
+
## Browser Support
|
|
285
|
+
|
|
286
|
+
Works in all modern browsers with ES2020 support and native Web Components.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./rel-chart";
|