basalt-ui 1.32.1 → 1.34.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 (185) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +65 -0
  3. package/MIGRATING.md +218 -25
  4. package/README.md +3 -0
  5. package/agent/rules/basalt-state.md +2 -2
  6. package/agent/rules/basalt-tokens.md +1 -1
  7. package/agent/skills/basalt-app/SKILL.md +5 -3
  8. package/configs/oxlint-basalt.json +33 -0
  9. package/configs/oxlint-plugin.js +89 -67
  10. package/configs/oxlint-plugin.test.ts +224 -19
  11. package/configs/oxlint.json +2 -30
  12. package/dist/agent/coalesce.d.ts.map +1 -1
  13. package/dist/agent/coalesce.js +1 -2
  14. package/dist/agent/merge.d.ts.map +1 -1
  15. package/dist/agent/merge.js +1 -2
  16. package/dist/agent-chat/relative-time.d.ts +9 -0
  17. package/dist/agent-chat/relative-time.d.ts.map +1 -1
  18. package/dist/agent-chat/relative-time.js +1 -2
  19. package/dist/agent-chat/thread-message.d.ts.map +1 -1
  20. package/dist/agent-chat/thread-message.js +1 -2
  21. package/dist/charts/kinds/BandStrip.d.ts.map +1 -1
  22. package/dist/charts/kinds/BandStrip.js +3 -3
  23. package/dist/charts/kinds/Bars.d.ts.map +1 -1
  24. package/dist/charts/kinds/Bars.js +1 -2
  25. package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
  26. package/dist/charts/kinds/StackedArea.js +1 -2
  27. package/dist/charts/primitives/legend-disclosure.d.ts.map +1 -1
  28. package/dist/cli/audit-allows.d.ts +1 -1
  29. package/dist/cli/audit-allows.d.ts.map +1 -1
  30. package/dist/cli/audit-allows.js +4 -4
  31. package/dist/cli/check-theme.d.ts.map +1 -1
  32. package/dist/cli/check-theme.js +38 -38
  33. package/dist/cli/config.d.ts +197 -0
  34. package/dist/cli/config.d.ts.map +1 -0
  35. package/dist/cli/config.js +20 -0
  36. package/dist/cli/doctor.d.ts.map +1 -1
  37. package/dist/cli/doctor.js +4 -6
  38. package/dist/cli/guard-hook.d.ts.map +1 -1
  39. package/dist/cli/guard-hook.js +7 -41
  40. package/dist/cli/index.d.ts +31 -257
  41. package/dist/cli/index.d.ts.map +1 -1
  42. package/dist/cli/index.js +64 -37
  43. package/dist/cli/sync.d.ts.map +1 -1
  44. package/dist/cli/sync.js +7 -16
  45. package/dist/commands/define-commands.d.ts.map +1 -1
  46. package/dist/commands/define-commands.js +2 -2
  47. package/dist/commands/define-overlays.d.ts.map +1 -1
  48. package/dist/commands/define-overlays.js +1 -2
  49. package/dist/common/index.d.ts +0 -1
  50. package/dist/common/index.d.ts.map +1 -1
  51. package/dist/common/index.js +0 -2
  52. package/dist/common/validate.d.ts +2 -2
  53. package/dist/common/validate.d.ts.map +1 -1
  54. package/dist/common/validate.js +2 -3
  55. package/dist/common/vx-families.d.ts +7 -0
  56. package/dist/common/vx-families.d.ts.map +1 -0
  57. package/dist/common/vx-families.js +32 -0
  58. package/dist/common/vx-family.d.ts +11 -0
  59. package/dist/common/vx-family.d.ts.map +1 -0
  60. package/dist/common/vx-family.js +12 -0
  61. package/dist/content/article-card.d.ts.map +1 -1
  62. package/dist/content/article-card.js +4 -1
  63. package/dist/controls/enum-filter.d.ts.map +1 -1
  64. package/dist/controls/enum-filter.js +3 -13
  65. package/dist/controls/filter-pill.d.ts +8 -0
  66. package/dist/controls/filter-pill.d.ts.map +1 -1
  67. package/dist/controls/filter-pill.js +15 -0
  68. package/dist/controls/multi-select-filter.d.ts.map +1 -1
  69. package/dist/controls/multi-select-filter.js +3 -13
  70. package/dist/controls/number-filter.d.ts +3 -0
  71. package/dist/controls/number-filter.d.ts.map +1 -1
  72. package/dist/controls/number-filter.js +12 -4
  73. package/dist/controls/range-filter.d.ts.map +1 -1
  74. package/dist/controls/range-filter.js +1 -2
  75. package/dist/data/data-table.d.ts.map +1 -1
  76. package/dist/data/data-table.js +2 -3
  77. package/dist/guard/index.d.ts +17 -3
  78. package/dist/guard/index.d.ts.map +1 -1
  79. package/dist/guard/index.js +62 -23
  80. package/dist/guard/types.d.ts +3 -3
  81. package/dist/guard/types.d.ts.map +1 -1
  82. package/dist/guard/vx-names.d.ts +3 -0
  83. package/dist/guard/vx-names.d.ts.map +1 -0
  84. package/dist/guard/vx-names.js +257 -0
  85. package/dist/index.d.ts +1 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +0 -2
  88. package/dist/notifications/mount-guard.d.ts.map +1 -1
  89. package/dist/notifications/mount-guard.js +1 -2
  90. package/dist/provider/index.d.ts.map +1 -1
  91. package/dist/provider/index.js +2 -3
  92. package/dist/provider/lab-theme.d.ts +5 -4
  93. package/dist/provider/lab-theme.d.ts.map +1 -1
  94. package/dist/provider/lab-theme.js +1 -3
  95. package/dist/router-tanstack/search-store.d.ts +18 -0
  96. package/dist/router-tanstack/search-store.d.ts.map +1 -1
  97. package/dist/router-tanstack/search-store.js +33 -1
  98. package/dist/shell/app-mobile-nav.d.ts.map +1 -1
  99. package/dist/shell/app-mobile-nav.js +2 -1
  100. package/dist/shell/app-mobile-nav.module.css +12 -0
  101. package/dist/shell/app-sidebar.d.ts.map +1 -1
  102. package/dist/shell/app-sidebar.js +32 -36
  103. package/dist/shell/app-sidebar.module.css +6 -0
  104. package/dist/shell/index.d.ts +0 -1
  105. package/dist/shell/index.d.ts.map +1 -1
  106. package/dist/shell/index.js +0 -2
  107. package/dist/shell/mobile-nav-model.d.ts.map +1 -1
  108. package/dist/shell/mobile-nav-model.js +3 -4
  109. package/dist/shell/nav-glyph.d.ts +14 -0
  110. package/dist/shell/nav-glyph.d.ts.map +1 -0
  111. package/dist/shell/nav-glyph.js +21 -0
  112. package/dist/shell/nav-types.d.ts +1 -0
  113. package/dist/shell/nav-types.d.ts.map +1 -1
  114. package/dist/shell/page-bar.d.ts.map +1 -1
  115. package/dist/shell/page-bar.js +1 -2
  116. package/dist/shell/sidebar-search.d.ts.map +1 -1
  117. package/dist/shell/sidebar-search.js +1 -3
  118. package/dist/surfaces.d.ts +3 -3
  119. package/dist/surfaces.d.ts.map +1 -1
  120. package/dist/surfaces.js +4 -2
  121. package/dist/tokens/index.d.ts +1 -1
  122. package/dist/tokens/index.d.ts.map +1 -1
  123. package/dist/tokens/index.js +24 -2
  124. package/dist/tokens/size-classes.d.ts +25 -0
  125. package/dist/tokens/size-classes.d.ts.map +1 -1
  126. package/dist/tokens/size-classes.js +14 -0
  127. package/llms.txt +4 -4
  128. package/package.json +1 -1
  129. package/src/agent/coalesce.ts +1 -2
  130. package/src/agent/merge.ts +1 -2
  131. package/src/agent-chat/relative-time.ts +1 -2
  132. package/src/agent-chat/thread-message.tsx +2 -3
  133. package/src/charts/kinds/BandStrip.tsx +7 -3
  134. package/src/charts/kinds/Bars.tsx +1 -2
  135. package/src/charts/kinds/StackedArea.tsx +4 -2
  136. package/src/charts/primitives/legend-disclosure.tsx +1 -0
  137. package/src/cli/audit-allows.ts +10 -9
  138. package/src/cli/check-theme.ts +61 -39
  139. package/src/cli/config.ts +209 -0
  140. package/src/cli/doctor.ts +5 -7
  141. package/src/cli/guard-hook.ts +9 -42
  142. package/src/cli/index.ts +101 -294
  143. package/src/cli/sync.ts +7 -16
  144. package/src/commands/define-commands.ts +2 -2
  145. package/src/commands/define-overlays.ts +1 -2
  146. package/src/common/index.ts +0 -1
  147. package/src/common/validate.ts +4 -5
  148. package/src/common/vx-families.ts +36 -0
  149. package/src/common/vx-family.ts +22 -0
  150. package/src/content/article-card.tsx +1 -0
  151. package/src/controls/enum-filter.tsx +3 -13
  152. package/src/controls/filter-pill.tsx +20 -0
  153. package/src/controls/multi-select-filter.tsx +3 -13
  154. package/src/controls/number-filter.tsx +24 -3
  155. package/src/controls/range-filter.tsx +1 -2
  156. package/src/data/data-table.tsx +2 -3
  157. package/src/guard/index.ts +134 -47
  158. package/src/guard/types.ts +3 -2
  159. package/src/guard/vx-names.ts +257 -0
  160. package/src/index.ts +0 -2
  161. package/src/notifications/mount-guard.ts +1 -2
  162. package/src/provider/index.tsx +2 -3
  163. package/src/provider/lab-theme.ts +28 -21
  164. package/src/router-tanstack/search-store.ts +73 -1
  165. package/src/shell/app-mobile-nav.module.css +12 -0
  166. package/src/shell/app-mobile-nav.tsx +8 -1
  167. package/src/shell/app-sidebar.module.css +6 -0
  168. package/src/shell/app-sidebar.tsx +52 -50
  169. package/src/shell/index.tsx +0 -1
  170. package/src/shell/mobile-nav-model.ts +3 -5
  171. package/src/shell/nav-glyph.tsx +38 -0
  172. package/src/shell/nav-types.ts +1 -0
  173. package/src/shell/page-bar.tsx +1 -4
  174. package/src/shell/sidebar-search.tsx +1 -5
  175. package/src/surfaces.ts +4 -2
  176. package/src/tokens/index.ts +34 -2
  177. package/src/tokens/size-classes.ts +27 -0
  178. package/dist/common/is-dev.d.ts +0 -3
  179. package/dist/common/is-dev.d.ts.map +0 -1
  180. package/dist/common/is-dev.js +0 -6
  181. package/dist/shell/use-breakpoint.d.ts +0 -10
  182. package/dist/shell/use-breakpoint.d.ts.map +0 -1
  183. package/dist/shell/use-breakpoint.js +0 -11
  184. package/src/common/is-dev.ts +0 -4
  185. package/src/shell/use-breakpoint.ts +0 -37
