basalt-ui 1.38.0 → 1.38.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 +7 -0
- package/MIGRATING.md +29 -12
- package/dist/shell/app-brand.module.css +14 -9
- package/dist/shell/app-header.module.css +4 -1
- package/dist/shell/app-main.module.css +13 -7
- package/dist/tokens/palette.d.ts +7 -7
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +7 -7
- package/dist/tokens.css +1 -1
- package/llms.txt +2 -2
- package/package.json +1 -1
- package/src/shell/app-brand.module.css +14 -9
- package/src/shell/app-header.module.css +4 -1
- package/src/shell/app-main.module.css +13 -7
- package/src/tokens/palette.ts +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.38.1](https://github.com/jkrumm/basalt-ui/compare/v1.38.0...v1.38.1) (2026-10-04)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* take the page content inset one step down, 20/12 to 16/8 from sm up ([cf61c05](https://github.com/jkrumm/basalt-ui/commit/cf61c05410df114d5c6182ed4a8c5ed38b308a56))
|
|
7
|
+
|
|
1
8
|
# [1.38.0](https://github.com/jkrumm/basalt-ui/compare/v1.37.1...v1.38.0) (2026-10-04)
|
|
2
9
|
|
|
3
10
|
|
package/MIGRATING.md
CHANGED
|
@@ -66,18 +66,18 @@ There is one row per SURFACE, not per export, and a surface earns a row once any
|
|
|
66
66
|
shipped lefthook preset both changed in 1.30.0 with no row that owned them — which is how a
|
|
67
67
|
consumer read this index, found nothing, and diffed a KPI row that had silently gone 4-up → 2-up.
|
|
68
68
|
|
|
69
|
-
| Surface | 1.27.0 | 1.28.0 | 1.29.0 | 1.30.0 | 1.30.1 | 1.30.2 | 1.31.0 | 1.32.0 | 1.32.1 | 1.33.0 | 1.34.0 | 1.34.1 | 1.35.0 | 1.36.0 | 1.36.1 | 1.37.0 | 1.37.1 | 1.38.0 |
|
|
70
|
-
| ----------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------- | ------ | ------ | ------ | ------ |
|
|
71
|
-
| **tokens** (`./tokens`) | — | `--vx-divider` → `rgba()` on both schemes (§ Shell) | `--vx-space-touch-target` added (§ Additions) | eight spacing numbers (§ Chrome) | — | — | `--vx-hit` replaces the touch vars; `SIZE_CLASSES` (§ 1.31.0) | — | `SIZE_CLASSES`/`CONTAINER_CLASSES` actually exported (§ Fixes) | `CONTAINER_GRID_BREAKPOINTS`; `raw-breakpoint` trusts it (§ 1.33.0) | `CONTAINER_KEYS` (§ 1.34.0) | — | — | — | — | — | — | — | —
|
|
72
|
-
| **charts** (`./charts`) | — | phone tier, `curve`, formatters, `state`, log axis (§ preamble) | `ChartState.empty: string`, `AxisBottomNumeric` (§ Additions) | responsive `height`, `legend.maxRows` (§ Charts) | `height` reaches the kinds; `maxRows` beats the `fill` fit (§ Charts) | — | container-class tier + `height` keys (§ 1.31.0) | — | `ResponsiveChartHeight` `sm` → key (§ Container recipes) | — | — | — | — | — | — | — | — | — | —
|
|
73
|
-
| **shell** (`.`) | — | scrollport, region seams, **the brand left the sidebar** (§§ scrollport, brand, Shell) | `PageTitle`, `BasaltDevDock`, `useBreakpoint` (§ Additions) | More popover, aside pill, the responsive gutter, `useBasaltSpacing` (§ Chrome) | — | — | `theme.breakpoints` derived, `useSizeClass`, `data-basalt-host`, `useBreakpoint` on notice (§ 1.31.0) | `useBreakpoint` removal → 1.33.0; `useSizeClass` is shell-only (§ 1.32.0) | shell-less `shell/` gutter, `AppShell` breakpoints, `useSizeClass` for overlays (§§ Shell-less, `useSizeClass`) | — | `useBreakpoint` removed (§ 1.34.0) | — | — | `useCoarsePointer()` (§ `useCoarsePointer()`) | — | — | — | — | —
|
|
74
|
-
| **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — | — | `FormSection`/`FormRow`/`FormGroup`/`FormActions` move here (§ The form layout moves) | — | — | — | — | —
|
|
75
|
-
| **forms** (`./forms`) | — | `field` → `inputProps`, **`inputProps` drops `key`**, the layout tier (§ `inputProps`) | `field` DELETED — and the `--fix` recipe no longer works (§ Consolidation) | — | — | — | — | — | `FormGroup` row no longer stretches (§ Fixes) | — | — | — | — | the layout + `useForm`/`schemaResolver` deprecated, removed 1.37.0 (§ The form layout moves) | — | — | — | — | —
|
|
76
|
-
| **data** (`./data/table`) | — | root is a `<div>`, row selection, `getItemKey` required (§ `basalt-ui/data`) | `./data` + `./query` + `./connectivity` dropped (§ Consolidation) | — | — | — | — | — | `renderCard` documented (§ `renderCard`) | — | — | — | — | — | — | — | — | — | —
|
|
77
|
-
| **dashboard** (`.`) | `StatCard`: `unit`, `breakdown`, delta format (§ `StatCard`) | `StatGroup`, `WidgetGrid`, query-aware `StatCard` — additive | — | **the column law keys on the CONTAINER; `cols={4}` is 2-up at `sm`** (§ Dashboard) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | —
|
|
78
|
-
| **toolchain** (`./configs/*`) | — | — | the shipped lefthook preset's `check-theme` BROKE — the CLI resolver stopped ascending (§ CLI) | the preset's default bin, and the `root:` recipe (§ Toolchain) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | —
|
|
79
|
-
| **CLI** (`basalt-ui`) | — | — | **resolver stops relocating; `doctor` loses 6 of 10 checks** (§ CLI) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | —
|
|
80
|
-
| **guards** | five rules → `error` (§ Guards) | six new ids at `warn` (§ preamble) | `query-dual-import` retired in 1.29.1 (§ Guards) | four rules → `error` (§ Guards) | — | — | — | `raw-breakpoint`: the container-grid answer, `error` at 1.33.0 (§ 1.32.0) | `FormRow`/`FormGroup` homes in both lanes; `basalt-main` dropped (§ Fixes) | C1 + breakpoint pairs → `error`; `unknown-vx-token` `warn` (§ Guards) | — | — | — | `unknown-vx-token` → `error`; the token factories throw (§ Guards) | — | — | — | — | —
|
|
69
|
+
| Surface | 1.27.0 | 1.28.0 | 1.29.0 | 1.30.0 | 1.30.1 | 1.30.2 | 1.31.0 | 1.32.0 | 1.32.1 | 1.33.0 | 1.34.0 | 1.34.1 | 1.35.0 | 1.36.0 | 1.36.1 | 1.37.0 | 1.37.1 | 1.38.0 | 1.38.1 | Unreleased |
|
|
70
|
+
| ----------------------------- | ------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ---------------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------- | ------ | ------ | ------ | ------ | ------ | ----------------------------------------------- | --- |
|
|
71
|
+
| **tokens** (`./tokens`) | — | `--vx-divider` → `rgba()` on both schemes (§ Shell) | `--vx-space-touch-target` added (§ Additions) | eight spacing numbers (§ Chrome) | — | — | `--vx-hit` replaces the touch vars; `SIZE_CLASSES` (§ 1.31.0) | — | `SIZE_CLASSES`/`CONTAINER_CLASSES` actually exported (§ Fixes) | `CONTAINER_GRID_BREAKPOINTS`; `raw-breakpoint` trusts it (§ 1.33.0) | `CONTAINER_KEYS` (§ 1.34.0) | — | — | — | — | — | — | — | | `appShellInset` 20 → 16 (§ 1.38.1) | — |
|
|
72
|
+
| **charts** (`./charts`) | — | phone tier, `curve`, formatters, `state`, log axis (§ preamble) | `ChartState.empty: string`, `AxisBottomNumeric` (§ Additions) | responsive `height`, `legend.maxRows` (§ Charts) | `height` reaches the kinds; `maxRows` beats the `fill` fit (§ Charts) | — | container-class tier + `height` keys (§ 1.31.0) | — | `ResponsiveChartHeight` `sm` → key (§ Container recipes) | — | — | — | — | — | — | — | — | — | — | — |
|
|
73
|
+
| **shell** (`.`) | — | scrollport, region seams, **the brand left the sidebar** (§§ scrollport, brand, Shell) | `PageTitle`, `BasaltDevDock`, `useBreakpoint` (§ Additions) | More popover, aside pill, the responsive gutter, `useBasaltSpacing` (§ Chrome) | — | — | `theme.breakpoints` derived, `useSizeClass`, `data-basalt-host`, `useBreakpoint` on notice (§ 1.31.0) | `useBreakpoint` removal → 1.33.0; `useSizeClass` is shell-only (§ 1.32.0) | shell-less `shell/` gutter, `AppShell` breakpoints, `useSizeClass` for overlays (§§ Shell-less, `useSizeClass`) | — | `useBreakpoint` removed (§ 1.34.0) | — | — | `useCoarsePointer()` (§ `useCoarsePointer()`) | — | — | — | — | | content gutter 16, block 8 from `sm` (§ 1.38.1) | — |
|
|
74
|
+
| **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — | — | `FormSection`/`FormRow`/`FormGroup`/`FormActions` move here (§ The form layout moves) | — | — | — | — | — | — |
|
|
75
|
+
| **forms** (`./forms`) | — | `field` → `inputProps`, **`inputProps` drops `key`**, the layout tier (§ `inputProps`) | `field` DELETED — and the `--fix` recipe no longer works (§ Consolidation) | — | — | — | — | — | `FormGroup` row no longer stretches (§ Fixes) | — | — | — | — | the layout + `useForm`/`schemaResolver` deprecated, removed 1.37.0 (§ The form layout moves) | — | — | — | — | — | — |
|
|
76
|
+
| **data** (`./data/table`) | — | root is a `<div>`, row selection, `getItemKey` required (§ `basalt-ui/data`) | `./data` + `./query` + `./connectivity` dropped (§ Consolidation) | — | — | — | — | — | `renderCard` documented (§ `renderCard`) | — | — | — | — | — | — | — | — | — | — | — |
|
|
77
|
+
| **dashboard** (`.`) | `StatCard`: `unit`, `breakdown`, delta format (§ `StatCard`) | `StatGroup`, `WidgetGrid`, query-aware `StatCard` — additive | — | **the column law keys on the CONTAINER; `cols={4}` is 2-up at `sm`** (§ Dashboard) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
|
|
78
|
+
| **toolchain** (`./configs/*`) | — | — | the shipped lefthook preset's `check-theme` BROKE — the CLI resolver stopped ascending (§ CLI) | the preset's default bin, and the `root:` recipe (§ Toolchain) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
|
|
79
|
+
| **CLI** (`basalt-ui`) | — | — | **resolver stops relocating; `doctor` loses 6 of 10 checks** (§ CLI) | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
|
|
80
|
+
| **guards** | five rules → `error` (§ Guards) | six new ids at `warn` (§ preamble) | `query-dual-import` retired in 1.29.1 (§ Guards) | four rules → `error` (§ Guards) | — | — | — | `raw-breakpoint`: the container-grid answer, `error` at 1.33.0 (§ 1.32.0) | `FormRow`/`FormGroup` homes in both lanes; `basalt-main` dropped (§ Fixes) | C1 + breakpoint pairs → `error`; `unknown-vx-token` `warn` (§ Guards) | — | — | — | `unknown-vx-token` → `error`; the token factories throw (§ Guards) | — | — | — | — | — | — |
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
@@ -86,6 +86,23 @@ consumer read this index, found nothing, and diffed a KPI row that had silently
|
|
|
86
86
|
_Nothing yet. Author the next section under this heading as `## Unreleased — <title>`; the
|
|
87
87
|
release renames it and opens a new one here._
|
|
88
88
|
|
|
89
|
+
## 1.38.1 — the content inset
|
|
90
|
+
|
|
91
|
+
No export changed. Two default numbers moved, both from `sm` up (the phone gutter is untouched):
|
|
92
|
+
|
|
93
|
+
| Measured, 1440px desktop | Before | After |
|
|
94
|
+
| --------------------------------------------------------- | -------- | -------- |
|
|
95
|
+
| Main's inner box, from the sidebar seam (`appShellInset`) | 20px | 16px |
|
|
96
|
+
| Main's inner box, under the header / page-bar band | 12px | 8px |
|
|
97
|
+
| Header breadcrumb x, expanded / rail | 269 / 61 | 272 / 64 |
|
|
98
|
+
| Brand mark x (the sidebar's nav-icon column) | 20px | 20px |
|
|
99
|
+
|
|
100
|
+
The block inset is `stack-sm` from `sm` up and stays `stack-md` (12) on a phone. The breadcrumb
|
|
101
|
+
now sits exactly on Main's content edge (it was 7px short of it); the brand mark no longer borrows
|
|
102
|
+
the page gutter for its x — it is the nav-icon column (`row-inset-x` twice) on its own, so it stays
|
|
103
|
+
at 20 while the gutter is 16. A consumer that wants the old numbers has no knob for them: the gutter
|
|
104
|
+
is a `SPACE_STEP` entry, so retune it through the density level or accept the new default.
|
|
105
|
+
|
|
89
106
|
## 1.38.0
|
|
90
107
|
|
|
91
108
|
_Nothing to migrate in this release._
|
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
*
|
|
9
9
|
* The zone's WIDTH is `--app-shell-navbar-offset`, so it tracks the rail collapse with no React
|
|
10
10
|
* state and lands its trailing edge exactly on the sidebar|main seam. The negative
|
|
11
|
-
* `margin-inline-start` cancels `AppShell.Header`'s own `px` inset
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* `margin-inline-start` cancels `AppShell.Header`'s own `px` inset (the page gutter,
|
|
12
|
+
* `--app-shell-padding`) so the zone starts at the viewport edge, and the zone's OWN inline padding
|
|
13
|
+
* is the sidebar's nav-icon column — 10px of `.root` frame inset plus 10px of NavLink inset, i.e.
|
|
14
|
+
* `row-inset-x` twice — which is what puts the brand lead on the same x as the nav ICON column below
|
|
15
|
+
* it. That padding used to BE the page gutter (`--app-shell-padding`, 20, the same number by
|
|
16
|
+
* coincidence); the gutter is 16 now, and the two are different claims, so each is stated on its
|
|
17
|
+
* own. The breadcrumb lands on Main's content edge: the zone's trailing margin is the gutter minus
|
|
18
|
+
* the header row's flex gap (`app-header.module.css`'s `--basalt-header-gap`), so zone end + margin
|
|
19
|
+
* + gap = seam + gutter.
|
|
18
20
|
*
|
|
19
21
|
* `--basalt-shell-lead-inset` (default 0px, set by the consumer on `:root`) is the opt-in native
|
|
20
22
|
* title-bar contract: a macOS overlay title bar paints its traffic lights ON TOP of this zone, so a
|
|
@@ -30,6 +32,8 @@
|
|
|
30
32
|
* `--ai-size-md` (1.75rem). Mantine defines that var on the ActionIcon, not on `:root`, so the
|
|
31
33
|
* zone restates the same arithmetic; `app-brand.module.css.test.ts` pins the two together. */
|
|
32
34
|
--basalt-shell-toggle-size: calc(1.75rem * var(--mantine-scale, 1));
|
|
35
|
+
/* The sidebar's nav-icon column: `.root` inset + NavLink inset, both `row-inset-x`. */
|
|
36
|
+
--basalt-nav-icon-x: calc(2 * var(--vx-space-row-inset-x));
|
|
33
37
|
--basalt-shell-zone-width: max(
|
|
34
38
|
var(--app-shell-navbar-offset, 0rem),
|
|
35
39
|
calc(var(--basalt-shell-lead-inset, 0px) + var(--basalt-shell-toggle-size))
|
|
@@ -43,8 +47,9 @@
|
|
|
43
47
|
* like, and the rail's centred toggle centres against the whole row. */
|
|
44
48
|
align-self: stretch;
|
|
45
49
|
margin-inline-start: calc(-1 * var(--app-shell-padding, 0px));
|
|
46
|
-
|
|
47
|
-
padding-inline
|
|
50
|
+
margin-inline-end: calc(var(--app-shell-padding, 0px) - var(--basalt-header-gap, 0px));
|
|
51
|
+
padding-inline: var(--basalt-nav-icon-x);
|
|
52
|
+
padding-inline-start: calc(var(--basalt-nav-icon-x) + var(--basalt-shell-lead-inset, 0px));
|
|
48
53
|
overflow: hidden;
|
|
49
54
|
/* Mantine's own AppShell timing, so the zone and the navbar under it move as one box. */
|
|
50
55
|
transition-property: flex-basis, width;
|
|
@@ -17,9 +17,12 @@
|
|
|
17
17
|
* `alt` — never a border in this module.
|
|
18
18
|
*/
|
|
19
19
|
.bar {
|
|
20
|
+
/* Named so the leading zone (`app-brand.module.css`) can offset its trailing margin by exactly
|
|
21
|
+
* this gap and land the breadcrumb on Main's content edge. */
|
|
22
|
+
--basalt-header-gap: var(--mantine-spacing-sm);
|
|
20
23
|
display: flex;
|
|
21
24
|
align-items: center;
|
|
22
|
-
gap: var(--
|
|
25
|
+
gap: var(--basalt-header-gap);
|
|
23
26
|
width: 100%;
|
|
24
27
|
height: 100%;
|
|
25
28
|
}
|
|
@@ -97,13 +97,13 @@
|
|
|
97
97
|
* value rather than an offset, because Mantine owns the responsive switch (`shell/index.tsx`
|
|
98
98
|
* hands `AppShell` the `appShellInset`/`appShellInsetMobile` pair) and the header, the band and
|
|
99
99
|
* Main all have to land on the SAME number — re-deriving it here would fork it. It is an
|
|
100
|
-
* ALIGNMENT constraint:
|
|
101
|
-
*
|
|
100
|
+
* ALIGNMENT constraint: the header's breadcrumb and globals land on the same edges as the
|
|
101
|
+
* content (`app-brand.module.css` states the arithmetic).
|
|
102
102
|
*
|
|
103
|
-
* Block is
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
103
|
+
* Block is breathing room under the band's single `--vx-divider` line — nothing aligns to it.
|
|
104
|
+
* `stack-md` (12) on a phone, one rung down (`stack-sm`, 8) from `sm` up where the inline gutter
|
|
105
|
+
* is 16: the page then sits 16 from the seam and 8 under the header, rather than the 20/12 it
|
|
106
|
+
* used to.
|
|
107
107
|
*/
|
|
108
108
|
padding: var(--vx-space-stack-md) var(--app-shell-padding);
|
|
109
109
|
/* Without this a wide flex/grid child (a bare table, a nowrap control row) sizes Main to ITSELF. */
|
|
@@ -122,11 +122,17 @@
|
|
|
122
122
|
transition-property: margin;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
@media (min-width: 52.5em) {
|
|
126
|
+
.main {
|
|
127
|
+
padding-block: var(--vx-space-stack-sm);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
125
131
|
/* Installed PWA (C5 consolidation, seeded from argo's `styles/native.css`): clear the landscape
|
|
126
132
|
* notch on the side Main touches. `max()` is a FLOOR over the INLINE value of `.main`'s `padding`
|
|
127
133
|
* shorthand above — same mechanism as `app-sidebar.module.css`'s left counterpart, and it still
|
|
128
134
|
* floors correctly now that the shorthand is two axes and the inline one is responsive: this rule
|
|
129
|
-
* reads the same `--app-shell-padding`, so the floor is against whichever of
|
|
135
|
+
* reads the same `--app-shell-padding`, so the floor is against whichever of 16/8 is live, and on
|
|
130
136
|
* the phone half (8) it is doing MORE work than before, not less. It overrides only
|
|
131
137
|
* `padding-right`; the block padding keeps coming from the shorthand. The bottom inset already
|
|
132
138
|
* rides `margin-bottom` above (`env(safe-area-inset-bottom)`); the PWA's top inset needs no rule here
|
package/dist/tokens/palette.d.ts
CHANGED
|
@@ -541,13 +541,13 @@ declare const SPACE_STEP_BASE: {
|
|
|
541
541
|
* `tokens/index.ts` for why), because it is the single most visible spacing number the framework
|
|
542
542
|
* ships and a consumer retuning its identity has to be able to reach it.
|
|
543
543
|
*
|
|
544
|
-
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
548
|
-
*
|
|
549
|
-
*
|
|
550
|
-
readonly appShellInset:
|
|
544
|
+
* 16, down from 20 (and from the 13 `SPACE_SCALE.sm` the main column borrowed before that): at 20
|
|
545
|
+
* the content read as pushed away from the seam. 16 sits on the 4px grid. It is NOT the sidebar's
|
|
546
|
+
* nav-icon column any more (x=20: 10px of `.root` frame inset plus 10px of NavLink inset,
|
|
547
|
+
* `rowInsetX` twice) — the header's brand zone aligns to that column on its own
|
|
548
|
+
* (`shell/app-brand.module.css`), so the page gutter is free to be a gutter. The header's
|
|
549
|
+
* breadcrumb, the page-bar band and Main all land on this one number. */
|
|
550
|
+
readonly appShellInset: 16;
|
|
551
551
|
/** The page gutter BELOW `sm` — the phone half of `appShellInset` above. A separate entry rather
|
|
552
552
|
* than one responsive value for the same reason `appShellNavbarWidth` is one: there is no sidebar
|
|
553
553
|
* seam to align to on a phone, so the number is answering a different question (how much of a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/tokens/palette.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/tokens/palette.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens/palette.js
CHANGED
|
@@ -453,13 +453,13 @@ const SPACE_STEP_BASE = {
|
|
|
453
453
|
* `tokens/index.ts` for why), because it is the single most visible spacing number the framework
|
|
454
454
|
* ships and a consumer retuning its identity has to be able to reach it.
|
|
455
455
|
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
458
|
-
*
|
|
459
|
-
*
|
|
460
|
-
*
|
|
461
|
-
*
|
|
462
|
-
appShellInset:
|
|
456
|
+
* 16, down from 20 (and from the 13 `SPACE_SCALE.sm` the main column borrowed before that): at 20
|
|
457
|
+
* the content read as pushed away from the seam. 16 sits on the 4px grid. It is NOT the sidebar's
|
|
458
|
+
* nav-icon column any more (x=20: 10px of `.root` frame inset plus 10px of NavLink inset,
|
|
459
|
+
* `rowInsetX` twice) — the header's brand zone aligns to that column on its own
|
|
460
|
+
* (`shell/app-brand.module.css`), so the page gutter is free to be a gutter. The header's
|
|
461
|
+
* breadcrumb, the page-bar band and Main all land on this one number. */
|
|
462
|
+
appShellInset: 16,
|
|
463
463
|
/** The page gutter BELOW `sm` — the phone half of `appShellInset` above. A separate entry rather
|
|
464
464
|
* than one responsive value for the same reason `appShellNavbarWidth` is one: there is no sidebar
|
|
465
465
|
* seam to align to on a phone, so the number is answering a different question (how much of a
|
package/dist/tokens.css
CHANGED
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
--vx-space-sidebar-child-list-indent: 15px;
|
|
96
96
|
--vx-space-sidebar-child-row-inset-y: 4px;
|
|
97
97
|
--vx-space-sidebar-child-row-indent: 12px;
|
|
98
|
-
--vx-space-app-shell-inset:
|
|
98
|
+
--vx-space-app-shell-inset: 16px;
|
|
99
99
|
--vx-space-app-shell-inset-mobile: 8px;
|
|
100
100
|
--vx-space-app-shell-header-lead-min: 96px;
|
|
101
101
|
--vx-space-mobile-nav-tab-gap: 3px;
|
package/llms.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# basalt-ui v1.38.
|
|
1
|
+
# basalt-ui v1.38.1
|
|
2
2
|
# Opinionated framework for Mantine-based React apps — theme, app shell, visx charts, toolchain presets
|
|
3
3
|
#
|
|
4
4
|
# basalt-ui is an opinionated framework for Mantine-based React apps.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
# ./tokens.css subpath. Guide: docs/FRAMEWORK-FREE.md in the repo.
|
|
20
20
|
|
|
21
21
|
Package: basalt-ui
|
|
22
|
-
Version: 1.38.
|
|
22
|
+
Version: 1.38.1
|
|
23
23
|
|
|
24
24
|
## basalt-ui
|
|
25
25
|
Import: import { ... } from 'basalt-ui'
|
package/package.json
CHANGED
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
*
|
|
9
9
|
* The zone's WIDTH is `--app-shell-navbar-offset`, so it tracks the rail collapse with no React
|
|
10
10
|
* state and lands its trailing edge exactly on the sidebar|main seam. The negative
|
|
11
|
-
* `margin-inline-start` cancels `AppShell.Header`'s own `px` inset
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* `margin-inline-start` cancels `AppShell.Header`'s own `px` inset (the page gutter,
|
|
12
|
+
* `--app-shell-padding`) so the zone starts at the viewport edge, and the zone's OWN inline padding
|
|
13
|
+
* is the sidebar's nav-icon column — 10px of `.root` frame inset plus 10px of NavLink inset, i.e.
|
|
14
|
+
* `row-inset-x` twice — which is what puts the brand lead on the same x as the nav ICON column below
|
|
15
|
+
* it. That padding used to BE the page gutter (`--app-shell-padding`, 20, the same number by
|
|
16
|
+
* coincidence); the gutter is 16 now, and the two are different claims, so each is stated on its
|
|
17
|
+
* own. The breadcrumb lands on Main's content edge: the zone's trailing margin is the gutter minus
|
|
18
|
+
* the header row's flex gap (`app-header.module.css`'s `--basalt-header-gap`), so zone end + margin
|
|
19
|
+
* + gap = seam + gutter.
|
|
18
20
|
*
|
|
19
21
|
* `--basalt-shell-lead-inset` (default 0px, set by the consumer on `:root`) is the opt-in native
|
|
20
22
|
* title-bar contract: a macOS overlay title bar paints its traffic lights ON TOP of this zone, so a
|
|
@@ -30,6 +32,8 @@
|
|
|
30
32
|
* `--ai-size-md` (1.75rem). Mantine defines that var on the ActionIcon, not on `:root`, so the
|
|
31
33
|
* zone restates the same arithmetic; `app-brand.module.css.test.ts` pins the two together. */
|
|
32
34
|
--basalt-shell-toggle-size: calc(1.75rem * var(--mantine-scale, 1));
|
|
35
|
+
/* The sidebar's nav-icon column: `.root` inset + NavLink inset, both `row-inset-x`. */
|
|
36
|
+
--basalt-nav-icon-x: calc(2 * var(--vx-space-row-inset-x));
|
|
33
37
|
--basalt-shell-zone-width: max(
|
|
34
38
|
var(--app-shell-navbar-offset, 0rem),
|
|
35
39
|
calc(var(--basalt-shell-lead-inset, 0px) + var(--basalt-shell-toggle-size))
|
|
@@ -43,8 +47,9 @@
|
|
|
43
47
|
* like, and the rail's centred toggle centres against the whole row. */
|
|
44
48
|
align-self: stretch;
|
|
45
49
|
margin-inline-start: calc(-1 * var(--app-shell-padding, 0px));
|
|
46
|
-
|
|
47
|
-
padding-inline
|
|
50
|
+
margin-inline-end: calc(var(--app-shell-padding, 0px) - var(--basalt-header-gap, 0px));
|
|
51
|
+
padding-inline: var(--basalt-nav-icon-x);
|
|
52
|
+
padding-inline-start: calc(var(--basalt-nav-icon-x) + var(--basalt-shell-lead-inset, 0px));
|
|
48
53
|
overflow: hidden;
|
|
49
54
|
/* Mantine's own AppShell timing, so the zone and the navbar under it move as one box. */
|
|
50
55
|
transition-property: flex-basis, width;
|
|
@@ -17,9 +17,12 @@
|
|
|
17
17
|
* `alt` — never a border in this module.
|
|
18
18
|
*/
|
|
19
19
|
.bar {
|
|
20
|
+
/* Named so the leading zone (`app-brand.module.css`) can offset its trailing margin by exactly
|
|
21
|
+
* this gap and land the breadcrumb on Main's content edge. */
|
|
22
|
+
--basalt-header-gap: var(--mantine-spacing-sm);
|
|
20
23
|
display: flex;
|
|
21
24
|
align-items: center;
|
|
22
|
-
gap: var(--
|
|
25
|
+
gap: var(--basalt-header-gap);
|
|
23
26
|
width: 100%;
|
|
24
27
|
height: 100%;
|
|
25
28
|
}
|
|
@@ -97,13 +97,13 @@
|
|
|
97
97
|
* value rather than an offset, because Mantine owns the responsive switch (`shell/index.tsx`
|
|
98
98
|
* hands `AppShell` the `appShellInset`/`appShellInsetMobile` pair) and the header, the band and
|
|
99
99
|
* Main all have to land on the SAME number — re-deriving it here would fork it. It is an
|
|
100
|
-
* ALIGNMENT constraint:
|
|
101
|
-
*
|
|
100
|
+
* ALIGNMENT constraint: the header's breadcrumb and globals land on the same edges as the
|
|
101
|
+
* content (`app-brand.module.css` states the arithmetic).
|
|
102
102
|
*
|
|
103
|
-
* Block is
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
103
|
+
* Block is breathing room under the band's single `--vx-divider` line — nothing aligns to it.
|
|
104
|
+
* `stack-md` (12) on a phone, one rung down (`stack-sm`, 8) from `sm` up where the inline gutter
|
|
105
|
+
* is 16: the page then sits 16 from the seam and 8 under the header, rather than the 20/12 it
|
|
106
|
+
* used to.
|
|
107
107
|
*/
|
|
108
108
|
padding: var(--vx-space-stack-md) var(--app-shell-padding);
|
|
109
109
|
/* Without this a wide flex/grid child (a bare table, a nowrap control row) sizes Main to ITSELF. */
|
|
@@ -122,11 +122,17 @@
|
|
|
122
122
|
transition-property: margin;
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
@media (min-width: 52.5em) {
|
|
126
|
+
.main {
|
|
127
|
+
padding-block: var(--vx-space-stack-sm);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
125
131
|
/* Installed PWA (C5 consolidation, seeded from argo's `styles/native.css`): clear the landscape
|
|
126
132
|
* notch on the side Main touches. `max()` is a FLOOR over the INLINE value of `.main`'s `padding`
|
|
127
133
|
* shorthand above — same mechanism as `app-sidebar.module.css`'s left counterpart, and it still
|
|
128
134
|
* floors correctly now that the shorthand is two axes and the inline one is responsive: this rule
|
|
129
|
-
* reads the same `--app-shell-padding`, so the floor is against whichever of
|
|
135
|
+
* reads the same `--app-shell-padding`, so the floor is against whichever of 16/8 is live, and on
|
|
130
136
|
* the phone half (8) it is doing MORE work than before, not less. It overrides only
|
|
131
137
|
* `padding-right`; the block padding keeps coming from the shorthand. The bottom inset already
|
|
132
138
|
* rides `margin-bottom` above (`env(safe-area-inset-bottom)`); the PWA's top inset needs no rule here
|
package/src/tokens/palette.ts
CHANGED
|
@@ -650,13 +650,13 @@ const SPACE_STEP_BASE = {
|
|
|
650
650
|
* `tokens/index.ts` for why), because it is the single most visible spacing number the framework
|
|
651
651
|
* ships and a consumer retuning its identity has to be able to reach it.
|
|
652
652
|
*
|
|
653
|
-
*
|
|
654
|
-
*
|
|
655
|
-
*
|
|
656
|
-
*
|
|
657
|
-
*
|
|
658
|
-
*
|
|
659
|
-
appShellInset:
|
|
653
|
+
* 16, down from 20 (and from the 13 `SPACE_SCALE.sm` the main column borrowed before that): at 20
|
|
654
|
+
* the content read as pushed away from the seam. 16 sits on the 4px grid. It is NOT the sidebar's
|
|
655
|
+
* nav-icon column any more (x=20: 10px of `.root` frame inset plus 10px of NavLink inset,
|
|
656
|
+
* `rowInsetX` twice) — the header's brand zone aligns to that column on its own
|
|
657
|
+
* (`shell/app-brand.module.css`), so the page gutter is free to be a gutter. The header's
|
|
658
|
+
* breadcrumb, the page-bar band and Main all land on this one number. */
|
|
659
|
+
appShellInset: 16,
|
|
660
660
|
/** The page gutter BELOW `sm` — the phone half of `appShellInset` above. A separate entry rather
|
|
661
661
|
* than one responsive value for the same reason `appShellNavbarWidth` is one: there is no sidebar
|
|
662
662
|
* seam to align to on a phone, so the number is answering a different question (how much of a
|