basalt-ui 1.19.0 → 1.20.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.
Files changed (83) hide show
  1. package/AGENTS.md +15 -1
  2. package/CHANGELOG.md +27 -0
  3. package/MIGRATING.md +228 -0
  4. package/README.md +53 -9
  5. package/agent/rules/basalt-app.md +43 -0
  6. package/agent/rules/basalt-charts.md +26 -14
  7. package/agent/rules/basalt-mantine.md +25 -10
  8. package/agent/rules/basalt-router.md +22 -10
  9. package/agent/rules/basalt-tokens.md +75 -6
  10. package/agent/skills/basalt-app/SKILL.md +42 -6
  11. package/configs/check.yml +11 -4
  12. package/configs/lefthook.yml +21 -2
  13. package/configs/oxlint-plugin.js +515 -25
  14. package/configs/oxlint-plugin.test.ts +383 -10
  15. package/configs/oxlint.json +10 -1
  16. package/dist/agent/stick-to-bottom.js +1 -1
  17. package/dist/agent-chat/thread-detail-panel.js +1 -1
  18. package/dist/agent-chat/thread-message.js +2 -2
  19. package/dist/agent-chat/tool-chip.js +1 -1
  20. package/dist/charts/kinds/Donut.d.ts.map +1 -1
  21. package/dist/charts/kinds/Donut.js +1 -1
  22. package/dist/charts/primitives/ChartLegend.js +2 -2
  23. package/dist/charts/primitives/ChartTooltip.js +1 -1
  24. package/dist/cli/index.d.ts +107 -15
  25. package/dist/cli/index.d.ts.map +1 -1
  26. package/dist/cli/index.js +610 -72
  27. package/dist/cli/toolchain-wiring.test.d.ts +2 -0
  28. package/dist/cli/toolchain-wiring.test.d.ts.map +1 -0
  29. package/dist/dashboard/delta-badge.js +2 -2
  30. package/dist/dashboard/stat-card.js +1 -1
  31. package/dist/data/virtual-list.js +5 -5
  32. package/dist/guard/index.d.ts +56 -2
  33. package/dist/guard/index.d.ts.map +1 -1
  34. package/dist/guard/index.js +326 -59
  35. package/dist/guard/types.d.ts +25 -5
  36. package/dist/guard/types.d.ts.map +1 -1
  37. package/dist/register.d.ts +25 -0
  38. package/dist/register.d.ts.map +1 -1
  39. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  40. package/dist/shell/app-mobile-nav.js +14 -14
  41. package/dist/shell/app-mobile-nav.module.css +44 -11
  42. package/dist/shell/app-mobile-nav.module.css.d.ts +1 -1
  43. package/dist/surfaces.d.ts +1 -1
  44. package/dist/surfaces.js +1 -1
  45. package/dist/tokens/index.d.ts +3 -3
  46. package/dist/tokens/index.d.ts.map +1 -1
  47. package/dist/tokens/index.js +2 -0
  48. package/dist/tokens/palette.d.ts +35 -27
  49. package/dist/tokens/palette.d.ts.map +1 -1
  50. package/dist/tokens/palette.js +24 -18
  51. package/dist/tokens.css +19 -17
  52. package/dist/vite-color-mix.js +2 -2
  53. package/llms.txt +3 -3
  54. package/package.json +4 -3
  55. package/src/agent/stick-to-bottom.tsx +1 -1
  56. package/src/agent-chat/thread-detail-panel.tsx +1 -1
  57. package/src/agent-chat/thread-message.tsx +3 -3
  58. package/src/agent-chat/tool-chip.tsx +1 -1
  59. package/src/charts/kinds/Donut.tsx +2 -1
  60. package/src/charts/primitives/ChartLegend.tsx +2 -2
  61. package/src/charts/primitives/ChartTooltip.tsx +1 -1
  62. package/src/cli/index.ts +1070 -99
  63. package/src/cli/init-sync.test.ts +19 -3
  64. package/src/cli/tokens-css.test.ts +27 -14
  65. package/src/cli/toolchain-wiring.test.ts +694 -0
  66. package/src/dashboard/delta-badge.tsx +3 -3
  67. package/src/dashboard/stat-card.tsx +1 -1
  68. package/src/data/virtual-list.tsx +8 -8
  69. package/src/guard/check-source.test.ts +663 -11
  70. package/src/guard/index.ts +727 -94
  71. package/src/guard/types.ts +29 -4
  72. package/src/register.ts +32 -0
  73. package/src/shell/app-mobile-nav.module.css +44 -11
  74. package/src/shell/app-mobile-nav.module.css.d.ts +1 -1
  75. package/src/shell/app-mobile-nav.test.tsx +34 -0
  76. package/src/shell/app-mobile-nav.tsx +16 -5
  77. package/src/surfaces.ts +1 -1
  78. package/src/theme/density-relations.test.ts +8 -5
  79. package/src/theme/spacing.test.ts +2 -0
  80. package/src/theme-toggle/index.tsx +2 -2
  81. package/src/tokens/index.ts +5 -3
  82. package/src/tokens/palette.ts +24 -18
  83. package/src/vite-color-mix.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-mobile-nav.d.ts","sourceRoot":"","sources":["../../src/shell/app-mobile-nav.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAc,YAAY,EAAa,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAGf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAiB/C,MAAM,MAAM,cAAc,GAAG;IAC3B,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;CACnD,CAAA;AAkFD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAE/E;AAsFD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,OAAO,EACP,iBAAiB,GAClB,EAAE,cAAc,GAAG,YAAY,CAsO/B"}
