@neuravision/construct 2.3.1 → 2.3.2

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
@@ -5,6 +5,30 @@ All notable changes to `@neuravision/construct` will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [2.3.2] - 2026-10-12
11
+
12
+ ### Fixed
13
+
14
+ - `ct-tabs` clamps its content track like every other grid content slot since 2.3.1. Its `auto`
15
+ column grew to the widest panel's max-content size, so a table or other wide content in a tab
16
+ panel stretched the whole tab set — list and panel — past the width it was given; on a phone the
17
+ surrounding card clipped it. Content now wraps or scrolls inside the panel. `ct-tabs--vertical`
18
+ clamps its panel column the same way. The Content Slot Containment story covers tabs: on the
19
+ previous CSS the panel track measured 426.4px inside a 320px slot.
20
+ - Table cell modifiers align their column again. `.ct-table th, .ct-table td` set
21
+ `text-align: start` with a higher specificity than `ct-table__cell--numeric`, `--actions` and
22
+ `--checkbox`, so numbers and row actions stayed left-aligned and checkboxes uncentred. The
23
+ modifiers are now scoped to `.ct-table`; the new Card & Table "Cell types" story checks the
24
+ computed alignment.
25
+ - `publish.sh` asks for a one-time password whenever npm demands one. It assumed that an
26
+ `NPM_TOKEN` in the environment made 2FA unnecessary, which only holds for automation tokens —
27
+ with any other credential the publish stopped at `EOTP` and the script had no way to recover,
28
+ because its OTP prompt sat in the branch without a token. The token now only authenticates,
29
+ the prompt is shared by both paths, and a failure that is not `EOTP` aborts instead of asking
30
+ for a code.
31
+
8
32
  ## [2.3.1] - 2026-09-17
9
33
 
10
34
  ### Fixed
@@ -215,7 +215,7 @@ Content card with header, body, and footer:
215
215
  ```
216
216
 
217
217
  `ct-card__body` clamps its content track, as every grid content slot does (`ct-modal__body`,
218
- `ct-drawer__body`, `ct-field`, `ct-alert`, `ct-confirmation`). Content wider than the card wraps,
218
+ `ct-drawer__body`, `ct-field`, `ct-alert`, `ct-confirmation`, `ct-tabs`). Content wider than the card wraps,
219
219
  truncates, or scrolls inside its own scroll container — `ct-table-wrap` for tables — instead of
220
220
  stretching the card past the width it was given.
221
221
 
@@ -115,17 +115,19 @@ th[aria-sort='descending'] .ct-table__sort-indicator::before {
115
115
  justify-content: flex-end;
116
116
  }
117
117
 
118
- .ct-table__cell--checkbox {
118
+ /* Cell modifiers are scoped to the table so they outrank the base
119
+ `.ct-table th/td` alignment; unscoped, `text-align: start` always won. */
120
+ .ct-table .ct-table__cell--checkbox {
119
121
  width: var(--space-8);
120
122
  text-align: center;
121
123
  }
122
124
 
123
- .ct-table__cell--numeric {
125
+ .ct-table .ct-table__cell--numeric {
124
126
  text-align: end;
125
127
  font-variant-numeric: tabular-nums;
126
128
  }
127
129
 
128
- .ct-table__cell--actions {
130
+ .ct-table .ct-table__cell--actions {
129
131
  text-align: end;
130
132
  white-space: nowrap;
131
133
  }
@@ -10,6 +10,9 @@
10
10
  --ct-tabs-indicator-color: var(--color-brand-accent);
11
11
 
12
12
  display: grid;
13
+ /* Clamped content track: a panel's projected content wraps or scrolls inside
14
+ the tabs instead of widening them. See `.ct-card__body`. */
15
+ grid-template-columns: minmax(0, 1fr);
13
16
  gap: var(--ct-tabs-gap);
14
17
  }
15
18
 
@@ -119,7 +122,8 @@ a.ct-tabs__trigger:active {
119
122
  /* Vertical orientation */
120
123
 
121
124
  .ct-tabs--vertical {
122
- grid-template-columns: auto 1fr;
125
+ /* The panel column is clamped so wide content stays inside the tabs. */
126
+ grid-template-columns: auto minmax(0, 1fr);
123
127
  }
124
128
 
125
129
  .ct-tabs--vertical .ct-tabs__list {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuravision/construct",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "Construct Design System - Accessible, token-based design system for modern web applications",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -116,10 +116,10 @@
116
116
  "@storybook/addon-themes": "^10.5.0",
117
117
  "@storybook/addon-vitest": "^10.5.0",
118
118
  "@storybook/html-vite": "^10.5.0",
119
- "@vitest/browser-playwright": "^4.1.10",
119
+ "@vitest/browser-playwright": "^4.1.11",
120
120
  "playwright": "^1.61.1",
121
121
  "remark-gfm": "^4.0.1",
122
122
  "storybook": "^10.5.0",
123
- "vitest": "^4.1.10"
123
+ "vitest": "^4.1.11"
124
124
  }
125
125
  }