Adding an example to the Gallery
We welcome anyone to submit an example to our gallery.
Overview
Add your example to the website in the directory packages/website/src/examples. Before submitting
a pull request, make sure you have done the following:
- Made a directory with all of the required files
- Updated the list of examples in
examples-list.tsxto include yours - Added light and dark screenshots of your example to the
_previewsdirectory aspngfiles - Verified the example works in each of our supported UI frameworks (how-to guide here)
Required Files
Your directory should be called your-example-name. In it, you will need to have files for all
of our supported UI frameworks (angular, react, svelte and vanilla typescript) as well as a data
and index file. The structure looks like:
your-example
├── data.ts
├── index.tsx
├── your-example.component.html # ┓
├── your-example.component.ts # ┠ angular
├── your-example.module.ts # ┛
├── your-example.svelte # svelte
├── your-example.ts # typescript
├── your-example.tsx # react
What to include in index.tsx
All example index files look roughly the same, you will just need to fill in the highlighted lines. You can copy and paste the following:
/* eslint-disable import/no-unresolved, import/no-webpack-loader-syntax, @typescript-eslint/no-var-requires */
import React from 'react'
import BrowserOnly from '@docusaurus/BrowserOnly'
import { Example } from '@site/src/types/example'
const pathname = ''
const example: Example = {
component: () => <BrowserOnly>{() => {
// eslint-disable-next-line @typescript-eslint/naming-convention
const Component = require(`./${pathname}.tsx`).default
return <Component />
}}</BrowserOnly>,
pathname,
title: '',
description: <div></div>,
codeReact: require(`!!raw-loader!./${pathname}.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,
data: require('!!raw-loader!./data').default,
preview: require(`../_previews/${pathname}.png`).default,
previewDark: require(`../_previews/${pathname}-dark.png`).default,
}
export default example
- pathname should correspond to your directory name
- title should reference the library component(s) your using
- description should be a brief description of your visualization with any data sources cited
Testing each framework
Before you submit a pull request, be sure you have verified that the example works for each
framework on your local machine. In the packages/website directory, you can view your example
by following the steps below:
React
- Run the command
npm run start
- Open localhost:9300 and navigate to your example's page
TypeScript
Same steps above, but add &ts to the end of the url.
Svelte
- Add your example's
sveltefile path to theimportsarray insrc-demo/svelte-gallery.svelte - From the terminal, run the command
cd packages/svelte
npm run gallery
Vue
- Add your example's
vuefile path to theimportsarray insrc-demo/App.vue - From the terminal, run the command
cd packages/vue
npm run gallery
Solid
- Add your example's
-solid.tsxfile path to theimportsarray insrc-demo/app.tsx - From the terminal, run the command
cd packages/solid
npm run gallery
Angular
- Import your angular module in
gallery/src/main.ts - Add the imported module to the
importsfield in theNgModuledecorator:
@NgModule({
declarations: [AppComponent],
imports: [... /* your angular module here */],
bootstrap: [AppComponent],
providers: [BrowserModule],
})
- Add the example component's selector to the
Componentdecorator'stemplatefield:
@Component({
selector: 'app-component',
template: `
...
<!-- your angular selector -->
`
})
- From the terminal, run the command
cd packages/angular
npm run gallery