1
+ {"version":3,"file":"app-mobile-nav.d.ts","sourceRoot":"","sources":["../../src/shell/app-mobile-nav.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAc,YAAY,EAAa,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAGf,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAiB/C,MAAM,MAAM,cAAc,GAAG;IAC3B,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;CACnD,CAAA;AAkFD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAE/E;AAsFD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,OAAO,EACP,iBAAiB,GAClB,EAAE,cAAc,GAAG,YAAY,CAiP/B"}
@@ -281,32 +281,32 @@ function MobileNav({
281
281
  );
282
282
  const sheetSlot = (slot) => /* @__PURE__ */ jsxs(Fragment2, { children: [
283
283
  surfaceTab(slot, () => setOpenKey(slot.key)),
284
- /* @__PURE__ */ jsxs(
284
+ /* @__PURE__ */ jsx(
285
285
  Drawer,
286
286
  {
287
287
  opened: openKey === slot.key,
288
288
  onClose: close,
289
289
  position: "bottom",
290
- size: "auto",
291
290
  padding: "md",
292
291
  title: slot.label,
293
- classNames: { content: classes.sheet, title: classes.sheetTitle },
292
+ classNames: {
293
+ content: classes.sheet,
294
+ title: classes.sheetTitle,
295
+ header: classes.sheetHeader
296
+ },
294
297
  transitionProps: {
295
298
  transition: "slide-up",
296
299
  duration: reduceMotion ? 0 : 220,
297
300
  timingFunction: "cubic-bezier(0.32, 0.72, 0, 1)"
298
301
  },
299
- children: [
300
- /* @__PURE__ */ jsx("div", { className: classes.grabber, "aria-hidden": true }),
301
- /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: "62dvh", type: "scroll", children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
302
- slot.groups.map((group) => /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
303
- sheetGroupLabel(group),
304
- rows(group.items, 0, sheetRow)
305
- ] }, group.key)),
306
- slot.isMore && extraRows.length > 0 ? /* @__PURE__ */ jsx(Stack, { gap: 2, children: extraRows.map(sheetActionRow) }) : null,
307
- slot.isMore ? config?.moreExtra : null
308
- ] }) })
309
- ]
302
+ children: /* @__PURE__ */ jsx(ScrollArea.Autosize, { mah: "62dvh", type: "scroll", children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
303
+ slot.groups.map((group) => /* @__PURE__ */ jsxs(Stack, { gap: 2, children: [
304
+ sheetGroupLabel(group),
305
+ rows(group.items, 0, sheetRow)
306
+ ] }, group.key)),
307
+ slot.isMore && extraRows.length > 0 ? /* @__PURE__ */ jsx(Stack, { gap: 2, children: extraRows.map(sheetActionRow) }) : null,
308
+ slot.isMore ? config?.moreExtra : null
309
+ ] }) })
310
310
  }
311
311
  )
312
312
  ] }, slot.key);
@@ -46,9 +46,17 @@
46
46
  display: inline-flex;
47
47
  align-items: center;
48
48
  justify-content: center;
49
- /* Deliberately sub-scale: the active pill hugs a 24px glyph, so it is a shape inset rather than
50
- * layout spacing — the xs..xl scale has no step this tight. */
51
- padding: 2px 12px; /* theme-allow */
49
+ /* This span IS the active pill, so its box may not depend on what it contains: shipping no icon
50
+ * dependency is a supported configuration, and an empty span collapsed the pill to a 24x4px
51
+ * dash. The floor is the icon box PLUS its inset — everything is border-box under Mantine's
52
+ * reset — so the pill renders identically with and without a glyph, at every density. */
53
+ min-width: calc(
54
+ var(--vx-space-mobile-nav-icon-size) + 2 * var(--vx-space-mobile-nav-tab-inset-x)
55
+ );
56
+ min-height: calc(
57
+ var(--vx-space-mobile-nav-icon-size) + 2 * var(--vx-space-mobile-nav-tab-inset-y)
58
+ );
59
+ padding: var(--vx-space-mobile-nav-tab-inset-y) var(--vx-space-mobile-nav-tab-inset-x);
52
60
  border-radius: var(--vx-radius-ctrl);
53
61
  transition: transform 140ms cubic-bezier(0.32, 0.72, 0, 1);
54
62
  }
