Skip to content
/ kibana Public
forked from elastic/kibana

Commit

Permalink
Fixes for storybook aliases (elastic#204842)
Browse files Browse the repository at this point in the history
* Remove duplicates
* Import list of aliases to buildkite script so we don't need it in two
places
* Mention packages as well as plugins in README, and use newer example
storybook syntax
* Add mjs support to unbreak slo stories

(cherry picked from commit ddcf076)

# Conflicts:
#	.buildkite/scripts/steps/storybooks/build_and_upload.ts
#	src/dev/storybook/aliases.ts
  • Loading branch information
smith committed Dec 27, 2024
1 parent 5e56cbe commit 89c08d0
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 61 deletions.
48 changes: 2 additions & 46 deletions .buildkite/scripts/steps/storybooks/build_and_upload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,53 +10,9 @@
import { execSync } from 'child_process';
import fs from 'fs';
import path from 'path';
import { storybookAliases } from '../../../../src/dev/storybook/aliases';
import { getKibanaDir } from '#pipeline-utils';

// TODO - how to generate this dynamically?
const STORYBOOKS = [
'apm',
'canvas',
'cases',
'cell_actions',
'coloring',
'chart_icons',
'content_management_examples',
'custom_integrations',
'dashboard_enhanced',
'dashboard',
'data',
'logs_explorer',
'embeddable',
'expression_error',
'expression_image',
'expression_metric',
'expression_repeat_image',
'expression_reveal_image',
'expression_shape',
'expression_tagcloud',
'management',
'fleet',
'grouping',
'home',
'infra',
'kibana_react',
'lists',
'observability',
'observability_ai_assistant',
'observability_shared',
'presentation',
'security_solution',
'security_solution_packages',
'serverless',
'shared_ux',
'triggers_actions_ui',
'ui_actions_enhanced',
'language_documentation_popover',
'unified_search',
'random_sampling',
'esql_editor',
];

const GITHUB_CONTEXT = 'Build and Publish Storybooks';

const STORYBOOK_DIRECTORY =
Expand All @@ -82,7 +38,7 @@ const ghStatus = (state: string, description: string) =>
const build = () => {
console.log('--- Building Storybooks');

for (const storybook of STORYBOOKS) {
for (const storybook of Object.keys(storybookAliases)) {
exec(`STORYBOOK_BASE_URL=${STORYBOOK_BASE_URL}`, `yarn storybook --site ${storybook}`);
}
};
Expand Down
25 changes: 16 additions & 9 deletions packages/kbn-storybook/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Kibana Storybook

This package provides ability to add [Storybook](https://storybook.js.org/) to any Kibana plugin.
This package provides ability to add [Storybook](https://storybook.js.org/) to any Kibana package or plugin.

- [Kibana Storybook](#kibana-storybook)
- [Setup Instructions](#setup-instructions)
Expand All @@ -22,19 +22,26 @@ This package provides ability to add [Storybook](https://storybook.js.org/) to a
the following [Component Story Format](https://storybook.js.org/docs/react/api/csf) contents:

```jsx
import { MyComponent } from './my_component';

export default {
import type { Meta, StoryObj } from '@storybook/react';

import { MyComponent } from './MyComponent';

const meta: Meta<typeof MyComponent> = {
component: MyComponent,
title: 'Path/In/Side/Navigation/ToComponent',
};

export function Example() {
return <MyComponent />;
}

export default meta;
type Story = StoryObj<typeof MyComponent>;

export const Basic: Story = {};

export const WithProp: Story = {
render: () => <MyComponent prop="value" />,
};
```

- Launch Storybook with `yarn storybook <plugin>`, or build a static site with `yarn storybook --site <plugin>`.

## Customizing configuration

The `defaultConfig` object provided by the `@kbn/storybook` package should be all you need to get running, but you can
Expand Down
14 changes: 11 additions & 3 deletions packages/kbn-storybook/src/webpack.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import webpack, { Configuration, Stats } from 'webpack';
import webpackMerge from 'webpack-merge';
import { REPO_ROOT } from './lib/constants';
import { IgnoreNotFoundExportPlugin } from './ignore_not_found_export_plugin';
import 'webpack-dev-server'; // Extends webpack configuration with `devServer` property

type Preset = string | [string, Record<string, unknown>] | Record<string, unknown>;

Expand Down Expand Up @@ -70,9 +71,11 @@ function isDesiredPreset(preset: Preset) {
// Extend the Storybook Webpack config with some customizations
/* eslint-disable import/no-default-export */
export default ({ config: storybookConfig }: { config: Configuration }) => {
const config = {
const config: Configuration = {
devServer: {
stats,
devMiddleware: {
stats,
},
},
externals,
module: {
Expand All @@ -81,6 +84,11 @@ export default ({ config: storybookConfig }: { config: Configuration }) => {
// already bundled with all its necessary dependencies
noParse: [/[\/\\]node_modules[\/\\]vega[\/\\]build-es5[\/\\]vega\.js$/],
rules: [
{
test: /\.mjs$/,
include: /node_modules/,
type: 'javascript/auto',
},
{
test: /\.(html|md|txt|tmpl)$/,
use: {
Expand Down Expand Up @@ -140,7 +148,7 @@ export default ({ config: storybookConfig }: { config: Configuration }) => {
},
plugins: [new IgnoreNotFoundExportPlugin()],
resolve: {
extensions: ['.js', '.ts', '.tsx', '.json', '.mdx'],
extensions: ['.js', '.mjs', '.ts', '.tsx', '.json', '.mdx'],
mainFields: ['browser', 'main'],
alias: {
core_app_image_assets: resolve(REPO_ROOT, 'src/core/public/styles/core_app/images'),
Expand Down
12 changes: 9 additions & 3 deletions src/dev/storybook/aliases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,17 @@ export const storybookAliases = {
discover: 'src/plugins/discover/.storybook',
embeddable: 'src/plugins/embeddable/.storybook',
esql_ast_inspector: 'examples/esql_ast_inspector/.storybook',
<<<<<<< HEAD
es_ui_shared: 'src/plugins/es_ui_shared/.storybook',
expandable_flyout: 'packages/kbn-expandable-flyout/.storybook',
expression_error: 'src/plugins/expression_error/.storybook',
expression_image: 'src/plugins/expression_image/.storybook',
=======
es_ui_shared: 'src/platform/plugins/shared/es_ui_shared/.storybook',
expandable_flyout: 'x-pack/solutions/security/packages/expandable-flyout/.storybook',
expression_error: 'src/platform/plugins/shared/expression_error/.storybook',
expression_image: 'src/platform/plugins/shared/expression_image/.storybook',
>>>>>>> ddcf076ff40 (Fixes for storybook aliases (#204842))
expression_metric_vis: 'src/plugins/chart_expressions/expression_legacy_metric/.storybook',
expression_metric: 'src/plugins/expression_metric/.storybook',
expression_partition_vis: 'src/plugins/chart_expressions/expression_partition_vis/.storybook',
Expand Down Expand Up @@ -65,9 +72,8 @@ export const storybookAliases = {
security_solution_packages: 'x-pack/packages/security-solution/storybook/config',
serverless: 'packages/serverless/storybook/config',
shared_ux: 'packages/shared-ux/storybook/config',
slo: 'x-pack/plugins/observability_solution/slo/.storybook',
threat_intelligence: 'x-pack/plugins/threat_intelligence/.storybook',
triggers_actions_ui: 'x-pack/plugins/triggers_actions_ui/.storybook',
threat_intelligence: 'x-pack/solutions/security/plugins/threat_intelligence/.storybook',
triggers_actions_ui: 'x-pack/platform/plugins/shared/triggers_actions_ui/.storybook',
ui_actions_enhanced: 'src/plugins/ui_actions_enhanced/.storybook',
unified_search: 'src/plugins/unified_search/.storybook',
profiling: 'x-pack/plugins/observability_solution/profiling/.storybook',
Expand Down

0 comments on commit 89c08d0

Please sign in to comment.