nuvox 0.1.4 → 0.1.5
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/BUILDING-COMPONENTS.md +2 -0
- package/CHANGELOG.md +51 -147
- package/dist/{chunk-KKRVJF3Y.js → chunk-NC2NEPPE.js} +756 -2
- package/dist/chunk-NC2NEPPE.js.map +1 -0
- package/dist/index.cjs +720 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +19 -1
- package/dist/react/index.cjs +4803 -2468
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.css +1014 -67
- package/dist/react/index.css.map +1 -1
- package/dist/react/index.d.cts +180 -3
- package/dist/react/index.d.ts +180 -3
- package/dist/react/index.js +2559 -964
- package/dist/react/index.js.map +1 -1
- package/dist/{context-menu-CcYi_Dc_.d.cts → rich-text-DpGtEsdl.d.cts} +147 -1
- package/dist/{context-menu-CcYi_Dc_.d.ts → rich-text-DpGtEsdl.d.ts} +147 -1
- package/package.json +2 -2
- package/dist/chunk-KKRVJF3Y.js.map +0 -1
package/BUILDING-COMPONENTS.md
CHANGED
|
@@ -437,6 +437,8 @@ good at telling you.
|
|
|
437
437
|
| 42 | Carousel | F | ✅ | ❌ | ❌ *(own baseline: arrow keys, pause-on-hover, not Rule 11)* | ✅ | ✅ *(active slide)* | 🛠️ Built |
|
|
438
438
|
| 43 | Rating | B | ✅ | ❌ | ❌ | ➖ | ✅ *(selected value)* | 🛠️ Built *(added outside the original plan — a single-value control, same shape as Slider)* |
|
|
439
439
|
| 44 | StatCard | A | ✅ | ❌ | ❌ | ➖ | ❌ | 🛠️ Built *(added outside the original plan — composes `Card` for chrome)* |
|
|
440
|
+
| 45 | CodeBlock | A | ✅ *(forwards to the scrollable `<pre>`)* | ❌ | ❌ | ➖ | ❌ | 🛠️ Built *(added outside the original plan — tokenizer lives in the shared `core/code-highlight.ts` primitive, not owned solely by this component; `highlighter` prop is a pluggable escape hatch, see that file's header)* |
|
|
441
|
+
| 46 | RichTextEditor | F | ✅ *(`RichTextContent` forwards to the contentEditable element)* | ➖ *(the link editor's popover panel portals via the real `Popover`, not directly)* | ➖ *(inherited transitively through `Popover`)* | ✅ *(link editor composes `Popover`, Rule 12)* | ✅ *(`value`/`onChange`, HTML string)* | 🛠️ Built *(added outside the original plan — by far the largest component; deliberately NOT a ProseMirror-style document model, see `core/rich-text.ts`'s header for the v1 scope boundary and the `engine` escape hatch for consumers who need one)* |
|
|
440
442
|
|
|
441
443
|
A few things worth noting from the table itself, not just the rows:
|
|
442
444
|
|
package/CHANGELOG.md
CHANGED
|
@@ -3,173 +3,77 @@
|
|
|
3
3
|
All notable changes to this project are documented here.
|
|
4
4
|
Format loosely follows [Keep a Changelog](https://keepachangelog.com/).
|
|
5
5
|
|
|
6
|
+
## [0.1.5]
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
* Added new components: `ChatBubble`, `Sidebar`, `ResizablePanel`, `CodeBlock`, `RichTextEditor`, and `SpeedDial`.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
* Fixed multiple CSS and theming issues across several components.
|
|
15
|
+
* Improved component styling consistency across themes.
|
|
16
|
+
* Fixed various layout, spacing, and visual issues.
|
|
17
|
+
|
|
6
18
|
## [0.1.4]
|
|
7
19
|
|
|
8
20
|
### Fixed
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
are siblings of each other, not nested in each other — opening one
|
|
15
|
-
while the other was open left both on screen at once, only closing
|
|
16
|
-
on a re-click or a selection. `useClickOutside` now walks the real
|
|
17
|
-
relationship instead of doing a blanket portal check: it follows
|
|
18
|
-
"which portal contains this click" → "whose trigger opened that
|
|
19
|
-
portal" → "is that trigger contained in my own refs, or itself
|
|
20
|
-
inside another portal" (repeating for arbitrarily deep nesting) —
|
|
21
|
-
which correctly tells "genuinely nested inside me" apart from
|
|
22
|
-
"elsewhere inside a shared ancestor," however many levels deep.
|
|
23
|
-
`ThemedPortal` now tracks each portal's own anchor element for this
|
|
24
|
-
to walk. See the "Sibling overlays" and first two "Nested overlay"
|
|
25
|
-
cases in `tests/nested-overlays.test.tsx`.
|
|
26
|
-
- A `DropdownMenu` (or `Select`/`Combobox`/`ColorPicker`) nested
|
|
27
|
-
inside an open `Popover` rendered BEHIND it: each component's CSS
|
|
28
|
-
sets a fixed z-index tier (`Popover` 1060, `DropdownMenu`/`Select`/
|
|
29
|
-
`Combobox` 1050, `Tooltip` 1100, `Toast` 1200, ...), correct for
|
|
30
|
-
independent, non-nested overlays but backwards for this one
|
|
31
|
-
relationship — the nested overlay needs to paint above its own
|
|
32
|
-
container regardless of which tier either belongs to. `ThemedPortal`
|
|
33
|
-
now detects when an overlay's own trigger sits inside another,
|
|
34
|
-
already-open overlay's portaled content, and in that case only,
|
|
35
|
-
assigns it an inline z-index above the shared 1150 base (below
|
|
36
|
-
`Toast`'s 1200, which stays on top of everything as a global
|
|
37
|
-
notification regardless of nesting) via `position: relative` on the
|
|
38
|
-
portal wrapper itself — not the component's own CSS class, so
|
|
39
|
-
ordinary non-nested overlays are completely untouched. Verified safe
|
|
40
|
-
for `Popover`/`DropdownMenu` specifically: both position their
|
|
41
|
-
content with inline `position: fixed` (`useFloatingPosition`), which
|
|
42
|
-
isn't affected by an ancestor's `position: relative` — only
|
|
43
|
-
`transform`/`filter`/etc. would change a fixed descendant's
|
|
44
|
-
containing block. Not verified against every possible pairing (e.g.
|
|
45
|
-
a `position: absolute` `Tooltip` ending up as the nested one) — this
|
|
46
|
-
covers the reported and tested composition, not every combination.
|
|
21
|
+
|
|
22
|
+
* Fixed nested overlay interactions so genuinely nested overlays work correctly without interfering with sibling overlays.
|
|
23
|
+
* Fixed z-index handling for nested overlays such as `DropdownMenu`, `Select`, `Combobox`, and `ColorPicker` inside other overlays.
|
|
24
|
+
* Improved overlay behavior across deeply nested portal structures.
|
|
25
|
+
* Added regression coverage for nested and sibling overlay scenarios.
|
|
47
26
|
|
|
48
27
|
## [0.1.3]
|
|
49
28
|
|
|
50
29
|
### Fixed
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- `gradient`'s `text`/`textMuted` were still `light` theme's values,
|
|
61
|
-
measured at 2.79:1 and a barely-there 1.32:1 against the theme's own
|
|
62
|
-
background gradient's darker stop — anything rendered directly on
|
|
63
|
-
the page background (as `Timeline`/`Pagination`/`Tabs` are, per this
|
|
64
|
-
library's own docs examples, with no wrapping surface assumed) was
|
|
65
|
-
close to unreadable. Darkened both — see the measured before/after
|
|
66
|
-
in the new `tests/theme-text-contrast.test.ts`. `textMuted` still
|
|
67
|
-
can't clear full AA (4.5:1) against the gradient's darkest point
|
|
68
|
-
with a single flat color; this is the best available compromise,
|
|
69
|
-
not a complete fix.
|
|
70
|
-
- `glass`'s `border` (`rgba(255,255,255,0.35)`) composited to literal
|
|
71
|
-
`#ffffff` against a plain white backdrop — a 1.0:1 ratio, i.e.
|
|
72
|
-
actually invisible (reported as `Progress`'s track outline
|
|
73
|
-
vanishing). Retinted to a neutral slate that stays visible against
|
|
74
|
-
both a plain white and a plain black fallback backdrop, since most
|
|
75
|
-
consumers won't add the "rich background" this theme's own
|
|
76
|
-
description says it needs.
|
|
77
|
-
- `Slider`'s value-label bubble (`showValueLabel`) had no space
|
|
78
|
-
reserved for it above the track and could overflow into the field's
|
|
79
|
-
own `label` text above it — most visible with a thumb near 0%.
|
|
80
|
-
`getRootClasses` (internal, not part of the public API surface) now
|
|
81
|
-
takes `showValueLabel` and adds a modifier class that reserves the
|
|
82
|
-
room the bubble actually needs.
|
|
83
|
-
- Nesting one dismissible overlay inside another (e.g. a `DropdownMenu`
|
|
84
|
-
inside a `Popover`) broke: every overlay portals its content to
|
|
85
|
-
`document.body` via `ThemedPortal`, as a DOM sibling of wherever it
|
|
86
|
-
was rendered rather than a descendant, so a click inside the nested
|
|
87
|
-
one registered as "outside" the outer one's own refs and closed it
|
|
88
|
-
before the click could register. `useClickOutside` now ignores
|
|
89
|
-
clicks inside any `[data-nuvox-portal]` node, fixing every
|
|
90
|
-
`Popover`/`DropdownMenu`/`Select`/`Combobox`/`ContextMenu`/
|
|
91
|
-
`CommandPalette` pairing at once instead of one at a time. See
|
|
92
|
-
`tests/nested-overlays.test.tsx`.
|
|
93
|
-
- `Carousel`'s `CarouselPrevious`/`CarouselNext` centered against the
|
|
94
|
-
whole `.nx-carousel` box (viewport + indicators + anything else
|
|
95
|
-
below it), not the viewport alone — correct only by coincidence when
|
|
96
|
-
the viewport was tall relative to everything else in the box.
|
|
97
|
-
`.nx-carousel` is now a CSS grid with the viewport pinned to its own
|
|
98
|
-
grid cell, which becomes the containing block for a same-cell
|
|
99
|
-
absolutely-positioned item (CSS Grid §10.1). This holds regardless
|
|
100
|
-
of `CarouselIndicators`' height or the viewport's own height, so an
|
|
101
|
-
explicit height is no longer required for correct centering (still
|
|
102
|
-
good practice for layout stability, just not load-bearing anymore).
|
|
103
|
-
Wrapping the buttons in your own `<div>` is still unsupported, for a
|
|
104
|
-
different reason than before: a plain wrapper isn't a positioning
|
|
105
|
-
context, so the buttons fall through to `.nx-carousel` regardless of
|
|
106
|
-
the grid fix.
|
|
107
|
-
- `docs-site`'s live "Controlled" `Carousel` demo and `carousel.mdx`'s
|
|
108
|
-
guidance both still reflected the pre-fix structure/requirements;
|
|
109
|
-
updated to match the fix above.
|
|
30
|
+
|
|
31
|
+
* Fixed multiple theme contrast and visibility issues across `neobrutalism`, `gradient`, and `glass` themes.
|
|
32
|
+
* Fixed `neobrutalism` warning colors and `Rating` star outlines.
|
|
33
|
+
* Improved text contrast in the `gradient` theme.
|
|
34
|
+
* Fixed `glass` theme borders becoming invisible on plain backgrounds.
|
|
35
|
+
* Fixed `Slider` value labels overlapping with field labels.
|
|
36
|
+
* Fixed nested dismissible overlays closing unexpectedly when interacting with their child overlays.
|
|
37
|
+
* Fixed `Carousel` navigation buttons being incorrectly centered relative to the full carousel container.
|
|
38
|
+
* Updated the carousel documentation and live examples to match the corrected behavior.
|
|
110
39
|
|
|
111
40
|
### Added
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
passes against the new one.
|
|
115
|
-
- `tests/theme-text-contrast.test.ts` — checks `text`/`textMuted`
|
|
116
|
-
against `background` for every theme, including gradient stops
|
|
117
|
-
extracted from non-solid backgrounds. `outline-text-contrast.test.ts`
|
|
118
|
-
only ever checked the outline-button `color-mix()` blend and
|
|
119
|
-
explicitly skipped non-solid backgrounds — a real coverage gap; this
|
|
120
|
-
is what would have caught the `gradient` regression above before it
|
|
121
|
-
shipped.
|
|
41
|
+
|
|
42
|
+
* Added regression tests for nested overlays and theme text contrast.
|
|
122
43
|
|
|
123
44
|
## [0.1.2]
|
|
124
45
|
|
|
125
46
|
### Fixed
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
number]` union in single-thumb mode. It's now generic, so a plain
|
|
131
|
-
`<Slider value={n} onChange={setN} />` infers `(value: number) =>
|
|
132
|
-
void` with no cast needed; range mode still infers the tuple.
|
|
133
|
-
- `nuvox/react` now re-exports ~20 prop-relevant types that previously
|
|
134
|
-
only lived in `"nuvox"` (`SliderValue`, `SelectOptionItem`,
|
|
135
|
-
`CommandItem`/`CommandGroup`, `TableCoreProps`, `DrawerSide`/
|
|
136
|
-
`DrawerSize`, `ModalSize`, `ProgressVariant`, and others) — a
|
|
137
|
-
consumer typing a handler no longer needs to import from both
|
|
138
|
-
entry points for one component.
|
|
47
|
+
|
|
48
|
+
* Added the missing `label` prop to `Select`.
|
|
49
|
+
* Improved `Slider` type inference for single-value and range modes.
|
|
50
|
+
* Re-exported commonly used component prop types from `nuvox/react`.
|
|
139
51
|
|
|
140
52
|
### Changed
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
the library on one convention (`onChange` was already the majority —
|
|
144
|
-
9 of 13 controlled components used it before this). No deprecated
|
|
145
|
-
alias was kept; see `CONTRACT.md` Rule 10 for why this was allowed
|
|
146
|
-
as a one-time pre-1.0 exception.
|
|
53
|
+
|
|
54
|
+
* **Breaking:** Renamed `onValueChange` to `onChange` for `Accordion`, `Combobox`, `Select`, and `Tabs` to provide a consistent controlled-component API.
|
|
147
55
|
|
|
148
56
|
### Added
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
- `tests/no-on-value-change.test.ts` — fails the build if
|
|
154
|
-
`onValueChange` is ever reintroduced as a real prop anywhere in
|
|
155
|
-
`src/react/`. Added after an external review caught the drift above;
|
|
156
|
-
this is the enforcement so it can't silently happen again.
|
|
157
|
-
- `BUILDING-COMPONENTS.md`'s Category E section now explicitly states
|
|
158
|
-
the `value`/`onChange` convention applies there too — it previously
|
|
159
|
-
had no documented prop-naming rule at all for Tabs/Accordion's
|
|
160
|
-
controlled state, which is how they drifted differently from
|
|
161
|
-
Select/Combobox (Category D, which *did* already have this rule and
|
|
162
|
-
violated it).
|
|
57
|
+
|
|
58
|
+
* Added dedicated documentation for theme CSS variables.
|
|
59
|
+
* Added tests to prevent `onValueChange` from being reintroduced.
|
|
60
|
+
* Updated component-building guidelines to document the `value` / `onChange` convention.
|
|
163
61
|
|
|
164
62
|
## [0.1.1]
|
|
165
63
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
* Fixed multiple CSS and theming issues across several components.
|
|
67
|
+
* Improved styling consistency and theme behavior throughout the component library.
|
|
68
|
+
* Fixed various component-specific layout, spacing, and visual issues.
|
|
169
69
|
|
|
170
70
|
## [0.1.0]
|
|
171
71
|
|
|
172
|
-
Initial public release.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
72
|
+
Initial public release.
|
|
73
|
+
|
|
74
|
+
* Consolidated the core and React bindings into a single `nuvox` package.
|
|
75
|
+
* Deprecated and unpublished the previous 7 scoped `@nuvox/*` packages.
|
|
76
|
+
* Introduced a framework-agnostic core with React bindings.
|
|
77
|
+
* Added 40+ components.
|
|
78
|
+
* Added 11 themes.
|
|
79
|
+
* Added 490+ icons.
|