@@ -170,6 +178,27 @@
170
178
  border-top-right-radius: var(--mantine-radius-lg);
171
179
  /* A Drawer is NOT an AppShell section, so Mantine adds no inset of its own here. */
172
180
  padding-bottom: env(safe-area-inset-bottom, 0px);
181
+
182
+ /*
183
+ * THE `--drawer-size-auto` TRAP — do not "fix" this by restoring `size="auto"` on the Drawer.
184
+ * `getSize('auto', 'drawer-size')` (Mantine's `get-size.mjs`) resolves ANY non-numeric size to
185
+ * `var(--drawer-size-auto)`, and `@mantine/core` defines that custom property NOWHERE — grepped
186
+ * the full shipped `styles.css`. On a bottom Drawer that dead var flows straight into
187
+ * `--drawer-height`, so `size="auto"` was never wired to anything; the sheet rendered at
188
+ * `calc(100% - offset*2)`, i.e. the full viewport, no matter how little content it held. That is
189
+ * why this component no longer passes a `size` prop at all — it would resolve to *some* value,
190
+ * but this rule below overrides Mantine's `height`/`max-height` regardless of what that value is.
191
+ *
192
+ * This works with NO `!important`: `packages/basalt-ui/styles.css` wraps every Mantine rule in
193
+ * `@layer mantine` (verified against the installed `styles.layer.css`), and this CSS module is
194
+ * unlayered — an unlayered rule always wins over a layered one, independent of specificity or
195
+ * source order. `height: auto` lets the sheet hug its content; `max-height` is a hard ceiling on
196
+ * the whole sheet (header + body), sized with headroom ABOVE the `ScrollArea.Autosize`'s
197
+ * `mah="62dvh"` in the JSX — that autosize cap is what actually decides when the sheet starts
198
+ * scrolling internally, so the two never fight over which one owns "the maximum".
199
+ */
200
+ height: auto;
201
+ max-height: min(70dvh, 100%);
173
202
  }
174
203
 
175
204
  /* Sheet title = a micro-label (docs/DESIGN-SPEC.md §3), matching the sidebar's `.sectionLabel`. */
@@ -182,14 +211,18 @@
182
211
  color: var(--vx-faint);
183
212
  }
184
213
 
