Skip to content

feat: glass and portal subpaths, and capped chart axis labels - #244

Merged
Khalidabdi1 merged 3 commits into
panel-ui:mainfrom
danestves:feat/upstream-outlayr-patch
Oct 18, 2026
Merged

Khalidabdi1 merged 3 commits into
panel-ui:mainfrom
danestves:feat/upstream-outlayr-patch

Conversation

@danestves

@danestves danestves commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Two fixes an app was carrying as a local patch against 0.112.0.

Glass and Portal had no subpath. An app importing by subpath had to fall back to the root entry for useGlassMaterial and PortalHost/PortalProvider, which loads every component. Both modules are already root-public, so they are added as leaves in generate-subpath-exports.mjs and the exports map is regenerated. The subpath test and the README's leaf list are updated to match.

Axis labels outgrew their gutters at large text sizes. Axis labels sit in fixed-width gutters at fixed steps, so at the accessibility text sizes they overlapped each other or clipped. A shared CHART_AXIS_MAX_FONT_SCALE (1.353, iOS's largest size before the accessibility range) in primitives/chart-accessibility.ts now caps every axis label in all 13 charts: area, bar, bubble, bump, candlestick, heatmap, line, live-line, mirror-area, plot, pyramid, scatter and waterfall. Screen readers still get the values through each chart's accessibility data. Tooltips, headers and legends are untouched.

Verified with typecheck, build, npm test, docs:generate (no drift) and verify:package. Not checked on a device.


Changes made by Claude Opus 5.5 (claude-opus-5-5) running in Claude Code.

Summary by CodeRabbit

  • Accessibility
    • Chart axis labels across chart types now support system text scaling up to a consistent maximum.
    • Heatmap axis sizing adjusts with text scale, and weekday labels remain on one line.
  • Package Exports
    • Added public entry points for the Glass and Portal primitives.
  • Documentation
    • Clarified that heatmap Y-axis width defaults to 26 and can expand with system text size.

danestves and others added 2 commits October 18, 2026 10:40
An app importing by subpath had to fall back to the root entry for
useGlassMaterial and PortalHost, which loads the whole library.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Axis labels sit in fixed-width gutters at fixed steps, so at the
accessibility text sizes they overlapped each other or clipped. Every
chart axis now caps its labels at iOS's largest non-accessibility size
(1.353x). The values stay available to screen readers through each
chart's accessibility data.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 66470d57-fd62-49fd-a243-397c0503a8a8
📥 Commits

Reviewing files that changed from the base of the PR and between 4840901 and 3afc0f2.

📒 Files selected for processing: 5
  • apps/docs/content/docs/charts/heatmap-chart.mdx
  • apps/docs/public/r/heatmap-chart.json
  • apps/docs/public/skills/panelui/components/heatmap-chart.md
  • packages/panelui/src/components/heatmap-chart/index.tsx
  • skills/panelui/components/heatmap-chart.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

📝 Walkthrough

Chart axis labels now use a shared maximum font-scale value. The heatmap chart adjusts axis dimensions for system font scale. The package also adds glass and portal primitive subpath exports and updates the generated export list, tests, and README.

Changes: Chart axis font scaling

Layer / File(s) Summary
Shared axis font-scale value
packages/panelui/src/primitives/chart-accessibility.ts, apps/docs/public/r/chart-accessibility.json
Adds CHART_AXIS_MAX_FONT_SCALE with a value of 1.353.
Chart component axis labels
packages/panelui/src/components/*-chart/index.tsx, packages/panelui/src/components/plot/index.tsx
Chart axis labels use the shared value as maxFontSizeMultiplier.
Heatmap axis sizing
packages/panelui/src/components/heatmap-chart/index.tsx, apps/docs/public/r/heatmap-chart.json, apps/docs/content/docs/charts/heatmap-chart.mdx, apps/docs/public/skills/panelui/components/heatmap-chart.md, skills/panelui/components/heatmap-chart.md
The heatmap chart scales axis dimensions with system font scale. Its default y-axis width expands with system text size, and the documentation describes this behavior.
Chart registry sources
apps/docs/public/r/*-chart.json, apps/docs/public/r/index.json
Registry chart sources apply the axis-label limit. The live-line-chart registry entry adds the chart-accessibility dependency.

Primitive subpath exports

Layer / File(s) Summary
Glass and portal subpath exports
packages/panelui/package.json, packages/panelui/scripts/generate-subpath-exports.mjs, packages/panelui/test/subpath-exports.test.mjs, packages/panelui/README.md
Adds glass and portal to package exports, generated subpaths, export tests, and the documented primitive subpaths.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Suggested reviewers: khalidabdi1

Merge Risk: ⚪ Minimal · up to 3afc0

The chart-axis changes apply a consistent cap while preserving accessibility data, and the Glass and Portal exports map to package files produced and included by the build. No material merge-blocking issue was identified.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes both primary changes: adding Glass and Portal subpath exports and capping chart axis label scaling.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 27 functions across 16 files. (4 skipped: …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 27 functions across 16 files. (4 skipped: 4 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

The heatmap's gutters are only just big enough for its labels at the
default size: a 26px weekday column and a 16px month row. At the axis
cap a weekday no longer fits, so "Tue" wrapped onto two lines and the
month row ran into the first row of cells.

Both gutters, and the offset that centres a weekday on its row, now
scale by the same capped factor as the labels. They only grow above the
default text size, so the default and smaller sizes lay out exactly as
before. A weekday label is also held to one line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Khalidabdi1
Khalidabdi1 merged commit 49ac51d into panel-ui:main Oct 18, 2026
3 checks passed
@Khalidabdi1

Copy link
Copy Markdown
Contributor

Merged — thanks @danestves, and welcome back! Really good to see you contributing again.

Both fixes checked out on the simulator: the axis labels now fit at the largest text sizes, and nothing moves at the default size. The heatmap's gutters were tighter than the cap allowed (weekdays wrapped and the months ran into the cells), so I pushed a small follow-up that grows them with the labels. These will go out in the next release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants