feat: enhance site visualization options and themes - #434
Conversation
|
✅ Preview is ready!
↩️ Previous: ⚡️ 🤖 Powered by surge-preview |
|||||||||||||||
There was a problem hiding this comment.
🟡 Changes recommended
The new tests include a TypeScript typing error in the crosshair mock and likely introduce a root-level test dependency on site-only packages (lucide-react) that can break pnpm test at the repo root.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR enhances GPT-Vis preview/presentation capabilities by adding multi-variant code display (JSON + DSL) and theme switching in the wrapper/site previews, while refining crosshair axis labels (precision + dual-axes right-Y alignment) and extending Funnel localization documentation/testing.
Changes:
- Add wrapper support for multiple code variants and theme switching; update site previews to pass both DSL and runnable JSON.
- Improve chart presentation: crosshair axis labels (precision + correct Y-scale/position for dual-axes) and updated theme tokens.
- Add Funnel
locale/conversionRateLabeldocs plus parser test coverage, and add automated JSON↔DSL consistency checks for site examples.
File summaries
| File | Description |
|---|---|
| src/vis/summary/index.ts | Allow Summary to render from either DSL string or { content, theme } object config. |
| src/vis/funnel/README.md | Document locale and conversionRateLabel and add a localized DSL example. |
| src/vis/dual-axes/index.ts | Bind crosshair axis labels to the line series and place Y label on the right axis; ensure cleanup on rerender/destroy. |
| src/vis-wrapper/styles.ts | Redesign wrapper toolbar/tab styles, add responsive and reduced-motion rules. |
| src/vis-wrapper/index.ts | Add code-variant navigation, code panel rendering via <pre><code>, and theme switcher wiring. |
| src/util/tokens.ts | Refine axis token colors for light/dark themes. |
| src/util/theme.ts | Adjust axis styling defaults (grid widths/dashes) and normalize theme mapping. |
| src/util/crosshair-axis-labels.ts | Add decimal precision limiting, better formatter handling, and support selecting Y-scale by field + right-axis label placement. |
| src/types/index.ts | Introduce VisualizationCodeVariant and extend options with codeVariants / themeOptions. |
| src/index.ts | Export new public types (VisualizationCodeVariant, SummaryObjectConfig). |
| src/gpt-vis/index.ts | Persist source config + preview theme; normalize requested theme for summary vs charts; pass code/theme options to wrapper and rerender on theme changes. |
| site/app/examples/page.tsx | Update gallery to pass both dsl and json into previews. |
| site/app/examples/examplesData/wordcloud.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/waterfall-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/venn-diagram.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/treemap.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/table.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/summary.ts | Store Summary DSL + runnable JSON object form for gallery and examples. |
| site/app/examples/examplesData/sankey-diagram.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/radar-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/pie-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/organization-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/network-graph.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/mindmap.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/liquid-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/indented-tree.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/funnel-chart.ts | Store galleryDsl + runnable galleryJson, add locale/conversionRateLabel to docs and new localized example pair. |
| site/app/examples/examplesData/flow-diagram.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/fishbone-diagram.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/dual-axes.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs and updated description for crosshair labels. |
| site/app/examples/examplesData/column-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs and new dense-label example pair. |
| site/app/examples/examplesData/bar-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/examplesData/area-chart.ts | Store galleryDsl + runnable galleryJson, plus per-example dsl/json pairs. |
| site/app/examples/[chart]/page.tsx | Update docs pages to pass dsl + json into wrapper previews. |
| site/app/docs/page.tsx | Update theme/custom palette preview snippets to use dsl prop. |
| site/app/components/ChartPreview.tsx | Accept both dsl and json, pass code variants + theme options into GPTVis wrapper previews. |
| site/app/components/Carousel/index.tsx | Update carousel previews to use dsl prop. |
| tests/site-examples.test.ts | Add consistency checks to ensure each site DSL example has equivalent runnable JSON. |
| tests/funnel.test.ts | Add parser coverage for Funnel locale and conversionRateLabel. |
| tests/crosshair-axis-labels.test.ts | Add unit tests for crosshair label precision and right-Y placement behavior. |
Review details
- Files reviewed: 45/45 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| import { describe, expect, it } from 'vitest'; | ||
| import { groupedExamplesData } from '../site/app/examples/examplesData'; | ||
| import { isVisSyntax, parse } from '../src/syntax/parser'; |
|
readme 和 skill 也需要更新 |
| }; | ||
|
|
||
| return <div ref={wrapperRef} className={`w-full min-h-[200px] ${className}`} style={style} />; | ||
| return ( |
There was a problem hiding this comment.
这里什么会变复杂?理论上时使用 gpt-vis 的 wrapper = true 就可以了。
Co-Authored-By: Claude <noreply@anthropic.com>

Summary
This PR improves GPT-Vis chart presentation and updates the website to support both JSON and DSL examples.
Changes
JSON and DSL examples
Theme preview
Chart presentation
Funnel documentation
localeandconversionRateLabeloptions.