Skip to main content

add-gallery-example

Add an example to the Unovis gallery — a per-framework example directory under packages/shared/examples, registered in examples-list.tsx, with light/dark previews. Use when asked to add a gallery example, showcase a chart in the gallery, or create the gallery entry that accompanies a new component.

Source facts

Repository
f5/unovis
Last source activity
July 28, 2026 at 22:21
Detected SKILL.md language
English
Stars
2,856
Forks
72

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-gallery-example
description
Add an example to the Unovis gallery — a per-framework example directory under packages/shared/examples, registered in examples-list.tsx, with light/dark previews. Use when asked to add a gallery example, showcase a chart in the gallery, or create the gallery entry that accompanies a new component.
# Adding a gallery example Examples live in **`packages/shared/examples/`** (consumed by both the website gallery and the multi-framework playground). The public guide `packages/website/contributing/guides/gallery-examples.mdx` covers the same ground in prose. ## 1. Create `packages/shared/examples/<slug>/` `<slug>` is kebab-case (e.g. `basic-line-chart`). Add one implementation per framework plus data and index: ``` <slug>/ ├── data.ts # typed dataset: export const data = [...] ├── index.tsx # website metadata (template below) ├── <slug>.tsx # React ├── <slug>.ts # vanilla TypeScript (entry MUST be named exactly <slug>.ts) ├── <slug>-solid.tsx # Solid ├── <slug>.svelte # Svelte ├── <slug>.vue # Vue ├── <slug>.component.html # ┓ ├── <slug>.component.ts # ┠ Angular └── <slug>.module.ts # ┛ ``` Copy an existing example (e.g. `packages/shared/examples/basic-line-chart`) to get every framework file right. ## 2. `index.tsx` (current shape — includes all six frameworks) ```tsx /* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax, @typescript-eslint/no-var-requires */ import React from 'react' import type { Example } from '../types' const pathname = '<slug>' const example: Example = { component: () => { // eslint-disable-next-line @typescript-eslint/naming-convention const Component = require(`./${pathname}.tsx`).default return <Component /> }, pathname, title: '<Title referencing the component(s)>', description: '', codeReact: require(`!!raw-loader!./${pathname}.tsx`).default, codeSolid: require(`!!raw-loader!./${pathname}-solid.tsx`).default, codeTs: require(`!!raw-loader!./${pathname}.ts`).default, codeAngular: { html: require(`!!raw-loader!./${pathname}.component.html`).default, component: require(`!!raw-loader!./${pathname}.component.ts`).default, module: require(`!!raw-loader!./${pathname}.module.ts`).default, }, codeSvelte: require(`!!raw-loader!./${pathname}.svelte`).default, codeVue: require(`!!raw-loader!./${pathname}.vue`).default, data: require('!!raw-loader!./data').default, preview: require(`../_previews/${pathname}.png`).default, previewDark: require(`../_previews/${pathname}-dark.png`).default, } export default example ``` - `pathname` must equal the directory name. - `title` references the library component(s) used; `description` can be `''` or JSX with cited data sources. ## 3. Register in `examples-list.tsx` Add `require('./<slug>').default` to the appropriate category's `examples` array in `packages/shared/examples/examples-list.tsx` (or add a new category object). This drives the website gallery ordering. ## 4. Add previews Add light + dark screenshots to `packages/shared/examples/_previews/<slug>.png` and `packages/shared/examples/_previews/<slug>-dark.png`. ## 5. Verify every framework - **Multi-framework playground:** `pnpm dev:gallery`, open the printed URL, pick your example in the sidebar. It mounts React, Vue, Solid, Svelte, and vanilla TS side by side. **No manual registration** — examples are auto-discovered from `packages/shared/examples/*` by Vite globs. The TS panel only mounts a file named exactly `<slug>.ts`; `data.ts`/`types.ts` are treated as helpers. (Angular is not in this playground — verify Angular on the website.) - **Website:** `pnpm website` (http://localhost:9300), navigate to your example; the page shows the rendered React example plus the code for every framework. Commit per `/commit` (gallery work → `Shared | Gallery:` or, alongside a component, the `Website: <Name> docs and gallery example` commit) and open the PR with `/open-pr`.
View on GitHub