185
- /* The dismiss affordance. There is no swipe-to-dismiss: Mantine ships no drag primitive and
186
- * writing `transform` to Drawer.Content fights its own Transition on the same node. */
187
- .grabber {
188
- width: 36px;
189
- height: 4px;
190
- margin: 0 auto 8px;
191
- border-radius: 999px;
192
- background-color: color-mix(in srgb, var(--vx-ink) 18%, transparent);
214
+ /*
215
+ * Mantine's `ModalBase` header forces a `min-height` of `calc(3.75rem * var(--mantine-scale))`
216
+ * (60px) — sized for a real dialog title, not a 10px micro-label, and a big share of "unnecessarily
217
+ * big". `--vx-space-mobile-nav-row-height` pins it to the same 44px touch-target floor as every
218
+ * other row in this bar instead. The header's close button IS the dismiss affordance now — no
219
+ * separate grabber: there was never swipe-to-dismiss behind it (Mantine ships no drag primitive),
220
+ * so a plain decorative bar bought nothing an explicit, focusable close control doesn't already
221
+ * give for free, including to keyboard/screen-reader users the grabber never reached.
222
+ */
223
+ .sheetHeader {
224
+ min-height: var(--vx-space-mobile-nav-row-height);
225
+ padding: 0 var(--mantine-spacing-md);
193
226
  }
194
227
 
195
228
  /* Large tap rows inside the sheet. NavLink rows reuse the sidebar's neutral active fill.
@@ -16,7 +16,7 @@ declare const classes: {
16
16
  readonly menuLabel: string
17
17
  readonly sheet: string
18
18
  readonly sheetTitle: string
19
- readonly grabber: string
19
+ readonly sheetHeader: string
20
20
  readonly row: string
21
21
  readonly rowNested: string
22
22
  }
@@ -344,7 +344,7 @@ export declare const SURFACES: {
344
344
  readonly './tokens.css': {
345
345
  readonly kind: "tooling";
346
346
  readonly layer: "non-js-asset";
347
- readonly description: "Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer with no bundler, no React and no Mantine; retune the selector or trim the spacing set with `basalt-ui tokens:css`";
347
+ readonly description: "Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer that has a bundler to resolve the subpath but no React and no Mantine; with no bundler, emit a file you own via `basalt-ui tokens:css`";
348
348
  readonly forbiddenImports: readonly [];
349
349
  };
350
350
  readonly './configs/*': {
package/dist/surfaces.js CHANGED
@@ -284,7 +284,7 @@ const SURFACES = {
284
284
  "./tokens.css": {
285
285
  kind: "tooling",
286
286
  layer: "non-js-asset",
287
- description: "Prebuilt --vx-* token stylesheet \u2014 the default buildPaletteCss() output as a plain file, for a consumer with no bundler, no React and no Mantine; retune the selector or trim the spacing set with `basalt-ui tokens:css`",
287
+ description: "Prebuilt --vx-* token stylesheet \u2014 the default buildPaletteCss() output as a plain file, for a consumer that has a bundler to resolve the subpath but no React and no Mantine; with no bundler, emit a file you own via `basalt-ui tokens:css`",
288
288
  forbiddenImports: []
289
289
  },
290
290
  "./configs/*": {
@@ -234,13 +234,13 @@ export type BuildPaletteOpts = {
234
234
  */
235
235
  mediaFallback?: boolean;
236
236
  /**
237
- * How much of the SPACING set to emit. Default: `'all'` (every one of the 104 `--vx-space-*`
237
+ * How much of the SPACING set to emit. Default: `'all'` (every one of the 108 `--vx-space-*`
238
238
  * declarations the framework's own components read).
239
239
  *
240
240
  * `'core'` keeps the 9 generic anchors — the stack rhythm, the two control heights, the row
241
- * insets — and drops the 95 named for a specific basalt component
241
+ * insets — and drops the 99 named for a specific basalt component
242
242
  * (`--vx-space-agent-transcript-inset`, `--vx-space-toc-sub-indent`, …), taking the emitted set
243
- * from 197 variables to 102. Nothing outside basalt's own React components reads those, so a
243
+ * from 202 variables to 103. Nothing outside basalt's own React components reads those, so a
244
244
  * framework-free consumer is carrying them for nothing.
245
245
  *
246
246
  * This is a SPACING filter only: color, radius, shadow, type and status variables are identical
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"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"}
@@ -358,6 +358,8 @@ function spaceDecls(space) {
358
358
  decl("space-app-header-mobile-actions-height", `${space.step.appHeaderMobileActionsHeight}px`),
359
359
  decl("space-mobile-nav-tab-gap", `${space.step.mobileNavTabGap}px`),
360
360
  decl("space-mobile-nav-icon-size", `${space.step.mobileNavIconSize}px`),
361
+ decl("space-mobile-nav-tab-inset-y", `${space.step.mobileNavTabInsetY}px`),
362
+ decl("space-mobile-nav-tab-inset-x", `${space.step.mobileNavTabInsetX}px`),
361
363
  decl("space-mobile-nav-row-height", `${space.step.mobileNavRowHeight}px`),
362
364
  decl("space-agent-rail-inset-x", `${space.step.agentRailInsetX}px`),
363
365
  decl("space-agent-part-gap-top", `${space.step.agentPartGapTop}px`),
@@ -77,12 +77,12 @@ export declare const p: (fam: readonly string[], light?: number, dark?: number)
77
77
  */
78
78
  export declare const SHADOW: {
79
79
  readonly card: {
80
- readonly light: "0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline)";
81
- readonly dark: "0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)";
80
+ readonly light: "0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline)";
81
+ readonly dark: "0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)";
82
82
  };
83
83
  readonly ctrl: {
84
- readonly light: "0 1px 2px rgba(28,25,23,0.12)";
85
- readonly dark: "0 1px 2px rgba(0,0,0,0.35)";
84
+ readonly light: "0 1px 2px rgba(28, 25, 23, 0.12)";
85
+ readonly dark: "0 1px 2px rgba(0, 0, 0, 0.35)";
86
86
  };
87
87
  /**
88
88
  * Interactive-control depth — the ONE value every raised Button/ActionIcon/Input variant shares
@@ -112,12 +112,12 @@ export declare const SHADOW: {
112
112
  * ever needs more, raise the DROP. Do not reintroduce an edge; both shapes have been tried.
113
113
  */
114
114
  readonly raised: {
115
- readonly light: "0 1px 2px rgba(28,25,23,0.10)";
116
- readonly dark: "0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)";
115
+ readonly light: "0 1px 2px rgba(28, 25, 23, 0.10)";
116
+ readonly dark: "0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)";
117
117
  };
118
118
  readonly overlay: {
119
- readonly light: "0 8px 24px rgba(28,25,23,0.10)";
120
- readonly dark: "0 8px 24px rgba(0,0,0,0.5)";
119
+ readonly light: "0 8px 24px rgba(28, 25, 23, 0.10)";
120
+ readonly dark: "0 8px 24px rgba(0, 0, 0, 0.5)";
121
121
  };
122
122
  };
123
123
  /**
@@ -499,8 +499,14 @@ declare const SPACE_STEP_BASE: {
499
499
  * `env(safe-area-inset-bottom)` to it. JS-consumed (AppShell `footer.height`), no `--vx-*` var,
500
500
  * same shape as `appShellHeaderHeight`. Floored at 48px in `deriveSpacing`. */
501
501
  readonly mobileNavBarHeight: 56;
502
- /** Slot icon box. */
502
+ /** Slot icon box. Also the MIN box of the icon slot itself, so the active pill keeps its shape
503
+ * when a destination ships no icon (an icon-less consumer is a supported configuration). */
503
504
  readonly mobileNavIconSize: 24;
505
+ /** Active-pill inset around the slot icon, vertical. Sub-scale on its own, but it is one half of
506
+ * a pair with `mobileNavTabInsetX` — a step keeps the pill's shape tracking density. */
507
+ readonly mobileNavTabInsetY: 2;
508
+ /** Active-pill inset around the slot icon, horizontal. */
509
+ readonly mobileNavTabInsetX: 12;
504
510
  /** Menu/sheet row height. Floored at 44px in `deriveSpacing` (Apple HIG 44pt / WCAG 2.5.5 AAA). */
505
511
  readonly mobileNavRowHeight: 44;
506
512
  /** More/group `<Menu width={…}>`. JS-consumed, no var — same rationale as
@@ -883,6 +889,8 @@ export declare const SPACE_STEP: {
883
889
  readonly mobileNavTabGap: number;
884
890
  readonly mobileNavBarHeight: number;
885
891
  readonly mobileNavIconSize: number;
892
+ readonly mobileNavTabInsetY: number;
893
+ readonly mobileNavTabInsetX: number;
886
894
  readonly mobileNavRowHeight: number;
887
895
  readonly mobileNavMenuWidth: number;
888
896
  readonly chartLegendGap: number;
@@ -971,19 +979,19 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
971
979
  };
972
980
  readonly axis: {
973
981
  readonly light: string;
974
- readonly dark: "rgba(255,255,255,0.6)";
982
+ readonly dark: "rgba(255, 255, 255, 0.6)";
975
983
  };
976
984
  readonly axisStroke: {
977
985
  readonly light: string;
978
- readonly dark: "rgba(255,255,255,0.12)";
986
+ readonly dark: "rgba(255, 255, 255, 0.12)";
979
987
  };
980
988
  readonly grid: {
981
989
  readonly light: string;
982
- readonly dark: "rgba(255,255,255,0.06)";
990
+ readonly dark: "rgba(255, 255, 255, 0.06)";
983
991
  };
984
992
  readonly crosshair: {
985
993
  readonly light: string;
986
- readonly dark: "rgba(255,255,255,0.42)";
994
+ readonly dark: "rgba(255, 255, 255, 0.42)";
987
995
  };
988
996
  readonly dotStroke: {
989
997
  readonly light: "#ffffff";
@@ -991,15 +999,15 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
991
999
  };
992
1000
  readonly tooltipBg: {
993
1001
  readonly light: "#ffffff";
994
- readonly dark: "rgba(39,39,42,0.96)";
1002
+ readonly dark: "rgba(39, 39, 42, 0.96)";
995
1003
  };
996
1004
  readonly tooltipText: {
997
1005
  readonly light: string;
998
- readonly dark: "rgba(255,255,255,0.88)";
1006
+ readonly dark: "rgba(255, 255, 255, 0.88)";
999
1007
  };
1000
1008
  readonly tooltipMuted: {
1001
1009
  readonly light: string;
1002
- readonly dark: "rgba(255,255,255,0.5)";
1010
+ readonly dark: "rgba(255, 255, 255, 0.5)";
1003
1011
  };
1004
1012
  readonly tooltipBorder: {
1005
1013
  readonly light: "1px solid #e4e4e7";
@@ -1007,11 +1015,11 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
1007
1015
  };
1008
1016
  readonly tooltipShadow: {
1009
1017
  readonly light: `0 2px 8px ${string}`;
1010
- readonly dark: "0 2px 8px rgba(0,0,0,0.35)";
1018
+ readonly dark: "0 2px 8px rgba(0, 0, 0, 0.35)";
1011
1019
  };
1012
1020
  readonly legendText: {
1013
1021
  readonly light: string;
1014
- readonly dark: "rgba(255,255,255,0.92)";
1022
+ readonly dark: "rgba(255, 255, 255, 0.92)";
1015
1023
  };
1016
1024
  readonly neutral: ColorPair;
1017
1025
  };
@@ -1072,19 +1080,19 @@ export declare const NEUTRAL: {
1072
1080
  };
1073
1081
  readonly axis: {
1074
1082
  readonly light: string;
1075
- readonly dark: "rgba(255,255,255,0.6)";
1083
+ readonly dark: "rgba(255, 255, 255, 0.6)";
1076
1084
  };
1077
1085
  readonly axisStroke: {
1078
1086
  readonly light: string;
1079
- readonly dark: "rgba(255,255,255,0.12)";
1087
+ readonly dark: "rgba(255, 255, 255, 0.12)";
1080
1088
  };
1081
1089
  readonly grid: {
1082
1090
  readonly light: string;
1083
- readonly dark: "rgba(255,255,255,0.06)";
1091
+ readonly dark: "rgba(255, 255, 255, 0.06)";
1084
1092
  };
1085
1093
  readonly crosshair: {
1086
1094
  readonly light: string;
1087
- readonly dark: "rgba(255,255,255,0.42)";
1095
+ readonly dark: "rgba(255, 255, 255, 0.42)";
1088
1096
  };
1089
1097
  readonly dotStroke: {
1090
1098
  readonly light: "#ffffff";
@@ -1092,15 +1100,15 @@ export declare const NEUTRAL: {
1092
1100
  };
1093
1101
  readonly tooltipBg: {
1094
1102
  readonly light: "#ffffff";
1095
- readonly dark: "rgba(39,39,42,0.96)";
1103
+ readonly dark: "rgba(39, 39, 42, 0.96)";
1096
1104
  };
1097
1105
  readonly tooltipText: {
1098
1106
  readonly light: string;
1099
- readonly dark: "rgba(255,255,255,0.88)";
1107
+ readonly dark: "rgba(255, 255, 255, 0.88)";
1100
1108
  };
1101
1109
  readonly tooltipMuted: {
1102
1110
  readonly light: string;
1103
- readonly dark: "rgba(255,255,255,0.5)";
1111
+ readonly dark: "rgba(255, 255, 255, 0.5)";
1104
1112
  };
1105
1113
  readonly tooltipBorder: {
1106
1114
  readonly light: "1px solid #e4e4e7";
@@ -1108,11 +1116,11 @@ export declare const NEUTRAL: {
1108
1116
  };
1109
1117
  readonly tooltipShadow: {
1110
1118
  readonly light: `0 2px 8px ${string}`;
1111
- readonly dark: "0 2px 8px rgba(0,0,0,0.35)";
1119
+ readonly dark: "0 2px 8px rgba(0, 0, 0, 0.35)";
1112
1120
  };
1113
1121
  readonly legendText: {
1114
1122
  readonly light: string;
1115
- readonly dark: "rgba(255,255,255,0.92)";
1123
+ readonly dark: "rgba(255, 255, 255, 0.92)";
1116
1124
  };
1117
1125
  readonly neutral: ColorPair;
1118
1126
  };
@@ -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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"}
@@ -37,12 +37,12 @@ const p = (fam, light = 2, dark = 3) => ({
37
37
  });
38
38
  const SHADOW = {
39
39
  card: {
40
- light: "0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline)",
41
- dark: "0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)"
40
+ light: "0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline)",
41
+ dark: "0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)"
42
42
  },
43
43
  ctrl: {
44
- light: "0 1px 2px rgba(28,25,23,0.12)",
45
- dark: "0 1px 2px rgba(0,0,0,0.35)"
44
+ light: "0 1px 2px rgba(28, 25, 23, 0.12)",
45
+ dark: "0 1px 2px rgba(0, 0, 0, 0.35)"
46
46
  },
47
47
  /**
48
48
  * Interactive-control depth — the ONE value every raised Button/ActionIcon/Input variant shares
@@ -72,16 +72,16 @@ const SHADOW = {
72
72
  * ever needs more, raise the DROP. Do not reintroduce an edge; both shapes have been tried.
73
73
  */
74
74
  raised: {
75
- light: "0 1px 2px rgba(28,25,23,0.10)",
76
- dark: "0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)"
75
+ light: "0 1px 2px rgba(28, 25, 23, 0.10)",
76
+ dark: "0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)"
77
77
  },
78
78
  // Floating-layer elevation (menus, popovers, tooltips, modals, drawers) — a REAL drop shadow, a
79
79
  // step above `card`, so detached surfaces read as lifted off the page (`docs/DESIGN-SPEC.md` §5).
80
80
  // Unlike `card`, no embedded ring: floating surfaces carry a real 1px `--vx-surface-border` so
81
81
  // Mantine's rotated-square arrow inherits a proper edge.
82
82
  overlay: {
83
- light: "0 8px 24px rgba(28,25,23,0.10)",
84
- dark: "0 8px 24px rgba(0,0,0,0.5)"
83
+ light: "0 8px 24px rgba(28, 25, 23, 0.10)",
84
+ dark: "0 8px 24px rgba(0, 0, 0, 0.5)"
85
85
  }
86
86
  };