@@ -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
+ };
package/dist/index.d.ts CHANGED
@@ -29,7 +29,7 @@ export { ThemeToggle, type ThemeToggleProps } from './theme/theme-toggle.js';
29
29
  */
30
30
  export { ActionGroup, type BarAction, type ActionGroupProps, type GlobalAction, } from './controls/actions.js';
31
31
  export { MOTION_DURATION, MOTION_SPRING, MOTION_EASE_STANDARD } from './common/motion.js';
32
- export { BasaltShell, NavCountBadge, type NavCountBadgeProps, AppSidebar, SidebarSearch, type SidebarSearchProps, type SidebarSearchConfig, type SidebarSearchActions, SidebarAccount, MobileNav, type MobileNavProps, projectMobileNav, type ProjectMobileNavOptions, MOBILE_MAX_TABS_DEFAULT, MOBILE_MENU_MAX_DEFAULT, MOBILE_MORE_KEY, AppBreadcrumbs, type AppBreadcrumbsProps, PageBar, type PageBarProps, type PageBarSlot, PageAside, type PageAsideProps, type PageAsideSlot, useBreakpoint, type BreakpointName, useSizeClass, type SizeClass, PageTitle, type PageTitleProps, type PageTitleSlot, type SidebarSection, type SidebarItem, type SidebarBlock, type SidebarBlockItem, type SidebarBlockTone, type SidebarListBlock, type SidebarProgressBlock, type SidebarCustomBlock, type NavAnchor, type NavAnchorProps, type NavMobilePlacement, type NavSectionMobile, type MobileNavConfig, type MobileNavGroup, type MobileNavModel, type MobileNavSlot, type MobileNavSurface, type BasaltShellProps, type BrandConfig, type SettingsMenuItem, type AppSidebarProps, type AccountBadgeTone, type BasaltIdentity, type BasaltRole, type BasaltPlan, type AccountMenuItem, type BasaltAccountState, type BasaltAccountActions, type BasaltAccountProps, } from './shell/index.js';
32
+ export { BasaltShell, NavCountBadge, type NavCountBadgeProps, AppSidebar, SidebarSearch, type SidebarSearchProps, type SidebarSearchConfig, type SidebarSearchActions, SidebarAccount, MobileNav, type MobileNavProps, projectMobileNav, type ProjectMobileNavOptions, MOBILE_MAX_TABS_DEFAULT, MOBILE_MENU_MAX_DEFAULT, MOBILE_MORE_KEY, AppBreadcrumbs, type AppBreadcrumbsProps, PageBar, type PageBarProps, type PageBarSlot, PageAside, type PageAsideProps, type PageAsideSlot, useSizeClass, type SizeClass, PageTitle, type PageTitleProps, type PageTitleSlot, type SidebarSection, type SidebarItem, type SidebarBlock, type SidebarBlockItem, type SidebarBlockTone, type SidebarListBlock, type SidebarProgressBlock, type SidebarCustomBlock, type NavAnchor, type NavAnchorProps, type NavMobilePlacement, type NavSectionMobile, type MobileNavConfig, type MobileNavGroup, type MobileNavModel, type MobileNavSlot, type MobileNavSurface, type BasaltShellProps, type BrandConfig, type SettingsMenuItem, type AppSidebarProps, type AccountBadgeTone, type BasaltIdentity, type BasaltRole, type BasaltPlan, type AccountMenuItem, type BasaltAccountState, type BasaltAccountActions, type BasaltAccountProps, } from './shell/index.js';
33
33
  export { type BasaltRegister, type Slot, type Series, type SeriesKey, type AsyncState, assertNever, type StandardSchemaV1, } from './register.js';
34
34
  export { createPersistedState, type PersistedStateOptions, readPersistedValue, createLocalStore, type LocalStore, type AnyField, type BooleanField, type EnumField, type FieldFallback, type FieldHandle, type FieldLane, type FieldOption, type FieldSetOptions, type FieldValue, type MultiField, type NumberField, type RangeField, type RangeParams, type RangePresets, type RangeValue, type RangeWindow, type RangeWindows, type ResolvedLane, type ResolveLane, type SearchValues, type StoredValues, type StringField, } from './state.js';
35
35
  export { WidgetHeader, type WidgetHeaderDeltaProps, type WidgetHeaderMetricProps, type WidgetHeaderProps, type WidgetHeaderSlot, type WidgetHeaderTier, type WidgetHeaderTitleProps, DeltaBadge, type DeltaBadgeProps, type DeltaPolarity, Section, type SectionProps, type SectionSlot, StatCard, type StatCardBreakdownRow, type StatCardProps, type StatCardSlot, type StatCardTone, WidgetGrid, type WidgetGridCols, type WidgetGridItemProps, type WidgetGridProps, StatGroup, type StatGroupCols, type StatGroupProps, EmptyState, type EmptyStateProps, type EmptyStateSlot, SettingsSection, type SettingsSectionProps, type SettingsSectionSlot, SettingsRow, type SettingsRowProps, type SettingsRowSlot, DangerZone, type DangerZoneProps, QueryState, type QueryStateProps, type QueryStateLike, type QueryStateSlot, type QueryStateTier, type QueryEmptyCopy, LoadingState, type LoadingStateProps, ErrorState, type ErrorStateProps, } from './dashboard/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -29,7 +29,6 @@ import {
