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
@@ -49,9 +49,9 @@ export function DeltaBadge({
49
49
  height: 'auto',
50
50
  },
51
51
  label: {
52
- display: 'inline-flex', // theme-allow: Mantine Badge styles.label part — CSS-in-JS, not a layout node
52
+ display: 'inline-flex', // theme-allow inline-display — a Badge `styles.label` part, not a layout node Flex could replace
53
53
  alignItems: 'center',
54
- gap: 3, // theme-allow: sub-scale badge glyph-to-label gap, below the token scale
54
+ gap: 3, // theme-allow inline-spacing — sub-scale glyph-to-label gap, below the smallest scale stop
55
55
  fontFamily: 'var(--basalt-font-mono)',
56
56
  fontSize: VX.text.xs,
57
57
  fontWeight: 600,
@@ -66,7 +66,7 @@ export function DeltaBadge({
66
66
  {format(value)}
67
67
  {period && (
68
68
  <span
69
- style={{ marginLeft: 4, fontWeight: 500, opacity: 0.6 }} // theme-allow: sub-scale optical period offset, below the token scale
69
+ style={{ marginLeft: 4, fontWeight: 500, opacity: 0.6 }} // theme-allow inline-spacing — sub-scale optical period offset, below the smallest scale stop
70
70
  >
71
71
  {period}
72
72
  </span>
@@ -110,7 +110,7 @@ export function StatCard({
110
110
  // explicit for intent.
111
111
  padding: 'var(--mantine-spacing-xs) var(--mantine-spacing-sm)',
112
112
  minHeight: 118,
113
- display: 'flex', // theme-allow: Card root as a flex column — Mantine Card takes no layout props
113
+ display: 'flex', // theme-allow inline-display — Card root as a flex column; Mantine Card takes no layout props
114
114
  flexDirection: 'column',
115
115
  gap: 'var(--vx-space-stat-card-gap)',
116
116
  overflow: 'hidden',
@@ -126,10 +126,10 @@ export function BasaltVirtualList<T>({
126
126
 
127
127
  if (isLoading) {
128
128
  return (
129
- // theme-allow — matches the virtualizer's own scroll box below, so the skeleton doesn't reflow.
129
+ // theme-allow raw-scroll-container — matches the virtualizer's own scroll box below, so the skeleton doesn't reflow.
130
130
  <Box style={{ height, overflow: 'auto' }}>
131
131
  {Array.from({ length: skeletonRows }, (_, i) => (
132
- <div
132
+ <Box
133
133
  key={`skeleton-${i}`}
134
134
  style={{
135
135
  height: estimateSize,
@@ -144,7 +144,7 @@ export function BasaltVirtualList<T>({
144
144
  height={`calc(${estimateSize}px - 2 * var(--vx-space-virtual-row-inset-y))`}
145
145
  radius="sm"
146
146
  />
147
- </div>
147
+ </Box>
148
148
  ))}
149
149
  </Box>
150
150
  )
@@ -155,12 +155,12 @@ export function BasaltVirtualList<T>({
155
155
  ref={parentRef}
156
156
  style={{
157
157
  height,
158
- // theme-allow — TanStack Virtual measures this element as the scroll container.
158
+ // theme-allow raw-scroll-container — TanStack Virtual measures this element as the scroll container.
159
159
  overflow: 'auto',
160
160
  }}
161
161
  >
162
162
  {/* Inner sizer — defines total scroll height for the virtualizer */}
163
- <div
163
+ <Box
164
164
  style={{
165
165
  height: rowVirtualizer.getTotalSize(),
166
166
  position: 'relative',
@@ -170,7 +170,7 @@ export function BasaltVirtualList<T>({
170
170
  const item = items[virtualItem.index]
171
171
  if (item === undefined) return null
172
172
  return (
173
- <div
173
+ <Box
174
174
  key={virtualItem.key}
175
175
  style={{
176
176
  position: 'absolute',
@@ -182,10 +182,10 @@ export function BasaltVirtualList<T>({
182
182
  }}
183
183
  >
184
184
  {renderItem(item, virtualItem.index)}
185
- </div>
185
+ </Box>
186
186
  )
187
187
  })}
188
- </div>
188
+ </Box>
189
189
  </Box>
190
190
  )
191
191
  }