@espressif/dashboard-ui-components 1.1.3 → 1.2.1

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,17 +4,98 @@ 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
- ## [Unreleased]
7
+ ## [1.2.1] - 2026-08-27
8
+
9
+ A patch release that adds one new component (`StatusBadge`). No breaking
10
+ changes.
8
11
 
9
12
  ### Added
10
- - `DataTable`: `noResultsAction` renders a call-to-action (e.g. an "Add device"
11
- button) below the description in the empty state the missing piece for the
12
- common "no users found, create user" pattern. Alongside it, `noResultsHeading`
13
- and `noResultsDescription` now accept `ReactNode` as well as `string`, and
14
- `noResultsIllustration` / `hideNoResultsIllustration` let you swap or drop the
15
- empty-state graphic. Purely additive: existing string usages keep working
16
- unchanged, and the default illustration/heading/description stay the same when
17
- nothing is passed.
13
+ - **`StatusBadge`** new component. A thin, i18n-free wrapper around `Badge`
14
+ and `Spinner` for the "icon + translated label" status chips that every
15
+ consumer app has been hand-rolling. `label` is the already-translated
16
+ string; `Icon` is an optional `LucideIcon` rendered in the leading slot;
17
+ `isLoading` swaps the icon for a matching-size `Spinner` while keeping the
18
+ chip's footprint stable. `color` and `variant` pass straight through to the
19
+ underlying `Badge` (defaults: `variant="soft"`, no color). `size` (`sm` /
20
+ `default` / `lg`, default `default`) drives gap, padding and icon pixel
21
+ size (14 / 16 / 18 px); the chip is always `rounded-full` — the defining
22
+ status-chip shape. The per-status registry (which icon / colour / label
23
+ for `pending` vs `failed`) stays in the consuming app's domain layer; the
24
+ library ships only the primitive. Exports: `StatusBadge`,
25
+ `StatusBadgeProps`, `statusBadgeSizeVariants`. No new dependencies.
26
+
27
+ ## [1.2.0] - 2026-08-26
28
+
29
+ A minor release that adds two new components (`Carousel`, `InputOTP`), extends
30
+ localisation on `KeyValueManager`, and reworks how solid-surface icon cards
31
+ render their inner disc so the glyph stays legible.
32
+
33
+ ### Added
34
+ - **`Carousel`** — new component. Built on Embla Carousel with the autoplay
35
+ plugin. Slides are supplied as `data` (each with a stable `id`); `orientation`
36
+ chooses `horizontal` / `vertical`; `navigation` selects between built-in
37
+ `dots`, `arrows`, or a `custom` renderer that receives a
38
+ `CarouselNavigationState` (`canScrollPrev` / `canScrollNext`,
39
+ `selectedIndex`, `scrollSnaps`, `scrollPrev` / `scrollNext` / `scrollTo`).
40
+ `maxDots` caps the pagination row at a sliding window (clamped to `[1, 10]`,
41
+ default `5`). `autoplay` + `delay` (clamped to `[1000, 10000]` ms, default
42
+ `3000`) drive automatic advancement; `loop` wraps at the ends. `onNext` /
43
+ `onPrevious` fire after every direction change (user, keyboard, autoplay or
44
+ custom). `className` / `itemClassName` style the wrapper and each slide.
45
+ Exports: `Carousel`, `CarouselItem`, `CarouselNavigationState`,
46
+ `CarouselNavigationStyle`, `CarouselOrientation`, `CarouselProps`. Adds
47
+ `embla-carousel-react` and `embla-carousel-autoplay` as dependencies.
48
+ - **`InputOTP`** — new component, alongside `InputOTPSeparator`. Built on the
49
+ `input-otp` package. Numeric by default; `allowAlphaNumeric` widens the
50
+ accepted characters to `[a-zA-Z0-9]`, and `regex` accepts a custom JS regex
51
+ source (which overrides `allowAlphaNumeric`). Slot count is clamped to
52
+ `[2, 12]` (default `6`). `separators` (e.g. `[3, 3]`) inserts group
53
+ boundaries between slot runs — ignored with a `console.warn` when the sum
54
+ does not equal `length`. Controlled or uncontrolled (`value` /
55
+ `defaultValue`); `onChange` fires on every keystroke, `onComplete` once the
56
+ final slot is filled. Composes with the standard input shell (`label`,
57
+ `required`, `size`, `rounded`, `disabled`, `startHelperContent` /
58
+ `endHelperContent`, `hintContent`, `error` / `errorContent`). Adds
59
+ `input-otp` as a dependency.
60
+ - `KeyValueManager`: five new label overrides on the existing `labels` prop —
61
+ `keyLabel`, `valueLabel`, `actionLabel` (used for the column headers *and*
62
+ the add-popover field labels), `emptyItems` (message when the list is
63
+ empty) and `emptySearch` (message when a search returns no results). The
64
+ `search` placeholder is now derived at resolve time from `keyLabel` /
65
+ `valueLabel` when no explicit `search` is passed, so renaming the columns
66
+ updates the placeholder automatically. Backwards compatible — omitted
67
+ labels fall back to the existing defaults.
68
+ - `IconAvatar`: `discClassName` and `discStyle` — extra classes and inline
69
+ style applied to the inner disc after the variant/legacy styling. Enables
70
+ the new solid-surface icon-disc treatment below without callers rebuilding
71
+ the avatar from scratch.
72
+
73
+ ### Changed
74
+ - **Solid-surface icon cards** (`SimpleClickableCard`, `SimpleInfoCard`,
75
+ `IconTextActionCard`, and `Alert` when it renders an `IconAvatar`): when
76
+ the outer variant is `solid`, the inner icon disc now renders as a
77
+ translucent-foreground bubble on the same-color surface — a ≈15 %
78
+ foreground fill with a ≈30 % foreground border, glyph painted in the
79
+ color's `-foreground` token — instead of resolving the avatar to the
80
+ surface's opposite color. Reads as an inverted-fill circle enclosing the
81
+ glyph, restoring contrast against the same-color card. Non-solid variants
82
+ are unchanged and each consumer keeps its previous default (`Alert` still
83
+ opts into a solid avatar disc; the card components still fall through to
84
+ `IconAvatar`'s `legacy` tinted disc). Explicit `iconAvatarVariant` /
85
+ `iconAvatarColor` props always win. Internal only: `SOLID_ICON_AVATAR_COLOR`
86
+ is removed and `resolveIconAvatarColor` becomes `resolveIconAvatarDefaults`.
87
+
88
+ ### Fixed
89
+ - Display issues on solid-variant `Alert` and card components where the icon
90
+ glyph could wash out against a same-color background. The redesign in
91
+ *Changed* restores contrast without any prop change on the caller side.
92
+
93
+ ### Internal
94
+ Nothing in this section affects the published package.
95
+
96
+ - Removed a stray tracked `todo.md` from the repository root.
97
+
98
+ ## [1.1.3] - 2026-08-08
18
99
 
19
100
  ### Fixed
20
101
  - **Vite 8 compatibility**: `LottieAnimationContainer` and everything built on it
@@ -67,6 +148,18 @@ which does not ship to consumers.
67
148
  round-trip, the plain-text fallback for an unbundled language (`haskell`), and
68
149
  the `github-light` / `github-dark` theme override.
69
150
 
151
+ ## [1.1.2] - 2026-08-06
152
+
153
+ ### Added
154
+ - `DataTable`: `noResultsAction` renders a call-to-action (e.g. an "Add device"
155
+ button) below the description in the empty state — the missing piece for the
156
+ common "no users found, create user" pattern. Alongside it, `noResultsHeading`
157
+ and `noResultsDescription` now accept `ReactNode` as well as `string`, and
158
+ `noResultsIllustration` / `hideNoResultsIllustration` let you swap or drop the
159
+ empty-state graphic. Purely additive: existing string usages keep working
160
+ unchanged, and the default illustration/heading/description stay the same when
161
+ nothing is passed.
162
+
70
163
  ## [1.1.1] - 2026-08-04
71
164
 
72
165
  A patch release with no API changes: a much smaller published bundle, a wider default