Big News: Socket Selected for OpenAI's Cybersecurity Grant Program.Details
Socket
Book a DemoSign in
Socket

@pxtrn/storybook-addon-docs-stencil

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pxtrn/storybook-addon-docs-stencil

Converts stencil.js JsonDoc to storybook ArgTypes

latest
Source
npmnpm
Version
8.0.0
Version published
Weekly downloads
3K
-5.26%
Maintainers
1
Weekly downloads
 
Created
Source

storybook-addon-docs-stencil

Converts stencil.js doc json derived from stencils output target docs-json to storybook ArgTypes.

With this addon activated

  • Storybook will render basic controls for properties Controls.
  • Storybook will auto generate documentation for Props, Events, Methods, Slots, Shadow Parts and Custom Properties.
  • Storybook doc page will contain stencils component documentation (readme.md or inline)

Installation

npm i -D @pxtrn/storybook-addon-docs-stencil

Usage

Configure stencil to generate docs-json at build time.

// stencil.config.ts

import { Config } from '@stencil/core';

export const config: Config = {
  outputTargets: [
    {
      type: 'docs-json',
      file: 'path/to/docs.json'
    }
  ]
};

Configure Storybook

//.storybook/main.js

module.exports = {
  addons: [
    '@storybook/addon-essentials',
    '@pxtrn/storybook-addon-docs-stencil',
  ],
};
//.storybook/preview.js

import { setStencilDocJson } from '@pxtrn/storybook-addon-docs-stencil';
import docJson from 'path/to/docs.json';
if (docJson) setStencilDocJson(docJson);

export const parameters = {
  controls: { hideNoControlsWarning: true },
};

Configure the argTypes extractor

//.storybook/preview.js

import { extractArgTypesFactory } from '@pxtrn/storybook-addon-docs-stencil';

/** @type { import('@pxtrn/storybook-addon-docs-stencil').ExtractArgTypesOptions } */
const options = {
  excludeCategories: 'porperties',
  controlsFor: 'attributes',
  eventNameing: 'jsx',
};

export const parameters = {
  docs: {
    extractArgTypes: extractArgTypesFactory(options),
  },
};

ExtractArgTypesOptions

  • excludeCategories: Category[]: categories to exclude from argTypes and docs (default: ['attributes]).
  • controlsFor: 'attributes' | 'properties': for wich category to render controls.
  • eventNameing: 'native' | 'jsx': nameing of the arg key for events (default: 'native'). If jsx the args can be spread <my-component {...args} /> when using JSX to render stories.

Default render method

When using @storybook/web-components or @storybook/html as renderer args and actions do not get bound automatically. This addon includes an optional default renderer that works out of the box

//.storybook/preview.js

import {
  extractArgTypesFactory,
  stencilRender,
} from '@pxtrn/storybook-addon-docs-stencil';

/** @type { import('@storybook/web-components').Preview } */
const preview = {
  render: stencilRender(),
};

export default preview;

stencilRender can be configured by these options:

  • eventNameing: 'native' | 'jsx': use the same nameing used in ExtractArgTypesOptions (default: 'native)
  • bindEvents: boolean: wheter events/actions should be bound (default: true)

eg:

stencilRender({ bindEvents: false });

Component documentation

readme.md

If not already created by stencil create src/components/my-component/readme.md If the line <!-- Auto Generated Below --> is not present, stencil will ignore this file.

Everything above this line will be included in storybook

<!-- Auto Generated Below -->

inline documentation

// src/components/my-component/my-component.tsx`

/**
 * Everything written here will be included, if readme.md is not present.
 */
@Component({
  tag: 'my-component',
  styleUrl: 'my-component.css',
  shadow: true,
})

If you prefere the inline documentation over the readme, see issue #15.

Troubleshooting

Hint your component in your stories
// your-story.ts

export default {
  title: 'My Component',
  component: 'my-component',
};

Breaking Changes in v7

  • attributes and properties are now shown as own categories, before both where visible under "props" with some inconsitency in naming (dashCase vs camelCase). Use excludeCategories to configure which categories are shown.
  • removed configuration dashCase properties and attributes are now shown in single sections. Use controlsFor and excludeCategories instead of dashCase.

FAQs

Package last updated on 12 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts