@godxjp/ui 32.14.0 → 33.0.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 (39) hide show
  1. package/README.md +4 -4
  2. package/agent/START-HERE.md +7 -7
  3. package/agent/components/HeatmapChart.json +97 -0
  4. package/agent/components/Tabs.json +1 -1
  5. package/agent/components/Toolbar.json +2 -9
  6. package/agent/components-index.json +5 -0
  7. package/agent/components.json +100 -10
  8. package/agent/index.json +7 -7
  9. package/agent/llms.txt +6 -6
  10. package/agent/tokens.json +114 -6
  11. package/dist/components/charts/chart-summary.d.ts +32 -1
  12. package/dist/components/charts/chart-summary.js +49 -0
  13. package/dist/components/charts/heatmap-chart.d.ts +19 -0
  14. package/dist/components/charts/heatmap-chart.js +293 -0
  15. package/dist/components/charts/index.d.ts +3 -0
  16. package/dist/components/charts/index.js +2 -0
  17. package/dist/components/feedback/tooltip.d.ts +9 -0
  18. package/dist/components/feedback/tooltip.js +4 -1
  19. package/dist/components/navigation/index.d.ts +1 -1
  20. package/dist/components/navigation/toolbar.d.ts +2 -2
  21. package/dist/components/navigation/toolbar.js +0 -3
  22. package/dist/contracts/measurement.json +1 -1
  23. package/dist/i18n/messages/en.json +8 -1
  24. package/dist/i18n/messages/ja.json +8 -1
  25. package/dist/i18n/messages/vi.json +8 -1
  26. package/dist/props/components/charts.prop.d.ts +58 -0
  27. package/dist/props/components/navigation.prop.d.ts +10 -12
  28. package/dist/props/registry.d.ts +37 -5
  29. package/dist/props/registry.js +36 -5
  30. package/dist/styles/chart-layout.css +161 -0
  31. package/dist/styles/layers.json +8 -1
  32. package/dist/styles/layout.css +0 -33
  33. package/dist/styles.css +1 -1
  34. package/dist/tokens/components/chart.css +27 -0
  35. package/dist/tokens/components/navigation.css +0 -2
  36. package/dist/tokens/foundation.css +12 -0
  37. package/docs/migrations/v33.md +60 -0
  38. package/package.json +6 -2
  39. package/scripts/ui-audit.mjs +13 -0
@@ -46,3 +46,30 @@
46
46
 
47
47
  --chart-grid-line-dash: 3 3;
48
48
  }
49
+
50
+ :root {
51
+
52
+ --chart-heatmap-cell-size-xs: 1.5rem;
53
+ --chart-heatmap-cell-size-sm: 1.75rem;
54
+ --chart-heatmap-cell-size-md: 2rem;
55
+ --chart-heatmap-cell-size-lg: 2.5rem;
56
+
57
+ --chart-heatmap-cell-size: var(--chart-heatmap-cell-size-md);
58
+
59
+ --chart-heatmap-cell-gap: var(--stroke-md);
60
+ --chart-heatmap-cell-radius: initial;
61
+
62
+ --chart-heatmap-empty-border: initial;
63
+
64
+ --chart-heatmap-emphasis-border: initial;
65
+ --chart-heatmap-emphasis-width: var(--stroke-md);
66
+
67
+ --chart-heatmap-row-header-background: initial;
68
+ --chart-heatmap-tick-font-size: var(
69
+ --font-size-xs,
70
+ calc(var(--font-size-base) / var(--font-size-ratio))
71
+ );
72
+
73
+ --chart-heatmap-legend-swatch-size: var(--space-3);
74
+ --chart-heatmap-legend-gap: var(--space-2);
75
+ }
@@ -149,8 +149,6 @@
149
149
 
150
150
  --filter-bar-sticky-background: initial;
151
151
 
152
- --filter-bar-scroll-padding-y: var(--space-1);
153
-
154
152
  --filter-bar-search-width: 20rem;
155
153
  --filter-bar-filter-width: var(--filter-picker-width-md);
156
154
  --filter-bar-chip-gap: var(--space-2);
@@ -92,6 +92,12 @@
92
92
  --chart-5: #4c6cb3;
93
93
  --chart-6: #eb6101;
94
94
 
95
+ --chart-heat-1: #d6ebf8;
96
+ --chart-heat-2: #94c9ec;
97
+ --chart-heat-3: #4ea3dc;
98
+ --chart-heat-4: #0077c7;
99
+ --chart-heat-5: #004a7f;
100
+
95
101
  --disabled-opacity: 0.5;
96
102
 
97
103
  --radius: calc(0.375rem * var(--scaling));
@@ -385,4 +391,10 @@
385
391
 
386
392
  --chart-2: #008465;
387
393
  --chart-4: #d43b42;
394
+
395
+ --chart-heat-1: #173a52;
396
+ --chart-heat-2: #145f92;
397
+ --chart-heat-3: #2a88c9;
398
+ --chart-heat-4: #6db5e6;
399
+ --chart-heat-5: #bfe1f7;
388
400
  }
@@ -0,0 +1,60 @@
1
+ # Migrating to @godxjp/ui v33
2
+
3
+ Off-cycle approved: Pham Thai Duong 2026-10-15 — FilterBar overflow="scroll" taught consumers to build sideways-scrolling filter bars; removing it cannot wait for the next scheduled major.
4
+
5
+ v33 removes one thing: the horizontally scrolling filter bar. `FilterBar` (and its alias
6
+ `Toolbar`) no longer accepts an `overflow` prop. A filter bar now always wraps. All six packages
7
+ (`@godxjp/ui`, `@godxjp/ui-mcp`, `@godxjp/markdown`, `@godxjp/editor`, `@godxjp/block-editor` and
8
+ `@godxjp/chat`) move to 33.0.0 together.
9
+
10
+ ## Why
11
+
12
+ The library recommended `overflow="scroll"` for list pages with many filters and long Japanese,
13
+ English or Vietnamese labels. A consumer list page followed that advice, and the result was
14
+ measured at 1240px in Vietnamese: the filter strip was 1945px wide inside a 921px frame, the first
15
+ filter label was clipped at the inline-start edge, and the user had to scroll sideways to reach
16
+ filters they could not see. Leading products do not do this. GitHub, Linear, Gmail, Jira and
17
+ Shopify Polaris IndexFilters never scroll a filter bar sideways; they let it wrap, or they collapse
18
+ the rarely used filters behind a single "More filters" or "Add filter" control.
19
+
20
+ ## Breaking changes
21
+
22
+ ### FilterBar / Toolbar `overflow` is removed
23
+
24
+ - The `overflow` prop is gone from `FilterBar` and `Toolbar`, and the `FilterBarOverflowProp` type
25
+ is no longer exported. Passing `overflow` is now a TypeScript error.
26
+ - The strip no longer carries a `data-overflow` attribute, and the
27
+ `.ui-toolbar[data-overflow="scroll"]` rules are removed from the stylesheet.
28
+ - The bar always wraps: below 640px the filters stack in one column, from 640px up they flow onto
29
+ as many rows as they need. This is the behaviour the old default `overflow="wrap"` already had,
30
+ so a bar that never passed `overflow`, or passed `overflow="wrap"`, renders exactly as before.
31
+
32
+ ### Token `--filter-bar-scroll-padding-y` is removed
33
+
34
+ It only reserved the scrollbar gutter under the removed scroll strip. A theme that sets it can
35
+ delete the line; nothing reads it any more.
36
+
37
+ `Tabs overflow`, `Topbar overflow` and the chat attachments `overflow` are different components
38
+ and are unchanged.
39
+
40
+ ## How to upgrade
41
+
42
+ 1. Upgrade all six packages to 33.0.x together.
43
+ 2. Run `npx godxjp-ui audit <src>`. The new
44
+ `filter-bar-no-overflow` rule reports every `<FilterBar>` or `<Toolbar>` that still passes
45
+ `overflow`. The TypeScript build reports the same places.
46
+ 3. Delete the `overflow` prop at each place it reports. If a page used `overflow="scroll"` because
47
+ it has many filters, check how tall the wrapped bar is. When it takes more than two rows, keep
48
+ the few filters people use most in the bar and move the rest behind one "More filters" Button
49
+ that opens a Sheet holding them as `FilterBarGroup`s. The library has no dedicated component for
50
+ this; it is a composition of Button, Sheet and FilterBarGroup, and the applied filters can still
51
+ show as `chips` on the bar.
52
+ 4. Remove any page CSS that targeted `[data-overflow]` on the filter strip, and any theme line that
53
+ set `--filter-bar-scroll-padding-y`.
54
+ 5. Run `npx godxjp-ui sync-rules` and restart your coding agent so it stops recommending the
55
+ removed prop.
56
+
57
+ ## Support
58
+
59
+ v32 receives no further releases. A security fix for v32 is an owner exception, decided case by
60
+ case.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@godxjp/ui",
3
- "version": "32.14.0",
4
- "godxUiMcp": "32.14.0",
3
+ "version": "33.0.0",
4
+ "godxUiMcp": "33.0.0",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -125,6 +125,10 @@
125
125
  "types": "./dist/components/charts/compact-bar-trend.d.ts",
126
126
  "import": "./dist/components/charts/compact-bar-trend.js"
127
127
  },
128
+ "./charts/heatmap-chart": {
129
+ "types": "./dist/components/charts/heatmap-chart.d.ts",
130
+ "import": "./dist/components/charts/heatmap-chart.js"
131
+ },
128
132
  "./charts/line-chart": {
129
133
  "types": "./dist/components/charts/line-chart.d.ts",
130
134
  "import": "./dist/components/charts/line-chart.js"
@@ -477,6 +477,19 @@ const RULES = [
477
477
  message:
478
478
  "Abstract value components use onValueChange, not onChange. Reserve onChange for DOM events.",
479
479
  },
480
+ {
481
+ id: "filter-bar-no-overflow",
482
+ replacement: "the default wrapping FilterBar",
483
+ severity: "error",
484
+ spansElement: true,
485
+ // `overflow` was removed from FilterBar/Toolbar in 33.0.0. Its `scroll` value made the bar one
486
+ // horizontally scrolling strip — measured in a consumer at 1240px (vi): 1945px of filters in a
487
+ // 921px frame, the first label clipped. Tabs and Topbar keep their own `overflow`; only the
488
+ // filter bar's opening tag is matched (`<FilterBarGroup` and `<DataTable.Toolbar` are not).
489
+ test: new RegExp(`<(?:FilterBar|Toolbar)\\b${ATTRS}\\boverflow=`, "g"),
490
+ message:
491
+ "FilterBar/Toolbar has no `overflow` prop (removed in 33.0.0) — a filter bar wraps and never scrolls sideways. Delete the prop; with many filters keep the common ones in the bar and put the rest behind one 'More filters' Button that opens a Sheet.",
492
+ },
480
493
  {
481
494
  id: "no-arbitrary-hex",
482
495
  replacement: "a semantic token",