87
87
  function clampRadius(n) {
@@ -414,8 +414,14 @@ const SPACE_STEP_BASE = {
414
414
  * `env(safe-area-inset-bottom)` to it. JS-consumed (AppShell `footer.height`), no `--vx-*` var,
415
415
  * same shape as `appShellHeaderHeight`. Floored at 48px in `deriveSpacing`. */
416
416
  mobileNavBarHeight: 56,
417
- /** Slot icon box. */
417
+ /** Slot icon box. Also the MIN box of the icon slot itself, so the active pill keeps its shape
418
+ * when a destination ships no icon (an icon-less consumer is a supported configuration). */
418
419
  mobileNavIconSize: 24,
420
+ /** Active-pill inset around the slot icon, vertical. Sub-scale on its own, but it is one half of
421
+ * a pair with `mobileNavTabInsetX` — a step keeps the pill's shape tracking density. */
422
+ mobileNavTabInsetY: 2,
423
+ /** Active-pill inset around the slot icon, horizontal. */
424
+ mobileNavTabInsetX: 12,
419
425
  /** Menu/sheet row height. Floored at 44px in `deriveSpacing` (Apple HIG 44pt / WCAG 2.5.5 AAA). */
420
426
  mobileNavRowHeight: 44,
421
427
  /** More/group `<Menu width={…}>`. JS-consumed, no var — same rationale as
@@ -582,23 +588,23 @@ function buildPaletteDataUncached(config) {
582
588
  // primary line
583
589
  line2: { light: BP.gray[1], dark: BP.gray[2] },
584
590
  // secondary line
585
- axis: { light: inkRgba(inkLight, 0.6), dark: "rgba(255,255,255,0.6)" },
586
- axisStroke: { light: inkRgba(inkLight, 0.12), dark: "rgba(255,255,255,0.12)" },
587
- grid: { light: inkRgba(inkLight, 0.07), dark: "rgba(255,255,255,0.06)" },
588
- crosshair: { light: inkRgba(inkLight, 0.32), dark: "rgba(255,255,255,0.42)" },
591
+ axis: { light: inkRgba(inkLight, 0.6), dark: "rgba(255, 255, 255, 0.6)" },
592
+ axisStroke: { light: inkRgba(inkLight, 0.12), dark: "rgba(255, 255, 255, 0.12)" },
593
+ grid: { light: inkRgba(inkLight, 0.07), dark: "rgba(255, 255, 255, 0.06)" },
594
+ crosshair: { light: inkRgba(inkLight, 0.32), dark: "rgba(255, 255, 255, 0.42)" },
589
595
  dotStroke: { light: BP.white, dark: BP.darkGray[1] },
590
596
  // matches chart-area bg
591
- tooltipBg: { light: BP.white, dark: "rgba(39,39,42,0.96)" },
592
- tooltipText: { light: inkRgba(inkLight, 0.88), dark: "rgba(255,255,255,0.88)" },
593
- tooltipMuted: { light: inkRgba(inkLight, 0.5), dark: "rgba(255,255,255,0.5)" },
597
+ tooltipBg: { light: BP.white, dark: "rgba(39, 39, 42, 0.96)" },
598
+ tooltipText: { light: inkRgba(inkLight, 0.88), dark: "rgba(255, 255, 255, 0.88)" },
599
+ tooltipMuted: { light: inkRgba(inkLight, 0.5), dark: "rgba(255, 255, 255, 0.5)" },
594
600
  tooltipBorder: { light: `1px solid ${BP.lightGray[1]}`, dark: "none" },
595
601
  tooltipShadow: {
596
602
  light: `0 2px 8px ${inkRgba(inkLight, 0.1)}`,
597
- dark: "0 2px 8px rgba(0,0,0,0.35)"
603
+ dark: "0 2px 8px rgba(0, 0, 0, 0.35)"
598
604
  },
599
605
  // Chart legend text — same DERIVED-ink treatment as axis/grid/tooltip* above (light keys off
600
606
  // `inkLight`; dark stays flat white like every other neutral chart-chrome pair here).
601
- legendText: { light: inkRgba(inkLight, 0.82), dark: "rgba(255,255,255,0.92)" },
607
+ legendText: { light: inkRgba(inkLight, 0.82), dark: "rgba(255, 255, 255, 0.92)" },
602
608
  // Base neutral for hairlines / muted / DIMMED text / overlays — apply opacity via alpha().
603
609
  // Binds to --mantine-color-dimmed, so it is THE dimmed-text lever. Equal to `INK.muted` (the
604
610
  // spec's "muted (secondary text)" row) — kept as its own pair for the pre-existing `--vx-neutral`
package/dist/tokens.css CHANGED
@@ -96,6 +96,8 @@
96
96
  --vx-space-app-header-mobile-actions-height: 52px;
97
97
  --vx-space-mobile-nav-tab-gap: 3px;
98
98
  --vx-space-mobile-nav-icon-size: 24px;
99
+ --vx-space-mobile-nav-tab-inset-y: 2px;
100
+ --vx-space-mobile-nav-tab-inset-x: 12px;
99
101
  --vx-space-mobile-nav-row-height: 44px;
100
102
  --vx-space-agent-rail-inset-x: 10px;
101
103
  --vx-space-agent-part-gap-top: 6px;
@@ -185,17 +187,17 @@ html[data-mantine-color-scheme='dark'] {
185
187
  --vx-neutral: #d4d4d8;
186
188
  --vx-line: #e4e4e7;
187
189
  --vx-line2: #a1a1aa;
188
- --vx-axis: rgba(255,255,255,0.6);
189
- --vx-axis-stroke: rgba(255,255,255,0.12);
190
- --vx-grid: rgba(255,255,255,0.06);
191
- --vx-crosshair: rgba(255,255,255,0.42);
190
+ --vx-axis: rgba(255, 255, 255, 0.6);
191
+ --vx-axis-stroke: rgba(255, 255, 255, 0.12);
192
+ --vx-grid: rgba(255, 255, 255, 0.06);
193
+ --vx-crosshair: rgba(255, 255, 255, 0.42);
192
194
  --vx-dot-stroke: #27272a;
193
- --vx-tooltip-bg: rgba(39,39,42,0.96);
194
- --vx-tooltip-text: rgba(255,255,255,0.88);
195
- --vx-tooltip-muted: rgba(255,255,255,0.5);
195
+ --vx-tooltip-bg: rgba(39, 39, 42, 0.96);
196
+ --vx-tooltip-text: rgba(255, 255, 255, 0.88);
197
+ --vx-tooltip-muted: rgba(255, 255, 255, 0.5);
196
198
  --vx-tooltip-border: none;
197
- --vx-tooltip-shadow: 0 2px 8px rgba(0,0,0,0.35);
198
- --vx-legend-text: rgba(255,255,255,0.92);
199
+ --vx-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
200
+ --vx-legend-text: rgba(255, 255, 255, 0.92);
199
201
  --vx-ink: #e5e5e9;
200
202
  --vx-ink2: #dddde1;
201
203
  --vx-muted: #d4d4d8;
@@ -206,10 +208,10 @@ html[data-mantine-color-scheme='dark'] {
206
208
  --vx-accent-fill-hover: #3c6895;
207
209
  --vx-on-accent: #ffffff;
208
210
  --vx-divider: color-mix(in srgb, #ffffff 6%, transparent);
209
- --vx-shadow-card: 0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent);
210
- --vx-shadow-ctrl: 0 1px 2px rgba(0,0,0,0.35);
211
- --vx-shadow-raised: 0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent);
212
- --vx-shadow-overlay: 0 8px 24px rgba(0,0,0,0.5);
211
+ --vx-shadow-card: 0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent);
212
+ --vx-shadow-ctrl: 0 1px 2px rgba(0, 0, 0, 0.35);
213
+ --vx-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent);
214
+ --vx-shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.5);
213
215
  --vx-surface-bg: #27272a;
214
216
  --vx-surface-panel: #2b2b2e;
215
217
  --vx-surface-panel-hover: #38383b;
@@ -270,10 +272,10 @@ html[data-mantine-color-scheme='light'] {
270
272
  --vx-accent-fill-hover: #3c6895;
271
273
  --vx-on-accent: #ffffff;
272
274
  --vx-divider: color-mix(in srgb, #e5e5e5 65%, transparent);
273
- --vx-shadow-card: 0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline);
274
- --vx-shadow-ctrl: 0 1px 2px rgba(28,25,23,0.12);
275
- --vx-shadow-raised: 0 1px 2px rgba(28,25,23,0.10);
276
- --vx-shadow-overlay: 0 8px 24px rgba(28,25,23,0.10);
275
+ --vx-shadow-card: 0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline);
276
+ --vx-shadow-ctrl: 0 1px 2px rgba(28, 25, 23, 0.12);
277
+ --vx-shadow-raised: 0 1px 2px rgba(28, 25, 23, 0.10);
278
+ --vx-shadow-overlay: 0 8px 24px rgba(28, 25, 23, 0.10);
277
279
  --vx-surface-bg: #f2f2f5;
278
280
  --vx-surface-panel: #fafafd;
279
281
  --vx-surface-panel-hover: #ffffff;
@@ -1,8 +1,8 @@
1
1
  const NAMED_COLORS = {
2
2
  white: "#ffffff",
3
- // theme-allow — CSS keyword definition, not a design color
3
+ // theme-allow raw-hex — the CSS keyword's definition, not a design color
4
4
  black: "#000000"
5
- // theme-allow — CSS keyword definition, not a design color
5
+ // theme-allow raw-hex — the CSS keyword's definition, not a design color
6
6
  };
7
7
  function normalizeHex(hex) {
8
8
  const body = hex.slice(1);
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # basalt-ui v1.19.0
1
+ # basalt-ui v1.20.0
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.19.0
22
+ Version: 1.20.0
23
23
 
24
24
  ## basalt-ui
25
25
  Import: import { ... } from 'basalt-ui'
@@ -152,7 +152,7 @@ Layer: non-js-asset
152
152
 
153
153
  ## basalt-ui/tokens.css
154
154
  Asset: basalt-ui/tokens.css
155
- Description: Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer with no bundler, no React and no Mantine; retune the selector or trim the spacing set with `basalt-ui tokens:css`
155
+ Description: Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer that has a bundler to resolve the subpath but no React and no Mantine; with no bundler, emit a file you own via `basalt-ui tokens:css`
156
156
  Layer: non-js-asset
157
157
 
158
158
  ## basalt-ui/configs/*