@espressif/dashboard-ui-components 1.6.0 → 1.8.0

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/CHANGELOG.md CHANGED
@@ -4,6 +4,164 @@ All notable changes to this project are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
5
5
  to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## [1.8.0] - 2026-10-08
8
+
9
+ A minor release focused on small screens. `Tabs`, `DataTable`, `SimpleList`,
10
+ `DynamicList`, `ListDetails`, `KeyValueManager` and `Pagination` now adapt
11
+ to phone widths, and `ScrollArea` no longer stretches to fit wide content.
12
+ `DataTable` gains sticky, wrapping and width-based hidden columns, and a
13
+ new `rm-dashboard-update` illustration is added. No breaking API changes,
14
+ but one default changed: `DataTable` cells now stay on one line, so long
15
+ free-text columns need `meta: { wrap: true }` to keep wrapping.
16
+
17
+ ### Added
18
+ - **`Illustration`** — new `rm-dashboard-update` illustration: the RainMaker
19
+ cloud delivering update packages to a dashboard on a laptop. It is a
20
+ companion to `rm-data-download` (same canvas, cloud and connector) and,
21
+ like it, plays SMIL animations with `animated`: packages fly in, each one
22
+ refreshes a stat card, the chart regrows, the progress bar fills and a sync
23
+ badge spins. Colours come from the theme tokens, so it works in dark mode.
24
+ - **`DataTable`** — responsive column options through `meta` (typed as the
25
+ exported `DataTableColumnMeta`): `sticky: true` pins leading columns to
26
+ the left edge while the table scrolls horizontally (the row-selection
27
+ checkbox column is pinned with them), and `wrap: true` lets a long
28
+ free-text column wrap. Pinned cells use the page background; tables on
29
+ another surface set `--data-table-sticky-bg` to match it.
30
+ - **`DataTable`** — `meta.hideBelow` hides lower-priority columns while the
31
+ table is narrow. It takes a size from Tailwind's container scale (`sm`
32
+ 384px … `7xl` 1280px, typed as `DataTableBreakpoint`) or a width in pixels,
33
+ and measures the table's own width rather than the viewport, so it also
34
+ works in sheets and split panes. A phone-width table is below `sm`, so
35
+ `hideBelow: "sm"` hides a column on phones. Hidden columns stay in the
36
+ Columns menu; visibility is only re-applied when the width crosses a
37
+ breakpoint, so a column the user brings back stays visible.
38
+ - **`ScrollArea`** — `orientation` prop (`"vertical"` default,
39
+ `"horizontal"`, `"both"`) choosing which directions scroll and which
40
+ scrollbars render. Types exported as `ScrollAreaProps` and
41
+ `ScrollAreaOrientation`.
42
+ - **`Table`** — optional `containerRef` and `containerClassName` props for
43
+ the scroll container that wraps the `<table>`.
44
+
45
+ ### Changed
46
+ - **`Tabs`** — when the triggers don't fit, `TabsList` now scrolls
47
+ horizontally instead of overflowing the page. Edges fade where tabs are
48
+ hidden, chevron buttons page through them on mouse and trackpad devices
49
+ (touch devices swipe), and the selected tab is kept in view. Lists with
50
+ `aria-orientation="vertical"` are unchanged.
51
+ - **`DataTable`** — on narrow screens the table now scrolls horizontally
52
+ instead of squashing its columns. Body cells stay on one line by default
53
+ (as header cells already did), and shadows at the edges show when columns
54
+ are scrolled out of view. Long free-text columns that used to wrap now
55
+ extend the row; add `meta: { wrap: true }` to keep them wrapping. The
56
+ toolbar also wraps, so `tableActionsContent` moves above the Columns
57
+ button when there is no room for both.
58
+ - **`SimpleList`, `DynamicList`** — `direction="row"` (list-level or, in
59
+ `SimpleList`, per item) now applies from the `sm` breakpoint (640px) up.
60
+ On phones, label and value stack like a column row instead of squeezing
61
+ onto one line. `DynamicList`'s `keyWidth` split applies from `sm` up.
62
+ - **`ListDetails`** — below the `md` breakpoint (768px) the layout stacks:
63
+ the items become a single scrollable row with arrow buttons and edge
64
+ fades, the selected item is kept in view, and its details show below.
65
+ The `footer` is hidden on these screens. String titles in the row are
66
+ capped at 12rem and truncated, and the default chevron is omitted there
67
+ (a custom `endIcon` still shows). From `md` up the layout is unchanged.
68
+ - **`KeyValueManager`** — on small screens (below the `sm` breakpoint,
69
+ 640px) search and Add become icon buttons. The search icon expands the
70
+ search box across the toolbar (hiding Add) and focuses it; a close
71
+ button, or Escape, clears the search and returns to the icons. Rows show
72
+ as key/value cards without the column header, with the delete button
73
+ always visible. New `labels.closeSearch` names the close button.
74
+ - **`Pagination`** — in containers narrower than 28rem the Previous and
75
+ Next buttons become icon-only (their labels stay available to screen
76
+ readers), and the page-size selector wraps onto its own line when the row
77
+ still doesn't fit.
78
+
79
+ ### Fixed
80
+ - **`ScrollArea`** — content wider than the area no longer stretches it
81
+ and gets clipped. A vertical area (the default) now keeps its content at
82
+ the area's width, so wide children such as `DataTable` scroll sideways on
83
+ their own. Areas that pass `<ScrollBar orientation="horizontal" />` as a
84
+ child keep scrolling horizontally as before; prefer `orientation`.
85
+ - **`BasicDetailsCard`** — a small gap (0.25rem) now separates the primary
86
+ and secondary text, which previously touched. This also spaces out
87
+ `DynamicList` rows and the small-screen `KeyValueManager` rows that use it.
88
+ - **`KeyValueManager`** — the row delete button, shown on hover, is now
89
+ also visible when focused with the keyboard.
90
+ - **`Tabs`** — the animated highlight stays aligned with its tab when the
91
+ tab list's container is scrolled.
92
+
93
+ ### Internal
94
+ Nothing in this section affects the published package.
95
+
96
+ - A shared `useScrollOverflow` hook (not exported) tracks hidden content on
97
+ either side of a horizontal scroller for `Tabs`, `DataTable` and
98
+ `ListDetails`.
99
+ - Demo: new examples for `Tabs` (many tabs, plus tab-count and icon
100
+ controls on the playground), `DataTable` (wide table, phone width,
101
+ several pinned columns, wrapping, clickable rows, tinted surface and a
102
+ resizable `hideBelow` table), `Pagination` (narrow containers) and
103
+ `ScrollArea` (wide content, horizontal scrolling). The demo's API tables
104
+ mark free-text columns as `wrap`.
105
+ - Tests for `DataTable` column `meta` (`sticky`, `wrap`, `hideBelow`),
106
+ `ListDetails`, `KeyValueManager` and `ScrollArea`.
107
+
108
+ ## [1.7.0] - 2026-10-06
109
+
110
+ A minor release adding per-item icons and colours to `OverflowBadgeList`
111
+ and element icons to `StatusBadge`, with fixes to the collapsed `Sidebar`
112
+ flyout menus and the `WorkspaceLayout` account menu. No breaking changes.
113
+
114
+ ### Added
115
+ - **`OverflowBadgeList`** — per-item icons and colours. `items` now also
116
+ accepts `{ id?, label, icon?, color? }` objects (exported as
117
+ `OverflowBadgeListItem`), which can be mixed with plain strings. Each
118
+ object item renders its own `icon` and uses its own `color` in place of
119
+ `badgeColor`, so a list can show, for example, a brand icon per
120
+ integration and grey out inactive entries. Plain-string items behave as
121
+ before: the list-level `icon` appears on the first badge only.
122
+ - **`StatusBadge`** — `icon` also accepts a pre-built element (such as a
123
+ custom SVG brand icon) in addition to a Lucide component. Elements are
124
+ rendered as-is, so the caller sets their size. The type is exported as
125
+ `StatusBadgeIcon`. No breaking changes.
126
+
127
+ ### Changed
128
+ - **`IconTextActionCard`, `SimpleClickableCard`, `SimpleInfoCard`** — a
129
+ `title` passed as a ReactNode now gets the same title typography (size and
130
+ weight for the card `size`) as a string title, instead of inheriting the
131
+ surrounding text style. It is still wrapped in a `div`, so block content
132
+ stays valid. Elements inside the title that set their own font size or
133
+ weight are unaffected; plain text inside it becomes the title weight.
134
+
135
+ ### Fixed
136
+ - **`StatusBadge` / `OverflowBadgeList`** — badges with an icon no longer
137
+ sit higher than badges without one.
138
+ - **`Sidebar` / `WorkspaceLayout`** — collapsed sidebar flyout menus:
139
+ - Choosing an item no longer brings back the group's label tooltip.
140
+ Closing the flyout with Escape or the keyboard still returns focus to
141
+ the group icon.
142
+ - Clicking anywhere on a row now navigates and closes the flyout.
143
+ Previously, with a router `linkComponent`, clicking the empty part of a
144
+ row navigated but left the flyout open, and clicking the row's edge
145
+ closed it without navigating.
146
+ - Choosing an item with Enter or Space now navigates to it. Previously the
147
+ flyout closed without navigating.
148
+ - **`WorkspaceLayout`** — clicking the profile card in the account menu
149
+ (when `onProfileCardClick` is set) now closes the menu after the callback
150
+ runs. The card also highlights on hover like the other menu rows and can
151
+ be reached with the arrow keys and chosen with Enter or Space.
152
+
153
+ ### Internal
154
+ Nothing in this section affects the published package.
155
+
156
+ - Demo: the landing page's right panel now plays a looping, silent showreel
157
+ of the library's components, rendered from the real components by
158
+ `demo/video` (`npm run video:beats` / `npm run video:render`).
159
+ - Demo: the `OverflowBadgeList` page gains a per-item icons example, and the
160
+ `WorkspaceLayout` page wires `onProfileCardClick` / `onLogoutClick` and
161
+ documents `onProfileCardClick`.
162
+ - Tests for `IconTextActionCard`, `OverflowBadgeList`, `Sidebar` and the
163
+ `WorkspaceLayout` account menu.
164
+
7
165
  ## [1.6.0] - 2026-09-25
8
166
 
9
167
  A minor release adding an editable code field (`CodeEditor`), a warning