29
29
  AppBreadcrumbs,
30
30
  PageBar,
31
31
  PageAside,
32
- useBreakpoint,
33
32
  useSizeClass,
34
33
  PageTitle
35
34
  } from "./shell/index.js";
@@ -151,7 +150,6 @@ export {
151
150
  unwrap,
152
151
  useAgentThreadRuns,
153
152
  useBasaltSpacing,
154
- useBreakpoint,
155
153
  useConnectivity,
156
154
  useSizeClass
157
155
  };
@@ -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":"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,EAKb,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAoB/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;AAwGD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAE/E;AA6ED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,cAAc,GAAG,YAAY,CA2hB/B"}
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,EAKb,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;AAwGD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,CAE/E;AA6ED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,KAAK,GACN,EAAE,cAAc,GAAG,YAAY,CAiiB/B"}
@@ -6,6 +6,7 @@ import { cx } from "../common/props.js";
6
6
  import { assertRequiredProps } from "../common/validate.js";
7
7
  import { SCROLLPORT_ATTRIBUTE } from "../common/scroll-parent.js";
8
8
  import { NavCountBadge } from "./nav-count-badge.js";
9
+ import { hasIcon, initialGlyph } from "./nav-glyph.js";
9
10
  import { SidebarBlockToneDot } from "./sidebar-blocks.js";
