basalt-ui 1.32.1 → 1.33.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 (137) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/MIGRATING.md +124 -24
  3. package/agent/rules/basalt-state.md +2 -2
  4. package/agent/rules/basalt-tokens.md +1 -1
  5. package/configs/oxlint-plugin.js +68 -61
  6. package/configs/oxlint-plugin.test.ts +126 -9
  7. package/configs/oxlint.json +2 -2
  8. package/dist/agent/coalesce.d.ts.map +1 -1
  9. package/dist/agent/coalesce.js +1 -2
  10. package/dist/agent/merge.d.ts.map +1 -1
  11. package/dist/agent/merge.js +1 -2
  12. package/dist/agent-chat/relative-time.d.ts +9 -0
  13. package/dist/agent-chat/relative-time.d.ts.map +1 -1
  14. package/dist/agent-chat/relative-time.js +1 -2
  15. package/dist/agent-chat/thread-message.d.ts.map +1 -1
  16. package/dist/agent-chat/thread-message.js +1 -2
  17. package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
  18. package/dist/charts/kinds/BandStrip.js +3 -3
  19. package/dist/charts/kinds/Bars.d.ts.map +1 -1
  20. package/dist/charts/kinds/Bars.js +1 -2
  21. package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
  22. package/dist/charts/kinds/StackedArea.js +1 -2
  23. package/dist/charts/primitives/legend-disclosure.d.ts.map +1 -1
  24. package/dist/cli/audit-allows.d.ts +1 -1
  25. package/dist/cli/audit-allows.d.ts.map +1 -1
  26. package/dist/cli/audit-allows.js +4 -4
  27. package/dist/cli/check-theme.d.ts.map +1 -1
  28. package/dist/cli/check-theme.js +1 -2
  29. package/dist/cli/config.d.ts +197 -0
  30. package/dist/cli/config.d.ts.map +1 -0
  31. package/dist/cli/config.js +20 -0
  32. package/dist/cli/doctor.js +1 -1
  33. package/dist/cli/guard-hook.d.ts.map +1 -1
  34. package/dist/cli/guard-hook.js +2 -8
  35. package/dist/cli/index.d.ts +2 -196
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +1 -18
  38. package/dist/commands/define-commands.d.ts.map +1 -1
  39. package/dist/commands/define-commands.js +2 -2
  40. package/dist/commands/define-overlays.d.ts.map +1 -1
  41. package/dist/commands/define-overlays.js +1 -2
  42. package/dist/common/index.d.ts +0 -1
  43. package/dist/common/index.d.ts.map +1 -1
  44. package/dist/common/index.js +0 -2
  45. package/dist/common/validate.d.ts +2 -2
  46. package/dist/common/validate.d.ts.map +1 -1
  47. package/dist/common/validate.js +2 -3
  48. package/dist/content/article-card.d.ts.map +1 -1
  49. package/dist/content/article-card.js +4 -1
  50. package/dist/controls/enum-filter.d.ts.map +1 -1
  51. package/dist/controls/enum-filter.js +3 -13
  52. package/dist/controls/filter-pill.d.ts +8 -0
  53. package/dist/controls/filter-pill.d.ts.map +1 -1
  54. package/dist/controls/filter-pill.js +15 -0
  55. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  56. package/dist/controls/multi-select-filter.js +3 -13
  57. package/dist/controls/number-filter.d.ts +3 -0
  58. package/dist/controls/number-filter.d.ts.map +1 -1
  59. package/dist/controls/number-filter.js +12 -4
  60. package/dist/controls/range-filter.d.ts.map +1 -1
  61. package/dist/controls/range-filter.js +1 -2
  62. package/dist/data/data-table.d.ts.map +1 -1
  63. package/dist/data/data-table.js +2 -3
  64. package/dist/guard/index.d.ts +16 -2
  65. package/dist/guard/index.d.ts.map +1 -1
  66. package/dist/guard/index.js +63 -22
  67. package/dist/guard/types.d.ts +3 -3
  68. package/dist/guard/types.d.ts.map +1 -1
  69. package/dist/guard/vx-names.d.ts +3 -0
  70. package/dist/guard/vx-names.d.ts.map +1 -0
  71. package/dist/guard/vx-names.js +257 -0
  72. package/dist/notifications/mount-guard.d.ts.map +1 -1
  73. package/dist/notifications/mount-guard.js +1 -2
  74. package/dist/provider/index.d.ts.map +1 -1
  75. package/dist/provider/index.js +2 -3
  76. package/dist/provider/lab-theme.d.ts +5 -4
  77. package/dist/provider/lab-theme.d.ts.map +1 -1
  78. package/dist/provider/lab-theme.js +1 -3
  79. package/dist/router-tanstack/search-store.d.ts +18 -0
  80. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  81. package/dist/router-tanstack/search-store.js +33 -1
  82. package/dist/shell/mobile-nav-model.d.ts.map +1 -1
  83. package/dist/shell/mobile-nav-model.js +3 -4
  84. package/dist/shell/page-bar.d.ts.map +1 -1
  85. package/dist/shell/page-bar.js +1 -2
  86. package/dist/surfaces.d.ts +1 -1
  87. package/dist/surfaces.d.ts.map +1 -1
  88. package/dist/surfaces.js +2 -0
  89. package/dist/tokens/index.d.ts +1 -1
  90. package/dist/tokens/index.d.ts.map +1 -1
  91. package/dist/tokens/index.js +7 -1
  92. package/dist/tokens/size-classes.d.ts +13 -0
  93. package/dist/tokens/size-classes.d.ts.map +1 -1
  94. package/dist/tokens/size-classes.js +8 -0
  95. package/llms.txt +2 -2
  96. package/package.json +1 -1
  97. package/src/agent/coalesce.ts +1 -2
  98. package/src/agent/merge.ts +1 -2
  99. package/src/agent-chat/relative-time.ts +1 -2
  100. package/src/agent-chat/thread-message.tsx +2 -3
  101. package/src/charts/kinds/BandStrip.tsx +7 -3
  102. package/src/charts/kinds/Bars.tsx +1 -2
  103. package/src/charts/kinds/StackedArea.tsx +4 -2
  104. package/src/charts/primitives/legend-disclosure.tsx +1 -0
  105. package/src/cli/audit-allows.ts +10 -9
  106. package/src/cli/check-theme.ts +1 -2
  107. package/src/cli/config.ts +209 -0
  108. package/src/cli/doctor.ts +2 -2
  109. package/src/cli/guard-hook.ts +2 -8
  110. package/src/cli/index.ts +2 -206
  111. package/src/commands/define-commands.ts +2 -2
  112. package/src/commands/define-overlays.ts +1 -2
  113. package/src/common/index.ts +0 -1
  114. package/src/common/validate.ts +4 -5
  115. package/src/content/article-card.tsx +1 -0
  116. package/src/controls/enum-filter.tsx +3 -13
  117. package/src/controls/filter-pill.tsx +20 -0
  118. package/src/controls/multi-select-filter.tsx +3 -13
  119. package/src/controls/number-filter.tsx +24 -3
  120. package/src/controls/range-filter.tsx +1 -2
  121. package/src/data/data-table.tsx +2 -3
  122. package/src/guard/index.ts +136 -46
  123. package/src/guard/types.ts +3 -2
  124. package/src/guard/vx-names.ts +257 -0
  125. package/src/notifications/mount-guard.ts +1 -2
  126. package/src/provider/index.tsx +2 -3
  127. package/src/provider/lab-theme.ts +28 -21
  128. package/src/router-tanstack/search-store.ts +73 -1
  129. package/src/shell/mobile-nav-model.ts +3 -5
  130. package/src/shell/page-bar.tsx +1 -4
  131. package/src/surfaces.ts +2 -0
  132. package/src/tokens/index.ts +6 -1
  133. package/src/tokens/size-classes.ts +14 -0
  134. package/dist/common/is-dev.d.ts +0 -3
  135. package/dist/common/is-dev.d.ts.map +0 -1
  136. package/dist/common/is-dev.js +0 -6
  137. package/src/common/is-dev.ts +0 -4
