@espressif/dashboard-ui-components 1.0.0 → 1.1.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 ADDED
@@ -0,0 +1,172 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here. The format is based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres
5
+ to [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [1.1.1] - 2026-08-04
8
+
9
+ A patch release with no API changes: a much smaller published bundle, a wider default
10
+ sidebar, and a fix to the internal release script. No component props were added,
11
+ removed or renamed.
12
+
13
+ ### Added
14
+ - `.webp` is now a recognised asset type: declared in the ambient asset typings and
15
+ inlined by the build, so `import bg from './x.webp'` behaves like the other image
16
+ formats.
17
+
18
+ ### Changed
19
+ - `EntryLayout`'s default background ships as WebP instead of JPEG — the same artwork at
20
+ the same 1836×1092 dimensions, but **~338 KB smaller in the published bundle**. The
21
+ asset is inlined as a data URL, so it accounted for ~523 KB base64-encoded before and
22
+ ~186 KB now. Apps that pass their own `backgroundImage` are unaffected either way.
23
+ - Default `--espd-sidebar-width` raised from `256px` to `288px`, giving nested sidebar
24
+ items and longer group labels more room before they truncate. This is a visual change
25
+ for apps that use the default; redeclare the token after the styles import to keep the
26
+ old width.
27
+
28
+ ### Internal
29
+ Nothing in this section affects the published package — it covers the release tooling and
30
+ the demo app, neither of which ships to consumers.
31
+
32
+ - Release script: the version-bump and promote MRs are no longer merged the instant they
33
+ are created. GitLab computes mergeability asynchronously, and merging into that window
34
+ answers a bare `405 Method Not Allowed` — which is what broke the `v1.1.0` release
35
+ after eleven releases won the race by luck. The script now polls
36
+ `detailed_merge_status` until the MR is actually mergeable, retries `405`/`409` a few
37
+ times, and bails out immediately on the states that need a human (conflicts, drafts,
38
+ unresolved threads, missing approvals). Timeout and poll interval are tunable via
39
+ `RELEASE_MERGE_TIMEOUT` and `RELEASE_MERGE_POLL_INTERVAL`; failures now print the last
40
+ status GitLab reported instead of only the HTTP code.
41
+ - Demo app: a search field in the header that jumps to any component page, with a `⌘K` /
42
+ `Ctrl K` shortcut to focus it. Matching is substring-based rather than cmdk's default
43
+ fuzzy scoring, so "tab" ranks `Tabs` first instead of burying it under subsequence
44
+ matches, and hyphens are ignored so "datatable" finds `data-table`.
45
+
46
+ ## [1.1.0] - 2026-08-03
47
+
48
+ A maintenance release: one new component, a few new props, and fixes to the sidebar,
49
+ inputs, scrollable sections and data table. No breaking changes — existing code keeps
50
+ working as before.
51
+
52
+ ### Added
53
+ - **`RequirementList`** — a new component that shows which conditions a value meets and
54
+ which it does not: a green check for met items, a muted hollow circle for the rest.
55
+ Built for password rules under an `InputPassword`, but not password-specific. Three
56
+ sizes, and updates are announced to screen readers as the user types.
57
+ - `Alert`: `dismissible` adds a close button that hides the alert, with `onDismiss` to
58
+ react to it and `dismissLabel` for the accessible label. It sits alongside any actions
59
+ you already pass instead of replacing them.
60
+ - `MonospaceContent`: `mask` hides the value behind dots — for API keys, passwords and
61
+ similar secrets — with an eye toggle to reveal it. Copying always copies the real
62
+ value. Set `allowUnmask={false}` to keep it hidden for good. Masking is a UI guard,
63
+ not a security boundary: the value is still in the page.
64
+ - `CopiableText`: `actions` adds your own controls next to the copy button, and
65
+ `alwaysShowActions` keeps them visible instead of only on hover.
66
+ - `SectionCard`: `truncateSecondaryText={false}` lets the secondary text wrap over as
67
+ many lines as it needs, instead of being cut to one line with a tooltip.
68
+ - `DataTable`: `pageSizeOptions` sets the page sizes offered in the selector, so it can
69
+ match what your API accepts. Defaults to the page sizes used until now (exported as
70
+ `DEFAULT_PAGE_SIZE_OPTIONS`); pass `[]` to hide the selector.
71
+
72
+ ### Fixed
73
+ - `Input`: add-ons now combine with icons, floating labels and the character counter —
74
+ previously only one of them showed at a time, and the password show/hide toggle
75
+ disappeared when an add-on was used. The counter and a trailing icon no longer
76
+ overlap, and both helper texts are read out correctly by screen readers.
77
+ - `Sidebar`: the selected item is now clearly highlighted, and stays recognisable when
78
+ the sidebar is collapsed. Icons are one consistent size everywhere (items, groups,
79
+ chevrons and row actions), rows line up at equal height, nested items are indented
80
+ more clearly, long group labels truncate instead of growing the row, and items with
81
+ no icon show a small neutral dot instead of an initials avatar.
82
+ - `Sidebar`: selection no longer bleeds between sibling pages whose paths share a
83
+ prefix — on `/components/input-password`, `/components/input` stays unselected.
84
+ Sub-pages still highlight their parent item.
85
+ - `ScrollableSections`: on mobile the section picker now stays pinned to the top while
86
+ you scroll, and picking a section no longer leaves its heading hidden behind the
87
+ picker. Long tab labels wrap instead of overflowing the column, and the active-tab
88
+ highlight repositions itself correctly after a resize.
89
+ - `DataTable`: the page-size selector is hidden when no `onPageSizeChange` handler is
90
+ given — it used to be shown even though picking a size did nothing. A current page
91
+ size outside the offered list also stays selectable.
92
+ - `SectionCard`: the header icon is aligned to the middle of the header, and very long
93
+ words wrap instead of spilling out of the card.
94
+
95
+ ## [1.0.0] - 2026-07-31
96
+
97
+ First public npm release.
98
+
99
+ ### Added
100
+ - `MarkdownContent`: renders a markdown string using the library's own primitives
101
+ (`Typography`, `Code`, `Link`, `Table`, `Separator`), with GitHub-flavoured markdown
102
+ via `remark-gfm` and heading anchors via `rehype-slug`. Raw HTML in the source is
103
+ escaped rather than parsed, so no sanitizer is involved and embedded HTML does not
104
+ render. `react-markdown`, `remark-gfm` and `rehype-slug` are regular dependencies —
105
+ external to the bundle, but installed with the package, so consumers need no extra
106
+ install step.
107
+ - `AppLogo` preset `rainmaker-classic` (light/dark × full/minimal assets), also
108
+ selectable as `WorkspaceLayout` / `EntryLayout` `appName`.
109
+ - `Sidebar`: on mobile the sheet header now has a close button, and tapping a menu
110
+ item closes the sheet after navigating.
111
+ - Apache-2.0 `LICENSE`, `NOTICE`, and `THIRD-PARTY-NOTICES.md`.
112
+ - SPDX license headers (`SPDX-FileCopyrightText` + `SPDX-License-Identifier:
113
+ Apache-2.0`) on all source files, and `publishConfig.access: "public"` —
114
+ aligning with Espressif's other open-source TypeScript SDKs
115
+ (e.g. `@espressif/rainmaker-base-sdk`).
116
+
117
+ ### Changed
118
+ - Standardized the copyright holder to **`Espressif Systems (Shanghai) CO LTD`**
119
+ across `LICENSE`, `NOTICE`, and `package.json` `author`, matching the wording
120
+ used in Espressif's other public repositories.
121
+ - **BREAKING:** minimum supported runtime for consumers raised to **Node.js 20.19**
122
+ (`engines.node: ">=20.19.0"`), driven by the `shiki@4` alignment below. The `npm`
123
+ constraint was dropped from `engines` entirely — it only ever affected consumers.
124
+ - Published to **public npm** under `@espressif` (previously internal GitLab
125
+ registry only).
126
+ - Font stack now relies on `--font-sans`; consumers supply their own typeface.
127
+ - `shiki` runtime dependency aligned to `^4` (matches the tested version). This is
128
+ what sets the Node 20.19 floor.
129
+
130
+ ### Security
131
+ - `postcss` updated to `8.5.25` — fixes path traversal in previous-source-map
132
+ auto-loading ([GHSA-r28c-9q8g-f849](https://github.com/advisories/GHSA-r28c-9q8g-f849),
133
+ high). Build-time dependency; the published bundle is unaffected.
134
+ - `esbuild` pinned to `^0.28.1` via `overrides` — fixes arbitrary file read in the
135
+ esbuild dev server on Windows
136
+ ([GHSA-g7r4-m6w7-qqqr](https://github.com/advisories/GHSA-g7r4-m6w7-qqqr), low).
137
+ The override exists because `tsup@8.5.1` still caps `esbuild` at `^0.27.0`; remove
138
+ it once tsup widens that range.
139
+
140
+ ### Removed
141
+ - **BREAKING:** the `CustomIcon` component and its exports
142
+ (`CustomIcon`, `customIconRegistry`, `customIconIds`, `CustomIconProps`,
143
+ `CustomIconId`). It only rendered third-party brand logos; use
144
+ [`lucide-react`](https://lucide.dev) (already a dependency) or your own SVGs
145
+ instead.
146
+ - **BREAKING:** bundled font binaries (Maison Neue, Trueno) and the `--font-*`
147
+ Tailwind families for them. Set `--font-sans` in your app to choose a typeface.
148
+
149
+ ### Internal
150
+ Repository and CI changes only — no effect on the published package.
151
+
152
+ - CI: `test` job (build, typecheck, unit tests) on the `node:24.18` image.
153
+ - CI: dual-publish — the same tarball is published to public npm and the
154
+ internal GitLab registry from one tag pipeline.
155
+ - Development toolchain pinned to **Node 24.18.1 / npm 11.16.0** via `.nvmrc` and
156
+ `.node-version`, with a `devEngines` floor of Node `>=24.18.0` / npm `>=11.16.0`.
157
+ `npm ci` and `npm run *` fail with `EBADDEVENGINES` below that floor. The floor is
158
+ a minor below the pinned version because Docker publishes Node patch image tags a
159
+ few days after the Node release. This is a contributor requirement only and does
160
+ not constrain consumers.
161
+ - Install-script review policy: `esbuild` and `fsevents` are recorded in
162
+ `allowScripts` as the only dependencies permitted to run install scripts.
163
+
164
+ ## Earlier releases
165
+
166
+ Versions up to and including 0.10.1 were distributed via the internal GitLab
167
+ npm Package Registry only.
168
+
169
+ `0.11.0` was published briefly to verify the release pipeline end to end and was
170
+ unpublished from public npm; it is not a supported version. `1.0.0` is the first
171
+ supported public release. See the package's
172
+ [npm versions](https://www.npmjs.com/package/@espressif/dashboard-ui-components?activeTab=versions).
package/README.md CHANGED
@@ -444,7 +444,7 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
444
444
  | Dialog / ConfirmationDialog / FullscreenDialog | Modal dialogs |
445
445
  | Pagination | Page navigation controls |
446
446
  | Badge | Status and label badges |
447
- | Alert | Alert banners |
447
+ | Alert | Alert banners (optionally dismissible) |
448
448
  | Link | Styled anchor element |
449
449
  | Code | Syntax-highlighted code blocks |
450
450
  | MarkdownContent | Renders a markdown string with library primitives (GFM, heading anchors; raw HTML is escaped, not parsed) |
@@ -455,6 +455,7 @@ Re-run after upgrading the library to pick up guidance changes. Commit the copie
455
455
  | PreviewCard | Content preview card |
456
456
  | PageContainer | Page wrapper with header |
457
457
  | DynamicList | Dynamic item list |
458
+ | RequirementList | Met/unmet checklist (password rules, prerequisites); check for satisfied rows, muted circle for outstanding ones, with screen-reader state labels |
458
459
  | TogglableItemsList | Toggleable item list |
459
460
  | GlitchText / GradientText / HighlightText / ShimmeringText | Text effects |
460
461
  | LottieAnimationContainer | Lottie animation wrapper |