basalt-ui 1.34.0 → 1.35.0
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 +22 -0
- package/MIGRATING.md +24 -12
- package/dist/cli/check-theme.d.ts.map +1 -1
- package/dist/cli/check-theme.js +4 -1
- package/dist/cli/doctor.d.ts +5 -10
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +4 -0
- package/dist/cli/index.d.ts +18 -24
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +10 -0
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +16 -6
- package/dist/shell/app-mobile-nav.d.ts.map +1 -1
- package/dist/shell/app-mobile-nav.js +19 -10
- package/dist/shell/app-sidebar-account.d.ts.map +1 -1
- package/dist/shell/app-sidebar-account.js +1 -0
- package/dist/shell/app-sidebar.d.ts.map +1 -1
- package/dist/shell/app-sidebar.js +11 -6
- package/dist/shell/app-sidebar.module.css +39 -0
- package/dist/shell/app-sidebar.module.css.d.ts +3 -0
- package/dist/shell/index.d.ts +12 -5
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/nav-types.d.ts +19 -3
- package/dist/shell/nav-types.d.ts.map +1 -1
- package/dist/shell/sidebar-block-model.d.ts +3 -3
- package/dist/shell/sidebar-block-model.d.ts.map +1 -1
- package/dist/shell/sidebar-block-model.js +6 -2
- package/dist/shell/sidebar-blocks.d.ts +2 -1
- package/dist/shell/sidebar-blocks.d.ts.map +1 -1
- package/dist/shell/sidebar-blocks.js +13 -5
- package/dist/surfaces.js +2 -2
- package/dist/tokens/index.js +1 -1
- package/llms.txt +2 -2
- package/package.json +1 -1
- package/src/cli/check-theme.ts +4 -1
- package/src/cli/doctor.ts +9 -10
- package/src/cli/index.ts +26 -24
- package/src/guard/index.ts +34 -18
- package/src/shell/app-mobile-nav.tsx +34 -15
- package/src/shell/app-sidebar-account.tsx +3 -0
- package/src/shell/app-sidebar.module.css +39 -0
- package/src/shell/app-sidebar.module.css.d.ts +3 -0
- package/src/shell/app-sidebar.tsx +13 -6
- package/src/shell/index.tsx +12 -5
- package/src/shell/nav-types.ts +19 -3
- package/src/shell/sidebar-block-model.ts +13 -5
- package/src/shell/sidebar-blocks.tsx +30 -5
- package/src/surfaces.ts +2 -2
- package/src/tokens/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
# [1.35.0](https://github.com/jkrumm/basalt-ui/compare/v1.34.1...v1.35.0) (2026-10-01)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* extend the unknown-vx-token grace one minor to 1.36.0 ([a618388](https://github.com/jkrumm/basalt-ui/commit/a618388e27ea1fc650b592f75f70a753946b55a7))
|
|
7
|
+
* judge raw-selection-control by host-tag nesting, not a 12-line window ([98724ad](https://github.com/jkrumm/basalt-ui/commit/98724ad2d1c46cbced5aef8d834f9f6c26cf81c4))
|
|
8
|
+
* name the signed-out sidebar account row in the collapsed rail ([9e4ccad](https://github.com/jkrumm/basalt-ui/commit/9e4ccadf04b759ce58501cc146ee808f4c0bb449))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* keep a custom sidebar block in the collapsed rail and the mobile drawer ([136481c](https://github.com/jkrumm/basalt-ui/commit/136481cb6485543c9bdd4b386590c5080ed14c3c))
|
|
14
|
+
* let a settings entry be the current page, not only a checked selection ([1da042c](https://github.com/jkrumm/basalt-ui/commit/1da042ce10855e6d6cc364b94358220be2064c4d))
|
|
15
|
+
|
|
16
|
+
## [1.34.1](https://github.com/jkrumm/basalt-ui/compare/v1.34.0...v1.34.1) (2026-10-01)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* count the oxlint lane as wired only when an oxlint binary resolves ([013c496](https://github.com/jkrumm/basalt-ui/commit/013c496d84b17d9f2715e94e49e4c7d2de50d8fc))
|
|
22
|
+
|
|
1
23
|
# [1.34.0](https://github.com/jkrumm/basalt-ui/compare/v1.33.0...v1.34.0) (2026-10-01)
|
|
2
24
|
|
|
3
25
|
|
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 | 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) | — |
|
|
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) | — |
|
|
74
|
-
| **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — |
|
|
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) | — | — | — |
|
|
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) | — | — |
|
|
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 | 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) | — | — | — |
|
|
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) | — | — | — |
|
|
74
|
+
| **controls** (`./controls`) | `NumberFilter`, `field.number` (§ Controls) | sheet renders panel rows; `PanelRow`, `SliderControl` (§ `basalt-ui/controls`) | — | — | — | — | — | — | — | `NumberFilter clearable`; `createSearchStore` `resets` (§ State and controls) | — | — | — | — |
|
|
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) | — | — | — | — | — |
|
|
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) | — | — | — | — |
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
@@ -86,6 +86,18 @@ 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.35.0
|
|
90
|
+
|
|
91
|
+
_Nothing yet. Author the next section under this heading as `## Unreleased — <title>`; the
|
|
92
|
+
release renames it and opens a new one here._
|
|
93
|
+
|
|
94
|
+
## 1.34.1 — the AST lane needs a binary
|
|
95
|
+
|
|
96
|
+
`check-theme`'s "AST lane not enforced" notice and `doctor`'s `oxlint-preset` check now count the
|
|
97
|
+
lane as wired only when `.oxlintrc.json` extends the shipped preset AND an `oxlint` bin resolves
|
|
98
|
+
(`node_modules/.bin/oxlint`, from the project up to the repo root) — a config with no binary lints
|
|
99
|
+
nothing; add `oxlint` as a devDependency (no API change).
|
|
100
|
+
|
|
89
101
|
## 1.34.0 — the 1.34.0 minor
|
|
90
102
|
|
|
91
103
|
### `CONTAINER_KEYS` — the `SimpleGrid type="container"` keys ship
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-theme.d.ts","sourceRoot":"","sources":["../../src/cli/check-theme.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check-theme.d.ts","sourceRoot":"","sources":["../../src/cli/check-theme.ts"],"names":[],"mappings":"AAkFA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,aAAa,GAAE,MAAsB,EACrC,KAAK,GAAE,SAAS,MAAM,EAAO,GAC5B,MAAM,CA6IR"}
|
package/dist/cli/check-theme.js
CHANGED
|
@@ -17,6 +17,8 @@ import {
|
|
|
17
17
|
namesShipped,
|
|
18
18
|
noteRelocation,
|
|
19
19
|
OXLINT_FILES,
|
|
20
|
+
OXLINT_NO_BIN,
|
|
21
|
+
oxlintBinResolves,
|
|
20
22
|
packageRoot,
|
|
21
23
|
parseJsonc,
|
|
22
24
|
readBasaltConfig,
|
|
@@ -41,7 +43,8 @@ function astLaneNotice(cwd) {
|
|
|
41
43
|
const root = findRepoRoot(cwd);
|
|
42
44
|
for (let dir = cwd; ; dir = dirname(dir)) {
|
|
43
45
|
const lane = oxlintLaneAt(dir);
|
|
44
|
-
if (lane === "wired")
|
|
46
|
+
if (lane === "wired")
|
|
47
|
+
return oxlintBinResolves(cwd) ? null : `\u2139 basalt-ui check-theme: ${OXLINT_NO_BIN}.`;
|
|
45
48
|
if (lane === "unwired" || dir === root || dirname(dir) === dir) break;
|
|
46
49
|
}
|
|
47
50
|
const preset = readSource(packageRoot(), OXLINT_FILES.guards);
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -24,20 +24,15 @@ export type DoctorResult = {
|
|
|
24
24
|
* version agrees with the manifest's `basaltVersion`.
|
|
25
25
|
* 3. `guard-scan`: `check-theme` would scan more than zero files, sharing `scannableFiles` so the
|
|
26
26
|
* two cannot disagree. Both RESTORED in 1.30.0 after four minors gone with no MIGRATING row —
|
|
27
|
-
* README § `doctor` carries what their absence cost
|
|
28
|
-
* nothing, and two basalt-WRITTEN docs describing output the CLI no longer produced).
|
|
27
|
+
* README § `doctor` carries what their absence cost.
|
|
29
28
|
* 4. `oxlint-preset` ("rules in sync"): the consumer's `.oxlintrc.json` extends the shipped
|
|
30
|
-
* preset AND that path resolves. `init` keeps an existing config, so the framework's whole
|
|
29
|
+
* preset AND that path resolves (warns when no `oxlint` bin does). `init` keeps an existing config, so the framework's whole
|
|
31
30
|
* lint half can be silently off — one repo carried six real violations invisibly across five
|
|
32
31
|
* minors this way.
|
|
33
32
|
* 6. `ai-major-parity`: within THIS package.json, `dependencies`/`devDependencies`/
|
|
34
|
-
* `peerDependencies` agree on the `ai` package's major
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* dependents for one major while it itself runs another. A detected skew is exempt-able via
|
|
38
|
-
* `basalt.aiMajorSkewReason` (a non-empty reason string, not a bare `true`); missing or
|
|
39
|
-
* invalid still hard-fails as if the key were absent. A declared reason when the majors
|
|
40
|
-
* already agree warns that the exemption is stale.
|
|
33
|
+
* `peerDependencies` agree on the `ai` package's major — the shape `basalt/ai-sdk-major` (per
|
|
34
|
+
* linted FILE) cannot see. A skew is exempt-able via `basalt.aiMajorSkewReason` (a non-empty
|
|
35
|
+
* reason, not a bare `true`); a declared reason when the majors agree warns it is stale.
|
|
41
36
|
*
|
|
42
37
|
* Warning (non-fatal):
|
|
43
38
|
* 5. `lefthook-preset` ("lefthook wired"): a pre-commit command runs `check-theme`, read from
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAgCA,MAAM,MAAM,YAAY,GAAG;IACzB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA8DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,MAAM,CAAC,aAAa,GAAE,MAAsB,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,CAqO1F"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
findRepoRoot,
|
|
11
11
|
inspectLefthookGate,
|
|
12
12
|
OXLINT_FILES,
|
|
13
|
+
OXLINT_NO_BIN,
|
|
14
|
+
oxlintBinResolves,
|
|
13
15
|
parseJsonc,
|
|
14
16
|
readBasaltConfig,
|
|
15
17
|
readIfExists,
|
|
@@ -143,6 +145,8 @@ basalt-ui doctor \u2014 ${cwd}
|
|
|
143
145
|
fail(
|
|
144
146
|
`.oxlintrc.json extends "${entry}", which does not exist (${resolve(cwd, entry)}) \u2014 oxlint refuses to start on a missing extends target (\`NotFound\`), so nothing is linted at all. Repoint it at "${correct}", where basalt-ui actually resolves.`
|
|
145
147
|
);
|
|
148
|
+
} else if (!oxlintBinResolves(cwd)) {
|
|
149
|
+
warn(`.oxlintrc.json extends the shipped preset (${entry}), but ${OXLINT_NO_BIN}`);
|
|
146
150
|
} else {
|
|
147
151
|
pass(`.oxlintrc.json extends the shipped basalt-ui oxlint preset (${entry})`);
|
|
148
152
|
}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -26,13 +26,12 @@ export declare function relativePosix(fromDir: string, toPath: string): string;
|
|
|
26
26
|
/**
|
|
27
27
|
* Where `basalt-ui` actually resolves from, seen from a consumer directory.
|
|
28
28
|
*
|
|
29
|
-
* Every
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* renders its paths from the answer rather than assuming the root.
|
|
29
|
+
* Every seam basalt seeds (oxlint/lefthook `extends`, the CI `run:` steps) used to hardcode
|
|
30
|
+
* `./node_modules/basalt-ui` at the repo ROOT; under bun's isolated linker a package that declares
|
|
31
|
+
* basalt a peer + devDependency gets it at `<pkg>/node_modules` and NOTHING at the root, so all three
|
|
32
|
+
* silently failed to resolve and `bunx` fetched a second, different copy. Resolution therefore walks
|
|
33
|
+
* OUTWARD from the consumer dir, then across the workspace packages — and every caller renders its
|
|
34
|
+
* paths from the answer rather than assuming the root.
|
|
36
35
|
*/
|
|
37
36
|
export type BasaltInstall = {
|
|
38
37
|
/** Absolute path of the resolved `node_modules/basalt-ui` directory, or null when unresolvable. */
|
|
@@ -242,6 +241,9 @@ export declare const ROOT_PLACEMENT: PlacementFlags;
|
|
|
242
241
|
* consumer not using git falls back to today's behaviour exactly.
|
|
243
242
|
*/
|
|
244
243
|
export declare function findRepoRoot(dir: string): string;
|
|
244
|
+
/** The AST lane's other half: an `oxlint` bin in `node_modules/.bin`, `dir` up to the repo root. */
|
|
245
|
+
export declare const OXLINT_NO_BIN = "oxlint config found but no oxlint binary \u2014 the AST lane never runs; add oxlint as a devDependency";
|
|
246
|
+
export declare function oxlintBinResolves(dir: string): boolean;
|
|
245
247
|
/** Resolve a run's placement flags once, from the consumer cwd. */
|
|
246
248
|
export declare function resolvePlacement(cwd: string): PlacementFlags;
|
|
247
249
|
/** The full managed-file manifest. Stable, declarative — the single source of truth for init/sync. */
|
|
@@ -358,24 +360,16 @@ export declare function writeUnit(file: ManagedFile, cwd: string, desired: strin
|
|
|
358
360
|
* Classify a managed file against the manifest for a sync run.
|
|
359
361
|
* - missing : the managed unit is absent on disk → recreate.
|
|
360
362
|
* - current : on disk == desired → nothing to do.
|
|
361
|
-
* - unchanged: on disk matches a KNOWN-SHIPPED rendering of this template
|
|
362
|
-
*
|
|
363
|
-
* 1. `sha256(current) === manifestHash` — legacy raw-hash path
|
|
364
|
-
*
|
|
365
|
-
*
|
|
366
|
-
*
|
|
367
|
-
*
|
|
368
|
-
*
|
|
369
|
-
* 2. `sha256(normalizeForLedger(current)) === manifestHash` — the ledger proper.
|
|
370
|
-
* `manifestHash` normally holds `sha256(normalizeForLedger(<bytes written at the
|
|
371
|
-
* last sync>))` (see `writeUnit`); normalizing `current` the same way and comparing
|
|
372
|
-
* survives a downstream formatter reformatting the file AND a version bump that
|
|
373
|
-
* changed the template's own words between the sync that wrote this manifest entry
|
|
374
|
-
* and the version being synced now — the argo cross-version false positive.
|
|
363
|
+
* - unchanged: on disk matches a KNOWN-SHIPPED rendering of this template (any one is sufficient) —
|
|
364
|
+
* but != desired as-is → safe overwrite:
|
|
365
|
+
* 1. `sha256(current) === manifestHash` — legacy raw-hash path (manifests written before
|
|
366
|
+
* the ledger normalized hold the RAW hash; keep matching so an upgrade never
|
|
367
|
+
* mass-classifies a pristine tree as drifted).
|
|
368
|
+
* 2. `sha256(normalizeForLedger(current)) === manifestHash` — the ledger proper (see
|
|
369
|
+
* `writeUnit`): survives a downstream formatter AND a version bump that changed the
|
|
370
|
+
* template's own words since the manifest entry was written (the argo false positive).
|
|
375
371
|
* 3. `normalizeForLedger(current) === normalizeForLedger(desired)` — same-version
|
|
376
|
-
* fallback
|
|
377
|
-
* was dropped), but the on-disk bytes still match today's rendering modulo
|
|
378
|
-
* formatting noise.
|
|
372
|
+
* fallback when no manifest entry exists at all.
|
|
379
373
|
* - drifted : on disk matches NONE of the above (a real, word-level local edit) → skip unless
|
|
380
374
|
* --force.
|
|
381
375
|
*/
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAiC5C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,CAiBzF;AA4BD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAEzD;AAED,eAAO,MAAM,IAAI,QAAyC,CAAA;AAC1D,mGAAmG;AACnG,eAAO,MAAM,qBAAqB,QAA6B,CAAA;AAoC/D;qGACqG;AACrG,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOjD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAS1D;AAoDD,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAIrE;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -338,6 +338,14 @@ function findRepoRoot(dir) {
|
|
|
338
338
|
current = parent;
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
|
+
const OXLINT_NO_BIN = "oxlint config found but no oxlint binary \u2014 the AST lane never runs; add oxlint as a devDependency";
|
|
342
|
+
function oxlintBinResolves(dir) {
|
|
343
|
+
const root = findRepoRoot(dir);
|
|
344
|
+
for (let d = dir; ; d = dirname(d)) {
|
|
345
|
+
if (existsSync(resolve(d, "node_modules/.bin/oxlint"))) return true;
|
|
346
|
+
if (d === root || dirname(d) === d) return false;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
341
349
|
function findFileNamed(dir, filename) {
|
|
342
350
|
let entries;
|
|
343
351
|
try {
|
|
@@ -938,6 +946,7 @@ function run(argv, cwd = process.cwd()) {
|
|
|
938
946
|
export {
|
|
939
947
|
MANIFEST_PATH,
|
|
940
948
|
OXLINT_FILES,
|
|
949
|
+
OXLINT_NO_BIN,
|
|
941
950
|
ROOT_PLACEMENT,
|
|
942
951
|
RULE_NAMES,
|
|
943
952
|
SERIES_MODULE_HINT_RE,
|
|
@@ -966,6 +975,7 @@ export {
|
|
|
966
975
|
normalizeColorFunctions,
|
|
967
976
|
normalizeForLedger,
|
|
968
977
|
noteRelocation,
|
|
978
|
+
oxlintBinResolves,
|
|
969
979
|
packageRoot,
|
|
970
980
|
parseJsonc,
|
|
971
981
|
patchPackageJson,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guard/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAK7E,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guard/index.ts"],"names":[],"mappings":"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"}
|
package/dist/guard/index.js
CHANGED
|
@@ -203,7 +203,18 @@ function titleBodyNamesThePage(body) {
|
|
|
203
203
|
const RAW_SELECTION_CONTROL_TAG = /<(SegmentedControl|Select|MultiSelect|NativeSelect|DatePickerInput|DateInput|TagsInput|Chip\.Group)(?![\w])(?:=>|[^>])*?>/g;
|
|
204
204
|
const PROSE_CONTEXT_TAG = /<(?:Prose|ArticleLayout|Modal|Drawer)(?![\w])/;
|
|
205
205
|
const CONTROL_HOST_TAG = /<(?:SettingsRow|FormRow|FormGroup|Modal|Drawer|Popover\.Dropdown|Menu\.Dropdown|Composer|FilterSet|PageAside|PanelRow)(?![\w])/;
|
|
206
|
-
const
|
|
206
|
+
const CONTROL_HOST_TAG_SCAN = new RegExp(
|
|
207
|
+
`<(/?)(?:${/\(\?:([^)]*)\)/.exec(CONTROL_HOST_TAG.source)?.[1] ?? ""})(?![\\w])(?:=>|[^>])*?>`,
|
|
208
|
+
"g"
|
|
209
|
+
);
|
|
210
|
+
function insideHostTag(codeText, offset) {
|
|
211
|
+
let depth = 0;
|
|
212
|
+
for (const m of codeText.slice(0, offset).matchAll(CONTROL_HOST_TAG_SCAN)) {
|
|
213
|
+
if (m[1] === "/") depth = Math.max(0, depth - 1);
|
|
214
|
+
else if (!m[0].endsWith("/>")) depth += 1;
|
|
215
|
+
}
|
|
216
|
+
return depth > 0;
|
|
217
|
+
}
|
|
207
218
|
const OVERLAY_CONVENTION_KEBAB = /^[^/]*-(?:modal|drawer|popover|panel|form)\.[jt]sx$/;
|
|
208
219
|
const OVERLAY_CONVENTION_PASCAL = /^[A-Z]\w*(?:Modal|Drawer|Popover|Panel|Form)\.[jt]sx$/;
|
|
209
220
|
function isOverlayConventionFile(relPath) {
|
|
@@ -240,8 +251,8 @@ const DEFAULT_GUARD_CONFIG = {
|
|
|
240
251
|
const GRACE_PERIOD_KINDS = {
|
|
241
252
|
"unknown-vx-token": {
|
|
242
253
|
since: "1.34.0",
|
|
243
|
-
promote: "1.
|
|
244
|
-
why: "New kind at 1.33.0 (consumer-loop r2 B3): obsidian lost its 44px touch floor to a removed `var(--vx-space-touch-target)` that nothing reported. WIDENED at 1.34.0 (image-gen r4: `var(--vx-surface-2)` rendered transparent, unreported) to every unemitted name inside a basalt-owned family, so the grace restarts: warn through 1.34.x, error at 1.35.0."
|
|
254
|
+
promote: "1.36.0",
|
|
255
|
+
why: "New kind at 1.33.0 (consumer-loop r2 B3): obsidian lost its 44px touch floor to a removed `var(--vx-space-touch-target)` that nothing reported. WIDENED at 1.34.0 (image-gen r4: `var(--vx-surface-2)` rendered transparent, unreported) to every unemitted name inside a basalt-owned family, so the grace restarts: warn through 1.34.x, error at 1.35.0. EXTENDED one minor at 1.35.0: that minor ships the shell a11y fixes consumers are upgrading for, and the promotion also turns the seriesTokens warning into a throw \u2014 not a change to bundle into that bump. Error at 1.36.0."
|
|
245
256
|
}
|
|
246
257
|
};
|
|
247
258
|
function severityOf(kind, cfg) {
|
|
@@ -925,7 +936,7 @@ const GUARD_RULES = {
|
|
|
925
936
|
"raw-selection-control": {
|
|
926
937
|
kind: "raw-selection-control",
|
|
927
938
|
pattern: RAW_SELECTION_CONTROL_TAG,
|
|
928
|
-
// handled inline (full-text tag-scoped scan + host
|
|
939
|
+
// handled inline (full-text tag-scoped scan + host ancestry)
|
|
929
940
|
// JSX-tag-shaped (`<Select …>`) — never appears in CSS text.
|
|
930
941
|
appliesTo: (relPath) => !relPath.endsWith(".css"),
|
|
931
942
|
message: "Raw selection control with no home \u2014 a filter or tab belongs in a PageBar / Section / WidgetHeader slot and takes a `field` (a FieldHandle), so it owns the URL write and the localStorage mirror instead of carrying value/onChange (docs/CONTROLS-SPEC.md laws C1\u2013C3). Use the bound control from basalt-ui/controls. A settings row, a FormRow / FormGroup, an overlay and an @mantine/form file are the declared non-homes and never report. No shell? PageBar needs no BasaltShell: outside one it renders in flow, sticky, with its own title \u2014 so its slots are a reachable home for a provider-only app. This is the TEXT lane of basalt/control-outside-home, which answers the same question against the real AST \u2014 where the two disagree, the plugin is right."
|
|
@@ -1246,8 +1257,7 @@ function checkSource(text, relPath, cfg) {
|
|
|
1246
1257
|
if (ruleApplies("raw-selection-control", relPath) && !isOverlayConventionFile(relPath) && !(CONTROL_OWNER_DEF.test(codeText) && !BASALT_ANY_IMPORT.test(codeText)) && !MANTINE_FORM_IMPORT.test(codeText)) {
|
|
1247
1258
|
for (const m of codeText.matchAll(RAW_SELECTION_CONTROL_TAG)) {
|
|
1248
1259
|
const startLine = codeText.slice(0, m.index ?? 0).split("\n").length;
|
|
1249
|
-
|
|
1250
|
-
if (CONTROL_HOST_TAG.test(codeLines.slice(windowStart, startLine).join("\n"))) continue;
|
|
1260
|
+
if (insideHostTag(codeText, m.index ?? 0)) continue;
|
|
1251
1261
|
const endLine = startLine + (m[0].split("\n").length - 1);
|
|
1252
1262
|
if (isAllowedInRange(startLine, endLine, "raw-selection-control")) continue;
|
|
1253
1263
|
findings.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-mobile-nav.d.ts","sourceRoot":"","sources":["../../src/shell/app-mobile-nav.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAc,YAAY,EAAa,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAEd,YAAY,
|
|
1
|
+
{"version":3,"file":"app-mobile-nav.d.ts","sourceRoot":"","sources":["../../src/shell/app-mobile-nav.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAc,YAAY,EAAa,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAEd,YAAY,EAMb,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAqB/C,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG;IACzC,kFAAkF;IAClF,KAAK,EAAE,cAAc,CAAA;IACrB,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACpC;;wEAEoE;IACpE,OAAO,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACxC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAA;IAClD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAA;CACpC,CAAA;AAgHD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAE/E;AA8ED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,cAAc,GAAG,YAAY,CAuiB/B"}
|
|
@@ -51,6 +51,10 @@ function IconCheck() {
|
|
|
51
51
|
}
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
|
+
function rowCurrent(row) {
|
|
55
|
+
if (!row.active) return void 0;
|
|
56
|
+
return row.current === "page" ? "page" : "true";
|
|
57
|
+
}
|
|
54
58
|
function accountRows(account) {
|
|
55
59
|
if (!account || account.state.status === "loading") return [];
|
|
56
60
|
const actions = account.actions;
|
|
@@ -104,7 +108,8 @@ function settingsRows(items) {
|
|
|
104
108
|
label: item.label,
|
|
105
109
|
icon: item.icon,
|
|
106
110
|
onClick: item.onClick,
|
|
107
|
-
...item.active !== void 0 && { active: item.active }
|
|
111
|
+
...item.active !== void 0 && { active: item.active },
|
|
112
|
+
...item.current !== void 0 && { current: item.current }
|
|
108
113
|
}));
|
|
109
114
|
}
|
|
110
115
|
function deepestScrolledDescendant(root) {
|
|
@@ -129,10 +134,10 @@ const menuActionRow = (row, sectionStart = false) => /* @__PURE__ */ jsx(
|
|
|
129
134
|
{
|
|
130
135
|
className: sectionStart ? `${classes.menuItem} ${classes.menuSectionStart}` : classes.menuItem,
|
|
131
136
|
leftSection: row.icon,
|
|
132
|
-
rightSection: row.active ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
137
|
+
rightSection: row.active && row.current !== "page" ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
133
138
|
...row.danger ? { color: "red" } : {},
|
|
134
139
|
onClick: (event) => row.onClick?.(event),
|
|
135
|
-
"aria-current": row
|
|
140
|
+
"aria-current": rowCurrent(row),
|
|
136
141
|
children: row.label
|
|
137
142
|
},
|
|
138
143
|
row.key
|
|
@@ -175,13 +180,15 @@ function MobileNav({
|
|
|
175
180
|
};
|
|
176
181
|
const extraRows = [...accountRows(account), ...settingsRows(settingsMenuItems)];
|
|
177
182
|
const moreBlocks = (blocks ?? []).filter(
|
|
178
|
-
(block) =>
|
|
183
|
+
(block) => sidebarBlockMobile(block) === "more" && (block.kind !== "list" || block.items.length > 0)
|
|
184
|
+
);
|
|
185
|
+
const sheetBlocks = moreBlocks.filter(
|
|
186
|
+
(block) => block.kind !== "progress"
|
|
179
187
|
);
|
|
180
|
-
const listBlocks = moreBlocks.filter((block) => block.kind === "list");
|
|
181
188
|
const tailRule = (slot) => moreBlocks.length + extraRows.length > 0 && slotHasRows(slot);
|
|
182
189
|
const activateBlock = (block) => {
|
|
183
190
|
close();
|
|
184
|
-
if (block.kind
|
|
191
|
+
if (block.kind !== "progress") {
|
|
185
192
|
requestAnimationFrame(() => setOpenBlockKey(block.key));
|
|
186
193
|
return;
|
|
187
194
|
}
|
|
@@ -351,13 +358,14 @@ function MobileNav({
|
|
|
351
358
|
classNames: { root: classes.row },
|
|
352
359
|
label: row.label,
|
|
353
360
|
leftSection: row.icon,
|
|
354
|
-
rightSection: row.active ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
361
|
+
rightSection: row.active && row.current !== "page" ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
355
362
|
...row.danger ? { color: "red" } : {},
|
|
356
363
|
onClick: (event) => {
|
|
357
364
|
row.onClick?.(event);
|
|
358
365
|
close();
|
|
359
366
|
},
|
|
360
|
-
|
|
367
|
+
active: row.active === true && row.current === "page",
|
|
368
|
+
"aria-current": rowCurrent(row)
|
|
361
369
|
},
|
|
362
370
|
row.key
|
|
363
371
|
);
|
|
@@ -463,7 +471,7 @@ function MobileNav({
|
|
|
463
471
|
exitDuration: reduceMotion ? 0 : 120,
|
|
464
472
|
timingFunction: "cubic-bezier(0.32, 0.72, 0, 1)"
|
|
465
473
|
},
|
|
466
|
-
children: /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: "62dvh", type: "scroll", offsetScrollbars: "present", scrollbarSize: 8, children: /* @__PURE__ */ jsx(Stack, { gap: 1, children: block.items.map(blockItemRow) }) })
|
|
474
|
+
children: /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: "62dvh", type: "scroll", offsetScrollbars: "present", scrollbarSize: 8, children: block.kind === "list" ? /* @__PURE__ */ jsx(Stack, { gap: 1, children: block.items.map(blockItemRow) }) : block.node })
|
|
467
475
|
},
|
|
468
476
|
`block-${block.key}`
|
|
469
477
|
);
|
|
@@ -479,12 +487,13 @@ function MobileNav({
|
|
|
479
487
|
if (slot.kind === "menu") return menuSlot(slot);
|
|
480
488
|
return sheetSlot(slot);
|
|
481
489
|
}),
|
|
482
|
-
|
|
490
|
+
sheetBlocks.map(blockSheet)
|
|
483
491
|
]
|
|
484
492
|
}
|
|
485
493
|
);
|
|
486
494
|
}
|
|
487
495
|
function blockRowLabel(block) {
|
|
496
|
+
if (block.kind === "custom") return block.label ?? "";
|
|
488
497
|
return block.kind === "list" ? `${block.label} \xB7 ${block.count ?? block.items.length}` : `${block.label} \xB7 ${block.value} of ${block.total}`;
|
|
489
498
|
}
|
|
490
499
|
function slotHasRows(slot) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar-account.d.ts","sourceRoot":"","sources":["../../src/shell/app-sidebar-account.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AA0DzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,WAAW,+
|
|
1
|
+
{"version":3,"file":"app-sidebar-account.d.ts","sourceRoot":"","sources":["../../src/shell/app-sidebar-account.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AA0DzD,wBAAgB,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,WAAW,+BA6FrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../src/shell/app-sidebar.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAe,cAAc,EAAE,MAAM,aAAa,CAAA;AAI5E,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAgBjF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C;;;;OAIG;IACH,KAAK,EAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;IACjD,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACtC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG;QAAE,OAAO,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAA;IACjE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB,CAAA;
|
|
1
|
+
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../src/shell/app-sidebar.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAe,cAAc,EAAE,MAAM,aAAa,CAAA;AAI5E,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAgBjF,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG;IAC1C;;;;OAIG;IACH,KAAK,EAAE,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;IACjD,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACtC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IACvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,mBAAmB,GAAG;QAAE,OAAO,CAAC,EAAE,oBAAoB,CAAA;KAAE,CAAA;IACjE;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,YAAY,EAAE,CAAA;CACxB,CAAA;AAmTD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAyKhD"}
|
|
@@ -78,6 +78,10 @@ function hasActiveDescendant(item) {
|
|
|
78
78
|
if (item.active) return true;
|
|
79
79
|
return item.children?.some((c) => hasActiveDescendant(c)) ?? false;
|
|
80
80
|
}
|
|
81
|
+
function settingsCurrent(entry) {
|
|
82
|
+
if (!entry.active) return void 0;
|
|
83
|
+
return entry.current === "page" ? "page" : "true";
|
|
84
|
+
}
|
|
81
85
|
function NavLinkBody({
|
|
82
86
|
item,
|
|
83
87
|
active,
|
|
@@ -267,12 +271,12 @@ function AppSidebar(props) {
|
|
|
267
271
|
className: classes.footerBtn,
|
|
268
272
|
onClick: entry.onClick,
|
|
269
273
|
"aria-label": entry.label,
|
|
270
|
-
"aria-current": entry
|
|
274
|
+
"aria-current": settingsCurrent(entry),
|
|
271
275
|
children: [
|
|
272
276
|
/* @__PURE__ */ jsx("span", { className: classes.footerIconSlot, children: entry.icon ?? /* @__PURE__ */ jsx(IconGear, {}) }),
|
|
273
277
|
/* @__PURE__ */ jsx(Text, { className: classes.footerText, fz: VX.text.md, children: entry.label }),
|
|
274
278
|
index === 0 ? ringMark : null,
|
|
275
|
-
entry.active ? /* @__PURE__ */ jsx(IconCheck, {}) : null
|
|
279
|
+
entry.active && entry.current !== "page" ? /* @__PURE__ */ jsx(IconCheck, {}) : null
|
|
276
280
|
]
|
|
277
281
|
},
|
|
278
282
|
entry.key
|
|
@@ -288,10 +292,11 @@ function AppSidebar(props) {
|
|
|
288
292
|
settingsItems.map((entry) => /* @__PURE__ */ jsx(
|
|
289
293
|
Menu.Item,
|
|
290
294
|
{
|
|
295
|
+
className: classes.settingsMenuItem,
|
|
291
296
|
leftSection: entry.icon,
|
|
292
|
-
rightSection: entry.active ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
297
|
+
rightSection: entry.active && entry.current !== "page" ? /* @__PURE__ */ jsx(IconCheck, {}) : void 0,
|
|
293
298
|
onClick: entry.onClick,
|
|
294
|
-
"aria-current": entry
|
|
299
|
+
"aria-current": settingsCurrent(entry),
|
|
295
300
|
children: entry.label
|
|
296
301
|
},
|
|
297
302
|
entry.key
|
|
@@ -322,12 +327,12 @@ function AppSidebar(props) {
|
|
|
322
327
|
classNames: { viewport: classes.navViewport },
|
|
323
328
|
children: /* @__PURE__ */ jsxs(Stack, { gap: 0, className: classes.nav, children: [
|
|
324
329
|
sections.map((section) => /* @__PURE__ */ jsx(NavSection, { section, collapsed }, section.label)),
|
|
325
|
-
navBlocks.map((block) => /* @__PURE__ */ jsx(SidebarBlockView, { block }, block.key))
|
|
330
|
+
navBlocks.map((block) => /* @__PURE__ */ jsx(SidebarBlockView, { block, collapsed }, block.key))
|
|
326
331
|
] })
|
|
327
332
|
}
|
|
328
333
|
),
|
|
329
334
|
(bottomBlocks.length > 0 || settingsRow !== null || account !== void 0) && /* @__PURE__ */ jsxs(Stack, { gap: 0, className: classes.footer, children: [
|
|
330
|
-
bottomBlocks.map((block) => /* @__PURE__ */ jsx(SidebarBlockView, { block }, block.key)),
|
|
335
|
+
bottomBlocks.map((block) => /* @__PURE__ */ jsx(SidebarBlockView, { block, collapsed }, block.key)),
|
|
331
336
|
settingsRow,
|
|
332
337
|
account !== void 0 && /* @__PURE__ */ jsx(
|
|
333
338
|
SidebarAccount,
|