@@ -0,0 +1,257 @@
1
+ const BASALT_VX_NAMES = [
2
+ "--vx-accent",
3
+ "--vx-accent-fill",
4
+ "--vx-accent-fill-hover",
5
+ "--vx-accent-hover",
6
+ "--vx-accentFill",
7
+ "--vx-accentFillHover",
8
+ "--vx-accentHover",
9
+ "--vx-area-bottom",
10
+ "--vx-area-top",
11
+ "--vx-axis",
12
+ "--vx-axis-stroke",
13
+ "--vx-axisStroke",
14
+ "--vx-bad",
15
+ "--vx-bad-ref",
16
+ "--vx-bad-solid",
17
+ "--vx-badRef",
18
+ "--vx-badSolid",
19
+ "--vx-crosshair",
20
+ "--vx-divider",
21
+ "--vx-dot-stroke",
22
+ "--vx-dotStroke",
23
+ "--vx-faint",
24
+ "--vx-fill-cyan",
25
+ "--vx-fill-grape",
26
+ "--vx-fill-gray",
27
+ "--vx-fill-green",
28
+ "--vx-fill-hover-cyan",
29
+ "--vx-fill-hover-grape",
30
+ "--vx-fill-hover-gray",
31
+ "--vx-fill-hover-green",
32
+ "--vx-fill-hover-indigo",
33
+ "--vx-fill-hover-lime",
34
+ "--vx-fill-hover-orange",
35
+ "--vx-fill-hover-pink",
36
+ "--vx-fill-hover-red",
37
+ "--vx-fill-hover-teal",
38
+ "--vx-fill-hover-violet",
39
+ "--vx-fill-hover-yellow",
40
+ "--vx-fill-indigo",
41
+ "--vx-fill-lime",
42
+ "--vx-fill-orange",
43
+ "--vx-fill-pink",
44
+ "--vx-fill-red",
45
+ "--vx-fill-teal",
46
+ "--vx-fill-violet",
47
+ "--vx-fill-yellow",
48
+ "--vx-fillHover-cyan",
49
+ "--vx-fillHover-grape",
50
+ "--vx-fillHover-gray",
51
+ "--vx-fillHover-green",
52
+ "--vx-fillHover-indigo",
53
+ "--vx-fillHover-lime",
54
+ "--vx-fillHover-orange",
55
+ "--vx-fillHover-pink",
56
+ "--vx-fillHover-red",
57
+ "--vx-fillHover-teal",
58
+ "--vx-fillHover-violet",
59
+ "--vx-fillHover-yellow",
60
+ "--vx-good",
61
+ "--vx-good-ref",
62
+ "--vx-good-soft",
63
+ "--vx-good-solid",
64
+ "--vx-goodRef",
65
+ "--vx-goodSoft",
66
+ "--vx-goodSolid",
67
+ "--vx-grid",
68
+ "--vx-hit",
69
+ "--vx-hit-gap",
70
+ "--vx-ink",
71
+ "--vx-ink2",
72
+ "--vx-keyboard-inset",
73
+ "--vx-legend-text",
74
+ "--vx-legendText",
75
+ "--vx-line",
76
+ "--vx-line2",
77
+ "--vx-muted",
78
+ "--vx-neutral",
79
+ "--vx-on-accent",
80
+ "--vx-onAccent",
81
+ "--vx-prose-measure",
82
+ "--vx-radius-card",
83
+ "--vx-radius-ctrl",
84
+ "--vx-radius-fine",
85
+ "--vx-radius-floating",
86
+ "--vx-radius-pill",
87
+ "--vx-radius-tight",
88
+ "--vx-shadow-card",
89
+ "--vx-shadow-ctrl",
90
+ "--vx-shadow-overlay",
91
+ "--vx-shadow-raised",
92
+ "--vx-space-agent-code-inset",
93
+ "--vx-space-agent-error-inset-x",
94
+ "--vx-space-agent-error-inset-y",
95
+ "--vx-space-agent-message-inset-x",
96
+ "--vx-space-agent-message-inset-y",
97
+ "--vx-space-agent-part-gap-top",
98
+ "--vx-space-agent-rail-inset-x",
99
+ "--vx-space-agent-scroll-button-gap-top",
100
+ "--vx-space-agent-transcript-inset",
101
+ "--vx-space-app-shell-header-lead-min",
102
+ "--vx-space-app-shell-inset",
103
+ "--vx-space-app-shell-inset-mobile",
104
+ "--vx-space-article-card-meta-gap-top",
105
+ "--vx-space-article-card-tag-inset-x",
106
+ "--vx-space-article-card-tag-inset-y",
107
+ "--vx-space-article-card-tags-gap",
108
+ "--vx-space-article-column-gap",
109
+ "--vx-space-article-footer-gap",
110
+ "--vx-space-article-footer-margin-top",
111
+ "--vx-space-article-footer-padding-top",
112
+ "--vx-space-article-header-gap",
113
+ "--vx-space-article-header-margin-bottom",
114
+ "--vx-space-article-header-padding-bottom",
115
+ "--vx-space-article-meta-row-gap",
116
+ "--vx-space-article-nav-target-gap",
117
+ "--vx-space-article-toc-rail-width",
118
+ "--vx-space-badge-inset-x",
119
+ "--vx-space-badge-inset-y",
120
+ "--vx-space-callout-inset-x",
121
+ "--vx-space-callout-inset-y",
122
+ "--vx-space-callout-title-row-gap",
123
+ "--vx-space-card-inset-x",
124
+ "--vx-space-card-inset-y",
125
+ "--vx-space-code-block-body-inset-y",
126
+ "--vx-space-code-block-content-inset-x",
127
+ "--vx-space-code-block-floating-copy-offset",
128
+ "--vx-space-code-block-header-gap",
129
+ "--vx-space-code-block-header-inset-right",
130
+ "--vx-space-code-block-header-inset-y",
131
+ "--vx-space-code-block-header-right-gap",
132
+ "--vx-space-control-gap",
133
+ "--vx-space-control-height",
134
+ "--vx-space-control-height-ctl",
135
+ "--vx-space-control-height-tag",
136
+ "--vx-space-control-height-widget",
137
+ "--vx-space-guide-body-gap-bottom",
138
+ "--vx-space-guide-footer-gap-top",
139
+ "--vx-space-guide-footer-inset-top",
140
+ "--vx-space-icon-size",
141
+ "--vx-space-input-height",
142
+ "--vx-space-mermaid-container-inset",
143
+ "--vx-space-mobile-nav-icon-size",
144
+ "--vx-space-mobile-nav-row-height",
145
+ "--vx-space-mobile-nav-tab-gap",
146
+ "--vx-space-mobile-nav-tab-inset-x",
147
+ "--vx-space-mobile-nav-tab-inset-y",
148
+ "--vx-space-nav-icon-gap",
149
+ "--vx-space-page-bar-row-height",
150
+ "--vx-space-prose-article-block-gap",
151
+ "--vx-space-prose-article-h1-gap-bottom",
152
+ "--vx-space-prose-article-h1-gap-top",
153
+ "--vx-space-prose-article-h2-rule-gap",
154
+ "--vx-space-prose-article-heading-gap-bottom",
155
+ "--vx-space-prose-article-heading-gap-top",
156
+ "--vx-space-prose-article-list-gap-bottom",
157
+ "--vx-space-prose-article-list-gap-top",
158
+ "--vx-space-prose-article-list-indent",
159
+ "--vx-space-prose-article-paragraph-gap",
160
+ "--vx-space-prose-chat-heading-gap-bottom",
161
+ "--vx-space-prose-chat-heading-gap-top",
162
+ "--vx-space-prose-chat-list-gap-bottom",
163
+ "--vx-space-prose-chat-list-indent",
164
+ "--vx-space-prose-chat-list-item-gap",
165
+ "--vx-space-prose-chat-nested-list-gap",
166
+ "--vx-space-prose-code-block-inset-x",
167
+ "--vx-space-prose-code-block-inset-y",
168
+ "--vx-space-prose-heading-anchor-gap",
169
+ "--vx-space-prose-inline-code-inset-x",
170
+ "--vx-space-prose-inline-code-inset-y",
171
+ "--vx-space-prose-quote-indent",
172
+ "--vx-space-prose-quote-inset-y",
173
+ "--vx-space-prose-table-cell-inset-x",
174
+ "--vx-space-prose-table-cell-inset-y",
175
+ "--vx-space-row-inset-x",
176
+ "--vx-space-row-inset-y",
177
+ "--vx-space-row-line-height",
178
+ "--vx-space-section-gap",
179
+ "--vx-space-section-header-height",
180
+ "--vx-space-settings-row-gap",
181
+ "--vx-space-settings-row-inset-y",
182
+ "--vx-space-sheet-row-height",
183
+ "--vx-space-sidebar-account-inset-bottom",
184
+ "--vx-space-sidebar-account-inset-top",
185
+ "--vx-space-sidebar-account-inset-x",
186
+ "--vx-space-sidebar-avatar-size",
187
+ "--vx-space-sidebar-block-row-height",
188
+ "--vx-space-sidebar-brand-inset-x",
189
+ "--vx-space-sidebar-child-list-gap-bottom",
190
+ "--vx-space-sidebar-child-list-gap-top",
191
+ "--vx-space-sidebar-child-list-indent",
192
+ "--vx-space-sidebar-child-row-indent",
193
+ "--vx-space-sidebar-child-row-inset-y",
194
+ "--vx-space-sidebar-region-gap",
195
+ "--vx-space-sidebar-search-gap",
196
+ "--vx-space-sidebar-search-trigger-height",
197
+ "--vx-space-sidebar-section-gap",
198
+ "--vx-space-sidebar-section-label-gap",
199
+ "--vx-space-stack-lg",
200
+ "--vx-space-stack-md",
201
+ "--vx-space-stack-sm",
202
+ "--vx-space-stack-xl",
203
+ "--vx-space-stack-xs",
204
+ "--vx-space-stat-card-gap",
205
+ "--vx-space-sticky-header-clearance",
206
+ "--vx-space-toc-link-indent",
207
+ "--vx-space-toc-link-inset-y",
208
+ "--vx-space-toc-root-gap",
209
+ "--vx-space-toc-sub-indent",
210
+ "--vx-space-virtual-row-inset-x",
211
+ "--vx-space-virtual-row-inset-y",
212
+ "--vx-space-widget-header-height",
213
+ "--vx-status-bad",
214
+ "--vx-status-excellent",
215
+ "--vx-status-good",
216
+ "--vx-status-neutral",
217
+ "--vx-status-warn",
218
+ "--vx-surface-bg",
219
+ "--vx-surface-border",
220
+ "--vx-surface-elevated",
221
+ "--vx-surface-field",
222
+ "--vx-surface-hairline",
223
+ "--vx-surface-overlay",
224
+ "--vx-surface-panel",
225
+ "--vx-surface-panel-hover",
226
+ "--vx-surface-panelHover",
227
+ "--vx-surface-subtle",
228
+ "--vx-text-display",
229
+ "--vx-text-h1",
230
+ "--vx-text-h2",
231
+ "--vx-text-kpi",
232
+ "--vx-text-lg",
233
+ "--vx-text-md",
234
+ "--vx-text-micro",
235
+ "--vx-text-nano",
236
+ "--vx-text-sm",
237
+ "--vx-text-xl",
238
+ "--vx-text-xs",
239
+ "--vx-tooltip-bg",
240
+ "--vx-tooltip-border",
241
+ "--vx-tooltip-muted",
242
+ "--vx-tooltip-shadow",
243
+ "--vx-tooltip-text",
244
+ "--vx-tooltipBg",
245
+ "--vx-tooltipBorder",
246
+ "--vx-tooltipMuted",
247
+ "--vx-tooltipShadow",
248
+ "--vx-tooltipText",
249
+ "--vx-warn",
250
+ "--vx-warn-ref",
251
+ "--vx-warn-solid",
252
+ "--vx-warnRef",
253
+ "--vx-warnSolid"
254
+ ];
255
+ export {
256
+ BASALT_VX_NAMES
257
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"mount-guard.d.ts","sourceRoot":"","sources":["../../src/notifications/mount-guard.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD"}
1
+ {"version":3,"file":"mount-guard.d.ts","sourceRoot":"","sources":["../../src/notifications/mount-guard.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD"}
@@ -1,10 +1,9 @@
1
1
  import { useEffect } from "react";
2
- import { isDev } from "../common/is-dev.js";
3
2
  let mountedNotificationsCount = 0;
4
3
  function useNotificationsMountGuard() {
5
4
  useEffect(() => {
6
5
  mountedNotificationsCount++;
7
- if (mountedNotificationsCount > 1 && isDev()) {
6
+ if (mountedNotificationsCount > 1 && process.env.NODE_ENV !== "production") {
8
7
  console.warn(
9
8
  "[basalt] more than one Notifications overlay is mounted at once \u2014 mount exactly ONE <BasaltOverlays notifications /> (they all render Mantine's <Notifications />, so toasts would double-fire)."
10
9
  );
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"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"}
@@ -14,14 +14,13 @@ import { useLabTheme } from "./lab-theme.js";
14
14
  import { buildDensityCss, buildFontsCss, buildPaletteCss, buildRadiusCss } from "../tokens/index.js";
15
15
  import { isDefaultDeriveConfig } from "../tokens/derive.js";
16
16
  import { buildPaletteData } from "../tokens/palette.js";
17
- import { isDev } from "../common/is-dev.js";
18
17
  import { useMediaQuery } from "../common/use-media-query.js";
19
18
  import { registerColorSchemeSetter } from "../commands/shell-bridge.js";
20
19
  import { useIsomorphicLayoutEffect } from "../common/isomorphic-layout-effect.js";
21
20
  import { PageTitle } from "../shell/page-title.js";
22
21
  import { SizeClassHintContext } from "../shell/use-size-class.js";
23
22
  function defaultOnError(error, ctx) {
24
- if (isDev()) {
23
+ if (process.env.NODE_ENV !== "production") {
25
24
  console.error("[BasaltProvider] unhandled error", ctx.kind, error);
26
25
  }
27
26
  }
@@ -142,7 +141,7 @@ function BasaltBridge({
142
141
  const providerMounts = createMountCounter();
143
142
  function useDuplicateProviderGuard() {
144
143
  useEffect(() => {
145
- if (providerMounts.mount() > 1 && isDev()) {
144
+ if (providerMounts.mount() > 1 && process.env.NODE_ENV !== "production") {
146
145
  console.warn(
147
146
  "[basalt] BasaltProvider: more than one instance is mounted at once \u2014 nested/duplicate BasaltProviders double-mount MantineProvider, the palette <style> and ConnectivityProvider. Mount exactly one, at the app root."
148
147
  );
@@ -29,10 +29,11 @@ export declare function applyLabOverride(overrides: MantineThemeOverride | undef
29
29
  */
30
30
  declare function useLabThemeDev(overrides: MantineThemeOverride | undefined): MantineThemeOverride;
31
31
  /**
32
- * `BasaltProvider`'s theme resolution. Picked at module scope, not per render — both implementations
33
- * call their hooks unconditionally at their own top level, and which one is bound never changes for
34
- * the app's lifetime, so the hook order is as stable as a plain function's (a `LAB_ENABLED ? use…()`
35
- * inline in one function body would be a conditional hook call and a `react/rules-of-hooks` error).
32
+ * `BasaltProvider`'s theme resolution. Picked at module scope, not per render — both
33
+ * implementations call their hooks unconditionally at their own top level, and which one is bound
34
+ * never changes for the app's lifetime, so the hook order is as stable as a plain function's (a
35
+ * `dev ? use…()` inline in one function body would be a conditional hook call and a
36
+ * `react/rules-of-hooks` error).
36
37
  */
37
38
  export declare const useLabTheme: typeof useLabThemeDev;
38
39
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"lab-theme.d.ts","sourceRoot":"","sources":["../../src/provider/lab-theme.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AA4C/D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,oBAAoB,GACzB,oBAAoB,CAEtB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,oBAAoB,GAAG,SAAS,EAC3C,QAAQ,EAAE,cAAc,GAAG,IAAI,GAC9B,oBAAoB,CAWtB;AAgBD;;;;;;;;;GASG;AACH,iBAAS,cAAc,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,oBAAoB,CAGzF;AAOD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,uBAAiD,CAAA"}
1
+ {"version":3,"file":"lab-theme.d.ts","sourceRoot":"","sources":["../../src/provider/lab-theme.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AA2C/D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,oBAAoB,EAC1B,IAAI,EAAE,oBAAoB,GACzB,oBAAoB,CAEtB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,oBAAoB,GAAG,SAAS,EAC3C,QAAQ,EAAE,cAAc,GAAG,IAAI,GAC9B,oBAAoB,CAWtB;AAuBD;;;;;;;;;GASG;AACH,iBAAS,cAAc,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,oBAAoB,CAGzF;AAOD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,uBAA2E,CAAA"}
@@ -2,7 +2,6 @@ import { mergeThemeOverrides } from "@mantine/core";
2
2
  import { useMemo } from "react";
3
3
  import { useDeriveControlsState, toDeriveOverride } from "../theme-lab/derive-state.js";
4
4
  import { baseTheme, createBasaltTheme } from "../theme/index.js";
5
- import { isDev } from "../common/is-dev.js";
6
5
  const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
7
6
  function sameLeaf(a, b) {
8
7
  if (a === b) return true;
@@ -37,7 +36,6 @@ function applyLabOverride(overrides, override) {
37
36
  });
38
37
  return mergeThemeOverrides(theme, themeOverrideDelta(baseTheme, labTheme));
39
38
  }
40
- const LAB_ENABLED = isDev();
41
39
  function useLabThemeDev(overrides) {
42
40
  const [state] = useDeriveControlsState();
43
41
  return useMemo(() => applyLabOverride(overrides, toDeriveOverride(state)), [overrides, state]);
@@ -45,7 +43,7 @@ function useLabThemeDev(overrides) {
45
43
  function useLabThemeProd(overrides) {
46
44
  return useMemo(() => createBasaltTheme(overrides), [overrides]);
47
45
  }
48
- const useLabTheme = LAB_ENABLED ? useLabThemeDev : useLabThemeProd;
46
+ const useLabTheme = process.env.NODE_ENV !== "production" ? useLabThemeDev : useLabThemeProd;
49
47
  export {
50
48
  applyLabOverride,
51
49
  themeOverrideDelta,
@@ -6,6 +6,24 @@ export type CreateSearchStoreOptions<S extends Record<string, AnyField>> = {
6
6
  fields: S;
7
7
  /** Envelope version — bump when the field set changes to discard stale localStorage. */
8
8
  version?: number;
9
+ /**
10
+ * Search params this store does NOT own that a URL-lane write drops, in the SAME navigate —
11
+ * `['page']` on a paginated list, so narrowing the set on page 5 lands on page 1 and Back restores
12
+ * both together. Dropped, not written: the route's own `validateSearch` resolves the default
13
+ * (`page` → 1), so the store never has to know it. Applies to a URL-lane field's setter and
14
+ * `clear()` when the value moves, and to `useReset()` when any field moves; an explicit `patch`
15
+ * naming the same key wins.
16
+ *
17
+ * **URL-lane writes only.** A `url: false` field (mirror-only or memory) makes no navigate, so it
18
+ * has none to ride — and a `useReset()` on a store with no URL-lane field keeps the page too.
19
+ *
20
+ * Store-wide by design: every filter of a list narrows the same list. A param the store owns is
21
+ * refused at definition — reset a field with `useReset()` or its own `clear()`.
22
+ *
23
+ * @example
24
+ * createSearchStore({ key: 'shares', fields: { q: field.string({}), sort: … }, resets: ['page'] })
25
+ */
26
+ resets?: readonly string[];
9
27
  };
10
28
  export type SearchStore<S extends Record<string, AnyField>> = {
11
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"search-store.d.ts","sourceRoot":"","sources":["../../src/router-tanstack/search-store.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAmB,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAIlG,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IACzE,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAA;IACX,uFAAuF;IACvF,MAAM,EAAE,CAAC,CAAA;IACT,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IAC5D;;;;OAIG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAA;IACjE;;;;OAIG;IACH,UAAU,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IACjC,iFAAiF;IACjF,UAAU,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,2FAA2F;IAC3F,KAAK,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAA;IAC5C,8FAA8F;IAC9F,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA;IACpF,6EAA6E;IAC7E,SAAS,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,oFAAoF;IACpF,cAAc,EAAE,MAAM,MAAM,CAAA;IAC5B;;;OAGG;IACH,QAAQ,EAAE,MAAM,MAAM,IAAI,CAAA;CAC3B,CAAA;AAsGD;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IACrF,eAAe,EAAE,MAAM,IAAI,CAAA;CAC5B,CAAA;AA2BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACvE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAC7B,mBAAmB,CAAC,CAAC,CAAC,CAkSxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACxE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAEhB"}
1
+ {"version":3,"file":"search-store.d.ts","sourceRoot":"","sources":["../../src/router-tanstack/search-store.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAmB,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAIlG,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IACzE,uFAAuF;IACvF,GAAG,EAAE,MAAM,CAAA;IACX,uFAAuF;IACvF,MAAM,EAAE,CAAC,CAAA;IACT,wFAAwF;IACxF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI;IAC5D;;;;OAIG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAA;IACjE;;;;OAIG;IACH,UAAU,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IACjC,iFAAiF;IACjF,UAAU,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1C,2FAA2F;IAC3F,KAAK,EAAE;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAA;IAC5C,8FAA8F;IAC9F,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA;IACpF,6EAA6E;IAC7E,SAAS,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;IAChC,oFAAoF;IACpF,cAAc,EAAE,MAAM,MAAM,CAAA;IAC5B;;;OAGG;IACH,QAAQ,EAAE,MAAM,MAAM,IAAI,CAAA;CAC3B,CAAA;AAsGD;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IACrF,eAAe,EAAE,MAAM,IAAI,CAAA;CAC5B,CAAA;AAiDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACvE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAC7B,mBAAmB,CAAC,CAAC,CAAC,CAkUxB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACxE,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAC7B,WAAW,CAAC,CAAC,CAAC,CAEhB"}
@@ -37,6 +37,16 @@ function assertNoLazyUrlFallback(key, fields) {
37
37
  );
38
38
  }
39
39
  }
40
+ function assertResetsNotOwned(input) {
41
+ const { key, resets, paramOwners } = input;
42
+ for (const param of resets) {
43
+ const owner = paramOwners.get(param);
44
+ if (owner === void 0) continue;
45
+ throw new Error(
46
+ `basalt-ui: createSearchStore('${key}'): \`resets\` names \`${param}\`, which this store's field '${owner}' owns. \`resets\` is for sibling params the store does not own (a \`page\`); a field of the store is reset through \`useReset()\` or its own \`clear()\`.`
47
+ );
48
+ }
49
+ }
40
50
  function isMemoryLane(entry) {
41
51
  return !entry.codec.lane.url && !entry.codec.lane.persist;
42
52
  }
@@ -55,6 +65,15 @@ function buildSearchStore(o) {
55
65
  for (const entry of core.urlEntries) {
56
66
  for (const param of entry.codec.params) paramOwners.set(param, entry.name);
57
67
  }
68
+ const resets = o.resets ?? [];
69
+ assertResetsNotOwned({ key: o.key, resets, paramOwners });
70
+ const resetPatch = Object.fromEntries(
71
+ resets.map((param) => [param, void 0])
72
+ );
73
+ const resetsFor = (entry, prev, next) => {
74
+ const current = core.resolve(entry, prev, core.readRecord());
75
+ return entry.codec.equals(next, current) ? void 0 : resetPatch;
76
+ };
58
77
  const persistedNames = new Set(
59
78
  core.entries.filter((entry) => entry.codec.lane.persist).map((entry) => entry.name)
60
79
  );
@@ -118,8 +137,10 @@ function buildSearchStore(o) {
118
137
  if (!validated) return;
119
138
  navigate({
120
139
  to: ".",
140
+ // Gated like the setter: clearing a field already at its fallback keeps the page.
121
141
  search: (prev) => ({
122
142
  ...prev,
143
+ ...resetsFor(entry, prev, entry.codec.fallback),
123
144
  ...entry.codec.toSearch(entry.codec.fallback)
124
145
  }),
125
146
  replace: true,
@@ -143,8 +164,11 @@ function buildSearchStore(o) {
143
164
  // `patch` FIRST, the field's own params last: a patch is for keys the store does not
144
165
  // own (clearing a sibling `detailDate` with `undefined`), so it must never be able to
145
166
  // overwrite the value this very call is setting.
167
+ // `resets` only when the value moves: a no-op write (a debounced box settling back on
168
+ // what it held) must not throw the reader off the page they are on.
146
169
  search: (prev) => ({
147
170
  ...prev,
171
+ ...resetsFor(entry, prev, next),
148
172
  ...opts?.patch,
149
173
  ...entry.codec.toSearch(next)
150
174
  }),
@@ -224,7 +248,15 @@ function buildSearchStore(o) {
224
248
  }
225
249
  navigate({
226
250
  to: ".",
227
- search: (prev) => ({ ...prev, ...patch }),
251
+ // `resets` only when some field actually moves — the same gate as the setter and
252
+ // `clear()`. A `Reset all` with everything already at its fallback must keep the page:
253
+ // this navigate REPLACES, so a page dropped here could not be got back with Back.
254
+ search: (prev) => {
255
+ const moved = validatedEntries.some(
256
+ (entry) => resetsFor(entry, prev, entry.codec.fallback) !== void 0
257
+ );
258
+ return { ...prev, ...moved ? resetPatch : void 0, ...patch };
259
+ },
228
260
  replace: true,
229
261
  // Same reason as a single field's write above — a `Reset all` pressed from the mobile
230
262
  // sheet must not also scroll the page it was pressed on.
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-nav-model.d.ts","sourceRoot":"","sources":["../../src/shell/mobile-nav-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAGd,YAAY,EAEZ,cAAc,EACf,MAAM,aAAa,CAAA;AAGpB,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC,iGAAiG;AACjG,eAAO,MAAM,eAAe,WAAW,CAAA;AAEvC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,MAAM,CAQjF;AA8VD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,cAAc,CA8EhB"}
1
+ {"version":3,"file":"mobile-nav-model.d.ts","sourceRoot":"","sources":["../../src/shell/mobile-nav-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EAGd,YAAY,EAEZ,cAAc,EACf,MAAM,aAAa,CAAA;AAGpB,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC,iGAAiG;AACjG,eAAO,MAAM,eAAe,WAAW,CAAA;AAEvC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,GAAG,MAAM,CAQjF;AA4VD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,cAAc,CA8EhB"}
@@ -9,7 +9,6 @@ function blockRowCount(blocks) {
9
9
  return block.kind !== "list" || block.items.length > 0;
10
10
  }).length;
11
11
  }
12
- const DEV = process.env["NODE_ENV"] !== "production";
13
12
  function placementOf(item, sectionHidden) {
14
13
  if (sectionHidden) return "hidden";
15
14
  const mobile = item.mobile;
@@ -149,7 +148,7 @@ function buildCandidates(sections, config, maxTabs, menuMax) {
149
148
  }
150
149
  const tabbable = (item) => {
151
150
  if (!item.disabled) return true;
152
- if (DEV) {
151
+ if (process.env.NODE_ENV !== "production") {
153
152
  console.warn(
154
153
  `[basalt] MobileNav: "${item.key}" asks for a bar slot but is disabled \u2014 a disabled destination never becomes a tab. It still renders, disabled, in the More surface.`
155
154
  );
@@ -169,7 +168,7 @@ function buildCandidates(sections, config, maxTabs, menuMax) {
169
168
  candidates2.push(sectionCandidate(section, menuMax));
170
169
  continue;
171
170
  }
172
- if (DEV) {
171
+ if (process.env.NODE_ENV !== "production") {
173
172
  console.warn(
174
173
  `[basalt] MobileNav: mobileNav.tabs names "${id}", which is neither a destination key nor a visible section label \u2014 ignoring it.`
175
174
  );
@@ -232,7 +231,7 @@ function projectMobileNav(sections, opts) {
232
231
  const limit = needsMore ? maxTabs - 1 : maxTabs;
233
232
  const kept = candidates.slice(0, limit);
234
233
  const dropped = candidates.slice(limit);
235
- if (DEV && dropped.length > 0) {
234
+ if (process.env.NODE_ENV !== "production" && dropped.length > 0) {
236
235
  console.warn(
237
236
  `[basalt] MobileNav: ${candidates.length} slot candidates for ${limit} available slot(s) \u2014 the last ${dropped.length} moved into the More surface: ${dropped.map((candidate) => `"${candidate.key}"`).join(", ")}. Raise mobileNav.maxTabs or drop a mobile: 'tab'.`
238
237
  );
@@ -1 +1 @@
1
- {"version":3,"file":"page-bar.d.ts","sourceRoot":"","sources":["../../src/shell/page-bar.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAWnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAK9D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AAKxD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gGAAgG;IAChG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB,CAAA;AAuDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB,GAAG,SAAS,CAsDZ;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAGlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAGtE;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IAC7C,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;CAC3B,CAaA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,WAAW,GACpC,eAAe,CAAC,WAAW,CAAC,GAAG;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,qGAAqG;IACrG,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IACrC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAmEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,EACV,IAAI,EACJ,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,YAAY,GAAG,SAAS,CAkM1B"}
1
+ {"version":3,"file":"page-bar.d.ts","sourceRoot":"","sources":["../../src/shell/page-bar.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAWnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAK9D,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AAExD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,gGAAgG;IAChG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB,CAAA;AAuDD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;IACtC,QAAQ,EAAE,SAAS,CAAA;CACpB,GAAG,SAAS,CAsDZ;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAGlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAGtE;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IAC7C,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;CAC3B,CAaA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,WAAW,GACpC,eAAe,CAAC,WAAW,CAAC,GAAG;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,qGAAqG;IACrG,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;IACrC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAmEH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,EACV,IAAI,EACJ,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,YAAY,GAAG,SAAS,CAkM1B"}
@@ -16,7 +16,6 @@ import { useIsomorphicLayoutEffect } from "../common/isomorphic-layout-effect.js
16
16
  import classes from "./page-bar.module.css";
17
17
  import asideClasses from "./page-aside.module.css";
18
18
  const PAGE_BAR_HEIGHT_VAR = "--basalt-page-bar-h";
19
- const DEV = process.env["NODE_ENV"] !== "production";
20
19
  const NO_SLOTS = {
21
20
  target: null,
22
21
  setTarget: () => {
@@ -101,7 +100,7 @@ function useAsidePanelSlot() {
101
100
  setSettled(true);
102
101
  }, []);
103
102
  useEffect(() => {
104
- if (!DEV || !settled || !inShell || panelHost) return;
103
+ if (process.env.NODE_ENV === "production" || !settled || !inShell || panelHost) return;
105
104
  console.warn(
106
105
  "[basalt] PageAside: this page's PageBar renders no row 2 (no `tabs`, no `filters`, no `filtersEnd`), so below `sm` there is no pill to open the aside \u2014 it renders in flow at the bottom of the page instead. Give the bar a row 2, or expect the in-flow form on a phone."
107
106
  );
@@ -203,7 +203,7 @@ export declare const SURFACES: {
203
203
  readonly layer: "headless";
204
204
  readonly rule: "tokens";
205
205
  readonly skill: readonly ["basalt-design", "basalt-charts"];
206
- readonly guardKinds: readonly ["raw-hex", "raw-color-fn", "off-identity-accent", "off-system-surface-var", "raw-font-family", "raw-radius", "raw-surface", "inline-font-size", "css-raw-surface", "surface-shadow-override", "theme-allow-unscoped"];
206
+ readonly guardKinds: readonly ["raw-hex", "raw-color-fn", "off-identity-accent", "off-system-surface-var", "raw-font-family", "raw-radius", "raw-surface", "inline-font-size", "css-raw-surface", "surface-shadow-override", "unknown-vx-token", "theme-allow-unscoped"];
207
207
  readonly pluginRules: readonly ["no-raw-font-size", "raw-size-literal", "token-layer-boundary"];
208
208
  readonly description: "VX token refs, buildPaletteCss, defineSeries, seriesTokens, groupTokens, alpha (Mantine-free)";
209
209
  readonly globs: {
@@ -1 +1 @@
1
- {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../src/surfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surfaces.d.ts","sourceRoot":"","sources":["../src/surfaces.ts"],"names":[],"mappings":"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"}
package/dist/surfaces.js CHANGED
@@ -160,6 +160,8 @@ const SURFACES = {
160
160
  "inline-font-size",
161
161
  "css-raw-surface",
162
162
  "surface-shadow-override",
163
+ // A `var(--vx-*)` naming a token basalt no longer (or never) emits.
164
+ "unknown-vx-token",
163
165
  // Not a token kind — the kind that judges the ANNOTATION rather than the code. It lands here
164
166
  // because `agent/rules/basalt-tokens.md` is where the `theme-allow` grammar is documented
165
167
  // (said once, on purpose), so this is the header that must name its enforcement.
@@ -16,7 +16,7 @@ export { deriveRadius } from './palette.js';
16
16
  export type { RadiusValues } from './palette.js';
17
17
  export { deriveSpacing } from './palette.js';
18
18
  export type { SpaceValues } from './palette.js';
19
- export { CONTAINER_CLASSES, resolveContainerClass, SIZE_CLASSES } from './size-classes.js';
19
+ export { CONTAINER_CLASSES, CONTAINER_GRID_BREAKPOINTS, resolveContainerClass, SIZE_CLASSES, } from './size-classes.js';
20
20
  export type { ContainerClass } from './size-classes.js';
21
21
  /** A per-theme color pair: a hue keeps its identity but shifts shade across schemes. */
22
22
  export type ColorPair = {
@@ -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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"}
@@ -14,7 +14,12 @@ import { BP, p } from "./palette.js";
14
14
  import { DEFAULT_DERIVE_CONFIG, deriveTokens, resolveDeriveConfig } from "./derive.js";
15
15
  import { deriveRadius } from "./palette.js";
16
16
  import { deriveSpacing } from "./palette.js";
17
- import { CONTAINER_CLASSES, resolveContainerClass, SIZE_CLASSES as SIZE_CLASSES2 } from "./size-classes.js";
17
+ import {
18
+ CONTAINER_CLASSES,
19
+ CONTAINER_GRID_BREAKPOINTS,
20
+ resolveContainerClass,
21
+ SIZE_CLASSES as SIZE_CLASSES2
22
+ } from "./size-classes.js";
18
23
  const alpha = (token, a) => `color-mix(in srgb, ${token} ${Math.round(a * 100)}%, transparent)`;
19
24
  const TEXT = {
20
25
  nano: 10,
@@ -673,6 +678,7 @@ export {
673
678
  BP,
674
679
  BREAKPOINTS,
675
680
  CONTAINER_CLASSES,
681
+ CONTAINER_GRID_BREAKPOINTS,
676
682
  DEFAULT_DERIVE_CONFIG,
677
683
  SIZE_CLASSES2 as SIZE_CLASSES,
678
684
  VX,