@anansi/storybook 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # Storybook for HTML
2
+
3
+ ---
4
+
5
+ Storybook for HTML is a UI development environment for your plain HTML snippets.
6
+ With it, you can visualize different states of your UI components and develop them interactively.
7
+
8
+ ![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif)
9
+
10
+ Storybook runs outside of your app.
11
+ So you can develop UI components in isolation without worrying about app specific dependencies and requirements.
12
+
13
+ ## Getting Started
14
+
15
+ If you already have an existing Anansi project
16
+
17
+ ```sh
18
+ cd my-app
19
+ anansi add storybook
20
+ ```
21
+
22
+ For new projects
23
+
24
+ ```bash
25
+ npm install -g @anansi/cli
26
+ ```
27
+
28
+ Then generate your new project:
29
+
30
+ ```bash
31
+ anansi hatch my-app-name
32
+ ```
33
+
34
+ ### Typescript
35
+
36
+ `npx sb init` will select `.ts` starter stories if your `package.json` has typescript as a dependency. If starting a new project,
37
+ run `npm init` and `npm install typescript --save-dev` before initializing storybook to get the typescript starter stories.
38
+
39
+ ---
40
+
41
+ Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish.
42
+ You can also build a [static version](https://storybook.js.org/docs/html/sharing/publish-storybook) of your Storybook and deploy it anywhere you want.
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdHlwZXMuanMnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVk7QUFBQyJ9
@@ -0,0 +1,8 @@
1
+ import type { PresetProperty, Options } from '@storybook/types';
2
+ import type { StorybookConfig } from './types.js';
3
+ export declare const addons: PresetProperty<'addons', StorybookConfig>;
4
+ export declare const frameworkOptions: (_: never, options: Options) => Promise<StorybookConfig['framework']>;
5
+ export declare const core: PresetProperty<'core', StorybookConfig>;
6
+ export declare const previewAnnotations: StorybookConfig['previewAnnotations'];
7
+ export declare const webpackFinal: StorybookConfig['webpackFinal'];
8
+ //# sourceMappingURL=preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhE,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,YAAY,CAAC;AAKpE,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAM,CAAC;AAQpE,eAAO,MAAM,gBAAgB,MACxB,KAAK,WACC,OAAO,KACf,QAAQ,eAAe,CAAC,WAAW,CAAC,CAyBtC,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,eAAe,CAmBxD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAExB,CAAC;AAM9C,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,cAAc,CAgBxD,CAAC"}
package/dist/preset.js ADDED
@@ -0,0 +1,63 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ import { makeStorybookConfigGenerator } from '@anansi/webpack-config';
3
+ import { dirname, join } from 'path';
4
+ const wrapForPnP = input => dirname(require.resolve(join(input, 'package.json')));
5
+ export const addons = [];
6
+ const defaultFrameworkOptions = {
7
+ legacyRootApi: false,
8
+ fastRefresh: true,
9
+ strictMode: true
10
+ };
11
+ export const frameworkOptions = async (_, options) => {
12
+ const config = await options.presets.apply('framework');
13
+ if (typeof config === 'string') {
14
+ return {
15
+ name: config,
16
+ options: defaultFrameworkOptions
17
+ };
18
+ }
19
+ if (typeof config === 'undefined') {
20
+ return {
21
+ name: wrapForPnP('@anansi/storybook'),
22
+ options: defaultFrameworkOptions
23
+ };
24
+ }
25
+ return {
26
+ name: config.name,
27
+ options: {
28
+ ...defaultFrameworkOptions,
29
+ ...config.options
30
+ }
31
+ };
32
+ };
33
+ export const core = async (config, options) => {
34
+ const framework = await options.presets.apply('framework');
35
+ return {
36
+ ...config,
37
+ builder: {
38
+ name: wrapForPnP('@storybook/builder-webpack5'),
39
+ options: typeof framework === 'string' ? {} : framework.options.builder || {}
40
+ },
41
+ renderer: wrapForPnP('@storybook/react')
42
+ };
43
+ };
44
+ export const previewAnnotations = (entry = []) => [...entry, require.resolve('./preview')];
45
+
46
+ /*export const babel: StorybookConfig['babel'] = (config, options) => ({
47
+ presets: [['@anansi/babel-preset', { typing: 'typescript', loose: true }]],
48
+ });*/
49
+
50
+ export const webpackFinal = async (storybookConfig, options) => {
51
+ var _storybookConfig$reso;
52
+ storybookConfig.resolve = storybookConfig.resolve || {};
53
+ storybookConfig.resolve.alias = {
54
+ ...((_storybookConfig$reso = storybookConfig.resolve) == null ? void 0 : _storybookConfig$reso.alias),
55
+ '@storybook/react': wrapForPnP('@storybook/react')
56
+ };
57
+ const projectConfig = require(join(options.configDir, '../webpack.config'));
58
+ return makeStorybookConfigGenerator(projectConfig)({
59
+ config: storybookConfig,
60
+ mode: process.env.NODE_ENV
61
+ });
62
+ };
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIiwiZGlybmFtZSIsImpvaW4iLCJ3cmFwRm9yUG5QIiwiaW5wdXQiLCJyZXF1aXJlIiwicmVzb2x2ZSIsImFkZG9ucyIsImRlZmF1bHRGcmFtZXdvcmtPcHRpb25zIiwibGVnYWN5Um9vdEFwaSIsImZhc3RSZWZyZXNoIiwic3RyaWN0TW9kZSIsImZyYW1ld29ya09wdGlvbnMiLCJfIiwib3B0aW9ucyIsImNvbmZpZyIsInByZXNldHMiLCJhcHBseSIsIm5hbWUiLCJjb3JlIiwiZnJhbWV3b3JrIiwiYnVpbGRlciIsInJlbmRlcmVyIiwicHJldmlld0Fubm90YXRpb25zIiwiZW50cnkiLCJ3ZWJwYWNrRmluYWwiLCJzdG9yeWJvb2tDb25maWciLCJfc3Rvcnlib29rQ29uZmlnJHJlc28iLCJhbGlhcyIsInByb2plY3RDb25maWciLCJjb25maWdEaXIiLCJtb2RlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIl0sInNvdXJjZXMiOlsiLi4vc3JjL3ByZXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzICovXG5pbXBvcnQgeyBtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIH0gZnJvbSAnQGFuYW5zaS93ZWJwYWNrLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFByZXNldFByb3BlcnR5LCBPcHRpb25zIH0gZnJvbSAnQHN0b3J5Ym9vay90eXBlcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB0eXBlIHsgRnJhbWV3b3JrT3B0aW9ucywgU3Rvcnlib29rQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNvbnN0IHdyYXBGb3JQblAgPSAoaW5wdXQ6IHN0cmluZykgPT5cbiAgZGlybmFtZShyZXF1aXJlLnJlc29sdmUoam9pbihpbnB1dCwgJ3BhY2thZ2UuanNvbicpKSk7XG5cbmV4cG9ydCBjb25zdCBhZGRvbnM6IFByZXNldFByb3BlcnR5PCdhZGRvbnMnLCBTdG9yeWJvb2tDb25maWc+ID0gW107XG5cbmNvbnN0IGRlZmF1bHRGcmFtZXdvcmtPcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zID0ge1xuICBsZWdhY3lSb290QXBpOiBmYWxzZSxcbiAgZmFzdFJlZnJlc2g6IHRydWUsXG4gIHN0cmljdE1vZGU6IHRydWUsXG59O1xuXG5leHBvcnQgY29uc3QgZnJhbWV3b3JrT3B0aW9ucyA9IGFzeW5jIChcbiAgXzogbmV2ZXIsXG4gIG9wdGlvbnM6IE9wdGlvbnMsXG4pOiBQcm9taXNlPFN0b3J5Ym9va0NvbmZpZ1snZnJhbWV3b3JrJ10+ID0+IHtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgb3B0aW9ucy5wcmVzZXRzLmFwcGx5PFN0b3J5Ym9va0NvbmZpZ1snZnJhbWV3b3JrJ10+KFxuICAgICdmcmFtZXdvcmsnLFxuICApO1xuXG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBjb25maWcsXG4gICAgICBvcHRpb25zOiBkZWZhdWx0RnJhbWV3b3JrT3B0aW9ucyxcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB3cmFwRm9yUG5QKCdAYW5hbnNpL3N0b3J5Ym9vaycpIGFzICdAYW5hbnNpL3N0b3J5Ym9vaycsXG4gICAgICBvcHRpb25zOiBkZWZhdWx0RnJhbWV3b3JrT3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjb25maWcubmFtZSxcbiAgICBvcHRpb25zOiB7XG4gICAgICAuLi5kZWZhdWx0RnJhbWV3b3JrT3B0aW9ucyxcbiAgICAgIC4uLmNvbmZpZy5vcHRpb25zLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY29yZTogUHJlc2V0UHJvcGVydHk8J2NvcmUnLCBTdG9yeWJvb2tDb25maWc+ID0gYXN5bmMgKFxuICBjb25maWcsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgZnJhbWV3b3JrID0gYXdhaXQgb3B0aW9ucy5wcmVzZXRzLmFwcGx5PFN0b3J5Ym9va0NvbmZpZ1snZnJhbWV3b3JrJ10+KFxuICAgICdmcmFtZXdvcmsnLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29uZmlnLFxuICAgIGJ1aWxkZXI6IHtcbiAgICAgIG5hbWU6IHdyYXBGb3JQblAoXG4gICAgICAgICdAc3Rvcnlib29rL2J1aWxkZXItd2VicGFjazUnLFxuICAgICAgKSBhcyAnQHN0b3J5Ym9vay9idWlsZGVyLXdlYnBhY2s1JyxcbiAgICAgIG9wdGlvbnM6XG4gICAgICAgIHR5cGVvZiBmcmFtZXdvcmsgPT09ICdzdHJpbmcnID8ge30gOiBmcmFtZXdvcmsub3B0aW9ucy5idWlsZGVyIHx8IHt9LFxuICAgIH0sXG4gICAgcmVuZGVyZXI6IHdyYXBGb3JQblAoJ0BzdG9yeWJvb2svcmVhY3QnKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcmV2aWV3QW5ub3RhdGlvbnM6IFN0b3J5Ym9va0NvbmZpZ1sncHJldmlld0Fubm90YXRpb25zJ10gPSAoXG4gIGVudHJ5ID0gW10sXG4pID0+IFsuLi5lbnRyeSwgcmVxdWlyZS5yZXNvbHZlKCcuL3ByZXZpZXcnKV07XG5cbi8qZXhwb3J0IGNvbnN0IGJhYmVsOiBTdG9yeWJvb2tDb25maWdbJ2JhYmVsJ10gPSAoY29uZmlnLCBvcHRpb25zKSA9PiAoe1xuICBwcmVzZXRzOiBbWydAYW5hbnNpL2JhYmVsLXByZXNldCcsIHsgdHlwaW5nOiAndHlwZXNjcmlwdCcsIGxvb3NlOiB0cnVlIH1dXSxcbn0pOyovXG5cbmV4cG9ydCBjb25zdCB3ZWJwYWNrRmluYWw6IFN0b3J5Ym9va0NvbmZpZ1snd2VicGFja0ZpbmFsJ10gPSBhc3luYyAoXG4gIHN0b3J5Ym9va0NvbmZpZyxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBzdG9yeWJvb2tDb25maWcucmVzb2x2ZSA9IHN0b3J5Ym9va0NvbmZpZy5yZXNvbHZlIHx8IHt9O1xuXG4gIHN0b3J5Ym9va0NvbmZpZy5yZXNvbHZlLmFsaWFzID0ge1xuICAgIC4uLnN0b3J5Ym9va0NvbmZpZy5yZXNvbHZlPy5hbGlhcyxcbiAgICAnQHN0b3J5Ym9vay9yZWFjdCc6IHdyYXBGb3JQblAoJ0BzdG9yeWJvb2svcmVhY3QnKSxcbiAgfTtcblxuICBjb25zdCBwcm9qZWN0Q29uZmlnID0gcmVxdWlyZShqb2luKG9wdGlvbnMuY29uZmlnRGlyLCAnLi4vd2VicGFjay5jb25maWcnKSk7XG4gIHJldHVybiBtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yKHByb2plY3RDb25maWcpKHtcbiAgICBjb25maWc6IHN0b3J5Ym9va0NvbmZpZyxcbiAgICBtb2RlOiBwcm9jZXNzLmVudi5OT0RFX0VOVixcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBLFNBQVNBLDRCQUE0QixRQUFRLHdCQUF3QjtBQUVyRSxTQUFTQyxPQUFPLEVBQUVDLElBQUksUUFBUSxNQUFNO0FBSXBDLE1BQU1DLFVBQVUsR0FBSUMsS0FBYSxJQUMvQkgsT0FBTyxDQUFDSSxPQUFPLENBQUNDLE9BQU8sQ0FBQ0osSUFBSSxDQUFDRSxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUV2RCxPQUFPLE1BQU1HLE1BQWlELEdBQUcsRUFBRTtBQUVuRSxNQUFNQyx1QkFBeUMsR0FBRztFQUNoREMsYUFBYSxFQUFFLEtBQUs7RUFDcEJDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxVQUFVLEVBQUU7QUFDZCxDQUFDO0FBRUQsT0FBTyxNQUFNQyxnQkFBZ0IsR0FBRyxNQUFBQSxDQUM5QkMsQ0FBUSxFQUNSQyxPQUFnQixLQUMwQjtFQUMxQyxNQUFNQyxNQUFNLEdBQUcsTUFBTUQsT0FBTyxDQUFDRSxPQUFPLENBQUNDLEtBQUssQ0FDeEMsV0FBVyxDQUNaO0VBRUQsSUFBSSxPQUFPRixNQUFNLEtBQUssUUFBUSxFQUFFO0lBQzlCLE9BQU87TUFDTEcsSUFBSSxFQUFFSCxNQUFNO01BQ1pELE9BQU8sRUFBRU47SUFDWCxDQUFDO0VBQ0g7RUFDQSxJQUFJLE9BQU9PLE1BQU0sS0FBSyxXQUFXLEVBQUU7SUFDakMsT0FBTztNQUNMRyxJQUFJLEVBQUVmLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBd0I7TUFDNURXLE9BQU8sRUFBRU47SUFDWCxDQUFDO0VBQ0g7RUFFQSxPQUFPO0lBQ0xVLElBQUksRUFBRUgsTUFBTSxDQUFDRyxJQUFJO0lBQ2pCSixPQUFPLEVBQUU7TUFDUCxHQUFHTix1QkFBdUI7TUFDMUIsR0FBR08sTUFBTSxDQUFDRDtJQUNaO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxPQUFPLE1BQU1LLElBQTZDLEdBQUcsTUFBQUEsQ0FDM0RKLE1BQU0sRUFDTkQsT0FBTyxLQUNKO0VBQ0gsTUFBTU0sU0FBUyxHQUFHLE1BQU1OLE9BQU8sQ0FBQ0UsT0FBTyxDQUFDQyxLQUFLLENBQzNDLFdBQVcsQ0FDWjtFQUVELE9BQU87SUFDTCxHQUFHRixNQUFNO0lBQ1RNLE9BQU8sRUFBRTtNQUNQSCxJQUFJLEVBQUVmLFVBQVUsQ0FDZCw2QkFBNkIsQ0FDRztNQUNsQ1csT0FBTyxFQUNMLE9BQU9NLFNBQVMsS0FBSyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUdBLFNBQVMsQ0FBQ04sT0FBTyxDQUFDTyxPQUFPLElBQUksQ0FBQztJQUN2RSxDQUFDO0lBQ0RDLFFBQVEsRUFBRW5CLFVBQVUsQ0FBQyxrQkFBa0I7RUFDekMsQ0FBQztBQUNILENBQUM7QUFFRCxPQUFPLE1BQU1vQixrQkFBeUQsR0FBR0EsQ0FDdkVDLEtBQUssR0FBRyxFQUFFLEtBQ1AsQ0FBQyxHQUFHQSxLQUFLLEVBQUVuQixPQUFPLENBQUNDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQzs7QUFFN0M7QUFDQTtBQUNBOztBQUVBLE9BQU8sTUFBTW1CLFlBQTZDLEdBQUcsTUFBQUEsQ0FDM0RDLGVBQWUsRUFDZlosT0FBTyxLQUNKO0VBQUEsSUFBQWEscUJBQUE7RUFDSEQsZUFBZSxDQUFDcEIsT0FBTyxHQUFHb0IsZUFBZSxDQUFDcEIsT0FBTyxJQUFJLENBQUMsQ0FBQztFQUV2RG9CLGVBQWUsQ0FBQ3BCLE9BQU8sQ0FBQ3NCLEtBQUssR0FBRztJQUM5QixLQUFBRCxxQkFBQSxHQUFHRCxlQUFlLENBQUNwQixPQUFPLHFCQUF2QnFCLHFCQUFBLENBQXlCQyxLQUFLO0lBQ2pDLGtCQUFrQixFQUFFekIsVUFBVSxDQUFDLGtCQUFrQjtFQUNuRCxDQUFDO0VBRUQsTUFBTTBCLGFBQWEsR0FBR3hCLE9BQU8sQ0FBQ0gsSUFBSSxDQUFDWSxPQUFPLENBQUNnQixTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztFQUMzRSxPQUFPOUIsNEJBQTRCLENBQUM2QixhQUFhLENBQUMsQ0FBQztJQUNqRGQsTUFBTSxFQUFFVyxlQUFlO0lBQ3ZCSyxJQUFJLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQztFQUNwQixDQUFDLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ export declare const decorators: ((Story: React.FC) => JSX.Element)[];
3
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../src/preview.tsx"],"names":[],"mappings":";AAEA,eAAO,MAAM,UAAU,WACb,MAAM,EAAE,mBAOjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import _jsx from "@babel/runtime/helpers/jsx";
2
+ import React from "react";
3
+ import { CacheProvider, AsyncBoundary } from '@rest-hooks/react';
4
+ export const decorators = [Story => /*#__PURE__*/_jsx(CacheProvider, {}, void 0, /*#__PURE__*/_jsx(AsyncBoundary, {}, void 0, /*#__PURE__*/_jsx(Story, {})))];
5
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYWNoZVByb3ZpZGVyIiwiQXN5bmNCb3VuZGFyeSIsImRlY29yYXRvcnMiLCJTdG9yeSIsIl9qc3giXSwic291cmNlcyI6WyIuLi9zcmMvcHJldmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FjaGVQcm92aWRlciwgQXN5bmNCb3VuZGFyeSB9IGZyb20gJ0ByZXN0LWhvb2tzL3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRvcnMgPSBbXG4gIChTdG9yeTogUmVhY3QuRkMpID0+IChcbiAgICA8Q2FjaGVQcm92aWRlcj5cbiAgICAgIDxBc3luY0JvdW5kYXJ5PlxuICAgICAgICA8U3RvcnkgLz5cbiAgICAgIDwvQXN5bmNCb3VuZGFyeT5cbiAgICA8L0NhY2hlUHJvdmlkZXI+XG4gICksXG5dO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLGFBQWEsRUFBRUMsYUFBYSxRQUFRLG1CQUFtQjtBQUVoRSxPQUFPLE1BQU1DLFVBQVUsR0FBRyxDQUN2QkMsS0FBZSxpQkFDZEMsSUFBQSxDQUFDSixhQUFhLDJCQUNaSSxJQUFBLENBQUNILGFBQWEsMkJBQ1pHLElBQUEsQ0FBQ0QsS0FBSyxLQUFHLENBQ0ssQ0FFbkIsQ0FDRiJ9
@@ -0,0 +1,30 @@
1
+ import type { StorybookConfigWebpack, BuilderOptions, TypescriptOptions as TypescriptOptionsBuilder } from '@storybook/builder-webpack5';
2
+ import type { ReactOptions, StorybookConfig as StorybookConfigBase, TypescriptOptions as TypescriptOptionsReact } from '@storybook/preset-react-webpack';
3
+ type FrameworkName = '@anansi/storybook';
4
+ type BuilderName = '@storybook/builder-webpack5';
5
+ export type FrameworkOptions = ReactOptions & {
6
+ builder?: BuilderOptions;
7
+ babelOptions?: {
8
+ typing?: 'typescript';
9
+ loose: boolean;
10
+ };
11
+ };
12
+ type StorybookConfigFramework = {
13
+ framework: FrameworkName | {
14
+ name: FrameworkName;
15
+ options: FrameworkOptions;
16
+ };
17
+ core?: StorybookConfigBase['core'] & {
18
+ builder?: BuilderName | {
19
+ name: BuilderName;
20
+ options: BuilderOptions;
21
+ };
22
+ };
23
+ typescript?: Partial<TypescriptOptionsBuilder & TypescriptOptionsReact> & StorybookConfigBase['typescript'];
24
+ };
25
+ /**
26
+ * The interface for Storybook configuration in `main.ts` files.
27
+ */
28
+ export type StorybookConfig = Omit<StorybookConfigBase, keyof StorybookConfigWebpack | keyof StorybookConfigFramework> & StorybookConfigWebpack & StorybookConfigFramework;
29
+ export {};
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,iBAAiB,IAAI,wBAAwB,EAC9C,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,IAAI,mBAAmB,EACtC,iBAAiB,IAAI,sBAAsB,EAC5C,MAAM,iCAAiC,CAAC;AAEzC,KAAK,aAAa,GAAG,mBAAmB,CAAC;AACzC,KAAK,WAAW,GAAG,6BAA6B,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1D,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,SAAS,EACL,aAAa,GACb;QACE,IAAI,EAAE,aAAa,CAAC;QACpB,OAAO,EAAE,gBAAgB,CAAC;KAC3B,CAAC;IACN,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG;QACnC,OAAO,CAAC,EACJ,WAAW,GACX;YACE,IAAI,EAAE,WAAW,CAAC;YAClB,OAAO,EAAE,cAAc,CAAC;SACzB,CAAC;KACP,CAAC;IACF,UAAU,CAAC,EAAE,OAAO,CAAC,wBAAwB,GAAG,sBAAsB,CAAC,GACrE,mBAAmB,CAAC,YAAY,CAAC,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,mBAAmB,EACnB,MAAM,sBAAsB,GAAG,MAAM,wBAAwB,CAC9D,GACC,sBAAsB,GACtB,wBAAwB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgU3Rvcnlib29rQ29uZmlnV2VicGFjayxcbiAgQnVpbGRlck9wdGlvbnMsXG4gIFR5cGVzY3JpcHRPcHRpb25zIGFzIFR5cGVzY3JpcHRPcHRpb25zQnVpbGRlcixcbn0gZnJvbSAnQHN0b3J5Ym9vay9idWlsZGVyLXdlYnBhY2s1JztcbmltcG9ydCB0eXBlIHtcbiAgUmVhY3RPcHRpb25zLFxuICBTdG9yeWJvb2tDb25maWcgYXMgU3Rvcnlib29rQ29uZmlnQmFzZSxcbiAgVHlwZXNjcmlwdE9wdGlvbnMgYXMgVHlwZXNjcmlwdE9wdGlvbnNSZWFjdCxcbn0gZnJvbSAnQHN0b3J5Ym9vay9wcmVzZXQtcmVhY3Qtd2VicGFjayc7XG5cbnR5cGUgRnJhbWV3b3JrTmFtZSA9ICdAYW5hbnNpL3N0b3J5Ym9vayc7XG50eXBlIEJ1aWxkZXJOYW1lID0gJ0BzdG9yeWJvb2svYnVpbGRlci13ZWJwYWNrNSc7XG5cbmV4cG9ydCB0eXBlIEZyYW1ld29ya09wdGlvbnMgPSBSZWFjdE9wdGlvbnMgJiB7XG4gIGJ1aWxkZXI/OiBCdWlsZGVyT3B0aW9ucztcbiAgYmFiZWxPcHRpb25zPzogeyB0eXBpbmc/OiAndHlwZXNjcmlwdCc7IGxvb3NlOiBib29sZWFuIH07XG59O1xuXG50eXBlIFN0b3J5Ym9va0NvbmZpZ0ZyYW1ld29yayA9IHtcbiAgZnJhbWV3b3JrOlxuICAgIHwgRnJhbWV3b3JrTmFtZVxuICAgIHwge1xuICAgICAgICBuYW1lOiBGcmFtZXdvcmtOYW1lO1xuICAgICAgICBvcHRpb25zOiBGcmFtZXdvcmtPcHRpb25zO1xuICAgICAgfTtcbiAgY29yZT86IFN0b3J5Ym9va0NvbmZpZ0Jhc2VbJ2NvcmUnXSAmIHtcbiAgICBidWlsZGVyPzpcbiAgICAgIHwgQnVpbGRlck5hbWVcbiAgICAgIHwge1xuICAgICAgICAgIG5hbWU6IEJ1aWxkZXJOYW1lO1xuICAgICAgICAgIG9wdGlvbnM6IEJ1aWxkZXJPcHRpb25zO1xuICAgICAgICB9O1xuICB9O1xuICB0eXBlc2NyaXB0PzogUGFydGlhbDxUeXBlc2NyaXB0T3B0aW9uc0J1aWxkZXIgJiBUeXBlc2NyaXB0T3B0aW9uc1JlYWN0PiAmXG4gICAgU3Rvcnlib29rQ29uZmlnQmFzZVsndHlwZXNjcmlwdCddO1xufTtcblxuLyoqXG4gKiBUaGUgaW50ZXJmYWNlIGZvciBTdG9yeWJvb2sgY29uZmlndXJhdGlvbiBpbiBgbWFpbi50c2AgZmlsZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0b3J5Ym9va0NvbmZpZyA9IE9taXQ8XG4gIFN0b3J5Ym9va0NvbmZpZ0Jhc2UsXG4gIGtleW9mIFN0b3J5Ym9va0NvbmZpZ1dlYnBhY2sgfCBrZXlvZiBTdG9yeWJvb2tDb25maWdGcmFtZXdvcmtcbj4gJlxuICBTdG9yeWJvb2tDb25maWdXZWJwYWNrICZcbiAgU3Rvcnlib29rQ29uZmlnRnJhbWV3b3JrO1xuIl0sIm1hcHBpbmdzIjoiIn0=
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@anansi/storybook",
3
+ "version": "0.1.0",
4
+ "description": "Storybook framework for anansi",
5
+ "homepage": "https://github.com/ntucker/anansi/tree/master/packages/storybook#readme",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+ssh://git@github.com:ntucker/anansi.git",
9
+ "directory": "packages/storybook"
10
+ },
11
+ "license": "Apache-2.0",
12
+ "author": {
13
+ "name": "Nathaniel Tucker",
14
+ "email": "me@ntucker.me",
15
+ "url": "https://ntucker.true.io"
16
+ },
17
+ "files": [
18
+ "src",
19
+ "dist",
20
+ "lib",
21
+ "preset.js",
22
+ "preview.js",
23
+ "LICENSE",
24
+ "README.md"
25
+ ],
26
+ "sideEffects": false,
27
+ "publishConfig": {
28
+ "main": "dist/index.js",
29
+ "module": "dist/index.js",
30
+ "types": "dist/index.d.ts"
31
+ },
32
+ "main": "dist/index.js",
33
+ "types": "dist/index.d.ts",
34
+ "keywords": [
35
+ "storybook",
36
+ "react"
37
+ ],
38
+ "devDependencies": {
39
+ "@anansi/babel-preset": "workspace:*",
40
+ "@anansi/browserslist-config": "workspace:*",
41
+ "@babel/cli": "7.21.0",
42
+ "@babel/core": "7.21.3",
43
+ "jest": "29.5.0",
44
+ "rimraf": "4.4.0"
45
+ },
46
+ "dependencies": {
47
+ "@babel/runtime": "^7.17.0",
48
+ "@storybook/builder-webpack5": "7.0.0-rc.3",
49
+ "@storybook/preset-react-webpack": "^7.0.0-rc.3",
50
+ "@storybook/react": "7.0.0-rc.3",
51
+ "@types/node": "^16.0.0"
52
+ },
53
+ "peerDependencies": {
54
+ "@anansi/babel-preset": "^3.0.0 || ^4.0.0",
55
+ "@anansi/webpack-config": "^13.0.0 || ^14.0.0",
56
+ "@types/react": "^17.0.40 || ^18.0.0-0",
57
+ "react": "^18.0.0-0"
58
+ },
59
+ "peerDependenciesMeta": {
60
+ "@types/react": {
61
+ "optional": true
62
+ }
63
+ },
64
+ "engines": {
65
+ "node": ">=16"
66
+ },
67
+ "scripts": {
68
+ "pretest": "eslint --ext .ts,.tsx .",
69
+ "test": "jest",
70
+ "test:type": "tsc",
71
+ "dev": "yarn run build:lib -w",
72
+ "build": "yarn run build:lib",
73
+ "build:lib": "NODE_ENV=production BROWSERSLIST_ENV=node16 babel --root-mode upward src --out-dir dist --source-maps inline --extensions '.ts,.tsx,.js' --ignore '**/__tests__/**' --ignore '**/*.d.ts'",
74
+ "build:clean": "rimraf lib dist ts3.4 legacy dist *.tsbuildinfo",
75
+ "prepack": "yarn build"
76
+ }
77
+ }
package/preset.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/preset');
package/preview.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('./dist/preview');
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './types.js';
package/src/preset.ts ADDED
@@ -0,0 +1,94 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ import { makeStorybookConfigGenerator } from '@anansi/webpack-config';
3
+ import type { PresetProperty, Options } from '@storybook/types';
4
+ import { dirname, join } from 'path';
5
+
6
+ import type { FrameworkOptions, StorybookConfig } from './types.js';
7
+
8
+ const wrapForPnP = (input: string) =>
9
+ dirname(require.resolve(join(input, 'package.json')));
10
+
11
+ export const addons: PresetProperty<'addons', StorybookConfig> = [];
12
+
13
+ const defaultFrameworkOptions: FrameworkOptions = {
14
+ legacyRootApi: false,
15
+ fastRefresh: true,
16
+ strictMode: true,
17
+ };
18
+
19
+ export const frameworkOptions = async (
20
+ _: never,
21
+ options: Options,
22
+ ): Promise<StorybookConfig['framework']> => {
23
+ const config = await options.presets.apply<StorybookConfig['framework']>(
24
+ 'framework',
25
+ );
26
+
27
+ if (typeof config === 'string') {
28
+ return {
29
+ name: config,
30
+ options: defaultFrameworkOptions,
31
+ };
32
+ }
33
+ if (typeof config === 'undefined') {
34
+ return {
35
+ name: wrapForPnP('@anansi/storybook') as '@anansi/storybook',
36
+ options: defaultFrameworkOptions,
37
+ };
38
+ }
39
+
40
+ return {
41
+ name: config.name,
42
+ options: {
43
+ ...defaultFrameworkOptions,
44
+ ...config.options,
45
+ },
46
+ };
47
+ };
48
+
49
+ export const core: PresetProperty<'core', StorybookConfig> = async (
50
+ config,
51
+ options,
52
+ ) => {
53
+ const framework = await options.presets.apply<StorybookConfig['framework']>(
54
+ 'framework',
55
+ );
56
+
57
+ return {
58
+ ...config,
59
+ builder: {
60
+ name: wrapForPnP(
61
+ '@storybook/builder-webpack5',
62
+ ) as '@storybook/builder-webpack5',
63
+ options:
64
+ typeof framework === 'string' ? {} : framework.options.builder || {},
65
+ },
66
+ renderer: wrapForPnP('@storybook/react'),
67
+ };
68
+ };
69
+
70
+ export const previewAnnotations: StorybookConfig['previewAnnotations'] = (
71
+ entry = [],
72
+ ) => [...entry, require.resolve('./preview')];
73
+
74
+ /*export const babel: StorybookConfig['babel'] = (config, options) => ({
75
+ presets: [['@anansi/babel-preset', { typing: 'typescript', loose: true }]],
76
+ });*/
77
+
78
+ export const webpackFinal: StorybookConfig['webpackFinal'] = async (
79
+ storybookConfig,
80
+ options,
81
+ ) => {
82
+ storybookConfig.resolve = storybookConfig.resolve || {};
83
+
84
+ storybookConfig.resolve.alias = {
85
+ ...storybookConfig.resolve?.alias,
86
+ '@storybook/react': wrapForPnP('@storybook/react'),
87
+ };
88
+
89
+ const projectConfig = require(join(options.configDir, '../webpack.config'));
90
+ return makeStorybookConfigGenerator(projectConfig)({
91
+ config: storybookConfig,
92
+ mode: process.env.NODE_ENV,
93
+ });
94
+ };
@@ -0,0 +1,11 @@
1
+ import { CacheProvider, AsyncBoundary } from '@rest-hooks/react';
2
+
3
+ export const decorators = [
4
+ (Story: React.FC) => (
5
+ <CacheProvider>
6
+ <AsyncBoundary>
7
+ <Story />
8
+ </AsyncBoundary>
9
+ </CacheProvider>
10
+ ),
11
+ ];
package/src/types.ts ADDED
@@ -0,0 +1,47 @@
1
+ import type {
2
+ StorybookConfigWebpack,
3
+ BuilderOptions,
4
+ TypescriptOptions as TypescriptOptionsBuilder,
5
+ } from '@storybook/builder-webpack5';
6
+ import type {
7
+ ReactOptions,
8
+ StorybookConfig as StorybookConfigBase,
9
+ TypescriptOptions as TypescriptOptionsReact,
10
+ } from '@storybook/preset-react-webpack';
11
+
12
+ type FrameworkName = '@anansi/storybook';
13
+ type BuilderName = '@storybook/builder-webpack5';
14
+
15
+ export type FrameworkOptions = ReactOptions & {
16
+ builder?: BuilderOptions;
17
+ babelOptions?: { typing?: 'typescript'; loose: boolean };
18
+ };
19
+
20
+ type StorybookConfigFramework = {
21
+ framework:
22
+ | FrameworkName
23
+ | {
24
+ name: FrameworkName;
25
+ options: FrameworkOptions;
26
+ };
27
+ core?: StorybookConfigBase['core'] & {
28
+ builder?:
29
+ | BuilderName
30
+ | {
31
+ name: BuilderName;
32
+ options: BuilderOptions;
33
+ };
34
+ };
35
+ typescript?: Partial<TypescriptOptionsBuilder & TypescriptOptionsReact> &
36
+ StorybookConfigBase['typescript'];
37
+ };
38
+
39
+ /**
40
+ * The interface for Storybook configuration in `main.ts` files.
41
+ */
42
+ export type StorybookConfig = Omit<
43
+ StorybookConfigBase,
44
+ keyof StorybookConfigWebpack | keyof StorybookConfigFramework
45
+ > &
46
+ StorybookConfigWebpack &
47
+ StorybookConfigFramework;