10
11
  import { sidebarBlockMobile } from "./sidebar-block-model.js";
11
12
  import { useBasaltSpacing } from "../theme/index.js";
@@ -240,7 +241,7 @@ function MobileNav({
240
241
  const hasCount = (slot) => slot.kind === "link" ? Boolean(slot.item.count) : slot.groups.some((g) => groupHasCount(g.items));
241
242
  const tabInner = (slot) => /* @__PURE__ */ jsxs(Fragment, { children: [
242
243
  /* @__PURE__ */ jsxs("span", { className: classes.tabIcon, children: [
243
- slot.icon ?? (slot.kind !== "link" && slot.isMore ? /* @__PURE__ */ jsx(IconMore, {}) : null),
244
+ hasIcon(slot.icon) ? slot.icon : slot.kind !== "link" && slot.isMore ? /* @__PURE__ */ jsx(IconMore, {}) : initialGlyph(slot.short),
244
245
  hasCount(slot) ? /* @__PURE__ */ jsx("span", { className: classes.tabDot, "aria-hidden": true }) : null
245
246
  ] }),
246
247
  /* @__PURE__ */ jsx(Text, { className: classes.label, children: slot.short })
@@ -69,6 +69,18 @@
69
69
  height: var(--vx-space-mobile-nav-icon-size);
70
70
  }
71
71
 
72
+ /* The first-letter fallback for an icon-less slot (`nav-glyph.tsx`) sits in the same icon-size box
73
+ * an svg gets, so the pill's height does not depend on the glyph's line box. */
74
+ .tabIcon > [data-nav-glyph] {
75
+ display: inline-flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ width: var(--vx-space-mobile-nav-icon-size);
79
+ height: var(--vx-space-mobile-nav-icon-size);
80
+ line-height: 1;
81
+ font-weight: 600;
82
+ }
83
+
72
84
  .tab:active .tabIcon {
73
85
  transform: scale(0.9);
74
86
  }
@@ -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;AAG5E,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;AA4SD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAwKhD"}
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;AA6SD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAwKhD"}